auto import from //branches/cupcake_rel/...@138607
diff --git a/tools/Android.mk b/tools/Android.mk
new file mode 100644
index 0000000..0a05aed
--- /dev/null
+++ b/tools/Android.mk
@@ -0,0 +1,15 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+include $(call all-subdir-makefiles)
diff --git a/tools/annotation-helper/.classpath b/tools/annotation-helper/.classpath
new file mode 100644
index 0000000..bece0f3
--- /dev/null
+++ b/tools/annotation-helper/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry exported="true" kind="lib" path="bin/"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tools/annotation-helper/.project b/tools/annotation-helper/.project
new file mode 100644
index 0000000..ea4be4f
--- /dev/null
+++ b/tools/annotation-helper/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>spechelper</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tools/annotation-helper/.settings/org.eclipse.jdt.core.prefs b/tools/annotation-helper/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c4095e1
--- /dev/null
+++ b/tools/annotation-helper/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,57 @@
+#Wed Jun 04 14:49:33 CEST 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=ignore
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullReference=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=ignore
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=ignore
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.processAnnotations=disabled
diff --git a/tools/annotation-helper/META-INF/MANIFEST.MF b/tools/annotation-helper/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1f39a53
--- /dev/null
+++ b/tools/annotation-helper/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Spechelper Plug-in
+Bundle-SymbolicName: spechelper; singleton:=true
+Bundle-Version: 1.0.0
+Bundle-Activator: spechelper.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime
+Eclipse-LazyStart: false
+Import-Package: org.eclipse.jdt.core,
+ org.eclipse.jdt.core.compiler,
+ org.eclipse.jdt.core.dom,
+ org.eclipse.jdt.core.util,
+ org.eclipse.jdt.internal.ui,
+ org.eclipse.jdt.internal.ui.javaeditor,
+ org.eclipse.jdt.ui,
+ org.eclipse.jdt.ui.text.java,
+ org.eclipse.jface.text,
+ org.eclipse.jface.text.contentassist,
+ org.eclipse.ui.texteditor
+Bundle-ClassPath: bin/
diff --git a/tools/annotation-helper/README.txt b/tools/annotation-helper/README.txt
new file mode 100644
index 0000000..8ff7eec
--- /dev/null
+++ b/tools/annotation-helper/README.txt
@@ -0,0 +1 @@
+for information, read the javadoc under src/spechelper/SimpleComputer.java
diff --git a/tools/annotation-helper/build.properties b/tools/annotation-helper/build.properties
new file mode 100644
index 0000000..e5dc709
--- /dev/null
+++ b/tools/annotation-helper/build.properties
@@ -0,0 +1,9 @@
+output.. = bin/
+bin.includes = plugin.xml,\
+               META-INF/,\
+               bin/,\
+               build.properties,\
+               feature.xml
+src.includes = src/,\
+               plugin.xml,\
+               feature.xml
diff --git a/tools/annotation-helper/plugin.xml b/tools/annotation-helper/plugin.xml
new file mode 100644
index 0000000..6cc641d
--- /dev/null
+++ b/tools/annotation-helper/plugin.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+	<extension 
+		point="org.eclipse.jdt.ui.javaCompletionProposalComputer" 
+		id="WordCompletionProposalComputer"
+		name="Noser Annotation Completion Proposal Computer">
+
+		<javaCompletionProposalComputer 
+		    activate="true"
+			class="spechelper.SimpleComputer"
+			categoryId="org.eclipse.ui.texteditor.textual_proposals">
+		</javaCompletionProposalComputer>
+	</extension>
+</plugin>
diff --git a/tools/annotation-helper/src/spechelper/MethodSelector.java b/tools/annotation-helper/src/spechelper/MethodSelector.java
new file mode 100644
index 0000000..a0b4bba
--- /dev/null
+++ b/tools/annotation-helper/src/spechelper/MethodSelector.java
@@ -0,0 +1,228 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package spechelper;
+
+import org.eclipse.jdt.core.Flags;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.ITypeParameter;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.Signature;
+import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.ASTParser;
+import org.eclipse.jdt.core.dom.ASTVisitor;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.ITypeBinding;
+import org.eclipse.jdt.core.dom.SingleMemberAnnotation;
+import org.eclipse.jdt.internal.ui.JavaPlugin;
+import org.eclipse.jdt.ui.JavaElementLabelProvider;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.ElementListSelectionDialog;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 
+ */
+public class MethodSelector {
+
+    public String obtainReplacement(String buffer) {
+        IMethod method = selectMethod();
+        // if user did cancel the selection
+        if (method == null) {
+            return null;
+        }
+
+        // see if we are already in a annotation:
+        // if yes -> only dump the testtarget annotation, not the complete
+        // TestInfo
+        // (could not easily find this out with CompilationUnit, since inserting
+        // a :
+        // broke the AST - maybe use WorkingCopy and so on,
+        // but for now: do it with simple String analysis
+        boolean shortOnly = false;
+        int annotPos = buffer.lastIndexOf("@TestInfo");
+        // the latest annotation - count "(" ")" pairs - if not the same count
+        // we assume to be in the annotation (H: code compiles fine)
+        if (annotPos != -1) {
+            String sub = buffer.substring(annotPos);
+            // only consider the latest 6 lines for the annotation to occur
+            // (6 = range within which the annotation @TestTarget
+            // must occur, but out of range to reach the annotation from the
+            // previous method - ah i'd prefer working with compilationUnit...
+            String[] lines = sub.split("\n");
+            for (int i = lines.length - 6; i < lines.length; i++) {
+                String line = lines[i];
+                if (line.contains("@TestTarget")) {
+                    shortOnly = true;
+                }
+            }
+        }
+
+        return generateAnnotation(shortOnly, method);
+    }
+
+
+    private String generateAnnotation(boolean shortOnly, IMethod method) {
+        String[] ptypes = method.getParameterTypes();
+        String param = "";
+        for (int i = 0; i < ptypes.length; i++) {
+            String ptype = ptypes[i];
+            String sig = Signature.toString(ptype);
+            // kind of a hack: convert all Generic Type args to Object, or to
+            // its bound Type
+            if (sig.length() == 1) {
+                ITypeParameter tps = method.getTypeParameter(sig);
+                sig = "Object";
+
+                if (tps != null && tps.exists()) {
+                    try {
+                        String[] bounds = tps.getBounds();
+                        if (bounds.length > 0) {
+                            sig = bounds[0];
+                        }
+                    } catch (JavaModelException e) {
+                        e.printStackTrace();
+                    }
+
+                }
+            }
+            // omit type signature
+            sig = sig.replaceAll("<.*>", "");
+            param += (i > 0 ? ", " : "") + sig + ".class";
+        }
+        String IND = "    ";
+
+        String targ = "@TestTarget(\n" + IND + "      methodName = \""
+                + method.getElementName() + "\",\n" + IND
+                + "      methodArgs = {" + param + "}\n" + IND + "    )\n";
+
+        String s;
+        if (shortOnly) {
+            s = targ;
+        } else {
+
+            s = "@TestInfo(\n" + IND + "  status = TestStatus.TBR,\n" + IND
+                    + "  notes = \"\",\n" + IND + "  targets = {\n" + IND
+                    + "    " + targ + IND + "})";
+        }
+        return s;
+    }
+
+    private IMethod selectMethod() {
+        IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+                .getActivePage().getActiveEditor();
+        Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+                .getShell();
+        IEditorInput ei = part.getEditorInput();
+        final ICompilationUnit cu = JavaPlugin.getDefault()
+                .getWorkingCopyManager().getWorkingCopy(ei);
+        // cu != null since we register only for java/javadoc completion
+        // proposals
+        ASTParser parser = ASTParser.newParser(AST.JLS3);
+        parser.setSource(cu);
+        parser.setResolveBindings(true);
+        CompilationUnit unit = (CompilationUnit) parser.createAST(null);
+
+        class MHolder {
+            IMethod method;
+        }
+        final MHolder mholder = new MHolder();
+
+        class FHolder {
+            boolean foundClassAnnotation;
+        }
+        final FHolder fholder = new FHolder();
+
+        unit.accept(new ASTVisitor() {
+            public boolean visit(SingleMemberAnnotation node) {
+                String name = node.getTypeName().getFullyQualifiedName();
+                if (!name.equals("TestTargetClass")) {
+                    return false;
+                }
+                fholder.foundClassAnnotation = true;
+                Expression targetClassE = node.getValue();
+                ITypeBinding ty = targetClassE.resolveTypeBinding();
+                if (ty == null) {
+                    return false;
+                }
+                ITypeBinding[] classTypes = ty.getTypeArguments();
+                if (classTypes.length > 0) {
+                    ITypeBinding tp = classTypes[0];
+                    String qname = tp.getQualifiedName();
+                    System.out.println("qname:" + qname);
+                    IJavaProject myProject = cu.getJavaProject();
+                    try {
+                        IType myType = myProject.findType(qname);
+                        if (myType != null) {
+                            Shell parent = PlatformUI.getWorkbench()
+                                    .getActiveWorkbenchWindow().getShell();
+                            ElementListSelectionDialog dialog = new ElementListSelectionDialog(
+                                    parent,
+                                    new JavaElementLabelProvider(
+                                            JavaElementLabelProvider.SHOW_PARAMETERS
+                                                    | JavaElementLabelProvider.SHOW_OVERLAY_ICONS
+                                                    | JavaElementLabelProvider.SHOW_RETURN_TYPE));
+                            // restrict to public/protected methods only
+                            IMethod[] allMeth = myType.getMethods();
+                            List<IMethod> pubproMethods = new ArrayList<IMethod>();
+                            for (int i = 0; i < allMeth.length; i++) {
+                                IMethod method = allMeth[i];
+                                if ((method.getFlags() & (Flags.AccPublic | Flags.AccProtected)) != 0) {
+                                    pubproMethods.add(method);
+                                }
+                            }
+                            IMethod[] res = pubproMethods
+                                    .toArray(new IMethod[pubproMethods.size()]);
+                            dialog.setIgnoreCase(true);
+                            dialog.setBlockOnOpen(true);
+                            dialog.setElements(res);//
+                            dialog.setFilter("");
+                            dialog.setTitle(qname);
+                            if (dialog.open() != IDialogConstants.CANCEL_ID) {
+                                Object[] types = dialog.getResult();
+                                System.out.println("selected:" + types[0]);
+                                IMethod method = (IMethod) types[0];
+                                mholder.method = method;
+
+                            } else {
+                                // System.out.println("cancelled!!");
+                            }
+                        }
+                    } catch (JavaModelException e) {
+                        e.printStackTrace();
+                    }
+                }
+                return true;
+            }
+        });
+        if (!fholder.foundClassAnnotation) {
+            MessageDialog.openInformation(shell, "Class Annotation missing",
+                    "@TestTargetClass(...) is missing");
+            return null;
+        }
+        return mholder.method;
+    }
+}
diff --git a/tools/annotation-helper/src/spechelper/MyCompletion.java b/tools/annotation-helper/src/spechelper/MyCompletion.java
new file mode 100644
index 0000000..7a5c3c7
--- /dev/null
+++ b/tools/annotation-helper/src/spechelper/MyCompletion.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package spechelper;
+
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.contentassist.ICompletionProposal;
+import org.eclipse.jface.text.contentassist.IContextInformation;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+
+public class MyCompletion implements ICompletionProposal {
+
+    private String m_displ;
+    private String m_replace;
+    private int m_offset;
+    private int m_replacelen;
+    private int m_cursorpos;
+    private Image m_img;
+    private IContextInformation m_context;
+    private String m_addinfo;
+    private String fBuffer;
+
+    public MyCompletion(String buffer, String replacementString,
+            int replacementOffset, int replacementLength, int cursorPosition,
+            Image image, String displayString,
+            IContextInformation contextInformation,
+            String additionalProposalInfo) {
+        m_replace = replacementString;
+        m_offset = replacementOffset;
+        m_replacelen = replacementLength;
+        m_cursorpos = cursorPosition;
+        m_img = image;
+        fBuffer = buffer;
+        m_displ = displayString;
+        m_context = contextInformation;
+        m_addinfo = additionalProposalInfo;
+    }
+
+    public void apply(IDocument document) {
+        try {
+            MethodSelector ms = new MethodSelector();
+            String replace = ms.obtainReplacement(fBuffer);
+            if (replace == null) {
+                m_cursorpos = 0;
+                return;
+            }
+            m_cursorpos = replace.length();
+            document.replace(m_offset, m_replacelen, replace);
+        } catch (BadLocationException x) {
+            // ignore
+        }
+    }
+
+    public Point getSelection(IDocument document) {
+        return new Point(m_offset + m_cursorpos, 0);
+    }
+
+    public IContextInformation getContextInformation() {
+        return m_context;
+    }
+
+    public Image getImage() {
+        return m_img;
+    }
+
+    public String getDisplayString() {
+        if (m_displ != null) return m_displ;
+        return m_replace;
+    }
+
+    public String getAdditionalProposalInfo() {
+        return m_addinfo;
+    }
+}
diff --git a/tools/annotation-helper/src/spechelper/SimpleComputer.java b/tools/annotation-helper/src/spechelper/SimpleComputer.java
new file mode 100644
index 0000000..757b1a8
--- /dev/null
+++ b/tools/annotation-helper/src/spechelper/SimpleComputer.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package spechelper;
+
+import dalvik.annotation.TestTargetClass;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jdt.ui.text.java.ContentAssistInvocationContext;
+import org.eclipse.jdt.ui.text.java.IJavaCompletionProposalComputer;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.contentassist.ICompletionProposal;
+
+import java.util.List;
+import java.util.Vector;
+import java.util.regex.Pattern;
+
+/**
+ * <p>
+ * a plugin to auto-insert the following annotation constructs: 
+ * TestInfo.java, TestStatus.java, TestTarget.java, and TestTargetClass.java
+ * under 
+ * /android/device/dalvik/libcore/dalvik/src/main/java/dalvik/annotation/
+ * <p>
+ * usage:<br>
+ * - install export/plugins/spechelper_1.0.0.jar into your eclipse/plugin folder.<br>
+ * - restart eclipse<br>
+ * - open a java file<br>
+ * - insert the TestTargetClass annotation above the class declaration, e.g.
+ *   <code>@TestTargetClass(Pattern.class)</code><br>
+ * - insert a ":" one line above the signature of a method to be annotated,  
+ *   and press ctrl-space for eclipse autocompletion. a popup appears which
+ *   lists all target methods. choose one, and the annotation will be filled in
+ *   at the cursor position.<br>
+ * <p>  
+ *   to annotate more than one target method, simply add a comma after the
+ *   first TestTarget, press enter and insert a ":", press ctrl-space again.
+ *   
+ * <p>
+ *  a sample:  
+ *   
+<pre>
+package org.apache.harmony.tests.java.util.regex;
+
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestInfo;
+import dalvik.annotation.TestTarget;
+import dalvik.annotation.TestStatus;
+
+import junit.framework.TestCase;
+
+import java.util.regex.Pattern;
+
+@TestTargetClass(Pattern.class)
+
+public class PatternTest extends TestCase {
+    
+    // add ":", press ctrl-space here to let the eclipse plugin generate 
+    // the next few lines
+    @TestInfo(
+      status = TestStatus.TBR,
+      notes = "",
+      targets = {
+        @TestTarget(
+          methodName = "compile",
+          methodArgs = {String.class}
+        )
+    })
+    public void foo() {
+        //
+    }
+
+    @TestInfo(
+      status = TestStatus.TBR,
+      notes = "",
+      targets = {
+        @TestTarget(
+          methodName = "compile",
+          methodArgs = {String.class}
+        ),
+        // add ":", press ctrl-space here to insert another TestTarget
+    })
+    public void bar() {
+        //
+    }
+    
+    @TestInfo(
+      status = TestStatus.TBR,
+      notes = "",
+      targets = {
+        @TestTarget(
+          methodName = "compile",
+          methodArgs = {String.class}
+        ),
+        @TestTarget(
+          methodName = "split",
+          methodArgs = {CharSequence.class, int.class}
+        )
+
+    })
+    public void foobarsample() {
+        //
+    }
+    
+}
+</pre>
+ *   
+ *   
+ *
+ */
+public class SimpleComputer implements IJavaCompletionProposalComputer {
+
+    public List<ICompletionProposal> computeCompletionProposals(
+            ContentAssistInvocationContext context, IProgressMonitor monitor) {
+        List<ICompletionProposal> ret = new Vector<ICompletionProposal>();
+        try {
+            int offs = context.getInvocationOffset();
+            String buffer = context.getDocument().get(0, offs);
+            //System.out.println("buffer:'"+buffer+"'");
+            //System.out.println("offset:"+offs);
+            String keyWord = ":";
+            String keyWordInfo = "':': noser: autofills the annotation";
+
+            int idx = 0;
+            // find the replacement position
+            int klen = keyWord.length();
+            for (int i = 0; i < klen; i++) {
+                String test = keyWord.substring(0, klen - i);
+                if (buffer.endsWith(test)) {
+                    idx = klen - i;
+                    break;
+                }
+            }
+            if (idx != 0) {
+                System.out.println("idx:"+idx);
+                String replace ="hi there! a longer sample text\nnew line";
+                    ICompletionProposal ci = new MyCompletion(buffer, replace,
+                            context.getInvocationOffset() - idx, idx, replace
+                                    .length(), null, keyWordInfo, null, null);
+                    ret.add(ci);
+            }
+        } catch (BadLocationException e) {
+            e.printStackTrace();
+        }
+        return ret;
+    }
+
+
+    public List<ICompletionProposal> computeContextInformation(
+            ContentAssistInvocationContext context, IProgressMonitor monitor) {
+        return new Vector<ICompletionProposal>();
+    }
+
+    public String getErrorMessage() {
+        return "Error from SimpleComputer";
+    }
+
+    public void sessionEnded() {
+        //System.out.println("session ended");
+    }
+
+    public void sessionStarted() {
+        //System.out.println("session started");
+    }
+
+}
diff --git a/tools/annotation-helper/src/spechelper/Test.java b/tools/annotation-helper/src/spechelper/Test.java
new file mode 100644
index 0000000..01b11df
--- /dev/null
+++ b/tools/annotation-helper/src/spechelper/Test.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package spechelper;
+
+import java.util.Comparator;
+
+public class Test {
+    
+    public Test() {}
+    
+    public <E>  void bla(Comparable<Long> comp1, Comparator<Comparable<String>> comp2, E arg, int a, byte[] b, char[] c, double d, float f, boolean bo, int[][] ar, String[][] arr,
+            long l, String... strs) {
+    }
+    
+    public String fooaaa(int aasdfsdfsd) {
+        return null;
+    }
+    
+    private void priv() {}
+
+    protected void prot() {}
+    
+    void packloc() {}
+    
+    public void testInputfoo() {
+        Math.sin(0d);
+    }
+}
diff --git a/tools/dasm/Android.mk b/tools/dasm/Android.mk
new file mode 100644
index 0000000..85882d9
--- /dev/null
+++ b/tools/dasm/Android.mk
@@ -0,0 +1,36 @@
+#
+# Copyright (C) 2008 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+LOCAL_PATH := $(call my-dir)
+
+# dasm (dalvik assembler) java library
+# ============================================================
+
+include $(CLEAR_VARS)
+LOCAL_IS_HOST_MODULE := true
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_MODULE := dasm
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(HOST_OUT_JAVA_LIBRARIES)/dasm$(COMMON_JAVA_PACKAGE_SUFFIX)
+$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/etc/dasm | $(ACP)
+	@echo "Copy: $(PRIVATE_MODULE) ($@)"
+	$(copy-file-to-new-target)
+	$(hide) chmod 755 $@
+
+INTERNAL_DALVIK_MODULES += $(LOCAL_INSTALLED_MODULE)
+
+include $(LOCAL_PATH)/src/Android.mk
diff --git a/tools/dasm/etc/dasm b/tools/dasm/etc/dasm
new file mode 100644
index 0000000..406fc22
--- /dev/null
+++ b/tools/dasm/etc/dasm
@@ -0,0 +1,65 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Set up prog to be the path of this script, including following symlinks,
+# and set up progdir to be the fully-qualified pathname of its directory.
+prog="$0"
+while [ -h "${prog}" ]; do
+    newProg=`/bin/ls -ld "${prog}"`
+    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
+    if expr "x${newProg}" : 'x/' >/dev/null; then
+        prog="${newProg}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${newProg}"
+    fi
+done
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+jarfile=dasm.jar
+libdir="$progdir"
+if [ ! -r "$libdir/$jarfile" ]
+then
+    libdir=`dirname "$progdir"`/tools/lib
+fi
+if [ ! -r "$libdir/$jarfile" ]
+then
+    libdir=`dirname "$progdir"`/framework
+fi
+if [ ! -r "$libdir/$jarfile" ]
+then
+    echo `basename "$prog"`": can't find $jarfile"
+    exit 1
+fi
+
+javaOpts=""
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "$1" : '-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    shift
+done
+
+if [ "$OSTYPE" = "cygwin" ] ; then
+    jarpath=`cygpath -w  "$libdir/$jarfile"`
+else
+    jarpath="$libdir/$jarfile"
+fi
+exec java $javaOpts -classpath "$libdir/dx.jar:$jarpath" dasm.Main "$@"
diff --git a/tools/dasm/etc/java_cup-new.jar b/tools/dasm/etc/java_cup-new.jar
new file mode 100644
index 0000000..b6f5947
--- /dev/null
+++ b/tools/dasm/etc/java_cup-new.jar
Binary files differ
diff --git a/tools/dasm/etc/java_cup.jar b/tools/dasm/etc/java_cup.jar
new file mode 100644
index 0000000..eb1a3ae
--- /dev/null
+++ b/tools/dasm/etc/java_cup.jar
Binary files differ
diff --git a/tools/dasm/etc/java_cup.jar.old b/tools/dasm/etc/java_cup.jar.old
new file mode 100644
index 0000000..eb1a3ae
--- /dev/null
+++ b/tools/dasm/etc/java_cup.jar.old
Binary files differ
diff --git a/tools/dasm/etc/manifest.txt b/tools/dasm/etc/manifest.txt
new file mode 100644
index 0000000..a26a923
--- /dev/null
+++ b/tools/dasm/etc/manifest.txt
@@ -0,0 +1 @@
+Main-Class: dasm.Main
diff --git a/tools/dasm/src/Android.mk b/tools/dasm/src/Android.mk
new file mode 100644
index 0000000..09a3857
--- /dev/null
+++ b/tools/dasm/src/Android.mk
@@ -0,0 +1,32 @@
+#
+# Copyright (C) 2008 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+LOCAL_PATH := $(call my-dir)
+
+
+# dasm (dalvik assembler) java library
+# ============================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(call all-subdir-java-files)
+LOCAL_JAR_MANIFEST := ../etc/manifest.txt
+LOCAL_JAVA_LIBRARIES := dx
+
+LOCAL_MODULE:= dasm
+
+include $(BUILD_HOST_JAVA_LIBRARY)
+
+INTERNAL_DALVIK_MODULES += $(LOCAL_INSTALLED_MODULE)
+
diff --git a/tools/dasm/src/dasm/DAsm.java b/tools/dasm/src/dasm/DAsm.java
new file mode 100644
index 0000000..2b58705
--- /dev/null
+++ b/tools/dasm/src/dasm/DAsm.java
@@ -0,0 +1,1614 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dasm;
+
+import com.android.dx.dex.code.ArrayData;
+import com.android.dx.dex.code.CodeAddress;
+import com.android.dx.dex.code.CstInsn;
+import com.android.dx.dex.code.DalvCode;
+import com.android.dx.dex.code.DalvInsn;
+import com.android.dx.dex.code.Dops;
+import com.android.dx.dex.code.OddSpacer;
+import com.android.dx.dex.code.OutputFinisher;
+import com.android.dx.dex.code.PositionList;
+import com.android.dx.dex.code.SimpleInsn;
+import com.android.dx.dex.code.SwitchData;
+import com.android.dx.dex.code.TargetInsn;
+import com.android.dx.dex.code.form.Form51l;
+import com.android.dx.dex.file.ClassDefItem;
+import com.android.dx.dex.file.DexFile;
+import com.android.dx.dex.file.EncodedField;
+import com.android.dx.dex.file.EncodedMethod;
+import com.android.dx.rop.code.AccessFlags;
+import com.android.dx.rop.code.RegisterSpec;
+import com.android.dx.rop.code.RegisterSpecList;
+import com.android.dx.rop.code.SourcePosition;
+import com.android.dx.rop.cst.Constant;
+import com.android.dx.rop.cst.CstBoolean;
+import com.android.dx.rop.cst.CstByte;
+import com.android.dx.rop.cst.CstChar;
+import com.android.dx.rop.cst.CstDouble;
+import com.android.dx.rop.cst.CstFieldRef;
+import com.android.dx.rop.cst.CstFloat;
+import com.android.dx.rop.cst.CstInteger;
+import com.android.dx.rop.cst.CstLong;
+import com.android.dx.rop.cst.CstMethodRef;
+import com.android.dx.rop.cst.CstNat;
+import com.android.dx.rop.cst.CstShort;
+import com.android.dx.rop.cst.CstString;
+import com.android.dx.rop.cst.CstType;
+import com.android.dx.rop.cst.CstUtf8;
+import com.android.dx.rop.type.StdTypeList;
+import com.android.dx.rop.type.Type;
+import com.android.dx.rop.type.TypeList;
+import com.android.dx.util.IntList;
+
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Vector;
+
+//TODO: copyright notice
+
+/**
+ * This class represents the public API for Dasm. It has two main methods (readD
+ * and write) and few utility methods. To compile .d file: -create DAsm instance
+ * -call readD() to read and parse content of .d file -call write() to write out
+ * binary representation of .d file. .d file can contain several classes and/or
+ * intefaces declarations.
+ */
+
+public class DAsm {
+    private static final boolean PARSER_DEBUG = false;
+
+    // number of errors reported in a file.
+    int errors;
+
+    // file being processed
+    DexFile dexFile;
+    int line_num;
+    Scanner scanner;
+
+    // state info for the class being built
+    boolean class_header;
+    String class_name;
+    int class_acc;
+    String superclass_name;
+    String source_name;
+    String filename;
+    Vector<String> interfaces = new Vector<String>();
+    ClassDefItem classDef;
+
+    // method being built
+    EncodedMethod enc_method;
+    CstNat method_nat;
+    int method_acc;
+    int regs_count;
+    OutputFinisher output_finisher;
+
+    /**
+     * list of exceptions that method can throw.
+     */
+    Vector<String> throw_list = new Vector<String>();
+
+    /**
+     * Constructor of CatchTable instances from method data.
+     */
+    DasmCatchBuilder catch_builder;
+
+    /**
+     * Holds CodeAddress associated with particular label and <i>planted</i>
+     * attribute specifying that CodeAddress was added to instructions array.
+     * <i>planted</i> is false if this label is a target of forward branch and
+     * it was not added to instructions array yet.
+     */
+    class LabelTableEntry {
+        LabelTableEntry(CodeAddress code_address, boolean planted) {
+            this.code_address = code_address;
+            this.planted = planted;
+        }
+
+        CodeAddress code_address;
+        boolean planted;
+    }
+
+    /**
+     * Hold a translation table "LabelX" -> CodeAddress, planted.
+     */
+    Hashtable<String, LabelTableEntry> labels_table;
+
+    /**
+     * used by relative forward jumps. When relative forward offset is found,
+     * CodeAddress is placed into unprocessed_relative_goto_addr. When addInsn
+     * method is called, it checks if there was a jump to current instruction
+     * and moves CodeAddress from unprocessed_relative_goto_addr into
+     * output_finisher.
+     */
+    int current_insn_number;
+    Hashtable<Integer, CodeAddress> unprocessed_relative_goto_addr = 
+            new Hashtable<Integer, CodeAddress>();
+
+    // fill-array-data data
+    int fill_data_reg;
+    String fill_array_data_type;
+    Vector<Number> fill_array_data_values;
+
+    // packed-switch and sparse-switch data
+    int switch_reg;
+    Vector<Object> switch_targets;
+    IntList switch_keys;
+    int packed_switch_first_key;
+    int packed_switch_current_key;
+
+    /**
+     * holds sparse-switch, packed-switch and fill-array-data data blocks to be
+     * added at the end of method
+     */
+    Vector<DalvInsn> data_blocks = new Vector<DalvInsn>();
+
+    /**
+     * Returns the number of warnings/errors encountered while parsing a file. 0
+     * if everything went OK.
+     */
+    public int errorCount() {
+        return errors;
+    }
+
+    void report_error(String msg) {
+        errors++;
+        System.out.println("Line " + line_num + ": " + msg);
+    }
+
+    void throwDasmError(String msg) throws DasmError {
+        throw new DasmError("Line " + line_num + ": " + msg);
+    }
+
+    /**
+     * used by .line directive
+     */
+    void addLineInfo(int line_num) throws DasmError {
+        throw new IllegalStateException(".line not implemented");
+    }
+
+    void addLine(int line_num) throws DasmError {
+        throw new IllegalStateException(".line not implemented");
+    }
+
+    /**
+     * used by the .var directive
+     */
+    void addVar(String startLab, String endLab, String name, String desc,
+            String sign, int var_num) throws DasmError {
+        throw new IllegalStateException(".var is not implemented");
+    }
+
+    void addVar(int startOffset, int endOffset, String name, String desc,
+            String sign, int var_num) throws DasmError {
+        throw new IllegalStateException(".var is not implemented");
+    }
+
+
+    /**
+     * Used by the parser to tell DAsm what the line number for the next
+     * statement is. DAsm's autoNumber mechanism uses this info.
+     */
+    void setLine(int l) {
+        if (PARSER_DEBUG) System.out.println("setLine(" + l + ")");
+        line_num = l;
+    }
+
+    /**
+     * called by the .inner directive
+     */
+    void addInner(short iacc, String name, String inner, String outer) {
+        throw new IllegalStateException(".inner is not implemented");
+    }
+
+    /*
+     * ========================================================================
+     * === FILE HEADER
+     * ========================================================================
+     */
+
+    /**
+     * called by the .source directive
+     */
+    void setSource(String name) {
+        if (PARSER_DEBUG) System.out.println("setSource(" + name + ")");
+        source_name = name;
+    }
+
+    /**
+     * called by the .bytecode directive
+     */
+    void setVersion(Number version) {
+        throw new IllegalStateException(".bytecode is not implemented");
+    }
+
+    /**
+     * called by the .class directive
+     */
+    void setClass(String name, int acc) {
+        if (PARSER_DEBUG)
+            System.out.println("setClass(" + name + ", " + acc + ")");
+        class_name = name;
+        class_acc = acc;
+        class_header = true;
+        interfaces.clear();
+        superclass_name = null;
+    }
+
+    /**
+     * Returns the name of the class in the file (i.e. the string given to the
+     * .class parameter). If there're several classes in one file, returns name
+     * of last class.
+     */
+    public String getClassName() {
+        return class_name;
+    }
+
+    /**
+     * called by the .super directive
+     */
+    void setSuperClass(String name) {
+        if (PARSER_DEBUG) System.out.println("setSuperClass(" + name + ")");
+        superclass_name = name;
+    }
+
+    /**
+     * called by the .implements directive
+     */
+    void addInterface(String name) {
+        if (PARSER_DEBUG) System.out.println("addInterface(" + name + ")");
+
+        int sz = interfaces.size();
+        boolean found = false;
+        // search for duplicates
+        for (int i = 0; i < sz; i++) {
+            String s = interfaces.elementAt(i);
+            if (s.compareTo(name) == 0) {
+                found = true;
+                break;
+            }
+
+        }
+        if (found == false) interfaces.add(name);
+    }
+
+    /**
+     * called by the .signature directive
+     */
+    void setSignature(String str) throws DasmError {
+        throw new IllegalStateException(".signature is not implemented");
+    }
+
+    /**
+     * called by the .enclosing directive
+     */
+    void setEnclosingMethod(String str) {
+        throw new IllegalStateException(".enclosing is not implemented");
+    }
+
+    /**
+     * called by the .attribute directive
+     */
+    void addGenericAttr(String name, String file) throws DasmError {
+        throw new IllegalStateException(".attribute is not implemented");
+    }
+
+    /**
+     * called at end of dasm-header (resolve class variables)
+     */
+    void endHeader() {
+
+        TypeList tl = createTypeListFromStrings(interfaces);
+
+        classDef = new ClassDefItem(CstType.intern(Type
+                .internClassName(class_name)), class_acc,
+                superclass_name != null ? CstType.intern(Type
+                        .internClassName(superclass_name)) : null, tl,
+                new CstUtf8(source_name));
+        dexFile.add(classDef);
+        class_header = false;
+    }
+
+    /*
+     * ========================================================================
+     * === FIELDS
+     * ========================================================================
+     */
+
+    /**
+     * called by the .field directive to begin 'prompted' field
+     */
+    void beginField(short access, String name, String desc, Object value)
+            throws DasmError {
+        throw new IllegalStateException(
+                "multiline fields are not implemented yet");
+    }
+
+    /**
+     * called by the .end field directive to end 'prompted' field
+     */
+    void endField() throws DasmError {
+        throw new IllegalStateException(
+                "multiline fields are not implemented yet");
+    }
+
+    /**
+     * called by the .field directive
+     */
+    void addField(short access, String name, String desc, String sig,
+            Object value) throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("addField(" + name + ", " + desc + ", " + sig
+                    + ", " + access + ", "
+                    + (value == null ? "null" : value.toString()) + ")");
+
+        CstNat nat = new CstNat(new CstUtf8(name), new CstUtf8(desc));
+        CstFieldRef field = new CstFieldRef(classDef.getThisClass(), nat);
+        EncodedField ef = new EncodedField(field, access);
+        if ((access & AccessFlags.ACC_STATIC) != 0) {
+            // TODO: value?
+            if (value != null)
+                throw new IllegalStateException(
+                        "addField: field initialization not implemented yet");
+            classDef.addStaticField(ef, null);
+        } else
+            classDef.addInstanceField(ef);
+    }
+
+
+    /*
+     * ========================================================================
+     * === METHODS
+     * ========================================================================
+     */
+
+    /**
+     * called by the .method directive to start the definition for a method
+     */
+    void newMethod(String name, String descriptor, int access) {
+        if (PARSER_DEBUG)
+            System.out.println("newMethod(" + name + ", " + descriptor + ", "
+                    + access + ")");
+
+        output_finisher = null;
+        throw_list.clear();
+        unprocessed_relative_goto_addr.clear();
+        labels_table = new Hashtable<String, LabelTableEntry>();
+        catch_builder = new DasmCatchBuilder(labels_table);
+        current_insn_number = 0;
+        regs_count = 1;
+
+        method_nat = new CstNat(new CstUtf8(name), new CstUtf8(descriptor));
+        if (method_nat.isClassInit()) access |= AccessFlags.ACC_STATIC;
+        if (method_nat.isInstanceInit()) access |= AccessFlags.ACC_CONSTRUCTOR;
+
+        method_acc = access;
+    }
+
+    /**
+     * called by the .end method directive to end the definition for a method
+     */
+    void endMethod() throws DasmError {
+        if (PARSER_DEBUG) System.out.println("endMethod()");
+
+        // add packed-switch, sparse-switch, fill-array-data data blocks at the
+        // end of method
+        int sz = data_blocks.size();
+        for (int i = 0; i < sz; i++) {
+            addInsn(data_blocks.elementAt(i));
+        }
+        data_blocks.clear();
+
+        // check jump targets
+        if (unprocessed_relative_goto_addr.size() != 0) {
+            report_error("Relative forward jump offset too big.");
+        }
+        Enumeration<String> e = labels_table.keys();
+        while (e.hasMoreElements()) {
+            String key = e.nextElement();
+            LabelTableEntry lte = labels_table.get(key);
+            if (lte.planted == false) {
+                report_error("Label " + key + " not found.");
+            }
+        }
+
+        TypeList tl = createTypeListFromStrings(throw_list);
+
+        CstMethodRef meth = new CstMethodRef(classDef.getThisClass(),
+                method_nat);
+        DalvCode code = null;
+        // output_finisher may be null at this point if method is native
+        if (output_finisher != null)
+            code = new DalvCode(PositionList.NONE, output_finisher,
+                    catch_builder);
+        enc_method = new EncodedMethod(meth, method_acc, code, tl);
+
+        if (meth.isInstanceInit() || meth.isClassInit()
+                || (method_acc & AccessFlags.ACC_STATIC) != 0
+                || (method_acc & AccessFlags.ACC_PRIVATE) != 0) {
+            classDef.addDirectMethod(enc_method);
+        } else {
+            classDef.addVirtualMethod(enc_method);
+        }
+        catch_builder = null;
+        labels_table = null;
+    }
+
+    /**
+     * used by the .limit regs directive
+     */
+    void setRegsSize(int v) throws DasmError {
+        if (PARSER_DEBUG) System.out.println("setRegsSize(" + v + ")");
+        regs_count = v;
+    }
+
+    /**
+     * used by the .throws directive
+     */
+    void addThrow(String name) throws DasmError {
+        if (PARSER_DEBUG) System.out.println("addThrow(" + name + ")");
+        throw_list.add(name);
+    }
+
+    /**
+     * used by the .catch directive
+     */
+    void addCatch(String name, String start_lab, String end_lab,
+            String branch_lab) throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("addCatch(" + name + ", " + start_lab + ", "
+                    + end_lab + ", " + branch_lab + ")");
+        catch_builder.add(name, start_lab, end_lab, branch_lab);
+    }
+
+    void addCatch(String name, int start_off, int end_off, int branch_off)
+            throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("addCatch(" + name + ", " + start_off + ", "
+                    + end_off + ", " + branch_off + ")");
+        throw new IllegalStateException(
+                "addCatch(String, int, int, int) is not implemented yet");
+    }
+
+
+    /**
+     * defines a label
+     */
+    void plantLabel(String name) throws DasmError {
+        if (PARSER_DEBUG) System.out.println("plantLabel(" + name + ")");
+        createOutputFinisher();
+        LabelTableEntry lte = labels_table.get(name);
+        if (lte != null) {
+            if (lte.planted == true)
+                report_error("Label " + name + " already defined");
+            else {
+                lte.planted = true;
+                addInsn(lte.code_address);
+            }
+        } else {
+            CodeAddress code_address = new CodeAddress(createSourcePosition());
+            addInsn(code_address);
+            labels_table.put(name, new LabelTableEntry(code_address, true));
+        }
+    }
+
+
+    /**
+     * used for instructions that take no arguments Format: 10x
+     */
+    void addOpcode(String name) throws DasmError {
+        if (PARSER_DEBUG) System.out.println("addOpcode(" + name + ")");
+        createOutputFinisher();
+        DopInfo insn = DopInfo.get(name);
+        if (insn.args.equals("")) {
+            DalvInsn dalvInsn = new SimpleInsn(insn.opcode,
+                    createSourcePosition(), RegisterSpecList.EMPTY);
+            addInsn(dalvInsn);
+        } else {
+            throwDasmError("Missing arguments for instruction " + name);
+        }
+    }
+
+    /**
+     * used for instructions that take a word as a parameter (register name is
+     * treated as word) Format: 11x, 10t, 20t, 30t
+     */
+    void addOpcode(String name, String val) throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("addOpcode(" + name + ", " + val + ")");
+        createOutputFinisher();
+        DopInfo insn = DopInfo.get(name);
+        if (insn.args.compareToIgnoreCase(DopInfo.ARG_REGISTER) == 0) {
+            int reg_num = -1;
+
+            try {
+                reg_num = getRegNumberFromString(val);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + val + ")");
+            }
+            // TODO: is Type.INT suitable for any opcodes? Or it should be
+            // Type.OBJECT for return-object, for example?
+            RegisterSpec reg_spec = RegisterSpec.make(reg_num, Type.INT);
+            DalvInsn dalvInsn = new SimpleInsn(insn.opcode,
+                    createSourcePosition(), RegisterSpecList.make(reg_spec));
+            addInsn(dalvInsn);
+        } else if (insn.args.compareToIgnoreCase(DopInfo.ARG_ADDRESS) == 0) {
+            LabelTableEntry lte = labels_table.get(val);
+            if (lte == null) {
+                CodeAddress code_address = new CodeAddress(
+                        SourcePosition.NO_INFO);
+                lte = new LabelTableEntry(code_address, false);
+                labels_table.put(val, lte);
+            }
+            DalvInsn dalvInsn = new TargetInsn(insn.opcode,
+                    createSourcePosition(), RegisterSpecList.EMPTY,
+                    lte.code_address);
+            addInsn(dalvInsn);
+        } else {
+            throwDasmError("Bad arguments for instruction " + name + "(" + val
+                    + ")");
+        }
+    }
+
+    /**
+     * used for relative branch targets (ie $+5, $-12, ...) Format: relative
+     * 10t, 20t, 30t
+     */
+    void addRelativeGoto(String name, int val) throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("addRelativeGoto(" + name + ", " + val + ")");
+        createOutputFinisher();
+        DopInfo insn = DopInfo.get(name);
+        if (insn.args.compareToIgnoreCase(DopInfo.ARG_ADDRESS) == 0) {
+            if (val == 0)
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + val + ")");
+
+            CodeAddress code_address = new CodeAddress(SourcePosition.NO_INFO);
+            if (val < 0) {
+                output_finisher.insert(current_insn_number + val, code_address);
+                current_insn_number++;
+            } else {
+                unprocessed_relative_goto_addr.put(current_insn_number + val,
+                        code_address);
+            }
+            DalvInsn dalvInsn = new TargetInsn(insn.opcode,
+                    createSourcePosition(), RegisterSpecList.EMPTY,
+                    code_address);
+            addInsn(dalvInsn);
+
+        } else {
+            throwDasmError("Bad arguments for instruction " + name + "(" + val
+                    + ")");
+        }
+    }
+
+    /**
+     * used for instructions that take two word parameters (register name is
+     * treated as word) Format: 12x, 22x, 32x, 21t, 21c (string@, type@), 31c,
+     * 35c, 3rc
+     */
+    void addOpcode(String name, String v1, String v2) throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("addOpcode(" + name + ", " + v1 + ", " + v2
+                    + ")");
+        createOutputFinisher();
+        DopInfo insn = DopInfo.get(name);
+
+        if (insn.args.compareToIgnoreCase(DopInfo.ARG_REG_REG) == 0) {
+            int reg1_num = -1, reg2_num = -1;
+
+            try {
+                reg1_num = getRegNumberFromString(v1);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v1 + ")");
+            }
+
+            try {
+                reg2_num = getRegNumberFromString(v2);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v2 + ")");
+            }
+            // TODO: is Type.INT suitable for any opcodes?
+            RegisterSpec reg1_spec = RegisterSpec.make(reg1_num, Type.INT);
+            RegisterSpec reg2_spec = RegisterSpec.make(reg2_num, Type.INT);
+            DalvInsn dalvInsn = new SimpleInsn(insn.opcode,
+                    createSourcePosition(), RegisterSpecList.make(reg1_spec,
+                            reg2_spec));
+            addInsn(dalvInsn);
+        } else if (insn.args.compareToIgnoreCase(
+                DopInfo.ARG_REG_ADDRESS) == 0) {
+            int reg1_num = -1;
+
+            try {
+                reg1_num = getRegNumberFromString(v1);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v1 + ")");
+            }
+
+            LabelTableEntry lte = labels_table.get(v2);
+            if (lte == null) {
+                CodeAddress code_address = new CodeAddress(
+                        SourcePosition.NO_INFO);
+                lte = new LabelTableEntry(code_address, false);
+                labels_table.put(v2, lte);
+            }
+
+            RegisterSpec reg1_spec = RegisterSpec.make(reg1_num, Type.INT);
+            DalvInsn dalvInsn = new TargetInsn(insn.opcode,
+                    createSourcePosition(), RegisterSpecList.make(reg1_spec),
+                    lte.code_address);
+            addInsn(dalvInsn);
+        } else if (insn.args.compareToIgnoreCase(DopInfo.ARG_REG_STRING) == 0) {
+            int reg1_num = -1;
+
+            try {
+                reg1_num = getRegNumberFromString(v1);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v1 + ")");
+            }
+            RegisterSpec reg1_spec = RegisterSpec.make(reg1_num, Type.STRING);
+            Constant constant = new CstString(new CstUtf8(v2));
+            DalvInsn dalvInsn = new CstInsn(insn.opcode,
+                    createSourcePosition(), RegisterSpecList.make(reg1_spec),
+                    constant);
+            addInsn(dalvInsn);
+        } else if (insn.args.compareToIgnoreCase(DopInfo.ARG_REG_TYPE) == 0) {
+            int reg1_num = -1;
+
+            try {
+                reg1_num = getRegNumberFromString(v1);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v1 + ")");
+            }
+            Type type;
+            try {
+                // try to intern it as primitive type first
+                type = Type.intern(v2);
+            } catch (IllegalArgumentException e) {
+                type = Type.internClassName(v2);
+            }
+
+            RegisterSpec reg1_spec = RegisterSpec.make(reg1_num, type);
+            Constant constant = CstType.intern(type);
+            DalvInsn dalvInsn = new CstInsn(insn.opcode,
+                    createSourcePosition(), RegisterSpecList.make(reg1_spec),
+                    constant);
+            addInsn(dalvInsn);
+        } else if (insn.args.compareToIgnoreCase(DopInfo.ARG_REGLIST_TYPE) == 0
+                || insn.args.compareToIgnoreCase(
+                        DopInfo.ARG_REGLIST_METHOD) == 0
+                || insn.args.compareToIgnoreCase(
+                        DopInfo.ARG_REGLIST_INTFMETHOD) == 0) {
+            RegisterSpecList reg_spec_list = RegisterSpecList.EMPTY;
+            String regs[] = Utils.splitRegList(v1);
+            if (regs != null) {
+                int rn = regs.length;
+                if (rn == 0 || rn > 5)
+                    throwDasmError("Bad arguments for instruction " + name
+                            + "(" + v1 + ")");
+                int reg_num[] = new int[rn];
+
+                reg_spec_list = new RegisterSpecList(rn);
+
+                for (int i = 0; i < rn; i++) {
+                    try {
+                        reg_num[i] = getRegNumberFromString(regs[i]);
+                    } catch (IllegalArgumentException e) {
+                        throwDasmError("Bad arguments for instruction " + name
+                                + "(" + v1 + ")");
+                    }
+                    reg_spec_list.set(i, RegisterSpec
+                            .make(reg_num[i], Type.INT));
+                }
+            }
+            Constant constant;
+            if (insn.args.compareToIgnoreCase(DopInfo.ARG_REGLIST_TYPE) == 0) {
+                // filled-new-array
+                Type type;
+                try {
+                    type = Type.intern(v2);
+                } catch (IllegalArgumentException e) {
+                    // in case of exception, try to intern type as a class name
+                    // (Lclass_name;)
+                    type = Type.internClassName(v2);
+                }
+                constant = CstType.intern(type);
+            } else {
+                // invoke-kind
+                String[] names = Utils.getClassMethodSignatureFromString(v2);
+                CstNat method_nat = new CstNat(new CstUtf8(names[1]),
+                        new CstUtf8(names[2]));
+
+                /*
+                 * if(insn.args.compareToIgnoreCase(
+                 *          DopInfo.ARG_REGLIST_INTFMETHOD
+                 * ) == 0) constant = new
+                 * CstInterfaceMethodRef(CstType.intern(Type
+                 * .internClassName(names[0])), method_nat); else
+                 */
+                constant = new CstMethodRef(CstType.intern(Type
+                        .internClassName(names[0])), method_nat);
+            }
+
+            DalvInsn dalvInsn = new CstInsn(insn.opcode,
+                    createSourcePosition(), reg_spec_list, constant);
+            addInsn(dalvInsn);
+
+        } else if (insn.args.compareToIgnoreCase(
+                        DopInfo.ARG_REGRANGE_TYPE) == 0
+                || insn.args.compareToIgnoreCase(
+                        DopInfo.ARG_REGRANGE_METHOD) == 0
+                || insn.args.compareToIgnoreCase(
+                        DopInfo.ARG_REGRANGE_INTFMETHOD) == 0) {
+            String regs[] = Utils.splitRegList(v1);
+            RegisterSpecList reg_spec_list;
+            if (regs != null && regs.length > 0) {
+                int regC = -1, regN = -1;
+                try {
+                    regC = getRegNumberFromString(regs[0]);
+                } catch (IllegalArgumentException e) {
+                    throwDasmError("Bad arguments for instruction " + name
+                            + "(" + v1 + ")");
+                }
+
+                if (regs.length > 1) {
+                    try {
+                        regN = getRegNumberFromString(regs[1]);
+                    } catch (IllegalArgumentException e) {
+                        throwDasmError("Bad arguments for instruction " + name
+                                + "(" + v1 + ")");
+                    }
+
+                    if (regC >= regN)
+                        throwDasmError("Bad arguments for instruction " + name
+                                + "(" + v1 + ")");
+                } else
+                    regN = regC;
+
+
+                int sz = regN - regC + 1;
+                reg_spec_list = new RegisterSpecList(sz);
+
+                for (int i = 0; i < sz; i++) {
+                    reg_spec_list.set(i, RegisterSpec.make(regC + i, Type.INT));
+                }
+            } else
+                reg_spec_list = RegisterSpecList.EMPTY;
+
+            Constant constant;
+            if (insn.args.compareToIgnoreCase(DopInfo.ARG_REGRANGE_TYPE) == 0) {
+                // filled-new-array/range
+                Type type;
+                try {
+                    type = Type.intern(v2);
+                } catch (IllegalArgumentException e) {
+                    // in case of exception, try to intern type as a class name
+                    // (Lclass_name;)
+                    type = Type.internClassName(v2);
+                }
+                constant = CstType.intern(type);
+            } else {
+                // invoke-kind/range
+                String[] names = Utils.getClassMethodSignatureFromString(v2);
+                CstNat method_nat = new CstNat(new CstUtf8(names[1]),
+                        new CstUtf8(names[2]));
+
+                /*
+                 * if(insn.args.compareToIgnoreCase(
+                 *         DopInfo.ARG_REGRANGE_INTFMETHOD
+                 * ) == 0) constant = new
+                 * CstInterfaceMethodRef(CstType.intern(Type
+                 * .internClassName(names[0])), method_nat); else
+                 */
+                constant = new CstMethodRef(CstType.intern(Type
+                        .internClassName(names[0])), method_nat);
+            }
+
+            DalvInsn dalvInsn = new CstInsn(insn.opcode,
+                    createSourcePosition(), reg_spec_list, constant);
+            addInsn(dalvInsn);
+
+        } else {
+            throwDasmError("Bad arguments for instruction " + name + "(" + v1
+                    + ", " + v2 + ")");
+        }
+    }
+
+    /**
+     * used for relative branch targets (ie $+5, $-12, ...) Format: relative 21t
+     */
+    void addRelativeGoto(String name, String v1, int val) throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("addRelativeGoto(" + name + ", " + v1 + ", "
+                    + val + ")");
+        createOutputFinisher();
+        DopInfo insn = DopInfo.get(name);
+        if (insn.args.compareToIgnoreCase(DopInfo.ARG_REG_ADDRESS) == 0) {
+            if (val == 0)
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + val + ")");
+
+            int reg1_num = -1;
+            try {
+                reg1_num = getRegNumberFromString(v1);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v1 + ")");
+            }
+
+            RegisterSpec reg1_spec = RegisterSpec.make(reg1_num, Type.INT);
+            RegisterSpecList rsl = RegisterSpecList.make(reg1_spec);
+            CodeAddress code_address = new CodeAddress(SourcePosition.NO_INFO);
+            if (val < 0) {
+                output_finisher.insert(current_insn_number + val, code_address);
+                current_insn_number++;
+            } else {
+                unprocessed_relative_goto_addr.put(current_insn_number + val,
+                        code_address);
+            }
+            DalvInsn dalvInsn = new TargetInsn(insn.opcode,
+                    createSourcePosition(), rsl, code_address);
+            addInsn(dalvInsn);
+
+        } else {
+            throwDasmError("Bad arguments for instruction " + name + "(" + val
+                    + ")");
+        }
+    }
+
+    /**
+     * used for instructions that take one word parameter (register name is
+     * treated as word) and one literal Format: 11n, 21s, 31i, 21h, 51l
+     */
+    void addOpcode(String name, String v1, Number v2) throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("addOpcode(" + name + ", " + v1 + ", " + v2
+                    + ")");
+        createOutputFinisher();
+        DopInfo insn = DopInfo.get(name);
+        if (insn.args.compareToIgnoreCase(DopInfo.ARG_REG_LITERAL) == 0) {
+            int reg1_num = -1;
+
+            try {
+                reg1_num = getRegNumberFromString(v1);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v1 + ")");
+            }
+
+            RegisterSpec reg1_spec;
+            Constant constant;
+            // create Constant of type suitable for value specified in
+            // instruction
+            if (v2 instanceof Long
+                    || (v2 instanceof Integer &&
+                            insn.opcode.getFormat() == Form51l.THE_ONE)) {
+                reg1_spec = RegisterSpec.make(reg1_num, Type.LONG);
+                constant = CstLong.make(v2.longValue());
+            } else if (v2 instanceof Float
+                    && insn.opcode.getFormat() != Form51l.THE_ONE) {
+                reg1_spec = RegisterSpec.make(reg1_num, Type.FLOAT);
+                constant = CstFloat.make(Float.floatToIntBits(v2.floatValue()));
+            } else if (v2 instanceof Double
+                    || (v2 instanceof Float && 
+                            insn.opcode.getFormat() == Form51l.THE_ONE)) {
+                reg1_spec = RegisterSpec.make(reg1_num, Type.DOUBLE);
+                constant = CstDouble.make(Double.doubleToLongBits(v2
+                        .doubleValue()));
+            } else {
+                reg1_spec = RegisterSpec.make(reg1_num, Type.INT);
+                constant = CstInteger.make(v2.intValue());
+            }
+
+            DalvInsn dalvInsn = new CstInsn(insn.opcode,
+                    createSourcePosition(), RegisterSpecList.make(reg1_spec),
+                    constant);
+            addInsn(dalvInsn);
+        } else {
+            throwDasmError("Bad arguments for instruction " + name + "(" + v1
+                    + ", " + v2 + ")");
+        }
+
+    }
+
+    /**
+     * used for instructions that take three word parameters (register name is
+     * treated as word) Format: 23x, 22t, 21c (field@), 22c (type@)
+     */
+    void addOpcode(String name, String v1, String v2, String v3)
+            throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("addOpcode(" + name + ", " + v1 + ", " + v2
+                    + ", " + v3 + ")");
+        createOutputFinisher();
+        DopInfo insn = DopInfo.get(name);
+
+        if (insn.args.compareToIgnoreCase(DopInfo.ARG_REG_REG_REG) == 0) {
+            int reg1_num = -1, reg2_num = -1, reg3_num = -1;
+
+            try {
+                reg1_num = getRegNumberFromString(v1);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v1 + ")");
+            }
+
+            try {
+                reg2_num = getRegNumberFromString(v2);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v2 + ")");
+            }
+
+            try {
+                reg3_num = getRegNumberFromString(v3);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v3 + ")");
+            }
+            // TODO: is Type.INT suitable for any opcodes?
+            RegisterSpec reg1_spec = RegisterSpec.make(reg1_num, Type.INT);
+            RegisterSpec reg2_spec = RegisterSpec.make(reg2_num, Type.INT);
+            RegisterSpec reg3_spec = RegisterSpec.make(reg3_num, Type.INT);
+            DalvInsn dalvInsn = new SimpleInsn(insn.opcode,
+                    createSourcePosition(), RegisterSpecList.make(reg1_spec,
+                            reg2_spec, reg3_spec));
+            addInsn(dalvInsn);
+        } else if (insn.args.compareToIgnoreCase(
+                DopInfo.ARG_REG_REG_ADDRESS) == 0) {
+            int reg1_num = -1, reg2_num = -1;
+
+            try {
+                reg1_num = getRegNumberFromString(v1);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v1 + ")");
+            }
+
+            try {
+                reg2_num = getRegNumberFromString(v2);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v2 + ")");
+            }
+
+            LabelTableEntry lte = labels_table.get(v3);
+            if (lte == null) {
+                CodeAddress code_address = new CodeAddress(
+                        SourcePosition.NO_INFO);
+                lte = new LabelTableEntry(code_address, false);
+                labels_table.put(v3, lte);
+            }
+
+            RegisterSpec reg1_spec = RegisterSpec.make(reg1_num, Type.INT);
+            RegisterSpec reg2_spec = RegisterSpec.make(reg2_num, Type.INT);
+
+            DalvInsn dalvInsn = new TargetInsn(insn.opcode,
+                    createSourcePosition(), RegisterSpecList.make(reg1_spec,
+                            reg2_spec), lte.code_address);
+            addInsn(dalvInsn);
+        } else if (insn.args.compareToIgnoreCase(DopInfo.ARG_REG_FIELD) == 0) {
+            int reg1_num = -1;
+
+            try {
+                reg1_num = getRegNumberFromString(v1);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v1 + ")");
+            }
+            // TODO: is Type.INT suitable?
+            RegisterSpec reg1_spec = RegisterSpec.make(reg1_num, Type.INT);
+
+            String[] names = Utils.getClassFieldFromString(v2);
+
+            CstNat field_nat = new CstNat(new CstUtf8(names[1]),
+                    new CstUtf8(v3));
+
+            Constant constant = new CstFieldRef(CstType.intern(Type
+                    .internClassName(names[0])), field_nat);
+            DalvInsn dalvInsn = new CstInsn(insn.opcode,
+                    createSourcePosition(), RegisterSpecList.make(reg1_spec),
+                    constant);
+            addInsn(dalvInsn);
+        } else if (insn.args.compareToIgnoreCase(
+                DopInfo.ARG_REG_REG_TYPE) == 0) {
+            int reg1_num = -1, reg2_num = -1;
+
+            try {
+                reg1_num = getRegNumberFromString(v1);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v1 + ")");
+            }
+
+            try {
+                reg2_num = getRegNumberFromString(v2);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v2 + ")");
+            }
+
+            Type type = Type.internClassName(v3);
+            RegisterSpec reg1_spec = RegisterSpec.make(reg1_num, type);
+            RegisterSpec reg2_spec = RegisterSpec.make(reg2_num, type);
+            Constant constant = CstType.intern(type);
+            DalvInsn dalvInsn = new CstInsn(insn.opcode,
+                    createSourcePosition(), RegisterSpecList.make(reg1_spec,
+                            reg2_spec), constant);
+            addInsn(dalvInsn);
+        } else {
+            throwDasmError("Bad arguments for instruction " + name + "(" + v1
+                    + ", " + v2 + ", " + v3 + ")");
+        }
+    }
+
+    /**
+     * Format: 22c (field@)
+     */
+    void addOpcode(String name, String v1, String v2, String v3, String v4)
+            throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("addOpcode(" + name + ", " + v1 + ", " + v2
+                    + ", " + v3 + ", " + v4 + ")");
+        createOutputFinisher();
+        DopInfo insn = DopInfo.get(name);
+        if (insn.args.compareToIgnoreCase(DopInfo.ARG_REG_REG_FIELD) == 0) {
+            int reg1_num = -1, reg2_num = -1;
+
+            try {
+                reg1_num = getRegNumberFromString(v1);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v1 + ")");
+            }
+            try {
+                reg2_num = getRegNumberFromString(v2);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v2 + ")");
+            }
+            // TODO: is Type.INT suitable?
+            RegisterSpec reg1_spec = RegisterSpec.make(reg1_num, Type.INT);
+            RegisterSpec reg2_spec = RegisterSpec.make(reg2_num, Type.INT);
+
+            String[] names = Utils.getClassFieldFromString(v3);
+
+            CstNat field_nat = new CstNat(new CstUtf8(names[1]),
+                    new CstUtf8(v4));
+
+            Constant constant = new CstFieldRef(CstType.intern(Type
+                    .internClassName(names[0])), field_nat);
+            DalvInsn dalvInsn = new CstInsn(insn.opcode,
+                    createSourcePosition(), RegisterSpecList.make(reg1_spec,
+                            reg2_spec), constant);
+            addInsn(dalvInsn);
+        } else if (insn.args.compareToIgnoreCase(
+                DopInfo.ARG_REGRANGE_TYPE) == 0) {
+            String regs[] = Utils.splitRegList(v1);
+            if (regs.length != 2)
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v1 + ")");
+
+            int regC = -1, regN = -1;
+            try {
+                regC = getRegNumberFromString(regs[0]);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v1 + ")");
+            }
+            try {
+                regN = getRegNumberFromString(regs[1]);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v1 + ")");
+            }
+
+            if (regC >= regN)
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v1 + ")");
+
+            int sz = regN - regC + 1;
+            RegisterSpecList reg_spec_list = new RegisterSpecList(sz);
+
+            for (int i = 0; i < sz; i++) {
+                reg_spec_list.set(i, RegisterSpec.make(regC + i, Type.INT));
+            }
+
+            Type type;
+            try {
+                type = Type.intern(v2);
+            } catch (IllegalArgumentException e) {
+                // in case of exception, try to intern type as a class name
+                // (Lclass_name;)
+                type = Type.internClassName(v2);
+            }
+            Constant constant = CstType.intern(type);
+
+            DalvInsn dalvInsn = new CstInsn(insn.opcode,
+                    createSourcePosition(), reg_spec_list, constant);
+            addInsn(dalvInsn);
+
+        } else {
+            throwDasmError("Bad arguments for instruction " + name + "(" + v1
+                    + ", " + v2 + ", " + v3 + ", " + v4 + ")");
+        }
+    }
+
+    /**
+     * used for relative branch targets (ie $+5, $-12, ...) Format: relative 22t
+     */
+    void addRelativeGoto(String name, String v1, String v2, int val)
+            throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("addRelativeGoto(" + name + ", " + v1 + ", "
+                    + v2 + ", " + val + ")");
+        createOutputFinisher();
+        DopInfo insn = DopInfo.get(name);
+        if (insn.args.compareToIgnoreCase(DopInfo.ARG_REG_REG_ADDRESS) == 0) {
+            if (val == 0)
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + val + ")");
+
+            int reg1_num = -1, reg2_num = -1;
+
+            try {
+                reg1_num = getRegNumberFromString(v1);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v1 + ")");
+            }
+
+            try {
+                reg2_num = getRegNumberFromString(v2);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v2 + ")");
+            }
+
+            RegisterSpec reg1_spec = RegisterSpec.make(reg1_num, Type.INT);
+            RegisterSpec reg2_spec = RegisterSpec.make(reg2_num, Type.INT);
+            RegisterSpecList rsl = RegisterSpecList.make(reg1_spec, reg2_spec);
+            CodeAddress code_address = new CodeAddress(SourcePosition.NO_INFO);
+            if (val < 0) {
+                output_finisher.insert(current_insn_number + val, code_address);
+                current_insn_number++;
+            } else {
+                unprocessed_relative_goto_addr.put(current_insn_number + val,
+                        code_address);
+            }
+            DalvInsn dalvInsn = new TargetInsn(insn.opcode,
+                    createSourcePosition(), rsl, code_address);
+            addInsn(dalvInsn);
+
+        } else {
+            throwDasmError("Bad arguments for instruction " + name + "(" + val
+                    + ")");
+        }
+    }
+
+    /**
+     * used for instructions that take two word parameters (register name is
+     * treated as word) and one literal Format: 22b, 22s
+     */
+    void addOpcode(String name, String v1, String v2, int v3) throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("addOpcode(" + name + ", " + v1 + ", " + v2
+                    + ")");
+        createOutputFinisher();
+        DopInfo insn = DopInfo.get(name);
+
+        if (insn.args.compareToIgnoreCase(DopInfo.ARG_REG_REG_LITERAL) == 0) {
+            int reg1_num = -1, reg2_num = -1;
+
+            try {
+                reg1_num = getRegNumberFromString(v1);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v1 + ")");
+            }
+
+            try {
+                reg2_num = getRegNumberFromString(v2);
+            } catch (IllegalArgumentException e) {
+                throwDasmError("Bad arguments for instruction " + name + "("
+                        + v2 + ")");
+            }
+            // TODO: is Type.INT suitable for any opcodes?
+            RegisterSpec reg1_spec = RegisterSpec.make(reg1_num, Type.INT);
+            RegisterSpec reg2_spec = RegisterSpec.make(reg2_num, Type.INT);
+            Constant constant = CstInteger.make(v3);
+            DalvInsn dalvInsn = new CstInsn(insn.opcode,
+                    createSourcePosition(), RegisterSpecList.make(reg1_spec,
+                            reg2_spec), constant);
+            addInsn(dalvInsn);
+        } else {
+            throwDasmError("Bad arguments for instruction " + name + "(" + v1
+                    + ", " + v2 + ", " + v3 + ")");
+        }
+    }
+
+    /**
+     * used for fill-array-data instruction Format: 31t fill-array-data
+     * instruction has the syntax: fill-array-data &lt;register&gt; &lt;type&gt;
+     * &lt;value1&gt; &lt;value2&gt; .... fill-array-data-end For example:
+     * fill-array-data v7 I 1 2 3 4 5 fill-array-data-end
+     */
+    void newFillArrayData(String reg, String type) throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("newFillArrayData(" + reg + ", " + type + ")");
+
+        try {
+            fill_data_reg = getRegNumberFromString(reg);
+        } catch (IllegalArgumentException e) {
+            throwDasmError("Bad arguments for fill-array-data (" + reg + ")");
+        }
+
+        fill_array_data_type = type;
+        fill_array_data_values = new Vector<Number>();
+    }
+
+    /**
+     * add new value to data block
+     */
+    void addFillArrayData(Number num) throws DasmError {
+        if (PARSER_DEBUG) System.out.println("addFillArrayData(" + num + ")");
+        fill_array_data_values.add(num);
+    }
+
+    /**
+     * called by fill-array-data-end
+     */
+    void endFillArrayData() throws DasmError {
+        if (PARSER_DEBUG) System.out.println("endFillArrayData");
+        int sz = fill_array_data_values.size();
+        ArrayList<Constant> values = new ArrayList<Constant>(sz);
+        CstType arrayType = CstType.intern(Type.intern("["
+                + fill_array_data_type));
+        for (int i = 0; i < sz; i++) {
+            Constant constant;
+            Number num = fill_array_data_values.elementAt(i);
+            if (arrayType == CstType.LONG_ARRAY) {
+                constant = CstLong.make(num.longValue());
+            } else if (arrayType == CstType.FLOAT_ARRAY) {
+                constant = CstFloat
+                        .make(Float.floatToIntBits(num.floatValue()));
+            } else if (arrayType == CstType.DOUBLE_ARRAY) {
+                constant = CstDouble.make(Double.doubleToLongBits(num
+                        .doubleValue()));
+            } else if (arrayType == CstType.BOOLEAN_ARRAY) {
+                constant = CstBoolean.make(num.intValue());
+            } else if (arrayType == CstType.BYTE_ARRAY) {
+                constant = CstByte.make(num.intValue());
+            } else if (arrayType == CstType.CHAR_ARRAY) {
+                constant = CstChar.make(num.intValue());
+            } else if (arrayType == CstType.SHORT_ARRAY) {
+                constant = CstShort.make(num.intValue());
+            } else {
+                constant = CstInteger.make(num.intValue());
+            }
+            values.add(constant);
+        }
+
+        CodeAddress insn_addr = new CodeAddress(createSourcePosition());
+        CodeAddress data_addr = new CodeAddress(SourcePosition.NO_INFO);
+        DalvInsn dalvInsn = new TargetInsn(Dops.FILL_ARRAY_DATA,
+                createSourcePosition(), RegisterSpecList
+                        .make(RegisterSpec.make(fill_data_reg, Type
+                                .intern(fill_array_data_type))), data_addr);
+        OddSpacer spacer = new OddSpacer(SourcePosition.NO_INFO);
+        ArrayData array_data = new ArrayData(SourcePosition.NO_INFO, insn_addr,
+                values, arrayType);
+
+        addInsn(insn_addr);
+        addInsn(dalvInsn);
+        data_blocks.add(spacer);
+        data_blocks.add(data_addr);
+        data_blocks.add(array_data);
+
+        fill_array_data_values = null;
+        fill_array_data_type = null;
+    }
+
+    /**
+     * used for packed-switch instruction Format: 31t packed-switch instruction
+     * has the syntax: packed-switch &lt;register&gt; &lt;lowest&gt;
+     * &lt;label1&gt; &lt;label2&gt; .... packed-switch-end For example:
+     * packed-switch v3, -1 Label9 Label6 Label6 Label12 Label12
+     * packed-switch-end
+     */
+    void newPackedSwitch(String reg, int first_key) throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("newPackedSwitch(" + reg + ", " + first_key
+                    + ")");
+
+        try {
+            switch_reg = getRegNumberFromString(reg);
+        } catch (IllegalArgumentException e) {
+            throwDasmError("Bad arguments for packed-switch (" + reg + ")");
+        }
+
+        packed_switch_first_key = first_key;
+        packed_switch_current_key = 0;
+        switch_targets = new Vector<Object>();
+        switch_keys = new IntList();
+    }
+
+    /**
+     * add new target to packed-switch
+     */
+    void addPackedSwitchData(String target) throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("addPackedSwitchData(" + target + ")");
+        switch_targets.add(target);
+        switch_keys.add(packed_switch_first_key + packed_switch_current_key);
+        packed_switch_current_key++;
+    }
+
+    /**
+     * add new target to packed-switch
+     */
+    void addPackedSwitchData(int target) throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("addPackedSwitchData(" + target + ")");
+        switch_targets.add(new Integer(target));
+        switch_keys.add(packed_switch_first_key + packed_switch_current_key);
+        packed_switch_current_key++;
+    }
+
+    /**
+     * used for sparse-switch instruction Format: 31t sparse-switch instruction
+     * has the syntax: sparse-switch &lt;register&gt; &lt;lowest&gt;
+     * &lt;int1&gt; : &lt;label1&gt; &lt;int2&gt; : &lt;label2&gt; ....
+     * sparse-switch-end For example: sparse-switch v3 -1 : Label9 10 : Label12
+     * 15 : Label12 sparse-switch-end
+     */
+    void newSparseSwitch(String reg) throws DasmError {
+        if (PARSER_DEBUG) System.out.println("newSparseSwitch(" + reg + ")");
+
+        try {
+            switch_reg = getRegNumberFromString(reg);
+        } catch (IllegalArgumentException e) {
+            throwDasmError("Bad arguments for sparse-switch (" + reg + ")");
+        }
+
+        switch_targets = new Vector<Object>();
+        switch_keys = new IntList();
+    }
+
+    /**
+     * add new target to sparse-switch
+     */
+    void addSparseSwitchData(int key, String target) throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("addSparseSwitchData(" + key + ", " + target
+                    + ")");
+        switch_targets.add(target);
+        switch_keys.add(key);
+    }
+
+    /**
+     * add new target to sparse-switch
+     */
+    void addSparseSwitchData(int key, int target) throws DasmError {
+        if (PARSER_DEBUG)
+            System.out.println("addSparseSwitchData(" + key + ", " + target
+                    + ")");
+        switch_targets.add(new Integer(target));
+        switch_keys.add(key);
+    }
+
+    /**
+     * called by sparse-switch-end or packed-switch-end
+     */
+    void endSwitch() throws DasmError {
+        if (PARSER_DEBUG) System.out.println("endSwitch");
+        int sz = switch_targets.size();
+
+        CodeAddress targets[] = new CodeAddress[sz];
+        for (int i = 0; i < sz; i++) {
+            Object o = switch_targets.elementAt(i);
+            CodeAddress addr;
+            if (o instanceof String) {
+                String t = (String) o;
+                LabelTableEntry lte = labels_table.get(t);
+                if (lte == null) {
+                    CodeAddress code_address = new CodeAddress(
+                            SourcePosition.NO_INFO);
+                    lte = new LabelTableEntry(code_address, false);
+                    labels_table.put(t, lte);
+                }
+                addr = lte.code_address;
+            } else {
+                Integer t = (Integer) o;
+
+                addr = new CodeAddress(SourcePosition.NO_INFO);
+                if (t < 0) {
+                    output_finisher.insert(current_insn_number + t, addr);
+                    current_insn_number++;
+                } else {
+                    unprocessed_relative_goto_addr.put(current_insn_number + t,
+                            addr);
+                }
+            }
+            targets[i] = addr;
+        }
+
+        CodeAddress insn_addr = new CodeAddress(createSourcePosition());
+        CodeAddress data_addr = new CodeAddress(SourcePosition.NO_INFO);
+        OddSpacer spacer = new OddSpacer(SourcePosition.NO_INFO);
+        SwitchData switch_data = new SwitchData(SourcePosition.NO_INFO,
+                insn_addr, switch_keys, targets);
+        DalvInsn dalvInsn = new TargetInsn(switch_data.isPacked()
+                ? Dops.PACKED_SWITCH : Dops.SPARSE_SWITCH,
+                createSourcePosition(), RegisterSpecList.make(RegisterSpec
+                        .make(switch_reg, Type.INT)), data_addr);
+
+        addInsn(insn_addr);
+        addInsn(dalvInsn);
+        data_blocks.add(spacer);
+        data_blocks.add(data_addr);
+        data_blocks.add(switch_data);
+
+        switch_targets = null;
+        switch_keys = null;
+    }
+
+    /*
+     * ========================================================================
+     * === UTILITY METHODS
+     * ========================================================================
+     */
+
+    /**
+     * Creates instance of SourcePosition for current line
+     */
+    protected SourcePosition createSourcePosition() {
+        return new SourcePosition(new CstUtf8(filename), -1, line_num);
+    }
+
+    /**
+     * Creates TypeList from list of types
+     */
+    protected TypeList createTypeListFromStrings(Vector<String> strings) {
+        StdTypeList tl;
+
+        if (strings.size() == 0)
+            tl = StdTypeList.EMPTY;
+        else {
+            int sz = strings.size();
+            tl = new StdTypeList(sz);
+            for (int i = 0; i < sz; i++) {
+                tl.set(i, Type.internClassName(strings.elementAt(i)));
+            }
+        }
+        return tl;
+    }
+
+    /**
+     * Creates processor of instruction list.
+     */
+    private void createOutputFinisher() {
+        if (output_finisher == null)
+            output_finisher = new OutputFinisher(5, regs_count);
+    }
+
+    /**
+     * Returns register number from "vX" string.
+     */
+    private int getRegNumberFromString(String val)
+            throws IllegalArgumentException {
+        int reg_num;
+        int l = RegisterSpec.PREFIX.length();
+        if (val.length() <= l
+                || val.substring(0, l).compareToIgnoreCase(
+                        RegisterSpec.PREFIX) != 0)
+            throw new IllegalArgumentException("Wrong register name prefix");
+
+        try {
+            reg_num = Integer.parseInt(val.substring(l));
+        } catch (Exception e) {
+            throw new IllegalArgumentException("Wrong register name");
+        }
+        return reg_num;
+    }
+
+    /**
+     * Adds new instruction to instruction list.
+     */
+    private void addInsn(DalvInsn insn) {
+        createOutputFinisher();
+        CodeAddress code_address = unprocessed_relative_goto_addr
+                .get(current_insn_number);
+        if (code_address != null) {
+            output_finisher.add(code_address);
+            unprocessed_relative_goto_addr.remove(current_insn_number);
+            current_insn_number++;
+        }
+        output_finisher.add(insn);
+        current_insn_number++;
+    }
+
+    /*
+     * ========================================================================
+     * === READER and WRITER
+     * ========================================================================
+     */
+
+    /**
+     * Writes the binary data for the class represented by this ClassFile object
+     * to the specified output stream, using the Java Class File format. Throws
+     * either an IOException or a dasmError if something goes wrong.
+     */
+    public void write(OutputStream outp, FileWriter human_readable)
+            throws IOException, DasmError {
+        dexFile.writeTo(outp, human_readable, true);
+    }
+
+    /**
+     * Parses a .d file, converting it internally into a binary representation.
+     * If something goes wrong, this throws one of an IOException, or a
+     * dasmError, or one of a few other exceptions.
+     * 
+     * @param input
+     *            is the stream containing the Dalvik assembly code for the
+     *            class.
+     * @param name
+     *            is the name of the stream. This name will be concatenated to
+     *            error messages printed to System.err.
+     * @param numberLines
+     *            true if you want DAsm to generate line numbers automatically,
+     *            based on the assembly source, or false if you are using the
+     *            ".line" directive and don't want DAsm to help out.
+     */
+    public void readD(Reader input, String name, boolean numberLines)
+            throws IOException, Exception {
+
+        // TODO: numberLines?
+        errors = 0;
+        filename = name;
+        source_name = name;
+        class_header = false;
+        classDef = null;
+        dexFile = new DexFile();
+
+        scanner = new Scanner(input);
+        parser parse_obj = new parser(this, scanner);
+
+
+        if (PARSER_DEBUG) {
+            // for debugging
+            parse_obj.debug_parse();
+        } else {
+            parse_obj.parse();
+        }
+
+    }
+}
diff --git a/tools/dasm/src/dasm/DasmCatchBuilder.java b/tools/dasm/src/dasm/DasmCatchBuilder.java
new file mode 100644
index 0000000..0ac38ec
--- /dev/null
+++ b/tools/dasm/src/dasm/DasmCatchBuilder.java
@@ -0,0 +1,220 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dasm;
+
+import com.android.dx.dex.code.CatchBuilder;
+import com.android.dx.dex.code.CatchHandlerList;
+import com.android.dx.dex.code.CatchTable;
+import com.android.dx.dex.code.CodeAddress;
+import com.android.dx.rop.cst.CstType;
+import com.android.dx.rop.type.Type;
+
+import dasm.DAsm.LabelTableEntry;
+
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Vector;
+
+/**
+ * Constructor of (@link CatchTable) instances from table of labels and list of
+ * catch blocks defined in method.
+ */
+public class DasmCatchBuilder implements CatchBuilder {
+
+    /**
+     * Represents catch block that was not processed yet. Holds "from" and "to"
+     * labels as well as list of exceptions to catch.
+     */
+    private class UnprocessedCatch {
+
+        String from;
+        String to;
+        Hashtable<CstType, String> type_branch = 
+                new Hashtable<CstType, String>();
+
+        /**
+         * Constructs an instance.
+         * 
+         * @param exception
+         *            exception type
+         * @param from
+         *            "from" label
+         * @param to
+         *            "to" label
+         * @param branch
+         *            "with" label
+         */
+        UnprocessedCatch(String exception, String from, String to,
+                String branch) {
+            this.from = from;
+            this.to = to;
+            add(exception, branch);
+        }
+
+        /**
+         * Adds new exception type and branch label to current "from-to" block
+         * to allow to have code like try { // do something } catch(Exception1
+         * e1) { } catch(Exception2 e2) { } or in Dasm: Label1: ; do something
+         * Labe2: ; .... Label3: ; .... Label4: ; .... .catch
+         * java/lang/Exception from Label1 to Label2 using Label3 .catch
+         * java/lang/Throwable from Label1 to Label2 using Label4
+         * 
+         * @param exception
+         *            exception type
+         * @param branch
+         *            "with" label
+         */
+        void add(String exception, String branch) {
+            CstType type;
+            if (exception.compareToIgnoreCase("all") == 0)
+                type = CstType.OBJECT;
+            else
+                type = CstType.intern(Type.internClassName(exception));
+
+            String s = type_branch.get(type);
+            if (s != null && s.compareToIgnoreCase(branch) != 0)
+                throw new RuntimeException(
+                        "Bad .catch directive: same exception (" + exception
+                                + ") but different branch addresses (" + s
+                                + " and " + branch + ")");
+            type_branch.put(type, branch);
+        }
+    }
+
+    private Vector<UnprocessedCatch> unprocessed_catches = 
+            new Vector<UnprocessedCatch>();
+    
+    private Hashtable<String, LabelTableEntry> labels_table;
+
+    /**
+     * Constructs an instance.
+     * 
+     * @param labels_table
+     *            holds list of labels defined in method being processed
+     */
+    public DasmCatchBuilder(Hashtable<String, LabelTableEntry> labels_table) {
+        this.labels_table = labels_table;
+    }
+
+    /**
+     * Gets the set of catch types associated with this instance.
+     */
+    public HashSet<Type> getCatchTypes() {
+        int sz = unprocessed_catches.size();
+        HashSet<Type> result = new HashSet<Type>(sz);
+        for (int i = 0; i < sz; i++) {
+            Enumeration<CstType> keys = unprocessed_catches.elementAt(i)
+                    .type_branch.keys();
+            while (keys.hasMoreElements()) {
+                result.add(keys.nextElement().getClassType());
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Gets whether this instance has any catches at all.
+     */
+    public boolean hasAnyCatches() {
+        return unprocessed_catches.size() != 0;
+    }
+
+    /**
+     * Adds new exception handler
+     * 
+     * @param exception
+     *            type of exception to catch
+     * @param start
+     *            "from" label
+     * @param end
+     *            "to" label
+     * @param branch
+     *            "with" label
+     */
+    public void add(String exception, String start, String end, String branch) {
+        int sz = unprocessed_catches.size();
+        for (int i = 0; i < sz; i++) {
+            UnprocessedCatch uc = unprocessed_catches.elementAt(i);
+            if (uc.from.compareToIgnoreCase(start) == 0) {
+                if (uc.to.compareToIgnoreCase(end) != 0)
+                    throw new RuntimeException(
+                            "Bad .catch directive: two blocks have the same "
+                                    + "start address ("
+                                    + uc.from
+                                    + ") and different end addresses (" + uc.to
+                                    + " and " + end + ")");
+                uc.add(exception, branch);
+                return;
+            }
+        }
+
+        unprocessed_catches.add(new UnprocessedCatch(exception, start, end,
+                branch));
+    }
+
+    /**
+     * Builds and returns the catch table for this instance.
+     */
+    public CatchTable build() {
+        int sz = unprocessed_catches.size();
+        CatchTable result = new CatchTable(sz);
+        for (int i = 0; i < sz; i++) {
+            UnprocessedCatch uc = unprocessed_catches.elementAt(i);
+            LabelTableEntry lte = labels_table.get(uc.from);
+            // get "from" address
+            if (lte == null || lte.planted == false)
+                throw new RuntimeException("Label " + uc.from + " not defined");
+            CodeAddress from = lte.code_address;
+            // get "to" address
+            lte = labels_table.get(uc.to);
+            if (lte == null || lte.planted == false)
+                throw new RuntimeException("Label " + uc.to + " not defined");
+            CodeAddress to = lte.code_address;
+
+            // build handlers list
+            CatchHandlerList chl = new CatchHandlerList(uc.type_branch.size());
+            Enumeration<CstType> keys = uc.type_branch.keys();
+            int j = 0;
+            CatchHandlerList.Entry catch_all = null;
+            while (keys.hasMoreElements()) {
+                CstType type = keys.nextElement();
+                String branch = uc.type_branch.get(type);
+                lte = labels_table.get(branch);
+                if (lte == null || lte.planted == false)
+                    throw new RuntimeException("Label " + branch
+                            + " not defined");
+                CatchHandlerList.Entry chle = new CatchHandlerList.Entry(type,
+                        lte.code_address.getAddress());
+                // catch_all shall be the last handler in the list
+                if (type.equals(CstType.OBJECT)) {
+                    catch_all = chle;
+                } else {
+                    chl.set(j, chle);
+                    j++;
+                }
+            }
+            if (catch_all != null) chl.set(j, catch_all);
+            chl.setImmutable();
+
+            CatchTable.Entry entry = new CatchTable.Entry(from.getAddress(), to
+                    .getAddress(), chl);
+            result.set(i, entry);
+        }
+        return result;
+    }
+}
diff --git a/tools/dasm/src/dasm/DasmError.java b/tools/dasm/src/dasm/DasmError.java
new file mode 100644
index 0000000..55565a7
--- /dev/null
+++ b/tools/dasm/src/dasm/DasmError.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dasm;
+
+/**
+ * Exception thrown if eny error detected while running Dasm.
+ */
+public class DasmError extends Exception {
+    public DasmError() {
+        super();
+    }
+
+    public DasmError(String s) {
+        super(s);
+    }
+}
diff --git a/tools/dasm/src/dasm/DopInfo.java b/tools/dasm/src/dasm/DopInfo.java
new file mode 100644
index 0000000..8939399
--- /dev/null
+++ b/tools/dasm/src/dasm/DopInfo.java
@@ -0,0 +1,241 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dasm;
+
+import com.android.dx.dex.code.DalvOps;
+import com.android.dx.dex.code.Dop;
+import com.android.dx.dex.code.Dops;
+import com.android.dx.dex.code.InsnFormat;
+import com.android.dx.dex.code.form.Form10t;
+import com.android.dx.dex.code.form.Form10x;
+import com.android.dx.dex.code.form.Form11n;
+import com.android.dx.dex.code.form.Form11x;
+import com.android.dx.dex.code.form.Form12x;
+import com.android.dx.dex.code.form.Form20t;
+import com.android.dx.dex.code.form.Form21c;
+import com.android.dx.dex.code.form.Form21h;
+import com.android.dx.dex.code.form.Form21s;
+import com.android.dx.dex.code.form.Form21t;
+import com.android.dx.dex.code.form.Form22b;
+import com.android.dx.dex.code.form.Form22c;
+import com.android.dx.dex.code.form.Form22s;
+import com.android.dx.dex.code.form.Form22t;
+import com.android.dx.dex.code.form.Form22x;
+import com.android.dx.dex.code.form.Form23x;
+import com.android.dx.dex.code.form.Form30t;
+import com.android.dx.dex.code.form.Form31c;
+import com.android.dx.dex.code.form.Form31i;
+import com.android.dx.dex.code.form.Form31t;
+import com.android.dx.dex.code.form.Form32x;
+import com.android.dx.dex.code.form.Form35c;
+import com.android.dx.dex.code.form.Form3rc;
+import com.android.dx.dex.code.form.Form51l;
+
+import java.util.Hashtable;
+
+/**
+ * Holds information about Dalvik opcodes and its parameters.
+ */
+class DopInfo {
+
+    // maps instruction name -> DopInfo object
+    static Hashtable<String, DopInfo> dopsTable;
+
+    // information maintained about each instruction:
+    public String name; // opcode name
+    public Dop opcode; // its opcode
+    public String args; // the argument code
+
+    public final static String ARG_REGISTER = "R";
+    public final static String ARG_TYPE = "T";
+    public final static String ARG_LITERAL = "I";
+    public final static String ARG_ADDRESS = "A";
+    public final static String ARG_FIELD = "F";
+    public final static String ARG_METHOD = "M";
+    public final static String ARG_INTFMETHOD = "Y";
+    public final static String ARG_STRING = "S";
+    public final static String ARG_REGLIST = "Z";
+    public final static String ARG_REGRANGE = "G";
+
+    /**
+     * define type of parameters each instruction has
+     */
+    public final static String ARG_REG_REG = ARG_REGISTER + ARG_REGISTER;
+    public final static String ARG_REG_REG_REG = ARG_REGISTER + ARG_REGISTER
+            + ARG_REGISTER;
+    public final static String ARG_REG_LITERAL = ARG_REGISTER + ARG_LITERAL;
+    public final static String ARG_REG_REG_LITERAL = ARG_REGISTER
+            + ARG_REGISTER + ARG_LITERAL;
+    public final static String ARG_REG_ADDRESS = ARG_REGISTER + ARG_ADDRESS;
+    public final static String ARG_REG_REG_ADDRESS = ARG_REGISTER
+            + ARG_REGISTER + ARG_ADDRESS;
+    public final static String ARG_REG_TYPE = ARG_REGISTER + ARG_TYPE;
+    public final static String ARG_REG_REG_TYPE = ARG_REGISTER + ARG_REGISTER
+            + ARG_TYPE;
+    public final static String ARG_REG_FIELD = ARG_REGISTER + ARG_FIELD;
+    public final static String ARG_REG_REG_FIELD = ARG_REGISTER + ARG_REGISTER
+            + ARG_FIELD;
+    public final static String ARG_REG_STRING = ARG_REGISTER + ARG_STRING;
+    public final static String ARG_REG_REG_STRING = ARG_REGISTER + ARG_REGISTER
+            + ARG_STRING;
+    public final static String ARG_REGLIST_TYPE = ARG_REGLIST + ARG_TYPE;
+    public final static String ARG_REGLIST_METHOD = ARG_REGLIST + ARG_METHOD;
+    public final static String ARG_REGLIST_INTFMETHOD = ARG_REGLIST
+            + ARG_INTFMETHOD;
+    public final static String ARG_REGRANGE_TYPE = ARG_REGRANGE + ARG_TYPE;
+    public final static String ARG_REGRANGE_METHOD = ARG_REGRANGE + ARG_METHOD;
+    public final static String ARG_REGRANGE_INTFMETHOD = ARG_REGRANGE
+            + ARG_INTFMETHOD;
+
+    public static DopInfo get(String name) {
+        return (DopInfo) dopsTable.get(name);
+    }
+
+    public static boolean contains(String name) {
+        return dopsTable.get(name) != null;
+    }
+
+    /**
+     * Adds new opcode to table
+     */
+    static private void add(String name, Dop opcode, String args) {
+        DopInfo info = new DopInfo();
+        info.name = name;
+        info.opcode = opcode;
+        info.args = args;
+        dopsTable.put(name, info);
+    }
+
+    static private String getArgsFormat(Dop dop) {
+        InsnFormat format = dop.getFormat();
+
+        if (format instanceof Form10x) return "";
+        if (format instanceof Form12x) return ARG_REG_REG;
+        if (format instanceof Form11n) return ARG_REG_LITERAL;
+        if (format instanceof Form11x) return ARG_REGISTER;
+        if (format instanceof Form10t || format instanceof Form20t)
+            return ARG_ADDRESS;
+        if (format instanceof Form22x) return ARG_REG_REG;
+        if (format instanceof Form21t) return ARG_REG_ADDRESS;
+        if (format instanceof Form21s) return ARG_REG_LITERAL;
+        if (format instanceof Form21h) return ARG_REG_LITERAL;
+        if (format instanceof Form21c) {
+            switch (dop.getOpcode()) {
+            case DalvOps.CONST_CLASS:
+            case DalvOps.CHECK_CAST:
+            case DalvOps.NEW_INSTANCE:
+                return ARG_REG_TYPE;
+            case DalvOps.SGET:
+            case DalvOps.SGET_WIDE:
+            case DalvOps.SGET_OBJECT:
+            case DalvOps.SGET_BOOLEAN:
+            case DalvOps.SGET_BYTE:
+            case DalvOps.SGET_CHAR:
+            case DalvOps.SGET_SHORT:
+            case DalvOps.SPUT:
+            case DalvOps.SPUT_WIDE:
+            case DalvOps.SPUT_OBJECT:
+            case DalvOps.SPUT_BOOLEAN:
+            case DalvOps.SPUT_BYTE:
+            case DalvOps.SPUT_CHAR:
+            case DalvOps.SPUT_SHORT:
+                return ARG_REG_FIELD;
+            default:
+                return ARG_REG_STRING;
+            }
+        }
+        if (format instanceof Form23x) return ARG_REG_REG_REG;
+        if (format instanceof Form22b) return ARG_REG_REG_LITERAL;
+        if (format instanceof Form22t) return ARG_REG_REG_ADDRESS;
+        if (format instanceof Form22s) return ARG_REG_REG_LITERAL;
+        if (format instanceof Form22c) {
+            switch (dop.getOpcode()) {
+            case DalvOps.INSTANCE_OF:
+            case DalvOps.NEW_ARRAY:
+                return ARG_REG_REG_TYPE;
+            case DalvOps.IGET:
+            case DalvOps.IGET_WIDE:
+            case DalvOps.IGET_OBJECT:
+            case DalvOps.IGET_BOOLEAN:
+            case DalvOps.IGET_BYTE:
+            case DalvOps.IGET_CHAR:
+            case DalvOps.IGET_SHORT:
+            case DalvOps.IPUT:
+            case DalvOps.IPUT_WIDE:
+            case DalvOps.IPUT_OBJECT:
+            case DalvOps.IPUT_BOOLEAN:
+            case DalvOps.IPUT_BYTE:
+            case DalvOps.IPUT_CHAR:
+            case DalvOps.IPUT_SHORT:
+                return ARG_REG_REG_FIELD;
+            default:
+                return ARG_REG_REG_STRING;
+            }
+        }
+        if (format instanceof Form30t) return ARG_ADDRESS;
+        if (format instanceof Form32x) return ARG_REG_REG;
+        if (format instanceof Form31i) return ARG_REG_LITERAL;
+        if (format instanceof Form31t) return ARG_REG_ADDRESS;
+        if (format instanceof Form31c) return ARG_REG_STRING;
+        if (format instanceof Form35c) {
+            switch (dop.getOpcode()) {
+            case DalvOps.INVOKE_VIRTUAL:
+            case DalvOps.INVOKE_SUPER:
+            case DalvOps.INVOKE_DIRECT:
+            case DalvOps.INVOKE_STATIC:
+                return ARG_REGLIST_METHOD;
+            case DalvOps.INVOKE_INTERFACE:
+                return ARG_REGLIST_INTFMETHOD;
+            default:
+                return ARG_REGLIST_TYPE;
+            }
+        }
+        if (format instanceof Form3rc) {
+            switch (dop.getOpcode()) {
+            case DalvOps.FILLED_NEW_ARRAY_RANGE:
+                return ARG_REGRANGE_TYPE;
+            case DalvOps.INVOKE_INTERFACE_RANGE:
+                return ARG_REGRANGE_INTFMETHOD;
+            default:
+                return ARG_REGRANGE_METHOD;
+            }
+        }
+        if (format instanceof Form51l) return ARG_REG_LITERAL; // not "RL" since
+                                                               // it is
+                                                               // processed as
+                                                               // Number
+
+        return "";
+    }
+
+    /**
+     * dopsTable initialization
+     */
+    static {
+        dopsTable = new Hashtable<String, DopInfo>();
+
+        for (int i = 0; i < DalvOps.MAX_VALUE - DalvOps.MIN_VALUE + 1; i++) {
+            try {
+                Dop dop = Dops.get(i);
+                add(dop.getName(), dop, getArgsFormat(dop));
+            } catch (Exception e) {
+
+            }
+        }
+    }
+
+};
diff --git a/tools/dasm/src/dasm/Main.java b/tools/dasm/src/dasm/Main.java
new file mode 100644
index 0000000..e6746c4
--- /dev/null
+++ b/tools/dasm/src/dasm/Main.java
@@ -0,0 +1,242 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dasm;
+
+import java.io.BufferedReader;
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+/**
+ * DAsm entry point
+ */
+public class Main {
+
+    /**
+     * The Dasm version
+     */
+    public static final String version = "v0.1";
+    public static final boolean DEBUG = !false;
+
+    /**
+     * destination path to place .dex file(s)
+     */
+    private static String destPath = null;
+
+    /**
+     * generate human-readable files
+     */
+    private static boolean humanHeadable = false;
+
+    /**
+     * input files codepage
+     */
+    private static String encoding = null;
+
+    /**
+     * automatically generate line numbers
+     */
+    private static boolean generateLineNumbers = false;
+
+    private static void incompleteOption(String opt) {
+        System.err.println("Command line option " + opt
+                + " required argument missed");
+        System.exit(-1);
+    }
+
+    private static Reader createReader(String fname) throws IOException {
+        FileInputStream fs = new FileInputStream(fname);
+        InputStreamReader ir;
+        if (encoding == null)
+            ir = new InputStreamReader(fs);
+        else
+            ir = new InputStreamReader(fs, encoding);
+        return new BufferedReader(ir);
+    }
+
+    /**
+     * Called to assemble a single file.
+     * 
+     * @param fname
+     *            is the name of the file containing the DAsm source code.
+     */
+    public static void assemble(String fname) {
+        DAsm dAsm = new DAsm();
+
+        // read and parse .d file
+        Reader inp = null;
+        try {
+            inp = createReader(fname);
+            dAsm.readD(inp, new File(fname).getName(), generateLineNumbers);
+            close(inp);
+        } catch (DasmError e) {
+            if (DEBUG) e.printStackTrace();
+            System.err.println("DASM Error: " + e.getMessage());
+        } catch (Exception e) {
+            if (DEBUG) e.printStackTrace();
+            System.err.println("Exception <" + e.getClass().getName() + ">"
+                    + e.getMessage() + " while reading and parsing " + fname);
+            return;
+
+        } finally {
+            close(inp);
+        }
+
+        if (dAsm.errorCount() > 0) {
+            System.err.println("Found " + dAsm.errorCount() + " errors "
+                    + " while reading and parsing " + fname);
+            return;
+        }
+
+        String class_path[] = Utils
+                .getClassFieldFromString(dAsm.getClassName());
+        String class_name = class_path[1];
+
+        // determine where to place .dex file
+        String dest_dir = destPath;
+        if (class_path[0] != null) {
+            String class_dir = class_path[0].replaceAll("/|\\.", Character
+                    .toString(File.separatorChar));
+            if (dest_dir != null) {
+                dest_dir = dest_dir + File.separator + class_dir;
+            } else {
+                dest_dir = class_dir;
+            }
+        }
+
+        File out_file = null;
+        File hr_file = null;
+
+        if (dest_dir == null) {
+            out_file = new File(class_name + ".dex");
+            hr_file = new File(class_name + ".dxt");
+        } else {
+            out_file = new File(dest_dir, class_name + ".dex");
+            hr_file = new File(dest_dir, class_name + ".dxt");
+
+            // check that dest_dir exists
+            File dest = new File(dest_dir);
+            if (!dest.exists()) {
+                dest.mkdirs();
+            }
+
+            if (!dest.isDirectory()) {
+                System.err.println("Cannot create directory " + dest_dir);
+                return;
+            }
+        }
+
+        // write output
+        FileOutputStream outp = null;
+        FileWriter hr_outp = null;
+
+        try {
+            outp = new FileOutputStream(out_file);
+            if (humanHeadable) hr_outp = new FileWriter(hr_file);
+            dAsm.write(outp, hr_outp);
+        } catch (Exception e) {
+            if (DEBUG) e.printStackTrace();
+            System.err.println("Exception <" + e.getClass().getName() + ">"
+                    + e.getMessage() + " while writing " + out_file.getPath());
+
+            close(hr_outp);
+            close(outp);
+
+            hr_file.delete();
+            out_file.delete();
+
+            return;
+        } finally {
+            close(hr_outp);
+            close(outp);
+        }
+
+        System.out.println("Generated: " + out_file.getPath());
+    }
+
+    private static void close(Closeable c) {
+        if (c == null) return;
+        try {
+            c.close();
+        } catch (IOException e) {
+
+        }
+    }
+
+    public static void main(String args[]) {
+        int i;
+
+        String files[] = new String[args.length];
+        int num_files = 0;
+
+        if (args.length == 0) {
+            printUsage();
+            System.exit(-1);
+        }
+
+        for (i = 0; i < args.length; i++) {
+            if (args[i].equals("-help") || args[i].equals("-?")) {
+                printUsage();
+                System.exit(0);
+            }
+            if (args[i].equals("-version")) {
+                System.out.println("DAsm version: " + version);
+                if (DEBUG) System.out.println("(compiled with DEBUG flag on)");
+                System.exit(0);
+            }
+            if (args[i].equals("-g")) {
+                generateLineNumbers = true;
+            } else if (args[i].equals("-d")) {
+                if (++i >= args.length)
+                    incompleteOption("-d");
+                else
+                    destPath = args[i];
+            } else if (args[i].equals("-h")) {
+                humanHeadable = true;
+            } else if (args[i].equals("-e")) {
+                if (++i >= args.length)
+                    incompleteOption("-e");
+                else
+                    encoding = args[i];
+            } else {
+                files[num_files++] = args[i];
+            }
+        }
+
+        for (i = 0; i < num_files; i++) {
+            assemble(files[i]);
+        }
+    }
+
+    static void printUsage() {
+        System.err
+                .println("dasm [-d <outpath>] [-g] [-h] [-e <encoding>] <file>"
+                        + "[<file> ...]\n\n"
+                        + "  -g - autogenerate linenumbers\n"
+                        + "  -e - codepage for inputfile encoding\n"
+                        + "  -d - path for generated classfiles\n"
+                        + "  -h - generate human-readable output\n"
+                        + "  file  - sourcefile\n"
+                        + "or: dasm -version\n"
+                        + "or: dasm -help");
+    }
+};
diff --git a/tools/dasm/src/dasm/ReservedWords.java b/tools/dasm/src/dasm/ReservedWords.java
new file mode 100644
index 0000000..ad8d623
--- /dev/null
+++ b/tools/dasm/src/dasm/ReservedWords.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dasm;
+
+import java.util.Hashtable;
+
+import java_cup.runtime.token;
+
+class ReservedWords {
+    static Hashtable<String, token> reserved_words;
+
+    public static token get(String name) {
+        return (token) reserved_words.get(name);
+    }
+
+    public static boolean contains(String name) {
+        return reserved_words.get(name) != null;
+    }
+
+    static {
+        reserved_words = new Hashtable<String, token>();
+
+        // Dasm directives
+        reserved_words.put(".annotation", new token(sym.DANNOTATION));
+        reserved_words.put(".attribute", new token(sym.DATTRIBUTE));
+        reserved_words.put(".bytecode", new token(sym.DBYTECODE));
+        reserved_words.put(".catch", new token(sym.DCATCH));
+        reserved_words.put(".class", new token(sym.DCLASS));
+        reserved_words.put(".deprecated", new token(sym.DDEPRECATED));
+        reserved_words.put(".end", new token(sym.DEND));
+        reserved_words.put(".field", new token(sym.DFIELD));
+        reserved_words.put(".implements", new token(sym.DIMPLEMENTS));
+        reserved_words.put(".inner", new token(sym.DINNER));
+        reserved_words.put(".interface", new token(sym.DINTERFACE));
+        reserved_words.put(".limit", new token(sym.DLIMIT));
+        reserved_words.put(".line", new token(sym.DLINE));
+        reserved_words.put(".method", new token(sym.DMETHOD));
+        reserved_words.put(".set", new token(sym.DSET));
+        reserved_words.put(".source", new token(sym.DSOURCE));
+        reserved_words.put(".super", new token(sym.DSUPER));
+        reserved_words.put(".throws", new token(sym.DTHROWS));
+        reserved_words.put(".var", new token(sym.DVAR));
+        reserved_words.put(".enclosing", new token(sym.DENCLOSING));
+        reserved_words.put(".signature", new token(sym.DSIGNATURE));
+
+        // reserved_words used in Dasm directives
+        reserved_words.put("field", new token(sym.FIELD));
+        reserved_words.put("from", new token(sym.FROM));
+        reserved_words.put("method", new token(sym.METHOD));
+        reserved_words.put("to", new token(sym.TO));
+        reserved_words.put("is", new token(sym.IS));
+        reserved_words.put("using", new token(sym.USING));
+        reserved_words.put("signature", new token(sym.SIGNATURE));
+        reserved_words.put("regs", new token(sym.REGS));
+        reserved_words.put("inner", new token(sym.INNER));
+        reserved_words.put("outer", new token(sym.OUTER));
+        reserved_words.put("class", new token(sym.CLASS));
+        reserved_words.put("visible", new token(sym.VISIBLE));
+        reserved_words.put("invisible", new token(sym.INVISIBLE));
+        reserved_words.put("visibleparam", new token(sym.VISIBLEPARAM));
+        reserved_words.put("invisibleparam", new token(sym.INVISIBLEPARAM));
+
+        // Special-case instructions
+        reserved_words.put("fill-array-data", new token(sym.FILL_ARRAY_DATA));
+        reserved_words.put("fill-array-data-end", new token(
+                sym.FILL_ARRAY_DATA_END));
+        reserved_words.put("packed-switch", new token(sym.PACKED_SWITCH));
+        reserved_words.put("packed-switch-end",
+                new token(sym.PACKED_SWITCH_END));
+        reserved_words.put("sparse-switch", new token(sym.SPARSE_SWITCH));
+        reserved_words.put("sparse-switch-end",
+                new token(sym.SPARSE_SWITCH_END));
+        reserved_words.put("default", new token(sym.DEFAULT));
+
+        // Access flags
+        reserved_words.put("public", new token(sym.PUBLIC));
+        reserved_words.put("private", new token(sym.PRIVATE));
+        reserved_words.put("protected", new token(sym.PROTECTED));
+        reserved_words.put("static", new token(sym.STATIC));
+        reserved_words.put("final", new token(sym.FINAL));
+        reserved_words.put("synchronized", new token(sym.SYNCHRONIZED));
+        reserved_words.put("declared_synchronized", new token(
+                sym.DECLARED_SYNCHRONIZED));
+        reserved_words.put("volatile", new token(sym.VOLATILE));
+        reserved_words.put("transient", new token(sym.TRANSIENT));
+        reserved_words.put("native", new token(sym.NATIVE));
+        reserved_words.put("interface", new token(sym.INTERFACE));
+        reserved_words.put("abstract", new token(sym.ABSTRACT));
+
+        reserved_words.put("annotation", new token(sym.ANNOTATION));
+        reserved_words.put("enum", new token(sym.ENUM));
+        reserved_words.put("bridge", new token(sym.BRIDGE));
+        reserved_words.put("varargs", new token(sym.VARARGS));
+        reserved_words.put("fpstrict", new token(sym.STRICT));
+        reserved_words.put("synthetic", new token(sym.SYNTHETIC));
+    }
+}
diff --git a/tools/dasm/src/dasm/Scanner.java b/tools/dasm/src/dasm/Scanner.java
new file mode 100644
index 0000000..6decccf
--- /dev/null
+++ b/tools/dasm/src/dasm/Scanner.java
@@ -0,0 +1,503 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dasm;
+
+
+import dasm.tokens.number_token;
+import dasm.tokens.relative_number_token;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.util.Hashtable;
+
+import java_cup.runtime.int_token;
+import java_cup.runtime.str_token;
+import java_cup.runtime.token;
+
+/**
+ * Tokenizer
+ */
+
+
+class Scanner {
+    /**
+     * Chars buffer with autoexpanding.
+     */
+    class CharBuffer {
+        private int buffer_size = 256;
+        private char[] buffer = new char[buffer_size];
+        private int cur_pos = 0;
+
+        private void expand() {
+            char tmp[] = new char[buffer_size * 2];
+            System.arraycopy(buffer, 0, tmp, 0, buffer_size);
+            buffer_size *= 2;
+            buffer = tmp;
+        }
+
+        void add(char c) {
+            buffer[cur_pos] = c;
+            cur_pos++;
+            if (cur_pos == buffer_size) expand();
+        }
+
+        int size() {
+            return cur_pos;
+        }
+
+        char charAt(int idx) {
+            return buffer[idx];
+        }
+
+        public String toString() {
+            return new String(buffer, 0, cur_pos);
+        }
+
+        void reset() {
+            cur_pos = 0;
+        }
+    }
+
+
+    protected Reader inputReader;
+
+    /**
+     * next character in input stream
+     */
+    protected int nextChar;
+
+    protected CharBuffer charBuf = new CharBuffer();
+
+    /**
+     * Whitespace characters
+     */
+    protected static final String WHITESPACE = " \n\t\r";
+
+    /**
+     * Separator characters
+     */
+    protected static final String SEPARATORS = WHITESPACE + ":=" + ",";
+
+    /**
+     * error reporting
+     */
+    public int line_num, token_line_num, char_num;
+    public StringBuffer line;
+
+    /**
+     * Holds new variables defined by .set directive
+     */
+    public Hashtable dict = new Hashtable();
+
+    public Scanner(Reader i) throws IOException, DasmError {
+        inputReader = i;
+        line_num = 1;
+        char_num = 0;
+        line = new StringBuffer();
+        nextChar = 0;
+        skipEmptyLines();
+        if (nextChar == -1) throw new DasmError("empty source file");
+    }
+
+    /**
+     * Checks if a character code is a whitespace character
+     */
+    protected static boolean isWhitespace(int c) {
+        return (WHITESPACE.indexOf(c) != -1);
+    }
+
+    /**
+     * Checks if a character code is a separator character
+     */
+    protected static boolean isSeparator(int c) {
+        return (c == -1 || SEPARATORS.indexOf(c) != -1);
+    }
+
+    /**
+     * Gets next char from input
+     */
+    protected void readNextChar() throws IOException {
+        nextChar = inputReader.read();
+        switch (nextChar) {
+        case -1: // EOF
+            if (char_num == 0) {
+                char_num = -1;
+                break;
+            }
+            nextChar = '\n';
+            // fall thru
+        case '\n':
+            line_num++;
+            char_num = 0;
+            break;
+        default:
+            line.append((char) nextChar);
+            char_num++;
+            return;
+        }
+        line.setLength(0);
+    }
+
+    /**
+     * Skips empty lines in input stream
+     */
+    private void skipEmptyLines() throws IOException {
+        for (;;) {
+            if (nextChar != ';') {
+                do {
+                    readNextChar();
+                } while (isWhitespace(nextChar));
+                if (nextChar != ';') return;
+            }
+            do {
+                readNextChar();
+                if (nextChar == -1) return;
+            } while (nextChar != '\n');
+        }
+    }
+
+    /**
+     * Reads unicode char (\\uXXXX)
+     */
+    private char readUnicodeChar() throws IOException, DasmError {
+        int result = 0;
+        for (int i = 0; i < 4; i++) {
+            readNextChar();
+            if (nextChar == -1) return 0;
+
+            int tmp = Character.digit((char) nextChar, 16);
+            if (tmp == -1)
+                throw new DasmError("Invalid '\\u' escape sequence");
+            result = (result << 4) | tmp;
+        }
+        return (char) result;
+    }
+
+    private char nameEscape() throws IOException, DasmError {
+        readNextChar();
+        if (nextChar != 'u')
+            throw new DasmError("Only '\\u' escape sequence allowed in names");
+        char chval = readUnicodeChar();
+        if (nextChar == -1)
+            throw new DasmError("Left over '\\u' escape sequence");
+        return chval;
+    }
+
+    /**
+     * Read and recognize next token
+     */
+    public token next_token() throws IOException, DasmError {
+        token_line_num = line_num;
+
+        for (;;)
+            switch (nextChar) {
+            case ';': // a comment
+            case '\n':
+                // return single SEP token (skip multiple newlines
+                // interspersed with whitespace or comments)
+                skipEmptyLines();
+                token_line_num = line_num;
+                return new token(sym.SEP);
+
+            case ' ':
+            case '\t':
+            case '\r':
+            case ',': // whitespace
+                readNextChar();
+                break;
+
+            case -1: // EOF token
+                char_num = -1;
+                return new token(sym.EOF);
+
+            case '=': // EQUALS token
+                readNextChar();
+                return new token(sym.EQ);
+
+            case ':': // COLON token
+                readNextChar();
+                return new token(sym.COLON);
+
+            case '-':
+            case '+':
+            case '0':
+            case '1':
+            case '2':
+            case '3':
+            case '4':
+            case '5':
+            case '6':
+            case '7':
+            case '8':
+            case '9':
+            case '.': // a number
+            {
+                return readNumber();
+            }
+
+            case '"': // quoted string
+            {
+                return readQuotedString();
+            }
+
+            case '{': // list of registers
+            {
+                return readRegList();
+            }
+
+            case '\'': // quotation for overloading reserved words
+                return readQuotedReservedWord();
+
+            default: {
+                // read up until a separatorcharacter
+                boolean only_name = false;
+
+                charBuf.reset();
+                do {
+                    char chval = (char) nextChar;
+                    if (nextChar == '\\') {
+                        chval = nameEscape();
+                        only_name = true;
+                    }
+                    charBuf.add(chval);
+                    readNextChar();
+                } while (!isSeparator(nextChar));
+
+                String str = charBuf.toString();
+
+                if (!only_name) {
+                    token tok;
+
+                    // keyword or directive?
+                    if ((tok = ReservedWords.get(str)) != null) return tok;
+
+                    // VM instruction?
+                    if (DopInfo.contains(str))
+                        return new str_token(sym.Insn, str);
+
+                    if (str.charAt(0) == '$') {
+                        String s = str.substring(1);
+                        Object v;
+                        int n = 10;
+                        boolean neg = false;
+                        switch (s.charAt(0)) {
+                        default:
+                            break;
+
+                        case '-':
+                            neg = true;
+                        case '+':
+                            s = s.substring(1);
+                            if (s.startsWith("0x")) {
+                                n = 16;
+                                s = s.substring(2);
+                            }
+                            try {
+                                n = Integer.parseInt(s, n);
+                            } catch (NumberFormatException e) {
+                                throw new DasmError(
+                                        "Bad relative offset number");
+                            }
+                            if (neg) n = -n;
+                            return new relative_number_token(sym.Relative, n);
+                        }
+                        // Do variable substitution
+                        if ((v = dict.get(s)) != null) return (token) v;
+                    } // not begin from '$'
+                } // !only_name
+                // Unrecognized string token (e.g. a classname)
+                return new str_token(sym.Word, str);
+            }
+            }
+    }
+
+    /**
+     * Reads "-quoted string
+     */
+    protected token readQuotedString() throws IOException, DasmError {
+        boolean f = false;
+        charBuf.reset();
+        for (;;) {
+            if (f)
+                f = false;
+            else
+                readNextChar();
+
+            if (nextChar == '"') {
+                readNextChar(); // skip closing quote
+                return new str_token(sym.Str, charBuf.toString());
+            }
+
+            if (nextChar == -1) throw new DasmError("Unterminated string");
+
+            char chval = (char) nextChar;
+
+            if (chval == '\\') {
+                readNextChar();
+                switch (nextChar) {
+                case -1:
+                    f = true;
+                    continue;
+                case 'n':
+                    chval = '\n';
+                    break;
+                case 'r':
+                    chval = '\r';
+                    break;
+                case 't':
+                    chval = '\t';
+                    break;
+                case 'f':
+                    chval = '\f';
+                    break;
+                case 'b':
+                    chval = '\b';
+                    break;
+                case '"':
+                    chval = '"';
+                    break;
+                case '\'':
+                    chval = '\'';
+                    break;
+                case '\\':
+                    chval = '\\';
+                    break;
+
+                case 'u':
+                    chval = readUnicodeChar();
+                    if (nextChar == -1) {
+                        f = true;
+                        continue;
+                    }
+                    break;
+
+                // octals
+                case '0':
+                case '1':
+                case '2':
+                case '3':
+                case '4':
+                case '5':
+                case '6':
+                case '7': {
+                    int res = nextChar & 7;
+                    readNextChar();
+                    if (nextChar < '0' || nextChar > '7')
+                        f = true;
+                    else {
+                        res = res * 8 + (nextChar & 7);
+                        readNextChar();
+                        if (nextChar < '0' || nextChar > '7')
+                            f = true;
+                        else {
+                            int val = res * 8 + (nextChar & 7);
+                            if (val >= 0x100)
+                                f = true;
+                            else
+                                res = val;
+                        }
+                    }
+                    chval = (char) res;
+                }
+                    break;
+
+                default:
+                    throw new DasmError("Incorrect backslash escape sequence");
+                }
+            }
+            charBuf.add(chval);
+        }
+    }
+
+    /**
+     * Reads list of registers ({v1, v2, v3} or {v1..v3})
+     */
+    protected token readRegList() throws IOException, DasmError {
+        charBuf.reset();
+        for (;;) {
+            readNextChar();
+
+            if (nextChar == '}') {
+                readNextChar(); // skip closing quote
+                return new str_token(sym.Word, charBuf.toString());
+            }
+
+            if (nextChar == -1)
+                throw new DasmError("Unterminated list of registers");
+
+
+            charBuf.add((char) nextChar);
+        }
+    }
+
+    /**
+     * Reads number
+     */
+    protected token readNumber() throws IOException, DasmError {
+        charBuf.reset();
+
+        do {
+            charBuf.add((char) nextChar);
+            readNextChar();
+        } while (!isSeparator(nextChar));
+
+        String str = charBuf.toString();
+        token tok;
+
+        // directive?
+        if ((tok = ReservedWords.get(str)) != null) return tok;
+
+        Number num;
+        try {
+            num = Utils.stringToNumber(str);
+        } catch (NumberFormatException e) {
+            if (charBuf.charAt(0) != '.') // directive?
+                throw new DasmError("Bad number format");
+            throw new DasmError("Unknown directive or bad number format");
+        }
+
+        if (num instanceof Integer) {
+            return new int_token(sym.Int, num.intValue());
+        }
+
+        return new number_token(sym.Num, num);
+    }
+
+    /**
+     * Reads ''-quoted overloaded reserved words
+     */
+    protected token readQuotedReservedWord() throws IOException, DasmError {
+        charBuf.reset();
+        for (;;) {
+            readNextChar();
+            if (isSeparator(nextChar))
+                throw new DasmError("Unterminated ''-enclosed name");
+            if (nextChar == '\'') {
+                if (charBuf.size() == 0)
+                    throw new DasmError("Empty ''-enclosed name");
+                readNextChar(); // skip close quote
+                if (!isSeparator(nextChar))
+                    throw new DasmError(
+                            "Missed separator after ''-enclosed name");
+                return new str_token(sym.Word, charBuf.toString());
+            }
+            char chval = (char) nextChar;
+            if (nextChar == '\\') chval = nameEscape();
+            charBuf.add(chval);
+        }
+    }
+};
diff --git a/tools/dasm/src/dasm/Utils.java b/tools/dasm/src/dasm/Utils.java
new file mode 100644
index 0000000..c7ad85c
--- /dev/null
+++ b/tools/dasm/src/dasm/Utils.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dasm;
+
+/**
+ * Different string manipulations utility methods
+ */
+public class Utils {
+
+    /**
+     * Replace '.' characters with '/' in a string
+     */
+    public static String convertDotsToSlashes(String name) {
+        if (name == null) return null;
+
+        return name.replace('.', '/');
+    }
+
+    /**
+     * Splits string like "v1, v2, v3" or "v1..v3" into list of registers
+     */
+    public static String[] splitRegList(String list) {
+        String[] result = null;
+        if (list.length() > 0)
+            result = list.split("[\\s]*,[\\s]*|[\\s]*\\.\\.[\\s]*");
+        return result;
+    }
+
+    /**
+     * Converts string to a smallest possible number (int, long, float or
+     * double)
+     */
+    public static Number stringToNumber(String str)
+            throws NumberFormatException {
+        if (str.startsWith("+")) {
+            return new Integer(str.substring(1));
+        }
+        if (str.startsWith("0x")) {
+            return (Utils.stringToSmallestInteger(str.substring(2), 16));
+        } else if (str.indexOf('.') != -1) {
+
+            double x = Double.parseDouble(str);
+            if (x <= (double) Float.MAX_VALUE && x >= (float) Float.MIN_VALUE) {
+                return new Float((float) x);
+            }
+
+            return new Double(x);
+        } else {
+            return (Utils.stringToSmallestInteger(str, 10));
+        }
+    }
+
+    /**
+     * Converts string to a smallest possible integer (int or long)
+     */
+    private static Number stringToSmallestInteger(String str, int radix)
+            throws NumberFormatException {
+        long x = Long.parseLong(str, radix);
+        if (x <= (long) Integer.MAX_VALUE && x >= (long) Integer.MIN_VALUE) {
+            return new Integer((int) x);
+        }
+        return new Long(x);
+    }
+
+    /**
+     * Splits string "package/class/method(param)return_type" into
+     * "package/class", "method", "(param)return_type"
+     */
+    public static String[] getClassMethodSignatureFromString(String name) {
+
+        String signature = convertDotsToSlashes(name);
+
+        String result[] = new String[3];
+        int mpos = 0, sigpos = 0;
+        int i;
+
+        // find first '('
+        sigpos = signature.indexOf('(');
+        if (sigpos == -1) {
+            sigpos = 0;
+            i = signature.length() - 1;
+        } else {
+            i = sigpos - 1;
+        }
+
+        // find last '/' before '('
+        for (; i >= 0; i--) {
+            if (signature.charAt(i) == '/') {
+                mpos = i;
+                break;
+            }
+        }
+        try {
+            result[0] = signature.substring(0, mpos);
+            result[1] = signature.substring(mpos + 1, sigpos);
+            result[2] = signature.substring(sigpos);
+        } catch (StringIndexOutOfBoundsException e) {
+            throw new IllegalArgumentException("malformed method signature : "
+                    + name);
+        }
+        return result;
+    }
+
+    /**
+     * Splits string "package/class/field" into "package/class" and "field"
+     */
+    public static String[] getClassFieldFromString(String name) {
+        name = convertDotsToSlashes(name);
+
+        String result[] = new String[2];
+        int pos = name.lastIndexOf('/');
+
+        if (pos == -1) {
+            result[0] = null;
+            result[1] = name;
+        } else {
+            result[0] = name.substring(0, pos);
+            result[1] = name.substring(pos + 1);
+        }
+
+        return result;
+    }
+
+    /**
+     * Splits string "method(param)return_type" into "method" and
+     * "(param)return_type"
+     */
+    public static String[] getMethodSignatureFromString(String name) {
+        int sigpos = name.indexOf('(');
+        if (sigpos == -1) sigpos = 0;
+
+        String result[] = new String[2];
+        result[0] = name.substring(0, sigpos);
+        result[1] = convertDotsToSlashes(name.substring(sigpos));
+
+        return result;
+    }
+
+}
diff --git a/tools/dasm/src/dasm/build_parser b/tools/dasm/src/dasm/build_parser
new file mode 100755
index 0000000..6f9b337
--- /dev/null
+++ b/tools/dasm/src/dasm/build_parser
@@ -0,0 +1,17 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+exec java -jar ../../etc/java_cup.jar < parser.cup
diff --git a/tools/dasm/src/dasm/build_parser.bat b/tools/dasm/src/dasm/build_parser.bat
new file mode 100755
index 0000000..425ba85
--- /dev/null
+++ b/tools/dasm/src/dasm/build_parser.bat
@@ -0,0 +1 @@
+java -jar ..\..\etc\java_cup.jar < parser.cup
\ No newline at end of file
diff --git a/tools/dasm/src/dasm/parser.cup b/tools/dasm/src/dasm/parser.cup
new file mode 100644
index 0000000..04f39c7
--- /dev/null
+++ b/tools/dasm/src/dasm/parser.cup
@@ -0,0 +1,838 @@
+/*
+ * parser.cup - Java CUP file containing LALR(1) grammar for DASM
+ */
+
+package dasm;
+
+import java_cup.runtime.*;
+
+import dasm.tokens.number_token;
+import dasm.tokens.relative_number_token;
+import dasm.tokens.variant_token;
+
+action code {:
+    int access_val;
+    public DAsm dAsm;
+    public Scanner scanner;
+    public boolean isInterface;
+:};
+
+parser code {:
+
+    public boolean isInterface;
+    public Scanner scanner;
+    public DAsm dAsm;
+
+    public void report_error(String message, Object info) {
+            if(info != null)
+                dAsm.report_error("Warning: " + message + "(" + info.toString() + ")");
+            else
+                dAsm.report_error("Warning: " + message);
+    }
+
+    public void report_fatal_error(String message, Object info)  {
+            if(info != null)
+                dAsm.report_error("Error: " + message + "(" + info.toString() + ")");
+            else
+                dAsm.report_error("Error: " + message); 
+    }
+
+    parser(DAsm dAsm, Scanner scanner) {
+        super();
+
+        this.scanner = scanner;
+        this.dAsm = dAsm;
+    }
+:};
+
+init with {:
+    action_obj.scanner = scanner;
+    action_obj.dAsm = dAsm;
+:};
+
+scan with {:
+    return scanner.next_token();
+:};
+
+
+
+/* Terminals (tokens returned by the scanner). */
+terminal token
+    // Directives (words beginning with a '.')
+    DCATCH, DCLASS, DEND, DFIELD, DLIMIT, DLINE, DMETHOD, DSET, DSUPER,
+    DSOURCE, DTHROWS, DVAR, DIMPLEMENTS, DINTERFACE, DBYTECODE, DDEBUG,
+    DENCLOSING, DSIGNATURE, DATTRIBUTE, DDEPRECATED, DINNER,
+    DANNOTATION,
+
+    // keywords for directives
+    USING, IS, FROM, METHOD, SIGNATURE, REGS, FIELD, CLASS,
+    TO, INNER, OUTER, VISIBLE, INVISIBLE, VISIBLEPARAM, INVISIBLEPARAM, 
+
+    // access types
+    ABSTRACT, FINAL, INTERFACE, NATIVE, PRIVATE, PROTECTED, PUBLIC, STATIC,
+    SYNCHRONIZED, DECLARED_SYNCHRONIZED, TRANSIENT, VOLATILE,
+    // added these for java 1.5 compliance :
+    ANNOTATION, ENUM, BRIDGE, VARARGS, STRICT, SYNTHETIC,
+    // complex instructions
+    FILL_ARRAY_DATA, FILL_ARRAY_DATA_END, 
+    PACKED_SWITCH, PACKED_SWITCH_END, 
+    SPARSE_SWITCH, SPARSE_SWITCH_END, 
+    DEFAULT,
+
+    // special symbols
+    EQ, SEP, COLON
+ ;
+
+terminal str_token Str, Word, Insn;
+terminal int_token Int;
+terminal number_token Num;
+terminal relative_number_token Relative;
+
+non terminal str_token classname, inner_name, inner_inner, inner_outer, optional_signature;
+non terminal variant_token optional_default, item, any_item;
+
+/* Non terminals */
+non terminal symbol
+       access_item, access_items, access_list, catch_expr, class_spec,
+       complex_instruction, defmethod, directive, endmethod, field_list,
+       field_spec, fields, instruction, implements, implements_list, implements_spec,
+       dasm_file, dasm_file_classes, dasm_file_class, label, limit_expr,
+       method_list,
+       method_spec, methods, set_expr, simple_instruction, source_spec,
+       statement, statements, stmnt, super_spec, line_expr,
+       throws_expr, var_expr, dex_version_spec,
+       enclosing_spec, signature_spec, signature_expr, dasm_header,
+       deprecated_spec, deprecated_expr,
+       generic_attributes, generic_list, generic_spec, generic_expr,
+       field_start, endfield, field_exts, field_ext_list, field_ext_expr,
+       inners, inner_list, inner_spec,
+       fa_data, fa_data_args, fa_data_list, fa_data_entry, fa_data_end,
+       ps_table, ps_table_args, ps_table_list, ps_table_entry, ps_table_end,
+       ss_table, ss_table_args, ss_table_list, ss_table_entry, ss_table_end,
+
+   // used for Annotation attributes :
+       annotations, ann_cls_list, ann_cls_spec, endannotation, ann_cls_expr,
+       ann_clf_expr, ann_met_expr, ann_arglist, ann_arg_list, ann_arg_spec,
+       ann_def_spec, ann_def_val, ann_value_items, ann_value, ann_def_expr,
+       ann_arg_expr, ann_nest, endannotationsep, ann_ann_value, ann_ann_list,
+       ann_value_list
+
+;
+
+non terminal int_token access;
+
+/* The grammar */
+
+dasm_file ::= dasm_file_classes;
+
+dasm_file_classes ::= dasm_file_classes dasm_file_class | dasm_file_class;
+
+dasm_file_class ::= 
+        dasm_header
+        inners
+        fields
+        methods
+;
+
+dasm_header ::=
+    dex_version_spec
+    source_spec
+    class_spec
+    super_spec
+    implements
+    signature_spec
+    enclosing_spec
+    deprecated_spec
+    annotations
+    generic_attributes
+  {: dAsm.endHeader(); :}
+;
+
+/* ========== Dex version specification ========== */
+
+dex_version_spec ::=
+    DBYTECODE Num:n SEP
+        {: dAsm.setVersion(n.number_val); :}
+    |
+    /* nothing */
+;
+
+/* ========== Source specification ========== */
+
+source_spec ::=
+    DSOURCE Str:s SEP
+        {: dAsm.setSource(s.str_val); :}
+    |
+    DSOURCE Word:w SEP
+        {: dAsm.setSource(w.str_val); :}
+    |
+    /* nothing */
+;
+
+
+/* ========== Class specification ========== */
+
+class_spec ::=
+    DCLASS access:a classname:name SEP
+        {: isInterface = false;
+           dAsm.setClass(name.str_val,
+                (a.int_val)); :}
+    |
+    DINTERFACE access:a classname:name SEP
+        {: isInterface = true;
+           dAsm.setClass(name.str_val,
+                (a.int_val |
+                        com.android.dx.rop.code.AccessFlags.ACC_INTERFACE)); :}
+;
+
+classname ::= Word:w
+        {: RESULT.str_val = Utils.convertDotsToSlashes(w.str_val); :}
+;
+
+access ::=
+    {: access_val = 0; :}
+        access_list
+    {: RESULT.int_val = access_val; :}
+;
+
+
+access_list ::= access_items | ;
+access_items ::= access_items access_item | access_item ;
+
+access_item ::=
+    PUBLIC       {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_PUBLIC; :}
+    |
+    PRIVATE      {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_PRIVATE; :}
+    |
+    PROTECTED    {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_PROTECTED; :}
+    |
+    STATIC       {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_STATIC; :}
+    |
+    FINAL        {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_FINAL; :}
+    |
+    SYNCHRONIZED {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_SYNCHRONIZED; :}
+    |
+    VOLATILE     {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_VOLATILE; :}
+    |
+    TRANSIENT    {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_TRANSIENT; :}
+    |
+    NATIVE       {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_NATIVE; :}
+    |
+    INTERFACE    {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_INTERFACE; :}
+    |
+    ABSTRACT     {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_ABSTRACT; :}
+    |
+    ANNOTATION   {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_ANNOTATION; :}
+    |
+    ENUM         {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_ENUM; :}
+    |
+    BRIDGE       {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_BRIDGE; :}
+    |
+    VARARGS      {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_VARARGS; :}
+    |
+    STRICT       {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_STRICT; :}
+    |
+    SYNTHETIC    {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_SYNTHETIC; :}
+    |
+    DECLARED_SYNCHRONIZED {: access_val |= com.android.dx.rop.code.AccessFlags.ACC_DECLARED_SYNCHRONIZED; :}
+;
+
+/* ========== Superclass specification ========== */
+
+super_spec ::=
+    DSUPER classname:name SEP
+        {: dAsm.setSuperClass(name.str_val); :} 
+        |
+        /* nothing */
+        {: if(isInterface == false) 
+               dAsm.setSuperClass("java/lang/Object"); 
+           else 
+           // Dalvik requires interfaces to have superclass
+               dAsm.setSuperClass("java/lang/Object"); :}
+;
+
+/* ========== Implements specification ========== */
+
+implements ::= implements_list | /* empty */ ;
+
+implements_list ::= implements_list implements_spec | implements_spec ;
+
+implements_spec ::= DIMPLEMENTS classname:name SEP
+    {: dAsm.addInterface(name.str_val); :}
+;
+
+/* ========== Signature specification  ========== */
+
+signature_spec ::=
+    DSIGNATURE signature_expr SEP
+    |
+    /* nothing */
+;
+
+signature_expr ::= Str:sig
+        {: dAsm.setSignature(sig.str_val); :}
+;
+
+/* ========== EnclosingMethod attribute specification ========== */
+
+enclosing_spec ::=
+    DENCLOSING METHOD Word:w SEP
+        {: dAsm.setEnclosingMethod(w.str_val); :}
+    |
+    /* nothing */
+;
+
+
+
+/* ========== Deprecated attribute ========== */
+
+deprecated_spec ::=
+    DDEPRECATED deprecated_expr SEP
+    |
+    /* nothing */
+;
+
+deprecated_expr ::=
+    {: /*dAsm.setDeprecated();*/dAsm.report_error("WARNING: @deprecated is not supported"); :}
+;
+
+
+/* ========== Annotation specification ========== */
+annotations ::= ann_cls_list | 
+    // empty  
+    ;
+
+ann_cls_list ::= ann_cls_list ann_cls_spec | ann_cls_spec ;
+
+ann_cls_spec ::= ann_cls_expr ann_arglist endannotationsep ;
+
+endannotationsep ::= endannotation SEP ;
+
+endannotation ::= DEND ANNOTATION
+    {: //TODO: NOT SUPPORTED dAsm.endAnnotation(); 
+            dAsm.report_error("WARNING: Annotations are not supported"); :}
+;
+
+ann_cls_expr ::= DANNOTATION ann_clf_expr ;
+
+ann_clf_expr ::=
+    VISIBLE classname:name SEP
+        {: //TODO: NOT SUPPORTED dAsm.addAnnotation(true, name.str_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); :}
+    |
+    INVISIBLE classname:name SEP
+        {: //TODO: NOT SUPPORTED dAsm.addAnnotation(false, name.str_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); :}
+;
+ann_met_expr ::=
+    VISIBLE classname:name SEP
+        {: //TODO: NOT SUPPORTED dAsm.addAnnotation(true, name.str_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); :}
+    |
+    INVISIBLE classname:name SEP
+        {: //TODO: NOT SUPPORTED dAsm.addAnnotation(false, name.str_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); :}
+    |
+    VISIBLEPARAM Int:n classname:name SEP
+        {: //TODO: NOT SUPPORTED dAsm.addAnnotation(true, name.str_val, n.int_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); :}
+    |
+    INVISIBLEPARAM Int:n classname:name SEP
+        {: //TODO: NOT SUPPORTED dAsm.addAnnotation(false, name.str_val, n.int_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); :}
+;
+
+ann_arglist ::= ann_arg_list | 
+                // empty 
+;
+
+ann_arg_list ::= ann_arg_list ann_arg_spec | ann_arg_spec ;
+
+ann_arg_spec ::= ann_arg_expr EQ ann_value_list ;
+
+ann_arg_expr ::=
+    Word:n Word:dsc
+    {: //TODO: NOT SUPPORTED dAsm.addAnnotationField(n.str_val, dsc.str_val, null);
+            dAsm.report_error("WARNING: Annotations are not supported"); :}
+    |
+    Word:n Word:dsc Word:sub
+    {: //TODO: NOT SUPPORTED dAsm.addAnnotationField(n.str_val, dsc.str_val, sub.str_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); :}
+;
+
+ann_def_spec ::= DEFAULT SEP
+    {: //TODO: NOT SUPPORTED dAsm.addAnnotation();
+            dAsm.report_error("WARNING: Annotations are not supported"); :}
+;
+
+ann_value_list ::= ann_value_items SEP | ann_ann_list ;
+
+ann_value_items ::= ann_value_items ann_value | ann_value ;
+
+ann_value ::= any_item:v
+    {: //TODO: NOT SUPPORTED dAsm.addAnnotationValue(v.variant_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); :}
+;
+ann_ann_list ::= ann_ann_list ann_ann_value | ann_ann_value ;
+
+ann_ann_value ::= DANNOTATION ann_nest ann_arglist endannotationsep ;
+
+ann_nest ::= SEP
+    {: //TODO: NOT SUPPORTED dAsm.nestAnnotation();
+            dAsm.report_error("WARNING: Annotations are not supported"); :}
+;
+
+ann_def_val ::= ann_def_expr EQ ann_value_list ;
+
+ann_def_expr ::=
+    Word:dsc
+    {: //TODO: NOT SUPPORTED dAsm.addAnnotationField(null, dsc.str_val, null);
+            dAsm.report_error("WARNING: Annotations are not supported"); :}
+    |
+    Word:dsc Word:sub
+    {: //TODO: NOT SUPPORTED dAsm.addAnnotationField(null, dsc.str_val, sub.str_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); :}
+;
+
+
+
+/* ========== Generic attributes specification ========== */
+
+generic_attributes ::= generic_list | /* empty */ ;
+
+generic_list ::= generic_list generic_spec | generic_spec ;
+
+generic_spec ::= DATTRIBUTE generic_expr SEP ;
+
+generic_expr ::= Word:name Str:file
+        {: dAsm.addGenericAttr(name.str_val, file.str_val); :}
+;
+
+
+/* ========== Fields ========== */
+
+fields ::= field_list | /* empty */ ;
+
+field_list ::= field_list field_spec | field_spec ;
+
+field_spec ::=
+    DFIELD access:a Word:name Word:desc SIGNATURE Str:sig optional_default:v SEP
+        {: dAsm.addField((short)a.int_val, name.str_val, desc.str_val,
+                              sig.str_val, v.variant_val); :}
+    |
+    DFIELD access:a Word:name Word:desc optional_default:v SEP
+        {: dAsm.addField((short)a.int_val, name.str_val, desc.str_val,
+                               null, v.variant_val); :}
+    |
+    DFIELD field_start field_exts endfield
+;
+
+// default value for a field
+optional_default ::=
+     EQ item:v
+        {: RESULT.variant_val = v.variant_val; :}
+     |
+     /* empty */
+        {: RESULT.variant_val = null; :}
+;
+
+// multiline form of field description
+field_start ::= access:a Word:name Word:desc optional_default:v SEP
+      {: dAsm.beginField((short)a.int_val, name.str_val,
+                              desc.str_val, v.variant_val); :}
+;
+
+endfield ::= DEND FIELD SEP
+      {: dAsm.endField(); :}
+;
+
+field_exts ::= field_ext_list | /* empty */ ;
+
+field_ext_list ::= field_ext_list field_ext_expr | field_ext_expr ;
+
+field_ext_expr ::=
+   DSIGNATURE signature_expr SEP
+   |
+   DATTRIBUTE generic_expr SEP
+   |
+   DDEPRECATED deprecated_expr SEP
+   |
+   DANNOTATION ann_clf_expr ann_arglist endannotationsep
+;
+
+
+// an item is an integer, a float/double/long, or a quoted string
+item ::=
+    Int:i       {: RESULT.variant_val = new Integer(i.int_val); :}
+    |
+    Num:n       {: RESULT.variant_val = n.number_val; :}
+    |
+    Str:s       {: RESULT.variant_val = s.str_val; :}
+;
+// an item is any possible type
+any_item ::=
+    Word:w      {: RESULT.variant_val = w.str_val; :}       // for enum
+    |
+    item:v      {: RESULT.variant_val = v.variant_val; :}
+;
+
+/* ========== Inner classes ========== */
+inners ::= inner_list | 
+    // empty 
+;
+
+inner_list ::= inner_list inner_spec | inner_spec ;
+
+inner_spec ::=
+    DINNER CLASS access:a inner_name:n inner_inner:i inner_outer:o SEP
+        {: dAsm.addInner((short)a.int_val,
+                              n.str_val, i.str_val, o.str_val); :}
+    |
+    DINNER INTERFACE access:a inner_name:n inner_inner:i inner_outer:o SEP
+        {: dAsm.addInner((short)(a.int_val |
+                              com.android.dx.rop.code.AccessFlags.ACC_INTERFACE),
+                                n.str_val, i.str_val, o.str_val); :}
+;
+
+inner_name ::=
+    Word:w
+        {: RESULT.str_val = w.str_val; :}
+    |
+    // empty 
+        {: RESULT.str_val = null; :}
+;
+
+inner_inner ::=
+    INNER classname:w
+        {: RESULT.str_val = w.str_val; :}
+    |
+    // empty
+        {: RESULT.str_val = null; :}
+;
+
+inner_outer ::=
+    OUTER classname:w
+        {: RESULT.str_val = w.str_val; :}
+    |
+    // empty
+        {: RESULT.str_val = null; :}
+;
+
+
+/* ========== Methods ========== */
+
+methods ::= method_list | /* empty */;
+
+method_list ::= method_list method_spec | method_spec ;
+
+method_spec ::=
+    defmethod
+    statements
+    endmethod
+    |
+    defmethod endmethod
+ ;
+
+defmethod ::=
+    DMETHOD access:i Word:name SEP
+        {: String split[] = Utils.getMethodSignatureFromString(name.str_val);
+           dAsm.newMethod(split[0], split[1], i.int_val); :}
+;
+
+endmethod ::=
+    DEND METHOD SEP
+        {: dAsm.endMethod(); :}
+;
+
+
+/* ========== Statements in a method ========== */
+
+statements ::= statements statement | statement ;
+
+statement ::=
+        {: dAsm.setLine(scanner.token_line_num); :}
+    stmnt SEP
+;
+
+stmnt ::=
+    instruction
+    |
+    directive
+    |
+    error
+    |
+    label
+    |
+    /* empty */
+;
+
+
+// label:
+label ::=
+    Word:label COLON
+        {: dAsm.plantLabel(label.str_val); :}
+    |
+    Int:label COLON instruction
+        {: dAsm.plantLabel(String.valueOf(label.int_val)); :}
+;
+
+// Directives (.catch, .set, .limit, etc.)
+
+directive ::=
+    DVAR var_expr
+    |
+    DLIMIT limit_expr
+    |
+    DLINE line_expr
+    |
+    DTHROWS throws_expr
+    |
+    DCATCH catch_expr
+    |
+    DSET set_expr
+    |
+    DSIGNATURE signature_expr
+    |
+    DATTRIBUTE generic_expr
+    |
+    DDEPRECATED deprecated_expr
+    |
+    DANNOTATION ann_met_expr ann_arglist endannotation
+    |
+    DANNOTATION ann_def_spec ann_def_val endannotation
+;
+
+
+//
+// .var <num> is <name> <desc> from StartLab to EndLab
+// .var <num> is <name> <desc> signature <sign> from StartLab to EndLab
+//
+var_expr ::=
+    Int:reg IS Word:name Word:desc optional_signature:sign FROM Word:slab TO Word:elab
+        {: dAsm.addVar(slab.str_val, elab.str_val, name.str_val,
+                            desc.str_val, sign.str_val, reg.int_val); :}
+    |
+    Int:reg IS Word:name Word:desc optional_signature:sign
+        {: dAsm.addVar(null, null, name.str_val, desc.str_val,
+                            sign.str_val,  reg.int_val); :}
+    |
+    Int:reg IS Word:name Word:desc optional_signature:sign FROM Int:soff TO Int:eoff
+        {: dAsm.addVar(soff.int_val, eoff.int_val, name.str_val,
+                            desc.str_val, sign.str_val, reg.int_val); :}
+;
+
+// optional signature specification for a .var
+optional_signature ::=
+     SIGNATURE Str:s
+        {: RESULT.str_val = s.str_val; :}
+     |
+     /* empty */
+        {: RESULT.str_val = null; :}
+;
+
+
+// .limit regs <val>
+limit_expr ::=
+    REGS Int:v        // .limit regs
+      {: dAsm.setRegsSize(v.int_val); :}
+   |
+   Word:w Int:v
+      {: dAsm.report_error(".limit expected \"regs\" , but got "
+                                + w.str_val); :}
+;
+
+// .line <num>
+line_expr ::= Int:v
+      {: dAsm.addLine(v.int_val); :}
+;
+
+// .throws <class>
+throws_expr ::= classname:s
+      {: dAsm.addThrow(s.str_val); :}
+;
+
+// .catch <class> from <label1> to <label2> using <branchlab>
+catch_expr ::=
+    classname:aclass FROM Word:fromlab TO Word:tolab USING Word:branchlab
+        {: dAsm.addCatch(aclass.str_val,
+                              fromlab.str_val,
+                              tolab.str_val,
+                              branchlab.str_val); :}
+    |
+    classname:aclass FROM Int:fromoff TO Int:tooff USING Int:branchoff
+        {: dAsm.addCatch(aclass.str_val,
+                              fromoff.int_val,
+                              tooff.int_val,
+                              branchoff.int_val); :}
+;
+
+// .set <var> = <val>
+set_expr ::=
+    Word:name any_item:v
+        {: scanner.dict.put(name.str_val, v); :}
+;
+
+instruction ::=
+    simple_instruction
+    |    
+    complex_instruction
+;
+
+// Various patterns of instruction:
+//      instruction [<pattern>]
+simple_instruction ::=
+    /* Format: 10x */
+    Insn:i
+        {: dAsm.addOpcode(i.str_val); :}
+    |
+    /* Format: 11x, 10t, 20t, 30t */
+    Insn:i Word:n
+        {: dAsm.addOpcode(i.str_val, n.str_val); :}
+    |
+    /* Format: relative 10t, 20t, 30t */
+    Insn:i Relative:n
+        {: dAsm.addRelativeGoto(i.str_val, n.int_val); :}
+    |
+    /* Format: 11n, 21s, 31i, 21h, 51l */
+    Insn:i Word:n1 Num:n2
+        {: dAsm.addOpcode(i.str_val, n1.str_val, n2.number_val); :}
+    |
+    /* Format: same as above. Handles the case when last argument is integer */
+    Insn:i Word:n1 Int:n2
+        {: dAsm.addOpcode(i.str_val, n1.str_val, new Integer(n2.int_val)); :}
+    |
+    /* Format: 12x, 22x, 32x, 21t, 21c (string@, type@), 31c, 35c, 3rc */
+    Insn:i Word:n1 Word:n2
+        {: dAsm.addOpcode(i.str_val, n1.str_val, n2.str_val); :}
+    |
+    /* Format: relative 21t */
+    Insn:i Word:n1 Relative:n2
+        {: dAsm.addRelativeGoto(i.str_val, n1.str_val, n2.int_val); :}
+    |
+    /* Format: 23x, 22t, 21c (field@), 22c */
+    Insn:i Word:n1 Word:n2 Word:n3
+        {: dAsm.addOpcode(i.str_val, n1.str_val, n2.str_val, n3.str_val); :}
+    |
+    /* Format: relative 22t */
+    Insn:i Word:n1 Word:n2 Relative:n3
+        {: dAsm.addRelativeGoto(i.str_val, n1.str_val, n2.str_val, n3.int_val); :}
+    |
+    /* Format: 22b, 22s */
+    Insn:i Word:n1 Word:n2 Int:n3
+        {: dAsm.addOpcode(i.str_val, n1.str_val, n2.str_val, n3.int_val); :}
+    |
+    /* Format: 21c (string@) */
+    Insn:i Word:n1 Str:n2
+        {: dAsm.addOpcode(i.str_val, n1.str_val, n2.str_val); :}
+    |
+    /* Format: 22c (field@)*/
+    Insn:i Word:n1 Word:n2 Word:n3 Word:n4
+        {: dAsm.addOpcode(i.str_val, n1.str_val, n2.str_val, n3.str_val, n4.str_val); :}
+  ;
+
+// complex (multiline) instructions
+//      fill-array-data <data>
+//      packed-switch  <table>
+//      sparse-switch <table>
+
+complex_instruction ::=
+    FILL_ARRAY_DATA fa_data
+    |
+    PACKED_SWITCH ps_table
+    |
+    SPARSE_SWITCH ss_table
+;
+
+// fill-array-data register type
+//      <value1>
+//      ...
+//      <valueN>
+// fill-array-data-end
+fa_data ::=
+   fa_data_args
+   fa_data_list
+   fa_data_end
+;
+
+fa_data_args ::=
+    Word:r Word:t SEP     // <register> <type>  
+        {: dAsm.newFillArrayData(r.str_val, t.str_val); :}
+;
+
+fa_data_list ::= fa_data_list fa_data_entry | fa_data_entry ;
+
+fa_data_entry ::=
+    Num:data SEP
+        {: dAsm.addFillArrayData(data.number_val); :} 
+    |
+    Int:data SEP
+        {: dAsm.addFillArrayData(new Integer(data.int_val)); :}
+;
+
+fa_data_end ::=
+    FILL_ARRAY_DATA_END 
+        {: dAsm.endFillArrayData(); :}
+;
+
+
+// packed-switch register first_key
+//      <target1>
+//      ...
+//      <targetN>
+// packed-switch-end
+ps_table ::=
+   ps_table_args
+   ps_table_list
+   ps_table_end
+;
+
+ps_table_args ::=
+    Word:r Int:k SEP     // <register> <first_key>  
+        {: dAsm.newPackedSwitch(r.str_val, k.int_val); :}
+;
+
+ps_table_list ::= ps_table_list ps_table_entry | ps_table_entry ;
+
+ps_table_entry ::=
+    Word:target SEP
+        {: dAsm.addPackedSwitchData(target.str_val); :} 
+    |
+    Relative:target SEP
+        {: dAsm.addPackedSwitchData(target.int_val); :}
+;
+
+ps_table_end ::=
+    PACKED_SWITCH_END 
+        {: dAsm.endSwitch(); :}
+;
+
+// sparse-switch register
+//     <value> : <label>
+//     <value> : <label>
+//     ...
+//     sparse-switch-end
+ss_table ::=
+    ss_table_args
+    ss_table_list
+    ss_table_end
+;
+
+ss_table_args ::= 
+    Word:r SEP     // <register>
+        {: dAsm.newSparseSwitch(r.str_val); :}
+;
+
+ss_table_list ::= ss_table_list ss_table_entry | ss_table_entry ;
+
+ss_table_entry ::=
+    Int:i COLON Word:w SEP
+        {: dAsm.addSparseSwitchData(i.int_val, w.str_val); :}
+    |
+    Int:i COLON Relative:off SEP
+        {: dAsm.addSparseSwitchData(i.int_val, off.int_val); :}
+;
+
+ss_table_end ::=
+    SPARSE_SWITCH_END 
+        {: dAsm.endSwitch(); :}
+;
diff --git a/tools/dasm/src/dasm/parser.java b/tools/dasm/src/dasm/parser.java
new file mode 100644
index 0000000..9aa43d8
--- /dev/null
+++ b/tools/dasm/src/dasm/parser.java
@@ -0,0 +1,2628 @@
+
+//----------------------------------------------------
+// The following code was generated by Java(tm) CUP v0.9d
+// Thu Dec 11 17:10:00 CET 2008
+//----------------------------------------------------
+
+package dasm;
+
+import java_cup.runtime.*;
+import dasm.tokens.number_token;
+import dasm.tokens.relative_number_token;
+import dasm.tokens.variant_token;
+
+public class parser extends java_cup.runtime.lr_parser {
+
+  /** constructor */
+  public parser() {super();}
+
+  /** production table */
+  protected static final short _production_table[][] = {
+        {25, 1},     {0, 2},     {26, 2},     {26, 1},     {27, 4}, 
+        {47, 10},     {43, 3},     {43, 0},     {35, 3},     {35, 3}, 
+        {35, 0},     {13, 4},     {13, 4},     {1, 1},     {99, 0}, 
+        {98, 2},     {11, 1},     {11, 0},     {10, 2},     {10, 1}, 
+        {9, 1},     {9, 1},     {9, 1},     {9, 1},     {9, 1}, 
+        {9, 1},     {9, 1},     {9, 1},     {9, 1},     {9, 1}, 
+        {9, 1},     {9, 1},     {9, 1},     {9, 1},     {9, 1}, 
+        {9, 1},     {9, 1},     {9, 1},     {39, 3},     {39, 0}, 
+        {22, 1},     {22, 0},     {23, 2},     {23, 1},     {24, 3}, 
+        {45, 3},     {45, 0},     {46, 1},     {44, 4},     {44, 0}, 
+        {48, 3},     {48, 0},     {49, 0},     {77, 1},     {77, 0}, 
+        {78, 2},     {78, 1},     {79, 3},     {94, 2},     {80, 2}, 
+        {81, 2},     {82, 3},     {82, 3},     {83, 3},     {83, 3}, 
+        {83, 4},     {83, 4},     {84, 1},     {84, 0},     {85, 2}, 
+        {85, 1},     {86, 3},     {92, 2},     {92, 3},     {87, 2}, 
+        {97, 2},     {97, 1},     {89, 2},     {89, 1},     {90, 1}, 
+        {96, 2},     {96, 1},     {95, 4},     {93, 1},     {88, 3}, 
+        {91, 1},     {91, 2},     {50, 1},     {50, 0},     {51, 2}, 
+        {51, 1},     {52, 3},     {53, 2},     {20, 1},     {20, 0}, 
+        {18, 2},     {18, 1},     {19, 8},     {19, 6},     {19, 4}, 
+        {6, 2},     {6, 0},     {54, 5},     {55, 3},     {56, 1}, 
+        {56, 0},     {57, 2},     {57, 1},     {58, 3},     {58, 3}, 
+        {58, 3},     {58, 4},     {7, 1},     {7, 1},     {7, 1}, 
+        {8, 1},     {8, 1},     {59, 1},     {59, 0},     {60, 2}, 
+        {60, 1},     {61, 7},     {61, 7},     {2, 1},     {2, 0}, 
+        {3, 2},     {3, 0},     {4, 2},     {4, 0},     {32, 1}, 
+        {32, 0},     {30, 2},     {30, 1},     {31, 3},     {31, 2}, 
+        {15, 4},     {17, 3},     {37, 2},     {37, 1},     {100, 0}, 
+        {36, 3},     {38, 1},     {38, 1},     {38, 1},     {38, 1}, 
+        {38, 0},     {28, 2},     {28, 3},     {16, 2},     {16, 2}, 
+        {16, 2},     {16, 2},     {16, 2},     {16, 2},     {16, 2}, 
+        {16, 2},     {16, 2},     {16, 4},     {16, 4},     {42, 9}, 
+        {42, 5},     {42, 9},     {5, 2},     {5, 0},     {29, 2}, 
+        {29, 2},     {40, 1},     {41, 1},     {12, 7},     {12, 7}, 
+        {33, 2},     {21, 1},     {21, 1},     {34, 1},     {34, 2}, 
+        {34, 2},     {34, 3},     {34, 3},     {34, 3},     {34, 3}, 
+        {34, 4},     {34, 4},     {34, 4},     {34, 3},     {34, 5}, 
+        {14, 2},     {14, 2},     {14, 2},     {62, 3},     {63, 3}, 
+        {64, 2},     {64, 1},     {65, 2},     {65, 2},     {66, 1}, 
+        {67, 3},     {68, 3},     {69, 2},     {69, 1},     {70, 2}, 
+        {70, 2},     {71, 1},     {72, 3},     {73, 2},     {74, 2}, 
+        {74, 1},     {75, 4},     {75, 4},     {76, 1}  };
+
+  /** access to production table */
+  public short[][] production_table() {return _production_table;}
+
+  /** parse action table */
+  protected static final short[][] _action_table = {
+    /*0*/{3,-8,11,-8,15,-8,16,4,-1,0},
+    /*1*/{0,-4,3,-4,11,-4,15,-4,16,-4,-1,0},
+    /*2*/{0,359,-1,0},
+    /*3*/{71,357,-1,0},
+    /*4*/{3,-11,11,302,15,-11,-1,0},
+    /*5*/{0,-1,3,-8,11,-8,15,-8,16,4,-1,0},
+    /*6*/{0,-119,3,-119,5,-119,8,-119,11,-119,15,-119,16,-119,22,8,-1,0},
+    /*7*/{31,285,41,284,-1,0},
+    /*8*/{0,-121,3,-121,5,-121,8,-121,11,-121,15,-121,16,-121,22,-121,-1,0},
+    /*9*/{0,-95,3,-95,5,15,8,-95,11,-95,15,-95,16,-95,-1,0},
+    /*10*/{0,-118,3,-118,5,-118,8,-118,11,-118,15,-118,16,-118,22,8,-1,0},
+    /*11*/{0,-120,3,-120,5,-120,8,-120,11,-120,15,-120,16,-120,22,-120,-1,0},
+    /*12*/{0,-131,3,-131,8,117,11,-131,15,-131,16,-131,-1,0},
+    /*13*/{0,-97,3,-97,5,-97,8,-97,11,-97,15,-97,16,-97,-1,0},
+    /*14*/{39,-15,40,-15,41,-15,42,-15,43,-15,44,-15,45,-15,46,-15,47,-15,48,-15,49,-15,50,-15,51,-15,52,-15,53,-15,54,-15,55,-15,56,-15,68,-15,-1,0},
+    /*15*/{0,-94,3,-94,5,15,8,-94,11,-94,15,-94,16,-94,-1,0},
+    /*16*/{0,-96,3,-96,5,-96,8,-96,11,-96,15,-96,16,-96,-1,0},
+    /*17*/{68,105,-1,0},
+    /*18*/{33,-18,34,-18,39,100,40,97,41,98,42,87,43,85,44,94,45,90,46,92,47,101,48,88,49,95,50,91,51,89,52,96,53,86,54,99,55,93,56,84,65,-18,68,-18,-1,0},
+    /*19*/{4,-106,19,26,20,22,21,21,23,27,-1,0},
+    /*20*/{65,-53,-1,0},
+    /*21*/{68,77,-1,0},
+    /*22*/{4,-105,19,26,20,22,21,21,23,27,-1,0},
+    /*23*/{4,-108,19,-108,20,-108,21,-108,23,-108,-1,0},
+    /*24*/{4,72,-1,0},
+    /*25*/{67,69,-1,0},
+    /*26*/{35,29,36,28,-1,0},
+    /*27*/{68,64,-1,0},
+    /*28*/{68,64,-1,0},
+    /*29*/{4,-69,68,33,-1,0},
+    /*30*/{4,-68,68,33,-1,0},
+    /*31*/{64,43,-1,0},
+    /*32*/{68,41,-1,0},
+    /*33*/{4,-71,68,-71,-1,0},
+    /*34*/{4,38,-1,0},
+    /*35*/{4,-112,19,-112,20,-112,21,-112,23,-112,-1,0},
+    /*36*/{65,40,-1,0},
+    /*37*/{51,39,-1,0},
+    /*38*/{65,-60,-1,0},
+    /*39*/{0,-59,3,-59,4,-59,5,-59,8,-59,11,-59,15,-59,16,-59,19,-59,20,-59,21,-59,22,-59,23,-59,68,-59,-1,0},
+    /*40*/{64,-73,68,42,-1,0},
+    /*41*/{64,-74,-1,0},
+    /*42*/{23,50,67,52,68,46,70,49,71,48,-1,0},
+    /*43*/{65,61,67,52,68,46,70,49,71,48,-1,0},
+    /*44*/{4,-72,68,-72,-1,0},
+    /*45*/{65,-116,67,-116,68,-116,70,-116,71,-116,-1,0},
+    /*46*/{4,-82,23,-82,68,-82,-1,0},
+    /*47*/{65,-114,67,-114,68,-114,70,-114,71,-114,-1,0},
+    /*48*/{65,-113,67,-113,68,-113,70,-113,71,-113,-1,0},
+    /*49*/{65,57,-1,0},
+    /*50*/{4,-77,23,50,68,-77,-1,0},
+    /*51*/{65,-115,67,-115,68,-115,70,-115,71,-115,-1,0},
+    /*52*/{65,-79,67,-79,68,-79,70,-79,71,-79,-1,0},
+    /*53*/{65,-117,67,-117,68,-117,70,-117,71,-117,-1,0},
+    /*54*/{65,-80,67,-80,68,-80,70,-80,71,-80,-1,0},
+    /*55*/{4,-81,23,-81,-1,0},
+    /*56*/{4,-84,68,-84,-1,0},
+    /*57*/{4,-69,68,33,-1,0},
+    /*58*/{4,38,-1,0},
+    /*59*/{4,-83,23,-83,68,-83,-1,0},
+    /*60*/{4,-76,-1,0},
+    /*61*/{65,-78,67,-78,68,-78,70,-78,71,-78,-1,0},
+    /*62*/{4,-70,68,-70,-1,0},
+    /*63*/{26,-14,34,-14,65,-14,-1,0},
+    /*64*/{65,66,-1,0},
+    /*65*/{4,-62,68,-62,-1,0},
+    /*66*/{65,68,-1,0},
+    /*67*/{4,-63,68,-63,-1,0},
+    /*68*/{65,-48,-1,0},
+    /*69*/{65,71,-1,0},
+    /*70*/{4,-109,19,-109,20,-109,21,-109,23,-109,-1,0},
+    /*71*/{30,74,-1,0},
+    /*72*/{0,-100,3,-100,5,-100,8,-100,11,-100,15,-100,16,-100,-1,0},
+    /*73*/{65,75,-1,0},
+    /*74*/{0,-104,3,-104,5,-104,8,-104,11,-104,15,-104,16,-104,-1,0},
+    /*75*/{4,-107,19,-107,20,-107,21,-107,23,-107,-1,0},
+    /*76*/{67,80,-1,0},
+    /*77*/{65,79,-1,0},
+    /*78*/{4,-110,19,-110,20,-110,21,-110,23,-110,-1,0},
+    /*79*/{65,-93,-1,0},
+    /*80*/{65,82,-1,0},
+    /*81*/{4,-111,19,-111,20,-111,21,-111,23,-111,-1,0},
+    /*82*/{33,-17,34,-17,39,100,40,97,41,98,42,87,43,85,44,94,45,90,46,92,47,101,48,88,49,95,50,91,51,89,52,96,53,86,54,99,55,93,56,84,65,-17,68,-17,-1,0},
+    /*83*/{33,-37,34,-37,39,-37,40,-37,41,-37,42,-37,43,-37,44,-37,45,-37,46,-37,47,-37,48,-37,49,-37,50,-37,51,-37,52,-37,53,-37,54,-37,55,-37,56,-37,65,-37,68,-37,-1,0},
+    /*84*/{33,-22,34,-22,39,-22,40,-22,41,-22,42,-22,43,-22,44,-22,45,-22,46,-22,47,-22,48,-22,49,-22,50,-22,51,-22,52,-22,53,-22,54,-22,55,-22,56,-22,65,-22,68,-22,-1,0},
+    /*85*/{33,-34,34,-34,39,-34,40,-34,41,-34,42,-34,43,-34,44,-34,45,-34,46,-34,47,-34,48,-34,49,-34,50,-34,51,-34,52,-34,53,-34,54,-34,55,-34,56,-34,65,-34,68,-34,-1,0},
+    /*86*/{33,-29,34,-29,39,-29,40,-29,41,-29,42,-29,43,-29,44,-29,45,-29,46,-29,47,-29,48,-29,49,-29,50,-29,51,-29,52,-29,53,-29,54,-29,55,-29,56,-29,65,-29,68,-29,-1,0},
+    /*87*/{33,-38,34,-38,39,-38,40,-38,41,-38,42,-38,43,-38,44,-38,45,-38,46,-38,47,-38,48,-38,49,-38,50,-38,51,-38,52,-38,53,-38,54,-38,55,-38,56,-38,65,-38,68,-38,-1,0},
+    /*88*/{33,-32,34,-32,39,-32,40,-32,41,-32,42,-32,43,-32,44,-32,45,-32,46,-32,47,-32,48,-32,49,-32,50,-32,51,-32,52,-32,53,-32,54,-32,55,-32,56,-32,65,-32,68,-32,-1,0},
+    /*89*/{33,-21,34,-21,39,-21,40,-21,41,-21,42,-21,43,-21,44,-21,45,-21,46,-21,47,-21,48,-21,49,-21,50,-21,51,-21,52,-21,53,-21,54,-21,55,-21,56,-21,65,-21,68,-21,-1,0},
+    /*90*/{33,-27,34,-27,39,-27,40,-27,41,-27,42,-27,43,-27,44,-27,45,-27,46,-27,47,-27,48,-27,49,-27,50,-27,51,-27,52,-27,53,-27,54,-27,55,-27,56,-27,65,-27,68,-27,-1,0},
+    /*91*/{33,-24,34,-24,39,-24,40,-24,41,-24,42,-24,43,-24,44,-24,45,-24,46,-24,47,-24,48,-24,49,-24,50,-24,51,-24,52,-24,53,-24,54,-24,55,-24,56,-24,65,-24,68,-24,-1,0},
+    /*92*/{33,-36,34,-36,39,-36,40,-36,41,-36,42,-36,43,-36,44,-36,45,-36,46,-36,47,-36,48,-36,49,-36,50,-36,51,-36,52,-36,53,-36,54,-36,55,-36,56,-36,65,-36,68,-36,-1,0},
+    /*93*/{33,-23,34,-23,39,-23,40,-23,41,-23,42,-23,43,-23,44,-23,45,-23,46,-23,47,-23,48,-23,49,-23,50,-23,51,-23,52,-23,53,-23,54,-23,55,-23,56,-23,65,-23,68,-23,-1,0},
+    /*94*/{33,-28,34,-28,39,-28,40,-28,41,-28,42,-28,43,-28,44,-28,45,-28,46,-28,47,-28,48,-28,49,-28,50,-28,51,-28,52,-28,53,-28,54,-28,55,-28,56,-28,65,-28,68,-28,-1,0},
+    /*95*/{33,-33,34,-33,39,-33,40,-33,41,-33,42,-33,43,-33,44,-33,45,-33,46,-33,47,-33,48,-33,49,-33,50,-33,51,-33,52,-33,53,-33,54,-33,55,-33,56,-33,65,-33,68,-33,-1,0},
+    /*96*/{33,-25,34,-25,39,-25,40,-25,41,-25,42,-25,43,-25,44,-25,45,-25,46,-25,47,-25,48,-25,49,-25,50,-25,51,-25,52,-25,53,-25,54,-25,55,-25,56,-25,65,-25,68,-25,-1,0},
+    /*97*/{33,-30,34,-30,39,-30,40,-30,41,-30,42,-30,43,-30,44,-30,45,-30,46,-30,47,-30,48,-30,49,-30,50,-30,51,-30,52,-30,53,-30,54,-30,55,-30,56,-30,65,-30,68,-30,-1,0},
+    /*98*/{33,-35,34,-35,39,-35,40,-35,41,-35,42,-35,43,-35,44,-35,45,-35,46,-35,47,-35,48,-35,49,-35,50,-35,51,-35,52,-35,53,-35,54,-35,55,-35,56,-35,65,-35,68,-35,-1,0},
+    /*99*/{33,-31,34,-31,39,-31,40,-31,41,-31,42,-31,43,-31,44,-31,45,-31,46,-31,47,-31,48,-31,49,-31,50,-31,51,-31,52,-31,53,-31,54,-31,55,-31,56,-31,65,-31,68,-31,-1,0},
+    /*100*/{33,-26,34,-26,39,-26,40,-26,41,-26,42,-26,43,-26,44,-26,45,-26,46,-26,47,-26,48,-26,49,-26,50,-26,51,-26,52,-26,53,-26,54,-26,55,-26,56,-26,65,-26,68,-26,-1,0},
+    /*101*/{33,-16,34,-16,65,-16,68,-16,-1,0},
+    /*102*/{33,-20,34,-20,39,-20,40,-20,41,-20,42,-20,43,-20,44,-20,45,-20,46,-20,47,-20,48,-20,49,-20,50,-20,51,-20,52,-20,53,-20,54,-20,55,-20,56,-20,65,-20,68,-20,-1,0},
+    /*103*/{33,-19,34,-19,39,-19,40,-19,41,-19,42,-19,43,-19,44,-19,45,-19,46,-19,47,-19,48,-19,49,-19,50,-19,51,-19,52,-19,53,-19,54,-19,55,-19,56,-19,65,-19,68,-19,-1,0},
+    /*104*/{68,106,-1,0},
+    /*105*/{28,109,64,107,65,-102,-1,0},
+    /*106*/{67,52,70,49,71,48,-1,0},
+    /*107*/{65,113,-1,0},
+    /*108*/{67,110,-1,0},
+    /*109*/{64,107,65,-102,-1,0},
+    /*110*/{65,112,-1,0},
+    /*111*/{0,-98,3,-98,5,-98,8,-98,11,-98,15,-98,16,-98,-1,0},
+    /*112*/{0,-99,3,-99,4,-103,5,-99,8,-99,11,-99,15,-99,16,-99,19,-103,20,-103,21,-103,23,-103,-1,0},
+    /*113*/{65,-101,-1,0},
+    /*114*/{0,-5,3,-5,11,-5,15,-5,16,-5,-1,0},
+    /*115*/{0,-133,3,-133,8,-133,11,-133,15,-133,16,-133,-1,0},
+    /*116*/{39,-15,40,-15,41,-15,42,-15,43,-15,44,-15,45,-15,46,-15,47,-15,48,-15,49,-15,50,-15,51,-15,52,-15,53,-15,54,-15,55,-15,56,-15,68,-15,-1,0},
+    /*117*/{1,-140,2,-140,4,123,6,-140,7,-140,9,-140,12,-140,13,-140,19,-140,20,-140,21,-140,23,-140,57,-140,59,-140,61,-140,65,-140,68,-140,69,-140,70,-140,-1,0},
+    /*118*/{0,-130,3,-130,8,117,11,-130,15,-130,16,-130,-1,0},
+    /*119*/{0,-132,3,-132,8,-132,11,-132,15,-132,16,-132,-1,0},
+    /*120*/{1,-140,2,-140,4,123,6,-140,7,-140,9,-140,12,-140,13,-140,19,-140,20,-140,21,-140,23,-140,57,-140,59,-140,61,-140,65,-140,68,-140,69,-140,70,-140,-1,0},
+    /*121*/{1,142,2,138,6,131,7,144,9,143,12,150,13,130,19,133,20,128,21,148,23,134,57,145,59,136,61,132,65,-146,68,129,69,141,70,135,-1,0},
+    /*122*/{27,126,-1,0},
+    /*123*/{1,-139,2,-139,4,-139,6,-139,7,-139,9,-139,12,-139,13,-139,19,-139,20,-139,21,-139,23,-139,57,-139,59,-139,61,-139,65,-139,68,-139,69,-139,70,-139,-1,0},
+    /*124*/{0,-135,3,-135,8,-135,11,-135,15,-135,16,-135,-1,0},
+    /*125*/{65,127,-1,0},
+    /*126*/{0,-137,3,-137,8,-137,11,-137,15,-137,16,-137,-1,0},
+    /*127*/{68,77,-1,0},
+    /*128*/{66,277,-1,0},
+    /*129*/{70,263,-1,0},
+    /*130*/{29,259,68,258,-1,0},
+    /*131*/{68,243,-1,0},
+    /*132*/{67,69,-1,0},
+    /*133*/{35,218,36,215,37,220,38,219,63,214,-1,0},
+    /*134*/{66,212,-1,0},
+    /*135*/{68,199,-1,0},
+    /*136*/{65,-145,-1,0},
+    /*137*/{68,64,-1,0},
+    /*138*/{65,-143,-1,0},
+    /*139*/{65,184,-1,0},
+    /*140*/{65,-174,68,173,72,174,-1,0},
+    /*141*/{65,-144,-1,0},
+    /*142*/{68,171,-1,0},
+    /*143*/{70,169,-1,0},
+    /*144*/{68,156,-1,0},
+    /*145*/{65,-172,-1,0},
+    /*146*/{65,-142,-1,0},
+    /*147*/{65,-53,-1,0},
+    /*148*/{65,-173,-1,0},
+    /*149*/{68,64,-1,0},
+    /*150*/{65,-168,-1,0},
+    /*151*/{65,-152,-1,0},
+    /*152*/{65,-157,-1,0},
+    /*153*/{65,-186,-1,0},
+    /*154*/{70,160,71,162,-1,0},
+    /*155*/{68,157,-1,0},
+    /*156*/{65,158,-1,0},
+    /*157*/{70,-190,71,-190,-1,0},
+    /*158*/{58,167,70,160,71,162,-1,0},
+    /*159*/{65,164,-1,0},
+    /*160*/{58,-192,70,-192,71,-192,-1,0},
+    /*161*/{65,163,-1,0},
+    /*162*/{58,-193,70,-193,71,-193,-1,0},
+    /*163*/{58,-194,70,-194,71,-194,-1,0},
+    /*164*/{65,-189,-1,0},
+    /*165*/{58,-191,70,-191,71,-191,-1,0},
+    /*166*/{65,-195,-1,0},
+    /*167*/{65,-151,-1,0},
+    /*168*/{65,-167,-1,0},
+    /*169*/{65,-154,-1,0},
+    /*170*/{67,52,68,46,70,49,71,48,-1,0},
+    /*171*/{65,-171,-1,0},
+    /*172*/{65,-175,67,176,68,175,70,178,71,179,72,177,-1,0},
+    /*173*/{65,-176,-1,0},
+    /*174*/{65,-179,68,180,70,182,72,181,-1,0},
+    /*175*/{65,-184,-1,0},
+    /*176*/{65,-180,-1,0},
+    /*177*/{65,-178,-1,0},
+    /*178*/{65,-177,-1,0},
+    /*179*/{65,-181,68,183,-1,0},
+    /*180*/{65,-182,-1,0},
+    /*181*/{65,-183,-1,0},
+    /*182*/{65,-185,-1,0},
+    /*183*/{1,-141,2,-141,4,-141,6,-141,7,-141,9,-141,12,-141,13,-141,19,-141,20,-141,21,-141,23,-141,57,-141,59,-141,61,-141,65,-141,68,-141,69,-141,70,-141,-1,0},
+    /*184*/{65,-153,-1,0},
+    /*185*/{26,187,-1,0},
+    /*186*/{68,188,70,189,-1,0},
+    /*187*/{32,194,-1,0},
+    /*188*/{32,190,-1,0},
+    /*189*/{70,191,-1,0},
+    /*190*/{24,192,-1,0},
+    /*191*/{70,193,-1,0},
+    /*192*/{65,-170,-1,0},
+    /*193*/{68,195,-1,0},
+    /*194*/{24,196,-1,0},
+    /*195*/{68,197,-1,0},
+    /*196*/{65,-169,-1,0},
+    /*197*/{68,203,72,206,-1,0},
+    /*198*/{70,201,-1,0},
+    /*199*/{65,-187,-1,0},
+    /*200*/{65,202,-1,0},
+    /*201*/{68,-197,72,-197,-1,0},
+    /*202*/{65,211,-1,0},
+    /*203*/{60,-199,68,-199,72,-199,-1,0},
+    /*204*/{60,210,68,203,72,206,-1,0},
+    /*205*/{65,207,-1,0},
+    /*206*/{60,-201,68,-201,72,-201,-1,0},
+    /*207*/{65,-196,-1,0},
+    /*208*/{60,-198,68,-198,72,-198,-1,0},
+    /*209*/{65,-202,-1,0},
+    /*210*/{60,-200,68,-200,72,-200,-1,0},
+    /*211*/{57,145,59,136,61,132,69,141,-1,0},
+    /*212*/{65,-148,-1,0},
+    /*213*/{65,240,-1,0},
+    /*214*/{68,64,-1,0},
+    /*215*/{4,-69,68,33,-1,0},
+    /*216*/{68,229,-1,0},
+    /*217*/{68,64,-1,0},
+    /*218*/{70,224,-1,0},
+    /*219*/{70,221,-1,0},
+    /*220*/{68,64,-1,0},
+    /*221*/{65,223,-1,0},
+    /*222*/{4,-66,68,-66,-1,0},
+    /*223*/{68,64,-1,0},
+    /*224*/{65,226,-1,0},
+    /*225*/{4,-67,68,-67,-1,0},
+    /*226*/{65,228,-1,0},
+    /*227*/{4,-64,68,-64,-1,0},
+    /*228*/{64,-86,68,235,-1,0},
+    /*229*/{4,38,-1,0},
+    /*230*/{64,232,-1,0},
+    /*231*/{23,50,67,52,68,46,70,49,71,48,-1,0},
+    /*232*/{4,-85,-1,0},
+    /*233*/{65,-159,-1,0},
+    /*234*/{64,-87,-1,0},
+    /*235*/{4,38,-1,0},
+    /*236*/{65,-158,-1,0},
+    /*237*/{65,239,-1,0},
+    /*238*/{4,-65,68,-65,-1,0},
+    /*239*/{68,-75,-1,0},
+    /*240*/{65,-155,-1,0},
+    /*241*/{70,248,-1,0},
+    /*242*/{65,245,-1,0},
+    /*243*/{65,-188,-1,0},
+    /*244*/{70,-204,-1,0},
+    /*245*/{62,-206,70,-206,-1,0},
+    /*246*/{62,256,70,248,-1,0},
+    /*247*/{66,249,-1,0},
+    /*248*/{68,250,72,251,-1,0},
+    /*249*/{65,253,-1,0},
+    /*250*/{65,252,-1,0},
+    /*251*/{62,-208,70,-208,-1,0},
+    /*252*/{62,-207,70,-207,-1,0},
+    /*253*/{65,-203,-1,0},
+    /*254*/{62,-205,70,-205,-1,0},
+    /*255*/{65,-209,-1,0},
+    /*256*/{65,-150,-1,0},
+    /*257*/{70,261,-1,0},
+    /*258*/{70,260,-1,0},
+    /*259*/{65,-165,-1,0},
+    /*260*/{65,-166,-1,0},
+    /*261*/{65,-149,-1,0},
+    /*262*/{25,264,-1,0},
+    /*263*/{68,265,-1,0},
+    /*264*/{68,266,-1,0},
+    /*265*/{26,-164,28,267,65,-164,-1,0},
+    /*266*/{67,276,-1,0},
+    /*267*/{26,269,65,-161,-1,0},
+    /*268*/{68,270,70,271,-1,0},
+    /*269*/{32,274,-1,0},
+    /*270*/{32,272,-1,0},
+    /*271*/{70,273,-1,0},
+    /*272*/{65,-162,-1,0},
+    /*273*/{68,275,-1,0},
+    /*274*/{65,-160,-1,0},
+    /*275*/{26,-163,65,-163,-1,0},
+    /*276*/{65,-147,-1,0},
+    /*277*/{65,-156,-1,0},
+    /*278*/{1,-138,2,-138,4,-138,6,-138,7,-138,9,-138,12,-138,13,-138,19,-138,20,-138,21,-138,23,-138,57,-138,59,-138,61,-138,65,-138,68,-138,69,-138,70,-138,-1,0},
+    /*279*/{0,-134,3,-134,8,-134,11,-134,15,-134,16,-134,-1,0},
+    /*280*/{68,282,-1,0},
+    /*281*/{65,283,-1,0},
+    /*282*/{1,-136,2,-136,4,-136,6,-136,7,-136,9,-136,12,-136,13,-136,19,-136,20,-136,21,-136,23,-136,57,-136,59,-136,61,-136,65,-136,68,-136,69,-136,70,-136,-1,0},
+    /*283*/{33,-15,34,-15,39,-15,40,-15,41,-15,42,-15,43,-15,44,-15,45,-15,46,-15,47,-15,48,-15,49,-15,50,-15,51,-15,52,-15,53,-15,54,-15,55,-15,56,-15,65,-15,68,-15,-1,0},
+    /*284*/{33,-15,34,-15,39,-15,40,-15,41,-15,42,-15,43,-15,44,-15,45,-15,46,-15,47,-15,48,-15,49,-15,50,-15,51,-15,52,-15,53,-15,54,-15,55,-15,56,-15,65,-15,68,-15,-1,0},
+    /*285*/{33,-125,34,-125,65,-125,68,288,-1,0},
+    /*286*/{33,289,34,-127,65,-127,-1,0},
+    /*287*/{33,-124,34,-124,65,-124,-1,0},
+    /*288*/{68,64,-1,0},
+    /*289*/{34,291,65,-129,-1,0},
+    /*290*/{68,64,-1,0},
+    /*291*/{65,293,-1,0},
+    /*292*/{0,-122,3,-122,5,-122,8,-122,11,-122,15,-122,16,-122,22,-122,-1,0},
+    /*293*/{65,-128,-1,0},
+    /*294*/{34,-126,65,-126,-1,0},
+    /*295*/{33,-125,34,-125,65,-125,68,288,-1,0},
+    /*296*/{33,289,34,-127,65,-127,-1,0},
+    /*297*/{34,291,65,-129,-1,0},
+    /*298*/{65,300,-1,0},
+    /*299*/{0,-123,3,-123,5,-123,8,-123,11,-123,15,-123,16,-123,22,-123,-1,0},
+    /*300*/{0,-3,3,-3,11,-3,15,-3,16,-3,-1,0},
+    /*301*/{67,353,68,354,-1,0},
+    /*302*/{3,305,15,304,-1,0},
+    /*303*/{39,-15,40,-15,41,-15,42,-15,43,-15,44,-15,45,-15,46,-15,47,-15,48,-15,49,-15,50,-15,51,-15,52,-15,53,-15,54,-15,55,-15,56,-15,68,-15,-1,0},
+    /*304*/{39,-15,40,-15,41,-15,42,-15,43,-15,44,-15,45,-15,46,-15,47,-15,48,-15,49,-15,50,-15,51,-15,52,-15,53,-15,54,-15,55,-15,56,-15,68,-15,-1,0},
+    /*305*/{0,-40,3,-40,5,-40,8,-40,10,308,11,-40,14,-40,15,-40,16,-40,18,-40,19,-40,20,-40,21,-40,22,-40,23,-40,-1,0},
+    /*306*/{0,-42,3,-42,5,-42,8,-42,11,-42,14,312,15,-42,16,-42,18,-42,19,-42,20,-42,21,-42,22,-42,23,-42,-1,0},
+    /*307*/{68,64,-1,0},
+    /*308*/{65,310,-1,0},
+    /*309*/{0,-39,3,-39,5,-39,8,-39,11,-39,14,-39,15,-39,16,-39,18,-39,19,-39,20,-39,21,-39,22,-39,23,-39,-1,0},
+    /*310*/{0,-44,3,-44,5,-44,8,-44,11,-44,14,-44,15,-44,16,-44,18,-44,19,-44,20,-44,21,-44,22,-44,23,-44,-1,0},
+    /*311*/{68,64,-1,0},
+    /*312*/{0,-47,3,-47,5,-47,8,-47,11,-47,15,-47,16,-47,18,-47,19,317,20,-47,21,-47,22,-47,23,-47,-1,0},
+    /*313*/{0,-41,3,-41,5,-41,8,-41,11,-41,14,312,15,-41,16,-41,18,-41,19,-41,20,-41,21,-41,22,-41,23,-41,-1,0},
+    /*314*/{0,-43,3,-43,5,-43,8,-43,11,-43,14,-43,15,-43,16,-43,18,-43,19,-43,20,-43,21,-43,22,-43,23,-43,-1,0},
+    /*315*/{0,-50,3,-50,5,-50,8,-50,11,-50,15,-50,16,-50,18,320,20,-50,21,-50,22,-50,23,-50,-1,0},
+    /*316*/{67,69,-1,0},
+    /*317*/{65,319,-1,0},
+    /*318*/{0,-46,3,-46,5,-46,8,-46,11,-46,15,-46,16,-46,18,-46,20,-46,21,-46,22,-46,23,-46,-1,0},
+    /*319*/{27,342,-1,0},
+    /*320*/{0,-52,3,-52,5,-52,8,-52,11,-52,15,-52,16,-52,20,-52,21,322,22,-52,23,-52,-1,0},
+    /*321*/{65,-53,-1,0},
+    /*322*/{0,-55,3,-55,5,-55,8,-55,11,-55,15,-55,16,-55,20,-55,22,-55,23,328,-1,0},
+    /*323*/{0,-57,3,-57,5,-57,8,-57,11,-57,15,-57,16,-57,20,-57,22,-57,23,-57,-1,0},
+    /*324*/{0,-54,3,-54,5,-54,8,-54,11,-54,15,-54,16,-54,20,-54,22,-54,23,328,-1,0},
+    /*325*/{4,-69,68,33,-1,0},
+    /*326*/{0,-89,3,-89,5,-89,8,-89,11,-89,15,-89,16,-89,20,331,22,-89,-1,0},
+    /*327*/{35,29,36,28,-1,0},
+    /*328*/{4,-61,68,-61,-1,0},
+    /*329*/{0,-91,3,-91,5,-91,8,-91,11,-91,15,-91,16,-91,20,-91,22,-91,-1,0},
+    /*330*/{68,77,-1,0},
+    /*331*/{0,-6,3,-6,5,-6,8,-6,11,-6,15,-6,16,-6,22,-6,-1,0},
+    /*332*/{0,-88,3,-88,5,-88,8,-88,11,-88,15,-88,16,-88,20,331,22,-88,-1,0},
+    /*333*/{0,-90,3,-90,5,-90,8,-90,11,-90,15,-90,16,-90,20,-90,22,-90,-1,0},
+    /*334*/{65,336,-1,0},
+    /*335*/{0,-92,3,-92,5,-92,8,-92,11,-92,15,-92,16,-92,20,-92,22,-92,-1,0},
+    /*336*/{4,38,-1,0},
+    /*337*/{0,-58,3,-58,5,-58,8,-58,11,-58,15,-58,16,-58,20,-58,22,-58,23,-58,-1,0},
+    /*338*/{0,-56,3,-56,5,-56,8,-56,11,-56,15,-56,16,-56,20,-56,22,-56,23,-56,-1,0},
+    /*339*/{65,341,-1,0},
+    /*340*/{0,-51,3,-51,5,-51,8,-51,11,-51,15,-51,16,-51,20,-51,22,-51,23,-51,-1,0},
+    /*341*/{68,343,-1,0},
+    /*342*/{65,344,-1,0},
+    /*343*/{0,-49,3,-49,5,-49,8,-49,11,-49,15,-49,16,-49,20,-49,21,-49,22,-49,23,-49,-1,0},
+    /*344*/{65,346,-1,0},
+    /*345*/{0,-45,3,-45,5,-45,8,-45,11,-45,14,-45,15,-45,16,-45,18,-45,19,-45,20,-45,21,-45,22,-45,23,-45,-1,0},
+    /*346*/{68,64,-1,0},
+    /*347*/{65,349,-1,0},
+    /*348*/{0,-12,3,-12,5,-12,8,-12,10,-12,11,-12,14,-12,15,-12,16,-12,18,-12,19,-12,20,-12,21,-12,22,-12,23,-12,-1,0},
+    /*349*/{68,64,-1,0},
+    /*350*/{65,352,-1,0},
+    /*351*/{0,-13,3,-13,5,-13,8,-13,10,-13,11,-13,14,-13,15,-13,16,-13,18,-13,19,-13,20,-13,21,-13,22,-13,23,-13,-1,0},
+    /*352*/{65,356,-1,0},
+    /*353*/{65,355,-1,0},
+    /*354*/{3,-10,15,-10,-1,0},
+    /*355*/{3,-9,15,-9,-1,0},
+    /*356*/{65,358,-1,0},
+    /*357*/{3,-7,11,-7,15,-7,-1,0},
+    /*358*/{0,-2,-1,0},
+  };
+
+  /** access to parse action table */
+  public short[][] action_table() {return _action_table;}
+
+  /** reduce_goto table */
+  protected static final short[][] _reduce_table = {
+    /*0*/{25,2,26,5,27,1,43,4,47,6,-1,-1},
+    /*1*/{-1,-1},
+    /*2*/{-1,-1},
+    /*3*/{-1,-1},
+    /*4*/{35,302,-1,-1},
+    /*5*/{27,300,43,4,47,6,-1,-1},
+    /*6*/{59,9,60,10,61,8,-1,-1},
+    /*7*/{-1,-1},
+    /*8*/{-1,-1},
+    /*9*/{18,15,19,13,20,12,-1,-1},
+    /*10*/{61,11,-1,-1},
+    /*11*/{-1,-1},
+    /*12*/{15,117,30,118,31,115,32,114,-1,-1},
+    /*13*/{-1,-1},
+    /*14*/{54,19,98,17,99,18,-1,-1},
+    /*15*/{19,16,-1,-1},
+    /*16*/{-1,-1},
+    /*17*/{-1,-1},
+    /*18*/{9,102,10,82,11,101,-1,-1},
+    /*19*/{56,24,57,22,58,23,-1,-1},
+    /*20*/{49,80,-1,-1},
+    /*21*/{53,77,-1,-1},
+    /*22*/{58,75,-1,-1},
+    /*23*/{-1,-1},
+    /*24*/{55,72,-1,-1},
+    /*25*/{46,69,-1,-1},
+    /*26*/{82,29,-1,-1},
+    /*27*/{1,66,-1,-1},
+    /*28*/{1,64,-1,-1},
+    /*29*/{84,34,85,30,86,33,92,31,-1,-1},
+    /*30*/{86,62,92,31,-1,-1},
+    /*31*/{-1,-1},
+    /*32*/{-1,-1},
+    /*33*/{-1,-1},
+    /*34*/{80,36,94,35,-1,-1},
+    /*35*/{-1,-1},
+    /*36*/{-1,-1},
+    /*37*/{-1,-1},
+    /*38*/{-1,-1},
+    /*39*/{-1,-1},
+    /*40*/{-1,-1},
+    /*41*/{-1,-1},
+    /*42*/{7,53,8,54,89,43,90,52,95,46,96,50,97,44,-1,-1},
+    /*43*/{7,53,8,54,90,61,-1,-1},
+    /*44*/{-1,-1},
+    /*45*/{-1,-1},
+    /*46*/{-1,-1},
+    /*47*/{-1,-1},
+    /*48*/{-1,-1},
+    /*49*/{93,57,-1,-1},
+    /*50*/{95,55,-1,-1},
+    /*51*/{-1,-1},
+    /*52*/{-1,-1},
+    /*53*/{-1,-1},
+    /*54*/{-1,-1},
+    /*55*/{-1,-1},
+    /*56*/{-1,-1},
+    /*57*/{84,58,85,30,86,33,92,31,-1,-1},
+    /*58*/{80,36,94,59,-1,-1},
+    /*59*/{-1,-1},
+    /*60*/{-1,-1},
+    /*61*/{-1,-1},
+    /*62*/{-1,-1},
+    /*63*/{-1,-1},
+    /*64*/{-1,-1},
+    /*65*/{-1,-1},
+    /*66*/{-1,-1},
+    /*67*/{-1,-1},
+    /*68*/{-1,-1},
+    /*69*/{-1,-1},
+    /*70*/{-1,-1},
+    /*71*/{-1,-1},
+    /*72*/{-1,-1},
+    /*73*/{-1,-1},
+    /*74*/{-1,-1},
+    /*75*/{-1,-1},
+    /*76*/{-1,-1},
+    /*77*/{-1,-1},
+    /*78*/{-1,-1},
+    /*79*/{-1,-1},
+    /*80*/{-1,-1},
+    /*81*/{-1,-1},
+    /*82*/{9,103,-1,-1},
+    /*83*/{-1,-1},
+    /*84*/{-1,-1},
+    /*85*/{-1,-1},
+    /*86*/{-1,-1},
+    /*87*/{-1,-1},
+    /*88*/{-1,-1},
+    /*89*/{-1,-1},
+    /*90*/{-1,-1},
+    /*91*/{-1,-1},
+    /*92*/{-1,-1},
+    /*93*/{-1,-1},
+    /*94*/{-1,-1},
+    /*95*/{-1,-1},
+    /*96*/{-1,-1},
+    /*97*/{-1,-1},
+    /*98*/{-1,-1},
+    /*99*/{-1,-1},
+    /*100*/{-1,-1},
+    /*101*/{-1,-1},
+    /*102*/{-1,-1},
+    /*103*/{-1,-1},
+    /*104*/{-1,-1},
+    /*105*/{6,107,-1,-1},
+    /*106*/{7,113,-1,-1},
+    /*107*/{-1,-1},
+    /*108*/{-1,-1},
+    /*109*/{6,110,-1,-1},
+    /*110*/{-1,-1},
+    /*111*/{-1,-1},
+    /*112*/{-1,-1},
+    /*113*/{-1,-1},
+    /*114*/{-1,-1},
+    /*115*/{-1,-1},
+    /*116*/{98,280,99,18,-1,-1},
+    /*117*/{17,124,36,123,37,120,100,121,-1,-1},
+    /*118*/{15,117,31,119,-1,-1},
+    /*119*/{-1,-1},
+    /*120*/{17,279,36,278,100,121,-1,-1},
+    /*121*/{14,148,16,138,21,146,28,136,34,145,38,139,-1,-1},
+    /*122*/{-1,-1},
+    /*123*/{-1,-1},
+    /*124*/{-1,-1},
+    /*125*/{-1,-1},
+    /*126*/{-1,-1},
+    /*127*/{53,277,-1,-1},
+    /*128*/{-1,-1},
+    /*129*/{42,261,-1,-1},
+    /*130*/{29,256,-1,-1},
+    /*131*/{72,243,73,241,-1,-1},
+    /*132*/{46,240,-1,-1},
+    /*133*/{83,215,87,216,-1,-1},
+    /*134*/{-1,-1},
+    /*135*/{67,199,68,197,-1,-1},
+    /*136*/{-1,-1},
+    /*137*/{1,185,12,184,-1,-1},
+    /*138*/{-1,-1},
+    /*139*/{-1,-1},
+    /*140*/{-1,-1},
+    /*141*/{-1,-1},
+    /*142*/{33,169,-1,-1},
+    /*143*/{40,167,-1,-1},
+    /*144*/{62,153,63,154,-1,-1},
+    /*145*/{-1,-1},
+    /*146*/{-1,-1},
+    /*147*/{49,152,-1,-1},
+    /*148*/{-1,-1},
+    /*149*/{1,150,41,151,-1,-1},
+    /*150*/{-1,-1},
+    /*151*/{-1,-1},
+    /*152*/{-1,-1},
+    /*153*/{-1,-1},
+    /*154*/{64,158,65,160,-1,-1},
+    /*155*/{-1,-1},
+    /*156*/{-1,-1},
+    /*157*/{-1,-1},
+    /*158*/{65,165,66,164,-1,-1},
+    /*159*/{-1,-1},
+    /*160*/{-1,-1},
+    /*161*/{-1,-1},
+    /*162*/{-1,-1},
+    /*163*/{-1,-1},
+    /*164*/{-1,-1},
+    /*165*/{-1,-1},
+    /*166*/{-1,-1},
+    /*167*/{-1,-1},
+    /*168*/{-1,-1},
+    /*169*/{-1,-1},
+    /*170*/{7,53,8,171,-1,-1},
+    /*171*/{-1,-1},
+    /*172*/{-1,-1},
+    /*173*/{-1,-1},
+    /*174*/{-1,-1},
+    /*175*/{-1,-1},
+    /*176*/{-1,-1},
+    /*177*/{-1,-1},
+    /*178*/{-1,-1},
+    /*179*/{-1,-1},
+    /*180*/{-1,-1},
+    /*181*/{-1,-1},
+    /*182*/{-1,-1},
+    /*183*/{-1,-1},
+    /*184*/{-1,-1},
+    /*185*/{-1,-1},
+    /*186*/{-1,-1},
+    /*187*/{-1,-1},
+    /*188*/{-1,-1},
+    /*189*/{-1,-1},
+    /*190*/{-1,-1},
+    /*191*/{-1,-1},
+    /*192*/{-1,-1},
+    /*193*/{-1,-1},
+    /*194*/{-1,-1},
+    /*195*/{-1,-1},
+    /*196*/{-1,-1},
+    /*197*/{69,204,70,203,-1,-1},
+    /*198*/{-1,-1},
+    /*199*/{-1,-1},
+    /*200*/{-1,-1},
+    /*201*/{-1,-1},
+    /*202*/{-1,-1},
+    /*203*/{-1,-1},
+    /*204*/{70,208,71,207,-1,-1},
+    /*205*/{-1,-1},
+    /*206*/{-1,-1},
+    /*207*/{-1,-1},
+    /*208*/{-1,-1},
+    /*209*/{-1,-1},
+    /*210*/{-1,-1},
+    /*211*/{14,148,21,212,34,145,-1,-1},
+    /*212*/{-1,-1},
+    /*213*/{-1,-1},
+    /*214*/{1,237,-1,-1},
+    /*215*/{84,235,85,30,86,33,92,31,-1,-1},
+    /*216*/{88,229,91,230,-1,-1},
+    /*217*/{1,226,-1,-1},
+    /*218*/{-1,-1},
+    /*219*/{-1,-1},
+    /*220*/{1,221,-1,-1},
+    /*221*/{-1,-1},
+    /*222*/{-1,-1},
+    /*223*/{1,224,-1,-1},
+    /*224*/{-1,-1},
+    /*225*/{-1,-1},
+    /*226*/{-1,-1},
+    /*227*/{-1,-1},
+    /*228*/{-1,-1},
+    /*229*/{80,233,-1,-1},
+    /*230*/{-1,-1},
+    /*231*/{7,53,8,54,89,43,90,52,95,46,96,50,97,232,-1,-1},
+    /*232*/{-1,-1},
+    /*233*/{-1,-1},
+    /*234*/{-1,-1},
+    /*235*/{80,236,-1,-1},
+    /*236*/{-1,-1},
+    /*237*/{-1,-1},
+    /*238*/{-1,-1},
+    /*239*/{-1,-1},
+    /*240*/{-1,-1},
+    /*241*/{74,246,75,245,-1,-1},
+    /*242*/{-1,-1},
+    /*243*/{-1,-1},
+    /*244*/{-1,-1},
+    /*245*/{-1,-1},
+    /*246*/{75,254,76,253,-1,-1},
+    /*247*/{-1,-1},
+    /*248*/{-1,-1},
+    /*249*/{-1,-1},
+    /*250*/{-1,-1},
+    /*251*/{-1,-1},
+    /*252*/{-1,-1},
+    /*253*/{-1,-1},
+    /*254*/{-1,-1},
+    /*255*/{-1,-1},
+    /*256*/{-1,-1},
+    /*257*/{-1,-1},
+    /*258*/{-1,-1},
+    /*259*/{-1,-1},
+    /*260*/{-1,-1},
+    /*261*/{-1,-1},
+    /*262*/{-1,-1},
+    /*263*/{-1,-1},
+    /*264*/{-1,-1},
+    /*265*/{5,267,-1,-1},
+    /*266*/{-1,-1},
+    /*267*/{-1,-1},
+    /*268*/{-1,-1},
+    /*269*/{-1,-1},
+    /*270*/{-1,-1},
+    /*271*/{-1,-1},
+    /*272*/{-1,-1},
+    /*273*/{-1,-1},
+    /*274*/{-1,-1},
+    /*275*/{-1,-1},
+    /*276*/{-1,-1},
+    /*277*/{-1,-1},
+    /*278*/{-1,-1},
+    /*279*/{-1,-1},
+    /*280*/{-1,-1},
+    /*281*/{-1,-1},
+    /*282*/{-1,-1},
+    /*283*/{98,295,99,18,-1,-1},
+    /*284*/{98,285,99,18,-1,-1},
+    /*285*/{2,286,-1,-1},
+    /*286*/{3,289,-1,-1},
+    /*287*/{-1,-1},
+    /*288*/{1,294,-1,-1},
+    /*289*/{4,291,-1,-1},
+    /*290*/{1,293,-1,-1},
+    /*291*/{-1,-1},
+    /*292*/{-1,-1},
+    /*293*/{-1,-1},
+    /*294*/{-1,-1},
+    /*295*/{2,296,-1,-1},
+    /*296*/{3,297,-1,-1},
+    /*297*/{4,298,-1,-1},
+    /*298*/{-1,-1},
+    /*299*/{-1,-1},
+    /*300*/{-1,-1},
+    /*301*/{-1,-1},
+    /*302*/{13,305,-1,-1},
+    /*303*/{98,349,99,18,-1,-1},
+    /*304*/{98,346,99,18,-1,-1},
+    /*305*/{39,306,-1,-1},
+    /*306*/{22,312,23,313,24,310,-1,-1},
+    /*307*/{1,308,-1,-1},
+    /*308*/{-1,-1},
+    /*309*/{-1,-1},
+    /*310*/{-1,-1},
+    /*311*/{1,344,-1,-1},
+    /*312*/{45,315,-1,-1},
+    /*313*/{24,314,-1,-1},
+    /*314*/{-1,-1},
+    /*315*/{44,320,-1,-1},
+    /*316*/{46,317,-1,-1},
+    /*317*/{-1,-1},
+    /*318*/{-1,-1},
+    /*319*/{-1,-1},
+    /*320*/{48,322,-1,-1},
+    /*321*/{49,339,-1,-1},
+    /*322*/{77,326,78,324,79,323,81,325,-1,-1},
+    /*323*/{-1,-1},
+    /*324*/{79,338,81,325,-1,-1},
+    /*325*/{84,336,85,30,86,33,92,31,-1,-1},
+    /*326*/{50,331,51,332,52,329,-1,-1},
+    /*327*/{82,328,-1,-1},
+    /*328*/{-1,-1},
+    /*329*/{-1,-1},
+    /*330*/{53,334,-1,-1},
+    /*331*/{-1,-1},
+    /*332*/{52,333,-1,-1},
+    /*333*/{-1,-1},
+    /*334*/{-1,-1},
+    /*335*/{-1,-1},
+    /*336*/{80,36,94,337,-1,-1},
+    /*337*/{-1,-1},
+    /*338*/{-1,-1},
+    /*339*/{-1,-1},
+    /*340*/{-1,-1},
+    /*341*/{-1,-1},
+    /*342*/{-1,-1},
+    /*343*/{-1,-1},
+    /*344*/{-1,-1},
+    /*345*/{-1,-1},
+    /*346*/{1,347,-1,-1},
+    /*347*/{-1,-1},
+    /*348*/{-1,-1},
+    /*349*/{1,350,-1,-1},
+    /*350*/{-1,-1},
+    /*351*/{-1,-1},
+    /*352*/{-1,-1},
+    /*353*/{-1,-1},
+    /*354*/{-1,-1},
+    /*355*/{-1,-1},
+    /*356*/{-1,-1},
+    /*357*/{-1,-1},
+    /*358*/{-1,-1},
+  };
+
+  /** access to reduce_goto table */
+  public short[][] reduce_table() {return _reduce_table;}
+
+  /** instance of action encapsulation class */
+  protected CUP$actions action_obj;
+
+  /** action encapsulation object initializer */
+  protected void init_actions()
+    {
+      action_obj = new CUP$actions();
+    }
+
+  /** invoke a user supplied parse action */
+  public java_cup.runtime.symbol do_action(
+    int                        act_num,
+    java_cup.runtime.lr_parser parser,
+    java.util.Stack            stack,
+    int                        top)
+    throws java.lang.Exception
+  {
+    /* call code in generated class */
+    return action_obj.CUP$do_action(act_num, parser, stack, top);
+  }
+
+  /** start state */
+  public int start_state() {return 0;}
+  /** start production */
+  public int start_production() {return 1;}
+
+  /** EOF symbol index */
+  public int EOF_sym() {return 0;}
+
+  /** error symbol index */
+  public int error_sym() {return 1;}
+
+
+  /** user initialization */
+  public void user_init() throws java.lang.Exception
+    {
+
+    action_obj.scanner = scanner;
+    action_obj.dAsm = dAsm;
+
+    }
+
+  /** scan to get the next token */
+  public java_cup.runtime.token scan()
+    throws java.lang.Exception
+    {
+
+    return scanner.next_token();
+
+    }
+
+
+
+    public boolean isInterface;
+    public Scanner scanner;
+    public DAsm dAsm;
+
+    public void report_error(String message, Object info) {
+            if(info != null)
+                dAsm.report_error("Warning: " + message + "(" + info.toString() + ")");
+            else
+                dAsm.report_error("Warning: " + message);
+    }
+
+    public void report_fatal_error(String message, Object info)  {
+            if(info != null)
+                dAsm.report_error("Error: " + message + "(" + info.toString() + ")");
+            else
+                dAsm.report_error("Error: " + message); 
+    }
+
+    parser(DAsm dAsm, Scanner scanner) {
+        super();
+
+        this.scanner = scanner;
+        this.dAsm = dAsm;
+    }
+
+};
+
+/** JavaCup generated class to encapsulate user supplied action code.*/
+class CUP$actions {
+
+
+    int access_val;
+    public DAsm dAsm;
+    public Scanner scanner;
+    public boolean isInterface;
+
+
+  /** Constructor */
+  CUP$actions() { }
+
+  /** Method with the actual generated action code. */
+  public final java_cup.runtime.symbol CUP$do_action(
+    int                        CUP$act_num,
+    java_cup.runtime.lr_parser CUP$parser,
+    java.util.Stack            CUP$stack,
+    int                        CUP$top)
+    throws java.lang.Exception
+    {
+      /* object for return from actions */
+      java_cup.runtime.symbol CUP$result;
+
+      /* select the action based on the action number */
+      switch (CUP$act_num)
+        {
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 208: // ss_table_end ::= SPARSE_SWITCH_END 
+            {
+              CUP$result = new symbol(/*ss_table_end*/76);
+               dAsm.endSwitch(); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 207: // ss_table_entry ::= Int COLON Relative SEP 
+            {
+              CUP$result = new symbol(/*ss_table_entry*/75);
+               dAsm.addSparseSwitchData((/*i*/(int_token)CUP$stack.elementAt(CUP$top-3)).int_val, (/*off*/(relative_number_token)CUP$stack.elementAt(CUP$top-1)).int_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 206: // ss_table_entry ::= Int COLON Word SEP 
+            {
+              CUP$result = new symbol(/*ss_table_entry*/75);
+               dAsm.addSparseSwitchData((/*i*/(int_token)CUP$stack.elementAt(CUP$top-3)).int_val, (/*w*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 205: // ss_table_list ::= ss_table_entry 
+            {
+              CUP$result = new symbol(/*ss_table_list*/74);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 204: // ss_table_list ::= ss_table_list ss_table_entry 
+            {
+              CUP$result = new symbol(/*ss_table_list*/74);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 203: // ss_table_args ::= Word SEP 
+            {
+              CUP$result = new symbol(/*ss_table_args*/73);
+               dAsm.newSparseSwitch((/*r*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 202: // ss_table ::= ss_table_args ss_table_list ss_table_end 
+            {
+              CUP$result = new symbol(/*ss_table*/72);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 201: // ps_table_end ::= PACKED_SWITCH_END 
+            {
+              CUP$result = new symbol(/*ps_table_end*/71);
+               dAsm.endSwitch(); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 200: // ps_table_entry ::= Relative SEP 
+            {
+              CUP$result = new symbol(/*ps_table_entry*/70);
+               dAsm.addPackedSwitchData((/*target*/(relative_number_token)CUP$stack.elementAt(CUP$top-1)).int_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 199: // ps_table_entry ::= Word SEP 
+            {
+              CUP$result = new symbol(/*ps_table_entry*/70);
+               dAsm.addPackedSwitchData((/*target*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 198: // ps_table_list ::= ps_table_entry 
+            {
+              CUP$result = new symbol(/*ps_table_list*/69);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 197: // ps_table_list ::= ps_table_list ps_table_entry 
+            {
+              CUP$result = new symbol(/*ps_table_list*/69);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 196: // ps_table_args ::= Word Int SEP 
+            {
+              CUP$result = new symbol(/*ps_table_args*/68);
+               dAsm.newPackedSwitch((/*r*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*k*/(int_token)CUP$stack.elementAt(CUP$top-1)).int_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 195: // ps_table ::= ps_table_args ps_table_list ps_table_end 
+            {
+              CUP$result = new symbol(/*ps_table*/67);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 194: // fa_data_end ::= FILL_ARRAY_DATA_END 
+            {
+              CUP$result = new symbol(/*fa_data_end*/66);
+               dAsm.endFillArrayData(); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 193: // fa_data_entry ::= Int SEP 
+            {
+              CUP$result = new symbol(/*fa_data_entry*/65);
+               dAsm.addFillArrayData(new Integer((/*data*/(int_token)CUP$stack.elementAt(CUP$top-1)).int_val)); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 192: // fa_data_entry ::= Num SEP 
+            {
+              CUP$result = new symbol(/*fa_data_entry*/65);
+               dAsm.addFillArrayData((/*data*/(number_token)CUP$stack.elementAt(CUP$top-1)).number_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 191: // fa_data_list ::= fa_data_entry 
+            {
+              CUP$result = new symbol(/*fa_data_list*/64);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 190: // fa_data_list ::= fa_data_list fa_data_entry 
+            {
+              CUP$result = new symbol(/*fa_data_list*/64);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 189: // fa_data_args ::= Word Word SEP 
+            {
+              CUP$result = new symbol(/*fa_data_args*/63);
+               dAsm.newFillArrayData((/*r*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*t*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 188: // fa_data ::= fa_data_args fa_data_list fa_data_end 
+            {
+              CUP$result = new symbol(/*fa_data*/62);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 187: // complex_instruction ::= SPARSE_SWITCH ss_table 
+            {
+              CUP$result = new symbol(/*complex_instruction*/14);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 186: // complex_instruction ::= PACKED_SWITCH ps_table 
+            {
+              CUP$result = new symbol(/*complex_instruction*/14);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 185: // complex_instruction ::= FILL_ARRAY_DATA fa_data 
+            {
+              CUP$result = new symbol(/*complex_instruction*/14);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 184: // simple_instruction ::= Insn Word Word Word Word 
+            {
+              CUP$result = new symbol(/*simple_instruction*/34);
+               dAsm.addOpcode((/*i*/(str_token)CUP$stack.elementAt(CUP$top-4)).str_val, (/*n1*/(str_token)CUP$stack.elementAt(CUP$top-3)).str_val, (/*n2*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*n3*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, (/*n4*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 183: // simple_instruction ::= Insn Word Str 
+            {
+              CUP$result = new symbol(/*simple_instruction*/34);
+               dAsm.addOpcode((/*i*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*n1*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, (/*n2*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 182: // simple_instruction ::= Insn Word Word Int 
+            {
+              CUP$result = new symbol(/*simple_instruction*/34);
+               dAsm.addOpcode((/*i*/(str_token)CUP$stack.elementAt(CUP$top-3)).str_val, (/*n1*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*n2*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, (/*n3*/(int_token)CUP$stack.elementAt(CUP$top-0)).int_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 181: // simple_instruction ::= Insn Word Word Relative 
+            {
+              CUP$result = new symbol(/*simple_instruction*/34);
+               dAsm.addRelativeGoto((/*i*/(str_token)CUP$stack.elementAt(CUP$top-3)).str_val, (/*n1*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*n2*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, (/*n3*/(relative_number_token)CUP$stack.elementAt(CUP$top-0)).int_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 180: // simple_instruction ::= Insn Word Word Word 
+            {
+              CUP$result = new symbol(/*simple_instruction*/34);
+               dAsm.addOpcode((/*i*/(str_token)CUP$stack.elementAt(CUP$top-3)).str_val, (/*n1*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*n2*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, (/*n3*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 179: // simple_instruction ::= Insn Word Relative 
+            {
+              CUP$result = new symbol(/*simple_instruction*/34);
+               dAsm.addRelativeGoto((/*i*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*n1*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, (/*n2*/(relative_number_token)CUP$stack.elementAt(CUP$top-0)).int_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 178: // simple_instruction ::= Insn Word Word 
+            {
+              CUP$result = new symbol(/*simple_instruction*/34);
+               dAsm.addOpcode((/*i*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*n1*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, (/*n2*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 177: // simple_instruction ::= Insn Word Int 
+            {
+              CUP$result = new symbol(/*simple_instruction*/34);
+               dAsm.addOpcode((/*i*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*n1*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, new Integer((/*n2*/(int_token)CUP$stack.elementAt(CUP$top-0)).int_val)); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 176: // simple_instruction ::= Insn Word Num 
+            {
+              CUP$result = new symbol(/*simple_instruction*/34);
+               dAsm.addOpcode((/*i*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*n1*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, (/*n2*/(number_token)CUP$stack.elementAt(CUP$top-0)).number_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 175: // simple_instruction ::= Insn Relative 
+            {
+              CUP$result = new symbol(/*simple_instruction*/34);
+               dAsm.addRelativeGoto((/*i*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, (/*n*/(relative_number_token)CUP$stack.elementAt(CUP$top-0)).int_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 174: // simple_instruction ::= Insn Word 
+            {
+              CUP$result = new symbol(/*simple_instruction*/34);
+               dAsm.addOpcode((/*i*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, (/*n*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 173: // simple_instruction ::= Insn 
+            {
+              CUP$result = new symbol(/*simple_instruction*/34);
+               dAsm.addOpcode((/*i*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 172: // instruction ::= complex_instruction 
+            {
+              CUP$result = new symbol(/*instruction*/21);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 171: // instruction ::= simple_instruction 
+            {
+              CUP$result = new symbol(/*instruction*/21);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 170: // set_expr ::= Word any_item 
+            {
+              CUP$result = new symbol(/*set_expr*/33);
+               scanner.dict.put((/*name*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, (/*v*/(variant_token)CUP$stack.elementAt(CUP$top-0))); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 169: // catch_expr ::= classname FROM Int TO Int USING Int 
+            {
+              CUP$result = new symbol(/*catch_expr*/12);
+               dAsm.addCatch((/*aclass*/(str_token)CUP$stack.elementAt(CUP$top-6)).str_val,
+                              (/*fromoff*/(int_token)CUP$stack.elementAt(CUP$top-4)).int_val,
+                              (/*tooff*/(int_token)CUP$stack.elementAt(CUP$top-2)).int_val,
+                              (/*branchoff*/(int_token)CUP$stack.elementAt(CUP$top-0)).int_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 168: // catch_expr ::= classname FROM Word TO Word USING Word 
+            {
+              CUP$result = new symbol(/*catch_expr*/12);
+               dAsm.addCatch((/*aclass*/(str_token)CUP$stack.elementAt(CUP$top-6)).str_val,
+                              (/*fromlab*/(str_token)CUP$stack.elementAt(CUP$top-4)).str_val,
+                              (/*tolab*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val,
+                              (/*branchlab*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 167: // throws_expr ::= classname 
+            {
+              CUP$result = new symbol(/*throws_expr*/41);
+               dAsm.addThrow((/*s*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 166: // line_expr ::= Int 
+            {
+              CUP$result = new symbol(/*line_expr*/40);
+               dAsm.addLine((/*v*/(int_token)CUP$stack.elementAt(CUP$top-0)).int_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 165: // limit_expr ::= Word Int 
+            {
+              CUP$result = new symbol(/*limit_expr*/29);
+               dAsm.report_error(".limit expected \"regs\" , but got "
+                                + (/*w*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 164: // limit_expr ::= REGS Int 
+            {
+              CUP$result = new symbol(/*limit_expr*/29);
+               dAsm.setRegsSize((/*v*/(int_token)CUP$stack.elementAt(CUP$top-0)).int_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 163: // optional_signature ::= 
+            {
+              CUP$result = new str_token(/*optional_signature*/5);
+               ((str_token)CUP$result).str_val = null; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 162: // optional_signature ::= SIGNATURE Str 
+            {
+              CUP$result = new str_token(/*optional_signature*/5);
+               ((str_token)CUP$result).str_val = (/*s*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 161: // var_expr ::= Int IS Word Word optional_signature FROM Int TO Int 
+            {
+              CUP$result = new symbol(/*var_expr*/42);
+               dAsm.addVar((/*soff*/(int_token)CUP$stack.elementAt(CUP$top-2)).int_val, (/*eoff*/(int_token)CUP$stack.elementAt(CUP$top-0)).int_val, (/*name*/(str_token)CUP$stack.elementAt(CUP$top-6)).str_val,
+                            (/*desc*/(str_token)CUP$stack.elementAt(CUP$top-5)).str_val, (/*sign*/(str_token)CUP$stack.elementAt(CUP$top-4)).str_val, (/*reg*/(int_token)CUP$stack.elementAt(CUP$top-8)).int_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 160: // var_expr ::= Int IS Word Word optional_signature 
+            {
+              CUP$result = new symbol(/*var_expr*/42);
+               dAsm.addVar(null, null, (/*name*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*desc*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val,
+                            (/*sign*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val,  (/*reg*/(int_token)CUP$stack.elementAt(CUP$top-4)).int_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 159: // var_expr ::= Int IS Word Word optional_signature FROM Word TO Word 
+            {
+              CUP$result = new symbol(/*var_expr*/42);
+               dAsm.addVar((/*slab*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*elab*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val, (/*name*/(str_token)CUP$stack.elementAt(CUP$top-6)).str_val,
+                            (/*desc*/(str_token)CUP$stack.elementAt(CUP$top-5)).str_val, (/*sign*/(str_token)CUP$stack.elementAt(CUP$top-4)).str_val, (/*reg*/(int_token)CUP$stack.elementAt(CUP$top-8)).int_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 158: // directive ::= DANNOTATION ann_def_spec ann_def_val endannotation 
+            {
+              CUP$result = new symbol(/*directive*/16);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 157: // directive ::= DANNOTATION ann_met_expr ann_arglist endannotation 
+            {
+              CUP$result = new symbol(/*directive*/16);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 156: // directive ::= DDEPRECATED deprecated_expr 
+            {
+              CUP$result = new symbol(/*directive*/16);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 155: // directive ::= DATTRIBUTE generic_expr 
+            {
+              CUP$result = new symbol(/*directive*/16);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 154: // directive ::= DSIGNATURE signature_expr 
+            {
+              CUP$result = new symbol(/*directive*/16);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 153: // directive ::= DSET set_expr 
+            {
+              CUP$result = new symbol(/*directive*/16);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 152: // directive ::= DCATCH catch_expr 
+            {
+              CUP$result = new symbol(/*directive*/16);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 151: // directive ::= DTHROWS throws_expr 
+            {
+              CUP$result = new symbol(/*directive*/16);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 150: // directive ::= DLINE line_expr 
+            {
+              CUP$result = new symbol(/*directive*/16);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 149: // directive ::= DLIMIT limit_expr 
+            {
+              CUP$result = new symbol(/*directive*/16);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 148: // directive ::= DVAR var_expr 
+            {
+              CUP$result = new symbol(/*directive*/16);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 147: // label ::= Int COLON instruction 
+            {
+              CUP$result = new symbol(/*label*/28);
+               dAsm.plantLabel(String.valueOf((/*label*/(int_token)CUP$stack.elementAt(CUP$top-2)).int_val)); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 146: // label ::= Word COLON 
+            {
+              CUP$result = new symbol(/*label*/28);
+               dAsm.plantLabel((/*label*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 145: // stmnt ::= 
+            {
+              CUP$result = new symbol(/*stmnt*/38);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 144: // stmnt ::= label 
+            {
+              CUP$result = new symbol(/*stmnt*/38);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 143: // stmnt ::= error 
+            {
+              CUP$result = new symbol(/*stmnt*/38);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 142: // stmnt ::= directive 
+            {
+              CUP$result = new symbol(/*stmnt*/38);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 141: // stmnt ::= instruction 
+            {
+              CUP$result = new symbol(/*stmnt*/38);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 140: // statement ::= NT$1 stmnt SEP 
+            {
+              CUP$result = new symbol(/*statement*/36);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 139: // NT$1 ::= 
+            {
+              CUP$result = new java_cup.runtime.token(/*NT$1*/100);
+               dAsm.setLine(scanner.token_line_num); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 138: // statements ::= statement 
+            {
+              CUP$result = new symbol(/*statements*/37);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 137: // statements ::= statements statement 
+            {
+              CUP$result = new symbol(/*statements*/37);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 136: // endmethod ::= DEND METHOD SEP 
+            {
+              CUP$result = new symbol(/*endmethod*/17);
+               dAsm.endMethod(); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 135: // defmethod ::= DMETHOD access Word SEP 
+            {
+              CUP$result = new symbol(/*defmethod*/15);
+               String split[] = Utils.getMethodSignatureFromString((/*name*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val);
+           dAsm.newMethod(split[0], split[1], (/*i*/(int_token)CUP$stack.elementAt(CUP$top-2)).int_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 134: // method_spec ::= defmethod endmethod 
+            {
+              CUP$result = new symbol(/*method_spec*/31);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 133: // method_spec ::= defmethod statements endmethod 
+            {
+              CUP$result = new symbol(/*method_spec*/31);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 132: // method_list ::= method_spec 
+            {
+              CUP$result = new symbol(/*method_list*/30);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 131: // method_list ::= method_list method_spec 
+            {
+              CUP$result = new symbol(/*method_list*/30);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 130: // methods ::= 
+            {
+              CUP$result = new symbol(/*methods*/32);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 129: // methods ::= method_list 
+            {
+              CUP$result = new symbol(/*methods*/32);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 128: // inner_outer ::= 
+            {
+              CUP$result = new str_token(/*inner_outer*/4);
+               ((str_token)CUP$result).str_val = null; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 127: // inner_outer ::= OUTER classname 
+            {
+              CUP$result = new str_token(/*inner_outer*/4);
+               ((str_token)CUP$result).str_val = (/*w*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 126: // inner_inner ::= 
+            {
+              CUP$result = new str_token(/*inner_inner*/3);
+               ((str_token)CUP$result).str_val = null; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 125: // inner_inner ::= INNER classname 
+            {
+              CUP$result = new str_token(/*inner_inner*/3);
+               ((str_token)CUP$result).str_val = (/*w*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 124: // inner_name ::= 
+            {
+              CUP$result = new str_token(/*inner_name*/2);
+               ((str_token)CUP$result).str_val = null; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 123: // inner_name ::= Word 
+            {
+              CUP$result = new str_token(/*inner_name*/2);
+               ((str_token)CUP$result).str_val = (/*w*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 122: // inner_spec ::= DINNER INTERFACE access inner_name inner_inner inner_outer SEP 
+            {
+              CUP$result = new symbol(/*inner_spec*/61);
+               dAsm.addInner((short)((/*a*/(int_token)CUP$stack.elementAt(CUP$top-4)).int_val |
+                              com.android.dx.rop.code.AccessFlags.ACC_INTERFACE),
+                                (/*n*/(str_token)CUP$stack.elementAt(CUP$top-3)).str_val, (/*i*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*o*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 121: // inner_spec ::= DINNER CLASS access inner_name inner_inner inner_outer SEP 
+            {
+              CUP$result = new symbol(/*inner_spec*/61);
+               dAsm.addInner((short)(/*a*/(int_token)CUP$stack.elementAt(CUP$top-4)).int_val,
+                              (/*n*/(str_token)CUP$stack.elementAt(CUP$top-3)).str_val, (/*i*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*o*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 120: // inner_list ::= inner_spec 
+            {
+              CUP$result = new symbol(/*inner_list*/60);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 119: // inner_list ::= inner_list inner_spec 
+            {
+              CUP$result = new symbol(/*inner_list*/60);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 118: // inners ::= 
+            {
+              CUP$result = new symbol(/*inners*/59);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 117: // inners ::= inner_list 
+            {
+              CUP$result = new symbol(/*inners*/59);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 116: // any_item ::= item 
+            {
+              CUP$result = new variant_token(/*any_item*/8);
+               ((variant_token)CUP$result).variant_val = (/*v*/(variant_token)CUP$stack.elementAt(CUP$top-0)).variant_val; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 115: // any_item ::= Word 
+            {
+              CUP$result = new variant_token(/*any_item*/8);
+               ((variant_token)CUP$result).variant_val = (/*w*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 114: // item ::= Str 
+            {
+              CUP$result = new variant_token(/*item*/7);
+               ((variant_token)CUP$result).variant_val = (/*s*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 113: // item ::= Num 
+            {
+              CUP$result = new variant_token(/*item*/7);
+               ((variant_token)CUP$result).variant_val = (/*n*/(number_token)CUP$stack.elementAt(CUP$top-0)).number_val; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 112: // item ::= Int 
+            {
+              CUP$result = new variant_token(/*item*/7);
+               ((variant_token)CUP$result).variant_val = new Integer((/*i*/(int_token)CUP$stack.elementAt(CUP$top-0)).int_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 111: // field_ext_expr ::= DANNOTATION ann_clf_expr ann_arglist endannotationsep 
+            {
+              CUP$result = new symbol(/*field_ext_expr*/58);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 110: // field_ext_expr ::= DDEPRECATED deprecated_expr SEP 
+            {
+              CUP$result = new symbol(/*field_ext_expr*/58);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 109: // field_ext_expr ::= DATTRIBUTE generic_expr SEP 
+            {
+              CUP$result = new symbol(/*field_ext_expr*/58);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 108: // field_ext_expr ::= DSIGNATURE signature_expr SEP 
+            {
+              CUP$result = new symbol(/*field_ext_expr*/58);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 107: // field_ext_list ::= field_ext_expr 
+            {
+              CUP$result = new symbol(/*field_ext_list*/57);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 106: // field_ext_list ::= field_ext_list field_ext_expr 
+            {
+              CUP$result = new symbol(/*field_ext_list*/57);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 105: // field_exts ::= 
+            {
+              CUP$result = new symbol(/*field_exts*/56);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 104: // field_exts ::= field_ext_list 
+            {
+              CUP$result = new symbol(/*field_exts*/56);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 103: // endfield ::= DEND FIELD SEP 
+            {
+              CUP$result = new symbol(/*endfield*/55);
+               dAsm.endField(); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 102: // field_start ::= access Word Word optional_default SEP 
+            {
+              CUP$result = new symbol(/*field_start*/54);
+               dAsm.beginField((short)(/*a*/(int_token)CUP$stack.elementAt(CUP$top-4)).int_val, (/*name*/(str_token)CUP$stack.elementAt(CUP$top-3)).str_val,
+                              (/*desc*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*v*/(variant_token)CUP$stack.elementAt(CUP$top-1)).variant_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 101: // optional_default ::= 
+            {
+              CUP$result = new variant_token(/*optional_default*/6);
+               ((variant_token)CUP$result).variant_val = null; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 100: // optional_default ::= EQ item 
+            {
+              CUP$result = new variant_token(/*optional_default*/6);
+               ((variant_token)CUP$result).variant_val = (/*v*/(variant_token)CUP$stack.elementAt(CUP$top-0)).variant_val; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 99: // field_spec ::= DFIELD field_start field_exts endfield 
+            {
+              CUP$result = new symbol(/*field_spec*/19);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 98: // field_spec ::= DFIELD access Word Word optional_default SEP 
+            {
+              CUP$result = new symbol(/*field_spec*/19);
+               dAsm.addField((short)(/*a*/(int_token)CUP$stack.elementAt(CUP$top-4)).int_val, (/*name*/(str_token)CUP$stack.elementAt(CUP$top-3)).str_val, (/*desc*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val,
+                               null, (/*v*/(variant_token)CUP$stack.elementAt(CUP$top-1)).variant_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 97: // field_spec ::= DFIELD access Word Word SIGNATURE Str optional_default SEP 
+            {
+              CUP$result = new symbol(/*field_spec*/19);
+               dAsm.addField((short)(/*a*/(int_token)CUP$stack.elementAt(CUP$top-6)).int_val, (/*name*/(str_token)CUP$stack.elementAt(CUP$top-5)).str_val, (/*desc*/(str_token)CUP$stack.elementAt(CUP$top-4)).str_val,
+                              (/*sig*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*v*/(variant_token)CUP$stack.elementAt(CUP$top-1)).variant_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 96: // field_list ::= field_spec 
+            {
+              CUP$result = new symbol(/*field_list*/18);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 95: // field_list ::= field_list field_spec 
+            {
+              CUP$result = new symbol(/*field_list*/18);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 94: // fields ::= 
+            {
+              CUP$result = new symbol(/*fields*/20);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 93: // fields ::= field_list 
+            {
+              CUP$result = new symbol(/*fields*/20);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 92: // generic_expr ::= Word Str 
+            {
+              CUP$result = new symbol(/*generic_expr*/53);
+               dAsm.addGenericAttr((/*name*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, (/*file*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 91: // generic_spec ::= DATTRIBUTE generic_expr SEP 
+            {
+              CUP$result = new symbol(/*generic_spec*/52);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 90: // generic_list ::= generic_spec 
+            {
+              CUP$result = new symbol(/*generic_list*/51);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 89: // generic_list ::= generic_list generic_spec 
+            {
+              CUP$result = new symbol(/*generic_list*/51);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 88: // generic_attributes ::= 
+            {
+              CUP$result = new symbol(/*generic_attributes*/50);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 87: // generic_attributes ::= generic_list 
+            {
+              CUP$result = new symbol(/*generic_attributes*/50);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 86: // ann_def_expr ::= Word Word 
+            {
+              CUP$result = new symbol(/*ann_def_expr*/91);
+               //TODO: NOT SUPPORTED dAsm.addAnnotationField(null, (/*dsc*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, (/*sub*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 85: // ann_def_expr ::= Word 
+            {
+              CUP$result = new symbol(/*ann_def_expr*/91);
+               //TODO: NOT SUPPORTED dAsm.addAnnotationField(null, (/*dsc*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val, null);
+            dAsm.report_error("WARNING: Annotations are not supported"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 84: // ann_def_val ::= ann_def_expr EQ ann_value_list 
+            {
+              CUP$result = new symbol(/*ann_def_val*/88);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 83: // ann_nest ::= SEP 
+            {
+              CUP$result = new symbol(/*ann_nest*/93);
+               //TODO: NOT SUPPORTED dAsm.nestAnnotation();
+            dAsm.report_error("WARNING: Annotations are not supported"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 82: // ann_ann_value ::= DANNOTATION ann_nest ann_arglist endannotationsep 
+            {
+              CUP$result = new symbol(/*ann_ann_value*/95);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 81: // ann_ann_list ::= ann_ann_value 
+            {
+              CUP$result = new symbol(/*ann_ann_list*/96);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 80: // ann_ann_list ::= ann_ann_list ann_ann_value 
+            {
+              CUP$result = new symbol(/*ann_ann_list*/96);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 79: // ann_value ::= any_item 
+            {
+              CUP$result = new symbol(/*ann_value*/90);
+               //TODO: NOT SUPPORTED dAsm.addAnnotationValue((/*v*/(variant_token)CUP$stack.elementAt(CUP$top-0)).variant_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 78: // ann_value_items ::= ann_value 
+            {
+              CUP$result = new symbol(/*ann_value_items*/89);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 77: // ann_value_items ::= ann_value_items ann_value 
+            {
+              CUP$result = new symbol(/*ann_value_items*/89);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 76: // ann_value_list ::= ann_ann_list 
+            {
+              CUP$result = new symbol(/*ann_value_list*/97);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 75: // ann_value_list ::= ann_value_items SEP 
+            {
+              CUP$result = new symbol(/*ann_value_list*/97);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 74: // ann_def_spec ::= DEFAULT SEP 
+            {
+              CUP$result = new symbol(/*ann_def_spec*/87);
+               //TODO: NOT SUPPORTED dAsm.addAnnotation();
+            dAsm.report_error("WARNING: Annotations are not supported"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 73: // ann_arg_expr ::= Word Word Word 
+            {
+              CUP$result = new symbol(/*ann_arg_expr*/92);
+               //TODO: NOT SUPPORTED dAsm.addAnnotationField((/*n*/(str_token)CUP$stack.elementAt(CUP$top-2)).str_val, (/*dsc*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, (/*sub*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 72: // ann_arg_expr ::= Word Word 
+            {
+              CUP$result = new symbol(/*ann_arg_expr*/92);
+               //TODO: NOT SUPPORTED dAsm.addAnnotationField((/*n*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, (/*dsc*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val, null);
+            dAsm.report_error("WARNING: Annotations are not supported"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 71: // ann_arg_spec ::= ann_arg_expr EQ ann_value_list 
+            {
+              CUP$result = new symbol(/*ann_arg_spec*/86);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 70: // ann_arg_list ::= ann_arg_spec 
+            {
+              CUP$result = new symbol(/*ann_arg_list*/85);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 69: // ann_arg_list ::= ann_arg_list ann_arg_spec 
+            {
+              CUP$result = new symbol(/*ann_arg_list*/85);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 68: // ann_arglist ::= 
+            {
+              CUP$result = new symbol(/*ann_arglist*/84);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 67: // ann_arglist ::= ann_arg_list 
+            {
+              CUP$result = new symbol(/*ann_arglist*/84);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 66: // ann_met_expr ::= INVISIBLEPARAM Int classname SEP 
+            {
+              CUP$result = new symbol(/*ann_met_expr*/83);
+               //TODO: NOT SUPPORTED dAsm.addAnnotation(false, (/*name*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, (/*n*/(int_token)CUP$stack.elementAt(CUP$top-2)).int_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 65: // ann_met_expr ::= VISIBLEPARAM Int classname SEP 
+            {
+              CUP$result = new symbol(/*ann_met_expr*/83);
+               //TODO: NOT SUPPORTED dAsm.addAnnotation(true, (/*name*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val, (/*n*/(int_token)CUP$stack.elementAt(CUP$top-2)).int_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 64: // ann_met_expr ::= INVISIBLE classname SEP 
+            {
+              CUP$result = new symbol(/*ann_met_expr*/83);
+               //TODO: NOT SUPPORTED dAsm.addAnnotation(false, (/*name*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 63: // ann_met_expr ::= VISIBLE classname SEP 
+            {
+              CUP$result = new symbol(/*ann_met_expr*/83);
+               //TODO: NOT SUPPORTED dAsm.addAnnotation(true, (/*name*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 62: // ann_clf_expr ::= INVISIBLE classname SEP 
+            {
+              CUP$result = new symbol(/*ann_clf_expr*/82);
+               //TODO: NOT SUPPORTED dAsm.addAnnotation(false, (/*name*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 61: // ann_clf_expr ::= VISIBLE classname SEP 
+            {
+              CUP$result = new symbol(/*ann_clf_expr*/82);
+               //TODO: NOT SUPPORTED dAsm.addAnnotation(true, (/*name*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val);
+            dAsm.report_error("WARNING: Annotations are not supported"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 60: // ann_cls_expr ::= DANNOTATION ann_clf_expr 
+            {
+              CUP$result = new symbol(/*ann_cls_expr*/81);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 59: // endannotation ::= DEND ANNOTATION 
+            {
+              CUP$result = new symbol(/*endannotation*/80);
+               //TODO: NOT SUPPORTED dAsm.endAnnotation(); 
+            dAsm.report_error("WARNING: Annotations are not supported"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 58: // endannotationsep ::= endannotation SEP 
+            {
+              CUP$result = new symbol(/*endannotationsep*/94);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 57: // ann_cls_spec ::= ann_cls_expr ann_arglist endannotationsep 
+            {
+              CUP$result = new symbol(/*ann_cls_spec*/79);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 56: // ann_cls_list ::= ann_cls_spec 
+            {
+              CUP$result = new symbol(/*ann_cls_list*/78);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 55: // ann_cls_list ::= ann_cls_list ann_cls_spec 
+            {
+              CUP$result = new symbol(/*ann_cls_list*/78);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 54: // annotations ::= 
+            {
+              CUP$result = new symbol(/*annotations*/77);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 53: // annotations ::= ann_cls_list 
+            {
+              CUP$result = new symbol(/*annotations*/77);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 52: // deprecated_expr ::= 
+            {
+              CUP$result = new symbol(/*deprecated_expr*/49);
+               /*dAsm.setDeprecated();*/dAsm.report_error("WARNING: @deprecated is not supported"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 51: // deprecated_spec ::= 
+            {
+              CUP$result = new symbol(/*deprecated_spec*/48);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 50: // deprecated_spec ::= DDEPRECATED deprecated_expr SEP 
+            {
+              CUP$result = new symbol(/*deprecated_spec*/48);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 49: // enclosing_spec ::= 
+            {
+              CUP$result = new symbol(/*enclosing_spec*/44);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 48: // enclosing_spec ::= DENCLOSING METHOD Word SEP 
+            {
+              CUP$result = new symbol(/*enclosing_spec*/44);
+               dAsm.setEnclosingMethod((/*w*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 47: // signature_expr ::= Str 
+            {
+              CUP$result = new symbol(/*signature_expr*/46);
+               dAsm.setSignature((/*sig*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 46: // signature_spec ::= 
+            {
+              CUP$result = new symbol(/*signature_spec*/45);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 45: // signature_spec ::= DSIGNATURE signature_expr SEP 
+            {
+              CUP$result = new symbol(/*signature_spec*/45);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 44: // implements_spec ::= DIMPLEMENTS classname SEP 
+            {
+              CUP$result = new symbol(/*implements_spec*/24);
+               dAsm.addInterface((/*name*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 43: // implements_list ::= implements_spec 
+            {
+              CUP$result = new symbol(/*implements_list*/23);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 42: // implements_list ::= implements_list implements_spec 
+            {
+              CUP$result = new symbol(/*implements_list*/23);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 41: // implements ::= 
+            {
+              CUP$result = new symbol(/*implements*/22);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 40: // implements ::= implements_list 
+            {
+              CUP$result = new symbol(/*implements*/22);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 39: // super_spec ::= 
+            {
+              CUP$result = new symbol(/*super_spec*/39);
+               if(isInterface == false) 
+               dAsm.setSuperClass("java/lang/Object"); 
+           else 
+           // Dalvik requires interfaces to have superclass
+               dAsm.setSuperClass("java/lang/Object"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 38: // super_spec ::= DSUPER classname SEP 
+            {
+              CUP$result = new symbol(/*super_spec*/39);
+               dAsm.setSuperClass((/*name*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 37: // access_item ::= DECLARED_SYNCHRONIZED 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_DECLARED_SYNCHRONIZED; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 36: // access_item ::= SYNTHETIC 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_SYNTHETIC; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 35: // access_item ::= STRICT 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_STRICT; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 34: // access_item ::= VARARGS 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_VARARGS; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 33: // access_item ::= BRIDGE 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_BRIDGE; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 32: // access_item ::= ENUM 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_ENUM; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 31: // access_item ::= ANNOTATION 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_ANNOTATION; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 30: // access_item ::= ABSTRACT 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_ABSTRACT; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 29: // access_item ::= INTERFACE 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_INTERFACE; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 28: // access_item ::= NATIVE 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_NATIVE; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 27: // access_item ::= TRANSIENT 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_TRANSIENT; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 26: // access_item ::= VOLATILE 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_VOLATILE; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 25: // access_item ::= SYNCHRONIZED 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_SYNCHRONIZED; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 24: // access_item ::= FINAL 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_FINAL; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 23: // access_item ::= STATIC 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_STATIC; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 22: // access_item ::= PROTECTED 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_PROTECTED; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 21: // access_item ::= PRIVATE 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_PRIVATE; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 20: // access_item ::= PUBLIC 
+            {
+              CUP$result = new symbol(/*access_item*/9);
+               access_val |= com.android.dx.rop.code.AccessFlags.ACC_PUBLIC; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 19: // access_items ::= access_item 
+            {
+              CUP$result = new symbol(/*access_items*/10);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 18: // access_items ::= access_items access_item 
+            {
+              CUP$result = new symbol(/*access_items*/10);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 17: // access_list ::= 
+            {
+              CUP$result = new symbol(/*access_list*/11);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 16: // access_list ::= access_items 
+            {
+              CUP$result = new symbol(/*access_list*/11);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 15: // access ::= NT$0 access_list 
+            {
+              CUP$result = new int_token(/*access*/98);
+               ((int_token)CUP$result).int_val = access_val; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 14: // NT$0 ::= 
+            {
+              CUP$result = new java_cup.runtime.token(/*NT$0*/99);
+               access_val = 0; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 13: // classname ::= Word 
+            {
+              CUP$result = new str_token(/*classname*/1);
+               ((str_token)CUP$result).str_val = Utils.convertDotsToSlashes((/*w*/(str_token)CUP$stack.elementAt(CUP$top-0)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 12: // class_spec ::= DINTERFACE access classname SEP 
+            {
+              CUP$result = new symbol(/*class_spec*/13);
+               isInterface = true;
+           dAsm.setClass((/*name*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val,
+                ((/*a*/(int_token)CUP$stack.elementAt(CUP$top-2)).int_val |
+                        com.android.dx.rop.code.AccessFlags.ACC_INTERFACE)); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 11: // class_spec ::= DCLASS access classname SEP 
+            {
+              CUP$result = new symbol(/*class_spec*/13);
+               isInterface = false;
+           dAsm.setClass((/*name*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val,
+                ((/*a*/(int_token)CUP$stack.elementAt(CUP$top-2)).int_val)); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 10: // source_spec ::= 
+            {
+              CUP$result = new symbol(/*source_spec*/35);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 9: // source_spec ::= DSOURCE Word SEP 
+            {
+              CUP$result = new symbol(/*source_spec*/35);
+               dAsm.setSource((/*w*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 8: // source_spec ::= DSOURCE Str SEP 
+            {
+              CUP$result = new symbol(/*source_spec*/35);
+               dAsm.setSource((/*s*/(str_token)CUP$stack.elementAt(CUP$top-1)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 7: // dex_version_spec ::= 
+            {
+              CUP$result = new symbol(/*dex_version_spec*/43);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 6: // dex_version_spec ::= DBYTECODE Num SEP 
+            {
+              CUP$result = new symbol(/*dex_version_spec*/43);
+               dAsm.setVersion((/*n*/(number_token)CUP$stack.elementAt(CUP$top-1)).number_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 5: // dasm_header ::= dex_version_spec source_spec class_spec super_spec implements signature_spec enclosing_spec deprecated_spec annotations generic_attributes 
+            {
+              CUP$result = new symbol(/*dasm_header*/47);
+               dAsm.endHeader(); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 4: // dasm_file_class ::= dasm_header inners fields methods 
+            {
+              CUP$result = new symbol(/*dasm_file_class*/27);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 3: // dasm_file_classes ::= dasm_file_class 
+            {
+              CUP$result = new symbol(/*dasm_file_classes*/26);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 2: // dasm_file_classes ::= dasm_file_classes dasm_file_class 
+            {
+              CUP$result = new symbol(/*dasm_file_classes*/26);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 1: // $START ::= dasm_file EOF 
+            {
+              CUP$result = new java_cup.runtime.token(/*$START*/0);
+              
+            }
+          /* ACCEPT */
+          CUP$parser.done_parsing();
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 0: // dasm_file ::= dasm_file_classes 
+            {
+              CUP$result = new symbol(/*dasm_file*/25);
+              
+            }
+          return CUP$result;
+
+          /* . . . . . .*/
+          default:
+            throw new Exception(
+               "Invalid action number found in internal parse table");
+
+        }
+    }
+};
+
diff --git a/tools/dasm/src/dasm/sym.java b/tools/dasm/src/dasm/sym.java
new file mode 100644
index 0000000..6f923ef
--- /dev/null
+++ b/tools/dasm/src/dasm/sym.java
@@ -0,0 +1,86 @@
+
+//----------------------------------------------------
+// The following code was generated by Java(tm) CUP v0.9d
+// Thu Dec 11 17:10:00 CET 2008
+//----------------------------------------------------
+
+package dasm;
+
+/** JavaCup generated class containing symbol constants. */
+public class sym {
+  /* terminals */
+  static final int REGS = 29;
+  static final int FROM = 26;
+  static final int DSIGNATURE = 19;
+  static final int SYNTHETIC = 56;
+  static final int OUTER = 34;
+  static final int DCLASS = 3;
+  static final int DVAR = 13;
+  static final int DECLARED_SYNCHRONIZED = 48;
+  static final int DSUPER = 10;
+  static final int SIGNATURE = 28;
+  static final int ENUM = 52;
+  static final int FILL_ARRAY_DATA = 57;
+  static final int INVISIBLE = 36;
+  static final int SPARSE_SWITCH = 61;
+  static final int INNER = 33;
+  static final int Insn = 69;
+  static final int Int = 70;
+  static final int TRANSIENT = 49;
+  static final int PROTECTED = 44;
+  static final int FINAL = 40;
+  static final int DSOURCE = 11;
+  static final int EQ = 64;
+  static final int CLASS = 31;
+  static final int DDEBUG = 17;
+  static final int ABSTRACT = 39;
+  static final int DINTERFACE = 15;
+  static final int PACKED_SWITCH = 59;
+  static final int NATIVE = 42;
+  static final int DTHROWS = 12;
+  static final int INTERFACE = 41;
+  static final int VARARGS = 54;
+  static final int DDEPRECATED = 21;
+  static final int DSET = 9;
+  static final int DFIELD = 5;
+  static final int VISIBLE = 35;
+  static final int DLIMIT = 6;
+  static final int PUBLIC = 45;
+  static final int DEND = 4;
+  static final int DENCLOSING = 18;
+  static final int DMETHOD = 8;
+  static final int FILL_ARRAY_DATA_END = 58;
+  static final int STRICT = 55;
+  static final int DANNOTATION = 23;
+  static final int EOF = 0;
+  static final int DEFAULT = 63;
+  static final int VISIBLEPARAM = 37;
+  static final int DATTRIBUTE = 20;
+  static final int IS = 25;
+  static final int METHOD = 27;
+  static final int SPARSE_SWITCH_END = 62;
+  static final int DBYTECODE = 16;
+  static final int error = 1;
+  static final int SYNCHRONIZED = 47;
+  static final int Word = 68;
+  static final int SEP = 65;
+  static final int ANNOTATION = 51;
+  static final int BRIDGE = 53;
+  static final int COLON = 66;
+  static final int USING = 24;
+  static final int DLINE = 7;
+  static final int FIELD = 30;
+  static final int DCATCH = 2;
+  static final int VOLATILE = 50;
+  static final int DINNER = 22;
+  static final int PACKED_SWITCH_END = 60;
+  static final int Relative = 72;
+  static final int INVISIBLEPARAM = 38;
+  static final int DIMPLEMENTS = 14;
+  static final int PRIVATE = 43;
+  static final int TO = 32;
+  static final int STATIC = 46;
+  static final int Str = 67;
+  static final int Num = 71;
+};
+
diff --git a/tools/dasm/src/dasm/tokens/number_token.java b/tools/dasm/src/dasm/tokens/number_token.java
new file mode 100644
index 0000000..8d0dbcf
--- /dev/null
+++ b/tools/dasm/src/dasm/tokens/number_token.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dasm.tokens;
+
+/**
+ * Holds Number value
+ */
+public class number_token extends java_cup.runtime.token {
+    public Number number_val;
+
+    public number_token(int term_num, Number val) {
+        super(term_num);
+        number_val = val;
+    }
+
+    public number_token(int term_num) {
+        this(term_num, new Integer(0));
+    }
+};
diff --git a/tools/dasm/src/dasm/tokens/relative_number_token.java b/tools/dasm/src/dasm/tokens/relative_number_token.java
new file mode 100644
index 0000000..506ec35
--- /dev/null
+++ b/tools/dasm/src/dasm/tokens/relative_number_token.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dasm.tokens;
+
+/**
+ * Holds numbers beginning with "+" or "-"
+ */
+public class relative_number_token extends java_cup.runtime.int_token {
+
+    public relative_number_token(int term_num, int v) {
+        super(term_num, v);
+    }
+}
diff --git a/tools/dasm/src/dasm/tokens/variant_token.java b/tools/dasm/src/dasm/tokens/variant_token.java
new file mode 100644
index 0000000..f5af9a3
--- /dev/null
+++ b/tools/dasm/src/dasm/tokens/variant_token.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dasm.tokens;
+
+/**
+ * Holds different values as reference to Object
+ */
+public class variant_token extends java_cup.runtime.token {
+    public Object variant_val;
+
+
+    public variant_token(int term_num, Number v) {
+        super(term_num);
+        variant_val = v;
+    }
+
+    public variant_token(int term_num, String v) {
+        super(term_num);
+        variant_val = v;
+    }
+
+    public variant_token(int term_num) {
+        this(term_num, new Integer(0));
+    }
+
+};
diff --git a/tools/dasm/src/java_cup/Main.java b/tools/dasm/src/java_cup/Main.java
new file mode 100644
index 0000000..c816da1
--- /dev/null
+++ b/tools/dasm/src/java_cup/Main.java
@@ -0,0 +1,856 @@
+
+package java_cup;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+import java.util.Enumeration;
+
+/** This class serves as the main driver for the JavaCup system.
+ *  It accepts user options and coordinates overall control flow.
+ *  The main flow of control includes the following activities:
+ *  <ul>
+ *    <li> Parse user supplied arguments and options.
+ *    <li> Open output files.
+ *    <li> Parse the specification from standard input.
+ *    <li> Check for unused terminals, non-terminals, and productions.
+ *    <li> Build the state machine, tables, etc.
+ *    <li> Output the generated code.
+ *    <li> Close output files.
+ *    <li> Print a summary if requested.
+ *  </ul>
+ *
+ *  Options to the main program include: <dl>
+ *   <dt> -package name
+ *   <dd> specify package generated classes go in [default none]
+ *   <dt> -parser name
+ *   <dd> specify parser class name [default "parser"]
+ *   <dt> -symbols name
+ *   <dd> specify name for symbol constant class [default "sym"]
+ *   <dt> -nonterms
+ *   <dd> put non terminals in symbol constant class
+ *   <dt> -expect #
+ *   <dd> number of conflicts expected/allowed [default 0]
+ *   <dt> -compact_red
+ *   <dd> compact tables by defaulting to most frequent reduce
+ *   <dt> -nowarn
+ *   <dd> don't warn about useless productions, etc.
+ *   <dt> -nosummary
+ *   <dd> don't print the usual summary of parse states, etc.
+ *   <dt> -progress
+ *   <dd> print messages to indicate progress of the system
+ *   <dt> -time
+ *   <dd> print time usage summary
+ *   <dt> -dump_grammar
+ *   <dd> produce a dump of the symbols and grammar
+ *   <dt> -dump_states
+ *   <dd> produce a dump of parse state machine
+ *   <dt> -dump_tables
+ *   <dd> produce a dump of the parse tables
+ *   <dt> -dump
+ *   <dd> produce a dump of all of the above
+ *   <dt> -debug
+ *   <dd> turn on debugging messages within JavaCup
+ *   </dl>
+ *
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+
+public class Main {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+  /** Only constructor is private, so we do not allocate any instances of this
+      class. */
+  private Main() { }
+
+  /*-------------------------*/
+  /* Options set by the user */
+  /*-------------------------*/
+  /** User option -- do we print progress messages. */
+  protected static boolean print_progress   = false;
+  /** User option -- do we produce a dump of the state machine */
+  protected static boolean opt_dump_states  = false;
+  /** User option -- do we produce a dump of the parse tables */
+  protected static boolean opt_dump_tables  = false;
+  /** User option -- do we produce a dump of the grammar */
+  protected static boolean opt_dump_grammar = false;
+  /** User option -- do we show timing information as a part of the summary */
+  protected static boolean opt_show_timing  = false;
+  /** User option -- do we run produce extra debugging messages */
+  protected static boolean opt_do_debug     = false;
+  /** User option -- do we compact tables by making most common reduce the
+      default action */
+  protected static boolean opt_compact_red  = false;
+  /** User option -- should we include non terminal symbol numbers in the
+      symbol constant class. */
+  protected static boolean include_non_terms = false;
+  /** User option -- do not print a summary. */
+  protected static boolean no_summary = false;
+  /** User option -- number of conflicts to expect */
+  protected static int expect_conflicts = 0;
+
+  /*----------------------------------------------------------------------*/
+  /* Timing data (not all of these time intervals are mutually exclusive) */
+  /*----------------------------------------------------------------------*/
+  /** Timing data -- when did we start */
+  protected static long start_time       = 0;
+  /** Timing data -- when did we end preliminaries */
+  protected static long prelim_end       = 0;
+  /** Timing data -- when did we end parsing */
+  protected static long parse_end        = 0;
+  /** Timing data -- when did we end checking */
+  protected static long check_end        = 0;
+  /** Timing data -- when did we end dumping */
+  protected static long dump_end         = 0;
+  /** Timing data -- when did we end state and table building */
+  protected static long build_end        = 0;
+  /** Timing data -- when did we end nullability calculation */
+  protected static long nullability_end  = 0;
+  /** Timing data -- when did we end first set calculation */
+  protected static long first_end        = 0;
+  /** Timing data -- when did we end state machine construction */
+  protected static long machine_end      = 0;
+  /** Timing data -- when did we end table construction */
+  protected static long table_end        = 0;
+  /** Timing data -- when did we end checking for non-reduced productions */
+  protected static long reduce_check_end = 0;
+  /** Timing data -- when did we finish emitting code */
+  protected static long emit_end         = 0;
+  /** Timing data -- when were we completely done */
+  protected static long final_time       = 0;
+
+  /* Additional timing information is also collected in emit */
+
+  /** Path to create output files */
+  private static String out_path = null;
+
+  /*-----------------------------------------------------------*/
+  /*--- Main Program ------------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** The main driver for the system.
+   * @param argv an array of strings containing command line arguments.
+   */
+  public static void main(String argv[])
+    throws internal_error, java.io.IOException, java.lang.Exception
+    {
+      boolean did_output = false;
+
+      start_time = System.currentTimeMillis();
+
+      /* process user options and arguments */
+      parse_args(argv);
+
+      /* open output files */
+      if (print_progress) System.err.println("Opening files...");
+      open_files();
+
+      prelim_end = System.currentTimeMillis();
+
+      /* parse spec into internal data structures */
+      if (print_progress)
+    System.err.println("Parsing specification from standard input...");
+      parse_grammar_spec();
+
+      parse_end = System.currentTimeMillis();
+
+      /* don't proceed unless we are error free */
+      if (lexer.error_count == 0)
+    {
+      /* check for unused bits */
+          if (print_progress) System.err.println("Checking specification...");
+          check_unused();
+
+          check_end = System.currentTimeMillis();
+
+      /* build the state machine and parse tables */
+          if (print_progress) System.err.println("Building parse tables...");
+          build_parser();
+
+          build_end = System.currentTimeMillis();
+
+      /* output the generated code */
+          if (print_progress) System.err.println("Writing parser...");
+          emit_parser();
+      did_output = true;
+
+          emit_end = System.currentTimeMillis();
+    }
+      else
+    {
+      /* fix up the times to make the summary easier */
+      emit_end = parse_end;
+    }
+
+      /* do requested dumps */
+      if (opt_dump_grammar) dump_grammar();
+      if (opt_dump_states)  dump_machine();
+      if (opt_dump_tables)  dump_tables();
+
+      dump_end = System.currentTimeMillis();
+
+      /* close output files */
+      if (print_progress) System.err.println("Closing files...");
+      close_files();
+
+      /* produce a summary if desired */
+      if (!no_summary) emit_summary(did_output);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Print a "usage message" that described possible command line options,
+   *  then exit.
+   * @param message a specific error message to preface the usage message by.
+   */
+  protected static void usage(String message)
+    {
+      System.err.println();
+      System.err.println(message);
+      System.err.println();
+      System.err.println(
+"Usage: " + version.program_name + " [options]\n" +
+"  and expects a specification file on standard input.\n" +
+"  Legal options include:\n" +
+"    -out path      specify the output files path [default current directory]\n" +
+"    -package name  specify package generated classes go in [default none]\n" +
+"    -parser name   specify parser class name [default \"parser\"]\n" +
+"    -symbols name  specify name for symbol constant class [default \"sym\"]\n"+
+"    -nonterms      put non terminals in symbol constant class\n" +
+"    -expect #      number of conflicts expected/allowed [default 0]\n" +
+"    -compact_red   compact tables by defaulting to most frequent reduce\n" +
+"    -nowarn        don't warn about useless productions, etc.\n" +
+"    -nosummary     don't print the usual summary of parse states, etc.\n" +
+"    -progress      print messages to indicate progress of the system\n" +
+"    -time          print time usage summary\n" +
+"    -dump_grammar  produce a human readable dump of the symbols and grammar\n"+
+"    -dump_states   produce a dump of parse state machine\n"+
+"    -dump_tables   produce a dump of the parse tables\n"+
+"    -dump          produce a dump of all of the above\n"
+      );
+      System.exit(1);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Parse command line options and arguments to set various user-option
+   *  flags and variables.
+   * @param argv the command line arguments to be parsed.
+   */
+  protected static void parse_args(String argv[])
+    {
+      int len = argv.length;
+      int i;
+
+      /* parse the options */
+      for (i=0; i<len; i++)
+    {
+      /* try to get the various options */
+      if (argv[i].equals("-package"))
+        {
+          /* must have an arg */
+          if (++i >= len || argv[i].startsWith("-") ||
+                argv[i].endsWith(".cup"))
+        usage("-package must have a name argument");
+
+          /* record the name */
+          emit.package_name = argv[i];
+        }
+      else if (argv[i].equals("-parser"))
+        {
+          /* must have an arg */
+          if (++i >= len || argv[i].startsWith("-") ||
+                argv[i].endsWith(".cup"))
+        usage("-parser must have a name argument");
+
+          /* record the name */
+          emit.parser_class_name = argv[i];
+        }
+      else if (argv[i].equals("-input")) {
+          /* must have an arg */
+          if (++i >= len || argv[i].startsWith("-") ||
+              argv[i].endsWith(".cup"))
+              usage("-input must have a name argument");
+
+          /* record the name */
+          emit.input_file_name = argv[i];
+      }
+      else if (argv[i].equals("-symbols"))
+        {
+          /* must have an arg */
+          if (++i >= len || argv[i].startsWith("-") ||
+                argv[i].endsWith(".cup"))
+        usage("-symbols must have a name argument");
+
+          /* record the name */
+          emit.symbol_const_class_name = argv[i];
+        }
+      else if (argv[i].equals("-nonterms"))
+        {
+          include_non_terms = true;
+        }
+      else if (argv[i].equals("-expect"))
+        {
+          /* must have an arg */
+          if (++i >= len || argv[i].startsWith("-") ||
+                argv[i].endsWith(".cup"))
+        usage("-expect must have a name argument");
+
+          /* record the number */
+          try {
+            expect_conflicts = Integer.parseInt(argv[i]);
+          } catch (NumberFormatException e) {
+        usage("-expect must be followed by a decimal integer");
+          }
+        }
+          else if (argv[i].equals("-out"))
+        {
+          /* must have an arg */
+              if (++i >= len || argv[i].startsWith("-"))
+                usage("-out must have a path argument");
+
+              /* validate path */
+              if (argv[i].length() != 0) {
+                out_path = argv[i] + File.separator;
+                File f = new File(out_path);
+                if (!f.exists() || !f.isDirectory())
+                  out_path = null;
+          }
+              if (out_path == null)
+                usage("-out argument must be a valid existing path");
+        }
+      else if (argv[i].equals("-compact_red"))  opt_compact_red = true;
+      else if (argv[i].equals("-nosummary"))    no_summary = true;
+      else if (argv[i].equals("-nowarn"))       emit.nowarn = true;
+      else if (argv[i].equals("-dump_states"))  opt_dump_states = true;
+      else if (argv[i].equals("-dump_tables"))  opt_dump_tables = true;
+      else if (argv[i].equals("-progress"))     print_progress = true;
+      else if (argv[i].equals("-dump_grammar")) opt_dump_grammar = true;
+      else if (argv[i].equals("-dump"))
+            opt_dump_states = opt_dump_tables = opt_dump_grammar = true;
+      else if (argv[i].equals("-time"))         opt_show_timing = true;
+      else if (argv[i].equals("-debug"))        opt_do_debug = true;
+      else
+        {
+          usage("Unrecognized option \"" + argv[i] + "\"");
+        }
+    }
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /*-------*/
+  /* Files */
+  /*-------*/
+
+  /** Input file.  This is a buffered version of System.in. */
+  protected static BufferedInputStream input_file;
+
+  /** Output file for the parser class. */
+  protected static PrintStream parser_class_file;
+
+  /** Output file for the symbol constant class. */
+  protected static PrintStream symbol_class_file;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Open various files used by the system. */
+  protected static void open_files()
+    {
+      File fil;
+      String out_name;
+
+      /* use a buffered version of standard input */
+        if (emit.input_file_name != null)
+            try {
+                input_file = new BufferedInputStream(new FileInputStream(emit.input_file_name));
+            } catch (Exception ex) {
+                ex.printStackTrace();
+                System.exit(3);
+            }
+        else
+            input_file = new BufferedInputStream(System.in);
+
+      /* open each of the output files */
+      if (out_path == null)
+        out_path = "";
+
+      /* parser class */
+      out_name = out_path + emit.parser_class_name + ".java";
+      fil = new File(out_name);
+      try {
+        parser_class_file = new PrintStream(
+         new BufferedOutputStream(new FileOutputStream(fil), 4096));
+      } catch(Exception e) {
+    System.err.println("Can't open \"" + out_name + "\" for output");
+    System.exit(3);
+      }
+
+      /* symbol constants class */
+      out_name = out_path + emit.symbol_const_class_name + ".java";
+      fil = new File(out_name);
+      try {
+        symbol_class_file = new PrintStream(
+         new BufferedOutputStream(new FileOutputStream(fil), 4096));
+      } catch(Exception e) {
+    System.err.println("Can't open \"" + out_name + "\" for output");
+    System.exit(4);
+      }
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Close various files used by the system. */
+  protected static void close_files() throws java.io.IOException
+    {
+      if (input_file != null) input_file.close();
+      if (parser_class_file != null) parser_class_file.close();
+      if (symbol_class_file != null) symbol_class_file.close();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Parse the grammar specification from standard input.  This produces
+   *  sets of terminal, non-terminals, and productions which can be accessed
+   *  via static variables of the respective classes, as well as the setting
+   *  of various variables (mostly in the emit class) for small user supplied
+   *  items such as the code to scan with.
+   */
+  protected static void parse_grammar_spec() throws java.lang.Exception
+    {
+      parser parser_obj;
+
+      /* create a parser and parse with it */
+      parser_obj = new parser();
+      try {
+    if (opt_do_debug)
+          parser_obj.debug_parse();
+    else
+          parser_obj.parse();
+      } catch (Exception e)
+      {
+    /* something threw an exception.  catch it and emit a message so we
+       have a line number to work with, then re-throw it */
+    lexer.emit_error("Internal error: Unexpected exception");
+    throw e;
+      }
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Check for unused symbols.  Unreduced productions get checked when
+   *  tables are created.
+   */
+  protected static void check_unused()
+    {
+      terminal term;
+      non_terminal nt;
+
+      /* check for unused terminals */
+      for (Enumeration t = terminal.all(); t.hasMoreElements(); )
+    {
+      term = (terminal)t.nextElement();
+
+      /* don't issue a message for EOF */
+      if (term == terminal.EOF) continue;
+
+      /* or error */
+      if (term == terminal.error) continue;
+
+      /* is this one unused */
+      if (term.use_count() == 0)
+        {
+          /* count it and warn if we are doing warnings */
+          emit.unused_term++;
+          if (!emit.nowarn)
+        {
+          System.err.println("Warning: Terminal \"" + term.name() +
+                     "\" was declared but never used");
+          lexer.warning_count++;
+        }
+        }
+    }
+
+      /* check for unused non terminals */
+      for (Enumeration n = non_terminal.all(); n.hasMoreElements(); )
+    {
+      nt = (non_terminal)n.nextElement();
+
+      /* is this one unused */
+      if (nt.use_count() == 0)
+        {
+          /* count and warn if we are doing warnings */
+          emit.unused_term++;
+          if (!emit.nowarn)
+        {
+          System.err.println("Warning: Non terminal \"" + nt.name() +
+                     "\" was declared but never used");
+          lexer.warning_count++;
+        }
+        }
+    }
+
+    }
+
+  /* . . . . . . . . . . . . . . . . . . . . . . . . .*/
+  /* . . Internal Results of Generating the Parser . .*/
+  /* . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Start state in the overall state machine. */
+  protected static lalr_state start_state;
+
+  /** Resulting parse action table. */
+  protected static parse_action_table action_table;
+
+  /** Resulting reduce-goto table. */
+  protected static parse_reduce_table reduce_table;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Build the (internal) parser from the previously parsed specification.
+   *  This includes:<ul>
+   *    <li> Computing nullability of non-terminals.
+   *    <li> Computing first sets of non-terminals and productions.
+   *    <li> Building the viable prefix recognizer machine.
+   *    <li> Filling in the (internal) parse tables.
+   *    <li> Checking for unreduced productions.
+   *  </ul>
+   */
+  protected static void build_parser() throws internal_error
+    {
+      /* compute nullability of all non terminals */
+      if (opt_do_debug || print_progress)
+    System.err.println("  Computing non-terminal nullability...");
+      non_terminal.compute_nullability();
+
+      nullability_end = System.currentTimeMillis();
+
+      /* compute first sets of all non terminals */
+      if (opt_do_debug || print_progress)
+    System.err.println("  Computing first sets...");
+      non_terminal.compute_first_sets();
+
+      first_end = System.currentTimeMillis();
+
+      /* build the LR viable prefix recognition machine */
+      if (opt_do_debug || print_progress)
+    System.err.println("  Building state machine...");
+      start_state = lalr_state.build_machine(emit.start_production);
+
+      machine_end = System.currentTimeMillis();
+
+      /* build the LR parser action and reduce-goto tables */
+      if (opt_do_debug || print_progress)
+    System.err.println("  Filling in tables...");
+      action_table = new parse_action_table();
+      reduce_table = new parse_reduce_table();
+      for (Enumeration st = lalr_state.all(); st.hasMoreElements(); )
+    {
+      ((lalr_state)st.nextElement()).build_table_entries(
+                                  action_table, reduce_table);
+    }
+
+      table_end = System.currentTimeMillis();
+
+      /* check and warn for non-reduced productions */
+      if (opt_do_debug || print_progress)
+    System.err.println("  Checking for non-reduced productions...");
+      action_table.check_reductions();
+
+      reduce_check_end = System.currentTimeMillis();
+
+      /* if we have more conflicts than we expected issue a message and die */
+      if (emit.num_conflicts > expect_conflicts)
+    {
+      System.err.println("*** More conflicts encountered than expected " +
+                 "-- parser generation aborted");
+      lexer.error_count++;
+      build_end = System.currentTimeMillis();
+
+      /* do dumps and summary as needed */
+          if (opt_dump_grammar) dump_grammar();
+          if (opt_dump_states)  dump_machine();
+      if (!no_summary) emit_summary(false);
+
+      System.exit(100);
+    }
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Call the emit routines necessary to write out the generated parser. */
+  protected static void emit_parser() throws internal_error
+    {
+      emit.symbols(symbol_class_file, include_non_terms);
+      emit.parser(parser_class_file, action_table, reduce_table,
+          start_state.index(), emit.start_production, opt_compact_red);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Helper routine to optionally return a plural or non-plural ending.
+   * @param val the numerical value determining plurality.
+   */
+  protected static String plural(int val)
+    {
+      if (val == 1)
+    return "";
+      else
+    return "s";
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Emit a long summary message to standard error (System.err) which
+   *  summarizes what was found in the specification, how many states were
+   *  produced, how many conflicts were found, etc.  A detailed timing
+   *  summary is also produced if it was requested by the user.
+   * @param output_produced did the system get far enough to generate code.
+   */
+  protected static void emit_summary(boolean output_produced)
+    {
+      final_time = System.currentTimeMillis();
+
+      if (no_summary) return;
+
+      System.err.println("------- " + version.title_str +
+             " Parser Generation Summary -------");
+
+      /* error and warning count */
+      System.err.println("  " + lexer.error_count + " error" +
+     plural(lexer.error_count) + " and " + lexer.warning_count +
+     " warning" + plural(lexer.warning_count));
+
+      /* basic stats */
+      System.err.print("  " + terminal.number() + " terminal" +
+             plural(terminal.number()) + ", ");
+      System.err.print(non_terminal.number() + " non terminal" +
+             plural(non_terminal.number()) + ", and ");
+      System.err.println(production.number() + " production" +
+             plural(production.number()) + " declared, ");
+      System.err.println("  producing " + lalr_state.number() +
+             " unique parse states.");
+
+      /* unused symbols */
+      System.err.println("  " + emit.unused_term + " terminal" +
+             plural(emit.unused_term) + " declared but not used.");
+      System.err.println("  " + emit.unused_non_term + " non terminal" +
+             plural(emit.unused_term) + " declared but not used.");
+
+      /* productions that didn't reduce */
+      System.err.println("  " + emit.not_reduced + " production" +
+             plural(emit.not_reduced) + " never reduced.");
+
+      /* conflicts */
+      System.err.println("  " + emit.num_conflicts + " conflict" +
+             plural(emit.num_conflicts) + " detected" +
+                     " (" + expect_conflicts + " expected).");
+
+      /* code location */
+      if (output_produced)
+    System.err.println("  Code written to \"" + emit.parser_class_name +
+            ".java\", and \"" + emit.symbol_const_class_name + ".java\".");
+      else
+    System.err.println("  No code produced.");
+
+      if (opt_show_timing) show_times();
+
+      System.err.println(
+    "---------------------------------------------------- (" +
+     version.version_str + ")");
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Produce the optional timing summary as part of an overall summary. */
+  protected static void show_times()
+    {
+      long total_time = final_time - start_time;
+
+      System.err.println(". . . . . . . . . . . . . . . . . . . . . . . . . ");
+      System.err.println("  Timing Summary");
+      System.err.println("    Total time       "
+        + timestr(final_time-start_time, total_time));
+      System.err.println("      Startup        "
+    + timestr(prelim_end-start_time, total_time));
+      System.err.println("      Parse          "
+    + timestr(parse_end-prelim_end, total_time) );
+      if (check_end != 0)
+        System.err.println("      Checking       "
+        + timestr(check_end-parse_end, total_time));
+      if (check_end != 0 && build_end != 0)
+        System.err.println("      Parser Build   "
+        + timestr(build_end-check_end, total_time));
+      if (nullability_end != 0 && check_end != 0)
+        System.err.println("        Nullability  "
+        + timestr(nullability_end-check_end, total_time));
+      if (first_end != 0 && nullability_end != 0)
+        System.err.println("        First sets   "
+            + timestr(first_end-nullability_end, total_time));
+      if (machine_end != 0 && first_end != 0)
+        System.err.println("        State build  "
+        + timestr(machine_end-first_end, total_time));
+      if (table_end != 0 && machine_end != 0)
+        System.err.println("        Table build  "
+        + timestr(table_end-machine_end, total_time));
+      if (reduce_check_end != 0 && table_end != 0)
+        System.err.println("        Checking     "
+        + timestr(reduce_check_end-table_end, total_time));
+      if (emit_end != 0 && build_end != 0)
+        System.err.println("      Code Output    "
+        + timestr(emit_end-build_end, total_time));
+      if (emit.symbols_time != 0)
+    System.err.println("        Symbols      "
+        + timestr(emit.symbols_time, total_time));
+      if (emit.parser_time != 0)
+    System.err.println("        Parser class "
+        + timestr(emit.parser_time, total_time));
+      if (emit.action_code_time != 0)
+    System.err.println("          Actions    "
+        + timestr(emit.action_code_time, total_time));
+      if (emit.production_table_time != 0)
+    System.err.println("          Prod table "
+        + timestr(emit.production_table_time, total_time));
+      if (emit.action_table_time != 0)
+    System.err.println("          Action tab "
+        + timestr(emit.action_table_time, total_time));
+      if (emit.goto_table_time != 0)
+    System.err.println("          Reduce tab "
+        + timestr(emit.goto_table_time, total_time));
+
+      System.err.println("      Dump Output    "
+    + timestr(dump_end-emit_end, total_time));
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Helper routine to format a decimal based display of seconds and
+   *  percentage of total time given counts of milliseconds.   Note: this
+   *  is broken for use with some instances of negative time (since we don't
+   *  use any negative time here, we let if be for now).
+   * @param time_val   the value being formatted (in ms).
+   * @param total_time total time percentages are calculated against (in ms).
+   */
+  protected static String timestr(long time_val, long total_time)
+    {
+      boolean neg;
+      long    ms = 0;
+      long    sec = 0;
+      long    percent10;
+      String  pad;
+
+      /* work with positives only */
+      neg = time_val < 0;
+      if (neg) time_val = -time_val;
+
+      /* pull out seconds and ms */
+      ms = time_val % 1000;
+      sec = time_val / 1000;
+
+      /* construct a pad to blank fill seconds out to 4 places */
+      if (sec < 10)
+    pad = "   ";
+      else if (sec < 100)
+    pad = "  ";
+      else if (sec < 1000)
+    pad = " ";
+      else
+    pad = "";
+
+      /* calculate 10 times the percentage of total */
+      percent10 = (time_val*1000)/total_time;
+
+      /* build and return the output string */
+      return (neg ? "-" : "") + pad + sec + "." +
+         ((ms%1000)/100) + ((ms%100)/10) + (ms%10) + "sec" +
+         " (" + percent10/10 + "." + percent10%10 + "%)";
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Produce a human readable dump of the grammar. */
+  public static void dump_grammar() throws internal_error
+    {
+      int cnt;
+      Enumeration t, n, p;
+      production prod;
+
+      System.err.println("===== Terminals =====");
+      for (t = terminal.all(), cnt=0; t.hasMoreElements(); cnt++)
+    {
+      System.err.print(((terminal)t.nextElement()).name() + " ");
+      if ((cnt+1) % 5 == 0) System.err.println();
+    }
+      System.err.println();
+      System.err.println();
+
+      System.err.println("===== Non terminals =====");
+      for (n=non_terminal.all(), cnt=0; n.hasMoreElements(); cnt++)
+    {
+      System.err.print(((non_terminal)n.nextElement()).name() + " ");
+      if ((cnt+1) % 5 == 0) System.err.println();
+    }
+      System.err.println();
+      System.err.println();
+
+
+      System.err.println("===== Productions =====");
+      for (p=production.all(); p.hasMoreElements(); )
+    {
+      prod = (production)p.nextElement();
+      System.err.print(prod.lhs().the_symbol().name() + " ::= ");
+      for (int i=0; i<prod.rhs_length(); i++)
+        if (prod.rhs(i).is_action())
+          System.err.print("{action} ");
+        else
+          System.err.print(
+             ((symbol_part)prod.rhs(i)).the_symbol().name() + " ");
+      System.err.println();
+    }
+      System.err.println();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Produce a (semi-) human readable dump of the complete viable prefix
+   *  recognition state machine.
+   */
+  public static void dump_machine()
+    {
+      lalr_state ordered[] = new lalr_state[lalr_state.number()];
+
+      /* put the states in sorted order for a nicer display */
+      for (Enumeration s = lalr_state.all(); s.hasMoreElements(); )
+    {
+      lalr_state st = (lalr_state)s.nextElement();
+      ordered[st.index()] = st;
+    }
+
+      System.err.println("===== Viable Prefix Recognizer =====");
+      for (int i = 0; i<lalr_state.number(); i++)
+    {
+      if (ordered[i] == start_state) System.err.print("START ");
+          System.err.println(ordered[i]);
+      System.err.println("-------------------");
+    }
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Produce a (semi-) human readable dumps of the parse tables */
+  public static void dump_tables()
+    {
+      System.err.println(action_table);
+      System.err.println(reduce_table);
+    }
+
+  /*-----------------------------------------------------------*/
+
+};
+
diff --git a/tools/dasm/src/java_cup/action_part.java b/tools/dasm/src/java_cup/action_part.java
new file mode 100644
index 0000000..5beb385
--- /dev/null
+++ b/tools/dasm/src/java_cup/action_part.java
@@ -0,0 +1,93 @@
+
+package java_cup;
+
+/** 
+ * This class represents a part of a production which contains an
+ * action.  These are eventually eliminated from productions and converted
+ * to trailing actions by factoring out with a production that derives the
+ * empty string (and ends with this action).
+ *
+ * @see java_cup.production
+ * @version last update: 11/25/95
+ * @author Scott Hudson
+ */
+
+public class action_part extends production_part {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructors ------------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Simple constructor. 
+   * @param code_str string containing the actual user code.
+   */
+  public action_part(String code_str)
+    {
+      super(/* never have a label on code */null);
+      _code_string = code_str;
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** String containing code for the action in question. */
+  protected String _code_string;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** String containing code for the action in question. */
+  public String code_string() {return _code_string;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Set the code string. */
+  public void set_code_string(String new_str) {_code_string = new_str;}
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Override to report this object as an action. */
+  public boolean is_action() { return true; }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Equality comparison for properly typed object. */
+  public boolean equals(action_part other)
+    {
+      /* compare the strings */
+      return other != null && super.equals(other) && 
+         other.code_string().equals(code_string());
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Generic equality comparison. */
+  public boolean equals(Object other)
+    {
+      if (!(other instanceof action_part)) 
+    return false;
+      else
+    return equals((action_part)other);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Produce a hash code. */
+  public int hashCode()
+    {
+      return super.hashCode() ^ 
+         (code_string()==null ? 0 : code_string().hashCode());
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Convert to a string.  */
+  public String toString()
+    {
+      return super.toString() + "{" + code_string() + "}";
+    }
+
+  /*-----------------------------------------------------------*/
+};
diff --git a/tools/dasm/src/java_cup/action_production.java b/tools/dasm/src/java_cup/action_production.java
new file mode 100644
index 0000000..112e1eb
--- /dev/null
+++ b/tools/dasm/src/java_cup/action_production.java
@@ -0,0 +1,39 @@
+
+package java_cup;
+
+/** A specialized version of a production used when we split an existing
+ *  production in order to remove an embedded action.  Here we keep a bit 
+ *  of extra bookkeeping so that we know where we came from.
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+
+public class action_production extends production {
+
+  /** Constructor.
+   * @param base       the production we are being factored out of.
+   * @param lhs_sym    the LHS symbol for this production.
+   * @param rhs_parts  array of production parts for the RHS.
+   * @param rhs_len    how much of the rhs_parts array is valid.
+   * @param action_str the trailing reduce action for this production.
+   */ 
+  public action_production(
+    production      base,
+    non_terminal    lhs_sym, 
+    production_part rhs_parts[],
+    int             rhs_len,
+    String          action_str)
+    throws internal_error
+    {
+      super(lhs_sym, rhs_parts, rhs_len, action_str);
+      _base_production = base;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The production we were taken out of. */
+  protected production _base_production;
+
+  /** The production we were taken out of. */
+  public production base_production() {return _base_production;}
+};
diff --git a/tools/dasm/src/java_cup/emit.java b/tools/dasm/src/java_cup/emit.java
new file mode 100644
index 0000000..5c2ce69
--- /dev/null
+++ b/tools/dasm/src/java_cup/emit.java
@@ -0,0 +1,755 @@
+
+package java_cup;
+
+import java.io.PrintStream;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.Stack;
+
+/**
+ * This class handles emitting generated code for the resulting parser.
+ * The various parse tables must be constructed, etc. before calling any
+ * routines in this class.<p>
+ *
+ * Three classes are produced by this code:
+ *   <dl>
+ *   <dt> symbol constant class
+ *   <dd>   this contains constant declarations for each terminal (and
+ *          optionally each non-terminal).
+ *   <dt> action class
+ *   <dd>   this non-public class contains code to invoke all the user actions
+ *          that were embedded in the parser specification.
+ *   <dt> parser class
+ *   <dd>   the specialized parser class consisting primarily of some user
+ *          supplied general and initialization code, and the parse tables.
+ *   </dl><p>
+ *
+ *  Three parse tables are created as part of the parser class:
+ *    <dl>
+ *    <dt> production table
+ *    <dd>   lists the LHS non terminal number, and the length of the RHS of
+ *           each production.
+ *    <dt> action table
+ *    <dd>   for each state of the parse machine, gives the action to be taken
+ *           (shift, reduce, or error) under each lookahead symbol.<br>
+ *    <dt> reduce-goto table
+ *    <dd>   when a reduce on a given production is taken, the parse stack is
+ *           popped back a number of elements corresponding to the RHS of the
+ *           production.  This reveals a prior state, which we transition out
+ *           of under the LHS non terminal symbol for the production (as if we
+ *           had seen the LHS symbol rather than all the symbols matching the
+ *           RHS).  This table is indexed by non terminal numbers and indicates
+ *           how to make these transitions.
+ *    </dl><p>
+ *
+ * In addition to the method interface, this class maintains a series of
+ * public global variables and flags indicating how misc. parts of the code
+ * and other output is to be produced, and counting things such as number of
+ * conflicts detected (see the source code and public variables below for
+ * more details).<p>
+ *
+ * This class is "static" (contains only static data and methods).<p>
+ *
+ * @see java_cup.main
+ * @version last update: 11/25/95
+ * @author Scott Hudson
+ */
+
+/* Major externally callable routines here include:
+     symbols               - emit the symbol constant class
+     parser                - emit the parser class
+
+   In addition the following major internal routines are provided:
+     emit_package          - emit a package declaration
+     emit_action_code      - emit the class containing the user's actions
+     emit_production_table - emit declaration and init for the production table
+     do_action_table       - emit declaration and init for the action table
+     do_reduce_table       - emit declaration and init for the reduce-goto table
+
+   Finally, this class uses a number of public instance variables to communicate
+   optional parameters and flags used to control how code is generated,
+   as well as to report counts of various things (such as number of conflicts
+   detected).  These include:
+
+   prefix                  - a prefix string used to prefix names that would
+                 otherwise "pollute" someone else's name space.
+   package_name            - name of the package emitted code is placed in
+                 (or null for an unnamed package.
+   symbol_const_class_name - name of the class containing symbol constants.
+   parser_class_name       - name of the class for the resulting parser.
+   action_code             - user supplied declarations and other code to be
+                 placed in action class.
+   parser_code             - user supplied declarations and other code to be
+                 placed in parser class.
+   init_code               - user supplied code to be executed as the parser
+                 is being initialized.
+   scan_code               - user supplied code to get the next token.
+   start_production        - the start production for the grammar.
+   import_list             - list of imports for use with action class.
+   num_conflicts           - number of conflicts detected.
+   nowarn                  - true if we are not to issue warning messages.
+   not_reduced             - count of number of productions that never reduce.
+   unused_term             - count of unused terminal symbols.
+   unused_non_term         - count of unused non terminal symbols.
+   *_time                  - a series of symbols indicating how long various
+                 sub-parts of code generation took (used to produce
+                 optional time reports in main).
+*/
+
+public class emit {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Only constructor is private so no instances can be created. */
+  private emit() { }
+
+  /*-----------------------------------------------------------*/
+  /*--- Static (Class) Variables ------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  public static String input_file_name;
+
+  /** The prefix placed on names that pollute someone else's name space. */
+  public static String prefix = "CUP$";
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Package that the resulting code goes into (null is used for unnamed). */
+  public static String package_name = null;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Name of the generated class for symbol constants. */
+  public static String symbol_const_class_name = "sym";
+
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Name of the generated parser class. */
+  public static String parser_class_name = "parser";
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** User declarations for direct inclusion in user action class. */
+  public static String action_code = null;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** User declarations for direct inclusion in parser class. */
+  public static String parser_code = null;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** User code for user_init() which is called during parser initialization. */
+  public static String init_code = null;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** User code for scan() which is called to get the next token. */
+  public static String scan_code = null;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The start production of the grammar. */
+  public static production start_production = null;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** List of imports (Strings containing class names) to go with actions. */
+  public static Stack import_list = new Stack();
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Number of conflict found while building tables. */
+  public static int num_conflicts = 0;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Do we skip warnings? */
+  public static boolean nowarn = false;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Count of the number on non-reduced productions found. */
+  public static int not_reduced = 0;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Count of unused terminals. */
+  public static int unused_term = 0;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Count of unused non terminals. */
+  public static int unused_non_term = 0;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /* Timing values used to produce timing report in main.*/
+
+  /** Time to produce symbol constant class. */
+  public static long symbols_time          = 0;
+
+  /** Time to produce parser class. */
+  public static long parser_time           = 0;
+
+  /** Time to produce action code class. */
+  public static long action_code_time      = 0;
+
+  /** Time to produce the production table. */
+  public static long production_table_time = 0;
+
+  /** Time to produce the action table. */
+  public static long action_table_time     = 0;
+
+  /** Time to produce the reduce-goto table. */
+  public static long goto_table_time       = 0;
+
+  /** Do we produce calls debug_gammar in generated parser? */
+  public static String debug_grammar = null;
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Build a string with the standard prefix.
+   * @param str string to prefix.
+   */
+  protected static String pre(String str) {return prefix + str;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Emit a package spec if the user wants one.
+   * @param out stream to produce output on.
+   */
+  protected static void emit_package(PrintStream out)
+    {
+      /* generate a package spec if we have a name for one */
+      if (package_name != null)
+    out.println("package " + package_name + ";\n");
+
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Emit code for the symbol constant class, optionally including non terms,
+   *  if they have been requested.
+   * @param out            stream to produce output on.
+   * @param emit_non_terms do we emit constants for non terminals?
+   */
+  public static void symbols(PrintStream out, boolean emit_non_terms)
+    {
+      terminal term;
+      non_terminal nt;
+
+      long start_time = System.currentTimeMillis();
+
+      /* top of file */
+      out.println();
+      out.println("//----------------------------------------------------");
+      out.println("// The following code was generated by " +
+                               version.title_str);
+      out.println("// " + new Date());
+      out.println("//----------------------------------------------------");
+      out.println();
+      emit_package(out);
+
+      /* class header */
+      out.println(
+        "/** JavaCup generated class containing symbol constants. */");
+      out.println("public class " + symbol_const_class_name + " {");
+
+      out.println("  /* terminals */");
+
+      /* walk over the terminals */              /* later might sort these */
+      for (Enumeration e = terminal.all(); e.hasMoreElements(); )
+    {
+      term = (terminal)e.nextElement();
+
+      /* output a constant decl for the terminal */
+      out.println("  static final int " + term.name() + " = " +
+              term.index() + ";");
+    }
+
+      /* do the non terminals if they want them (parser doesn't need them) */
+      if (emit_non_terms)
+    {
+          out.println("\n  /* non terminals */");
+
+          /* walk over the non terminals */       /* later might sort these */
+          for (Enumeration e = non_terminal.all(); e.hasMoreElements(); )
+        {
+          nt = (non_terminal)e.nextElement();
+
+          /* output a constant decl for the terminal */
+          out.println("  static final int " + nt.name() + " = " +
+                  nt.index() + ";");
+        }
+    }
+
+      /* end of class */
+      out.println("};\n");
+
+      symbols_time = System.currentTimeMillis() - start_time;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Emit code for the non-public class holding the actual action code.
+   * @param out        stream to produce output on.
+   * @param start_prod the start production of the grammar.
+   */
+  protected static void emit_action_code(PrintStream out, production start_prod)
+    throws internal_error
+    {
+      production prod;
+
+      long start_time = System.currentTimeMillis();
+
+      /* class header */
+      out.println();
+      out.println(
+       "/** JavaCup generated class to encapsulate user supplied action code.*/"
+      );
+      out.println("class " +  pre("actions") + " {");
+
+      /* user supplied code */
+      if (action_code != null)
+    {
+      out.println();
+          out.println(action_code);
+    }
+
+      /* constructor */
+      out.println();
+      out.println("  /** Constructor */");
+      out.println("  " + pre("actions") + "() { }");
+
+      /* action method head */
+      out.println();
+      out.println("  /** Method with the actual generated action code. */");
+      out.println("  public final java_cup.runtime.symbol " +
+             pre("do_action") + "(");
+      out.println("    int                        " + pre("act_num,"));
+      out.println("    java_cup.runtime.lr_parser " + pre("parser,"));
+      out.println("    java.util.Stack            " + pre("stack,"));
+      out.println("    int                        " + pre("top)"));
+      out.println("    throws java.lang.Exception");
+      out.println("    {");
+
+      /* declaration of result symbol */
+      out.println("      /* object for return from actions */");
+      out.println("      java_cup.runtime.symbol " + pre("result") + ";");
+      out.println();
+
+      /* switch top */
+      out.println("      /* select the action based on the action number */");
+      out.println("      switch (" + pre("act_num") + ")");
+      out.println("        {");
+
+      /* emit action code for each production as a separate case */
+      for (Enumeration p = production.all(); p.hasMoreElements(); )
+    {
+      prod = (production)p.nextElement();
+
+      /* case label */
+          out.println("          /*. . . . . . . . . . . . . . . . . . . .*/");
+          out.println("          case " + prod.index() + ": // " +
+                      prod.to_simple_string());
+
+      /* give them their own block to work in */
+      out.println("            {");
+
+          /* user supplied code for debug_grammar() */
+          if (debug_grammar != null)
+            out.println("             " +debug_grammar+ "(\"" +
+                        prod.to_simple_string() + "\");");
+
+      /* create the result symbol */
+      out.println("              " + pre("result") + " = new " +
+        prod.lhs().the_symbol().stack_type() + "(/*" +
+        prod.lhs().the_symbol().name() + "*/" +
+        prod.lhs().the_symbol().index() + ");");
+
+      /* if there is an action string, emit it */
+      if (prod.action() != null && prod.action().code_string() != null &&
+          !prod.action().equals(""))
+        out.println("              " + prod.action().code_string());
+
+      /* end of their block */
+      out.println("            }");
+
+      /* if this was the start production, do action for accept */
+      if (prod == start_prod)
+        {
+          out.println("          /* ACCEPT */");
+          out.println("          " + pre("parser") + ".done_parsing();");
+        }
+
+      /* code to return lhs symbol */
+      out.println("          return " + pre("result") + ";");
+      out.println();
+    }
+
+      /* end of switch */
+      out.println("          /* . . . . . .*/");
+      out.println("          default:");
+      out.println("            throw new Exception(");
+      out.println("               \"Invalid action number found in " +
+                  "internal parse table\");");
+      out.println();
+      out.println("        }");
+
+      /* end of method */
+      out.println("    }");
+
+      /* end of class */
+      out.println("};\n");
+
+      action_code_time = System.currentTimeMillis() - start_time;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Emit the production table.
+   * @param out stream to produce output on.
+   */
+  protected static void emit_production_table(PrintStream out)
+    {
+      production all_prods[];
+      production prod;
+
+      long start_time = System.currentTimeMillis();
+
+      /* do the top of the table */
+      out.println();
+      out.println("  /** production table */");
+      out.println("  protected static final short _production_table[][] = {");
+
+      /* collect up the productions in order */
+      all_prods = new production[production.number()];
+      for (Enumeration p = production.all(); p.hasMoreElements(); )
+    {
+      prod = (production)p.nextElement();
+      all_prods[prod.index()] = prod;
+    }
+
+      /* do one entry per production */
+      out.print("    ");
+      for (int i = 0; i<production.number(); i++)
+    {
+      prod = all_prods[i];
+
+      /* make the table entry */
+      out.print("    {");
+      out.print(/* lhs symbol # */ prod.lhs().the_symbol().index() + ", ");
+      out.print(/* rhs size */     prod.rhs_length() + "}");
+
+      /* put in a comma if we aren't at the end */
+      if (i < production.number()-1) out.print(", ");
+
+      /* 5 entries per line */
+      if ((i+1) % 5 == 0)
+        {
+          out.println();
+          out.print("    ");
+        }
+    }
+
+      /* finish off the table initializer */
+      out.println("  };");
+
+      /* do the public accessor method */
+      out.println();
+      out.println("  /** access to production table */");
+      out.println("  public short[][] production_table() " +
+                         "{return _production_table;}");
+
+      production_table_time = System.currentTimeMillis() - start_time;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Emit the action table.
+   * @param out             stream to produce output on.
+   * @param act_tab         the internal representation of the action table.
+   * @param compact_reduces do we use the most frequent reduce as default?
+   */
+  protected static void do_action_table(
+    PrintStream        out,
+    parse_action_table act_tab,
+    boolean            compact_reduces)
+    throws internal_error
+    {
+      parse_action_row row;
+      parse_action     act;
+      int              red;
+
+      long start_time = System.currentTimeMillis();
+
+      out.println();
+      out.println("  /** parse action table */");
+      out.println("  protected static final short[][] _action_table = {");
+
+      /* do each state (row) of the action table */
+      for (int i = 0; i < act_tab.num_states(); i++)
+    {
+      /* get the row */
+      row = act_tab.under_state[i];
+
+      /* determine the default for the row */
+      if (compact_reduces)
+        row.compute_default();
+      else
+        row.default_reduce = -1;
+
+      out.print("    /*" + i + "*/{");
+
+      /* do each column */
+      for (int j = 0; j < row.size(); j++)
+        {
+          /* extract the action from the table */
+          act = row.under_term[j];
+
+          /* skip error entries these are all defaulted out */
+          if (act.kind() != parse_action.ERROR)
+        {
+          /* first put in the symbol index, then the actual entry */
+
+          /* shifts get positive entries of state number + 1 */
+          if (act.kind() == parse_action.SHIFT)
+            {
+            out.print(j + "," +
+                (((shift_action)act).shift_to().index() + 1) + ",");
+            }
+
+          /* reduce actions get negated entries of production# + 1 */
+          else if (act.kind() == parse_action.REDUCE)
+            {
+              /* if its the default entry let it get defaulted out */
+              red = ((reduce_action)act).reduce_with().index();
+              if (red != row.default_reduce)
+                out.print(j + "," + (-(red+1)) + ",");
+            }
+
+          /* shouldn't be anything else */
+          else
+            throw new internal_error("Unrecognized action code " +
+              act.kind() + " found in parse table");
+        }
+        }
+
+      /* finish off the row with a default entry */
+      if (row.default_reduce != -1)
+        out.println("-1," + (-(row.default_reduce+1)) + "},");
+      else
+        out.println("-1,0},");
+    }
+
+      /* finish off the init of the table */
+      out.println("  };");
+
+      /* do the public accessor method */
+      out.println();
+      out.println("  /** access to parse action table */");
+      out.println("  public short[][] action_table() {return _action_table;}");
+
+      action_table_time = System.currentTimeMillis() - start_time;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Emit the reduce-goto table.
+   * @param out     stream to produce output on.
+   * @param red_tab the internal representation of the reduce-goto table.
+   */
+  protected static void do_reduce_table(
+    PrintStream out,
+    parse_reduce_table red_tab)
+    {
+      lalr_state       goto_st;
+      parse_action     act;
+
+      long start_time = System.currentTimeMillis();
+
+      out.println();
+      out.println("  /** reduce_goto table */");
+      out.println("  protected static final short[][] _reduce_table = {");
+
+      /* do each row of the reduce-goto table */
+      for (int i=0; i<red_tab.num_states(); i++)
+    {
+      out.print("    /*" + i + "*/{");
+
+      /* do each entry in the row */
+      for (int j=0; j<red_tab.under_state[i].size(); j++)
+        {
+          /* get the entry */
+          goto_st = red_tab.under_state[i].under_non_term[j];
+
+          /* if we have none, skip it */
+          if (goto_st != null)
+        {
+          /* make entries for the index and the value */
+          out.print(j + "," + goto_st.index() + ",");
+        }
+        }
+
+      /* end row with default value */
+      out.println("-1,-1},");
+    }
+
+      /* finish off the init of the table */
+      out.println("  };");
+
+      /* do the public accessor method */
+      out.println();
+      out.println("  /** access to reduce_goto table */");
+      out.println("  public short[][] reduce_table() {return _reduce_table;}");
+      out.println();
+
+      goto_table_time = System.currentTimeMillis() - start_time;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Emit the parser subclass with embedded tables.
+   * @param out             stream to produce output on.
+   * @param action_table    internal representation of the action table.
+   * @param reduce_table    internal representation of the reduce-goto table.
+   * @param start_st        start state of the parse machine.
+   * @param start_prod      start production of the grammar.
+   * @param compact_reduces do we use most frequent reduce as default?
+   */
+  public static void parser(
+    PrintStream        out,
+    parse_action_table action_table,
+    parse_reduce_table reduce_table,
+    int                start_st,
+    production         start_prod,
+    boolean            compact_reduces)
+    throws internal_error
+    {
+      long start_time = System.currentTimeMillis();
+
+      /* top of file */
+      out.println();
+      out.println("//----------------------------------------------------");
+      out.println("// The following code was generated by " +
+                            version.title_str);
+      out.println("// " + new Date());
+      out.println("//----------------------------------------------------");
+      out.println();
+      emit_package(out);
+
+      /* user supplied imports */
+      for (int i = 0; i < import_list.size(); i++)
+    out.println("import " + import_list.elementAt(i) + ";");
+
+      /* class header */
+      out.println();
+      out.println("public class " + parser_class_name +
+          " extends java_cup.runtime.lr_parser {");
+
+      /* constructor */
+      out.println();
+      out.println("  /** constructor */");
+      out.println("  public " + parser_class_name + "() {super();}");
+
+      /* emit the various tables */
+      emit_production_table(out);
+      do_action_table(out, action_table, compact_reduces);
+      do_reduce_table(out, reduce_table);
+
+      /* instance of the action encapsulation class */
+      out.println("  /** instance of action encapsulation class */");
+      out.println("  protected " + pre("actions") + " action_obj;");
+      out.println();
+
+      /* action object initializer */
+      out.println("  /** action encapsulation object initializer */");
+      out.println("  protected void init_actions()");
+      out.println("    {");
+      out.println("      action_obj = new " + pre("actions") + "();");
+      out.println("    }");
+      out.println();
+
+      /* access to action code */
+      out.println("  /** invoke a user supplied parse action */");
+      out.println("  public java_cup.runtime.symbol do_action(");
+      out.println("    int                        act_num,");
+      out.println("    java_cup.runtime.lr_parser parser,");
+      out.println("    java.util.Stack            stack,");
+      out.println("    int                        top)");
+      out.println("    throws java.lang.Exception");
+      out.println("  {");
+      out.println("    /* call code in generated class */");
+      out.println("    return action_obj." + pre("do_action(") +
+                  "act_num, parser, stack, top);");
+      out.println("  }");
+      out.println("");
+
+
+      /* method to tell the parser about the start state */
+      out.println("  /** start state */");
+      out.println("  public int start_state() {return " + start_st + ";}");
+
+      /* method to indicate start production */
+      out.println("  /** start production */");
+      out.println("  public int start_production() {return " +
+             start_production.index() + ";}");
+      out.println();
+
+      /* methods to indicate EOF and error symbol indexes */
+      out.println("  /** EOF symbol index */");
+      out.println("  public int EOF_sym() {return " + terminal.EOF.index() +
+                      ";}");
+      out.println();
+      out.println("  /** error symbol index */");
+      out.println("  public int error_sym() {return " + terminal.error.index() +
+                      ";}");
+      out.println();
+
+      /* user supplied code for user_init() */
+      if (init_code != null)
+    {
+          out.println();
+      out.println("  /** user initialization */");
+      out.println("  public void user_init() throws java.lang.Exception");
+      out.println("    {");
+      out.println(init_code);
+      out.println("    }");
+    }
+
+      /* user supplied code for scan */
+      if (scan_code != null)
+    {
+          out.println();
+      out.println("  /** scan to get the next token */");
+      out.println("  public java_cup.runtime.token scan()");
+      out.println("    throws java.lang.Exception");
+      out.println("    {");
+      out.println(scan_code);
+      out.println("    }");
+    }
+
+      /* user supplied code */
+      if (parser_code != null)
+    {
+      out.println();
+          out.println(parser_code);
+    }
+
+      /* end of class */
+      out.println("};");
+
+      /* put out the action code class */
+      emit_action_code(out, start_prod);
+
+      parser_time = System.currentTimeMillis() - start_time;
+    }
+
+    /*-----------------------------------------------------------*/
+};
diff --git a/tools/dasm/src/java_cup/internal_error.java b/tools/dasm/src/java_cup/internal_error.java
new file mode 100644
index 0000000..2a05b26
--- /dev/null
+++ b/tools/dasm/src/java_cup/internal_error.java
@@ -0,0 +1,22 @@
+
+package java_cup;
+
+/** Exception subclass for reporting internal errors in JavaCup. */
+public class internal_error extends Exception
+  {
+    /** Constructor with a message */
+    public internal_error(String msg)
+      {
+    super(msg);
+      }
+
+    /** Method called to do a forced error exit on an internal error
+    for cases when we can't actually throw the exception.  */
+    public void crash()
+      {
+    System.err.println("JavaCUP Fatal Internal Error Detected");
+    System.err.println(getMessage());
+    printStackTrace();
+    System.exit(-1);
+      }
+  };
diff --git a/tools/dasm/src/java_cup/lalr_item.java b/tools/dasm/src/java_cup/lalr_item.java
new file mode 100644
index 0000000..dfa09e1
--- /dev/null
+++ b/tools/dasm/src/java_cup/lalr_item.java
@@ -0,0 +1,329 @@
+package java_cup;
+
+import java.util.Stack;
+
+/** This class represents an LALR item. Each LALR item consists of 
+ *  a production, a "dot" at a position within that production, and
+ *  a set of lookahead symbols (terminal).  (The first two of these parts
+ *  are provide by the super class).  An item is designed to represent a 
+ *  configuration that the parser may be in.  For example, an item of the 
+ *  form: <pre>
+ *    [A ::= B * C d E  , {a,b,c}]
+ *  </pre>
+ *  indicates that the parser is in the middle of parsing the production <pre>
+ *    A ::= B C d E
+ *  </pre>
+ *  that B has already been parsed, and that we will expect to see a lookahead 
+ *  of either a, b, or c once the complete RHS of this production has been 
+ *  found.<p>
+ *
+ *  Items may initially be missing some items from their lookahead sets.  
+ *  Links are maintained from each item to the set of items that would need 
+ *  to be updated if symbols are added to its lookahead set.  During 
+ *  "lookahead propagation", we add symbols to various lookahead sets and 
+ *  propagate these changes across these dependency links as needed. 
+ *  
+ * @see     java_cup.lalr_item_set
+ * @see     java_cup.lalr_state
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+public class lalr_item extends lr_item_core {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Full constructor. 
+   * @param prod the production for the item.
+   * @param pos  the position of the "dot" within the production.
+   * @param look the set of lookahead symbols.
+   */
+  public lalr_item(production prod, int pos, terminal_set look) 
+    throws internal_error
+    {
+      super(prod, pos);
+      _lookahead = look;
+      _propagate_items = new Stack();
+      needs_propagation = true;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Constructor with default position (dot at start). 
+   * @param prod the production for the item.
+   * @param look the set of lookahead symbols.
+   */
+  public lalr_item(production prod, terminal_set look) throws internal_error
+    {
+      this(prod,0,look);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Constructor with default position and empty lookahead set. 
+   * @param prod the production for the item.
+   */
+  public lalr_item(production prod) throws internal_error
+    {
+      this(prod,0,new terminal_set());
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** The lookahead symbols of the item. */
+  protected terminal_set _lookahead;
+
+  /** The lookahead symbols of the item. */
+  public terminal_set lookahead() {return _lookahead;};
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Links to items that the lookahead needs to be propagated to. */
+  protected Stack _propagate_items; 
+
+  /** Links to items that the lookahead needs to be propagated to */
+  public Stack propagate_items() {return _propagate_items;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Flag to indicate that this item needs to propagate its lookahead 
+   *  (whether it has changed or not). 
+   */
+  protected boolean needs_propagation;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Add a new item to the set of items we propagate to. */
+  public void add_propagate(lalr_item prop_to)
+    {
+      _propagate_items.push(prop_to);
+      needs_propagation = true;
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Propagate incoming lookaheads through this item to others need to 
+   *  be changed.
+   * @params incoming symbols to potentially be added to lookahead of this item.
+   */
+  public void propagate_lookaheads(terminal_set incoming) throws internal_error
+    {
+      boolean change = false;
+
+      /* if we don't need to propagate, then bail out now */
+      if (!needs_propagation && (incoming == null || incoming.empty()))
+    return;
+
+      /* if we have null incoming, treat as an empty set */
+      if (incoming != null)
+    {
+      /* add the incoming to the lookahead of this item */
+      change = lookahead().add(incoming);
+    }
+
+      /* if we changed or need it anyway, propagate across our links */
+      if (change || needs_propagation)
+    {
+          /* don't need to propagate again */
+          needs_propagation = false;
+
+      /* propagate our lookahead into each item we are linked to */
+      for (int i = 0; i < propagate_items().size(); i++)
+        ((lalr_item)propagate_items().elementAt(i))
+                      .propagate_lookaheads(lookahead());
+    }
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Produce the new lalr_item that results from shifting the dot one position
+   *  to the right. 
+   */
+  public lalr_item shift() throws internal_error
+    {
+      lalr_item result;
+
+      /* can't shift if we have dot already at the end */
+      if (dot_at_end())
+    throw new internal_error("Attempt to shift past end of an lalr_item");
+
+      /* create the new item w/ the dot shifted by one */
+      result = new lalr_item(the_production(), dot_pos()+1, 
+                        new terminal_set(lookahead()));
+
+      /* change in our lookahead needs to be propagated to this item */
+      add_propagate(result);
+
+      return result;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Calculate lookahead representing symbols that could appear after the
+   *   symbol that the dot is currently in front of.  Note: this routine must
+   *   not be invoked before first sets and nullability has been calculated
+   *   for all non terminals. 
+   */ 
+  public terminal_set calc_lookahead(terminal_set lookahead_after) 
+    throws internal_error
+    {
+      terminal_set    result;
+      int             pos;
+      production_part part;
+      symbol          sym;
+
+      /* sanity check */
+      if (dot_at_end())
+    throw new internal_error(
+      "Attempt to calculate a lookahead set with a completed item");
+
+      /* start with an empty result */
+      result = new terminal_set();
+
+      /* consider all nullable symbols after the one to the right of the dot */
+      for (pos = dot_pos()+1; pos < the_production().rhs_length(); pos++) 
+    {
+       part = the_production().rhs(pos);
+
+       /* consider what kind of production part it is -- skip actions */ 
+       if (!part.is_action())
+         {
+           sym = ((symbol_part)part).the_symbol();
+
+           /* if its a terminal add it in and we are done */
+           if (!sym.is_non_term())
+         {
+           result.add((terminal)sym);
+           return result;
+         }
+           else
+         {
+           /* otherwise add in first set of the non terminal */
+           result.add(((non_terminal)sym).first_set());
+
+           /* if its nullable we continue adding, if not, we are done */
+           if (!((non_terminal)sym).nullable())
+             return result;
+         }
+         }
+    }
+
+      /* if we get here everything past the dot was nullable 
+         we add in the lookahead for after the production and we are done */
+      result.add(lookahead_after);
+      return result;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Determine if everything from the symbol one beyond the dot all the 
+   *  way to the  end of the right hand side is nullable.  This would indicate
+   *  that the lookahead of this item must be included in the lookaheads of
+   *  all items produced as a closure of this item.  Note: this routine should 
+   *  not be invoked until after first sets and nullability have been 
+   *  calculated for all non terminals. 
+   */
+  public boolean lookahead_visible() throws internal_error
+    {
+      production_part part;
+      symbol          sym;
+
+      /* if the dot is at the end, we have a problem, but the cleanest thing
+     to do is just return true. */
+      if (dot_at_end()) return true;
+
+      /* walk down the rhs and bail if we get a non-nullable symbol */
+      for (int pos = dot_pos() + 1; pos < the_production().rhs_length(); pos++)
+    {
+      part = the_production().rhs(pos);
+
+      /* skip actions */
+      if (!part.is_action())
+        {
+          sym = ((symbol_part)part).the_symbol();
+
+          /* if its a terminal we fail */
+          if (!sym.is_non_term()) return false;
+
+          /* if its not nullable we fail */
+          if (!((non_terminal)sym).nullable()) return false;
+        }
+    }
+
+      /* if we get here its all nullable */
+      return true;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Equality comparison -- here we only require the cores to be equal since
+   *   we need to do sets of items based only on core equality (ignoring 
+   *   lookahead sets). 
+   */
+  public boolean equals(lalr_item other)
+    {
+      if (other == null) return false;
+      return super.equals(other);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Generic equality comparison. */
+  public boolean equals(Object other)
+    {
+      if (!(other instanceof lalr_item)) 
+    return false;
+      else
+    return equals((lalr_item)other);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Return a hash code -- here we only hash the core since we only test core
+   *  matching in LALR items. 
+   */
+  public int hashCode()
+    {
+      return super.hashCode();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Convert to string. */
+  public String toString()
+    {
+      String result = "";
+
+      // additional output for debugging:
+      // result += "(" + hashCode() + ")"; 
+      result += "[";
+      result += super.toString();
+      result += ", ";
+      if (lookahead() != null)
+    {
+      result += "{";
+      for (int t = 0; t < terminal.number(); t++)
+        if (lookahead().contains(t))
+          result += terminal.find(t).name() + " ";
+      result += "}";
+    }
+      else
+    result += "NULL LOOKAHEAD!!";
+      result += "]";
+
+      // additional output for debugging:
+      // result += " -> ";
+      // for (int i = 0; i<propagate_items().size(); i++)
+      //   result += propagate_items().elementAt(i).hashCode() + " ";
+      //
+      // if (needs_propagation) result += " NP";
+
+      return result;
+    }
+    /*-----------------------------------------------------------*/
+};
diff --git a/tools/dasm/src/java_cup/lalr_item_set.java b/tools/dasm/src/java_cup/lalr_item_set.java
new file mode 100644
index 0000000..9abc8db
--- /dev/null
+++ b/tools/dasm/src/java_cup/lalr_item_set.java
@@ -0,0 +1,366 @@
+
+package java_cup;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+/** This class represents a set of LALR items.  For purposes of building
+ *  these sets, items are considered unique only if they have unique cores
+ *  (i.e., ignoring differences in their lookahead sets).<p>
+ *
+ *  This class provides fairly conventional set oriented operations (union,
+ *  sub/super-set tests, etc.), as well as an LALR "closure" operation (see 
+ *  compute_closure()).
+ *
+ * @see     java_cup.lalr_item
+ * @see     java_cup.lalr_state
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+
+public class lalr_item_set {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Constructor for an empty set. */
+  public lalr_item_set() { }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Constructor for cloning from another set. 
+   * @param other indicates set we should copy from.
+   */
+  public lalr_item_set(lalr_item_set other) 
+    throws internal_error
+    {
+      not_null(other);
+      _all = (Hashtable)other._all.clone();
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** A hash table to implement the set.  We store the items using themselves
+   *  as keys. 
+   */
+  protected Hashtable _all = new Hashtable(11);
+
+  /** Access to all elements of the set. */
+  public Enumeration all() {return _all.elements();}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Cached hashcode for this set. */
+  protected Integer hashcode_cache = null;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Size of the set */
+  public int size() {return _all.size();}
+
+  /*-----------------------------------------------------------*/
+  /*--- Set Operation Methods ---------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Does the set contain a particular item? 
+   * @param itm the item in question.
+   */
+  public boolean contains(lalr_item itm) {return _all.containsKey(itm);}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Return the item in the set matching a particular item (or null if not 
+   *  found) 
+   *  @param itm the item we are looking for.
+   */
+  public lalr_item find(lalr_item itm) {return (lalr_item)_all.get(itm);}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Is this set an (improper) subset of another? 
+   * @param other the other set in question.
+   */
+  public boolean is_subset_of(lalr_item_set other) throws internal_error
+    {
+      not_null(other);
+
+      /* walk down our set and make sure every element is in the other */
+      for (Enumeration e = all(); e.hasMoreElements(); )
+    if (!other.contains((lalr_item)e.nextElement()))
+      return false;
+
+      /* they were all there */
+      return true;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Is this set an (improper) superset of another? 
+   * @param other the other set in question.
+   */
+  public boolean is_superset_of(lalr_item_set other) throws internal_error
+    {
+      not_null(other);
+      return other.is_subset_of(this);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Add a singleton item, merging lookahead sets if the item is already 
+   *  part of the set.  returns the element of the set that was added or 
+   *  merged into.
+   * @param itm the item being added.
+   */
+  public lalr_item add(lalr_item itm) throws internal_error
+    {
+      lalr_item other;
+
+      not_null(itm); 
+
+      /* see if an item with a matching core is already there */
+      other = (lalr_item)_all.get(itm);
+
+      /* if so, merge this lookahead into the original and leave it */
+      if (other != null)
+    {
+      other.lookahead().add(itm.lookahead());
+      return other;
+    }
+      /* otherwise we just go in the set */
+      else
+    {
+          /* invalidate cached hashcode */
+          hashcode_cache = null;
+
+          _all.put(itm,itm);
+      return itm;
+    }
+    };
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Remove a single item if it is in the set. 
+   * @param itm the item to remove.
+   */
+  public void remove(lalr_item itm) throws internal_error
+    {
+      not_null(itm); 
+
+      /* invalidate cached hashcode */
+      hashcode_cache = null;
+
+      /* remove it from hash table implementing set */
+      _all.remove(itm);
+    };
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Add a complete set, merging lookaheads where items are already in 
+   *  the set 
+   * @param other the set to be added.
+   */
+  public void add(lalr_item_set other) throws internal_error
+    {
+      not_null(other);
+
+      /* walk down the other set and do the adds individually */
+      for (Enumeration e = other.all(); e.hasMoreElements(); )
+    add((lalr_item)e.nextElement());
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Remove (set subtract) a complete set. 
+   * @param other the set to remove.
+   */
+  public void remove(lalr_item_set other) throws internal_error
+    {
+      not_null(other);
+
+      /* walk down the other set and do the removes individually */
+      for (Enumeration e = other.all(); e.hasMoreElements(); )
+    remove((lalr_item)e.nextElement());
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Remove and return one item from the set (done in hash order). */
+  public lalr_item get_one() throws internal_error
+    {
+      Enumeration the_set;
+      lalr_item result;
+
+      the_set = all();
+      if (the_set.hasMoreElements())
+    {
+          result = (lalr_item)the_set.nextElement();
+          remove(result);
+      return result;
+    }
+      else
+    return null;
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Helper function for null test.  Throws an interal_error exception if its
+   *  parameter is null.
+   *  @param obj the object we are testing.
+   */
+  protected void not_null(Object obj) throws internal_error
+    {
+      if (obj == null) 
+    throw new internal_error("Null object used in set operation");
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Compute the closure of the set using the LALR closure rules.  Basically
+   *  for every item of the form: <pre>
+   *    [L ::= a *N alpha, l] 
+   *  </pre>
+   *  (where N is a a non terminal and alpha is a string of symbols) make 
+   *  sure there are also items of the form:  <pre>
+   *    [N ::= *beta, first(alpha l)] 
+   *  </pre>
+   *  corresponding to each production of N.  Items with identical cores but 
+   *  differing lookahead sets are merged by creating a new item with the same 
+   *  core and the union of the lookahead sets (the LA in LALR stands for 
+   *  "lookahead merged" and this is where the merger is).  This routine 
+   *  assumes that nullability and first sets have been computed for all 
+   *  productions before it is called.
+   */
+  public void compute_closure()
+    throws internal_error
+    {
+      lalr_item_set consider;
+      lalr_item     itm, new_itm, add_itm;
+      non_terminal  nt;
+      terminal_set  new_lookaheads;
+      Enumeration   p;
+      production    prod;
+      boolean       need_prop;
+
+      /* invalidate cached hashcode */
+      hashcode_cache = null;
+
+      /* each current element needs to be considered */
+      consider = new lalr_item_set(this);
+
+      /* repeat this until there is nothing else to consider */
+      while (consider.size() > 0)
+    {
+      /* get one item to consider */
+      itm = consider.get_one(); 
+
+      /* do we have a dot before a non terminal */
+      nt = itm.dot_before_nt();
+      if (nt != null)
+        {
+          /* create the lookahead set based on first after dot */
+          new_lookaheads = itm.calc_lookahead(itm.lookahead());
+
+          /* are we going to need to propagate our lookahead to new item */
+          need_prop = itm.lookahead_visible();
+
+          /* create items for each production of that non term */
+          for (p = nt.productions(); p.hasMoreElements(); )
+        {
+          prod = (production)p.nextElement();
+
+          /* create new item with dot at start and that lookahead */
+          new_itm = new lalr_item(prod,new_lookaheads);
+
+          /* add/merge item into the set */
+          add_itm = add(new_itm);
+
+          /* if propagation is needed link to that item */
+          if (need_prop)
+            itm.add_propagate(add_itm);
+
+          /* was this was a new item*/
+          if (add_itm == new_itm)
+            {
+              /* that may need further closure, consider it also */ 
+              consider.add(new_itm);
+            } 
+        } 
+        } 
+    } 
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Equality comparison. */
+  public boolean equals(lalr_item_set other)
+    {
+      if (other == null || other.size() != size()) return false;
+
+      /* once we know they are the same size, then improper subset does test */
+      try {
+        return is_subset_of(other);
+      } catch (internal_error e) {
+    /* can't throw error from here (because superclass doesn't) so crash */
+    e.crash();
+    return false;
+      }
+
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Generic equality comparison. */
+  public boolean equals(Object other)
+    {
+      if (!(other instanceof lalr_item_set))
+    return false;
+      else
+    return equals((lalr_item_set)other);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Return hash code. */
+  public int hashCode()
+    {
+      int result = 0;
+      Enumeration e;
+      int cnt;
+
+      /* only compute a new one if we don't have it cached */
+      if (hashcode_cache == null)
+    {
+          /* hash together codes from at most first 5 elements */
+          for (e = all(), cnt=0 ; e.hasMoreElements() && cnt<5; cnt++)
+        result ^= ((lalr_item)e.nextElement()).hashCode();
+
+      hashcode_cache = new Integer(result);
+    }
+
+      return hashcode_cache.intValue();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Convert to string. */
+  public String toString()
+    {
+      StringBuffer result = new StringBuffer();
+
+      result.append("{\n");
+      for (Enumeration e=all(); e.hasMoreElements(); ) 
+     {
+       result.append("  " + (lalr_item)e.nextElement() + "\n");
+     }
+       result.append("}");
+
+       return result.toString();
+    }
+    /*-----------------------------------------------------------*/
+};
+
diff --git a/tools/dasm/src/java_cup/lalr_state.java b/tools/dasm/src/java_cup/lalr_state.java
new file mode 100644
index 0000000..9782ceb
--- /dev/null
+++ b/tools/dasm/src/java_cup/lalr_state.java
@@ -0,0 +1,749 @@
+
+package java_cup;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Stack;
+
+/** This class represents a state in the LALR viable prefix recognition machine.
+ *  A state consists of an LALR item set and a set of transitions to other 
+ *  states under terminal and non-terminal symbols.  Each state represents
+ *  a potential configuration of the parser.  If the item set of a state 
+ *  includes an item such as: <pre>
+ *    [A ::= B * C d E , {a,b,c}]
+ *  </pre> 
+ *  this indicates that when the parser is in this state it is currently 
+ *  looking for an A of the given form, has already seen the B, and would
+ *  expect to see an a, b, or c after this sequence is complete.  Note that
+ *  the parser is normally looking for several things at once (represented
+ *  by several items).  In our example above, the state would also include
+ *  items such as: <pre>
+ *    [C ::= * X e Z, {d}]
+ *    [X ::= * f, {e}]
+ *  </pre> 
+ *  to indicate that it was currently looking for a C followed by a d (which
+ *  would be reduced into a C, matching the first symbol in our production 
+ *  above), and the terminal f followed by e.<p>
+ *
+ *  At runtime, the parser uses a viable prefix recognition machine made up
+ *  of these states to parse.  The parser has two operations, shift and reduce.
+ *  In a shift, it consumes one token and makes a transition to a new state.
+ *  This corresponds to "moving the dot past" a terminal in one or more items
+ *  in the state (these new shifted items will then be found in the state at
+ *  the end of the transition).  For a reduce operation, the parser is 
+ *  signifying that it is recognizing the RHS of some production.  To do this
+ *  it first "backs up" by popping a stack of previously saved states.  It 
+ *  pops off the same number of states as are found in the RHS of the 
+ *  production.  This leaves the machine in the same state is was in when the
+ *  parser first attempted to find the RHS.  From this state it makes a 
+ *  transition based on the non-terminal on the LHS of the production.  This
+ *  corresponds to placing the parse in a configuration equivalent to having 
+ *  replaced all the symbols from the the input corresponding to the RHS with 
+ *  the symbol on the LHS.
+ *
+ * @see     java_cup.lalr_item
+ * @see     java_cup.lalr_item_set
+ * @see     java_cup.lalr_transition
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ *  
+ */
+
+public class lalr_state {
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+       
+  /** Constructor for building a state from a set of items.
+   * @param itms the set of items that makes up this state.
+   */
+  public lalr_state(lalr_item_set itms) throws internal_error
+   {
+     /* don't allow null or duplicate item sets */
+     if (itms == null)
+       throw new internal_error(
+     "Attempt to construct an LALR state from a null item set");
+
+     if (find_state(itms) != null)
+       throw new internal_error(
+     "Attempt to construct a duplicate LALR state");
+
+     /* assign a unique index */
+     _index = next_index++;
+
+     /* store the items */
+     _items = itms;
+
+     /* add to the global collection, keyed with its item set */
+     _all.put(_items,this);
+   }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Static (Class) Variables ------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Collection of all states. */
+  protected static Hashtable _all = new Hashtable();
+
+  /** Collection of all states. */
+  public static Enumeration all() {return _all.elements();}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Indicate total number of states there are. */
+  public static int number() {return _all.size();}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Hash table to find states by their kernels (i.e, the original, 
+   *  unclosed, set of items -- which uniquely define the state).  This table 
+   *  stores state objects using (a copy of) their kernel item sets as keys. 
+   */
+  protected static Hashtable _all_kernels = new Hashtable();
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Find and return state with a given a kernel item set (or null if not 
+   *  found).  The kernel item set is the subset of items that were used to
+   *  originally create the state.  These items are formed by "shifting the
+   *  dot" within items of other states that have a transition to this one.
+   *  The remaining elements of this state's item set are added during closure.
+   * @param itms the kernel set of the state we are looking for. 
+   */
+  public static lalr_state find_state(lalr_item_set itms)
+    {
+      if (itms == null) 
+      return null;
+      else
+      return (lalr_state)_all.get(itms);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Static counter for assigning unique state indexes. */
+  protected static int next_index = 0;
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** The item set for this state. */
+  protected lalr_item_set _items;
+
+  /** The item set for this state. */
+  public lalr_item_set items() {return _items;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** List of transitions out of this state. */
+  protected lalr_transition _transitions = null;
+
+  /** List of transitions out of this state. */
+  public lalr_transition transitions() {return _transitions;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Index of this state in the parse tables */
+  protected int _index;
+
+  /** Index of this state in the parse tables */
+  public int index() {return _index;}
+
+  /*-----------------------------------------------------------*/
+  /*--- Static Methods ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Helper routine for debugging -- produces a dump of the given state
+    * onto System.out.
+    */
+  protected static void dump_state(lalr_state st) throws internal_error
+    {
+      lalr_item_set itms;
+      lalr_item itm;
+      production_part part;
+
+      if (st == null) 
+    {
+      System.out.println("NULL lalr_state");
+      return;
+    }
+
+      System.out.println("lalr_state [" + st.index() + "] {");
+      itms = st.items();
+      for (Enumeration e = itms.all(); e.hasMoreElements(); )
+    {
+      itm = (lalr_item)e.nextElement();
+      System.out.print("  [");
+      System.out.print(itm.the_production().lhs().the_symbol().name());
+      System.out.print(" ::= ");
+      for (int i = 0; i<itm.the_production().rhs_length(); i++)
+        {
+          if (i == itm.dot_pos()) System.out.print("(*) ");
+          part = itm.the_production().rhs(i);
+          if (part.is_action()) 
+        System.out.print("{action} ");
+          else
+        System.out.print(((symbol_part)part).the_symbol().name() + " ");
+        }
+      if (itm.dot_at_end()) System.out.print("(*) ");
+      System.out.println("]");
+    }
+      System.out.println("}");
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Propagate lookahead sets through the constructed viable prefix 
+   *  recognizer.  When the machine is constructed, each item that results
+      in the creation of another such that its lookahead is included in the
+      other's will have a propagate link set up for it.  This allows additions
+      to the lookahead of one item to be included in other items that it 
+      was used to directly or indirectly create.
+   */
+  protected static void propagate_all_lookaheads() throws internal_error
+    {
+      /* iterate across all states */
+      for (Enumeration st = all(); st.hasMoreElements(); )
+    {
+      /* propagate lookaheads out of that state */
+      ((lalr_state)st.nextElement()).propagate_lookaheads();
+    }
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Add a transition out of this state to another.
+   * @param on_sym the symbol the transition is under.
+   * @param to_st  the state the transition goes to.
+   */
+  public void add_transition(symbol on_sym, lalr_state to_st) 
+    throws internal_error
+    {
+      lalr_transition trans;
+
+      /* create a new transition object and put it in our list */
+      trans = new lalr_transition(on_sym, to_st, _transitions);
+      _transitions = trans;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Build an LALR viable prefix recognition machine given a start 
+   *  production.  This method operates by first building a start state
+   *  from the start production (based on a single item with the dot at
+   *  the beginning and EOF as expected lookahead).  Then for each state
+   *  it attempts to extend the machine by creating transitions out of
+   *  the state to new or existing states.  When considering extension
+   *  from a state we make a transition on each symbol that appears before
+   *  the dot in some item.  For example, if we have the items: <pre>
+   *    [A ::= a b * X c, {d,e}]
+   *    [B ::= a b * X d, {a,b}]
+   *  </pre>
+   *  in some state, then we would be making a transition under X to a new
+   *  state.  This new state would be formed by a "kernel" of items 
+   *  corresponding to moving the dot past the X.  In this case: <pre>
+   *    [A ::= a b X * c, {d,e}]
+   *    [B ::= a b X * Y, {a,b}]
+   *  </pre>
+   *  The full state would then be formed by "closing" this kernel set of 
+   *  items so that it included items that represented productions of things
+   *  the parser was now looking for.  In this case we would items 
+   *  corresponding to productions of Y, since various forms of Y are expected
+   *  next when in this state (see lalr_item_set.compute_closure() for details 
+   *  on closure). <p>
+   *
+   *  The process of building the viable prefix recognizer terminates when no
+   *  new states can be added.  However, in order to build a smaller number of
+   *  states (i.e., corresponding to LALR rather than canonical LR) the state 
+   *  building process does not maintain full loookaheads in all items.  
+   *  Consequently, after the machine is built, we go back and propagate 
+   *  lookaheads through the constructed machine using a call to 
+   *  propagate_all_lookaheads().  This makes use of propagation links 
+   *  constructed during the closure and transition process.
+   *
+   * @param start_prod the start production of the grammar
+   * @see   java_cup.lalr_item_set#compute_closure
+   * @see   java_cup.lalr_state#propagate_all_lookaheads
+   */
+
+  public static lalr_state build_machine(production start_prod) 
+    throws internal_error
+    {
+      lalr_state    start_state;
+      lalr_item_set start_items;
+      lalr_item_set new_items;
+      lalr_item_set linked_items;
+      lalr_item_set kernel;
+      Stack         work_stack = new Stack();
+      lalr_state    st, new_st;
+      symbol_set    outgoing;
+      lalr_item     itm, new_itm, existing, fix_itm;
+      symbol        sym, sym2;
+      Enumeration   i, s, fix;
+
+      /* sanity check */
+      if (start_prod == null)
+    throw new internal_error(
+       "Attempt to build viable prefix recognizer using a null production");
+
+      /* build item with dot at front of start production and EOF lookahead */
+      start_items = new lalr_item_set();
+      itm = new lalr_item(start_prod);
+      itm.lookahead().add(terminal.EOF);
+      start_items.add(itm);
+
+      /* create copy the item set to form the kernel */
+      kernel = new lalr_item_set(start_items);
+
+      /* create the closure from that item set */
+      start_items.compute_closure();
+
+      /* build a state out of that item set and put it in our work set */
+      start_state = new lalr_state(start_items);
+      work_stack.push(start_state);
+
+      /* enter the state using the kernel as the key */
+      _all_kernels.put(kernel, start_state);
+
+      /* continue looking at new states until we have no more work to do */
+      while (!work_stack.empty())
+    {
+      /* remove a state from the work set */
+      st = (lalr_state)work_stack.pop();
+
+      /* gather up all the symbols that appear before dots */
+      outgoing = new symbol_set();
+      for (i = st.items().all(); i.hasMoreElements(); )
+        {
+          itm = (lalr_item)i.nextElement();
+
+          /* add the symbol before the dot (if any) to our collection */
+          sym = itm.symbol_after_dot();
+          if (sym != null) outgoing.add(sym);
+        }
+
+      /* now create a transition out for each individual symbol */
+      for (s = outgoing.all(); s.hasMoreElements(); )
+        {
+          sym = (symbol)s.nextElement();
+
+          /* will be keeping the set of items with propagate links */
+          linked_items = new lalr_item_set();
+
+          /* gather up shifted versions of all the items that have this
+         symbol before the dot */
+          new_items = new lalr_item_set();
+          for (i = st.items().all(); i.hasMoreElements();)
+        {
+          itm = (lalr_item)i.nextElement();
+
+          /* if this is the symbol we are working on now, add to set */
+          sym2 = itm.symbol_after_dot();
+          if (sym.equals(sym2))
+            {
+              /* add to the kernel of the new state */
+              new_items.add(itm.shift());
+
+              /* remember that itm has propagate link to it */
+              linked_items.add(itm);
+            }
+        }
+
+          /* use new items as state kernel */
+          kernel = new lalr_item_set(new_items);
+
+          /* have we seen this one already? */
+          new_st = (lalr_state)_all_kernels.get(kernel);
+
+          /* if we haven't, build a new state out of the item set */
+          if (new_st == null)
+        {
+              /* compute closure of the kernel for the full item set */
+              new_items.compute_closure();
+
+          /* build the new state */
+          new_st = new lalr_state(new_items);
+
+          /* add the new state to our work set */
+          work_stack.push(new_st);
+
+          /* put it in our kernel table */
+          _all_kernels.put(kernel, new_st);
+        }
+          /* otherwise relink propagation to items in existing state */
+          else 
+        {
+          /* walk through the items that have links to the new state */
+          for (fix = linked_items.all(); fix.hasMoreElements(); )
+            {
+              fix_itm = (lalr_item)fix.nextElement();
+
+              /* look at each propagate link out of that item */
+              for (int l =0; l < fix_itm.propagate_items().size(); l++)
+            {
+              /* pull out item linked to in the new state */
+              new_itm = 
+                (lalr_item)fix_itm.propagate_items().elementAt(l);
+
+              /* find corresponding item in the existing state */
+              existing = new_st.items().find(new_itm);
+
+              /* fix up the item so it points to the existing set */
+              if (existing != null)
+                fix_itm.propagate_items().setElementAt(existing ,l);
+            }
+            }
+        }
+
+          /* add a transition from current state to that state */
+          st.add_transition(sym, new_st);
+        }
+    }
+
+      /* all done building states */
+
+      /* propagate complete lookahead sets throughout the states */
+      propagate_all_lookaheads();
+
+      return start_state;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Propagate lookahead sets out of this state. This recursively 
+   *  propagates to all items that have propagation links from some item 
+   *  in this state. 
+   */
+  protected void propagate_lookaheads() throws internal_error
+    {
+      /* recursively propagate out from each item in the state */
+      for (Enumeration itm = items().all(); itm.hasMoreElements(); )
+    ((lalr_item)itm.nextElement()).propagate_lookaheads(null);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Fill in the parse table entries for this state.  There are two 
+   *  parse tables that encode the viable prefix recognition machine, an 
+   *  action table and a reduce-goto table.  The rows in each table 
+   *  correspond to states of the machine.  The columns of the action table
+   *  are indexed by terminal symbols and correspond to either transitions 
+   *  out of the state (shift entries) or reductions from the state to some
+   *  previous state saved on the stack (reduce entries).  All entries in the
+   *  action table that are not shifts or reduces, represent errors.    The
+   *  reduce-goto table is indexed by non terminals and represents transitions 
+   *  out of a state on that non-terminal.<p>
+   *  Conflicts occur if more than one action needs to go in one entry of the
+   *  action table (this cannot happen with the reduce-goto table).  Conflicts
+   *  are resolved by always shifting for shift/reduce conflicts and choosing
+   *  the lowest numbered production (hence the one that appeared first in
+   *  the specification) in reduce/reduce conflicts.  All conflicts are 
+   *  reported and if more conflicts are detected than were declared by the
+   *  user, code generation is aborted.
+   *
+   * @param act_table    the action table to put entries in.
+   * @param reduce_table the reduce-goto table to put entries in.
+   */
+  public void build_table_entries(
+    parse_action_table act_table, 
+    parse_reduce_table reduce_table)
+    throws internal_error
+    {
+      parse_action_row our_act_row;
+      parse_reduce_row our_red_row;
+      lalr_item        itm;
+      parse_action     act, other_act;
+      symbol           sym;
+      boolean          conflicted = false;
+
+      /* pull out our rows from the tables */
+      our_act_row = act_table.under_state[index()];
+      our_red_row = reduce_table.under_state[index()];
+
+      /* consider each item in our state */
+      for (Enumeration i = items().all(); i.hasMoreElements(); )
+    {
+      itm = (lalr_item)i.nextElement();
+
+      /* if its completed (dot at end) then reduce under the lookahead */
+      if (itm.dot_at_end())
+        {
+          act = new reduce_action(itm.the_production());
+
+          /* consider each lookahead symbol */
+          for (int t = 0; t < terminal.number(); t++)
+        {
+          /* skip over the ones not in the lookahead */
+          if (!itm.lookahead().contains(t)) continue;
+
+              /* if we don't already have an action put this one in */
+              if (our_act_row.under_term[t].kind() == 
+              parse_action.ERROR)
+            {
+                  our_act_row.under_term[t] = act;
+            }
+              else
+            {
+              /* we now have at least one conflict */
+              conflicted = true;
+
+              other_act = our_act_row.under_term[t];
+
+              /* if the other act was not a shift */
+              if (other_act.kind() != parse_action.SHIFT)
+                {
+                  /* if we have lower index hence priority, replace it*/
+                  if (itm.the_production().index() < 
+                  ((reduce_action)other_act).reduce_with().index())
+                {
+                  /* replace the action */
+                  our_act_row.under_term[t] = act;
+                }
+                }
+            }
+        }
+        }
+    }
+
+      /* consider each outgoing transition */
+      for (lalr_transition trans=transitions(); trans!=null; trans=trans.next())
+    {
+      /* if its on an terminal add a shift entry */
+      sym = trans.on_symbol();
+      if (!sym.is_non_term())
+        {
+          act = new shift_action(trans.to_state());
+
+          /* if we don't already have an action put this one in */
+          if ( our_act_row.under_term[sym.index()].kind() == 
+           parse_action.ERROR)
+        {
+              our_act_row.under_term[sym.index()] = act;
+        }
+          else
+        {
+          /* we now have at least one conflict */
+          conflicted = true;
+
+          /* shift always wins */
+          our_act_row.under_term[sym.index()] = act;
+        }
+        }
+      else
+        {
+          /* for non terminals add an entry to the reduce-goto table */
+          our_red_row.under_non_term[sym.index()] = trans.to_state();
+        }
+    }
+
+      /* if we end up with conflict(s), report them */
+      if (conflicted)
+        report_conflicts();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Produce warning messages for all conflicts found in this state.  */
+  protected void report_conflicts()
+    throws internal_error
+    {
+      lalr_item    itm, compare;
+      symbol       shift_sym;
+      terminal_set conflict_set;
+      boolean      after_itm;
+
+      /* consider each element */
+      for (Enumeration itms = items().all(); itms.hasMoreElements(); )
+    {
+      itm = (lalr_item)itms.nextElement();
+
+      /* clear the S/R conflict set for this item */
+      conflict_set = new terminal_set();
+
+      /* if it results in a reduce, it could be a conflict */
+      if (itm.dot_at_end())
+        {
+          /* not yet after itm */
+          after_itm = false;
+
+          /* compare this item against all others looking for conflicts */
+          for (Enumeration comps = items().all(); comps.hasMoreElements(); )
+        {
+          compare = (lalr_item)comps.nextElement();
+
+          /* if this is the item, next one is after it */
+          if (itm == compare) after_itm = true;
+
+          /* only look at it if its not the same item */
+          if (itm != compare)
+            {
+              /* is it a reduce */
+              if (compare.dot_at_end())
+            {
+              /* only look at reduces after itm */
+              if (after_itm)
+                            /* does the comparison item conflict? */
+                            if (compare.lookahead().intersects(itm.lookahead()))
+                              /* report a reduce/reduce conflict */
+                              report_reduce_reduce(itm, compare);
+            }
+              /* must be a shift on a terminal or non-terminal */
+              else 
+            {
+                  /* is it a shift on a terminal */
+              shift_sym = compare.symbol_after_dot();
+              if (!shift_sym.is_non_term()) 
+                {
+                  /* does the terminal conflict with our item */
+                  if (itm.lookahead().contains((terminal)shift_sym))
+                    /* remember the terminal symbol in conflict */
+                    conflict_set.add((terminal)shift_sym);
+                }
+            }
+            }
+        }
+          /* report S/R conflicts under all the symbols we conflict under */
+          for (int t = 0; t < terminal.number(); t++)
+        if (conflict_set.contains(t))
+          report_shift_reduce(itm,t);
+        }
+    }
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Produce a warning message for one reduce/reduce conflict. 
+   *
+   * @param itm1 first item in conflict.
+   * @param itm2 second item in conflict.
+   */
+  protected void report_reduce_reduce(lalr_item itm1, lalr_item itm2)
+    throws internal_error
+    {
+      boolean comma_flag = false;
+
+      System.err.println("*** Reduce/Reduce conflict found in state #"+index());
+      System.err.print  ("  between ");
+      System.err.println(itm1.to_simple_string());
+      System.err.print  ("  and     ");
+      System.err.println(itm2.to_simple_string());
+      System.err.print("  under symbols: {" );
+      for (int t = 0; t < terminal.number(); t++)
+    {
+      if (itm1.lookahead().contains(t) && itm2.lookahead().contains(t))
+        {
+          if (comma_flag) System.err.print(", "); else comma_flag = true;
+          System.err.print(terminal.find(t).name());
+        }
+    }
+      System.err.println("}");
+      System.err.print("  Resolved in favor of ");
+      if (itm1.the_production().index() < itm2.the_production().index())
+    System.err.println("the first production.\n");
+      else
+    System.err.println("the second production.\n");
+
+      /* count the conflict */
+      emit.num_conflicts++;
+      lexer.warning_count++;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Produce a warning message for one shift/reduce conflict.
+   *
+   * @param red_itm      the item with the reduce.
+   * @param conflict_sym the index of the symbol conflict occurs under.
+   */
+  protected void report_shift_reduce(
+    lalr_item red_itm, 
+    int       conflict_sym)
+    throws internal_error
+    {
+      lalr_item    itm;
+      symbol       shift_sym;
+
+      /* emit top part of message including the reduce item */
+      System.err.println("*** Shift/Reduce conflict found in state #"+index());
+      System.err.print  ("  between ");
+      System.err.println(red_itm.to_simple_string());
+
+      /* find and report on all items that shift under our conflict symbol */
+      for (Enumeration itms = items().all(); itms.hasMoreElements(); )
+    {
+      itm = (lalr_item)itms.nextElement();
+
+      /* only look if its not the same item and not a reduce */
+      if (itm != red_itm && !itm.dot_at_end())
+        {
+          /* is it a shift on our conflicting terminal */
+          shift_sym = itm.symbol_after_dot();
+          if (!shift_sym.is_non_term() && shift_sym.index() == conflict_sym)
+            {
+          /* yes, report on it */
+                  System.err.println("  and     " + itm.to_simple_string());
+        }
+        }
+    }
+      System.err.println("  under symbol "+ terminal.find(conflict_sym).name());
+      System.err.println("  Resolved in favor of shifting.\n");
+
+      /* count the conflict */
+      emit.num_conflicts++;
+      lexer.warning_count++;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Equality comparison. */
+  public boolean equals(lalr_state other)
+    {
+      /* we are equal if our item sets are equal */
+      return other != null && items().equals(other.items());
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Generic equality comparison. */
+  public boolean equals(Object other)
+    {
+      if (!(other instanceof lalr_state))
+    return false;
+      else
+    return equals((lalr_state)other);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Produce a hash code. */
+  public int hashCode()
+    {
+      /* just use the item set hash code */
+      return items().hashCode();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Convert to a string. */
+  public String toString()
+    {
+      String result;
+      lalr_transition tr;
+
+      /* dump the item set */
+      result = "lalr_state [" + index() + "]: " + _items + "\n";
+
+      /* do the transitions */
+      for (tr = transitions(); tr != null; tr = tr.next())
+    {
+      result += tr;
+      result += "\n";
+    }
+
+      return result;
+    }
+
+  /*-----------------------------------------------------------*/
+};
diff --git a/tools/dasm/src/java_cup/lalr_transition.java b/tools/dasm/src/java_cup/lalr_transition.java
new file mode 100644
index 0000000..5e5075c
--- /dev/null
+++ b/tools/dasm/src/java_cup/lalr_transition.java
@@ -0,0 +1,93 @@
+package java_cup;
+
+/** This class represents a transition in an LALR viable prefix recognition 
+ *  machine.  Transitions can be under terminals for non-terminals.  They are
+ *  internally linked together into singly linked lists containing all the 
+ *  transitions out of a single state via the _next field.
+ *
+ * @see     java_cup.lalr_state
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ *
+ */
+public class lalr_transition {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Full constructor.
+   * @param on_sym  symbol we are transitioning on.
+   * @param to_st   state we transition to.
+   * @param nxt     next transition in linked list.
+   */
+  public lalr_transition(symbol on_sym, lalr_state to_st, lalr_transition nxt)
+    throws internal_error
+    {
+      /* sanity checks */
+      if (on_sym == null)
+    throw new internal_error("Attempt to create transition on null symbol");
+      if (to_st == null)
+    throw new internal_error("Attempt to create transition to null state");
+
+      /* initialize */
+      _on_symbol = on_sym;
+      _to_state  = to_st;
+      _next      = nxt;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Constructor with null next. 
+   * @param on_sym  symbol we are transitioning on.
+   * @param to_st   state we transition to.
+   */
+  public lalr_transition(symbol on_sym, lalr_state to_st) throws internal_error
+    {
+      this(on_sym, to_st, null);
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** The symbol we make the transition on. */
+  protected symbol _on_symbol;
+
+  /** The symbol we make the transition on. */
+  public symbol on_symbol() {return _on_symbol;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The state we transition to. */
+  protected lalr_state _to_state;
+
+  /** The state we transition to. */
+  public lalr_state to_state() {return _to_state;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Next transition in linked list of transitions out of a state */
+  protected lalr_transition _next;
+
+  /** Next transition in linked list of transitions out of a state */
+  public lalr_transition next() {return _next;}
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Convert to a string. */
+  public String toString()
+    {
+      String result;
+
+      result = "transition on " + on_symbol().name() + " to state [";
+      result += _to_state.index();
+      result += "]";
+
+      return result;
+    }
+
+  /*-----------------------------------------------------------*/
+};
diff --git a/tools/dasm/src/java_cup/lexer.java b/tools/dasm/src/java_cup/lexer.java
new file mode 100644
index 0000000..2b0a056
--- /dev/null
+++ b/tools/dasm/src/java_cup/lexer.java
@@ -0,0 +1,475 @@
+package java_cup;
+
+import java.util.Hashtable;
+
+import java_cup.runtime.str_token;
+import java_cup.runtime.token;
+
+/** This class implements a small scanner (aka lexical analyzer or lexer) for
+ *  the JavaCup specification.  This scanner reads characters from standard 
+ *  input (System.in) and returns integers corresponding to the terminal 
+ *  number of the next token.  Once end of input is reached the EOF token is 
+ *  returned on every subsequent call.<p>
+ *  Tokens currently returned include: <pre>
+ *    Symbol        Constant Returned     Symbol        Constant Returned
+ *    ------        -----------------     ------        -----------------
+ *    "package"     PACKAGE               "import"      IMPORT 
+ *    "code"        CODE                  "action"      ACTION 
+ *    "parser"      PARSER                "terminal"    TERMINAL
+ *    "non"         NON                   "init"        INIT 
+ *    "scan"        SCAN                  "with"        WITH
+ *    "start"       START                   ;           SEMI 
+ *      ,           COMMA                   *           STAR 
+ *      .           DOT                     :           COLON
+ *      ::=         COLON_COLON_EQUALS      |           BAR
+ *    identifier    ID                    {:...:}       CODE_STRING
+ *    "debug"       DEBUG
+ *  </pre>
+ *  All symbol constants are defined in sym.java which is generated by 
+ *  JavaCup from parser.cup.<p>
+ * 
+ *  In addition to the scanner proper (called first via init() then with
+ *  next_token() to get each token) this class provides simple error and 
+ *  warning routines and keeps a count of errors and warnings that is 
+ *  publicly accessible.<p>
+ *  
+ *  This class is "static" (i.e., it has only static members and methods).
+ *
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+public class lexer {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** The only constructor is private, so no instances can be created. */
+  private lexer() { }
+
+  /*-----------------------------------------------------------*/
+  /*--- Static (Class) Variables ------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** First character of lookahead. */
+  protected static int next_char; 
+
+  /** Second character of lookahead. */
+  protected static int next_char2;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** EOF constant. */
+  protected static final int EOF_CHAR = -1;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Table of keywords.  Keywords are initially treated as identifiers.
+   *  Just before they are returned we look them up in this table to see if
+   *  they match one of the keywords.  The string of the name is the key here,
+   *  which indexes Integer objects holding the symbol number. 
+   */
+  protected static Hashtable keywords = new Hashtable(23);
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Table of single character symbols.  For ease of implementation, we 
+   *  store all unambiguous single character tokens in this table of Integer
+   *  objects keyed by Integer objects with the numerical value of the 
+   *  appropriate char (currently Character objects have a bug which precludes
+   *  their use in tables).
+   */
+  protected static Hashtable char_symbols = new Hashtable(11);
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Current line number for use in error messages. */
+  protected static int current_line = 1;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Character position in current line. */
+  protected static int current_position = 1;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Count of total errors detected so far. */
+  public static int error_count = 0;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Count of warnings issued so far */
+  public static int warning_count = 0;
+
+  /*-----------------------------------------------------------*/
+  /*--- Static Methods ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Initialize the scanner.  This sets up the keywords and char_symbols
+    * tables and reads the first two characters of lookahead.  
+    */
+  public static void init() throws java.io.IOException
+    {
+      /* set up the keyword table */
+      keywords.put("package",  new Integer(sym.PACKAGE));
+      keywords.put("import",   new Integer(sym.IMPORT));
+      keywords.put("code",     new Integer(sym.CODE));
+      keywords.put("action",   new Integer(sym.ACTION));
+      keywords.put("parser",   new Integer(sym.PARSER));
+      keywords.put("terminal", new Integer(sym.TERMINAL));
+      keywords.put("non",      new Integer(sym.NON));
+      keywords.put("init",     new Integer(sym.INIT));
+      keywords.put("scan",     new Integer(sym.SCAN));
+      keywords.put("with",     new Integer(sym.WITH));
+      keywords.put("start",    new Integer(sym.START));
+      keywords.put("debug",    new Integer(sym.DEBUG));
+
+      /* set up the table of single character symbols */
+      char_symbols.put(new Integer(';'), new Integer(sym.SEMI));
+      char_symbols.put(new Integer(','), new Integer(sym.COMMA));
+      char_symbols.put(new Integer('*'), new Integer(sym.STAR));
+      char_symbols.put(new Integer('.'), new Integer(sym.DOT));
+      char_symbols.put(new Integer('|'), new Integer(sym.BAR));
+
+      /* read two characters of lookahead */
+      next_char = System.in.read();
+      if (next_char == EOF_CHAR) 
+    next_char2 = EOF_CHAR;
+      else
+    next_char2 = System.in.read();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Advance the scanner one character in the input stream.  This moves
+   * next_char2 to next_char and then reads a new next_char2.  
+   */
+  protected static void advance() throws java.io.IOException
+    {
+      int old_char;
+
+      old_char = next_char;
+      next_char = next_char2;
+      if (next_char == EOF_CHAR)
+    next_char2 = EOF_CHAR;
+      else
+    next_char2 = System.in.read();
+
+      /* count this */
+      current_position++;
+      if (old_char == '\n')
+    {
+      current_line++;
+      current_position = 1;
+    }
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Emit an error message.  The message will be marked with both the 
+   *  current line number and the position in the line.  Error messages
+   *  are printed on standard error (System.err).
+   * @param message the message to print.
+   */
+  public static void emit_error(String message)
+    {
+      System.err.println("Error at " + current_line + "(" + current_position +
+             "): " + message);
+      error_count++;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Emit a warning message.  The message will be marked with both the 
+   *  current line number and the position in the line.  Messages are 
+   *  printed on standard error (System.err).
+   * @param message the message to print.
+   */
+  public static void emit_warn(String message)
+    {
+      System.err.println("Warning at " + current_line + "(" + current_position +
+             "): " + message);
+      warning_count++;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Determine if a character is ok to start an id. 
+   * @param ch the character in question.
+   */
+  protected static boolean id_start_char(int ch)
+    {
+      return (ch >= 'a' &&  ch <= 'z') || (ch >= 'A' && ch <= 'Z') || 
+         (ch == '_');
+
+      // later need to deal with non-8-bit chars here
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Determine if a character is ok for the middle of an id.
+   * @param ch the character in question. 
+   */
+  protected static boolean id_char(int ch)
+    {
+      return id_start_char(ch) || (ch >= '0' && ch <= '9');
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Try to look up a single character symbol, returns -1 for not found. 
+   * @param ch the character in question.
+   */
+  protected static int find_single_char(int ch)
+    {
+      Integer result;
+
+      result = (Integer)char_symbols.get(new Integer((char)ch));
+      if (result == null) 
+    return -1;
+      else
+    return result.intValue();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Handle swallowing up a comment.  Both old style C and new style C++
+   *  comments are handled.
+   */
+  protected static void swallow_comment() throws java.io.IOException
+    {
+      /* next_char == '/' at this point */
+
+      /* is it a traditional comment */
+      if (next_char2 == '*')
+    {
+      /* swallow the opener */
+      advance(); advance();
+
+      /* swallow the comment until end of comment or EOF */
+      for (;;)
+        {
+          /* if its EOF we have an error */
+          if (next_char == EOF_CHAR)
+        {
+          emit_error("Specification file ends inside a comment");
+          return;
+        }
+
+          /* if we can see the closer we are done */
+          if (next_char == '*' && next_char2 == '/')
+        {
+          advance();
+          advance();
+          return;
+        }
+
+          /* otherwise swallow char and move on */
+          advance();
+        }
+    }
+
+      /* is its a new style comment */
+      if (next_char2 == '/')
+    {
+      /* swallow the opener */
+      advance(); advance();
+
+      /* swallow to '\n', '\f', or EOF */ 
+      while (next_char != '\n' && next_char != '\f' && next_char!=EOF_CHAR)
+        advance();
+
+      return;
+
+    }
+
+      /* shouldn't get here, but... if we get here we have an error */
+      emit_error("Malformed comment in specification -- ignored");
+      advance();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Swallow up a code string.  Code strings begin with "{:" and include
+      all characters up to the first occurrence of ":}" (there is no way to 
+      include ":}" inside a code string).  The routine returns an str_token
+      object suitable for return by the scanner.
+   */
+  protected static token do_code_string() throws java.io.IOException
+    {
+      StringBuffer result = new StringBuffer();
+
+      /* at this point we have lookahead of "{:" -- swallow that */
+      advance(); advance();
+
+      /* save chars until we see ":}" */
+      while (!(next_char == ':' && next_char2 == '}'))
+    {
+      /* if we have run off the end issue a message and break out of loop */
+      if (next_char == EOF_CHAR)
+        {
+          emit_error("Specification file ends inside a code string");
+          break;
+        }
+
+      /* otherwise record the char and move on */
+      result.append(new Character((char)next_char));
+      advance();
+    }
+
+      /* advance past the closer and build a return token */
+      advance(); advance();
+      return new str_token(sym.CODE_STRING, result.toString());
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Process an identifier.  Identifiers begin with a letter, underscore,
+   *  or dollar sign, which is followed by zero or more letters, numbers,
+   *  underscores or dollar signs.  This routine returns an str_token suitable
+   *  for return by the scanner.
+   */
+  protected static token do_id() throws java.io.IOException
+    {
+      StringBuffer result = new StringBuffer();
+      String       result_str;
+      Integer      keyword_num;
+      char         buffer[] = new char[1];
+
+      /* next_char holds first character of id */
+      buffer[0] = (char)next_char;
+      result.append(buffer,0,1);
+      advance();
+
+      /* collect up characters while they fit in id */ 
+      while(id_char(next_char))
+    {
+          buffer[0] = (char)next_char;
+      result.append(buffer,0,1);
+      advance();
+    }
+
+      /* extract a string and try to look it up as a keyword */
+      result_str = result.toString();
+      keyword_num = (Integer)keywords.get(result_str);
+
+      /* if we found something, return that keyword */
+      if (keyword_num != null)
+    return new token(keyword_num.intValue());
+
+      /* otherwise build and return an id token with an attached string */
+      return new str_token(sym.ID, result_str);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Return one token.  This is the main external interface to the scanner.
+   *  It consumes sufficient characters to determine the next input token
+   *  and returns it.  To help with debugging, this routine actually calls
+   *  real_next_token() which does the work.  If you need to debug the 
+   *  parser, this can be changed to call debug_next_token() which prints
+   *  a debugging message before returning the token.
+   */
+  public static token next_token() throws java.io.IOException
+    {
+      return real_next_token();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Debugging version of next_token().  This routine calls the real scanning
+   *  routine, prints a message on System.out indicating what the token is,
+   *  then returns it.
+   */
+  public static token debug_next_token() throws java.io.IOException
+    {
+      token result = real_next_token();
+      System.out.println("# next_token() => " + result.sym);
+      return result;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The actual routine to return one token.  This is normally called from
+   *  next_token(), but for debugging purposes can be called indirectly from
+   *  debug_next_token(). 
+   */
+  protected static token real_next_token() throws java.io.IOException
+    {
+      int sym_num;
+
+      for (;;)
+    {
+      /* look for white space */
+      if (next_char == ' ' || next_char == '\t' || next_char == '\n' ||
+          next_char == '\f' ||  next_char == '\r')
+        {
+          /* advance past it and try the next character */
+          advance();
+          continue;
+        }
+
+      /* look for a single character symbol */
+      sym_num = find_single_char(next_char);
+      if (sym_num != -1)
+        {
+          /* found one -- advance past it and return a token for it */
+          advance();
+          return new token(sym_num);
+        }
+
+      /* look for : or ::= */
+      if (next_char == ':')
+        {
+          /* if we don't have a second ':' return COLON */
+          if (next_char2 != ':') 
+        {
+          advance();
+          return new token(sym.COLON);
+        }
+
+          /* move forward and look for the '=' */
+          advance();
+          if (next_char2 == '=') 
+        {
+          advance(); advance();
+          return new token(sym.COLON_COLON_EQUALS);
+        }
+          else
+        {
+          /* return just the colon (already consumed) */
+          return new token(sym.COLON);
+        }
+        }
+
+      /* look for a comment */
+      if (next_char == '/' && (next_char2 == '*' || next_char2 == '/'))
+        {
+          /* swallow then continue the scan */
+          swallow_comment();
+          continue;
+        }
+
+      /* look for start of code string */
+      if (next_char == '{' && next_char2 == ':')
+        return do_code_string();
+
+      /* look for an id or keyword */
+      if (id_start_char(next_char)) return do_id();
+
+      /* look for EOF */
+      if (next_char == EOF_CHAR) return new token(sym.EOF);
+
+      /* if we get here, we have an unrecognized character */
+      emit_warn("Unrecognized character '" + 
+        new Character((char)next_char) + "'(" + next_char + 
+        ") -- ignored");
+
+      /* advance past it */
+      advance();
+    }
+    }
+
+  /*-----------------------------------------------------------*/
+};
+
diff --git a/tools/dasm/src/java_cup/lr_item_core.java b/tools/dasm/src/java_cup/lr_item_core.java
new file mode 100644
index 0000000..164bf4e
--- /dev/null
+++ b/tools/dasm/src/java_cup/lr_item_core.java
@@ -0,0 +1,270 @@
+
+package java_cup;
+
+/** The "core" of an LR item.  This includes a production and the position
+ *  of a marker (the "dot") within the production.  Typically item cores 
+ *  are written using a production with an embedded "dot" to indicate their 
+ *  position.  For example: <pre>
+ *     A ::= B * C d E
+ *  </pre>
+ *  This represents a point in a parse where the parser is trying to match
+ *  the given production, and has succeeded in matching everything before the 
+ *  "dot" (and hence is expecting to see the symbols after the dot next).  See 
+ *  lalr_item, lalr_item_set, and lalr_start for full details on the meaning 
+ *  and use of items.
+ *
+ * @see     java_cup.lalr_item
+ * @see     java_cup.lalr_item_set
+ * @see     java_cup.lalr_state
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+*/
+
+public class lr_item_core {
+   
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Full constructor.
+   * @param prod production this item uses.
+   * @param pos  position of the "dot" within the item.
+   */
+  public lr_item_core(production prod, int pos) throws internal_error
+    {
+      symbol          after_dot = null;
+      production_part part;
+
+      if (prod == null)
+    throw new internal_error(
+      "Attempt to create an lr_item_core with a null production");
+
+      _the_production = prod;
+
+      if (pos < 0 || pos > _the_production.rhs_length())
+    throw new internal_error(
+      "Attempt to create an lr_item_core with a bad dot position");
+
+      _dot_pos = pos;
+
+      /* compute and cache hash code now */
+      _core_hash_cache = 13*_the_production.hashCode() + pos;
+
+      /* cache the symbol after the dot */
+      if (_dot_pos < _the_production.rhs_length())
+    {
+      part = _the_production.rhs(_dot_pos);
+      if (!part.is_action())
+        _symbol_after_dot = ((symbol_part)part).the_symbol();
+    }
+    } 
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Constructor for dot at start of right hand side. 
+   * @param prod production this item uses.
+   */
+  public lr_item_core(production prod) throws internal_error
+    {
+      this(prod,0);
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** The production for the item. */
+  protected production _the_production;
+
+  /** The production for the item. */
+  public production the_production() {return _the_production;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The position of the "dot" -- this indicates the part of the production 
+   *  that the marker is before, so 0 indicates a dot at the beginning of 
+   *  the RHS.
+   */
+  protected int _dot_pos;
+
+  /** The position of the "dot" -- this indicates the part of the production 
+   *  that the marker is before, so 0 indicates a dot at the beginning of 
+   *  the RHS.
+   */
+  public int dot_pos() {return _dot_pos;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Cache of the hash code. */
+  protected int _core_hash_cache;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Cache of symbol after the dot. */
+  protected symbol _symbol_after_dot = null;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Is the dot at the end of the production? */
+  public boolean dot_at_end() 
+    {
+       return _dot_pos >= _the_production.rhs_length();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Return the symbol after the dot.  If there is no symbol after the dot
+   *  we return null. */
+  public symbol symbol_after_dot()
+    {
+      /* use the cached symbol */
+      return _symbol_after_dot;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Determine if we have a dot before a non terminal, and if so which one 
+   *  (return null or the non terminal). 
+   */
+  public non_terminal dot_before_nt()
+    {
+      symbol sym;
+
+      /* get the symbol after the dot */
+      sym = symbol_after_dot();
+
+      /* if it exists and is a non terminal, return it */
+      if (sym != null && sym.is_non_term())
+    return (non_terminal)sym;
+      else
+    return null;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Produce a new lr_item_core that results from shifting the dot one 
+   *  position to the right. 
+   */
+  public lr_item_core shift_core() throws internal_error
+    {
+      if (dot_at_end()) 
+    throw new internal_error(
+      "Attempt to shift past end of an lr_item_core");
+
+      return new lr_item_core(_the_production, _dot_pos+1);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Equality comparison for the core only.  This is separate out because we 
+   *  need separate access in a super class. 
+   */
+  public boolean core_equals(lr_item_core other)
+    {
+      return other != null && 
+         _the_production.equals(other._the_production) && 
+         _dot_pos == other._dot_pos;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Equality comparison. */
+  public boolean equals(lr_item_core other) {return core_equals(other);}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Generic equality comparison. */
+  public boolean equals(Object other)
+    {
+      if (!(other instanceof lr_item_core))
+    return false;
+      else
+    return equals((lr_item_core)other);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Hash code for the core (separated so we keep non overridden version). */
+  public int core_hashCode()
+    {
+      return _core_hash_cache;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Hash code for the item. */
+  public int hashCode() 
+    {
+      return _core_hash_cache;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Convert to a string (separated out from toString() so we can call it
+   *  from subclass that overrides toString()).
+   */
+  public String to_simple_string() throws internal_error
+    {
+      String result;
+      production_part part;
+
+      if (_the_production.lhs() != null && 
+      _the_production.lhs().the_symbol() != null &&
+      _the_production.lhs().the_symbol().name() != null)
+    result = _the_production.lhs().the_symbol().name();
+      else
+    result = "$$NULL$$";
+
+      result += " ::= ";
+
+      for (int i = 0; i<_the_production.rhs_length(); i++)
+    {
+      /* do we need the dot before this one? */
+      if (i == _dot_pos)
+        result += "(*) ";
+      
+      /* print the name of the part */
+      if (_the_production.rhs(i) == null)
+        {
+          result += "$$NULL$$ ";
+        }
+      else
+        {
+          part = _the_production.rhs(i);
+          if (part == null)
+        result += "$$NULL$$ ";
+          else if (part.is_action())
+        result += "{ACTION} ";
+          else if (((symbol_part)part).the_symbol() != null &&
+                       ((symbol_part)part).the_symbol().name() != null)
+        result += ((symbol_part)part).the_symbol().name() + " ";
+          else
+        result += "$$NULL$$ ";
+        }
+    }
+
+      /* put the dot after if needed */
+      if (_dot_pos == _the_production.rhs_length())
+    result += "(*) ";
+
+      return result;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Convert to a string */
+  public String toString() 
+    {
+      /* can't throw here since super class doesn't, so we crash instead */
+      try {
+        return to_simple_string();
+      } catch(internal_error e) {
+    e.crash();
+    return null;
+      }
+    }
+
+  /*-----------------------------------------------------------*/
+
+};
+   
diff --git a/tools/dasm/src/java_cup/non_terminal.java b/tools/dasm/src/java_cup/non_terminal.java
new file mode 100644
index 0000000..db7fff0
--- /dev/null
+++ b/tools/dasm/src/java_cup/non_terminal.java
@@ -0,0 +1,280 @@
+package java_cup;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+/** This class represents a non-terminal symbol in the grammar.  Each
+ *  non terminal has a textual name, an index, and a string which indicates
+ *  the type of object it will be implemented with at runtime (i.e. the class
+ *  of object that will be pushed on the parse stack to represent it). 
+ *
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+
+public class non_terminal extends symbol {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Full constructor.
+   * @param nm  the name of the non terminal.
+   * @param tp  the type string for the non terminal.
+   */
+  public non_terminal(String nm, String tp) 
+    {
+      /* super class does most of the work */
+      super(nm, tp);
+
+      /* add to set of all non terminals and check for duplicates */
+      Object conflict = _all.put(nm,this);
+      if (conflict != null)
+    // can't throw an exception here because these are used in static
+    // initializers, so we crash instead
+    // was: 
+    // throw new internal_error("Duplicate non-terminal ("+nm+") created");
+    (new internal_error("Duplicate non-terminal ("+nm+") created")).crash();
+
+      /* assign a unique index */
+      _index = next_index++;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Constructor with default type. 
+   * @param nm  the name of the non terminal.
+   */
+  public non_terminal(String nm) 
+    {
+      this(nm, null);
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Static (Class) Variables ------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Table of all non-terminals -- elements are stored using name strings 
+   *  as the key 
+   */
+  protected static Hashtable _all = new Hashtable();
+
+  /** Access to all non-terminals. */
+  public static Enumeration all() {return _all.elements();};
+
+  /** lookup a non terminal by name string */ 
+  public static non_terminal find(String with_name)
+    {
+      if (with_name == null)
+        return null;
+      else 
+        return (non_terminal)_all.get(with_name);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Total number of non-terminals. */
+  public static int number() {return _all.size();};
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Static counter to assign unique indexes. */
+  protected static int next_index = 0;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Static counter for creating unique non-terminal names */
+  static protected int next_nt = 0;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** special non-terminal for start symbol */
+  public static final non_terminal START_nt = new non_terminal("$START");
+
+  /*-----------------------------------------------------------*/
+  /*--- Static Methods ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+     
+  /** Method for creating a new uniquely named hidden non-terminal using 
+   *  the given string as a base for the name (or "NT$" if null is passed).
+   * @param prefix base name to construct unique name from. 
+   */
+  static non_terminal create_new(String prefix) throws internal_error
+    {
+      if (prefix == null) prefix = "NT$";
+      return new non_terminal(prefix + next_nt++);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** static routine for creating a new uniquely named hidden non-terminal */
+  static non_terminal create_new() throws internal_error
+    { 
+      return create_new(null); 
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Compute nullability of all non-terminals. */
+  public static void compute_nullability() throws internal_error
+    {
+      boolean      change = true;
+      non_terminal nt;
+      Enumeration  e;
+      production   prod;
+
+      /* repeat this process until there is no change */
+      while (change)
+    {
+      /* look for a new change */
+      change = false;
+
+      /* consider each non-terminal */
+      for (e=all(); e.hasMoreElements(); )
+        {
+          nt = (non_terminal)e.nextElement();
+
+          /* only look at things that aren't already marked nullable */
+          if (!nt.nullable())
+        {
+          if (nt.looks_nullable())
+            {
+              nt._nullable = true;
+              change = true;
+            }
+        }
+        }
+    }
+      
+      /* do one last pass over the productions to finalize all of them */
+      for (e=production.all(); e.hasMoreElements(); )
+    {
+      prod = (production)e.nextElement();
+      prod.set_nullable(prod.check_nullable());
+    }
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Compute first sets for all non-terminals.  This assumes nullability has
+   *  already computed.
+   */
+  public static void compute_first_sets() throws internal_error
+    {
+      boolean      change = true;
+      Enumeration  n;
+      Enumeration  p;
+      non_terminal nt;
+      production   prod;
+      terminal_set prod_first;
+
+      /* repeat this process until we have no change */
+      while (change)
+    {
+      /* look for a new change */
+      change = false;
+
+      /* consider each non-terminal */
+      for (n = all(); n.hasMoreElements(); )
+        {
+          nt = (non_terminal)n.nextElement();
+
+          /* consider every production of that non terminal */
+          for (p = nt.productions(); p.hasMoreElements(); )
+        {
+          prod = (production)p.nextElement();
+
+          /* get the updated first of that production */
+          prod_first = prod.check_first_set();
+
+          /* if this going to add anything, add it */
+          if (!prod_first.is_subset_of(nt._first_set))
+            {
+              change = true;
+              nt._first_set.add(prod_first);
+            }
+        }
+        }
+    }
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Table of all productions with this non terminal on the LHS. */
+  protected Hashtable _productions = new Hashtable(11);
+
+  /** Access to productions with this non terminal on the LHS. */
+  public Enumeration productions() {return _productions.elements();};
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Total number of productions with this non terminal on the LHS. */
+  public int num_productions() {return _productions.size();};
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Add a production to our set of productions. */
+  public void add_production(production prod) throws internal_error
+    {
+      /* catch improper productions */
+      if (prod == null || prod.lhs() == null || prod.lhs().the_symbol() != this)
+    throw new internal_error(
+      "Attempt to add invalid production to non terminal production table");
+
+      /* add it to the table, keyed with itself */
+      _productions.put(prod,prod);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Nullability of this non terminal. */
+  protected boolean _nullable;
+
+  /** Nullability of this non terminal. */
+  public boolean nullable() {return _nullable;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** First set for this non-terminal. */
+  protected terminal_set _first_set = new terminal_set();
+
+  /** First set for this non-terminal. */
+  public terminal_set first_set() {return _first_set;}
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Indicate that this symbol is a non-terminal. */
+  public boolean is_non_term() 
+    {
+      return true;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Test to see if this non terminal currently looks nullable. */
+  protected boolean looks_nullable() throws internal_error
+    {
+      /* look and see if any of the productions now look nullable */
+      for (Enumeration e = productions(); e.hasMoreElements(); )
+    /* if the production can go to empty, we are nullable */
+    if (((production)e.nextElement()).check_nullable())
+      return true;
+
+      /* none of the productions can go to empty, so we are not nullable */
+      return false;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** convert to string */
+  public String toString()
+    {
+      return super.toString() + "[" + index() + "]" + (nullable() ? "*" : "");
+    }
+
+  /*-----------------------------------------------------------*/
+};
diff --git a/tools/dasm/src/java_cup/parse_action.java b/tools/dasm/src/java_cup/parse_action.java
new file mode 100644
index 0000000..1adc92b
--- /dev/null
+++ b/tools/dasm/src/java_cup/parse_action.java
@@ -0,0 +1,87 @@
+
+package java_cup;
+
+/** This class serves as the base class for entries in a parse action table.  
+ *  Full entries will either be SHIFT(state_num), REDUCE(production), or ERROR.
+ *  Objects of this base class will default to ERROR, while the other two 
+ *  types will be  represented by subclasses.
+ * 
+ * @see     java_cup.reduce_action
+ * @see     java_cup.shift_action
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+
+public class parse_action {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Simple constructor. */
+  public parse_action()
+    {
+      /* nothing to do in the base class */
+    }
+
+ 
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Static (Class) Variables ------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Constant for action type -- error action. */
+  public static final int ERROR = 0;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Constant for action type -- shift action. */
+  public static final int SHIFT = 1;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Constants for action type -- reduce action. */
+  public static final int REDUCE = 2;
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+     
+  /** Quick access to the type -- base class defaults to error. */
+  public int kind() {return ERROR;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Equality test. */
+  public boolean equals(parse_action other)
+    {
+      /* we match all error actions */
+      return other != null && other.kind() == ERROR;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Generic equality test. */
+  public boolean equals(Object other)
+    {
+      if (other instanceof parse_action)
+    return equals((parse_action)other);
+      else
+    return false;
+    }
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Compute a hash code. */
+  public int hashCode()
+    {
+      /* all objects of this class hash together */
+      return 0xCafe123;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Convert to string. */
+  public String toString() {return "ERROR";}
+
+  /*-----------------------------------------------------------*/
+};
+    
diff --git a/tools/dasm/src/java_cup/parse_action_row.java b/tools/dasm/src/java_cup/parse_action_row.java
new file mode 100644
index 0000000..d12b0af
--- /dev/null
+++ b/tools/dasm/src/java_cup/parse_action_row.java
@@ -0,0 +1,106 @@
+
+package java_cup;
+
+/** This class represents one row (corresponding to one machine state) of the 
+ *  parse action table.
+ */
+public class parse_action_row {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+           
+  /** Simple constructor.  Note: this should not be used until the number of
+   *  terminals in the grammar has been established.
+   */
+  public parse_action_row()
+    {
+      /* make sure the size is set */
+      if (_size <= 0 )  _size = terminal.number();
+
+      /* allocate the array */
+      under_term = new parse_action[size()];
+
+      /* set each element to an error action */
+      for (int i=0; i<_size; i++)
+    under_term[i] = new parse_action();
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Static (Class) Variables ------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Number of columns (terminals) in every row. */
+  protected static int _size = 0;
+
+  /** Number of columns (terminals) in every row. */
+  public static int size() {return _size;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Table of reduction counts (reused by compute_default()). */
+  protected static int reduction_count[] = null;
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Actual action entries for the row. */
+  public parse_action under_term[];
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Default (reduce) action for this row.  -1 will represent default 
+   *  of error. 
+   */
+  public int default_reduce;
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+    
+  /** Compute the default (reduce) action for this row and store it in 
+   *  default_reduce.  In the case of non-zero default we will have the 
+   *  effect of replacing all errors by that reduction.  This may cause 
+   *  us to do erroneous reduces, but will never cause us to shift past 
+   *  the point of the error and never cause an incorrect parse.  -1 will 
+   *  be used to encode the fact that no reduction can be used as a 
+   *  default (in which case error will be used).
+   */
+  public void compute_default()
+    {
+      int i, prod, max_prod, max_red;
+
+      /* if we haven't allocated the count table, do so now */
+      if (reduction_count == null) 
+    reduction_count = new int[production.number()];
+
+      /* clear the reduction count table and maximums */
+      for (i = 0; i < production.number(); i++)
+    reduction_count[i] = 0;
+      max_prod = -1;
+      max_red = 0;
+     
+      /* walk down the row and look at the reduces */
+      for (i = 0; i < size(); i++)
+    if (under_term[i].kind() == parse_action.REDUCE)
+      {
+        /* count the reduce in the proper production slot and keep the 
+           max up to date */
+        prod = ((reduce_action)under_term[i]).reduce_with().index();
+        reduction_count[prod]++;
+        if (reduction_count[prod] > max_red)
+          {
+        max_red = reduction_count[prod];
+        max_prod = prod;
+          }
+      }
+
+       /* record the max as the default (or -1 for not found) */
+       default_reduce = max_prod;
+    }
+
+  /*-----------------------------------------------------------*/
+
+};
+
diff --git a/tools/dasm/src/java_cup/parse_action_table.java b/tools/dasm/src/java_cup/parse_action_table.java
new file mode 100644
index 0000000..002b1d8
--- /dev/null
+++ b/tools/dasm/src/java_cup/parse_action_table.java
@@ -0,0 +1,143 @@
+
+package java_cup;
+
+import java.util.Enumeration;
+
+/** This class represents the complete "action" table of the parser. 
+ *  It has one row for each state in the parse machine, and a column for
+ *  each terminal symbol.  Each entry in the table represents a shift,
+ *  reduce, or an error.  
+ *
+ * @see     java_cup.parse_action
+ * @see     java_cup.parse_action_row
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+public class parse_action_table {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Simple constructor.  All terminals, non-terminals, and productions must 
+   *  already have been entered, and the viable prefix recognizer should
+   *  have been constructed before this is called.
+   */
+  public parse_action_table()
+    {
+      /* determine how many states we are working with */
+      _num_states = lalr_state.number();
+
+      /* allocate the array and fill it in with empty rows */
+      under_state = new parse_action_row[_num_states];
+      for (int i=0; i<_num_states; i++)
+    under_state[i] = new parse_action_row();
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** How many rows/states are in the machine/table. */
+  protected int _num_states;
+
+  /** How many rows/states are in the machine/table. */
+  public int num_states() {return _num_states;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Actual array of rows, one per state. */
+  public  parse_action_row[] under_state;
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Check the table to ensure that all productions have been reduced. 
+   *  Issue a warning message (to System.err) for each production that
+   *  is never reduced.
+   */
+  public void check_reductions()
+    throws internal_error
+    {
+      parse_action act;
+      production   prod;
+
+      /* tabulate reductions -- look at every table entry */
+      for (int row = 0; row < num_states(); row++)
+    {
+      for (int col = 0; col < under_state[row].size(); col++)
+        {
+          /* look at the action entry to see if its a reduce */
+          act = under_state[row].under_term[col];
+          if (act != null && act.kind() == parse_action.REDUCE)
+        {
+          /* tell production that we used it */
+          ((reduce_action)act).reduce_with().note_reduction_use();
+        }
+        }
+    }
+
+      /* now go across every production and make sure we hit it */
+      for (Enumeration p = production.all(); p.hasMoreElements(); )
+    {
+      prod = (production)p.nextElement();
+
+      /* if we didn't hit it give a warning */
+      if (prod.num_reductions() == 0)
+        {
+          /* count it *
+          emit.not_reduced++;
+
+          /* give a warning if they haven't been turned off */
+          if (!emit.nowarn)
+        {
+          System.err.println("*** Production \"" + 
+                  prod.to_simple_string() + "\" never reduced");
+          lexer.warning_count++;
+        }
+        }
+    }
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*
+
+  /** Convert to a string. */
+  public String toString()
+    {
+      String result;
+      int cnt;
+
+      result = "-------- ACTION_TABLE --------\n";
+      for (int row = 0; row < num_states(); row++)
+    {
+      result += "From state #" + row + "\n";
+      cnt = 0;
+      for (int col = 0; col < under_state[row].size(); col++)
+        {
+          /* if the action is not an error print it */ 
+          if (under_state[row].under_term[col].kind() != parse_action.ERROR)
+        {
+          result += col + ":" + under_state[row].under_term[col] + " ";
+
+          /* end the line after the 3rd one */
+          cnt++;
+          if (cnt == 3)
+            {
+              result += "\n";
+              cnt = 0;
+            }
+        }
+        }
+          /* finish the line if we haven't just done that */
+      if (cnt != 0) result += "\n";
+    }
+      result += "------------------------------";
+
+      return result;
+    }
+
+  /*-----------------------------------------------------------*/
+
+};
+
diff --git a/tools/dasm/src/java_cup/parse_reduce_row.java b/tools/dasm/src/java_cup/parse_reduce_row.java
new file mode 100644
index 0000000..d9adf68
--- /dev/null
+++ b/tools/dasm/src/java_cup/parse_reduce_row.java
@@ -0,0 +1,41 @@
+
+package java_cup;
+
+/** This class represents one row (corresponding to one machine state) of the 
+ *  reduce-goto parse table. 
+ */
+public class parse_reduce_row {
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Simple constructor. Note: this should not be used until the number
+   *  of terminals in the grammar has been established.
+   */
+  public parse_reduce_row()
+    {
+      /* make sure the size is set */
+      if (_size <= 0 )  _size = non_terminal.number();
+
+      /* allocate the array */
+      under_non_term = new lalr_state[size()];
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Static (Class) Variables ------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Number of columns (non terminals) in every row. */
+  protected static int _size = 0;
+
+  /** Number of columns (non terminals) in every row. */
+  public static int size() {return _size;}
+   
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Actual entries for the row. */
+  public lalr_state under_non_term[];
+};
+
diff --git a/tools/dasm/src/java_cup/parse_reduce_table.java b/tools/dasm/src/java_cup/parse_reduce_table.java
new file mode 100644
index 0000000..4f27eb5
--- /dev/null
+++ b/tools/dasm/src/java_cup/parse_reduce_table.java
@@ -0,0 +1,98 @@
+
+package java_cup;
+
+
+/** This class represents the complete "reduce-goto" table of the parser.
+ *  It has one row for each state in the parse machines, and a column for
+ *  each terminal symbol.  Each entry contains a state number to shift to
+ *  as the last step of a reduce. 
+ *
+ * @see     java_cup.parse_reduce_row
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+public class parse_reduce_table {
+ 
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Simple constructor.  Note: all terminals, non-terminals, and productions 
+   *  must already have been entered, and the viable prefix recognizer should
+   *  have been constructed before this is called.
+   */
+  public parse_reduce_table()
+    {
+      /* determine how many states we are working with */
+      _num_states = lalr_state.number();
+
+      /* allocate the array and fill it in with empty rows */
+      under_state = new parse_reduce_row[_num_states];
+      for (int i=0; i<_num_states; i++)
+    under_state[i] = new parse_reduce_row();
+    }
+
+   
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** How many rows/states in the machine/table. */
+  protected int _num_states;
+
+  /** How many rows/states in the machine/table. */
+  public int num_states() {return _num_states;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Actual array of rows, one per state */
+  public  parse_reduce_row[] under_state;
+ 
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Convert to a string. */
+  public String toString()
+    {
+      String result;
+      lalr_state goto_st;
+      int cnt;
+
+      result = "-------- REDUCE_TABLE --------\n";
+      for (int row = 0; row < num_states(); row++)
+    {
+      result += "From state #" + row + "\n";
+      cnt = 0;
+      for (int col = 0; col < under_state[row].size(); col++)
+        {
+          /* pull out the table entry */
+          goto_st = under_state[row].under_non_term[col];
+
+          /* if it has action in it, print it */
+          if (goto_st != null)
+        {
+          result += col + ":"; 
+          result += goto_st.index();
+
+          /* end the line after the 3rd one */
+          cnt++;
+          if (cnt == 3)
+            {
+              result += "\n";
+              cnt = 0;
+            }
+        }
+        }
+          /* finish the line if we haven't just done that */
+      if (cnt != 0) result += "\n";
+    }
+      result += "-----------------------------";
+
+      return result;
+    }
+
+  /*-----------------------------------------------------------*/
+
+};
+
diff --git a/tools/dasm/src/java_cup/parser.cup b/tools/dasm/src/java_cup/parser.cup
new file mode 100644
index 0000000..a64584e
--- /dev/null
+++ b/tools/dasm/src/java_cup/parser.cup
@@ -0,0 +1,620 @@
+
+/*================================================================*/
+/*
+  JavaCup Specification for the JavaCup Specification Language
+  by Scott Hudson, GVU Center, Georgia Tech, August 1995
+
+  This JavaCup specification is used to implement JavaCup itself.
+  It specifies the parser for the JavaCup specification language.
+  (It also serves as a reasonable example of what a typical JavaCup
+  spec looks like).
+
+  The specification has the following parts:
+    Package and import declarations
+      These serve the same purpose as in a normal Java source file
+      (and will appear in the generated code for the parser). In this
+      case we are part of the java_cup package and we import both the
+      java_cup runtime system and Hashtable from the standard Java
+      utilities package.
+
+    Action code
+      This section provides code that is included with the class encapsulating
+      the various pieces of user code embedded in the grammar (i.e., the
+      semantic actions).  This provides a series of helper routines and
+      data structures that the semantic actions use.
+
+    Parser code
+      This section provides code included in the parser class itself.  In
+      this case we override the default error reporting routines.
+
+    Init with and scan with
+      These sections provide small bits of code that initialize, then
+      indicate how to invoke the scanner.
+
+    Symbols and grammar
+      These sections declare all the terminal and non terminal symbols
+      and the types of objects that they will be represented by at runtime,
+      then indicate the start symbol of the grammar (), and finally provide
+      the grammar itself (with embedded actions).
+
+    Operation of the parser
+      The parser acts primarily by accumulating data structures representing
+      various parts of the specification.  Various small parts (e.g., single
+      code strings) are stored as static variables of the emit class and
+      in a few cases as variables declared in the action code section.
+      Terminals, non terminals, and productions, are maintained as collection
+      accessible via static methods of those classes.  In addition, two
+      symbol tables are kept:
+    symbols   maintains the name to object mapping for all symbols
+    non_terms maintains a separate mapping containing only the non terms
+
+      Several intermediate working structures are also declared in the action
+      code section.  These include: rhs_parts, rhs_pos, and lhs_nt which
+      build up parts of the current production while it is being parsed.
+
+  Author(s)
+    Scott Hudson, GVU Center, Georgia Tech.
+
+  Revisions
+    v0.9a   First released version                     [SEH] 8/29/95
+    v0.9b   Updated for beta language (throws clauses) [SEH] 11/25/95
+*/
+/*================================================================*/
+
+package java_cup;
+import java_cup.runtime.*;
+import java.util.Hashtable;
+
+/*----------------------------------------------------------------*/
+
+action code {:
+  /** helper routine to clone a new production part adding a given label */
+  protected production_part add_lab(production_part part, String lab)
+    throws internal_error
+    {
+      /* if there is no label, or this is an action, just return the original */
+      if (lab == null || part.is_action()) return part;
+
+      /* otherwise build a new one with the given label attached */
+      return new symbol_part(((symbol_part)part).the_symbol(),lab);
+    }
+
+  /** max size of right hand side we will support */
+  protected final int MAX_RHS = 200;
+
+  /** array for accumulating right hand side parts */
+  protected production_part[] rhs_parts = new production_part[MAX_RHS];
+
+  /** where we are currently in building a right hand side */
+  protected int rhs_pos = 0;
+
+  /** start a new right hand side */
+  protected void new_rhs() {rhs_pos = 0; }
+
+  /** add a new right hand side part */
+  protected void add_rhs_part(production_part part) throws java.lang.Exception
+    {
+      if (rhs_pos >= MAX_RHS)
+    throw new Exception("Internal Error: Productions limited to " +
+                 MAX_RHS + " symbols and actions");
+
+      rhs_parts[rhs_pos] = part;
+      rhs_pos++;
+    }
+
+  /** string to build up multiple part names */
+  protected String multipart_name = new String();
+
+  /** append a new name segment to the accumulated multipart name */
+  protected void append_multipart(String name)
+    {
+      String dot = "";
+
+      /* if we aren't just starting out, put on a dot */
+      if (multipart_name.length() != 0)  dot = ".";
+
+      multipart_name = multipart_name.concat(dot + name);
+    }
+
+  /** table of declared symbols -- contains production parts indexed by name */
+  protected Hashtable symbols = new Hashtable();
+
+  /** table of just non terminals -- contains non_terminals indexed by name */
+  protected Hashtable non_terms = new Hashtable();
+
+  /** declared start non_terminal */
+  protected non_terminal start_nt = null;
+
+  /** left hand side non terminal of the current production */
+  protected non_terminal lhs_nt;
+
+:};
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+parser code {:
+
+  /* override error routines */
+
+  public void report_fatal_error(
+    String   message,
+    Object   info)
+    {
+      done_parsing();
+      lexer.emit_error(message);
+      System.err.println("Can't recover from previous error(s), giving up.");
+      System.exit(1);
+    }
+
+    public void report_error(String message, Object info)
+    {
+      lexer.emit_error(message);
+    }
+:};
+
+/*----------------------------------------------------------------*/
+
+init with {: lexer.init(); :};
+scan with {: return lexer.next_token(); :};
+
+/*----------------------------------------------------------------*/
+
+terminal java_cup.runtime.token
+  PACKAGE, IMPORT, CODE, ACTION, PARSER, TERMINAL, NON, INIT, SCAN, WITH,
+  START, SEMI, COMMA, STAR, DOT, COLON, COLON_COLON_EQUALS, BAR,
+  DEBUG;
+
+terminal java_cup.runtime.str_token  ID, CODE_STRING;
+
+non terminal java_cup.runtime.symbol
+  spec, package_spec, import_list, code_part, action_code_part,
+  parser_code_part, symbol_list, start_spec, production_list,
+  multipart_id, import_spec, import_id, init_code, scan_code, symbol,
+  debug_grammar,
+  type_id, term_name_list, non_term_name_list, production, prod_part_list,
+  prod_part, new_term_id, new_non_term_id, rhs_list, rhs, empty;
+
+non terminal java_cup.runtime.str_token  nt_id, symbol_id, label_id, opt_label;
+
+/*----------------------------------------------------------------*/
+
+start with spec;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+spec ::=
+    {:
+          /* declare "error" as a terminal */
+          symbols.put("error", new symbol_part(terminal.error));
+
+          /* declare start non terminal */
+          non_terms.put("$START", non_terminal.START_nt);
+    :}
+    package_spec
+    import_list
+    code_part
+        debug_grammar
+        init_code
+    scan_code
+    symbol_list
+    start_spec
+    production_list
+    |
+    /* error recovery assuming something went wrong before symbols
+       and we have TERMINAL or NON TERMINAL to sync on.  if we get
+       an error after that, we recover inside symbol_list or
+       production_list
+    */
+    error
+    symbol_list
+    start_spec
+    production_list
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+package_spec ::=
+    PACKAGE
+    multipart_id
+    {:
+      /* save the package name */
+      emit.package_name = multipart_name;
+
+      /* reset the accumulated multipart name */
+      multipart_name = new String();
+    :}
+    SEMI
+    |
+    empty
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+import_list ::=
+    import_list
+    import_spec
+    |
+    empty
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+import_spec ::=
+    IMPORT
+    import_id
+    {:
+      /* save this import on the imports list */
+      emit.import_list.push(multipart_name);
+
+      /* reset the accumulated multipart name */
+      multipart_name = new String();
+    :}
+    SEMI
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+code_part ::= action_code_part parser_code_part ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+action_code_part ::=
+    ACTION CODE CODE_STRING:user_code SEMI
+    {:
+      /* save the user included code string */
+      emit.action_code = user_code.str_val;
+    :}
+    |
+    empty
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+parser_code_part ::=
+    PARSER CODE CODE_STRING:user_code SEMI
+    {:
+      /* save the user included code string */
+      emit.parser_code = user_code.str_val;
+    :}
+    |
+    empty
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+init_code ::=
+    INIT WITH CODE_STRING:user_code SEMI
+    {:
+      /* save the user code */
+      emit.init_code = user_code.str_val;
+    :}
+    |
+    empty
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+scan_code ::=
+    SCAN WITH CODE_STRING:user_code SEMI
+    {:
+      /* save the user code */
+      emit.scan_code = user_code.str_val;
+    :}
+    |
+    empty
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+debug_grammar ::=
+        DEBUG WITH multipart_id SEMI
+    {:
+      /* save the procedure name */
+          emit.debug_grammar = multipart_name;
+          /* reset the accumulated multipart name */
+          multipart_name = new String();
+    :}
+    |
+    empty
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+symbol_list ::= symbol_list symbol | symbol;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+symbol ::=
+    TERMINAL
+    type_id
+    term_name_list
+    {:
+      /* reset the accumulated multipart name */
+      multipart_name = new String();
+    :}
+    SEMI
+    |
+    NON
+    TERMINAL
+    type_id
+    non_term_name_list
+    {:
+      /* reset the accumulated multipart name */
+      multipart_name = new String();
+    :}
+    SEMI
+    |
+
+    /* error recovery productions -- sync on semicolon */
+
+    TERMINAL
+    error
+    {:
+      /* reset the accumulated multipart name */
+      multipart_name = new String();
+    :}
+    SEMI
+    |
+    NON
+    TERMINAL
+    error
+    {:
+      /* reset the accumulated multipart name */
+      multipart_name = new String();
+    :}
+    SEMI
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+term_name_list ::= term_name_list COMMA new_term_id | new_term_id;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+non_term_name_list ::=
+    non_term_name_list
+    COMMA
+    new_non_term_id
+    |
+    new_non_term_id
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+start_spec ::=
+    START WITH nt_id:start_name
+    {:
+      /* verify that the name has been declared as a non terminal */
+      non_terminal nt = (non_terminal)non_terms.get(start_name.str_val);
+      if (nt == null)
+        {
+          lexer.emit_error( "Start non terminal \"" + start_name.str_val +
+                       "\" has not been declared");
+        }
+          else
+        {
+          /* remember the non-terminal for later */
+          start_nt = nt;
+
+          /* build a special start production */
+          new_rhs();
+          add_rhs_part(new symbol_part(start_nt));
+          add_rhs_part(new symbol_part(terminal.EOF));
+          emit.start_production =
+             new production(non_terminal.START_nt, rhs_parts, rhs_pos);
+          new_rhs();
+        }
+    :}
+    SEMI
+    |
+    empty
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+production_list ::= production_list production | production;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+production ::=
+    nt_id:lhs_id
+    {:
+      /* lookup the lhs nt */
+      lhs_nt = (non_terminal)non_terms.get(lhs_id.str_val);
+
+          /* if it wasn't declared, emit a message */
+      if (lhs_nt == null)
+        {
+          if (lexer.error_count == 0)
+            lexer.emit_error("LHS non terminal \"" + lhs_id.str_val +
+                   "\" has not been declared");
+        }
+
+      /* reset the rhs accumulation */
+      new_rhs();
+    :}
+    COLON_COLON_EQUALS
+    rhs_list
+    SEMI
+    |
+    error
+    {: lexer.emit_error("Syntax Error"); :}
+    SEMI
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+rhs_list ::= rhs_list BAR rhs | rhs;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+rhs ::=
+    prod_part_list
+    {:
+      if (lhs_nt != null)
+        {
+          /* build the production */
+          production p = new production(lhs_nt, rhs_parts, rhs_pos);
+
+          /* if we have no start non-terminal declared and this is
+         the first production, make its lhs nt the start_nt
+         and build a special start production for it. */
+              if (start_nt == null)
+        {
+          start_nt = lhs_nt;
+
+              /* build a special start production */
+              new_rhs();
+              add_rhs_part(new symbol_part(start_nt));
+              add_rhs_part(new symbol_part(terminal.EOF));
+              emit.start_production =
+             new production(non_terminal.START_nt, rhs_parts, rhs_pos);
+              new_rhs();
+        }
+        }
+
+      /* reset the rhs accumulation in any case */
+      new_rhs();
+    :}
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+prod_part_list ::= prod_part_list prod_part | empty;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+prod_part ::=
+    symbol_id:symid opt_label:labid
+    {:
+      /* try to look up the id */
+      production_part symb = (production_part)symbols.get(symid.str_val);
+
+      /* if that fails, symbol is undeclared */
+      if (symb == null)
+        {
+          if (lexer.error_count == 0)
+            lexer.emit_error("Symbol \"" + symid.str_val +
+                   "\" has not been declared");
+        }
+      else
+        {
+          /* add a labeled production part */
+          add_rhs_part(add_lab(symb, labid.str_val));
+        }
+    :}
+    |
+    CODE_STRING:code_str
+    {:
+      /* add a new production part */
+      add_rhs_part(new action_part(code_str.str_val));
+    :}
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+opt_label ::=
+    COLON label_id:labid
+    {: RESULT.str_val = labid.str_val; :}
+    |
+    empty
+    {: RESULT.str_val = null; :}
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+multipart_id ::=
+    multipart_id DOT ID:another_id
+    {: append_multipart(another_id.str_val); :}
+    |
+    ID:an_id
+    {: append_multipart(an_id.str_val); :}
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+import_id ::=
+    multipart_id DOT STAR
+    {: append_multipart("*"); :}
+    |
+    multipart_id
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+type_id ::= multipart_id;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+new_term_id ::=
+    ID:term_id
+    {:
+      /* see if this terminal has been declared before */
+      if (symbols.get(term_id.str_val) != null)
+        {
+          /* issue a message */
+          lexer.emit_error("Symbol \"" + term_id.str_val +
+               "\" has already been declared");
+        }
+      else
+        {
+          /* build a production_part and put it in the table */
+          symbols.put(term_id.str_val,
+            new symbol_part(new terminal(term_id.str_val, multipart_name)));
+        }
+    :}
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+new_non_term_id ::=
+    ID:non_term_id
+    {:
+      /* see if this non terminal has been declared before */
+      if (symbols.get(non_term_id.str_val) != null)
+        {
+          /* issue a message */
+          lexer.emit_error( "Symbol \"" + non_term_id.str_val +
+                                  "\" has already been declared");
+        }
+      else
+        {
+          /* build the non terminal object */
+              non_terminal this_nt =
+        new non_terminal(non_term_id.str_val, multipart_name);
+
+          /* put it in the non_terms table */
+          non_terms.put(non_term_id.str_val, this_nt);
+
+          /* build a production_part and put it in the symbols table */
+          symbols.put(non_term_id.str_val, new symbol_part(this_nt));
+        }
+    :}
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+nt_id ::=
+    ID:the_id
+    {: RESULT.str_val = the_id.str_val; :}
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+symbol_id ::=
+    ID:the_id
+    {: RESULT.str_val = the_id.str_val; :}
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+label_id ::=
+    ID:the_id
+    {: RESULT.str_val = the_id.str_val; :}
+    ;
+
+/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */
+
+empty ::= /* nothing */;
+
+/*----------------------------------------------------------------*/
diff --git a/tools/dasm/src/java_cup/parser.java b/tools/dasm/src/java_cup/parser.java
new file mode 100644
index 0000000..3230281
--- /dev/null
+++ b/tools/dasm/src/java_cup/parser.java
@@ -0,0 +1,1130 @@
+
+//----------------------------------------------------
+// The following code was generated by Java(tm) CUP v0.9d
+// Thu Aug 10 03:51:39 MSD 2006
+//----------------------------------------------------
+
+package java_cup;
+
+import java.util.Hashtable;
+
+public class parser extends java_cup.runtime.lr_parser {
+
+  /** constructor */
+  public parser() {super();}
+
+  /** production table */
+  protected static final short _production_table[][] = {
+        {0, 2},     {32, 0},     {1, 10},     {1, 4},     {33, 0}, 
+        {2, 4},     {2, 1},     {3, 2},     {3, 1},     {34, 0}, 
+        {11, 4},     {4, 2},     {5, 4},     {5, 1},     {6, 4}, 
+        {6, 1},     {13, 4},     {13, 1},     {14, 4},     {14, 1}, 
+        {16, 4},     {16, 1},     {7, 2},     {7, 1},     {35, 0}, 
+        {15, 5},     {36, 0},     {15, 6},     {37, 0},     {15, 4}, 
+        {38, 0},     {15, 5},     {18, 3},     {18, 1},     {19, 3}, 
+        {19, 1},     {39, 0},     {8, 5},     {8, 1},     {9, 2}, 
+        {9, 1},     {40, 0},     {20, 5},     {41, 0},     {20, 3}, 
+        {25, 3},     {25, 1},     {26, 1},     {21, 2},     {21, 1}, 
+        {22, 2},     {22, 1},     {31, 2},     {31, 1},     {10, 3}, 
+        {10, 1},     {12, 3},     {12, 1},     {17, 1},     {23, 1}, 
+        {24, 1},     {28, 1},     {29, 1},     {30, 1},     {27, 0}
+      };
+
+  /** access to production table */
+  public short[][] production_table() {return _production_table;}
+
+  /** parse action table */
+  protected static final short[][] _action_table = {
+    /*0*/{1,3,2,-2,3,-2,5,-2,6,-2,7,-2,8,-2,9,-2,10,-2,20,-2,-1,0},
+    /*1*/{0,120,-1,0},
+    /*2*/{7,34,8,36,-1,0},
+    /*3*/{2,7,3,-65,5,-65,6,-65,7,-65,8,-65,9,-65,10,-65,20,-65,-1,0},
+    /*4*/{3,-65,5,-65,6,-65,7,-65,8,-65,9,-65,10,-65,20,-65,-1,0},
+    /*5*/{3,-7,5,-7,6,-7,7,-7,8,-7,9,-7,10,-7,20,-7,-1,0},
+    /*6*/{21,8,-1,0},
+    /*7*/{13,-56,16,-56,21,-56,-1,0},
+    /*8*/{13,-5,16,11,-1,0},
+    /*9*/{13,13,-1,0},
+    /*10*/{21,12,-1,0},
+    /*11*/{13,-55,16,-55,21,-55,-1,0},
+    /*12*/{3,-6,5,-6,6,-6,7,-6,8,-6,9,-6,10,-6,20,-6,-1,0},
+    /*13*/{3,17,5,18,6,-65,7,-65,8,-65,9,-65,10,-65,20,-65,-1,0},
+    /*14*/{3,-9,5,-9,6,-9,7,-9,8,-9,9,-9,10,-9,20,-9,-1,0},
+    /*15*/{3,-8,5,-8,6,-8,7,-8,8,-8,9,-8,10,-8,20,-8,-1,0},
+    /*16*/{21,8,-1,0},
+    /*17*/{4,108,-1,0},
+    /*18*/{6,103,7,-65,8,-65,9,-65,10,-65,20,-65,-1,0},
+    /*19*/{6,-14,7,-14,8,-14,9,-14,10,-14,20,-14,-1,0},
+    /*20*/{7,-65,8,-65,9,-65,10,-65,20,22,-1,0},
+    /*21*/{11,99,-1,0},
+    /*22*/{7,-22,8,-22,9,-22,10,-22,-1,0},
+    /*23*/{7,-65,8,-65,9,25,10,-65,-1,0},
+    /*24*/{11,96,-1,0},
+    /*25*/{7,-65,8,-65,10,29,-1,0},
+    /*26*/{7,-18,8,-18,10,-18,-1,0},
+    /*27*/{7,34,8,36,-1,0},
+    /*28*/{11,31,-1,0},
+    /*29*/{7,-20,8,-20,-1,0},
+    /*30*/{22,32,-1,0},
+    /*31*/{13,33,-1,0},
+    /*32*/{7,-19,8,-19,-1,0},
+    /*33*/{1,85,21,8,-1,0},
+    /*34*/{1,-24,7,-24,8,-24,12,-24,21,-24,-1,0},
+    /*35*/{7,72,-1,0},
+    /*36*/{1,-65,7,34,8,36,12,41,21,-65,-1,0},
+    /*37*/{1,47,21,43,-1,0},
+    /*38*/{1,-39,21,-39,-1,0},
+    /*39*/{1,-23,7,-23,8,-23,12,-23,21,-23,-1,0},
+    /*40*/{11,42,-1,0},
+    /*41*/{21,43,-1,0},
+    /*42*/{13,-62,18,-62,-1,0},
+    /*43*/{13,-37,-1,0},
+    /*44*/{13,46,-1,0},
+    /*45*/{1,-38,21,-38,-1,0},
+    /*46*/{13,-44,-1,0},
+    /*47*/{18,-42,-1,0},
+    /*48*/{0,-3,1,47,21,43,-1,0},
+    /*49*/{0,-41,1,-41,21,-41,-1,0},
+    /*50*/{0,-40,1,-40,21,-40,-1,0},
+    /*51*/{18,53,-1,0},
+    /*52*/{13,-65,19,-65,21,-65,22,-65,-1,0},
+    /*53*/{13,68,19,67,-1,0},
+    /*54*/{13,-50,19,-50,21,-50,22,-50,-1,0},
+    /*55*/{13,-48,19,-48,21,59,22,58,-1,0},
+    /*56*/{13,-47,19,-47,-1,0},
+    /*57*/{13,-52,19,-52,21,-52,22,-52,-1,0},
+    /*58*/{13,-63,17,-63,19,-63,21,-63,22,-63,-1,0},
+    /*59*/{13,-65,17,62,19,-65,21,-65,22,-65,-1,0},
+    /*60*/{13,-49,19,-49,21,-49,22,-49,-1,0},
+    /*61*/{21,65,-1,0},
+    /*62*/{13,-54,19,-54,21,-54,22,-54,-1,0},
+    /*63*/{13,-51,19,-51,21,-51,22,-51,-1,0},
+    /*64*/{13,-64,21,-64,22,-64,-1,0},
+    /*65*/{13,-53,21,-53,22,-53,-1,0},
+    /*66*/{13,-65,19,-65,21,-65,22,-65,-1,0},
+    /*67*/{0,-43,1,-43,21,-43,-1,0},
+    /*68*/{13,-46,19,-46,-1,0},
+    /*69*/{13,71,-1,0},
+    /*70*/{0,-45,1,-45,21,-45,-1,0},
+    /*71*/{1,73,21,8,-1,0},
+    /*72*/{13,-31,-1,0},
+    /*73*/{16,11,21,-59,-1,0},
+    /*74*/{21,76,-1,0},
+    /*75*/{13,-61,14,-61,-1,0},
+    /*76*/{13,-27,14,79,-1,0},
+    /*77*/{13,-36,14,-36,-1,0},
+    /*78*/{21,76,-1,0},
+    /*79*/{13,81,-1,0},
+    /*80*/{1,-28,7,-28,8,-28,12,-28,21,-28,-1,0},
+    /*81*/{13,-35,14,-35,-1,0},
+    /*82*/{13,84,-1,0},
+    /*83*/{1,-32,7,-32,8,-32,12,-32,21,-32,-1,0},
+    /*84*/{13,-29,-1,0},
+    /*85*/{21,87,-1,0},
+    /*86*/{13,-60,14,-60,-1,0},
+    /*87*/{13,-34,14,-34,-1,0},
+    /*88*/{13,-25,14,91,-1,0},
+    /*89*/{13,93,-1,0},
+    /*90*/{21,87,-1,0},
+    /*91*/{13,-33,14,-33,-1,0},
+    /*92*/{1,-26,7,-26,8,-26,12,-26,21,-26,-1,0},
+    /*93*/{13,95,-1,0},
+    /*94*/{1,-30,7,-30,8,-30,12,-30,21,-30,-1,0},
+    /*95*/{22,97,-1,0},
+    /*96*/{13,98,-1,0},
+    /*97*/{7,-17,8,-17,10,-17,-1,0},
+    /*98*/{21,8,-1,0},
+    /*99*/{13,101,16,11,-1,0},
+    /*100*/{7,-21,8,-21,9,-21,10,-21,-1,0},
+    /*101*/{7,-16,8,-16,9,-16,10,-16,20,-16,-1,0},
+    /*102*/{4,105,-1,0},
+    /*103*/{7,-12,8,-12,9,-12,10,-12,20,-12,-1,0},
+    /*104*/{22,106,-1,0},
+    /*105*/{13,107,-1,0},
+    /*106*/{7,-15,8,-15,9,-15,10,-15,20,-15,-1,0},
+    /*107*/{22,109,-1,0},
+    /*108*/{13,110,-1,0},
+    /*109*/{6,-13,7,-13,8,-13,9,-13,10,-13,20,-13,-1,0},
+    /*110*/{13,-58,16,115,-1,0},
+    /*111*/{13,-10,-1,0},
+    /*112*/{13,114,-1,0},
+    /*113*/{3,-11,5,-11,6,-11,7,-11,8,-11,9,-11,10,-11,20,-11,-1,0},
+    /*114*/{15,116,21,12,-1,0},
+    /*115*/{13,-57,-1,0},
+    /*116*/{1,-65,7,34,8,36,12,41,21,-65,-1,0},
+    /*117*/{1,47,21,43,-1,0},
+    /*118*/{0,-4,1,47,21,43,-1,0},
+    /*119*/{0,-1,-1,0},
+  };
+
+  /** access to parse action table */
+  public short[][] action_table() {return _action_table;}
+
+  /** reduce_goto table */
+  protected static final short[][] _reduce_table = {
+    /*0*/{1,1,32,3,-1,-1},
+    /*1*/{-1,-1},
+    /*2*/{7,116,15,34,-1,-1},
+    /*3*/{2,4,27,5,-1,-1},
+    /*4*/{3,13,27,14,-1,-1},
+    /*5*/{-1,-1},
+    /*6*/{10,8,-1,-1},
+    /*7*/{-1,-1},
+    /*8*/{33,9,-1,-1},
+    /*9*/{-1,-1},
+    /*10*/{-1,-1},
+    /*11*/{-1,-1},
+    /*12*/{-1,-1},
+    /*13*/{4,20,5,18,11,15,27,19,-1,-1},
+    /*14*/{-1,-1},
+    /*15*/{-1,-1},
+    /*16*/{10,110,12,111,-1,-1},
+    /*17*/{-1,-1},
+    /*18*/{6,103,27,101,-1,-1},
+    /*19*/{-1,-1},
+    /*20*/{16,23,27,22,-1,-1},
+    /*21*/{-1,-1},
+    /*22*/{-1,-1},
+    /*23*/{13,25,27,26,-1,-1},
+    /*24*/{-1,-1},
+    /*25*/{14,27,27,29,-1,-1},
+    /*26*/{-1,-1},
+    /*27*/{7,36,15,34,-1,-1},
+    /*28*/{-1,-1},
+    /*29*/{-1,-1},
+    /*30*/{-1,-1},
+    /*31*/{-1,-1},
+    /*32*/{-1,-1},
+    /*33*/{10,73,17,85,-1,-1},
+    /*34*/{-1,-1},
+    /*35*/{-1,-1},
+    /*36*/{8,37,15,39,27,38,-1,-1},
+    /*37*/{9,48,20,49,28,47,-1,-1},
+    /*38*/{-1,-1},
+    /*39*/{-1,-1},
+    /*40*/{-1,-1},
+    /*41*/{28,43,-1,-1},
+    /*42*/{-1,-1},
+    /*43*/{39,44,-1,-1},
+    /*44*/{-1,-1},
+    /*45*/{-1,-1},
+    /*46*/{41,69,-1,-1},
+    /*47*/{40,51,-1,-1},
+    /*48*/{20,50,28,47,-1,-1},
+    /*49*/{-1,-1},
+    /*50*/{-1,-1},
+    /*51*/{-1,-1},
+    /*52*/{21,55,25,53,26,56,27,54,-1,-1},
+    /*53*/{-1,-1},
+    /*54*/{-1,-1},
+    /*55*/{22,60,29,59,-1,-1},
+    /*56*/{-1,-1},
+    /*57*/{-1,-1},
+    /*58*/{-1,-1},
+    /*59*/{27,62,31,63,-1,-1},
+    /*60*/{-1,-1},
+    /*61*/{30,65,-1,-1},
+    /*62*/{-1,-1},
+    /*63*/{-1,-1},
+    /*64*/{-1,-1},
+    /*65*/{-1,-1},
+    /*66*/{21,55,26,68,27,54,-1,-1},
+    /*67*/{-1,-1},
+    /*68*/{-1,-1},
+    /*69*/{-1,-1},
+    /*70*/{-1,-1},
+    /*71*/{10,73,17,74,-1,-1},
+    /*72*/{38,82,-1,-1},
+    /*73*/{-1,-1},
+    /*74*/{19,76,24,77,-1,-1},
+    /*75*/{-1,-1},
+    /*76*/{36,79,-1,-1},
+    /*77*/{-1,-1},
+    /*78*/{24,81,-1,-1},
+    /*79*/{-1,-1},
+    /*80*/{-1,-1},
+    /*81*/{-1,-1},
+    /*82*/{-1,-1},
+    /*83*/{-1,-1},
+    /*84*/{37,93,-1,-1},
+    /*85*/{18,88,23,87,-1,-1},
+    /*86*/{-1,-1},
+    /*87*/{-1,-1},
+    /*88*/{35,89,-1,-1},
+    /*89*/{-1,-1},
+    /*90*/{23,91,-1,-1},
+    /*91*/{-1,-1},
+    /*92*/{-1,-1},
+    /*93*/{-1,-1},
+    /*94*/{-1,-1},
+    /*95*/{-1,-1},
+    /*96*/{-1,-1},
+    /*97*/{-1,-1},
+    /*98*/{10,99,-1,-1},
+    /*99*/{-1,-1},
+    /*100*/{-1,-1},
+    /*101*/{-1,-1},
+    /*102*/{-1,-1},
+    /*103*/{-1,-1},
+    /*104*/{-1,-1},
+    /*105*/{-1,-1},
+    /*106*/{-1,-1},
+    /*107*/{-1,-1},
+    /*108*/{-1,-1},
+    /*109*/{-1,-1},
+    /*110*/{-1,-1},
+    /*111*/{34,112,-1,-1},
+    /*112*/{-1,-1},
+    /*113*/{-1,-1},
+    /*114*/{-1,-1},
+    /*115*/{-1,-1},
+    /*116*/{8,117,15,39,27,38,-1,-1},
+    /*117*/{9,118,20,49,28,47,-1,-1},
+    /*118*/{20,50,28,47,-1,-1},
+    /*119*/{-1,-1},
+  };
+
+  /** access to reduce_goto table */
+  public short[][] reduce_table() {return _reduce_table;}
+
+  /** instance of action encapsulation class */
+  protected CUP$actions action_obj;
+
+  /** action encapsulation object initializer */
+  protected void init_actions()
+    {
+      action_obj = new CUP$actions();
+    }
+
+  /** invoke a user supplied parse action */
+  public java_cup.runtime.symbol do_action(
+    int                        act_num,
+    java_cup.runtime.lr_parser parser,
+    java.util.Stack            stack,
+    int                        top)
+    throws java.lang.Exception
+  {
+    /* call code in generated class */
+    return action_obj.CUP$do_action(act_num, parser, stack, top);
+  }
+
+  /** start state */
+  public int start_state() {return 0;}
+  /** start production */
+  public int start_production() {return 0;}
+
+  /** EOF symbol index */
+  public int EOF_sym() {return 0;}
+
+  /** error symbol index */
+  public int error_sym() {return 1;}
+
+
+  /** user initialization */
+  public void user_init() throws java.lang.Exception
+    {
+ lexer.init(); 
+    }
+
+  /** scan to get the next token */
+  public java_cup.runtime.token scan()
+    throws java.lang.Exception
+    {
+ return lexer.next_token(); 
+    }
+
+
+
+  /* override error routines */
+
+  public void report_fatal_error(
+    String   message,
+    Object   info)
+    {
+      done_parsing();
+      lexer.emit_error(message);
+      System.err.println("Can't recover from previous error(s), giving up.");
+      System.exit(1);
+    }
+
+    public void report_error(String message, Object info)
+    {
+      lexer.emit_error(message);
+    }
+
+};
+
+/** JavaCup generated class to encapsulate user supplied action code.*/
+class CUP$actions {
+
+
+  /** helper routine to clone a new production part adding a given label */
+  protected production_part add_lab(production_part part, String lab)
+    throws internal_error
+    {
+      /* if there is no label, or this is an action, just return the original */
+      if (lab == null || part.is_action()) return part;
+
+      /* otherwise build a new one with the given label attached */
+      return new symbol_part(((symbol_part)part).the_symbol(),lab);
+    }
+
+  /** max size of right hand side we will support */
+  protected final int MAX_RHS = 200;
+
+  /** array for accumulating right hand side parts */
+  protected production_part[] rhs_parts = new production_part[MAX_RHS];
+
+  /** where we are currently in building a right hand side */
+  protected int rhs_pos = 0;
+
+  /** start a new right hand side */
+  protected void new_rhs() {rhs_pos = 0; }
+
+  /** add a new right hand side part */
+  protected void add_rhs_part(production_part part) throws java.lang.Exception
+    {
+      if (rhs_pos >= MAX_RHS)
+    throw new Exception("Internal Error: Productions limited to " +
+                 MAX_RHS + " symbols and actions");
+
+      rhs_parts[rhs_pos] = part;
+      rhs_pos++;
+    }
+
+  /** string to build up multiple part names */
+  protected String multipart_name = new String();
+
+  /** append a new name segment to the accumulated multipart name */
+  protected void append_multipart(String name)
+    {
+      String dot = "";
+
+      /* if we aren't just starting out, put on a dot */
+      if (multipart_name.length() != 0)  dot = ".";
+
+      multipart_name = multipart_name.concat(dot + name);
+    }
+
+  /** table of declared symbols -- contains production parts indexed by name */
+  protected Hashtable symbols = new Hashtable();
+
+  /** table of just non terminals -- contains non_terminals indexed by name */
+  protected Hashtable non_terms = new Hashtable();
+
+  /** declared start non_terminal */
+  protected non_terminal start_nt = null;
+
+  /** left hand side non terminal of the current production */
+  protected non_terminal lhs_nt;
+
+
+
+  /** Constructor */
+  CUP$actions() { }
+
+  /** Method with the actual generated action code. */
+  public final java_cup.runtime.symbol CUP$do_action(
+    int                        CUP$act_num,
+    java_cup.runtime.lr_parser CUP$parser,
+    java.util.Stack            CUP$stack,
+    int                        CUP$top)
+    throws java.lang.Exception
+    {
+      /* object for return from actions */
+      java_cup.runtime.symbol CUP$result;
+
+      /* select the action based on the action number */
+      switch (CUP$act_num)
+        {
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 64: // empty ::= 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*empty*/27);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 63: // label_id ::= ID 
+            {
+              CUP$result = new java_cup.runtime.str_token(/*label_id*/30);
+               ((java_cup.runtime.str_token)CUP$result).str_val = (/*the_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 62: // symbol_id ::= ID 
+            {
+              CUP$result = new java_cup.runtime.str_token(/*symbol_id*/29);
+               ((java_cup.runtime.str_token)CUP$result).str_val = (/*the_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 61: // nt_id ::= ID 
+            {
+              CUP$result = new java_cup.runtime.str_token(/*nt_id*/28);
+               ((java_cup.runtime.str_token)CUP$result).str_val = (/*the_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 60: // new_non_term_id ::= ID 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*new_non_term_id*/24);
+              
+      /* see if this non terminal has been declared before */
+      if (symbols.get((/*non_term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val) != null)
+        {
+          /* issue a message */
+          lexer.emit_error( "Symbol \"" + (/*non_term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val +
+                                  "\" has already been declared");
+        }
+      else
+        {
+          /* build the non terminal object */
+              non_terminal this_nt =
+        new non_terminal((/*non_term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val, multipart_name);
+
+          /* put it in the non_terms table */
+          non_terms.put((/*non_term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val, this_nt);
+
+          /* build a production_part and put it in the symbols table */
+          symbols.put((/*non_term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val, new symbol_part(this_nt));
+        }
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 59: // new_term_id ::= ID 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*new_term_id*/23);
+              
+      /* see if this terminal has been declared before */
+      if (symbols.get((/*term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val) != null)
+        {
+          /* issue a message */
+          lexer.emit_error("Symbol \"" + (/*term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val +
+               "\" has already been declared");
+        }
+      else
+        {
+          /* build a production_part and put it in the table */
+          symbols.put((/*term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val,
+            new symbol_part(new terminal((/*term_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val, multipart_name)));
+        }
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 58: // type_id ::= multipart_id 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*type_id*/17);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 57: // import_id ::= multipart_id 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*import_id*/12);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 56: // import_id ::= multipart_id DOT STAR 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*import_id*/12);
+               append_multipart("*"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 55: // multipart_id ::= ID 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*multipart_id*/10);
+               append_multipart((/*an_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 54: // multipart_id ::= multipart_id DOT ID 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*multipart_id*/10);
+               append_multipart((/*another_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 53: // opt_label ::= empty 
+            {
+              CUP$result = new java_cup.runtime.str_token(/*opt_label*/31);
+               ((java_cup.runtime.str_token)CUP$result).str_val = null; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 52: // opt_label ::= COLON label_id 
+            {
+              CUP$result = new java_cup.runtime.str_token(/*opt_label*/31);
+               ((java_cup.runtime.str_token)CUP$result).str_val = (/*labid*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val; 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 51: // prod_part ::= CODE_STRING 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*prod_part*/22);
+              
+      /* add a new production part */
+      add_rhs_part(new action_part((/*code_str*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val));
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 50: // prod_part ::= symbol_id opt_label 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*prod_part*/22);
+              
+      /* try to look up the id */
+      production_part symb = (production_part)symbols.get((/*symid*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-1)).str_val);
+
+      /* if that fails, symbol is undeclared */
+      if (symb == null)
+        {
+          if (lexer.error_count == 0)
+            lexer.emit_error("Symbol \"" + (/*symid*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-1)).str_val +
+                   "\" has not been declared");
+        }
+      else
+        {
+          /* add a labeled production part */
+          add_rhs_part(add_lab(symb, (/*labid*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val));
+        }
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 49: // prod_part_list ::= empty 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*prod_part_list*/21);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 48: // prod_part_list ::= prod_part_list prod_part 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*prod_part_list*/21);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 47: // rhs ::= prod_part_list 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*rhs*/26);
+              
+      if (lhs_nt != null)
+        {
+          /* build the production */
+          production p = new production(lhs_nt, rhs_parts, rhs_pos);
+
+          /* if we have no start non-terminal declared and this is
+         the first production, make its lhs nt the start_nt
+         and build a special start production for it. */
+              if (start_nt == null)
+        {
+          start_nt = lhs_nt;
+
+              /* build a special start production */
+              new_rhs();
+              add_rhs_part(new symbol_part(start_nt));
+              add_rhs_part(new symbol_part(terminal.EOF));
+              emit.start_production =
+             new production(non_terminal.START_nt, rhs_parts, rhs_pos);
+              new_rhs();
+        }
+        }
+
+      /* reset the rhs accumulation in any case */
+      new_rhs();
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 46: // rhs_list ::= rhs 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*rhs_list*/25);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 45: // rhs_list ::= rhs_list BAR rhs 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*rhs_list*/25);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 44: // production ::= error NT$9 SEMI 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*production*/20);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 43: // NT$9 ::= 
+            {
+              CUP$result = new java_cup.runtime.token(/*NT$9*/41);
+               lexer.emit_error("Syntax Error"); 
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 42: // production ::= nt_id NT$8 COLON_COLON_EQUALS rhs_list SEMI 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*production*/20);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 41: // NT$8 ::= 
+            {
+              CUP$result = new java_cup.runtime.token(/*NT$8*/40);
+              
+      /* lookup the lhs nt */
+      lhs_nt = (non_terminal)non_terms.get((/*lhs_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val);
+
+          /* if it wasn't declared, emit a message */
+      if (lhs_nt == null)
+        {
+          if (lexer.error_count == 0)
+            lexer.emit_error("LHS non terminal \"" + (/*lhs_id*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val +
+                   "\" has not been declared");
+        }
+
+      /* reset the rhs accumulation */
+      new_rhs();
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 40: // production_list ::= production 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*production_list*/9);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 39: // production_list ::= production_list production 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*production_list*/9);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 38: // start_spec ::= empty 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*start_spec*/8);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 37: // start_spec ::= START WITH nt_id NT$7 SEMI 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*start_spec*/8);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 36: // NT$7 ::= 
+            {
+              CUP$result = new java_cup.runtime.token(/*NT$7*/39);
+              
+      /* verify that the name has been declared as a non terminal */
+      non_terminal nt = (non_terminal)non_terms.get((/*start_name*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val);
+      if (nt == null)
+        {
+          lexer.emit_error( "Start non terminal \"" + (/*start_name*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-0)).str_val +
+                       "\" has not been declared");
+        }
+          else
+        {
+          /* remember the non-terminal for later */
+          start_nt = nt;
+
+          /* build a special start production */
+          new_rhs();
+          add_rhs_part(new symbol_part(start_nt));
+          add_rhs_part(new symbol_part(terminal.EOF));
+          emit.start_production =
+             new production(non_terminal.START_nt, rhs_parts, rhs_pos);
+          new_rhs();
+        }
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 35: // non_term_name_list ::= new_non_term_id 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*non_term_name_list*/19);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 34: // non_term_name_list ::= non_term_name_list COMMA new_non_term_id 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*non_term_name_list*/19);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 33: // term_name_list ::= new_term_id 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*term_name_list*/18);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 32: // term_name_list ::= term_name_list COMMA new_term_id 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*term_name_list*/18);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 31: // symbol ::= NON TERMINAL error NT$6 SEMI 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*symbol*/15);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 30: // NT$6 ::= 
+            {
+              CUP$result = new java_cup.runtime.token(/*NT$6*/38);
+              
+      /* reset the accumulated multipart name */
+      multipart_name = new String();
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 29: // symbol ::= TERMINAL error NT$5 SEMI 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*symbol*/15);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 28: // NT$5 ::= 
+            {
+              CUP$result = new java_cup.runtime.token(/*NT$5*/37);
+              
+      /* reset the accumulated multipart name */
+      multipart_name = new String();
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 27: // symbol ::= NON TERMINAL type_id non_term_name_list NT$4 SEMI 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*symbol*/15);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 26: // NT$4 ::= 
+            {
+              CUP$result = new java_cup.runtime.token(/*NT$4*/36);
+              
+      /* reset the accumulated multipart name */
+      multipart_name = new String();
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 25: // symbol ::= TERMINAL type_id term_name_list NT$3 SEMI 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*symbol*/15);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 24: // NT$3 ::= 
+            {
+              CUP$result = new java_cup.runtime.token(/*NT$3*/35);
+              
+      /* reset the accumulated multipart name */
+      multipart_name = new String();
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 23: // symbol_list ::= symbol 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*symbol_list*/7);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 22: // symbol_list ::= symbol_list symbol 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*symbol_list*/7);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 21: // debug_grammar ::= empty 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*debug_grammar*/16);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 20: // debug_grammar ::= DEBUG WITH multipart_id SEMI 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*debug_grammar*/16);
+              
+      /* save the procedure name */
+          emit.debug_grammar = multipart_name;
+          /* reset the accumulated multipart name */
+          multipart_name = new String();
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 19: // scan_code ::= empty 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*scan_code*/14);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 18: // scan_code ::= SCAN WITH CODE_STRING SEMI 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*scan_code*/14);
+              
+      /* save the user code */
+      emit.scan_code = (/*user_code*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-1)).str_val;
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 17: // init_code ::= empty 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*init_code*/13);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 16: // init_code ::= INIT WITH CODE_STRING SEMI 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*init_code*/13);
+              
+      /* save the user code */
+      emit.init_code = (/*user_code*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-1)).str_val;
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 15: // parser_code_part ::= empty 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*parser_code_part*/6);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 14: // parser_code_part ::= PARSER CODE CODE_STRING SEMI 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*parser_code_part*/6);
+              
+      /* save the user included code string */
+      emit.parser_code = (/*user_code*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-1)).str_val;
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 13: // action_code_part ::= empty 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*action_code_part*/5);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 12: // action_code_part ::= ACTION CODE CODE_STRING SEMI 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*action_code_part*/5);
+              
+      /* save the user included code string */
+      emit.action_code = (/*user_code*/(java_cup.runtime.str_token)CUP$stack.elementAt(CUP$top-1)).str_val;
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 11: // code_part ::= action_code_part parser_code_part 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*code_part*/4);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 10: // import_spec ::= IMPORT import_id NT$2 SEMI 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*import_spec*/11);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 9: // NT$2 ::= 
+            {
+              CUP$result = new java_cup.runtime.token(/*NT$2*/34);
+              
+      /* save this import on the imports list */
+      emit.import_list.push(multipart_name);
+
+      /* reset the accumulated multipart name */
+      multipart_name = new String();
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 8: // import_list ::= empty 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*import_list*/3);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 7: // import_list ::= import_list import_spec 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*import_list*/3);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 6: // package_spec ::= empty 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*package_spec*/2);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 5: // package_spec ::= PACKAGE multipart_id NT$1 SEMI 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*package_spec*/2);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 4: // NT$1 ::= 
+            {
+              CUP$result = new java_cup.runtime.token(/*NT$1*/33);
+              
+      /* save the package name */
+      emit.package_name = multipart_name;
+
+      /* reset the accumulated multipart name */
+      multipart_name = new String();
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 3: // spec ::= error symbol_list start_spec production_list 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*spec*/1);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 2: // spec ::= NT$0 package_spec import_list code_part debug_grammar init_code scan_code symbol_list start_spec production_list 
+            {
+              CUP$result = new java_cup.runtime.symbol(/*spec*/1);
+              
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 1: // NT$0 ::= 
+            {
+              CUP$result = new java_cup.runtime.token(/*NT$0*/32);
+              
+          /* declare "error" as a terminal */
+          symbols.put("error", new symbol_part(terminal.error));
+
+          /* declare start non terminal */
+          non_terms.put("$START", non_terminal.START_nt);
+    
+            }
+          return CUP$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 0: // $START ::= spec EOF 
+            {
+              CUP$result = new java_cup.runtime.token(/*$START*/0);
+              
+            }
+          /* ACCEPT */
+          CUP$parser.done_parsing();
+          return CUP$result;
+
+          /* . . . . . .*/
+          default:
+            throw new Exception(
+               "Invalid action number found in internal parse table");
+
+        }
+    }
+};
+
diff --git a/tools/dasm/src/java_cup/production.java b/tools/dasm/src/java_cup/production.java
new file mode 100644
index 0000000..9c1d634
--- /dev/null
+++ b/tools/dasm/src/java_cup/production.java
@@ -0,0 +1,782 @@
+
+package java_cup;
+ 
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+/** This class represents a production in the grammar.  It contains
+ *  a LHS non terminal, and an array of RHS symbols.  As various 
+ *  transformations are done on the RHS of the production, it may shrink.
+ *  As a result a separate length is always maintained to indicate how much
+ *  of the RHS array is still valid.<p>
+ * 
+ *  I addition to construction and manipulation operations, productions provide
+ *  methods for factoring out actions (see  remove_embedded_actions()), for
+ *  computing the nullability of the production (i.e., can it derive the empty
+ *  string, see check_nullable()), and operations for computing its first
+ *  set (i.e., the set of terminals that could appear at the beginning of some
+ *  string derived from the production, see check_first_set()).
+ * 
+ * @see     java_cup.production_part
+ * @see     java_cup.symbol_part
+ * @see     java_cup.action_part
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+
+public class production {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Full constructor.  This constructor accepts a LHS non terminal,
+   *  an array of RHS parts (including terminals, non terminals, and 
+   *  actions), and a string for a final reduce action.   It does several
+   *  manipulations in the process of  creating a production object.
+   *  After some validity checking it translates labels that appear in
+   *  actions into code for accessing objects on the runtime parse stack.
+   *  It them merges adjacent actions if they appear and moves any trailing
+   *  action into the final reduce actions string.  Next it removes any
+   *  embedded actions by factoring them out with new action productions.  
+   *  Finally it assigns a unique index to the production.<p>
+   *
+   *  Factoring out of actions is accomplished by creating new "hidden"
+   *  non terminals.  For example if the production was originally: <pre>
+   *    A ::= B {action} C D
+   *  </pre>
+   *  then it is factored into two productions:<pre>
+   *    A ::= B X C D
+   *    X ::= {action}
+   *  </pre> 
+   *  (where X is a unique new non terminal).  This has the effect of placing
+   *  all actions at the end where they can be handled as part of a reduce by
+   *  the parser.
+   */
+  public production(
+    non_terminal    lhs_sym, 
+    production_part rhs_parts[], 
+    int             rhs_l,
+    String          action_str)
+    throws internal_error
+    {
+      int         i;
+      action_part tail_action;
+
+      /* remember the length */
+      if (rhs_l >= 0)
+    _rhs_length = rhs_l;
+      else if (rhs_parts != null)
+    _rhs_length = rhs_parts.length;
+      else
+    _rhs_length = 0;
+    
+      /* make sure we have a valid left-hand-side */
+      if (lhs_sym == null) 
+    throw new internal_error(
+      "Attempt to construct a production with a null LHS");
+
+      /* translate labels appearing in action strings */
+      action_str = translate_labels(
+             rhs_parts, rhs_l, action_str, lhs_sym.stack_type());
+
+      /* count use of lhs */
+      lhs_sym.note_use();
+
+      /* create the part for left-hand-side */
+      _lhs = new symbol_part(lhs_sym);
+
+      /* merge adjacent actions (if any) */
+      _rhs_length = merge_adjacent_actions(rhs_parts, _rhs_length);
+
+      /* strip off any trailing action */
+      tail_action = strip_trailing_action(rhs_parts, _rhs_length);
+      if (tail_action != null) _rhs_length--;
+
+      /* allocate and copy over the right-hand-side */
+      _rhs = new production_part[_rhs_length];
+      for (i=0; i<_rhs_length; i++)
+    _rhs[i] = rhs_parts[i];
+
+      /* count use of each rhs symbol */
+      for (i=0; i<_rhs_length; i++)
+    if (!_rhs[i].is_action())
+      ((symbol_part)_rhs[i]).the_symbol().note_use();
+
+      /* merge any trailing action with action string parameter */
+      if (action_str == null) action_str = "";
+      if (tail_action != null && tail_action.code_string() != null)
+    action_str = tail_action.code_string() + action_str;
+
+      /* stash the action */
+      _action = new action_part(action_str);
+
+      /* rewrite production to remove any embedded actions */
+      remove_embedded_actions();
+
+      /* assign an index */
+      _index = next_index++;
+
+      /* put us in the global collection of productions */
+      _all.put(new Integer(_index),this);
+
+      /* put us in the production list of the lhs non terminal */
+      lhs_sym.add_production(this);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Constructor with no action string. */
+  public production(
+    non_terminal    lhs_sym, 
+    production_part rhs_parts[], 
+    int             rhs_l)
+    throws internal_error
+    {
+      this(lhs_sym,rhs_parts,rhs_l,null);
+    }
+ 
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Static (Class) Variables ------------------*/
+  /*-----------------------------------------------------------*/
+ 
+  /** Table of all productions.  Elements are stored using their index as 
+   *  the key.
+   */
+  protected static Hashtable _all = new Hashtable();
+ 
+  /** Access to all productions. */
+  public static Enumeration all() {return _all.elements();};
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+ 
+  /** Total number of productions. */
+  public static int number() {return _all.size();};
+
+  /** Static counter for assigning unique index numbers. */
+  protected static int next_index;
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** The left hand side non-terminal. */
+  protected symbol_part _lhs;
+
+  /** The left hand side non-terminal. */
+  public symbol_part lhs() {return _lhs;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** A collection of parts for the right hand side. */
+  protected production_part _rhs[];
+
+  /** Access to the collection of parts for the right hand side. */
+  public production_part rhs(int indx) throws internal_error
+    {
+      if (indx >= 0 && indx < _rhs_length)
+    return _rhs[indx];
+      else
+    throw new internal_error(
+      "Index out of range for right hand side of production");
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** How much of the right hand side array we are presently using. */
+  protected int _rhs_length;
+
+  /** How much of the right hand side array we are presently using. */
+  public int rhs_length() {return _rhs_length;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** An action_part containing code for the action to be performed when we 
+   *  reduce with this production. 
+   */
+  protected action_part _action;
+
+  /** An action_part containing code for the action to be performed when we 
+   *  reduce with this production. 
+   */
+  public action_part action() {return _action;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Index number of the production. */
+  protected int _index;
+
+  /** Index number of the production. */
+  public int index() {return _index;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Count of number of reductions using this production. */
+  protected int _num_reductions = 0;
+
+  /** Count of number of reductions using this production. */
+  public int num_reductions() {return _num_reductions;}
+
+  /** Increment the count of reductions with this non-terminal */
+  public void note_reduction_use() {_num_reductions++;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Is the nullability of the production known or unknown? */
+  protected boolean _nullable_known = false;
+
+  /** Is the nullability of the production known or unknown? */
+  public boolean nullable_known() {return _nullable_known;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Nullability of the production (can it derive the empty string). */
+  protected boolean _nullable = false;
+
+  /** Nullability of the production (can it derive the empty string). */
+  public boolean nullable() {return _nullable;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** First set of the production.  This is the set of terminals that 
+   *  could appear at the front of some string derived from this production.
+   */
+  protected terminal_set _first_set = new terminal_set();
+
+  /** First set of the production.  This is the set of terminals that 
+   *  could appear at the front of some string derived from this production.
+   */
+  public terminal_set first_set() {return _first_set;}
+
+  /*-----------------------------------------------------------*/
+  /*--- Static Methods ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Determine if a given character can be a label id starter. 
+   * @param c the character in question. 
+   */
+  protected static boolean is_id_start(char c)
+    {
+      return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c == '_');
+
+      //later need to handle non-8-bit chars here
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Determine if a character can be in a label id. 
+   * @param c the character in question.
+   */
+  protected static boolean is_id_char(char c)
+    {
+      return is_id_start(c) || (c >= '0' && c <= '9');
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Determine the translation for one label id found within a code_string. 
+   *  Symbols appearing in the RHS correspond to objects found on the parse
+   *  stack at runtime.  The code to access them, becomes code to access an
+   *  object at the appropriate offset from the top of the stack, and then
+   *  cast that to the proper type.
+   *
+   * @param id_str    the name of the id to be translated.
+   * @param act_pos   the original position of the action it appears in.
+   * @param label_map a hash table mapping labels to positions in the RHS.
+   * @param type_map  a hash table mapping labels to declared symbol types.
+   */
+  protected String label_translate(
+    String    id_str,     /* the id string we are (possibly) translating */
+    int       act_pos,    /* position of the action                      */
+    Hashtable label_map,  /* map from labels to positions in the RHS     */
+    Hashtable label_types)/* map from labels to stack types              */
+    {
+      Integer label_pos;
+      String  label_type;
+      int     offset;
+
+      /* look up the id */
+      label_pos  = (Integer)label_map.get(id_str);
+
+      /* if we don't find it, just return the id */
+      if (label_pos == null) return id_str;
+
+      /* extract the type of the labeled symbol */
+      label_type = (String)label_types.get(id_str);
+
+      /* is this for the LHS? */
+      if (label_pos.intValue() == -1)
+        {
+      /* return the result object cast properly */
+      return "((" + label_type + ")" + emit.pre("result") + ")";
+         }
+
+       /* its a RHS label */
+
+       /* if the label appears after the action, we have an error */
+       if (label_pos.intValue() > act_pos)
+         {
+       /* emit an error message */
+       System.err.println("*** Label \"" + id_str + 
+         "\" appears in action before it appears in production");
+        lexer.error_count++;
+
+        // later need to print the production this is in
+    
+        /* just return the id unchanged */
+          return id_str;
+      }
+
+      /* calculate the stack offset as the difference in position from 
+     label to action minus one */
+      offset = (act_pos - label_pos.intValue())-1;
+
+      /* translation is properly cast element at that offset from TOS */
+      return "(/*"+id_str+"*/("+label_type+")" + 
+       emit.pre("stack") + ".elementAt(" + emit.pre("top") +"-"+ offset + "))";
+   
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Translate all the label names within an action string to appropriate code.
+   * @param act_string  the string to be translated
+   * @param act_pos     the position that the action originally held in the 
+   *                    production.
+   * @param label_map   a hash table mapping labels to positions in the RHS.
+   * @param type_map    a hash table mapping labels to declared symbol types.
+   */
+  protected String action_translate(
+    String    act_string,  /* the action string                     */
+    int       act_pos,     /* the position of the action on the RHS */
+    Hashtable label_map,   /* map from labels to RHS positions      */
+    Hashtable label_types) /* map from labels to symbol stack types */
+    {
+      int          id_start;
+      int          pos;
+      int          len;
+      String       id_str;
+      boolean      in_id;
+      StringBuffer result;
+      char         buffer[];
+
+      /* if we have no string we are done */
+      if (act_string == null || act_string.length()== 0) return act_string;
+
+      len = act_string.length();
+
+      /* set up a place to put the result */
+      result = new StringBuffer(len + 50);
+
+      /* extract string into array */
+      buffer = new char[len + 1];
+      act_string.getChars(0, len, buffer, 0);
+
+      /* put terminator in buffer so we can look one past the end */
+      buffer[len] = '\0';
+
+      /* walk down the input buffer looking for identifiers */
+      in_id = false;
+      for (pos = id_start = 0; pos <= len; pos++)
+    {
+      /* are we currently working on an id? */
+      if (in_id)
+        {
+          /* does this end the id? */
+          if (!is_id_char(buffer[pos]))
+        {
+          /* extract the id string and translate it */
+          id_str = new String(buffer, id_start, pos - id_start);
+          result.append(
+              label_translate(id_str, act_pos, label_map,label_types));
+
+          /* copy over the ending character */
+          if (buffer[pos] != '\0')
+                result.append(buffer, pos, 1);
+
+          /* and we are done with this id */
+          in_id = false;
+        }
+          else
+        {
+          /* we are still in the id, so just keep going */
+        }
+        }
+      else /* we are not inside an id */
+        {
+          /* start a new id? */
+          if (is_id_start(buffer[pos]))
+            {
+          /* start keeping these chars as an id */
+              in_id = true;
+              id_start = pos;
+            }
+         else
+           {
+             /* just copy over the char */
+         if (buffer[pos] != '\0')
+               result.append(buffer, pos, 1);
+           }
+        }
+    }
+
+      /* return the accumulated result */
+      return result.toString();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Translate label names to appropriate code within all action strings. 
+   * @param rhs          array of RHS parts.
+   * @param rhs_len      how much of rhs to consider valid.
+   * @param final_action the final action string of the production. 
+   * @param lhs_type     the object type associated with the LHS symbol.
+   */ 
+  protected String translate_labels(
+    production_part  rhs[], 
+    int              rhs_len, 
+    String           final_action,
+    String           lhs_type)
+    {
+      Hashtable   label_map   = new Hashtable(11);
+      Hashtable   label_types = new Hashtable(11);
+      symbol_part part;
+      action_part act_part;
+      int         pos;
+
+      /* walk down the parts and extract the labels */
+      for (pos = 0; pos < rhs_len; pos++)
+    {
+      if (!rhs[pos].is_action())
+        {
+          part = (symbol_part)rhs[pos];
+
+          /* if it has a label enter it in the tables */
+          if (part.label() != null)
+        {
+          label_map.put(part.label(), new Integer(pos));
+          label_types.put(part.label(), part.the_symbol().stack_type());
+        }
+        }
+    }
+
+      /* add a label for the LHS */
+      label_map.put("RESULT", new Integer(-1));
+      label_types.put("RESULT", lhs_type);
+
+      /* now walk across and do each action string */
+      for (pos = 0; pos < rhs_len; pos++)
+    {
+      if (rhs[pos].is_action())
+        {
+           act_part = (action_part)rhs[pos];
+           act_part.set_code_string(
+         action_translate(
+           act_part.code_string(), pos, label_map, label_types));
+        }
+    }
+
+      /* now do the final action string at the position after the last */
+      return action_translate(final_action, rhs_len, label_map, label_types);
+
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Helper routine to merge adjacent actions in a set of RHS parts 
+   * @param rhs_parts array of RHS parts.
+   * @param len       amount of that array that is valid.
+   * @return          remaining valid length.
+   */
+  protected int merge_adjacent_actions(production_part rhs_parts[], int len)
+    {
+      int from_loc, to_loc, merge_cnt;
+
+      /* bail out early if we have no work to do */
+      if (rhs_parts == null || len == 0) return 0;
+
+      merge_cnt = 0;
+      to_loc = -1;
+      for (from_loc=0; from_loc<len; from_loc++)
+    {
+      /* do we go in the current position or one further */
+      if (to_loc < 0 || !rhs_parts[to_loc].is_action() 
+             || !rhs_parts[from_loc].is_action())
+        {
+          /* next one */
+          to_loc++;
+
+          /* clear the way for it */
+          if (to_loc != from_loc) rhs_parts[to_loc] = null;
+        }
+
+      /* if this is not trivial? */
+      if (to_loc != from_loc)
+        {
+          /* do we merge or copy? */
+          if (rhs_parts[to_loc] != null && rhs_parts[to_loc].is_action() && 
+          rhs_parts[from_loc].is_action())
+          {
+            /* merge */
+            rhs_parts[to_loc] = new action_part(
+          ((action_part)rhs_parts[to_loc]).code_string() +
+          ((action_part)rhs_parts[from_loc]).code_string());
+            merge_cnt++;
+          }
+        else
+          {
+            /* copy */
+            rhs_parts[to_loc] = rhs_parts[from_loc];
+          }
+        }
+    }
+
+      /* return the used length */
+      return len - merge_cnt;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Helper routine to strip a trailing action off rhs and return it
+   * @param rhs_parts array of RHS parts.
+   * @param len       how many of those are valid.
+   * @return          the removed action part.
+   */
+  protected action_part strip_trailing_action(
+    production_part rhs_parts[],
+    int             len)
+    {
+      action_part result;
+
+      /* bail out early if we have nothing to do */
+      if (rhs_parts == null || len == 0) return null;
+
+      /* see if we have a trailing action */
+      if (rhs_parts[len-1].is_action())
+    {
+      /* snip it out and return it */
+      result = (action_part)rhs_parts[len-1];
+      rhs_parts[len-1] = null;
+      return result;
+    }
+      else
+    return null;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Remove all embedded actions from a production by factoring them 
+   *  out into individual action production using new non terminals.
+   *  if the original production was:  <pre>
+   *    A ::= B {action1} C {action2} D 
+   *  </pre>
+   *  then it will be factored into: <pre>
+   *    A ::= B NT$1 C NT$2 D
+   *    NT$1 ::= {action1}
+   *    NT$2 ::= {action2}
+   *  </pre>
+   *  where NT$1 and NT$2 are new system created non terminals.
+   */
+  protected void remove_embedded_actions() throws internal_error
+    {
+      non_terminal new_nt;
+      production   new_prod;
+
+      /* walk over the production and process each action */
+      for (int act_loc = 0; act_loc < rhs_length(); act_loc++)
+    if (rhs(act_loc).is_action())
+      {
+        /* create a new non terminal for the action production */
+        new_nt = non_terminal.create_new();
+
+        /* create a new production with just the action */
+        new_prod = new action_production(this, new_nt, null, 0, 
+            ((action_part)rhs(act_loc)).code_string());
+
+        /* replace the action with the generated non terminal */
+        _rhs[act_loc] = new symbol_part(new_nt);
+      }
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Check to see if the production (now) appears to be nullable.
+   *  A production is nullable if its RHS could derive the empty string.
+   *  This results when the RHS is empty or contains only non terminals
+   *  which themselves are nullable.
+   */
+  public boolean check_nullable() throws internal_error
+    {
+      production_part part;
+      symbol          sym;
+      int             pos;
+
+      /* if we already know bail out early */
+      if (nullable_known()) return nullable();
+
+      /* if we have a zero size RHS we are directly nullable */
+      if (rhs_length() == 0)
+    {
+      /* stash and return the result */
+      return set_nullable(true);
+    }
+
+      /* otherwise we need to test all of our parts */
+      for (pos=0; pos<rhs_length(); pos++)
+    {
+      part = rhs(pos);
+
+      /* only look at non-actions */
+      if (!part.is_action())
+        {
+          sym = ((symbol_part)part).the_symbol();
+
+          /* if its a terminal we are definitely not nullable */
+          if (!sym.is_non_term()) 
+        return set_nullable(false);
+          /* its a non-term, is it marked nullable */
+          else if (!((non_terminal)sym).nullable())
+        /* this one not (yet) nullable, so we aren't */
+            return false;
+        }
+    }
+
+      /* if we make it here all parts are nullable */
+      return set_nullable(true);
+    }
+
+  /** set (and return) nullability */
+  boolean set_nullable(boolean v)
+    {
+      _nullable_known = true;
+      _nullable = v;
+      return v;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Update (and return) the first set based on current NT firsts. 
+   *  This assumes that nullability has already been computed for all non 
+   *  terminals and productions. 
+   */
+  public terminal_set check_first_set() throws internal_error
+    {
+      int    part;
+      symbol sym;
+
+      /* walk down the right hand side till we get past all nullables */
+      for (part=0; part<rhs_length(); part++)
+    {
+      /* only look at non-actions */
+      if (!rhs(part).is_action())
+        {
+          sym = ((symbol_part)rhs(part)).the_symbol();
+
+          /* is it a non-terminal?*/
+          if (sym.is_non_term())
+        {
+          /* add in current firsts from that NT */
+          _first_set.add(((non_terminal)sym).first_set());
+
+          /* if its not nullable, we are done */
+          if (!((non_terminal)sym).nullable())
+            break;
+        }
+          else
+        {
+              /* its a terminal -- add that to the set */
+          _first_set.add((terminal)sym);
+
+          /* we are done */
+          break;
+        }
+        }
+    }
+
+      /* return our updated first set */
+      return first_set();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Equality comparison. */
+  public boolean equals(production other)
+    {
+      if (other == null) return false;
+      return other._index == _index;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Generic equality comparison. */
+  public boolean equals(Object other)
+    {
+      if (!(other instanceof production))
+    return false;
+      else
+    return equals((production)other);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Produce a hash code. */
+  public int hashCode()
+    {
+      /* just use a simple function of the index */
+      return _index*13;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Convert to a string. */
+  public String toString() 
+    {
+      String result;
+      
+      /* catch any internal errors */
+      try {
+        result = "production [" + index() + "]: "; 
+        result += ((lhs() != null) ? lhs().toString() : "$$NULL-LHS$$");
+        result += " :: = ";
+        for (int i = 0; i<rhs_length(); i++)
+      result += rhs(i) + " ";
+        result += ";";
+        if (action()  != null && action().code_string() != null) 
+      result += " {" + action().code_string() + "}";
+
+        if (nullable_known())
+      if (nullable())
+        result += "[NULLABLE]";
+      else
+        result += "[NOT NULLABLE]";
+      } catch (internal_error e) {
+    /* crash on internal error since we can't throw it from here (because
+       superclass does not throw anything. */
+    e.crash();
+    result = null;
+      }
+
+      return result;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Convert to a simpler string. */
+  public String to_simple_string() throws internal_error
+    {
+      String result;
+
+      result = ((lhs() != null) ? lhs().the_symbol().name() : "NULL_LHS");
+      result += " ::= ";
+      for (int i = 0; i < rhs_length(); i++)
+    if (!rhs(i).is_action())
+      result += ((symbol_part)rhs(i)).the_symbol().name() + " ";
+
+      return result;
+    }
+
+  /*-----------------------------------------------------------*/
+
+};
diff --git a/tools/dasm/src/java_cup/production_part.java b/tools/dasm/src/java_cup/production_part.java
new file mode 100644
index 0000000..cdb92f7
--- /dev/null
+++ b/tools/dasm/src/java_cup/production_part.java
@@ -0,0 +1,94 @@
+package java_cup;
+
+/** This class represents one part (either a symbol or an action) of a 
+ *  production.  In this base class it contains only an optional label 
+ *  string that the user can use to refer to the part within actions.<p>
+ *
+ *  This is an abstract class.
+ *
+ * @see     java_cup.production
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+public abstract class production_part {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+       
+  /** Simple constructor. */
+  public production_part(String lab)
+    {
+      _label = lab;
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+       
+  /** Optional label for referring to the part within an action (null for 
+   *  no label). 
+   */
+  protected String _label;
+
+  /** Optional label for referring to the part within an action (null for 
+   *  no label). 
+   */
+  public String label() {return _label;}
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+       
+  /** Indicate if this is an action (rather than a symbol).  Here in the 
+   * base class, we don't this know yet, so its an abstract method.
+   */
+  public abstract boolean is_action();
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Equality comparison. */
+  public boolean equals(production_part other)
+    {
+      if (other == null) return false;
+
+      /* compare the labels */
+      if (label() != null)
+    return label().equals(other.label());
+      else
+    return other.label() == null;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Generic equality comparison. */
+  public boolean equals(Object other)
+    {
+      if (!(other instanceof production_part))
+        return false;
+      else
+    return equals((production_part)other);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Produce a hash code. */
+  public int hashCode()
+    {
+      return label()==null ? 0 : label().hashCode();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Convert to a string. */
+  public String toString()
+    {
+      if (label() != null)
+    return label() + ":";
+      else
+    return " ";
+    }
+
+  /*-----------------------------------------------------------*/
+
+};
diff --git a/tools/dasm/src/java_cup/reduce_action.java b/tools/dasm/src/java_cup/reduce_action.java
new file mode 100644
index 0000000..646fe0c
--- /dev/null
+++ b/tools/dasm/src/java_cup/reduce_action.java
@@ -0,0 +1,84 @@
+
+package java_cup;
+
+/** This class represents a reduce action within the parse table. 
+ *  The action simply stores the production that it reduces with and 
+ *  responds to queries about its type.
+ *
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+public class reduce_action extends parse_action {
+ 
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Simple constructor. 
+   * @param prod the production this action reduces with.
+   */
+  public reduce_action(production prod ) throws internal_error
+    {
+      /* sanity check */
+      if (prod == null)
+    throw new internal_error(
+      "Attempt to create a reduce_action with a null production");
+
+      _reduce_with = prod;
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+  
+  /** The production we reduce with. */
+  protected production _reduce_with;
+
+  /** The production we reduce with. */
+  public production reduce_with() {return _reduce_with;}
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Quick access to type of action. */
+  public int kind() {return REDUCE;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Equality test. */
+  public boolean equals(reduce_action other)
+    {
+      return other != null && other.reduce_with() == reduce_with();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Generic equality test. */
+  public boolean equals(Object other)
+    {
+      if (other instanceof reduce_action)
+    return equals((reduce_action)other);
+      else
+       return false;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Compute a hash code. */
+  public int hashCode()
+    {
+      /* use the hash code of the production we are reducing with */
+      return reduce_with().hashCode();
+    }
+
+
+  /** Convert to string. */
+  public String toString() 
+    {
+      return "REDUCE(" + reduce_with().index() + ")";
+    }
+
+  /*-----------------------------------------------------------*/
+
+};
diff --git a/tools/dasm/src/java_cup/runtime/char_token.java b/tools/dasm/src/java_cup/runtime/char_token.java
new file mode 100644
index 0000000..0b4502b
--- /dev/null
+++ b/tools/dasm/src/java_cup/runtime/char_token.java
@@ -0,0 +1,32 @@
+
+package java_cup.runtime;
+
+/** This subclass of token represents symbols that need to maintain one
+ *  char value as an attribute.  It maintains that value in the public
+ *  field int_val.
+ *
+ * @see java_cup.runtime.str_token
+ * @version last updated: 1/7/96
+ * @author  Scott Hudson
+ */
+
+public class char_token extends token {
+
+  /** Full constructor. */
+  public char_token(int term_num, char v)
+    {
+      /* super class does most of the work */
+      super(term_num);
+
+      char_val = v;
+    }
+
+  /** Constructor with default value of 0 */
+  public char_token(int term_num)
+    {
+      this(term_num, '\0');
+    }
+
+  /** The stored char value. */
+  public char char_val;
+};
diff --git a/tools/dasm/src/java_cup/runtime/double_token.java b/tools/dasm/src/java_cup/runtime/double_token.java
new file mode 100644
index 0000000..df95822
--- /dev/null
+++ b/tools/dasm/src/java_cup/runtime/double_token.java
@@ -0,0 +1,32 @@
+
+package java_cup.runtime;
+
+/** This subclass of token represents symbols that need to maintain one
+ *  double value as an attribute.  It maintains that value in the public
+ *  field int_val.
+ *
+ * @see java_cup.runtime.str_token
+ * @version last updated: 1/7/96
+ * @author  Scott Hudson
+ */
+
+public class double_token extends token {
+
+  /** Full constructor. */
+  public double_token(int term_num, double v)
+    {
+      /* super class does most of the work */
+      super(term_num);
+
+      double_val = v;
+    }
+
+  /** Constructor with default value of 0.0. */
+  public double_token(int term_num)
+    {
+      this(term_num,0.0f);
+    }
+
+  /** The stored double value. */
+  public double double_val;
+};
diff --git a/tools/dasm/src/java_cup/runtime/float_token.java b/tools/dasm/src/java_cup/runtime/float_token.java
new file mode 100644
index 0000000..d1b56da
--- /dev/null
+++ b/tools/dasm/src/java_cup/runtime/float_token.java
@@ -0,0 +1,32 @@
+
+package java_cup.runtime;
+
+/** This subclass of token represents symbols that need to maintain one
+ *  float value as an attribute.  It maintains that value in the public
+ *  field int_val.
+ *
+ * @see java_cup.runtime.str_token
+ * @version last updated: 1/7/96
+ * @author  Scott Hudson
+ */
+
+public class float_token extends token {
+
+  /** Full constructor. */
+  public float_token(int term_num, float v)
+    {
+      /* super class does most of the work */
+      super(term_num);
+
+      float_val = v;
+    }
+
+  /** Constructor with default value of 0.0. */
+  public float_token(int term_num)
+    {
+      this(term_num,0.0f);
+    }
+
+  /** The stored float value. */
+  public float float_val;
+};
diff --git a/tools/dasm/src/java_cup/runtime/int_token.java b/tools/dasm/src/java_cup/runtime/int_token.java
new file mode 100644
index 0000000..b78df69
--- /dev/null
+++ b/tools/dasm/src/java_cup/runtime/int_token.java
@@ -0,0 +1,32 @@
+
+package java_cup.runtime;
+
+/** This subclass of token represents symbols that need to maintain one
+ *  int value as an attribute.  It maintains that value in the public
+ *  field int_val.
+ *
+ * @see java_cup.runtime.str_token
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+
+public class int_token extends token {
+
+  /** Full constructor. */
+  public int_token(int term_num, int iv)
+    {
+      /* super class does most of the work */
+      super(term_num);
+
+      int_val = iv;
+    }
+
+  /** Constructor with default value of 0. */
+  public int_token(int term_num)
+    {
+      this(term_num,0);
+    }
+
+  /** The stored int value. */
+  public int int_val;
+};
diff --git a/tools/dasm/src/java_cup/runtime/long_token.java b/tools/dasm/src/java_cup/runtime/long_token.java
new file mode 100644
index 0000000..170a69b
--- /dev/null
+++ b/tools/dasm/src/java_cup/runtime/long_token.java
@@ -0,0 +1,32 @@
+
+package java_cup.runtime;
+
+/** This subclass of token represents symbols that need to maintain one
+ *  long value as an attribute.  It maintains that value in the public
+ *  field int_val.
+ *
+ * @see java_cup.runtime.str_token
+ * @version last updated: 1/7/96
+ * @author  Scott Hudson
+ */
+
+public class long_token extends token {
+
+  /** Full constructor. */
+  public long_token(int term_num, long lv)
+    {
+      /* super class does most of the work */
+      super(term_num);
+
+      long_val = lv;
+    }
+
+  /** Constructor with default value of 0. */
+  public long_token(int term_num)
+    {
+      this(term_num,0);
+    }
+
+  /** The stored long value. */
+  public long long_val;
+};
diff --git a/tools/dasm/src/java_cup/runtime/lr_parser.java b/tools/dasm/src/java_cup/runtime/lr_parser.java
new file mode 100644
index 0000000..b814390
--- /dev/null
+++ b/tools/dasm/src/java_cup/runtime/lr_parser.java
@@ -0,0 +1,1121 @@
+
+package java_cup.runtime;
+
+import java.util.Stack;
+
+/** This class implements a skeleton table driven LR parser.  In general,
+ *  LR parsers are a form of bottom up shift-reduce parsers.  Shift-reduce
+ *  parsers act by shifting input onto a parse stack until the symbols 
+ *  matching the right hand side of a production appear on the top of the 
+ *  stack.  Once this occurs, a reduce is performed.  This involves removing
+ *  the symbols corresponding to the right hand side of the production
+ *  (the so called "handle") and replacing them with the non-terminal from
+ *  the left hand side of the production.  <p>
+ *
+ *  To control the decision of whether to shift or reduce at any given point, 
+ *  the parser uses a state machine (the "viable prefix recognition machine" 
+ *  built by the parser generator).  The current state of the machine is placed
+ *  on top of the parse stack (stored as part of a symbol object representing
+ *  a terminal or non terminal).  The parse action table is consulted 
+ *  (using the current state and the current lookahead token as indexes) to 
+ *  determine whether to shift or to reduce.  When the parser shifts, it 
+ *  changes to a new state by pushing a new symbol (containing a new state) 
+ *  onto the stack.  When the parser reduces, it pops the handle (right hand 
+ *  side of a production) off the stack.  This leaves the parser in the state 
+ *  it was in before any of those symbols were matched.  Next the reduce-goto 
+ *  table is consulted (using the new state and current lookahead token as 
+ *  indexes) to determine a new state to go to.  The parser then shifts to 
+ *  this goto state by pushing the left hand side symbol of the production 
+ *  (also containing the new state) onto the stack.<p>
+ *
+ *  This class actually provides four LR parsers.  The methods parse() and 
+ *  debug_parse() provide two versions of the main parser (the only difference 
+ *  being that debug_parse() emits debugging trace messages as it parses).  
+ *  In addition to these main parsers, the error recovery mechanism uses two 
+ *  more.  One of these is used to simulate "parsing ahead" in the input 
+ *  without carrying out actions (to verify that a potential error recovery 
+ *  has worked), and the other is used to parse through buffered "parse ahead" 
+ *  input in order to execute all actions and re-synchronize the actual parser 
+ *  configuration.<p>
+ *
+ *  This is an abstract class which is normally filled out by a subclass
+ *  generated by the JavaCup parser generator.  In addition to supplying
+ *  the actual parse tables, generated code also supplies methods which 
+ *  invoke various pieces of user supplied code, provide access to certain
+ *  special symbols (e.g., EOF and error), etc.  Specifically, the following
+ *  abstract methods are normally supplied by generated code:
+ *  <dl compact>
+ *  <dt> short[][] production_table()
+ *  <dd> Provides a reference to the production table (indicating the index of
+ *       the left hand side non terminal and the length of the right hand side
+ *       for each production in the grammar).
+ *  <dt> short[][] action_table()
+ *  <dd> Provides a reference to the parse action table.
+ *  <dt> short[][] reduce_table()
+ *  <dd> Provides a reference to the reduce-goto table.
+ *  <dt> int start_state()      
+ *  <dd> Indicates the index of the start state.
+ *  <dt> int start_production() 
+ *  <dd> Indicates the index of the starting production.
+ *  <dt> int EOF_sym() 
+ *  <dd> Indicates the index of the EOF symbol.
+ *  <dt> int error_sym() 
+ *  <dd> Indicates the index of the error symbol.
+ *  <dt> symbol do_action() 
+ *  <dd> Executes a piece of user supplied action code.  This always comes at 
+ *       the point of a reduce in the parse, so this code also allocates and 
+ *       fills in the left hand side non terminal symbol object that is to be 
+ *       pushed onto the stack for the reduce.
+ *  <dt> void init_actions()
+ *  <dd> Code to initialize a special object that encapsulates user supplied
+ *       actions (this object is used by do_action() to actually carry out the 
+ *       actions).
+ *  <dt> token scan()
+ *  <dd> Used to get the next input token from the scanner.
+ *  </dl>
+ *  
+ *  In addition to these routines that <i>must</i> be supplied by the 
+ *  generated subclass there are also a series of routines that <i>may</i> 
+ *  be supplied.  These include:
+ *  <dl>
+ *  <dt> int error_sync_size()
+ *  <dd> This determines how many tokens past the point of an error 
+ *       must be parsed without error in order to consider a recovery to 
+ *       be valid.  This defaults to 3.  Values less than 2 are not 
+ *       recommended.
+ *  <dt> void report_error(String message, Object info)
+ *  <dd> This method is called to report an error.  The default implementation
+ *       simply prints a message to System.err and ignores its second parameter.
+ *       This method is often replaced in order to provide a more sophisticated
+ *       error reporting mechanism.
+ *  <dt> void report_fatal_error(String message, Object info)
+ *  <dd> This method is called when a fatal error that cannot be recovered from
+ *       is encountered.  In the default implementation, it calls 
+ *       report_error() to emit a message, then throws an exception.
+ *  <dt> void syntax_error(token cur_token)
+ *  <dd> This method is called as soon as syntax error is detected (but
+ *       before recovery is attempted).  In the default implementation it 
+ *       invokes: report_error("Syntax error", null);
+ *  <dt> void unrecovered_syntax_error(token cur_token)
+ *  <dd> This method is called if syntax error recovery fails.  In the default
+ *       implementation it invokes:<br> 
+ *         report_fatal_error("Couldn't repair and continue parse", null);
+ *  </dl>
+ *
+ * @see     java_cup.runtime.symbol
+ * @see     java_cup.runtime.token
+ * @see     java_cup.runtime.virtual_parse_stack
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+
+public abstract class lr_parser {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Simple constructor. */
+  public lr_parser()
+    {
+      /* nothing to do here */
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Static (Class) Variables ------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** The default number of tokens after an error we much match to consider 
+   *  it recovered from. 
+   */
+  protected final static int _error_sync_size = 3;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The number of tokens after an error we much match to consider it 
+   *  recovered from. 
+   */
+  protected int error_sync_size() {return _error_sync_size; }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Table of production information (supplied by generated subclass).
+   *  This table contains one entry per production and is indexed by 
+   *  the negative-encoded values (reduce actions) in the action_table.  
+   *  Each entry has two parts, the index of the non-terminal on the 
+   *  left hand side of the production, and the number of symbols 
+   *  on the right hand side. 
+   */
+  public abstract short[][] production_table();
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The action table (supplied by generated subclass).  This table is
+   *  indexed by state and terminal number indicating what action is to
+   *  be taken when the parser is in the given state (i.e., the given state 
+   *  is on top of the stack) and the given terminal is next on the input.  
+   *  States are indexed using the first dimension, however, the entries for 
+   *  a given state are compacted and stored in adjacent index, value pairs 
+   *  which are searched for rather than accessed directly (see get_action()).  
+   *  The actions stored in the table will be either shifts, reduces, or 
+   *  errors.  Shifts are encoded as positive values (one greater than the 
+   *  state shifted to).  Reduces are encoded as negative values (one less 
+   *  than the production reduced by).  Error entries are denoted by zero. 
+   * 
+   * @see java_cup.runtime.lr_parser#get_action
+   */
+  public abstract short[][] action_table();
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The reduce-goto table (supplied by generated subclass).  This
+   *  table is indexed by state and non-terminal number and contains
+   *  state numbers.  States are indexed using the first dimension, however,
+   *  the entries for a given state are compacted and stored in adjacent
+   *  index, value pairs which are searched for rather than accessed 
+   *  directly (see get_reduce()).  When a reduce occurs, the handle 
+   *  (corresponding to the RHS of the matched production) is popped off 
+   *  the stack.  The new top of stack indicates a state.  This table is 
+   *  then indexed by that state and the LHS of the reducing production to 
+   *  indicate where to "shift" to. 
+   *
+   * @see java_cup.runtime.lr_parser#get_reduce
+   */
+  public abstract short[][] reduce_table();
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The index of the start state (supplied by generated subclass). */
+  public abstract int start_state();
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The index of the start production (supplied by generated subclass). */
+  public abstract int start_production();
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The index of the end of file terminal symbol (supplied by generated 
+   *  subclass). 
+   */
+  public abstract int EOF_sym();
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The index of the special error symbol (supplied by generated subclass). */
+  public abstract int error_sym();
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Internal flag to indicate when parser should quit. */
+  protected boolean _done_parsing = false;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** This method is called to indicate that the parser should quit.  This is 
+   *  normally called by an accept action, but can be used to cancel parsing 
+   *  early in other circumstances if desired. 
+   */
+  public void done_parsing()
+    {
+      _done_parsing = true;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+  /* Global parse state shared by parse(), error recovery, and 
+   * debugging routines */
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Indication of the index for top of stack (for use by actions). */
+  protected int tos;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The current lookahead token. */
+  protected token cur_token;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The parse stack itself. */
+  protected Stack stack = new Stack();
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Direct reference to the production table. */ 
+  protected short[][] production_tab;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Direct reference to the action table. */
+  protected short[][] action_tab;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Direct reference to the reduce-goto table. */
+  protected short[][] reduce_tab;
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Perform a bit of user supplied action code (supplied by generated 
+   *  subclass).  Actions are indexed by an internal action number assigned
+   *  at parser generation time.
+   *
+   * @param act_num   the internal index of the action to be performed.
+   * @param parser    the parser object we are acting for.
+   * @param stack     the parse stack of that object.
+   * @param top       the index of the top element of the parse stack.
+   */
+  public abstract symbol do_action(
+    int       act_num, 
+    lr_parser parser, 
+    Stack     stack, 
+    int       top) 
+    throws java.lang.Exception;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** User code for initialization inside the parser.  Typically this 
+   *  initializes the scanner.  This is called before the parser requests
+   *  the first token.  Here this is just a placeholder for subclasses that 
+   *  might need this and we perform no action.   This method is normally
+   *  overridden by the generated code using this contents of the "init with"
+   *  clause as its body.
+   */
+  public void user_init() throws java.lang.Exception { }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Initialize the action object.  This is called before the parser does
+   *  any parse actions. This is filled in by generated code to create
+   *  an object that encapsulates all action code. 
+   */ 
+  protected abstract void init_actions() throws java.lang.Exception;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Get the next token from the input (supplied by generated subclass).
+   *  Once end of file has been reached, all subsequent calls to scan 
+   *  should return an EOF token (which is symbol number 0).  This method
+   *  is supplied by the generator using using the code declared in the 
+   *  "scan with" clause.
+   */
+  public abstract token scan() throws java.lang.Exception;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Report a fatal error.  This method takes a  message string and an 
+   *  additional object (to be used by specializations implemented in 
+   *  subclasses).  Here in the base class a very simple implementation 
+   *  is provided which reports the error then throws an exception. 
+   *
+   * @param message an error message.
+   * @param info    an extra object reserved for use by specialized subclasses.
+   */
+  public void report_fatal_error(
+    String   message, 
+    Object   info)
+    throws java.lang.Exception
+    {
+      /* stop parsing (not really necessary since we throw an exception, but) */
+      done_parsing();
+
+      /* use the normal error message reporting to put out the message */
+      report_error(message, info);
+
+      /* throw an exception */
+      throw new Exception("Can't recover from previous error(s)");
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Report a non fatal error (or warning).  This method takes a message 
+   *  string and an additional object (to be used by specializations 
+   *  implemented in subclasses).  Here in the base class a very simple 
+   *  implementation is provided which simply prints the message to 
+   *  System.err. 
+   *
+   * @param message an error message.
+   * @param info    an extra object reserved for use by specialized subclasses.
+   */
+  public void report_error(String message, Object info)
+    {
+      System.err.println(message);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** This method is called when a syntax error has been detected and recovery 
+   *  is about to be invoked.  Here in the base class we just emit a 
+   *  "Syntax error" error message.  
+   *
+   * @param cur_token the current lookahead token.
+   */
+  public void syntax_error(token cur_token)
+    {
+      report_error("Syntax error", null);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** This method is called if it is determined that syntax error recovery 
+   *  has been unsuccessful.  Here in the base class we report a fatal error. 
+   *
+   * @param cur_token the current lookahead token.
+   */
+  public void unrecovered_syntax_error(token cur_token)
+    throws java.lang.Exception
+    {
+      report_fatal_error("Couldn't repair and continue parse", null);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Fetch an action from the action table.  The table is broken up into
+   *  rows, one per state (rows are indexed directly by state number).  
+   *  Within each row, a list of index, value pairs are given (as sequential
+   *  entries in the table), and the list is terminated by a default entry 
+   *  (denoted with a symbol index of -1).  To find the proper entry in a row 
+   *  we do a linear or binary search (depending on the size of the row).  
+   *
+   * @param state the state index of the action being accessed.
+   * @param sym   the symbol index of the action being accessed.
+   */
+  protected final short get_action(int state, int sym)
+    {
+      short tag;
+      int first, last, probe;
+      short[] row = action_tab[state];
+
+      /* linear search if we are < 10 entries */
+      if (row.length < 20)
+        for (probe = 0; probe < row.length; probe++)
+      {
+        /* is this entry labeled with our symbol or the default? */
+        tag = row[probe++];
+        if (tag == sym || tag == -1)
+          {
+            /* return the next entry */
+            return row[probe];
+          }
+      }
+      /* otherwise binary search */
+      else
+    {
+      first = 0; 
+      last = (row.length-1)/2 - 1;  /* leave out trailing default entry */
+      while (first <= last)
+        {
+          probe = (first+last)/2;
+          if (sym == row[probe*2])
+        return row[probe*2+1];
+          else if (sym > row[probe*2])
+        first = probe+1;
+          else
+            last = probe-1;
+        }
+
+      /* not found, use the default at the end */
+      return row[row.length-1];
+    }
+
+      /* shouldn't happened, but if we run off the end we return the 
+     default (error == 0) */
+      return 0;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Fetch a state from the reduce-goto table.  The table is broken up into
+   *  rows, one per state (rows are indexed directly by state number).  
+   *  Within each row, a list of index, value pairs are given (as sequential
+   *  entries in the table), and the list is terminated by a default entry 
+   *  (denoted with a symbol index of -1).  To find the proper entry in a row 
+   *  we do a linear search.  
+   *
+   * @param state the state index of the entry being accessed.
+   * @param sym   the symbol index of the entry being accessed.
+   */
+  protected final short get_reduce(int state, int sym)
+    {
+      short tag;
+      short[] row = reduce_tab[state];
+
+      /* if we have a null row we go with the default */
+      if (row == null)
+        return -1;
+
+      for (int probe = 0; probe < row.length; probe++)
+    {
+      /* is this entry labeled with our symbol or the default? */
+      tag = row[probe++];
+      if (tag == sym || tag == -1)
+        {
+          /* return the next entry */
+          return row[probe];
+        }
+    }
+      /* if we run off the end we return the default (error == -1) */
+      return -1;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** This method provides the main parsing routine.  It returns only when 
+   *  done_parsing() has been called (typically because the parser has 
+   *  accepted, or a fatal error has been reported).  See the header 
+   *  documentation for the class regarding how shift/reduce parsers operate
+   *  and how the various tables are used.
+   */
+  public void parse() throws java.lang.Exception
+    {
+      /* the current action code */
+      int act;
+
+      /* the symbol/stack element returned by a reduce */
+      symbol lhs_sym;
+
+      /* information about production being reduced with */
+      short handle_size, lhs_sym_num;
+
+      /* set up direct reference to tables to drive the parser */
+
+      production_tab = production_table();
+      action_tab     = action_table();
+      reduce_tab     = reduce_table();
+
+      /* initialize the action encapsulation object */
+      init_actions();
+
+      /* do user initialization */
+      user_init();
+
+      /* get the first token */
+      cur_token = scan(); 
+
+      /* push dummy symbol with start state to get us underway */
+      stack.push(new symbol(0, start_state()));
+      tos = 0;
+
+      /* continue until we are told to stop */
+      for (_done_parsing = false; !_done_parsing; )
+    {
+      /* current state is always on the top of the stack */
+
+      /* look up action out of the current state with the current input */
+      act = get_action(((symbol)stack.peek()).parse_state, cur_token.sym);
+
+      /* decode the action -- > 0 encodes shift */
+      if (act > 0)
+        {
+          /* shift to the encoded state by pushing it on the stack */
+          cur_token.parse_state = act-1;
+          stack.push(cur_token);
+          tos++;
+
+          /* advance to the next token */
+          cur_token = scan();
+        }
+      /* if its less than zero, then it encodes a reduce action */
+      else if (act < 0)
+        {
+          /* perform the action for the reduce */
+          lhs_sym = do_action((-act)-1, this, stack, tos);
+
+          /* look up information about the production */
+          lhs_sym_num = production_tab[(-act)-1][0];
+          handle_size = production_tab[(-act)-1][1];
+
+          /* pop the handle off the stack */
+          for (int i = 0; i < handle_size; i++)
+        {
+          stack.pop();
+          tos--;
+        }
+          
+          /* look up the state to go to from the one popped back to */
+          act = get_reduce(((symbol)stack.peek()).parse_state, lhs_sym_num);
+
+          /* shift to that state */
+          lhs_sym.parse_state = act;
+          stack.push(lhs_sym);
+          tos++;
+        }
+      /* finally if the entry is zero, we have an error */
+      else if (act == 0)
+        {
+          /* call user syntax error reporting routine */
+          syntax_error(cur_token);
+
+          /* try to error recover */
+          if (!error_recovery(false))
+        {
+          /* if that fails give up with a fatal syntax error */
+          unrecovered_syntax_error(cur_token);
+
+          /* just in case that wasn't fatal enough, end parse */
+          done_parsing();
+        }
+        }
+    }
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Write a debugging message to System.err for the debugging version 
+   *  of the parser. 
+   *
+   * @param mess the text of the debugging message.
+   */
+  public void debug_message(String mess)
+    {
+      System.err.println(mess);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Dump the parse stack for debugging purposes. */
+  public void dump_stack()
+    {
+      if (stack == null)
+    {
+      debug_message("# Stack dump requested, but stack is null");
+      return;
+    }
+
+      debug_message("============ Parse Stack Dump ============");
+
+      /* dump the stack */
+      for (int i=0; i<stack.size(); i++)
+    {
+      debug_message("Symbol: " + ((symbol)stack.elementAt(i)).sym +
+            " State: " + ((symbol)stack.elementAt(i)).parse_state);
+    }
+      debug_message("==========================================");
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Do debug output for a reduce. 
+   *
+   * @param prod_num  the production we are reducing with.
+   * @param nt_num    the index of the LHS non terminal.
+   * @param rhs_size  the size of the RHS.
+   */
+  public void debug_reduce(int prod_num, int nt_num, int rhs_size)
+    {
+      debug_message("# Reduce with prod #" + prod_num + " [NT=" + nt_num + 
+                ", " + "SZ=" + rhs_size + "]");
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Do debug output for shift. 
+   *
+   * @param shift_tkn the token being shifted onto the stack.
+   */
+  public void debug_shift(token shift_tkn)
+    {
+      debug_message("# Shift under term #" + shift_tkn.sym + 
+            " to state #" + shift_tkn.parse_state);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Perform a parse with debugging output.  This does exactly the
+   *  same things as parse(), except that it calls debug_shift() and
+   *  debug_reduce() when shift and reduce moves are taken by the parser
+   *  and produces various other debugging messages.  
+   */
+  public void debug_parse()
+    throws java.lang.Exception
+    {
+      /* the current action code */
+      int act;
+
+      /* the symbol/stack element returned by a reduce */
+      symbol lhs_sym;
+
+      /* information about production being reduced with */
+      short handle_size, lhs_sym_num;
+
+      /* set up direct reference to tables to drive the parser */
+      production_tab = production_table();
+      action_tab     = action_table();
+      reduce_tab     = reduce_table();
+
+      debug_message("# Initializing parser");
+
+      /* initialize the action encapsulation object */
+      init_actions();
+
+      /* do user initialization */
+      user_init();
+
+      /* the current token */
+      cur_token = scan(); 
+
+      debug_message("# Current token is #" + cur_token.sym);
+
+      /* push dummy symbol with start state to get us underway */
+      stack.push(new symbol(0, start_state()));
+      tos = 0;
+
+      /* continue until we are told to stop */
+      for (_done_parsing = false; !_done_parsing; )
+    {
+      /* current state is always on the top of the stack */
+
+      /* look up action out of the current state with the current input */
+      act = get_action(((symbol)stack.peek()).parse_state, cur_token.sym);
+
+      /* decode the action -- > 0 encodes shift */
+      if (act > 0)
+        {
+          /* shift to the encoded state by pushing it on the stack */
+          cur_token.parse_state = act-1;
+          debug_shift(cur_token);
+          stack.push(cur_token);
+          tos++;
+
+          /* advance to the next token */
+          cur_token = scan();
+              debug_message("# Current token is #" + cur_token.sym);
+        }
+      /* if its less than zero, then it encodes a reduce action */
+      else if (act < 0)
+        {
+          /* perform the action for the reduce */
+          lhs_sym = do_action((-act)-1, this, stack, tos);
+
+          /* look up information about the production */
+          lhs_sym_num = production_tab[(-act)-1][0];
+          handle_size = production_tab[(-act)-1][1];
+
+          debug_reduce((-act)-1, lhs_sym_num, handle_size);
+
+          /* pop the handle off the stack */
+          for (int i = 0; i < handle_size; i++)
+        {
+          stack.pop();
+          tos--;
+        }
+          
+          /* look up the state to go to from the one popped back to */
+          act = get_reduce(((symbol)stack.peek()).parse_state, lhs_sym_num);
+
+          /* shift to that state */
+          lhs_sym.parse_state = act;
+          stack.push(lhs_sym);
+          tos++;
+
+          debug_message("# Goto state #" + act);
+        }
+      /* finally if the entry is zero, we have an error */
+      else if (act == 0)
+        {
+          /* call user syntax error reporting routine */
+          syntax_error(cur_token);
+
+          /* try to error recover */
+          if (!error_recovery(true))
+        {
+          /* if that fails give up with a fatal syntax error */
+          unrecovered_syntax_error(cur_token);
+
+          /* just in case that wasn't fatal enough, end parse */
+          done_parsing();
+        }
+        }
+    }
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+  /* Error recovery code */
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Attempt to recover from a syntax error.  This returns false if recovery 
+   *  fails, true if it succeeds.  Recovery happens in 4 steps.  First we
+   *  pop the parse stack down to a point at which we have a shift out
+   *  of the top-most state on the error symbol.  This represents the
+   *  initial error recovery configuration.  If no such configuration is
+   *  found, then we fail.  Next a small number of "lookahead" or "parse
+   *  ahead" tokens are read into a buffer.  The size of this buffer is 
+   *  determined by error_sync_size() and determines how many tokens beyond
+   *  the error must be matched to consider the recovery a success.  Next, 
+   *  we begin to discard tokens in attempt to get past the point of error
+   *  to a point where we can continue parsing.  After each token, we attempt 
+   *  to "parse ahead" though the buffered lookahead tokens.  The "parse ahead"
+   *  process simulates that actual parse, but does not modify the real 
+   *  parser's configuration, nor execute any actions. If we can  parse all 
+   *  the stored tokens without error, then the recovery is considered a 
+   *  success.  Once a successful recovery point is determined, we do an
+   *  actual parse over the stored input -- modifying the real parse 
+   *  configuration and executing all actions.  Finally, we return the the 
+   *  normal parser to continue with the overall parse.
+   *
+   * @param debug should we produce debugging messages as we parse.
+   */
+  protected boolean error_recovery(boolean debug)
+    throws java.lang.Exception
+    {
+      if (debug) debug_message("# Attempting error recovery");
+
+      /* first pop the stack back into a state that can shift on error and 
+     do that shift (if that fails, we fail) */
+      if (!find_recovery_config(debug))
+    {
+      if (debug) debug_message("# Error recovery fails");
+      return false;
+    }
+
+      /* read ahead to create lookahead we can parse multiple times */
+      read_lookahead();
+
+      /* repeatedly try to parse forward until we make it the required dist */
+      for (;;)
+    {
+      /* try to parse forward, if it makes it, bail out of loop */
+      if (debug) debug_message("# Trying to parse ahead");
+      if (try_parse_ahead(debug))
+        {
+          break;
+        }
+
+      /* if we are now at EOF, we have failed */
+      if (lookahead[0].sym == EOF_sym()) 
+        {
+          if (debug) debug_message("# Error recovery fails at EOF");
+          return false;
+        }
+
+      /* otherwise, we consume another token and try again */
+      if (debug) 
+      debug_message("# Consuming token #" + cur_err_token().sym);
+      restart_lookahead();
+    }
+
+      /* we have consumed to a point where we can parse forward */
+      if (debug) debug_message("# Parse-ahead ok, going back to normal parse");
+
+      /* do the real parse (including actions) across the lookahead */
+      parse_lookahead(debug);
+
+      /* we have success */
+      return true;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Determine if we can shift under the special error symbol out of the 
+   *  state currently on the top of the (real) parse stack. 
+   */
+  protected boolean shift_under_error()
+    {
+      /* is there a shift under error symbol */
+      return get_action(((symbol)stack.peek()).parse_state, error_sym()) > 0;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Put the (real) parse stack into error recovery configuration by 
+   *  popping the stack down to a state that can shift on the special 
+   *  error symbol, then doing the shift.  If no suitable state exists on 
+   *  the stack we return false 
+   *
+   * @param debug should we produce debugging messages as we parse.
+   */
+  protected boolean find_recovery_config(boolean debug)
+    {
+      token error_token;
+      int act;
+
+      if (debug) debug_message("# Finding recovery state on stack");
+
+      /* pop down until we can shift under error token */
+      while (!shift_under_error())
+    {
+      /* pop the stack */
+      if (debug) 
+        debug_message("# Pop stack by one, state was # " +
+                      ((symbol)stack.peek()).parse_state);
+          stack.pop();    
+      tos--;
+
+      /* if we have hit bottom, we fail */
+      if (stack.empty()) 
+        {
+          if (debug) debug_message("# No recovery state found on stack");
+          return false;
+        }
+    }
+
+      /* state on top of the stack can shift under error, find the shift */
+      act = get_action(((symbol)stack.peek()).parse_state, error_sym());
+      if (debug) 
+    {
+      debug_message("# Recover state found (#" + 
+            ((symbol)stack.peek()).parse_state + ")");
+      debug_message("# Shifting on error to state #" + (act-1));
+    }
+
+      /* build and shift a special error token */
+      error_token = new token(error_sym());
+      error_token.parse_state = act-1;
+      stack.push(error_token);
+      tos++;
+
+      return true;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Lookahead tokens used for attempting error recovery "parse aheads". */
+  protected token lookahead[];
+
+  /** Position in lookahead input buffer used for "parse ahead". */
+  protected int lookahead_pos;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Read from input to establish our buffer of "parse ahead" lookahead 
+   *  symbols. 
+   */
+  protected void read_lookahead() throws java.lang.Exception
+    {
+      /* create the lookahead array */
+      lookahead = new token[error_sync_size()];
+
+      /* fill in the array */
+      for (int i = 0; i < error_sync_size(); i++)
+    {
+      lookahead[i] = cur_token;
+      cur_token = scan();
+    }
+
+      /* start at the beginning */
+      lookahead_pos = 0;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Return the current lookahead in our error "parse ahead" buffer. */
+  protected token cur_err_token() { return lookahead[lookahead_pos]; }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Advance to next "parse ahead" input symbol. Return true if we have 
+   *  input to advance to, false otherwise. 
+   */
+  protected boolean advance_lookahead()
+    {
+      /* advance the input location */
+      lookahead_pos++;
+
+      /* return true if we didn't go off the end */
+      return lookahead_pos < error_sync_size();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Reset the parse ahead input to one token past where we started error 
+   *  recovery (this consumes one new token from the real input). 
+   */
+  protected void restart_lookahead() throws java.lang.Exception
+    {
+      /* move all the existing input over */
+      for (int i = 1; i < error_sync_size(); i++)
+    lookahead[i-1] = lookahead[i];
+
+      /* read a new token into the last spot */
+      cur_token = scan();
+      lookahead[error_sync_size()-1] = cur_token;
+
+      /* reset our internal position marker */
+      lookahead_pos = 0;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Do a simulated parse forward (a "parse ahead") from the current 
+   *  stack configuration using stored lookahead input and a virtual parse
+   *  stack.  Return true if we make it all the way through the stored 
+   *  lookahead input without error. This basically simulates the action of 
+   *  parse() using only our saved "parse ahead" input, and not executing any 
+   *  actions.
+   *
+   * @param debug should we produce debugging messages as we parse.
+   */
+  protected boolean try_parse_ahead(boolean debug)
+    throws java.lang.Exception
+    {
+      int act;
+      short lhs, rhs_size;
+
+      /* create a virtual stack from the real parse stack */
+      virtual_parse_stack vstack = new virtual_parse_stack(stack);
+
+      /* parse until we fail or get past the lookahead input */
+      for (;;)
+    {
+      /* look up the action from the current state (on top of stack) */
+      act = get_action(vstack.top(), cur_err_token().sym);
+
+      /* if its an error, we fail */
+      if (act == 0) return false;
+
+      /* > 0 encodes a shift */
+      if (act > 0)
+        {
+          /* push the new state on the stack */
+          vstack.push(act-1);
+
+          if (debug) debug_message("# Parse-ahead shifts token #" + 
+               cur_err_token().sym + " into state #" + (act-1));
+
+          /* advance simulated input, if we run off the end, we are done */
+          if (!advance_lookahead()) return true;
+        }
+      /* < 0 encodes a reduce */
+      else
+        {
+          /* if this is a reduce with the start production we are done */
+          if ((-act)-1 == start_production()) 
+        {
+          if (debug) debug_message("# Parse-ahead accepts");
+          return true;
+        }
+
+          /* get the lhs symbol and the rhs size */
+          lhs = production_tab[(-act)-1][0];
+          rhs_size = production_tab[(-act)-1][1];
+
+          /* pop handle off the stack */
+          for (int i = 0; i < rhs_size; i++)
+        vstack.pop();
+
+          if (debug) 
+        debug_message("# Parse-ahead reduces: handle size = " + 
+              rhs_size + " lhs = #" + lhs + " from state #" + vstack.top());
+
+          /* look up goto and push it onto the stack */
+          vstack.push(get_reduce(vstack.top(), lhs));
+          if (debug) 
+        debug_message("# Goto state #" + vstack.top());
+        }
+    }
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Parse forward using stored lookahead symbols.  In this case we have
+   *  already verified that parsing will make it through the stored lookahead
+   *  symbols and we are now getting back to the point at which we can hand
+   *  control back to the normal parser.  Consequently, this version of the
+   *  parser performs all actions and modifies the real parse configuration.  
+   *  This returns once we have consumed all the stored input or we accept.
+   *
+   * @param debug should we produce debugging messages as we parse.
+   */
+  protected void parse_lookahead(boolean debug)
+    throws java.lang.Exception
+    {
+      /* the current action code */
+      int act;
+
+      /* the symbol/stack element returned by a reduce */
+      symbol lhs_sym;
+
+      /* information about production being reduced with */
+      short handle_size, lhs_sym_num;
+
+      /* restart the saved input at the beginning */
+      lookahead_pos = 0;
+
+      if (debug) 
+    {
+      debug_message("# Reparsing saved input with actions");
+      debug_message("# Current token is #" + cur_err_token().sym);
+      debug_message("# Current state is #" + 
+            ((symbol)stack.peek()).parse_state);
+    }
+
+      /* continue until we accept or have read all lookahead input */
+      while(!_done_parsing)
+    {
+      /* current state is always on the top of the stack */
+
+      /* look up action out of the current state with the current input */
+      act = 
+        get_action(((symbol)stack.peek()).parse_state, cur_err_token().sym);
+
+      /* decode the action -- > 0 encodes shift */
+      if (act > 0)
+        {
+          /* shift to the encoded state by pushing it on the stack */
+          cur_err_token().parse_state = act-1;
+          if (debug) debug_shift(cur_err_token());
+          stack.push(cur_err_token());
+          tos++;
+
+          /* advance to the next token, if there is none, we are done */
+          if (!advance_lookahead()) 
+        {
+          if (debug) debug_message("# Completed reparse");
+
+          /* scan next token so we can continue parse */
+          cur_token = scan();
+
+          /* go back to normal parser */
+          return;
+        }
+          
+          if (debug) 
+        debug_message("# Current token is #" + cur_err_token().sym);
+        }
+      /* if its less than zero, then it encodes a reduce action */
+      else if (act < 0)
+        {
+          /* perform the action for the reduce */
+          lhs_sym = do_action((-act)-1, this, stack, tos);
+
+          /* look up information about the production */
+          lhs_sym_num = production_tab[(-act)-1][0];
+          handle_size = production_tab[(-act)-1][1];
+
+          if (debug) debug_reduce((-act)-1, lhs_sym_num, handle_size);
+
+          /* pop the handle off the stack */
+          for (int i = 0; i < handle_size; i++)
+        {
+          stack.pop();
+          tos--;
+        }
+          
+          /* look up the state to go to from the one popped back to */
+          act = get_reduce(((symbol)stack.peek()).parse_state, lhs_sym_num);
+
+          /* shift to that state */
+          lhs_sym.parse_state = act;
+          stack.push(lhs_sym);
+          tos++;
+           
+          if (debug) debug_message("# Goto state #" + act);
+
+        }
+      /* finally if the entry is zero, we have an error 
+         (shouldn't happen here, but...)*/
+      else if (act == 0)
+        {
+          report_fatal_error("Syntax error", null);
+          return;
+        }
+    }
+    }
+
+  /*-----------------------------------------------------------*/
+
+};
diff --git a/tools/dasm/src/java_cup/runtime/str_token.java b/tools/dasm/src/java_cup/runtime/str_token.java
new file mode 100644
index 0000000..96e2c94
--- /dev/null
+++ b/tools/dasm/src/java_cup/runtime/str_token.java
@@ -0,0 +1,32 @@
+
+package java_cup.runtime;
+
+/** This subclass of token represents symbols that need to maintain one
+ *  String value as an attribute.  It maintains that value in the public
+ *  field str_val.
+ *
+ * @see java_cup.runtime.int_token
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+
+public class str_token extends token {
+  /** Full constructor. */
+  public str_token(int term_num, String v)
+    {
+      /* super class does most of the work */
+      super(term_num);
+
+      str_val = v;
+    }
+
+  /** Constructor for value defaulting to an empty string. */
+  public str_token(int term_num)
+    {
+      this(term_num, "");
+    }
+
+  /** The stored string value. */
+  public String str_val;
+
+};
diff --git a/tools/dasm/src/java_cup/runtime/symbol.java b/tools/dasm/src/java_cup/runtime/symbol.java
new file mode 100644
index 0000000..ac0fe5a
--- /dev/null
+++ b/tools/dasm/src/java_cup/runtime/symbol.java
@@ -0,0 +1,50 @@
+
+package java_cup.runtime;
+
+/** This class represents a (terminal or non-terminal) symbol that, among
+ *  other things can be placed on the parse stack.  Symbols are used to 
+ *  keep track of state on the parse stack.  The symbol currently on top
+ *  of the stack contains the current state in the parse_state field.
+ *  In addition to the parse_state field, symbols also maintain a record
+ *  of the symbol number that they represent in the sym field.  Finally, 
+ *  symbols are used contain to any attributes used by semantic action (this
+ *  is done via fields added in subclasses -- see for example, int_token and
+ *  str_token).
+ *
+ * @see java_cup.runtime.token
+ * @see java_cup.runtime.int_token
+ * @see java_cup.runtime.str_token
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+
+public class symbol {
+
+  /** Full constructor. */
+  public symbol(int sym_num, int state)
+    {
+      sym = sym_num;
+      parse_state = state;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Constructor without a known state. */
+  public symbol(int sym_num)
+    {
+      this(sym_num, -1);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The symbol number of the terminal or non terminal being represented */
+  public int sym;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The parse state to be recorded on the parse stack with this symbol.
+   *  This field is for the convenience of the parser and shouldn't be 
+   *  modified except by the parser. 
+   */
+  public int parse_state;
+};
diff --git a/tools/dasm/src/java_cup/runtime/token.java b/tools/dasm/src/java_cup/runtime/token.java
new file mode 100644
index 0000000..0df9b81
--- /dev/null
+++ b/tools/dasm/src/java_cup/runtime/token.java
@@ -0,0 +1,21 @@
+
+package java_cup.runtime;
+
+/** This subclass of symbol represents (at least) terminal symbols returned 
+ *  by the scanner and placed on the parse stack.  At present, this 
+ *  class does nothing more than its super class.
+ *  
+ * @see java_cup.runtime.int_token
+ * @see java_cup.runtime.str_token
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+public class token extends symbol {
+
+  /* Simple constructor -- just delegates to the super class. */
+  public token(int term_num)
+    {
+      /* super class does all the work */
+      super(term_num);
+    }
+};
diff --git a/tools/dasm/src/java_cup/runtime/virtual_parse_stack.java b/tools/dasm/src/java_cup/runtime/virtual_parse_stack.java
new file mode 100644
index 0000000..507b755
--- /dev/null
+++ b/tools/dasm/src/java_cup/runtime/virtual_parse_stack.java
@@ -0,0 +1,145 @@
+
+package java_cup.runtime;
+
+import java.util.Stack;
+
+/** This class implements a temporary or "virtual" parse stack that 
+ *  replaces the top portion of the actual parse stack (the part that 
+ *  has been changed by some set of operations) while maintaining its
+ *  original contents.  This data structure is used when the parse needs 
+ *  to "parse ahead" to determine if a given error recovery attempt will 
+ *  allow the parse to continue far enough to consider it successful.  Once 
+ *  success or failure of parse ahead is determined the system then 
+ *  reverts to the original parse stack (which has not actually been 
+ *  modified).  Since parse ahead does not execute actions, only parse
+ *  state is maintained on the virtual stack, not full symbol objects.
+ *
+ * @see     java_cup.runtime.lr_parser
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+
+public class virtual_parse_stack {
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Constructor to build a virtual stack out of a real stack. */
+  public virtual_parse_stack(Stack shadowing_stack) throws java.lang.Exception
+    {
+      /* sanity check */
+      if (shadowing_stack == null)
+    throw new Exception(
+      "Internal parser error: attempt to create null virtual stack");
+
+      /* set up our internals */
+      real_stack = shadowing_stack;
+      vstack     = new Stack();
+      real_next  = 0;
+
+      /* get one element onto the virtual portion of the stack */
+      get_from_real();
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+       
+  /** The real stack that we shadow.  This is accessed when we move off
+   *  the bottom of the virtual portion of the stack, but is always left
+   *  unmodified.
+   */
+  protected Stack real_stack;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Top of stack indicator for where we leave off in the real stack.
+   *  This is measured from top of stack, so 0 would indicate that no
+   *  elements have been "moved" from the real to virtual stack. 
+   */
+  protected int real_next;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The virtual top portion of the stack.  This stack contains Integer
+   *  objects with state numbers.  This stack shadows the top portion
+   *  of the real stack within the area that has been modified (via operations
+   *  on the virtual stack).  When this portion of the stack becomes empty we 
+   *  transfer elements from the underlying stack onto this stack. 
+   */
+  protected Stack vstack;
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Transfer an element from the real to the virtual stack.  This assumes 
+   *  that the virtual stack is currently empty.  
+   */
+  protected void get_from_real()
+    {
+      symbol stack_sym;
+
+      /* don't transfer if the real stack is empty */
+      if (real_next >= real_stack.size()) return;
+
+      /* get a copy of the first symbol we have not transfered */
+      stack_sym = (symbol)real_stack.elementAt(real_stack.size()-1-real_next);
+
+      /* record the transfer */
+      real_next++;
+
+      /* put the state number from the symbol onto the virtual stack */
+      vstack.push(new Integer(stack_sym.parse_state));
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Indicate whether the stack is empty. */
+  public boolean empty()
+    {
+      /* if vstack is empty then we were unable to transfer onto it and 
+     the whole thing is empty. */
+      return vstack.empty();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+      
+  /** Return value on the top of the stack (without popping it). */
+  public int top() throws java.lang.Exception
+    {
+      if (vstack.empty())
+    throw new Exception(
+          "Internal parser error: top() called on empty virtual stack");
+
+      return ((Integer)vstack.peek()).intValue();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Pop the stack. */
+  public void pop() throws java.lang.Exception
+    {
+      if (vstack.empty())
+    throw new Exception(
+          "Internal parser error: pop from empty virtual stack");
+
+      /* pop it */
+      vstack.pop();
+
+      /* if we are now empty transfer an element (if there is one) */
+      if (vstack.empty())
+        get_from_real();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Push a state number onto the stack. */
+  public void push(int state_num)
+    {
+      vstack.push(new Integer(state_num));
+    }
+
+  /*-----------------------------------------------------------*/
+
+};
diff --git a/tools/dasm/src/java_cup/shift_action.java b/tools/dasm/src/java_cup/shift_action.java
new file mode 100644
index 0000000..f1513cd
--- /dev/null
+++ b/tools/dasm/src/java_cup/shift_action.java
@@ -0,0 +1,82 @@
+
+package java_cup;
+
+/** This class represents a shift action within the parse table. 
+ *  The action simply stores the state that it shifts to and responds 
+ *  to queries about its type.
+ *
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+public class shift_action extends parse_action {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Simple constructor. 
+   * @param shft_to the state that this action shifts to.
+   */
+  public shift_action(lalr_state shft_to) throws internal_error
+    {
+      /* sanity check */
+      if (shft_to == null)
+    throw new internal_error(
+      "Attempt to create a shift_action to a null state");
+
+      _shift_to = shft_to;
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** The state we shift to. */
+  protected lalr_state _shift_to;
+
+  /** The state we shift to. */
+  public lalr_state shift_to() {return _shift_to;}
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Quick access to type of action. */
+  public int kind() {return SHIFT;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Equality test. */
+  public boolean equals(shift_action other)
+    {
+      return other != null && other.shift_to() == shift_to();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Generic equality test. */
+  public boolean equals(Object other)
+    {
+      if (other instanceof shift_action)
+    return equals((shift_action)other);
+      else
+       return false;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Compute a hash code. */
+  public int hashCode()
+    {
+      /* use the hash code of the state we are shifting to */
+      return shift_to().hashCode();
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Convert to a string. */
+  public String toString() {return "SHIFT(" + shift_to().index() + ")";}
+
+  /*-----------------------------------------------------------*/
+
+};
diff --git a/tools/dasm/src/java_cup/sym.java b/tools/dasm/src/java_cup/sym.java
new file mode 100644
index 0000000..3987e25
--- /dev/null
+++ b/tools/dasm/src/java_cup/sym.java
@@ -0,0 +1,36 @@
+
+//----------------------------------------------------
+// The following code was generated by Java(tm) CUP v0.9d
+// Thu Aug 10 03:51:39 MSD 2006
+//----------------------------------------------------
+
+package java_cup;
+
+/** JavaCup generated class containing symbol constants. */
+public class sym {
+  /* terminals */
+  static final int IMPORT = 3;
+  static final int INIT = 9;
+  static final int CODE_STRING = 22;
+  static final int DEBUG = 20;
+  static final int SEMI = 13;
+  static final int STAR = 15;
+  static final int CODE = 4;
+  static final int COLON = 17;
+  static final int NON = 8;
+  static final int ID = 21;
+  static final int WITH = 11;
+  static final int TERMINAL = 7;
+  static final int COLON_COLON_EQUALS = 18;
+  static final int COMMA = 14;
+  static final int EOF = 0;
+  static final int PARSER = 6;
+  static final int error = 1;
+  static final int DOT = 16;
+  static final int ACTION = 5;
+  static final int START = 12;
+  static final int PACKAGE = 2;
+  static final int BAR = 19;
+  static final int SCAN = 10;
+};
+
diff --git a/tools/dasm/src/java_cup/symbol.java b/tools/dasm/src/java_cup/symbol.java
new file mode 100644
index 0000000..1c99640
--- /dev/null
+++ b/tools/dasm/src/java_cup/symbol.java
@@ -0,0 +1,107 @@
+package java_cup;
+
+/** This abstract class serves as the base class for grammar symbols (i.e.,
+ * both terminals and non-terminals).  Each symbol has a name string, and
+ * a string giving the type of object that the symbol will be represented by
+ * on the runtime parse stack.  In addition, each symbol maintains a use count
+ * in order to detect symbols that are declared but never used, and an index
+ * number that indicates where it appears in parse tables (index numbers are
+ * unique within terminals or non terminals, but not across both).
+ *
+ * @see     java_cup.terminal
+ * @see     java_cup.non_terminal
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+public abstract class symbol {
+   /*-----------------------------------------------------------*/
+   /*--- Constructor(s) ----------------------------------------*/
+   /*-----------------------------------------------------------*/
+
+   /** Full constructor.
+    * @param nm the name of the symbol.
+    * @param tp a string with the type name.
+    */
+   public symbol(String nm, String tp)
+     {
+       /* sanity check */
+       if (nm == null) nm = "";
+
+       /* apply default if no type given */
+       if (tp == null) tp = "java_cup.runtime.token";
+
+       _name = nm;
+       _stack_type = tp;
+     }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+   /** Constructor with default type. 
+    * @param nm the name of the symbol.
+    */
+   public symbol(String nm)
+     {
+       this(nm, null);
+     }
+
+   /*-----------------------------------------------------------*/
+   /*--- (Access to) Instance Variables ------------------------*/
+   /*-----------------------------------------------------------*/
+
+   /** String for the human readable name of the symbol. */
+   protected String _name; 
+ 
+   /** String for the human readable name of the symbol. */
+   public String name() {return _name;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+   /** String for the type of object used for the symbol on the parse stack. */
+   protected String _stack_type;
+
+   /** String for the type of object used for the symbol on the parse stack. */
+   public String stack_type() {return _stack_type;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+   /** Count of how many times the symbol appears in productions. */
+   protected int _use_count = 0;
+
+   /** Count of how many times the symbol appears in productions. */
+   public int use_count() {return _use_count;}
+
+   /** Increment the use count. */ 
+   public void note_use() {_use_count++;}
+ 
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+ 
+  /** Index of this symbol (terminal or non terminal) in the parse tables.
+   *  Note: indexes are unique among terminals and unique among non terminals,
+   *  however, a terminal may have the same index as a non-terminal, etc. 
+   */
+   protected int _index;
+ 
+  /** Index of this symbol (terminal or non terminal) in the parse tables.
+   *  Note: indexes are unique among terminals and unique among non terminals,
+   *  however, a terminal may have the same index as a non-terminal, etc. 
+   */
+   public int index() {return _index;}
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Indicate if this is a non-terminal.  Here in the base class we
+   *  don't know, so this is abstract.  
+   */
+  public abstract boolean is_non_term();
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Convert to a string. */
+  public String toString()
+    {
+      return name();
+    }
+
+  /*-----------------------------------------------------------*/
+
+};
diff --git a/tools/dasm/src/java_cup/symbol_part.java b/tools/dasm/src/java_cup/symbol_part.java
new file mode 100644
index 0000000..e923af6
--- /dev/null
+++ b/tools/dasm/src/java_cup/symbol_part.java
@@ -0,0 +1,100 @@
+package java_cup;
+
+/** This class represents a part of a production which is a symbol (terminal
+ *  or non terminal).  This simply maintains a reference to the symbol in 
+ *  question.
+ *
+ * @see     java_cup.production
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+public class symbol_part extends production_part {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Full constructor. 
+   * @param sym the symbol that this part is made up of.
+   * @param lab an optional label string for the part.
+   */
+  public symbol_part(symbol sym, String lab) throws internal_error
+    {
+      super(lab);
+
+      if (sym == null)
+    throw new internal_error(
+      "Attempt to construct a symbol_part with a null symbol");
+      _the_symbol = sym;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Constructor with no label. 
+   * @param sym the symbol that this part is made up of.
+   */
+  public symbol_part(symbol sym) throws internal_error
+    {
+      this(sym,null);
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** The symbol that this part is made up of. */
+  protected symbol _the_symbol;
+
+  /** The symbol that this part is made up of. */
+  public symbol the_symbol() {return _the_symbol;}
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Respond that we are not an action part. */
+  public boolean is_action() { return false; }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Equality comparison. */
+  public boolean equals(symbol_part other)
+    {
+      return other != null && super.equals(other) && 
+         the_symbol().equals(other.the_symbol());
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Generic equality comparison. */
+  public boolean equals(Object other)
+    {
+      if (!(other instanceof symbol_part))
+    return false;
+      else
+    return equals((symbol_part)other);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Produce a hash code. */
+  public int hashCode()
+    {
+      return super.hashCode() ^ 
+         (the_symbol()==null ? 0 : the_symbol().hashCode());
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Convert to a string. */
+  public String toString()
+    {
+      if (the_symbol() != null)
+    return super.toString() + the_symbol();
+      else
+    return super.toString() + "$$MISSING-SYMBOL$$";
+    }
+
+  /*-----------------------------------------------------------*/
+
+};
diff --git a/tools/dasm/src/java_cup/symbol_set.java b/tools/dasm/src/java_cup/symbol_set.java
new file mode 100644
index 0000000..ef478be
--- /dev/null
+++ b/tools/dasm/src/java_cup/symbol_set.java
@@ -0,0 +1,231 @@
+
+package java_cup;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+/** This class represents a set of symbols and provides a series of 
+ *  set operations to manipulate them.
+ *
+ * @see     java_cup.symbol
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+public class symbol_set {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Constructor for an empty set. */
+  public symbol_set() { };
+
+  /** Constructor for cloning from another set. 
+   * @param other the set we are cloning from.
+   */
+  public symbol_set(symbol_set other) throws internal_error
+    {
+      not_null(other);
+      _all = (Hashtable)other._all.clone();
+    };
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** A hash table to hold the set. Symbols are keyed using their name string. 
+   */
+  protected Hashtable _all = new Hashtable(11);
+
+  /** Access to all elements of the set. */
+  public Enumeration all() {return _all.elements();};
+
+  /** size of the set */
+  public int size() {return _all.size();};
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Helper function to test for a null object and throw an exception
+   *  if one is found.
+   * @param obj the object we are testing.
+   */
+  protected void not_null(Object obj) throws internal_error
+    {
+      if (obj == null) 
+    throw new internal_error("Null object used in set operation");
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Determine if the set contains a particular symbol. 
+   * @param sym the symbol we are looking for.
+   */
+  public boolean contains(symbol sym) {return _all.containsKey(sym.name());};
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Determine if this set is an (improper) subset of another. 
+   * @param other the set we are testing against.
+   */
+  public boolean is_subset_of(symbol_set other) throws internal_error
+    {
+      not_null(other);
+
+      /* walk down our set and make sure every element is in the other */
+      for (Enumeration e = all(); e.hasMoreElements(); )
+    if (!other.contains((symbol)e.nextElement()))
+      return false;
+
+      /* they were all there */
+      return true;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Determine if this set is an (improper) superset of another. 
+   * @param other the set we are are testing against.
+   */
+  public boolean is_superset_of(symbol_set other) throws internal_error
+    {
+      not_null(other);
+      return other.is_subset_of(this);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Add a single symbol to the set.  
+   * @param sym the symbol we are adding.
+   * @return true if this changes the set.
+   */
+  public boolean add(symbol sym) throws internal_error
+    {
+      Object previous;
+
+      not_null(sym); 
+
+      /* put the object in */
+      previous = _all.put(sym.name(),sym);
+
+      /* if we had a previous, this is no change */
+      return previous == null;
+    };
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Remove a single symbol if it is in the set. 
+   * @param sym the symbol we are removing.
+   */
+  public void remove(symbol sym) throws internal_error
+    {
+      not_null(sym); 
+      _all.remove(sym.name());
+    };
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Add (union) in a complete set.  
+   * @param other the set we are adding in.
+   * @return true if this changes the set. 
+   */
+  public boolean add(symbol_set other) throws internal_error
+    {
+      boolean result = false;
+
+      not_null(other);
+
+      /* walk down the other set and do the adds individually */
+      for (Enumeration e = other.all(); e.hasMoreElements(); )
+    result = add((symbol)e.nextElement()) || result;
+
+      return result;
+    };
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Remove (set subtract) a complete set. 
+   * @param other the set we are removing.
+   */
+  public void remove(symbol_set other) throws internal_error
+    {
+      not_null(other);
+
+      /* walk down the other set and do the removes individually */
+      for (Enumeration e = other.all(); e.hasMoreElements(); )
+    remove((symbol)e.nextElement());
+    };
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Equality comparison. */
+  public boolean equals(symbol_set other) 
+    {
+      if (other == null || other.size() != size()) return false;
+
+      /* once we know they are the same size, then improper subset does test */
+      try {
+        return is_subset_of(other);
+      } catch (internal_error e) {
+    /* can't throw the error (because super class doesn't), so we crash */
+    e.crash();
+    return false;
+      }
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Generic equality comparison. */
+  public boolean equals(Object other)
+    {
+      if (!(other instanceof symbol_set))
+    return false;
+      else
+    return equals((symbol_set)other);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Compute a hash code. */
+  public int hashCode()
+    {
+      int result = 0;
+      int cnt;
+      Enumeration e;
+
+      /* hash together codes from at most first 5 elements */
+      for (e = all(), cnt=0 ; e.hasMoreElements() && cnt<5; cnt++)
+    result ^= ((symbol)e.nextElement()).hashCode();
+
+      return result;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Convert to a string. */
+  public String toString()
+    {
+      String result;
+      boolean comma_flag;
+
+      result = "{";
+      comma_flag = false;
+      for (Enumeration e = all(); e.hasMoreElements(); )
+    {
+      if (comma_flag)
+        result += ", ";
+      else
+        comma_flag = true;
+
+      result += ((symbol)e.nextElement()).name();
+    }
+      result += "}";
+
+      return result;
+    }
+
+  /*-----------------------------------------------------------*/
+
+};
+
+
diff --git a/tools/dasm/src/java_cup/terminal.java b/tools/dasm/src/java_cup/terminal.java
new file mode 100644
index 0000000..bb8dfdd
--- /dev/null
+++ b/tools/dasm/src/java_cup/terminal.java
@@ -0,0 +1,130 @@
+package java_cup;
+ 
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+/** This class represents a terminal symbol in the grammar.  Each terminal 
+ *  has a textual name, an index, and a string which indicates the type of 
+ *  object it will be implemented with at runtime (i.e. the class of object 
+ *  that will be returned by the scanner and pushed on the parse stack to 
+ *  represent it). 
+ *
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+public class terminal extends symbol {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Full constructor.
+   * @param nm the name of the terminal.
+   * @param tp the type of the terminal.
+   */
+  public terminal(String nm, String tp) 
+    {
+      /* superclass does most of the work */
+      super(nm, tp);
+
+      /* add to set of all terminals and check for duplicates */
+      Object conflict = _all.put(nm,this);
+      if (conflict != null)
+    // can't throw an execption here because this is used in static 
+    // initializers, so we do a crash instead
+    // was:
+    // throw new internal_error("Duplicate terminal (" + nm + ") created");
+    (new internal_error("Duplicate terminal (" + nm + ") created")).crash();
+
+      /* assign a unique index */
+      _index = next_index++;
+
+      /* add to by_index set */
+      _all_by_index.put(new Integer(_index), this);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Constructor with default type. 
+   * @param nm the name of the terminal.
+   */
+  public terminal(String nm) 
+    {
+      this(nm, null);
+    }
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Static (Class) Variables ------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Table of all terminals.  Elements are stored using name strings as 
+   *  the key 
+   */
+  protected static Hashtable _all = new Hashtable();
+
+  /** Access to all terminals. */
+  public static Enumeration all() {return _all.elements();};
+
+  /** Lookup a terminal by name string. */ 
+  public static terminal find(String with_name)
+    {
+      if (with_name == null)
+    return null;
+      else 
+    return (terminal)_all.get(with_name);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Table of all terminals indexed by their index number. */
+  protected static Hashtable _all_by_index = new Hashtable();
+
+  /** Lookup a terminal by index. */
+  public static terminal find(int indx)
+    {
+      Integer the_indx = new Integer(indx);
+
+      return (terminal)_all_by_index.get(the_indx);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Total number of terminals. */
+  public static int number() {return _all.size();};
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+ 
+  /** Static counter to assign unique index. */
+  protected static int next_index = 0;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Special terminal for end of input. */
+  public static final terminal EOF = new terminal("EOF");
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** special terminal used for error recovery */
+  public static final terminal error = new terminal("error");
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ---------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Report this symbol as not being a non-terminal. */
+  public boolean is_non_term() 
+    {
+      return false;
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Convert to a string. */
+  public String toString()
+    {
+      return super.toString() + "[" + index() + "]";
+    }
+
+  /*-----------------------------------------------------------*/
+
+};
diff --git a/tools/dasm/src/java_cup/terminal_set.java b/tools/dasm/src/java_cup/terminal_set.java
new file mode 100644
index 0000000..591233b
--- /dev/null
+++ b/tools/dasm/src/java_cup/terminal_set.java
@@ -0,0 +1,253 @@
+
+package java_cup;
+
+import java.util.BitSet;
+
+/** A set of terminals implemented as a bitset. 
+ * @version last updated: 11/25/95
+ * @author  Scott Hudson
+ */
+public class terminal_set {
+
+  /*-----------------------------------------------------------*/
+  /*--- Constructor(s) ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Constructor for an empty set. */
+  public terminal_set() 
+    { 
+      /* allocate the bitset at what is probably the right size */
+      _elements = new BitSet(terminal.number());
+    };
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Constructor for cloning from another set. 
+   * @param other the set we are cloning from.
+   */
+  public terminal_set(terminal_set other) 
+    throws internal_error
+    {
+      not_null(other);
+      _elements = (BitSet)other._elements.clone();
+    };
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Static (Class) Variables ------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Constant for the empty set. */
+  public static final terminal_set EMPTY = new terminal_set();
+
+  /*-----------------------------------------------------------*/
+  /*--- (Access to) Instance Variables ------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Bitset to implement the actual set. */
+  protected BitSet _elements;
+
+  /*-----------------------------------------------------------*/
+  /*--- General Methods ----------------------------------------*/
+  /*-----------------------------------------------------------*/
+
+  /** Helper function to test for a null object and throw an exception if
+   *  one is found. 
+   * @param obj the object we are testing.
+   */
+  protected void not_null(Object obj) throws internal_error
+    {
+      if (obj == null) 
+    throw new internal_error("Null object used in set operation");
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Determine if the set is empty. */
+  public boolean empty()
+    {
+      return equals(EMPTY);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Determine if the set contains a particular terminal. 
+   * @param sym the terminal symbol we are looking for.
+   */
+  public boolean contains(terminal sym) 
+    throws internal_error
+    {
+      not_null(sym); 
+      return _elements.get(sym.index());
+    };
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Given its index determine if the set contains a particular terminal. 
+   * @param indx the index of the terminal in question.
+   */
+  public boolean contains(int indx) 
+    {
+      return _elements.get(indx);
+    };
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Determine if this set is an (improper) subset of another.
+   * @param other the set we are testing against.
+   */
+  public boolean is_subset_of(terminal_set other)
+    throws internal_error
+    {
+      not_null(other);
+
+      /* make a copy of the other set */
+      BitSet copy_other = (BitSet)other._elements.clone();
+
+      /* and or in */
+      copy_other.or(_elements);
+
+      /* if it hasn't changed, we were a subset */
+      return copy_other.equals(other._elements);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Determine if this set is an (improper) superset of another.
+   * @param other the set we are testing against.
+   */
+  public boolean is_superset_of(terminal_set other)
+    throws internal_error
+    {
+      not_null(other);
+      return other.is_subset_of(this);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Add a single terminal to the set.  
+   * @param sym the terminal being added.
+   * @return true if this changes the set.
+   */
+  public boolean add(terminal sym) 
+    throws internal_error
+    {
+      boolean result;
+
+      not_null(sym); 
+
+      /* see if we already have this */ 
+      result = _elements.get(sym.index());
+
+      /* if not we add it */
+      if (!result)
+    _elements.set(sym.index());
+
+      return result;
+    };
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Remove a terminal if it is in the set.
+   * @param sym the terminal being removed.
+   */
+  public void remove(terminal sym) 
+    throws internal_error
+    {
+      not_null(sym); 
+      _elements.clear(sym.index());
+    };
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Add (union) in a complete set.  
+   * @param other the set being added.
+   * @return true if this changes the set.
+   */
+  public boolean add(terminal_set other)
+    throws internal_error
+    {
+      not_null(other);
+
+      /* make a copy */
+      BitSet copy = (BitSet)_elements.clone();
+
+      /* or in the other set */
+      _elements.or(other._elements);
+
+      /* changed if we are not the same as the copy */
+      return !_elements.equals(copy);
+    };
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Determine if this set intersects another.
+   * @param other the other set in question.
+   */
+   public boolean intersects(terminal_set other)
+     throws internal_error
+     {
+       not_null(other);
+
+       /* make a copy of the other set */
+       BitSet copy = (BitSet)other._elements.clone();
+
+       /* xor out our values */
+       copy.xor(this._elements);
+
+       /* see if its different */
+       return !copy.equals(other._elements);
+     }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Equality comparison. */
+  public boolean equals(terminal_set other)
+    {
+      if (other == null) 
+    return false;
+      else
+    return _elements.equals(other._elements);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Generic equality comparison. */
+  public boolean equals(Object other)
+    {
+      if (!(other instanceof terminal_set))
+    return false;
+      else
+    return equals((terminal_set)other);
+    }
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Convert to string. */
+  public String toString()
+    {
+      String result;
+      boolean comma_flag;
+      
+      result = "{";
+      comma_flag = false;
+      for (int t = 0; t < terminal.number(); t++)
+    {
+      if (_elements.get(t))
+        {
+          if (comma_flag)
+            result += ", ";
+          else
+            comma_flag = true;
+
+          result += terminal.find(t).name();
+        }
+    }
+      result += "}";
+
+      return result;
+    }
+
+  /*-----------------------------------------------------------*/
+
+};
+
diff --git a/tools/dasm/src/java_cup/version.java b/tools/dasm/src/java_cup/version.java
new file mode 100644
index 0000000..40a9581
--- /dev/null
+++ b/tools/dasm/src/java_cup/version.java
@@ -0,0 +1,54 @@
+
+package java_cup;
+
+/** This class contains version and authorship information. 
+ *  It contains only static data elements and basically just a central 
+ *  place to put this kind of information so it can be updated easily
+ *  for each release.  
+ *
+ *  Version numbers used here are broken into 3 parts: major, minor, and 
+ *  update, and are written as v<major>.<minor><update> (e.g. v0.9a).  
+ *  Major numbers will change at the time of major reworking of some 
+ *  part of the system.  Minor numbers for each public release or 
+ *  change big enough to cause incompatibilities.  Finally update
+ *  letter will be incremented for small bug fixes and changes that
+ *  probably wouldn't be noticed by a user.  
+ *
+ * @version last updated: 1/7/96
+ * @author  Scott Hudson
+ */
+
+public class version {
+  /** String for the current version. */
+  public static final String version_str = "v0.9d";
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The major version number. */
+  public static final int major = 0;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The minor version number. */
+  public static final int minor = 9;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The update letter. */
+  public static final char update = 'd';
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Full title of the system */
+  public static final String title_str = "Java(tm) CUP " + version_str;
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** Name of the author */
+  public static final String author_str = "Scott E. Hudson";
+
+  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
+
+  /** The command name normally used to invoke this program */ 
+  public static final String program_name = "java_cup";
+};
diff --git a/tools/dasm/test/all_opcodes.d b/tools/dasm/test/all_opcodes.d
new file mode 100644
index 0000000..b07e707
--- /dev/null
+++ b/tools/dasm/test/all_opcodes.d
@@ -0,0 +1,260 @@
+.source all_opcodes.java
+.class public dasm.test.all_opcodes
+.super java/lang/Object
+.implements java/lang/Runnable 
+
+.field public pub_field I
+.field public static static_field J
+
+.method public <init>()V
+    return-void
+.end method
+
+.method public run()I
+.throws java/lang/NullPointerException
+    .limit regs 4
+nop
+move v1, v2
+move/from16 v11, v222
+move/16 v111, v222
+move-wide v1, v2
+move-wide/from16 v11, v222
+move-wide/16 v111, v222
+move-object v1, v2
+move-object/from16 v11, v222
+move-object/16 v111, v222
+move-result v11
+move-result-wide v11
+move-result-object v11
+move-exception v11
+return-void
+return v11
+return-wide v11
+return-object v11
+const/4 v1, 1
+const/16 v11, 0x1234
+const v11, 0x12345678
+const/high16 v11, 0x12340000
+const-wide/16 v11, 0x1234
+const-wide/32 v11, 0x12345678
+const-wide v11, 3.1415
+const-wide/high16 v11, 0x1234000000000000
+const-string v11, "abc"
+const-string/jumbo v11, "abcd"
+const-class v11, java/lang/Object
+monitor-enter v11
+monitor-exit v11
+check-cast v11, java/lang/Object
+instance-of v1, v2, java/lang/Object
+array-length v1, v2
+new-instance v11, java/lang/Object
+new-array v1, v2, java/lang/Object
+filled-new-array {v1, v2, v3, v4, v5}, I
+filled-new-array/range {v3..v7}, D
+fill-array-data v11 I
+        1
+        2
+        3
+        4
+fill-array-data-end
+throw v11
+goto $+1
+goto/16 Label1
+Label1:
+goto/32 Label2
+Label2:
+packed-switch v11, 1
+        Label1
+        Label3
+packed-switch-end
+Label3:
+sparse-switch v11
+        1 : Label2
+        33 : Label4
+sparse-switch-end
+Label4:
+
+cmpl-float v11, v22, v33
+cmpg-float v11, v22, v33  
+cmpl-double v11, v22, v33  
+cmpg-double v11, v22, v33  
+cmp-long v11, v22, v33
+if-eq v1, v2, Label1  
+if-ne v1, v2, $+1  
+if-lt v1, v2, Label1  
+if-ge v1, v2, $-1  
+if-gt v1, v2, Label1 
+if-eqz v11, Label1 
+if-nez v11, $+1
+if-ltz v11, Label1 
+if-gez v11, $+1
+if-gtz v11, Label1 
+if-lez v11, $-1
+aget v11, v22, v33
+aget-wide v11, v22, v33 
+aget-object v11, v22, v33 
+aget-boolean v11, v22, v33 
+aget-byte v11, v22, v33 
+aget-char v11, v22, v33 
+aget-short v11, v22, v33 
+aput v11, v22, v33 
+aput-wide v11, v22, v33 
+aput-object v11, v22, v33 
+aput-boolean v11, v22, v33 
+aput-byte v11, v22, v33 
+aput-char v11, v22, v33 
+aput-short v11, v22, v33
+iget v1, v2, dxc.junit.opcodes.nop.jm.T_nop_1.pub_field I
+iget-wide v1, v2, dxc.junit.opcodes.nop.jm.T_nop_1.pub_field I
+iget-object v1, v2, dxc.junit.opcodes.nop.jm.T_nop_1.pub_field I
+iget-boolean v1, v2, dxc.junit.opcodes.nop.jm.T_nop_1.pub_field I
+iget-byte v1, v2, dxc.junit.opcodes.nop.jm.T_nop_1.pub_field I
+iget-char v1, v2, dxc.junit.opcodes.nop.jm.T_nop_1.pub_field I
+iget-short v1, v2, dxc.junit.opcodes.nop.jm.T_nop_1.pub_field I
+iput v1, v2, dxc.junit.opcodes.nop.jm.T_nop_1.pub_field I
+iput-wide v1, v2, dxc.junit.opcodes.nop.jm.T_nop_1.pub_field I
+iput-object v1, v2, dxc.junit.opcodes.nop.jm.T_nop_1.pub_field I
+iput-boolean v1, v2, dxc.junit.opcodes.nop.jm.T_nop_1.pub_field I
+iput-byte v1, v2, dxc.junit.opcodes.nop.jm.T_nop_1.pub_field I
+iput-char v1, v2, dxc.junit.opcodes.nop.jm.T_nop_1.pub_field I
+iput-short v1, v2, dxc.junit.opcodes.nop.jm.T_nop_1.pub_field I
+sget v1, dxc.junit.opcodes.nop.jm.T_nop_1.static_field I
+sget-wide v1, dxc.junit.opcodes.nop.jm.T_nop_1.static_field I
+sget-object v1, dxc.junit.opcodes.nop.jm.T_nop_1.static_field I
+sget-boolean v1, dxc.junit.opcodes.nop.jm.T_nop_1.static_field I
+sget-byte v1, dxc.junit.opcodes.nop.jm.T_nop_1.static_field I
+sget-char v1, dxc.junit.opcodes.nop.jm.T_nop_1.static_field I
+sget-short v1, dxc.junit.opcodes.nop.jm.T_nop_1.static_field I
+sput v1, dxc.junit.opcodes.nop.jm.T_nop_1.static_field I
+sput-wide v1, dxc.junit.opcodes.nop.jm.T_nop_1.static_field I
+sput-object v1, dxc.junit.opcodes.nop.jm.T_nop_1.static_field I
+sput-boolean v1, dxc.junit.opcodes.nop.jm.T_nop_1.static_field I
+sput-byte v1, dxc.junit.opcodes.nop.jm.T_nop_1.static_field I
+sput-char v1, dxc.junit.opcodes.nop.jm.T_nop_1.static_field I
+sput-short v1, dxc.junit.opcodes.nop.jm.T_nop_1.static_field I
+
+invoke-virtual {v1}, java/lang/Math/sqrt(D)D
+invoke-super {v1}, java/lang/Math/sqrt(D)D
+invoke-direct {v1}, java/lang/Math/sqrt(D)D 
+invoke-static {v1}, java/lang/Math/sqrt(D)D 
+;invoke-interface {v1}, java/lang/Math/sqrt(D)D
+
+invoke-virtual/range {v1..v4}, java/lang/Math/sqrt(D)D 
+invoke-super/range {v1..v4}, java/lang/Math/sqrt(D)D
+invoke-direct/range {v1..v4}, java/lang/Math/sqrt(D)D
+invoke-static/range {v1..v4}, java/lang/Math/sqrt(D)D
+;invoke-interface/range {v1..v4}, java/lang/Math/sqrt(D)D
+
+neg-int v1, v2
+not-int v1, v2
+neg-long v1, v2
+not-long v1, v2
+neg-float v1, v2
+neg-double v1, v2
+int-to-long v1, v2
+int-to-float v1, v2
+int-to-double v1, v2
+long-to-int v1, v2
+long-to-float v1, v2
+long-to-double v1, v2
+float-to-int v1, v2
+float-to-long v1, v2
+float-to-double v1, v2
+double-to-int v1, v2
+double-to-long v1, v2
+double-to-float v1, v2
+int-to-byte v1, v2
+int-to-char v1, v2
+int-to-short v1, v2
+add-int v11, v22, v33
+sub-int v11, v22, v33
+mul-int v11, v22, v33
+div-int v11, v22, v33
+rem-int v11, v22, v33
+and-int v11, v22, v33
+or-int v11, v22, v33
+xor-int v11, v22, v33
+shl-int v11, v22, v33
+shr-int v11, v22, v33
+ushr-int v11, v22, v33
+add-long v11, v22, v33
+sub-long v11, v22, v33
+mul-long v11, v22, v33
+div-long v11, v22, v33
+rem-long v11, v22, v33
+and-long v11, v22, v33
+or-long v11, v22, v33
+xor-long v11, v22, v33
+shl-long v11, v22, v33
+shr-long v11, v22, v33
+ushr-long v11, v22, v33
+add-float v11, v22, v33
+sub-float v11, v22, v33
+mul-float v11, v22, v33
+div-float v11, v22, v33
+rem-float v11, v22, v33
+add-double v11, v22, v33
+sub-double v11, v22, v33
+mul-double v11, v22, v33
+div-double v11, v22, v33
+rem-double v11, v22, v33
+add-int/2addr v1, v2 
+sub-int/2addr v1, v2
+mul-int/2addr v1, v2
+div-int/2addr v1, v2
+rem-int/2addr v1, v2
+and-int/2addr v1, v2
+or-int/2addr v1, v2
+xor-int/2addr v1, v2
+shl-int/2addr v1, v2
+shr-int/2addr v1, v2
+ushr-int/2addr v1, v2
+add-long/2addr v1, v2
+sub-long/2addr v1, v2
+mul-long/2addr v1, v2
+div-long/2addr v1, v2
+rem-long/2addr v1, v2
+and-long/2addr v1, v2
+or-long/2addr v1, v2
+xor-long/2addr v1, v2
+shl-long/2addr v1, v2
+shr-long/2addr v1, v2
+ushr-long/2addr v1, v2
+add-float/2addr v1, v2
+sub-float/2addr v1, v2
+mul-float/2addr v1, v2
+div-float/2addr v1, v2
+rem-float/2addr v1, v2
+add-double/2addr v1, v2
+sub-double/2addr v1, v2
+mul-double/2addr v1, v2
+div-double/2addr v1, v2
+rem-double/2addr v1, v2
+add-int/lit16 v1, v2, 0x1234
+rsub-int v1, v2, 0x1234
+mul-int/lit16 v1, v2, 0x1234
+div-int/lit16 v1, v2, 0x1234
+rem-int/lit16 v1, v2, 0x1234
+and-int/lit16 v1, v2, 0x1234
+or-int/lit16 v1, v2, 0x1234
+xor-int/lit16 v1, v2, 0x1234
+add-int/lit8 v1, v2, 0x12 
+rsub-int/lit8 v1, v2, 0x12
+mul-int/lit8 v1, v2, 0x12
+div-int/lit8 v1, v2, 0x12
+rem-int/lit8 v1, v2, 0x12
+and-int/lit8 v1, v2, 0x12
+or-int/lit8 v1, v2, 0x12
+xor-int/lit8 v1, v2, 0x12
+shl-int/lit8 v1, v2, 0x12
+shr-int/lit8 v1, v2, 0x12
+ushr-int/lit8 v1, v2, 0x12
+
+.catch java/lang/Exception from Label1 to Label2 using Label3
+.end method
+
+.source test_interface.java
+.interface public dasm.test.interface.test_interface
+
+.method public native test()V
+.end method
\ No newline at end of file
diff --git a/tools/dex-tools/Android.mk b/tools/dex-tools/Android.mk
new file mode 100644
index 0000000..fa5a566
--- /dev/null
+++ b/tools/dex-tools/Android.mk
@@ -0,0 +1,27 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH := $(call my-dir)
+
+# dex-tools java library
+# ============================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under,src)
+
+LOCAL_MODULE := dex-tools
+LOCAL_JAVA_LIBRARIES := dx
+
+include $(BUILD_HOST_JAVA_LIBRARY)
+
diff --git a/tools/dex-tools/README.txt b/tools/dex-tools/README.txt
new file mode 100644
index 0000000..cfd10eb
--- /dev/null
+++ b/tools/dex-tools/README.txt
@@ -0,0 +1,29 @@
+__dex-tools__
+
+This project contains the source code and tests for a dex file parser. 
+The parser is able to read  a dex file and to create a datastructure based on it. 
+It is designed to be fast and close to the spec. 
+Support for direct navigation to super classes and similar will be implemented in a layer on top of the provided data structure.
+
+Since this folder contains a .project file, it can be imported directly into eclipse as a java project.
+
+Feel free to improve!
+
+_Structure_
+
+dex.reader
+  |
+  dex   : test data
+  |
+  doc   : dex file spec on which this parser is based
+  | 
+  src   : sourcecode of the parser
+  |
+  lib   : dx.jar the jar from the dx tool. Used for in-memory java -> byte code -> dex code -> dex model tests
+  |
+  test  : source code of the small test suite
+  |
+  README.txt : you are here
+  |
+  TODO.txt   : tasks which are still open
+ 
diff --git a/tools/dex-tools/TODO.txt b/tools/dex-tools/TODO.txt
new file mode 100644
index 0000000..ac774c1
--- /dev/null
+++ b/tools/dex-tools/TODO.txt
@@ -0,0 +1,7 @@
+__Todo__
+
+Add more complex tests
+Check if fileformat version matches dex reader
+Add support for big endian encoded files
+dex.reader.DexEncodedValueImpl has some FIXMEs
+dex.reader.DexBuffer needs to be polished regarding unsigned datatypes 
\ No newline at end of file
diff --git a/tools/dex-tools/dex/classes.dex b/tools/dex-tools/dex/classes.dex
new file mode 100644
index 0000000..c1def5f
--- /dev/null
+++ b/tools/dex-tools/dex/classes.dex
Binary files differ
diff --git a/tools/dex-tools/dex/classes.out.dex b/tools/dex-tools/dex/classes.out.dex
new file mode 100644
index 0000000..b6ff09a
--- /dev/null
+++ b/tools/dex-tools/dex/classes.out.dex
@@ -0,0 +1,154413 @@
+----------------DEX_FILE--------------
+
+Filename: DexFile
+-----------DEFINED_CLASSES------------
+
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/Manifest; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =permission )
+public final class android.Manifest$permission extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACCESS_CHECKIN_PROPERTIES
+
+public static final java.lang.String ACCESS_COARSE_LOCATION
+
+public static final java.lang.String ACCESS_FINE_LOCATION
+
+public static final java.lang.String ACCESS_LOCATION_EXTRA_COMMANDS
+
+public static final java.lang.String ACCESS_MOCK_LOCATION
+
+public static final java.lang.String ACCESS_NETWORK_STATE
+
+public static final java.lang.String ACCESS_SURFACE_FLINGER
+
+public static final java.lang.String ACCESS_WIFI_STATE
+
+public static final java.lang.String ADD_SYSTEM_SERVICE
+
+public static final java.lang.String BATTERY_STATS
+
+public static final java.lang.String BLUETOOTH
+
+public static final java.lang.String BLUETOOTH_ADMIN
+
+public static final java.lang.String BRICK
+
+public static final java.lang.String BROADCAST_PACKAGE_REMOVED
+
+public static final java.lang.String BROADCAST_STICKY
+
+public static final java.lang.String CALL_PHONE
+
+public static final java.lang.String CALL_PRIVILEGED
+
+public static final java.lang.String CAMERA
+
+public static final java.lang.String CHANGE_COMPONENT_ENABLED_STATE
+
+public static final java.lang.String CHANGE_CONFIGURATION
+
+public static final java.lang.String CHANGE_NETWORK_STATE
+
+public static final java.lang.String CHANGE_WIFI_STATE
+
+public static final java.lang.String CLEAR_APP_CACHE
+
+public static final java.lang.String CLEAR_APP_USER_DATA
+
+public static final java.lang.String CONTROL_LOCATION_UPDATES
+
+public static final java.lang.String DELETE_CACHE_FILES
+
+public static final java.lang.String DELETE_PACKAGES
+
+public static final java.lang.String DEVICE_POWER
+
+public static final java.lang.String DIAGNOSTIC
+
+public static final java.lang.String DISABLE_KEYGUARD
+
+public static final java.lang.String DUMP
+
+public static final java.lang.String EXPAND_STATUS_BAR
+
+public static final java.lang.String FACTORY_TEST
+
+public static final java.lang.String FLASHLIGHT
+
+public static final java.lang.String FORCE_BACK
+
+public static final java.lang.String FOTA_UPDATE
+
+public static final java.lang.String GET_ACCOUNTS
+
+public static final java.lang.String GET_PACKAGE_SIZE
+
+public static final java.lang.String GET_TASKS
+
+public static final java.lang.String HARDWARE_TEST
+
+public static final java.lang.String INJECT_EVENTS
+
+public static final java.lang.String INSTALL_PACKAGES
+
+public static final java.lang.String INTERNAL_SYSTEM_WINDOW
+
+public static final java.lang.String INTERNET
+
+public static final java.lang.String MANAGE_APP_TOKENS
+
+public static final java.lang.String MASTER_CLEAR
+
+public static final java.lang.String MODIFY_AUDIO_SETTINGS
+
+public static final java.lang.String MODIFY_PHONE_STATE
+
+public static final java.lang.String MOUNT_UNMOUNT_FILESYSTEMS
+
+public static final java.lang.String PERSISTENT_ACTIVITY
+
+public static final java.lang.String PROCESS_OUTGOING_CALLS
+
+public static final java.lang.String READ_CALENDAR
+
+public static final java.lang.String READ_CONTACTS
+
+public static final java.lang.String READ_FRAME_BUFFER
+
+public static final java.lang.String READ_INPUT_STATE
+
+public static final java.lang.String READ_LOGS
+
+public static final java.lang.String READ_OWNER_DATA
+
+public static final java.lang.String READ_PHONE_STATE
+
+public static final java.lang.String READ_SMS
+
+public static final java.lang.String READ_SYNC_SETTINGS
+
+public static final java.lang.String READ_SYNC_STATS
+
+public static final java.lang.String REBOOT
+
+public static final java.lang.String RECEIVE_BOOT_COMPLETED
+
+public static final java.lang.String RECEIVE_MMS
+
+public static final java.lang.String RECEIVE_SMS
+
+public static final java.lang.String RECEIVE_WAP_PUSH
+
+public static final java.lang.String RECORD_AUDIO
+
+public static final java.lang.String REORDER_TASKS
+
+public static final java.lang.String RESTART_PACKAGES
+
+public static final java.lang.String SEND_SMS
+
+public static final java.lang.String SET_ACTIVITY_WATCHER
+
+public static final java.lang.String SET_ALWAYS_FINISH
+
+public static final java.lang.String SET_ANIMATION_SCALE
+
+public static final java.lang.String SET_DEBUG_APP
+
+public static final java.lang.String SET_ORIENTATION
+
+public static final java.lang.String SET_PREFERRED_APPLICATIONS
+
+public static final java.lang.String SET_PROCESS_FOREGROUND
+
+public static final java.lang.String SET_PROCESS_LIMIT
+
+public static final java.lang.String SET_TIME_ZONE
+
+public static final java.lang.String SET_WALLPAPER
+
+public static final java.lang.String SET_WALLPAPER_HINTS
+
+public static final java.lang.String SIGNAL_PERSISTENT_PROCESSES
+
+public static final java.lang.String STATUS_BAR
+
+public static final java.lang.String SUBSCRIBED_FEEDS_READ
+
+public static final java.lang.String SUBSCRIBED_FEEDS_WRITE
+
+public static final java.lang.String SYSTEM_ALERT_WINDOW
+
+public static final java.lang.String VIBRATE
+
+public static final java.lang.String WAKE_LOCK
+
+public static final java.lang.String WRITE_APN_SETTINGS
+
+public static final java.lang.String WRITE_CALENDAR
+
+public static final java.lang.String WRITE_CONTACTS
+
+public static final java.lang.String WRITE_GSERVICES
+
+public static final java.lang.String WRITE_OWNER_DATA
+
+public static final java.lang.String WRITE_SETTINGS
+
+public static final java.lang.String WRITE_SMS
+
+public static final java.lang.String WRITE_SYNC_SETTINGS
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/Manifest$permission; )
+public final class android.Manifest extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/R; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =anim )
+public final class android.R$anim extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int accelerate_decelerate_interpolator
+
+public static final int accelerate_interpolator
+
+public static final int decelerate_interpolator
+
+public static final int fade_in
+
+public static final int fade_out
+
+public static final int slide_in_left
+
+public static final int slide_out_right
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/R; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =array )
+public final class android.R$array extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int emailAddressTypes
+
+public static final int imProtocols
+
+public static final int organizationTypes
+
+public static final int phoneTypes
+
+public static final int postalAddressTypes
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =attr )
+@dalvik.annotation.EnclosingClass (value =Landroid/R; )
+public final class android.R$attr extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int absListViewStyle
+
+public static final int action
+
+public static final int activityCloseEnterAnimation
+
+public static final int activityCloseExitAnimation
+
+public static final int activityOpenEnterAnimation
+
+public static final int activityOpenExitAnimation
+
+public static final int addStatesFromChildren
+
+public static final int adjustViewBounds
+
+public static final int alertDialogStyle
+
+public static final int allowClearUserData
+
+public static final int allowTaskReparenting
+
+public static final int alphabeticShortcut
+
+public static final int alwaysDrawnWithCache
+
+public static final int alwaysRetainTaskState
+
+public static final int angle
+
+public static final int animation
+
+public static final int animationCache
+
+public static final int animationDuration
+
+public static final int animationOrder
+
+public static final int antialias
+
+public static final int apiKey
+
+public static final int authorities
+
+public static final int autoCompleteTextViewStyle
+
+public static final int autoLink
+
+public static final int autoText
+
+public static final int background
+
+public static final int backgroundDimAmount
+
+public static final int baselineAlignBottom
+
+public static final int baselineAligned
+
+public static final int baselineAlignedChildIndex
+
+public static final int bottom
+
+public static final int bottomBright
+
+public static final int bottomDark
+
+public static final int bottomLeftRadius
+
+public static final int bottomMedium
+
+public static final int bottomRightRadius
+
+public static final int bufferType
+
+public static final int button
+
+public static final int buttonStyle
+
+public static final int buttonStyleInset
+
+public static final int buttonStyleSmall
+
+public static final int buttonStyleToggle
+
+public static final int cacheColorHint
+
+public static final int capitalize
+
+public static final int centerBright
+
+public static final int centerColor
+
+public static final int centerDark
+
+public static final int centerMedium
+
+public static final int centerX
+
+public static final int centerY
+
+public static final int checkBoxPreferenceStyle
+
+public static final int checkMark
+
+public static final int checkable
+
+public static final int checkableBehavior
+
+public static final int checkboxStyle
+
+public static final int checked
+
+public static final int checkedButton
+
+public static final int childDivider
+
+public static final int childIndicator
+
+public static final int childIndicatorLeft
+
+public static final int childIndicatorRight
+
+public static final int choiceMode
+
+public static final int clearTaskOnLaunch
+
+public static final int clickable
+
+public static final int clipChildren
+
+public static final int clipOrientation
+
+public static final int clipToPadding
+
+public static final int collapseColumns
+
+public static final int color
+
+public static final int colorBackground
+
+public static final int colorForeground
+
+public static final int colorForegroundInverse
+
+public static final int columnDelay
+
+public static final int columnWidth
+
+public static final int completionHint
+
+public static final int completionHintView
+
+public static final int completionThreshold
+
+public static final int configChanges
+
+public static final int constantSize
+
+public static final int cropToPadding
+
+public static final int cursorVisible
+
+public static final int cycles
+
+public static final int dashGap
+
+public static final int dashWidth
+
+public static final int data
+
+public static final int debuggable
+
+public static final int defaultValue
+
+public static final int delay
+
+public static final int dependency
+
+public static final int descendantFocusability
+
+public static final int description
+
+public static final int dial
+
+public static final int dialogIcon
+
+public static final int dialogLayout
+
+public static final int dialogMessage
+
+public static final int dialogPreferenceStyle
+
+public static final int dialogTitle
+
+public static final int digits
+
+public static final int direction
+
+public static final int directionPriority
+
+public static final int disableDependentsState
+
+public static final int disabledAlpha
+
+public static final int dither
+
+public static final int divider
+
+public static final int dividerHeight
+
+public static final int drawSelectorOnTop
+
+public static final int drawable
+
+public static final int drawableBottom
+
+public static final int drawableLeft
+
+public static final int drawablePadding
+
+public static final int drawableRight
+
+public static final int drawableTop
+
+public static final int drawingCacheQuality
+
+public static final int dropDownHintAppearance
+
+public static final int dropDownItemStyle
+
+public static final int dropDownListViewStyle
+
+public static final int dropDownSelector
+
+public static final int duplicateParentState
+
+public static final int duration
+
+public static final int editTextPreferenceStyle
+
+public static final int editTextStyle
+
+public static final int editable
+
+public static final int ellipsize
+
+public static final int ems
+
+public static final int enabled
+
+public static final int endColor
+
+public static final int endYear
+
+public static final int entries
+
+public static final int entryValues
+
+public static final int excludeFromRecents
+
+public static final int expandableListPreferredChildIndicatorLeft
+
+public static final int expandableListPreferredChildIndicatorRight
+
+public static final int expandableListPreferredChildPaddingLeft
+
+public static final int expandableListPreferredItemIndicatorLeft
+
+public static final int expandableListPreferredItemIndicatorRight
+
+public static final int expandableListPreferredItemPaddingLeft
+
+public static final int expandableListViewStyle
+
+public static final int exported
+
+public static final int factor
+
+public static final int fadingEdge
+
+public static final int fadingEdgeLength
+
+public static final int fillAfter
+
+public static final int fillBefore
+
+public static final int fillViewport
+
+public static final int filter
+
+public static final int finishOnTaskLaunch
+
+public static final int fitsSystemWindows
+
+public static final int flipInterval
+
+public static final int focusable
+
+public static final int focusableInTouchMode
+
+public static final int foreground
+
+public static final int foregroundGravity
+
+public static final int format
+
+public static final int freezesText
+
+public static final int fromAlpha
+
+public static final int fromDegrees
+
+public static final int fromXDelta
+
+public static final int fromXScale
+
+public static final int fromYDelta
+
+public static final int fromYScale
+
+public static final int fullBright
+
+public static final int fullDark
+
+public static final int functionalTest
+
+public static final int galleryItemBackground
+
+public static final int galleryStyle
+
+public static final int gradientRadius
+
+public static final int grantUriPermissions
+
+public static final int gravity
+
+public static final int gridViewStyle
+
+public static final int groupIndicator
+
+public static final int hand_hour
+
+public static final int hand_minute
+
+public static final int handleProfiling
+
+public static final int hasCode
+
+public static final int headerBackground
+
+public static final int height
+
+public static final int hint
+
+public static final int horizontalDivider
+
+public static final int horizontalSpacing
+
+public static final int host
+
+public static final int icon
+
+public static final int id
+
+public static final int ignoreGravity
+
+public static final int imageButtonStyle
+
+public static final int imageWellStyle
+
+public static final int inAnimation
+
+public static final int includeFontPadding
+
+public static final int indeterminate
+
+public static final int indeterminateBehavior
+
+public static final int indeterminateDrawable
+
+public static final int indeterminateDuration
+
+public static final int indeterminateOnly
+
+public static final int indicatorLeft
+
+public static final int indicatorRight
+
+public static final int inflatedId
+
+public static final int initOrder
+
+public static final int innerRadiusRatio
+
+public static final int inputMethod
+
+public static final int insetBottom
+
+public static final int insetLeft
+
+public static final int insetRight
+
+public static final int insetTop
+
+public static final int interpolator
+
+public static final int isIndicator
+
+public static final int itemBackground
+
+public static final int itemIconDisabledAlpha
+
+public static final int itemTextAppearance
+
+public static final int keepScreenOn
+
+public static final int key
+
+public static final int keycode
+
+public static final int label
+
+public static final int launchMode
+
+public static final int layout
+
+public static final int layoutAnimation
+
+public static final int layout_above
+
+public static final int layout_alignBaseline
+
+public static final int layout_alignBottom
+
+public static final int layout_alignLeft
+
+public static final int layout_alignParentBottom
+
+public static final int layout_alignParentLeft
+
+public static final int layout_alignParentRight
+
+public static final int layout_alignParentTop
+
+public static final int layout_alignRight
+
+public static final int layout_alignTop
+
+public static final int layout_alignWithParentIfMissing
+
+public static final int layout_below
+
+public static final int layout_centerHorizontal
+
+public static final int layout_centerInParent
+
+public static final int layout_centerVertical
+
+public static final int layout_column
+
+public static final int layout_gravity
+
+public static final int layout_height
+
+public static final int layout_margin
+
+public static final int layout_marginBottom
+
+public static final int layout_marginLeft
+
+public static final int layout_marginRight
+
+public static final int layout_marginTop
+
+public static final int layout_scale
+
+public static final int layout_span
+
+public static final int layout_toLeftOf
+
+public static final int layout_toRightOf
+
+public static final int layout_weight
+
+public static final int layout_width
+
+public static final int layout_x
+
+public static final int layout_y
+
+public static final int left
+
+public static final int lineSpacingExtra
+
+public static final int lineSpacingMultiplier
+
+public static final int lines
+
+public static final int linksClickable
+
+public static final int listChoiceIndicatorMultiple
+
+public static final int listChoiceIndicatorSingle
+
+public static final int listDivider
+
+public static final int listPreferredItemHeight
+
+public static final int listSelector
+
+public static final int listSeparatorTextViewStyle
+
+public static final int listViewStyle
+
+public static final int listViewWhiteStyle
+
+public static final int longClickable
+
+public static final int manageSpaceActivity
+
+public static final int mapViewStyle
+
+public static final int max
+
+public static final int maxEms
+
+public static final int maxHeight
+
+public static final int maxItemsPerRow
+
+public static final int maxLength
+
+public static final int maxLevel
+
+public static final int maxLines
+
+public static final int maxRows
+
+public static final int maxWidth
+
+public static final int measureAllChildren
+
+public static final int menuCategory
+
+public static final int mimeType
+
+public static final int minEms
+
+public static final int minHeight
+
+public static final int minLevel
+
+public static final int minLines
+
+public static final int minSdkVersion
+
+public static final int minWidth
+
+public static final int mode
+
+public static final int moreIcon
+
+public static final int multiprocess
+
+public static final int name
+
+public static final int negativeButtonText
+
+public static final int nextFocusDown
+
+public static final int nextFocusLeft
+
+public static final int nextFocusRight
+
+public static final int nextFocusUp
+
+public static final int numColumns
+
+public static final int numStars
+
+public static final int numeric
+
+public static final int numericShortcut
+
+public static final int oneshot
+
+public static final int order
+
+public static final int orderInCategory
+
+public static final int orderingFromXml
+
+public static final int orientation
+
+public static final int outAnimation
+
+public static final int padding
+
+public static final int paddingBottom
+
+public static final int paddingLeft
+
+public static final int paddingRight
+
+public static final int paddingTop
+
+public static final int panelBackground
+
+public static final int panelColorBackground
+
+public static final int panelColorForeground
+
+public static final int panelFullBackground
+
+public static final int panelTextAppearance
+
+public static final int password
+
+public static final int path
+
+public static final int pathPattern
+
+public static final int pathPrefix
+
+public static final int permission
+
+public static final int permissionGroup
+
+public static final int persistent
+
+public static final int persistentDrawingCache
+
+public static final int phoneNumber
+
+public static final int pivotX
+
+public static final int pivotY
+
+public static final int popupBackground
+
+public static final int popupWindowStyle
+
+public static final int port
+
+public static final int positiveButtonText
+
+public static final int preferenceCategoryStyle
+
+public static final int preferenceInformationStyle
+
+public static final int preferenceLayoutChild
+
+public static final int preferenceScreenStyle
+
+public static final int preferenceStyle
+
+public static final int priority
+
+public static final int process
+
+public static final int progress
+
+public static final int progressBarStyle
+
+public static final int progressBarStyleHorizontal
+
+public static final int progressBarStyleLarge
+
+public static final int progressBarStyleSmall
+
+public static final int progressBarStyleSmallTitle
+
+public static final int progressDrawable
+
+public static final int prompt
+
+public static final int protectionLevel
+
+public static final int queryActionMsg
+
+public static final int radioButtonStyle
+
+public static final int radius
+
+public static final int rating
+
+public static final int ratingBarStyle
+
+public static final int ratingBarStyleIndicator
+
+public static final int ratingBarStyleSmall
+
+public static final int readPermission
+
+public static final int repeatCount
+
+public static final int repeatMode
+
+public static final int resource
+
+public static final int right
+
+public static final int ringtonePreferenceStyle
+
+public static final int ringtoneType
+
+public static final int rowDelay
+
+public static final int rowHeight
+
+public static final int saveEnabled
+
+public static final int scaleGravity
+
+public static final int scaleHeight
+
+public static final int scaleType
+
+public static final int scaleWidth
+
+public static final int scheme
+
+public static final int screenOrientation
+
+public static final int scrollHorizontally
+
+public static final int scrollViewStyle
+
+public static final int scrollX
+
+public static final int scrollY
+
+public static final int scrollbarAlwaysDrawHorizontalTrack
+
+public static final int scrollbarAlwaysDrawVerticalTrack
+
+public static final int scrollbarSize
+
+public static final int scrollbarStyle
+
+public static final int scrollbarThumbHorizontal
+
+public static final int scrollbarThumbVertical
+
+public static final int scrollbarTrackHorizontal
+
+public static final int scrollbarTrackVertical
+
+public static final int scrollbars
+
+public static final int scrollingCache
+
+public static final int searchButtonText
+
+public static final int searchMode
+
+public static final int searchSuggestAuthority
+
+public static final int searchSuggestIntentAction
+
+public static final int searchSuggestIntentData
+
+public static final int searchSuggestPath
+
+public static final int searchSuggestSelection
+
+public static final int secondaryProgress
+
+public static final int seekBarStyle
+
+public static final int selectAllOnFocus
+
+public static final int selectable
+
+public static final int shadowColor
+
+public static final int shadowDx
+
+public static final int shadowDy
+
+public static final int shadowRadius
+
+public static final int shape
+
+public static final int shareInterpolator
+
+public static final int sharedUserId
+
+public static final int shouldDisableView
+
+public static final int showDefault
+
+public static final int showSilent
+
+public static final int shrinkColumns
+
+public static final int singleLine
+
+public static final int soundEffectsEnabled
+
+public static final int spacing
+
+public static final int spinnerDropDownItemStyle
+
+public static final int spinnerItemStyle
+
+public static final int spinnerStyle
+
+public static final int src
+
+public static final int stackFromBottom
+
+public static final int starStyle
+
+public static final int startColor
+
+public static final int startOffset
+
+public static final int startYear
+
+public static final int stateNotNeeded
+
+public static final int state_above_anchor
+
+public static final int state_active
+
+public static final int state_checkable
+
+public static final int state_checked
+
+public static final int state_empty
+
+public static final int state_enabled
+
+public static final int state_expanded
+
+public static final int state_first
+
+public static final int state_focused
+
+public static final int state_last
+
+public static final int state_middle
+
+public static final int state_pressed
+
+public static final int state_selected
+
+public static final int state_single
+
+public static final int state_window_focused
+
+public static final int stepSize
+
+public static final int streamType
+
+public static final int stretchColumns
+
+public static final int stretchMode
+
+public static final int suggestActionMsg
+
+public static final int suggestActionMsgColumn
+
+public static final int summary
+
+public static final int summaryOff
+
+public static final int summaryOn
+
+public static final int syncable
+
+public static final int tabWidgetStyle
+
+public static final int tag
+
+public static final int targetActivity
+
+public static final int targetClass
+
+public static final int targetPackage
+
+public static final int taskAffinity
+
+public static final int taskCloseEnterAnimation
+
+public static final int taskCloseExitAnimation
+
+public static final int taskOpenEnterAnimation
+
+public static final int taskOpenExitAnimation
+
+public static final int taskToBackEnterAnimation
+
+public static final int taskToBackExitAnimation
+
+public static final int taskToFrontEnterAnimation
+
+public static final int taskToFrontExitAnimation
+
+public static final int text
+
+public static final int textAppearance
+
+public static final int textAppearanceButton
+
+public static final int textAppearanceInverse
+
+public static final int textAppearanceLarge
+
+public static final int textAppearanceLargeInverse
+
+public static final int textAppearanceMedium
+
+public static final int textAppearanceMediumInverse
+
+public static final int textAppearanceSmall
+
+public static final int textAppearanceSmallInverse
+
+public static final int textCheckMark
+
+public static final int textCheckMarkInverse
+
+public static final int textColor
+
+public static final int textColorHighlight
+
+public static final int textColorHint
+
+public static final int textColorHintInverse
+
+public static final int textColorLink
+
+public static final int textColorPrimary
+
+public static final int textColorPrimaryDisableOnly
+
+public static final int textColorPrimaryInverse
+
+public static final int textColorPrimaryInverseNoDisable
+
+public static final int textColorPrimaryNoDisable
+
+public static final int textColorSecondary
+
+public static final int textColorSecondaryInverse
+
+public static final int textColorSecondaryInverseNoDisable
+
+public static final int textColorSecondaryNoDisable
+
+public static final int textColorTertiary
+
+public static final int textColorTertiaryInverse
+
+public static final int textFilterEnabled
+
+public static final int textOff
+
+public static final int textOn
+
+public static final int textScaleX
+
+public static final int textSize
+
+public static final int textStyle
+
+public static final int textViewStyle
+
+public static final int theme
+
+public static final int thicknessRatio
+
+public static final int thumb
+
+public static final int thumbOffset
+
+public static final int tileMode
+
+public static final int tint
+
+public static final int title
+
+public static final int titleCondensed
+
+public static final int toAlpha
+
+public static final int toDegrees
+
+public static final int toXDelta
+
+public static final int toXScale
+
+public static final int toYDelta
+
+public static final int toYScale
+
+public static final int top
+
+public static final int topBright
+
+public static final int topDark
+
+public static final int topLeftRadius
+
+public static final int topRightRadius
+
+public static final int transcriptMode
+
+public static final int type
+
+public static final int typeface
+
+public static final int unselectedAlpha
+
+public static final int useLevel
+
+public static final int value
+
+public static final int variablePadding
+
+public static final int versionCode
+
+public static final int versionName
+
+public static final int verticalDivider
+
+public static final int verticalSpacing
+
+public static final int visibility
+
+public static final int visible
+
+public static final int webViewStyle
+
+public static final int weightSum
+
+public static final int widgetLayout
+
+public static final int width
+
+public static final int windowAnimationStyle
+
+public static final int windowBackground
+
+public static final int windowContentOverlay
+
+public static final int windowEnterAnimation
+
+public static final int windowExitAnimation
+
+public static final int windowFrame
+
+public static final int windowFullscreen
+
+public static final int windowHideAnimation
+
+public static final int windowIsFloating
+
+public static final int windowIsTranslucent
+
+public static final int windowNoTitle
+
+public static final int windowShowAnimation
+
+public static final int windowTitleBackgroundStyle
+
+public static final int windowTitleSize
+
+public static final int windowTitleStyle
+
+public static final int writePermission
+
+public static final int x
+
+public static final int y
+
+public static final int yesNoPreferenceStyle
+
+public static final int zAdjustment
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/R; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =color )
+public final class android.R$color extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int background_dark
+
+public static final int background_light
+
+public static final int black
+
+public static final int darker_gray
+
+public static final int primary_text_dark
+
+public static final int primary_text_dark_nodisable
+
+public static final int primary_text_light
+
+public static final int primary_text_light_nodisable
+
+public static final int secondary_text_dark
+
+public static final int secondary_text_dark_nodisable
+
+public static final int secondary_text_light
+
+public static final int secondary_text_light_nodisable
+
+public static final int tab_indicator_text
+
+public static final int tertiary_text_dark
+
+public static final int tertiary_text_light
+
+public static final int transparent
+
+public static final int white
+
+public static final int widget_edittext_dark
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =dimen )
+@dalvik.annotation.EnclosingClass (value =Landroid/R; )
+public final class android.R$dimen extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int app_icon_size
+
+public static final int thumbnail_height
+
+public static final int thumbnail_width
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/R; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =drawable )
+public final class android.R$drawable extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int alert_dark_frame
+
+public static final int alert_light_frame
+
+public static final int arrow_down_float
+
+public static final int arrow_up_float
+
+public static final int bottom_bar
+
+public static final int btn_default
+
+public static final int btn_default_small
+
+public static final int btn_dialog
+
+public static final int btn_dropdown
+
+public static final int btn_minus
+
+public static final int btn_plus
+
+public static final int btn_radio
+
+public static final int btn_star
+
+public static final int btn_star_big_off
+
+public static final int btn_star_big_on
+
+public static final int button_onoff_indicator_off
+
+public static final int button_onoff_indicator_on
+
+public static final int checkbox_off_background
+
+public static final int checkbox_on_background
+
+public static final int dialog_frame
+
+public static final int divider_horizontal_bright
+
+public static final int divider_horizontal_dark
+
+public static final int divider_horizontal_dim_dark
+
+public static final int divider_horizontal_textfield
+
+public static final int edit_text
+
+public static final int editbox_background
+
+public static final int editbox_background_normal
+
+public static final int editbox_dropdown_dark_frame
+
+public static final int editbox_dropdown_light_frame
+
+public static final int gallery_thumb
+
+public static final int ic_delete
+
+public static final int ic_dialog_alert
+
+public static final int ic_dialog_dialer
+
+public static final int ic_dialog_email
+
+public static final int ic_dialog_info
+
+public static final int ic_dialog_map
+
+public static final int ic_input_add
+
+public static final int ic_input_delete
+
+public static final int ic_input_get
+
+public static final int ic_lock_idle_alarm
+
+public static final int ic_lock_idle_charging
+
+public static final int ic_lock_idle_lock
+
+public static final int ic_lock_idle_low_battery
+
+public static final int ic_lock_lock
+
+public static final int ic_lock_power_off
+
+public static final int ic_lock_silent_mode
+
+public static final int ic_lock_silent_mode_off
+
+public static final int ic_media_ff
+
+public static final int ic_media_next
+
+public static final int ic_media_pause
+
+public static final int ic_media_play
+
+public static final int ic_media_previous
+
+public static final int ic_media_rew
+
+public static final int ic_menu_add
+
+public static final int ic_menu_agenda
+
+public static final int ic_menu_always_landscape_portrait
+
+public static final int ic_menu_call
+
+public static final int ic_menu_camera
+
+public static final int ic_menu_close_clear_cancel
+
+public static final int ic_menu_compass
+
+public static final int ic_menu_crop
+
+public static final int ic_menu_day
+
+public static final int ic_menu_delete
+
+public static final int ic_menu_directions
+
+public static final int ic_menu_edit
+
+public static final int ic_menu_gallery
+
+public static final int ic_menu_help
+
+public static final int ic_menu_info_details
+
+public static final int ic_menu_manage
+
+public static final int ic_menu_mapmode
+
+public static final int ic_menu_month
+
+public static final int ic_menu_more
+
+public static final int ic_menu_my_calendar
+
+public static final int ic_menu_mylocation
+
+public static final int ic_menu_myplaces
+
+public static final int ic_menu_preferences
+
+public static final int ic_menu_recent_history
+
+public static final int ic_menu_report_image
+
+public static final int ic_menu_revert
+
+public static final int ic_menu_rotate
+
+public static final int ic_menu_save
+
+public static final int ic_menu_search
+
+public static final int ic_menu_send
+
+public static final int ic_menu_set_as
+
+public static final int ic_menu_share
+
+public static final int ic_menu_slideshow
+
+public static final int ic_menu_sort_alphabetically
+
+public static final int ic_menu_sort_by_size
+
+public static final int ic_menu_today
+
+public static final int ic_menu_upload
+
+public static final int ic_menu_upload_you_tube
+
+public static final int ic_menu_view
+
+public static final int ic_menu_week
+
+public static final int ic_menu_zoom
+
+public static final int ic_notification_clear_all
+
+public static final int ic_notification_overlay
+
+public static final int ic_partial_secure
+
+public static final int ic_popup_disk_full
+
+public static final int ic_popup_reminder
+
+public static final int ic_popup_sync
+
+public static final int ic_search_category_default
+
+public static final int ic_secure
+
+public static final int list_selector_background
+
+public static final int menu_frame
+
+public static final int menu_full_frame
+
+public static final int menuitem_background
+
+public static final int picture_frame
+
+public static final int presence_away
+
+public static final int presence_busy
+
+public static final int presence_invisible
+
+public static final int presence_offline
+
+public static final int presence_online
+
+public static final int progress_horizontal
+
+public static final int progress_indeterminate_horizontal
+
+public static final int radiobutton_off_background
+
+public static final int radiobutton_on_background
+
+public static final int screen_background_dark
+
+public static final int screen_background_light
+
+public static final int spinner_background
+
+public static final int spinner_dropdown_background
+
+public static final int star_big_off
+
+public static final int star_big_on
+
+public static final int star_off
+
+public static final int star_on
+
+public static final int stat_notify_call_mute
+
+public static final int stat_notify_chat
+
+public static final int stat_notify_error
+
+public static final int stat_notify_missed_call
+
+public static final int stat_notify_more
+
+public static final int stat_notify_sdcard
+
+public static final int stat_notify_sdcard_usb
+
+public static final int stat_notify_sync
+
+public static final int stat_notify_sync_noanim
+
+public static final int stat_notify_voicemail
+
+public static final int stat_sys_data_bluetooth
+
+public static final int stat_sys_download
+
+public static final int stat_sys_download_done
+
+public static final int stat_sys_headset
+
+public static final int stat_sys_phone_call
+
+public static final int stat_sys_phone_call_forward
+
+public static final int stat_sys_phone_call_on_hold
+
+public static final int stat_sys_speakerphone
+
+public static final int stat_sys_upload
+
+public static final int stat_sys_upload_done
+
+public static final int stat_sys_warning
+
+public static final int status_bar_item_app_background
+
+public static final int status_bar_item_background
+
+public static final int sym_action_call
+
+public static final int sym_action_chat
+
+public static final int sym_action_email
+
+public static final int sym_call_incoming
+
+public static final int sym_call_missed
+
+public static final int sym_call_outgoing
+
+public static final int sym_contact_card
+
+public static final int sym_def_app_icon
+
+public static final int title_bar
+
+public static final int toast_frame
+
+public static final int zoom_plate
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =id )
+@dalvik.annotation.EnclosingClass (value =Landroid/R; )
+public final class android.R$id extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int background
+
+public static final int button1
+
+public static final int button2
+
+public static final int button3
+
+public static final int checkbox
+
+public static final int content
+
+public static final int edit
+
+public static final int empty
+
+public static final int hint
+
+public static final int icon
+
+public static final int icon1
+
+public static final int icon2
+
+public static final int input
+
+public static final int list
+
+public static final int message
+
+public static final int primary
+
+public static final int progress
+
+public static final int secondaryProgress
+
+public static final int selectedIcon
+
+public static final int summary
+
+public static final int tabcontent
+
+public static final int tabhost
+
+public static final int tabs
+
+public static final int text1
+
+public static final int text2
+
+public static final int title
+
+public static final int toggle
+
+public static final int widget_frame
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/R; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =layout )
+public final class android.R$layout extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int activity_list_item
+
+public static final int browser_link_context_header
+
+public static final int expandable_list_content
+
+public static final int preference_category
+
+public static final int select_dialog_item
+
+public static final int select_dialog_multichoice
+
+public static final int select_dialog_singlechoice
+
+public static final int simple_dropdown_item_1line
+
+public static final int simple_expandable_list_item_1
+
+public static final int simple_expandable_list_item_2
+
+public static final int simple_gallery_item
+
+public static final int simple_list_item_1
+
+public static final int simple_list_item_2
+
+public static final int simple_list_item_checked
+
+public static final int simple_list_item_multiple_choice
+
+public static final int simple_list_item_single_choice
+
+public static final int simple_spinner_dropdown_item
+
+public static final int simple_spinner_item
+
+public static final int test_list_item
+
+public static final int two_line_list_item
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =plurals )
+@dalvik.annotation.EnclosingClass (value =Landroid/R; )
+public final class android.R$plurals extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =raw )
+@dalvik.annotation.EnclosingClass (value =Landroid/R; )
+public final class android.R$raw extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =string )
+@dalvik.annotation.EnclosingClass (value =Landroid/R; )
+public final class android.R$string extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int VideoView_error_button
+
+public static final int VideoView_error_text_unknown
+
+public static final int VideoView_error_title
+
+public static final int cancel
+
+public static final int copy
+
+public static final int copyUrl
+
+public static final int cut
+
+public static final int defaultMsisdnAlphaTag
+
+public static final int defaultVoiceMailAlphaTag
+
+public static final int emptyPhoneNumber
+
+public static final int httpErrorBadUrl
+
+public static final int httpErrorUnsupportedScheme
+
+public static final int no
+
+public static final int ok
+
+public static final int paste
+
+public static final int search_go
+
+public static final int selectAll
+
+public static final int unknownName
+
+public static final int untitled
+
+public static final int yes
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/R; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =style )
+public final class android.R$style extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int Animation
+
+public static final int Animation_Activity
+
+public static final int Animation_Dialog
+
+public static final int Animation_Toast
+
+public static final int Animation_Translucent
+
+public static final int MediaButton
+
+public static final int MediaButton_Ffwd
+
+public static final int MediaButton_Next
+
+public static final int MediaButton_Pause
+
+public static final int MediaButton_Play
+
+public static final int MediaButton_Previous
+
+public static final int MediaButton_Rew
+
+public static final int TextAppearance
+
+public static final int TextAppearance_DialogWindowTitle
+
+public static final int TextAppearance_Inverse
+
+public static final int TextAppearance_Large
+
+public static final int TextAppearance_Large_Inverse
+
+public static final int TextAppearance_Medium
+
+public static final int TextAppearance_Medium_Inverse
+
+public static final int TextAppearance_Small
+
+public static final int TextAppearance_Small_Inverse
+
+public static final int TextAppearance_Theme
+
+public static final int TextAppearance_Theme_Dialog
+
+public static final int TextAppearance_Widget
+
+public static final int TextAppearance_Widget_Button
+
+public static final int TextAppearance_Widget_DropDownHint
+
+public static final int TextAppearance_Widget_DropDownItem
+
+public static final int TextAppearance_Widget_EditText
+
+public static final int TextAppearance_Widget_IconMenu_Item
+
+public static final int TextAppearance_Widget_TabWidget
+
+public static final int TextAppearance_Widget_TextView
+
+public static final int TextAppearance_Widget_TextView_PopupMenu
+
+public static final int TextAppearance_Widget_TextView_SpinnerItem
+
+public static final int TextAppearance_WindowTitle
+
+public static final int Theme
+
+public static final int Theme_Black
+
+public static final int Theme_Black_NoTitleBar
+
+public static final int Theme_Black_NoTitleBar_Fullscreen
+
+public static final int Theme_Dialog
+
+public static final int Theme_Light
+
+public static final int Theme_Light_NoTitleBar
+
+public static final int Theme_Light_NoTitleBar_Fullscreen
+
+public static final int Theme_NoTitleBar
+
+public static final int Theme_NoTitleBar_Fullscreen
+
+public static final int Theme_Translucent
+
+public static final int Theme_Translucent_NoTitleBar
+
+public static final int Theme_Translucent_NoTitleBar_Fullscreen
+
+public static final int Widget
+
+public static final int Widget_AbsListView
+
+public static final int Widget_AutoCompleteTextView
+
+public static final int Widget_Button
+
+public static final int Widget_Button_Inset
+
+public static final int Widget_Button_Small
+
+public static final int Widget_Button_Toggle
+
+public static final int Widget_CompoundButton
+
+public static final int Widget_CompoundButton_CheckBox
+
+public static final int Widget_CompoundButton_RadioButton
+
+public static final int Widget_CompoundButton_Star
+
+public static final int Widget_DropDownItem
+
+public static final int Widget_DropDownItem_Spinner
+
+public static final int Widget_EditText
+
+public static final int Widget_ExpandableListView
+
+public static final int Widget_Gallery
+
+public static final int Widget_GridView
+
+public static final int Widget_ImageButton
+
+public static final int Widget_ImageWell
+
+public static final int Widget_ListView
+
+public static final int Widget_ListView_DropDown
+
+public static final int Widget_ListView_Menu
+
+public static final int Widget_ListView_White
+
+public static final int Widget_PopupWindow
+
+public static final int Widget_ProgressBar
+
+public static final int Widget_ProgressBar_Horizontal
+
+public static final int Widget_ProgressBar_Large
+
+public static final int Widget_ProgressBar_Small
+
+public static final int Widget_RatingBar
+
+public static final int Widget_ScrollView
+
+public static final int Widget_SeekBar
+
+public static final int Widget_Spinner
+
+public static final int Widget_TabWidget
+
+public static final int Widget_TextView
+
+public static final int Widget_TextView_PopupMenu
+
+public static final int Widget_TextView_SpinnerItem
+
+public static final int Widget_WebView
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =styleable )
+@dalvik.annotation.EnclosingClass (value =Landroid/R; )
+public final class android.R$styleable extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int[] AbsListView
+
+public static final int AbsListView_cacheColorHint
+
+public static final int AbsListView_drawSelectorOnTop
+
+public static final int AbsListView_listSelector
+
+public static final int AbsListView_scrollingCache
+
+public static final int AbsListView_stackFromBottom
+
+public static final int AbsListView_textFilterEnabled
+
+public static final int AbsListView_transcriptMode
+
+public static final int[] AbsSpinner
+
+public static final int AbsSpinner_entries
+
+public static final int[] AbsoluteLayout_Layout
+
+public static final int AbsoluteLayout_Layout_layout_x
+
+public static final int AbsoluteLayout_Layout_layout_y
+
+public static final int[] AccelerateInterpolator
+
+public static final int AccelerateInterpolator_factor
+
+public static final int[] AlertDialog
+
+public static final int AlertDialog_bottomBright
+
+public static final int AlertDialog_bottomDark
+
+public static final int AlertDialog_bottomMedium
+
+public static final int AlertDialog_centerBright
+
+public static final int AlertDialog_centerDark
+
+public static final int AlertDialog_centerMedium
+
+public static final int AlertDialog_fullBright
+
+public static final int AlertDialog_fullDark
+
+public static final int AlertDialog_topBright
+
+public static final int AlertDialog_topDark
+
+public static final int[] AlphaAnimation
+
+public static final int AlphaAnimation_fromAlpha
+
+public static final int AlphaAnimation_toAlpha
+
+public static final int[] AnalogClock
+
+public static final int AnalogClock_dial
+
+public static final int AnalogClock_hand_hour
+
+public static final int AnalogClock_hand_minute
+
+public static final int[] AndroidManifest
+
+public static final int[] AndroidManifestAction
+
+public static final int AndroidManifestAction_name
+
+public static final int[] AndroidManifestActivity
+
+public static final int[] AndroidManifestActivityAlias
+
+public static final int AndroidManifestActivityAlias_enabled
+
+public static final int AndroidManifestActivityAlias_exported
+
+public static final int AndroidManifestActivityAlias_icon
+
+public static final int AndroidManifestActivityAlias_label
+
+public static final int AndroidManifestActivityAlias_name
+
+public static final int AndroidManifestActivityAlias_permission
+
+public static final int AndroidManifestActivityAlias_targetActivity
+
+public static final int AndroidManifestActivity_allowTaskReparenting
+
+public static final int AndroidManifestActivity_alwaysRetainTaskState
+
+public static final int AndroidManifestActivity_clearTaskOnLaunch
+
+public static final int AndroidManifestActivity_configChanges
+
+public static final int AndroidManifestActivity_enabled
+
+public static final int AndroidManifestActivity_excludeFromRecents
+
+public static final int AndroidManifestActivity_exported
+
+public static final int AndroidManifestActivity_finishOnTaskLaunch
+
+public static final int AndroidManifestActivity_icon
+
+public static final int AndroidManifestActivity_label
+
+public static final int AndroidManifestActivity_launchMode
+
+public static final int AndroidManifestActivity_multiprocess
+
+public static final int AndroidManifestActivity_name
+
+public static final int AndroidManifestActivity_permission
+
+public static final int AndroidManifestActivity_process
+
+public static final int AndroidManifestActivity_screenOrientation
+
+public static final int AndroidManifestActivity_stateNotNeeded
+
+public static final int AndroidManifestActivity_taskAffinity
+
+public static final int AndroidManifestActivity_theme
+
+public static final int[] AndroidManifestApplication
+
+public static final int AndroidManifestApplication_allowClearUserData
+
+public static final int AndroidManifestApplication_allowTaskReparenting
+
+public static final int AndroidManifestApplication_debuggable
+
+public static final int AndroidManifestApplication_description
+
+public static final int AndroidManifestApplication_enabled
+
+public static final int AndroidManifestApplication_hasCode
+
+public static final int AndroidManifestApplication_icon
+
+public static final int AndroidManifestApplication_label
+
+public static final int AndroidManifestApplication_manageSpaceActivity
+
+public static final int AndroidManifestApplication_name
+
+public static final int AndroidManifestApplication_permission
+
+public static final int AndroidManifestApplication_persistent
+
+public static final int AndroidManifestApplication_process
+
+public static final int AndroidManifestApplication_taskAffinity
+
+public static final int AndroidManifestApplication_theme
+
+public static final int[] AndroidManifestCategory
+
+public static final int AndroidManifestCategory_name
+
+public static final int[] AndroidManifestData
+
+public static final int AndroidManifestData_host
+
+public static final int AndroidManifestData_mimeType
+
+public static final int AndroidManifestData_path
+
+public static final int AndroidManifestData_pathPattern
+
+public static final int AndroidManifestData_pathPrefix
+
+public static final int AndroidManifestData_port
+
+public static final int AndroidManifestData_scheme
+
+public static final int[] AndroidManifestGrantUriPermission
+
+public static final int AndroidManifestGrantUriPermission_path
+
+public static final int AndroidManifestGrantUriPermission_pathPattern
+
+public static final int AndroidManifestGrantUriPermission_pathPrefix
+
+public static final int[] AndroidManifestInstrumentation
+
+public static final int AndroidManifestInstrumentation_functionalTest
+
+public static final int AndroidManifestInstrumentation_handleProfiling
+
+public static final int AndroidManifestInstrumentation_icon
+
+public static final int AndroidManifestInstrumentation_label
+
+public static final int AndroidManifestInstrumentation_name
+
+public static final int AndroidManifestInstrumentation_targetPackage
+
+public static final int[] AndroidManifestIntentFilter
+
+public static final int AndroidManifestIntentFilter_icon
+
+public static final int AndroidManifestIntentFilter_label
+
+public static final int AndroidManifestIntentFilter_priority
+
+public static final int[] AndroidManifestMetaData
+
+public static final int AndroidManifestMetaData_name
+
+public static final int AndroidManifestMetaData_resource
+
+public static final int AndroidManifestMetaData_value
+
+public static final int[] AndroidManifestPermission
+
+public static final int[] AndroidManifestPermissionGroup
+
+public static final int AndroidManifestPermissionGroup_description
+
+public static final int AndroidManifestPermissionGroup_icon
+
+public static final int AndroidManifestPermissionGroup_label
+
+public static final int AndroidManifestPermissionGroup_name
+
+public static final int[] AndroidManifestPermissionTree
+
+public static final int AndroidManifestPermissionTree_icon
+
+public static final int AndroidManifestPermissionTree_label
+
+public static final int AndroidManifestPermissionTree_name
+
+public static final int AndroidManifestPermission_description
+
+public static final int AndroidManifestPermission_icon
+
+public static final int AndroidManifestPermission_label
+
+public static final int AndroidManifestPermission_name
+
+public static final int AndroidManifestPermission_permissionGroup
+
+public static final int AndroidManifestPermission_protectionLevel
+
+public static final int[] AndroidManifestProvider
+
+public static final int AndroidManifestProvider_authorities
+
+public static final int AndroidManifestProvider_enabled
+
+public static final int AndroidManifestProvider_exported
+
+public static final int AndroidManifestProvider_grantUriPermissions
+
+public static final int AndroidManifestProvider_icon
+
+public static final int AndroidManifestProvider_initOrder
+
+public static final int AndroidManifestProvider_label
+
+public static final int AndroidManifestProvider_multiprocess
+
+public static final int AndroidManifestProvider_name
+
+public static final int AndroidManifestProvider_permission
+
+public static final int AndroidManifestProvider_process
+
+public static final int AndroidManifestProvider_readPermission
+
+public static final int AndroidManifestProvider_syncable
+
+public static final int AndroidManifestProvider_writePermission
+
+public static final int[] AndroidManifestReceiver
+
+public static final int AndroidManifestReceiver_enabled
+
+public static final int AndroidManifestReceiver_exported
+
+public static final int AndroidManifestReceiver_icon
+
+public static final int AndroidManifestReceiver_label
+
+public static final int AndroidManifestReceiver_name
+
+public static final int AndroidManifestReceiver_permission
+
+public static final int AndroidManifestReceiver_process
+
+public static final int[] AndroidManifestService
+
+public static final int AndroidManifestService_enabled
+
+public static final int AndroidManifestService_exported
+
+public static final int AndroidManifestService_icon
+
+public static final int AndroidManifestService_label
+
+public static final int AndroidManifestService_name
+
+public static final int AndroidManifestService_permission
+
+public static final int AndroidManifestService_process
+
+public static final int[] AndroidManifestUsesLibrary
+
+public static final int AndroidManifestUsesLibrary_name
+
+public static final int[] AndroidManifestUsesPermission
+
+public static final int AndroidManifestUsesPermission_name
+
+public static final int[] AndroidManifestUsesSdk
+
+public static final int AndroidManifestUsesSdk_minSdkVersion
+
+public static final int AndroidManifest_sharedUserId
+
+public static final int AndroidManifest_versionCode
+
+public static final int AndroidManifest_versionName
+
+public static final int[] Animation
+
+public static final int[] AnimationDrawable
+
+public static final int[] AnimationDrawableItem
+
+public static final int AnimationDrawableItem_drawable
+
+public static final int AnimationDrawableItem_duration
+
+public static final int AnimationDrawable_oneshot
+
+public static final int AnimationDrawable_variablePadding
+
+public static final int AnimationDrawable_visible
+
+public static final int[] AnimationSet
+
+public static final int AnimationSet_shareInterpolator
+
+public static final int Animation_duration
+
+public static final int Animation_fillAfter
+
+public static final int Animation_fillBefore
+
+public static final int Animation_interpolator
+
+public static final int Animation_repeatCount
+
+public static final int Animation_repeatMode
+
+public static final int Animation_startOffset
+
+public static final int Animation_zAdjustment
+
+public static final int[] AutoCompleteTextView
+
+public static final int AutoCompleteTextView_completionHint
+
+public static final int AutoCompleteTextView_completionHintView
+
+public static final int AutoCompleteTextView_completionThreshold
+
+public static final int AutoCompleteTextView_dropDownSelector
+
+public static final int[] BitmapDrawable
+
+public static final int BitmapDrawable_antialias
+
+public static final int BitmapDrawable_dither
+
+public static final int BitmapDrawable_filter
+
+public static final int BitmapDrawable_gravity
+
+public static final int BitmapDrawable_src
+
+public static final int BitmapDrawable_tileMode
+
+public static final int[] Button
+
+public static final int[] CheckBoxPreference
+
+public static final int CheckBoxPreference_disableDependentsState
+
+public static final int CheckBoxPreference_summaryOff
+
+public static final int CheckBoxPreference_summaryOn
+
+public static final int[] CheckedTextView
+
+public static final int CheckedTextView_checkMark
+
+public static final int CheckedTextView_checked
+
+public static final int[] Chronometer
+
+public static final int Chronometer_format
+
+public static final int[] ClipDrawable
+
+public static final int ClipDrawable_clipOrientation
+
+public static final int ClipDrawable_drawable
+
+public static final int ClipDrawable_gravity
+
+public static final int[] ColorDrawable
+
+public static final int ColorDrawable_color
+
+public static final int[] CompoundButton
+
+public static final int CompoundButton_button
+
+public static final int CompoundButton_checked
+
+public static final int[] CycleInterpolator
+
+public static final int CycleInterpolator_cycles
+
+public static final int[] DatePicker
+
+public static final int DatePicker_endYear
+
+public static final int DatePicker_startYear
+
+public static final int[] DecelerateInterpolator
+
+public static final int DecelerateInterpolator_factor
+
+public static final int[] DialogPreference
+
+public static final int DialogPreference_dialogIcon
+
+public static final int DialogPreference_dialogLayout
+
+public static final int DialogPreference_dialogMessage
+
+public static final int DialogPreference_dialogTitle
+
+public static final int DialogPreference_negativeButtonText
+
+public static final int DialogPreference_positiveButtonText
+
+public static final int[] Drawable
+
+public static final int[] DrawableCorners
+
+public static final int DrawableCorners_bottomLeftRadius
+
+public static final int DrawableCorners_bottomRightRadius
+
+public static final int DrawableCorners_radius
+
+public static final int DrawableCorners_topLeftRadius
+
+public static final int DrawableCorners_topRightRadius
+
+public static final int[] DrawableStates
+
+public static final int DrawableStates_state_active
+
+public static final int DrawableStates_state_checkable
+
+public static final int DrawableStates_state_checked
+
+public static final int DrawableStates_state_enabled
+
+public static final int DrawableStates_state_first
+
+public static final int DrawableStates_state_focused
+
+public static final int DrawableStates_state_last
+
+public static final int DrawableStates_state_middle
+
+public static final int DrawableStates_state_pressed
+
+public static final int DrawableStates_state_selected
+
+public static final int DrawableStates_state_single
+
+public static final int DrawableStates_state_window_focused
+
+public static final int Drawable_visible
+
+public static final int[] EditText
+
+public static final int[] ExpandableListChildIndicatorState
+
+public static final int ExpandableListChildIndicatorState_state_last
+
+public static final int[] ExpandableListGroupIndicatorState
+
+public static final int ExpandableListGroupIndicatorState_state_empty
+
+public static final int ExpandableListGroupIndicatorState_state_expanded
+
+public static final int[] ExpandableListView
+
+public static final int ExpandableListView_childDivider
+
+public static final int ExpandableListView_childIndicator
+
+public static final int ExpandableListView_childIndicatorLeft
+
+public static final int ExpandableListView_childIndicatorRight
+
+public static final int ExpandableListView_groupIndicator
+
+public static final int ExpandableListView_indicatorLeft
+
+public static final int ExpandableListView_indicatorRight
+
+public static final int[] FrameLayout
+
+public static final int[] FrameLayout_Layout
+
+public static final int FrameLayout_Layout_layout_gravity
+
+public static final int FrameLayout_foreground
+
+public static final int FrameLayout_foregroundGravity
+
+public static final int FrameLayout_measureAllChildren
+
+public static final int[] Gallery
+
+public static final int Gallery_animationDuration
+
+public static final int Gallery_gravity
+
+public static final int Gallery_spacing
+
+public static final int Gallery_unselectedAlpha
+
+public static final int[] GradientDrawable
+
+public static final int[] GradientDrawableGradient
+
+public static final int GradientDrawableGradient_angle
+
+public static final int GradientDrawableGradient_centerColor
+
+public static final int GradientDrawableGradient_centerX
+
+public static final int GradientDrawableGradient_centerY
+
+public static final int GradientDrawableGradient_endColor
+
+public static final int GradientDrawableGradient_gradientRadius
+
+public static final int GradientDrawableGradient_startColor
+
+public static final int GradientDrawableGradient_type
+
+public static final int GradientDrawableGradient_useLevel
+
+public static final int[] GradientDrawablePadding
+
+public static final int GradientDrawablePadding_bottom
+
+public static final int GradientDrawablePadding_left
+
+public static final int GradientDrawablePadding_right
+
+public static final int GradientDrawablePadding_top
+
+public static final int[] GradientDrawableSize
+
+public static final int GradientDrawableSize_height
+
+public static final int GradientDrawableSize_width
+
+public static final int[] GradientDrawableSolid
+
+public static final int GradientDrawableSolid_color
+
+public static final int[] GradientDrawableStroke
+
+public static final int GradientDrawableStroke_color
+
+public static final int GradientDrawableStroke_dashGap
+
+public static final int GradientDrawableStroke_dashWidth
+
+public static final int GradientDrawableStroke_width
+
+public static final int GradientDrawable_innerRadiusRatio
+
+public static final int GradientDrawable_shape
+
+public static final int GradientDrawable_thicknessRatio
+
+public static final int GradientDrawable_useLevel
+
+public static final int GradientDrawable_visible
+
+public static final int[] GridLayoutAnimation
+
+public static final int GridLayoutAnimation_columnDelay
+
+public static final int GridLayoutAnimation_direction
+
+public static final int GridLayoutAnimation_directionPriority
+
+public static final int GridLayoutAnimation_rowDelay
+
+public static final int[] GridView
+
+public static final int GridView_columnWidth
+
+public static final int GridView_gravity
+
+public static final int GridView_horizontalSpacing
+
+public static final int GridView_numColumns
+
+public static final int GridView_stretchMode
+
+public static final int GridView_verticalSpacing
+
+public static final int[] IconMenuView
+
+public static final int IconMenuView_maxItemsPerRow
+
+public static final int IconMenuView_maxRows
+
+public static final int IconMenuView_moreIcon
+
+public static final int IconMenuView_rowHeight
+
+public static final int[] ImageSwitcher
+
+public static final int[] ImageView
+
+public static final int ImageView_adjustViewBounds
+
+public static final int ImageView_baselineAlignBottom
+
+public static final int ImageView_cropToPadding
+
+public static final int ImageView_maxHeight
+
+public static final int ImageView_maxWidth
+
+public static final int ImageView_scaleType
+
+public static final int ImageView_src
+
+public static final int ImageView_tint
+
+public static final int[] InsetDrawable
+
+public static final int InsetDrawable_drawable
+
+public static final int InsetDrawable_insetBottom
+
+public static final int InsetDrawable_insetLeft
+
+public static final int InsetDrawable_insetRight
+
+public static final int InsetDrawable_insetTop
+
+public static final int InsetDrawable_visible
+
+public static final int[] Intent
+
+public static final int[] IntentCategory
+
+public static final int IntentCategory_name
+
+public static final int[] IntentExtra
+
+public static final int IntentExtra_name
+
+public static final int IntentExtra_value
+
+public static final int Intent_action
+
+public static final int Intent_data
+
+public static final int Intent_mimeType
+
+public static final int Intent_targetClass
+
+public static final int Intent_targetPackage
+
+public static final int[] LayerDrawableItem
+
+public static final int LayerDrawableItem_bottom
+
+public static final int LayerDrawableItem_drawable
+
+public static final int LayerDrawableItem_id
+
+public static final int LayerDrawableItem_left
+
+public static final int LayerDrawableItem_right
+
+public static final int LayerDrawableItem_top
+
+public static final int[] LayoutAnimation
+
+public static final int LayoutAnimation_animation
+
+public static final int LayoutAnimation_animationOrder
+
+public static final int LayoutAnimation_delay
+
+public static final int LayoutAnimation_interpolator
+
+public static final int[] LevelListDrawableItem
+
+public static final int LevelListDrawableItem_drawable
+
+public static final int LevelListDrawableItem_maxLevel
+
+public static final int LevelListDrawableItem_minLevel
+
+public static final int[] LinearLayout
+
+public static final int[] LinearLayout_Layout
+
+public static final int LinearLayout_Layout_layout_gravity
+
+public static final int LinearLayout_Layout_layout_height
+
+public static final int LinearLayout_Layout_layout_weight
+
+public static final int LinearLayout_Layout_layout_width
+
+public static final int LinearLayout_baselineAligned
+
+public static final int LinearLayout_baselineAlignedChildIndex
+
+public static final int LinearLayout_gravity
+
+public static final int LinearLayout_orientation
+
+public static final int LinearLayout_weightSum
+
+public static final int[] ListPreference
+
+public static final int ListPreference_entries
+
+public static final int ListPreference_entryValues
+
+public static final int[] ListView
+
+public static final int ListView_choiceMode
+
+public static final int ListView_divider
+
+public static final int ListView_dividerHeight
+
+public static final int ListView_entries
+
+public static final int[] MapView
+
+public static final int MapView_apiKey
+
+public static final int[] Menu
+
+public static final int[] MenuGroup
+
+public static final int MenuGroup_checkableBehavior
+
+public static final int MenuGroup_enabled
+
+public static final int MenuGroup_id
+
+public static final int MenuGroup_menuCategory
+
+public static final int MenuGroup_orderInCategory
+
+public static final int MenuGroup_visible
+
+public static final int[] MenuItem
+
+public static final int[] MenuItemCheckedFocusedState
+
+public static final int MenuItemCheckedFocusedState_state_checkable
+
+public static final int MenuItemCheckedFocusedState_state_checked
+
+public static final int MenuItemCheckedFocusedState_state_focused
+
+public static final int[] MenuItemCheckedState
+
+public static final int MenuItemCheckedState_state_checkable
+
+public static final int MenuItemCheckedState_state_checked
+
+public static final int[] MenuItemUncheckedFocusedState
+
+public static final int MenuItemUncheckedFocusedState_state_checkable
+
+public static final int MenuItemUncheckedFocusedState_state_focused
+
+public static final int[] MenuItemUncheckedState
+
+public static final int MenuItemUncheckedState_state_checkable
+
+public static final int MenuItem_alphabeticShortcut
+
+public static final int MenuItem_checkable
+
+public static final int MenuItem_checked
+
+public static final int MenuItem_enabled
+
+public static final int MenuItem_icon
+
+public static final int MenuItem_id
+
+public static final int MenuItem_menuCategory
+
+public static final int MenuItem_numericShortcut
+
+public static final int MenuItem_orderInCategory
+
+public static final int MenuItem_title
+
+public static final int MenuItem_titleCondensed
+
+public static final int MenuItem_visible
+
+public static final int[] MenuView
+
+public static final int MenuView_headerBackground
+
+public static final int MenuView_horizontalDivider
+
+public static final int MenuView_itemBackground
+
+public static final int MenuView_itemIconDisabledAlpha
+
+public static final int MenuView_itemTextAppearance
+
+public static final int MenuView_verticalDivider
+
+public static final int MenuView_windowAnimationStyle
+
+public static final int[] PopupWindow
+
+public static final int[] PopupWindowBackgroundState
+
+public static final int PopupWindowBackgroundState_state_above_anchor
+
+public static final int PopupWindow_popupBackground
+
+public static final int[] Preference
+
+public static final int[] PreferenceGroup
+
+public static final int PreferenceGroup_orderingFromXml
+
+public static final int Preference_defaultValue
+
+public static final int Preference_dependency
+
+public static final int Preference_enabled
+
+public static final int Preference_key
+
+public static final int Preference_layout
+
+public static final int Preference_order
+
+public static final int Preference_persistent
+
+public static final int Preference_selectable
+
+public static final int Preference_shouldDisableView
+
+public static final int Preference_summary
+
+public static final int Preference_title
+
+public static final int Preference_widgetLayout
+
+public static final int[] ProgressBar
+
+public static final int ProgressBar_indeterminate
+
+public static final int ProgressBar_indeterminateBehavior
+
+public static final int ProgressBar_indeterminateDrawable
+
+public static final int ProgressBar_indeterminateDuration
+
+public static final int ProgressBar_indeterminateOnly
+
+public static final int ProgressBar_interpolator
+
+public static final int ProgressBar_max
+
+public static final int ProgressBar_maxHeight
+
+public static final int ProgressBar_maxWidth
+
+public static final int ProgressBar_minHeight
+
+public static final int ProgressBar_minWidth
+
+public static final int ProgressBar_progress
+
+public static final int ProgressBar_progressDrawable
+
+public static final int ProgressBar_secondaryProgress
+
+public static final int[] RadioGroup
+
+public static final int RadioGroup_checkedButton
+
+public static final int RadioGroup_orientation
+
+public static final int[] RatingBar
+
+public static final int RatingBar_isIndicator
+
+public static final int RatingBar_numStars
+
+public static final int RatingBar_rating
+
+public static final int RatingBar_stepSize
+
+public static final int[] RelativeLayout
+
+public static final int[] RelativeLayout_Layout
+
+public static final int RelativeLayout_Layout_layout_above
+
+public static final int RelativeLayout_Layout_layout_alignBaseline
+
+public static final int RelativeLayout_Layout_layout_alignBottom
+
+public static final int RelativeLayout_Layout_layout_alignLeft
+
+public static final int RelativeLayout_Layout_layout_alignParentBottom
+
+public static final int RelativeLayout_Layout_layout_alignParentLeft
+
+public static final int RelativeLayout_Layout_layout_alignParentRight
+
+public static final int RelativeLayout_Layout_layout_alignParentTop
+
+public static final int RelativeLayout_Layout_layout_alignRight
+
+public static final int RelativeLayout_Layout_layout_alignTop
+
+public static final int RelativeLayout_Layout_layout_alignWithParentIfMissing
+
+public static final int RelativeLayout_Layout_layout_below
+
+public static final int RelativeLayout_Layout_layout_centerHorizontal
+
+public static final int RelativeLayout_Layout_layout_centerInParent
+
+public static final int RelativeLayout_Layout_layout_centerVertical
+
+public static final int RelativeLayout_Layout_layout_toLeftOf
+
+public static final int RelativeLayout_Layout_layout_toRightOf
+
+public static final int RelativeLayout_gravity
+
+public static final int RelativeLayout_ignoreGravity
+
+public static final int[] RingtonePreference
+
+public static final int RingtonePreference_ringtoneType
+
+public static final int RingtonePreference_showDefault
+
+public static final int RingtonePreference_showSilent
+
+public static final int[] RotateAnimation
+
+public static final int RotateAnimation_fromDegrees
+
+public static final int RotateAnimation_pivotX
+
+public static final int RotateAnimation_pivotY
+
+public static final int RotateAnimation_toDegrees
+
+public static final int[] RotateDrawable
+
+public static final int RotateDrawable_drawable
+
+public static final int RotateDrawable_fromDegrees
+
+public static final int RotateDrawable_pivotX
+
+public static final int RotateDrawable_pivotY
+
+public static final int RotateDrawable_toDegrees
+
+public static final int RotateDrawable_visible
+
+public static final int[] ScaleAnimation
+
+public static final int ScaleAnimation_fromXScale
+
+public static final int ScaleAnimation_fromYScale
+
+public static final int ScaleAnimation_pivotX
+
+public static final int ScaleAnimation_pivotY
+
+public static final int ScaleAnimation_toXScale
+
+public static final int ScaleAnimation_toYScale
+
+public static final int[] ScaleDrawable
+
+public static final int ScaleDrawable_drawable
+
+public static final int ScaleDrawable_scaleGravity
+
+public static final int ScaleDrawable_scaleHeight
+
+public static final int ScaleDrawable_scaleWidth
+
+public static final int[] ScrollView
+
+public static final int ScrollView_fillViewport
+
+public static final int[] Searchable
+
+public static final int[] SearchableActionKey
+
+public static final int SearchableActionKey_keycode
+
+public static final int SearchableActionKey_queryActionMsg
+
+public static final int SearchableActionKey_suggestActionMsg
+
+public static final int SearchableActionKey_suggestActionMsgColumn
+
+public static final int Searchable_hint
+
+public static final int Searchable_icon
+
+public static final int Searchable_label
+
+public static final int Searchable_searchButtonText
+
+public static final int Searchable_searchMode
+
+public static final int Searchable_searchSuggestAuthority
+
+public static final int Searchable_searchSuggestIntentAction
+
+public static final int Searchable_searchSuggestIntentData
+
+public static final int Searchable_searchSuggestPath
+
+public static final int Searchable_searchSuggestSelection
+
+public static final int[] SeekBar
+
+public static final int SeekBar_thumb
+
+public static final int SeekBar_thumbOffset
+
+public static final int[] ShapeDrawable
+
+public static final int[] ShapeDrawablePadding
+
+public static final int ShapeDrawablePadding_bottom
+
+public static final int ShapeDrawablePadding_left
+
+public static final int ShapeDrawablePadding_right
+
+public static final int ShapeDrawablePadding_top
+
+public static final int ShapeDrawable_color
+
+public static final int ShapeDrawable_height
+
+public static final int ShapeDrawable_width
+
+public static final int[] SlidingDrawer
+
+public static final int SlidingDrawer_animateOnClick
+
+public static final int SlidingDrawer_bottomOffset
+
+public static final int SlidingDrawer_content
+
+public static final int SlidingDrawer_handle
+
+public static final int SlidingDrawer_orientation
+
+public static final int SlidingDrawer_topOffset
+
+public static final int[] Spinner
+
+public static final int Spinner_prompt
+
+public static final int[] StateListDrawable
+
+public static final int StateListDrawable_constantSize
+
+public static final int StateListDrawable_variablePadding
+
+public static final int StateListDrawable_visible
+
+public static final int[] TabWidget
+
+public static final int[] TableLayout
+
+public static final int TableLayout_collapseColumns
+
+public static final int TableLayout_shrinkColumns
+
+public static final int TableLayout_stretchColumns
+
+public static final int[] TableRow
+
+public static final int[] TableRow_Cell
+
+public static final int TableRow_Cell_layout_column
+
+public static final int TableRow_Cell_layout_span
+
+public static final int[] TextAppearance
+
+public static final int TextAppearance_textColor
+
+public static final int TextAppearance_textColorHighlight
+
+public static final int TextAppearance_textColorHint
+
+public static final int TextAppearance_textColorLink
+
+public static final int TextAppearance_textSize
+
+public static final int TextAppearance_textStyle
+
+public static final int TextAppearance_typeface
+
+public static final int[] TextSwitcher
+
+public static final int[] TextView
+
+public static final int TextView_autoLink
+
+public static final int TextView_autoText
+
+public static final int TextView_bufferType
+
+public static final int TextView_capitalize
+
+public static final int TextView_cursorVisible
+
+public static final int TextView_digits
+
+public static final int TextView_drawableBottom
+
+public static final int TextView_drawableLeft
+
+public static final int TextView_drawablePadding
+
+public static final int TextView_drawableRight
+
+public static final int TextView_drawableTop
+
+public static final int TextView_editable
+
+public static final int TextView_ellipsize
+
+public static final int TextView_ems
+
+public static final int TextView_enabled
+
+public static final int TextView_freezesText
+
+public static final int TextView_gravity
+
+public static final int TextView_height
+
+public static final int TextView_hint
+
+public static final int TextView_includeFontPadding
+
+public static final int TextView_inputMethod
+
+public static final int TextView_lineSpacingExtra
+
+public static final int TextView_lineSpacingMultiplier
+
+public static final int TextView_lines
+
+public static final int TextView_linksClickable
+
+public static final int TextView_maxEms
+
+public static final int TextView_maxHeight
+
+public static final int TextView_maxLength
+
+public static final int TextView_maxLines
+
+public static final int TextView_maxWidth
+
+public static final int TextView_minEms
+
+public static final int TextView_minHeight
+
+public static final int TextView_minLines
+
+public static final int TextView_minWidth
+
+public static final int TextView_numeric
+
+public static final int TextView_password
+
+public static final int TextView_phoneNumber
+
+public static final int TextView_scrollHorizontally
+
+public static final int TextView_selectAllOnFocus
+
+public static final int TextView_shadowColor
+
+public static final int TextView_shadowDx
+
+public static final int TextView_shadowDy
+
+public static final int TextView_shadowRadius
+
+public static final int TextView_singleLine
+
+public static final int TextView_text
+
+public static final int TextView_textAppearance
+
+public static final int TextView_textColor
+
+public static final int TextView_textColorHighlight
+
+public static final int TextView_textColorHint
+
+public static final int TextView_textColorLink
+
+public static final int TextView_textScaleX
+
+public static final int TextView_textSize
+
+public static final int TextView_textStyle
+
+public static final int TextView_typeface
+
+public static final int TextView_width
+
+public static final int[] Theme
+
+public static final int Theme_absListViewStyle
+
+public static final int Theme_alertDialogStyle
+
+public static final int Theme_autoCompleteTextViewStyle
+
+public static final int Theme_backgroundDimAmount
+
+public static final int Theme_buttonStyle
+
+public static final int Theme_buttonStyleInset
+
+public static final int Theme_buttonStyleSmall
+
+public static final int Theme_buttonStyleToggle
+
+public static final int Theme_checkBoxPreferenceStyle
+
+public static final int Theme_checkboxStyle
+
+public static final int Theme_colorBackground
+
+public static final int Theme_colorForeground
+
+public static final int Theme_colorForegroundInverse
+
+public static final int Theme_dialogPreferenceStyle
+
+public static final int Theme_disabledAlpha
+
+public static final int Theme_dropDownHintAppearance
+
+public static final int Theme_dropDownItemStyle
+
+public static final int Theme_dropDownListViewStyle
+
+public static final int Theme_editTextPreferenceStyle
+
+public static final int Theme_editTextStyle
+
+public static final int Theme_expandableListPreferredChildIndicatorLeft
+
+public static final int Theme_expandableListPreferredChildIndicatorRight
+
+public static final int Theme_expandableListPreferredChildPaddingLeft
+
+public static final int Theme_expandableListPreferredItemIndicatorLeft
+
+public static final int Theme_expandableListPreferredItemIndicatorRight
+
+public static final int Theme_expandableListPreferredItemPaddingLeft
+
+public static final int Theme_expandableListViewStyle
+
+public static final int Theme_galleryItemBackground
+
+public static final int Theme_galleryStyle
+
+public static final int Theme_gridViewStyle
+
+public static final int Theme_imageButtonStyle
+
+public static final int Theme_imageWellStyle
+
+public static final int Theme_listChoiceIndicatorMultiple
+
+public static final int Theme_listChoiceIndicatorSingle
+
+public static final int Theme_listDivider
+
+public static final int Theme_listPreferredItemHeight
+
+public static final int Theme_listSeparatorTextViewStyle
+
+public static final int Theme_listViewStyle
+
+public static final int Theme_listViewWhiteStyle
+
+public static final int Theme_mapViewStyle
+
+public static final int Theme_panelBackground
+
+public static final int Theme_panelColorBackground
+
+public static final int Theme_panelColorForeground
+
+public static final int Theme_panelFullBackground
+
+public static final int Theme_panelTextAppearance
+
+public static final int Theme_popupWindowStyle
+
+public static final int Theme_preferenceCategoryStyle
+
+public static final int Theme_preferenceInformationStyle
+
+public static final int Theme_preferenceLayoutChild
+
+public static final int Theme_preferenceScreenStyle
+
+public static final int Theme_preferenceStyle
+
+public static final int Theme_progressBarStyle
+
+public static final int Theme_progressBarStyleHorizontal
+
+public static final int Theme_progressBarStyleLarge
+
+public static final int Theme_progressBarStyleSmall
+
+public static final int Theme_progressBarStyleSmallTitle
+
+public static final int Theme_radioButtonStyle
+
+public static final int Theme_ratingBarStyle
+
+public static final int Theme_ratingBarStyleIndicator
+
+public static final int Theme_ratingBarStyleSmall
+
+public static final int Theme_ringtonePreferenceStyle
+
+public static final int Theme_scrollViewStyle
+
+public static final int Theme_seekBarStyle
+
+public static final int Theme_spinnerDropDownItemStyle
+
+public static final int Theme_spinnerItemStyle
+
+public static final int Theme_spinnerStyle
+
+public static final int Theme_starStyle
+
+public static final int Theme_tabWidgetStyle
+
+public static final int Theme_textAppearance
+
+public static final int Theme_textAppearanceButton
+
+public static final int Theme_textAppearanceInverse
+
+public static final int Theme_textAppearanceLarge
+
+public static final int Theme_textAppearanceLargeInverse
+
+public static final int Theme_textAppearanceMedium
+
+public static final int Theme_textAppearanceMediumInverse
+
+public static final int Theme_textAppearanceSmall
+
+public static final int Theme_textAppearanceSmallInverse
+
+public static final int Theme_textCheckMark
+
+public static final int Theme_textCheckMarkInverse
+
+public static final int Theme_textColorHintInverse
+
+public static final int Theme_textColorPrimary
+
+public static final int Theme_textColorPrimaryDisableOnly
+
+public static final int Theme_textColorPrimaryInverse
+
+public static final int Theme_textColorPrimaryInverseNoDisable
+
+public static final int Theme_textColorPrimaryNoDisable
+
+public static final int Theme_textColorSecondary
+
+public static final int Theme_textColorSecondaryInverse
+
+public static final int Theme_textColorSecondaryInverseNoDisable
+
+public static final int Theme_textColorSecondaryNoDisable
+
+public static final int Theme_textColorTertiary
+
+public static final int Theme_textColorTertiaryInverse
+
+public static final int Theme_textViewStyle
+
+public static final int Theme_webViewStyle
+
+public static final int Theme_windowAnimationStyle
+
+public static final int Theme_windowBackground
+
+public static final int Theme_windowContentOverlay
+
+public static final int Theme_windowFrame
+
+public static final int Theme_windowFullscreen
+
+public static final int Theme_windowIsFloating
+
+public static final int Theme_windowIsTranslucent
+
+public static final int Theme_windowNoTitle
+
+public static final int Theme_windowTitleBackgroundStyle
+
+public static final int Theme_windowTitleSize
+
+public static final int Theme_windowTitleStyle
+
+public static final int Theme_yesNoPreferenceStyle
+
+public static final int[] ToggleButton
+
+public static final int ToggleButton_disabledAlpha
+
+public static final int ToggleButton_textOff
+
+public static final int ToggleButton_textOn
+
+public static final int[] TranslateAnimation
+
+public static final int TranslateAnimation_fromXDelta
+
+public static final int TranslateAnimation_fromYDelta
+
+public static final int TranslateAnimation_toXDelta
+
+public static final int TranslateAnimation_toYDelta
+
+public static final int[] TwoLineListItem
+
+public static final int TwoLineListItem_mode
+
+public static final int[] VerticalSlider_Layout
+
+public static final int VerticalSlider_Layout_layout_scale
+
+public static final int[] View
+
+public static final int[] ViewAnimator
+
+public static final int ViewAnimator_inAnimation
+
+public static final int ViewAnimator_outAnimation
+
+public static final int[] ViewDrawableStates
+
+public static final int ViewDrawableStates_state_enabled
+
+public static final int ViewDrawableStates_state_focused
+
+public static final int ViewDrawableStates_state_pressed
+
+public static final int ViewDrawableStates_state_selected
+
+public static final int ViewDrawableStates_state_window_focused
+
+public static final int[] ViewFlipper
+
+public static final int ViewFlipper_flipInterval
+
+public static final int[] ViewGroup
+
+public static final int[] ViewGroup_Layout
+
+public static final int ViewGroup_Layout_layout_height
+
+public static final int ViewGroup_Layout_layout_width
+
+public static final int[] ViewGroup_MarginLayout
+
+public static final int ViewGroup_MarginLayout_layout_height
+
+public static final int ViewGroup_MarginLayout_layout_margin
+
+public static final int ViewGroup_MarginLayout_layout_marginBottom
+
+public static final int ViewGroup_MarginLayout_layout_marginLeft
+
+public static final int ViewGroup_MarginLayout_layout_marginRight
+
+public static final int ViewGroup_MarginLayout_layout_marginTop
+
+public static final int ViewGroup_MarginLayout_layout_width
+
+public static final int ViewGroup_addStatesFromChildren
+
+public static final int ViewGroup_alwaysDrawnWithCache
+
+public static final int ViewGroup_animationCache
+
+public static final int ViewGroup_clipChildren
+
+public static final int ViewGroup_clipToPadding
+
+public static final int ViewGroup_descendantFocusability
+
+public static final int ViewGroup_layoutAnimation
+
+public static final int ViewGroup_persistentDrawingCache
+
+public static final int[] ViewStub
+
+public static final int ViewStub_inflatedId
+
+public static final int ViewStub_layout
+
+public static final int[] ViewSwitcher
+
+public static final int View_background
+
+public static final int View_clickable
+
+public static final int View_drawingCacheQuality
+
+public static final int View_duplicateParentState
+
+public static final int View_fadingEdge
+
+public static final int View_fadingEdgeLength
+
+public static final int View_fitsSystemWindows
+
+public static final int View_focusable
+
+public static final int View_focusableInTouchMode
+
+public static final int View_id
+
+public static final int View_keepScreenOn
+
+public static final int View_longClickable
+
+public static final int View_minHeight
+
+public static final int View_minWidth
+
+public static final int View_nextFocusDown
+
+public static final int View_nextFocusLeft
+
+public static final int View_nextFocusRight
+
+public static final int View_nextFocusUp
+
+public static final int View_padding
+
+public static final int View_paddingBottom
+
+public static final int View_paddingLeft
+
+public static final int View_paddingRight
+
+public static final int View_paddingTop
+
+public static final int View_saveEnabled
+
+public static final int View_scrollX
+
+public static final int View_scrollY
+
+public static final int View_scrollbarAlwaysDrawHorizontalTrack
+
+public static final int View_scrollbarAlwaysDrawVerticalTrack
+
+public static final int View_scrollbarSize
+
+public static final int View_scrollbarStyle
+
+public static final int View_scrollbarThumbHorizontal
+
+public static final int View_scrollbarThumbVertical
+
+public static final int View_scrollbarTrackHorizontal
+
+public static final int View_scrollbarTrackVertical
+
+public static final int View_scrollbars
+
+public static final int View_soundEffectsEnabled
+
+public static final int View_tag
+
+public static final int View_visibility
+
+public static final int[] VolumePreference
+
+public static final int VolumePreference_streamType
+
+public static final int[] Window
+
+public static final int[] WindowAnimation
+
+public static final int WindowAnimation_activityCloseEnterAnimation
+
+public static final int WindowAnimation_activityCloseExitAnimation
+
+public static final int WindowAnimation_activityOpenEnterAnimation
+
+public static final int WindowAnimation_activityOpenExitAnimation
+
+public static final int WindowAnimation_taskCloseEnterAnimation
+
+public static final int WindowAnimation_taskCloseExitAnimation
+
+public static final int WindowAnimation_taskOpenEnterAnimation
+
+public static final int WindowAnimation_taskOpenExitAnimation
+
+public static final int WindowAnimation_taskToBackEnterAnimation
+
+public static final int WindowAnimation_taskToBackExitAnimation
+
+public static final int WindowAnimation_taskToFrontEnterAnimation
+
+public static final int WindowAnimation_taskToFrontExitAnimation
+
+public static final int WindowAnimation_windowEnterAnimation
+
+public static final int WindowAnimation_windowExitAnimation
+
+public static final int WindowAnimation_windowHideAnimation
+
+public static final int WindowAnimation_windowShowAnimation
+
+public static final int Window_textColor
+
+public static final int Window_windowAnimationStyle
+
+public static final int Window_windowBackground
+
+public static final int Window_windowContentOverlay
+
+public static final int Window_windowFrame
+
+public static final int Window_windowFullscreen
+
+public static final int Window_windowIsFloating
+
+public static final int Window_windowIsTranslucent
+
+public static final int Window_windowNoTitle
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =xml )
+@dalvik.annotation.EnclosingClass (value =Landroid/R; )
+public final class android.R$xml extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/R$styleable;Landroid/R$xml;Landroid/R$style;Landroid/R$string;Landroid/R$raw;Landroid/R$plurals;Landroid/R$layout;Landroid/R$id;Landroid/R$drawable;Landroid/R$dimen;Landroid/R$color;Landroid/R$attr;Landroid/R$array;Landroid/R$anim; )
+public final class android.R extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =AccountUpdater )
+@dalvik.annotation.EnclosingClass (value =Landroid/accounts/AccountMonitor; )
+ class android.accounts.AccountMonitor$AccountUpdater extends java.lang.Thread
+
+----------------FIELDS----------------
+
+private android.os.IBinder mService
+
+final android.accounts.AccountMonitor this$0
+----------------METHODS----------------
+
+public void <init>(
+android.accounts.AccountMonitor
+android.os.IBinder)
+
+public void run()
+
+________________CLASS________________
+
+
+public abstract class android.content.BroadcastReceiver extends java.lang.Object
+
+----------------FIELDS----------------
+
+private boolean mAbortBroadcast
+
+private boolean mDebugUnregister
+
+private boolean mOrderedHint
+
+private int mResultCode
+
+private java.lang.String mResultData
+
+private android.os.Bundle mResultExtras
+----------------METHODS----------------
+
+public void <init>()
+
+public final void abortBroadcast()
+
+ void checkSynchronousHint()
+
+public final void clearAbortBroadcast()
+
+public final boolean getAbortBroadcast()
+
+public final boolean getDebugUnregister()
+
+public final int getResultCode()
+
+public final java.lang.String getResultData()
+
+public final android.os.Bundle getResultExtras(
+boolean)
+
+public abstract void onReceive(
+android.content.Context
+android.content.Intent)
+
+public final void setDebugUnregister(
+boolean)
+
+public final void setOrderedHint(
+boolean)
+
+public final void setResult(
+int
+java.lang.String
+android.os.Bundle)
+
+public final void setResultCode(
+int)
+
+public final void setResultData(
+java.lang.String)
+
+public final void setResultExtras(
+android.os.Bundle)
+
+________________CLASS________________
+
+
+public abstract interface class android.content.ServiceConnection extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onServiceConnected(
+android.content.ComponentName
+android.os.IBinder)
+
+public abstract void onServiceDisconnected(
+android.content.ComponentName)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/accounts/AccountMonitor$AccountUpdater; )
+public class android.accounts.AccountMonitor extends android.content.BroadcastReceiver implements android.content.ServiceConnection
+
+----------------FIELDS----------------
+
+private boolean mClosed
+
+private final android.content.Context mContext
+
+private final android.accounts.AccountMonitorListener mListener
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.accounts.AccountMonitorListener)
+
+static android.content.Context access$000(
+android.accounts.AccountMonitor)
+
+static android.accounts.AccountMonitorListener access$100(
+android.accounts.AccountMonitor)
+
+private void notifyListener()
+
+public void close()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+public void onServiceConnected(
+android.content.ComponentName
+android.os.IBinder)
+
+public void onServiceDisconnected(
+android.content.ComponentName)
+
+________________CLASS________________
+
+
+public abstract interface class android.accounts.AccountMonitorListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onAccountsUpdated(
+java.lang.String[])
+
+________________CLASS________________
+
+
+public class android.accounts.AccountsServiceConstants extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACCOUNTS_SERVICE_ACTION
+
+public static final java.lang.String LOGIN_ACCOUNTS_CHANGED_ACTION
+
+public static final java.lang.String LOGIN_ACCOUNTS_MISSING_ACTION
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+
+public abstract interface class android.os.IInterface extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.os.IBinder asBinder()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/accounts/IAccountsService$Stub; )
+public abstract interface class android.accounts.IAccountsService extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String[] getAccounts()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/accounts/IAccountsService$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class android.accounts.IAccountsService$Stub$Proxy extends java.lang.Object implements android.accounts.IAccountsService
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String[] getAccounts()
+
+public java.lang.String getInterfaceDescriptor()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/IBinder$DeathRecipient; )
+public abstract interface class android.os.IBinder extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int DUMP_TRANSACTION
+
+public static final int FIRST_CALL_TRANSACTION
+
+public static final int FLAG_ONEWAY
+
+public static final int INTERFACE_TRANSACTION
+
+public static final int LAST_CALL_TRANSACTION
+
+public static final int PING_TRANSACTION
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getInterfaceDescriptor()
+
+public abstract boolean isBinderAlive()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void linkToDeath(
+android.os.IBinder$DeathRecipient
+int)
+
+public abstract boolean pingBinder()
+
+public abstract android.os.IInterface queryLocalInterface(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean transact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+public abstract boolean unlinkToDeath(
+android.os.IBinder$DeathRecipient
+int)
+
+________________CLASS________________
+
+
+public class android.os.Binder extends java.lang.Object implements android.os.IBinder
+
+----------------FIELDS----------------
+
+private static final boolean FIND_POTENTIAL_LEAKS
+
+private static final java.lang.String TAG
+
+private java.lang.String mDescriptor
+
+private int mObject
+
+private android.os.IInterface mOwner
+----------------METHODS----------------
+
+public void <init>()
+
+public static final native long clearCallingIdentity()
+
+private final native void destroy()
+
+private boolean execTransact(
+int
+int
+int
+int)
+
+public static final native void flushPendingCommands()
+
+public static final native int getCallingPid()
+
+public static final native int getCallingUid()
+
+private final native void init()
+
+public static final native void joinThreadPool()
+
+public static final native void restoreCallingIdentity(
+long)
+
+public void attachInterface(
+android.os.IInterface
+java.lang.String)
+
+protected void dump(
+java.io.FileDescriptor
+java.io.PrintWriter
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public java.lang.String getInterfaceDescriptor()
+
+public boolean isBinderAlive()
+
+public void linkToDeath(
+android.os.IBinder$DeathRecipient
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+protected boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+public boolean pingBinder()
+
+public android.os.IInterface queryLocalInterface(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final boolean transact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+public boolean unlinkToDeath(
+android.os.IBinder$DeathRecipient
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.MemberClasses (value =Landroid/accounts/IAccountsService$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/accounts/IAccountsService; )
+public abstract class android.accounts.IAccountsService$Stub extends android.os.Binder implements android.accounts.IAccountsService
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_getAccounts
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.accounts.IAccountsService asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/annotation/SdkConstant$SdkConstantType;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/annotation/SdkConstant; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =SdkConstantType )
+public final class android.annotation.SdkConstant$SdkConstantType extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.annotation.SdkConstant$SdkConstantType[] $VALUES
+
+public static final android.annotation.SdkConstant$SdkConstantType ACTIVITY_INTENT_ACTION
+
+public static final android.annotation.SdkConstant$SdkConstantType BROADCAST_INTENT_ACTION
+
+public static final android.annotation.SdkConstant$SdkConstantType INTENT_CATEGORY
+
+public static final android.annotation.SdkConstant$SdkConstantType SERVICE_ACTION
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.annotation.SdkConstant$SdkConstantType valueOf(
+java.lang.String)
+
+public static android.annotation.SdkConstant$SdkConstantType[] values()
+
+________________CLASS________________
+
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!SOURCE )
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!FIELD )
+@dalvik.annotation.MemberClasses (value =Landroid/annotation/SdkConstant$SdkConstantType; )
+public abstract interface class android.annotation.SdkConstant extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.annotation.SdkConstant$SdkConstantType value()
+
+________________CLASS________________
+
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!SOURCE )
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!TYPE )
+public abstract interface class android.annotation.Widget extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/Activity; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =ManagedCursor )
+final class android.app.Activity$ManagedCursor extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final android.database.Cursor mCursor
+
+private boolean mReleased
+
+private boolean mUpdated
+----------------METHODS----------------
+
+ void <init>(
+android.database.Cursor)
+
+static android.database.Cursor access$000(
+android.app.Activity$ManagedCursor)
+
+static boolean access$100(
+android.app.Activity$ManagedCursor)
+
+static boolean access$102(
+android.app.Activity$ManagedCursor
+boolean)
+
+static boolean access$200(
+android.app.Activity$ManagedCursor)
+
+static boolean access$202(
+android.app.Activity$ManagedCursor
+boolean)
+
+________________CLASS________________
+
+
+public abstract class android.content.Context extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACTIVITY_SERVICE
+
+public static final java.lang.String ALARM_SERVICE
+
+public static final java.lang.String AUDIO_SERVICE
+
+public static final int BIND_AUTO_CREATE
+
+public static final int BIND_DEBUG_UNBIND
+
+public static final java.lang.String BLUETOOTH_SERVICE
+
+public static final java.lang.String CLIPBOARD_SERVICE
+
+public static final java.lang.String CONNECTIVITY_SERVICE
+
+public static final int CONTEXT_IGNORE_SECURITY
+
+public static final int CONTEXT_INCLUDE_CODE
+
+public static final java.lang.String KEYGUARD_SERVICE
+
+public static final java.lang.String LAYOUT_INFLATER_SERVICE
+
+public static final java.lang.String LOCATION_SERVICE
+
+public static final int MODE_APPEND
+
+public static final int MODE_PRIVATE
+
+public static final int MODE_WORLD_READABLE
+
+public static final int MODE_WORLD_WRITEABLE
+
+public static final java.lang.String NOTIFICATION_SERVICE
+
+public static final java.lang.String POWER_SERVICE
+
+public static final java.lang.String SEARCH_SERVICE
+
+public static final java.lang.String SENSOR_SERVICE
+
+public static final java.lang.String STATUS_BAR_SERVICE
+
+public static final java.lang.String TELEPHONY_SERVICE
+
+public static final java.lang.String VIBRATOR_SERVICE
+
+public static final java.lang.String WALLPAPER_SERVICE
+
+public static final java.lang.String WIFI_SERVICE
+
+public static final java.lang.String WINDOW_SERVICE
+----------------METHODS----------------
+
+public void <init>()
+
+public abstract boolean bindService(
+android.content.Intent
+android.content.ServiceConnection
+int)
+
+public abstract int checkCallingOrSelfPermission(
+java.lang.String)
+
+public abstract int checkCallingOrSelfUriPermission(
+android.net.Uri
+int)
+
+public abstract int checkCallingPermission(
+java.lang.String)
+
+public abstract int checkCallingUriPermission(
+android.net.Uri
+int)
+
+public abstract int checkPermission(
+java.lang.String
+int
+int)
+
+public abstract int checkUriPermission(
+android.net.Uri
+int
+int
+int)
+
+public abstract int checkUriPermission(
+android.net.Uri
+java.lang.String
+java.lang.String
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void clearWallpaper()
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract android.content.Context createPackageContext(
+java.lang.String
+int)
+
+public abstract java.lang.String[] databaseList()
+
+public abstract boolean deleteDatabase(
+java.lang.String)
+
+public abstract boolean deleteFile(
+java.lang.String)
+
+public abstract void enforceCallingOrSelfPermission(
+java.lang.String
+java.lang.String)
+
+public abstract void enforceCallingOrSelfUriPermission(
+android.net.Uri
+int
+java.lang.String)
+
+public abstract void enforceCallingPermission(
+java.lang.String
+java.lang.String)
+
+public abstract void enforceCallingUriPermission(
+android.net.Uri
+int
+java.lang.String)
+
+public abstract void enforcePermission(
+java.lang.String
+int
+int
+java.lang.String)
+
+public abstract void enforceUriPermission(
+android.net.Uri
+int
+int
+int
+java.lang.String)
+
+public abstract void enforceUriPermission(
+android.net.Uri
+java.lang.String
+java.lang.String
+int
+int
+int
+java.lang.String)
+
+public abstract java.lang.String[] fileList()
+
+public abstract android.content.Context getApplicationContext()
+
+public abstract android.content.res.AssetManager getAssets()
+
+public abstract java.io.File getCacheDir()
+
+public abstract java.lang.ClassLoader getClassLoader()
+
+public abstract android.content.ContentResolver getContentResolver()
+
+public abstract java.io.File getDatabasePath(
+java.lang.String)
+
+public abstract java.io.File getDir(
+java.lang.String
+int)
+
+public abstract java.io.File getFileStreamPath(
+java.lang.String)
+
+public abstract java.io.File getFilesDir()
+
+public abstract android.os.Looper getMainLooper()
+
+public abstract java.lang.String getPackageCodePath()
+
+public abstract android.content.pm.PackageManager getPackageManager()
+
+public abstract java.lang.String getPackageName()
+
+public abstract java.lang.String getPackageResourcePath()
+
+public abstract android.content.res.Resources getResources()
+
+public abstract android.content.SharedPreferences getSharedPreferences(
+java.lang.String
+int)
+
+public final java.lang.String getString(
+int)
+
+public final transient java.lang.String getString(
+int
+java.lang.Object[])
+
+public abstract java.lang.Object getSystemService(
+java.lang.String)
+
+public final java.lang.CharSequence getText(
+int)
+
+public abstract android.content.res.Resources$Theme getTheme()
+
+public abstract android.graphics.drawable.Drawable getWallpaper()
+
+public abstract int getWallpaperDesiredMinimumHeight()
+
+public abstract int getWallpaperDesiredMinimumWidth()
+
+public abstract void grantUriPermission(
+java.lang.String
+android.net.Uri
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public final android.content.res.TypedArray obtainStyledAttributes(
+int
+int[])
+
+public final android.content.res.TypedArray obtainStyledAttributes(
+android.util.AttributeSet
+int[])
+
+public final android.content.res.TypedArray obtainStyledAttributes(
+android.util.AttributeSet
+int[]
+int
+int)
+
+public final android.content.res.TypedArray obtainStyledAttributes(
+int[])
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public abstract java.io.FileInputStream openFileInput(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public abstract java.io.FileOutputStream openFileOutput(
+java.lang.String
+int)
+
+public abstract android.database.sqlite.SQLiteDatabase openOrCreateDatabase(
+java.lang.String
+int
+android.database.sqlite.SQLiteDatabase$CursorFactory)
+
+public abstract android.graphics.drawable.Drawable peekWallpaper()
+
+public abstract android.content.Intent registerReceiver(
+android.content.BroadcastReceiver
+android.content.IntentFilter)
+
+public abstract android.content.Intent registerReceiver(
+android.content.BroadcastReceiver
+android.content.IntentFilter
+java.lang.String
+android.os.Handler)
+
+public abstract void removeStickyBroadcast(
+android.content.Intent)
+
+public abstract void revokeUriPermission(
+android.net.Uri
+int)
+
+public abstract void sendBroadcast(
+android.content.Intent)
+
+public abstract void sendBroadcast(
+android.content.Intent
+java.lang.String)
+
+public abstract void sendOrderedBroadcast(
+android.content.Intent
+java.lang.String)
+
+public abstract void sendOrderedBroadcast(
+android.content.Intent
+java.lang.String
+android.content.BroadcastReceiver
+android.os.Handler
+int
+java.lang.String
+android.os.Bundle)
+
+public abstract void sendStickyBroadcast(
+android.content.Intent)
+
+public abstract void setTheme(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void setWallpaper(
+android.graphics.Bitmap)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void setWallpaper(
+java.io.InputStream)
+
+public abstract void startActivity(
+android.content.Intent)
+
+public abstract boolean startInstrumentation(
+android.content.ComponentName
+java.lang.String
+android.os.Bundle)
+
+public abstract android.content.ComponentName startService(
+android.content.Intent)
+
+public abstract boolean stopService(
+android.content.Intent)
+
+public abstract void unbindService(
+android.content.ServiceConnection)
+
+public abstract void unregisterReceiver(
+android.content.BroadcastReceiver)
+
+________________CLASS________________
+
+
+public class android.content.ContextWrapper extends android.content.Context
+
+----------------FIELDS----------------
+
+ android.content.Context mBase
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+protected void attachBaseContext(
+android.content.Context)
+
+public boolean bindService(
+android.content.Intent
+android.content.ServiceConnection
+int)
+
+public int checkCallingOrSelfPermission(
+java.lang.String)
+
+public int checkCallingOrSelfUriPermission(
+android.net.Uri
+int)
+
+public int checkCallingPermission(
+java.lang.String)
+
+public int checkCallingUriPermission(
+android.net.Uri
+int)
+
+public int checkPermission(
+java.lang.String
+int
+int)
+
+public int checkUriPermission(
+android.net.Uri
+int
+int
+int)
+
+public int checkUriPermission(
+android.net.Uri
+java.lang.String
+java.lang.String
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void clearWallpaper()
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public android.content.Context createPackageContext(
+java.lang.String
+int)
+
+public java.lang.String[] databaseList()
+
+public boolean deleteDatabase(
+java.lang.String)
+
+public boolean deleteFile(
+java.lang.String)
+
+public void enforceCallingOrSelfPermission(
+java.lang.String
+java.lang.String)
+
+public void enforceCallingOrSelfUriPermission(
+android.net.Uri
+int
+java.lang.String)
+
+public void enforceCallingPermission(
+java.lang.String
+java.lang.String)
+
+public void enforceCallingUriPermission(
+android.net.Uri
+int
+java.lang.String)
+
+public void enforcePermission(
+java.lang.String
+int
+int
+java.lang.String)
+
+public void enforceUriPermission(
+android.net.Uri
+int
+int
+int
+java.lang.String)
+
+public void enforceUriPermission(
+android.net.Uri
+java.lang.String
+java.lang.String
+int
+int
+int
+java.lang.String)
+
+public java.lang.String[] fileList()
+
+public android.content.Context getApplicationContext()
+
+public android.content.res.AssetManager getAssets()
+
+public android.content.Context getBaseContext()
+
+public java.io.File getCacheDir()
+
+public java.lang.ClassLoader getClassLoader()
+
+public android.content.ContentResolver getContentResolver()
+
+public java.io.File getDatabasePath(
+java.lang.String)
+
+public java.io.File getDir(
+java.lang.String
+int)
+
+public java.io.File getFileStreamPath(
+java.lang.String)
+
+public java.io.File getFilesDir()
+
+public android.os.Looper getMainLooper()
+
+public java.lang.String getPackageCodePath()
+
+public android.content.pm.PackageManager getPackageManager()
+
+public java.lang.String getPackageName()
+
+public java.lang.String getPackageResourcePath()
+
+public android.content.res.Resources getResources()
+
+public android.content.SharedPreferences getSharedPreferences(
+java.lang.String
+int)
+
+public java.lang.Object getSystemService(
+java.lang.String)
+
+public android.content.res.Resources$Theme getTheme()
+
+public android.graphics.drawable.Drawable getWallpaper()
+
+public int getWallpaperDesiredMinimumHeight()
+
+public int getWallpaperDesiredMinimumWidth()
+
+public void grantUriPermission(
+java.lang.String
+android.net.Uri
+int)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public java.io.FileInputStream openFileInput(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public java.io.FileOutputStream openFileOutput(
+java.lang.String
+int)
+
+public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(
+java.lang.String
+int
+android.database.sqlite.SQLiteDatabase$CursorFactory)
+
+public android.graphics.drawable.Drawable peekWallpaper()
+
+public android.content.Intent registerReceiver(
+android.content.BroadcastReceiver
+android.content.IntentFilter)
+
+public android.content.Intent registerReceiver(
+android.content.BroadcastReceiver
+android.content.IntentFilter
+java.lang.String
+android.os.Handler)
+
+public void removeStickyBroadcast(
+android.content.Intent)
+
+public void revokeUriPermission(
+android.net.Uri
+int)
+
+public void sendBroadcast(
+android.content.Intent)
+
+public void sendBroadcast(
+android.content.Intent
+java.lang.String)
+
+public void sendOrderedBroadcast(
+android.content.Intent
+java.lang.String)
+
+public void sendOrderedBroadcast(
+android.content.Intent
+java.lang.String
+android.content.BroadcastReceiver
+android.os.Handler
+int
+java.lang.String
+android.os.Bundle)
+
+public void sendStickyBroadcast(
+android.content.Intent)
+
+public void setTheme(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setWallpaper(
+android.graphics.Bitmap)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setWallpaper(
+java.io.InputStream)
+
+public void startActivity(
+android.content.Intent)
+
+public boolean startInstrumentation(
+android.content.ComponentName
+java.lang.String
+android.os.Bundle)
+
+public android.content.ComponentName startService(
+android.content.Intent)
+
+public boolean stopService(
+android.content.Intent)
+
+public void unbindService(
+android.content.ServiceConnection)
+
+public void unregisterReceiver(
+android.content.BroadcastReceiver)
+
+________________CLASS________________
+
+
+public class android.view.ContextThemeWrapper extends android.content.ContextWrapper
+
+----------------FIELDS----------------
+
+private android.content.Context mBase
+
+private android.view.LayoutInflater mInflater
+
+private android.content.res.Resources$Theme mTheme
+
+private int mThemeResource
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+android.content.Context
+int)
+
+private void initializeTheme()
+
+protected void attachBaseContext(
+android.content.Context)
+
+public java.lang.Object getSystemService(
+java.lang.String)
+
+public android.content.res.Resources$Theme getTheme()
+
+protected void onApplyThemeResource(
+android.content.res.Resources$Theme
+int
+boolean)
+
+public void setTheme(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/LayoutInflater; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Factory )
+public abstract interface class android.view.LayoutInflater$Factory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.view.View onCreateView(
+java.lang.String
+android.content.Context
+android.util.AttributeSet)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/Window; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Callback )
+public abstract interface class android.view.Window$Callback extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean dispatchKeyEvent(
+android.view.KeyEvent)
+
+public abstract boolean dispatchTouchEvent(
+android.view.MotionEvent)
+
+public abstract boolean dispatchTrackballEvent(
+android.view.MotionEvent)
+
+public abstract void onContentChanged()
+
+public abstract boolean onCreatePanelMenu(
+int
+android.view.Menu)
+
+public abstract android.view.View onCreatePanelView(
+int)
+
+public abstract boolean onMenuItemSelected(
+int
+android.view.MenuItem)
+
+public abstract boolean onMenuOpened(
+int
+android.view.Menu)
+
+public abstract void onPanelClosed(
+int
+android.view.Menu)
+
+public abstract boolean onPreparePanel(
+int
+android.view.View
+android.view.Menu)
+
+public abstract boolean onSearchRequested()
+
+public abstract void onWindowAttributesChanged(
+android.view.WindowManager$LayoutParams)
+
+public abstract void onWindowFocusChanged(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/KeyEvent; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Callback )
+public abstract interface class android.view.KeyEvent$Callback extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean onKeyDown(
+int
+android.view.KeyEvent)
+
+public abstract boolean onKeyMultiple(
+int
+int
+android.view.KeyEvent)
+
+public abstract boolean onKeyUp(
+int
+android.view.KeyEvent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/View; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnCreateContextMenuListener )
+public abstract interface class android.view.View$OnCreateContextMenuListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onCreateContextMenu(
+android.view.ContextMenu
+android.view.View
+android.view.ContextMenu$ContextMenuInfo)
+
+________________CLASS________________
+
+
+public abstract interface class android.content.ComponentCallbacks extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onConfigurationChanged(
+android.content.res.Configuration)
+
+public abstract void onLowMemory()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/Activity$ManagedCursor; )
+public class android.app.Activity extends android.view.ContextThemeWrapper implements android.view.LayoutInflater$Factory, android.view.Window$Callback, android.view.KeyEvent$Callback, android.view.View$OnCreateContextMenuListener, android.content.ComponentCallbacks
+
+----------------FIELDS----------------
+
+public static final int DEFAULT_KEYS_DIALER
+
+public static final int DEFAULT_KEYS_DISABLE
+
+public static final int DEFAULT_KEYS_SEARCH_GLOBAL
+
+public static final int DEFAULT_KEYS_SEARCH_LOCAL
+
+public static final int DEFAULT_KEYS_SHORTCUT
+
+protected static final int[] FOCUSED_STATE_SET
+
+public static final int RESULT_CANCELED
+
+public static final int RESULT_FIRST_USER
+
+public static final int RESULT_OK
+
+private static final java.lang.String SAVED_DIALOGS_TAG
+
+private static final java.lang.String SAVED_DIALOG_IDS_KEY
+
+private static final java.lang.String SAVED_DIALOG_KEY_PREFIX
+
+private static final java.lang.String SAVED_SEARCH_DIALOG_KEY
+
+private static final java.lang.String TAG
+
+private static final java.lang.String WINDOW_HIERARCHY_TAG
+
+private static long sInstanceCount
+
+ android.content.pm.ActivityInfo mActivityInfo
+
+private android.app.Application mApplication
+
+ boolean mCalled
+
+private android.content.ComponentName mComponent
+
+ int mConfigChangeFlags
+
+ android.content.res.Configuration mCurrentConfig
+
+ android.view.View mDecor
+
+private int mDefaultKeyMode
+
+private android.text.SpannableStringBuilder mDefaultKeySsb
+
+ java.lang.String mEmbeddedID
+
+ boolean mFinished
+
+private final android.os.Handler mHandler
+
+private android.app.Instrumentation mInstrumentation
+
+private android.content.Intent mIntent
+
+private java.lang.Object mLastNonConfigurationInstance
+
+ android.app.ActivityThread mMainThread
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/app/Activity$ManagedCursor;>; )
+private final java.util.ArrayList mManagedCursors
+@dalvik.annotation.Signature (value =Landroid/util/SparseArray<Landroid/app/Dialog;>; )
+private android.util.SparseArray mManagedDialogs
+
+ android.app.Activity mParent
+
+ int mResultCode
+
+ android.content.Intent mResultData
+
+private boolean mResumed
+
+ boolean mStartedActivity
+
+private boolean mStopped
+
+private java.lang.CharSequence mTitle
+
+private int mTitleColor
+
+private boolean mTitleReady
+
+private android.os.IBinder mToken
+
+private java.lang.Thread mUiThread
+
+private android.view.Window mWindow
+
+private android.view.WindowManager mWindowManager
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static long getInstanceCount()
+
+private java.lang.IllegalArgumentException missingDialog(
+int)
+
+private void restoreManagedDialogs(
+android.os.Bundle)
+
+private void saveManagedDialogs(
+android.os.Bundle)
+
+private java.lang.String savedDialogKeyFor(
+int)
+
+public void addContentView(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+final void attach(
+android.content.Context
+android.app.ActivityThread
+android.app.Instrumentation
+android.os.IBinder
+android.app.Application
+android.content.Intent
+android.content.pm.ActivityInfo
+java.lang.CharSequence
+android.app.Activity
+java.lang.String
+java.lang.Object
+android.content.res.Configuration)
+
+public void closeOptionsMenu()
+
+public android.app.PendingIntent createPendingResult(
+int
+android.content.Intent
+int)
+
+public final void dismissDialog(
+int)
+
+ void dispatchActivityResult(
+java.lang.String
+int
+int
+android.content.Intent)
+
+public boolean dispatchKeyEvent(
+android.view.KeyEvent)
+
+public boolean dispatchTouchEvent(
+android.view.MotionEvent)
+
+public boolean dispatchTrackballEvent(
+android.view.MotionEvent)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public android.view.View findViewById(
+int)
+
+public void finish()
+
+public void finishActivity(
+int)
+
+public void finishActivityFromChild(
+android.app.Activity
+int)
+
+public void finishFromChild(
+android.app.Activity)
+
+final android.os.IBinder getActivityToken()
+
+public final android.app.Application getApplication()
+
+public android.content.ComponentName getCallingActivity()
+
+public java.lang.String getCallingPackage()
+
+public int getChangingConfigurations()
+
+public android.content.ComponentName getComponentName()
+
+public android.view.View getCurrentFocus()
+
+public android.content.Intent getIntent()
+
+public java.lang.Object getLastNonConfigurationInstance()
+
+public android.view.LayoutInflater getLayoutInflater()
+
+public java.lang.String getLocalClassName()
+
+public android.view.MenuInflater getMenuInflater()
+
+public final android.app.Activity getParent()
+
+public android.content.SharedPreferences getPreferences(
+int)
+
+public int getRequestedOrientation()
+
+public java.lang.Object getSystemService(
+java.lang.String)
+
+public int getTaskId()
+
+public final java.lang.CharSequence getTitle()
+
+public final int getTitleColor()
+
+public final int getVolumeControlStream()
+
+public int getWallpaperDesiredMinimumHeight()
+
+public int getWallpaperDesiredMinimumWidth()
+
+public android.view.Window getWindow()
+
+public android.view.WindowManager getWindowManager()
+
+public final boolean isChild()
+
+public boolean isFinishing()
+
+final boolean isResumed()
+
+public boolean isTaskRoot()
+@java.lang.Deprecated
+public void managedCommitUpdates(
+android.database.Cursor)
+
+public final android.database.Cursor managedQuery(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String)
+
+public final android.database.Cursor managedQuery(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+public boolean moveTaskToBack(
+boolean)
+
+protected void onActivityResult(
+int
+int
+android.content.Intent)
+
+protected void onApplyThemeResource(
+android.content.res.Resources$Theme
+int
+boolean)
+
+protected void onChildTitleChanged(
+android.app.Activity
+java.lang.CharSequence)
+
+public void onConfigurationChanged(
+android.content.res.Configuration)
+
+public void onContentChanged()
+
+public boolean onContextItemSelected(
+android.view.MenuItem)
+
+public void onContextMenuClosed(
+android.view.Menu)
+
+protected void onCreate(
+android.os.Bundle)
+
+public void onCreateContextMenu(
+android.view.ContextMenu
+android.view.View
+android.view.ContextMenu$ContextMenuInfo)
+
+public java.lang.CharSequence onCreateDescription()
+
+protected android.app.Dialog onCreateDialog(
+int)
+
+public boolean onCreateOptionsMenu(
+android.view.Menu)
+
+public boolean onCreatePanelMenu(
+int
+android.view.Menu)
+
+public android.view.View onCreatePanelView(
+int)
+
+public boolean onCreateThumbnail(
+android.graphics.Bitmap
+android.graphics.Canvas)
+
+public android.view.View onCreateView(
+java.lang.String
+android.content.Context
+android.util.AttributeSet)
+
+protected void onDestroy()
+
+public boolean onKeyDown(
+int
+android.view.KeyEvent)
+
+public boolean onKeyMultiple(
+int
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+int
+android.view.KeyEvent)
+
+public void onLowMemory()
+
+public boolean onMenuItemSelected(
+int
+android.view.MenuItem)
+
+public boolean onMenuOpened(
+int
+android.view.Menu)
+
+protected void onNewIntent(
+android.content.Intent)
+
+public boolean onOptionsItemSelected(
+android.view.MenuItem)
+
+public void onOptionsMenuClosed(
+android.view.Menu)
+
+public void onPanelClosed(
+int
+android.view.Menu)
+
+protected void onPause()
+
+protected void onPostCreate(
+android.os.Bundle)
+
+protected void onPostResume()
+
+protected void onPrepareDialog(
+int
+android.app.Dialog)
+
+public boolean onPrepareOptionsMenu(
+android.view.Menu)
+
+public boolean onPreparePanel(
+int
+android.view.View
+android.view.Menu)
+
+protected void onRestart()
+
+protected void onRestoreInstanceState(
+android.os.Bundle)
+
+protected void onResume()
+
+public java.lang.Object onRetainNonConfigurationInstance()
+
+protected void onSaveInstanceState(
+android.os.Bundle)
+
+public boolean onSearchRequested()
+
+protected void onStart()
+
+protected void onStop()
+
+protected void onTitleChanged(
+java.lang.CharSequence
+int)
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+public boolean onTrackballEvent(
+android.view.MotionEvent)
+
+public void onWindowAttributesChanged(
+android.view.WindowManager$LayoutParams)
+
+public void onWindowFocusChanged(
+boolean)
+
+public void openContextMenu(
+android.view.View)
+
+public void openOptionsMenu()
+
+final void performRestart()
+
+final void performRestoreInstanceState(
+android.os.Bundle)
+
+final void performResume()
+
+final void performSaveInstanceState(
+android.os.Bundle)
+
+final void performStart()
+
+final void performStop()
+
+public void registerForContextMenu(
+android.view.View)
+
+public final void removeDialog(
+int)
+
+public final boolean requestWindowFeature(
+int)
+
+public final void runOnUiThread(
+java.lang.Runnable)
+
+public void setContentView(
+int)
+
+public void setContentView(
+android.view.View)
+
+public void setContentView(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+public final void setDefaultKeyMode(
+int)
+
+public final void setFeatureDrawable(
+int
+android.graphics.drawable.Drawable)
+
+public final void setFeatureDrawableAlpha(
+int
+int)
+
+public final void setFeatureDrawableResource(
+int
+int)
+
+public final void setFeatureDrawableUri(
+int
+android.net.Uri)
+
+public void setIntent(
+android.content.Intent)
+
+final void setParent(
+android.app.Activity)
+
+public void setPersistent(
+boolean)
+
+public final void setProgress(
+int)
+
+public final void setProgressBarIndeterminate(
+boolean)
+
+public final void setProgressBarIndeterminateVisibility(
+boolean)
+
+public final void setProgressBarVisibility(
+boolean)
+
+public void setRequestedOrientation(
+int)
+
+public final void setResult(
+int)
+
+public final void setResult(
+int
+android.content.Intent)
+
+public final void setSecondaryProgress(
+int)
+
+public void setTitle(
+int)
+
+public void setTitle(
+java.lang.CharSequence)
+
+public void setTitleColor(
+int)
+
+public final void setVolumeControlStream(
+int)
+
+public final void showDialog(
+int)
+
+public void startActivity(
+android.content.Intent)
+
+public void startActivityForResult(
+android.content.Intent
+int)
+
+public void startActivityFromChild(
+android.app.Activity
+android.content.Intent
+int)
+
+public boolean startActivityIfNeeded(
+android.content.Intent
+int)
+
+public void startManagingCursor(
+android.database.Cursor)
+
+public boolean startNextMatchingActivity(
+android.content.Intent)
+
+public void startSearch(
+java.lang.String
+boolean
+android.os.Bundle
+boolean)
+
+public void stopManagingCursor(
+android.database.Cursor)
+
+public void takeKeyEvents(
+boolean)
+
+public void unregisterForContextMenu(
+android.view.View)
+
+________________CLASS________________
+
+
+public class android.app.ActivityGroup extends android.app.Activity
+
+----------------FIELDS----------------
+
+private static final java.lang.String STATES_KEY
+
+protected android.app.LocalActivityManager mLocalActivityManager
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+boolean)
+
+ void dispatchActivityResult(
+java.lang.String
+int
+int
+android.content.Intent)
+
+public android.app.Activity getCurrentActivity()
+
+public final android.app.LocalActivityManager getLocalActivityManager()
+
+protected void onCreate(
+android.os.Bundle)
+
+protected void onDestroy()
+
+protected void onPause()
+
+protected void onResume()
+
+protected void onSaveInstanceState(
+android.os.Bundle)
+
+protected void onStop()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityManager; )
+ class android.app.ActivityManager$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Creator )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/Parcelable; )
+public abstract interface class android.os.Parcelable$Creator extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Landroid/os/Parcel;)TT; )
+public abstract java.lang.Object createFromParcel(
+android.os.Parcel)
+@dalvik.annotation.Signature (value =(I)[TT; )
+public abstract java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityManager$MemoryInfo; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/app/ActivityManager$MemoryInfo;>; )
+final class android.app.ActivityManager$MemoryInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.app.ActivityManager$MemoryInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.app.ActivityManager$MemoryInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/Parcelable$Creator; )
+public abstract interface class android.os.Parcelable extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CONTENTS_FILE_DESCRIPTOR
+
+public static final int PARCELABLE_WRITE_RETURN_VALUE
+----------------METHODS----------------
+
+public abstract int describeContents()
+
+public abstract void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityManager; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =MemoryInfo )
+public class android.app.ActivityManager$MemoryInfo extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/app/ActivityManager$MemoryInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public long availMem
+
+public boolean lowMemory
+
+public long threshold
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.app.ActivityManager$1)
+
+public int describeContents()
+
+public void readFromParcel(
+android.os.Parcel)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityManager$ProcessErrorStateInfo; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/app/ActivityManager$ProcessErrorStateInfo;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.app.ActivityManager$ProcessErrorStateInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.app.ActivityManager$ProcessErrorStateInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.app.ActivityManager$ProcessErrorStateInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =ProcessErrorStateInfo )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityManager; )
+public class android.app.ActivityManager$ProcessErrorStateInfo extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+
+public static final int CRASHED
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/app/ActivityManager$ProcessErrorStateInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final int NOT_RESPONDING
+
+public static final int NO_ERROR
+
+public int condition
+
+public byte[] crashData
+
+public java.lang.String longMsg
+
+public int pid
+
+public java.lang.String processName
+
+public java.lang.String shortMsg
+
+public java.lang.String tag
+
+public int uid
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.app.ActivityManager$1)
+
+public int describeContents()
+
+public void readFromParcel(
+android.os.Parcel)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityManager$RecentTaskInfo; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/app/ActivityManager$RecentTaskInfo;>; )
+final class android.app.ActivityManager$RecentTaskInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.app.ActivityManager$RecentTaskInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.app.ActivityManager$RecentTaskInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =RecentTaskInfo )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityManager; )
+public class android.app.ActivityManager$RecentTaskInfo extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/app/ActivityManager$RecentTaskInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public android.content.Intent baseIntent
+
+public int id
+
+public android.content.ComponentName origActivity
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.app.ActivityManager$1)
+
+public int describeContents()
+
+public void readFromParcel(
+android.os.Parcel)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/app/ActivityManager$RunningServiceInfo;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityManager$RunningServiceInfo; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.app.ActivityManager$RunningServiceInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.app.ActivityManager$RunningServiceInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.app.ActivityManager$RunningServiceInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityManager; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =RunningServiceInfo )
+public class android.app.ActivityManager$RunningServiceInfo extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/app/ActivityManager$RunningServiceInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public long activeSince
+
+public int clientCount
+
+public int crashCount
+
+public boolean foreground
+
+public long lastActivityTime
+
+public int pid
+
+public java.lang.String process
+
+public long restarting
+
+public android.content.ComponentName service
+
+public boolean started
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.app.ActivityManager$1)
+
+public int describeContents()
+
+public void readFromParcel(
+android.os.Parcel)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityManager$RunningTaskInfo; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/app/ActivityManager$RunningTaskInfo;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.app.ActivityManager$RunningTaskInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.app.ActivityManager$RunningTaskInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.app.ActivityManager$RunningTaskInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =RunningTaskInfo )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityManager; )
+public class android.app.ActivityManager$RunningTaskInfo extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/app/ActivityManager$RunningTaskInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public android.content.ComponentName baseActivity
+
+public java.lang.CharSequence description
+
+public int id
+
+public int numActivities
+
+public int numRunning
+
+public android.graphics.Bitmap thumbnail
+
+public android.content.ComponentName topActivity
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.app.ActivityManager$1)
+
+public int describeContents()
+
+public void readFromParcel(
+android.os.Parcel)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/ActivityManager$1;Landroid/app/ActivityManager$ProcessErrorStateInfo;Landroid/app/ActivityManager$MemoryInfo;Landroid/app/ActivityManager$RunningServiceInfo;Landroid/app/ActivityManager$RunningTaskInfo;Landroid/app/ActivityManager$RecentTaskInfo; )
+public class android.app.ActivityManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static boolean DEBUG
+
+public static final int RECENT_WITH_EXCLUDED
+
+private static java.lang.String TAG
+
+private static boolean localLOGV
+
+private final android.content.Context mContext
+
+private final android.os.Handler mHandler
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+android.content.Context
+android.os.Handler)
+
+public boolean clearApplicationUserData(
+java.lang.String
+android.content.pm.IPackageDataObserver)
+
+public void getMemoryInfo(
+android.app.ActivityManager$MemoryInfo)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Landroid/app/ActivityManager$ProcessErrorStateInfo;>; )
+public java.util.List getProcessesInErrorState()
+@dalvik.annotation.Signature (value =(II)Ljava/util/List<Landroid/app/ActivityManager$RecentTaskInfo;>; )
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+public java.util.List getRecentTasks(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/app/ActivityManager$RunningServiceInfo;>; )
+public java.util.List getRunningServices(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/app/ActivityManager$RunningTaskInfo;>; )
+public java.util.List getRunningTasks(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/IActivityManager$1;Landroid/app/IActivityManager$ContentProviderHolder; )
+public abstract interface class android.app.IActivityManager extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+
+public static final int ACTIVITY_DESTROYED_TRANSACTION
+
+public static final int ACTIVITY_IDLE_TRANSACTION
+
+public static final int ACTIVITY_PAUSED_TRANSACTION
+
+public static final int ACTIVITY_STOPPED_TRANSACTION
+
+public static final int ATTACH_APPLICATION_TRANSACTION
+
+public static final int BIND_SERVICE_TRANSACTION
+
+public static final int BROADCAST_INTENT_TRANSACTION
+
+public static final int BROADCAST_STICKY_CANT_HAVE_PERMISSION
+
+public static final int BROADCAST_SUCCESS
+
+public static final int CANCEL_INTENT_SENDER_TRANSACTION
+
+public static final int CHECK_PERMISSION_TRANSACTION
+
+public static final int CHECK_URI_PERMISSION_TRANSACTION
+
+public static final int CLEAR_APP_DATA_TRANSACTION
+
+public static final int ENTER_SAFE_MODE_TRANSACTION
+
+public static final int FINISH_ACTIVITY_TRANSACTION
+
+public static final int FINISH_INSTRUMENTATION_TRANSACTION
+
+public static final int FINISH_OTHER_INSTANCES_TRANSACTION
+
+public static final int FINISH_RECEIVER_TRANSACTION
+
+public static final int FINISH_SUB_ACTIVITY_TRANSACTION
+
+public static final int GET_ACTIVITY_CLASS_FOR_TOKEN_TRANSACTION
+
+public static final int GET_CALLING_ACTIVITY_TRANSACTION
+
+public static final int GET_CALLING_PACKAGE_TRANSACTION
+
+public static final int GET_CONFIGURATION_TRANSACTION
+
+public static final int GET_CONTENT_PROVIDER_TRANSACTION
+
+public static final int GET_INTENT_SENDER_TRANSACTION
+
+public static final int GET_MEMORY_INFO_TRANSACTION
+
+public static final int GET_PACKAGE_FOR_INTENT_SENDER_TRANSACTION
+
+public static final int GET_PACKAGE_FOR_TOKEN_TRANSACTION
+
+public static final int GET_PROCESSES_IN_ERROR_STATE_TRANSACTION
+
+public static final int GET_PROCESS_LIMIT_TRANSACTION
+
+public static final int GET_RECENT_TASKS_TRANSACTION
+
+public static final int GET_REQUESTED_ORIENTATION_TRANSACTION
+
+public static final int GET_SERVICES_TRANSACTION
+
+public static final int GET_TASKS_TRANSACTION
+
+public static final int GET_TASK_FOR_ACTIVITY_TRANSACTION
+
+public static final int GOING_TO_SLEEP_TRANSACTION
+
+public static final int GRANT_URI_PERMISSION_TRANSACTION
+
+public static final int HANDLE_APPLICATION_ERROR_TRANSACTION
+
+public static final int INTENT_SENDER_ACTIVITY
+
+public static final int INTENT_SENDER_ACTIVITY_RESULT
+
+public static final int INTENT_SENDER_BROADCAST
+
+public static final int INTENT_SENDER_SERVICE
+
+public static final int KILL_PIDS_FOR_MEMORY_TRANSACTION
+
+public static final int MOVE_ACTIVITY_TASK_TO_BACK_TRANSACTION
+
+public static final int MOVE_TASK_BACKWARDS_TRANSACTION
+
+public static final int MOVE_TASK_TO_BACK_TRANSACTION
+
+public static final int MOVE_TASK_TO_FRONT_TRANSACTION
+
+public static final int NOTE_WAKEUP_ALARM_TRANSACTION
+
+public static final int OPEN_CONTENT_URI_TRANSACTION
+
+public static final int PUBLISH_CONTENT_PROVIDERS_TRANSACTION
+
+public static final int PUBLISH_SERVICE_TRANSACTION
+
+public static final int REGISTER_RECEIVER_TRANSACTION
+
+public static final int REMOVE_CONTENT_PROVIDER_TRANSACTION
+
+public static final int REPORT_PSS_TRANSACTION
+
+public static final int REPORT_THUMBNAIL_TRANSACTION
+
+public static final int RESTART_PACKAGE_TRANSACTION
+
+public static final int REVOKE_URI_PERMISSION_TRANSACTION
+
+public static final int SERVICE_DONE_EXECUTING_TRANSACTION
+
+public static final int SET_ACTIVITY_WATCHER_TRANSACTION
+
+public static final int SET_ALWAYS_FINISH_TRANSACTION
+
+public static final int SET_DEBUG_APP_TRANSACTION
+
+public static final int SET_PERSISTENT_TRANSACTION
+
+public static final int SET_PROCESS_FOREGROUND_TRANSACTION
+
+public static final int SET_PROCESS_LIMIT_TRANSACTION
+
+public static final int SET_REQUESTED_ORIENTATION_TRANSACTION
+
+public static final int SET_SERVICE_FOREGROUND_TRANSACTION
+
+public static final int SHOW_WAITING_FOR_DEBUGGER_TRANSACTION
+
+public static final int SIGNAL_PERSISTENT_PROCESSES_TRANSACTION
+
+public static final int START_ACTIVITY_TRANSACTION
+
+public static final int START_CLASS_NOT_FOUND
+
+public static final int START_DELIVERED_TO_TOP
+
+public static final int START_FORWARD_AND_REQUEST_CONFLICT
+
+public static final int START_INSTRUMENTATION_TRANSACTION
+
+public static final int START_INTENT_NOT_RESOLVED
+
+public static final int START_NEXT_MATCHING_ACTIVITY_TRANSACTION
+
+public static final int START_PERMISSION_DENIED
+
+public static final int START_RETURN_INTENT_TO_CALLER
+
+public static final int START_RUNNING_TRANSACTION
+
+public static final int START_SERVICE_TRANSACTION
+
+public static final int START_SUCCESS
+
+public static final int START_TASK_TO_FRONT
+
+public static final int STOP_SERVICE_TOKEN_TRANSACTION
+
+public static final int STOP_SERVICE_TRANSACTION
+
+public static final int SYSTEM_READY_TRANSACTION
+
+public static final int UNBIND_FINISHED_TRANSACTION
+
+public static final int UNBIND_SERVICE_TRANSACTION
+
+public static final int UNBROADCAST_INTENT_TRANSACTION
+
+public static final int UNHANDLED_BACK_TRANSACTION
+
+public static final int UNREGISTER_RECEIVER_TRANSACTION
+
+public static final int UPDATE_CONFIGURATION_TRANSACTION
+
+public static final int WAKING_UP_TRANSACTION
+
+public static final java.lang.String descriptor
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void activityDestroyed(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void activityIdle(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void activityPaused(
+android.os.IBinder
+android.os.Bundle)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void activityStopped(
+android.os.IBinder
+android.graphics.Bitmap
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void attachApplication(
+android.app.IApplicationThread)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int bindService(
+android.app.IApplicationThread
+android.os.IBinder
+android.content.Intent
+java.lang.String
+android.app.IServiceConnection
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int broadcastIntent(
+android.app.IApplicationThread
+android.content.Intent
+java.lang.String
+android.app.IIntentReceiver
+int
+java.lang.String
+android.os.Bundle
+java.lang.String
+boolean
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void cancelIntentSender(
+android.app.IIntentSender)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int checkPermission(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int checkUriPermission(
+android.net.Uri
+int
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean clearApplicationUserData(
+java.lang.String
+android.content.pm.IPackageDataObserver)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void enterSafeMode()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean finishActivity(
+android.os.IBinder
+int
+android.content.Intent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void finishInstrumentation(
+android.app.IApplicationThread
+int
+android.os.Bundle)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void finishOtherInstances(
+android.os.IBinder
+android.content.ComponentName)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void finishReceiver(
+android.os.IBinder
+int
+java.lang.String
+android.os.Bundle
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void finishSubActivity(
+android.os.IBinder
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.ComponentName getActivityClassForToken(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.ComponentName getCallingActivity(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getCallingPackage(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.res.Configuration getConfiguration()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.app.IActivityManager$ContentProviderHolder getContentProvider(
+android.app.IApplicationThread
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.app.IIntentSender getIntentSender(
+int
+java.lang.String
+android.os.IBinder
+java.lang.String
+int
+android.content.Intent
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void getMemoryInfo(
+android.app.ActivityManager$MemoryInfo)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getPackageForIntentSender(
+android.app.IIntentSender)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getPackageForToken(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getProcessLimit()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Landroid/app/ActivityManager$ProcessErrorStateInfo;>; )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.util.List getProcessesInErrorState()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(II)Ljava/util/List<Landroid/app/ActivityManager$RecentTaskInfo;>; )
+public abstract java.util.List getRecentTasks(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getRequestedOrientation(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.util.List getServices(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getTaskForActivity(
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.util.List getTasks(
+int
+int
+android.app.IThumbnailReceiver)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void goingToSleep()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void grantUriPermission(
+android.app.IApplicationThread
+java.lang.String
+android.net.Uri
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int handleApplicationError(
+android.os.IBinder
+int
+java.lang.String
+java.lang.String
+java.lang.String
+byte[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean killPidsForMemory(
+int[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean moveActivityTaskToBack(
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void moveTaskBackwards(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void moveTaskToBack(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void moveTaskToFront(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void noteWakeupAlarm(
+android.app.IIntentSender)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.os.ParcelFileDescriptor openContentUri(
+android.net.Uri)
+@dalvik.annotation.Signature (value =(Landroid/app/IApplicationThread;Ljava/util/List<Landroid/app/IActivityManager$ContentProviderHolder;>;)V )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void publishContentProviders(
+android.app.IApplicationThread
+java.util.List)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void publishService(
+android.os.IBinder
+android.content.Intent
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.Intent registerReceiver(
+android.app.IApplicationThread
+android.app.IIntentReceiver
+android.content.IntentFilter
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void removeContentProvider(
+android.app.IApplicationThread
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void reportPss(
+android.app.IApplicationThread
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void reportThumbnail(
+android.os.IBinder
+android.graphics.Bitmap
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void restartPackage(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void revokeUriPermission(
+android.app.IApplicationThread
+android.net.Uri
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void serviceDoneExecuting(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setActivityWatcher(
+android.app.IActivityWatcher)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setAlwaysFinish(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setDebugApp(
+java.lang.String
+boolean
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setPersistent(
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setProcessForeground(
+android.os.IBinder
+int
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setProcessLimit(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setRequestedOrientation(
+android.os.IBinder
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setServiceForeground(
+android.content.ComponentName
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void showWaitingForDebugger(
+android.app.IApplicationThread
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void signalPersistentProcesses(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int startActivity(
+android.app.IApplicationThread
+android.content.Intent
+java.lang.String
+android.net.Uri[]
+int
+android.os.IBinder
+java.lang.String
+int
+boolean
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean startInstrumentation(
+android.content.ComponentName
+java.lang.String
+int
+android.os.Bundle
+android.app.IInstrumentationWatcher)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean startNextMatchingActivity(
+android.os.IBinder
+android.content.Intent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void startRunning(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.ComponentName startService(
+android.app.IApplicationThread
+android.content.Intent
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int stopService(
+android.app.IApplicationThread
+android.content.Intent
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean stopServiceToken(
+android.content.ComponentName
+android.os.IBinder
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void systemReady()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void unbindFinished(
+android.os.IBinder
+android.content.Intent
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean unbindService(
+android.app.IServiceConnection)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void unbroadcastIntent(
+android.app.IApplicationThread
+android.content.Intent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void unhandledBack()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void unregisterReceiver(
+android.app.IIntentReceiver)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void updateConfiguration(
+android.content.res.Configuration)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void wakingUp()
+
+________________CLASS________________
+
+
+public abstract class android.app.ActivityManagerNative extends android.os.Binder implements android.app.IActivityManager
+
+----------------FIELDS----------------
+
+private static android.app.IActivityManager gDefault
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.app.IActivityManager asInterface(
+android.os.IBinder)
+
+public static void broadcastStickyIntent(
+android.content.Intent
+java.lang.String)
+
+public static android.app.IActivityManager getDefault()
+
+public static void noteWakeupAlarm(
+android.app.PendingIntent)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+ class android.app.ActivityManagerProxy extends java.lang.Object implements android.app.IActivityManager
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+public void <init>(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void activityDestroyed(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void activityIdle(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void activityPaused(
+android.os.IBinder
+android.os.Bundle)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void activityStopped(
+android.os.IBinder
+android.graphics.Bitmap
+java.lang.CharSequence)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void attachApplication(
+android.app.IApplicationThread)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int bindService(
+android.app.IApplicationThread
+android.os.IBinder
+android.content.Intent
+java.lang.String
+android.app.IServiceConnection
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int broadcastIntent(
+android.app.IApplicationThread
+android.content.Intent
+java.lang.String
+android.app.IIntentReceiver
+int
+java.lang.String
+android.os.Bundle
+java.lang.String
+boolean
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void cancelIntentSender(
+android.app.IIntentSender)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int checkPermission(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int checkUriPermission(
+android.net.Uri
+int
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean clearApplicationUserData(
+java.lang.String
+android.content.pm.IPackageDataObserver)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void enterSafeMode()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean finishActivity(
+android.os.IBinder
+int
+android.content.Intent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void finishInstrumentation(
+android.app.IApplicationThread
+int
+android.os.Bundle)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void finishOtherInstances(
+android.os.IBinder
+android.content.ComponentName)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void finishReceiver(
+android.os.IBinder
+int
+java.lang.String
+android.os.Bundle
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void finishSubActivity(
+android.os.IBinder
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.ComponentName getActivityClassForToken(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.ComponentName getCallingActivity(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getCallingPackage(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.res.Configuration getConfiguration()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.app.IActivityManager$ContentProviderHolder getContentProvider(
+android.app.IApplicationThread
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.app.IIntentSender getIntentSender(
+int
+java.lang.String
+android.os.IBinder
+java.lang.String
+int
+android.content.Intent
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void getMemoryInfo(
+android.app.ActivityManager$MemoryInfo)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getPackageForIntentSender(
+android.app.IIntentSender)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getPackageForToken(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getProcessLimit()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Landroid/app/ActivityManager$ProcessErrorStateInfo;>; )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.util.List getProcessesInErrorState()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(II)Ljava/util/List<Landroid/app/ActivityManager$RecentTaskInfo;>; )
+public java.util.List getRecentTasks(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getRequestedOrientation(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.util.List getServices(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getTaskForActivity(
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.util.List getTasks(
+int
+int
+android.app.IThumbnailReceiver)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void goingToSleep()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void grantUriPermission(
+android.app.IApplicationThread
+java.lang.String
+android.net.Uri
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int handleApplicationError(
+android.os.IBinder
+int
+java.lang.String
+java.lang.String
+java.lang.String
+byte[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean killPidsForMemory(
+int[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean moveActivityTaskToBack(
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void moveTaskBackwards(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void moveTaskToBack(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void moveTaskToFront(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void noteWakeupAlarm(
+android.app.IIntentSender)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.os.ParcelFileDescriptor openContentUri(
+android.net.Uri)
+@dalvik.annotation.Signature (value =(Landroid/app/IApplicationThread;Ljava/util/List<Landroid/app/IActivityManager$ContentProviderHolder;>;)V )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void publishContentProviders(
+android.app.IApplicationThread
+java.util.List)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void publishService(
+android.os.IBinder
+android.content.Intent
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.Intent registerReceiver(
+android.app.IApplicationThread
+android.app.IIntentReceiver
+android.content.IntentFilter
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void removeContentProvider(
+android.app.IApplicationThread
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void reportPss(
+android.app.IApplicationThread
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void reportThumbnail(
+android.os.IBinder
+android.graphics.Bitmap
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void restartPackage(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void revokeUriPermission(
+android.app.IApplicationThread
+android.net.Uri
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void serviceDoneExecuting(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setActivityWatcher(
+android.app.IActivityWatcher)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setAlwaysFinish(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setDebugApp(
+java.lang.String
+boolean
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setPersistent(
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setProcessForeground(
+android.os.IBinder
+int
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setProcessLimit(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setRequestedOrientation(
+android.os.IBinder
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setServiceForeground(
+android.content.ComponentName
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void showWaitingForDebugger(
+android.app.IApplicationThread
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void signalPersistentProcesses(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int startActivity(
+android.app.IApplicationThread
+android.content.Intent
+java.lang.String
+android.net.Uri[]
+int
+android.os.IBinder
+java.lang.String
+int
+boolean
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean startInstrumentation(
+android.content.ComponentName
+java.lang.String
+int
+android.os.Bundle
+android.app.IInstrumentationWatcher)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean startNextMatchingActivity(
+android.os.IBinder
+android.content.Intent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void startRunning(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.ComponentName startService(
+android.app.IApplicationThread
+android.content.Intent
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int stopService(
+android.app.IApplicationThread
+android.content.Intent
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean stopServiceToken(
+android.content.ComponentName
+android.os.IBinder
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void systemReady()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void unbindFinished(
+android.os.IBinder
+android.content.Intent
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean unbindService(
+android.app.IServiceConnection)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void unbroadcastIntent(
+android.app.IApplicationThread
+android.content.Intent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void unhandledBack()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void unregisterReceiver(
+android.app.IIntentReceiver)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void updateConfiguration(
+android.content.res.Configuration)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void wakingUp()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.app.ActivityThread$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =ActivityRecord )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+final class android.app.ActivityThread$ActivityRecord extends java.lang.Object
+
+----------------FIELDS----------------
+
+ android.app.Activity activity
+
+ android.content.pm.ActivityInfo activityInfo
+
+ java.lang.String embeddedID
+
+ boolean hideForNow
+
+ android.content.Intent intent
+
+ java.lang.Object lastNonConfigurationInstance
+
+ android.content.res.Configuration newConfig
+
+ android.app.ActivityThread$ActivityRecord nextIdle
+
+ android.app.ActivityThread$PackageInfo packageInfo
+
+ android.app.Activity parent
+
+ boolean paused
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/content/Intent;>; )
+ java.util.List pendingIntents
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/app/ResultInfo;>; )
+ java.util.List pendingResults
+
+ boolean startsNotResumed
+
+ android.os.Bundle state
+
+ boolean stopped
+
+ android.os.IBinder token
+
+ android.view.Window window
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =AppBindData )
+final class android.app.ActivityThread$AppBindData extends java.lang.Object
+
+----------------FIELDS----------------
+
+ android.content.pm.ApplicationInfo appInfo
+
+ android.content.res.Configuration config
+
+ int debugMode
+
+ boolean handlingProfiling
+
+ android.app.ActivityThread$PackageInfo info
+
+ android.os.Bundle instrumentationArgs
+
+ android.content.ComponentName instrumentationName
+
+ android.app.IInstrumentationWatcher instrumentationWatcher
+
+ java.lang.String processName
+
+ java.lang.String profileFile
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/content/pm/ProviderInfo;>; )
+ java.util.List providers
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.app.ActivityThread$1)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class android.app.IApplicationThread extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+
+public static final int BIND_APPLICATION_TRANSACTION
+
+public static final int DEBUG_OFF
+
+public static final int DEBUG_ON
+
+public static final int DEBUG_WAIT
+
+public static final int DUMP_SERVICE_TRANSACTION
+
+public static final int PROCESS_IN_BACKGROUND_TRANSACTION
+
+public static final int REQUEST_PSS_TRANSACTION
+
+public static final int REQUEST_THUMBNAIL_TRANSACTION
+
+public static final int SCHEDULE_ACTIVITY_CONFIGURATION_CHANGED_TRANSACTION
+
+public static final int SCHEDULE_BIND_SERVICE_TRANSACTION
+
+public static final int SCHEDULE_CONFIGURATION_CHANGED_TRANSACTION
+
+public static final int SCHEDULE_CREATE_SERVICE_TRANSACTION
+
+public static final int SCHEDULE_EXIT_TRANSACTION
+
+public static final int SCHEDULE_FINISH_ACTIVITY_TRANSACTION
+
+public static final int SCHEDULE_LAUNCH_ACTIVITY_TRANSACTION
+
+public static final int SCHEDULE_LOW_MEMORY_TRANSACTION
+
+public static final int SCHEDULE_NEW_INTENT_TRANSACTION
+
+public static final int SCHEDULE_PAUSE_ACTIVITY_TRANSACTION
+
+public static final int SCHEDULE_RECEIVER_TRANSACTION
+
+public static final int SCHEDULE_REGISTERED_RECEIVER_TRANSACTION
+
+public static final int SCHEDULE_RELAUNCH_ACTIVITY_TRANSACTION
+
+public static final int SCHEDULE_RESUME_ACTIVITY_TRANSACTION
+
+public static final int SCHEDULE_SEND_RESULT_TRANSACTION
+
+public static final int SCHEDULE_SERVICE_ARGS_TRANSACTION
+
+public static final int SCHEDULE_STOP_ACTIVITY_TRANSACTION
+
+public static final int SCHEDULE_STOP_SERVICE_TRANSACTION
+
+public static final int SCHEDULE_UNBIND_SERVICE_TRANSACTION
+
+public static final int SCHEDULE_WINDOW_VISIBILITY_TRANSACTION
+
+public static final int UPDATE_TIME_ZONE_TRANSACTION
+
+public static final java.lang.String descriptor
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/util/List<Landroid/content/pm/ProviderInfo;>;Landroid/content/ComponentName;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/IInstrumentationWatcher;ILandroid/content/res/Configuration;Ljava/util/Map<Ljava/lang/String;Landroid/os/IBinder;>;)V )
+public abstract void bindApplication(
+java.lang.String
+android.content.pm.ApplicationInfo
+java.util.List
+android.content.ComponentName
+java.lang.String
+android.os.Bundle
+android.app.IInstrumentationWatcher
+int
+android.content.res.Configuration
+java.util.Map)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void dumpService(
+java.io.FileDescriptor
+android.os.IBinder
+java.lang.String[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void processInBackground()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void requestPss()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void requestThumbnail(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scheduleActivityConfigurationChanged(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scheduleBindService(
+android.os.IBinder
+android.content.Intent
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scheduleConfigurationChanged(
+android.content.res.Configuration)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scheduleCreateService(
+android.os.IBinder
+android.content.pm.ServiceInfo)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scheduleDestroyActivity(
+android.os.IBinder
+boolean
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scheduleExit()
+@dalvik.annotation.Signature (value =(Landroid/content/Intent;Landroid/os/IBinder;Landroid/content/pm/ActivityInfo;Landroid/os/Bundle;Ljava/util/List<Landroid/app/ResultInfo;>;Ljava/util/List<Landroid/content/Intent;>;Z)V )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scheduleLaunchActivity(
+android.content.Intent
+android.os.IBinder
+android.content.pm.ActivityInfo
+android.os.Bundle
+java.util.List
+java.util.List
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scheduleLowMemory()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/content/Intent;>;Landroid/os/IBinder;)V )
+public abstract void scheduleNewIntent(
+java.util.List
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void schedulePauseActivity(
+android.os.IBinder
+boolean
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scheduleReceiver(
+android.content.Intent
+android.content.pm.ActivityInfo
+int
+java.lang.String
+android.os.Bundle
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scheduleRegisteredReceiver(
+android.app.IIntentReceiver
+android.content.Intent
+int
+java.lang.String
+android.os.Bundle
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Landroid/os/IBinder;Ljava/util/List<Landroid/app/ResultInfo;>;Ljava/util/List<Landroid/content/Intent;>;IZ)V )
+public abstract void scheduleRelaunchActivity(
+android.os.IBinder
+java.util.List
+java.util.List
+int
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scheduleResumeActivity(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Landroid/os/IBinder;Ljava/util/List<Landroid/app/ResultInfo;>;)V )
+public abstract void scheduleSendResult(
+android.os.IBinder
+java.util.List)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scheduleServiceArgs(
+android.os.IBinder
+int
+android.content.Intent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scheduleStopActivity(
+android.os.IBinder
+boolean
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scheduleStopService(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scheduleUnbindService(
+android.os.IBinder
+android.content.Intent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scheduleWindowVisibility(
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void updateTimeZone()
+
+________________CLASS________________
+
+
+public abstract class android.app.ApplicationThreadNative extends android.os.Binder implements android.app.IApplicationThread
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.app.IApplicationThread asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+@dalvik.annotation.InnerClass (accessFlags =18 name =ApplicationThread )
+final class android.app.ActivityThread$ApplicationThread extends android.app.ApplicationThreadNative
+
+----------------FIELDS----------------
+
+private static final java.lang.String HEAP_COLUMN
+
+private static final java.lang.String ONE_COUNT_COLUMN
+
+private static final java.lang.String TWO_COUNT_COLUMNS
+
+final android.app.ActivityThread this$0
+----------------METHODS----------------
+
+private void <init>(
+android.app.ActivityThread)
+
+ void <init>(
+android.app.ActivityThread
+android.app.ActivityThread$1)
+
+private transient void printRow(
+java.io.PrintWriter
+java.lang.String
+java.lang.Object[])
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/util/List<Landroid/content/pm/ProviderInfo;>;Landroid/content/ComponentName;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/IInstrumentationWatcher;ILandroid/content/res/Configuration;Ljava/util/Map<Ljava/lang/String;Landroid/os/IBinder;>;)V )
+public final void bindApplication(
+java.lang.String
+android.content.pm.ApplicationInfo
+java.util.List
+android.content.ComponentName
+java.lang.String
+android.os.Bundle
+android.app.IInstrumentationWatcher
+int
+android.content.res.Configuration
+java.util.Map)
+
+protected void dump(
+java.io.FileDescriptor
+java.io.PrintWriter
+java.lang.String[])
+
+public void dumpService(
+java.io.FileDescriptor
+android.os.IBinder
+java.lang.String[])
+
+public void processInBackground()
+
+public void requestPss()
+
+public void requestThumbnail(
+android.os.IBinder)
+
+public void scheduleActivityConfigurationChanged(
+android.os.IBinder)
+
+public final void scheduleBindService(
+android.os.IBinder
+android.content.Intent
+boolean)
+
+public void scheduleConfigurationChanged(
+android.content.res.Configuration)
+
+public final void scheduleCreateService(
+android.os.IBinder
+android.content.pm.ServiceInfo)
+
+public final void scheduleDestroyActivity(
+android.os.IBinder
+boolean
+int)
+
+public final void scheduleExit()
+@dalvik.annotation.Signature (value =(Landroid/content/Intent;Landroid/os/IBinder;Landroid/content/pm/ActivityInfo;Landroid/os/Bundle;Ljava/util/List<Landroid/app/ResultInfo;>;Ljava/util/List<Landroid/content/Intent;>;Z)V )
+public final void scheduleLaunchActivity(
+android.content.Intent
+android.os.IBinder
+android.content.pm.ActivityInfo
+android.os.Bundle
+java.util.List
+java.util.List
+boolean)
+
+public void scheduleLowMemory()
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/content/Intent;>;Landroid/os/IBinder;)V )
+public final void scheduleNewIntent(
+java.util.List
+android.os.IBinder)
+
+public final void schedulePauseActivity(
+android.os.IBinder
+boolean
+int)
+
+public final void scheduleReceiver(
+android.content.Intent
+android.content.pm.ActivityInfo
+int
+java.lang.String
+android.os.Bundle
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void scheduleRegisteredReceiver(
+android.app.IIntentReceiver
+android.content.Intent
+int
+java.lang.String
+android.os.Bundle
+boolean)
+@dalvik.annotation.Signature (value =(Landroid/os/IBinder;Ljava/util/List<Landroid/app/ResultInfo;>;Ljava/util/List<Landroid/content/Intent;>;IZ)V )
+public final void scheduleRelaunchActivity(
+android.os.IBinder
+java.util.List
+java.util.List
+int
+boolean)
+
+public final void scheduleResumeActivity(
+android.os.IBinder)
+@dalvik.annotation.Signature (value =(Landroid/os/IBinder;Ljava/util/List<Landroid/app/ResultInfo;>;)V )
+public final void scheduleSendResult(
+android.os.IBinder
+java.util.List)
+
+public final void scheduleServiceArgs(
+android.os.IBinder
+int
+android.content.Intent)
+
+public final void scheduleStopActivity(
+android.os.IBinder
+boolean
+int)
+
+public final void scheduleStopService(
+android.os.IBinder)
+
+public final void scheduleUnbindService(
+android.os.IBinder
+android.content.Intent)
+
+public final void scheduleWindowVisibility(
+android.os.IBinder
+boolean)
+
+public void updateTimeZone()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =BindServiceData )
+final class android.app.ActivityThread$BindServiceData extends java.lang.Object
+
+----------------FIELDS----------------
+
+ android.content.Intent intent
+
+ boolean rebind
+
+ android.os.IBinder token
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.app.ActivityThread$1)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =ContextCleanupInfo )
+final class android.app.ActivityThread$ContextCleanupInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+ android.app.ApplicationContext context
+
+ java.lang.String what
+
+ java.lang.String who
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.app.ActivityThread$1)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =CreateServiceData )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+final class android.app.ActivityThread$CreateServiceData extends java.lang.Object
+
+----------------FIELDS----------------
+
+ android.content.pm.ServiceInfo info
+
+ android.content.Intent intent
+
+ android.os.IBinder token
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.app.ActivityThread$1)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =DumpServiceInfo )
+final class android.app.ActivityThread$DumpServiceInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.lang.String[] args
+
+ boolean dumped
+
+ java.io.FileDescriptor fd
+
+ android.os.IBinder service
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.app.ActivityThread$1)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/os/MessageQueue; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =IdleHandler )
+public abstract interface class android.os.MessageQueue$IdleHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean queueIdle()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16 name =GcIdler )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+final class android.app.ActivityThread$GcIdler extends java.lang.Object implements android.os.MessageQueue$IdleHandler
+
+----------------FIELDS----------------
+
+final android.app.ActivityThread this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.ActivityThread)
+
+public final boolean queueIdle()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/Handler$1;Landroid/os/Handler$MessengerImpl; )
+public class android.os.Handler extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean FIND_POTENTIAL_LEAKS
+
+private static final java.lang.String TAG
+
+final android.os.Looper mLooper
+
+ android.os.IMessenger mMessenger
+
+final android.os.MessageQueue mQueue
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+android.os.Looper)
+
+private final android.os.Message getPostMessage(
+java.lang.Runnable)
+
+private final android.os.Message getPostMessage(
+java.lang.Runnable
+java.lang.Object)
+
+private final void handleCallback(
+android.os.Message)
+
+public void dispatchMessage(
+android.os.Message)
+
+public final void dump(
+android.util.Printer
+java.lang.String)
+
+final android.os.IMessenger getIMessenger()
+
+public final android.os.Looper getLooper()
+
+public void handleMessage(
+android.os.Message)
+
+public final boolean hasMessages(
+int)
+
+public final boolean hasMessages(
+int
+java.lang.Object)
+
+public final android.os.Message obtainMessage()
+
+public final android.os.Message obtainMessage(
+int)
+
+public final android.os.Message obtainMessage(
+int
+int
+int)
+
+public final android.os.Message obtainMessage(
+int
+int
+int
+java.lang.Object)
+
+public final android.os.Message obtainMessage(
+int
+java.lang.Object)
+
+public final boolean post(
+java.lang.Runnable)
+
+public final boolean postAtFrontOfQueue(
+java.lang.Runnable)
+
+public final boolean postAtTime(
+java.lang.Runnable
+long)
+
+public final boolean postAtTime(
+java.lang.Runnable
+java.lang.Object
+long)
+
+public final boolean postDelayed(
+java.lang.Runnable
+long)
+
+public final void removeCallbacks(
+java.lang.Runnable)
+
+public final void removeCallbacks(
+java.lang.Runnable
+java.lang.Object)
+
+public final void removeCallbacksAndMessages(
+java.lang.Object)
+
+public final void removeMessages(
+int)
+
+public final void removeMessages(
+int
+java.lang.Object)
+
+public final boolean sendEmptyMessage(
+int)
+
+public final boolean sendEmptyMessageAtTime(
+int
+long)
+
+public final boolean sendEmptyMessageDelayed(
+int
+long)
+
+public final boolean sendMessage(
+android.os.Message)
+
+public final boolean sendMessageAtFrontOfQueue(
+android.os.Message)
+
+public boolean sendMessageAtTime(
+android.os.Message
+long)
+
+public final boolean sendMessageDelayed(
+android.os.Message
+long)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+@dalvik.annotation.InnerClass (accessFlags =18 name =H )
+final class android.app.ActivityThread$H extends android.os.Handler
+
+----------------FIELDS----------------
+
+public static final int ACTIVITY_CONFIGURATION_CHANGED
+
+public static final int BIND_APPLICATION
+
+public static final int BIND_SERVICE
+
+public static final int CLEAN_UP_CONTEXT
+
+public static final int CONFIGURATION_CHANGED
+
+public static final int CREATE_SERVICE
+
+public static final int DESTROY_ACTIVITY
+
+public static final int DUMP_SERVICE
+
+public static final int EXIT_APPLICATION
+
+public static final int GC_WHEN_IDLE
+
+public static final int HIDE_WINDOW
+
+public static final int LAUNCH_ACTIVITY
+
+public static final int LOW_MEMORY
+
+public static final int NEW_INTENT
+
+public static final int PAUSE_ACTIVITY
+
+public static final int PAUSE_ACTIVITY_FINISHING
+
+public static final int RECEIVER
+
+public static final int RELAUNCH_ACTIVITY
+
+public static final int REQUEST_THUMBNAIL
+
+public static final int RESUME_ACTIVITY
+
+public static final int SEND_RESULT
+
+public static final int SERVICE_ARGS
+
+public static final int SHOW_WINDOW
+
+public static final int STOP_ACTIVITY_HIDE
+
+public static final int STOP_ACTIVITY_SHOW
+
+public static final int STOP_SERVICE
+
+public static final int UNBIND_SERVICE
+
+final android.app.ActivityThread this$0
+----------------METHODS----------------
+
+private void <init>(
+android.app.ActivityThread)
+
+ void <init>(
+android.app.ActivityThread
+android.app.ActivityThread$1)
+
+ java.lang.String codeToString(
+int)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =18 name =Idler )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+final class android.app.ActivityThread$Idler extends java.lang.Object implements android.os.MessageQueue$IdleHandler
+
+----------------FIELDS----------------
+
+final android.app.ActivityThread this$0
+----------------METHODS----------------
+
+private void <init>(
+android.app.ActivityThread)
+
+ void <init>(
+android.app.ActivityThread
+android.app.ActivityThread$1)
+
+public final boolean queueIdle()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =NewIntentData )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+final class android.app.ActivityThread$NewIntentData extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/content/Intent;>; )
+ java.util.List intents
+
+ android.os.IBinder token
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.app.ActivityThread$1)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16 name =Args )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread$PackageInfo$ReceiverDispatcher; )
+final class android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private int mCurCode
+
+private java.lang.String mCurData
+
+private android.content.Intent mCurIntent
+
+private android.os.Bundle mCurMap
+
+private boolean mCurOrdered
+
+final android.app.ActivityThread$PackageInfo$ReceiverDispatcher this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.ActivityThread$PackageInfo$ReceiverDispatcher)
+
+static android.content.Intent access$102(
+android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args
+android.content.Intent)
+
+static int access$200(
+android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args)
+
+static int access$202(
+android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args
+int)
+
+static java.lang.String access$300(
+android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args)
+
+static java.lang.String access$302(
+android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args
+java.lang.String)
+
+static android.os.Bundle access$400(
+android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args)
+
+static android.os.Bundle access$402(
+android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args
+android.os.Bundle)
+
+static boolean access$502(
+android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args
+boolean)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/IIntentReceiver$Stub; )
+public abstract interface class android.app.IIntentReceiver extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void performReceive(
+android.content.Intent
+int
+java.lang.String
+android.os.Bundle
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.MemberClasses (value =Landroid/app/IIntentReceiver$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IIntentReceiver; )
+public abstract class android.app.IIntentReceiver$Stub extends android.os.Binder implements android.app.IIntentReceiver
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_performReceive
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.app.IIntentReceiver asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =InnerReceiver )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread$PackageInfo$ReceiverDispatcher; )
+final class android.app.ActivityThread$PackageInfo$ReceiverDispatcher$InnerReceiver extends android.app.IIntentReceiver$Stub
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/lang/ref/WeakReference<Landroid/app/ActivityThread$PackageInfo$ReceiverDispatcher;>; )
+final java.lang.ref.WeakReference mDispatcher
+
+final android.app.ActivityThread$PackageInfo$ReceiverDispatcher mStrongRef
+----------------METHODS----------------
+
+ void <init>(
+android.app.ActivityThread$PackageInfo$ReceiverDispatcher
+boolean)
+
+public void performReceive(
+android.content.Intent
+int
+java.lang.String
+android.os.Bundle
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/ActivityThread$PackageInfo$ReceiverDispatcher$Args;Landroid/app/ActivityThread$PackageInfo$ReceiverDispatcher$InnerReceiver; )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread$PackageInfo; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =ReceiverDispatcher )
+final class android.app.ActivityThread$PackageInfo$ReceiverDispatcher extends java.lang.Object
+
+----------------FIELDS----------------
+
+final android.os.Handler mActivityThread
+
+final android.content.Context mContext
+
+final android.app.IIntentReceiver$Stub mIIntentReceiver
+
+final android.app.Instrumentation mInstrumentation
+
+final android.app.IntentReceiverLeaked mLocation
+
+final android.content.BroadcastReceiver mReceiver
+
+final boolean mRegistered
+
+ java.lang.RuntimeException mUnregisterLocation
+----------------METHODS----------------
+
+ void <init>(
+android.content.BroadcastReceiver
+android.content.Context
+android.os.Handler
+android.app.Instrumentation
+boolean)
+
+ android.app.IIntentReceiver getIIntentReceiver()
+
+ android.content.BroadcastReceiver getIntentReceiver()
+
+ android.app.IntentReceiverLeaked getLocation()
+
+ java.lang.RuntimeException getUnregisterLocation()
+
+public void performReceive(
+android.content.Intent
+int
+java.lang.String
+android.os.Bundle
+boolean)
+
+ void setUnregisterLocation(
+java.lang.RuntimeException)
+
+ void validate(
+android.content.Context
+android.os.Handler)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread$PackageInfo$ServiceDispatcher; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =ConnectionInfo )
+ class android.app.ActivityThread$PackageInfo$ServiceDispatcher$ConnectionInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+ android.os.IBinder binder
+
+ android.os.IBinder$DeathRecipient deathMonitor
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.app.ActivityThread$1)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =DeathRecipient )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/IBinder; )
+public abstract interface class android.os.IBinder$DeathRecipient extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void binderDied()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread$PackageInfo$ServiceDispatcher; )
+@dalvik.annotation.InnerClass (accessFlags =18 name =DeathMonitor )
+final class android.app.ActivityThread$PackageInfo$ServiceDispatcher$DeathMonitor extends java.lang.Object implements android.os.IBinder$DeathRecipient
+
+----------------FIELDS----------------
+
+final android.content.ComponentName mName
+
+final android.os.IBinder mService
+
+final android.app.ActivityThread$PackageInfo$ServiceDispatcher this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.ActivityThread$PackageInfo$ServiceDispatcher
+android.content.ComponentName
+android.os.IBinder)
+
+public void binderDied()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/IServiceConnection$Stub; )
+public abstract interface class android.app.IServiceConnection extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void connected(
+android.content.ComponentName
+android.os.IBinder)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.MemberClasses (value =Landroid/app/IServiceConnection$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IServiceConnection; )
+public abstract class android.app.IServiceConnection$Stub extends android.os.Binder implements android.app.IServiceConnection
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_connected
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.app.IServiceConnection asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =InnerConnection )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread$PackageInfo$ServiceDispatcher; )
+ class android.app.ActivityThread$PackageInfo$ServiceDispatcher$InnerConnection extends android.app.IServiceConnection$Stub
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/lang/ref/WeakReference<Landroid/app/ActivityThread$PackageInfo$ServiceDispatcher;>; )
+final java.lang.ref.WeakReference mDispatcher
+----------------METHODS----------------
+
+ void <init>(
+android.app.ActivityThread$PackageInfo$ServiceDispatcher)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void connected(
+android.content.ComponentName
+android.os.IBinder)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread$PackageInfo$ServiceDispatcher; )
+@dalvik.annotation.InnerClass (accessFlags =18 name =RunConnection )
+final class android.app.ActivityThread$PackageInfo$ServiceDispatcher$RunConnection extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final int mCommand
+
+final android.content.ComponentName mName
+
+final android.os.IBinder mService
+
+final android.app.ActivityThread$PackageInfo$ServiceDispatcher this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.ActivityThread$PackageInfo$ServiceDispatcher
+android.content.ComponentName
+android.os.IBinder
+int)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =ServiceDispatcher )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread$PackageInfo; )
+@dalvik.annotation.MemberClasses (value =Landroid/app/ActivityThread$PackageInfo$ServiceDispatcher$DeathMonitor;Landroid/app/ActivityThread$PackageInfo$ServiceDispatcher$RunConnection;Landroid/app/ActivityThread$PackageInfo$ServiceDispatcher$InnerConnection;Landroid/app/ActivityThread$PackageInfo$ServiceDispatcher$ConnectionInfo; )
+final class android.app.ActivityThread$PackageInfo$ServiceDispatcher extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Landroid/content/ComponentName;Landroid/app/ActivityThread$PackageInfo$ServiceDispatcher$ConnectionInfo;>; )
+private final java.util.HashMap mActiveConnections
+
+private final android.os.Handler mActivityThread
+
+private final android.content.ServiceConnection mConnection
+
+private final android.content.Context mContext
+
+private boolean mDied
+
+private final int mFlags
+
+private final android.app.ActivityThread$PackageInfo$ServiceDispatcher$InnerConnection mIServiceConnection
+
+private final android.app.ServiceConnectionLeaked mLocation
+
+private java.lang.RuntimeException mUnbindLocation
+----------------METHODS----------------
+
+ void <init>(
+android.content.ServiceConnection
+android.content.Context
+android.os.Handler
+int)
+
+public void connected(
+android.content.ComponentName
+android.os.IBinder)
+
+public void death(
+android.content.ComponentName
+android.os.IBinder)
+
+public void doConnected(
+android.content.ComponentName
+android.os.IBinder)
+
+public void doDeath(
+android.content.ComponentName
+android.os.IBinder)
+
+ void doForget()
+
+ int getFlags()
+
+ android.app.IServiceConnection getIServiceConnection()
+
+ android.app.ServiceConnectionLeaked getLocation()
+
+ android.content.ServiceConnection getServiceConnection()
+
+ java.lang.RuntimeException getUnbindLocation()
+
+ void setUnbindLocation(
+java.lang.RuntimeException)
+
+ void validate(
+android.content.Context
+android.os.Handler)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =PackageInfo )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+@dalvik.annotation.MemberClasses (value =Landroid/app/ActivityThread$PackageInfo$ServiceDispatcher;Landroid/app/ActivityThread$PackageInfo$ReceiverDispatcher; )
+public final class android.app.ActivityThread$PackageInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final android.app.ActivityThread mActivityThread
+
+private final java.lang.String mAppDir
+
+private android.app.Application mApplication
+
+private final android.content.pm.ApplicationInfo mApplicationInfo
+
+private final java.lang.ClassLoader mBaseClassLoader
+
+private java.lang.ClassLoader mClassLoader
+
+ int mClientCount
+
+private final java.lang.String mDataDir
+
+private final java.io.File mDataDirFile
+
+private final boolean mIncludeCode
+
+private final java.lang.String mPackageName
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Landroid/content/Context;Ljava/util/HashMap<Landroid/content/BroadcastReceiver;Landroid/app/ActivityThread$PackageInfo$ReceiverDispatcher;>;>; )
+private final java.util.HashMap mReceivers
+
+private final java.lang.String mResDir
+
+private android.content.res.Resources mResources
+
+private final boolean mSecurityViolation
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Landroid/content/Context;Ljava/util/HashMap<Landroid/content/ServiceConnection;Landroid/app/ActivityThread$PackageInfo$ServiceDispatcher;>;>; )
+private final java.util.HashMap mServices
+
+private final java.lang.String[] mSharedLibraries
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Landroid/content/Context;Ljava/util/HashMap<Landroid/content/ServiceConnection;Landroid/app/ActivityThread$PackageInfo$ServiceDispatcher;>;>; )
+private final java.util.HashMap mUnboundServices
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Landroid/content/Context;Ljava/util/HashMap<Landroid/content/BroadcastReceiver;Landroid/app/ActivityThread$PackageInfo$ReceiverDispatcher;>;>; )
+private final java.util.HashMap mUnregisteredReceivers
+----------------METHODS----------------
+
+public void <init>(
+android.app.ActivityThread
+android.content.pm.ApplicationInfo
+android.app.ActivityThread
+java.lang.ClassLoader
+boolean
+boolean)
+
+public void <init>(
+android.app.ActivityThread
+java.lang.String
+android.content.Context)
+
+static android.content.res.Resources access$3700(
+android.app.ActivityThread$PackageInfo)
+
+private static java.lang.String combineLibs(
+java.lang.String[]
+java.lang.String[])
+
+private static java.lang.String[] getLibrariesFor(
+java.lang.String)
+
+public android.app.IIntentReceiver forgetReceiverDispatcher(
+android.content.Context
+android.content.BroadcastReceiver)
+
+public final android.app.IServiceConnection forgetServiceDispatcher(
+android.content.Context
+android.content.ServiceConnection)
+
+public java.lang.String getAppDir()
+
+public android.content.res.AssetManager getAssets(
+android.app.ActivityThread)
+
+public java.lang.ClassLoader getClassLoader()
+
+public java.lang.String getDataDir()
+
+public java.io.File getDataDirFile()
+
+public java.lang.String getPackageName()
+
+public android.app.IIntentReceiver getReceiverDispatcher(
+android.content.BroadcastReceiver
+android.content.Context
+android.os.Handler
+android.app.Instrumentation
+boolean)
+
+public java.lang.String getResDir()
+
+public android.content.res.Resources getResources(
+android.app.ActivityThread)
+
+public final android.app.IServiceConnection getServiceDispatcher(
+android.content.ServiceConnection
+android.content.Context
+android.os.Handler
+int)
+
+public boolean isSecurityViolation()
+
+public android.app.Application makeApplication()
+
+public void removeContextRegistrations(
+android.content.Context
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+@dalvik.annotation.InnerClass (accessFlags =18 name =ProviderRecord )
+final class android.app.ActivityThread$ProviderRecord extends java.lang.Object implements android.os.IBinder$DeathRecipient
+
+----------------FIELDS----------------
+
+final android.content.ContentProvider mLocalProvider
+
+final java.lang.String mName
+
+final android.content.IContentProvider mProvider
+
+final android.app.ActivityThread this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.ActivityThread
+java.lang.String
+android.content.IContentProvider
+android.content.ContentProvider)
+
+public void binderDied()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =18 name =ProviderRefCount )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+final class android.app.ActivityThread$ProviderRefCount extends java.lang.Object
+
+----------------FIELDS----------------
+
+public int count
+
+final android.app.ActivityThread this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.ActivityThread
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =ReceiverData )
+final class android.app.ActivityThread$ReceiverData extends java.lang.Object
+
+----------------FIELDS----------------
+
+ android.content.pm.ActivityInfo info
+
+ android.content.Intent intent
+
+ boolean resultAbort
+
+ int resultCode
+
+ java.lang.String resultData
+
+ android.os.Bundle resultExtras
+
+ boolean sync
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.app.ActivityThread$1)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =ResultData )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+final class android.app.ActivityThread$ResultData extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/app/ResultInfo;>; )
+ java.util.List results
+
+ android.os.IBinder token
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.app.ActivityThread$1)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =ServiceArgsData )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+final class android.app.ActivityThread$ServiceArgsData extends java.lang.Object
+
+----------------FIELDS----------------
+
+ android.content.Intent args
+
+ int startId
+
+ android.os.IBinder token
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.app.ActivityThread$1)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =StopInfo )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ActivityThread; )
+ class android.app.ActivityThread$StopInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.lang.CharSequence description
+
+ android.graphics.Bitmap thumbnail
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.app.ActivityThread$1)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/ActivityThread$1;Landroid/app/ActivityThread$ProviderRefCount;Landroid/app/ActivityThread$StopInfo;Landroid/app/ActivityThread$GcIdler;Landroid/app/ActivityThread$Idler;Landroid/app/ActivityThread$H;Landroid/app/ActivityThread$ApplicationThread;Landroid/app/ActivityThread$ContextCleanupInfo;Landroid/app/ActivityThread$ResultData;Landroid/app/ActivityThread$DumpServiceInfo;Landroid/app/ActivityThread$AppBindData;Landroid/app/ActivityThread$ServiceArgsData;Landroid/app/ActivityThread$BindServiceData;Landroid/app/ActivityThread$CreateServiceData;Landroid/app/ActivityThread$ReceiverData;Landroid/app/ActivityThread$NewIntentData;Landroid/app/ActivityThread$ProviderRecord;Landroid/app/ActivityThread$ActivityRecord;Landroid/app/ActivityThread$PackageInfo; )
+public final class android.app.ActivityThread extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG
+
+private static final boolean DEBUG_BROADCAST
+
+private static final int LOG_ON_PAUSE_CALLED
+
+private static final int LOG_ON_RESUME_CALLED
+
+private static final long MIN_TIME_BETWEEN_GCS
+
+private static final java.util.regex.Pattern PATTERN_SEMICOLON
+
+private static final int SQLITE_MEM_RELEASED_EVENT_LOG_TAG
+
+private static final java.lang.String TAG
+
+private static final boolean localLOGV
+
+private static android.app.ApplicationContext mSystemContext
+
+static android.content.pm.IPackageManager sPackageManager
+
+static final java.lang.ThreadLocal sThreadLocal
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/ref/WeakReference<Landroid/content/res/Resources;>;>; )
+ java.util.HashMap mActiveResources
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Landroid/os/IBinder;Landroid/app/ActivityThread$ActivityRecord;>; )
+final java.util.HashMap mActivities
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/app/Application;>; )
+final java.util.ArrayList mAllApplications
+
+final android.app.ActivityThread$ApplicationThread mAppThread
+
+ android.app.ActivityThread$AppBindData mBoundApplication
+
+ android.content.res.Configuration mConfiguration
+
+ android.view.Display mDisplay
+
+final android.app.ActivityThread$GcIdler mGcIdler
+
+ boolean mGcIdlerScheduled
+
+final android.app.ActivityThread$H mH
+
+ android.app.Application mInitialApplication
+
+ android.app.Instrumentation mInstrumentation
+
+ java.lang.String mInstrumentationAppDir
+
+ java.lang.String mInstrumentationAppPackage
+
+ java.lang.String mInstrumentedAppDir
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Landroid/os/IBinder;Landroid/app/ActivityThread$ProviderRecord;>; )
+final java.util.HashMap mLocalProviders
+
+final android.os.Looper mLooper
+
+ android.app.ActivityThread$ActivityRecord mNewActivities
+
+ int mNumVisibleActivities
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/ref/WeakReference<Landroid/app/ActivityThread$PackageInfo;>;>; )
+final java.util.HashMap mPackages
+
+ android.content.res.Configuration mPendingConfiguration
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Landroid/app/ActivityThread$ProviderRecord;>; )
+final java.util.HashMap mProviderMap
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Landroid/os/IBinder;Landroid/app/ActivityThread$ProviderRefCount;>; )
+final java.util.HashMap mProviderRefCountMap
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/app/ActivityThread$ActivityRecord;>; )
+final java.util.ArrayList mRelaunchingActivities
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/ref/WeakReference<Landroid/app/ActivityThread$PackageInfo;>;>; )
+final java.util.HashMap mResourcePackages
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Landroid/os/IBinder;Landroid/app/Service;>; )
+final java.util.HashMap mServices
+
+ boolean mSystemThread
+
+private int mThumbnailHeight
+
+private int mThumbnailWidth
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+static android.app.ApplicationContext access$000()
+
+static android.app.ApplicationContext access$002(
+android.app.ApplicationContext)
+
+static void access$1800(
+android.app.ActivityThread
+android.app.ActivityThread$ActivityRecord)
+
+static void access$1900(
+android.app.ActivityThread
+android.app.ActivityThread$ActivityRecord
+int)
+
+static void access$2000(
+android.app.ActivityThread
+android.os.IBinder
+boolean
+int)
+
+static void access$2100(
+android.app.ActivityThread
+android.os.IBinder
+boolean
+int)
+
+static void access$2200(
+android.app.ActivityThread
+android.os.IBinder
+boolean)
+
+static void access$2300(
+android.app.ActivityThread
+android.app.ActivityThread$ResultData)
+
+static void access$2400(
+android.app.ActivityThread
+android.os.IBinder
+boolean
+int
+boolean)
+
+static void access$2500(
+android.app.ActivityThread
+android.app.ActivityThread$AppBindData)
+
+static void access$2600(
+android.app.ActivityThread
+android.app.ActivityThread$NewIntentData)
+
+static void access$2700(
+android.app.ActivityThread
+android.app.ActivityThread$ReceiverData)
+
+static void access$2800(
+android.app.ActivityThread
+android.app.ActivityThread$CreateServiceData)
+
+static void access$2900(
+android.app.ActivityThread
+android.app.ActivityThread$BindServiceData)
+
+static void access$3000(
+android.app.ActivityThread
+android.app.ActivityThread$BindServiceData)
+
+static void access$3100(
+android.app.ActivityThread
+android.app.ActivityThread$ServiceArgsData)
+
+static void access$3200(
+android.app.ActivityThread
+android.os.IBinder)
+
+static void access$3300(
+android.app.ActivityThread
+android.os.IBinder)
+
+static void access$3400(
+android.app.ActivityThread
+android.app.ActivityThread$DumpServiceInfo)
+
+static void access$700(
+android.app.ActivityThread
+int
+java.lang.Object
+int)
+
+static void access$800(
+android.app.ActivityThread
+int
+java.lang.Object
+int
+int)
+
+static void access$900(
+android.app.ActivityThread
+int
+java.lang.Object)
+
+private final void attach(
+boolean)
+
+private final android.graphics.Bitmap createThumbnailBitmap(
+android.app.ActivityThread$ActivityRecord)
+
+public static final android.app.ActivityThread currentActivityThread()
+
+public static final java.lang.String currentPackageName()
+@dalvik.annotation.Signature (value =(Landroid/app/ActivityThread$ActivityRecord;Ljava/util/List<Landroid/content/Intent;>;)V )
+private final void deliverNewIntents(
+android.app.ActivityThread$ActivityRecord
+java.util.List)
+@dalvik.annotation.Signature (value =(Landroid/app/ActivityThread$ActivityRecord;Ljava/util/List<Landroid/app/ResultInfo;>;)V )
+private final void deliverResults(
+android.app.ActivityThread$ActivityRecord
+java.util.List)
+
+private final void detach()
+
+private final android.app.ActivityThread$PackageInfo getPackageInfo(
+android.content.pm.ApplicationInfo
+java.lang.ClassLoader
+boolean
+boolean)
+
+public static android.content.pm.IPackageManager getPackageManager()
+
+private final android.content.IContentProvider getProvider(
+android.content.Context
+java.lang.String)
+
+private final void handleBindApplication(
+android.app.ActivityThread$AppBindData)
+
+private final void handleBindService(
+android.app.ActivityThread$BindServiceData)
+
+private final void handleCreateService(
+android.app.ActivityThread$CreateServiceData)
+
+private final void handleDestroyActivity(
+android.os.IBinder
+boolean
+int
+boolean)
+
+private void handleDumpService(
+android.app.ActivityThread$DumpServiceInfo)
+
+private final void handleLaunchActivity(
+android.app.ActivityThread$ActivityRecord)
+
+private final void handleNewIntent(
+android.app.ActivityThread$NewIntentData)
+
+private final void handlePauseActivity(
+android.os.IBinder
+boolean
+int)
+
+private final void handleReceiver(
+android.app.ActivityThread$ReceiverData)
+
+private final void handleRelaunchActivity(
+android.app.ActivityThread$ActivityRecord
+int)
+
+private final void handleRequestThumbnail(
+android.os.IBinder)
+
+private final void handleSendResult(
+android.app.ActivityThread$ResultData)
+
+private final void handleServiceArgs(
+android.app.ActivityThread$ServiceArgsData)
+
+private final void handleStopActivity(
+android.os.IBinder
+boolean
+int)
+
+private final void handleStopService(
+android.os.IBinder)
+
+private final void handleUnbindService(
+android.app.ActivityThread$BindServiceData)
+
+private final void handleWindowVisibility(
+android.os.IBinder
+boolean)
+@dalvik.annotation.Signature (value =(Landroid/content/Context;Ljava/util/List<Landroid/content/pm/ProviderInfo;>;)V )
+private final void installContentProviders(
+android.content.Context
+java.util.List)
+
+private final android.content.IContentProvider installProvider(
+android.content.Context
+android.content.IContentProvider
+android.content.pm.ProviderInfo
+boolean)
+
+public static final void main(
+java.lang.String[])
+
+private final void performConfigurationChanged(
+android.content.ComponentCallbacks
+android.content.res.Configuration)
+
+private final android.app.ActivityThread$ActivityRecord performDestroyActivity(
+android.os.IBinder
+boolean
+int
+boolean)
+
+private final android.app.Activity performLaunchActivity(
+android.app.ActivityThread$ActivityRecord)
+
+private final void performStopActivityInner(
+android.app.ActivityThread$ActivityRecord
+android.app.ActivityThread$StopInfo
+boolean)
+
+private final void queueOrSendMessage(
+int
+java.lang.Object)
+
+private final void queueOrSendMessage(
+int
+java.lang.Object
+int)
+
+private final void queueOrSendMessage(
+int
+java.lang.Object
+int
+int)
+
+public static final android.app.ActivityThread systemMain()
+
+private final void updateVisibility(
+android.app.ActivityThread$ActivityRecord
+boolean)
+
+public final android.content.IContentProvider acquireProvider(
+android.content.Context
+java.lang.String)
+@dalvik.annotation.Signature (value =(ZLandroid/content/res/Configuration;)Ljava/util/ArrayList<Landroid/content/ComponentCallbacks;>; )
+ java.util.ArrayList collectComponentCallbacksLocked(
+boolean
+android.content.res.Configuration)
+
+ void doGcIfNeeded()
+
+final void finishInstrumentation(
+int
+android.os.Bundle)
+
+public final android.app.Activity getActivity(
+android.os.IBinder)
+
+public android.app.Application getApplication()
+
+public android.app.ActivityThread$ApplicationThread getApplicationThread()
+
+public android.content.res.Configuration getConfiguration()
+
+ android.util.DisplayMetrics getDisplayMetricsLocked()
+
+final android.os.Handler getHandler()
+
+public android.app.Instrumentation getInstrumentation()
+
+public android.os.Looper getLooper()
+
+public final android.app.ActivityThread$PackageInfo getPackageInfo(
+android.content.pm.ApplicationInfo
+int)
+
+public final android.app.ActivityThread$PackageInfo getPackageInfo(
+java.lang.String
+int)
+
+public final android.app.ActivityThread$PackageInfo getPackageInfoNoCheck(
+android.content.pm.ApplicationInfo)
+
+public java.lang.String getProfileFilePath()
+
+public android.app.ApplicationContext getSystemContext()
+
+ android.content.res.Resources getTopLevelResources(
+java.lang.String)
+
+final void handleActivityConfigurationChanged(
+android.os.IBinder)
+
+final void handleConfigurationChanged(
+android.content.res.Configuration)
+
+final void handleLowMemory()
+
+final void handleResumeActivity(
+android.os.IBinder
+boolean)
+
+public final boolean hasPackageInfo(
+java.lang.String)
+
+public final void installSystemProviders(
+java.util.List)
+
+public boolean isProfiling()
+
+public final android.app.ActivityThread$ActivityRecord performDestroyActivity(
+android.os.IBinder
+boolean)
+@dalvik.annotation.Signature (value =(Landroid/os/IBinder;Ljava/util/List<Landroid/content/Intent;>;)V )
+public final void performNewIntents(
+android.os.IBinder
+java.util.List)
+
+final android.os.Bundle performPauseActivity(
+android.app.ActivityThread$ActivityRecord
+boolean
+boolean)
+
+final android.os.Bundle performPauseActivity(
+android.os.IBinder
+boolean
+boolean)
+
+final void performRestartActivity(
+android.os.IBinder)
+
+public final android.app.ActivityThread$ActivityRecord performResumeActivity(
+android.os.IBinder
+boolean)
+
+final void performStopActivity(
+android.os.IBinder)
+
+public final boolean releaseProvider(
+android.content.IContentProvider)
+
+final void removeDeadProvider(
+java.lang.String
+android.content.IContentProvider)
+
+final void removeDeadProviderLocked(
+java.lang.String
+android.content.IContentProvider)
+
+public final void removeProviderLocked(
+android.content.IContentProvider)
+
+public final android.content.pm.ActivityInfo resolveActivityInfo(
+android.content.Intent)
+
+final void scheduleContextCleanup(
+android.app.ApplicationContext
+java.lang.String
+java.lang.String)
+
+ void scheduleGcIdler()
+
+public final void sendActivityResult(
+android.os.IBinder
+java.lang.String
+int
+int
+android.content.Intent)
+
+public final android.app.Activity startActivityNow(
+android.app.Activity
+java.lang.String
+android.content.Intent
+android.content.pm.ActivityInfo
+android.os.IBinder
+android.os.Bundle)
+
+public final android.app.Activity startActivityNow(
+android.app.Activity
+java.lang.String
+android.content.Intent
+android.os.IBinder
+android.os.Bundle)
+
+ void unscheduleGcIdler()
+
+________________CLASS________________
+
+
+public class android.app.AlarmManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ELAPSED_REALTIME
+
+public static final int ELAPSED_REALTIME_WAKEUP
+
+public static final int RTC
+
+public static final int RTC_WAKEUP
+
+private static android.app.IAlarmManager mService
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+public void cancel(
+android.app.PendingIntent)
+
+public void set(
+int
+long
+android.app.PendingIntent)
+
+public void setRepeating(
+int
+long
+long
+android.app.PendingIntent)
+
+public void setTimeZone(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/AlertDialog; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Builder )
+public class android.app.AlertDialog$Builder extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final com.android.internal.app.AlertController$AlertParams P
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public android.app.AlertDialog create()
+
+public android.app.AlertDialog$Builder setAdapter(
+android.widget.ListAdapter
+android.content.DialogInterface$OnClickListener)
+
+public android.app.AlertDialog$Builder setCancelable(
+boolean)
+
+public android.app.AlertDialog$Builder setCursor(
+android.database.Cursor
+android.content.DialogInterface$OnClickListener
+java.lang.String)
+
+public android.app.AlertDialog$Builder setCustomTitle(
+android.view.View)
+
+public android.app.AlertDialog$Builder setIcon(
+int)
+
+public android.app.AlertDialog$Builder setIcon(
+android.graphics.drawable.Drawable)
+
+public android.app.AlertDialog$Builder setInverseBackgroundForced(
+boolean)
+
+public android.app.AlertDialog$Builder setItems(
+int
+android.content.DialogInterface$OnClickListener)
+
+public android.app.AlertDialog$Builder setItems(
+java.lang.CharSequence[]
+android.content.DialogInterface$OnClickListener)
+
+public android.app.AlertDialog$Builder setMessage(
+int)
+
+public android.app.AlertDialog$Builder setMessage(
+java.lang.CharSequence)
+
+public android.app.AlertDialog$Builder setMultiChoiceItems(
+int
+boolean[]
+android.content.DialogInterface$OnMultiChoiceClickListener)
+
+public android.app.AlertDialog$Builder setMultiChoiceItems(
+android.database.Cursor
+java.lang.String
+java.lang.String
+android.content.DialogInterface$OnMultiChoiceClickListener)
+
+public android.app.AlertDialog$Builder setMultiChoiceItems(
+java.lang.CharSequence[]
+boolean[]
+android.content.DialogInterface$OnMultiChoiceClickListener)
+
+public android.app.AlertDialog$Builder setNegativeButton(
+int
+android.content.DialogInterface$OnClickListener)
+
+public android.app.AlertDialog$Builder setNegativeButton(
+java.lang.CharSequence
+android.content.DialogInterface$OnClickListener)
+
+public android.app.AlertDialog$Builder setNeutralButton(
+int
+android.content.DialogInterface$OnClickListener)
+
+public android.app.AlertDialog$Builder setNeutralButton(
+java.lang.CharSequence
+android.content.DialogInterface$OnClickListener)
+
+public android.app.AlertDialog$Builder setOnCancelListener(
+android.content.DialogInterface$OnCancelListener)
+
+public android.app.AlertDialog$Builder setOnItemSelectedListener(
+android.widget.AdapterView$OnItemSelectedListener)
+
+public android.app.AlertDialog$Builder setOnKeyListener(
+android.content.DialogInterface$OnKeyListener)
+
+public android.app.AlertDialog$Builder setPositiveButton(
+int
+android.content.DialogInterface$OnClickListener)
+
+public android.app.AlertDialog$Builder setPositiveButton(
+java.lang.CharSequence
+android.content.DialogInterface$OnClickListener)
+
+public android.app.AlertDialog$Builder setSingleChoiceItems(
+int
+int
+android.content.DialogInterface$OnClickListener)
+
+public android.app.AlertDialog$Builder setSingleChoiceItems(
+android.database.Cursor
+int
+java.lang.String
+android.content.DialogInterface$OnClickListener)
+
+public android.app.AlertDialog$Builder setSingleChoiceItems(
+android.widget.ListAdapter
+int
+android.content.DialogInterface$OnClickListener)
+
+public android.app.AlertDialog$Builder setSingleChoiceItems(
+java.lang.CharSequence[]
+int
+android.content.DialogInterface$OnClickListener)
+
+public android.app.AlertDialog$Builder setTitle(
+int)
+
+public android.app.AlertDialog$Builder setTitle(
+java.lang.CharSequence)
+
+public android.app.AlertDialog$Builder setView(
+android.view.View)
+
+public android.app.AlertDialog show()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/DialogInterface$OnKeyListener;Landroid/content/DialogInterface$OnMultiChoiceClickListener;Landroid/content/DialogInterface$OnClickListener;Landroid/content/DialogInterface$OnDismissListener;Landroid/content/DialogInterface$OnCancelListener; )
+public abstract interface class android.content.DialogInterface extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int BUTTON1
+
+public static final int BUTTON2
+
+public static final int BUTTON3
+----------------METHODS----------------
+
+public abstract void cancel()
+
+public abstract void dismiss()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/Dialog$DismissCancelHandler; )
+public class android.app.Dialog extends java.lang.Object implements android.content.DialogInterface, android.view.Window$Callback, android.view.KeyEvent$Callback, android.view.View$OnCreateContextMenuListener
+
+----------------FIELDS----------------
+
+private static final int CANCEL
+
+private static final java.lang.String DIALOG_HIERARCHY_TAG
+
+private static final java.lang.String DIALOG_SHOWING_TAG
+
+private static final int DISMISS
+
+private static final java.lang.String LOG_TAG
+
+private android.os.Message mCancelMessage
+
+protected boolean mCancelable
+
+private boolean mCanceledOnTouchOutside
+
+final android.content.Context mContext
+
+private boolean mCreated
+
+ android.view.View mDecor
+
+private final java.lang.Runnable mDismissAction
+
+private android.os.Handler mDismissCancelHandler
+
+private android.os.Message mDismissMessage
+
+private final android.os.Handler mHandler
+
+private android.content.DialogInterface$OnKeyListener mOnKeyListener
+
+private android.app.Activity mOwnerActivity
+
+private boolean mShowing
+
+private final java.lang.Thread mUiThread
+
+ android.view.Window mWindow
+
+final android.view.WindowManager mWindowManager
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+int)
+
+protected void <init>(
+android.content.Context
+boolean
+android.content.DialogInterface$OnCancelListener)
+@java.lang.Deprecated
+protected void <init>(
+android.content.Context
+boolean
+android.os.Message)
+
+static void access$000(
+android.app.Dialog)
+
+private void dismissDialog()
+
+private boolean isOutOfBounds(
+android.view.MotionEvent)
+
+private void sendDismissMessage()
+
+public void addContentView(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+public void cancel()
+
+public void closeOptionsMenu()
+
+public void dismiss()
+
+public boolean dispatchKeyEvent(
+android.view.KeyEvent)
+
+ void dispatchOnCreate(
+android.os.Bundle)
+
+public boolean dispatchTouchEvent(
+android.view.MotionEvent)
+
+public boolean dispatchTrackballEvent(
+android.view.MotionEvent)
+
+public android.view.View findViewById(
+int)
+
+public final android.content.Context getContext()
+
+public android.view.View getCurrentFocus()
+
+public android.view.LayoutInflater getLayoutInflater()
+
+public final android.app.Activity getOwnerActivity()
+
+public final int getVolumeControlStream()
+
+public android.view.Window getWindow()
+
+public void hide()
+
+public boolean isShowing()
+
+public void onContentChanged()
+
+public boolean onContextItemSelected(
+android.view.MenuItem)
+
+public void onContextMenuClosed(
+android.view.Menu)
+
+protected void onCreate(
+android.os.Bundle)
+
+public void onCreateContextMenu(
+android.view.ContextMenu
+android.view.View
+android.view.ContextMenu$ContextMenuInfo)
+
+public boolean onCreateOptionsMenu(
+android.view.Menu)
+
+public boolean onCreatePanelMenu(
+int
+android.view.Menu)
+
+public android.view.View onCreatePanelView(
+int)
+
+public boolean onKeyDown(
+int
+android.view.KeyEvent)
+
+public boolean onKeyMultiple(
+int
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+int
+android.view.KeyEvent)
+
+public boolean onMenuItemSelected(
+int
+android.view.MenuItem)
+
+public boolean onMenuOpened(
+int
+android.view.Menu)
+
+public boolean onOptionsItemSelected(
+android.view.MenuItem)
+
+public void onOptionsMenuClosed(
+android.view.Menu)
+
+public void onPanelClosed(
+int
+android.view.Menu)
+
+public boolean onPrepareOptionsMenu(
+android.view.Menu)
+
+public boolean onPreparePanel(
+int
+android.view.View
+android.view.Menu)
+
+public void onRestoreInstanceState(
+android.os.Bundle)
+
+public android.os.Bundle onSaveInstanceState()
+
+public boolean onSearchRequested()
+
+protected void onStart()
+
+protected void onStop()
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+public boolean onTrackballEvent(
+android.view.MotionEvent)
+
+public void onWindowAttributesChanged(
+android.view.WindowManager$LayoutParams)
+
+public void onWindowFocusChanged(
+boolean)
+
+public void openContextMenu(
+android.view.View)
+
+public void openOptionsMenu()
+
+public void registerForContextMenu(
+android.view.View)
+
+public final boolean requestWindowFeature(
+int)
+
+public void setCancelMessage(
+android.os.Message)
+
+public void setCancelable(
+boolean)
+
+public void setCanceledOnTouchOutside(
+boolean)
+
+public void setContentView(
+int)
+
+public void setContentView(
+android.view.View)
+
+public void setContentView(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+public void setDismissMessage(
+android.os.Message)
+
+public final void setFeatureDrawable(
+int
+android.graphics.drawable.Drawable)
+
+public final void setFeatureDrawableAlpha(
+int
+int)
+
+public final void setFeatureDrawableResource(
+int
+int)
+
+public final void setFeatureDrawableUri(
+int
+android.net.Uri)
+
+public void setOnCancelListener(
+android.content.DialogInterface$OnCancelListener)
+
+public void setOnDismissListener(
+android.content.DialogInterface$OnDismissListener)
+
+public void setOnKeyListener(
+android.content.DialogInterface$OnKeyListener)
+
+public final void setOwnerActivity(
+android.app.Activity)
+
+public void setTitle(
+int)
+
+public void setTitle(
+java.lang.CharSequence)
+
+public final void setVolumeControlStream(
+int)
+
+public void show()
+
+public void takeKeyEvents(
+boolean)
+
+public void unregisterForContextMenu(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/AlertDialog$Builder; )
+public class android.app.AlertDialog extends android.app.Dialog implements android.content.DialogInterface
+
+----------------FIELDS----------------
+
+private com.android.internal.app.AlertController mAlert
+----------------METHODS----------------
+
+protected void <init>(
+android.content.Context)
+
+protected void <init>(
+android.content.Context
+int)
+
+protected void <init>(
+android.content.Context
+boolean
+android.content.DialogInterface$OnCancelListener)
+
+static com.android.internal.app.AlertController access$000(
+android.app.AlertDialog)
+
+protected void onCreate(
+android.os.Bundle)
+
+public boolean onKeyDown(
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+int
+android.view.KeyEvent)
+
+public void setButton(
+java.lang.CharSequence
+android.content.DialogInterface$OnClickListener)
+
+public void setButton(
+java.lang.CharSequence
+android.os.Message)
+
+public void setButton2(
+java.lang.CharSequence
+android.content.DialogInterface$OnClickListener)
+
+public void setButton2(
+java.lang.CharSequence
+android.os.Message)
+
+public void setButton3(
+java.lang.CharSequence
+android.content.DialogInterface$OnClickListener)
+
+public void setButton3(
+java.lang.CharSequence
+android.os.Message)
+
+public void setCustomTitle(
+android.view.View)
+
+public void setIcon(
+int)
+
+public void setIcon(
+android.graphics.drawable.Drawable)
+
+public void setInverseBackgroundForced(
+boolean)
+
+public void setMessage(
+java.lang.CharSequence)
+
+public void setTitle(
+java.lang.CharSequence)
+
+public void setView(
+android.view.View)
+
+________________CLASS________________
+
+
+public class android.app.AliasActivity extends android.app.Activity
+
+----------------FIELDS----------------
+
+public final java.lang.String ALIAS_META_DATA
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private android.content.Intent parseAlias(
+org.xmlpull.v1.XmlPullParser)
+
+protected void onCreate(
+android.os.Bundle)
+
+________________CLASS________________
+
+
+public class android.app.Application extends android.content.ContextWrapper implements android.content.ComponentCallbacks
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+final void attach(
+android.content.Context)
+
+public void onConfigurationChanged(
+android.content.res.Configuration)
+
+public void onCreate()
+
+public void onLowMemory()
+
+public void onTerminate()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ApplicationContext; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.app.ApplicationContext$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/ContentResolver$ParcelFileDescriptorInner;Landroid/content/ContentResolver$CursorWrapperInner; )
+public abstract class android.content.ContentResolver extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String CURSOR_DIR_BASE_TYPE
+
+public static final java.lang.String CURSOR_ITEM_BASE_TYPE
+
+public static final java.lang.String SCHEME_ANDROID_RESOURCE
+
+public static final java.lang.String SCHEME_CONTENT
+
+public static final java.lang.String SCHEME_FILE
+
+public static final java.lang.String SYNC_EXTRAS_ACCOUNT
+
+public static final java.lang.String SYNC_EXTRAS_DISCARD_LOCAL_DELETIONS
+
+public static final java.lang.String SYNC_EXTRAS_EXPEDITED
+
+public static final java.lang.String SYNC_EXTRAS_FORCE
+
+public static final java.lang.String SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS
+
+public static final java.lang.String SYNC_EXTRAS_UPLOAD
+
+private static final java.lang.String TAG
+
+private final android.content.Context mContext
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public static void validateSyncExtrasBundle(
+android.os.Bundle)
+
+protected abstract android.content.IContentProvider acquireProvider(
+android.content.Context
+java.lang.String)
+
+public final android.content.IContentProvider acquireProvider(
+android.net.Uri)
+
+public final android.content.IContentProvider acquireProvider(
+java.lang.String)
+
+public final int bulkInsert(
+android.net.Uri
+android.content.ContentValues[])
+
+public void cancelSync(
+android.net.Uri)
+
+public final int delete(
+android.net.Uri
+java.lang.String
+java.lang.String[])
+
+public final java.lang.String getType(
+android.net.Uri)
+
+public final android.net.Uri insert(
+android.net.Uri
+android.content.ContentValues)
+
+public void notifyChange(
+android.net.Uri
+android.database.ContentObserver)
+
+public void notifyChange(
+android.net.Uri
+android.database.ContentObserver
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public final android.os.ParcelFileDescriptor openFileDescriptor(
+android.net.Uri
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public final java.io.InputStream openInputStream(
+android.net.Uri)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public final java.io.OutputStream openOutputStream(
+android.net.Uri)
+
+public final android.database.Cursor query(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+public final void registerContentObserver(
+android.net.Uri
+boolean
+android.database.ContentObserver)
+
+public abstract boolean releaseProvider(
+android.content.IContentProvider)
+
+public void startSync(
+android.net.Uri
+android.os.Bundle)
+
+public final void unregisterContentObserver(
+android.database.ContentObserver)
+
+public final int update(
+android.net.Uri
+android.content.ContentValues
+java.lang.String
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =ApplicationContentResolver )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ApplicationContext; )
+final class android.app.ApplicationContext$ApplicationContentResolver extends android.content.ContentResolver
+
+----------------FIELDS----------------
+
+private final android.app.ActivityThread mMainThread
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.app.ActivityThread)
+
+protected android.content.IContentProvider acquireProvider(
+android.content.Context
+java.lang.String)
+
+public boolean releaseProvider(
+android.content.IContentProvider)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =PackageRemovedReceiver )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ApplicationContext$ApplicationPackageManager; )
+final class android.app.ApplicationContext$ApplicationPackageManager$PackageRemovedReceiver extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.app.ApplicationContext$1)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =ResourceName )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ApplicationContext$ApplicationPackageManager; )
+final class android.app.ApplicationContext$ApplicationPackageManager$ResourceName extends java.lang.Object
+
+----------------FIELDS----------------
+
+final int iconId
+
+final java.lang.String packageName
+----------------METHODS----------------
+
+ void <init>(
+android.content.pm.ApplicationInfo
+int)
+
+ void <init>(
+android.content.pm.ComponentInfo
+int)
+
+ void <init>(
+android.content.pm.ResolveInfo
+int)
+
+ void <init>(
+java.lang.String
+int)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract class android.content.pm.PackageManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int COMPONENT_ENABLED_STATE_DEFAULT
+
+public static final int COMPONENT_ENABLED_STATE_DISABLED
+
+public static final int COMPONENT_ENABLED_STATE_ENABLED
+
+public static final int DONT_DELETE_DATA
+
+public static final int DONT_KILL_APP
+
+public static final int FORWARD_LOCK_PACKAGE
+
+public static final int GET_ACTIVITIES
+
+public static final int GET_DISABLED_COMPONENTS
+
+public static final int GET_GIDS
+
+public static final int GET_INSTRUMENTATION
+
+public static final int GET_INTENT_FILTERS
+
+public static final int GET_META_DATA
+
+public static final int GET_PERMISSIONS
+
+public static final int GET_PROVIDERS
+
+public static final int GET_RECEIVERS
+
+public static final int GET_RESOLVED_FILTER
+
+public static final int GET_SERVICES
+
+public static final int GET_SHARED_LIBRARY_FILES
+
+public static final int GET_SIGNATURES
+
+public static final int GET_URI_PERMISSION_PATTERNS
+
+public static final int INSTALL_FAILED_ALREADY_EXISTS
+
+public static final int INSTALL_FAILED_DEXOPT
+
+public static final int INSTALL_FAILED_DUPLICATE_PACKAGE
+
+public static final int INSTALL_FAILED_INSUFFICIENT_STORAGE
+
+public static final int INSTALL_FAILED_INVALID_APK
+
+public static final int INSTALL_FAILED_INVALID_URI
+
+public static final int INSTALL_FAILED_MISSING_SHARED_LIBRARY
+
+public static final int INSTALL_FAILED_NO_SHARED_USER
+
+public static final int INSTALL_FAILED_OLDER_SDK
+
+public static final int INSTALL_FAILED_REPLACE_COULDNT_DELETE
+
+public static final int INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
+
+public static final int INSTALL_FAILED_UPDATE_INCOMPATIBLE
+
+public static final int INSTALL_PARSE_FAILED_BAD_MANIFEST
+
+public static final int INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME
+
+public static final int INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID
+
+public static final int INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING
+
+public static final int INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES
+
+public static final int INSTALL_PARSE_FAILED_MANIFEST_EMPTY
+
+public static final int INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
+
+public static final int INSTALL_PARSE_FAILED_NOT_APK
+
+public static final int INSTALL_PARSE_FAILED_NO_CERTIFICATES
+
+public static final int INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION
+
+public static final int INSTALL_SUCCEEDED
+
+public static final int MATCH_DEFAULT_ONLY
+
+public static final int PERMISSION_DENIED
+
+public static final int PERMISSION_GRANTED
+
+public static final int PKG_INSTALL_COMPLETE
+
+public static final int PKG_INSTALL_INCOMPLETE
+
+public static final int REPLACE_EXISTING_PACKAGE
+
+public static final int SIGNATURE_FIRST_NOT_SIGNED
+
+public static final int SIGNATURE_MATCH
+
+public static final int SIGNATURE_NEITHER_SIGNED
+
+public static final int SIGNATURE_NO_MATCH
+
+public static final int SIGNATURE_SECOND_NOT_SIGNED
+
+public static final int SIGNATURE_UNKNOWN_PACKAGE
+----------------METHODS----------------
+
+public void <init>()
+
+public abstract void addPackageToPreferred(
+java.lang.String)
+
+public abstract boolean addPermission(
+android.content.pm.PermissionInfo)
+
+public abstract void addPreferredActivity(
+android.content.IntentFilter
+int
+android.content.ComponentName[]
+android.content.ComponentName)
+
+public abstract int checkPermission(
+java.lang.String
+java.lang.String)
+
+public abstract int checkSignatures(
+java.lang.String
+java.lang.String)
+
+public abstract void clearApplicationUserData(
+java.lang.String
+android.content.pm.IPackageDataObserver)
+
+public abstract void clearPackagePreferredActivities(
+java.lang.String)
+
+public abstract void deleteApplicationCacheFiles(
+java.lang.String
+android.content.pm.IPackageDataObserver)
+
+public abstract void deletePackage(
+java.lang.String
+android.content.pm.IPackageDeleteObserver
+int)
+
+public abstract void freeApplicationCache(
+long
+android.content.pm.IPackageDataObserver)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract android.graphics.drawable.Drawable getActivityIcon(
+android.content.ComponentName)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract android.graphics.drawable.Drawable getActivityIcon(
+android.content.Intent)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract android.content.pm.ActivityInfo getActivityInfo(
+android.content.ComponentName
+int)
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/PermissionGroupInfo;>; )
+public abstract java.util.List getAllPermissionGroups(
+int)
+
+public abstract int getApplicationEnabledSetting(
+java.lang.String)
+
+public abstract android.graphics.drawable.Drawable getApplicationIcon(
+android.content.pm.ApplicationInfo)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract android.graphics.drawable.Drawable getApplicationIcon(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract android.content.pm.ApplicationInfo getApplicationInfo(
+java.lang.String
+int)
+
+public abstract java.lang.CharSequence getApplicationLabel(
+android.content.pm.ApplicationInfo)
+
+public abstract int getComponentEnabledSetting(
+android.content.ComponentName)
+
+public abstract android.graphics.drawable.Drawable getDefaultActivityIcon()
+
+public abstract android.graphics.drawable.Drawable getDrawable(
+java.lang.String
+int
+android.content.pm.ApplicationInfo)
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/ApplicationInfo;>; )
+public abstract java.util.List getInstalledApplications(
+int)
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/PackageInfo;>; )
+public abstract java.util.List getInstalledPackages(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract android.content.pm.InstrumentationInfo getInstrumentationInfo(
+android.content.ComponentName
+int)
+
+public abstract java.lang.String getNameForUid(
+int)
+
+public android.content.pm.PackageInfo getPackageArchiveInfo(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract int[] getPackageGids(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract android.content.pm.PackageInfo getPackageInfo(
+java.lang.String
+int)
+
+public abstract void getPackageSizeInfo(
+java.lang.String
+android.content.pm.IPackageStatsObserver)
+
+public abstract java.lang.String[] getPackagesForUid(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract android.content.pm.PermissionGroupInfo getPermissionGroupInfo(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract android.content.pm.PermissionInfo getPermissionInfo(
+java.lang.String
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/content/IntentFilter;>;Ljava/util/List<Landroid/content/ComponentName;>;Ljava/lang/String;)I )
+public abstract int getPreferredActivities(
+java.util.List
+java.util.List
+java.lang.String)
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/PackageInfo;>; )
+public abstract java.util.List getPreferredPackages(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract android.content.pm.ActivityInfo getReceiverInfo(
+android.content.ComponentName
+int)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract android.content.res.Resources getResourcesForActivity(
+android.content.ComponentName)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract android.content.res.Resources getResourcesForApplication(
+android.content.pm.ApplicationInfo)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract android.content.res.Resources getResourcesForApplication(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract android.content.pm.ServiceInfo getServiceInfo(
+android.content.ComponentName
+int)
+
+public abstract java.lang.CharSequence getText(
+java.lang.String
+int
+android.content.pm.ApplicationInfo)
+
+public abstract android.content.res.XmlResourceParser getXml(
+java.lang.String
+int
+android.content.pm.ApplicationInfo)
+
+public void installPackage(
+android.net.Uri)
+
+public abstract void installPackage(
+android.net.Uri
+android.content.pm.IPackageInstallObserver
+int)
+@dalvik.annotation.Signature (value =(Landroid/content/Intent;I)Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+public abstract java.util.List queryBroadcastReceivers(
+android.content.Intent
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;II)Ljava/util/List<Landroid/content/pm/ProviderInfo;>; )
+public abstract java.util.List queryContentProviders(
+java.lang.String
+int
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;I)Ljava/util/List<Landroid/content/pm/InstrumentationInfo;>; )
+public abstract java.util.List queryInstrumentation(
+java.lang.String
+int)
+@dalvik.annotation.Signature (value =(Landroid/content/Intent;I)Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+public abstract java.util.List queryIntentActivities(
+android.content.Intent
+int)
+@dalvik.annotation.Signature (value =(Landroid/content/ComponentName;[Landroid/content/Intent;Landroid/content/Intent;I)Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+public abstract java.util.List queryIntentActivityOptions(
+android.content.ComponentName
+android.content.Intent[]
+android.content.Intent
+int)
+@dalvik.annotation.Signature (value =(Landroid/content/Intent;I)Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+public abstract java.util.List queryIntentServices(
+android.content.Intent
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;I)Ljava/util/List<Landroid/content/pm/PermissionInfo;>; )
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public abstract java.util.List queryPermissionsByGroup(
+java.lang.String
+int)
+
+public abstract void removePackageFromPreferred(
+java.lang.String)
+
+public abstract void removePermission(
+java.lang.String)
+
+public abstract android.content.pm.ResolveInfo resolveActivity(
+android.content.Intent
+int)
+
+public abstract android.content.pm.ProviderInfo resolveContentProvider(
+java.lang.String
+int)
+
+public abstract android.content.pm.ResolveInfo resolveService(
+android.content.Intent
+int)
+
+public abstract void setApplicationEnabledSetting(
+java.lang.String
+int
+int)
+
+public abstract void setComponentEnabledSetting(
+android.content.ComponentName
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =ApplicationPackageManager )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ApplicationContext; )
+@dalvik.annotation.MemberClasses (value =Landroid/app/ApplicationContext$ApplicationPackageManager$ResourceName;Landroid/app/ApplicationContext$ApplicationPackageManager$PackageRemovedReceiver; )
+final class android.app.ApplicationContext$ApplicationPackageManager extends android.content.pm.PackageManager
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Landroid/app/ApplicationContext$ApplicationPackageManager$ResourceName;Ljava/lang/ref/WeakReference<Landroid/graphics/drawable/Drawable;>;>; )
+private static java.util.HashMap sIconCache
+
+private static android.content.BroadcastReceiver sPackageRemovedReceiver
+
+private static final java.lang.Object sPackageRemovedSync
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Landroid/app/ApplicationContext$ApplicationPackageManager$ResourceName;Ljava/lang/ref/WeakReference<Ljava/lang/CharSequence;>;>; )
+private static java.util.HashMap sStringCache
+
+private static final java.lang.Object sSync
+
+private final android.app.ApplicationContext mContext
+
+private final android.content.pm.IPackageManager mPM
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+android.app.ApplicationContext
+android.content.pm.IPackageManager)
+
+static java.lang.Object access$200()
+
+static java.util.HashMap access$300()
+
+static java.util.HashMap access$400()
+
+static void configurationChanged()
+
+private void establishPackageRemovedReceiver()
+
+private android.graphics.drawable.Drawable getCachedIcon(
+android.app.ApplicationContext$ApplicationPackageManager$ResourceName)
+
+private java.lang.CharSequence getCachedString(
+android.app.ApplicationContext$ApplicationPackageManager$ResourceName)
+
+private java.lang.CharSequence getLabel(
+android.app.ApplicationContext$ApplicationPackageManager$ResourceName
+android.content.pm.ApplicationInfo
+int)
+
+private void putCachedIcon(
+android.app.ApplicationContext$ApplicationPackageManager$ResourceName
+android.graphics.drawable.Drawable)
+
+private void putCachedString(
+android.app.ApplicationContext$ApplicationPackageManager$ResourceName
+java.lang.CharSequence)
+
+public void addPackageToPreferred(
+java.lang.String)
+
+public boolean addPermission(
+android.content.pm.PermissionInfo)
+
+public void addPreferredActivity(
+android.content.IntentFilter
+int
+android.content.ComponentName[]
+android.content.ComponentName)
+
+public int checkPermission(
+java.lang.String
+java.lang.String)
+
+public int checkSignatures(
+java.lang.String
+java.lang.String)
+
+public void clearApplicationUserData(
+java.lang.String
+android.content.pm.IPackageDataObserver)
+
+public void clearPackagePreferredActivities(
+java.lang.String)
+
+public void deleteApplicationCacheFiles(
+java.lang.String
+android.content.pm.IPackageDataObserver)
+
+public void deletePackage(
+java.lang.String
+android.content.pm.IPackageDeleteObserver
+int)
+
+public void freeApplicationCache(
+long
+android.content.pm.IPackageDataObserver)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public android.graphics.drawable.Drawable getActivityIcon(
+android.content.ComponentName)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public android.graphics.drawable.Drawable getActivityIcon(
+android.content.Intent)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public android.content.pm.ActivityInfo getActivityInfo(
+android.content.ComponentName
+int)
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/PermissionGroupInfo;>; )
+public java.util.List getAllPermissionGroups(
+int)
+
+public int getApplicationEnabledSetting(
+java.lang.String)
+
+public android.graphics.drawable.Drawable getApplicationIcon(
+android.content.pm.ApplicationInfo)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public android.graphics.drawable.Drawable getApplicationIcon(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public android.content.pm.ApplicationInfo getApplicationInfo(
+java.lang.String
+int)
+
+public java.lang.CharSequence getApplicationLabel(
+android.content.pm.ApplicationInfo)
+
+public int getComponentEnabledSetting(
+android.content.ComponentName)
+
+public android.graphics.drawable.Drawable getDefaultActivityIcon()
+
+public android.graphics.drawable.Drawable getDrawable(
+java.lang.String
+int
+android.content.pm.ApplicationInfo)
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/ApplicationInfo;>; )
+public java.util.List getInstalledApplications(
+int)
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/PackageInfo;>; )
+public java.util.List getInstalledPackages(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public android.content.pm.InstrumentationInfo getInstrumentationInfo(
+android.content.ComponentName
+int)
+
+public java.lang.String getNameForUid(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public int[] getPackageGids(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public android.content.pm.PackageInfo getPackageInfo(
+java.lang.String
+int)
+
+public void getPackageSizeInfo(
+java.lang.String
+android.content.pm.IPackageStatsObserver)
+
+public java.lang.String[] getPackagesForUid(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public android.content.pm.PermissionGroupInfo getPermissionGroupInfo(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public android.content.pm.PermissionInfo getPermissionInfo(
+java.lang.String
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/content/IntentFilter;>;Ljava/util/List<Landroid/content/ComponentName;>;Ljava/lang/String;)I )
+public int getPreferredActivities(
+java.util.List
+java.util.List
+java.lang.String)
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/PackageInfo;>; )
+public java.util.List getPreferredPackages(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public android.content.pm.ActivityInfo getReceiverInfo(
+android.content.ComponentName
+int)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public android.content.res.Resources getResourcesForActivity(
+android.content.ComponentName)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public android.content.res.Resources getResourcesForApplication(
+android.content.pm.ApplicationInfo)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public android.content.res.Resources getResourcesForApplication(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public android.content.pm.ServiceInfo getServiceInfo(
+android.content.ComponentName
+int)
+
+public java.lang.CharSequence getText(
+java.lang.String
+int
+android.content.pm.ApplicationInfo)
+
+public android.content.res.XmlResourceParser getXml(
+java.lang.String
+int
+android.content.pm.ApplicationInfo)
+
+public void installPackage(
+android.net.Uri
+android.content.pm.IPackageInstallObserver
+int)
+@dalvik.annotation.Signature (value =(Landroid/content/Intent;I)Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+public java.util.List queryBroadcastReceivers(
+android.content.Intent
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;II)Ljava/util/List<Landroid/content/pm/ProviderInfo;>; )
+public java.util.List queryContentProviders(
+java.lang.String
+int
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;I)Ljava/util/List<Landroid/content/pm/InstrumentationInfo;>; )
+public java.util.List queryInstrumentation(
+java.lang.String
+int)
+@dalvik.annotation.Signature (value =(Landroid/content/Intent;I)Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+public java.util.List queryIntentActivities(
+android.content.Intent
+int)
+@dalvik.annotation.Signature (value =(Landroid/content/ComponentName;[Landroid/content/Intent;Landroid/content/Intent;I)Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+public java.util.List queryIntentActivityOptions(
+android.content.ComponentName
+android.content.Intent[]
+android.content.Intent
+int)
+@dalvik.annotation.Signature (value =(Landroid/content/Intent;I)Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+public java.util.List queryIntentServices(
+android.content.Intent
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;I)Ljava/util/List<Landroid/content/pm/PermissionInfo;>; )
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public java.util.List queryPermissionsByGroup(
+java.lang.String
+int)
+
+public void removePackageFromPreferred(
+java.lang.String)
+
+public void removePermission(
+java.lang.String)
+
+public android.content.pm.ResolveInfo resolveActivity(
+android.content.Intent
+int)
+
+public android.content.pm.ProviderInfo resolveContentProvider(
+java.lang.String
+int)
+
+public android.content.pm.ResolveInfo resolveService(
+android.content.Intent
+int)
+
+public void setApplicationEnabledSetting(
+java.lang.String
+int
+int)
+
+public void setComponentEnabledSetting(
+android.content.ComponentName
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Editor )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SharedPreferences; )
+public abstract interface class android.content.SharedPreferences$Editor extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.content.SharedPreferences$Editor clear()
+
+public abstract boolean commit()
+
+public abstract android.content.SharedPreferences$Editor putBoolean(
+java.lang.String
+boolean)
+
+public abstract android.content.SharedPreferences$Editor putFloat(
+java.lang.String
+float)
+
+public abstract android.content.SharedPreferences$Editor putInt(
+java.lang.String
+int)
+
+public abstract android.content.SharedPreferences$Editor putLong(
+java.lang.String
+long)
+
+public abstract android.content.SharedPreferences$Editor putString(
+java.lang.String
+java.lang.String)
+
+public abstract android.content.SharedPreferences$Editor remove(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =17 name =EditorImpl )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ApplicationContext$SharedPreferencesImpl; )
+public final class android.app.ApplicationContext$SharedPreferencesImpl$EditorImpl extends java.lang.Object implements android.content.SharedPreferences$Editor
+
+----------------FIELDS----------------
+
+private boolean mClear
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>; )
+private final java.util.Map mModified
+
+final android.app.ApplicationContext$SharedPreferencesImpl this$0
+----------------METHODS----------------
+
+public void <init>(
+android.app.ApplicationContext$SharedPreferencesImpl)
+
+public android.content.SharedPreferences$Editor clear()
+
+public boolean commit()
+
+public android.content.SharedPreferences$Editor putBoolean(
+java.lang.String
+boolean)
+
+public android.content.SharedPreferences$Editor putFloat(
+java.lang.String
+float)
+
+public android.content.SharedPreferences$Editor putInt(
+java.lang.String
+int)
+
+public android.content.SharedPreferences$Editor putLong(
+java.lang.String
+long)
+
+public android.content.SharedPreferences$Editor putString(
+java.lang.String
+java.lang.String)
+
+public android.content.SharedPreferences$Editor remove(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/SharedPreferences$Editor;Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener; )
+public abstract interface class android.content.SharedPreferences extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean contains(
+java.lang.String)
+
+public abstract android.content.SharedPreferences$Editor edit()
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;*>; )
+public abstract java.util.Map getAll()
+
+public abstract boolean getBoolean(
+java.lang.String
+boolean)
+
+public abstract float getFloat(
+java.lang.String
+float)
+
+public abstract int getInt(
+java.lang.String
+int)
+
+public abstract long getLong(
+java.lang.String
+long)
+
+public abstract java.lang.String getString(
+java.lang.String
+java.lang.String)
+
+public abstract void registerOnSharedPreferenceChangeListener(
+android.content.SharedPreferences$OnSharedPreferenceChangeListener)
+
+public abstract void unregisterOnSharedPreferenceChangeListener(
+android.content.SharedPreferences$OnSharedPreferenceChangeListener)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/ApplicationContext$SharedPreferencesImpl$EditorImpl; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =SharedPreferencesImpl )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ApplicationContext; )
+final class android.app.ApplicationContext$SharedPreferencesImpl extends java.lang.Object implements android.content.SharedPreferences
+
+----------------FIELDS----------------
+
+private final java.io.File mFile
+
+private final android.os.FileUtils$FileStatus mFileStatus
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;>; )
+private java.util.List mListeners
+
+private java.util.Map mMap
+
+private final int mMode
+
+private long mTimestamp
+----------------METHODS----------------
+
+ void <init>(
+java.io.File
+int
+java.util.Map)
+
+static java.util.List access$500(
+android.app.ApplicationContext$SharedPreferencesImpl)
+
+static java.util.Map access$600(
+android.app.ApplicationContext$SharedPreferencesImpl)
+
+static boolean access$700(
+android.app.ApplicationContext$SharedPreferencesImpl)
+
+private boolean writeFileLocked()
+
+public boolean contains(
+java.lang.String)
+
+public android.content.SharedPreferences$Editor edit()
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;*>; )
+public java.util.Map getAll()
+
+public boolean getBoolean(
+java.lang.String
+boolean)
+
+public float getFloat(
+java.lang.String
+float)
+
+public int getInt(
+java.lang.String
+int)
+
+public long getLong(
+java.lang.String
+long)
+
+public java.lang.String getString(
+java.lang.String
+java.lang.String)
+
+public boolean hasFileChanged()
+
+public void registerOnSharedPreferenceChangeListener(
+android.content.SharedPreferences$OnSharedPreferenceChangeListener)
+
+public void replace(
+java.util.Map)
+
+public void unregisterOnSharedPreferenceChangeListener(
+android.content.SharedPreferences$OnSharedPreferenceChangeListener)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/IWallpaperServiceCallback$Stub; )
+public abstract interface class android.app.IWallpaperServiceCallback extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onWallpaperChanged()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/IWallpaperServiceCallback$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IWallpaperServiceCallback; )
+public abstract class android.app.IWallpaperServiceCallback$Stub extends android.os.Binder implements android.app.IWallpaperServiceCallback
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_onWallpaperChanged
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.app.IWallpaperServiceCallback asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ApplicationContext; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =WallpaperCallback )
+ class android.app.ApplicationContext$WallpaperCallback extends android.app.IWallpaperServiceCallback$Stub
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/lang/ref/WeakReference<Landroid/app/ApplicationContext;>; )
+private java.lang.ref.WeakReference mContext
+----------------METHODS----------------
+
+public void <init>(
+android.app.ApplicationContext)
+
+public void onWallpaperChanged()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/ApplicationContext$1;Landroid/app/ApplicationContext$WallpaperCallback;Landroid/app/ApplicationContext$SharedPreferencesImpl;Landroid/app/ApplicationContext$ApplicationPackageManager;Landroid/app/ApplicationContext$ApplicationContentResolver; )
+ class android.app.ApplicationContext extends android.content.Context
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG_ICONS
+
+private static final java.lang.String[] EMPTY_FILE_LIST
+
+private static final java.lang.String TAG
+
+private static android.bluetooth.BluetoothDevice sBluetoothDevice
+
+private static android.net.ConnectivityManager sConnectivityManager
+
+private static long sInstanceCount
+
+private static boolean sIsBluetoothDeviceCached
+
+private static android.location.LocationManager sLocationManager
+
+private static android.os.PowerManager sPowerManager
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/io/File;Landroid/app/ApplicationContext$SharedPreferencesImpl;>; )
+private static final java.util.HashMap sSharedPrefs
+
+private static final java.lang.Object sSync
+
+private static android.app.IWallpaperService sWallpaperService
+
+private static android.net.wifi.WifiManager sWifiManager
+
+private android.app.ActivityManager mActivityManager
+
+private android.os.IBinder mActivityToken
+
+private android.media.AudioManager mAudioManager
+
+private java.io.File mCacheDir
+
+private android.text.ClipboardManager mClipboardManager
+
+private android.app.ApplicationContext$ApplicationContentResolver mContentResolver
+
+private java.io.File mDatabasesDir
+
+private java.io.File mFilesDir
+
+private android.view.LayoutInflater mLayoutInflater
+
+ android.app.ActivityThread mMainThread
+
+private android.app.NotificationManager mNotificationManager
+
+private android.content.Context mOuterContext
+
+ android.app.ActivityThread$PackageInfo mPackageInfo
+
+private android.content.pm.PackageManager mPackageManager
+
+private java.io.File mPreferencesDir
+
+private android.content.Context mReceiverRestrictedContext
+
+private android.content.res.Resources mResources
+
+private android.app.SearchManager mSearchManager
+
+private android.hardware.SensorManager mSensorManager
+
+private android.app.StatusBarManager mStatusBarManager
+
+private final java.lang.Object mSync
+
+private android.telephony.TelephonyManager mTelephonyManager
+
+private android.content.res.Resources$Theme mTheme
+
+private int mThemeResource
+
+private android.os.Vibrator mVibrator
+
+private android.graphics.drawable.Drawable mWallpaper
+
+private android.app.IWallpaperServiceCallback mWallpaperCallback
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+public void <init>(
+android.app.ApplicationContext)
+
+static android.content.Intent access$100(
+android.app.ApplicationContext
+android.content.BroadcastReceiver
+android.content.IntentFilter
+java.lang.String
+android.os.Handler
+android.content.Context)
+
+static void access$800(
+java.lang.String
+int
+int)
+
+static android.graphics.drawable.Drawable access$902(
+android.app.ApplicationContext
+android.graphics.drawable.Drawable)
+
+static android.app.ApplicationContext createSystemContext(
+android.app.ActivityThread)
+
+private void enforce(
+java.lang.String
+int
+boolean
+int
+java.lang.String)
+
+private void enforceForUri(
+int
+int
+boolean
+int
+android.net.Uri
+java.lang.String)
+
+private android.app.ActivityManager getActivityManager()
+
+private android.media.AudioManager getAudioManager()
+
+private android.bluetooth.BluetoothDevice getBluetoothDevice()
+
+private android.text.ClipboardManager getClipboardManager()
+
+private android.net.ConnectivityManager getConnectivityManager()
+
+private android.graphics.drawable.Drawable getCurrentWallpaperLocked()
+
+private java.io.File getDataDirFile()
+
+private java.io.File getDatabasesDir()
+
+public static long getInstanceCount()
+
+private android.location.LocationManager getLocationManager()
+
+private android.app.NotificationManager getNotificationManager()
+
+private android.os.PowerManager getPowerManager()
+
+private java.io.File getPreferencesDir()
+
+private android.app.SearchManager getSearchManager()
+
+private android.hardware.SensorManager getSensorManager()
+
+private android.telephony.TelephonyManager getTelephonyManager()
+
+private android.os.Vibrator getVibrator()
+
+private android.app.IWallpaperService getWallpaperService()
+
+private android.net.wifi.WifiManager getWifiManager()
+
+private java.io.File makeFilename(
+java.io.File
+java.lang.String)
+
+private android.content.Intent registerReceiverInternal(
+android.content.BroadcastReceiver
+android.content.IntentFilter
+java.lang.String
+android.os.Handler
+android.content.Context)
+
+private static void setFilePermissionsFromMode(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void setWallpaper(
+java.io.InputStream
+java.io.FileOutputStream)
+
+private java.lang.String uriModeFlagToString(
+int)
+
+public boolean bindService(
+android.content.Intent
+android.content.ServiceConnection
+int)
+
+public int checkCallingOrSelfPermission(
+java.lang.String)
+
+public int checkCallingOrSelfUriPermission(
+android.net.Uri
+int)
+
+public int checkCallingPermission(
+java.lang.String)
+
+public int checkCallingUriPermission(
+android.net.Uri
+int)
+
+public int checkPermission(
+java.lang.String
+int
+int)
+
+public int checkUriPermission(
+android.net.Uri
+int
+int
+int)
+
+public int checkUriPermission(
+android.net.Uri
+java.lang.String
+java.lang.String
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void clearWallpaper()
+@dalvik.annotation.Throws (value =Landroid/content/pm/PackageManager$NameNotFoundException; )
+public android.content.Context createPackageContext(
+java.lang.String
+int)
+
+public java.lang.String[] databaseList()
+
+public boolean deleteDatabase(
+java.lang.String)
+
+public boolean deleteFile(
+java.lang.String)
+
+public void enforceCallingOrSelfPermission(
+java.lang.String
+java.lang.String)
+
+public void enforceCallingOrSelfUriPermission(
+android.net.Uri
+int
+java.lang.String)
+
+public void enforceCallingPermission(
+java.lang.String
+java.lang.String)
+
+public void enforceCallingUriPermission(
+android.net.Uri
+int
+java.lang.String)
+
+public void enforcePermission(
+java.lang.String
+int
+int
+java.lang.String)
+
+public void enforceUriPermission(
+android.net.Uri
+int
+int
+int
+java.lang.String)
+
+public void enforceUriPermission(
+android.net.Uri
+java.lang.String
+java.lang.String
+int
+int
+int
+java.lang.String)
+
+public java.lang.String[] fileList()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+final android.os.IBinder getActivityToken()
+
+public android.content.Context getApplicationContext()
+
+public android.content.res.AssetManager getAssets()
+
+public java.io.File getCacheDir()
+
+public java.lang.ClassLoader getClassLoader()
+
+public android.content.ContentResolver getContentResolver()
+
+public java.io.File getDatabasePath(
+java.lang.String)
+
+public java.io.File getDir(
+java.lang.String
+int)
+
+public java.io.File getFileStreamPath(
+java.lang.String)
+
+public java.io.File getFilesDir()
+
+public android.os.Looper getMainLooper()
+
+final android.content.Context getOuterContext()
+
+public java.lang.String getPackageCodePath()
+
+public android.content.pm.PackageManager getPackageManager()
+
+public java.lang.String getPackageName()
+
+public java.lang.String getPackageResourcePath()
+
+final android.content.Context getReceiverRestrictedContext()
+
+public android.content.res.Resources getResources()
+
+public android.content.SharedPreferences getSharedPreferences(
+java.lang.String
+int)
+
+public java.lang.Object getSystemService(
+java.lang.String)
+
+public android.content.res.Resources$Theme getTheme()
+
+public android.graphics.drawable.Drawable getWallpaper()
+
+public int getWallpaperDesiredMinimumHeight()
+
+public int getWallpaperDesiredMinimumWidth()
+
+public void grantUriPermission(
+java.lang.String
+android.net.Uri
+int)
+
+final void init(
+android.app.ActivityThread$PackageInfo
+android.os.IBinder
+android.app.ActivityThread)
+
+final void init(
+android.content.res.Resources
+android.app.ActivityThread)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public java.io.FileInputStream openFileInput(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public java.io.FileOutputStream openFileOutput(
+java.lang.String
+int)
+
+public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(
+java.lang.String
+int
+android.database.sqlite.SQLiteDatabase$CursorFactory)
+
+public android.graphics.drawable.Drawable peekWallpaper()
+
+final void performFinalCleanup(
+java.lang.String
+java.lang.String)
+
+public android.content.Intent registerReceiver(
+android.content.BroadcastReceiver
+android.content.IntentFilter)
+
+public android.content.Intent registerReceiver(
+android.content.BroadcastReceiver
+android.content.IntentFilter
+java.lang.String
+android.os.Handler)
+
+public void removeStickyBroadcast(
+android.content.Intent)
+
+public void revokeUriPermission(
+android.net.Uri
+int)
+
+final void scheduleFinalCleanup(
+java.lang.String
+java.lang.String)
+
+public void sendBroadcast(
+android.content.Intent)
+
+public void sendBroadcast(
+android.content.Intent
+java.lang.String)
+
+public void sendOrderedBroadcast(
+android.content.Intent
+java.lang.String)
+
+public void sendOrderedBroadcast(
+android.content.Intent
+java.lang.String
+android.content.BroadcastReceiver
+android.os.Handler
+int
+java.lang.String
+android.os.Bundle)
+
+public void sendStickyBroadcast(
+android.content.Intent)
+
+final void setActivityToken(
+android.os.IBinder)
+
+final void setOuterContext(
+android.content.Context)
+
+public void setTheme(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setWallpaper(
+android.graphics.Bitmap)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setWallpaper(
+java.io.InputStream)
+
+public void startActivity(
+android.content.Intent)
+
+public boolean startInstrumentation(
+android.content.ComponentName
+java.lang.String
+android.os.Bundle)
+
+public android.content.ComponentName startService(
+android.content.Intent)
+
+public boolean stopService(
+android.content.Intent)
+
+public void unbindService(
+android.content.ServiceConnection)
+
+public void unregisterReceiver(
+android.content.BroadcastReceiver)
+
+________________CLASS________________
+
+
+ class android.app.ApplicationLoaders extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final android.app.ApplicationLoaders gApplicationLoaders
+
+private final java.util.HashMap mLoaders
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+public static android.app.ApplicationLoaders getDefault()
+
+public java.lang.ClassLoader getClassLoader(
+java.lang.String
+java.lang.String
+java.lang.ClassLoader)
+
+________________CLASS________________
+
+
+ class android.app.ApplicationThreadProxy extends java.lang.Object implements android.app.IApplicationThread
+
+----------------FIELDS----------------
+
+private final android.os.IBinder mRemote
+----------------METHODS----------------
+
+public void <init>(
+android.os.IBinder)
+
+public final android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/util/List<Landroid/content/pm/ProviderInfo;>;Landroid/content/ComponentName;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/IInstrumentationWatcher;ILandroid/content/res/Configuration;Ljava/util/Map<Ljava/lang/String;Landroid/os/IBinder;>;)V )
+public final void bindApplication(
+java.lang.String
+android.content.pm.ApplicationInfo
+java.util.List
+android.content.ComponentName
+java.lang.String
+android.os.Bundle
+android.app.IInstrumentationWatcher
+int
+android.content.res.Configuration
+java.util.Map)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void dumpService(
+java.io.FileDescriptor
+android.os.IBinder
+java.lang.String[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void processInBackground()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void requestPss()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void requestThumbnail(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void scheduleActivityConfigurationChanged(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void scheduleBindService(
+android.os.IBinder
+android.content.Intent
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void scheduleConfigurationChanged(
+android.content.res.Configuration)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void scheduleCreateService(
+android.os.IBinder
+android.content.pm.ServiceInfo)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void scheduleDestroyActivity(
+android.os.IBinder
+boolean
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void scheduleExit()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Landroid/content/Intent;Landroid/os/IBinder;Landroid/content/pm/ActivityInfo;Landroid/os/Bundle;Ljava/util/List<Landroid/app/ResultInfo;>;Ljava/util/List<Landroid/content/Intent;>;Z)V )
+public final void scheduleLaunchActivity(
+android.content.Intent
+android.os.IBinder
+android.content.pm.ActivityInfo
+android.os.Bundle
+java.util.List
+java.util.List
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void scheduleLowMemory()
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/content/Intent;>;Landroid/os/IBinder;)V )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void scheduleNewIntent(
+java.util.List
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void schedulePauseActivity(
+android.os.IBinder
+boolean
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void scheduleReceiver(
+android.content.Intent
+android.content.pm.ActivityInfo
+int
+java.lang.String
+android.os.Bundle
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void scheduleRegisteredReceiver(
+android.app.IIntentReceiver
+android.content.Intent
+int
+java.lang.String
+android.os.Bundle
+boolean)
+@dalvik.annotation.Signature (value =(Landroid/os/IBinder;Ljava/util/List<Landroid/app/ResultInfo;>;Ljava/util/List<Landroid/content/Intent;>;IZ)V )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void scheduleRelaunchActivity(
+android.os.IBinder
+java.util.List
+java.util.List
+int
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void scheduleResumeActivity(
+android.os.IBinder)
+@dalvik.annotation.Signature (value =(Landroid/os/IBinder;Ljava/util/List<Landroid/app/ResultInfo;>;)V )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void scheduleSendResult(
+android.os.IBinder
+java.util.List)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void scheduleServiceArgs(
+android.os.IBinder
+int
+android.content.Intent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void scheduleStopActivity(
+android.os.IBinder
+boolean
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void scheduleStopService(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void scheduleUnbindService(
+android.os.IBinder
+android.content.Intent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public final void scheduleWindowVisibility(
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void updateTimeZone()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/DatePickerDialog; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnDateSetListener )
+public abstract interface class android.app.DatePickerDialog$OnDateSetListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onDateSet(
+android.widget.DatePicker
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnClickListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/DialogInterface; )
+public abstract interface class android.content.DialogInterface$OnClickListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onClick(
+android.content.DialogInterface
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/DatePicker; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnDateChangedListener )
+public abstract interface class android.widget.DatePicker$OnDateChangedListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onDateChanged(
+android.widget.DatePicker
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/DatePickerDialog$OnDateSetListener; )
+public class android.app.DatePickerDialog extends android.app.AlertDialog implements android.content.DialogInterface$OnClickListener, android.widget.DatePicker$OnDateChangedListener
+
+----------------FIELDS----------------
+
+private static final java.lang.String DAY
+
+private static final java.lang.String MONTH
+
+private static final java.lang.String YEAR
+
+private final java.util.Calendar mCalendar
+
+private final android.app.DatePickerDialog$OnDateSetListener mCallBack
+
+private final java.text.DateFormat mDateFormat
+
+private final android.widget.DatePicker mDatePicker
+
+private int mInitialDay
+
+private int mInitialMonth
+
+private int mInitialYear
+
+private final java.lang.String[] mWeekDays
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+int
+android.app.DatePickerDialog$OnDateSetListener
+int
+int
+int)
+
+public void <init>(
+android.content.Context
+android.app.DatePickerDialog$OnDateSetListener
+int
+int
+int)
+
+private void updateTitle(
+int
+int
+int)
+
+public void onClick(
+android.content.DialogInterface
+int)
+
+public void onDateChanged(
+android.widget.DatePicker
+int
+int
+int)
+
+public void onRestoreInstanceState(
+android.os.Bundle)
+
+public android.os.Bundle onSaveInstanceState()
+
+public void show()
+
+public void updateDate(
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/Dialog; )
+ class android.app.Dialog$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.app.Dialog this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.Dialog)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/Dialog; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =DismissCancelHandler )
+final class android.app.Dialog$DismissCancelHandler extends android.os.Handler
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/lang/ref/WeakReference<Landroid/content/DialogInterface;>; )
+private java.lang.ref.WeakReference mDialog
+----------------METHODS----------------
+
+public void <init>(
+android.app.Dialog)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnChildClickListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ExpandableListView; )
+public abstract interface class android.widget.ExpandableListView$OnChildClickListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean onChildClick(
+android.widget.ExpandableListView
+android.view.View
+int
+int
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ExpandableListView; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnGroupCollapseListener )
+public abstract interface class android.widget.ExpandableListView$OnGroupCollapseListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onGroupCollapse(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnGroupExpandListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ExpandableListView; )
+public abstract interface class android.widget.ExpandableListView$OnGroupExpandListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onGroupExpand(
+int)
+
+________________CLASS________________
+
+
+public class android.app.ExpandableListActivity extends android.app.Activity implements android.view.View$OnCreateContextMenuListener, android.widget.ExpandableListView$OnChildClickListener, android.widget.ExpandableListView$OnGroupCollapseListener, android.widget.ExpandableListView$OnGroupExpandListener
+
+----------------FIELDS----------------
+
+ android.widget.ExpandableListAdapter mAdapter
+
+ boolean mFinishedStart
+
+ android.widget.ExpandableListView mList
+----------------METHODS----------------
+
+public void <init>()
+
+private void ensureList()
+
+public android.widget.ExpandableListAdapter getExpandableListAdapter()
+
+public android.widget.ExpandableListView getExpandableListView()
+
+public long getSelectedId()
+
+public long getSelectedPosition()
+
+public boolean onChildClick(
+android.widget.ExpandableListView
+android.view.View
+int
+int
+long)
+
+public void onContentChanged()
+
+public void onCreateContextMenu(
+android.view.ContextMenu
+android.view.View
+android.view.ContextMenu$ContextMenuInfo)
+
+public void onGroupCollapse(
+int)
+
+public void onGroupExpand(
+int)
+
+protected void onRestoreInstanceState(
+android.os.Bundle)
+
+public void setListAdapter(
+android.widget.ExpandableListAdapter)
+
+public boolean setSelectedChild(
+int
+int
+boolean)
+
+public void setSelectedGroup(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IActivityManager; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.app.IActivityManager$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IActivityManager$ContentProviderHolder; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/app/IActivityManager$ContentProviderHolder;>; )
+final class android.app.IActivityManager$ContentProviderHolder$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.app.IActivityManager$ContentProviderHolder createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.app.IActivityManager$ContentProviderHolder[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =ContentProviderHolder )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IActivityManager; )
+public class android.app.IActivityManager$ContentProviderHolder extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/app/IActivityManager$ContentProviderHolder;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public final android.content.pm.ProviderInfo info
+
+public boolean noReleaseNeeded
+
+public final java.lang.String permissionFailure
+
+public android.content.IContentProvider provider
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.pm.ProviderInfo)
+
+public void <init>(
+android.content.pm.ProviderInfo
+java.lang.String)
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.app.IActivityManager$1)
+
+public int describeContents()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/IActivityPendingResult$Stub; )
+public abstract interface class android.app.IActivityPendingResult extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean sendResult(
+int
+java.lang.String
+android.os.Bundle)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IActivityPendingResult$Stub; )
+ class android.app.IActivityPendingResult$Stub$Proxy extends java.lang.Object implements android.app.IActivityPendingResult
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean sendResult(
+int
+java.lang.String
+android.os.Bundle)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IActivityPendingResult; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.MemberClasses (value =Landroid/app/IActivityPendingResult$Stub$Proxy; )
+public abstract class android.app.IActivityPendingResult$Stub extends android.os.Binder implements android.app.IActivityPendingResult
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_sendResult
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.app.IActivityPendingResult asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/IActivityWatcher$Stub; )
+public abstract interface class android.app.IActivityWatcher extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean activityResuming(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean activityStarting(
+android.content.Intent
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean appCrashed(
+java.lang.String
+int
+java.lang.String
+java.lang.String
+byte[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int appNotResponding(
+java.lang.String
+int
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IActivityWatcher$Stub; )
+ class android.app.IActivityWatcher$Stub$Proxy extends java.lang.Object implements android.app.IActivityWatcher
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean activityResuming(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean activityStarting(
+android.content.Intent
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean appCrashed(
+java.lang.String
+int
+java.lang.String
+java.lang.String
+byte[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int appNotResponding(
+java.lang.String
+int
+java.lang.String)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.MemberClasses (value =Landroid/app/IActivityWatcher$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IActivityWatcher; )
+public abstract class android.app.IActivityWatcher$Stub extends android.os.Binder implements android.app.IActivityWatcher
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_activityResuming
+
+static final int TRANSACTION_activityStarting
+
+static final int TRANSACTION_appCrashed
+
+static final int TRANSACTION_appNotResponding
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.app.IActivityWatcher asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/IAlarmManager$Stub; )
+public abstract interface class android.app.IAlarmManager extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void remove(
+android.app.PendingIntent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void set(
+int
+long
+android.app.PendingIntent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setRepeating(
+int
+long
+long
+android.app.PendingIntent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setTimeZone(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IAlarmManager$Stub; )
+ class android.app.IAlarmManager$Stub$Proxy extends java.lang.Object implements android.app.IAlarmManager
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void remove(
+android.app.PendingIntent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void set(
+int
+long
+android.app.PendingIntent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setRepeating(
+int
+long
+long
+android.app.PendingIntent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setTimeZone(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.MemberClasses (value =Landroid/app/IAlarmManager$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IAlarmManager; )
+public abstract class android.app.IAlarmManager$Stub extends android.os.Binder implements android.app.IAlarmManager
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_remove
+
+static final int TRANSACTION_set
+
+static final int TRANSACTION_setRepeating
+
+static final int TRANSACTION_setTimeZone
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.app.IAlarmManager asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/IInstrumentationWatcher$Stub; )
+public abstract interface class android.app.IInstrumentationWatcher extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void instrumentationFinished(
+android.content.ComponentName
+int
+android.os.Bundle)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void instrumentationStatus(
+android.content.ComponentName
+int
+android.os.Bundle)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IInstrumentationWatcher$Stub; )
+ class android.app.IInstrumentationWatcher$Stub$Proxy extends java.lang.Object implements android.app.IInstrumentationWatcher
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void instrumentationFinished(
+android.content.ComponentName
+int
+android.os.Bundle)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void instrumentationStatus(
+android.content.ComponentName
+int
+android.os.Bundle)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/IInstrumentationWatcher$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IInstrumentationWatcher; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class android.app.IInstrumentationWatcher$Stub extends android.os.Binder implements android.app.IInstrumentationWatcher
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_instrumentationFinished
+
+static final int TRANSACTION_instrumentationStatus
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.app.IInstrumentationWatcher asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IIntentReceiver$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class android.app.IIntentReceiver$Stub$Proxy extends java.lang.Object implements android.app.IIntentReceiver
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void performReceive(
+android.content.Intent
+int
+java.lang.String
+android.os.Bundle
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/IIntentSender$Stub; )
+public abstract interface class android.app.IIntentSender extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int send(
+int
+android.content.Intent
+java.lang.String
+android.app.IIntentReceiver)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IIntentSender$Stub; )
+ class android.app.IIntentSender$Stub$Proxy extends java.lang.Object implements android.app.IIntentSender
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int send(
+int
+android.content.Intent
+java.lang.String
+android.app.IIntentReceiver)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.MemberClasses (value =Landroid/app/IIntentSender$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IIntentSender; )
+public abstract class android.app.IIntentSender$Stub extends android.os.Binder implements android.app.IIntentSender
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_send
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.app.IIntentSender asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/INotificationManager$Stub; )
+public abstract interface class android.app.INotificationManager extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void cancelAllNotifications(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void cancelNotification(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void cancelToast(
+java.lang.String
+android.app.ITransientNotification)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void enqueueNotification(
+java.lang.String
+int
+android.app.Notification
+int[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void enqueueToast(
+java.lang.String
+android.app.ITransientNotification
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/INotificationManager$Stub; )
+ class android.app.INotificationManager$Stub$Proxy extends java.lang.Object implements android.app.INotificationManager
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void cancelAllNotifications(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void cancelNotification(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void cancelToast(
+java.lang.String
+android.app.ITransientNotification)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void enqueueNotification(
+java.lang.String
+int
+android.app.Notification
+int[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void enqueueToast(
+java.lang.String
+android.app.ITransientNotification
+int)
+
+public java.lang.String getInterfaceDescriptor()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/INotificationManager$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/INotificationManager; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class android.app.INotificationManager$Stub extends android.os.Binder implements android.app.INotificationManager
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_cancelAllNotifications
+
+static final int TRANSACTION_cancelNotification
+
+static final int TRANSACTION_cancelToast
+
+static final int TRANSACTION_enqueueNotification
+
+static final int TRANSACTION_enqueueToast
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.app.INotificationManager asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/ISearchManager$Stub; )
+public abstract interface class android.app.ISearchManager extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.server.search.SearchableInfo getSearchableInfo(
+android.content.ComponentName
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ISearchManager$Stub; )
+ class android.app.ISearchManager$Stub$Proxy extends java.lang.Object implements android.app.ISearchManager
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.server.search.SearchableInfo getSearchableInfo(
+android.content.ComponentName
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ISearchManager; )
+@dalvik.annotation.MemberClasses (value =Landroid/app/ISearchManager$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class android.app.ISearchManager$Stub extends android.os.Binder implements android.app.ISearchManager
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_getSearchableInfo
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.app.ISearchManager asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IServiceConnection$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class android.app.IServiceConnection$Stub$Proxy extends java.lang.Object implements android.app.IServiceConnection
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void connected(
+android.content.ComponentName
+android.os.IBinder)
+
+public java.lang.String getInterfaceDescriptor()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/IStatusBar$Stub; )
+public abstract interface class android.app.IStatusBar extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void activate()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.os.IBinder addIcon(
+java.lang.String
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void deactivate()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void disable(
+int
+android.os.IBinder
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void removeIcon(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void toggle()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void updateIcon(
+android.os.IBinder
+java.lang.String
+java.lang.String
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IStatusBar$Stub; )
+ class android.app.IStatusBar$Stub$Proxy extends java.lang.Object implements android.app.IStatusBar
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void activate()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.os.IBinder addIcon(
+java.lang.String
+java.lang.String
+int
+int)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void deactivate()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void disable(
+int
+android.os.IBinder
+java.lang.String)
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void removeIcon(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void toggle()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void updateIcon(
+android.os.IBinder
+java.lang.String
+java.lang.String
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IStatusBar; )
+@dalvik.annotation.MemberClasses (value =Landroid/app/IStatusBar$Stub$Proxy; )
+public abstract class android.app.IStatusBar$Stub extends android.os.Binder implements android.app.IStatusBar
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_activate
+
+static final int TRANSACTION_addIcon
+
+static final int TRANSACTION_deactivate
+
+static final int TRANSACTION_disable
+
+static final int TRANSACTION_removeIcon
+
+static final int TRANSACTION_toggle
+
+static final int TRANSACTION_updateIcon
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.app.IStatusBar asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/IThumbnailReceiver$Stub; )
+public abstract interface class android.app.IThumbnailReceiver extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void finished()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void newThumbnail(
+int
+android.graphics.Bitmap
+java.lang.CharSequence)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IThumbnailReceiver$Stub; )
+ class android.app.IThumbnailReceiver$Stub$Proxy extends java.lang.Object implements android.app.IThumbnailReceiver
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void finished()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void newThumbnail(
+int
+android.graphics.Bitmap
+java.lang.CharSequence)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.MemberClasses (value =Landroid/app/IThumbnailReceiver$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IThumbnailReceiver; )
+public abstract class android.app.IThumbnailReceiver$Stub extends android.os.Binder implements android.app.IThumbnailReceiver
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_finished
+
+static final int TRANSACTION_newThumbnail
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.app.IThumbnailReceiver asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/ITransientNotification$Stub; )
+public abstract interface class android.app.ITransientNotification extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void hide()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void show()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ITransientNotification$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class android.app.ITransientNotification$Stub$Proxy extends java.lang.Object implements android.app.ITransientNotification
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void hide()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void show()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/ITransientNotification$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ITransientNotification; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class android.app.ITransientNotification$Stub extends android.os.Binder implements android.app.ITransientNotification
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_hide
+
+static final int TRANSACTION_show
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.app.ITransientNotification asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/IWallpaperService$Stub; )
+public abstract interface class android.app.IWallpaperService extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void clearWallpaper()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getHeightHint()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.os.ParcelFileDescriptor getWallpaper(
+android.app.IWallpaperServiceCallback)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getWidthHint()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setDimensionHints(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.os.ParcelFileDescriptor setWallpaper()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IWallpaperService$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class android.app.IWallpaperService$Stub$Proxy extends java.lang.Object implements android.app.IWallpaperService
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void clearWallpaper()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getHeightHint()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.os.ParcelFileDescriptor getWallpaper(
+android.app.IWallpaperServiceCallback)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getWidthHint()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setDimensionHints(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.os.ParcelFileDescriptor setWallpaper()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IWallpaperService; )
+@dalvik.annotation.MemberClasses (value =Landroid/app/IWallpaperService$Stub$Proxy; )
+public abstract class android.app.IWallpaperService$Stub extends android.os.Binder implements android.app.IWallpaperService
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_clearWallpaper
+
+static final int TRANSACTION_getHeightHint
+
+static final int TRANSACTION_getWallpaper
+
+static final int TRANSACTION_getWidthHint
+
+static final int TRANSACTION_setDimensionHints
+
+static final int TRANSACTION_setWallpaper
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.app.IWallpaperService asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/IWallpaperServiceCallback$Stub; )
+ class android.app.IWallpaperServiceCallback$Stub$Proxy extends java.lang.Object implements android.app.IWallpaperServiceCallback
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onWallpaperChanged()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/Instrumentation; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.app.Instrumentation$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =ContextMenuRunnable )
+ class android.app.Instrumentation$1ContextMenuRunnable extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private final android.app.Activity activity
+
+private final int flags
+
+private final int identifier
+
+ boolean returnValue
+
+final android.app.Instrumentation this$0
+----------------METHODS----------------
+
+public void <init>(
+android.app.Instrumentation
+android.app.Activity
+int
+int)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =MenuRunnable )
+ class android.app.Instrumentation$1MenuRunnable extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private final android.app.Activity activity
+
+private final int flags
+
+private final int identifier
+
+ boolean returnValue
+
+final android.app.Instrumentation this$0
+----------------METHODS----------------
+
+public void <init>(
+android.app.Instrumentation
+android.app.Activity
+int
+int)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =18 name =ActivityGoing )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/Instrumentation; )
+final class android.app.Instrumentation$ActivityGoing extends java.lang.Object implements android.os.MessageQueue$IdleHandler
+
+----------------FIELDS----------------
+
+private final android.app.Instrumentation$ActivityWaiter mWaiter
+
+final android.app.Instrumentation this$0
+----------------METHODS----------------
+
+public void <init>(
+android.app.Instrumentation
+android.app.Instrumentation$ActivityWaiter)
+
+public final boolean queueIdle()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =ActivityMonitor )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/Instrumentation; )
+public class android.app.Instrumentation$ActivityMonitor extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final boolean mBlock
+
+private final java.lang.String mClass
+
+ int mHits
+
+ android.app.Activity mLastActivity
+
+private final android.app.Instrumentation$ActivityResult mResult
+
+private final android.content.IntentFilter mWhich
+----------------METHODS----------------
+
+public void <init>(
+android.content.IntentFilter
+android.app.Instrumentation$ActivityResult
+boolean)
+
+public void <init>(
+java.lang.String
+android.app.Instrumentation$ActivityResult
+boolean)
+
+public final android.content.IntentFilter getFilter()
+
+public final int getHits()
+
+public final android.app.Activity getLastActivity()
+
+public final android.app.Instrumentation$ActivityResult getResult()
+
+public final boolean isBlocking()
+
+final boolean match(
+android.content.Context
+android.app.Activity
+android.content.Intent)
+
+public final android.app.Activity waitForActivity()
+
+public final android.app.Activity waitForActivityWithTimeout(
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/Instrumentation; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =ActivityResult )
+public final class android.app.Instrumentation$ActivityResult extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int mResultCode
+
+private final android.content.Intent mResultData
+----------------METHODS----------------
+
+public void <init>(
+int
+android.content.Intent)
+
+public int getResultCode()
+
+public android.content.Intent getResultData()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/Instrumentation; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =ActivityWaiter )
+final class android.app.Instrumentation$ActivityWaiter extends java.lang.Object
+
+----------------FIELDS----------------
+
+public android.app.Activity activity
+
+public final android.content.Intent intent
+----------------METHODS----------------
+
+public void <init>(
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/Instrumentation; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =EmptyRunnable )
+final class android.app.Instrumentation$EmptyRunnable extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.app.Instrumentation$1)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =Idler )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/Instrumentation; )
+final class android.app.Instrumentation$Idler extends java.lang.Object implements android.os.MessageQueue$IdleHandler
+
+----------------FIELDS----------------
+
+private final java.lang.Runnable mCallback
+
+private boolean mIdle
+----------------METHODS----------------
+
+public void <init>(
+java.lang.Runnable)
+
+public final boolean queueIdle()
+
+public void waitForIdle()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/Instrumentation; )
+@dalvik.annotation.InnerClass (accessFlags =18 name =InstrumentationThread )
+final class android.app.Instrumentation$InstrumentationThread extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final android.app.Instrumentation this$0
+----------------METHODS----------------
+
+public void <init>(
+android.app.Instrumentation
+java.lang.String)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =SyncRunnable )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/Instrumentation; )
+final class android.app.Instrumentation$SyncRunnable extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private boolean mComplete
+
+private final java.lang.Runnable mTarget
+----------------METHODS----------------
+
+public void <init>(
+java.lang.Runnable)
+
+public void run()
+
+public void waitForComplete()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/Instrumentation$1;Landroid/app/Instrumentation$Idler;Landroid/app/Instrumentation$ActivityGoing;Landroid/app/Instrumentation$ActivityWaiter;Landroid/app/Instrumentation$SyncRunnable;Landroid/app/Instrumentation$EmptyRunnable;Landroid/app/Instrumentation$InstrumentationThread;Landroid/app/Instrumentation$ActivityResult;Landroid/app/Instrumentation$ActivityMonitor; )
+public class android.app.Instrumentation extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String REPORT_KEY_IDENTIFIER
+
+public static final java.lang.String REPORT_KEY_STREAMRESULT
+
+private static final java.lang.String TAG
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/app/Instrumentation$ActivityMonitor;>; )
+private java.util.List mActivityMonitors
+
+private android.content.Context mAppContext
+
+private boolean mAutomaticPerformanceSnapshots
+
+private android.content.ComponentName mComponent
+
+private android.content.Context mInstrContext
+
+private android.os.MessageQueue mMessageQueue
+
+private android.os.Bundle mPerfMetrics
+
+private long mPreCpuTime
+
+private android.os.Bundle mPrePerfMetrics
+
+private java.lang.Thread mRunner
+
+private long mStart
+
+private final java.lang.Object mSync
+
+private android.app.ActivityThread mThread
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/app/Instrumentation$ActivityWaiter;>; )
+private java.util.List mWaitingActivities
+
+private android.app.IInstrumentationWatcher mWatcher
+----------------METHODS----------------
+
+public void <init>()
+
+static boolean access$100(
+android.app.Instrumentation)
+
+static java.lang.Object access$200(
+android.app.Instrumentation)
+
+static java.util.List access$300(
+android.app.Instrumentation)
+
+private void addPerfMetricInt(
+java.lang.String
+int)
+
+private void addPerfMetricLong(
+java.lang.String
+long)
+
+private void addValue(
+java.lang.String
+int
+android.os.Bundle)
+
+static void checkStartActivityResult(
+int
+android.content.Intent)
+@dalvik.annotation.Throws (value =Ljava/lang/InstantiationException;Ljava/lang/IllegalAccessException;Ljava/lang/ClassNotFoundException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Landroid/content/Context;)Landroid/app/Application; )
+public static android.app.Application newApplication(
+java.lang.Class
+android.content.Context)
+
+private final void validateNotAppThread()
+
+public android.app.Instrumentation$ActivityMonitor addMonitor(
+android.content.IntentFilter
+android.app.Instrumentation$ActivityResult
+boolean)
+
+public android.app.Instrumentation$ActivityMonitor addMonitor(
+java.lang.String
+android.app.Instrumentation$ActivityResult
+boolean)
+
+public void addMonitor(
+android.app.Instrumentation$ActivityMonitor)
+
+public void callActivityOnCreate(
+android.app.Activity
+android.os.Bundle)
+
+public void callActivityOnDestroy(
+android.app.Activity)
+
+public void callActivityOnNewIntent(
+android.app.Activity
+android.content.Intent)
+
+public void callActivityOnPause(
+android.app.Activity)
+
+public void callActivityOnPostCreate(
+android.app.Activity
+android.os.Bundle)
+
+public void callActivityOnRestart(
+android.app.Activity)
+
+public void callActivityOnRestoreInstanceState(
+android.app.Activity
+android.os.Bundle)
+
+public void callActivityOnResume(
+android.app.Activity)
+
+public void callActivityOnSaveInstanceState(
+android.app.Activity
+android.os.Bundle)
+
+public void callActivityOnStart(
+android.app.Activity)
+
+public void callActivityOnStop(
+android.app.Activity)
+
+public void callApplicationOnCreate(
+android.app.Application)
+
+public boolean checkMonitorHit(
+android.app.Instrumentation$ActivityMonitor
+int)
+
+public void endPerformanceSnapshot()
+
+public android.app.Instrumentation$ActivityResult execStartActivity(
+android.content.Context
+android.os.IBinder
+android.os.IBinder
+android.app.Activity
+android.content.Intent
+int)
+
+public void finish(
+int
+android.os.Bundle)
+
+public android.os.Bundle getAllocCounts()
+
+public android.os.Bundle getBinderCounts()
+
+public android.content.ComponentName getComponentName()
+
+public android.content.Context getContext()
+
+public android.content.Context getTargetContext()
+
+final void init(
+android.app.ActivityThread
+android.content.Context
+android.content.Context
+android.content.ComponentName
+android.app.IInstrumentationWatcher)
+
+public boolean invokeContextMenuAction(
+android.app.Activity
+int
+int)
+
+public boolean invokeMenuActionSync(
+android.app.Activity
+int
+int)
+
+public boolean isProfiling()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Landroid/content/Context;Landroid/os/IBinder;Landroid/app/Application;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/CharSequence;Landroid/app/Activity;Ljava/lang/String;Ljava/lang/Object;)Landroid/app/Activity; )
+@dalvik.annotation.Throws (value =Ljava/lang/InstantiationException;Ljava/lang/IllegalAccessException; )
+public android.app.Activity newActivity(
+java.lang.Class
+android.content.Context
+android.os.IBinder
+android.app.Application
+android.content.Intent
+android.content.pm.ActivityInfo
+java.lang.CharSequence
+android.app.Activity
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/InstantiationException;Ljava/lang/IllegalAccessException;Ljava/lang/ClassNotFoundException; )
+public android.app.Activity newActivity(
+java.lang.ClassLoader
+java.lang.String
+android.content.Intent)
+@dalvik.annotation.Throws (value =Ljava/lang/InstantiationException;Ljava/lang/IllegalAccessException;Ljava/lang/ClassNotFoundException; )
+public android.app.Application newApplication(
+java.lang.ClassLoader
+java.lang.String
+android.content.Context)
+
+public void onCreate(
+android.os.Bundle)
+
+public void onDestroy()
+
+public boolean onException(
+java.lang.Object
+java.lang.Throwable)
+
+public void onStart()
+
+public void removeMonitor(
+android.app.Instrumentation$ActivityMonitor)
+
+public void runOnMainSync(
+java.lang.Runnable)
+
+public void sendCharacterSync(
+int)
+
+public void sendKeyDownUpSync(
+int)
+
+public void sendKeySync(
+android.view.KeyEvent)
+
+public void sendPointerSync(
+android.view.MotionEvent)
+
+public void sendStatus(
+int
+android.os.Bundle)
+
+public void sendStringSync(
+java.lang.String)
+
+public void sendTrackballEventSync(
+android.view.MotionEvent)
+
+public void setAutomaticPerformanceSnapshots()
+
+public void setInTouchMode(
+boolean)
+
+public void start()
+
+public android.app.Activity startActivitySync(
+android.content.Intent)
+
+public void startAllocCounting()
+
+public void startPerformanceSnapshot()
+
+public void startProfiling()
+
+public void stopAllocCounting()
+
+public void stopProfiling()
+
+public void waitForIdle(
+java.lang.Runnable)
+
+public void waitForIdleSync()
+
+public android.app.Activity waitForMonitor(
+android.app.Instrumentation$ActivityMonitor)
+
+public android.app.Activity waitForMonitorWithTimeout(
+android.app.Instrumentation$ActivityMonitor
+long)
+
+________________CLASS________________
+
+
+public class android.util.AndroidRuntimeException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.Exception)
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+final class android.app.IntentReceiverLeaked extends android.util.AndroidRuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/IOnKeyguardExitResult$Stub; )
+public abstract interface class android.view.IOnKeyguardExitResult extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onKeyguardExitResult(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/IOnKeyguardExitResult; )
+@dalvik.annotation.MemberClasses (value =Landroid/view/IOnKeyguardExitResult$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class android.view.IOnKeyguardExitResult$Stub extends android.os.Binder implements android.view.IOnKeyguardExitResult
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_onKeyguardExitResult
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.view.IOnKeyguardExitResult asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.app.KeyguardManager$1 extends android.view.IOnKeyguardExitResult$Stub
+
+----------------FIELDS----------------
+
+final android.app.KeyguardManager this$0
+
+final android.app.KeyguardManager$OnKeyguardExitResult val$callback
+----------------METHODS----------------
+
+ void <init>(
+android.app.KeyguardManager
+android.app.KeyguardManager$OnKeyguardExitResult)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onKeyguardExitResult(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/KeyguardManager; )
+@dalvik.annotation.InnerClass (accessFlags =1 name =KeyguardLock )
+public class android.app.KeyguardManager$KeyguardLock extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.String mTag
+
+private android.os.IBinder mToken
+
+final android.app.KeyguardManager this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.KeyguardManager
+java.lang.String)
+
+public void disableKeyguard()
+
+public void reenableKeyguard()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnKeyguardExitResult )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/KeyguardManager; )
+public abstract interface class android.app.KeyguardManager$OnKeyguardExitResult extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onKeyguardExitResult(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/KeyguardManager$OnKeyguardExitResult;Landroid/app/KeyguardManager$KeyguardLock; )
+public class android.app.KeyguardManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+private android.view.IWindowManager mWM
+----------------METHODS----------------
+
+ void <init>()
+
+static android.view.IWindowManager access$000(
+android.app.KeyguardManager)
+
+public void exitKeyguardSecurely(
+android.app.KeyguardManager$OnKeyguardExitResult)
+
+public boolean inKeyguardRestrictedInputMode()
+
+public android.app.KeyguardManager$KeyguardLock newKeyguardLock(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/LauncherActivity; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.app.LauncherActivity$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/Filter$1;Landroid/widget/Filter$RequestArguments;Landroid/widget/Filter$ResultsHandler;Landroid/widget/Filter$RequestHandler;Landroid/widget/Filter$FilterListener;Landroid/widget/Filter$FilterResults; )
+public abstract class android.widget.Filter extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int FILTER_TOKEN
+
+private static final int FINISH_TOKEN
+
+private static final java.lang.String THREAD_NAME
+
+private android.os.Handler mResultHandler
+
+private android.os.Handler mThreadHandler
+----------------METHODS----------------
+
+public void <init>()
+
+static android.os.Handler access$200(
+android.widget.Filter)
+
+static android.os.Handler access$300(
+android.widget.Filter)
+
+static android.os.Handler access$302(
+android.widget.Filter
+android.os.Handler)
+
+public java.lang.CharSequence convertResultToString(
+java.lang.Object)
+
+public final void filter(
+java.lang.CharSequence)
+
+public final void filter(
+java.lang.CharSequence
+android.widget.Filter$FilterListener)
+
+protected abstract android.widget.Filter$FilterResults performFiltering(
+java.lang.CharSequence)
+
+protected abstract void publishResults(
+java.lang.CharSequence
+android.widget.Filter$FilterResults)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/LauncherActivity$ActivityAdapter; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =ArrayFilter )
+ class android.app.LauncherActivity$ActivityAdapter$ArrayFilter extends android.widget.Filter
+
+----------------FIELDS----------------
+
+final android.app.LauncherActivity$ActivityAdapter this$1
+----------------METHODS----------------
+
+private void <init>(
+android.app.LauncherActivity$ActivityAdapter)
+
+ void <init>(
+android.app.LauncherActivity$ActivityAdapter
+android.app.LauncherActivity$1)
+
+protected android.widget.Filter$FilterResults performFiltering(
+java.lang.CharSequence)
+
+protected void publishResults(
+java.lang.CharSequence
+android.widget.Filter$FilterResults)
+
+________________CLASS________________
+
+
+public abstract interface class android.widget.Adapter extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int IGNORE_ITEM_VIEW_TYPE
+
+public static final int NO_SELECTION
+----------------METHODS----------------
+
+public abstract int getCount()
+
+public abstract java.lang.Object getItem(
+int)
+
+public abstract long getItemId(
+int)
+
+public abstract int getItemViewType(
+int)
+
+public abstract android.view.View getView(
+int
+android.view.View
+android.view.ViewGroup)
+
+public abstract int getViewTypeCount()
+
+public abstract boolean hasStableIds()
+
+public abstract boolean isEmpty()
+
+public abstract void registerDataSetObserver(
+android.database.DataSetObserver)
+
+public abstract void unregisterDataSetObserver(
+android.database.DataSetObserver)
+
+________________CLASS________________
+
+
+public abstract interface class android.widget.ListAdapter extends java.lang.Object implements android.widget.Adapter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean areAllItemsEnabled()
+
+public abstract boolean isEnabled(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class android.widget.SpinnerAdapter extends java.lang.Object implements android.widget.Adapter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.view.View getDropDownView(
+int
+android.view.View
+android.view.ViewGroup)
+
+________________CLASS________________
+
+
+public abstract class android.widget.BaseAdapter extends java.lang.Object implements android.widget.ListAdapter, android.widget.SpinnerAdapter
+
+----------------FIELDS----------------
+
+private final android.database.DataSetObservable mDataSetObservable
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean areAllItemsEnabled()
+
+public android.view.View getDropDownView(
+int
+android.view.View
+android.view.ViewGroup)
+
+public int getItemViewType(
+int)
+
+public int getViewTypeCount()
+
+public boolean hasStableIds()
+
+public boolean isEmpty()
+
+public boolean isEnabled(
+int)
+
+public void notifyDataSetChanged()
+
+public void notifyDataSetInvalidated()
+
+public void registerDataSetObserver(
+android.database.DataSetObserver)
+
+public void unregisterDataSetObserver(
+android.database.DataSetObserver)
+
+________________CLASS________________
+
+
+public abstract interface class android.widget.Filterable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.widget.Filter getFilter()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/LauncherActivity; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =ActivityAdapter )
+@dalvik.annotation.MemberClasses (value =Landroid/app/LauncherActivity$ActivityAdapter$ArrayFilter; )
+ class android.app.LauncherActivity$ActivityAdapter extends android.widget.BaseAdapter implements android.widget.Filterable
+
+----------------FIELDS----------------
+
+private final java.lang.Object lock
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+protected java.util.List mActivitiesList
+
+protected final android.content.Context mContext
+
+private android.widget.Filter mFilter
+
+protected final android.view.LayoutInflater mInflater
+
+protected final android.content.Intent mIntent
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/content/pm/ResolveInfo;>; )
+private java.util.ArrayList mOriginalValues
+
+final android.app.LauncherActivity this$0
+----------------METHODS----------------
+
+public void <init>(
+android.app.LauncherActivity
+android.content.Context
+android.content.Intent)
+
+static java.util.ArrayList access$100(
+android.app.LauncherActivity$ActivityAdapter)
+
+static java.util.ArrayList access$102(
+android.app.LauncherActivity$ActivityAdapter
+java.util.ArrayList)
+
+static java.lang.Object access$200(
+android.app.LauncherActivity$ActivityAdapter)
+
+private void bindView(
+android.view.View
+android.content.pm.ResolveInfo)
+
+private char getCandidateLetter(
+android.content.pm.ResolveInfo)
+
+public int getCount()
+
+public android.widget.Filter getFilter()
+
+public java.lang.Object getItem(
+int)
+
+public long getItemId(
+int)
+
+public android.view.View getView(
+int
+android.view.View
+android.view.ViewGroup)
+
+public android.content.Intent intentForPosition(
+int)
+
+________________CLASS________________
+
+
+public class android.app.ListActivity extends android.app.Activity
+
+----------------FIELDS----------------
+
+protected android.widget.ListAdapter mAdapter
+
+private boolean mFinishedStart
+
+private android.os.Handler mHandler
+
+protected android.widget.ListView mList
+
+private android.widget.AdapterView$OnItemClickListener mOnClickListener
+
+private java.lang.Runnable mRequestFocus
+----------------METHODS----------------
+
+public void <init>()
+
+private void ensureList()
+
+public android.widget.ListAdapter getListAdapter()
+
+public android.widget.ListView getListView()
+
+public long getSelectedItemId()
+
+public int getSelectedItemPosition()
+
+public void onContentChanged()
+
+protected void onListItemClick(
+android.widget.ListView
+android.view.View
+int
+long)
+
+protected void onRestoreInstanceState(
+android.os.Bundle)
+
+public void setListAdapter(
+android.widget.ListAdapter)
+
+public void setSelection(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/LauncherActivity$1;Landroid/app/LauncherActivity$ActivityAdapter; )
+public abstract class android.app.LauncherActivity extends android.app.ListActivity
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected abstract android.content.Intent getTargetIntent()
+
+protected void onCreate(
+android.os.Bundle)
+
+protected void onListItemClick(
+android.widget.ListView
+android.view.View
+int
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ListActivity; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.app.ListActivity$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.app.ListActivity this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.ListActivity)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AdapterView; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnItemClickListener )
+public abstract interface class android.widget.AdapterView$OnItemClickListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Landroid/widget/AdapterView<*>;Landroid/view/View;IJ)V )
+public abstract void onItemClick(
+android.widget.AdapterView
+android.view.View
+int
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ListActivity; )
+ class android.app.ListActivity$2 extends java.lang.Object implements android.widget.AdapterView$OnItemClickListener
+
+----------------FIELDS----------------
+
+final android.app.ListActivity this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.ListActivity)
+
+public void onItemClick(
+android.widget.AdapterView
+android.view.View
+int
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/LocalActivityManager; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =LocalActivityRecord )
+ class android.app.LocalActivityManager$LocalActivityRecord extends android.os.Binder
+
+----------------FIELDS----------------
+
+ android.app.Activity activity
+
+ android.content.pm.ActivityInfo activityInfo
+
+ int curState
+
+final java.lang.String id
+
+ android.os.Bundle instanceState
+
+ android.content.Intent intent
+
+ android.view.Window window
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/LocalActivityManager$LocalActivityRecord; )
+public class android.app.LocalActivityManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int CREATED
+
+static final int DESTROYED
+
+static final int INITIALIZING
+
+static final int RESTORED
+
+static final int RESUMED
+
+static final int STARTED
+
+private static final java.lang.String TAG
+
+private static final boolean localLOGV
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Landroid/app/LocalActivityManager$LocalActivityRecord;>; )
+private final java.util.Map mActivities
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/app/LocalActivityManager$LocalActivityRecord;>; )
+private final java.util.ArrayList mActivityArray
+
+private final android.app.ActivityThread mActivityThread
+
+private int mCurState
+
+private boolean mFinishing
+
+private final android.app.Activity mParent
+
+private android.app.LocalActivityManager$LocalActivityRecord mResumed
+
+private boolean mSingleMode
+----------------METHODS----------------
+
+public void <init>(
+android.app.Activity
+boolean)
+
+private void moveToState(
+android.app.LocalActivityManager$LocalActivityRecord
+int)
+
+private android.view.Window performDestroy(
+android.app.LocalActivityManager$LocalActivityRecord
+boolean)
+
+private void performPause(
+android.app.LocalActivityManager$LocalActivityRecord
+boolean)
+
+public android.view.Window destroyActivity(
+java.lang.String
+boolean)
+
+public void dispatchCreate(
+android.os.Bundle)
+
+public void dispatchDestroy(
+boolean)
+
+public void dispatchPause(
+boolean)
+
+public void dispatchResume()
+
+public void dispatchStop()
+
+public android.app.Activity getActivity(
+java.lang.String)
+
+public android.app.Activity getCurrentActivity()
+
+public java.lang.String getCurrentId()
+
+public void removeAllActivities()
+
+public android.os.Bundle saveInstanceState()
+
+public android.view.Window startActivity(
+java.lang.String
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/Notification; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/app/Notification;>; )
+final class android.app.Notification$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.app.Notification createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.app.Notification[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.app.Notification extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/app/Notification;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final int DEFAULT_ALL
+
+public static final int DEFAULT_LIGHTS
+
+public static final int DEFAULT_SOUND
+
+public static final int DEFAULT_VIBRATE
+
+public static final int FLAG_AUTO_CANCEL
+
+public static final int FLAG_INSISTENT
+
+public static final int FLAG_NO_CLEAR
+
+public static final int FLAG_ONGOING_EVENT
+
+public static final int FLAG_ONLY_ALERT_ONCE
+
+public static final int FLAG_SHOW_LIGHTS
+
+public static final int STREAM_DEFAULT
+
+public int audioStreamType
+
+public android.app.PendingIntent contentIntent
+
+public android.widget.RemoteViews contentView
+
+public int defaults
+
+public android.app.PendingIntent deleteIntent
+
+public int flags
+
+public int icon
+
+public int iconLevel
+
+public int ledARGB
+
+public int ledOffMS
+
+public int ledOnMS
+
+public int number
+
+public android.net.Uri sound
+
+public java.lang.CharSequence tickerText
+
+public long[] vibrate
+
+public long when
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int
+java.lang.CharSequence
+long)
+
+public void <init>(
+android.content.Context
+int
+java.lang.CharSequence
+long
+java.lang.CharSequence
+java.lang.CharSequence
+android.content.Intent)
+
+public void <init>(
+android.os.Parcel)
+
+public int describeContents()
+
+public void setLatestEventInfo(
+android.content.Context
+java.lang.CharSequence
+java.lang.CharSequence
+android.app.PendingIntent)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class android.app.NotificationManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static boolean DEBUG
+
+private static java.lang.String TAG
+
+private static boolean localLOGV
+
+private static android.app.INotificationManager sService
+
+private android.content.Context mContext
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+android.content.Context
+android.os.Handler)
+
+private static android.app.INotificationManager getService()
+
+public void cancel(
+int)
+
+public void cancelAll()
+
+public void notify(
+int
+android.app.Notification)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/app/PendingIntent;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/PendingIntent; )
+final class android.app.PendingIntent$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.app.PendingIntent createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.app.PendingIntent[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.util.AndroidException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.Exception)
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/PendingIntent; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =CanceledException )
+public class android.app.PendingIntent$CanceledException extends android.util.AndroidException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.Exception)
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/PendingIntent; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =FinishedDispatcher )
+ class android.app.PendingIntent$FinishedDispatcher extends android.app.IIntentReceiver$Stub implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private final android.os.Handler mHandler
+
+private android.content.Intent mIntent
+
+private final android.app.PendingIntent mPendingIntent
+
+private int mResultCode
+
+private java.lang.String mResultData
+
+private android.os.Bundle mResultExtras
+
+private final android.app.PendingIntent$OnFinished mWho
+----------------METHODS----------------
+
+ void <init>(
+android.app.PendingIntent
+android.app.PendingIntent$OnFinished
+android.os.Handler)
+
+public void performReceive(
+android.content.Intent
+int
+java.lang.String
+android.os.Bundle
+boolean)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnFinished )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/PendingIntent; )
+public abstract interface class android.app.PendingIntent$OnFinished extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onSendFinished(
+android.app.PendingIntent
+android.content.Intent
+int
+java.lang.String
+android.os.Bundle)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/PendingIntent$FinishedDispatcher;Landroid/app/PendingIntent$OnFinished;Landroid/app/PendingIntent$CanceledException; )
+public final class android.app.PendingIntent extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/app/PendingIntent;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final int FLAG_CANCEL_CURRENT
+
+public static final int FLAG_NO_CREATE
+
+public static final int FLAG_ONE_SHOT
+
+private final android.app.IIntentSender mTarget
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+android.app.IIntentSender)
+
+ void <init>(
+android.os.IBinder)
+
+public static android.app.PendingIntent getActivity(
+android.content.Context
+int
+android.content.Intent
+int)
+
+public static android.app.PendingIntent getBroadcast(
+android.content.Context
+int
+android.content.Intent
+int)
+
+public static android.app.PendingIntent getService(
+android.content.Context
+int
+android.content.Intent
+int)
+
+public static android.app.PendingIntent readPendingIntentOrNullFromParcel(
+android.os.Parcel)
+
+public static void writePendingIntentOrNullToParcel(
+android.app.PendingIntent
+android.os.Parcel)
+
+public void cancel()
+
+public int describeContents()
+
+public boolean equals(
+java.lang.Object)
+
+ android.app.IIntentSender getTarget()
+
+public java.lang.String getTargetPackage()
+
+public int hashCode()
+@dalvik.annotation.Throws (value =Landroid/app/PendingIntent$CanceledException; )
+public void send()
+@dalvik.annotation.Throws (value =Landroid/app/PendingIntent$CanceledException; )
+public void send(
+int)
+@dalvik.annotation.Throws (value =Landroid/app/PendingIntent$CanceledException; )
+public void send(
+int
+android.app.PendingIntent$OnFinished
+android.os.Handler)
+@dalvik.annotation.Throws (value =Landroid/app/PendingIntent$CanceledException; )
+public void send(
+android.content.Context
+int
+android.content.Intent)
+@dalvik.annotation.Throws (value =Landroid/app/PendingIntent$CanceledException; )
+public void send(
+android.content.Context
+int
+android.content.Intent
+android.app.PendingIntent$OnFinished
+android.os.Handler)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.app.ProgressDialog$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.app.ProgressDialog this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.ProgressDialog)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+
+public class android.app.ProgressDialog extends android.app.AlertDialog
+
+----------------FIELDS----------------
+
+public static final int STYLE_HORIZONTAL
+
+public static final int STYLE_SPINNER
+
+private boolean mHasStarted
+
+private int mIncrementBy
+
+private int mIncrementSecondaryBy
+
+private boolean mIndeterminate
+
+private android.graphics.drawable.Drawable mIndeterminateDrawable
+
+private int mMax
+
+private java.lang.CharSequence mMessage
+
+private android.widget.TextView mMessageView
+
+private android.widget.ProgressBar mProgress
+
+private android.graphics.drawable.Drawable mProgressDrawable
+
+private android.widget.TextView mProgressNumber
+
+private android.widget.TextView mProgressPercent
+
+private java.text.NumberFormat mProgressPercentFormat
+
+private int mProgressStyle
+
+private int mProgressVal
+
+private int mSecondaryProgressVal
+
+private android.os.Handler mViewUpdateHandler
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+int)
+
+static android.widget.ProgressBar access$000(
+android.app.ProgressDialog)
+
+static android.widget.TextView access$100(
+android.app.ProgressDialog)
+
+static java.text.NumberFormat access$200(
+android.app.ProgressDialog)
+
+static android.widget.TextView access$300(
+android.app.ProgressDialog)
+
+private void onProgressChanged()
+
+public static android.app.ProgressDialog show(
+android.content.Context
+java.lang.CharSequence
+java.lang.CharSequence)
+
+public static android.app.ProgressDialog show(
+android.content.Context
+java.lang.CharSequence
+java.lang.CharSequence
+boolean)
+
+public static android.app.ProgressDialog show(
+android.content.Context
+java.lang.CharSequence
+java.lang.CharSequence
+boolean
+boolean)
+
+public static android.app.ProgressDialog show(
+android.content.Context
+java.lang.CharSequence
+java.lang.CharSequence
+boolean
+boolean
+android.content.DialogInterface$OnCancelListener)
+
+public int getMax()
+
+public int getProgress()
+
+public int getSecondaryProgress()
+
+public void incrementProgressBy(
+int)
+
+public void incrementSecondaryProgressBy(
+int)
+
+public boolean isIndeterminate()
+
+protected void onCreate(
+android.os.Bundle)
+
+public void onStart()
+
+protected void onStop()
+
+public void setIndeterminate(
+boolean)
+
+public void setIndeterminateDrawable(
+android.graphics.drawable.Drawable)
+
+public void setMax(
+int)
+
+public void setMessage(
+java.lang.CharSequence)
+
+public void setProgress(
+int)
+
+public void setProgressDrawable(
+android.graphics.drawable.Drawable)
+
+public void setProgressStyle(
+int)
+
+public void setSecondaryProgress(
+int)
+
+________________CLASS________________
+
+
+ class android.app.ReceiverRestrictedContext extends android.content.ContextWrapper
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+android.content.Context)
+
+public boolean bindService(
+android.content.Intent
+android.content.ServiceConnection
+int)
+
+public android.content.Intent registerReceiver(
+android.content.BroadcastReceiver
+android.content.IntentFilter)
+
+public android.content.Intent registerReceiver(
+android.content.BroadcastReceiver
+android.content.IntentFilter
+java.lang.String
+android.os.Handler)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/ResultInfo; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/app/ResultInfo;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.app.ResultInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.app.ResultInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.app.ResultInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.app.ResultInfo extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/app/ResultInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public final android.content.Intent mData
+
+public final int mRequestCode
+
+public final int mResultCode
+
+public final java.lang.String mResultWho
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.os.Parcel)
+
+public void <init>(
+java.lang.String
+int
+int
+android.content.Intent)
+
+public int describeContents()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnGlobalLayoutListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewTreeObserver; )
+public abstract interface class android.view.ViewTreeObserver$OnGlobalLayoutListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onGlobalLayout()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/SearchDialog; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.app.SearchDialog$10 extends java.lang.Object implements android.view.ViewTreeObserver$OnGlobalLayoutListener
+
+----------------FIELDS----------------
+
+final android.app.SearchDialog this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.SearchDialog)
+
+public void onGlobalLayout()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/SearchDialog; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.app.SearchDialog$11 extends java.lang.Object implements android.widget.AdapterView$OnItemClickListener
+
+----------------FIELDS----------------
+
+final android.app.SearchDialog this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.SearchDialog)
+
+public void onItemClick(
+android.widget.AdapterView
+android.view.View
+int
+long)
+
+________________CLASS________________
+
+
+public abstract interface class android.text.TextWatcher extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void afterTextChanged(
+android.text.Editable)
+
+public abstract void beforeTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+public abstract void onTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/SearchDialog; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.app.SearchDialog$1 extends java.lang.Object implements android.text.TextWatcher
+
+----------------FIELDS----------------
+
+final android.app.SearchDialog this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.SearchDialog)
+
+public void afterTextChanged(
+android.text.Editable)
+
+public void beforeTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+public void onTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/View; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnKeyListener )
+public abstract interface class android.view.View$OnKeyListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean onKey(
+android.view.View
+int
+android.view.KeyEvent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/SearchDialog; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.app.SearchDialog$2 extends java.lang.Object implements android.view.View$OnKeyListener
+
+----------------FIELDS----------------
+
+final android.app.SearchDialog this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.SearchDialog)
+
+public boolean onKey(
+android.view.View
+int
+android.view.KeyEvent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnClickListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/View; )
+public abstract interface class android.view.View$OnClickListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onClick(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/SearchDialog; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.app.SearchDialog$3 extends java.lang.Object implements android.view.View$OnClickListener
+
+----------------FIELDS----------------
+
+final android.app.SearchDialog this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.SearchDialog)
+
+public void onClick(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/SearchDialog; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.app.SearchDialog$4 extends java.lang.Object implements android.view.View$OnKeyListener
+
+----------------FIELDS----------------
+
+final android.app.SearchDialog this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.SearchDialog)
+
+public boolean onKey(
+android.view.View
+int
+android.view.KeyEvent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/SearchDialog; )
+ class android.app.SearchDialog$5 extends java.lang.Object implements android.view.View$OnKeyListener
+
+----------------FIELDS----------------
+
+final android.app.SearchDialog this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.SearchDialog)
+
+public boolean onKey(
+android.view.View
+int
+android.view.KeyEvent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnFocusChangeListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/View; )
+public abstract interface class android.view.View$OnFocusChangeListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onFocusChange(
+android.view.View
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/SearchDialog; )
+ class android.app.SearchDialog$6 extends java.lang.Object implements android.view.View$OnFocusChangeListener
+
+----------------FIELDS----------------
+
+final android.app.SearchDialog this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.SearchDialog)
+
+public void onFocusChange(
+android.view.View
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnItemSelectedListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AdapterView; )
+public abstract interface class android.widget.AdapterView$OnItemSelectedListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Landroid/widget/AdapterView<*>;Landroid/view/View;IJ)V )
+public abstract void onItemSelected(
+android.widget.AdapterView
+android.view.View
+int
+long)
+@dalvik.annotation.Signature (value =(Landroid/widget/AdapterView<*>;)V )
+public abstract void onNothingSelected(
+android.widget.AdapterView)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/SearchDialog; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.app.SearchDialog$7 extends java.lang.Object implements android.widget.AdapterView$OnItemSelectedListener
+
+----------------FIELDS----------------
+
+final android.app.SearchDialog this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.SearchDialog)
+
+public void onItemSelected(
+android.widget.AdapterView
+android.view.View
+int
+long)
+
+public void onNothingSelected(
+android.widget.AdapterView)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/SearchDialog; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.app.SearchDialog$8 extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final android.app.SearchDialog this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.SearchDialog)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/SearchDialog; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.app.SearchDialog$9 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.app.SearchDialog this$0
+----------------METHODS----------------
+
+ void <init>(
+android.app.SearchDialog)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1544 name =CursorFilterClient )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/CursorFilter; )
+abstract interface class android.widget.CursorFilter$CursorFilterClient extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void changeCursor(
+android.database.Cursor)
+
+public abstract java.lang.CharSequence convertToString(
+android.database.Cursor)
+
+public abstract android.database.Cursor getCursor()
+
+public abstract android.database.Cursor runQueryOnBackgroundThread(
+java.lang.CharSequence)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/CursorAdapter$1;Landroid/widget/CursorAdapter$MyDataSetObserver;Landroid/widget/CursorAdapter$ChangeObserver; )
+public abstract class android.widget.CursorAdapter extends android.widget.BaseAdapter implements android.widget.Filterable, android.widget.CursorFilter$CursorFilterClient
+
+----------------FIELDS----------------
+
+protected boolean mAutoRequery
+
+protected android.widget.CursorAdapter$ChangeObserver mChangeObserver
+
+protected android.content.Context mContext
+
+protected android.database.Cursor mCursor
+
+protected android.widget.CursorFilter mCursorFilter
+
+protected android.database.DataSetObserver mDataSetObserver
+
+protected boolean mDataValid
+
+protected android.widget.FilterQueryProvider mFilterQueryProvider
+
+protected int mRowIDColumn
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.database.Cursor)
+
+public void <init>(
+android.content.Context
+android.database.Cursor
+boolean)
+
+public abstract void bindView(
+android.view.View
+android.content.Context
+android.database.Cursor)
+
+public void changeCursor(
+android.database.Cursor)
+
+public java.lang.CharSequence convertToString(
+android.database.Cursor)
+
+public final int getCount()
+
+public android.database.Cursor getCursor()
+
+public android.view.View getDropDownView(
+int
+android.view.View
+android.view.ViewGroup)
+
+public android.widget.Filter getFilter()
+
+public android.widget.FilterQueryProvider getFilterQueryProvider()
+
+public final java.lang.Object getItem(
+int)
+
+public final long getItemId(
+int)
+
+public android.view.View getView(
+int
+android.view.View
+android.view.ViewGroup)
+
+public boolean hasStableIds()
+
+protected void init(
+android.content.Context
+android.database.Cursor
+boolean)
+
+public android.view.View newDropDownView(
+android.content.Context
+android.database.Cursor
+android.view.ViewGroup)
+
+public abstract android.view.View newView(
+android.content.Context
+android.database.Cursor
+android.view.ViewGroup)
+
+public android.database.Cursor runQueryOnBackgroundThread(
+java.lang.CharSequence)
+
+public void setFilterQueryProvider(
+android.widget.FilterQueryProvider)
+
+________________CLASS________________
+
+
+public abstract class android.widget.ResourceCursorAdapter extends android.widget.CursorAdapter
+
+----------------FIELDS----------------
+
+private int mDropDownLayout
+
+private android.view.LayoutInflater mInflater
+
+private int mLayout
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+int
+android.database.Cursor)
+
+public android.view.View newDropDownView(
+android.content.Context
+android.database.Cursor
+android.view.ViewGroup)
+
+public android.view.View newView(
+android.content.Context
+android.database.Cursor
+android.view.ViewGroup)
+
+public void setDropDownViewResource(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/SimpleCursorAdapter$CursorToStringConverter;Landroid/widget/SimpleCursorAdapter$ViewBinder; )
+public class android.widget.SimpleCursorAdapter extends android.widget.ResourceCursorAdapter
+
+----------------FIELDS----------------
+
+private android.widget.SimpleCursorAdapter$CursorToStringConverter mCursorToStringConverter
+
+protected int[] mFrom
+
+private java.lang.String[] mOriginalFrom
+
+private int mStringConversionColumn
+
+protected int[] mTo
+
+private android.widget.SimpleCursorAdapter$ViewBinder mViewBinder
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+int
+android.database.Cursor
+java.lang.String[]
+int[])
+
+private void findColumns(
+java.lang.String[])
+
+public void bindView(
+android.view.View
+android.content.Context
+android.database.Cursor)
+
+public void changeCursor(
+android.database.Cursor)
+
+public java.lang.CharSequence convertToString(
+android.database.Cursor)
+
+public android.widget.SimpleCursorAdapter$CursorToStringConverter getCursorToStringConverter()
+
+public int getStringConversionColumn()
+
+public android.widget.SimpleCursorAdapter$ViewBinder getViewBinder()
+
+public void setCursorToStringConverter(
+android.widget.SimpleCursorAdapter$CursorToStringConverter)
+
+public void setStringConversionColumn(
+int)
+
+public void setViewBinder(
+android.widget.SimpleCursorAdapter$ViewBinder)
+
+public void setViewImage(
+android.widget.ImageView
+java.lang.String)
+
+public void setViewText(
+android.widget.TextView
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =SuggestionsCursorAdapter )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/SearchDialog; )
+ class android.app.SearchDialog$SuggestionsCursorAdapter extends android.widget.SimpleCursorAdapter
+
+----------------FIELDS----------------
+
+private android.content.res.Resources mProviderResources
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+int
+android.database.Cursor
+java.lang.String[]
+int[]
+android.content.Context)
+
+public android.view.View getView(
+int
+android.view.View
+android.view.ViewGroup)
+
+public void setViewImage(
+android.widget.ImageView
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.app.SearchDialog$SuggestionsRunner$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.app.SearchDialog$SuggestionsRunner this$1
+
+final android.database.Cursor val$c
+
+final android.app.SearchDialog$SuggestionsRunner$Request val$useRequest
+----------------METHODS----------------
+
+ void <init>(
+android.app.SearchDialog$SuggestionsRunner
+android.database.Cursor
+android.app.SearchDialog$SuggestionsRunner$Request)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =Request )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/SearchDialog$SuggestionsRunner; )
+ class android.app.SearchDialog$SuggestionsRunner$Request extends java.lang.Object
+
+----------------FIELDS----------------
+
+final boolean cancelRequest
+
+final java.lang.String mQueryText
+
+final android.server.search.SearchableInfo mSearchableInfo
+
+final android.app.SearchDialog$SuggestionsRunner this$1
+----------------METHODS----------------
+
+ void <init>(
+android.app.SearchDialog$SuggestionsRunner)
+
+ void <init>(
+android.app.SearchDialog$SuggestionsRunner
+android.server.search.SearchableInfo
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =SuggestionsRunner )
+@dalvik.annotation.MemberClasses (value =Landroid/app/SearchDialog$SuggestionsRunner$Request; )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/SearchDialog; )
+ class android.app.SearchDialog$SuggestionsRunner extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/LinkedBlockingQueue<Landroid/app/SearchDialog$SuggestionsRunner$Request;>; )
+private final java.util.concurrent.LinkedBlockingQueue mSuggestionsQueue
+
+final android.app.SearchDialog this$0
+----------------METHODS----------------
+
+private void <init>(
+android.app.SearchDialog)
+
+ void <init>(
+android.app.SearchDialog
+android.app.SearchDialog$1)
+
+static void access$100(
+android.app.SearchDialog$SuggestionsRunner)
+
+private void cancelSuggestions()
+
+public void requestSuggestions(
+android.server.search.SearchableInfo
+java.lang.String)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/SearchDialog$SuggestionsCursorAdapter;Landroid/app/SearchDialog$SuggestionsRunner; )
+public class android.app.SearchDialog extends android.app.Dialog
+
+----------------FIELDS----------------
+
+static final int DBG_JAM_THREADING
+
+private static final int DBG_LOG_TIMING
+
+private static final java.lang.String INSTANCE_KEY_APPDATA
+
+private static final java.lang.String INSTANCE_KEY_COMPONENT
+
+private static final java.lang.String INSTANCE_KEY_DISPLAY_QUERY
+
+private static final java.lang.String INSTANCE_KEY_DISPLAY_SEL_END
+
+private static final java.lang.String INSTANCE_KEY_DISPLAY_SEL_START
+
+private static final java.lang.String INSTANCE_KEY_GLOBALSEARCH
+
+private static final java.lang.String INSTANCE_KEY_SELECTED_ELEMENT
+
+private static final java.lang.String INSTANCE_KEY_SUGGESTION_QUERY
+
+private static final java.lang.String INSTANCE_KEY_USER_QUERY
+
+private static final int INSTANCE_SELECTED_BUTTON
+
+private static final int INSTANCE_SELECTED_QUERY
+
+static final java.lang.String LOG_TAG
+
+private static final int MESSAGE_DISMISS
+
+private static final java.lang.String[] ONE_LINE_FROM
+
+private static final java.lang.String[] ONE_LINE_ICONS_FROM
+
+private static final int[] ONE_LINE_ICONS_TO
+
+private static final int[] ONE_LINE_TO
+
+private static final java.lang.String[] TWO_LINE_FROM
+
+private static final java.lang.String[] TWO_LINE_ICONS_FROM
+
+private static final int[] TWO_LINE_ICONS_TO
+
+private static final int[] TWO_LINE_TO
+
+private android.content.Context mActivityContext
+
+private android.os.Bundle mAppSearchData
+
+private android.widget.TextView mBadgeLabel
+
+private android.content.BroadcastReceiver mBroadcastReceiver
+
+ android.content.IntentFilter mCloseDialogsFilter
+
+private android.os.Handler mDismissHandler
+
+private android.view.ViewTreeObserver$OnGlobalLayoutListener mGlobalLayoutListener
+
+private boolean mGlobalSearchMode
+
+private android.widget.Button mGoButton
+
+ android.view.View$OnClickListener mGoButtonClickListener
+
+ android.view.View$OnKeyListener mGoButtonKeyListener
+
+private final android.os.Handler mHandler
+
+private java.util.concurrent.atomic.AtomicLong mLastLogTime
+
+private android.content.ComponentName mLaunchComponent
+
+private boolean mLeaveJammedQueryOnRefocus
+
+private boolean mNonUserQuery
+
+ android.content.IntentFilter mPackageFilter
+
+private int mPresetSelection
+
+private java.lang.String mPreviousSuggestionQuery
+
+private android.content.Context mProviderContext
+
+private android.view.View mSearchBarLayout
+
+private android.widget.LinearLayout mSearchEditLayout
+
+private android.widget.EditText mSearchTextField
+
+private android.server.search.SearchableInfo mSearchable
+
+private boolean mSkipNextAnimate
+
+ android.view.View$OnFocusChangeListener mSuggestFocusListener
+
+ android.widget.AdapterView$OnItemSelectedListener mSuggestSelectedListener
+
+private java.lang.String mSuggestionAction
+
+private android.net.Uri mSuggestionData
+
+private java.lang.String mSuggestionQuery
+
+private android.view.animation.Animation mSuggestionsEntry
+
+private android.view.animation.Animation mSuggestionsExit
+
+ android.view.View$OnKeyListener mSuggestionsKeyListener
+
+private android.widget.ListView mSuggestionsList
+
+private android.widget.AdapterView$OnItemClickListener mSuggestionsListItemClickListener
+
+private android.app.SearchDialog$SuggestionsRunner mSuggestionsRunner
+
+ android.view.View$OnKeyListener mTextKeyListener
+
+private android.text.TextWatcher mTextWatcher
+
+private java.lang.String mUserQuery
+
+private int mUserQuerySelEnd
+
+private int mUserQuerySelStart
+
+private android.view.ViewTreeObserver mViewTreeObserver
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+static android.os.Handler access$1000(
+android.app.SearchDialog)
+
+static android.server.search.SearchableInfo access$1100(
+android.app.SearchDialog)
+
+static boolean access$1200(
+android.app.SearchDialog
+android.view.View
+int
+android.view.KeyEvent)
+
+static void access$1300(
+android.app.SearchDialog
+int
+java.lang.String)
+
+static boolean access$1400(
+android.app.SearchDialog
+android.view.View
+int
+android.view.KeyEvent)
+
+static android.widget.ListView access$1500(
+android.app.SearchDialog)
+
+static void access$1600(
+android.app.SearchDialog
+boolean
+android.widget.AdapterView
+int)
+
+static boolean access$1700(
+android.app.SearchDialog)
+
+static void access$1800(
+android.app.SearchDialog)
+
+static boolean access$1900(
+android.app.SearchDialog
+android.widget.AdapterView
+int)
+
+static void access$200(
+android.app.SearchDialog)
+
+static boolean access$300(
+android.app.SearchDialog)
+
+static void access$400(
+android.app.SearchDialog)
+
+static java.lang.String access$502(
+android.app.SearchDialog
+java.lang.String)
+
+static android.widget.EditText access$600(
+android.app.SearchDialog)
+
+static int access$702(
+android.app.SearchDialog
+int)
+
+static int access$802(
+android.app.SearchDialog
+int)
+
+static android.database.Cursor access$900(
+android.app.SearchDialog
+android.server.search.SearchableInfo
+java.lang.String)
+
+private void dbgLogTiming(
+java.lang.String)
+
+private void discardListCursor(
+android.widget.ListView)
+
+private boolean doSuggestionsKey(
+android.view.View
+int
+android.view.KeyEvent)
+
+private java.lang.String getActionKeyMessage(
+android.database.Cursor
+android.server.search.SearchableInfo$ActionKeyInfo)
+
+private android.database.Cursor getSuggestions(
+android.server.search.SearchableInfo
+java.lang.String)
+@dalvik.annotation.Signature (value =(Landroid/widget/AdapterView<*>;)Landroid/widget/CursorAdapter; )
+private static android.widget.CursorAdapter getSuggestionsAdapter(
+android.widget.AdapterView)
+@dalvik.annotation.Signature (value =(ZLandroid/widget/AdapterView<*>;I)V )
+private void jamSuggestionQuery(
+boolean
+android.widget.AdapterView
+int)
+
+private void launchQuerySearch(
+int
+java.lang.String)
+@dalvik.annotation.Signature (value =(Landroid/widget/AdapterView<*>;I)Z )
+private boolean launchSuggestion(
+android.widget.AdapterView
+int)
+
+private void layoutSuggestionsList()
+
+private boolean refocusingKeyListener(
+android.view.View
+int
+android.view.KeyEvent)
+
+private void sendLaunchIntent(
+java.lang.String
+android.net.Uri
+java.lang.String
+android.os.Bundle
+int
+java.lang.String
+android.server.search.SearchableInfo)
+
+private void setupSearchableInfo()
+
+private void showSuggestions(
+boolean
+boolean)
+
+private void updateQueryHint()
+
+private void updateSearchBadge()
+
+private void updateSearchButton()
+
+private void updateSuggestions()
+
+private void updateWidgetState()
+
+public void dismiss()
+
+public void onConfigurationChanged(
+android.content.res.Configuration)
+
+protected void onCreate(
+android.os.Bundle)
+
+public boolean onKeyDown(
+int
+android.view.KeyEvent)
+
+public void onPackageListChange()
+
+public void onRestoreInstanceState(
+android.os.Bundle)
+
+public android.os.Bundle onSaveInstanceState()
+
+ void setupSuggestionIntent(
+android.database.Cursor
+android.server.search.SearchableInfo)
+
+public void show()
+
+public boolean show(
+java.lang.String
+boolean
+android.content.ComponentName
+android.os.Bundle
+boolean)
+
+ void updateSuggestionsWithCursor(
+android.database.Cursor
+android.server.search.SearchableInfo)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/SearchManager; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnCancelListener )
+public abstract interface class android.app.SearchManager$OnCancelListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onCancel()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnDismissListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/app/SearchManager; )
+public abstract interface class android.app.SearchManager$OnDismissListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onDismiss()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnDismissListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/DialogInterface; )
+public abstract interface class android.content.DialogInterface$OnDismissListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onDismiss(
+android.content.DialogInterface)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnCancelListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/DialogInterface; )
+public abstract interface class android.content.DialogInterface$OnCancelListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onCancel(
+android.content.DialogInterface)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/SearchManager$OnCancelListener;Landroid/app/SearchManager$OnDismissListener; )
+public class android.app.SearchManager extends java.lang.Object implements android.content.DialogInterface$OnDismissListener, android.content.DialogInterface$OnCancelListener
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACTION_KEY
+
+public static final java.lang.String ACTION_MSG
+
+public static final java.lang.String APP_DATA
+
+public static final char MENU_KEY
+
+public static final int MENU_KEYCODE
+
+public static final java.lang.String QUERY
+
+public static final java.lang.String SUGGEST_COLUMN_FORMAT
+
+public static final java.lang.String SUGGEST_COLUMN_ICON_1
+
+public static final java.lang.String SUGGEST_COLUMN_ICON_2
+
+public static final java.lang.String SUGGEST_COLUMN_INTENT_ACTION
+
+public static final java.lang.String SUGGEST_COLUMN_INTENT_DATA
+
+public static final java.lang.String SUGGEST_COLUMN_INTENT_DATA_ID
+
+public static final java.lang.String SUGGEST_COLUMN_QUERY
+
+public static final java.lang.String SUGGEST_COLUMN_TEXT_1
+
+public static final java.lang.String SUGGEST_COLUMN_TEXT_2
+
+public static final java.lang.String SUGGEST_MIME_TYPE
+
+public static final java.lang.String SUGGEST_URI_PATH_QUERY
+
+private static android.app.ISearchManager mService
+
+private android.app.SearchManager$OnCancelListener mCancelListener
+
+private final android.content.Context mContext
+
+private android.app.SearchManager$OnDismissListener mDismissListener
+
+private final android.os.Handler mHandler
+
+private android.app.SearchDialog mSearchDialog
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+android.content.Context
+android.os.Handler)
+
+public boolean isVisible()
+
+public void onCancel(
+android.content.DialogInterface)
+
+ void onConfigurationChanged(
+android.content.res.Configuration)
+
+public void onDismiss(
+android.content.DialogInterface)
+
+ void restoreSearchDialog(
+android.os.Bundle
+java.lang.String)
+
+ void saveSearchDialog(
+android.os.Bundle
+java.lang.String)
+
+public void setOnCancelListener(
+android.app.SearchManager$OnCancelListener)
+
+public void setOnDismissListener(
+android.app.SearchManager$OnDismissListener)
+
+public void startSearch(
+java.lang.String
+boolean
+android.content.ComponentName
+android.os.Bundle
+boolean)
+
+public void stopSearch()
+
+________________CLASS________________
+
+
+public abstract class android.app.Service extends android.content.ContextWrapper implements android.content.ComponentCallbacks
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private android.app.IActivityManager mActivityManager
+
+private android.app.Application mApplication
+
+private java.lang.String mClassName
+
+private android.app.ActivityThread mThread
+
+private android.os.IBinder mToken
+----------------METHODS----------------
+
+public void <init>()
+
+public final void attach(
+android.content.Context
+android.app.ActivityThread
+java.lang.String
+android.os.IBinder
+android.app.Application
+java.lang.Object)
+
+protected void dump(
+java.io.FileDescriptor
+java.io.PrintWriter
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public final android.app.Application getApplication()
+
+final java.lang.String getClassName()
+
+public abstract android.os.IBinder onBind(
+android.content.Intent)
+
+public void onConfigurationChanged(
+android.content.res.Configuration)
+
+public void onCreate()
+
+public void onDestroy()
+
+public void onLowMemory()
+
+public void onRebind(
+android.content.Intent)
+
+public void onStart(
+android.content.Intent
+int)
+
+public boolean onUnbind(
+android.content.Intent)
+
+public final void setForeground(
+boolean)
+
+public final void stopSelf()
+
+public final void stopSelf(
+int)
+
+public final boolean stopSelfResult(
+int)
+
+________________CLASS________________
+
+
+final class android.app.ServiceConnectionLeaked extends android.util.AndroidRuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.app.StatusBarManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int DISABLE_EXPAND
+
+public static final int DISABLE_NONE
+
+public static final int DISABLE_NOTIFICATION_ALERTS
+
+public static final int DISABLE_NOTIFICATION_ICONS
+
+private android.content.Context mContext
+
+private android.app.IStatusBar mService
+
+private android.os.IBinder mToken
+----------------METHODS----------------
+
+ void <init>(
+android.content.Context)
+
+public android.os.IBinder addIcon(
+java.lang.String
+int
+int)
+
+public void collapse()
+
+public void disable(
+int)
+
+public void expand()
+
+public void removeIcon(
+android.os.IBinder)
+
+public void toggle()
+
+public void updateIcon(
+android.os.IBinder
+java.lang.String
+int
+int)
+
+________________CLASS________________
+
+
+final class android.app.SuperNotCalledException extends android.util.AndroidRuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.app.TabActivity extends android.app.ActivityGroup
+
+----------------FIELDS----------------
+
+private java.lang.String mDefaultTab
+
+private int mDefaultTabIndex
+
+private android.widget.TabHost mTabHost
+----------------METHODS----------------
+
+public void <init>()
+
+private void ensureTabHost()
+
+public android.widget.TabHost getTabHost()
+
+public android.widget.TabWidget getTabWidget()
+
+protected void onChildTitleChanged(
+android.app.Activity
+java.lang.CharSequence)
+
+public void onContentChanged()
+
+protected void onPostCreate(
+android.os.Bundle)
+
+protected void onRestoreInstanceState(
+android.os.Bundle)
+
+protected void onSaveInstanceState(
+android.os.Bundle)
+
+public void setDefaultTab(
+int)
+
+public void setDefaultTab(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/app/TimePickerDialog; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnTimeSetListener )
+public abstract interface class android.app.TimePickerDialog$OnTimeSetListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onTimeSet(
+android.widget.TimePicker
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TimePicker; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnTimeChangedListener )
+public abstract interface class android.widget.TimePicker$OnTimeChangedListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onTimeChanged(
+android.widget.TimePicker
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/app/TimePickerDialog$OnTimeSetListener; )
+public class android.app.TimePickerDialog extends android.app.AlertDialog implements android.content.DialogInterface$OnClickListener, android.widget.TimePicker$OnTimeChangedListener
+
+----------------FIELDS----------------
+
+private static final java.lang.String HOUR
+
+private static final java.lang.String IS_24_HOUR
+
+private static final java.lang.String MINUTE
+
+private final java.util.Calendar mCalendar
+
+private final android.app.TimePickerDialog$OnTimeSetListener mCallback
+
+private final java.text.DateFormat mDateFormat
+
+ int mInitialHourOfDay
+
+ int mInitialMinute
+
+ boolean mIs24HourView
+
+private final android.widget.TimePicker mTimePicker
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+int
+android.app.TimePickerDialog$OnTimeSetListener
+int
+int
+boolean)
+
+public void <init>(
+android.content.Context
+android.app.TimePickerDialog$OnTimeSetListener
+int
+int
+boolean)
+
+private void updateTitle(
+int
+int)
+
+public void onClick(
+android.content.DialogInterface
+int)
+
+public void onRestoreInstanceState(
+android.os.Bundle)
+
+public android.os.Bundle onSaveInstanceState()
+
+public void onTimeChanged(
+android.widget.TimePicker
+int
+int)
+
+public void updateTime(
+int
+int)
+
+________________CLASS________________
+
+
+public abstract class android.bluetooth.AtCommandHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public android.bluetooth.AtCommandResult handleActionCommand()
+
+public android.bluetooth.AtCommandResult handleBasicCommand(
+java.lang.String)
+
+public android.bluetooth.AtCommandResult handleReadCommand()
+
+public android.bluetooth.AtCommandResult handleSetCommand(
+java.lang.Object[])
+
+public android.bluetooth.AtCommandResult handleTestCommand()
+
+________________CLASS________________
+
+
+public class android.bluetooth.AtCommandResult extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ERROR
+
+private static final java.lang.String ERROR_STRING
+
+public static final int OK
+
+private static final java.lang.String OK_STRING
+
+public static final int UNSOLICITED
+
+private java.lang.StringBuilder mResponse
+
+private int mResultCode
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+java.lang.String)
+
+public static void appendWithCrlf(
+java.lang.StringBuilder
+java.lang.String)
+
+public void addResponse(
+java.lang.String)
+
+public void addResult(
+android.bluetooth.AtCommandResult)
+
+public int getResultCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class android.bluetooth.AtParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int TYPE_ACTION
+
+private static final int TYPE_READ
+
+private static final int TYPE_SET
+
+private static final int TYPE_TEST
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Character;Landroid/bluetooth/AtCommandHandler;>; )
+private java.util.HashMap mBasicHandlers
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Landroid/bluetooth/AtCommandHandler;>; )
+private java.util.HashMap mExtHandlers
+
+private java.lang.String mLastInput
+----------------METHODS----------------
+
+public void <init>()
+
+private static java.lang.String clean(
+java.lang.String)
+
+private static int findChar(
+char
+java.lang.String
+int)
+
+private static int findEndExtendedName(
+java.lang.String
+int)
+
+private static java.lang.Object[] generateArgs(
+java.lang.String)
+
+private static boolean isAtoZ(
+char)
+
+public android.bluetooth.AtCommandResult process(
+java.lang.String)
+
+public void register(
+java.lang.Character
+android.bluetooth.AtCommandHandler)
+
+public void register(
+java.lang.String
+android.bluetooth.AtCommandHandler)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.bluetooth.BluetoothAudioGateway$1 extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final android.bluetooth.BluetoothAudioGateway this$0
+----------------METHODS----------------
+
+ void <init>(
+android.bluetooth.BluetoothAudioGateway
+java.lang.String)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/bluetooth/BluetoothAudioGateway; )
+@dalvik.annotation.InnerClass (accessFlags =1 name =IncomingConnectionInfo )
+public class android.bluetooth.BluetoothAudioGateway$IncomingConnectionInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String mAddress
+
+public android.bluetooth.BluetoothDevice mBluetooth
+
+public int mRfcommChan
+
+public int mSocketFd
+
+final android.bluetooth.BluetoothAudioGateway this$0
+----------------METHODS----------------
+
+ void <init>(
+android.bluetooth.BluetoothAudioGateway
+android.bluetooth.BluetoothDevice
+java.lang.String
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/bluetooth/BluetoothAudioGateway$IncomingConnectionInfo; )
+public class android.bluetooth.BluetoothAudioGateway extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean DBG
+
+public static final int DEFAULT_HF_AG_CHANNEL
+
+public static final int DEFAULT_HS_AG_CHANNEL
+
+public static final int MSG_INCOMING_HANDSFREE_CONNECTION
+
+public static final int MSG_INCOMING_HEADSET_CONNECTION
+
+private static final int SELECT_WAIT_TIMEOUT
+
+private static final java.lang.String TAG
+
+private android.bluetooth.BluetoothDevice mBluetooth
+
+private android.os.Handler mCallback
+
+private java.lang.Thread mConnectThead
+
+private java.lang.String mConnectingHandsfreeAddress
+
+private int mConnectingHandsfreeRfcommChannel
+
+private int mConnectingHandsfreeSocketFd
+
+private java.lang.String mConnectingHeadsetAddress
+
+private int mConnectingHeadsetRfcommChannel
+
+private int mConnectingHeadsetSocketFd
+
+private int mHandsfreeAgRfcommChannel
+
+private int mHeadsetAgRfcommChannel
+
+private volatile boolean mInterrupted
+
+private int mNativeData
+
+private int mTimeoutRemainingMs
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.bluetooth.BluetoothDevice)
+
+public void <init>(
+android.bluetooth.BluetoothDevice
+int
+int)
+
+static boolean access$000(
+android.bluetooth.BluetoothAudioGateway)
+
+static boolean access$002(
+android.bluetooth.BluetoothAudioGateway
+boolean)
+
+static int access$100(
+android.bluetooth.BluetoothAudioGateway)
+
+static int access$1000(
+android.bluetooth.BluetoothAudioGateway)
+
+static int access$102(
+android.bluetooth.BluetoothAudioGateway
+int)
+
+static int access$200(
+android.bluetooth.BluetoothAudioGateway)
+
+static int access$202(
+android.bluetooth.BluetoothAudioGateway
+int)
+
+static boolean access$300(
+android.bluetooth.BluetoothAudioGateway
+int)
+
+static int access$400(
+android.bluetooth.BluetoothAudioGateway)
+
+static java.lang.String access$500(
+android.bluetooth.BluetoothAudioGateway)
+
+static android.os.Handler access$600(
+android.bluetooth.BluetoothAudioGateway)
+
+static android.bluetooth.BluetoothDevice access$700(
+android.bluetooth.BluetoothAudioGateway)
+
+static int access$800(
+android.bluetooth.BluetoothAudioGateway)
+
+static java.lang.String access$900(
+android.bluetooth.BluetoothAudioGateway)
+
+private static native void classInitNative()
+
+private native void cleanupNativeDataNative()
+
+private native void initializeNativeDataNative()
+
+private static void log(
+java.lang.String)
+
+private native boolean setUpListeningSocketsNative()
+
+private native void tearDownListeningSocketsNative()
+
+private native boolean waitForHandsfreeConnectNative(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public boolean start(
+android.os.Handler)
+
+public void stop()
+
+________________CLASS________________
+
+
+public class android.bluetooth.BluetoothDevice extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int ADDRESS_LENGTH
+
+public static final int MODE_CONNECTABLE
+
+public static final int MODE_DISCOVERABLE
+
+public static final int MODE_OFF
+
+public static final int MODE_UNKNOWN
+
+public static final int RESULT_FAILURE
+
+public static final int RESULT_SUCCESS
+
+private static final java.lang.String TAG
+
+private final android.bluetooth.IBluetoothDevice mService
+----------------METHODS----------------
+
+public void <init>(
+android.bluetooth.IBluetoothDevice)
+
+public static boolean checkBluetoothAddress(
+java.lang.String)
+
+public static byte[] convertPinToBytes(
+java.lang.String)
+
+public boolean cancelBondingProcess(
+java.lang.String)
+
+public void cancelDiscovery()
+
+public boolean cancelPin(
+java.lang.String)
+
+public boolean clearRemoteAlias(
+java.lang.String)
+
+public boolean createBonding(
+java.lang.String)
+
+public boolean createBonding(
+java.lang.String
+android.bluetooth.IBluetoothDeviceCallback)
+
+public boolean disable()
+
+public boolean disconnectRemoteDeviceAcl(
+java.lang.String)
+
+public boolean enable()
+
+public boolean enable(
+android.bluetooth.IBluetoothDeviceCallback)
+
+public java.lang.String getAddress()
+
+public java.lang.String getCompany()
+
+public int getDiscoverableTimeout()
+
+public java.lang.String getMajorClass()
+
+public java.lang.String getManufacturer()
+
+public java.lang.String getMinorClass()
+
+public int getMode()
+
+public java.lang.String getName()
+
+public java.lang.String getRemoteAlias(
+java.lang.String)
+
+public int getRemoteClass(
+java.lang.String)
+
+public java.lang.String getRemoteCompany(
+java.lang.String)
+
+public byte[] getRemoteFeatures(
+java.lang.String)
+
+public java.lang.String getRemoteMajorClass(
+java.lang.String)
+
+public java.lang.String getRemoteManufacturer(
+java.lang.String)
+
+public java.lang.String getRemoteMinorClass(
+java.lang.String)
+
+public java.lang.String getRemoteName(
+java.lang.String)
+
+public java.lang.String getRemoteRevision(
+java.lang.String)
+
+public boolean getRemoteServiceChannel(
+java.lang.String
+short
+android.bluetooth.IBluetoothDeviceCallback)
+
+public java.lang.String[] getRemoteServiceClasses(
+java.lang.String)
+
+public java.lang.String getRemoteVersion(
+java.lang.String)
+
+public java.lang.String getRevision()
+
+public java.lang.String getVersion()
+
+public boolean hasBonding(
+java.lang.String)
+
+public boolean isAclConnected(
+java.lang.String)
+
+public boolean isDiscovering()
+
+public boolean isEnabled()
+
+public boolean isPeriodicDiscovery()
+
+public java.lang.String lastSeen(
+java.lang.String)
+
+public java.lang.String lastUsed(
+java.lang.String)
+
+public java.lang.String[] listAclConnections()
+
+public java.lang.String[] listBondings()
+
+public java.lang.String[] listRemoteDevices()
+
+public boolean removeBonding(
+java.lang.String)
+
+public void setDiscoverableTimeout(
+int)
+
+public void setMode(
+int)
+
+public boolean setName(
+java.lang.String)
+
+public boolean setPin(
+java.lang.String
+byte[])
+
+public boolean setRemoteAlias(
+java.lang.String
+java.lang.String)
+
+public boolean startDiscovery()
+
+public boolean startDiscovery(
+boolean)
+
+public boolean startPeriodicDiscovery()
+
+public boolean stopPeriodicDiscovery()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/bluetooth/BluetoothHeadset; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.bluetooth.BluetoothHeadset$1 extends java.lang.Object implements android.content.ServiceConnection
+
+----------------FIELDS----------------
+
+final android.bluetooth.BluetoothHeadset this$0
+----------------METHODS----------------
+
+ void <init>(
+android.bluetooth.BluetoothHeadset)
+
+public void onServiceConnected(
+android.content.ComponentName
+android.os.IBinder)
+
+public void onServiceDisconnected(
+android.content.ComponentName)
+
+________________CLASS________________
+
+
+public class android.bluetooth.BluetoothHeadset extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int RESULT_CANCELLED
+
+public static final int RESULT_FAILURE
+
+public static final int RESULT_SUCCESS
+
+public static final int STATE_CONNECTED
+
+public static final int STATE_CONNECTING
+
+public static final int STATE_DISCONNECTED
+
+public static final int STATE_ERROR
+
+private static final java.lang.String TAG
+
+private android.content.ServiceConnection mConnection
+
+private final android.content.Context mContext
+
+private android.bluetooth.IBluetoothHeadset mService
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+static android.bluetooth.IBluetoothHeadset access$002(
+android.bluetooth.BluetoothHeadset
+android.bluetooth.IBluetoothHeadset)
+
+public void close()
+
+public boolean connectHeadset(
+java.lang.String
+android.bluetooth.IBluetoothHeadsetCallback)
+
+public boolean disconnectHeadset()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public java.lang.String getHeadsetAddress()
+
+public int getState()
+
+public boolean isConnected(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class android.bluetooth.BluetoothIntent extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ADDRESS
+
+public static final java.lang.String ALIAS
+
+public static final java.lang.String BONDING_CREATED_ACTION
+
+public static final java.lang.String BONDING_REMOVED_ACTION
+
+public static final java.lang.String CLASS
+
+public static final java.lang.String DISABLED_ACTION
+
+public static final java.lang.String DISCOVERY_COMPLETED_ACTION
+
+public static final java.lang.String DISCOVERY_STARTED_ACTION
+
+public static final java.lang.String ENABLED_ACTION
+
+public static final java.lang.String HEADSET_PREVIOUS_STATE
+
+public static final java.lang.String HEADSET_STATE
+
+public static final java.lang.String HEADSET_STATE_CHANGED_ACTION
+
+public static final java.lang.String MODE
+
+public static final java.lang.String MODE_CHANGED_ACTION
+
+public static final java.lang.String NAME
+
+public static final java.lang.String NAME_CHANGED_ACTION
+
+public static final java.lang.String PAIRING_CANCEL_ACTION
+
+public static final java.lang.String PAIRING_REQUEST_ACTION
+
+public static final java.lang.String REMOTE_ALIAS_CHANGED_ACTION
+
+public static final java.lang.String REMOTE_ALIAS_CLEARED_ACTION
+
+public static final java.lang.String REMOTE_DEVICE_CLASS_UPDATED_ACTION
+
+public static final java.lang.String REMOTE_DEVICE_CONNECTED_ACTION
+
+public static final java.lang.String REMOTE_DEVICE_DISAPPEARED_ACTION
+
+public static final java.lang.String REMOTE_DEVICE_DISCONNECTED_ACTION
+
+public static final java.lang.String REMOTE_DEVICE_DISCONNECT_REQUESTED_ACTION
+
+public static final java.lang.String REMOTE_DEVICE_FOUND_ACTION
+
+public static final java.lang.String REMOTE_NAME_FAILED_ACTION
+
+public static final java.lang.String REMOTE_NAME_UPDATED_ACTION
+
+public static final java.lang.String RSSI
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public final class android.bluetooth.Database extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static android.bluetooth.Database mInstance
+
+private static final java.lang.String sLogName
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native int addServiceRecordFromXmlNative(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native int addServiceRecordNative(
+byte[])
+
+private static native void classInitNative()
+
+private native void cleanupNativeDataNative()
+
+public static android.bluetooth.Database getInstance()
+
+private native void initializeNativeDataNative()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native void removeServiceRecordNative(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native void updateServiceRecordFromXmlNative(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native void updateServiceRecordNative(
+int
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int addServiceRecord(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int addServiceRecordFromXml(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int advertiseRfcommService(
+android.bluetooth.RfcommSocket
+java.lang.String
+java.util.UUID)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public void removeServiceRecord(
+int)
+
+public void updateServiceRecord(
+int
+byte[])
+
+public void updateServiceRecordFromXml(
+int
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.bluetooth.DeviceClass extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CLASS_UNKNOWN
+
+public static final int MAJOR_CLASS_AUDIO_VIDEO
+
+public static final int MAJOR_CLASS_BITMASK
+
+public static final int MAJOR_CLASS_COMPUTER
+
+public static final int MAJOR_CLASS_IMAGING
+
+public static final int MAJOR_CLASS_MEDICAL
+
+public static final int MAJOR_CLASS_MISC
+
+public static final int MAJOR_CLASS_NETWORKING
+
+public static final int MAJOR_CLASS_PERIPHERAL
+
+public static final int MAJOR_CLASS_PHONE
+
+public static final int MAJOR_CLASS_TOY
+
+public static final int MAJOR_CLASS_UNCATEGORIZED
+
+public static final int MAJOR_CLASS_WEARABLE
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_BITMASK
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_CAMCORDER
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_CAR_AUDIO
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_HANDSFREE
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_HEADPHONES
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_HEADSET
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_HIFI_AUDIO
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_LOUDSPEAKER
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_MICROPHONE
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_PORTABLE_AUDIO
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_SET_TOP_BOX
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_UNCATEGORIZED
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_VCR
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_VIDEO_CAMERA
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_VIDEO_CONFERENCING
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_VIDEO_DISPLAY_AND_LOUDSPEAKER
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_VIDEO_GAMING_TOY
+
+public static final int MINOR_CLASS_AUDIO_VIDEO_VIDEO_MONITOR
+
+public static final int SERVICE_CLASS_AUDIO
+
+public static final int SERVICE_CLASS_BITMASK
+
+public static final int SERVICE_CLASS_CAPTURE
+
+public static final int SERVICE_CLASS_INFORMATION
+
+public static final int SERVICE_CLASS_LIMITED_DISCOVERABILITY
+
+public static final int SERVICE_CLASS_NETWORKING
+
+public static final int SERVICE_CLASS_OBJECT_TRANSFER
+
+public static final int SERVICE_CLASS_POSITIONING
+
+public static final int SERVICE_CLASS_RENDER
+
+public static final int SERVICE_CLASS_TELEPHONY
+----------------METHODS----------------
+
+public void <init>()
+
+public static int getMajorClass(
+int)
+
+public static int getMinorClass(
+int)
+
+public static boolean hasServiceClass(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.bluetooth.HeadsetBase$1 extends android.bluetooth.AtCommandHandler
+
+----------------FIELDS----------------
+
+final android.bluetooth.HeadsetBase this$0
+----------------METHODS----------------
+
+ void <init>(
+android.bluetooth.HeadsetBase)
+
+public android.bluetooth.AtCommandResult handleSetCommand(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.bluetooth.HeadsetBase$2 extends android.bluetooth.AtCommandHandler
+
+----------------FIELDS----------------
+
+final android.bluetooth.HeadsetBase this$0
+----------------METHODS----------------
+
+ void <init>(
+android.bluetooth.HeadsetBase)
+
+public android.bluetooth.AtCommandResult handleSetCommand(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.bluetooth.HeadsetBase$3 extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final android.bluetooth.HeadsetBase this$0
+----------------METHODS----------------
+
+ void <init>(
+android.bluetooth.HeadsetBase
+java.lang.String)
+
+public void run()
+
+________________CLASS________________
+
+
+public class android.bluetooth.HeadsetBase extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean DBG
+
+public static final int DIRECTION_INCOMING
+
+public static final int DIRECTION_OUTGOING
+
+public static final int RFCOMM_DISCONNECTED
+
+private static final java.lang.String TAG
+
+private final java.lang.String mAddress
+
+protected android.bluetooth.AtParser mAtParser
+
+private final android.bluetooth.BluetoothDevice mBluetooth
+
+private final long mConnectTimestamp
+
+private final int mDirection
+
+private java.lang.Thread mEventThread
+
+private android.os.Handler mEventThreadHandler
+
+private volatile boolean mEventThreadInterrupted
+
+private int mNativeData
+
+private final int mRfcommChannel
+
+private int mTimeoutRemainingMs
+
+private android.os.PowerManager$WakeLock mWakeLock
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.os.PowerManager
+android.bluetooth.BluetoothDevice
+java.lang.String
+int)
+
+public void <init>(
+android.os.PowerManager
+android.bluetooth.BluetoothDevice
+java.lang.String
+int
+int
+android.os.Handler)
+
+static boolean access$000(
+android.bluetooth.HeadsetBase)
+
+static java.lang.String access$100(
+android.bluetooth.HeadsetBase
+int)
+
+static int access$200(
+android.bluetooth.HeadsetBase)
+
+static android.os.Handler access$300(
+android.bluetooth.HeadsetBase)
+
+static void access$400(
+android.bluetooth.HeadsetBase)
+
+private void acquireWakeLock()
+
+private static native void classInitNative()
+
+private native void cleanupNativeDataNative()
+
+private native boolean connectAsyncNative()
+
+private native boolean connectNative()
+
+private native void disconnectNative()
+
+private native int getLastReadStatusNative()
+
+private native void initializeNativeDataNative(
+int)
+
+private void log(
+java.lang.String)
+
+private native java.lang.String readNative(
+int)
+
+private void releaseWakeLock()
+
+private native boolean sendURCNative(
+java.lang.String)
+
+private void stopEventThread()
+
+private native int waitForAsyncConnectNative(
+int)
+
+public boolean connect(
+android.os.Handler)
+
+public boolean connectAsync()
+
+public void disconnect()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public java.lang.String getAddress()
+
+public android.bluetooth.AtParser getAtParser()
+
+public long getConnectTimestamp()
+
+public int getDirection()
+
+public java.lang.String getName()
+
+public int getRemainingAsyncConnectWaitingTimeMs()
+
+protected void handleInput(
+java.lang.String)
+
+protected void initializeAtParser()
+
+public boolean isConnected()
+
+public boolean sendURC(
+java.lang.String)
+
+public void startEventThread()
+
+public int waitForAsyncConnect(
+int
+android.os.Handler)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/bluetooth/IBluetoothDevice$Stub; )
+public abstract interface class android.bluetooth.IBluetoothDevice extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean cancelBondingProcess(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean cancelDiscovery()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean cancelPin(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean clearRemoteAlias(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean createBonding(
+java.lang.String
+android.bluetooth.IBluetoothDeviceCallback)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean disable()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean disconnectRemoteDeviceAcl(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean enable(
+android.bluetooth.IBluetoothDeviceCallback)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getAddress()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getCompany()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getDiscoverableTimeout()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getMajorClass()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getManufacturer()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getMinorClass()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getMode()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getName()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getRemoteAlias(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getRemoteClass(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getRemoteCompany(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract byte[] getRemoteFeatures(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getRemoteMajorClass(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getRemoteManufacturer(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getRemoteMinorClass(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getRemoteName(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getRemoteRevision(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean getRemoteServiceChannel(
+java.lang.String
+int
+android.bluetooth.IBluetoothDeviceCallback)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String[] getRemoteServiceClasses(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getRemoteVersion(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getRevision()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getVersion()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean hasBonding(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean isAclConnected(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean isDiscovering()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean isEnabled()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean isPeriodicDiscovery()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String lastSeen(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String lastUsed(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String[] listAclConnections()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String[] listBondings()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String[] listRemoteDevices()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean removeBonding(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean setDiscoverableTimeout(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean setMode(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean setName(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean setPin(
+java.lang.String
+byte[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean setRemoteAlias(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean startDiscovery(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean startPeriodicDiscovery()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean stopPeriodicDiscovery()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/bluetooth/IBluetoothDevice$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class android.bluetooth.IBluetoothDevice$Stub$Proxy extends java.lang.Object implements android.bluetooth.IBluetoothDevice
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean cancelBondingProcess(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean cancelDiscovery()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean cancelPin(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean clearRemoteAlias(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean createBonding(
+java.lang.String
+android.bluetooth.IBluetoothDeviceCallback)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean disable()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean disconnectRemoteDeviceAcl(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean enable(
+android.bluetooth.IBluetoothDeviceCallback)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getAddress()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getCompany()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getDiscoverableTimeout()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getMajorClass()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getManufacturer()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getMinorClass()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getMode()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getName()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getRemoteAlias(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getRemoteClass(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getRemoteCompany(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public byte[] getRemoteFeatures(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getRemoteMajorClass(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getRemoteManufacturer(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getRemoteMinorClass(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getRemoteName(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getRemoteRevision(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean getRemoteServiceChannel(
+java.lang.String
+int
+android.bluetooth.IBluetoothDeviceCallback)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String[] getRemoteServiceClasses(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getRemoteVersion(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getRevision()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getVersion()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean hasBonding(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean isAclConnected(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean isDiscovering()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean isEnabled()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean isPeriodicDiscovery()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String lastSeen(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String lastUsed(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String[] listAclConnections()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String[] listBondings()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String[] listRemoteDevices()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean removeBonding(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean setDiscoverableTimeout(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean setMode(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean setName(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean setPin(
+java.lang.String
+byte[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean setRemoteAlias(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean startDiscovery(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean startPeriodicDiscovery()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean stopPeriodicDiscovery()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/bluetooth/IBluetoothDevice; )
+@dalvik.annotation.MemberClasses (value =Landroid/bluetooth/IBluetoothDevice$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class android.bluetooth.IBluetoothDevice$Stub extends android.os.Binder implements android.bluetooth.IBluetoothDevice
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_cancelBondingProcess
+
+static final int TRANSACTION_cancelDiscovery
+
+static final int TRANSACTION_cancelPin
+
+static final int TRANSACTION_clearRemoteAlias
+
+static final int TRANSACTION_createBonding
+
+static final int TRANSACTION_disable
+
+static final int TRANSACTION_disconnectRemoteDeviceAcl
+
+static final int TRANSACTION_enable
+
+static final int TRANSACTION_getAddress
+
+static final int TRANSACTION_getCompany
+
+static final int TRANSACTION_getDiscoverableTimeout
+
+static final int TRANSACTION_getMajorClass
+
+static final int TRANSACTION_getManufacturer
+
+static final int TRANSACTION_getMinorClass
+
+static final int TRANSACTION_getMode
+
+static final int TRANSACTION_getName
+
+static final int TRANSACTION_getRemoteAlias
+
+static final int TRANSACTION_getRemoteClass
+
+static final int TRANSACTION_getRemoteCompany
+
+static final int TRANSACTION_getRemoteFeatures
+
+static final int TRANSACTION_getRemoteMajorClass
+
+static final int TRANSACTION_getRemoteManufacturer
+
+static final int TRANSACTION_getRemoteMinorClass
+
+static final int TRANSACTION_getRemoteName
+
+static final int TRANSACTION_getRemoteRevision
+
+static final int TRANSACTION_getRemoteServiceChannel
+
+static final int TRANSACTION_getRemoteServiceClasses
+
+static final int TRANSACTION_getRemoteVersion
+
+static final int TRANSACTION_getRevision
+
+static final int TRANSACTION_getVersion
+
+static final int TRANSACTION_hasBonding
+
+static final int TRANSACTION_isAclConnected
+
+static final int TRANSACTION_isDiscovering
+
+static final int TRANSACTION_isEnabled
+
+static final int TRANSACTION_isPeriodicDiscovery
+
+static final int TRANSACTION_lastSeen
+
+static final int TRANSACTION_lastUsed
+
+static final int TRANSACTION_listAclConnections
+
+static final int TRANSACTION_listBondings
+
+static final int TRANSACTION_listRemoteDevices
+
+static final int TRANSACTION_removeBonding
+
+static final int TRANSACTION_setDiscoverableTimeout
+
+static final int TRANSACTION_setMode
+
+static final int TRANSACTION_setName
+
+static final int TRANSACTION_setPin
+
+static final int TRANSACTION_setRemoteAlias
+
+static final int TRANSACTION_startDiscovery
+
+static final int TRANSACTION_startPeriodicDiscovery
+
+static final int TRANSACTION_stopPeriodicDiscovery
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.bluetooth.IBluetoothDevice asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/bluetooth/IBluetoothDeviceCallback$Stub; )
+public abstract interface class android.bluetooth.IBluetoothDeviceCallback extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onCreateBondingResult(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onEnableResult(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onGetRemoteServiceChannelResult(
+java.lang.String
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/bluetooth/IBluetoothDeviceCallback$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class android.bluetooth.IBluetoothDeviceCallback$Stub$Proxy extends java.lang.Object implements android.bluetooth.IBluetoothDeviceCallback
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onCreateBondingResult(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onEnableResult(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onGetRemoteServiceChannelResult(
+java.lang.String
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/bluetooth/IBluetoothDeviceCallback; )
+@dalvik.annotation.MemberClasses (value =Landroid/bluetooth/IBluetoothDeviceCallback$Stub$Proxy; )
+public abstract class android.bluetooth.IBluetoothDeviceCallback$Stub extends android.os.Binder implements android.bluetooth.IBluetoothDeviceCallback
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_onCreateBondingResult
+
+static final int TRANSACTION_onEnableResult
+
+static final int TRANSACTION_onGetRemoteServiceChannelResult
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.bluetooth.IBluetoothDeviceCallback asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/bluetooth/IBluetoothHeadset$Stub; )
+public abstract interface class android.bluetooth.IBluetoothHeadset extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean connectHeadset(
+java.lang.String
+android.bluetooth.IBluetoothHeadsetCallback)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void disconnectHeadset()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getHeadsetAddress()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getState()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean isConnected(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/bluetooth/IBluetoothHeadset$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class android.bluetooth.IBluetoothHeadset$Stub$Proxy extends java.lang.Object implements android.bluetooth.IBluetoothHeadset
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean connectHeadset(
+java.lang.String
+android.bluetooth.IBluetoothHeadsetCallback)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void disconnectHeadset()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getHeadsetAddress()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getState()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean isConnected(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/bluetooth/IBluetoothHeadset; )
+@dalvik.annotation.MemberClasses (value =Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy; )
+public abstract class android.bluetooth.IBluetoothHeadset$Stub extends android.os.Binder implements android.bluetooth.IBluetoothHeadset
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_connectHeadset
+
+static final int TRANSACTION_disconnectHeadset
+
+static final int TRANSACTION_getHeadsetAddress
+
+static final int TRANSACTION_getState
+
+static final int TRANSACTION_isConnected
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.bluetooth.IBluetoothHeadset asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/bluetooth/IBluetoothHeadsetCallback$Stub; )
+public abstract interface class android.bluetooth.IBluetoothHeadsetCallback extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onConnectHeadsetResult(
+java.lang.String
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/bluetooth/IBluetoothHeadsetCallback$Stub; )
+ class android.bluetooth.IBluetoothHeadsetCallback$Stub$Proxy extends java.lang.Object implements android.bluetooth.IBluetoothHeadsetCallback
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onConnectHeadsetResult(
+java.lang.String
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/bluetooth/IBluetoothHeadsetCallback$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/bluetooth/IBluetoothHeadsetCallback; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class android.bluetooth.IBluetoothHeadsetCallback$Stub extends android.os.Binder implements android.bluetooth.IBluetoothHeadsetCallback
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_onConnectHeadsetResult
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.bluetooth.IBluetoothHeadsetCallback asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class android.bluetooth.RfcommSocket extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int mAcceptTimeoutRemainingMs
+
+private java.lang.String mAddress
+
+private java.io.FileDescriptor mFd
+
+protected java.io.FileInputStream mInputStream
+
+private boolean mIsBound
+
+private boolean mIsConnecting
+
+private boolean mIsListening
+
+private int mNativeData
+
+protected java.io.FileOutputStream mOutputStream
+
+private int mPort
+
+private int mTimeoutRemainingMs
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private native java.io.FileDescriptor acceptNative(
+android.bluetooth.RfcommSocket
+int)
+
+private native boolean bindNative(
+java.lang.String
+int)
+
+private static native void classInitNative()
+
+private native void cleanupNativeDataNative()
+
+private native boolean connectAsyncNative(
+java.lang.String
+int)
+
+private native boolean connectNative(
+java.lang.String
+int)
+
+private native java.io.FileDescriptor createNative()
+
+private native void destroyNative()
+
+private native void initializeNativeDataNative()
+
+private native boolean interruptAsyncConnectNative()
+
+private native int isConnectedNative()
+
+private native boolean listenNative(
+int)
+
+private native boolean shutdownNative(
+boolean)
+
+private native int waitForAsyncConnectNative(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.FileDescriptor accept(
+android.bluetooth.RfcommSocket
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean bind(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean bind(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean connect(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean connectAsync(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.FileDescriptor create()
+
+public void destroy()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.FileDescriptor getFileDescriptor()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getInputStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.OutputStream getOutputStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int getPort()
+
+public int getRemainingAcceptWaitingTimeMs()
+
+public int getRemainingAsyncConnectWaitingTimeMs()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void interruptAsyncConnect()
+
+public boolean isConnected()
+
+public boolean isConnecting()
+
+public boolean isInputConnected()
+
+public boolean isListening()
+
+public boolean isOutputConnected()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean listen(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean shutdown()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean shutdownInput()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean shutdownOutput()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int waitForAsyncConnect(
+int)
+
+________________CLASS________________
+
+
+public class android.bluetooth.ScoSocket extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean DBG
+
+public static final int STATE_ACCEPT
+
+public static final int STATE_CLOSED
+
+public static final int STATE_CONNECTED
+
+public static final int STATE_CONNECTING
+
+public static final int STATE_READY
+
+private static final java.lang.String TAG
+
+private static final boolean VDBG
+
+private int mAcceptedCode
+
+private int mClosedCode
+
+private int mConnectedCode
+
+private android.os.Handler mHandler
+
+private int mNativeData
+
+private int mState
+
+private android.os.PowerManager$WakeLock mWakeLock
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.os.PowerManager
+android.os.Handler
+int
+int
+int)
+
+private native boolean acceptNative()
+
+private void acquireWakeLock()
+
+private static native void classInitNative()
+
+private native void closeNative()
+
+private native boolean connectNative(
+java.lang.String)
+
+private native void destroyNative()
+
+private native void initNative()
+
+private void log(
+java.lang.String)
+
+private void onAccepted(
+int)
+
+private void onClosed()
+
+private void onConnected(
+int)
+
+private void releaseWakeLock()
+
+public boolean accept()
+
+public void close()
+
+public boolean connect(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public int getState()
+
+________________CLASS________________
+
+
+public abstract class android.content.AbstractTableMerger extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String SELECT_BY_ID_AND_ACCOUNT
+
+private static final java.lang.String SELECT_MARKED
+
+private static final java.lang.String SELECT_UNSYNCED
+
+private static final java.lang.String TAG
+
+private static boolean TRACE
+
+protected static android.content.ContentValues mSyncMarkValues
+
+private static final java.lang.String[] syncDirtyProjection
+
+private static final java.lang.String[] syncIdAndVersionProjection
+
+protected android.database.sqlite.SQLiteDatabase mDb
+
+protected java.lang.String mDeletedTable
+
+protected android.net.Uri mDeletedTableURL
+
+private volatile boolean mIsMergeCancelled
+
+protected java.lang.String mTable
+
+protected android.net.Uri mTableURL
+
+private android.content.ContentValues mValues
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.database.sqlite.SQLiteDatabase
+java.lang.String
+android.net.Uri
+java.lang.String
+android.net.Uri)
+
+private static boolean findInCursor(
+android.database.Cursor
+int
+java.lang.String)
+
+private void findLocalChanges(
+android.content.TempProviderSyncResult
+android.content.SyncableContentProvider
+java.lang.String
+android.content.SyncResult)
+
+private void fullyDeleteRowsWithSyncId(
+java.lang.String
+java.lang.String
+android.content.SyncResult)
+
+private void mergeServerDiffs(
+android.content.SyncContext
+java.lang.String
+android.content.SyncableContentProvider
+android.content.SyncResult)
+
+protected void cursorRowToContentValues(
+android.database.Cursor
+android.content.ContentValues)
+
+public void deleteRow(
+android.database.Cursor)
+
+public abstract void insertRow(
+android.content.ContentProvider
+android.database.Cursor)
+
+public void merge(
+android.content.SyncContext
+java.lang.String
+android.content.SyncableContentProvider
+android.content.TempProviderSyncResult
+android.content.SyncResult
+android.content.SyncableContentProvider)
+
+protected abstract void notifyChanges()
+
+public void onMergeCancelled()
+
+public abstract void resolveRow(
+long
+java.lang.String
+android.content.ContentProvider
+android.database.Cursor)
+
+public abstract void updateRow(
+long
+android.content.ContentProvider
+android.database.Cursor)
+
+________________CLASS________________
+
+
+public class android.content.ActivityNotFoundException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =28 name =WorkerArgs )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/AsyncQueryHandler; )
+public final class android.content.AsyncQueryHandler$WorkerArgs extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.Object cookie
+
+public android.os.Handler handler
+
+public java.lang.String orderBy
+
+public java.lang.String[] projection
+
+public java.lang.Object result
+
+public java.lang.String selection
+
+public java.lang.String[] selectionArgs
+
+public android.net.Uri uri
+
+public android.content.ContentValues values
+----------------METHODS----------------
+
+protected void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4 name =WorkerHandler )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/AsyncQueryHandler; )
+public class android.content.AsyncQueryHandler$WorkerHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.content.AsyncQueryHandler this$0
+----------------METHODS----------------
+
+public void <init>(
+android.content.AsyncQueryHandler
+android.os.Looper)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/AsyncQueryHandler$WorkerHandler;Landroid/content/AsyncQueryHandler$WorkerArgs; )
+public abstract class android.content.AsyncQueryHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+private static final int EVENT_ARG_DELETE
+
+private static final int EVENT_ARG_INSERT
+
+private static final int EVENT_ARG_QUERY
+
+private static final int EVENT_ARG_UPDATE
+
+private static final java.lang.String TAG
+
+private static final boolean localLOGV
+
+private static android.os.Looper sLooper
+
+ android.content.ContentResolver mResolver
+
+private android.os.Handler mWorkerThreadHandler
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.ContentResolver)
+
+public final void cancelOperation(
+int)
+
+protected android.os.Handler createHandler(
+android.os.Looper)
+
+public void handleMessage(
+android.os.Message)
+
+protected void onDeleteComplete(
+int
+java.lang.Object
+int)
+
+protected void onInsertComplete(
+int
+java.lang.Object
+android.net.Uri)
+
+protected void onQueryComplete(
+int
+java.lang.Object
+android.database.Cursor)
+
+protected void onUpdateComplete(
+int
+java.lang.Object
+int)
+
+public final void startDelete(
+int
+java.lang.Object
+android.net.Uri
+java.lang.String
+java.lang.String[])
+
+public final void startInsert(
+int
+java.lang.Object
+android.net.Uri
+android.content.ContentValues)
+
+public void startQuery(
+int
+java.lang.Object
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+public final void startUpdate(
+int
+java.lang.Object
+android.net.Uri
+android.content.ContentValues
+java.lang.String
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/ComponentName;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/ComponentName; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.content.ComponentName$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.ComponentName createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.ComponentName[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public final class android.content.ComponentName extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/ComponentName;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+private final java.lang.String mClass
+
+private final java.lang.String mPackage
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(Landroid/content/Context;Ljava/lang/Class<*>;)V )
+public void <init>(
+android.content.Context
+java.lang.Class)
+
+public void <init>(
+android.content.Context
+java.lang.String)
+
+public void <init>(
+android.os.Parcel)
+
+private void <init>(
+java.lang.String
+android.os.Parcel)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public static android.content.ComponentName readFromParcel(
+android.os.Parcel)
+
+public static android.content.ComponentName unflattenFromString(
+java.lang.String)
+
+public static void writeToParcel(
+android.content.ComponentName
+android.os.Parcel)
+
+public int describeContents()
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String flattenToShortString()
+
+public java.lang.String flattenToString()
+
+public java.lang.String getClassName()
+
+public java.lang.String getPackageName()
+
+public java.lang.String getShortClassName()
+
+public int hashCode()
+
+public java.lang.String toShortString()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public abstract interface class android.content.ContentInsertHandler extends java.lang.Object implements org.xml.sax.ContentHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+public abstract void insert(
+android.content.ContentResolver
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void insert(
+android.content.ContentResolver
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class android.content.IContentProvider extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+
+public static final int BULK_INSERT_TRANSACTION
+
+public static final int DELETE_TRANSACTION
+
+public static final int GET_SYNC_ADAPTER_TRANSACTION
+
+public static final int GET_TYPE_TRANSACTION
+
+public static final int INSERT_TRANSACTION
+
+public static final int OPEN_FILE_TRANSACTION
+
+public static final int QUERY_TRANSACTION
+
+public static final int UPDATE_TRANSACTION
+
+public static final java.lang.String descriptor
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int bulkInsert(
+android.net.Uri
+android.content.ContentValues[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.database.IBulkCursor bulkQuery(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String
+android.database.IContentObserver
+android.database.CursorWindow)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int delete(
+android.net.Uri
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.ISyncAdapter getSyncAdapter()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getType(
+android.net.Uri)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.net.Uri insert(
+android.net.Uri
+android.content.ContentValues)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException;Ljava/io/FileNotFoundException; )
+public abstract android.os.ParcelFileDescriptor openFile(
+android.net.Uri
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.database.Cursor query(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int update(
+android.net.Uri
+android.content.ContentValues
+java.lang.String
+java.lang.String[])
+
+________________CLASS________________
+
+
+public abstract class android.content.ContentProviderNative extends android.os.Binder implements android.content.IContentProvider
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.content.IContentProvider asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =Transport )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/ContentProvider; )
+ class android.content.ContentProvider$Transport extends android.content.ContentProviderNative
+
+----------------FIELDS----------------
+
+final android.content.ContentProvider this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.ContentProvider)
+
+private void checkReadPermission(
+android.net.Uri)
+
+private void checkWritePermission(
+android.net.Uri)
+
+public int bulkInsert(
+android.net.Uri
+android.content.ContentValues[])
+
+public android.database.IBulkCursor bulkQuery(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String
+android.database.IContentObserver
+android.database.CursorWindow)
+
+public int delete(
+android.net.Uri
+java.lang.String
+java.lang.String[])
+
+ android.content.ContentProvider getContentProvider()
+
+public android.content.ISyncAdapter getSyncAdapter()
+
+public java.lang.String getType(
+android.net.Uri)
+
+public android.net.Uri insert(
+android.net.Uri
+android.content.ContentValues)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public android.os.ParcelFileDescriptor openFile(
+android.net.Uri
+java.lang.String)
+
+public android.database.Cursor query(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+public int update(
+android.net.Uri
+android.content.ContentValues
+java.lang.String
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/ContentProvider$Transport; )
+public abstract class android.content.ContentProvider extends java.lang.Object implements android.content.ComponentCallbacks
+
+----------------FIELDS----------------
+
+private android.content.Context mContext
+
+private java.lang.String mReadPermission
+
+private android.content.ContentProvider$Transport mTransport
+
+private java.lang.String mWritePermission
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.content.ContentProvider coerceToLocalContentProvider(
+android.content.IContentProvider)
+
+public void attachInfo(
+android.content.Context
+android.content.pm.ProviderInfo)
+
+public int bulkInsert(
+android.net.Uri
+android.content.ContentValues[])
+
+public abstract int delete(
+android.net.Uri
+java.lang.String
+java.lang.String[])
+
+public final android.content.Context getContext()
+
+public android.content.IContentProvider getIContentProvider()
+
+public final java.lang.String getReadPermission()
+
+public android.content.SyncAdapter getSyncAdapter()
+
+public abstract java.lang.String getType(
+android.net.Uri)
+
+public final java.lang.String getWritePermission()
+
+public abstract android.net.Uri insert(
+android.net.Uri
+android.content.ContentValues)
+
+protected boolean isTemporary()
+
+public void onConfigurationChanged(
+android.content.res.Configuration)
+
+public abstract boolean onCreate()
+
+public void onLowMemory()
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public android.os.ParcelFileDescriptor openFile(
+android.net.Uri
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+protected final android.os.ParcelFileDescriptor openFileHelper(
+android.net.Uri
+java.lang.String)
+
+public abstract android.database.Cursor query(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+protected final void setReadPermission(
+java.lang.String)
+
+protected final void setWritePermission(
+java.lang.String)
+
+public abstract int update(
+android.net.Uri
+android.content.ContentValues
+java.lang.String
+java.lang.String[])
+
+________________CLASS________________
+
+
+final class android.content.ContentProviderProxy extends java.lang.Object implements android.content.IContentProvider
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+public void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int bulkInsert(
+android.net.Uri
+android.content.ContentValues[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.database.IBulkCursor bulkQuery(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String
+android.database.IContentObserver
+android.database.CursorWindow)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int delete(
+android.net.Uri
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.ISyncAdapter getSyncAdapter()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getType(
+android.net.Uri)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.net.Uri insert(
+android.net.Uri
+android.content.ContentValues)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException;Ljava/io/FileNotFoundException; )
+public android.os.ParcelFileDescriptor openFile(
+android.net.Uri
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.database.Cursor query(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int update(
+android.net.Uri
+android.content.ContentValues
+java.lang.String
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/database/ContentObserver$Transport;Landroid/database/ContentObserver$NotificationRunnable; )
+public abstract class android.database.ContentObserver extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.Object lock
+
+ android.os.Handler mHandler
+
+private android.database.ContentObserver$Transport mTransport
+----------------METHODS----------------
+
+public void <init>(
+android.os.Handler)
+
+public boolean deliverSelfNotifications()
+
+public final void dispatchChange(
+boolean)
+
+public android.database.IContentObserver getContentObserver()
+
+public void onChange(
+boolean)
+
+public android.database.IContentObserver releaseContentObserver()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.content.ContentQueryMap$1 extends android.database.ContentObserver
+
+----------------FIELDS----------------
+
+final android.content.ContentQueryMap this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.ContentQueryMap
+android.os.Handler)
+
+public void onChange(
+boolean)
+
+________________CLASS________________
+
+
+public class android.content.ContentQueryMap extends java.util.Observable
+
+----------------FIELDS----------------
+
+private java.lang.String[] mColumnNames
+
+private android.database.ContentObserver mContentObserver
+
+private android.database.Cursor mCursor
+
+private boolean mDirty
+
+private android.os.Handler mHandlerForUpdateNotifications
+
+private boolean mKeepUpdated
+
+private int mKeyColumn
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Landroid/content/ContentValues;>; )
+private java.util.Map mValues
+----------------METHODS----------------
+
+public void <init>(
+android.database.Cursor
+java.lang.String
+boolean
+android.os.Handler)
+
+static boolean access$002(
+android.content.ContentQueryMap
+boolean)
+
+private void readCursorIntoCache()
+
+public void close()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Landroid/content/ContentValues;>; )
+public java.util.Map getRows()
+
+public android.content.ContentValues getValues(
+java.lang.String)
+
+public void requery()
+
+public void setKeepUpdated(
+boolean)
+
+________________CLASS________________
+
+
+public abstract interface class android.database.Cursor extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@java.lang.Deprecated
+public abstract void abortUpdates()
+
+public abstract void close()
+@java.lang.Deprecated
+public abstract boolean commitUpdates()
+@java.lang.Deprecated
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+Ljava/lang/Long;+Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;>;)Z )
+public abstract boolean commitUpdates(
+java.util.Map)
+
+public abstract void copyStringToBuffer(
+int
+android.database.CharArrayBuffer)
+
+public abstract void deactivate()
+@java.lang.Deprecated
+public abstract boolean deleteRow()
+
+public abstract byte[] getBlob(
+int)
+
+public abstract int getColumnCount()
+
+public abstract int getColumnIndex(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public abstract int getColumnIndexOrThrow(
+java.lang.String)
+
+public abstract java.lang.String getColumnName(
+int)
+
+public abstract java.lang.String[] getColumnNames()
+
+public abstract int getCount()
+
+public abstract double getDouble(
+int)
+
+public abstract android.os.Bundle getExtras()
+
+public abstract float getFloat(
+int)
+
+public abstract int getInt(
+int)
+
+public abstract long getLong(
+int)
+
+public abstract int getPosition()
+
+public abstract short getShort(
+int)
+
+public abstract java.lang.String getString(
+int)
+
+public abstract boolean getWantsAllOnMoveCalls()
+@java.lang.Deprecated
+public abstract boolean hasUpdates()
+
+public abstract boolean isAfterLast()
+
+public abstract boolean isBeforeFirst()
+
+public abstract boolean isClosed()
+
+public abstract boolean isFirst()
+
+public abstract boolean isLast()
+
+public abstract boolean isNull(
+int)
+
+public abstract boolean move(
+int)
+
+public abstract boolean moveToFirst()
+
+public abstract boolean moveToLast()
+
+public abstract boolean moveToNext()
+
+public abstract boolean moveToPosition(
+int)
+
+public abstract boolean moveToPrevious()
+
+public abstract void registerContentObserver(
+android.database.ContentObserver)
+
+public abstract void registerDataSetObserver(
+android.database.DataSetObserver)
+
+public abstract boolean requery()
+
+public abstract android.os.Bundle respond(
+android.os.Bundle)
+
+public abstract void setNotificationUri(
+android.content.ContentResolver
+android.net.Uri)
+@java.lang.Deprecated
+public abstract boolean supportsUpdates()
+
+public abstract void unregisterContentObserver(
+android.database.ContentObserver)
+
+public abstract void unregisterDataSetObserver(
+android.database.DataSetObserver)
+@java.lang.Deprecated
+public abstract boolean updateBlob(
+int
+byte[])
+@java.lang.Deprecated
+public abstract boolean updateDouble(
+int
+double)
+@java.lang.Deprecated
+public abstract boolean updateFloat(
+int
+float)
+@java.lang.Deprecated
+public abstract boolean updateInt(
+int
+int)
+@java.lang.Deprecated
+public abstract boolean updateLong(
+int
+long)
+@java.lang.Deprecated
+public abstract boolean updateShort(
+int
+short)
+@java.lang.Deprecated
+public abstract boolean updateString(
+int
+java.lang.String)
+@java.lang.Deprecated
+public abstract boolean updateToNull(
+int)
+
+________________CLASS________________
+
+
+public class android.database.CursorWrapper extends java.lang.Object implements android.database.Cursor
+
+----------------FIELDS----------------
+
+private android.database.Cursor mCursor
+----------------METHODS----------------
+
+public void <init>(
+android.database.Cursor)
+
+public void abortUpdates()
+
+public void close()
+
+public boolean commitUpdates()
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+Ljava/lang/Long;+Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;>;)Z )
+public boolean commitUpdates(
+java.util.Map)
+
+public void copyStringToBuffer(
+int
+android.database.CharArrayBuffer)
+
+public void deactivate()
+
+public boolean deleteRow()
+
+public byte[] getBlob(
+int)
+
+public int getColumnCount()
+
+public int getColumnIndex(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public int getColumnIndexOrThrow(
+java.lang.String)
+
+public java.lang.String getColumnName(
+int)
+
+public java.lang.String[] getColumnNames()
+
+public int getCount()
+
+public double getDouble(
+int)
+
+public android.os.Bundle getExtras()
+
+public float getFloat(
+int)
+
+public int getInt(
+int)
+
+public long getLong(
+int)
+
+public int getPosition()
+
+public short getShort(
+int)
+
+public java.lang.String getString(
+int)
+
+public boolean getWantsAllOnMoveCalls()
+
+public boolean hasUpdates()
+
+public boolean isAfterLast()
+
+public boolean isBeforeFirst()
+
+public boolean isClosed()
+
+public boolean isFirst()
+
+public boolean isLast()
+
+public boolean isNull(
+int)
+
+public boolean move(
+int)
+
+public boolean moveToFirst()
+
+public boolean moveToLast()
+
+public boolean moveToNext()
+
+public boolean moveToPosition(
+int)
+
+public boolean moveToPrevious()
+
+public void registerContentObserver(
+android.database.ContentObserver)
+
+public void registerDataSetObserver(
+android.database.DataSetObserver)
+
+public boolean requery()
+
+public android.os.Bundle respond(
+android.os.Bundle)
+
+public void setNotificationUri(
+android.content.ContentResolver
+android.net.Uri)
+
+public boolean supportsUpdates()
+
+public void unregisterContentObserver(
+android.database.ContentObserver)
+
+public void unregisterDataSetObserver(
+android.database.DataSetObserver)
+
+public boolean updateBlob(
+int
+byte[])
+
+public boolean updateDouble(
+int
+double)
+
+public boolean updateFloat(
+int
+float)
+
+public boolean updateInt(
+int
+int)
+
+public boolean updateLong(
+int
+long)
+
+public boolean updateShort(
+int
+short)
+
+public boolean updateString(
+int
+java.lang.String)
+
+public boolean updateToNull(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/ContentResolver; )
+@dalvik.annotation.InnerClass (accessFlags =18 name =CursorWrapperInner )
+final class android.content.ContentResolver$CursorWrapperInner extends android.database.CursorWrapper
+
+----------------FIELDS----------------
+
+public static final java.lang.String TAG
+
+private boolean mCloseFlag
+
+private android.content.IContentProvider mContentProvider
+
+final android.content.ContentResolver this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.ContentResolver
+android.database.Cursor
+android.content.IContentProvider)
+
+public void close()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/ParcelFileDescriptor$AutoCloseOutputStream;Landroid/os/ParcelFileDescriptor$AutoCloseInputStream; )
+public class android.os.ParcelFileDescriptor extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/os/ParcelFileDescriptor;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final int MODE_CREATE
+
+public static final int MODE_READ_ONLY
+
+public static final int MODE_READ_WRITE
+
+public static final int MODE_TRUNCATE
+
+public static final int MODE_WORLD_READABLE
+
+public static final int MODE_WORLD_WRITEABLE
+
+public static final int MODE_WRITE_ONLY
+
+private boolean mClosed
+
+private final java.io.FileDescriptor mFileDescriptor
+
+private final android.os.ParcelFileDescriptor mParcelDescriptor
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.os.ParcelFileDescriptor)
+
+ void <init>(
+java.io.FileDescriptor)
+
+public static android.os.ParcelFileDescriptor fromSocket(
+java.net.Socket)
+
+private static native java.io.FileDescriptor getFileDescriptorFromSocket(
+java.net.Socket)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public static android.os.ParcelFileDescriptor open(
+java.io.File
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public int describeContents()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public java.io.FileDescriptor getFileDescriptor()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/ContentResolver; )
+@dalvik.annotation.InnerClass (accessFlags =18 name =ParcelFileDescriptorInner )
+final class android.content.ContentResolver$ParcelFileDescriptorInner extends android.os.ParcelFileDescriptor
+
+----------------FIELDS----------------
+
+public static final java.lang.String TAG
+
+private android.content.IContentProvider mContentProvider
+
+private boolean mReleaseProviderFlag
+
+final android.content.ContentResolver this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.ContentResolver
+android.os.ParcelFileDescriptor
+android.content.IContentProvider)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/ContentService; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =ObserverCall )
+public final class android.content.ContentService$ObserverCall extends java.lang.Object
+
+----------------FIELDS----------------
+
+final android.content.ContentService$ObserverNode mNode
+
+final android.database.IContentObserver mObserver
+
+final boolean mSelfNotify
+----------------METHODS----------------
+
+ void <init>(
+android.content.ContentService$ObserverNode
+android.database.IContentObserver
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/ContentService$ObserverNode; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =ObserverEntry )
+ class android.content.ContentService$ObserverNode$ObserverEntry extends java.lang.Object implements android.os.IBinder$DeathRecipient
+
+----------------FIELDS----------------
+
+public boolean notifyForDescendents
+
+public android.database.IContentObserver observer
+
+final android.content.ContentService$ObserverNode this$0
+----------------METHODS----------------
+
+public void <init>(
+android.content.ContentService$ObserverNode
+android.database.IContentObserver
+boolean)
+
+public void binderDied()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =ObserverNode )
+@dalvik.annotation.MemberClasses (value =Landroid/content/ContentService$ObserverNode$ObserverEntry; )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/ContentService; )
+public final class android.content.ContentService$ObserverNode extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int DELETE_TYPE
+
+public static final int INSERT_TYPE
+
+public static final int UPDATE_TYPE
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/content/ContentService$ObserverNode;>; )
+private java.util.ArrayList mChildren
+
+private java.lang.String mName
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/content/ContentService$ObserverNode$ObserverEntry;>; )
+private java.util.ArrayList mObservers
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+static java.util.ArrayList access$000(
+android.content.ContentService$ObserverNode)
+
+private void addObserver(
+android.net.Uri
+int
+android.database.IContentObserver
+boolean)
+@dalvik.annotation.Signature (value =(Landroid/net/Uri;ZLandroid/database/IContentObserver;ZLjava/util/ArrayList<Landroid/content/ContentService$ObserverCall;>;)V )
+private void collectMyObservers(
+android.net.Uri
+boolean
+android.database.IContentObserver
+boolean
+java.util.ArrayList)
+
+private int countUriSegments(
+android.net.Uri)
+
+private java.lang.String getUriSegment(
+android.net.Uri
+int)
+
+public void addObserver(
+android.net.Uri
+android.database.IContentObserver
+boolean)
+@dalvik.annotation.Signature (value =(Landroid/net/Uri;ILandroid/database/IContentObserver;ZLjava/util/ArrayList<Landroid/content/ContentService$ObserverCall;>;)V )
+public void collectObservers(
+android.net.Uri
+int
+android.database.IContentObserver
+boolean
+java.util.ArrayList)
+
+public boolean removeObserver(
+android.database.IContentObserver)
+
+________________CLASS________________
+
+
+public abstract interface class android.content.IContentService extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+
+public static final int CANCEL_SYNC_TRANSACTION
+
+public static final int NOTIFY_CHANGE_TRANSACTION
+
+public static final int REGISTER_CONTENT_OBSERVER_TRANSACTION
+
+public static final java.lang.String SERVICE_NAME
+
+public static final int START_SYNC_TRANSACTION
+
+public static final int UNREGISTER_CHANGE_OBSERVER_TRANSACTION
+
+public static final java.lang.String descriptor
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void cancelSync(
+android.net.Uri)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void notifyChange(
+android.net.Uri
+android.database.IContentObserver
+boolean
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void registerContentObserver(
+android.net.Uri
+boolean
+android.database.IContentObserver)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void startSync(
+android.net.Uri
+android.os.Bundle)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void unregisterContentObserver(
+android.database.IContentObserver)
+
+________________CLASS________________
+
+
+abstract class android.content.ContentServiceNative extends android.os.Binder implements android.content.IContentService
+
+----------------FIELDS----------------
+
+private static android.content.IContentService gDefault
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.content.IContentService asInterface(
+android.os.IBinder)
+
+public static android.content.IContentService getDefault()
+
+public android.os.IBinder asBinder()
+
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/ContentService$ObserverNode;Landroid/content/ContentService$ObserverCall; )
+public final class android.content.ContentService extends android.content.ContentServiceNative
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private android.content.Context mContext
+
+private boolean mFactoryTest
+
+private final android.content.ContentService$ObserverNode mRootNode
+
+private android.content.SyncManager mSyncManager
+
+private final java.lang.Object mSyncManagerLock
+----------------METHODS----------------
+
+ void <init>(
+android.content.Context
+boolean)
+
+private android.content.SyncManager getSyncManager()
+
+public static android.content.IContentService main(
+android.content.Context
+boolean)
+
+public volatile android.os.IBinder asBinder()
+
+public void cancelSync(
+android.net.Uri)
+
+protected void dump(
+java.io.FileDescriptor
+java.io.PrintWriter
+java.lang.String[])
+
+public void notifyChange(
+android.net.Uri
+android.database.IContentObserver
+boolean
+boolean)
+
+public volatile boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+public void registerContentObserver(
+android.net.Uri
+boolean
+android.database.IContentObserver)
+
+public void startSync(
+android.net.Uri
+android.os.Bundle)
+
+public void unregisterContentObserver(
+android.database.IContentObserver)
+
+________________CLASS________________
+
+
+final class android.content.ContentServiceProxy extends java.lang.Object implements android.content.IContentService
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+public void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void cancelSync(
+android.net.Uri)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void notifyChange(
+android.net.Uri
+android.database.IContentObserver
+boolean
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void registerContentObserver(
+android.net.Uri
+boolean
+android.database.IContentObserver)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void startSync(
+android.net.Uri
+android.os.Bundle)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void unregisterContentObserver(
+android.database.IContentObserver)
+
+________________CLASS________________
+
+
+public class android.content.ContentUris extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.net.Uri$Builder appendId(
+android.net.Uri$Builder
+long)
+
+public static long parseId(
+android.net.Uri)
+
+public static android.net.Uri withAppendedId(
+android.net.Uri
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/ContentValues;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/ContentValues; )
+final class android.content.ContentValues$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.ContentValues createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.ContentValues[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public final class android.content.ContentValues extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/ContentValues;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final java.lang.String TAG
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Object;>; )
+private java.util.HashMap mValues
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+android.content.ContentValues)
+@dalvik.annotation.Signature (value =(Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Object;>;)V )
+private void <init>(
+java.util.HashMap)
+
+ void <init>(
+java.util.HashMap
+android.content.ContentValues$1)
+
+public void clear()
+
+public boolean containsKey(
+java.lang.String)
+
+public int describeContents()
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.Object get(
+java.lang.String)
+
+public java.lang.Boolean getAsBoolean(
+java.lang.String)
+
+public java.lang.Byte getAsByte(
+java.lang.String)
+
+public byte[] getAsByteArray(
+java.lang.String)
+
+public java.lang.Double getAsDouble(
+java.lang.String)
+
+public java.lang.Float getAsFloat(
+java.lang.String)
+
+public java.lang.Integer getAsInteger(
+java.lang.String)
+
+public java.lang.Long getAsLong(
+java.lang.String)
+
+public java.lang.Short getAsShort(
+java.lang.String)
+
+public java.lang.String getAsString(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/ArrayList<Ljava/lang/String;>; )
+@java.lang.Deprecated
+public java.util.ArrayList getStringArrayList(
+java.lang.String)
+
+public int hashCode()
+
+public void put(
+java.lang.String
+java.lang.Boolean)
+
+public void put(
+java.lang.String
+java.lang.Byte)
+
+public void put(
+java.lang.String
+java.lang.Double)
+
+public void put(
+java.lang.String
+java.lang.Float)
+
+public void put(
+java.lang.String
+java.lang.Integer)
+
+public void put(
+java.lang.String
+java.lang.Long)
+
+public void put(
+java.lang.String
+java.lang.Short)
+
+public void put(
+java.lang.String
+java.lang.String)
+
+public void put(
+java.lang.String
+byte[])
+
+public void putAll(
+android.content.ContentValues)
+
+public void putNull(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/ArrayList<Ljava/lang/String;>;)V )
+@java.lang.Deprecated
+public void putStringArrayList(
+java.lang.String
+java.util.ArrayList)
+
+public void remove(
+java.lang.String)
+
+public int size()
+
+public java.lang.String toString()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/Object;>;>; )
+public java.util.Set valueSet()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class android.content.DefaultDataHandler extends java.lang.Object implements android.content.ContentInsertHandler
+
+----------------FIELDS----------------
+
+private static final java.lang.String ARG
+
+private static final java.lang.String COL
+
+private static final java.lang.String DEL
+
+private static final java.lang.String POSTFIX
+
+private static final java.lang.String ROW
+
+private static final java.lang.String SELECT
+
+private static final java.lang.String URI_STR
+
+private android.content.ContentResolver mContentResolver
+@dalvik.annotation.Signature (value =Ljava/util/Stack<Landroid/net/Uri;>; )
+private java.util.Stack mUris
+
+private android.content.ContentValues mValues
+----------------METHODS----------------
+
+public void <init>()
+
+private android.net.Uri insertRow()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+private void parseRow(
+org.xml.sax.Attributes)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void characters(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endElement(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endPrefixMapping(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void ignorableWhitespace(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+public void insert(
+android.content.ContentResolver
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void insert(
+android.content.ContentResolver
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void processingInstruction(
+java.lang.String
+java.lang.String)
+
+public void setDocumentLocator(
+org.xml.sax.Locator)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void skippedEntity(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startElement(
+java.lang.String
+java.lang.String
+java.lang.String
+org.xml.sax.Attributes)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startPrefixMapping(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnKeyListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/DialogInterface; )
+public abstract interface class android.content.DialogInterface$OnKeyListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean onKey(
+android.content.DialogInterface
+int
+android.view.KeyEvent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnMultiChoiceClickListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/DialogInterface; )
+public abstract interface class android.content.DialogInterface$OnMultiChoiceClickListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onClick(
+android.content.DialogInterface
+int
+boolean)
+
+________________CLASS________________
+
+
+public final class android.content.Formatter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String formatFileSize(
+android.content.Context
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/ISyncAdapter$Stub; )
+public abstract interface class android.content.ISyncAdapter extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void cancelSync()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void startSync(
+android.content.ISyncContext
+java.lang.String
+android.os.Bundle)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/ISyncAdapter$Stub; )
+ class android.content.ISyncAdapter$Stub$Proxy extends java.lang.Object implements android.content.ISyncAdapter
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void cancelSync()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void startSync(
+android.content.ISyncContext
+java.lang.String
+android.os.Bundle)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/ISyncAdapter; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.MemberClasses (value =Landroid/content/ISyncAdapter$Stub$Proxy; )
+public abstract class android.content.ISyncAdapter$Stub extends android.os.Binder implements android.content.ISyncAdapter
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_cancelSync
+
+static final int TRANSACTION_startSync
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.content.ISyncAdapter asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/ISyncContext$Stub; )
+public abstract interface class android.content.ISyncContext extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onFinished(
+android.content.SyncResult)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void sendHeartbeat()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/ISyncContext$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class android.content.ISyncContext$Stub$Proxy extends java.lang.Object implements android.content.ISyncContext
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onFinished(
+android.content.SyncResult)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void sendHeartbeat()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/ISyncContext$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/ISyncContext; )
+public abstract class android.content.ISyncContext$Stub extends android.os.Binder implements android.content.ISyncContext
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_onFinished
+
+static final int TRANSACTION_sendHeartbeat
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.content.ISyncContext asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/Intent; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/Intent;>; )
+final class android.content.Intent$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.Intent createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.Intent[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/Intent; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =FilterComparison )
+public final class android.content.Intent$FilterComparison extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int mHashCode
+
+private final android.content.Intent mIntent
+----------------METHODS----------------
+
+public void <init>(
+android.content.Intent)
+
+public boolean equals(
+java.lang.Object)
+
+public android.content.Intent getIntent()
+
+public int hashCode()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/Intent$ShortcutIconResource; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/Intent$ShortcutIconResource;>; )
+final class android.content.Intent$ShortcutIconResource$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.Intent$ShortcutIconResource createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.Intent$ShortcutIconResource[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =ShortcutIconResource )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/Intent; )
+public class android.content.Intent$ShortcutIconResource extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/Intent$ShortcutIconResource;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public java.lang.String packageName
+
+public java.lang.String resourceName
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.content.Intent$ShortcutIconResource fromContext(
+android.content.Context
+int)
+
+public int describeContents()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/Intent$FilterComparison;Landroid/content/Intent$ShortcutIconResource; )
+public class android.content.Intent extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACTION_AIRPLANE_MODE_CHANGED
+
+public static final java.lang.String ACTION_ALARM_CHANGED
+
+public static final java.lang.String ACTION_ALL_APPS
+
+public static final java.lang.String ACTION_ANSWER
+
+public static final java.lang.String ACTION_ATTACH_DATA
+
+public static final java.lang.String ACTION_BATTERY_CHANGED
+
+public static final java.lang.String ACTION_BATTERY_LOW
+
+public static final java.lang.String ACTION_BOOT_COMPLETED
+
+public static final java.lang.String ACTION_BUG_REPORT
+
+public static final java.lang.String ACTION_CALL
+
+public static final java.lang.String ACTION_CALL_BUTTON
+
+public static final java.lang.String ACTION_CALL_EMERGENCY
+
+public static final java.lang.String ACTION_CALL_PRIVILEGED
+
+public static final java.lang.String ACTION_CAMERA_BUTTON
+
+public static final java.lang.String ACTION_CHOOSER
+
+public static final java.lang.String ACTION_CLOSE_SYSTEM_DIALOGS
+
+public static final java.lang.String ACTION_CONFIGURATION_CHANGED
+
+public static final java.lang.String ACTION_CREATE_SHORTCUT
+
+public static final java.lang.String ACTION_DATE_CHANGED
+
+public static final java.lang.String ACTION_DEFAULT
+
+public static final java.lang.String ACTION_DELETE
+
+public static final java.lang.String ACTION_DEVICE_STORAGE_LOW
+
+public static final java.lang.String ACTION_DEVICE_STORAGE_OK
+
+public static final java.lang.String ACTION_DIAL
+
+public static final java.lang.String ACTION_EDIT
+
+public static final java.lang.String ACTION_FACTORY_TEST
+
+public static final java.lang.String ACTION_GET_CONTENT
+
+public static final java.lang.String ACTION_GTALK_SERVICE_CONNECTED
+
+public static final java.lang.String ACTION_GTALK_SERVICE_DISCONNECTED
+
+public static final java.lang.String ACTION_HEADSET_PLUG
+
+public static final java.lang.String ACTION_INSERT
+
+public static final java.lang.String ACTION_INSERT_OR_EDIT
+
+public static final java.lang.String ACTION_MAIN
+
+public static final java.lang.String ACTION_MANAGE_PACKAGE_STORAGE
+
+public static final java.lang.String ACTION_MEDIA_BAD_REMOVAL
+
+public static final java.lang.String ACTION_MEDIA_BUTTON
+
+public static final java.lang.String ACTION_MEDIA_EJECT
+
+public static final java.lang.String ACTION_MEDIA_MOUNTED
+
+public static final java.lang.String ACTION_MEDIA_REMOVED
+
+public static final java.lang.String ACTION_MEDIA_SCANNER_FINISHED
+
+public static final java.lang.String ACTION_MEDIA_SCANNER_SCAN_FILE
+
+public static final java.lang.String ACTION_MEDIA_SCANNER_STARTED
+
+public static final java.lang.String ACTION_MEDIA_SHARED
+
+public static final java.lang.String ACTION_MEDIA_UNMOUNTABLE
+
+public static final java.lang.String ACTION_MEDIA_UNMOUNTED
+
+public static final java.lang.String ACTION_NEW_OUTGOING_CALL
+
+public static final java.lang.String ACTION_PACKAGE_ADDED
+
+public static final java.lang.String ACTION_PACKAGE_CHANGED
+
+public static final java.lang.String ACTION_PACKAGE_INSTALL
+
+public static final java.lang.String ACTION_PACKAGE_REMOVED
+
+public static final java.lang.String ACTION_PACKAGE_RESTARTED
+
+public static final java.lang.String ACTION_PICK
+
+public static final java.lang.String ACTION_PICK_ACTIVITY
+
+public static final java.lang.String ACTION_PROVIDER_CHANGED
+
+public static final java.lang.String ACTION_REBOOT
+
+public static final java.lang.String ACTION_RUN
+
+public static final java.lang.String ACTION_SCREEN_OFF
+
+public static final java.lang.String ACTION_SCREEN_ON
+
+public static final java.lang.String ACTION_SEARCH
+
+public static final java.lang.String ACTION_SEND
+
+public static final java.lang.String ACTION_SENDTO
+
+public static final java.lang.String ACTION_SET_WALLPAPER
+
+public static final java.lang.String ACTION_SYNC
+
+public static final java.lang.String ACTION_SYNC_STATE_CHANGED
+
+public static final java.lang.String ACTION_TIMEZONE_CHANGED
+
+public static final java.lang.String ACTION_TIME_CHANGED
+
+public static final java.lang.String ACTION_TIME_TICK
+
+public static final java.lang.String ACTION_UID_REMOVED
+
+public static final java.lang.String ACTION_UMS_CONNECTED
+
+public static final java.lang.String ACTION_UMS_DISCONNECTED
+
+public static final java.lang.String ACTION_VIEW
+
+public static final java.lang.String ACTION_VOICE_COMMAND
+
+public static final java.lang.String ACTION_WALLPAPER_CHANGED
+
+public static final java.lang.String ACTION_WEB_SEARCH
+
+public static final java.lang.String CATEGORY_ALTERNATIVE
+
+public static final java.lang.String CATEGORY_BROWSABLE
+
+public static final java.lang.String CATEGORY_DEFAULT
+
+public static final java.lang.String CATEGORY_DEVELOPMENT_PREFERENCE
+
+public static final java.lang.String CATEGORY_EMBED
+
+public static final java.lang.String CATEGORY_FRAMEWORK_INSTRUMENTATION_TEST
+
+public static final java.lang.String CATEGORY_GADGET
+
+public static final java.lang.String CATEGORY_HOME
+
+public static final java.lang.String CATEGORY_LAUNCHER
+
+public static final java.lang.String CATEGORY_MONKEY
+
+public static final java.lang.String CATEGORY_OPENABLE
+
+public static final java.lang.String CATEGORY_PREFERENCE
+
+public static final java.lang.String CATEGORY_SAMPLE_CODE
+
+public static final java.lang.String CATEGORY_SELECTED_ALTERNATIVE
+
+public static final java.lang.String CATEGORY_TAB
+
+public static final java.lang.String CATEGORY_TEST
+
+public static final java.lang.String CATEGORY_UNIT_TEST
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/Intent;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final java.lang.String EXTRA_ALARM_COUNT
+
+public static final java.lang.String EXTRA_BCC
+
+public static final java.lang.String EXTRA_CC
+
+public static final java.lang.String EXTRA_DONT_KILL_APP
+
+public static final java.lang.String EXTRA_EMAIL
+
+public static final java.lang.String EXTRA_INTENT
+
+public static final java.lang.String EXTRA_KEY_EVENT
+
+public static final java.lang.String EXTRA_PHONE_NUMBER
+
+public static final java.lang.String EXTRA_SHORTCUT_ICON
+
+public static final java.lang.String EXTRA_SHORTCUT_ICON_RESOURCE
+
+public static final java.lang.String EXTRA_SHORTCUT_INTENT
+
+public static final java.lang.String EXTRA_SHORTCUT_NAME
+
+public static final java.lang.String EXTRA_STREAM
+
+public static final java.lang.String EXTRA_SUBJECT
+
+public static final java.lang.String EXTRA_TEMPLATE
+
+public static final java.lang.String EXTRA_TEXT
+
+public static final java.lang.String EXTRA_TITLE
+
+public static final java.lang.String EXTRA_UID
+
+public static final int FILL_IN_ACTION
+
+public static final int FILL_IN_CATEGORIES
+
+public static final int FILL_IN_COMPONENT
+
+public static final int FILL_IN_DATA
+
+public static final int FLAG_ACTIVITY_BROUGHT_TO_FRONT
+
+public static final int FLAG_ACTIVITY_CLEAR_TOP
+
+public static final int FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
+
+public static final int FLAG_ACTIVITY_FORWARD_RESULT
+
+public static final int FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
+
+public static final int FLAG_ACTIVITY_MULTIPLE_TASK
+
+public static final int FLAG_ACTIVITY_NEW_TASK
+
+public static final int FLAG_ACTIVITY_NO_HISTORY
+
+public static final int FLAG_ACTIVITY_PREVIOUS_IS_TOP
+
+public static final int FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
+
+public static final int FLAG_ACTIVITY_SINGLE_TOP
+
+public static final int FLAG_DEBUG_LOG_RESOLUTION
+
+public static final int FLAG_FROM_BACKGROUND
+
+public static final int FLAG_GRANT_READ_URI_PERMISSION
+
+public static final int FLAG_GRANT_WRITE_URI_PERMISSION
+
+public static final int FLAG_RECEIVER_REGISTERED_ONLY
+
+private java.lang.String mAction
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private java.util.HashSet mCategories
+
+private android.content.ComponentName mComponent
+
+private android.net.Uri mData
+
+private android.os.Bundle mExtras
+
+private int mFlags
+
+private java.lang.String mType
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Landroid/content/Context;Ljava/lang/Class<*>;)V )
+public void <init>(
+android.content.Context
+java.lang.Class)
+
+public void <init>(
+android.content.Intent)
+
+private void <init>(
+android.content.Intent
+boolean)
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.content.Intent$1)
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+android.net.Uri)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Landroid/net/Uri;Landroid/content/Context;Ljava/lang/Class<*>;)V )
+public void <init>(
+java.lang.String
+android.net.Uri
+android.content.Context
+java.lang.Class)
+
+public static android.content.Intent createChooser(
+android.content.Intent
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+public static android.content.Intent getIntent(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+public static android.content.Intent getIntentOld(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private static void parseExtra(
+android.content.res.Resources
+android.content.Intent
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static android.content.Intent parseIntent(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+public android.content.Intent addCategory(
+java.lang.String)
+
+public android.content.Intent addFlags(
+int)
+
+public java.lang.Object clone()
+
+public android.content.Intent cloneFilter()
+
+public int describeContents()
+
+public int fillIn(
+android.content.Intent
+int)
+
+public boolean filterEquals(
+android.content.Intent)
+
+public int filterHashCode()
+
+public java.lang.String getAction()
+
+public boolean[] getBooleanArrayExtra(
+java.lang.String)
+
+public boolean getBooleanExtra(
+java.lang.String
+boolean)
+
+public android.os.Bundle getBundleExtra(
+java.lang.String)
+
+public byte[] getByteArrayExtra(
+java.lang.String)
+
+public byte getByteExtra(
+java.lang.String
+byte)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public java.util.Set getCategories()
+
+public char[] getCharArrayExtra(
+java.lang.String)
+
+public char getCharExtra(
+java.lang.String
+char)
+
+public java.lang.CharSequence getCharSequenceExtra(
+java.lang.String)
+
+public android.content.ComponentName getComponent()
+
+public android.net.Uri getData()
+
+public java.lang.String getDataString()
+
+public double[] getDoubleArrayExtra(
+java.lang.String)
+
+public double getDoubleExtra(
+java.lang.String
+double)
+@java.lang.Deprecated
+public java.lang.Object getExtra(
+java.lang.String)
+@java.lang.Deprecated
+public java.lang.Object getExtra(
+java.lang.String
+java.lang.Object)
+
+public android.os.Bundle getExtras()
+
+public int getFlags()
+
+public float[] getFloatArrayExtra(
+java.lang.String)
+
+public float getFloatExtra(
+java.lang.String
+float)
+@java.lang.Deprecated
+public android.os.IBinder getIBinderExtra(
+java.lang.String)
+
+public int[] getIntArrayExtra(
+java.lang.String)
+
+public int getIntExtra(
+java.lang.String
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/ArrayList<Ljava/lang/Integer;>; )
+public java.util.ArrayList getIntegerArrayListExtra(
+java.lang.String)
+
+public long[] getLongArrayExtra(
+java.lang.String)
+
+public long getLongExtra(
+java.lang.String
+long)
+
+public android.os.Parcelable[] getParcelableArrayExtra(
+java.lang.String)
+@dalvik.annotation.Signature (value =<T::Landroid/os/Parcelable;>(Ljava/lang/String;)Ljava/util/ArrayList<TT;>; )
+public java.util.ArrayList getParcelableArrayListExtra(
+java.lang.String)
+@dalvik.annotation.Signature (value =<T::Landroid/os/Parcelable;>(Ljava/lang/String;)TT; )
+public android.os.Parcelable getParcelableExtra(
+java.lang.String)
+
+public java.lang.String getScheme()
+
+public java.io.Serializable getSerializableExtra(
+java.lang.String)
+
+public short[] getShortArrayExtra(
+java.lang.String)
+
+public short getShortExtra(
+java.lang.String
+short)
+
+public java.lang.String[] getStringArrayExtra(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/ArrayList<Ljava/lang/String;>; )
+public java.util.ArrayList getStringArrayListExtra(
+java.lang.String)
+
+public java.lang.String getStringExtra(
+java.lang.String)
+
+public java.lang.String getType()
+
+public boolean hasCategory(
+java.lang.String)
+
+public boolean hasExtra(
+java.lang.String)
+
+public boolean hasFileDescriptors()
+
+public android.content.Intent putExtra(
+java.lang.String
+byte)
+
+public android.content.Intent putExtra(
+java.lang.String
+char)
+
+public android.content.Intent putExtra(
+java.lang.String
+double)
+
+public android.content.Intent putExtra(
+java.lang.String
+float)
+
+public android.content.Intent putExtra(
+java.lang.String
+int)
+
+public android.content.Intent putExtra(
+java.lang.String
+long)
+
+public android.content.Intent putExtra(
+java.lang.String
+android.os.Bundle)
+@java.lang.Deprecated
+public android.content.Intent putExtra(
+java.lang.String
+android.os.IBinder)
+
+public android.content.Intent putExtra(
+java.lang.String
+android.os.Parcelable)
+
+public android.content.Intent putExtra(
+java.lang.String
+java.io.Serializable)
+
+public android.content.Intent putExtra(
+java.lang.String
+java.lang.CharSequence)
+
+public android.content.Intent putExtra(
+java.lang.String
+java.lang.String)
+
+public android.content.Intent putExtra(
+java.lang.String
+short)
+
+public android.content.Intent putExtra(
+java.lang.String
+boolean)
+
+public android.content.Intent putExtra(
+java.lang.String
+byte[])
+
+public android.content.Intent putExtra(
+java.lang.String
+char[])
+
+public android.content.Intent putExtra(
+java.lang.String
+double[])
+
+public android.content.Intent putExtra(
+java.lang.String
+float[])
+
+public android.content.Intent putExtra(
+java.lang.String
+int[])
+
+public android.content.Intent putExtra(
+java.lang.String
+long[])
+
+public android.content.Intent putExtra(
+java.lang.String
+android.os.Parcelable[])
+
+public android.content.Intent putExtra(
+java.lang.String
+java.lang.String[])
+
+public android.content.Intent putExtra(
+java.lang.String
+short[])
+
+public android.content.Intent putExtra(
+java.lang.String
+boolean[])
+
+public android.content.Intent putExtras(
+android.content.Intent)
+
+public android.content.Intent putExtras(
+android.os.Bundle)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/ArrayList<Ljava/lang/Integer;>;)Landroid/content/Intent; )
+public android.content.Intent putIntegerArrayListExtra(
+java.lang.String
+java.util.ArrayList)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/ArrayList<+Landroid/os/Parcelable;>;)Landroid/content/Intent; )
+public android.content.Intent putParcelableArrayListExtra(
+java.lang.String
+java.util.ArrayList)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/ArrayList<Ljava/lang/String;>;)Landroid/content/Intent; )
+public android.content.Intent putStringArrayListExtra(
+java.lang.String
+java.util.ArrayList)
+
+public void readFromParcel(
+android.os.Parcel)
+
+public void removeCategory(
+java.lang.String)
+
+public void removeExtra(
+java.lang.String)
+
+public android.content.ComponentName resolveActivity(
+android.content.pm.PackageManager)
+
+public android.content.pm.ActivityInfo resolveActivityInfo(
+android.content.pm.PackageManager
+int)
+
+public java.lang.String resolveType(
+android.content.ContentResolver)
+
+public java.lang.String resolveType(
+android.content.Context)
+
+public java.lang.String resolveTypeIfNeeded(
+android.content.ContentResolver)
+
+public android.content.Intent setAction(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Landroid/content/Context;Ljava/lang/Class<*>;)Landroid/content/Intent; )
+public android.content.Intent setClass(
+android.content.Context
+java.lang.Class)
+
+public android.content.Intent setClassName(
+android.content.Context
+java.lang.String)
+
+public android.content.Intent setClassName(
+java.lang.String
+java.lang.String)
+
+public android.content.Intent setComponent(
+android.content.ComponentName)
+
+public android.content.Intent setData(
+android.net.Uri)
+
+public android.content.Intent setDataAndType(
+android.net.Uri
+java.lang.String)
+
+public void setExtrasClassLoader(
+java.lang.ClassLoader)
+
+public android.content.Intent setFlags(
+int)
+
+public android.content.Intent setType(
+java.lang.String)
+
+public java.lang.String toString()
+
+public java.lang.String toURI()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/IntentFilter;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/IntentFilter; )
+final class android.content.IntentFilter$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.IntentFilter createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.IntentFilter[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/IntentFilter; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =AuthorityEntry )
+public final class android.content.IntentFilter$AuthorityEntry extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final java.lang.String mHost
+
+private final java.lang.String mOrigHost
+
+private final int mPort
+
+private final boolean mWild
+----------------METHODS----------------
+
+ void <init>(
+android.os.Parcel)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+static java.lang.String access$000(
+android.content.IntentFilter$AuthorityEntry)
+
+static int access$100(
+android.content.IntentFilter$AuthorityEntry)
+
+static boolean access$200(
+android.content.IntentFilter$AuthorityEntry)
+
+public java.lang.String getHost()
+
+public int getPort()
+
+public int match(
+android.net.Uri)
+
+ void writeToParcel(
+android.os.Parcel)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/IntentFilter; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =MalformedMimeTypeException )
+public class android.content.IntentFilter$MalformedMimeTypeException extends android.util.AndroidException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/IntentFilter$AuthorityEntry;Landroid/content/IntentFilter$MalformedMimeTypeException; )
+public class android.content.IntentFilter extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+
+private static final java.lang.String ACTION_STR
+
+private static final java.lang.String AUTH_STR
+
+private static final java.lang.String CAT_STR
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/IntentFilter;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+private static final java.lang.String HOST_STR
+
+private static final java.lang.String LITERAL_STR
+
+public static final int MATCH_ADJUSTMENT_MASK
+
+public static final int MATCH_ADJUSTMENT_NORMAL
+
+public static final int MATCH_CATEGORY_EMPTY
+
+public static final int MATCH_CATEGORY_HOST
+
+public static final int MATCH_CATEGORY_MASK
+
+public static final int MATCH_CATEGORY_PATH
+
+public static final int MATCH_CATEGORY_PORT
+
+public static final int MATCH_CATEGORY_SCHEME
+
+public static final int MATCH_CATEGORY_TYPE
+
+private static final java.lang.String NAME_STR
+
+public static final int NO_MATCH_ACTION
+
+public static final int NO_MATCH_CATEGORY
+
+public static final int NO_MATCH_DATA
+
+public static final int NO_MATCH_TYPE
+
+private static final java.lang.String PATH_STR
+
+private static final java.lang.String PORT_STR
+
+private static final java.lang.String PREFIX_STR
+
+private static final java.lang.String SCHEME_STR
+
+private static final java.lang.String SGLOB_STR
+
+public static final int SYSTEM_HIGH_PRIORITY
+
+public static final int SYSTEM_LOW_PRIORITY
+
+private static final java.lang.String TYPE_STR
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+private final java.util.ArrayList mActions
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+private java.util.ArrayList mCategories
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/content/IntentFilter$AuthorityEntry;>; )
+private java.util.ArrayList mDataAuthorities
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/os/PatternMatcher;>; )
+private java.util.ArrayList mDataPaths
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+private java.util.ArrayList mDataSchemes
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+private java.util.ArrayList mDataTypes
+
+private boolean mHasPartialTypes
+
+private int mPriority
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+android.content.IntentFilter)
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.content.IntentFilter$1)
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/content/IntentFilter$MalformedMimeTypeException; )
+public void <init>(
+java.lang.String
+java.lang.String)
+
+private static java.lang.String[] addStringToSet(
+java.lang.String[]
+java.lang.String
+int[]
+int)
+
+public static android.content.IntentFilter create(
+java.lang.String
+java.lang.String)
+
+private final boolean findMimeType(
+java.lang.String)
+
+private static int findStringInSet(
+java.lang.String[]
+java.lang.String
+int[]
+int)
+
+private static java.lang.String[] removeStringFromSet(
+java.lang.String[]
+java.lang.String
+int[]
+int)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/lang/String;>; )
+public final java.util.Iterator actionsIterator()
+
+public final void addAction(
+java.lang.String)
+
+public final void addCategory(
+java.lang.String)
+
+public final void addDataAuthority(
+java.lang.String
+java.lang.String)
+
+public final void addDataPath(
+java.lang.String
+int)
+
+public final void addDataScheme(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/content/IntentFilter$MalformedMimeTypeException; )
+public final void addDataType(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Landroid/content/IntentFilter$AuthorityEntry;>; )
+public final java.util.Iterator authoritiesIterator()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/lang/String;>; )
+public final java.util.Iterator categoriesIterator()
+
+public final int countActions()
+
+public final int countCategories()
+
+public final int countDataAuthorities()
+
+public final int countDataPaths()
+
+public final int countDataSchemes()
+
+public final int countDataTypes()
+
+public boolean debugCheck()
+
+public final int describeContents()
+
+public void dump(
+android.util.Printer
+java.lang.String)
+
+public final java.lang.String getAction(
+int)
+
+public final java.lang.String getCategory(
+int)
+
+public final android.content.IntentFilter$AuthorityEntry getDataAuthority(
+int)
+
+public final android.os.PatternMatcher getDataPath(
+int)
+
+public final java.lang.String getDataScheme(
+int)
+
+public final java.lang.String getDataType(
+int)
+
+public final int getPriority()
+
+public final boolean hasAction(
+java.lang.String)
+
+public final boolean hasCategory(
+java.lang.String)
+
+public final boolean hasDataAuthority(
+android.net.Uri)
+
+public final boolean hasDataPath(
+java.lang.String)
+
+public final boolean hasDataScheme(
+java.lang.String)
+
+public final boolean hasDataType(
+java.lang.String)
+
+public final int match(
+android.content.ContentResolver
+android.content.Intent
+boolean
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Ljava/util/Set<Ljava/lang/String;>;Ljava/lang/String;)I )
+public final int match(
+java.lang.String
+java.lang.String
+java.lang.String
+android.net.Uri
+java.util.Set
+java.lang.String)
+
+public final boolean matchAction(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/Set<Ljava/lang/String;>;)Ljava/lang/String; )
+public final java.lang.String matchCategories(
+java.util.Set)
+
+public final int matchData(
+java.lang.String
+java.lang.String
+android.net.Uri)
+
+public final int matchDataAuthority(
+android.net.Uri)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Landroid/os/PatternMatcher;>; )
+public final java.util.Iterator pathsIterator()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void readFromXml(
+org.xmlpull.v1.XmlPullParser)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/lang/String;>; )
+public final java.util.Iterator schemesIterator()
+
+public final void setPriority(
+int)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/lang/String;>; )
+public final java.util.Iterator typesIterator()
+
+public final void writeToParcel(
+android.os.Parcel
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeToXml(
+org.xmlpull.v1.XmlSerializer)
+
+________________CLASS________________
+
+
+public class android.content.MutableContextWrapper extends android.content.ContextWrapper
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void setBaseContext(
+android.content.Context)
+
+________________CLASS________________
+
+
+public class android.content.ReceiverCallNotAllowedException extends android.util.AndroidRuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class android.database.sqlite.SQLiteOpenHelper extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private final android.content.Context mContext
+
+private android.database.sqlite.SQLiteDatabase mDatabase
+
+private final android.database.sqlite.SQLiteDatabase$CursorFactory mFactory
+
+private boolean mIsInitializing
+
+private final java.lang.String mName
+
+private final int mNewVersion
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context
+java.lang.String
+android.database.sqlite.SQLiteDatabase$CursorFactory
+int)
+
+public void close()
+
+public android.database.sqlite.SQLiteDatabase getReadableDatabase()
+
+public android.database.sqlite.SQLiteDatabase getWritableDatabase()
+
+public abstract void onCreate(
+android.database.sqlite.SQLiteDatabase)
+
+public void onOpen(
+android.database.sqlite.SQLiteDatabase)
+
+public abstract void onUpgrade(
+android.database.sqlite.SQLiteDatabase
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SearchRecentSuggestionsProvider; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =DatabaseHelper )
+ class android.content.SearchRecentSuggestionsProvider$DatabaseHelper extends android.database.sqlite.SQLiteOpenHelper
+
+----------------FIELDS----------------
+
+private int mNewVersion
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+int)
+
+public void onCreate(
+android.database.sqlite.SQLiteDatabase)
+
+public void onUpgrade(
+android.database.sqlite.SQLiteDatabase
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/SearchRecentSuggestionsProvider$DatabaseHelper; )
+public class android.content.SearchRecentSuggestionsProvider extends android.content.ContentProvider
+
+----------------FIELDS----------------
+
+public static final int DATABASE_MODE_2LINES
+
+public static final int DATABASE_MODE_QUERIES
+
+private static final int DATABASE_VERSION
+
+private static final java.lang.String NULL_COLUMN
+
+private static final java.lang.String ORDER_BY
+
+private static final java.lang.String TAG
+
+private static final int URI_MATCH_SUGGEST
+
+private static final java.lang.String sDatabaseName
+
+private static final java.lang.String sSuggestions
+
+private java.lang.String mAuthority
+
+private int mMode
+
+private android.database.sqlite.SQLiteOpenHelper mOpenHelper
+
+private java.lang.String mSuggestSuggestionClause
+
+private java.lang.String[] mSuggestionProjection
+
+private android.net.Uri mSuggestionsUri
+
+private boolean mTwoLineDisplay
+
+private android.content.UriMatcher mUriMatcher
+----------------METHODS----------------
+
+public void <init>()
+
+public int delete(
+android.net.Uri
+java.lang.String
+java.lang.String[])
+
+public java.lang.String getType(
+android.net.Uri)
+
+public android.net.Uri insert(
+android.net.Uri
+android.content.ContentValues)
+
+public boolean onCreate()
+
+public android.database.Cursor query(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+protected void setupSuggestions(
+java.lang.String
+int)
+
+public int update(
+android.net.Uri
+android.content.ContentValues
+java.lang.String
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnSharedPreferenceChangeListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SharedPreferences; )
+public abstract interface class android.content.SharedPreferences$OnSharedPreferenceChangeListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onSharedPreferenceChanged(
+android.content.SharedPreferences
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =Transport )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncAdapter; )
+ class android.content.SyncAdapter$Transport extends android.content.ISyncAdapter$Stub
+
+----------------FIELDS----------------
+
+final android.content.SyncAdapter this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.SyncAdapter)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void cancelSync()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void startSync(
+android.content.ISyncContext
+java.lang.String
+android.os.Bundle)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/SyncAdapter$Transport; )
+public abstract class android.content.SyncAdapter extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int LOG_SYNC_DETAILS
+
+private static final java.lang.String TAG
+
+ android.content.SyncAdapter$Transport mTransport
+----------------METHODS----------------
+
+public void <init>()
+
+public abstract void cancelSync()
+
+final android.content.ISyncAdapter getISyncAdapter()
+
+public abstract void startSync(
+android.content.SyncContext
+java.lang.String
+android.os.Bundle)
+
+________________CLASS________________
+
+
+public class android.content.SyncContext extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final long HEARTBEAT_SEND_INTERVAL_IN_MS
+
+private long mLastHeartbeatSendTime
+
+private android.content.ISyncContext mSyncContext
+----------------METHODS----------------
+
+public void <init>(
+android.content.ISyncContext)
+
+public android.content.ISyncContext getISyncContext()
+
+public void onFinished(
+android.content.SyncResult)
+
+public void setStatusText(
+java.lang.String)
+
+public void updateHeartbeat()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncManager; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.content.SyncManager$1 extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final android.content.SyncManager this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.SyncManager)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncManager; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.content.SyncManager$2 extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final android.content.SyncManager this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.SyncManager)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.content.SyncManager$3 extends java.lang.Object implements android.accounts.AccountMonitorListener
+
+----------------FIELDS----------------
+
+final android.content.SyncManager this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.SyncManager)
+
+public void onAccountsUpdated(
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.content.SyncManager$4 extends java.lang.Object implements java.util.Observer
+
+----------------FIELDS----------------
+
+final android.content.SyncManager this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.SyncManager)
+
+public void update(
+java.util.Observable
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncManager; )
+ class android.content.SyncManager$5 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$android$net$NetworkInfo$State
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =ActiveSyncContext )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncManager; )
+ class android.content.SyncManager$ActiveSyncContext extends android.content.ISyncContext$Stub
+
+----------------FIELDS----------------
+
+final android.content.IContentProvider mContentProvider
+
+final long mHistoryRowId
+
+final long mStartTime
+
+final android.content.ISyncAdapter mSyncAdapter
+
+final android.content.SyncManager$SyncOperation mSyncOperation
+
+ long mTimeoutStartTime
+
+final android.content.SyncManager this$0
+----------------METHODS----------------
+
+public void <init>(
+android.content.SyncManager
+android.content.SyncManager$SyncOperation
+android.content.IContentProvider
+android.content.ISyncAdapter
+long)
+
+public void onFinished(
+android.content.SyncResult)
+
+public void sendHeartbeat()
+
+public java.lang.String toString()
+
+public void toString(
+java.lang.StringBuilder)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncManager; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =SyncAlarmIntentReceiver )
+ class android.content.SyncManager$SyncAlarmIntentReceiver extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final android.content.SyncManager this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.SyncManager)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =SyncNotificationInfo )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncManager$SyncHandler; )
+ class android.content.SyncManager$SyncHandler$SyncNotificationInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String account
+
+public java.lang.String authority
+
+public boolean isActive
+
+public java.lang.Long startTime
+
+final android.content.SyncManager$SyncHandler this$1
+----------------METHODS----------------
+
+ void <init>(
+android.content.SyncManager$SyncHandler)
+
+public java.lang.String toString()
+
+public void toString(
+java.lang.StringBuilder)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncManager; )
+@dalvik.annotation.MemberClasses (value =Landroid/content/SyncManager$SyncHandler$SyncNotificationInfo; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =SyncHandler )
+ class android.content.SyncManager$SyncHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+private static final int MESSAGE_CHECK_ALARMS
+
+private static final int MESSAGE_SYNC_ALARM
+
+private static final int MESSAGE_SYNC_FINISHED
+
+private java.lang.Long mAlarmScheduleTime
+
+private boolean mErrorNotificationInstalled
+
+public final android.content.SyncManager$SyncHandler$SyncNotificationInfo mSyncNotificationInfo
+
+public final android.content.SyncManager$SyncTimeTracker mSyncTimeTracker
+
+final android.content.SyncManager this$0
+----------------METHODS----------------
+
+public void <init>(
+android.content.SyncManager
+android.os.Looper)
+
+static java.lang.Long access$1200(
+android.content.SyncManager$SyncHandler)
+
+private void handleSyncHandlerMessage(
+android.os.Message)
+
+private void installHandleTooManyDeletesNotification(
+java.lang.String
+java.lang.String
+long)
+
+private void manageErrorNotification()
+
+private void manageSyncAlarm()
+
+private void manageSyncNotification()
+
+private void runStateIdle()
+
+private void runStateSyncing()
+
+private void runSyncFinishedOrCanceled(
+android.content.SyncResult)
+
+private void sendSyncStateIntent()
+
+private int syncResultToErrorNumber(
+android.content.SyncResult)
+
+public void handleMessage(
+android.os.Message)
+
+public long insertStartSyncEvent(
+android.content.SyncManager$SyncOperation)
+
+public void stopSyncEvent(
+long
+android.content.SyncManager$SyncOperation
+java.lang.String
+int
+int
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncManager; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =SyncHandlerMessagePayload )
+ class android.content.SyncManager$SyncHandlerMessagePayload extends java.lang.Object
+
+----------------FIELDS----------------
+
+public final android.content.SyncManager$ActiveSyncContext activeSyncContext
+
+public final android.content.SyncResult syncResult
+
+final android.content.SyncManager this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.SyncManager
+android.content.SyncManager$ActiveSyncContext
+android.content.SyncResult)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =SyncOperation )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncManager; )
+ class android.content.SyncManager$SyncOperation extends java.lang.Object implements java.lang.Comparable
+
+----------------FIELDS----------------
+
+final java.lang.String account
+
+ java.lang.String authority
+
+ long delay
+
+ long earliestRunTime
+
+ android.os.Bundle extras
+
+final java.lang.String key
+
+ java.lang.Long rowId
+
+ int syncSource
+----------------METHODS----------------
+
+ void <init>(
+android.content.SyncManager$SyncOperation)
+
+ void <init>(
+java.lang.String
+int
+java.lang.String
+android.os.Bundle
+long)
+
+private static void extrasToStringBuilder(
+android.os.Bundle
+java.lang.StringBuilder)
+
+private java.lang.String toKey()
+
+public int compareTo(
+java.lang.Object)
+
+public void setDelay(
+long)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =SyncPollAlarmReceiver )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncManager; )
+ class android.content.SyncManager$SyncPollAlarmReceiver extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final android.content.SyncManager this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.SyncManager)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncManager; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =SyncQueue )
+ class android.content.SyncManager$SyncQueue extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int COLUMN_ACCOUNT
+
+private static final int COLUMN_AUTHORITY
+
+private static final int COLUMN_EXTRAS
+
+private static final int COLUMN_ID
+
+private static final int COLUMN_SOURCE
+
+private static final boolean DEBUG_CHECK_DATA_CONSISTENCY
+
+private final java.lang.String[] COLUMNS
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Landroid/content/SyncManager$SyncOperation;>; )
+private final java.util.HashMap mOpsByKey
+@dalvik.annotation.Signature (value =Ljava/util/PriorityQueue<Landroid/content/SyncManager$SyncOperation;>; )
+private final java.util.PriorityQueue mOpsByWhen
+
+private android.content.SyncStorageEngine mSyncStorageEngine
+----------------METHODS----------------
+
+public void <init>(
+android.content.SyncStorageEngine)
+
+private boolean add(
+android.content.SyncManager$SyncOperation
+boolean)
+
+private android.content.SyncManager$SyncOperation cursorToOperation(
+android.database.Cursor)
+
+private void debugCheckDataStructures(
+boolean)
+
+public boolean add(
+android.content.SyncManager$SyncOperation)
+
+public void clear(
+java.lang.String
+java.lang.String)
+
+public void dump(
+java.lang.StringBuilder)
+
+public android.content.SyncManager$SyncOperation head()
+
+public void popHead()
+
+public void removeByKey(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncManager; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =SyncTimeTracker )
+ class android.content.SyncManager$SyncTimeTracker extends java.lang.Object
+
+----------------FIELDS----------------
+
+ boolean mLastWasSyncing
+
+private long mTimeSpentSyncing
+
+ long mWhenSyncStarted
+
+final android.content.SyncManager this$0
+----------------METHODS----------------
+
+private void <init>(
+android.content.SyncManager)
+
+ void <init>(
+android.content.SyncManager
+android.content.SyncManager$1)
+
+public long timeSpentSyncing()
+
+public void update()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/SyncManager$5;Landroid/content/SyncManager$SyncQueue;Landroid/content/SyncManager$SyncHandler;Landroid/content/SyncManager$SyncTimeTracker;Landroid/content/SyncManager$ActiveSyncContext;Landroid/content/SyncManager$SyncOperation;Landroid/content/SyncManager$SyncPollAlarmReceiver;Landroid/content/SyncManager$SyncAlarmIntentReceiver;Landroid/content/SyncManager$SyncHandlerMessagePayload; )
+ class android.content.SyncManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String ACTION_SYNC_ALARM
+
+private static final long DEFAULT_MAX_SYNC_RETRY_TIME_IN_SECONDS
+
+private static final long ERROR_NOTIFICATION_DELAY_MS
+
+private static final java.lang.String HANDLE_SYNC_ALARM_WAKE_LOCK
+
+private static final long INITIAL_SYNC_RETRY_TIME_IN_MS
+
+private static final long LOCAL_SYNC_DELAY
+
+private static final int MAX_SYNC_POLL_DELAY_SECONDS
+
+private static final long MAX_TIME_PER_SYNC
+
+private static final long MILLIS_IN_4WEEKS
+
+private static final long MILLIS_IN_DAY
+
+private static final long MILLIS_IN_HOUR
+
+private static final long MILLIS_IN_WEEK
+
+private static final int MIN_SYNC_POLL_DELAY_SECONDS
+
+private static java.lang.String[] STATUS_PROJECTION
+
+private static final java.lang.String SYNCMANAGER_PREFS_FILENAME
+
+private static final java.lang.String[] SYNC_ACTIVE_PROJECTION
+
+private static final long SYNC_NOTIFICATION_DELAY
+
+private static final java.lang.String[] SYNC_PENDING_PROJECTION
+
+private static final java.lang.String SYNC_POLL_ALARM
+
+private static final java.lang.String SYNC_WAKE_LOCK
+
+private static final java.lang.String TAG
+
+private android.accounts.AccountMonitor mAccountMonitor
+
+private volatile java.lang.String[] mAccounts
+
+private android.content.SyncManager$ActiveSyncContext mActiveSyncContext
+
+private android.app.AlarmManager mAlarmService
+
+private android.content.BroadcastReceiver mConnectivityIntentReceiver
+
+private android.content.ContentResolver mContentResolver
+
+private android.content.Context mContext
+
+private volatile boolean mDataConnectionIsConnected
+
+private volatile android.os.PowerManager$WakeLock mHandleAlarmWakeLock
+
+private long mHeartbeatTime
+
+private boolean mNeedSyncActiveNotification
+
+private boolean mNeedSyncErrorNotification
+
+private final android.app.NotificationManager mNotificationMgr
+
+private volatile android.content.pm.IPackageManager mPackageManager
+
+private java.lang.String mStatusText
+
+private android.content.BroadcastReceiver mStorageIntentReceiver
+
+private volatile boolean mStorageIsLow
+
+private final android.app.PendingIntent mSyncAlarmIntent
+
+private final android.content.SyncManager$SyncHandler mSyncHandler
+
+private final android.app.PendingIntent mSyncPollAlarmIntent
+
+private volatile boolean mSyncPollInitialized
+
+private final android.content.SyncManager$SyncQueue mSyncQueue
+
+private android.provider.Sync$Settings$QueryMap mSyncSettings
+
+private final android.content.SyncStorageEngine mSyncStorageEngine
+
+private android.os.HandlerThread mSyncThread
+
+private volatile android.os.PowerManager$WakeLock mSyncWakeLock
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context
+boolean)
+
+static void access$000(
+android.content.SyncManager)
+
+static boolean access$100(
+android.content.SyncManager)
+
+static void access$1000(
+android.content.SyncManager)
+
+static boolean access$102(
+android.content.SyncManager
+boolean)
+
+static void access$1100(
+android.content.SyncManager)
+
+static android.os.PowerManager$WakeLock access$1400(
+android.content.SyncManager)
+
+static android.content.SyncManager$SyncQueue access$1500(
+android.content.SyncManager)
+
+static void access$1600(
+android.content.SyncManager
+android.content.SyncManager$SyncOperation)
+
+static void access$1700(
+android.content.SyncManager
+java.lang.String)
+
+static android.provider.Sync$Settings$QueryMap access$1800(
+android.content.SyncManager)
+
+static boolean access$1900(
+android.content.SyncManager)
+
+static void access$200(
+android.content.SyncManager)
+
+static android.content.ContentResolver access$2000(
+android.content.SyncManager)
+
+static long access$2100(
+android.content.SyncManager
+android.content.SyncManager$SyncOperation)
+
+static android.app.NotificationManager access$2200(
+android.content.SyncManager)
+
+static boolean access$2300(
+android.content.SyncManager)
+
+static boolean access$2302(
+android.content.SyncManager
+boolean)
+
+static boolean access$2400(
+android.content.SyncManager)
+
+static boolean access$2402(
+android.content.SyncManager
+boolean)
+
+static android.content.SyncManager$SyncHandler access$2500(
+android.content.SyncManager)
+
+static void access$2600(
+android.content.SyncManager)
+
+static android.app.PendingIntent access$2700(
+android.content.SyncManager)
+
+static android.app.AlarmManager access$2800(
+android.content.SyncManager)
+
+static android.content.Context access$2900(
+android.content.SyncManager)
+
+static boolean access$300(
+android.content.SyncManager)
+
+static boolean access$302(
+android.content.SyncManager
+boolean)
+
+static void access$400(
+android.content.SyncManager)
+
+static java.lang.String[] access$500(
+android.content.SyncManager)
+
+static java.lang.String[] access$502(
+android.content.SyncManager
+java.lang.String[])
+
+static android.content.SyncManager$ActiveSyncContext access$600(
+android.content.SyncManager)
+
+static android.content.SyncManager$ActiveSyncContext access$602(
+android.content.SyncManager
+android.content.SyncManager$ActiveSyncContext)
+
+static void access$700(
+android.content.SyncManager
+android.content.SyncManager$ActiveSyncContext
+android.content.SyncResult)
+
+static android.content.SyncStorageEngine access$800(
+android.content.SyncManager)
+
+static android.os.PowerManager$WakeLock access$900(
+android.content.SyncManager)
+
+private void dumpSyncHistoryFooter(
+java.lang.StringBuilder)
+
+private void dumpSyncHistoryHeader(
+java.lang.StringBuilder
+java.lang.String)
+
+private void dumpSyncHistoryRow(
+java.lang.StringBuilder
+android.database.Cursor)
+
+private void dumpSyncInterval(
+java.lang.StringBuilder
+java.lang.String
+long
+long
+long)
+
+private void dumpSyncIntervalFooter(
+java.lang.StringBuilder)
+
+private void dumpSyncIntervalHeader(
+java.lang.StringBuilder)
+
+private void dumpSyncPendingFooter(
+java.lang.StringBuilder)
+
+private void dumpSyncPendingHeader(
+java.lang.StringBuilder)
+
+private void dumpSyncPendingRow(
+java.lang.StringBuilder
+android.database.Cursor)
+
+private void ensureAlarmService()
+
+private void ensureContentResolver()
+
+private android.content.pm.IPackageManager getPackageManager()
+
+private android.provider.Sync$Settings$QueryMap getSyncSettings()
+
+private void handleSyncPollAlarm()
+
+private void initializeSyncPoll()
+
+private boolean isSyncEnabled()
+
+private long jitterize(
+long
+long)
+@dalvik.annotation.Signature (value =(Landroid/net/Uri;Ljava/util/List<Ljava/lang/String;>;Ljava/util/List<Landroid/content/pm/ProviderInfo;>;)V )
+private void populateProvidersList(
+android.net.Uri
+java.util.List
+java.util.List)
+
+private long readSyncPollTime()
+
+private void rescheduleImmediately(
+android.content.SyncManager$SyncOperation)
+
+private long rescheduleWithDelay(
+android.content.SyncManager$SyncOperation)
+
+private void scheduleSyncPollAlarm(
+long)
+
+private void sendCheckAlarmsMessage()
+
+private void sendSyncAlarmMessage()
+
+private void sendSyncFinishedOrCanceledMessage(
+android.content.SyncManager$ActiveSyncContext
+android.content.SyncResult)
+
+private void setStatusText(
+java.lang.String)
+
+private void writeSyncPollTime(
+long)
+
+public void cancelActiveSync(
+android.net.Uri)
+
+public void clearScheduledSyncOperations(
+android.net.Uri)
+
+protected void dump(
+java.io.FileDescriptor
+java.io.PrintWriter)
+
+protected void dumpSyncHistory(
+java.lang.StringBuilder)
+
+protected void dumpSyncState(
+java.lang.StringBuilder)
+
+public android.content.SyncManager$ActiveSyncContext getActiveSyncContext()
+
+public java.lang.String getSyncingAccount()
+
+ void maybeRescheduleSync(
+android.content.SyncResult
+android.content.SyncManager$SyncOperation)
+
+public void scheduleLocalSync(
+android.net.Uri)
+
+public void scheduleSync(
+android.net.Uri
+android.os.Bundle
+long)
+
+public void scheduleSyncOperation(
+android.content.SyncManager$SyncOperation)
+
+public void startSync(
+android.net.Uri
+android.os.Bundle)
+
+public void updateHeartbeatTime()
+
+________________CLASS________________
+
+
+public class android.content.SyncProvider extends android.content.ContentProvider
+
+----------------FIELDS----------------
+
+private android.content.SyncStorageEngine mSyncStorageEngine
+----------------METHODS----------------
+
+public void <init>()
+
+public int delete(
+android.net.Uri
+java.lang.String
+java.lang.String[])
+
+public java.lang.String getType(
+android.net.Uri)
+
+public android.net.Uri insert(
+android.net.Uri
+android.content.ContentValues)
+
+public boolean onCreate()
+
+public android.database.Cursor query(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+public int update(
+android.net.Uri
+android.content.ContentValues
+java.lang.String
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncResult; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/SyncResult;>; )
+final class android.content.SyncResult$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.SyncResult createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.SyncResult[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public final class android.content.SyncResult extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+
+public static final android.content.SyncResult ALREADY_IN_PROGRESS
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/SyncResult;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public boolean databaseError
+
+public boolean fullSyncRequested
+
+public boolean moreRecordsToGet
+
+public boolean partialSyncUnavailable
+
+public final android.content.SyncStats stats
+
+public final boolean syncAlreadyInProgress
+
+public boolean tooManyDeletions
+
+public boolean tooManyRetries
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.content.SyncResult$1)
+
+private void <init>(
+boolean)
+
+public void clear()
+
+public int describeContents()
+
+public boolean hasError()
+
+public boolean hasHardError()
+
+public boolean hasSoftError()
+
+public boolean madeSomeProgress()
+
+public java.lang.String toDebugString()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =Provider )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncStateContentProviderHelper; )
+ class android.content.SyncStateContentProviderHelper$Provider extends android.content.ContentProvider
+
+----------------FIELDS----------------
+
+final android.content.SyncStateContentProviderHelper this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.SyncStateContentProviderHelper)
+
+public int delete(
+android.net.Uri
+java.lang.String
+java.lang.String[])
+
+public java.lang.String getType(
+android.net.Uri)
+
+public android.net.Uri insert(
+android.net.Uri
+android.content.ContentValues)
+
+public boolean onCreate()
+
+public android.database.Cursor query(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+public int update(
+android.net.Uri
+android.content.ContentValues
+java.lang.String
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/SyncStateContentProviderHelper$Provider; )
+public class android.content.SyncStateContentProviderHelper extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String[] ACCOUNT_PROJECTION
+
+private static final java.lang.String ACCOUNT_WHERE
+
+private static final android.net.Uri CONTENT_URI
+
+private static long DB_VERSION
+
+private static final int STATE
+
+private static final java.lang.String SYNC_STATE_AUTHORITY
+
+private static final java.lang.String SYNC_STATE_TABLE
+
+private static final android.content.UriMatcher sURIMatcher
+
+private final android.content.SyncStateContentProviderHelper$Provider mInternalProviderInterface
+
+final android.database.sqlite.SQLiteOpenHelper mOpenHelper
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.database.sqlite.SQLiteOpenHelper)
+
+static android.content.UriMatcher access$000()
+
+static android.net.Uri access$100()
+
+public android.content.ContentProvider asContentProvider()
+
+public void copySyncState(
+android.database.sqlite.SQLiteDatabase
+android.database.sqlite.SQLiteDatabase
+java.lang.String)
+
+public void createDatabase(
+android.database.sqlite.SQLiteDatabase)
+
+public void discardSyncData(
+android.database.sqlite.SQLiteDatabase
+java.lang.String)
+
+public boolean matches(
+android.net.Uri)
+
+public void onAccountsChanged(
+java.lang.String[])
+
+protected void onDatabaseOpened(
+android.database.sqlite.SQLiteDatabase)
+
+public byte[] readSyncDataBytes(
+android.database.sqlite.SQLiteDatabase
+java.lang.String)
+
+public void writeSyncDataBytes(
+android.database.sqlite.SQLiteDatabase
+java.lang.String
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncStats; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/SyncStats;>; )
+final class android.content.SyncStats$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.SyncStats createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.SyncStats[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.content.SyncStats extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/SyncStats;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public long numAuthExceptions
+
+public long numConflictDetectedExceptions
+
+public long numDeletes
+
+public long numEntries
+
+public long numInserts
+
+public long numIoExceptions
+
+public long numParseExceptions
+
+public long numSkippedEntries
+
+public long numUpdates
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+android.os.Parcel)
+
+public void clear()
+
+public int describeContents()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncStorageEngine; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =DatabaseHelper )
+ class android.content.SyncStorageEngine$DatabaseHelper extends android.database.sqlite.SQLiteOpenHelper
+
+----------------FIELDS----------------
+
+final android.content.SyncStorageEngine this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.SyncStorageEngine
+android.content.Context)
+
+public void onCreate(
+android.database.sqlite.SQLiteDatabase)
+
+public void onOpen(
+android.database.sqlite.SQLiteDatabase)
+
+public void onUpgrade(
+android.database.sqlite.SQLiteDatabase
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/SyncStorageEngine$DatabaseHelper; )
+public class android.content.SyncStorageEngine extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int ACTIVE
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>; )
+private static final java.util.HashMap ACTIVE_PROJECTION_MAP
+
+private static final java.lang.String DATABASE_NAME
+
+private static final int DATABASE_VERSION
+
+private static final int HISTORY
+
+private static final int HISTORY_ID
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>; )
+private static final java.util.HashMap HISTORY_PROJECTION_MAP
+
+private static final int MAX_HISTORY_EVENTS_TO_KEEP
+
+static final long MILLIS_IN_4WEEKS
+
+private static final int PENDING
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>; )
+private static final java.util.HashMap PENDING_PROJECTION_MAP
+
+private static final java.lang.String SELECT_INITIAL_FAILURE_TIME_QUERY_STRING
+
+private static final int SETTINGS
+
+private static final int STATS
+
+private static final java.lang.String[] STATS_ACCOUNT_PROJECTION
+
+private static final int STATS_ID
+
+private static final int STATUS
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>; )
+private static final java.util.HashMap STATUS_PROJECTION_MAP
+
+private static final java.lang.String TAG
+
+private static android.content.SyncStorageEngine sSyncStorageEngine
+
+private static final android.content.UriMatcher sURLMatcher
+
+private final android.content.Context mContext
+
+private final android.database.sqlite.SQLiteOpenHelper mOpenHelper
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+android.content.Context)
+
+private static void checkCaller(
+boolean
+int)
+
+private long createStatsRowIfNecessary(
+java.lang.String
+java.lang.String)
+
+private void createStatusRowIfNecessary(
+long)
+
+public static android.content.SyncStorageEngine getSingleton()
+
+public static void init(
+android.content.Context)
+
+public static android.content.SyncStorageEngine newTestInstance(
+android.content.Context)
+
+private boolean purgeOldHistoryEvents(
+long)
+
+private int updateActiveSync(
+java.lang.String
+java.lang.String
+java.lang.Long)
+
+ int clearPending()
+
+public int delete(
+boolean
+android.net.Uri
+java.lang.String
+java.lang.String[])
+
+ int deleteFromPending(
+long)
+
+protected void doDatabaseCleanup(
+java.lang.String[])
+
+public long getInitialSyncFailureTime()
+
+public android.database.Cursor getPendingSyncsCursor(
+java.lang.String[])
+
+public java.lang.String getType(
+android.net.Uri)
+
+public android.net.Uri insert(
+boolean
+android.net.Uri
+android.content.ContentValues)
+
+protected android.net.Uri insertIntoPending(
+android.content.ContentValues)
+
+public long insertStartSyncEvent(
+java.lang.String
+java.lang.String
+long
+int)
+
+public android.database.Cursor query(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+protected void setActiveSync(
+android.content.SyncManager$ActiveSyncContext)
+
+public void stopSyncEvent(
+long
+long
+java.lang.String
+long
+long)
+
+public int update(
+boolean
+android.net.Uri
+android.content.ContentValues
+java.lang.String
+java.lang.String[])
+
+________________CLASS________________
+
+@java.lang.Deprecated
+public abstract interface class android.content.SyncUIContext extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.content.Context context()
+
+public abstract void setStatusText(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.content.SyncableContentProvider$1 extends java.lang.Object implements android.accounts.AccountMonitorListener
+
+----------------FIELDS----------------
+
+final android.content.SyncableContentProvider this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.SyncableContentProvider)
+
+public void onAccountsUpdated(
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/SyncableContentProvider; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =DatabaseHelper )
+ class android.content.SyncableContentProvider$DatabaseHelper extends android.database.sqlite.SQLiteOpenHelper
+
+----------------FIELDS----------------
+
+final android.content.SyncableContentProvider this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.SyncableContentProvider
+android.content.Context
+java.lang.String)
+
+public void onCreate(
+android.database.sqlite.SQLiteDatabase)
+
+public void onOpen(
+android.database.sqlite.SQLiteDatabase)
+
+public void onUpgrade(
+android.database.sqlite.SQLiteDatabase
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/SyncableContentProvider$DatabaseHelper; )
+public abstract class android.content.SyncableContentProvider extends android.content.ContentProvider
+
+----------------FIELDS----------------
+
+private static final java.lang.String SYNC_ACCOUNT_WHERE_CLAUSE
+
+private static final java.lang.String TAG
+
+private static final java.lang.String[] sAccountProjection
+
+private android.accounts.AccountMonitor mAccountMonitor
+
+private boolean mContainsDiffs
+
+private final android.net.Uri mContentUri
+
+private android.content.AbstractTableMerger mCurrentMerger
+
+private final java.lang.String mDatabaseName
+
+private final int mDatabaseVersion
+
+protected android.database.sqlite.SQLiteDatabase mDb
+
+private boolean mIsMergeCancelled
+
+private boolean mIsTemporary
+
+protected android.database.sqlite.SQLiteOpenHelper mOpenHelper
+
+private android.content.SyncStateContentProviderHelper mSyncState
+
+private java.lang.String mSyncingAccount
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+int
+android.net.Uri)
+
+static int access$000(
+android.content.SyncableContentProvider)
+
+static android.content.SyncStateContentProviderHelper access$100(
+android.content.SyncableContentProvider)
+
+static android.net.Uri access$200(
+android.content.SyncableContentProvider)
+
+protected void bootstrapDatabase(
+android.database.sqlite.SQLiteDatabase)
+
+public final int bulkInsert(
+android.net.Uri
+android.content.ContentValues[])
+
+public boolean changeRequiresLocalSync(
+android.net.Uri)
+
+public void close()
+
+public final int delete(
+android.net.Uri
+java.lang.String
+java.lang.String[])
+
+protected abstract int deleteInternal(
+android.net.Uri
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Ljava/lang/Boolean;>;Ljava/lang/String;Ljava/lang/String;)V )
+protected void deleteRowsForRemovedAccounts(
+java.util.Map
+java.lang.String
+java.lang.String)
+
+public boolean getContainsDiffs()
+
+public android.database.sqlite.SQLiteDatabase getDatabase()
+@dalvik.annotation.Signature (value =()Ljava/lang/Iterable<+Landroid/content/AbstractTableMerger;>; )
+protected java.lang.Iterable getMergers()
+
+public java.lang.String getSyncingAccount()
+
+public android.content.SyncableContentProvider getTemporaryInstance()
+
+public final android.net.Uri insert(
+android.net.Uri
+android.content.ContentValues)
+
+protected abstract android.net.Uri insertInternal(
+android.net.Uri
+android.content.ContentValues)
+
+public boolean isMergeCancelled()
+
+protected boolean isTemporary()
+
+public void merge(
+android.content.SyncContext
+android.content.SyncableContentProvider
+android.content.TempProviderSyncResult
+android.content.SyncResult)
+
+protected void onAccountsChanged(
+java.lang.String[])
+
+public boolean onCreate()
+
+protected void onDatabaseOpened(
+android.database.sqlite.SQLiteDatabase)
+
+public void onSyncCanceled()
+
+public void onSyncStart(
+android.content.SyncContext
+java.lang.String)
+
+public void onSyncStop(
+android.content.SyncContext
+boolean)
+
+public final android.database.Cursor query(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+protected abstract android.database.Cursor queryInternal(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+public byte[] readSyncDataBytes(
+java.lang.String)
+
+public void setContainsDiffs(
+boolean)
+
+public final int update(
+android.net.Uri
+android.content.ContentValues
+java.lang.String
+java.lang.String[])
+
+protected abstract int updateInternal(
+android.net.Uri
+android.content.ContentValues
+java.lang.String
+java.lang.String[])
+
+protected abstract boolean upgradeDatabase(
+android.database.sqlite.SQLiteDatabase
+int
+int)
+
+public void wipeAccount(
+java.lang.String)
+
+public void writeSyncDataBytes(
+java.lang.String
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =SyncData )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/TempProviderSyncAdapter; )
+public abstract class android.content.TempProviderSyncAdapter$SyncData extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =SyncThread )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/TempProviderSyncAdapter; )
+ class android.content.TempProviderSyncAdapter$SyncThread extends java.lang.Thread
+
+----------------FIELDS----------------
+
+private final java.lang.String mAccount
+
+private final android.os.Bundle mExtras
+
+private volatile boolean mIsCanceled
+
+private long[] mNetStats
+
+private final android.content.SyncResult mResult
+
+private final android.content.SyncContext mSyncContext
+
+final android.content.TempProviderSyncAdapter this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.TempProviderSyncAdapter
+android.content.SyncContext
+java.lang.String
+android.os.Bundle)
+
+private void runSyncLoop(
+android.content.SyncContext
+java.lang.String
+android.os.Bundle)
+
+private void sync(
+android.content.SyncContext
+java.lang.String
+android.os.Bundle)
+
+ void cancelSync()
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/TempProviderSyncAdapter$SyncThread;Landroid/content/TempProviderSyncAdapter$SyncData; )
+public abstract class android.content.TempProviderSyncAdapter extends android.content.SyncAdapter
+
+----------------FIELDS----------------
+
+private static final int MAX_GET_SERVER_DIFFS_LOOP_COUNT
+
+private static final int MAX_UPLOAD_CHANGES_LOOP_COUNT
+
+private static final int NUM_ALLOWED_SIMULTANEOUS_DELETIONS
+
+private static final long PERCENT_ALLOWED_SIMULTANEOUS_DELETIONS
+
+private static final java.lang.String TAG
+
+private volatile boolean mAdapterSyncStarted
+
+private android.content.Context mContext
+
+private volatile android.content.SyncableContentProvider mProvider
+
+private volatile boolean mProviderSyncStarted
+
+private volatile android.content.TempProviderSyncAdapter$SyncThread mSyncThread
+----------------METHODS----------------
+
+public void <init>(
+android.content.SyncableContentProvider)
+
+static boolean access$000(
+android.content.TempProviderSyncAdapter)
+
+static boolean access$002(
+android.content.TempProviderSyncAdapter
+boolean)
+
+static boolean access$100(
+android.content.TempProviderSyncAdapter)
+
+static boolean access$102(
+android.content.TempProviderSyncAdapter
+boolean)
+
+static android.content.SyncableContentProvider access$200(
+android.content.TempProviderSyncAdapter)
+
+static android.content.TempProviderSyncAdapter$SyncThread access$302(
+android.content.TempProviderSyncAdapter
+android.content.TempProviderSyncAdapter$SyncThread)
+
+public void cancelSync()
+
+protected java.lang.Object createSyncInfo()
+
+public final android.content.Context getContext()
+
+public abstract void getServerDiffs(
+android.content.SyncContext
+android.content.TempProviderSyncAdapter$SyncData
+android.content.SyncableContentProvider
+android.os.Bundle
+java.lang.Object
+android.content.SyncResult)
+
+protected boolean hasTooManyDeletions(
+android.content.SyncStats)
+
+protected void initTempProvider(
+android.content.SyncableContentProvider)
+
+public abstract boolean isReadOnly()
+
+protected void logSyncDetails(
+long
+long
+android.content.SyncResult)
+
+public android.content.TempProviderSyncAdapter$SyncData newSyncData()
+
+public abstract void onAccountsChanged(
+java.lang.String[])
+
+public abstract void onSyncCanceled()
+
+public abstract void onSyncEnding(
+android.content.SyncContext
+boolean)
+
+public abstract void onSyncStarting(
+android.content.SyncContext
+java.lang.String
+boolean
+android.content.SyncResult)
+
+public android.content.TempProviderSyncAdapter$SyncData readSyncData(
+android.content.SyncableContentProvider)
+
+public abstract void sendClientDiffs(
+android.content.SyncContext
+android.content.SyncableContentProvider
+android.content.SyncableContentProvider
+android.content.SyncResult
+boolean)
+
+public final void setContext(
+android.content.Context)
+
+public void startSync(
+android.content.SyncContext
+java.lang.String
+android.os.Bundle)
+
+public void writeSyncData(
+android.content.TempProviderSyncAdapter$SyncData
+android.content.SyncableContentProvider)
+
+________________CLASS________________
+
+
+public class android.content.TempProviderSyncResult extends java.lang.Object
+
+----------------FIELDS----------------
+
+public android.content.SyncableContentProvider tempContentProvider
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class android.content.UriMatcher extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int EXACT
+
+public static final int NO_MATCH
+
+private static final int NUMBER
+
+static final java.util.regex.Pattern PATH_SPLIT_PATTERN
+
+private static final int TEXT
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/content/UriMatcher;>; )
+private java.util.ArrayList mChildren
+
+private int mCode
+
+private java.lang.String mText
+
+private int mWhich
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public void <init>(
+int)
+
+public void addURI(
+java.lang.String
+java.lang.String
+int)
+
+public int match(
+android.net.Uri)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/ActivityInfo; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/pm/ActivityInfo;>; )
+final class android.content.pm.ActivityInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.pm.ActivityInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.pm.ActivityInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/pm/PackageItemInfo$DisplayNameComparator; )
+public class android.content.pm.PackageItemInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public int icon
+
+public int labelRes
+
+public android.os.Bundle metaData
+
+public java.lang.String name
+
+public java.lang.CharSequence nonLocalizedLabel
+
+public java.lang.String packageName
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+android.content.pm.PackageItemInfo)
+
+protected void <init>(
+android.os.Parcel)
+
+protected void dumpBack(
+android.util.Printer
+java.lang.String)
+
+protected void dumpFront(
+android.util.Printer
+java.lang.String)
+
+public android.graphics.drawable.Drawable loadIcon(
+android.content.pm.PackageManager)
+
+public java.lang.CharSequence loadLabel(
+android.content.pm.PackageManager)
+
+public android.content.res.XmlResourceParser loadXmlMetaData(
+android.content.pm.PackageManager
+java.lang.String)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class android.content.pm.ComponentInfo extends android.content.pm.PackageItemInfo
+
+----------------FIELDS----------------
+
+public android.content.pm.ApplicationInfo applicationInfo
+
+public boolean enabled
+
+public boolean exported
+
+public java.lang.String processName
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+android.content.pm.ComponentInfo)
+
+protected void <init>(
+android.os.Parcel)
+
+protected void dumpBack(
+android.util.Printer
+java.lang.String)
+
+protected void dumpFront(
+android.util.Printer
+java.lang.String)
+
+public final int getIconResource()
+
+public android.graphics.drawable.Drawable loadIcon(
+android.content.pm.PackageManager)
+
+public java.lang.CharSequence loadLabel(
+android.content.pm.PackageManager)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class android.content.pm.ActivityInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable
+
+----------------FIELDS----------------
+
+public static final int CONFIG_FONT_SCALE
+
+public static final int CONFIG_KEYBOARD
+
+public static final int CONFIG_KEYBOARD_HIDDEN
+
+public static final int CONFIG_LOCALE
+
+public static final int CONFIG_MCC
+
+public static final int CONFIG_MNC
+
+public static final int CONFIG_NAVIGATION
+
+public static final int CONFIG_ORIENTATION
+
+public static final int CONFIG_TOUCHSCREEN
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/pm/ActivityInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final int FLAG_ALLOW_TASK_REPARENTING
+
+public static final int FLAG_ALWAYS_RETAIN_TASK_STATE
+
+public static final int FLAG_CLEAR_TASK_ON_LAUNCH
+
+public static final int FLAG_EXCLUDE_FROM_RECENTS
+
+public static final int FLAG_FINISH_ON_TASK_LAUNCH
+
+public static final int FLAG_MULTIPROCESS
+
+public static final int FLAG_STATE_NOT_NEEDED
+
+public static final int LAUNCH_MULTIPLE
+
+public static final int LAUNCH_SINGLE_INSTANCE
+
+public static final int LAUNCH_SINGLE_TASK
+
+public static final int LAUNCH_SINGLE_TOP
+
+public static final int SCREEN_ORIENTATION_BEHIND
+
+public static final int SCREEN_ORIENTATION_LANDSCAPE
+
+public static final int SCREEN_ORIENTATION_NOSENSOR
+
+public static final int SCREEN_ORIENTATION_PORTRAIT
+
+public static final int SCREEN_ORIENTATION_SENSOR
+
+public static final int SCREEN_ORIENTATION_UNSPECIFIED
+
+public static final int SCREEN_ORIENTATION_USER
+
+public int configChanges
+
+public int flags
+
+public int launchMode
+
+public java.lang.String permission
+
+public int screenOrientation
+
+public java.lang.String targetActivity
+
+public java.lang.String taskAffinity
+
+public int theme
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+android.content.pm.ActivityInfo)
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.content.pm.ActivityInfo$1)
+
+public int describeContents()
+
+public void dump(
+android.util.Printer
+java.lang.String)
+
+public final int getThemeResource()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/ApplicationInfo; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/pm/ApplicationInfo;>; )
+final class android.content.pm.ApplicationInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.pm.ApplicationInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.pm.ApplicationInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DisplayNameComparator )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/ApplicationInfo; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Comparator<Landroid/content/pm/ApplicationInfo;>; )
+public class android.content.pm.ApplicationInfo$DisplayNameComparator extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+
+private android.content.pm.PackageManager mPM
+
+private final java.text.Collator sCollator
+----------------METHODS----------------
+
+public void <init>(
+android.content.pm.PackageManager)
+
+public final int compare(
+android.content.pm.ApplicationInfo
+android.content.pm.ApplicationInfo)
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/pm/ApplicationInfo$DisplayNameComparator; )
+public class android.content.pm.ApplicationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/pm/ApplicationInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final int FLAG_ALLOW_CLEAR_USER_DATA
+
+public static final int FLAG_ALLOW_TASK_REPARENTING
+
+public static final int FLAG_DEBUGGABLE
+
+public static final int FLAG_FACTORY_TEST
+
+public static final int FLAG_HAS_CODE
+
+public static final int FLAG_PERSISTENT
+
+public static final int FLAG_SYSTEM
+
+public java.lang.String className
+
+public java.lang.String dataDir
+
+public int descriptionRes
+
+public boolean enabled
+
+public int flags
+
+public java.lang.String manageSpaceActivityName
+
+public java.lang.String permission
+
+public java.lang.String processName
+
+public java.lang.String publicSourceDir
+
+public java.lang.String[] sharedLibraryFiles
+
+public java.lang.String sourceDir
+
+public java.lang.String taskAffinity
+
+public int theme
+
+public int uid
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+android.content.pm.ApplicationInfo)
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.content.pm.ApplicationInfo$1)
+
+public int describeContents()
+
+public void dump(
+android.util.Printer
+java.lang.String)
+
+public java.lang.CharSequence loadDescription(
+android.content.pm.PackageManager)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/pm/IPackageDataObserver$Stub; )
+public abstract interface class android.content.pm.IPackageDataObserver extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onRemoveCompleted(
+java.lang.String
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/IPackageDataObserver$Stub; )
+ class android.content.pm.IPackageDataObserver$Stub$Proxy extends java.lang.Object implements android.content.pm.IPackageDataObserver
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onRemoveCompleted(
+java.lang.String
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/IPackageDataObserver; )
+@dalvik.annotation.MemberClasses (value =Landroid/content/pm/IPackageDataObserver$Stub$Proxy; )
+public abstract class android.content.pm.IPackageDataObserver$Stub extends android.os.Binder implements android.content.pm.IPackageDataObserver
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_onRemoveCompleted
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.content.pm.IPackageDataObserver asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/pm/IPackageDeleteObserver$Stub; )
+public abstract interface class android.content.pm.IPackageDeleteObserver extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void packageDeleted(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/IPackageDeleteObserver$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class android.content.pm.IPackageDeleteObserver$Stub$Proxy extends java.lang.Object implements android.content.pm.IPackageDeleteObserver
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void packageDeleted(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/IPackageDeleteObserver; )
+@dalvik.annotation.MemberClasses (value =Landroid/content/pm/IPackageDeleteObserver$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class android.content.pm.IPackageDeleteObserver$Stub extends android.os.Binder implements android.content.pm.IPackageDeleteObserver
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_packageDeleted
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.content.pm.IPackageDeleteObserver asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/pm/IPackageInstallObserver$Stub; )
+public abstract interface class android.content.pm.IPackageInstallObserver extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void packageInstalled(
+java.lang.String
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/IPackageInstallObserver$Stub; )
+ class android.content.pm.IPackageInstallObserver$Stub$Proxy extends java.lang.Object implements android.content.pm.IPackageInstallObserver
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void packageInstalled(
+java.lang.String
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/IPackageInstallObserver; )
+@dalvik.annotation.MemberClasses (value =Landroid/content/pm/IPackageInstallObserver$Stub$Proxy; )
+public abstract class android.content.pm.IPackageInstallObserver$Stub extends android.os.Binder implements android.content.pm.IPackageInstallObserver
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_packageInstalled
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.content.pm.IPackageInstallObserver asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/pm/IPackageManager$Stub; )
+public abstract interface class android.content.pm.IPackageManager extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void addPackageToPreferred(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean addPermission(
+android.content.pm.PermissionInfo)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void addPreferredActivity(
+android.content.IntentFilter
+int
+android.content.ComponentName[]
+android.content.ComponentName)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int checkPermission(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int checkSignatures(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int checkUidPermission(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void clearApplicationUserData(
+java.lang.String
+android.content.pm.IPackageDataObserver)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void clearPackagePreferredActivities(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void deleteApplicationCacheFiles(
+java.lang.String
+android.content.pm.IPackageDataObserver)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void deletePackage(
+java.lang.String
+android.content.pm.IPackageDeleteObserver
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void enterSafeMode()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void freeApplicationCache(
+long
+android.content.pm.IPackageDataObserver)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.pm.ActivityInfo getActivityInfo(
+android.content.ComponentName
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/PermissionGroupInfo;>; )
+public abstract java.util.List getAllPermissionGroups(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getApplicationEnabledSetting(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.pm.ApplicationInfo getApplicationInfo(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getComponentEnabledSetting(
+android.content.ComponentName)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/ApplicationInfo;>; )
+public abstract java.util.List getInstalledApplications(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/PackageInfo;>; )
+public abstract java.util.List getInstalledPackages(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.pm.InstrumentationInfo getInstrumentationInfo(
+android.content.ComponentName
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getNameForUid(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int[] getPackageGids(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.pm.PackageInfo getPackageInfo(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void getPackageSizeInfo(
+java.lang.String
+android.content.pm.IPackageStatsObserver)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getPackageUid(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String[] getPackagesForUid(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.pm.PermissionGroupInfo getPermissionGroupInfo(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.pm.PermissionInfo getPermissionInfo(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/ApplicationInfo;>; )
+public abstract java.util.List getPersistentApplications(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/content/IntentFilter;>;Ljava/util/List<Landroid/content/ComponentName;>;Ljava/lang/String;)I )
+public abstract int getPreferredActivities(
+java.util.List
+java.util.List
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/PackageInfo;>; )
+public abstract java.util.List getPreferredPackages(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.pm.ActivityInfo getReceiverInfo(
+android.content.ComponentName
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.pm.ServiceInfo getServiceInfo(
+android.content.ComponentName
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean hasSystemUidErrors()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void installPackage(
+android.net.Uri
+android.content.pm.IPackageInstallObserver
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;II)Ljava/util/List<Landroid/content/pm/ProviderInfo;>; )
+public abstract java.util.List queryContentProviders(
+java.lang.String
+int
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;I)Ljava/util/List<Landroid/content/pm/InstrumentationInfo;>; )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.util.List queryInstrumentation(
+java.lang.String
+int)
+@dalvik.annotation.Signature (value =(Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.util.List queryIntentActivities(
+android.content.Intent
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Landroid/content/ComponentName;[Landroid/content/Intent;[Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+public abstract java.util.List queryIntentActivityOptions(
+android.content.ComponentName
+android.content.Intent[]
+java.lang.String[]
+android.content.Intent
+java.lang.String
+int)
+@dalvik.annotation.Signature (value =(Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.util.List queryIntentReceivers(
+android.content.Intent
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+public abstract java.util.List queryIntentServices(
+android.content.Intent
+java.lang.String
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;I)Ljava/util/List<Landroid/content/pm/PermissionInfo;>; )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.util.List queryPermissionsByGroup(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Ljava/util/List<Ljava/lang/String;>;Ljava/util/List<Landroid/content/pm/ProviderInfo;>;)V )
+public abstract void querySyncProviders(
+java.util.List
+java.util.List)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void removePackageFromPreferred(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void removePermission(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.pm.ProviderInfo resolveContentProvider(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.pm.ResolveInfo resolveIntent(
+android.content.Intent
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.pm.ResolveInfo resolveService(
+android.content.Intent
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setApplicationEnabledSetting(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setComponentEnabledSetting(
+android.content.ComponentName
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void systemReady()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/IPackageManager$Stub; )
+ class android.content.pm.IPackageManager$Stub$Proxy extends java.lang.Object implements android.content.pm.IPackageManager
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void addPackageToPreferred(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean addPermission(
+android.content.pm.PermissionInfo)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void addPreferredActivity(
+android.content.IntentFilter
+int
+android.content.ComponentName[]
+android.content.ComponentName)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int checkPermission(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int checkSignatures(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int checkUidPermission(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void clearApplicationUserData(
+java.lang.String
+android.content.pm.IPackageDataObserver)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void clearPackagePreferredActivities(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void deleteApplicationCacheFiles(
+java.lang.String
+android.content.pm.IPackageDataObserver)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void deletePackage(
+java.lang.String
+android.content.pm.IPackageDeleteObserver
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void enterSafeMode()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void freeApplicationCache(
+long
+android.content.pm.IPackageDataObserver)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.pm.ActivityInfo getActivityInfo(
+android.content.ComponentName
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/PermissionGroupInfo;>; )
+public java.util.List getAllPermissionGroups(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getApplicationEnabledSetting(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.pm.ApplicationInfo getApplicationInfo(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getComponentEnabledSetting(
+android.content.ComponentName)
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/ApplicationInfo;>; )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.util.List getInstalledApplications(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/PackageInfo;>; )
+public java.util.List getInstalledPackages(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.pm.InstrumentationInfo getInstrumentationInfo(
+android.content.ComponentName
+int)
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getNameForUid(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int[] getPackageGids(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.pm.PackageInfo getPackageInfo(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void getPackageSizeInfo(
+java.lang.String
+android.content.pm.IPackageStatsObserver)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getPackageUid(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String[] getPackagesForUid(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.pm.PermissionGroupInfo getPermissionGroupInfo(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.pm.PermissionInfo getPermissionInfo(
+java.lang.String
+int)
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/ApplicationInfo;>; )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.util.List getPersistentApplications(
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/content/IntentFilter;>;Ljava/util/List<Landroid/content/ComponentName;>;Ljava/lang/String;)I )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getPreferredActivities(
+java.util.List
+java.util.List
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Landroid/content/pm/PackageInfo;>; )
+public java.util.List getPreferredPackages(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.pm.ActivityInfo getReceiverInfo(
+android.content.ComponentName
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.pm.ServiceInfo getServiceInfo(
+android.content.ComponentName
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean hasSystemUidErrors()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void installPackage(
+android.net.Uri
+android.content.pm.IPackageInstallObserver
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;II)Ljava/util/List<Landroid/content/pm/ProviderInfo;>; )
+public java.util.List queryContentProviders(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;I)Ljava/util/List<Landroid/content/pm/InstrumentationInfo;>; )
+public java.util.List queryInstrumentation(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+public java.util.List queryIntentActivities(
+android.content.Intent
+java.lang.String
+int)
+@dalvik.annotation.Signature (value =(Landroid/content/ComponentName;[Landroid/content/Intent;[Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.util.List queryIntentActivityOptions(
+android.content.ComponentName
+android.content.Intent[]
+java.lang.String[]
+android.content.Intent
+java.lang.String
+int)
+@dalvik.annotation.Signature (value =(Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.util.List queryIntentReceivers(
+android.content.Intent
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+public java.util.List queryIntentServices(
+android.content.Intent
+java.lang.String
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;I)Ljava/util/List<Landroid/content/pm/PermissionInfo;>; )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.util.List queryPermissionsByGroup(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Ljava/util/List<Ljava/lang/String;>;Ljava/util/List<Landroid/content/pm/ProviderInfo;>;)V )
+public void querySyncProviders(
+java.util.List
+java.util.List)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void removePackageFromPreferred(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void removePermission(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.pm.ProviderInfo resolveContentProvider(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.pm.ResolveInfo resolveIntent(
+android.content.Intent
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.pm.ResolveInfo resolveService(
+android.content.Intent
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setApplicationEnabledSetting(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setComponentEnabledSetting(
+android.content.ComponentName
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void systemReady()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/pm/IPackageManager$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/IPackageManager; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class android.content.pm.IPackageManager$Stub extends android.os.Binder implements android.content.pm.IPackageManager
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_addPackageToPreferred
+
+static final int TRANSACTION_addPermission
+
+static final int TRANSACTION_addPreferredActivity
+
+static final int TRANSACTION_checkPermission
+
+static final int TRANSACTION_checkSignatures
+
+static final int TRANSACTION_checkUidPermission
+
+static final int TRANSACTION_clearApplicationUserData
+
+static final int TRANSACTION_clearPackagePreferredActivities
+
+static final int TRANSACTION_deleteApplicationCacheFiles
+
+static final int TRANSACTION_deletePackage
+
+static final int TRANSACTION_enterSafeMode
+
+static final int TRANSACTION_freeApplicationCache
+
+static final int TRANSACTION_getActivityInfo
+
+static final int TRANSACTION_getAllPermissionGroups
+
+static final int TRANSACTION_getApplicationEnabledSetting
+
+static final int TRANSACTION_getApplicationInfo
+
+static final int TRANSACTION_getComponentEnabledSetting
+
+static final int TRANSACTION_getInstalledApplications
+
+static final int TRANSACTION_getInstalledPackages
+
+static final int TRANSACTION_getInstrumentationInfo
+
+static final int TRANSACTION_getNameForUid
+
+static final int TRANSACTION_getPackageGids
+
+static final int TRANSACTION_getPackageInfo
+
+static final int TRANSACTION_getPackageSizeInfo
+
+static final int TRANSACTION_getPackageUid
+
+static final int TRANSACTION_getPackagesForUid
+
+static final int TRANSACTION_getPermissionGroupInfo
+
+static final int TRANSACTION_getPermissionInfo
+
+static final int TRANSACTION_getPersistentApplications
+
+static final int TRANSACTION_getPreferredActivities
+
+static final int TRANSACTION_getPreferredPackages
+
+static final int TRANSACTION_getReceiverInfo
+
+static final int TRANSACTION_getServiceInfo
+
+static final int TRANSACTION_hasSystemUidErrors
+
+static final int TRANSACTION_installPackage
+
+static final int TRANSACTION_queryContentProviders
+
+static final int TRANSACTION_queryInstrumentation
+
+static final int TRANSACTION_queryIntentActivities
+
+static final int TRANSACTION_queryIntentActivityOptions
+
+static final int TRANSACTION_queryIntentReceivers
+
+static final int TRANSACTION_queryIntentServices
+
+static final int TRANSACTION_queryPermissionsByGroup
+
+static final int TRANSACTION_querySyncProviders
+
+static final int TRANSACTION_removePackageFromPreferred
+
+static final int TRANSACTION_removePermission
+
+static final int TRANSACTION_resolveContentProvider
+
+static final int TRANSACTION_resolveIntent
+
+static final int TRANSACTION_resolveService
+
+static final int TRANSACTION_setApplicationEnabledSetting
+
+static final int TRANSACTION_setComponentEnabledSetting
+
+static final int TRANSACTION_systemReady
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.content.pm.IPackageManager asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/pm/IPackageStatsObserver$Stub; )
+public abstract interface class android.content.pm.IPackageStatsObserver extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onGetStatsCompleted(
+android.content.pm.PackageStats
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/IPackageStatsObserver$Stub; )
+ class android.content.pm.IPackageStatsObserver$Stub$Proxy extends java.lang.Object implements android.content.pm.IPackageStatsObserver
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onGetStatsCompleted(
+android.content.pm.PackageStats
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/IPackageStatsObserver; )
+@dalvik.annotation.MemberClasses (value =Landroid/content/pm/IPackageStatsObserver$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class android.content.pm.IPackageStatsObserver$Stub extends android.os.Binder implements android.content.pm.IPackageStatsObserver
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_onGetStatsCompleted
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.content.pm.IPackageStatsObserver asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/InstrumentationInfo; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/pm/InstrumentationInfo;>; )
+final class android.content.pm.InstrumentationInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.pm.InstrumentationInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.pm.InstrumentationInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.content.pm.InstrumentationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/pm/InstrumentationInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public java.lang.String dataDir
+
+public boolean functionalTest
+
+public boolean handleProfiling
+
+public java.lang.String publicSourceDir
+
+public java.lang.String sourceDir
+
+public java.lang.String targetPackage
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+android.content.pm.InstrumentationInfo)
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.content.pm.InstrumentationInfo$1)
+
+public int describeContents()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/PackageInfo; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/pm/PackageInfo;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.content.pm.PackageInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.pm.PackageInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.pm.PackageInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.content.pm.PackageInfo extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/pm/PackageInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public android.content.pm.ActivityInfo[] activities
+
+public android.content.pm.ApplicationInfo applicationInfo
+
+public int[] gids
+
+public android.content.pm.InstrumentationInfo[] instrumentation
+
+public java.lang.String packageName
+
+public android.content.pm.PermissionInfo[] permissions
+
+public android.content.pm.ProviderInfo[] providers
+
+public android.content.pm.ActivityInfo[] receivers
+
+public java.lang.String[] requestedPermissions
+
+public android.content.pm.ServiceInfo[] services
+
+public android.content.pm.Signature[] signatures
+
+public int versionCode
+
+public java.lang.String versionName
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.content.pm.PackageInfo$1)
+
+public int describeContents()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Comparator<Landroid/content/pm/PackageItemInfo;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/PackageItemInfo; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DisplayNameComparator )
+public class android.content.pm.PackageItemInfo$DisplayNameComparator extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+
+private android.content.pm.PackageManager mPM
+
+private final java.text.Collator sCollator
+----------------METHODS----------------
+
+public void <init>(
+android.content.pm.PackageManager)
+
+public final int compare(
+android.content.pm.PackageItemInfo
+android.content.pm.PackageItemInfo)
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/PackageManager; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =NameNotFoundException )
+public class android.content.pm.PackageManager$NameNotFoundException extends android.util.AndroidException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<II:Landroid/content/pm/PackageParser$IntentInfo;>Ljava/lang/Object; )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/PackageParser; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Component )
+public class android.content.pm.PackageParser$Component extends java.lang.Object
+
+----------------FIELDS----------------
+
+public android.content.ComponentName component
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<TII;>; )
+public final java.util.ArrayList intents
+
+public android.os.Bundle metaData
+
+public final android.content.pm.PackageParser$Package owner
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Landroid/content/pm/PackageParser$Component<TII;>;)V )
+public void <init>(
+android.content.pm.PackageParser$Component)
+
+public void <init>(
+android.content.pm.PackageParser$Package)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Landroid/content/pm/PackageParser$Component<Landroid/content/pm/PackageParser$ActivityIntentInfo;>; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Activity )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/PackageParser; )
+public final class android.content.pm.PackageParser$Activity extends android.content.pm.PackageParser$Component
+
+----------------FIELDS----------------
+
+public final android.content.pm.ActivityInfo info
+----------------METHODS----------------
+
+public void <init>(
+android.content.pm.PackageParser$Package)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =IntentInfo )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/PackageParser; )
+public class android.content.pm.PackageParser$IntentInfo extends android.content.IntentFilter
+
+----------------FIELDS----------------
+
+public boolean hasDefault
+
+public int icon
+
+public int labelRes
+
+public java.lang.CharSequence nonLocalizedLabel
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =ActivityIntentInfo )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/PackageParser; )
+public final class android.content.pm.PackageParser$ActivityIntentInfo extends android.content.pm.PackageParser$IntentInfo
+
+----------------FIELDS----------------
+
+public final android.content.pm.PackageParser$Activity activity
+----------------METHODS----------------
+
+public void <init>(
+android.content.pm.PackageParser$Activity)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/PackageParser; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Instrumentation )
+public final class android.content.pm.PackageParser$Instrumentation extends android.content.pm.PackageParser$Component
+
+----------------FIELDS----------------
+
+public final android.content.pm.InstrumentationInfo info
+----------------METHODS----------------
+
+public void <init>(
+android.content.pm.PackageParser$Package)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Package )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/PackageParser; )
+public final class android.content.pm.PackageParser$Package extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/content/pm/PackageParser$Activity;>; )
+public final java.util.ArrayList activities
+
+public final android.content.pm.ApplicationInfo applicationInfo
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/content/pm/PackageParser$Instrumentation;>; )
+public final java.util.ArrayList instrumentation
+
+public android.os.Bundle mAppMetaData
+
+public java.lang.Object mExtras
+
+public java.lang.String mPath
+
+public int mPreferredOrder
+
+public java.lang.String mSharedUserId
+
+public android.content.pm.Signature[] mSignatures
+
+public boolean mSystem
+
+public int mVersionCode
+
+public java.lang.String mVersionName
+
+public final java.lang.String packageName
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/content/pm/PackageParser$PermissionGroup;>; )
+public final java.util.ArrayList permissionGroups
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/content/pm/PackageParser$Permission;>; )
+public final java.util.ArrayList permissions
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/content/pm/PackageParser$Provider;>; )
+public final java.util.ArrayList providers
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/content/pm/PackageParser$Activity;>; )
+public final java.util.ArrayList receivers
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+public final java.util.ArrayList requestedPermissions
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/content/pm/PackageParser$Service;>; )
+public final java.util.ArrayList services
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+public final java.util.ArrayList usesLibraries
+
+public java.lang.String[] usesLibraryFiles
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Permission )
+@dalvik.annotation.Signature (value =Landroid/content/pm/PackageParser$Component<Landroid/content/pm/PackageParser$IntentInfo;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/PackageParser; )
+public final class android.content.pm.PackageParser$Permission extends android.content.pm.PackageParser$Component
+
+----------------FIELDS----------------
+
+public android.content.pm.PackageParser$PermissionGroup group
+
+public final android.content.pm.PermissionInfo info
+
+public boolean tree
+----------------METHODS----------------
+
+public void <init>(
+android.content.pm.PackageParser$Package)
+
+public void <init>(
+android.content.pm.PackageParser$Package
+android.content.pm.PermissionInfo)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =PermissionGroup )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/PackageParser; )
+@dalvik.annotation.Signature (value =Landroid/content/pm/PackageParser$Component<Landroid/content/pm/PackageParser$IntentInfo;>; )
+public final class android.content.pm.PackageParser$PermissionGroup extends android.content.pm.PackageParser$Component
+
+----------------FIELDS----------------
+
+public final android.content.pm.PermissionGroupInfo info
+----------------METHODS----------------
+
+public void <init>(
+android.content.pm.PackageParser$Package)
+
+public void <init>(
+android.content.pm.PackageParser$Package
+android.content.pm.PermissionGroupInfo)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/PackageParser; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Provider )
+public final class android.content.pm.PackageParser$Provider extends android.content.pm.PackageParser$Component
+
+----------------FIELDS----------------
+
+public final android.content.pm.ProviderInfo info
+
+public boolean syncable
+----------------METHODS----------------
+
+public void <init>(
+android.content.pm.PackageParser$Package)
+
+public void <init>(
+android.content.pm.PackageParser$Provider)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Service )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/PackageParser; )
+@dalvik.annotation.Signature (value =Landroid/content/pm/PackageParser$Component<Landroid/content/pm/PackageParser$ServiceIntentInfo;>; )
+public final class android.content.pm.PackageParser$Service extends android.content.pm.PackageParser$Component
+
+----------------FIELDS----------------
+
+public final android.content.pm.ServiceInfo info
+----------------METHODS----------------
+
+public void <init>(
+android.content.pm.PackageParser$Package)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/PackageParser; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =ServiceIntentInfo )
+public final class android.content.pm.PackageParser$ServiceIntentInfo extends android.content.pm.PackageParser$IntentInfo
+
+----------------FIELDS----------------
+
+public final android.content.pm.PackageParser$Service service
+----------------METHODS----------------
+
+public void <init>(
+android.content.pm.PackageParser$Service)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/pm/PackageParser$ServiceIntentInfo;Landroid/content/pm/PackageParser$ActivityIntentInfo;Landroid/content/pm/PackageParser$IntentInfo;Landroid/content/pm/PackageParser$Instrumentation;Landroid/content/pm/PackageParser$Provider;Landroid/content/pm/PackageParser$Service;Landroid/content/pm/PackageParser$Activity;Landroid/content/pm/PackageParser$PermissionGroup;Landroid/content/pm/PackageParser$Permission;Landroid/content/pm/PackageParser$Component;Landroid/content/pm/PackageParser$Package; )
+public class android.content.pm.PackageParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String ANDROID_RESOURCES
+
+public static final int PARSE_CHATTY
+
+public static final int PARSE_IGNORE_PROCESSES
+
+public static final int PARSE_IS_SYSTEM
+
+public static final int PARSE_MUST_BE_APK
+
+private static final boolean RIGID_PARSER
+
+private static final java.lang.String TAG
+@dalvik.annotation.Signature (value =Ljava/lang/ref/WeakReference<[B>; )
+private static java.lang.ref.WeakReference mReadBuffer
+
+private static final java.lang.Object mSync
+
+private java.lang.String mArchiveSourcePath
+
+private int mParseError
+
+private int mSdkVersion
+
+private java.lang.String[] mSeparateProcesses
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String)
+
+private static java.lang.String buildClassName(
+java.lang.String
+java.lang.CharSequence
+java.lang.String[])
+
+private static java.lang.String buildCompoundName(
+java.lang.String
+java.lang.CharSequence
+java.lang.String
+java.lang.String[])
+
+private static java.lang.String buildProcessName(
+java.lang.String
+java.lang.String
+java.lang.CharSequence
+int
+java.lang.String[]
+java.lang.String[])
+
+private static java.lang.String buildTaskAffinityName(
+java.lang.String
+java.lang.String
+java.lang.CharSequence
+java.lang.String[])
+
+private static boolean copyNeeded(
+int
+android.content.pm.PackageParser$Package
+android.os.Bundle)
+
+public static final android.content.pm.ActivityInfo generateActivityInfo(
+android.content.pm.PackageParser$Activity
+int)
+
+public static android.content.pm.ApplicationInfo generateApplicationInfo(
+android.content.pm.PackageParser$Package
+int)
+
+public static final android.content.pm.InstrumentationInfo generateInstrumentationInfo(
+android.content.pm.PackageParser$Instrumentation
+int)
+
+public static android.content.pm.PackageInfo generatePackageInfo(
+android.content.pm.PackageParser$Package
+int[]
+int)
+
+public static final android.content.pm.PermissionGroupInfo generatePermissionGroupInfo(
+android.content.pm.PackageParser$PermissionGroup
+int)
+
+public static final android.content.pm.PermissionInfo generatePermissionInfo(
+android.content.pm.PackageParser$Permission
+int)
+
+public static final android.content.pm.ProviderInfo generateProviderInfo(
+android.content.pm.PackageParser$Provider
+int)
+
+public static final android.content.pm.ServiceInfo generateServiceInfo(
+android.content.pm.PackageParser$Service
+int)
+
+private static final boolean isPackageFilename(
+java.lang.String)
+
+private java.security.cert.Certificate[] loadCertificates(
+java.util.jar.JarFile
+java.util.jar.JarEntry
+byte[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private android.content.pm.PackageParser$Activity parseActivity(
+android.content.pm.PackageParser$Package
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet
+int
+java.lang.String[]
+boolean)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private android.content.pm.PackageParser$Activity parseActivityAlias(
+android.content.pm.PackageParser$Package
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet
+int
+java.lang.String[]
+boolean)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private boolean parseAllMetaData(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet
+java.lang.String
+android.content.pm.PackageParser$Component
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private boolean parseApplication(
+android.content.pm.PackageParser$Package
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet
+int
+java.lang.String[])
+
+private boolean parseComponentInfo(
+android.content.pm.PackageParser$Package
+int
+android.content.pm.ComponentInfo
+java.lang.String[]
+java.lang.String
+android.content.res.TypedArray
+int
+int
+int
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private android.content.pm.PackageParser$Instrumentation parseInstrumentation(
+android.content.pm.PackageParser$Package
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private boolean parseIntent(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet
+android.content.pm.PackageParser$IntentInfo
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private android.os.Bundle parseMetaData(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet
+android.os.Bundle
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private android.content.pm.PackageParser$Package parsePackage(
+android.content.res.Resources
+android.content.res.XmlResourceParser
+int
+java.lang.String[])
+
+private boolean parsePackageItemInfo(
+android.content.pm.PackageParser$Package
+android.content.pm.PackageItemInfo
+java.lang.String[]
+java.lang.String
+android.content.res.TypedArray
+int
+int
+int)
+
+public static java.lang.String parsePackageName(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+private static java.lang.String parsePackageName(
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet
+int
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private android.content.pm.PackageParser$Permission parsePermission(
+android.content.pm.PackageParser$Package
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private android.content.pm.PackageParser$PermissionGroup parsePermissionGroup(
+android.content.pm.PackageParser$Package
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private android.content.pm.PackageParser$Permission parsePermissionTree(
+android.content.pm.PackageParser$Package
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private android.content.pm.PackageParser$Provider parseProvider(
+android.content.pm.PackageParser$Package
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet
+int
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private boolean parseProviderTags(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet
+android.content.pm.PackageParser$Provider
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private android.content.pm.PackageParser$Service parseService(
+android.content.pm.PackageParser$Package
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet
+int
+java.lang.String[])
+
+public static android.content.pm.Signature stringToSignature(
+java.lang.String)
+
+private static java.lang.String validateName(
+java.lang.String
+boolean)
+
+public boolean collectCertificates(
+android.content.pm.PackageParser$Package
+int)
+
+public int getParseError()
+
+public android.content.pm.PackageParser$Package parsePackage(
+java.io.File
+java.lang.String
+android.util.DisplayMetrics
+int)
+
+public void setSdkVersion(
+int)
+
+public void setSeparateProcesses(
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/PackageStats; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/pm/PackageStats;>; )
+final class android.content.pm.PackageStats$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.pm.PackageStats createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.pm.PackageStats[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.content.pm.PackageStats extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/pm/PackageStats;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public long cacheSize
+
+public long codeSize
+
+public long dataSize
+
+public java.lang.String packageName
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.pm.PackageStats)
+
+public void <init>(
+android.os.Parcel)
+
+public void <init>(
+java.lang.String)
+
+public int describeContents()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/pm/PermissionGroupInfo;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/PermissionGroupInfo; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.content.pm.PermissionGroupInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.pm.PermissionGroupInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.pm.PermissionGroupInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.content.pm.PermissionGroupInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/pm/PermissionGroupInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public int descriptionRes
+
+public java.lang.CharSequence nonLocalizedDescription
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+android.content.pm.PermissionGroupInfo)
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.content.pm.PermissionGroupInfo$1)
+
+public int describeContents()
+
+public java.lang.CharSequence loadDescription(
+android.content.pm.PackageManager)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/PermissionInfo; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/pm/PermissionInfo;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.content.pm.PermissionInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.pm.PermissionInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.pm.PermissionInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.content.pm.PermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/pm/PermissionInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final int PROTECTION_DANGEROUS
+
+public static final int PROTECTION_NORMAL
+
+public static final int PROTECTION_SIGNATURE
+
+public static final int PROTECTION_SIGNATURE_OR_SYSTEM
+
+public int descriptionRes
+
+public java.lang.String group
+
+public java.lang.CharSequence nonLocalizedDescription
+
+public int protectionLevel
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+android.content.pm.PermissionInfo)
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.content.pm.PermissionInfo$1)
+
+public int describeContents()
+
+public java.lang.CharSequence loadDescription(
+android.content.pm.PackageManager)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/ProviderInfo; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/pm/ProviderInfo;>; )
+final class android.content.pm.ProviderInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.pm.ProviderInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.pm.ProviderInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public final class android.content.pm.ProviderInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/pm/ProviderInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public java.lang.String authority
+
+public boolean grantUriPermissions
+
+public int initOrder
+
+public boolean isSyncable
+
+public boolean multiprocess
+
+public java.lang.String readPermission
+
+public android.os.PatternMatcher[] uriPermissionPatterns
+
+public java.lang.String writePermission
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+android.content.pm.ProviderInfo)
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.content.pm.ProviderInfo$1)
+
+public int describeContents()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/ResolveInfo; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/pm/ResolveInfo;>; )
+final class android.content.pm.ResolveInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.pm.ResolveInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.pm.ResolveInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Comparator<Landroid/content/pm/ResolveInfo;>; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DisplayNameComparator )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/ResolveInfo; )
+public class android.content.pm.ResolveInfo$DisplayNameComparator extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+
+private android.content.pm.PackageManager mPM
+
+private final java.text.Collator sCollator
+----------------METHODS----------------
+
+public void <init>(
+android.content.pm.PackageManager)
+
+public final int compare(
+android.content.pm.ResolveInfo
+android.content.pm.ResolveInfo)
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/pm/ResolveInfo$DisplayNameComparator; )
+public class android.content.pm.ResolveInfo extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/pm/ResolveInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public android.content.pm.ActivityInfo activityInfo
+
+public android.content.IntentFilter filter
+
+public int icon
+
+public boolean isDefault
+
+public int labelRes
+
+public int match
+
+public java.lang.CharSequence nonLocalizedLabel
+
+public int preferredOrder
+
+public int priority
+
+public android.content.pm.ServiceInfo serviceInfo
+
+public int specificIndex
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.content.pm.ResolveInfo$1)
+
+public int describeContents()
+
+public void dump(
+android.util.Printer
+java.lang.String)
+
+public final int getIconResource()
+
+public android.graphics.drawable.Drawable loadIcon(
+android.content.pm.PackageManager)
+
+public java.lang.CharSequence loadLabel(
+android.content.pm.PackageManager)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/ServiceInfo; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/pm/ServiceInfo;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.content.pm.ServiceInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.pm.ServiceInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.pm.ServiceInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.content.pm.ServiceInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/pm/ServiceInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public java.lang.String permission
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+android.content.pm.ServiceInfo)
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.content.pm.ServiceInfo$1)
+
+public int describeContents()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/pm/Signature; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/pm/Signature;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.content.pm.Signature$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.pm.Signature createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.pm.Signature[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.content.pm.Signature extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/pm/Signature;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+private int mHashCode
+
+private boolean mHaveHashCode
+
+private final byte[] mSignature
+
+private java.lang.String mString
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.content.pm.Signature$1)
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+byte[])
+
+public int describeContents()
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+public byte[] toByteArray()
+
+public char[] toChars()
+
+public char[] toChars(
+char[]
+int[])
+
+public java.lang.String toCharsString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class android.content.res.AssetFileDescriptor extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final android.os.ParcelFileDescriptor mFd
+
+private final long mLength
+
+private final long mStartOffset
+----------------METHODS----------------
+
+public void <init>(
+android.os.ParcelFileDescriptor
+long
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public java.io.FileDescriptor getFileDescriptor()
+
+public long getLength()
+
+public android.os.ParcelFileDescriptor getParcelFileDescriptor()
+
+public long getStartOffset()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/res/AssetManager; )
+ class android.content.res.AssetManager$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =17 name =AssetInputStream )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/res/AssetManager; )
+public final class android.content.res.AssetManager$AssetInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+private int mAsset
+
+private long mLength
+
+private long mMarkPos
+
+final android.content.res.AssetManager this$0
+----------------METHODS----------------
+
+private void <init>(
+android.content.res.AssetManager
+int)
+
+ void <init>(
+android.content.res.AssetManager
+int
+android.content.res.AssetManager$1)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void close()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public final int getAssetInt()
+
+public final void mark(
+int)
+
+public final boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final long skip(
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/res/AssetManager$1;Landroid/content/res/AssetManager$AssetInputStream; )
+public final class android.content.res.AssetManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ACCESS_BUFFER
+
+public static final int ACCESS_RANDOM
+
+public static final int ACCESS_STREAMING
+
+public static final int ACCESS_UNKNOWN
+
+static final int STYLE_ASSET_COOKIE
+
+static final int STYLE_CHANGING_CONFIGURATIONS
+
+static final int STYLE_DATA
+
+static final int STYLE_NUM_ENTRIES
+
+static final int STYLE_RESOURCE_ID
+
+static final int STYLE_TYPE
+
+private static final java.lang.String TAG
+
+private static final boolean localLOGV
+
+private static final long[] mOffsets
+
+private static final java.lang.Object mSync
+
+private static android.content.res.AssetManager mSystem
+
+private static final android.util.TypedValue mValue
+
+private java.lang.String mAppName
+
+private java.lang.String mAssetDir
+
+private int mNumRefs
+
+private int mObject
+
+private boolean mOpen
+
+private android.content.res.StringBlock[] mStringBlocks
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void <init>(
+boolean)
+
+static long access$100(
+android.content.res.AssetManager
+int)
+
+static int access$200(
+android.content.res.AssetManager
+int)
+
+static long access$300(
+android.content.res.AssetManager
+int)
+
+static java.lang.Object access$400()
+
+static void access$500(
+android.content.res.AssetManager
+int)
+
+static void access$600(
+android.content.res.AssetManager)
+
+static long access$700(
+android.content.res.AssetManager
+int
+long
+int)
+
+static int access$800(
+android.content.res.AssetManager
+int
+byte[]
+int
+int)
+
+static final native boolean applyStyle(
+int
+int
+int
+int
+int[]
+int[]
+int[])
+
+static final native void applyThemeStyle(
+int
+int
+boolean)
+
+static final native void copyTheme(
+int
+int)
+
+private final void decRefsLocked()
+
+private final native void deleteTheme(
+int)
+
+private final native void destroy()
+
+private final native void destroyAsset(
+int)
+
+static final native void dumpTheme(
+int
+int
+java.lang.String
+java.lang.String)
+
+private static void ensureSystemAssets()
+
+private final native int[] getArrayStringInfo(
+int)
+
+private final native java.lang.String[] getArrayStringResource(
+int)
+
+private final native long getAssetLength(
+int)
+
+private final native long getAssetRemainingLength(
+int)
+
+public static final native int getGlobalAssetCount()
+
+public static final native int getGlobalAssetManagerCount()
+
+private final native int getNativeStringBlock(
+int)
+
+private final native int getStringBlockCount()
+
+public static android.content.res.AssetManager getSystem()
+
+private final native void init()
+
+private final native int loadResourceBagValue(
+int
+int
+android.util.TypedValue
+boolean)
+
+private final native int loadResourceValue(
+int
+android.util.TypedValue
+boolean)
+
+static final native int loadThemeAttributeValue(
+int
+int
+android.util.TypedValue
+boolean)
+
+private final void makeStringBlocks(
+boolean)
+
+private final native int newTheme()
+
+private final native int openAsset(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private final native android.os.ParcelFileDescriptor openAssetFd(
+java.lang.String
+long[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native android.os.ParcelFileDescriptor openNonAssetFdNative(
+int
+java.lang.String
+long[])
+
+private final native int openNonAssetNative(
+int
+java.lang.String
+int)
+
+private final native int openXmlAssetNative(
+int
+java.lang.String)
+
+private final native int readAsset(
+int
+byte[]
+int
+int)
+
+private final native int readAssetChar(
+int)
+
+private final native long seekAsset(
+int
+long
+int)
+
+public final native int addAssetPath(
+java.lang.String)
+
+public void close()
+
+final int createTheme()
+
+final void ensureStringBlocks()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+final native int[] getArrayIntResource(
+int)
+
+final native int getArraySize(
+int)
+
+public final native java.lang.String getCookieName(
+int)
+
+public final native java.lang.String[] getLocales()
+
+final java.lang.CharSequence getPooledString(
+int
+int)
+
+final java.lang.CharSequence getResourceBagText(
+int
+int)
+
+final native java.lang.String getResourceEntryName(
+int)
+
+final native int getResourceIdentifier(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+final native java.lang.String getResourceName(
+int)
+
+final native java.lang.String getResourcePackageName(
+int)
+
+final java.lang.String[] getResourceStringArray(
+int)
+
+final java.lang.CharSequence getResourceText(
+int)
+
+final java.lang.CharSequence[] getResourceTextArray(
+int)
+
+final native java.lang.String getResourceTypeName(
+int)
+
+final boolean getResourceValue(
+int
+android.util.TypedValue
+boolean)
+
+final boolean getThemeValue(
+int
+int
+android.util.TypedValue
+boolean)
+
+public final native boolean isUpToDate()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final native java.lang.String[] list(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.io.InputStream open(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.io.InputStream open(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final android.content.res.AssetFileDescriptor openFd(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.io.InputStream openNonAsset(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.io.InputStream openNonAsset(
+int
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.io.InputStream openNonAsset(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.io.InputStream openNonAsset(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final android.content.res.AssetFileDescriptor openNonAssetFd(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final android.content.res.AssetFileDescriptor openNonAssetFd(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+final android.content.res.XmlBlock openXmlBlockAsset(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+final android.content.res.XmlBlock openXmlBlockAsset(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final android.content.res.XmlResourceParser openXmlResourceParser(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final android.content.res.XmlResourceParser openXmlResourceParser(
+java.lang.String)
+
+final void releaseTheme(
+int)
+
+final native int retrieveArray(
+int
+int[])
+
+final native boolean retrieveAttributes(
+int
+int[]
+int[]
+int[])
+
+public final native void setConfiguration(
+int
+int
+java.lang.String
+int
+int
+int
+int
+int
+int
+int
+int
+int)
+
+public final native void setLocale(
+java.lang.String)
+
+ void xmlBlockGone()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/res/ColorStateList;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/res/ColorStateList; )
+final class android.content.res.ColorStateList$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.res.ColorStateList createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.res.ColorStateList[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.content.res.ColorStateList extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/res/ColorStateList;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+private static final int[][] EMPTY
+@dalvik.annotation.Signature (value =Landroid/util/SparseArray<Ljava/lang/ref/WeakReference<Landroid/content/res/ColorStateList;>;>; )
+private static final android.util.SparseArray sCache
+
+private int[] mColors
+
+private int mDefaultColor
+
+private int[][] mStateSpecs
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public void <init>(
+int[][]
+int[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static android.content.res.ColorStateList createFromXml(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private static android.content.res.ColorStateList createFromXmlInner(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private void inflate(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+public static android.content.res.ColorStateList valueOf(
+int)
+
+public int describeContents()
+
+public int getColorForState(
+int[]
+int)
+
+public int getDefaultColor()
+
+public boolean isStateful()
+
+public java.lang.String toString()
+
+public android.content.res.ColorStateList withAlpha(
+int)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/content/res/Configuration;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/res/Configuration; )
+final class android.content.res.Configuration$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.content.res.Configuration createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.content.res.Configuration[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable;Ljava/lang/Comparable<Landroid/content/res/Configuration;>; )
+public final class android.content.res.Configuration extends java.lang.Object implements android.os.Parcelable, java.lang.Comparable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/content/res/Configuration;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final int KEYBOARDHIDDEN_NO
+
+public static final int KEYBOARDHIDDEN_UNDEFINED
+
+public static final int KEYBOARDHIDDEN_YES
+
+public static final int KEYBOARD_12KEY
+
+public static final int KEYBOARD_NOKEYS
+
+public static final int KEYBOARD_QWERTY
+
+public static final int KEYBOARD_UNDEFINED
+
+public static final int NAVIGATION_DPAD
+
+public static final int NAVIGATION_NONAV
+
+public static final int NAVIGATION_TRACKBALL
+
+public static final int NAVIGATION_UNDEFINED
+
+public static final int NAVIGATION_WHEEL
+
+public static final int ORIENTATION_LANDSCAPE
+
+public static final int ORIENTATION_PORTRAIT
+
+public static final int ORIENTATION_SQUARE
+
+public static final int ORIENTATION_UNDEFINED
+
+public static final int TOUCHSCREEN_FINGER
+
+public static final int TOUCHSCREEN_NOTOUCH
+
+public static final int TOUCHSCREEN_STYLUS
+
+public static final int TOUCHSCREEN_UNDEFINED
+
+public float fontScale
+
+public int keyboard
+
+public int keyboardHidden
+
+public java.util.Locale locale
+
+public int mcc
+
+public int mnc
+
+public int navigation
+
+public int orientation
+
+public int touchscreen
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+android.content.res.Configuration)
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.content.res.Configuration$1)
+
+public static boolean needNewResources(
+int
+int)
+
+public int compareTo(
+android.content.res.Configuration)
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int describeContents()
+
+public int diff(
+android.content.res.Configuration)
+
+public boolean equals(
+android.content.res.Configuration)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+@java.lang.Deprecated
+public void makeDefault()
+
+public void setToDefaults()
+
+public java.lang.String toString()
+
+public int updateFrom(
+android.content.res.Configuration)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/res/PluralRules; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.content.res.PluralRules$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/res/PluralRules$1;Landroid/content/res/PluralRules$en;Landroid/content/res/PluralRules$cs; )
+abstract class android.content.res.PluralRules extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int ID_OTHER
+
+static final int QUANTITY_FEW
+
+static final int QUANTITY_MANY
+
+static final int QUANTITY_ONE
+
+static final int QUANTITY_OTHER
+
+static final int QUANTITY_TWO
+
+static final int QUANTITY_ZERO
+
+private static android.content.res.PluralRules cs
+
+private static android.content.res.PluralRules en
+----------------METHODS----------------
+
+ void <init>()
+
+static final int attrForQuantity(
+int)
+
+static final android.content.res.PluralRules ruleForLocale(
+java.util.Locale)
+
+static final java.lang.String stringForQuantity(
+int)
+
+final int attrForNumber(
+int)
+
+abstract int quantityForNumber(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/res/PluralRules; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =cs )
+ class android.content.res.PluralRules$cs extends android.content.res.PluralRules
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.content.res.PluralRules$1)
+
+ int quantityForNumber(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =en )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/res/PluralRules; )
+ class android.content.res.PluralRules$en extends android.content.res.PluralRules
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.content.res.PluralRules$1)
+
+ int quantityForNumber(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/res/Resources; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =NotFoundException )
+public class android.content.res.Resources$NotFoundException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/res/Resources; )
+@dalvik.annotation.InnerClass (accessFlags =17 name =Theme )
+public final class android.content.res.Resources$Theme extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final android.content.res.AssetManager mAssets
+
+private final int mTheme
+
+final android.content.res.Resources this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.res.Resources)
+
+public void applyStyle(
+int
+boolean)
+
+public void dump(
+int
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public android.content.res.TypedArray obtainStyledAttributes(
+int
+int[])
+
+public android.content.res.TypedArray obtainStyledAttributes(
+android.util.AttributeSet
+int[]
+int
+int)
+
+public android.content.res.TypedArray obtainStyledAttributes(
+int[])
+
+public boolean resolveAttribute(
+int
+android.util.TypedValue
+boolean)
+
+public void setTo(
+android.content.res.Resources$Theme)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$NotFoundException; )
+public class android.content.res.Resources extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG_CONFIG
+
+private static final boolean DEBUG_LOAD
+
+static final java.lang.String TAG
+
+private static boolean mPreloaded
+@dalvik.annotation.Signature (value =Landroid/util/SparseArray<Landroid/graphics/drawable/Drawable$ConstantState;>; )
+private static final android.util.SparseArray mPreloadedDrawables
+
+private static final java.lang.Object mSync
+
+private static android.content.res.Resources mSystem
+
+private static final int sSdkVersion
+
+final android.content.res.AssetManager mAssets
+
+ android.content.res.TypedArray mCachedStyledAttributes
+
+private final int[] mCachedXmlBlockIds
+
+private final android.content.res.XmlBlock[] mCachedXmlBlocks
+@dalvik.annotation.Signature (value =Landroid/util/SparseArray<Ljava/lang/ref/WeakReference<Landroid/content/res/ColorStateList;>;>; )
+private final android.util.SparseArray mColorStateListCache
+
+private final android.content.res.Configuration mConfiguration
+@dalvik.annotation.Signature (value =Landroid/util/SparseArray<Ljava/lang/ref/WeakReference<Landroid/graphics/drawable/Drawable$ConstantState;>;>; )
+private final android.util.SparseArray mDrawableCache
+
+private int mLastCachedXmlBlockIndex
+
+final android.util.DisplayMetrics mMetrics
+
+ android.content.res.PluralRules mPluralRule
+
+private boolean mPreloading
+
+final android.util.TypedValue mTmpValue
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public void <init>(
+android.content.res.AssetManager
+android.util.DisplayMetrics
+android.content.res.Configuration)
+
+static android.content.res.TypedArray access$000(
+android.content.res.Resources
+int)
+
+private android.content.res.ColorStateList getCachedColorStateList(
+int)
+
+private final android.graphics.drawable.Drawable getCachedDrawable(
+int)
+
+private android.content.res.TypedArray getCachedStyledAttributes(
+int)
+
+private android.content.res.PluralRules getPluralRule()
+
+public static android.content.res.Resources getSystem()
+
+public final void finishPreloading()
+
+public final void flushLayoutCache()
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public android.content.res.XmlResourceParser getAnimation(
+int)
+
+public final android.content.res.AssetManager getAssets()
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public int getColor(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public android.content.res.ColorStateList getColorStateList(
+int)
+
+public android.content.res.Configuration getConfiguration()
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public float getDimension(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public int getDimensionPixelOffset(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public int getDimensionPixelSize(
+int)
+
+public android.util.DisplayMetrics getDisplayMetrics()
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public android.graphics.drawable.Drawable getDrawable(
+int)
+
+public int getIdentifier(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public int[] getIntArray(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public int getInteger(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public android.content.res.XmlResourceParser getLayout(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public android.graphics.Movie getMovie(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public java.lang.String getQuantityString(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public transient java.lang.String getQuantityString(
+int
+int
+java.lang.Object[])
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public java.lang.CharSequence getQuantityText(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public java.lang.String getResourceEntryName(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public java.lang.String getResourceName(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public java.lang.String getResourcePackageName(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public java.lang.String getResourceTypeName(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public java.lang.String getString(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public transient java.lang.String getString(
+int
+java.lang.Object[])
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public java.lang.String[] getStringArray(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public java.lang.CharSequence getText(
+int)
+
+public java.lang.CharSequence getText(
+int
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public java.lang.CharSequence[] getTextArray(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public void getValue(
+int
+android.util.TypedValue
+boolean)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public void getValue(
+java.lang.String
+android.util.TypedValue
+boolean)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public android.content.res.XmlResourceParser getXml(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+ android.content.res.ColorStateList loadColorStateList(
+android.util.TypedValue
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+ android.graphics.drawable.Drawable loadDrawable(
+android.util.TypedValue
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+ android.content.res.XmlResourceParser loadXmlResourceParser(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+ android.content.res.XmlResourceParser loadXmlResourceParser(
+java.lang.String
+int
+int
+java.lang.String)
+
+public final android.content.res.Resources$Theme newTheme()
+
+public android.content.res.TypedArray obtainAttributes(
+android.util.AttributeSet
+int[])
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public android.content.res.TypedArray obtainTypedArray(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public java.io.InputStream openRawResource(
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public android.content.res.AssetFileDescriptor openRawResourceFd(
+int)
+
+public final void startPreloading()
+
+public void updateConfiguration(
+android.content.res.Configuration
+android.util.DisplayMetrics)
+
+________________CLASS________________
+
+
+public abstract interface class android.text.style.ParagraphStyle extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class android.text.style.WrapTogetherSpan extends java.lang.Object implements android.text.style.ParagraphStyle
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class android.text.style.LineHeightSpan extends java.lang.Object implements android.text.style.ParagraphStyle, android.text.style.WrapTogetherSpan
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void chooseHeight(
+java.lang.CharSequence
+int
+int
+int
+int
+android.graphics.Paint$FontMetricsInt)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Height )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/res/StringBlock; )
+ class android.content.res.StringBlock$Height extends java.lang.Object implements android.text.style.LineHeightSpan
+
+----------------FIELDS----------------
+
+private static float sProportion
+
+private int mSize
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int)
+
+public void chooseHeight(
+java.lang.CharSequence
+int
+int
+int
+int
+android.graphics.Paint$FontMetricsInt)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =StyleIDs )
+@dalvik.annotation.EnclosingClass (value =Landroid/content/res/StringBlock; )
+final class android.content.res.StringBlock$StyleIDs extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int bigId
+
+private int boldId
+
+private int italicId
+
+private int listItemId
+
+private int smallId
+
+private int strikeId
+
+private int subId
+
+private int supId
+
+private int ttId
+
+private int underlineId
+----------------METHODS----------------
+
+ void <init>()
+
+static int access$000(
+android.content.res.StringBlock$StyleIDs)
+
+static int access$002(
+android.content.res.StringBlock$StyleIDs
+int)
+
+static int access$100(
+android.content.res.StringBlock$StyleIDs)
+
+static int access$102(
+android.content.res.StringBlock$StyleIDs
+int)
+
+static int access$200(
+android.content.res.StringBlock$StyleIDs)
+
+static int access$202(
+android.content.res.StringBlock$StyleIDs
+int)
+
+static int access$300(
+android.content.res.StringBlock$StyleIDs)
+
+static int access$302(
+android.content.res.StringBlock$StyleIDs
+int)
+
+static int access$400(
+android.content.res.StringBlock$StyleIDs)
+
+static int access$402(
+android.content.res.StringBlock$StyleIDs
+int)
+
+static int access$500(
+android.content.res.StringBlock$StyleIDs)
+
+static int access$502(
+android.content.res.StringBlock$StyleIDs
+int)
+
+static int access$600(
+android.content.res.StringBlock$StyleIDs)
+
+static int access$602(
+android.content.res.StringBlock$StyleIDs
+int)
+
+static int access$700(
+android.content.res.StringBlock$StyleIDs)
+
+static int access$702(
+android.content.res.StringBlock$StyleIDs
+int)
+
+static int access$800(
+android.content.res.StringBlock$StyleIDs)
+
+static int access$802(
+android.content.res.StringBlock$StyleIDs
+int)
+
+static int access$900(
+android.content.res.StringBlock$StyleIDs)
+
+static int access$902(
+android.content.res.StringBlock$StyleIDs
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/res/StringBlock$Height;Landroid/content/res/StringBlock$StyleIDs; )
+final class android.content.res.StringBlock extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private static final boolean localLOGV
+
+private final int mNative
+
+private final boolean mOwnsNative
+@dalvik.annotation.Signature (value =Landroid/util/SparseArray<Ljava/lang/CharSequence;>; )
+private android.util.SparseArray mSparseStrings
+
+private java.lang.CharSequence[] mStrings
+
+ android.content.res.StringBlock$StyleIDs mStyleIDs
+
+private final boolean mUseSparse
+----------------METHODS----------------
+
+ void <init>(
+int
+boolean)
+
+public void <init>(
+byte[]
+int
+int
+boolean)
+
+public void <init>(
+byte[]
+boolean)
+
+private java.lang.CharSequence applyStyles(
+java.lang.String
+int[]
+android.content.res.StringBlock$StyleIDs)
+
+private static final native int nativeCreate(
+byte[]
+int
+int)
+
+private static final native void nativeDestroy(
+int)
+
+private static final native int nativeGetSize(
+int)
+
+private static final native java.lang.String nativeGetString(
+int
+int)
+
+private static final native int[] nativeGetStyle(
+int
+int)
+
+private static final native int nativeIndexOfString(
+int
+java.lang.String)
+
+private static java.lang.String subtag(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public java.lang.CharSequence get(
+int)
+
+________________CLASS________________
+
+
+public class android.content.res.TypedArray extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int[] mData
+
+ int[] mIndices
+
+ int mLength
+
+private final android.content.res.Resources mResources
+
+ int[] mRsrcs
+
+private android.util.TypedValue mValue
+
+ android.content.res.XmlBlock$Parser mXml
+----------------METHODS----------------
+
+ void <init>(
+android.content.res.Resources
+int[]
+int[]
+int)
+
+private boolean getValueAt(
+int
+android.util.TypedValue)
+
+private java.lang.CharSequence loadStringValueAt(
+int)
+
+public boolean getBoolean(
+int
+boolean)
+
+public int getColor(
+int
+int)
+
+public android.content.res.ColorStateList getColorStateList(
+int)
+
+public float getDimension(
+int
+float)
+
+public int getDimensionPixelOffset(
+int
+int)
+
+public int getDimensionPixelSize(
+int
+int)
+
+public android.graphics.drawable.Drawable getDrawable(
+int)
+
+public float getFloat(
+int
+float)
+
+public float getFraction(
+int
+int
+int
+float)
+
+public int getIndex(
+int)
+
+public int getIndexCount()
+
+public int getInt(
+int
+int)
+
+public int getInteger(
+int
+int)
+
+public int getLayoutDimension(
+int
+java.lang.String)
+
+public java.lang.String getPositionDescription()
+
+public int getResourceId(
+int
+int)
+
+public android.content.res.Resources getResources()
+
+public java.lang.String getString(
+int)
+
+public java.lang.CharSequence getText(
+int)
+
+public java.lang.CharSequence[] getTextArray(
+int)
+
+public boolean getValue(
+int
+android.util.TypedValue)
+
+public boolean hasValue(
+int)
+
+public int length()
+
+public android.util.TypedValue peekValue(
+int)
+
+public void recycle()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class android.util.AttributeSet extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean getAttributeBooleanValue(
+int
+boolean)
+
+public abstract boolean getAttributeBooleanValue(
+java.lang.String
+java.lang.String
+boolean)
+
+public abstract int getAttributeCount()
+
+public abstract float getAttributeFloatValue(
+int
+float)
+
+public abstract float getAttributeFloatValue(
+java.lang.String
+java.lang.String
+float)
+
+public abstract int getAttributeIntValue(
+int
+int)
+
+public abstract int getAttributeIntValue(
+java.lang.String
+java.lang.String
+int)
+
+public abstract int getAttributeListValue(
+int
+java.lang.String[]
+int)
+
+public abstract int getAttributeListValue(
+java.lang.String
+java.lang.String
+java.lang.String[]
+int)
+
+public abstract java.lang.String getAttributeName(
+int)
+
+public abstract int getAttributeNameResource(
+int)
+
+public abstract int getAttributeResourceValue(
+int
+int)
+
+public abstract int getAttributeResourceValue(
+java.lang.String
+java.lang.String
+int)
+
+public abstract int getAttributeUnsignedIntValue(
+int
+int)
+
+public abstract int getAttributeUnsignedIntValue(
+java.lang.String
+java.lang.String
+int)
+
+public abstract java.lang.String getAttributeValue(
+int)
+
+public abstract java.lang.String getAttributeValue(
+java.lang.String
+java.lang.String)
+
+public abstract java.lang.String getClassAttribute()
+
+public abstract java.lang.String getIdAttribute()
+
+public abstract int getIdAttributeResourceValue(
+int)
+
+public abstract java.lang.String getPositionDescription()
+
+public abstract int getStyleAttribute()
+
+________________CLASS________________
+
+
+public abstract interface class android.content.res.XmlResourceParser extends java.lang.Object implements org.xmlpull.v1.XmlPullParser, android.util.AttributeSet
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void close()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/content/res/XmlBlock; )
+@dalvik.annotation.InnerClass (accessFlags =16 name =Parser )
+final class android.content.res.XmlBlock$Parser extends java.lang.Object implements android.content.res.XmlResourceParser
+
+----------------FIELDS----------------
+
+private final android.content.res.XmlBlock mBlock
+
+private boolean mDecNextDepth
+
+private int mDepth
+
+private int mEventType
+
+ int mParseState
+
+private boolean mStarted
+
+final android.content.res.XmlBlock this$0
+----------------METHODS----------------
+
+ void <init>(
+android.content.res.XmlBlock
+int
+android.content.res.XmlBlock)
+
+public void close()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void defineEntityReplacementText(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public boolean getAttributeBooleanValue(
+int
+boolean)
+
+public boolean getAttributeBooleanValue(
+java.lang.String
+java.lang.String
+boolean)
+
+public int getAttributeCount()
+
+public float getAttributeFloatValue(
+int
+float)
+
+public float getAttributeFloatValue(
+java.lang.String
+java.lang.String
+float)
+
+public int getAttributeIntValue(
+int
+int)
+
+public int getAttributeIntValue(
+java.lang.String
+java.lang.String
+int)
+
+public int getAttributeListValue(
+int
+java.lang.String[]
+int)
+
+public int getAttributeListValue(
+java.lang.String
+java.lang.String
+java.lang.String[]
+int)
+
+public java.lang.String getAttributeName(
+int)
+
+public int getAttributeNameResource(
+int)
+
+public java.lang.String getAttributeNamespace(
+int)
+
+public java.lang.String getAttributePrefix(
+int)
+
+public int getAttributeResourceValue(
+int
+int)
+
+public int getAttributeResourceValue(
+java.lang.String
+java.lang.String
+int)
+
+public java.lang.String getAttributeType(
+int)
+
+public int getAttributeUnsignedIntValue(
+int
+int)
+
+public int getAttributeUnsignedIntValue(
+java.lang.String
+java.lang.String
+int)
+
+public java.lang.String getAttributeValue(
+int)
+
+public java.lang.String getAttributeValue(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getClassAttribute()
+
+public int getColumnNumber()
+
+public int getDepth()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public int getEventType()
+
+public boolean getFeature(
+java.lang.String)
+
+public java.lang.String getIdAttribute()
+
+public int getIdAttributeResourceValue(
+int)
+
+public java.lang.String getInputEncoding()
+
+public int getLineNumber()
+
+public java.lang.String getName()
+
+public java.lang.String getNamespace()
+
+public java.lang.String getNamespace(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public int getNamespaceCount(
+int)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public java.lang.String getNamespacePrefix(
+int)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public java.lang.String getNamespaceUri(
+int)
+
+final java.lang.CharSequence getPooledString(
+int)
+
+public java.lang.String getPositionDescription()
+
+public java.lang.String getPrefix()
+
+public java.lang.Object getProperty(
+java.lang.String)
+
+public int getStyleAttribute()
+
+public java.lang.String getText()
+
+public char[] getTextCharacters(
+int[])
+
+public boolean isAttributeDefault(
+int)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public boolean isEmptyElementTag()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public boolean isWhitespace()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public int next()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public int nextTag()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public java.lang.String nextText()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public int nextToken()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void require(
+int
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void setFeature(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void setInput(
+java.io.InputStream
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void setInput(
+java.io.Reader)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void setProperty(
+java.lang.String
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/content/res/XmlBlock$Parser; )
+final class android.content.res.XmlBlock extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG
+
+private final android.content.res.AssetManager mAssets
+
+private final int mNative
+
+private boolean mOpen
+
+private int mOpenCount
+
+private final android.content.res.StringBlock mStrings
+----------------METHODS----------------
+
+ void <init>(
+android.content.res.AssetManager
+int)
+
+public void <init>(
+byte[])
+
+public void <init>(
+byte[]
+int
+int)
+
+static int access$008(
+android.content.res.XmlBlock)
+
+static int access$100(
+int)
+
+static int access$1000(
+int
+int)
+
+static int access$1100(
+int
+int)
+
+static int access$1200(
+int
+java.lang.String
+java.lang.String)
+
+static int access$1300(
+int)
+
+static int access$1400(
+int
+int)
+
+static int access$1500(
+int)
+
+static int access$1600(
+int)
+
+static int access$1700(
+int)
+
+static void access$1800(
+int)
+
+static void access$1900(
+android.content.res.XmlBlock)
+
+static android.content.res.StringBlock access$200(
+android.content.res.XmlBlock)
+
+static int access$300(
+int)
+
+static int access$400(
+int)
+
+static int access$500(
+int)
+
+static int access$600(
+int
+int)
+
+static int access$700(
+int
+int)
+
+static int access$800(
+int)
+
+static int access$900(
+int
+int)
+
+private void decOpenCountLocked()
+
+private static final native int nativeCreate(
+byte[]
+int
+int)
+
+private static final native int nativeCreateParseState(
+int)
+
+private static final native void nativeDestroy(
+int)
+
+private static final native void nativeDestroyParseState(
+int)
+
+private static final native int nativeGetAttributeCount(
+int)
+
+private static final native int nativeGetAttributeData(
+int
+int)
+
+private static final native int nativeGetAttributeDataType(
+int
+int)
+
+private static final native int nativeGetAttributeIndex(
+int
+java.lang.String
+java.lang.String)
+
+private static final native int nativeGetAttributeName(
+int
+int)
+
+private static final native int nativeGetAttributeNamespace(
+int
+int)
+
+private static final native int nativeGetAttributeResource(
+int
+int)
+
+private static final native int nativeGetAttributeStringValue(
+int
+int)
+
+private static final native int nativeGetClassAttribute(
+int)
+
+private static final native int nativeGetIdAttribute(
+int)
+
+private static final native int nativeGetLineNumber(
+int)
+
+private static final native int nativeGetName(
+int)
+
+private static final native int nativeGetNamespace(
+int)
+
+private static final native int nativeGetStringBlock(
+int)
+
+private static final native int nativeGetStyleAttribute(
+int)
+
+private static final native int nativeGetText(
+int)
+
+private static final native int nativeNext(
+int)
+
+public void close()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public android.content.res.XmlResourceParser newParser()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =12 name =SelfContentObserver )
+@dalvik.annotation.EnclosingClass (value =Landroid/database/AbstractCursor; )
+public class android.database.AbstractCursor$SelfContentObserver extends android.database.ContentObserver
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/lang/ref/WeakReference<Landroid/database/AbstractCursor;>; )
+ java.lang.ref.WeakReference mCursor
+----------------METHODS----------------
+
+public void <init>(
+android.database.AbstractCursor)
+
+public boolean deliverSelfNotifications()
+
+public void onChange(
+boolean)
+
+________________CLASS________________
+
+
+public abstract interface class android.database.CrossProcessCursor extends java.lang.Object implements android.database.Cursor
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void fillWindow(
+int
+android.database.CursorWindow)
+
+public abstract android.database.CursorWindow getWindow()
+
+public abstract boolean onMove(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/database/AbstractCursor$SelfContentObserver; )
+public abstract class android.database.AbstractCursor extends java.lang.Object implements android.database.CrossProcessCursor
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+protected boolean mClosed
+
+ android.database.ContentObservable mContentObservable
+
+protected android.content.ContentResolver mContentResolver
+
+protected java.lang.Long mCurrentRowID
+
+ android.database.DataSetObservable mDataSetObservable
+
+private android.net.Uri mNotifyUri
+
+protected int mPos
+
+protected int mRowIdColumnIndex
+
+private android.database.ContentObserver mSelfObserver
+
+private final java.lang.Object mSelfObserverLock
+
+private boolean mSelfObserverRegistered
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Long;Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;>; )
+protected java.util.HashMap mUpdatedRows
+----------------METHODS----------------
+
+public void <init>()
+
+public void abortUpdates()
+
+protected void checkPosition()
+
+public void close()
+
+public boolean commitUpdates()
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+Ljava/lang/Long;+Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;>;)Z )
+public boolean commitUpdates(
+java.util.Map)
+
+public void copyStringToBuffer(
+int
+android.database.CharArrayBuffer)
+
+public void deactivate()
+
+public void deactivateInternal()
+
+public boolean deleteRow()
+
+public void fillWindow(
+int
+android.database.CursorWindow)
+
+protected void finalize()
+
+public byte[] getBlob(
+int)
+
+public int getColumnCount()
+
+public int getColumnIndex(
+java.lang.String)
+
+public int getColumnIndexOrThrow(
+java.lang.String)
+
+public java.lang.String getColumnName(
+int)
+
+public abstract java.lang.String[] getColumnNames()
+
+public abstract int getCount()
+
+public abstract double getDouble(
+int)
+
+public android.os.Bundle getExtras()
+
+public abstract float getFloat(
+int)
+
+public abstract int getInt(
+int)
+
+public abstract long getLong(
+int)
+
+public final int getPosition()
+
+public abstract short getShort(
+int)
+
+public abstract java.lang.String getString(
+int)
+
+protected java.lang.Object getUpdatedField(
+int)
+
+public boolean getWantsAllOnMoveCalls()
+
+public android.database.CursorWindow getWindow()
+
+public boolean hasUpdates()
+
+public final boolean isAfterLast()
+
+public final boolean isBeforeFirst()
+
+public boolean isClosed()
+
+protected boolean isFieldUpdated(
+int)
+
+public final boolean isFirst()
+
+public final boolean isLast()
+
+public abstract boolean isNull(
+int)
+
+public final boolean move(
+int)
+
+public final boolean moveToFirst()
+
+public final boolean moveToLast()
+
+public final boolean moveToNext()
+
+public final boolean moveToPosition(
+int)
+
+public final boolean moveToPrevious()
+
+protected void onChange(
+boolean)
+
+public boolean onMove(
+int
+int)
+
+public void registerContentObserver(
+android.database.ContentObserver)
+
+public void registerDataSetObserver(
+android.database.DataSetObserver)
+
+public boolean requery()
+
+public android.os.Bundle respond(
+android.os.Bundle)
+
+public void setNotificationUri(
+android.content.ContentResolver
+android.net.Uri)
+
+public boolean supportsUpdates()
+
+public void unregisterContentObserver(
+android.database.ContentObserver)
+
+public void unregisterDataSetObserver(
+android.database.DataSetObserver)
+
+public boolean update(
+int
+java.lang.Object)
+
+public boolean updateBlob(
+int
+byte[])
+
+public boolean updateDouble(
+int
+double)
+
+public boolean updateFloat(
+int
+float)
+
+public boolean updateInt(
+int
+int)
+
+public boolean updateLong(
+int
+long)
+
+public boolean updateShort(
+int
+short)
+
+public boolean updateString(
+int
+java.lang.String)
+
+public boolean updateToNull(
+int)
+
+________________CLASS________________
+
+
+public abstract class android.database.AbstractWindowedCursor extends android.database.AbstractCursor
+
+----------------FIELDS----------------
+
+protected android.database.CursorWindow mWindow
+----------------METHODS----------------
+
+public void <init>()
+
+protected void checkPosition()
+
+public void copyStringToBuffer(
+int
+android.database.CharArrayBuffer)
+
+public byte[] getBlob(
+int)
+
+public double getDouble(
+int)
+
+public float getFloat(
+int)
+
+public int getInt(
+int)
+
+public long getLong(
+int)
+
+public short getShort(
+int)
+
+public java.lang.String getString(
+int)
+
+public android.database.CursorWindow getWindow()
+
+public boolean hasWindow()
+
+public boolean isBlob(
+int)
+
+public boolean isNull(
+int)
+
+public void setWindow(
+android.database.CursorWindow)
+
+________________CLASS________________
+
+
+public abstract interface class android.database.IBulkCursor extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+
+public static final int CLOSE_TRANSACTION
+
+public static final int COUNT_TRANSACTION
+
+public static final int DEACTIVATE_TRANSACTION
+
+public static final int DELETE_ROW_TRANSACTION
+
+public static final int GET_COLUMN_NAMES_TRANSACTION
+
+public static final int GET_CURSOR_WINDOW_TRANSACTION
+
+public static final int GET_EXTRAS_TRANSACTION
+
+public static final int ON_MOVE_TRANSACTION
+
+public static final int REQUERY_TRANSACTION
+
+public static final int RESPOND_TRANSACTION
+
+public static final int UPDATE_ROWS_TRANSACTION
+
+public static final int WANTS_ON_MOVE_TRANSACTION
+
+public static final java.lang.String descriptor
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void close()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int count()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void deactivate()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean deleteRow(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String[] getColumnNames()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.os.Bundle getExtras()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean getWantsAllOnMoveCalls()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.database.CursorWindow getWindow(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onMove(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int requery(
+android.database.IContentObserver
+android.database.CursorWindow)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.os.Bundle respond(
+android.os.Bundle)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+Ljava/lang/Long;+Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;>;)Z )
+public abstract boolean updateRows(
+java.util.Map)
+
+________________CLASS________________
+
+
+public abstract class android.database.BulkCursorNative extends android.os.Binder implements android.database.IBulkCursor
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.database.IBulkCursor asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+final class android.database.BulkCursorProxy extends java.lang.Object implements android.database.IBulkCursor
+
+----------------FIELDS----------------
+
+private android.os.Bundle mExtras
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+public void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void close()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int count()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void deactivate()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean deleteRow(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String[] getColumnNames()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.os.Bundle getExtras()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean getWantsAllOnMoveCalls()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.database.CursorWindow getWindow(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onMove(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int requery(
+android.database.IContentObserver
+android.database.CursorWindow)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.os.Bundle respond(
+android.os.Bundle)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean updateRows(
+java.util.Map)
+
+________________CLASS________________
+
+
+public final class android.database.BulkCursorToCursorAdaptor extends android.database.AbstractWindowedCursor
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private android.database.IBulkCursor mBulkCursor
+
+private java.lang.String[] mColumns
+
+private int mCount
+
+private android.database.AbstractCursor$SelfContentObserver mObserverBridge
+
+private boolean mWantsAllOnMoveCalls
+----------------METHODS----------------
+
+public void <init>()
+
+public void close()
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+Ljava/lang/Long;+Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;>;)Z )
+public boolean commitUpdates(
+java.util.Map)
+
+public void deactivate()
+
+public boolean deleteRow()
+
+public java.lang.String[] getColumnNames()
+
+public int getCount()
+
+public android.os.Bundle getExtras()
+
+public android.database.IContentObserver getObserver()
+
+public boolean onMove(
+int
+int)
+
+public boolean requery()
+
+public android.os.Bundle respond(
+android.os.Bundle)
+
+public void set(
+android.database.IBulkCursor)
+
+________________CLASS________________
+
+
+public final class android.database.CharArrayBuffer extends java.lang.Object
+
+----------------FIELDS----------------
+
+public char[] data
+
+public int sizeCopied
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+char[])
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract class android.database.Observable extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<TT;>; )
+protected final java.util.ArrayList mObservers
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =(TT;)V )
+public void registerObserver(
+java.lang.Object)
+
+public void unregisterAll()
+@dalvik.annotation.Signature (value =(TT;)V )
+public void unregisterObserver(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Landroid/database/Observable<Landroid/database/ContentObserver;>; )
+public class android.database.ContentObservable extends android.database.Observable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void dispatchChange(
+boolean)
+
+public void notifyChange(
+boolean)
+
+public void registerObserver(
+android.database.ContentObserver)
+
+public volatile void registerObserver(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =18 name =NotificationRunnable )
+@dalvik.annotation.EnclosingClass (value =Landroid/database/ContentObserver; )
+final class android.database.ContentObserver$NotificationRunnable extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private boolean mSelf
+
+final android.database.ContentObserver this$0
+----------------METHODS----------------
+
+public void <init>(
+android.database.ContentObserver
+boolean)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/database/IContentObserver$Stub; )
+public abstract interface class android.database.IContentObserver extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onChange(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.MemberClasses (value =Landroid/database/IContentObserver$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/database/IContentObserver; )
+public abstract class android.database.IContentObserver$Stub extends android.os.Binder implements android.database.IContentObserver
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_onChange
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.database.IContentObserver asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =Transport )
+@dalvik.annotation.EnclosingClass (value =Landroid/database/ContentObserver; )
+final class android.database.ContentObserver$Transport extends android.database.IContentObserver$Stub
+
+----------------FIELDS----------------
+
+ android.database.ContentObserver mContentObserver
+----------------METHODS----------------
+
+public void <init>(
+android.database.ContentObserver)
+
+public boolean deliverSelfNotifications()
+
+public void onChange(
+boolean)
+
+public void releaseContentObserver()
+
+________________CLASS________________
+
+
+public class android.database.CursorIndexOutOfBoundsException extends java.lang.IndexOutOfBoundsException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+int
+int)
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/database/CursorJoiner; )
+ class android.database.CursorJoiner$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$android$database$CursorJoiner$Result
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/database/CursorJoiner; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/database/CursorJoiner$Result;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Result )
+public final class android.database.CursorJoiner$Result extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.database.CursorJoiner$Result[] $VALUES
+
+public static final android.database.CursorJoiner$Result BOTH
+
+public static final android.database.CursorJoiner$Result LEFT
+
+public static final android.database.CursorJoiner$Result RIGHT
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.database.CursorJoiner$Result valueOf(
+java.lang.String)
+
+public static android.database.CursorJoiner$Result[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/database/CursorJoiner$1;Landroid/database/CursorJoiner$Result; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<Landroid/database/CursorJoiner$Result;>;Ljava/lang/Iterable<Landroid/database/CursorJoiner$Result;>; )
+public final class android.database.CursorJoiner extends java.lang.Object implements java.util.Iterator, java.lang.Iterable
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private int[] mColumnsLeft
+
+private int[] mColumnsRight
+
+private android.database.CursorJoiner$Result mCompareResult
+
+private boolean mCompareResultIsValid
+
+private android.database.Cursor mCursorLeft
+
+private android.database.Cursor mCursorRight
+
+private java.lang.String[] mValues
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.database.Cursor
+java.lang.String[]
+android.database.Cursor
+java.lang.String[])
+
+private int[] buildColumnIndiciesArray(
+android.database.Cursor
+java.lang.String[])
+
+private static transient int compareStrings(
+java.lang.String[])
+
+private void incrementCursors()
+
+private static void populateValues(
+java.lang.String[]
+android.database.Cursor
+int[]
+int)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Landroid/database/CursorJoiner$Result;>; )
+public java.util.Iterator iterator()
+
+public android.database.CursorJoiner$Result next()
+
+public volatile java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/database/CursorToBulkCursorAdaptor; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =ContentObserverProxy )
+final class android.database.CursorToBulkCursorAdaptor$ContentObserverProxy extends android.database.ContentObserver
+
+----------------FIELDS----------------
+
+protected android.database.IContentObserver mRemote
+----------------METHODS----------------
+
+public void <init>(
+android.database.IContentObserver
+android.os.IBinder$DeathRecipient)
+
+public boolean deliverSelfNotifications()
+
+public void onChange(
+boolean)
+
+public boolean unlinkToDeath(
+android.os.IBinder$DeathRecipient)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/database/CursorToBulkCursorAdaptor$ContentObserverProxy; )
+public final class android.database.CursorToBulkCursorAdaptor extends android.database.BulkCursorNative implements android.os.IBinder$DeathRecipient
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private final android.database.CrossProcessCursor mCursor
+
+private android.database.CursorToBulkCursorAdaptor$ContentObserverProxy mObserver
+
+private final java.lang.String mProviderName
+
+private final boolean mReadOnly
+
+private android.database.CursorWindow mWindow
+----------------METHODS----------------
+
+public void <init>(
+android.database.Cursor
+android.database.IContentObserver
+java.lang.String
+boolean
+android.database.CursorWindow)
+
+private void createAndRegisterObserverProxy(
+android.database.IContentObserver)
+
+private void maybeUnregisterObserverProxy()
+
+public void binderDied()
+
+public void close()
+
+public int count()
+
+public void deactivate()
+
+public boolean deleteRow(
+int)
+
+public java.lang.String[] getColumnNames()
+
+public android.os.Bundle getExtras()
+
+public boolean getWantsAllOnMoveCalls()
+
+public android.database.CursorWindow getWindow(
+int)
+
+public void onMove(
+int)
+
+public int requery(
+android.database.IContentObserver
+android.database.CursorWindow)
+
+public android.os.Bundle respond(
+android.os.Bundle)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+Ljava/lang/Long;+Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;>;)Z )
+public boolean updateRows(
+java.util.Map)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/database/CursorWindow;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/database/CursorWindow; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.database.CursorWindow$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.database.CursorWindow createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.database.CursorWindow[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public abstract class android.database.sqlite.SQLiteClosable extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.Object mLock
+
+private int mReferenceCount
+----------------METHODS----------------
+
+public void <init>()
+
+public void acquireReference()
+
+protected abstract void onAllReferencesReleased()
+
+protected void onAllReferencesReleasedFromContainer()
+
+public void releaseReference()
+
+public void releaseReferenceFromContainer()
+
+________________CLASS________________
+
+
+public class android.database.CursorWindow extends android.database.sqlite.SQLiteClosable implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/database/CursorWindow;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+private int mStartPos
+
+private int nWindow
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.database.CursorWindow$1)
+
+public void <init>(
+boolean)
+
+private native boolean allocRow_native()
+
+private native void close_native()
+
+private native char[] copyStringToBuffer_native(
+int
+int
+int
+android.database.CharArrayBuffer)
+
+private native void freeLastRow_native()
+
+private native byte[] getBlob_native(
+int
+int)
+
+private native double getDouble_native(
+int
+int)
+
+private native long getLong_native(
+int
+int)
+
+private native int getNumRows_native()
+
+private native java.lang.String getString_native(
+int
+int)
+
+private native boolean isBlob_native(
+int
+int)
+
+private native boolean isNull_native(
+int
+int)
+
+private native void native_clear()
+
+private native android.os.IBinder native_getBinder()
+
+private native void native_init(
+android.os.IBinder)
+
+private native void native_init(
+boolean)
+
+public static android.database.CursorWindow newFromParcel(
+android.os.Parcel)
+
+private native boolean putBlob_native(
+byte[]
+int
+int)
+
+private native boolean putDouble_native(
+double
+int
+int)
+
+private native boolean putLong_native(
+long
+int
+int)
+
+private native boolean putNull_native(
+int
+int)
+
+private native boolean putString_native(
+java.lang.String
+int
+int)
+
+private native boolean setNumColumns_native(
+int)
+
+public boolean allocRow()
+
+public void clear()
+
+public void close()
+
+public void copyStringToBuffer(
+int
+int
+android.database.CharArrayBuffer)
+
+public int describeContents()
+
+protected void finalize()
+
+public void freeLastRow()
+
+public byte[] getBlob(
+int
+int)
+
+public double getDouble(
+int
+int)
+
+public float getFloat(
+int
+int)
+
+public int getInt(
+int
+int)
+
+public long getLong(
+int
+int)
+
+public int getNumRows()
+
+public short getShort(
+int
+int)
+
+public int getStartPosition()
+
+public java.lang.String getString(
+int
+int)
+
+public boolean isBlob(
+int
+int)
+
+public boolean isNull(
+int
+int)
+
+protected void onAllReferencesReleased()
+
+public boolean putBlob(
+byte[]
+int
+int)
+
+public boolean putDouble(
+double
+int
+int)
+
+public boolean putLong(
+long
+int
+int)
+
+public boolean putNull(
+int
+int)
+
+public boolean putString(
+java.lang.String
+int
+int)
+
+public boolean setNumColumns(
+int)
+
+public void setStartPosition(
+int)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Landroid/database/Observable<Landroid/database/DataSetObserver;>; )
+public class android.database.DataSetObservable extends android.database.Observable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void notifyChanged()
+
+public void notifyInvalidated()
+
+________________CLASS________________
+
+
+public abstract class android.database.DataSetObserver extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void onChanged()
+
+public void onInvalidated()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =InsertHelper )
+@dalvik.annotation.EnclosingClass (value =Landroid/database/DatabaseUtils; )
+public class android.database.DatabaseUtils$InsertHelper extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int TABLE_INFO_PRAGMA_COLUMNNAME_INDEX
+
+public static final int TABLE_INFO_PRAGMA_DEFAULT_INDEX
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Integer;>; )
+private java.util.HashMap mColumns
+
+private final android.database.sqlite.SQLiteDatabase mDb
+
+private java.lang.String mInsertSQL
+
+private android.database.sqlite.SQLiteStatement mInsertStatement
+
+private android.database.sqlite.SQLiteStatement mPreparedStatement
+
+private android.database.sqlite.SQLiteStatement mReplaceStatement
+
+private final java.lang.String mTableName
+----------------METHODS----------------
+
+public void <init>(
+android.database.sqlite.SQLiteDatabase
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/database/SQLException; )
+private void buildSQL()
+@dalvik.annotation.Throws (value =Landroid/database/SQLException; )
+private android.database.sqlite.SQLiteStatement getStatement(
+boolean)
+
+private long insertInternal(
+android.content.ContentValues
+boolean)
+
+public void bind(
+int
+double)
+
+public void bind(
+int
+float)
+
+public void bind(
+int
+int)
+
+public void bind(
+int
+long)
+
+public void bind(
+int
+java.lang.String)
+
+public void bind(
+int
+boolean)
+
+public void bind(
+int
+byte[])
+
+public void bindNull(
+int)
+
+public void close()
+
+public long execute()
+
+public int getColumnIndex(
+java.lang.String)
+
+public long insert(
+android.content.ContentValues)
+
+public void prepareForInsert()
+
+public void prepareForReplace()
+
+public long replace(
+android.content.ContentValues)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/database/DatabaseUtils$InsertHelper; )
+public class android.database.DatabaseUtils extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG
+
+private static final boolean LOCAL_LOGV
+
+private static final java.lang.String TAG
+
+private static final java.lang.String[] countProjection
+
+private static java.text.Collator mColl
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@java.lang.Deprecated
+public static void appendEscapedSQLString(
+java.lang.StringBuilder
+java.lang.String)
+
+public static final void appendValueToSql(
+java.lang.StringBuilder
+java.lang.Object)
+
+public static void bindObjectToProgram(
+android.database.sqlite.SQLiteProgram
+int
+java.lang.Object)
+
+public static void createDbFromSqlStatements(
+android.content.Context
+java.lang.String
+int
+java.lang.String)
+
+public static void cursorDoubleToContentValues(
+android.database.Cursor
+java.lang.String
+android.content.ContentValues
+java.lang.String)
+
+public static void cursorDoubleToCursorValues(
+android.database.Cursor
+java.lang.String
+android.content.ContentValues)
+
+public static void cursorIntToContentValues(
+android.database.Cursor
+java.lang.String
+android.content.ContentValues)
+
+public static void cursorIntToContentValues(
+android.database.Cursor
+java.lang.String
+android.content.ContentValues
+java.lang.String)
+
+public static void cursorLongToContentValues(
+android.database.Cursor
+java.lang.String
+android.content.ContentValues)
+
+public static void cursorLongToContentValues(
+android.database.Cursor
+java.lang.String
+android.content.ContentValues
+java.lang.String)
+
+public static void cursorRowToContentValues(
+android.database.Cursor
+android.content.ContentValues)
+
+public static void cursorStringToContentValues(
+android.database.Cursor
+java.lang.String
+android.content.ContentValues)
+
+public static void cursorStringToContentValues(
+android.database.Cursor
+java.lang.String
+android.content.ContentValues
+java.lang.String)
+
+public static void cursorStringToInsertHelper(
+android.database.Cursor
+java.lang.String
+android.database.DatabaseUtils$InsertHelper
+int)
+
+public static void dumpCurrentRow(
+android.database.Cursor)
+
+public static void dumpCurrentRow(
+android.database.Cursor
+java.io.PrintStream)
+
+public static void dumpCurrentRow(
+android.database.Cursor
+java.lang.StringBuilder)
+
+public static java.lang.String dumpCurrentRowToString(
+android.database.Cursor)
+
+public static void dumpCursor(
+android.database.Cursor)
+
+public static void dumpCursor(
+android.database.Cursor
+java.io.PrintStream)
+
+public static void dumpCursor(
+android.database.Cursor
+java.lang.StringBuilder)
+
+public static java.lang.String dumpCursorToString(
+android.database.Cursor)
+
+public static java.lang.String getCollationKey(
+java.lang.String)
+
+private static byte[] getCollationKeyInBytes(
+java.lang.String)
+
+public static java.lang.String getHexCollationKey(
+java.lang.String)
+
+private static int getKeyLen(
+byte[])
+
+public static long longForQuery(
+android.database.sqlite.SQLiteDatabase
+java.lang.String
+java.lang.String[])
+
+public static long longForQuery(
+android.database.sqlite.SQLiteStatement
+java.lang.String[])
+
+public static long queryNumEntries(
+android.database.sqlite.SQLiteDatabase
+java.lang.String)
+
+public static final void readExceptionFromParcel(
+android.os.Parcel)
+
+private static final void readExceptionFromParcel(
+android.os.Parcel
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public static void readExceptionWithFileNotFoundExceptionFromParcel(
+android.os.Parcel)
+
+public static java.lang.String sqlEscapeString(
+java.lang.String)
+
+public static java.lang.String stringForQuery(
+android.database.sqlite.SQLiteDatabase
+java.lang.String
+java.lang.String[])
+
+public static java.lang.String stringForQuery(
+android.database.sqlite.SQLiteStatement
+java.lang.String[])
+
+public static final void writeExceptionToParcel(
+android.os.Parcel
+java.lang.Exception)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/database/IContentObserver$Stub; )
+ class android.database.IContentObserver$Stub$Proxy extends java.lang.Object implements android.database.IContentObserver
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onChange(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1 name =RowBuilder )
+@dalvik.annotation.EnclosingClass (value =Landroid/database/MatrixCursor; )
+public class android.database.MatrixCursor$RowBuilder extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int endIndex
+
+private int index
+
+final android.database.MatrixCursor this$0
+----------------METHODS----------------
+
+ void <init>(
+android.database.MatrixCursor
+int
+int)
+
+public android.database.MatrixCursor$RowBuilder add(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/database/MatrixCursor$RowBuilder; )
+public class android.database.MatrixCursor extends android.database.AbstractCursor
+
+----------------FIELDS----------------
+
+private final int columnCount
+
+private final java.lang.String[] columnNames
+
+private java.lang.Object[] data
+
+private int rowCount
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String[])
+
+public void <init>(
+java.lang.String[]
+int)
+
+static java.lang.Object[] access$000(
+android.database.MatrixCursor)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<*>;I)V )
+private void addRow(
+java.util.ArrayList
+int)
+
+private void ensureCapacity(
+int)
+
+private java.lang.Object get(
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/Iterable<*>;)V )
+public void addRow(
+java.lang.Iterable)
+
+public void addRow(
+java.lang.Object[])
+
+public java.lang.String[] getColumnNames()
+
+public int getCount()
+
+public double getDouble(
+int)
+
+public float getFloat(
+int)
+
+public int getInt(
+int)
+
+public long getLong(
+int)
+
+public short getShort(
+int)
+
+public java.lang.String getString(
+int)
+
+public boolean isNull(
+int)
+
+public android.database.MatrixCursor$RowBuilder newRow()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/database/MergeCursor; )
+ class android.database.MergeCursor$1 extends android.database.DataSetObserver
+
+----------------FIELDS----------------
+
+final android.database.MergeCursor this$0
+----------------METHODS----------------
+
+ void <init>(
+android.database.MergeCursor)
+
+public void onChanged()
+
+public void onInvalidated()
+
+________________CLASS________________
+
+
+public class android.database.MergeCursor extends android.database.AbstractCursor
+
+----------------FIELDS----------------
+
+private android.database.Cursor mCursor
+
+private android.database.Cursor[] mCursors
+
+private android.database.DataSetObserver mObserver
+----------------METHODS----------------
+
+public void <init>(
+android.database.Cursor[])
+
+public void close()
+
+public boolean commitUpdates()
+
+public void deactivate()
+
+public boolean deleteRow()
+
+public byte[] getBlob(
+int)
+
+public java.lang.String[] getColumnNames()
+
+public int getCount()
+
+public double getDouble(
+int)
+
+public float getFloat(
+int)
+
+public int getInt(
+int)
+
+public long getLong(
+int)
+
+public short getShort(
+int)
+
+public java.lang.String getString(
+int)
+
+public boolean isNull(
+int)
+
+public boolean onMove(
+int
+int)
+
+public void registerContentObserver(
+android.database.ContentObserver)
+
+public void registerDataSetObserver(
+android.database.DataSetObserver)
+
+public boolean requery()
+
+public void unregisterContentObserver(
+android.database.ContentObserver)
+
+public void unregisterDataSetObserver(
+android.database.DataSetObserver)
+
+________________CLASS________________
+
+
+public class android.database.SQLException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.database.StaleDataException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.database.sqlite.SQLiteException extends android.database.SQLException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.database.sqlite.SQLiteAbortException extends android.database.sqlite.SQLiteException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.database.sqlite.SQLiteConstraintException extends android.database.sqlite.SQLiteException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.database.sqlite.SQLiteCursor extends android.database.AbstractWindowedCursor
+
+----------------FIELDS----------------
+
+static final int NO_COUNT
+
+static final java.lang.String TAG
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/Integer;>; )
+private java.util.Map mColumnNameMap
+
+private java.lang.String[] mColumns
+
+private int mCount
+
+private android.database.sqlite.SQLiteDatabase mDatabase
+
+private android.database.sqlite.SQLiteCursorDriver mDriver
+
+private java.lang.String mEditTable
+
+private android.database.sqlite.SQLiteQuery mQuery
+
+private java.lang.StackTraceElement[] mStackTraceElements
+----------------METHODS----------------
+
+public void <init>(
+android.database.sqlite.SQLiteDatabase
+android.database.sqlite.SQLiteCursorDriver
+java.lang.String
+android.database.sqlite.SQLiteQuery)
+
+private void deactivateCommon()
+
+private void fillWindow(
+int)
+
+public void close()
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+Ljava/lang/Long;+Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;>;)Z )
+public boolean commitUpdates(
+java.util.Map)
+
+public void deactivate()
+
+public boolean deleteRow()
+
+protected void finalize()
+
+public int getColumnIndex(
+java.lang.String)
+
+public java.lang.String[] getColumnNames()
+
+public int getCount()
+
+public android.database.sqlite.SQLiteDatabase getDatabase()
+
+public boolean onMove(
+int
+int)
+
+public boolean requery()
+
+public void setSelectionArguments(
+java.lang.String[])
+
+public void setWindow(
+android.database.CursorWindow)
+
+public boolean supportsUpdates()
+
+________________CLASS________________
+
+
+public abstract interface class android.database.sqlite.SQLiteCursorDriver extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void cursorClosed()
+
+public abstract void cursorDeactivated()
+
+public abstract void cursorRequeried(
+android.database.Cursor)
+
+public abstract android.database.Cursor query(
+android.database.sqlite.SQLiteDatabase$CursorFactory
+java.lang.String[])
+
+public abstract void setBindArguments(
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/database/sqlite/SQLiteDatabase; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =CursorFactory )
+public abstract interface class android.database.sqlite.SQLiteDatabase$CursorFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.database.Cursor newCursor(
+android.database.sqlite.SQLiteDatabase
+android.database.sqlite.SQLiteCursorDriver
+java.lang.String
+android.database.sqlite.SQLiteQuery)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =SyncUpdateInfo )
+@dalvik.annotation.EnclosingClass (value =Landroid/database/sqlite/SQLiteDatabase; )
+ class android.database.sqlite.SQLiteDatabase$SyncUpdateInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.lang.String deletedTable
+
+ java.lang.String foreignKey
+
+ java.lang.String masterTable
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/sqlite/SQLiteDatabase$SyncUpdateInfo; )
+public class android.database.sqlite.SQLiteDatabase extends android.database.sqlite.SQLiteClosable
+
+----------------FIELDS----------------
+
+public static final int CREATE_IF_NECESSARY
+
+private static final int LOCK_ACQUIRED_WARNING_THREAD_TIME_IN_MS
+
+private static final int LOCK_ACQUIRED_WARNING_TIME_IN_MS
+
+private static final int LOCK_ACQUIRED_WARNING_TIME_IN_MS_ALWAYS_PRINT
+
+private static final int LOCK_WARNING_WINDOW_IN_MS
+
+public static final int NO_LOCALIZED_COLLATORS
+
+public static final int OPEN_READONLY
+
+public static final int OPEN_READWRITE
+
+private static final int OPEN_READ_MASK
+
+public static final int SQLITE_MAX_LIKE_PATTERN_LENGTH
+
+private static final java.lang.String TAG
+
+private android.database.sqlite.SQLiteDatabase$CursorFactory mFactory
+
+private int mFlags
+
+private boolean mInnerTransactionIsSuccessful
+
+private long mLastLockMessageTime
+
+private final java.lang.RuntimeException mLeakedException
+
+private final java.util.concurrent.locks.ReentrantLock mLock
+
+private long mLockAcquiredThreadTime
+
+private long mLockAcquiredWallTime
+
+private boolean mLockingEnabled
+
+ int mNativeHandle
+
+private java.lang.String mPath
+@dalvik.annotation.Signature (value =Ljava/util/WeakHashMap<Landroid/database/sqlite/SQLiteClosable;Ljava/lang/Object;>; )
+private java.util.WeakHashMap mPrograms
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$SyncUpdateInfo;>; )
+private final java.util.Map mSyncUpdateInfo
+
+ int mTempTableSequence
+
+private boolean mTransactionIsSuccessful
+----------------METHODS----------------
+
+private void <init>(
+java.lang.String
+android.database.sqlite.SQLiteDatabase$CursorFactory
+int)
+
+private void checkLockHoldTime()
+
+private void closeClosable()
+
+public static android.database.sqlite.SQLiteDatabase create(
+android.database.sqlite.SQLiteDatabase$CursorFactory)
+
+private native void dbclose()
+
+private native void dbopen(
+java.lang.String
+int)
+
+public static java.lang.String findEditTable(
+java.lang.String)
+
+private long insertOrReplace(
+java.lang.String
+java.lang.String
+android.content.ContentValues
+boolean)
+
+private void lockForced()
+
+private void markTableSyncable(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public static android.database.sqlite.SQLiteDatabase openDatabase(
+java.lang.String
+android.database.sqlite.SQLiteDatabase$CursorFactory
+int)
+
+public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(
+java.io.File
+android.database.sqlite.SQLiteDatabase$CursorFactory)
+
+public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(
+java.lang.String
+android.database.sqlite.SQLiteDatabase$CursorFactory)
+
+public static native int releaseMemory()
+
+private void unlockForced()
+
+ void addSQLiteClosable(
+android.database.sqlite.SQLiteClosable)
+
+public void beginTransaction()
+
+public void close()
+@dalvik.annotation.Throws (value =Landroid/database/SQLException; )
+public android.database.sqlite.SQLiteStatement compileStatement(
+java.lang.String)
+
+public int delete(
+java.lang.String
+java.lang.String
+java.lang.String[])
+
+public void endTransaction()
+@dalvik.annotation.Throws (value =Landroid/database/SQLException; )
+public void execSQL(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/database/SQLException; )
+public void execSQL(
+java.lang.String
+java.lang.Object[])
+
+protected void finalize()
+
+public long getMaximumSize()
+
+public long getPageSize()
+
+public final java.lang.String getPath()
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+public java.util.Map getSyncedTables()
+
+public int getVersion()
+
+public boolean inTransaction()
+
+public long insert(
+java.lang.String
+java.lang.String
+android.content.ContentValues)
+@dalvik.annotation.Throws (value =Landroid/database/SQLException; )
+public long insertOrThrow(
+java.lang.String
+java.lang.String
+android.content.ContentValues)
+
+public boolean isDbLockedByCurrentThread()
+
+public boolean isDbLockedByOtherThreads()
+
+public boolean isOpen()
+
+public boolean isReadOnly()
+
+native int lastChangeCount()
+
+native long lastInsertRow()
+
+ void lock()
+
+public void markTableSyncable(
+java.lang.String
+java.lang.String)
+
+public void markTableSyncable(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/database/SQLException; )
+native void native_execSQL(
+java.lang.String)
+
+native void native_setLocale(
+java.lang.String
+int)
+
+public boolean needUpgrade(
+int)
+
+protected void onAllReferencesReleased()
+
+ void onCorruption()
+
+public android.database.Cursor query(
+java.lang.String
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public android.database.Cursor query(
+java.lang.String
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public android.database.Cursor query(
+boolean
+java.lang.String
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public android.database.Cursor queryWithFactory(
+android.database.sqlite.SQLiteDatabase$CursorFactory
+boolean
+java.lang.String
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public android.database.Cursor rawQuery(
+java.lang.String
+java.lang.String[])
+
+public android.database.Cursor rawQueryWithFactory(
+android.database.sqlite.SQLiteDatabase$CursorFactory
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+ void removeSQLiteClosable(
+android.database.sqlite.SQLiteClosable)
+
+public long replace(
+java.lang.String
+java.lang.String
+android.content.ContentValues)
+@dalvik.annotation.Throws (value =Landroid/database/SQLException; )
+public long replaceOrThrow(
+java.lang.String
+java.lang.String
+android.content.ContentValues)
+
+ void rowUpdated(
+java.lang.String
+long)
+
+public void setLocale(
+java.util.Locale)
+
+public void setLockingEnabled(
+boolean)
+
+public long setMaximumSize(
+long)
+
+public void setPageSize(
+long)
+
+public void setTransactionSuccessful()
+
+public void setVersion(
+int)
+
+ void unlock()
+
+public int update(
+java.lang.String
+android.content.ContentValues
+java.lang.String
+java.lang.String[])
+
+public boolean yieldIfContended()
+
+________________CLASS________________
+
+
+public class android.database.sqlite.SQLiteDatabaseCorruptException extends android.database.sqlite.SQLiteException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/database/sqlite/SQLiteDebug; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PagerStats )
+public class android.database.sqlite.SQLiteDebug$PagerStats extends java.lang.Object
+
+----------------FIELDS----------------
+
+public long databaseBytes
+
+public int numPagers
+
+public long referencedBytes
+
+public long totalBytes
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/database/sqlite/SQLiteDebug$PagerStats; )
+public final class android.database.sqlite.SQLiteDebug extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final boolean DEBUG_ACTIVE_CURSOR_FINALIZATION
+
+public static final boolean DEBUG_LOCK_TIME_TRACKING
+
+public static final boolean DEBUG_LOCK_TIME_TRACKING_STACK_TRACE
+
+public static final boolean DEBUG_SQL_STATEMENTS
+
+private static int sNumActiveCursorsFinalized
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static native long getHeapAllocatedSize()
+
+public static native void getHeapDirtyPages(
+int[])
+
+public static native long getHeapFreeSize()
+
+public static native long getHeapSize()
+
+public static int getNumActiveCursorsFinalized()
+
+public static native void getPagerStats(
+android.database.sqlite.SQLiteDebug$PagerStats)
+
+static void notifyActiveCursorFinalized()
+
+________________CLASS________________
+
+
+public class android.database.sqlite.SQLiteDirectCursorDriver extends java.lang.Object implements android.database.sqlite.SQLiteCursorDriver
+
+----------------FIELDS----------------
+
+private static java.lang.String TAG
+
+private android.database.Cursor mCursor
+
+private android.database.sqlite.SQLiteDatabase mDatabase
+
+private java.lang.String mEditTable
+
+private android.database.sqlite.SQLiteQuery mQuery
+
+private java.lang.String mSql
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.database.sqlite.SQLiteDatabase
+java.lang.String
+java.lang.String)
+
+public void cursorClosed()
+
+public void cursorDeactivated()
+
+public void cursorRequeried(
+android.database.Cursor)
+
+public android.database.Cursor query(
+android.database.sqlite.SQLiteDatabase$CursorFactory
+java.lang.String[])
+
+public void setBindArguments(
+java.lang.String[])
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class android.database.sqlite.SQLiteDiskIOException extends android.database.sqlite.SQLiteException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.database.sqlite.SQLiteDoneException extends android.database.sqlite.SQLiteException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.database.sqlite.SQLiteFullException extends android.database.sqlite.SQLiteException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.database.sqlite.SQLiteMisuseException extends android.database.sqlite.SQLiteException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class android.database.sqlite.SQLiteProgram extends android.database.sqlite.SQLiteClosable
+
+----------------FIELDS----------------
+
+static final java.lang.String TAG
+
+protected android.database.sqlite.SQLiteDatabase mDatabase
+
+private java.lang.StackTraceElement[] mStackTraceElements
+
+protected int nHandle
+
+protected int nStatement
+----------------METHODS----------------
+
+ void <init>(
+android.database.sqlite.SQLiteDatabase
+java.lang.String)
+
+private final native void native_clear_bindings()
+
+public void bindBlob(
+int
+byte[])
+
+public void bindDouble(
+int
+double)
+
+public void bindLong(
+int
+long)
+
+public void bindNull(
+int)
+
+public void bindString(
+int
+java.lang.String)
+
+public void clearBindings()
+
+public void close()
+
+protected void compile(
+java.lang.String
+boolean)
+
+protected void finalize()
+
+public final int getUniqueId()
+
+protected final native void native_bind_blob(
+int
+byte[])
+
+protected final native void native_bind_double(
+int
+double)
+
+protected final native void native_bind_long(
+int
+long)
+
+protected final native void native_bind_null(
+int)
+
+protected final native void native_bind_string(
+int
+java.lang.String)
+
+protected final native void native_compile(
+java.lang.String)
+
+protected final native void native_finalize()
+
+protected void onAllReferencesReleased()
+
+protected void onAllReferencesReleasedFromContainer()
+
+________________CLASS________________
+
+
+public class android.database.sqlite.SQLiteQuery extends android.database.sqlite.SQLiteProgram
+
+----------------FIELDS----------------
+
+private java.lang.String[] mBindArgs
+
+private boolean mClosed
+
+private int mOffsetIndex
+
+private java.lang.String mQuery
+----------------METHODS----------------
+
+ void <init>(
+android.database.sqlite.SQLiteDatabase
+java.lang.String
+int
+java.lang.String[])
+
+private final native int native_column_count()
+
+private final native java.lang.String native_column_name(
+int)
+
+private final native int native_fill_window(
+android.database.CursorWindow
+int
+int)
+
+public void bindDouble(
+int
+double)
+
+public void bindLong(
+int
+long)
+
+public void bindNull(
+int)
+
+public void bindString(
+int
+java.lang.String)
+
+public void close()
+
+ int columnCountLocked()
+
+ java.lang.String columnNameLocked(
+int)
+
+ int fillWindow(
+android.database.CursorWindow
+int)
+
+ void requery()
+
+________________CLASS________________
+
+
+public class android.database.sqlite.SQLiteQueryBuilder extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private boolean mDistinct
+
+private android.database.sqlite.SQLiteDatabase$CursorFactory mFactory
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+private java.util.Map mProjectionMap
+
+private java.lang.String mTables
+
+private java.lang.StringBuilder mWhereClause
+----------------METHODS----------------
+
+public void <init>()
+
+private static void appendClause(
+java.lang.StringBuilder
+java.lang.String
+java.lang.String)
+
+private static void appendClauseEscapeClause(
+java.lang.StringBuilder
+java.lang.String
+java.lang.String)
+
+public static void appendColumns(
+java.lang.StringBuilder
+java.lang.String[])
+
+public static java.lang.String buildQueryString(
+boolean
+java.lang.String
+java.lang.String[]
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private java.lang.String[] computeProjection(
+java.lang.String[])
+
+public void appendWhere(
+java.lang.CharSequence)
+
+public void appendWhereEscapeString(
+java.lang.String)
+
+public java.lang.String buildQuery(
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public java.lang.String buildUnionQuery(
+java.lang.String[]
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;[Ljava/lang/String;Ljava/util/Set<Ljava/lang/String;>;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; )
+public java.lang.String buildUnionSubQuery(
+java.lang.String
+java.lang.String[]
+java.util.Set
+int
+java.lang.String
+java.lang.String
+java.lang.String[]
+java.lang.String
+java.lang.String)
+
+public java.lang.String getTables()
+
+public android.database.Cursor query(
+android.database.sqlite.SQLiteDatabase
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public android.database.Cursor query(
+android.database.sqlite.SQLiteDatabase
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public void setCursorFactory(
+android.database.sqlite.SQLiteDatabase$CursorFactory)
+
+public void setDistinct(
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)V )
+public void setProjectionMap(
+java.util.Map)
+
+public void setTables(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.database.sqlite.SQLiteStatement extends android.database.sqlite.SQLiteProgram
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+android.database.sqlite.SQLiteDatabase
+java.lang.String)
+
+private final native long native_1x1_long()
+
+private final native java.lang.String native_1x1_string()
+
+private final native void native_execute()
+
+public void execute()
+
+public long executeInsert()
+
+public long simpleQueryForLong()
+
+public java.lang.String simpleQueryForString()
+
+________________CLASS________________
+
+
+public class android.ddm.DdmHandleAppName extends org.apache.harmony.dalvik.ddmc.ChunkHandler
+
+----------------FIELDS----------------
+
+public static final int CHUNK_APNM
+
+private static volatile java.lang.String mAppName
+
+private static android.ddm.DdmHandleAppName mInstance
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static java.lang.String getAppName()
+
+public static void register()
+
+private static void sendAPNM(
+java.lang.String)
+
+public static void setAppName(
+java.lang.String)
+
+public void connected()
+
+public void disconnected()
+
+public org.apache.harmony.dalvik.ddmc.Chunk handleChunk(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+________________CLASS________________
+
+
+public class android.ddm.DdmHandleExit extends org.apache.harmony.dalvik.ddmc.ChunkHandler
+
+----------------FIELDS----------------
+
+public static final int CHUNK_EXIT
+
+private static android.ddm.DdmHandleExit mInstance
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static void register()
+
+public void connected()
+
+public void disconnected()
+
+public org.apache.harmony.dalvik.ddmc.Chunk handleChunk(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+________________CLASS________________
+
+
+public class android.ddm.DdmHandleHeap extends org.apache.harmony.dalvik.ddmc.ChunkHandler
+
+----------------FIELDS----------------
+
+public static final int CHUNK_HPGC
+
+public static final int CHUNK_HPIF
+
+public static final int CHUNK_HPSG
+
+public static final int CHUNK_NHSG
+
+public static final int CHUNK_REAE
+
+public static final int CHUNK_REAL
+
+public static final int CHUNK_REAQ
+
+private static android.ddm.DdmHandleHeap mInstance
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+private org.apache.harmony.dalvik.ddmc.Chunk handleHPGC(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+private org.apache.harmony.dalvik.ddmc.Chunk handleHPIF(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+private org.apache.harmony.dalvik.ddmc.Chunk handleHPSGNHSG(
+org.apache.harmony.dalvik.ddmc.Chunk
+boolean)
+
+private org.apache.harmony.dalvik.ddmc.Chunk handleREAE(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+private org.apache.harmony.dalvik.ddmc.Chunk handleREAL(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+private org.apache.harmony.dalvik.ddmc.Chunk handleREAQ(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+public static void register()
+
+public void connected()
+
+public void disconnected()
+
+public org.apache.harmony.dalvik.ddmc.Chunk handleChunk(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+________________CLASS________________
+
+
+public class android.ddm.DdmHandleHello extends org.apache.harmony.dalvik.ddmc.ChunkHandler
+
+----------------FIELDS----------------
+
+public static final int CHUNK_HELO
+
+public static final int CHUNK_WAIT
+
+private static android.ddm.DdmHandleHello mInstance
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static void register()
+
+public static void sendWAIT(
+int)
+
+public void connected()
+
+public void disconnected()
+
+public org.apache.harmony.dalvik.ddmc.Chunk handleChunk(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+________________CLASS________________
+
+
+public class android.ddm.DdmHandleNativeHeap extends org.apache.harmony.dalvik.ddmc.ChunkHandler
+
+----------------FIELDS----------------
+
+public static final int CHUNK_NHGT
+
+private static android.ddm.DdmHandleNativeHeap mInstance
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+private native byte[] getLeakInfo()
+
+private org.apache.harmony.dalvik.ddmc.Chunk handleNHGT(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+public static void register()
+
+public void connected()
+
+public void disconnected()
+
+public org.apache.harmony.dalvik.ddmc.Chunk handleChunk(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+________________CLASS________________
+
+
+public class android.ddm.DdmHandleThread extends org.apache.harmony.dalvik.ddmc.ChunkHandler
+
+----------------FIELDS----------------
+
+public static final int CHUNK_STKL
+
+public static final int CHUNK_THCR
+
+public static final int CHUNK_THDE
+
+public static final int CHUNK_THEN
+
+public static final int CHUNK_THST
+
+private static android.ddm.DdmHandleThread mInstance
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+private org.apache.harmony.dalvik.ddmc.Chunk createStackChunk(
+java.lang.StackTraceElement[]
+int)
+
+private org.apache.harmony.dalvik.ddmc.Chunk handleSTKL(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+private org.apache.harmony.dalvik.ddmc.Chunk handleTHEN(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+private org.apache.harmony.dalvik.ddmc.Chunk handleTHST(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+public static void register()
+
+public void connected()
+
+public void disconnected()
+
+public org.apache.harmony.dalvik.ddmc.Chunk handleChunk(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+________________CLASS________________
+
+
+public class android.ddm.DdmRegister extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static void registerHandlers()
+
+________________CLASS________________
+
+
+public class android.debug.JNITest extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+private native int part1(
+int
+double
+java.lang.String
+int[])
+
+private int part2(
+double
+int
+java.lang.String)
+
+private static native int part3(
+java.lang.String)
+
+public int test(
+int
+double
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.drm.mobile1.DrmConstraintInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int count
+
+private long endDate
+
+private long interval
+
+private long startDate
+----------------METHODS----------------
+
+ void <init>()
+
+public int getCount()
+
+public java.util.Date getEndDate()
+
+public long getInterval()
+
+public java.util.Date getStartDate()
+
+________________CLASS________________
+
+
+public class android.drm.mobile1.DrmException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/drm/mobile1/DrmRawContent; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =DrmInputStream )
+ class android.drm.mobile1.DrmRawContent$DrmInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+private byte[] b
+
+private boolean isClosed
+
+private int offset
+
+final android.drm.mobile1.DrmRawContent this$0
+----------------METHODS----------------
+
+public void <init>(
+android.drm.mobile1.DrmRawContent
+android.drm.mobile1.DrmRights)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+
+public void close()
+
+public void mark(
+int)
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/drm/mobile1/DrmRawContent$DrmInputStream; )
+public class android.drm.mobile1.DrmRawContent extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int DRM_COMBINED_DELIVERY
+
+public static final int DRM_FORWARD_LOCK
+
+private static final int DRM_MIMETYPE_CONTENT
+
+public static final java.lang.String DRM_MIMETYPE_CONTENT_STRING
+
+private static final int DRM_MIMETYPE_MESSAGE
+
+public static final java.lang.String DRM_MIMETYPE_MESSAGE_STRING
+
+public static final int DRM_SEPARATE_DELIVERY
+
+public static final int DRM_SEPARATE_DELIVERY_DM
+
+public static final int DRM_UNKNOWN_DATA_LEN
+
+private static final int JNI_DRM_EOF
+
+private static final int JNI_DRM_FAILURE
+
+private static final int JNI_DRM_SUCCESS
+
+private static final int JNI_DRM_UNKNOWN_DATA_LEN
+
+private int id
+
+private java.io.BufferedInputStream inData
+
+private int inDataLen
+
+private java.lang.String mediaType
+
+private int rawType
+
+private java.lang.String rightsIssuer
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Landroid/drm/mobile1/DrmException;Ljava/io/IOException; )
+public void <init>(
+java.io.InputStream
+int
+java.lang.String)
+
+static int access$000(
+android.drm.mobile1.DrmRawContent)
+
+static int access$100(
+android.drm.mobile1.DrmRawContent
+byte[]
+int
+int
+int)
+
+private native int nativeConstructDrmContent(
+java.io.InputStream
+int
+int)
+
+private native int nativeGetContentLength()
+
+private native java.lang.String nativeGetContentType()
+
+private native int nativeGetDeliveryMethod()
+
+private native java.lang.String nativeGetRightsAddress()
+
+private native int nativeReadContent(
+byte[]
+int
+int
+int)
+
+protected native void finalize()
+
+public java.io.InputStream getContentInputStream(
+android.drm.mobile1.DrmRights)
+@dalvik.annotation.Throws (value =Landroid/drm/mobile1/DrmException; )
+public int getContentLength(
+android.drm.mobile1.DrmRights)
+
+public java.lang.String getContentType()
+
+public int getRawType()
+
+public java.lang.String getRightsAddress()
+
+________________CLASS________________
+
+
+public class android.drm.mobile1.DrmRights extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int DRM_PERMISSION_DISPLAY
+
+public static final int DRM_PERMISSION_EXECUTE
+
+public static final int DRM_PERMISSION_PLAY
+
+public static final int DRM_PERMISSION_PRINT
+
+private static final int JNI_DRM_FAILURE
+
+private static final int JNI_DRM_SUCCESS
+
+private java.lang.String roId
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private native int nativeConsumeRights(
+int)
+
+private native int nativeGetConstraintInfo(
+int
+android.drm.mobile1.DrmConstraintInfo)
+
+public boolean consumeRights(
+int)
+
+public android.drm.mobile1.DrmConstraintInfo getConstraint(
+int)
+
+________________CLASS________________
+
+
+public class android.drm.mobile1.DrmRightsManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int DRM_MIMETYPE_MESSAGE
+
+private static final int DRM_MIMETYPE_RIGHTS_WBXML
+
+public static final java.lang.String DRM_MIMETYPE_RIGHTS_WBXML_STRING
+
+private static final int DRM_MIMETYPE_RIGHTS_XML
+
+public static final java.lang.String DRM_MIMETYPE_RIGHTS_XML_STRING
+
+private static final int JNI_DRM_FAILURE
+
+private static final int JNI_DRM_SUCCESS
+
+private static android.drm.mobile1.DrmRightsManager singleton
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>()
+
+public static android.drm.mobile1.DrmRightsManager getInstance()
+
+private native int nativeDeleteRights(
+android.drm.mobile1.DrmRights)
+
+private native int nativeGetNumOfRights()
+
+private native int nativeGetRightsList(
+android.drm.mobile1.DrmRights[]
+int)
+
+private native int nativeInstallDrmRights(
+java.io.InputStream
+int
+int
+android.drm.mobile1.DrmRights)
+
+private native int nativeQueryRights(
+android.drm.mobile1.DrmRawContent
+android.drm.mobile1.DrmRights)
+
+public void deleteRights(
+android.drm.mobile1.DrmRights)
+
+public java.util.List getRightsList()
+@dalvik.annotation.Throws (value =Landroid/drm/mobile1/DrmException;Ljava/io/IOException; )
+public android.drm.mobile1.DrmRights installRights(
+java.io.InputStream
+int
+java.lang.String)
+
+public android.drm.mobile1.DrmRights queryRights(
+android.drm.mobile1.DrmRawContent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/AvoidXfermode; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/AvoidXfermode$Mode;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Mode )
+public final class android.graphics.AvoidXfermode$Mode extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.AvoidXfermode$Mode[] $VALUES
+
+public static final android.graphics.AvoidXfermode$Mode AVOID
+
+public static final android.graphics.AvoidXfermode$Mode TARGET
+
+final int nativeInt
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.graphics.AvoidXfermode$Mode valueOf(
+java.lang.String)
+
+public static android.graphics.AvoidXfermode$Mode[] values()
+
+________________CLASS________________
+
+
+public class android.graphics.Xfermode extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int native_instance
+----------------METHODS----------------
+
+public void <init>()
+
+private static native void finalizer(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/AvoidXfermode$Mode; )
+public class android.graphics.AvoidXfermode extends android.graphics.Xfermode
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+int
+int
+android.graphics.AvoidXfermode$Mode)
+
+private static native int nativeCreate(
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/graphics/Bitmap;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Bitmap; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.graphics.Bitmap$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.graphics.Bitmap createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.graphics.Bitmap[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Bitmap; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/Bitmap$CompressFormat;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =CompressFormat )
+public final class android.graphics.Bitmap$CompressFormat extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.Bitmap$CompressFormat[] $VALUES
+
+public static final android.graphics.Bitmap$CompressFormat JPEG
+
+public static final android.graphics.Bitmap$CompressFormat PNG
+
+final int nativeInt
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.graphics.Bitmap$CompressFormat valueOf(
+java.lang.String)
+
+public static android.graphics.Bitmap$CompressFormat[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Config )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/Bitmap$Config;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Bitmap; )
+public final class android.graphics.Bitmap$Config extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.Bitmap$Config[] $VALUES
+
+public static final android.graphics.Bitmap$Config ALPHA_8
+
+public static final android.graphics.Bitmap$Config ARGB_4444
+
+public static final android.graphics.Bitmap$Config ARGB_8888
+
+public static final android.graphics.Bitmap$Config RGB_565
+
+private static android.graphics.Bitmap$Config[] sConfigs
+
+final int nativeInt
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+static android.graphics.Bitmap$Config nativeToConfig(
+int)
+
+public static android.graphics.Bitmap$Config valueOf(
+java.lang.String)
+
+public static android.graphics.Bitmap$Config[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/Bitmap$CompressFormat;Landroid/graphics/Bitmap$Config; )
+public final class android.graphics.Bitmap extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/graphics/Bitmap;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+private static final int WORKING_COMPRESS_STORAGE
+
+private static volatile android.graphics.Matrix sScaleMatrix
+
+private int mHeight
+
+private final boolean mIsMutable
+
+private final int mNativeBitmap
+
+private byte[] mNinePatchChunk
+
+private boolean mRecycled
+
+private int mWidth
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+int
+boolean
+byte[])
+
+static android.graphics.Bitmap access$000(
+android.os.Parcel)
+
+private void checkPixelAccess(
+int
+int)
+
+private void checkPixelsAccess(
+int
+int
+int
+int
+int
+int
+int[])
+
+private void checkRecycled(
+java.lang.String)
+
+private static void checkWidthHeight(
+int
+int)
+
+private static void checkXYSign(
+int
+int)
+
+public static android.graphics.Bitmap createBitmap(
+int
+int
+android.graphics.Bitmap$Config)
+
+public static android.graphics.Bitmap createBitmap(
+android.graphics.Bitmap)
+
+public static android.graphics.Bitmap createBitmap(
+android.graphics.Bitmap
+int
+int
+int
+int)
+
+public static android.graphics.Bitmap createBitmap(
+android.graphics.Bitmap
+int
+int
+int
+int
+android.graphics.Matrix
+boolean)
+
+public static android.graphics.Bitmap createBitmap(
+int[]
+int
+int
+int
+int
+android.graphics.Bitmap$Config)
+
+public static android.graphics.Bitmap createBitmap(
+int[]
+int
+int
+android.graphics.Bitmap$Config)
+
+public static android.graphics.Bitmap createScaledBitmap(
+android.graphics.Bitmap
+int
+int
+boolean)
+
+private static native boolean nativeCompress(
+int
+int
+int
+java.io.OutputStream
+byte[])
+
+private static native int nativeConfig(
+int)
+
+private static native android.graphics.Bitmap nativeCopy(
+int
+int
+boolean)
+
+private static native void nativeCopyPixelsToBuffer(
+int
+java.nio.Buffer)
+
+private static native android.graphics.Bitmap nativeCreate(
+int[]
+int
+int
+int
+int
+int
+boolean)
+
+private static native android.graphics.Bitmap nativeCreateFromParcel(
+android.os.Parcel)
+
+private static native void nativeDestructor(
+int)
+
+private static native void nativeErase(
+int
+int)
+
+private static native android.graphics.Bitmap nativeExtractAlpha(
+int
+int
+int[])
+
+private static native int nativeGetPixel(
+int
+int
+int)
+
+private static native void nativeGetPixels(
+int
+int[]
+int
+int
+int
+int
+int
+int)
+
+private static native boolean nativeHasAlpha(
+int)
+
+private static native int nativeHeight(
+int)
+
+private static native void nativeRecycle(
+int)
+
+private static native int nativeRowBytes(
+int)
+
+private static native void nativeSetPixel(
+int
+int
+int
+int)
+
+private static native void nativeSetPixels(
+int
+int[]
+int
+int
+int
+int
+int
+int)
+
+private static native int nativeWidth(
+int)
+
+private static native boolean nativeWriteToParcel(
+int
+boolean
+android.os.Parcel)
+
+public boolean compress(
+android.graphics.Bitmap$CompressFormat
+int
+java.io.OutputStream)
+
+public android.graphics.Bitmap copy(
+android.graphics.Bitmap$Config
+boolean)
+
+public void copyPixelsToBuffer(
+java.nio.Buffer)
+
+public int describeContents()
+
+public void eraseColor(
+int)
+
+public android.graphics.Bitmap extractAlpha()
+
+public android.graphics.Bitmap extractAlpha(
+android.graphics.Paint
+int[])
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public final android.graphics.Bitmap$Config getConfig()
+
+public final int getHeight()
+
+public byte[] getNinePatchChunk()
+
+public int getPixel(
+int
+int)
+
+public void getPixels(
+int[]
+int
+int
+int
+int
+int
+int)
+
+public final int getRowBytes()
+
+public final int getWidth()
+
+public final boolean hasAlpha()
+
+public final boolean isMutable()
+
+public final boolean isRecycled()
+
+final int ni()
+
+public void recycle()
+
+public void setPixel(
+int
+int
+int)
+
+public void setPixels(
+int[]
+int
+int
+int
+int
+int
+int)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Options )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/BitmapFactory; )
+public class android.graphics.BitmapFactory$Options extends java.lang.Object
+
+----------------FIELDS----------------
+
+public boolean inDither
+
+public boolean inJustDecodeBounds
+
+public android.graphics.Bitmap$Config inPreferredConfig
+
+public int inSampleSize
+
+public byte[] inTempStorage
+
+public boolean mCancel
+
+public int outHeight
+
+public java.lang.String outMimeType
+
+public int outWidth
+----------------METHODS----------------
+
+public void <init>()
+
+private native void requestCancel()
+
+public void requestCancelDecode()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/BitmapFactory$Options; )
+public class android.graphics.BitmapFactory extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG_LOAD
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.graphics.Bitmap decodeByteArray(
+byte[]
+int
+int)
+
+public static android.graphics.Bitmap decodeByteArray(
+byte[]
+int
+int
+android.graphics.BitmapFactory$Options)
+
+public static android.graphics.Bitmap decodeFile(
+java.lang.String)
+
+public static android.graphics.Bitmap decodeFile(
+java.lang.String
+android.graphics.BitmapFactory$Options)
+
+public static android.graphics.Bitmap decodeFileDescriptor(
+java.io.FileDescriptor)
+
+public static android.graphics.Bitmap decodeFileDescriptor(
+java.io.FileDescriptor
+android.graphics.Rect
+android.graphics.BitmapFactory$Options)
+
+public static android.graphics.Bitmap decodeResource(
+android.content.res.Resources
+int)
+
+public static android.graphics.Bitmap decodeResource(
+android.content.res.Resources
+int
+android.graphics.BitmapFactory$Options)
+
+public static android.graphics.Bitmap decodeStream(
+java.io.InputStream)
+
+public static android.graphics.Bitmap decodeStream(
+java.io.InputStream
+android.graphics.Rect
+android.graphics.BitmapFactory$Options)
+
+private static native android.graphics.Bitmap nativeDecodeAsset(
+int
+android.graphics.Rect
+android.graphics.BitmapFactory$Options)
+
+private static native android.graphics.Bitmap nativeDecodeByteArray(
+byte[]
+int
+int
+android.graphics.BitmapFactory$Options)
+
+private static native android.graphics.Bitmap nativeDecodeFileDescriptor(
+java.io.FileDescriptor
+android.graphics.Rect
+android.graphics.BitmapFactory$Options)
+
+private static native android.graphics.Bitmap nativeDecodeStream(
+java.io.InputStream
+byte[]
+android.graphics.Rect
+android.graphics.BitmapFactory$Options)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/Shader$TileMode; )
+public class android.graphics.Shader extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int native_instance
+----------------METHODS----------------
+
+public void <init>()
+
+private static native void nativeDestructor(
+int)
+
+private static native boolean nativeGetLocalMatrix(
+int
+int)
+
+private static native void nativeSetLocalMatrix(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public boolean getLocalMatrix(
+android.graphics.Matrix)
+
+public void setLocalMatrix(
+android.graphics.Matrix)
+
+________________CLASS________________
+
+
+public class android.graphics.BitmapShader extends android.graphics.Shader
+
+----------------FIELDS----------------
+
+private android.graphics.Bitmap mBitmap
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.Bitmap
+android.graphics.Shader$TileMode
+android.graphics.Shader$TileMode)
+
+private static native int nativeCreate(
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/BlurMaskFilter$Blur;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/BlurMaskFilter; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Blur )
+public final class android.graphics.BlurMaskFilter$Blur extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.BlurMaskFilter$Blur[] $VALUES
+
+public static final android.graphics.BlurMaskFilter$Blur INNER
+
+public static final android.graphics.BlurMaskFilter$Blur NORMAL
+
+public static final android.graphics.BlurMaskFilter$Blur OUTER
+
+public static final android.graphics.BlurMaskFilter$Blur SOLID
+
+final int native_int
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.graphics.BlurMaskFilter$Blur valueOf(
+java.lang.String)
+
+public static android.graphics.BlurMaskFilter$Blur[] values()
+
+________________CLASS________________
+
+
+public class android.graphics.MaskFilter extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int native_instance
+----------------METHODS----------------
+
+public void <init>()
+
+private static native void nativeDestructor(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/BlurMaskFilter$Blur; )
+public class android.graphics.BlurMaskFilter extends android.graphics.MaskFilter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+float
+android.graphics.BlurMaskFilter$Blur)
+
+private static native int nativeConstructor(
+float
+int)
+
+________________CLASS________________
+
+
+public class android.graphics.Camera extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int native_instance
+----------------METHODS----------------
+
+public void <init>()
+
+private native void nativeApplyToCanvas(
+int)
+
+private native void nativeConstructor()
+
+private native void nativeDestructor()
+
+private native void nativeGetMatrix(
+int)
+
+public void applyToCanvas(
+android.graphics.Canvas)
+
+public native float dotWithNormal(
+float
+float
+float)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public void getMatrix(
+android.graphics.Matrix)
+
+public native void restore()
+
+public native void rotateX(
+float)
+
+public native void rotateY(
+float)
+
+public native void rotateZ(
+float)
+
+public native void save()
+
+public native void translate(
+float
+float
+float)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =EdgeType )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Canvas; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/Canvas$EdgeType;>; )
+public final class android.graphics.Canvas$EdgeType extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.Canvas$EdgeType[] $VALUES
+
+public static final android.graphics.Canvas$EdgeType AA
+
+public static final android.graphics.Canvas$EdgeType BW
+
+final int nativeInt
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.graphics.Canvas$EdgeType valueOf(
+java.lang.String)
+
+public static android.graphics.Canvas$EdgeType[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/Canvas$VertexMode;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Canvas; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =VertexMode )
+public final class android.graphics.Canvas$VertexMode extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.Canvas$VertexMode[] $VALUES
+
+public static final android.graphics.Canvas$VertexMode TRIANGLES
+
+public static final android.graphics.Canvas$VertexMode TRIANGLE_FAN
+
+public static final android.graphics.Canvas$VertexMode TRIANGLE_STRIP
+
+final int nativeInt
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.graphics.Canvas$VertexMode valueOf(
+java.lang.String)
+
+public static android.graphics.Canvas$VertexMode[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/Canvas$VertexMode;Landroid/graphics/Canvas$EdgeType; )
+public class android.graphics.Canvas extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ALL_SAVE_FLAG
+
+public static final int CLIP_SAVE_FLAG
+
+public static final int CLIP_TO_LAYER_SAVE_FLAG
+
+public static final int FULL_COLOR_LAYER_SAVE_FLAG
+
+public static final int HAS_ALPHA_LAYER_SAVE_FLAG
+
+public static final int MATRIX_SAVE_FLAG
+
+private android.graphics.Bitmap mBitmap
+
+private android.graphics.DrawFilter mDrawFilter
+
+private javax.microedition.khronos.opengles.GL mGL
+
+final int mNativeCanvas
+
+private int mSurfaceFormat
+----------------METHODS----------------
+
+public void <init>()
+
+ void <init>(
+int)
+
+public void <init>(
+android.graphics.Bitmap)
+
+public void <init>(
+javax.microedition.khronos.opengles.GL)
+
+private static void checkRange(
+int
+int
+int)
+
+private static native void finalizer(
+int)
+
+public static native void freeGlCaches()
+
+private static native int initGL()
+
+private static native int initRaster(
+int)
+
+private static native void nativeDrawBitmapMatrix(
+int
+int
+int
+int)
+
+private static native void nativeDrawBitmapMesh(
+int
+int
+int
+int
+float[]
+int
+int[]
+int
+int)
+
+private static native void nativeDrawVertices(
+int
+int
+int
+float[]
+int
+float[]
+int
+int[]
+int
+short[]
+int
+int
+int)
+
+private static native void nativeSetDrawFilter(
+int
+int)
+
+private static native void nativeSetViewport(
+int
+int
+int)
+
+private static native boolean native_clipPath(
+int
+int
+int)
+
+private static native boolean native_clipRect(
+int
+float
+float
+float
+float
+int)
+
+private static native boolean native_clipRegion(
+int
+int
+int)
+
+private static native void native_concat(
+int
+int)
+
+private static native void native_drawARGB(
+int
+int
+int
+int
+int)
+
+private static native void native_drawArc(
+int
+android.graphics.RectF
+float
+float
+boolean
+int)
+
+private static native void native_drawBitmap(
+int
+int
+float
+float
+int)
+
+private static native void native_drawBitmap(
+int
+int
+android.graphics.Rect
+android.graphics.Rect
+int)
+
+private static native void native_drawBitmap(
+int
+int
+android.graphics.Rect
+android.graphics.RectF
+int)
+
+private static native void native_drawBitmap(
+int
+int[]
+int
+int
+int
+int
+int
+int
+boolean
+int)
+
+private static native void native_drawCircle(
+int
+float
+float
+float
+int)
+
+private static native void native_drawColor(
+int
+int)
+
+private static native void native_drawColor(
+int
+int
+int)
+
+private static native void native_drawLine(
+int
+float
+float
+float
+float
+int)
+
+private static native void native_drawOval(
+int
+android.graphics.RectF
+int)
+
+private static native void native_drawPaint(
+int
+int)
+
+private static native void native_drawPath(
+int
+int
+int)
+
+private static native void native_drawPicture(
+int
+int)
+
+private static native void native_drawPosText(
+int
+java.lang.String
+float[]
+int)
+
+private static native void native_drawPosText(
+int
+char[]
+int
+int
+float[]
+int)
+
+private static native void native_drawRGB(
+int
+int
+int
+int)
+
+private static native void native_drawRect(
+int
+float
+float
+float
+float
+int)
+
+private static native void native_drawRect(
+int
+android.graphics.RectF
+int)
+
+private static native void native_drawRoundRect(
+int
+android.graphics.RectF
+float
+float
+int)
+
+private static native void native_drawText(
+int
+java.lang.String
+int
+int
+float
+float
+int)
+
+private static native void native_drawText(
+int
+char[]
+int
+int
+float
+float
+int)
+
+private static native void native_drawTextOnPath(
+int
+java.lang.String
+int
+float
+float
+int)
+
+private static native void native_drawTextOnPath(
+int
+char[]
+int
+int
+int
+float
+float
+int)
+
+private static native void native_getCTM(
+int
+int)
+
+private static native boolean native_getClipBounds(
+int
+android.graphics.Rect)
+
+private static native boolean native_quickReject(
+int
+float
+float
+float
+float
+int)
+
+private static native boolean native_quickReject(
+int
+int
+int)
+
+private static native boolean native_quickReject(
+int
+android.graphics.RectF
+int)
+
+private static native int native_saveLayer(
+int
+float
+float
+float
+float
+int
+int)
+
+private static native int native_saveLayer(
+int
+android.graphics.RectF
+int
+int)
+
+private static native int native_saveLayerAlpha(
+int
+float
+float
+float
+float
+int
+int)
+
+private static native int native_saveLayerAlpha(
+int
+android.graphics.RectF
+int
+int)
+
+private static native void native_setBitmap(
+int
+int)
+
+private static native void native_setMatrix(
+int
+int)
+
+private static void throwIfRecycled(
+android.graphics.Bitmap)
+
+public boolean clipPath(
+android.graphics.Path)
+
+public boolean clipPath(
+android.graphics.Path
+android.graphics.Region$Op)
+
+public native boolean clipRect(
+float
+float
+float
+float)
+
+public boolean clipRect(
+float
+float
+float
+float
+android.graphics.Region$Op)
+
+public native boolean clipRect(
+int
+int
+int
+int)
+
+public native boolean clipRect(
+android.graphics.Rect)
+
+public boolean clipRect(
+android.graphics.Rect
+android.graphics.Region$Op)
+
+public native boolean clipRect(
+android.graphics.RectF)
+
+public boolean clipRect(
+android.graphics.RectF
+android.graphics.Region$Op)
+
+public boolean clipRegion(
+android.graphics.Region)
+
+public boolean clipRegion(
+android.graphics.Region
+android.graphics.Region$Op)
+
+public void concat(
+android.graphics.Matrix)
+
+public void drawARGB(
+int
+int
+int
+int)
+
+public void drawArc(
+android.graphics.RectF
+float
+float
+boolean
+android.graphics.Paint)
+
+public void drawBitmap(
+android.graphics.Bitmap
+float
+float
+android.graphics.Paint)
+
+public void drawBitmap(
+android.graphics.Bitmap
+android.graphics.Matrix
+android.graphics.Paint)
+
+public void drawBitmap(
+android.graphics.Bitmap
+android.graphics.Rect
+android.graphics.Rect
+android.graphics.Paint)
+
+public void drawBitmap(
+android.graphics.Bitmap
+android.graphics.Rect
+android.graphics.RectF
+android.graphics.Paint)
+
+public void drawBitmap(
+int[]
+int
+int
+int
+int
+int
+int
+boolean
+android.graphics.Paint)
+
+public void drawBitmapMesh(
+android.graphics.Bitmap
+int
+int
+float[]
+int
+int[]
+int
+android.graphics.Paint)
+
+public void drawCircle(
+float
+float
+float
+android.graphics.Paint)
+
+public void drawColor(
+int)
+
+public void drawColor(
+int
+android.graphics.PorterDuff$Mode)
+
+public void drawLine(
+float
+float
+float
+float
+android.graphics.Paint)
+
+public native void drawLines(
+float[]
+int
+int
+android.graphics.Paint)
+
+public void drawLines(
+float[]
+android.graphics.Paint)
+
+public void drawOval(
+android.graphics.RectF
+android.graphics.Paint)
+
+public void drawPaint(
+android.graphics.Paint)
+
+public void drawPath(
+android.graphics.Path
+android.graphics.Paint)
+
+public void drawPicture(
+android.graphics.Picture)
+
+public void drawPicture(
+android.graphics.Picture
+android.graphics.Rect)
+
+public void drawPicture(
+android.graphics.Picture
+android.graphics.RectF)
+
+public native void drawPoint(
+float
+float
+android.graphics.Paint)
+
+public native void drawPoints(
+float[]
+int
+int
+android.graphics.Paint)
+
+public void drawPoints(
+float[]
+android.graphics.Paint)
+
+public void drawPosText(
+java.lang.String
+float[]
+android.graphics.Paint)
+
+public void drawPosText(
+char[]
+int
+int
+float[]
+android.graphics.Paint)
+
+public void drawRGB(
+int
+int
+int)
+
+public void drawRect(
+float
+float
+float
+float
+android.graphics.Paint)
+
+public void drawRect(
+android.graphics.Rect
+android.graphics.Paint)
+
+public void drawRect(
+android.graphics.RectF
+android.graphics.Paint)
+
+public void drawRoundRect(
+android.graphics.RectF
+float
+float
+android.graphics.Paint)
+
+public void drawText(
+java.lang.CharSequence
+int
+int
+float
+float
+android.graphics.Paint)
+
+public native void drawText(
+java.lang.String
+float
+float
+android.graphics.Paint)
+
+public void drawText(
+java.lang.String
+int
+int
+float
+float
+android.graphics.Paint)
+
+public void drawText(
+char[]
+int
+int
+float
+float
+android.graphics.Paint)
+
+public void drawTextOnPath(
+java.lang.String
+android.graphics.Path
+float
+float
+android.graphics.Paint)
+
+public void drawTextOnPath(
+char[]
+int
+int
+android.graphics.Path
+float
+float
+android.graphics.Paint)
+
+public void drawVertices(
+android.graphics.Canvas$VertexMode
+int
+float[]
+int
+float[]
+int
+int[]
+int
+short[]
+int
+int
+android.graphics.Paint)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public final android.graphics.Rect getClipBounds()
+
+public boolean getClipBounds(
+android.graphics.Rect)
+
+public android.graphics.DrawFilter getDrawFilter()
+
+public javax.microedition.khronos.opengles.GL getGL()
+
+public native int getHeight()
+
+public final android.graphics.Matrix getMatrix()
+
+public void getMatrix(
+android.graphics.Matrix)
+
+public native int getSaveCount()
+
+public native int getWidth()
+
+public native boolean isOpaque()
+
+public boolean quickReject(
+float
+float
+float
+float
+android.graphics.Canvas$EdgeType)
+
+public boolean quickReject(
+android.graphics.Path
+android.graphics.Canvas$EdgeType)
+
+public boolean quickReject(
+android.graphics.RectF
+android.graphics.Canvas$EdgeType)
+
+public native void restore()
+
+public native void restoreToCount(
+int)
+
+public native void rotate(
+float)
+
+public final void rotate(
+float
+float
+float)
+
+public native int save()
+
+public native int save(
+int)
+
+public int saveLayer(
+float
+float
+float
+float
+android.graphics.Paint
+int)
+
+public int saveLayer(
+android.graphics.RectF
+android.graphics.Paint
+int)
+
+public int saveLayerAlpha(
+float
+float
+float
+float
+int
+int)
+
+public int saveLayerAlpha(
+android.graphics.RectF
+int
+int)
+
+public native void scale(
+float
+float)
+
+public final void scale(
+float
+float
+float
+float)
+
+public void setBitmap(
+android.graphics.Bitmap)
+
+public void setDrawFilter(
+android.graphics.DrawFilter)
+
+public void setMatrix(
+android.graphics.Matrix)
+
+public void setViewport(
+int
+int)
+
+public native void skew(
+float
+float)
+
+public native void translate(
+float
+float)
+
+________________CLASS________________
+
+
+public class android.graphics.Color extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int BLACK
+
+public static final int BLUE
+
+public static final int CYAN
+
+public static final int DKGRAY
+
+public static final int GRAY
+
+public static final int GREEN
+
+public static final int LTGRAY
+
+public static final int MAGENTA
+
+public static final int RED
+
+public static final int TRANSPARENT
+
+public static final int WHITE
+
+public static final int YELLOW
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Integer;>; )
+private static final java.util.HashMap sColorNameMap
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static int HSVToColor(
+int
+float[])
+
+public static int HSVToColor(
+float[])
+
+public static void RGBToHSV(
+int
+int
+int
+float[])
+
+public static int alpha(
+int)
+
+public static int argb(
+int
+int
+int
+int)
+
+public static int blue(
+int)
+
+public static void colorToHSV(
+int
+float[])
+
+public static int green(
+int)
+
+private static native int nativeHSVToColor(
+int
+float[])
+
+private static native void nativeRGBToHSV(
+int
+int
+int
+float[])
+
+public static int parseColor(
+java.lang.String)
+
+public static int red(
+int)
+
+public static int rgb(
+int
+int
+int)
+
+________________CLASS________________
+
+
+public class android.graphics.ColorFilter extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int native_instance
+----------------METHODS----------------
+
+public void <init>()
+
+private static native void finalizer(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+________________CLASS________________
+
+
+public class android.graphics.ColorMatrix extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final float[] mArray
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+android.graphics.ColorMatrix)
+
+public void <init>(
+float[])
+
+public final float[] getArray()
+
+public void postConcat(
+android.graphics.ColorMatrix)
+
+public void preConcat(
+android.graphics.ColorMatrix)
+
+public void reset()
+
+public void set(
+android.graphics.ColorMatrix)
+
+public void set(
+float[])
+
+public void setConcat(
+android.graphics.ColorMatrix
+android.graphics.ColorMatrix)
+
+public void setRGB2YUV()
+
+public void setRotate(
+int
+float)
+
+public void setSaturation(
+float)
+
+public void setScale(
+float
+float
+float
+float)
+
+public void setYUV2RGB()
+
+________________CLASS________________
+
+
+public class android.graphics.ColorMatrixColorFilter extends android.graphics.ColorFilter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.ColorMatrix)
+
+public void <init>(
+float[])
+
+private static native int nativeColorMatrixFilter(
+float[])
+
+________________CLASS________________
+
+
+public class android.graphics.PathEffect extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int native_instance
+----------------METHODS----------------
+
+public void <init>()
+
+private static native void nativeDestructor(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+________________CLASS________________
+
+
+public class android.graphics.ComposePathEffect extends android.graphics.PathEffect
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.PathEffect
+android.graphics.PathEffect)
+
+private static native int nativeCreate(
+int
+int)
+
+________________CLASS________________
+
+
+public class android.graphics.ComposeShader extends android.graphics.Shader
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.Shader
+android.graphics.Shader
+android.graphics.PorterDuff$Mode)
+
+public void <init>(
+android.graphics.Shader
+android.graphics.Shader
+android.graphics.Xfermode)
+
+private static native int nativeCreate1(
+int
+int
+int)
+
+private static native int nativeCreate2(
+int
+int
+int)
+
+________________CLASS________________
+
+
+public class android.graphics.CornerPathEffect extends android.graphics.PathEffect
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+float)
+
+private static native int nativeCreate(
+float)
+
+________________CLASS________________
+
+
+public class android.graphics.DashPathEffect extends android.graphics.PathEffect
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+float[]
+float)
+
+private static native int nativeCreate(
+float[]
+float)
+
+________________CLASS________________
+
+
+public class android.graphics.DiscretePathEffect extends android.graphics.PathEffect
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+float
+float)
+
+private static native int nativeCreate(
+float
+float)
+
+________________CLASS________________
+
+
+public class android.graphics.DrawFilter extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int mNativeInt
+----------------METHODS----------------
+
+public void <init>()
+
+private static native void nativeDestructor(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+________________CLASS________________
+
+
+public class android.graphics.EmbossMaskFilter extends android.graphics.MaskFilter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+float[]
+float
+float
+float)
+
+private static native int nativeConstructor(
+float[]
+float
+float
+float)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/Interpolator$Result;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Interpolator; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Result )
+public final class android.graphics.Interpolator$Result extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.Interpolator$Result[] $VALUES
+
+public static final android.graphics.Interpolator$Result FREEZE_END
+
+public static final android.graphics.Interpolator$Result FREEZE_START
+
+public static final android.graphics.Interpolator$Result NORMAL
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.graphics.Interpolator$Result valueOf(
+java.lang.String)
+
+public static android.graphics.Interpolator$Result[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/Interpolator$Result; )
+public class android.graphics.Interpolator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int mFrameCount
+
+private int mValueCount
+
+private final int native_instance
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+int
+int)
+
+private static native int nativeConstructor(
+int
+int)
+
+private static native void nativeDestructor(
+int)
+
+private static native void nativeReset(
+int
+int
+int)
+
+private static native void nativeSetKeyFrame(
+int
+int
+int
+float[]
+float[])
+
+private static native void nativeSetRepeatMirror(
+int
+float
+boolean)
+
+private static native int nativeTimeToValues(
+int
+int
+float[])
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public final int getKeyFrameCount()
+
+public final int getValueCount()
+
+public void reset(
+int)
+
+public void reset(
+int
+int)
+
+public void setKeyFrame(
+int
+int
+float[])
+
+public void setKeyFrame(
+int
+int
+float[]
+float[])
+
+public void setRepeatMirror(
+float
+boolean)
+
+public android.graphics.Interpolator$Result timeToValues(
+int
+float[])
+
+public android.graphics.Interpolator$Result timeToValues(
+float[])
+
+________________CLASS________________
+
+
+public class android.graphics.Rasterizer extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int native_instance
+----------------METHODS----------------
+
+public void <init>()
+
+private static native void finalizer(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+________________CLASS________________
+
+
+public class android.graphics.LayerRasterizer extends android.graphics.Rasterizer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+private static native void nativeAddLayer(
+int
+int
+float
+float)
+
+private static native int nativeConstructor()
+
+public void addLayer(
+android.graphics.Paint)
+
+public void addLayer(
+android.graphics.Paint
+float
+float)
+
+________________CLASS________________
+
+
+public class android.graphics.LightingColorFilter extends android.graphics.ColorFilter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+int
+int)
+
+private static native int native_CreateLightingFilter(
+int
+int)
+
+________________CLASS________________
+
+
+public class android.graphics.LinearGradient extends android.graphics.Shader
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+float
+float
+float
+float
+int
+int
+android.graphics.Shader$TileMode)
+
+public void <init>(
+float
+float
+float
+float
+int[]
+float[]
+android.graphics.Shader$TileMode)
+
+private static native int nativeCreate1(
+float
+float
+float
+float
+int[]
+float[]
+int)
+
+private static native int nativeCreate2(
+float
+float
+float
+float
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Matrix; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =ScaleToFit )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/Matrix$ScaleToFit;>; )
+public final class android.graphics.Matrix$ScaleToFit extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.Matrix$ScaleToFit[] $VALUES
+
+public static final android.graphics.Matrix$ScaleToFit CENTER
+
+public static final android.graphics.Matrix$ScaleToFit END
+
+public static final android.graphics.Matrix$ScaleToFit FILL
+
+public static final android.graphics.Matrix$ScaleToFit START
+
+final int nativeInt
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.graphics.Matrix$ScaleToFit valueOf(
+java.lang.String)
+
+public static android.graphics.Matrix$ScaleToFit[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/Matrix$ScaleToFit; )
+public class android.graphics.Matrix extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int MPERSP_0
+
+public static final int MPERSP_1
+
+public static final int MPERSP_2
+
+public static final int MSCALE_X
+
+public static final int MSCALE_Y
+
+public static final int MSKEW_X
+
+public static final int MSKEW_Y
+
+public static final int MTRANS_X
+
+public static final int MTRANS_Y
+
+ int native_instance
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+android.graphics.Matrix)
+
+private static void checkPointArrays(
+float[]
+int
+float[]
+int
+int)
+
+private static native void finalizer(
+int)
+
+private static native int native_create(
+int)
+
+private static native boolean native_equals(
+int
+int)
+
+private static native void native_getValues(
+int
+float[])
+
+private static native boolean native_invert(
+int
+int)
+
+private static native boolean native_isIdentity(
+int)
+
+private static native void native_mapPoints(
+int
+float[]
+int
+float[]
+int
+int
+boolean)
+
+private static native float native_mapRadius(
+int
+float)
+
+private static native boolean native_mapRect(
+int
+android.graphics.RectF
+android.graphics.RectF)
+
+private static native boolean native_postConcat(
+int
+int)
+
+private static native boolean native_postRotate(
+int
+float)
+
+private static native boolean native_postRotate(
+int
+float
+float
+float)
+
+private static native boolean native_postScale(
+int
+float
+float)
+
+private static native boolean native_postScale(
+int
+float
+float
+float
+float)
+
+private static native boolean native_postSkew(
+int
+float
+float)
+
+private static native boolean native_postSkew(
+int
+float
+float
+float
+float)
+
+private static native boolean native_postTranslate(
+int
+float
+float)
+
+private static native boolean native_preConcat(
+int
+int)
+
+private static native boolean native_preRotate(
+int
+float)
+
+private static native boolean native_preRotate(
+int
+float
+float
+float)
+
+private static native boolean native_preScale(
+int
+float
+float)
+
+private static native boolean native_preScale(
+int
+float
+float
+float
+float)
+
+private static native boolean native_preSkew(
+int
+float
+float)
+
+private static native boolean native_preSkew(
+int
+float
+float
+float
+float)
+
+private static native boolean native_preTranslate(
+int
+float
+float)
+
+private static native boolean native_rectStaysRect(
+int)
+
+private static native void native_reset(
+int)
+
+private static native void native_set(
+int
+int)
+
+private static native boolean native_setConcat(
+int
+int
+int)
+
+private static native boolean native_setPolyToPoly(
+int
+float[]
+int
+float[]
+int
+int)
+
+private static native boolean native_setRectToRect(
+int
+android.graphics.RectF
+android.graphics.RectF
+int)
+
+private static native void native_setRotate(
+int
+float)
+
+private static native void native_setRotate(
+int
+float
+float
+float)
+
+private static native void native_setScale(
+int
+float
+float)
+
+private static native void native_setScale(
+int
+float
+float
+float
+float)
+
+private static native void native_setSinCos(
+int
+float
+float)
+
+private static native void native_setSinCos(
+int
+float
+float
+float
+float)
+
+private static native void native_setSkew(
+int
+float
+float)
+
+private static native void native_setSkew(
+int
+float
+float
+float
+float)
+
+private static native void native_setTranslate(
+int
+float
+float)
+
+private static native void native_setValues(
+int
+float[])
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public void getValues(
+float[])
+
+public boolean invert(
+android.graphics.Matrix)
+
+public boolean isIdentity()
+
+public void mapPoints(
+float[])
+
+public void mapPoints(
+float[]
+int
+float[]
+int
+int)
+
+public void mapPoints(
+float[]
+float[])
+
+public float mapRadius(
+float)
+
+public boolean mapRect(
+android.graphics.RectF)
+
+public boolean mapRect(
+android.graphics.RectF
+android.graphics.RectF)
+
+public void mapVectors(
+float[])
+
+public void mapVectors(
+float[]
+int
+float[]
+int
+int)
+
+public void mapVectors(
+float[]
+float[])
+
+final int ni()
+
+public boolean postConcat(
+android.graphics.Matrix)
+
+public boolean postRotate(
+float)
+
+public boolean postRotate(
+float
+float
+float)
+
+public boolean postScale(
+float
+float)
+
+public boolean postScale(
+float
+float
+float
+float)
+
+public boolean postSkew(
+float
+float)
+
+public boolean postSkew(
+float
+float
+float
+float)
+
+public boolean postTranslate(
+float
+float)
+
+public boolean preConcat(
+android.graphics.Matrix)
+
+public boolean preRotate(
+float)
+
+public boolean preRotate(
+float
+float
+float)
+
+public boolean preScale(
+float
+float)
+
+public boolean preScale(
+float
+float
+float
+float)
+
+public boolean preSkew(
+float
+float)
+
+public boolean preSkew(
+float
+float
+float
+float)
+
+public boolean preTranslate(
+float
+float)
+
+public boolean rectStaysRect()
+
+public void reset()
+
+public void set(
+android.graphics.Matrix)
+
+public boolean setConcat(
+android.graphics.Matrix
+android.graphics.Matrix)
+
+public boolean setPolyToPoly(
+float[]
+int
+float[]
+int
+int)
+
+public boolean setRectToRect(
+android.graphics.RectF
+android.graphics.RectF
+android.graphics.Matrix$ScaleToFit)
+
+public void setRotate(
+float)
+
+public void setRotate(
+float
+float
+float)
+
+public void setScale(
+float
+float)
+
+public void setScale(
+float
+float
+float
+float)
+
+public void setSinCos(
+float
+float)
+
+public void setSinCos(
+float
+float
+float
+float)
+
+public void setSkew(
+float
+float)
+
+public void setSkew(
+float
+float
+float
+float)
+
+public void setTranslate(
+float
+float)
+
+public void setValues(
+float[])
+
+public java.lang.String toShortString()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class android.graphics.Movie extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int mNativeMovie
+----------------METHODS----------------
+
+private void <init>(
+int)
+
+public static native android.graphics.Movie decodeByteArray(
+byte[]
+int
+int)
+
+public static android.graphics.Movie decodeFile(
+java.lang.String)
+
+public static native android.graphics.Movie decodeStream(
+java.io.InputStream)
+
+private static android.graphics.Movie decodeTempStream(
+java.io.InputStream)
+
+public void draw(
+android.graphics.Canvas
+float
+float)
+
+public native void draw(
+android.graphics.Canvas
+float
+float
+android.graphics.Paint)
+
+public native int duration()
+
+public native int height()
+
+public native boolean isOpaque()
+
+public native boolean setTime(
+int)
+
+public native int width()
+
+________________CLASS________________
+
+
+public class android.graphics.NinePatch extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final android.graphics.Bitmap mBitmap
+
+private final byte[] mChunk
+
+private android.graphics.Paint mPaint
+
+private final android.graphics.Rect mRect
+
+private java.lang.String mSrcName
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.Bitmap
+byte[]
+java.lang.String)
+
+public static native boolean isNinePatchChunk(
+byte[])
+
+private static native void nativeDraw(
+int
+android.graphics.Rect
+int
+byte[]
+int)
+
+private static native void nativeDraw(
+int
+android.graphics.RectF
+int
+byte[]
+int)
+
+private static native int nativeGetTransparentRegion(
+int
+byte[]
+android.graphics.Rect)
+
+private static native void validateNinePatchChunk(
+int
+byte[])
+
+public void draw(
+android.graphics.Canvas
+android.graphics.Rect)
+
+public void draw(
+android.graphics.Canvas
+android.graphics.Rect
+android.graphics.Paint)
+
+public void draw(
+android.graphics.Canvas
+android.graphics.RectF)
+
+public int getHeight()
+
+public final android.graphics.Region getTransparentRegion(
+android.graphics.Rect)
+
+public int getWidth()
+
+public final boolean hasAlpha()
+
+public void setPaint(
+android.graphics.Paint)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Align )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/Paint$Align;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Paint; )
+public final class android.graphics.Paint$Align extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.Paint$Align[] $VALUES
+
+public static final android.graphics.Paint$Align CENTER
+
+public static final android.graphics.Paint$Align LEFT
+
+public static final android.graphics.Paint$Align RIGHT
+
+final int nativeInt
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.graphics.Paint$Align valueOf(
+java.lang.String)
+
+public static android.graphics.Paint$Align[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Paint; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/Paint$Cap;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Cap )
+public final class android.graphics.Paint$Cap extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.Paint$Cap[] $VALUES
+
+public static final android.graphics.Paint$Cap BUTT
+
+public static final android.graphics.Paint$Cap ROUND
+
+public static final android.graphics.Paint$Cap SQUARE
+
+final int nativeInt
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.graphics.Paint$Cap valueOf(
+java.lang.String)
+
+public static android.graphics.Paint$Cap[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Paint; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =FontMetrics )
+public class android.graphics.Paint$FontMetrics extends java.lang.Object
+
+----------------FIELDS----------------
+
+public float ascent
+
+public float bottom
+
+public float descent
+
+public float leading
+
+public float top
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Paint; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =FontMetricsInt )
+public class android.graphics.Paint$FontMetricsInt extends java.lang.Object
+
+----------------FIELDS----------------
+
+public int ascent
+
+public int bottom
+
+public int descent
+
+public int leading
+
+public int top
+----------------METHODS----------------
+
+public void <init>()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Join )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/Paint$Join;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Paint; )
+public final class android.graphics.Paint$Join extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.Paint$Join[] $VALUES
+
+public static final android.graphics.Paint$Join BEVEL
+
+public static final android.graphics.Paint$Join MITER
+
+public static final android.graphics.Paint$Join ROUND
+
+final int nativeInt
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.graphics.Paint$Join valueOf(
+java.lang.String)
+
+public static android.graphics.Paint$Join[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/Paint$Style;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Style )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Paint; )
+public final class android.graphics.Paint$Style extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.Paint$Style[] $VALUES
+
+public static final android.graphics.Paint$Style FILL
+
+public static final android.graphics.Paint$Style FILL_AND_STROKE
+
+public static final android.graphics.Paint$Style STROKE
+
+final int nativeInt
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.graphics.Paint$Style valueOf(
+java.lang.String)
+
+public static android.graphics.Paint$Style[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/Paint$FontMetricsInt;Landroid/graphics/Paint$FontMetrics;Landroid/graphics/Paint$Align;Landroid/graphics/Paint$Join;Landroid/graphics/Paint$Cap;Landroid/graphics/Paint$Style; )
+public class android.graphics.Paint extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ANTI_ALIAS_FLAG
+
+private static final int DEFAULT_PAINT_FLAGS
+
+public static final int DEV_KERN_TEXT_FLAG
+
+public static final int DITHER_FLAG
+
+public static final int FAKE_BOLD_TEXT_FLAG
+
+public static final int FILTER_BITMAP_FLAG
+
+public static final int LINEAR_TEXT_FLAG
+
+public static final int STRIKE_THRU_TEXT_FLAG
+
+public static final int SUBPIXEL_TEXT_FLAG
+
+public static final int UNDERLINE_TEXT_FLAG
+
+private static final android.graphics.Paint$Align[] sAlignArray
+
+private static final android.graphics.Paint$Cap[] sCapArray
+
+private static final android.graphics.Paint$Join[] sJoinArray
+
+private static final android.graphics.Paint$Style[] sStyleArray
+
+private android.graphics.ColorFilter mColorFilter
+
+private android.graphics.MaskFilter mMaskFilter
+
+ int mNativePaint
+
+private android.graphics.PathEffect mPathEffect
+
+private android.graphics.Rasterizer mRasterizer
+
+private android.graphics.Shader mShader
+
+private android.graphics.Typeface mTypeface
+
+private android.graphics.Xfermode mXfermode
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+android.graphics.Paint)
+
+private static native void finalizer(
+int)
+
+private static native void nativeGetCharArrayBounds(
+int
+char[]
+int
+int
+android.graphics.Rect)
+
+private static native void nativeGetStringBounds(
+int
+java.lang.String
+int
+int
+android.graphics.Rect)
+
+private static native boolean native_getFillPath(
+int
+int
+int)
+
+private static native float native_getFontMetrics(
+int
+android.graphics.Paint$FontMetrics)
+
+private static native int native_getStrokeCap(
+int)
+
+private static native int native_getStrokeJoin(
+int)
+
+private static native int native_getStyle(
+int)
+
+private static native int native_getTextAlign(
+int)
+
+private static native void native_getTextPath(
+int
+java.lang.String
+int
+int
+float
+float
+int)
+
+private static native void native_getTextPath(
+int
+char[]
+int
+int
+float
+float
+int)
+
+private static native int native_getTextWidths(
+int
+java.lang.String
+int
+int
+float[])
+
+private static native int native_getTextWidths(
+int
+char[]
+int
+int
+float[])
+
+private static native int native_init()
+
+private static native int native_initWithPaint(
+int)
+
+private static native void native_reset(
+int)
+
+private static native void native_set(
+int
+int)
+
+private static native int native_setColorFilter(
+int
+int)
+
+private static native int native_setMaskFilter(
+int
+int)
+
+private static native int native_setPathEffect(
+int
+int)
+
+private static native int native_setRasterizer(
+int
+int)
+
+private static native int native_setShader(
+int
+int)
+
+private static native void native_setStrokeCap(
+int
+int)
+
+private static native void native_setStrokeJoin(
+int
+int)
+
+private static native void native_setStyle(
+int
+int)
+
+private static native void native_setTextAlign(
+int
+int)
+
+private static native int native_setTypeface(
+int
+int)
+
+private static native int native_setXfermode(
+int
+int)
+
+public native float ascent()
+
+public int breakText(
+java.lang.CharSequence
+int
+int
+boolean
+float
+float[])
+
+public native int breakText(
+java.lang.String
+boolean
+float
+float[])
+
+public native int breakText(
+char[]
+int
+int
+float
+float[])
+
+public void clearShadowLayer()
+
+public native float descent()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public native int getAlpha()
+
+public native int getColor()
+
+public android.graphics.ColorFilter getColorFilter()
+
+public boolean getFillPath(
+android.graphics.Path
+android.graphics.Path)
+
+public native int getFlags()
+
+public native float getFontMetrics(
+android.graphics.Paint$FontMetrics)
+
+public android.graphics.Paint$FontMetrics getFontMetrics()
+
+public native int getFontMetricsInt(
+android.graphics.Paint$FontMetricsInt)
+
+public android.graphics.Paint$FontMetricsInt getFontMetricsInt()
+
+public float getFontSpacing()
+
+public android.graphics.MaskFilter getMaskFilter()
+
+public android.graphics.PathEffect getPathEffect()
+
+public android.graphics.Rasterizer getRasterizer()
+
+public android.graphics.Shader getShader()
+
+public android.graphics.Paint$Cap getStrokeCap()
+
+public android.graphics.Paint$Join getStrokeJoin()
+
+public native float getStrokeMiter()
+
+public native float getStrokeWidth()
+
+public android.graphics.Paint$Style getStyle()
+
+public android.graphics.Paint$Align getTextAlign()
+
+public void getTextBounds(
+java.lang.String
+int
+int
+android.graphics.Rect)
+
+public void getTextBounds(
+char[]
+int
+int
+android.graphics.Rect)
+
+public void getTextPath(
+java.lang.String
+int
+int
+float
+float
+android.graphics.Path)
+
+public void getTextPath(
+char[]
+int
+int
+float
+float
+android.graphics.Path)
+
+public native float getTextScaleX()
+
+public native float getTextSize()
+
+public native float getTextSkewX()
+
+public int getTextWidths(
+java.lang.CharSequence
+int
+int
+float[])
+
+public int getTextWidths(
+java.lang.String
+int
+int
+float[])
+
+public int getTextWidths(
+java.lang.String
+float[])
+
+public int getTextWidths(
+char[]
+int
+int
+float[])
+
+public android.graphics.Typeface getTypeface()
+
+public android.graphics.Xfermode getXfermode()
+
+public final boolean isAntiAlias()
+
+public final boolean isDither()
+
+public final boolean isFakeBoldText()
+
+public final boolean isFilterBitmap()
+
+public final boolean isLinearText()
+
+public final boolean isStrikeThruText()
+
+public final boolean isSubpixelText()
+
+public final boolean isUnderlineText()
+
+public float measureText(
+java.lang.CharSequence
+int
+int)
+
+public native float measureText(
+java.lang.String)
+
+public native float measureText(
+java.lang.String
+int
+int)
+
+public native float measureText(
+char[]
+int
+int)
+
+public void reset()
+
+public void set(
+android.graphics.Paint)
+
+public void setARGB(
+int
+int
+int
+int)
+
+public native void setAlpha(
+int)
+
+public native void setAntiAlias(
+boolean)
+
+public native void setColor(
+int)
+
+public android.graphics.ColorFilter setColorFilter(
+android.graphics.ColorFilter)
+
+public native void setDither(
+boolean)
+
+public native void setFakeBoldText(
+boolean)
+
+public native void setFilterBitmap(
+boolean)
+
+public native void setFlags(
+int)
+
+public native void setLinearText(
+boolean)
+
+public android.graphics.MaskFilter setMaskFilter(
+android.graphics.MaskFilter)
+
+public android.graphics.PathEffect setPathEffect(
+android.graphics.PathEffect)
+
+public android.graphics.Rasterizer setRasterizer(
+android.graphics.Rasterizer)
+
+public android.graphics.Shader setShader(
+android.graphics.Shader)
+
+public native void setShadowLayer(
+float
+float
+float
+int)
+
+public native void setStrikeThruText(
+boolean)
+
+public void setStrokeCap(
+android.graphics.Paint$Cap)
+
+public void setStrokeJoin(
+android.graphics.Paint$Join)
+
+public native void setStrokeMiter(
+float)
+
+public native void setStrokeWidth(
+float)
+
+public void setStyle(
+android.graphics.Paint$Style)
+
+public native void setSubpixelText(
+boolean)
+
+public void setTextAlign(
+android.graphics.Paint$Align)
+
+public native void setTextScaleX(
+float)
+
+public native void setTextSize(
+float)
+
+public native void setTextSkewX(
+float)
+
+public android.graphics.Typeface setTypeface(
+android.graphics.Typeface)
+
+public native void setUnderlineText(
+boolean)
+
+public android.graphics.Xfermode setXfermode(
+android.graphics.Xfermode)
+
+________________CLASS________________
+
+
+public class android.graphics.PaintFlagsDrawFilter extends android.graphics.DrawFilter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+int
+int)
+
+private static native int nativeConstructor(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Direction )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/Path$Direction;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Path; )
+public final class android.graphics.Path$Direction extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.Path$Direction[] $VALUES
+
+public static final android.graphics.Path$Direction CCW
+
+public static final android.graphics.Path$Direction CW
+
+final int nativeInt
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.graphics.Path$Direction valueOf(
+java.lang.String)
+
+public static android.graphics.Path$Direction[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/Path$FillType;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Path; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =FillType )
+public final class android.graphics.Path$FillType extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.Path$FillType[] $VALUES
+
+public static final android.graphics.Path$FillType EVEN_ODD
+
+public static final android.graphics.Path$FillType INVERSE_EVEN_ODD
+
+public static final android.graphics.Path$FillType INVERSE_WINDING
+
+public static final android.graphics.Path$FillType WINDING
+
+final int nativeInt
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.graphics.Path$FillType valueOf(
+java.lang.String)
+
+public static android.graphics.Path$FillType[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/Path$Direction;Landroid/graphics/Path$FillType; )
+public class android.graphics.Path extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final android.graphics.Path$FillType[] sFillTypeArray
+
+private final int mNativePath
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+android.graphics.Path)
+
+private static native void finalizer(
+int)
+
+private static native int init1()
+
+private static native int init2(
+int)
+
+private static native void native_addArc(
+int
+android.graphics.RectF
+float
+float)
+
+private static native void native_addCircle(
+int
+float
+float
+float
+int)
+
+private static native void native_addOval(
+int
+android.graphics.RectF
+int)
+
+private static native void native_addPath(
+int
+int)
+
+private static native void native_addPath(
+int
+int
+float
+float)
+
+private static native void native_addPath(
+int
+int
+int)
+
+private static native void native_addRect(
+int
+float
+float
+float
+float
+int)
+
+private static native void native_addRect(
+int
+android.graphics.RectF
+int)
+
+private static native void native_addRoundRect(
+int
+android.graphics.RectF
+float
+float
+int)
+
+private static native void native_addRoundRect(
+int
+android.graphics.RectF
+float[]
+int)
+
+private static native void native_arcTo(
+int
+android.graphics.RectF
+float
+float
+boolean)
+
+private static native void native_close(
+int)
+
+private static native void native_computeBounds(
+int
+android.graphics.RectF
+int)
+
+private static native void native_cubicTo(
+int
+float
+float
+float
+float
+float
+float)
+
+private static native int native_getFillType(
+int)
+
+private static native void native_incReserve(
+int
+int)
+
+private static native boolean native_isEmpty(
+int)
+
+private static native boolean native_isRect(
+int
+android.graphics.RectF)
+
+private static native void native_lineTo(
+int
+float
+float)
+
+private static native void native_moveTo(
+int
+float
+float)
+
+private static native void native_offset(
+int
+float
+float)
+
+private static native void native_offset(
+int
+float
+float
+int)
+
+private static native void native_quadTo(
+int
+float
+float
+float
+float)
+
+private static native void native_rCubicTo(
+int
+float
+float
+float
+float
+float
+float)
+
+private static native void native_rLineTo(
+int
+float
+float)
+
+private static native void native_rMoveTo(
+int
+float
+float)
+
+private static native void native_rQuadTo(
+int
+float
+float
+float
+float)
+
+private static native void native_reset(
+int)
+
+private static native void native_rewind(
+int)
+
+private static native void native_set(
+int
+int)
+
+private static native void native_setFillType(
+int
+int)
+
+private static native void native_setLastPoint(
+int
+float
+float)
+
+private static native void native_transform(
+int
+int)
+
+private static native void native_transform(
+int
+int
+int)
+
+public void addArc(
+android.graphics.RectF
+float
+float)
+
+public void addCircle(
+float
+float
+float
+android.graphics.Path$Direction)
+
+public void addOval(
+android.graphics.RectF
+android.graphics.Path$Direction)
+
+public void addPath(
+android.graphics.Path)
+
+public void addPath(
+android.graphics.Path
+float
+float)
+
+public void addPath(
+android.graphics.Path
+android.graphics.Matrix)
+
+public void addRect(
+float
+float
+float
+float
+android.graphics.Path$Direction)
+
+public void addRect(
+android.graphics.RectF
+android.graphics.Path$Direction)
+
+public void addRoundRect(
+android.graphics.RectF
+float
+float
+android.graphics.Path$Direction)
+
+public void addRoundRect(
+android.graphics.RectF
+float[]
+android.graphics.Path$Direction)
+
+public void arcTo(
+android.graphics.RectF
+float
+float)
+
+public void arcTo(
+android.graphics.RectF
+float
+float
+boolean)
+
+public void close()
+
+public void computeBounds(
+android.graphics.RectF
+boolean)
+
+public void cubicTo(
+float
+float
+float
+float
+float
+float)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public android.graphics.Path$FillType getFillType()
+
+public void incReserve(
+int)
+
+public boolean isEmpty()
+
+public boolean isInverseFillType()
+
+public boolean isRect(
+android.graphics.RectF)
+
+public void lineTo(
+float
+float)
+
+public void moveTo(
+float
+float)
+
+final int ni()
+
+public void offset(
+float
+float)
+
+public void offset(
+float
+float
+android.graphics.Path)
+
+public void quadTo(
+float
+float
+float
+float)
+
+public void rCubicTo(
+float
+float
+float
+float
+float
+float)
+
+public void rLineTo(
+float
+float)
+
+public void rMoveTo(
+float
+float)
+
+public void rQuadTo(
+float
+float
+float
+float)
+
+public void reset()
+
+public void rewind()
+
+public void set(
+android.graphics.Path)
+
+public void setFillType(
+android.graphics.Path$FillType)
+
+public void setLastPoint(
+float
+float)
+
+public void toggleInverseFillType()
+
+public void transform(
+android.graphics.Matrix)
+
+public void transform(
+android.graphics.Matrix
+android.graphics.Path)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/PathDashPathEffect$Style;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/PathDashPathEffect; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Style )
+public final class android.graphics.PathDashPathEffect$Style extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.PathDashPathEffect$Style[] $VALUES
+
+public static final android.graphics.PathDashPathEffect$Style MORPH
+
+public static final android.graphics.PathDashPathEffect$Style ROTATE
+
+public static final android.graphics.PathDashPathEffect$Style TRANSLATE
+
+ int native_style
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.graphics.PathDashPathEffect$Style valueOf(
+java.lang.String)
+
+public static android.graphics.PathDashPathEffect$Style[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/PathDashPathEffect$Style; )
+public class android.graphics.PathDashPathEffect extends android.graphics.PathEffect
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.Path
+float
+float
+android.graphics.PathDashPathEffect$Style)
+
+private static native int nativeCreate(
+int
+float
+float
+int)
+
+________________CLASS________________
+
+
+public class android.graphics.PathMeasure extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int POSITION_MATRIX_FLAG
+
+public static final int TANGENT_MATRIX_FLAG
+
+private final int native_instance
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+android.graphics.Path
+boolean)
+
+private static native int native_create(
+int
+boolean)
+
+private static native void native_destroy(
+int)
+
+private static native float native_getLength(
+int)
+
+private static native boolean native_getMatrix(
+int
+float
+int
+int)
+
+private static native boolean native_getPosTan(
+int
+float
+float[]
+float[])
+
+private static native boolean native_getSegment(
+int
+float
+float
+int
+boolean)
+
+private static native boolean native_isClosed(
+int)
+
+private static native boolean native_nextContour(
+int)
+
+private static native void native_setPath(
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public float getLength()
+
+public boolean getMatrix(
+float
+android.graphics.Matrix
+int)
+
+public boolean getPosTan(
+float
+float[]
+float[])
+
+public boolean getSegment(
+float
+float
+android.graphics.Path
+boolean)
+
+public boolean isClosed()
+
+public boolean nextContour()
+
+public void setPath(
+android.graphics.Path
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =RecordingCanvas )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Picture; )
+ class android.graphics.Picture$RecordingCanvas extends android.graphics.Canvas
+
+----------------FIELDS----------------
+
+private final android.graphics.Picture mPicture
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.Picture
+int)
+
+public void drawPicture(
+android.graphics.Picture)
+
+public void setBitmap(
+android.graphics.Bitmap)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/Picture$RecordingCanvas; )
+public class android.graphics.Picture extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int WORKING_STREAM_STORAGE
+
+private final int mNativePicture
+
+private android.graphics.Canvas mRecordingCanvas
+----------------METHODS----------------
+
+public void <init>()
+
+private void <init>(
+int)
+
+public void <init>(
+android.graphics.Picture)
+
+public static android.graphics.Picture createFromStream(
+java.io.InputStream)
+
+private static native int nativeBeginRecording(
+int
+int
+int)
+
+private static native int nativeConstructor(
+int)
+
+private static native int nativeCreateFromStream(
+java.io.InputStream
+byte[])
+
+private static native void nativeDestructor(
+int)
+
+private static native void nativeDraw(
+int
+int)
+
+private static native void nativeEndRecording(
+int)
+
+private static native boolean nativeWriteToStream(
+int
+java.io.OutputStream
+byte[])
+
+public android.graphics.Canvas beginRecording(
+int
+int)
+
+public void draw(
+android.graphics.Canvas)
+
+public void endRecording()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public native int getHeight()
+
+public native int getWidth()
+
+final int ni()
+
+public void writeToStream(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public class android.graphics.PixelFormat extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int A_8
+
+public static final int JPEG
+
+public static final int LA_88
+
+public static final int L_8
+
+public static final int OPAQUE
+
+public static final int RGBA_4444
+
+public static final int RGBA_5551
+
+public static final int RGBA_8888
+
+public static final int RGBX_8888
+
+public static final int RGB_332
+
+public static final int RGB_565
+
+public static final int RGB_888
+
+public static final int TRANSLUCENT
+
+public static final int TRANSPARENT
+
+public static final int UNKNOWN
+
+public static final int YCbCr_420_SP
+
+public static final int YCbCr_422_SP
+
+public int bitsPerPixel
+
+public int bytesPerPixel
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static boolean formatHasAlpha(
+int)
+
+public static native void getPixelFormatInfo(
+int
+android.graphics.PixelFormat)
+
+private static native void nativeClassInit()
+
+________________CLASS________________
+
+
+public class android.graphics.PixelXorXfermode extends android.graphics.Xfermode
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+private static native int nativeCreate(
+int)
+
+________________CLASS________________
+
+
+public class android.graphics.Point extends java.lang.Object
+
+----------------FIELDS----------------
+
+public int x
+
+public int y
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int
+int)
+
+public void <init>(
+android.graphics.Point)
+
+public final boolean equals(
+int
+int)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+public final void negate()
+
+public final void offset(
+int
+int)
+
+public void set(
+int
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class android.graphics.PointF extends java.lang.Object
+
+----------------FIELDS----------------
+
+public float x
+
+public float y
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+float
+float)
+
+public void <init>(
+android.graphics.Point)
+
+public static float length(
+float
+float)
+
+public final boolean equals(
+float
+float)
+
+public final float length()
+
+public final void negate()
+
+public final void offset(
+float
+float)
+
+public final void set(
+float
+float)
+
+public final void set(
+android.graphics.PointF)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/PorterDuff$Mode;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Mode )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/PorterDuff; )
+public final class android.graphics.PorterDuff$Mode extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.PorterDuff$Mode[] $VALUES
+
+public static final android.graphics.PorterDuff$Mode CLEAR
+
+public static final android.graphics.PorterDuff$Mode DARKEN
+
+public static final android.graphics.PorterDuff$Mode DST
+
+public static final android.graphics.PorterDuff$Mode DST_ATOP
+
+public static final android.graphics.PorterDuff$Mode DST_IN
+
+public static final android.graphics.PorterDuff$Mode DST_OUT
+
+public static final android.graphics.PorterDuff$Mode DST_OVER
+
+public static final android.graphics.PorterDuff$Mode LIGHTEN
+
+public static final android.graphics.PorterDuff$Mode MULTIPLY
+
+public static final android.graphics.PorterDuff$Mode SCREEN
+
+public static final android.graphics.PorterDuff$Mode SRC
+
+public static final android.graphics.PorterDuff$Mode SRC_ATOP
+
+public static final android.graphics.PorterDuff$Mode SRC_IN
+
+public static final android.graphics.PorterDuff$Mode SRC_OUT
+
+public static final android.graphics.PorterDuff$Mode SRC_OVER
+
+public static final android.graphics.PorterDuff$Mode XOR
+
+final int nativeInt
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.graphics.PorterDuff$Mode valueOf(
+java.lang.String)
+
+public static android.graphics.PorterDuff$Mode[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/PorterDuff$Mode; )
+public class android.graphics.PorterDuff extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class android.graphics.PorterDuffColorFilter extends android.graphics.ColorFilter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+int
+android.graphics.PorterDuff$Mode)
+
+private static native int native_CreatePorterDuffFilter(
+int
+int)
+
+________________CLASS________________
+
+
+public class android.graphics.PorterDuffXfermode extends android.graphics.Xfermode
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.PorterDuff$Mode)
+
+private static native int nativeCreateXfermode(
+int)
+
+________________CLASS________________
+
+
+public class android.graphics.RadialGradient extends android.graphics.Shader
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+float
+float
+float
+int
+int
+android.graphics.Shader$TileMode)
+
+public void <init>(
+float
+float
+float
+int[]
+float[]
+android.graphics.Shader$TileMode)
+
+private static native int nativeCreate1(
+float
+float
+float
+int[]
+float[]
+int)
+
+private static native int nativeCreate2(
+float
+float
+float
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/graphics/Rect;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Rect; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.graphics.Rect$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.graphics.Rect createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.graphics.Rect[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public final class android.graphics.Rect extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/graphics/Rect;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public int bottom
+
+public int left
+
+public int right
+
+public int top
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int
+int
+int
+int)
+
+public void <init>(
+android.graphics.Rect)
+
+public static boolean intersects(
+android.graphics.Rect
+android.graphics.Rect)
+
+public final int centerX()
+
+public final int centerY()
+
+public boolean contains(
+int
+int)
+
+public boolean contains(
+int
+int
+int
+int)
+
+public boolean contains(
+android.graphics.Rect)
+
+public int describeContents()
+
+public boolean equals(
+java.lang.Object)
+
+public final float exactCenterX()
+
+public final float exactCenterY()
+
+public final int height()
+
+public void inset(
+int
+int)
+
+public boolean intersect(
+int
+int
+int
+int)
+
+public boolean intersect(
+android.graphics.Rect)
+
+public boolean intersects(
+int
+int
+int
+int)
+
+public final boolean isEmpty()
+
+public void offset(
+int
+int)
+
+public void offsetTo(
+int
+int)
+
+public void readFromParcel(
+android.os.Parcel)
+
+public void set(
+int
+int
+int
+int)
+
+public void set(
+android.graphics.Rect)
+
+public void setEmpty()
+
+public boolean setIntersect(
+android.graphics.Rect
+android.graphics.Rect)
+
+public void sort()
+
+public java.lang.String toString()
+
+public void union(
+int
+int)
+
+public void union(
+int
+int
+int
+int)
+
+public void union(
+android.graphics.Rect)
+
+public final int width()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class android.graphics.RectF extends java.lang.Object
+
+----------------FIELDS----------------
+
+public float bottom
+
+public float left
+
+public float right
+
+public float top
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+float
+float
+float
+float)
+
+public void <init>(
+android.graphics.Rect)
+
+public void <init>(
+android.graphics.RectF)
+
+public static boolean intersects(
+android.graphics.RectF
+android.graphics.RectF)
+
+public final float centerX()
+
+public final float centerY()
+
+public boolean contains(
+float
+float)
+
+public boolean contains(
+float
+float
+float
+float)
+
+public boolean contains(
+android.graphics.RectF)
+
+public final float height()
+
+public void inset(
+float
+float)
+
+public boolean intersect(
+float
+float
+float
+float)
+
+public boolean intersect(
+android.graphics.RectF)
+
+public boolean intersects(
+float
+float
+float
+float)
+
+public final boolean isEmpty()
+
+public void offset(
+float
+float)
+
+public void offsetTo(
+float
+float)
+
+public void round(
+android.graphics.Rect)
+
+public void roundOut(
+android.graphics.Rect)
+
+public void set(
+float
+float
+float
+float)
+
+public void set(
+android.graphics.Rect)
+
+public void set(
+android.graphics.RectF)
+
+public void setEmpty()
+
+public boolean setIntersect(
+android.graphics.RectF
+android.graphics.RectF)
+
+public void sort()
+
+public java.lang.String toString()
+
+public void union(
+float
+float)
+
+public void union(
+float
+float
+float
+float)
+
+public void union(
+android.graphics.RectF)
+
+public final float width()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Region; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/graphics/Region;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.graphics.Region$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.graphics.Region createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.graphics.Region[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/Region$Op;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Op )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Region; )
+public final class android.graphics.Region$Op extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.Region$Op[] $VALUES
+
+public static final android.graphics.Region$Op DIFFERENCE
+
+public static final android.graphics.Region$Op INTERSECT
+
+public static final android.graphics.Region$Op REPLACE
+
+public static final android.graphics.Region$Op REVERSE_DIFFERENCE
+
+public static final android.graphics.Region$Op UNION
+
+public static final android.graphics.Region$Op XOR
+
+final int nativeInt
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.graphics.Region$Op valueOf(
+java.lang.String)
+
+public static android.graphics.Region$Op[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/Region$Op; )
+public class android.graphics.Region extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/graphics/Region;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+private final int mNativeRegion
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+ void <init>(
+int)
+
+private void <init>(
+int
+int)
+
+public void <init>(
+int
+int
+int
+int)
+
+public void <init>(
+android.graphics.Rect)
+
+public void <init>(
+android.graphics.Region)
+
+static int access$000(
+android.os.Parcel)
+
+private static native int nativeConstructor()
+
+private static native int nativeCreateFromParcel(
+android.os.Parcel)
+
+private static native void nativeDestructor(
+int)
+
+private static native boolean nativeGetBoundaryPath(
+int
+int)
+
+private static native boolean nativeGetBounds(
+int
+android.graphics.Rect)
+
+private static native boolean nativeOp(
+int
+int
+int
+int)
+
+private static native boolean nativeOp(
+int
+int
+int
+int
+int
+int)
+
+private static native boolean nativeOp(
+int
+android.graphics.Rect
+int
+int)
+
+private static native boolean nativeSetPath(
+int
+int
+int)
+
+private static native boolean nativeSetRect(
+int
+int
+int
+int
+int)
+
+private static native boolean nativeSetRegion(
+int
+int)
+
+private static native boolean nativeWriteToParcel(
+int
+android.os.Parcel)
+
+public native boolean contains(
+int
+int)
+
+public int describeContents()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public android.graphics.Path getBoundaryPath()
+
+public boolean getBoundaryPath(
+android.graphics.Path)
+
+public android.graphics.Rect getBounds()
+
+public boolean getBounds(
+android.graphics.Rect)
+
+public native boolean isComplex()
+
+public native boolean isEmpty()
+
+public native boolean isRect()
+
+final int ni()
+
+public boolean op(
+int
+int
+int
+int
+android.graphics.Region$Op)
+
+public boolean op(
+android.graphics.Rect
+android.graphics.Region$Op)
+
+public boolean op(
+android.graphics.Rect
+android.graphics.Region
+android.graphics.Region$Op)
+
+public boolean op(
+android.graphics.Region
+android.graphics.Region$Op)
+
+public boolean op(
+android.graphics.Region
+android.graphics.Region
+android.graphics.Region$Op)
+
+public native boolean quickContains(
+int
+int
+int
+int)
+
+public boolean quickContains(
+android.graphics.Rect)
+
+public native boolean quickReject(
+int
+int
+int
+int)
+
+public boolean quickReject(
+android.graphics.Rect)
+
+public native boolean quickReject(
+android.graphics.Region)
+
+public boolean set(
+int
+int
+int
+int)
+
+public boolean set(
+android.graphics.Rect)
+
+public boolean set(
+android.graphics.Region)
+
+public void setEmpty()
+
+public boolean setPath(
+android.graphics.Path
+android.graphics.Region)
+
+public void translate(
+int
+int)
+
+public native void translate(
+int
+int
+android.graphics.Region)
+
+public final boolean union(
+android.graphics.Rect)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class android.graphics.RegionIterator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int mNativeIter
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.Region)
+
+private static native int nativeConstructor(
+int)
+
+private static native void nativeDestructor(
+int)
+
+private static native boolean nativeNext(
+int
+android.graphics.Rect)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public final boolean next(
+android.graphics.Rect)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =TileMode )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/Shader$TileMode;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/Shader; )
+public final class android.graphics.Shader$TileMode extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.Shader$TileMode[] $VALUES
+
+public static final android.graphics.Shader$TileMode CLAMP
+
+public static final android.graphics.Shader$TileMode MIRROR
+
+public static final android.graphics.Shader$TileMode REPEAT
+
+final int nativeInt
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.graphics.Shader$TileMode valueOf(
+java.lang.String)
+
+public static android.graphics.Shader$TileMode[] values()
+
+________________CLASS________________
+
+
+public class android.graphics.SumPathEffect extends android.graphics.PathEffect
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.PathEffect
+android.graphics.PathEffect)
+
+private static native int nativeCreate(
+int
+int)
+
+________________CLASS________________
+
+
+public class android.graphics.SweepGradient extends android.graphics.Shader
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+float
+float
+int
+int)
+
+public void <init>(
+float
+float
+int[]
+float[])
+
+private static native int nativeCreate1(
+float
+float
+int[]
+float[])
+
+private static native int nativeCreate2(
+float
+float
+int
+int)
+
+________________CLASS________________
+
+
+ class android.graphics.TemporaryBuffer extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static char[] sTemp
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+static char[] obtain(
+int)
+
+static void recycle(
+char[])
+
+________________CLASS________________
+
+
+public class android.graphics.Typeface extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int BOLD
+
+public static final int BOLD_ITALIC
+
+public static final android.graphics.Typeface DEFAULT
+
+public static final android.graphics.Typeface DEFAULT_BOLD
+
+public static final int ITALIC
+
+public static final android.graphics.Typeface MONOSPACE
+
+public static final int NORMAL
+
+public static final android.graphics.Typeface SANS_SERIF
+
+public static final android.graphics.Typeface SERIF
+
+private static android.graphics.Typeface[] sDefaults
+
+ int native_instance
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+int)
+
+public static android.graphics.Typeface create(
+android.graphics.Typeface
+int)
+
+public static android.graphics.Typeface create(
+java.lang.String
+int)
+
+public static android.graphics.Typeface createFromAsset(
+android.content.res.AssetManager
+java.lang.String)
+
+public static android.graphics.Typeface defaultFromStyle(
+int)
+
+private static native int nativeCreate(
+java.lang.String
+int)
+
+private static native int nativeCreateFromAsset(
+android.content.res.AssetManager
+java.lang.String)
+
+private static native int nativeCreateFromTypeface(
+int
+int)
+
+private static native int nativeGetStyle(
+int)
+
+private static native void nativeUnref(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public int getStyle()
+
+public final boolean isBold()
+
+public final boolean isItalic()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/AnimationDrawable; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.graphics.drawable.AnimationDrawable$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =ConstantState )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/Drawable; )
+public abstract class android.graphics.drawable.Drawable$ConstantState extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public abstract int getChangingConfigurations()
+
+public abstract android.graphics.drawable.Drawable newDrawable()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =DrawableContainerState )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/DrawableContainer; )
+public abstract class android.graphics.drawable.DrawableContainer$DrawableContainerState extends android.graphics.drawable.Drawable$ConstantState
+
+----------------FIELDS----------------
+
+ boolean mCanConstantState
+
+ int mChangingConfigurations
+
+ boolean mCheckedConstantState
+
+ int mChildrenChangingConfigurations
+
+ boolean mComputedConstantSize
+
+ int mConstantHeight
+
+ int mConstantMinimumHeight
+
+ int mConstantMinimumWidth
+
+ android.graphics.Rect mConstantPadding
+
+ boolean mConstantSize
+
+ int mConstantWidth
+
+ android.graphics.drawable.Drawable[] mDrawables
+
+ boolean mHaveOpacity
+
+ boolean mHaveStateful
+
+ int mNumChildren
+
+ int mOpacity
+
+final android.graphics.drawable.DrawableContainer mOwner
+
+ boolean mStateful
+
+ boolean mVariablePadding
+----------------METHODS----------------
+
+ void <init>(
+android.graphics.drawable.DrawableContainer$DrawableContainerState
+android.graphics.drawable.DrawableContainer)
+
+private void computeConstantSize()
+
+public final int addChild(
+android.graphics.drawable.Drawable)
+
+public boolean canConstantState()
+
+public int getChangingConfigurations()
+
+public final int getChildCount()
+
+public final android.graphics.drawable.Drawable[] getChildren()
+
+public final int getConstantHeight()
+
+public final int getConstantMinimumHeight()
+
+public final int getConstantMinimumWidth()
+
+public final android.graphics.Rect getConstantPadding()
+
+public final int getConstantWidth()
+
+public final int getOpacity()
+
+public void growArray(
+int
+int)
+
+public final boolean isConstantSize()
+
+public final boolean isStateful()
+
+public final void setConstantSize(
+boolean)
+
+public final void setVariablePadding(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =AnimationState )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/AnimationDrawable; )
+final class android.graphics.drawable.AnimationDrawable$AnimationState extends android.graphics.drawable.DrawableContainer$DrawableContainerState
+
+----------------FIELDS----------------
+
+private int[] mDurations
+
+private boolean mOneShot
+----------------METHODS----------------
+
+ void <init>(
+android.graphics.drawable.AnimationDrawable$AnimationState
+android.graphics.drawable.AnimationDrawable)
+
+static int[] access$000(
+android.graphics.drawable.AnimationDrawable$AnimationState)
+
+static boolean access$100(
+android.graphics.drawable.AnimationDrawable$AnimationState)
+
+static boolean access$102(
+android.graphics.drawable.AnimationDrawable$AnimationState
+boolean)
+
+public void addFrame(
+android.graphics.drawable.Drawable
+int)
+
+public void growArray(
+int
+int)
+
+public android.graphics.drawable.Drawable newDrawable()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/drawable/Drawable$ConstantState;Landroid/graphics/drawable/Drawable$Callback; )
+public abstract class android.graphics.drawable.Drawable extends java.lang.Object
+
+----------------FIELDS----------------
+
+private android.graphics.Rect mBounds
+
+ android.graphics.drawable.Drawable$Callback mCallback
+
+private int mChangingConfigurations
+
+private int mLevel
+
+private int[] mStateSet
+
+private boolean mVisible
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.graphics.drawable.Drawable createFromPath(
+java.lang.String)
+
+public static android.graphics.drawable.Drawable createFromStream(
+java.io.InputStream
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static android.graphics.drawable.Drawable createFromXml(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static android.graphics.drawable.Drawable createFromXmlInner(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+private static android.graphics.drawable.Drawable drawableFromBitmap(
+android.graphics.Bitmap
+byte[]
+android.graphics.Rect
+java.lang.String)
+
+public static int resolveOpacity(
+int
+int)
+
+public void clearColorFilter()
+
+public final android.graphics.Rect copyBounds()
+
+public final void copyBounds(
+android.graphics.Rect)
+
+public abstract void draw(
+android.graphics.Canvas)
+
+public final android.graphics.Rect getBounds()
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable$ConstantState getConstantState()
+
+public android.graphics.drawable.Drawable getCurrent()
+
+public int getIntrinsicHeight()
+
+public int getIntrinsicWidth()
+
+public final int getLevel()
+
+public int getMinimumHeight()
+
+public int getMinimumWidth()
+
+public abstract int getOpacity()
+
+public boolean getPadding(
+android.graphics.Rect)
+
+public int[] getState()
+
+public android.graphics.Region getTransparentRegion()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void inflate(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+ void inflateWithAttributes(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.content.res.TypedArray
+int)
+
+public void invalidateSelf()
+
+public boolean isStateful()
+
+public final boolean isVisible()
+
+protected void onBoundsChange(
+android.graphics.Rect)
+
+protected boolean onLevelChange(
+int)
+
+protected boolean onStateChange(
+int[])
+
+public void scheduleSelf(
+java.lang.Runnable
+long)
+
+public abstract void setAlpha(
+int)
+
+public void setBounds(
+int
+int
+int
+int)
+
+public void setBounds(
+android.graphics.Rect)
+
+public final void setCallback(
+android.graphics.drawable.Drawable$Callback)
+
+public void setChangingConfigurations(
+int)
+
+public void setColorFilter(
+int
+android.graphics.PorterDuff$Mode)
+
+public abstract void setColorFilter(
+android.graphics.ColorFilter)
+
+public void setDither(
+boolean)
+
+public void setFilterBitmap(
+boolean)
+
+public final boolean setLevel(
+int)
+
+public boolean setState(
+int[])
+
+public boolean setVisible(
+boolean
+boolean)
+
+public void unscheduleSelf(
+java.lang.Runnable)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Callback )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/Drawable; )
+public abstract interface class android.graphics.drawable.Drawable$Callback extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void invalidateDrawable(
+android.graphics.drawable.Drawable)
+
+public abstract void scheduleDrawable(
+android.graphics.drawable.Drawable
+java.lang.Runnable
+long)
+
+public abstract void unscheduleDrawable(
+android.graphics.drawable.Drawable
+java.lang.Runnable)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/drawable/DrawableContainer$DrawableContainerState; )
+public class android.graphics.drawable.DrawableContainer extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable$Callback
+
+----------------FIELDS----------------
+
+private int mAlpha
+
+private android.graphics.ColorFilter mColorFilter
+
+private int mCurIndex
+
+private android.graphics.drawable.Drawable mCurrDrawable
+
+private boolean mDither
+
+private android.graphics.drawable.DrawableContainer$DrawableContainerState mDrawableContainerState
+----------------METHODS----------------
+
+public void <init>()
+
+public void draw(
+android.graphics.Canvas)
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable$ConstantState getConstantState()
+
+public android.graphics.drawable.Drawable getCurrent()
+
+public int getIntrinsicHeight()
+
+public int getIntrinsicWidth()
+
+public int getMinimumHeight()
+
+public int getMinimumWidth()
+
+public int getOpacity()
+
+public boolean getPadding(
+android.graphics.Rect)
+
+public void invalidateDrawable(
+android.graphics.drawable.Drawable)
+
+public boolean isStateful()
+
+protected void onBoundsChange(
+android.graphics.Rect)
+
+protected boolean onLevelChange(
+int)
+
+protected boolean onStateChange(
+int[])
+
+public void scheduleDrawable(
+android.graphics.drawable.Drawable
+java.lang.Runnable
+long)
+
+public boolean selectDrawable(
+int)
+
+public void setAlpha(
+int)
+
+public void setColorFilter(
+android.graphics.ColorFilter)
+
+protected void setConstantState(
+android.graphics.drawable.DrawableContainer$DrawableContainerState)
+
+public void setDither(
+boolean)
+
+public boolean setVisible(
+boolean
+boolean)
+
+public void unscheduleDrawable(
+android.graphics.drawable.Drawable
+java.lang.Runnable)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/drawable/AnimationDrawable$1;Landroid/graphics/drawable/AnimationDrawable$AnimationState; )
+public class android.graphics.drawable.AnimationDrawable extends android.graphics.drawable.DrawableContainer implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private final android.graphics.drawable.AnimationDrawable$AnimationState mAnimationState
+
+private int mCurFrame
+----------------METHODS----------------
+
+public void <init>()
+
+private void <init>(
+android.graphics.drawable.AnimationDrawable$AnimationState)
+
+ void <init>(
+android.graphics.drawable.AnimationDrawable$AnimationState
+android.graphics.drawable.AnimationDrawable$1)
+
+private void nextFrame(
+boolean)
+
+private void setFrame(
+int
+boolean
+boolean)
+
+public void addFrame(
+android.graphics.drawable.Drawable
+int)
+
+public int getDuration(
+int)
+
+public android.graphics.drawable.Drawable getFrame(
+int)
+
+public int getNumberOfFrames()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void inflate(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+public boolean isOneShot()
+
+public boolean isRunning()
+
+public void run()
+
+public void setOneShot(
+boolean)
+
+public boolean setVisible(
+boolean
+boolean)
+
+public void start()
+
+public void stop()
+
+public void unscheduleSelf(
+java.lang.Runnable)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/BitmapDrawable; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.graphics.drawable.BitmapDrawable$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/BitmapDrawable; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =BitmapState )
+final class android.graphics.drawable.BitmapDrawable$BitmapState extends android.graphics.drawable.Drawable$ConstantState
+
+----------------FIELDS----------------
+
+ android.graphics.Bitmap mBitmap
+
+ int mChangingConfigurations
+
+ int mGravity
+
+ android.graphics.Paint mPaint
+
+ android.graphics.Shader$TileMode mTileModeX
+
+ android.graphics.Shader$TileMode mTileModeY
+----------------METHODS----------------
+
+ void <init>(
+android.graphics.Bitmap)
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable newDrawable()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/drawable/BitmapDrawable$1;Landroid/graphics/drawable/BitmapDrawable$BitmapState; )
+public class android.graphics.drawable.BitmapDrawable extends android.graphics.drawable.Drawable
+
+----------------FIELDS----------------
+
+private static final int DEFAULT_PAINT_FLAGS
+
+private boolean mApplyGravity
+
+private android.graphics.Bitmap mBitmap
+
+private android.graphics.drawable.BitmapDrawable$BitmapState mBitmapState
+
+private final android.graphics.Rect mDstRect
+
+private boolean mRebuildShader
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+android.graphics.Bitmap)
+
+private void <init>(
+android.graphics.drawable.BitmapDrawable$BitmapState)
+
+ void <init>(
+android.graphics.drawable.BitmapDrawable$BitmapState
+android.graphics.drawable.BitmapDrawable$1)
+
+public void <init>(
+java.io.InputStream)
+
+public void <init>(
+java.lang.String)
+
+public void draw(
+android.graphics.Canvas)
+
+public final android.graphics.Bitmap getBitmap()
+
+public int getChangingConfigurations()
+
+public final android.graphics.drawable.Drawable$ConstantState getConstantState()
+
+public int getGravity()
+
+public int getIntrinsicHeight()
+
+public int getIntrinsicWidth()
+
+public int getOpacity()
+
+public final android.graphics.Paint getPaint()
+
+public android.graphics.Shader$TileMode getTileModeX()
+
+public android.graphics.Shader$TileMode getTileModeY()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void inflate(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+protected void onBoundsChange(
+android.graphics.Rect)
+
+public void setAlpha(
+int)
+
+public void setAntiAlias(
+boolean)
+
+public void setColorFilter(
+android.graphics.ColorFilter)
+
+public void setDither(
+boolean)
+
+public void setFilterBitmap(
+boolean)
+
+public void setGravity(
+int)
+
+public void setTileModeX(
+android.graphics.Shader$TileMode)
+
+public void setTileModeXY(
+android.graphics.Shader$TileMode
+android.graphics.Shader$TileMode)
+
+public final void setTileModeY(
+android.graphics.Shader$TileMode)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/ClipDrawable; )
+ class android.graphics.drawable.ClipDrawable$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =ClipState )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/ClipDrawable; )
+final class android.graphics.drawable.ClipDrawable$ClipState extends android.graphics.drawable.Drawable$ConstantState
+
+----------------FIELDS----------------
+
+private boolean mCanConstantState
+
+ int mChangingConfigurations
+
+private boolean mCheckedConstantState
+
+ android.graphics.drawable.Drawable mDrawable
+
+ int mGravity
+
+ int mOrientation
+----------------METHODS----------------
+
+ void <init>(
+android.graphics.drawable.ClipDrawable$ClipState
+android.graphics.drawable.ClipDrawable)
+
+ boolean canConstantState()
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable newDrawable()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/drawable/ClipDrawable$1;Landroid/graphics/drawable/ClipDrawable$ClipState; )
+public class android.graphics.drawable.ClipDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable$Callback
+
+----------------FIELDS----------------
+
+public static final int HORIZONTAL
+
+public static final int VERTICAL
+
+private android.graphics.drawable.ClipDrawable$ClipState mClipState
+
+private final android.graphics.Rect mTmpRect
+----------------METHODS----------------
+
+ void <init>()
+
+private void <init>(
+android.graphics.drawable.ClipDrawable$ClipState)
+
+ void <init>(
+android.graphics.drawable.ClipDrawable$ClipState
+android.graphics.drawable.ClipDrawable$1)
+
+public void <init>(
+android.graphics.drawable.Drawable
+int
+int)
+
+public void draw(
+android.graphics.Canvas)
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable$ConstantState getConstantState()
+
+public int getIntrinsicHeight()
+
+public int getIntrinsicWidth()
+
+public int getOpacity()
+
+public boolean getPadding(
+android.graphics.Rect)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void inflate(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+public void invalidateDrawable(
+android.graphics.drawable.Drawable)
+
+public boolean isStateful()
+
+protected void onBoundsChange(
+android.graphics.Rect)
+
+protected boolean onLevelChange(
+int)
+
+protected boolean onStateChange(
+int[])
+
+public void scheduleDrawable(
+android.graphics.drawable.Drawable
+java.lang.Runnable
+long)
+
+public void setAlpha(
+int)
+
+public void setColorFilter(
+android.graphics.ColorFilter)
+
+public boolean setVisible(
+boolean
+boolean)
+
+public void unscheduleDrawable(
+android.graphics.drawable.Drawable
+java.lang.Runnable)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/ColorDrawable; )
+ class android.graphics.drawable.ColorDrawable$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/ColorDrawable; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =ColorState )
+final class android.graphics.drawable.ColorDrawable$ColorState extends android.graphics.drawable.Drawable$ConstantState
+
+----------------FIELDS----------------
+
+ int mBaseColor
+
+ int mChangingConfigurations
+
+ int mUseColor
+----------------METHODS----------------
+
+ void <init>(
+android.graphics.drawable.ColorDrawable$ColorState)
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable newDrawable()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/drawable/ColorDrawable$1;Landroid/graphics/drawable/ColorDrawable$ColorState; )
+public class android.graphics.drawable.ColorDrawable extends android.graphics.drawable.Drawable
+
+----------------FIELDS----------------
+
+private android.graphics.drawable.ColorDrawable$ColorState mState
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+private void <init>(
+android.graphics.drawable.ColorDrawable$ColorState)
+
+ void <init>(
+android.graphics.drawable.ColorDrawable$ColorState
+android.graphics.drawable.ColorDrawable$1)
+
+public void draw(
+android.graphics.Canvas)
+
+public int getAlpha()
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable$ConstantState getConstantState()
+
+public int getOpacity()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void inflate(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+public void setAlpha(
+int)
+
+public void setColorFilter(
+android.graphics.ColorFilter)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/GradientDrawable; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.graphics.drawable.GradientDrawable$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$android$graphics$drawable$GradientDrawable$Orientation
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =GradientState )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/GradientDrawable; )
+final class android.graphics.drawable.GradientDrawable$GradientState extends android.graphics.drawable.Drawable$ConstantState
+
+----------------FIELDS----------------
+
+private float mCenterX
+
+private float mCenterY
+
+public int mChangingConfigurations
+
+public int[] mColors
+
+public int mGradient
+
+private float mGradientRadius
+
+public boolean mHasSolidColor
+
+public int mHeight
+
+public float mInnerRadius
+
+public android.graphics.drawable.GradientDrawable$Orientation mOrientation
+
+public android.graphics.Rect mPadding
+
+public float[] mPositions
+
+public float mRadius
+
+public float[] mRadiusArray
+
+public int mShape
+
+public int mSolidColor
+
+public int mStrokeColor
+
+public float mStrokeDashGap
+
+public float mStrokeDashWidth
+
+public int mStrokeWidth
+
+public float mThickness
+
+private boolean mUseLevel
+
+private boolean mUseLevelForShape
+
+public int mWidth
+----------------METHODS----------------
+
+ void <init>()
+
+ void <init>(
+android.graphics.drawable.GradientDrawable$Orientation
+int[])
+
+static boolean access$000(
+android.graphics.drawable.GradientDrawable$GradientState)
+
+static boolean access$002(
+android.graphics.drawable.GradientDrawable$GradientState
+boolean)
+
+static boolean access$100(
+android.graphics.drawable.GradientDrawable$GradientState)
+
+static boolean access$102(
+android.graphics.drawable.GradientDrawable$GradientState
+boolean)
+
+static float access$200(
+android.graphics.drawable.GradientDrawable$GradientState)
+
+static float access$202(
+android.graphics.drawable.GradientDrawable$GradientState
+float)
+
+static float access$300(
+android.graphics.drawable.GradientDrawable$GradientState)
+
+static float access$302(
+android.graphics.drawable.GradientDrawable$GradientState
+float)
+
+static float access$400(
+android.graphics.drawable.GradientDrawable$GradientState)
+
+static float access$402(
+android.graphics.drawable.GradientDrawable$GradientState
+float)
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable newDrawable()
+
+public void setCornerRadii(
+float[])
+
+public void setCornerRadius(
+float)
+
+public void setGradientCenter(
+float
+float)
+
+public void setGradientRadius(
+float)
+
+public void setGradientType(
+int)
+
+public void setShape(
+int)
+
+public void setSize(
+int
+int)
+
+public void setSolidColor(
+int)
+
+public void setStroke(
+int
+int)
+
+public void setStroke(
+int
+int
+float
+float)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/GradientDrawable; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/graphics/drawable/GradientDrawable$Orientation;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Orientation )
+public final class android.graphics.drawable.GradientDrawable$Orientation extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.graphics.drawable.GradientDrawable$Orientation[] $VALUES
+
+public static final android.graphics.drawable.GradientDrawable$Orientation BL_TR
+
+public static final android.graphics.drawable.GradientDrawable$Orientation BOTTOM_TOP
+
+public static final android.graphics.drawable.GradientDrawable$Orientation BR_TL
+
+public static final android.graphics.drawable.GradientDrawable$Orientation LEFT_RIGHT
+
+public static final android.graphics.drawable.GradientDrawable$Orientation RIGHT_LEFT
+
+public static final android.graphics.drawable.GradientDrawable$Orientation TL_BR
+
+public static final android.graphics.drawable.GradientDrawable$Orientation TOP_BOTTOM
+
+public static final android.graphics.drawable.GradientDrawable$Orientation TR_BL
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.graphics.drawable.GradientDrawable$Orientation valueOf(
+java.lang.String)
+
+public static android.graphics.drawable.GradientDrawable$Orientation[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/drawable/GradientDrawable$1;Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/graphics/drawable/GradientDrawable$Orientation; )
+public class android.graphics.drawable.GradientDrawable extends android.graphics.drawable.Drawable
+
+----------------FIELDS----------------
+
+public static final int LINE
+
+public static final int LINEAR_GRADIENT
+
+public static final int OVAL
+
+public static final int RADIAL_GRADIENT
+
+public static final int RECTANGLE
+
+public static final int RING
+
+public static final int SWEEP_GRADIENT
+
+private int mAlpha
+
+private android.graphics.ColorFilter mColorFilter
+
+private boolean mDither
+
+private final android.graphics.Paint mFillPaint
+
+private final android.graphics.drawable.GradientDrawable$GradientState mGradientState
+
+private android.graphics.Paint mLayerPaint
+
+private android.graphics.Rect mPadding
+
+private final android.graphics.Path mPath
+
+private final android.graphics.RectF mRect
+
+private boolean mRectIsDirty
+
+private android.graphics.Paint mStrokePaint
+----------------METHODS----------------
+
+public void <init>()
+
+private void <init>(
+android.graphics.drawable.GradientDrawable$GradientState)
+
+ void <init>(
+android.graphics.drawable.GradientDrawable$GradientState
+android.graphics.drawable.GradientDrawable$1)
+
+public void <init>(
+android.graphics.drawable.GradientDrawable$Orientation
+int[])
+
+private android.graphics.Path buildRing(
+android.graphics.drawable.GradientDrawable$GradientState)
+
+private boolean ensureValidRect()
+
+private static float getFloatOrFraction(
+android.content.res.TypedArray
+int
+float)
+
+private int modulateAlpha(
+int)
+
+public void draw(
+android.graphics.Canvas)
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable$ConstantState getConstantState()
+
+public int getIntrinsicHeight()
+
+public int getIntrinsicWidth()
+
+public int getOpacity()
+
+public boolean getPadding(
+android.graphics.Rect)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void inflate(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+protected void onBoundsChange(
+android.graphics.Rect)
+
+protected boolean onLevelChange(
+int)
+
+public void setAlpha(
+int)
+
+public void setColor(
+int)
+
+public void setColorFilter(
+android.graphics.ColorFilter)
+
+public void setCornerRadii(
+float[])
+
+public void setCornerRadius(
+float)
+
+public void setDither(
+boolean)
+
+public void setGradientCenter(
+float
+float)
+
+public void setGradientRadius(
+float)
+
+public void setGradientType(
+int)
+
+public void setShape(
+int)
+
+public void setSize(
+int
+int)
+
+public void setStroke(
+int
+int)
+
+public void setStroke(
+int
+int
+float
+float)
+
+public void setUseLevel(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/InsetDrawable; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.graphics.drawable.InsetDrawable$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =InsetState )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/InsetDrawable; )
+final class android.graphics.drawable.InsetDrawable$InsetState extends android.graphics.drawable.Drawable$ConstantState
+
+----------------FIELDS----------------
+
+ boolean mCanConstantState
+
+ int mChangingConfigurations
+
+ boolean mCheckedConstantState
+
+ android.graphics.drawable.Drawable mDrawable
+
+ int mInsetBottom
+
+ int mInsetLeft
+
+ int mInsetRight
+
+ int mInsetTop
+----------------METHODS----------------
+
+ void <init>(
+android.graphics.drawable.InsetDrawable$InsetState
+android.graphics.drawable.InsetDrawable)
+
+ boolean canConstantState()
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable newDrawable()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/drawable/InsetDrawable$1;Landroid/graphics/drawable/InsetDrawable$InsetState; )
+public class android.graphics.drawable.InsetDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable$Callback
+
+----------------FIELDS----------------
+
+private android.graphics.drawable.InsetDrawable$InsetState mInsetState
+
+private final android.graphics.Rect mTmpRect
+----------------METHODS----------------
+
+ void <init>()
+
+public void <init>(
+android.graphics.drawable.Drawable
+int)
+
+public void <init>(
+android.graphics.drawable.Drawable
+int
+int
+int
+int)
+
+private void <init>(
+android.graphics.drawable.InsetDrawable$InsetState)
+
+ void <init>(
+android.graphics.drawable.InsetDrawable$InsetState
+android.graphics.drawable.InsetDrawable$1)
+
+public void draw(
+android.graphics.Canvas)
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable$ConstantState getConstantState()
+
+public int getIntrinsicHeight()
+
+public int getIntrinsicWidth()
+
+public int getOpacity()
+
+public boolean getPadding(
+android.graphics.Rect)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void inflate(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+public void invalidateDrawable(
+android.graphics.drawable.Drawable)
+
+public boolean isStateful()
+
+protected void onBoundsChange(
+android.graphics.Rect)
+
+protected boolean onStateChange(
+int[])
+
+public void scheduleDrawable(
+android.graphics.drawable.Drawable
+java.lang.Runnable
+long)
+
+public void setAlpha(
+int)
+
+public void setColorFilter(
+android.graphics.ColorFilter)
+
+public boolean setVisible(
+boolean
+boolean)
+
+public void unscheduleDrawable(
+android.graphics.drawable.Drawable
+java.lang.Runnable)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =LayerState )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/LayerDrawable; )
+ class android.graphics.drawable.LayerDrawable$LayerState extends android.graphics.drawable.Drawable$ConstantState
+
+----------------FIELDS----------------
+
+ android.graphics.drawable.LayerDrawable$Rec[] mArray
+
+private boolean mCanConstantState
+
+ int mChangingConfigurations
+
+private boolean mCheckedConstantState
+
+ int mChildrenChangingConfigurations
+
+private boolean mHaveOpacity
+
+private boolean mHaveStateful
+
+ int mNum
+
+private int mOpacity
+
+private boolean mStateful
+----------------METHODS----------------
+
+ void <init>(
+android.graphics.drawable.LayerDrawable$LayerState
+android.graphics.drawable.LayerDrawable)
+
+public boolean canConstantState()
+
+public int getChangingConfigurations()
+
+public final int getOpacity()
+
+public final boolean isStateful()
+
+public android.graphics.drawable.Drawable newDrawable()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =Rec )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/LayerDrawable; )
+ class android.graphics.drawable.LayerDrawable$Rec extends java.lang.Object
+
+----------------FIELDS----------------
+
+public android.graphics.drawable.Drawable mDrawable
+
+public int mId
+
+public int mInsetB
+
+public int mInsetL
+
+public int mInsetR
+
+public int mInsetT
+----------------METHODS----------------
+
+ void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/graphics/drawable/LayerDrawable$Rec; )
+public class android.graphics.drawable.LayerDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable$Callback
+
+----------------FIELDS----------------
+
+ android.graphics.drawable.LayerDrawable$LayerState mLayerState
+
+private int[] mPaddingB
+
+private int[] mPaddingL
+
+private int[] mPaddingR
+
+private int[] mPaddingT
+
+private final android.graphics.Rect mTmpRect
+----------------METHODS----------------
+
+ void <init>()
+
+ void <init>(
+android.graphics.drawable.LayerDrawable$LayerState)
+
+public void <init>(
+android.graphics.drawable.Drawable[])
+
+private void addLayer(
+int
+android.graphics.drawable.Drawable
+int
+int
+int
+int)
+
+private void ensurePadding()
+
+private boolean reapplyPadding(
+int
+android.graphics.drawable.LayerDrawable$Rec)
+
+ android.graphics.drawable.LayerDrawable$LayerState createConstantState(
+android.graphics.drawable.LayerDrawable$LayerState)
+
+public void draw(
+android.graphics.Canvas)
+
+public android.graphics.drawable.Drawable findDrawableByLayerId(
+int)
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable$ConstantState getConstantState()
+
+public android.graphics.drawable.Drawable getDrawable(
+int)
+
+public int getId(
+int)
+
+public int getIntrinsicHeight()
+
+public int getIntrinsicWidth()
+
+public int getNumberOfLayers()
+
+public int getOpacity()
+
+public boolean getPadding(
+android.graphics.Rect)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void inflate(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+public void invalidateDrawable(
+android.graphics.drawable.Drawable)
+
+public boolean isStateful()
+
+protected void onBoundsChange(
+android.graphics.Rect)
+
+protected boolean onLevelChange(
+int)
+
+protected boolean onStateChange(
+int[])
+
+public void scheduleDrawable(
+android.graphics.drawable.Drawable
+java.lang.Runnable
+long)
+
+public void setAlpha(
+int)
+
+public void setColorFilter(
+android.graphics.ColorFilter)
+
+public void setDither(
+boolean)
+
+public boolean setDrawableByLayerId(
+int
+android.graphics.drawable.Drawable)
+
+public void setId(
+int
+int)
+
+public void setLayerInset(
+int
+int
+int
+int
+int)
+
+public boolean setVisible(
+boolean
+boolean)
+
+public void unscheduleDrawable(
+android.graphics.drawable.Drawable
+java.lang.Runnable)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/LevelListDrawable; )
+ class android.graphics.drawable.LevelListDrawable$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =LevelListState )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/LevelListDrawable; )
+final class android.graphics.drawable.LevelListDrawable$LevelListState extends android.graphics.drawable.DrawableContainer$DrawableContainerState
+
+----------------FIELDS----------------
+
+private int[] mHighs
+
+private int[] mLows
+----------------METHODS----------------
+
+ void <init>(
+android.graphics.drawable.LevelListDrawable$LevelListState
+android.graphics.drawable.LevelListDrawable)
+
+public void addLevel(
+int
+int
+android.graphics.drawable.Drawable)
+
+public void growArray(
+int
+int)
+
+public int indexOfLevel(
+int)
+
+public android.graphics.drawable.Drawable newDrawable()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/drawable/LevelListDrawable$1;Landroid/graphics/drawable/LevelListDrawable$LevelListState; )
+public class android.graphics.drawable.LevelListDrawable extends android.graphics.drawable.DrawableContainer
+
+----------------FIELDS----------------
+
+private final android.graphics.drawable.LevelListDrawable$LevelListState mLevelListState
+----------------METHODS----------------
+
+public void <init>()
+
+private void <init>(
+android.graphics.drawable.LevelListDrawable$LevelListState)
+
+ void <init>(
+android.graphics.drawable.LevelListDrawable$LevelListState
+android.graphics.drawable.LevelListDrawable$1)
+
+public void addLevel(
+int
+int
+android.graphics.drawable.Drawable)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void inflate(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+protected boolean onLevelChange(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/NinePatchDrawable; )
+ class android.graphics.drawable.NinePatchDrawable$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/NinePatchDrawable; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =NinePatchState )
+final class android.graphics.drawable.NinePatchDrawable$NinePatchState extends android.graphics.drawable.Drawable$ConstantState
+
+----------------FIELDS----------------
+
+ int mChangingConfigurations
+
+final android.graphics.NinePatch mNinePatch
+
+final android.graphics.Rect mPadding
+----------------METHODS----------------
+
+ void <init>(
+android.graphics.NinePatch
+android.graphics.Rect)
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable newDrawable()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/drawable/NinePatchDrawable$1;Landroid/graphics/drawable/NinePatchDrawable$NinePatchState; )
+public class android.graphics.drawable.NinePatchDrawable extends android.graphics.drawable.Drawable
+
+----------------FIELDS----------------
+
+private final android.graphics.NinePatch mNinePatch
+
+private final android.graphics.drawable.NinePatchDrawable$NinePatchState mNinePatchState
+
+private final android.graphics.Rect mPadding
+
+private android.graphics.Paint mPaint
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.Bitmap
+byte[]
+android.graphics.Rect
+java.lang.String)
+
+public void <init>(
+android.graphics.NinePatch)
+
+private void <init>(
+android.graphics.drawable.NinePatchDrawable$NinePatchState)
+
+ void <init>(
+android.graphics.drawable.NinePatchDrawable$NinePatchState
+android.graphics.drawable.NinePatchDrawable$1)
+
+public void draw(
+android.graphics.Canvas)
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable$ConstantState getConstantState()
+
+public int getIntrinsicHeight()
+
+public int getIntrinsicWidth()
+
+public int getMinimumHeight()
+
+public int getMinimumWidth()
+
+public int getOpacity()
+
+public boolean getPadding(
+android.graphics.Rect)
+
+public android.graphics.Paint getPaint()
+
+public android.graphics.Region getTransparentRegion()
+
+public void setAlpha(
+int)
+
+public void setColorFilter(
+android.graphics.ColorFilter)
+
+public void setDither(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/drawable/ShapeDrawable$1;Landroid/graphics/drawable/ShapeDrawable$ShaderFactory;Landroid/graphics/drawable/ShapeDrawable$ShapeState; )
+public class android.graphics.drawable.ShapeDrawable extends android.graphics.drawable.Drawable
+
+----------------FIELDS----------------
+
+private android.graphics.drawable.ShapeDrawable$ShapeState mShapeState
+----------------METHODS----------------
+
+public void <init>()
+
+private void <init>(
+android.graphics.drawable.ShapeDrawable$ShapeState)
+
+ void <init>(
+android.graphics.drawable.ShapeDrawable$ShapeState
+android.graphics.drawable.ShapeDrawable$1)
+
+public void <init>(
+android.graphics.drawable.shapes.Shape)
+
+private static int modulateAlpha(
+int
+int)
+
+private void updateShape()
+
+public void draw(
+android.graphics.Canvas)
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable$ConstantState getConstantState()
+
+public int getIntrinsicHeight()
+
+public int getIntrinsicWidth()
+
+public int getOpacity()
+
+public boolean getPadding(
+android.graphics.Rect)
+
+public android.graphics.Paint getPaint()
+
+public android.graphics.drawable.ShapeDrawable$ShaderFactory getShaderFactory()
+
+public android.graphics.drawable.shapes.Shape getShape()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void inflate(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+protected boolean inflateTag(
+java.lang.String
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+protected void onBoundsChange(
+android.graphics.Rect)
+
+protected void onDraw(
+android.graphics.drawable.shapes.Shape
+android.graphics.Canvas
+android.graphics.Paint)
+
+public void setAlpha(
+int)
+
+public void setColorFilter(
+android.graphics.ColorFilter)
+
+public void setDither(
+boolean)
+
+public void setIntrinsicHeight(
+int)
+
+public void setIntrinsicWidth(
+int)
+
+public void setPadding(
+int
+int
+int
+int)
+
+public void setPadding(
+android.graphics.Rect)
+
+public void setShaderFactory(
+android.graphics.drawable.ShapeDrawable$ShaderFactory)
+
+public void setShape(
+android.graphics.drawable.shapes.Shape)
+
+________________CLASS________________
+
+
+public class android.graphics.drawable.PaintDrawable extends android.graphics.drawable.ShapeDrawable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+protected boolean inflateTag(
+java.lang.String
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+public void setCornerRadii(
+float[])
+
+public void setCornerRadius(
+float)
+
+________________CLASS________________
+
+
+public class android.graphics.drawable.PictureDrawable extends android.graphics.drawable.Drawable
+
+----------------FIELDS----------------
+
+private android.graphics.Picture mPicture
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.Picture)
+
+public void draw(
+android.graphics.Canvas)
+
+public int getIntrinsicHeight()
+
+public int getIntrinsicWidth()
+
+public int getOpacity()
+
+public android.graphics.Picture getPicture()
+
+public void setAlpha(
+int)
+
+public void setColorFilter(
+android.graphics.ColorFilter)
+
+public void setDither(
+boolean)
+
+public void setFilterBitmap(
+boolean)
+
+public void setPicture(
+android.graphics.Picture)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/RotateDrawable; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.graphics.drawable.RotateDrawable$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/RotateDrawable; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =RotateState )
+final class android.graphics.drawable.RotateDrawable$RotateState extends android.graphics.drawable.Drawable$ConstantState
+
+----------------FIELDS----------------
+
+private boolean mCanConstantState
+
+ int mChangingConfigurations
+
+private boolean mCheckedConstantState
+
+ float mCurrentDegrees
+
+ android.graphics.drawable.Drawable mDrawable
+
+ float mFromDegrees
+
+ float mPivotX
+
+ boolean mPivotXRel
+
+ float mPivotY
+
+ boolean mPivotYRel
+
+ float mToDegrees
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.drawable.RotateDrawable$RotateState
+android.graphics.drawable.RotateDrawable)
+
+public boolean canConstantState()
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable newDrawable()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/drawable/RotateDrawable$1;Landroid/graphics/drawable/RotateDrawable$RotateState; )
+public class android.graphics.drawable.RotateDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable$Callback
+
+----------------FIELDS----------------
+
+private static final float MAX_LEVEL
+
+private android.graphics.drawable.RotateDrawable$RotateState mState
+----------------METHODS----------------
+
+public void <init>()
+
+private void <init>(
+android.graphics.drawable.RotateDrawable$RotateState)
+
+ void <init>(
+android.graphics.drawable.RotateDrawable$RotateState
+android.graphics.drawable.RotateDrawable$1)
+
+public void draw(
+android.graphics.Canvas)
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable$ConstantState getConstantState()
+
+public int getIntrinsicHeight()
+
+public int getIntrinsicWidth()
+
+public int getOpacity()
+
+public boolean getPadding(
+android.graphics.Rect)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void inflate(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+public void invalidateDrawable(
+android.graphics.drawable.Drawable)
+
+public boolean isStateful()
+
+protected void onBoundsChange(
+android.graphics.Rect)
+
+protected boolean onLevelChange(
+int)
+
+protected boolean onStateChange(
+int[])
+
+public void scheduleDrawable(
+android.graphics.drawable.Drawable
+java.lang.Runnable
+long)
+
+public void setAlpha(
+int)
+
+public void setColorFilter(
+android.graphics.ColorFilter)
+
+public boolean setVisible(
+boolean
+boolean)
+
+public void unscheduleDrawable(
+android.graphics.drawable.Drawable
+java.lang.Runnable)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/ScaleDrawable; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.graphics.drawable.ScaleDrawable$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =ScaleState )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/ScaleDrawable; )
+final class android.graphics.drawable.ScaleDrawable$ScaleState extends android.graphics.drawable.Drawable$ConstantState
+
+----------------FIELDS----------------
+
+private boolean mCanConstantState
+
+ int mChangingConfigurations
+
+private boolean mCheckedConstantState
+
+ android.graphics.drawable.Drawable mDrawable
+
+ int mGravity
+
+ float mScaleHeight
+
+ float mScaleWidth
+----------------METHODS----------------
+
+ void <init>(
+android.graphics.drawable.ScaleDrawable$ScaleState
+android.graphics.drawable.ScaleDrawable)
+
+ boolean canConstantState()
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable newDrawable()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/drawable/ScaleDrawable$1;Landroid/graphics/drawable/ScaleDrawable$ScaleState; )
+public class android.graphics.drawable.ScaleDrawable extends android.graphics.drawable.Drawable implements android.graphics.drawable.Drawable$Callback
+
+----------------FIELDS----------------
+
+private android.graphics.drawable.ScaleDrawable$ScaleState mScaleState
+
+private final android.graphics.Rect mTmpRect
+----------------METHODS----------------
+
+ void <init>()
+
+public void <init>(
+android.graphics.drawable.Drawable
+int
+float
+float)
+
+private void <init>(
+android.graphics.drawable.ScaleDrawable$ScaleState)
+
+ void <init>(
+android.graphics.drawable.ScaleDrawable$ScaleState
+android.graphics.drawable.ScaleDrawable$1)
+
+private static float getPercent(
+android.content.res.TypedArray
+int)
+
+public void draw(
+android.graphics.Canvas)
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable$ConstantState getConstantState()
+
+public int getIntrinsicHeight()
+
+public int getIntrinsicWidth()
+
+public int getOpacity()
+
+public boolean getPadding(
+android.graphics.Rect)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void inflate(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+public void invalidateDrawable(
+android.graphics.drawable.Drawable)
+
+public boolean isStateful()
+
+protected void onBoundsChange(
+android.graphics.Rect)
+
+protected boolean onLevelChange(
+int)
+
+protected boolean onStateChange(
+int[])
+
+public void scheduleDrawable(
+android.graphics.drawable.Drawable
+java.lang.Runnable
+long)
+
+public void setAlpha(
+int)
+
+public void setColorFilter(
+android.graphics.ColorFilter)
+
+public boolean setVisible(
+boolean
+boolean)
+
+public void unscheduleDrawable(
+android.graphics.drawable.Drawable
+java.lang.Runnable)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/ShapeDrawable; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.graphics.drawable.ShapeDrawable$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =ShaderFactory )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/ShapeDrawable; )
+public abstract class android.graphics.drawable.ShapeDrawable$ShaderFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public abstract android.graphics.Shader resize(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =ShapeState )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/ShapeDrawable; )
+final class android.graphics.drawable.ShapeDrawable$ShapeState extends android.graphics.drawable.Drawable$ConstantState
+
+----------------FIELDS----------------
+
+ int mAlpha
+
+ int mChangingConfigurations
+
+ int mIntrinsicHeight
+
+ int mIntrinsicWidth
+
+ android.graphics.Rect mPadding
+
+ android.graphics.Paint mPaint
+
+ android.graphics.drawable.ShapeDrawable$ShaderFactory mShaderFactory
+
+ android.graphics.drawable.shapes.Shape mShape
+----------------METHODS----------------
+
+ void <init>(
+android.graphics.drawable.ShapeDrawable$ShapeState)
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable newDrawable()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/StateListDrawable; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.graphics.drawable.StateListDrawable$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/StateListDrawable; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =StateListState )
+final class android.graphics.drawable.StateListDrawable$StateListState extends android.graphics.drawable.DrawableContainer$DrawableContainerState
+
+----------------FIELDS----------------
+
+private int[][] mStateSets
+----------------METHODS----------------
+
+ void <init>(
+android.graphics.drawable.StateListDrawable$StateListState
+android.graphics.drawable.StateListDrawable)
+
+static int access$000(
+android.graphics.drawable.StateListDrawable$StateListState
+int[])
+
+private int indexOfStateSet(
+int[])
+
+ int addStateSet(
+int[]
+android.graphics.drawable.Drawable)
+
+public void growArray(
+int
+int)
+
+public android.graphics.drawable.Drawable newDrawable()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/drawable/StateListDrawable$1;Landroid/graphics/drawable/StateListDrawable$StateListState; )
+public class android.graphics.drawable.StateListDrawable extends android.graphics.drawable.DrawableContainer
+
+----------------FIELDS----------------
+
+private final android.graphics.drawable.StateListDrawable$StateListState mStateListState
+----------------METHODS----------------
+
+public void <init>()
+
+private void <init>(
+android.graphics.drawable.StateListDrawable$StateListState)
+
+ void <init>(
+android.graphics.drawable.StateListDrawable$StateListState
+android.graphics.drawable.StateListDrawable$1)
+
+public void addState(
+int[]
+android.graphics.drawable.Drawable)
+
+ android.graphics.drawable.StateListDrawable$StateListState getStateListState()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void inflate(
+android.content.res.Resources
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+public boolean isStateful()
+
+protected boolean onStateChange(
+int[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/TransitionDrawable; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.graphics.drawable.TransitionDrawable$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =TransitionState )
+@dalvik.annotation.EnclosingClass (value =Landroid/graphics/drawable/TransitionDrawable; )
+ class android.graphics.drawable.TransitionDrawable$TransitionState extends android.graphics.drawable.LayerDrawable$LayerState
+
+----------------FIELDS----------------
+
+ int mAlpha
+
+ boolean mCrossFade
+
+ int mDuration
+----------------METHODS----------------
+
+ void <init>(
+android.graphics.drawable.TransitionDrawable$TransitionState
+android.graphics.drawable.TransitionDrawable)
+
+public int getChangingConfigurations()
+
+public android.graphics.drawable.Drawable newDrawable()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/graphics/drawable/TransitionDrawable$1;Landroid/graphics/drawable/TransitionDrawable$TransitionState; )
+public class android.graphics.drawable.TransitionDrawable extends android.graphics.drawable.LayerDrawable implements android.graphics.drawable.Drawable$Callback
+
+----------------FIELDS----------------
+
+private static final int TRANSITION_NONE
+
+private static final int TRANSITION_RUNNING
+
+private static final int TRANSITION_STARTING
+
+private int mDuration
+
+private int mFrom
+
+private boolean mReverse
+
+private long mStartTimeMillis
+
+private android.graphics.drawable.TransitionDrawable$TransitionState mState
+
+private int mTo
+
+private int mTransitionState
+----------------METHODS----------------
+
+ void <init>()
+
+private void <init>(
+android.graphics.drawable.TransitionDrawable$TransitionState)
+
+ void <init>(
+android.graphics.drawable.TransitionDrawable$TransitionState
+android.graphics.drawable.TransitionDrawable$1)
+
+ android.graphics.drawable.LayerDrawable$LayerState createConstantState(
+android.graphics.drawable.LayerDrawable$LayerState)
+
+public void draw(
+android.graphics.Canvas)
+
+public boolean isCrossFadeEnabled()
+
+public void resetTransition()
+
+public void reverseTransition(
+int)
+
+public void setCrossFadeEnabled(
+boolean)
+
+public void startTransition(
+int)
+
+________________CLASS________________
+
+
+public abstract class android.graphics.drawable.shapes.Shape extends java.lang.Object
+
+----------------FIELDS----------------
+
+private float mHeight
+
+private float mWidth
+----------------METHODS----------------
+
+public void <init>()
+
+public abstract void draw(
+android.graphics.Canvas
+android.graphics.Paint)
+
+public final float getHeight()
+
+public final float getWidth()
+
+public boolean hasAlpha()
+
+protected void onResize(
+float
+float)
+
+public final void resize(
+float
+float)
+
+________________CLASS________________
+
+
+public class android.graphics.drawable.shapes.RectShape extends android.graphics.drawable.shapes.Shape
+
+----------------FIELDS----------------
+
+private android.graphics.RectF mRect
+----------------METHODS----------------
+
+public void <init>()
+
+public void draw(
+android.graphics.Canvas
+android.graphics.Paint)
+
+protected void onResize(
+float
+float)
+
+protected final android.graphics.RectF rect()
+
+________________CLASS________________
+
+
+public class android.graphics.drawable.shapes.ArcShape extends android.graphics.drawable.shapes.RectShape
+
+----------------FIELDS----------------
+
+private float mStart
+
+private float mSweep
+----------------METHODS----------------
+
+public void <init>(
+float
+float)
+
+public void draw(
+android.graphics.Canvas
+android.graphics.Paint)
+
+________________CLASS________________
+
+
+public class android.graphics.drawable.shapes.OvalShape extends android.graphics.drawable.shapes.RectShape
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void draw(
+android.graphics.Canvas
+android.graphics.Paint)
+
+________________CLASS________________
+
+
+public class android.graphics.drawable.shapes.PathShape extends android.graphics.drawable.shapes.Shape
+
+----------------FIELDS----------------
+
+private android.graphics.Path mPath
+
+private float mScaleX
+
+private float mScaleY
+
+private float mStdHeight
+
+private float mStdWidth
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.Path
+float
+float)
+
+public void draw(
+android.graphics.Canvas
+android.graphics.Paint)
+
+protected void onResize(
+float
+float)
+
+________________CLASS________________
+
+
+public class android.graphics.drawable.shapes.RoundRectShape extends android.graphics.drawable.shapes.RectShape
+
+----------------FIELDS----------------
+
+private float[] mInnerRadii
+
+private android.graphics.RectF mInnerRect
+
+private android.graphics.RectF mInset
+
+private float[] mOuterRadii
+
+private android.graphics.Path mPath
+----------------METHODS----------------
+
+public void <init>(
+float[]
+android.graphics.RectF
+float[])
+
+public void draw(
+android.graphics.Canvas
+android.graphics.Paint)
+
+protected void onResize(
+float
+float)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/hardware/Camera; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.hardware.Camera$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/hardware/Camera; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =AutoFocusCallback )
+public abstract interface class android.hardware.Camera$AutoFocusCallback extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onAutoFocus(
+boolean
+android.hardware.Camera)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/hardware/Camera; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ErrorCallback )
+public abstract interface class android.hardware.Camera$ErrorCallback extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onError(
+int
+android.hardware.Camera)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =EventHandler )
+@dalvik.annotation.EnclosingClass (value =Landroid/hardware/Camera; )
+ class android.hardware.Camera$EventHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+private android.hardware.Camera mCamera
+
+final android.hardware.Camera this$0
+----------------METHODS----------------
+
+public void <init>(
+android.hardware.Camera
+android.hardware.Camera
+android.os.Looper)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/hardware/Camera; )
+@dalvik.annotation.InnerClass (accessFlags =1 name =Parameters )
+public class android.hardware.Camera$Parameters extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>; )
+private java.util.HashMap mMap
+
+final android.hardware.Camera this$0
+----------------METHODS----------------
+
+private void <init>(
+android.hardware.Camera)
+
+ void <init>(
+android.hardware.Camera
+android.hardware.Camera$1)
+
+private java.lang.String cameraFormatForPixelFormat(
+int)
+
+private int pixelFormatForCameraFormat(
+java.lang.String)
+
+public void dump()
+
+public java.lang.String flatten()
+
+public java.lang.String get(
+java.lang.String)
+
+public int getInt(
+java.lang.String)
+
+public int getPictureFormat()
+
+public android.hardware.Camera$Size getPictureSize()
+
+public int getPreviewFormat()
+
+public int getPreviewFrameRate()
+
+public android.hardware.Camera$Size getPreviewSize()
+
+public void remove(
+java.lang.String)
+
+public void set(
+java.lang.String
+int)
+
+public void set(
+java.lang.String
+java.lang.String)
+
+public void setPictureFormat(
+int)
+
+public void setPictureSize(
+int
+int)
+
+public void setPreviewFormat(
+int)
+
+public void setPreviewFrameRate(
+int)
+
+public void setPreviewSize(
+int
+int)
+
+public void unflatten(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/hardware/Camera; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =PictureCallback )
+public abstract interface class android.hardware.Camera$PictureCallback extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onPictureTaken(
+byte[]
+android.hardware.Camera)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/hardware/Camera; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =PreviewCallback )
+public abstract interface class android.hardware.Camera$PreviewCallback extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onPreviewFrame(
+byte[]
+android.hardware.Camera)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ShutterCallback )
+@dalvik.annotation.EnclosingClass (value =Landroid/hardware/Camera; )
+public abstract interface class android.hardware.Camera$ShutterCallback extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onShutter()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/hardware/Camera; )
+@dalvik.annotation.InnerClass (accessFlags =1 name =Size )
+public class android.hardware.Camera$Size extends java.lang.Object
+
+----------------FIELDS----------------
+
+public int height
+
+final android.hardware.Camera this$0
+
+public int width
+----------------METHODS----------------
+
+public void <init>(
+android.hardware.Camera
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/hardware/Camera$1;Landroid/hardware/Camera$Parameters;Landroid/hardware/Camera$Size;Landroid/hardware/Camera$ErrorCallback;Landroid/hardware/Camera$PictureCallback;Landroid/hardware/Camera$ShutterCallback;Landroid/hardware/Camera$AutoFocusCallback;Landroid/hardware/Camera$EventHandler;Landroid/hardware/Camera$PreviewCallback; )
+public class android.hardware.Camera extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int AUTOFOCUS_CALLBACK
+
+public static final int CAMERA_ERROR_SERVER_DIED
+
+public static final int CAMERA_ERROR_UNKNOWN
+
+private static final int ERROR_CALLBACK
+
+private static final int JPEG_PICTURE_CALLBACK
+
+private static final int PREVIEW_CALLBACK
+
+private static final int RAW_PICTURE_CALLBACK
+
+private static final int SHUTTER_CALLBACK
+
+private static final java.lang.String TAG
+
+private android.hardware.Camera$AutoFocusCallback mAutoFocusCallback
+
+private android.hardware.Camera$ErrorCallback mErrorCallback
+
+private android.hardware.Camera$EventHandler mEventHandler
+
+private android.hardware.Camera$PictureCallback mJpegCallback
+
+private int mListenerContext
+
+private int mNativeContext
+
+private android.hardware.Camera$PreviewCallback mPreviewCallback
+
+private android.hardware.Camera$PictureCallback mRawImageCallback
+
+private android.hardware.Camera$ShutterCallback mShutterCallback
+----------------METHODS----------------
+
+ void <init>()
+
+static android.hardware.Camera$ShutterCallback access$000(
+android.hardware.Camera)
+
+static android.hardware.Camera$PictureCallback access$100(
+android.hardware.Camera)
+
+static android.hardware.Camera$PictureCallback access$200(
+android.hardware.Camera)
+
+static android.hardware.Camera$PreviewCallback access$300(
+android.hardware.Camera)
+
+static android.hardware.Camera$AutoFocusCallback access$400(
+android.hardware.Camera)
+
+static android.hardware.Camera$ErrorCallback access$500(
+android.hardware.Camera)
+
+private final native void native_autoFocus()
+
+private final native java.lang.String native_getParameters()
+
+private final native void native_release()
+
+private final native void native_setParameters(
+java.lang.String)
+
+private final native void native_setup(
+java.lang.Object)
+
+private final native void native_takePicture()
+
+public static android.hardware.Camera open()
+
+private static void postEventFromNative(
+java.lang.Object
+int
+int
+int
+java.lang.Object)
+
+private final native void setHasPreviewCallback(
+boolean)
+
+private final native void setPreviewDisplay(
+android.view.Surface)
+
+public final void autoFocus(
+android.hardware.Camera$AutoFocusCallback)
+
+protected void finalize()
+
+public android.hardware.Camera$Parameters getParameters()
+
+public final void release()
+
+public final void setErrorCallback(
+android.hardware.Camera$ErrorCallback)
+
+public void setParameters(
+android.hardware.Camera$Parameters)
+
+public final void setPreviewCallback(
+android.hardware.Camera$PreviewCallback)
+
+public final void setPreviewDisplay(
+android.view.SurfaceHolder)
+
+public final native void startPreview()
+
+public final native void stopPreview()
+
+public final void takePicture(
+android.hardware.Camera$ShutterCallback
+android.hardware.Camera$PictureCallback
+android.hardware.Camera$PictureCallback)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/hardware/ISensorService$Stub; )
+public abstract interface class android.hardware.ISensorService extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean enableSensor(
+android.os.IBinder
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.os.ParcelFileDescriptor getDataChanel()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void reportAccuracy(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/hardware/ISensorService$Stub; )
+ class android.hardware.ISensorService$Stub$Proxy extends java.lang.Object implements android.hardware.ISensorService
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean enableSensor(
+android.os.IBinder
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.os.ParcelFileDescriptor getDataChanel()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void reportAccuracy(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.MemberClasses (value =Landroid/hardware/ISensorService$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/hardware/ISensorService; )
+public abstract class android.hardware.ISensorService$Stub extends android.os.Binder implements android.hardware.ISensorService
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_enableSensor
+
+static final int TRANSACTION_getDataChanel
+
+static final int TRANSACTION_reportAccuracy
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.hardware.ISensorService asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public abstract interface class android.hardware.SensorListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onAccuracyChanged(
+int
+int)
+
+public abstract void onSensorChanged(
+int
+float[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/hardware/SensorManager; )
+ class android.hardware.SensorManager$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/hardware/SensorManager$ListenerDelegate; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.hardware.SensorManager$ListenerDelegate$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.hardware.SensorManager$ListenerDelegate this$1
+----------------METHODS----------------
+
+ void <init>(
+android.hardware.SensorManager$ListenerDelegate
+android.os.Looper)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =ListenerDelegate )
+@dalvik.annotation.EnclosingClass (value =Landroid/hardware/SensorManager; )
+ class android.hardware.SensorManager$ListenerDelegate extends android.os.Binder
+
+----------------FIELDS----------------
+
+private final android.os.Handler mHandler
+
+private android.hardware.SensorListener mListener
+
+private int mSensors
+
+private float[] mValuesPool
+
+final android.hardware.SensorManager this$0
+----------------METHODS----------------
+
+ void <init>(
+android.hardware.SensorManager
+android.hardware.SensorListener
+int)
+
+static android.hardware.SensorListener access$1000(
+android.hardware.SensorManager$ListenerDelegate)
+
+static float[] access$1100(
+android.hardware.SensorManager$ListenerDelegate)
+
+static float[] access$1102(
+android.hardware.SensorManager$ListenerDelegate
+float[])
+
+static int access$300(
+android.hardware.SensorManager$ListenerDelegate)
+
+ int addSensors(
+int)
+
+ boolean hasSensor(
+int)
+
+ void onSensorChanged(
+int
+float[]
+int)
+
+ int removeSensors(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/hardware/SensorManager$SensorThread; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =SensorThreadRunnable )
+ class android.hardware.SensorManager$SensorThread$SensorThreadRunnable extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private final byte[] mAccuracies
+
+private android.os.ParcelFileDescriptor mSensorDataFd
+
+private android.hardware.ISensorService mSensorService
+
+final android.hardware.SensorManager$SensorThread this$0
+----------------METHODS----------------
+
+ void <init>(
+android.hardware.SensorManager$SensorThread
+android.os.ParcelFileDescriptor
+android.hardware.ISensorService)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/hardware/SensorManager; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =SensorThread )
+@dalvik.annotation.MemberClasses (value =Landroid/hardware/SensorManager$SensorThread$SensorThreadRunnable; )
+ class android.hardware.SensorManager$SensorThread extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.Thread mThread
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.hardware.SensorManager$1)
+
+static java.lang.Thread access$602(
+android.hardware.SensorManager$SensorThread
+java.lang.Thread)
+
+ void startLocked(
+android.hardware.ISensorService)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/IRotationWatcher$Stub; )
+public abstract interface class android.view.IRotationWatcher extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onRotationChanged(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/IRotationWatcher; )
+@dalvik.annotation.MemberClasses (value =Landroid/view/IRotationWatcher$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class android.view.IRotationWatcher$Stub extends android.os.Binder implements android.view.IRotationWatcher
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_onRotationChanged
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.view.IRotationWatcher asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/hardware/SensorManager$1;Landroid/hardware/SensorManager$ListenerDelegate;Landroid/hardware/SensorManager$SensorThread; )
+public class android.hardware.SensorManager extends android.view.IRotationWatcher$Stub
+
+----------------FIELDS----------------
+
+public static final int DATA_X
+
+public static final int DATA_Y
+
+public static final int DATA_Z
+
+public static final float GRAVITY_DEATH_STAR_I
+
+public static final float GRAVITY_EARTH
+
+public static final float GRAVITY_JUPITER
+
+public static final float GRAVITY_MARS
+
+public static final float GRAVITY_MERCURY
+
+public static final float GRAVITY_MOON
+
+public static final float GRAVITY_NEPTUN
+
+public static final float GRAVITY_PLUTO
+
+public static final float GRAVITY_SATURN
+
+public static final float GRAVITY_SUN
+
+public static final float GRAVITY_THE_ISLAND
+
+public static final float GRAVITY_URANUS
+
+public static final float GRAVITY_VENUS
+
+public static final float LIGHT_CLOUDY
+
+public static final float LIGHT_FULLMOON
+
+public static final float LIGHT_NO_MOON
+
+public static final float LIGHT_OVERCAST
+
+public static final float LIGHT_SHADE
+
+public static final float LIGHT_SUNLIGHT
+
+public static final float LIGHT_SUNLIGHT_MAX
+
+public static final float LIGHT_SUNRISE
+
+public static final float MAGNETIC_FIELD_EARTH_MAX
+
+public static final float MAGNETIC_FIELD_EARTH_MIN
+
+public static final int RAW_DATA_INDEX
+
+public static final int RAW_DATA_X
+
+public static final int RAW_DATA_Y
+
+public static final int RAW_DATA_Z
+
+public static final int SENSOR_ACCELEROMETER
+
+public static final int SENSOR_ALL
+
+public static final int SENSOR_DELAY_FASTEST
+
+public static final int SENSOR_DELAY_GAME
+
+public static final int SENSOR_DELAY_NORMAL
+
+public static final int SENSOR_DELAY_UI
+
+private static final int SENSOR_DISABLE
+
+public static final int SENSOR_LIGHT
+
+public static final int SENSOR_MAGNETIC_FIELD
+
+public static final int SENSOR_MAX
+
+public static final int SENSOR_MIN
+
+private static final int SENSOR_ORDER_MASK
+
+public static final int SENSOR_ORIENTATION
+
+public static final int SENSOR_ORIENTATION_RAW
+
+public static final int SENSOR_PROXIMITY
+
+public static final int SENSOR_STATUS_ACCURACY_HIGH
+
+public static final int SENSOR_STATUS_ACCURACY_LOW
+
+public static final int SENSOR_STATUS_ACCURACY_MEDIUM
+
+private static final int SENSOR_STATUS_SHIFT
+
+public static final int SENSOR_STATUS_UNRELIABLE
+
+public static final int SENSOR_TEMPERATURE
+
+public static final int SENSOR_TRICORDER
+
+public static final float STANDARD_GRAVITY
+
+private static final java.lang.String TAG
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/hardware/SensorManager$ListenerDelegate;>; )
+private static final java.util.ArrayList sListeners
+
+private static int sRotation
+
+private static final android.hardware.SensorManager$SensorThread sSensorThread
+
+private static android.view.IWindowManager sWindowManager
+
+private android.os.Looper mLooper
+
+private android.hardware.ISensorService mSensorService
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.os.Looper)
+
+private static native int _sensors_data_close()
+
+private static native int _sensors_data_get_sensors()
+
+private static native int _sensors_data_open(
+java.io.FileDescriptor)
+
+private static native int _sensors_data_poll(
+float[]
+int)
+
+static java.util.ArrayList access$100()
+
+static int access$200(
+java.io.FileDescriptor)
+
+static int access$400(
+float[]
+int)
+
+static int access$500()
+
+static int access$700()
+
+static void access$800(
+int
+float[]
+int)
+
+static android.os.Looper access$900(
+android.hardware.SensorManager)
+
+private static int getRotation()
+
+private static void mapSensorDataToWindow(
+int
+float[]
+int)
+
+public int getSensors()
+
+public void onRotationChanged(
+int)
+
+public boolean registerListener(
+android.hardware.SensorListener
+int)
+
+public boolean registerListener(
+android.hardware.SensorListener
+int
+int)
+
+public void unregisterListener(
+android.hardware.SensorListener)
+
+public void unregisterListener(
+android.hardware.SensorListener
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/location/Address;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/location/Address; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.location.Address$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.location.Address createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.location.Address[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.location.Address extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/location/Address;>; )
+public static final android.os.Parcelable$Creator CREATOR
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/String;>; )
+private java.util.HashMap mAddressLines
+
+private java.lang.String mAdminArea
+
+private java.lang.String mCountryCode
+
+private java.lang.String mCountryName
+
+private android.os.Bundle mExtras
+
+private java.lang.String mFeatureName
+
+private boolean mHasLatitude
+
+private boolean mHasLongitude
+
+private double mLatitude
+
+private java.util.Locale mLocale
+
+private java.lang.String mLocality
+
+private double mLongitude
+
+private int mMaxAddressLineIndex
+
+private java.lang.String mPhone
+
+private java.lang.String mPostalCode
+
+private java.lang.String mSubAdminArea
+
+private java.lang.String mThoroughfare
+
+private java.lang.String mUrl
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.util.Locale)
+
+static java.util.HashMap access$000(
+android.location.Address)
+
+static java.util.HashMap access$002(
+android.location.Address
+java.util.HashMap)
+
+static int access$100(
+android.location.Address)
+
+static boolean access$1000(
+android.location.Address)
+
+static boolean access$1002(
+android.location.Address
+boolean)
+
+static int access$102(
+android.location.Address
+int)
+
+static double access$1102(
+android.location.Address
+double)
+
+static boolean access$1200(
+android.location.Address)
+
+static boolean access$1202(
+android.location.Address
+boolean)
+
+static double access$1302(
+android.location.Address
+double)
+
+static java.lang.String access$1402(
+android.location.Address
+java.lang.String)
+
+static java.lang.String access$1502(
+android.location.Address
+java.lang.String)
+
+static android.os.Bundle access$1602(
+android.location.Address
+android.os.Bundle)
+
+static java.lang.String access$202(
+android.location.Address
+java.lang.String)
+
+static java.lang.String access$302(
+android.location.Address
+java.lang.String)
+
+static java.lang.String access$402(
+android.location.Address
+java.lang.String)
+
+static java.lang.String access$502(
+android.location.Address
+java.lang.String)
+
+static java.lang.String access$602(
+android.location.Address
+java.lang.String)
+
+static java.lang.String access$702(
+android.location.Address
+java.lang.String)
+
+static java.lang.String access$802(
+android.location.Address
+java.lang.String)
+
+static java.lang.String access$902(
+android.location.Address
+java.lang.String)
+
+public void clearLatitude()
+
+public void clearLongitude()
+
+public int describeContents()
+
+public java.lang.String getAddressLine(
+int)
+
+public java.lang.String getAdminArea()
+
+public java.lang.String getCountryCode()
+
+public java.lang.String getCountryName()
+
+public android.os.Bundle getExtras()
+
+public java.lang.String getFeatureName()
+
+public double getLatitude()
+
+public java.util.Locale getLocale()
+
+public java.lang.String getLocality()
+
+public double getLongitude()
+
+public int getMaxAddressLineIndex()
+
+public java.lang.String getPhone()
+
+public java.lang.String getPostalCode()
+
+public java.lang.String getSubAdminArea()
+
+public java.lang.String getThoroughfare()
+
+public java.lang.String getUrl()
+
+public boolean hasLatitude()
+
+public boolean hasLongitude()
+
+public void setAddressLine(
+int
+java.lang.String)
+
+public void setAdminArea(
+java.lang.String)
+
+public void setCountryCode(
+java.lang.String)
+
+public void setCountryName(
+java.lang.String)
+
+public void setExtras(
+android.os.Bundle)
+
+public void setFeatureName(
+java.lang.String)
+
+public void setLatitude(
+double)
+
+public void setLocality(
+java.lang.String)
+
+public void setLongitude(
+double)
+
+public void setPhone(
+java.lang.String)
+
+public void setPostalCode(
+java.lang.String)
+
+public void setSubAdminArea(
+java.lang.String)
+
+public void setThoroughfare(
+java.lang.String)
+
+public void setUrl(
+java.lang.String)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/location/Criteria; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/location/Criteria;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.location.Criteria$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.location.Criteria createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.location.Criteria[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.location.Criteria extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+
+public static final int ACCURACY_COARSE
+
+public static final int ACCURACY_FINE
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/location/Criteria;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final int NO_REQUIREMENT
+
+public static final int POWER_HIGH
+
+public static final int POWER_LOW
+
+public static final int POWER_MEDIUM
+
+private int mAccuracy
+
+private boolean mAltitudeRequired
+
+private boolean mBearingRequired
+
+private boolean mCostAllowed
+
+private int mPowerRequirement
+
+private boolean mSpeedRequired
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+android.location.Criteria)
+
+static int access$002(
+android.location.Criteria
+int)
+
+static int access$102(
+android.location.Criteria
+int)
+
+static boolean access$202(
+android.location.Criteria
+boolean)
+
+static boolean access$302(
+android.location.Criteria
+boolean)
+
+static boolean access$402(
+android.location.Criteria
+boolean)
+
+static boolean access$502(
+android.location.Criteria
+boolean)
+
+public int describeContents()
+
+public int getAccuracy()
+
+public int getPowerRequirement()
+
+public boolean isAltitudeRequired()
+
+public boolean isBearingRequired()
+
+public boolean isCostAllowed()
+
+public boolean isSpeedRequired()
+
+public void setAccuracy(
+int)
+
+public void setAltitudeRequired(
+boolean)
+
+public void setBearingRequired(
+boolean)
+
+public void setCostAllowed(
+boolean)
+
+public void setPowerRequirement(
+int)
+
+public void setSpeedRequired(
+boolean)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public abstract class android.location.LocationProvider extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int AVAILABLE
+
+static final java.lang.String BAD_CHARS_REGEX
+
+public static final int OUT_OF_SERVICE
+
+private static final java.lang.String TAG
+
+public static final int TEMPORARILY_UNAVAILABLE
+
+private java.lang.String mName
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+public abstract int getAccuracy()
+
+public java.lang.String getName()
+
+public abstract int getPowerRequirement()
+
+public abstract boolean hasMonetaryCost()
+
+public boolean meetsCriteria(
+android.location.Criteria)
+
+public abstract boolean requiresCell()
+
+public abstract boolean requiresNetwork()
+
+public abstract boolean requiresSatellite()
+
+public abstract boolean supportsAltitude()
+
+public abstract boolean supportsBearing()
+
+public abstract boolean supportsSpeed()
+
+________________CLASS________________
+
+
+ class android.location.DummyLocationProvider extends android.location.LocationProvider
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+ int mAccuracy
+
+ boolean mHasMonetaryCost
+
+ java.lang.String mName
+
+ int mPowerRequirement
+
+ boolean mRequiresCell
+
+ boolean mRequiresNetwork
+
+ boolean mRequiresSatellite
+
+ boolean mSupportsAltitude
+
+ boolean mSupportsBearing
+
+ boolean mSupportsSpeed
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+public int getAccuracy()
+
+public int getPowerRequirement()
+
+public boolean hasMonetaryCost()
+
+public boolean requiresCell()
+
+public boolean requiresNetwork()
+
+public boolean requiresSatellite()
+
+public void setAccuracy(
+int)
+
+public void setHasMonetaryCost(
+boolean)
+
+public void setPowerRequirement(
+int)
+
+public void setRequiresCell(
+boolean)
+
+public void setRequiresNetwork(
+boolean)
+
+public void setRequiresSatellite(
+boolean)
+
+public void setSupportsAltitude(
+boolean)
+
+public void setSupportsBearing(
+boolean)
+
+public void setSupportsSpeed(
+boolean)
+
+public boolean supportsAltitude()
+
+public boolean supportsBearing()
+
+public boolean supportsSpeed()
+
+________________CLASS________________
+
+
+public final class android.location.Geocoder extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private java.lang.String mAppName
+
+private java.lang.String mCountry
+
+private java.lang.String mLanguage
+
+private android.location.ILocationManager mService
+
+private java.lang.String mVariant
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+java.util.Locale)
+@dalvik.annotation.Signature (value =(DDI)Ljava/util/List<Landroid/location/Address;>; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.List getFromLocation(
+double
+double
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;I)Ljava/util/List<Landroid/location/Address;>; )
+public java.util.List getFromLocationName(
+java.lang.String
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;IDDDD)Ljava/util/List<Landroid/location/Address;>; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.List getFromLocationName(
+java.lang.String
+int
+double
+double
+double
+double)
+
+________________CLASS________________
+
+
+public abstract interface class android.location.GpsStatusListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onFirstFix(
+int)
+
+public abstract void onGpsStarted()
+
+public abstract void onGpsStopped()
+
+public abstract void onSvStatusChanged(
+int
+int[]
+float[]
+float[]
+float[]
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/location/IGpsStatusListener$Stub; )
+public abstract interface class android.location.IGpsStatusListener extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onFirstFix(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onGpsStarted()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onGpsStopped()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onSvStatusChanged(
+int
+int[]
+float[]
+float[]
+float[]
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/location/IGpsStatusListener$Stub; )
+ class android.location.IGpsStatusListener$Stub$Proxy extends java.lang.Object implements android.location.IGpsStatusListener
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onFirstFix(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onGpsStarted()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onGpsStopped()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onSvStatusChanged(
+int
+int[]
+float[]
+float[]
+float[]
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/location/IGpsStatusListener; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.MemberClasses (value =Landroid/location/IGpsStatusListener$Stub$Proxy; )
+public abstract class android.location.IGpsStatusListener$Stub extends android.os.Binder implements android.location.IGpsStatusListener
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_onFirstFix
+
+static final int TRANSACTION_onGpsStarted
+
+static final int TRANSACTION_onGpsStopped
+
+static final int TRANSACTION_onSvStatusChanged
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.location.IGpsStatusListener asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/location/ILocationListener$Stub; )
+public abstract interface class android.location.ILocationListener extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onLocationChanged(
+android.location.Location)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onProviderDisabled(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onProviderEnabled(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onStatusChanged(
+java.lang.String
+int
+android.os.Bundle)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/location/ILocationListener$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class android.location.ILocationListener$Stub$Proxy extends java.lang.Object implements android.location.ILocationListener
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onLocationChanged(
+android.location.Location)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onProviderDisabled(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onProviderEnabled(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onStatusChanged(
+java.lang.String
+int
+android.os.Bundle)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/location/ILocationListener$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/location/ILocationListener; )
+public abstract class android.location.ILocationListener$Stub extends android.os.Binder implements android.location.ILocationListener
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_onLocationChanged
+
+static final int TRANSACTION_onProviderDisabled
+
+static final int TRANSACTION_onProviderEnabled
+
+static final int TRANSACTION_onStatusChanged
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.location.ILocationListener asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/location/ILocationManager$Stub; )
+public abstract interface class android.location.ILocationManager extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean addGpsStatusListener(
+android.location.IGpsStatusListener)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void addProximityAlert(
+double
+double
+float
+long
+android.app.PendingIntent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void addTestProvider(
+java.lang.String
+boolean
+boolean
+boolean
+boolean
+boolean
+boolean
+boolean
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void clearTestProviderEnabled(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void clearTestProviderLocation(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void clearTestProviderStatus(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.util.List getAllProviders()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(DDILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List<Landroid/location/Address;>;)Ljava/lang/String; )
+public abstract java.lang.String getFromLocation(
+double
+double
+int
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.util.List)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;DDDDILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List<Landroid/location/Address;>;)Ljava/lang/String; )
+public abstract java.lang.String getFromLocationName(
+java.lang.String
+double
+double
+double
+double
+int
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.util.List)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.location.Location getLastKnownLocation(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.os.Bundle getProviderInfo(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.util.List getProviders(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean isProviderEnabled(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void removeGpsStatusListener(
+android.location.IGpsStatusListener)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void removeProximityAlert(
+android.app.PendingIntent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void removeTestProvider(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void removeUpdates(
+android.location.ILocationListener)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void requestLocationUpdates(
+java.lang.String
+long
+float
+android.location.ILocationListener)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean sendExtraCommand(
+java.lang.String
+java.lang.String
+android.os.Bundle)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setTestProviderEnabled(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setTestProviderLocation(
+java.lang.String
+android.location.Location)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setTestProviderStatus(
+java.lang.String
+int
+android.os.Bundle
+long)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void updateProviders()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/location/ILocationManager$Stub; )
+ class android.location.ILocationManager$Stub$Proxy extends java.lang.Object implements android.location.ILocationManager
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean addGpsStatusListener(
+android.location.IGpsStatusListener)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void addProximityAlert(
+double
+double
+float
+long
+android.app.PendingIntent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void addTestProvider(
+java.lang.String
+boolean
+boolean
+boolean
+boolean
+boolean
+boolean
+boolean
+int
+int)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void clearTestProviderEnabled(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void clearTestProviderLocation(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void clearTestProviderStatus(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.util.List getAllProviders()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(DDILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List<Landroid/location/Address;>;)Ljava/lang/String; )
+public java.lang.String getFromLocation(
+double
+double
+int
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.util.List)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;DDDDILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List<Landroid/location/Address;>;)Ljava/lang/String; )
+public java.lang.String getFromLocationName(
+java.lang.String
+double
+double
+double
+double
+int
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.util.List)
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.location.Location getLastKnownLocation(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.os.Bundle getProviderInfo(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.util.List getProviders(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean isProviderEnabled(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void removeGpsStatusListener(
+android.location.IGpsStatusListener)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void removeProximityAlert(
+android.app.PendingIntent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void removeTestProvider(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void removeUpdates(
+android.location.ILocationListener)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void requestLocationUpdates(
+java.lang.String
+long
+float
+android.location.ILocationListener)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean sendExtraCommand(
+java.lang.String
+java.lang.String
+android.os.Bundle)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setTestProviderEnabled(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setTestProviderLocation(
+java.lang.String
+android.location.Location)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setTestProviderStatus(
+java.lang.String
+int
+android.os.Bundle
+long)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void updateProviders()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/location/ILocationManager$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/location/ILocationManager; )
+public abstract class android.location.ILocationManager$Stub extends android.os.Binder implements android.location.ILocationManager
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_addGpsStatusListener
+
+static final int TRANSACTION_addProximityAlert
+
+static final int TRANSACTION_addTestProvider
+
+static final int TRANSACTION_clearTestProviderEnabled
+
+static final int TRANSACTION_clearTestProviderLocation
+
+static final int TRANSACTION_clearTestProviderStatus
+
+static final int TRANSACTION_getAllProviders
+
+static final int TRANSACTION_getFromLocation
+
+static final int TRANSACTION_getFromLocationName
+
+static final int TRANSACTION_getLastKnownLocation
+
+static final int TRANSACTION_getProviderInfo
+
+static final int TRANSACTION_getProviders
+
+static final int TRANSACTION_isProviderEnabled
+
+static final int TRANSACTION_removeGpsStatusListener
+
+static final int TRANSACTION_removeProximityAlert
+
+static final int TRANSACTION_removeTestProvider
+
+static final int TRANSACTION_removeUpdates
+
+static final int TRANSACTION_requestLocationUpdates
+
+static final int TRANSACTION_sendExtraCommand
+
+static final int TRANSACTION_setTestProviderEnabled
+
+static final int TRANSACTION_setTestProviderLocation
+
+static final int TRANSACTION_setTestProviderStatus
+
+static final int TRANSACTION_updateProviders
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.location.ILocationManager asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/location/Location; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/location/Location;>; )
+final class android.location.Location$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.location.Location createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.location.Location[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.location.Location extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/location/Location;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final int FORMAT_DEGREES
+
+public static final int FORMAT_MINUTES
+
+public static final int FORMAT_SECONDS
+
+private float mAccuracy
+
+private double mAltitude
+
+private float mBearing
+
+private float mDistance
+
+private android.os.Bundle mExtras
+
+private boolean mHasAccuracy
+
+private boolean mHasAltitude
+
+private boolean mHasBearing
+
+private boolean mHasSpeed
+
+private float mInitialBearing
+
+private double mLat1
+
+private double mLat2
+
+private double mLatitude
+
+private double mLon1
+
+private double mLon2
+
+private double mLongitude
+
+private java.lang.String mProvider
+
+private float[] mResults
+
+private float mSpeed
+
+private long mTime
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.location.Location)
+
+public void <init>(
+java.lang.String)
+
+static long access$002(
+android.location.Location
+long)
+
+static float access$1002(
+android.location.Location
+float)
+
+static double access$102(
+android.location.Location
+double)
+
+static android.os.Bundle access$1102(
+android.location.Location
+android.os.Bundle)
+
+static double access$202(
+android.location.Location
+double)
+
+static boolean access$302(
+android.location.Location
+boolean)
+
+static double access$402(
+android.location.Location
+double)
+
+static boolean access$502(
+android.location.Location
+boolean)
+
+static float access$602(
+android.location.Location
+float)
+
+static boolean access$702(
+android.location.Location
+boolean)
+
+static float access$802(
+android.location.Location
+float)
+
+static boolean access$902(
+android.location.Location
+boolean)
+
+private static void computeDistanceAndBearing(
+double
+double
+double
+double
+float[])
+
+public static double convert(
+java.lang.String)
+
+public static java.lang.String convert(
+double
+int)
+
+public static void distanceBetween(
+double
+double
+double
+double
+float[])
+
+public float bearingTo(
+android.location.Location)
+
+public int describeContents()
+
+public float distanceTo(
+android.location.Location)
+
+public float getAccuracy()
+
+public double getAltitude()
+
+public float getBearing()
+
+public android.os.Bundle getExtras()
+
+public double getLatitude()
+
+public double getLongitude()
+
+public java.lang.String getProvider()
+
+public float getSpeed()
+
+public long getTime()
+
+public boolean hasAccuracy()
+
+public boolean hasAltitude()
+
+public boolean hasBearing()
+
+public boolean hasSpeed()
+
+public void removeAccuracy()
+
+public void removeAltitude()
+
+public void removeBearing()
+
+public void removeSpeed()
+
+public void reset()
+
+public void set(
+android.location.Location)
+
+public void setAccuracy(
+float)
+
+public void setAltitude(
+double)
+
+public void setBearing(
+float)
+
+public void setExtras(
+android.os.Bundle)
+
+public void setLatitude(
+double)
+
+public void setLongitude(
+double)
+
+public void setProvider(
+java.lang.String)
+
+public void setSpeed(
+float)
+
+public void setTime(
+long)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public abstract interface class android.location.LocationListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onLocationChanged(
+android.location.Location)
+
+public abstract void onProviderDisabled(
+java.lang.String)
+
+public abstract void onProviderEnabled(
+java.lang.String)
+
+public abstract void onStatusChanged(
+java.lang.String
+int
+android.os.Bundle)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/location/LocationManager; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.location.LocationManager$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/location/LocationManager$GpsStatusListenerTransport; )
+ class android.location.LocationManager$GpsStatusListenerTransport$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.location.LocationManager$GpsStatusListenerTransport this$1
+----------------METHODS----------------
+
+ void <init>(
+android.location.LocationManager$GpsStatusListenerTransport)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =GpsStatusListenerTransport )
+@dalvik.annotation.EnclosingClass (value =Landroid/location/LocationManager; )
+ class android.location.LocationManager$GpsStatusListenerTransport extends android.location.IGpsStatusListener$Stub
+
+----------------FIELDS----------------
+
+private static final int GPS_FIRST_FIX
+
+private static final int GPS_STARTED
+
+private static final int GPS_STOPPED
+
+private static final int GPS_SV_STATUS
+
+private int mAlmanacMask
+
+private float[] mAzimuths
+
+private float[] mElevations
+
+private int mEphemerisMask
+
+private final android.os.Handler mGpsHandler
+
+private android.location.GpsStatusListener mListener
+
+private int[] mPrns
+
+private float[] mSnrs
+
+private int mSvCount
+
+private int mTTFF
+
+private int mUsedInFixMask
+
+final android.location.LocationManager this$0
+----------------METHODS----------------
+
+ void <init>(
+android.location.LocationManager
+android.location.GpsStatusListener)
+
+static float[] access$1000(
+android.location.LocationManager$GpsStatusListenerTransport)
+
+static float[] access$1100(
+android.location.LocationManager$GpsStatusListenerTransport)
+
+static int access$1200(
+android.location.LocationManager$GpsStatusListenerTransport)
+
+static int access$1300(
+android.location.LocationManager$GpsStatusListenerTransport)
+
+static int access$1400(
+android.location.LocationManager$GpsStatusListenerTransport)
+
+static android.location.GpsStatusListener access$500(
+android.location.LocationManager$GpsStatusListenerTransport)
+
+static int access$600(
+android.location.LocationManager$GpsStatusListenerTransport)
+
+static int access$700(
+android.location.LocationManager$GpsStatusListenerTransport)
+
+static int[] access$800(
+android.location.LocationManager$GpsStatusListenerTransport)
+
+static float[] access$900(
+android.location.LocationManager$GpsStatusListenerTransport)
+
+public void onFirstFix(
+int)
+
+public void onGpsStarted()
+
+public void onGpsStopped()
+
+public void onSvStatusChanged(
+int
+int[]
+float[]
+float[]
+float[]
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.location.LocationManager$ListenerTransport$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.location.LocationManager$ListenerTransport this$1
+
+final android.location.LocationManager val$this$0
+----------------METHODS----------------
+
+ void <init>(
+android.location.LocationManager$ListenerTransport
+android.location.LocationManager)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.location.LocationManager$ListenerTransport$2 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.location.LocationManager$ListenerTransport this$1
+
+final android.location.LocationManager val$this$0
+----------------METHODS----------------
+
+ void <init>(
+android.location.LocationManager$ListenerTransport
+android.os.Looper
+android.location.LocationManager)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =ListenerTransport )
+@dalvik.annotation.EnclosingClass (value =Landroid/location/LocationManager; )
+ class android.location.LocationManager$ListenerTransport extends android.location.ILocationListener$Stub
+
+----------------FIELDS----------------
+
+private static final int TYPE_LOCATION_CHANGED
+
+private static final int TYPE_PROVIDER_DISABLED
+
+private static final int TYPE_PROVIDER_ENABLED
+
+private static final int TYPE_STATUS_CHANGED
+
+private android.location.LocationListener mListener
+
+private final android.os.Handler mListenerHandler
+
+final android.location.LocationManager this$0
+----------------METHODS----------------
+
+ void <init>(
+android.location.LocationManager
+android.location.LocationListener
+android.os.Looper)
+
+private void _handleMessage(
+android.os.Message)
+
+static void access$000(
+android.location.LocationManager$ListenerTransport
+android.os.Message)
+
+public void onLocationChanged(
+android.location.Location)
+
+public void onProviderDisabled(
+java.lang.String)
+
+public void onProviderEnabled(
+java.lang.String)
+
+public void onStatusChanged(
+java.lang.String
+int
+android.os.Bundle)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1026 name =LpComparator )
+@dalvik.annotation.EnclosingClass (value =Landroid/location/LocationManager; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Comparator<Landroid/location/LocationProvider;>; )
+abstract class android.location.LocationManager$LpComparator extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+
+final android.location.LocationManager this$0
+----------------METHODS----------------
+
+private void <init>(
+android.location.LocationManager)
+
+ void <init>(
+android.location.LocationManager
+android.location.LocationManager$1)
+
+public int compare(
+float
+float)
+
+public int compare(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/location/LocationManager; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =LpAccuracyComparator )
+ class android.location.LocationManager$LpAccuracyComparator extends android.location.LocationManager$LpComparator
+
+----------------FIELDS----------------
+
+final android.location.LocationManager this$0
+----------------METHODS----------------
+
+private void <init>(
+android.location.LocationManager)
+
+ void <init>(
+android.location.LocationManager
+android.location.LocationManager$1)
+
+public int compare(
+android.location.LocationProvider
+android.location.LocationProvider)
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+public boolean equals(
+android.location.LocationProvider
+android.location.LocationProvider)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/location/LocationManager; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =LpCapabilityComparator )
+ class android.location.LocationManager$LpCapabilityComparator extends android.location.LocationManager$LpComparator
+
+----------------FIELDS----------------
+
+private static final int ALTITUDE_SCORE
+
+private static final int BEARING_SCORE
+
+private static final int SPEED_SCORE
+
+final android.location.LocationManager this$0
+----------------METHODS----------------
+
+private void <init>(
+android.location.LocationManager)
+
+ void <init>(
+android.location.LocationManager
+android.location.LocationManager$1)
+
+private int score(
+android.location.LocationProvider)
+
+public int compare(
+android.location.LocationProvider
+android.location.LocationProvider)
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+public boolean equals(
+android.location.LocationProvider
+android.location.LocationProvider)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/location/LocationManager; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =LpPowerComparator )
+ class android.location.LocationManager$LpPowerComparator extends android.location.LocationManager$LpComparator
+
+----------------FIELDS----------------
+
+final android.location.LocationManager this$0
+----------------METHODS----------------
+
+private void <init>(
+android.location.LocationManager)
+
+ void <init>(
+android.location.LocationManager
+android.location.LocationManager$1)
+
+public int compare(
+android.location.LocationProvider
+android.location.LocationProvider)
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+public boolean equals(
+android.location.LocationProvider
+android.location.LocationProvider)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/location/LocationManager$1;Landroid/location/LocationManager$GpsStatusListenerTransport;Landroid/location/LocationManager$LpCapabilityComparator;Landroid/location/LocationManager$LpAccuracyComparator;Landroid/location/LocationManager$LpPowerComparator;Landroid/location/LocationManager$LpComparator;Landroid/location/LocationManager$ListenerTransport; )
+public class android.location.LocationManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String GPS_PROVIDER
+
+public static final java.lang.String KEY_PROXIMITY_ENTERING
+
+public static final java.lang.String NETWORK_PROVIDER
+
+public static final java.lang.String PROVIDER_DIR
+
+public static final java.lang.String SYSTEM_DIR
+
+private static final java.lang.String TAG
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Landroid/location/GpsStatusListener;Landroid/location/LocationManager$GpsStatusListenerTransport;>; )
+private java.util.HashMap mGpsStatusListeners
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Landroid/location/LocationListener;Landroid/location/LocationManager$ListenerTransport;>; )
+private java.util.HashMap mListeners
+
+private android.location.ILocationManager mService
+----------------METHODS----------------
+
+public void <init>(
+android.location.ILocationManager)
+
+private void _requestLocationUpdates(
+java.lang.String
+long
+float
+android.location.LocationListener
+android.os.Looper)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Ljava/lang/String;>;)Landroid/location/LocationProvider; )
+private android.location.LocationProvider best(
+java.util.List)
+
+private android.location.LocationProvider createProvider(
+java.lang.String
+android.os.Bundle)
+
+private int nextAccuracy(
+int)
+
+private int nextPower(
+int)
+
+public void addProximityAlert(
+double
+double
+float
+long
+android.app.PendingIntent)
+
+public void addTestProvider(
+java.lang.String
+boolean
+boolean
+boolean
+boolean
+boolean
+boolean
+boolean
+int
+int)
+
+public void clearTestProviderEnabled(
+java.lang.String)
+
+public void clearTestProviderLocation(
+java.lang.String)
+
+public void clearTestProviderStatus(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getAllProviders()
+
+public java.lang.String getBestProvider(
+android.location.Criteria
+boolean)
+
+public android.location.Location getLastKnownLocation(
+java.lang.String)
+
+public android.location.LocationProvider getProvider(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Landroid/location/Criteria;Z)Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getProviders(
+android.location.Criteria
+boolean)
+@dalvik.annotation.Signature (value =(Z)Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getProviders(
+boolean)
+
+public boolean isProviderEnabled(
+java.lang.String)
+
+public boolean registerGpsStatusListener(
+android.location.GpsStatusListener)
+
+public void removeProximityAlert(
+android.app.PendingIntent)
+
+public void removeTestProvider(
+java.lang.String)
+
+public void removeUpdates(
+android.location.LocationListener)
+
+public void requestLocationUpdates(
+java.lang.String
+long
+float
+android.location.LocationListener)
+
+public void requestLocationUpdates(
+java.lang.String
+long
+float
+android.location.LocationListener
+android.os.Looper)
+
+public boolean sendExtraCommand(
+java.lang.String
+java.lang.String
+android.os.Bundle)
+
+public void setTestProviderEnabled(
+java.lang.String
+boolean)
+
+public void setTestProviderLocation(
+java.lang.String
+android.location.Location)
+
+public void setTestProviderStatus(
+java.lang.String
+int
+android.os.Bundle
+long)
+
+public void unregisterGpsStatusListener(
+android.location.GpsStatusListener)
+
+public void updateProviders()
+
+________________CLASS________________
+
+
+public abstract class android.location.LocationProviderImpl extends android.location.LocationProvider
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/location/LocationProviderImpl;>; )
+private static java.util.ArrayList sProviders
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Landroid/location/LocationProviderImpl;>; )
+private static java.util.HashMap sProvidersByName
+
+private boolean mLocationTracking
+
+private long mMinTime
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.lang.String)
+
+public static void addProvider(
+android.location.LocationProviderImpl)
+
+public static android.location.LocationProviderImpl getProvider(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Landroid/location/LocationProviderImpl;>; )
+public static java.util.List getProviders()
+
+public static android.location.LocationProviderImpl loadFromClass(
+java.io.File)
+
+public static void removeProvider(
+android.location.LocationProviderImpl)
+
+public abstract void disable()
+
+public abstract void enable()
+
+public void enableLocationTracking(
+boolean)
+
+public abstract boolean getLocation(
+android.location.Location)
+
+public long getMinTime()
+
+public int getStatus()
+
+public abstract int getStatus(
+android.os.Bundle)
+
+public long getStatusUpdateTime()
+
+public abstract boolean isEnabled()
+
+public boolean isLocationTracking()
+
+public boolean sendExtraCommand(
+java.lang.String
+android.os.Bundle)
+
+public void setMinTime(
+long)
+
+public void updateCellState(
+com.android.internal.location.CellState)
+
+public void updateNetworkState(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/media/AsyncPlayer; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.media.AsyncPlayer$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =Command )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/AsyncPlayer; )
+final class android.media.AsyncPlayer$Command extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int code
+
+ android.content.Context context
+
+ boolean looping
+
+ android.media.AsyncPlayer$Command next
+
+ int stream
+
+ android.net.Uri uri
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.media.AsyncPlayer$1)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/media/AsyncPlayer; )
+@dalvik.annotation.InnerClass (accessFlags =18 name =Thread )
+final class android.media.AsyncPlayer$Thread extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final android.media.AsyncPlayer this$0
+----------------METHODS----------------
+
+ void <init>(
+android.media.AsyncPlayer)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/media/AsyncPlayer$1;Landroid/media/AsyncPlayer$Thread;Landroid/media/AsyncPlayer$Command; )
+public class android.media.AsyncPlayer extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int PLAY
+
+private static final int STOP
+
+private android.media.AsyncPlayer$Command mHead
+
+private java.lang.Object mLock
+
+private android.media.MediaPlayer mPlayer
+
+private int mState
+
+private java.lang.String mTag
+
+private android.media.AsyncPlayer$Command mTail
+
+private android.media.AsyncPlayer$Thread mThread
+
+private android.os.PowerManager$WakeLock mWakeLock
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+static java.lang.String access$000(
+android.media.AsyncPlayer)
+
+static java.lang.Object access$100(
+android.media.AsyncPlayer)
+
+static android.media.AsyncPlayer$Command access$200(
+android.media.AsyncPlayer)
+
+static android.media.AsyncPlayer$Command access$202(
+android.media.AsyncPlayer
+android.media.AsyncPlayer$Command)
+
+static android.media.AsyncPlayer$Command access$300(
+android.media.AsyncPlayer)
+
+static android.media.AsyncPlayer$Command access$302(
+android.media.AsyncPlayer
+android.media.AsyncPlayer$Command)
+
+static android.media.MediaPlayer access$400(
+android.media.AsyncPlayer)
+
+static android.media.MediaPlayer access$402(
+android.media.AsyncPlayer
+android.media.MediaPlayer)
+
+static android.media.AsyncPlayer$Thread access$502(
+android.media.AsyncPlayer
+android.media.AsyncPlayer$Thread)
+
+static void access$600(
+android.media.AsyncPlayer)
+
+private void acquireWakeLock()
+
+private void enqueueLocked(
+android.media.AsyncPlayer$Command)
+
+private void releaseWakeLock()
+
+public void play(
+android.content.Context
+android.net.Uri
+boolean
+int)
+
+public void setUsesWakeLock(
+android.content.Context)
+
+public void stop()
+
+________________CLASS________________
+
+
+public class android.media.AudioManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ADJUST_LOWER
+
+public static final int ADJUST_RAISE
+
+public static final int ADJUST_SAME
+
+private static boolean DEBUG
+
+public static final int[] DEFAULT_STREAM_VOLUME
+
+public static final java.lang.String EXTRA_RINGER_MODE
+
+public static final java.lang.String EXTRA_VIBRATE_SETTING
+
+public static final java.lang.String EXTRA_VIBRATE_TYPE
+
+public static final int FLAG_ALLOW_RINGER_MODES
+
+public static final int FLAG_PLAY_SOUND
+
+public static final int FLAG_REMOVE_SOUND_AND_VIBRATE
+
+public static final int FLAG_SHOW_UI
+
+public static final int FLAG_VIBRATE
+
+public static final int FX_FOCUS_NAVIGATION_DOWN
+
+public static final int FX_FOCUS_NAVIGATION_LEFT
+
+public static final int FX_FOCUS_NAVIGATION_RIGHT
+
+public static final int FX_FOCUS_NAVIGATION_UP
+
+public static final int FX_KEY_CLICK
+
+public static final int[] MAX_STREAM_VOLUME
+
+public static final int MODE_CURRENT
+
+public static final int MODE_INVALID
+
+public static final int MODE_IN_CALL
+
+public static final int MODE_NORMAL
+
+public static final int MODE_RINGTONE
+
+public static final int NUM_SOUND_EFFECTS
+
+public static final int NUM_STREAMS
+
+public static final java.lang.String RINGER_MODE_CHANGED_ACTION
+
+public static final int RINGER_MODE_NORMAL
+
+public static final int RINGER_MODE_SILENT
+
+public static final int RINGER_MODE_VIBRATE
+
+public static final int ROUTE_ALL
+
+public static final int ROUTE_BLUETOOTH
+
+public static final int ROUTE_EARPIECE
+
+public static final int ROUTE_HEADSET
+
+public static final int ROUTE_SPEAKER
+
+public static final int STREAM_ALARM
+
+public static final int STREAM_MUSIC
+
+public static final int STREAM_RING
+
+public static final int STREAM_SYSTEM
+
+public static final int STREAM_VOICE_CALL
+
+private static java.lang.String TAG
+
+public static final int USE_DEFAULT_STREAM_TYPE
+
+public static final java.lang.String VIBRATE_SETTING_CHANGED_ACTION
+
+public static final int VIBRATE_SETTING_OFF
+
+public static final int VIBRATE_SETTING_ON
+
+public static final int VIBRATE_SETTING_ONLY_SILENT
+
+public static final int VIBRATE_TYPE_NOTIFICATION
+
+public static final int VIBRATE_TYPE_RINGER
+
+private static boolean localLOGV
+
+private static android.media.IAudioService sService
+
+private android.database.ContentObserver mContentObserver
+
+private final android.content.Context mContext
+
+private final android.os.Handler mHandler
+
+private android.os.IBinder mICallBack
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+private static android.media.IAudioService getService()
+
+private boolean querySoundEffectsEnabled()
+
+public void adjustStreamVolume(
+int
+int
+int)
+
+public void adjustSuggestedStreamVolume(
+int
+int
+int)
+
+public void adjustVolume(
+int
+int)
+
+public int getMode()
+
+public int getRingerMode()
+
+public int getRouting(
+int)
+
+public int getStreamMaxVolume(
+int)
+
+public int getStreamVolume(
+int)
+
+public int getVibrateSetting(
+int)
+
+public boolean isBluetoothScoOn()
+
+public boolean isMicrophoneMute()
+
+public boolean isMusicActive()
+
+public boolean isSpeakerphoneOn()
+
+public void loadSoundEffects()
+
+public void playSoundEffect(
+int)
+
+public void setBluetoothScoOn(
+boolean)
+
+public void setMicrophoneMute(
+boolean)
+
+public void setMode(
+int)
+
+public void setParameter(
+java.lang.String
+java.lang.String)
+
+public void setRingerMode(
+int)
+
+public void setRouting(
+int
+int
+int)
+
+public void setSpeakerphoneOn(
+boolean)
+
+public void setStreamMute(
+int
+boolean)
+
+public void setStreamSolo(
+int
+boolean)
+
+public void setStreamVolume(
+int
+int
+int)
+
+public void setVibrateSetting(
+int
+int)
+
+public boolean shouldVibrate(
+int)
+
+public void unloadSoundEffects()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/media/AudioSystem; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ErrorCallback )
+public abstract interface class android.media.AudioSystem$ErrorCallback extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onError(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/media/AudioService; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.media.AudioService$1 extends java.lang.Object implements android.media.AudioSystem$ErrorCallback
+
+----------------FIELDS----------------
+
+final android.media.AudioService this$0
+----------------METHODS----------------
+
+ void <init>(
+android.media.AudioService)
+
+public void onError(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnCompletionListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaPlayer; )
+public abstract interface class android.media.MediaPlayer$OnCompletionListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onCompletion(
+android.media.MediaPlayer)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.media.AudioService$AudioHandler$1 extends java.lang.Object implements android.media.MediaPlayer$OnCompletionListener
+
+----------------FIELDS----------------
+
+final android.media.AudioService$AudioHandler this$1
+----------------METHODS----------------
+
+ void <init>(
+android.media.AudioService$AudioHandler)
+
+public void onCompletion(
+android.media.MediaPlayer)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaPlayer; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnErrorListener )
+public abstract interface class android.media.MediaPlayer$OnErrorListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean onError(
+android.media.MediaPlayer
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.media.AudioService$AudioHandler$2 extends java.lang.Object implements android.media.MediaPlayer$OnErrorListener
+
+----------------FIELDS----------------
+
+final android.media.AudioService$AudioHandler this$1
+----------------METHODS----------------
+
+ void <init>(
+android.media.AudioService$AudioHandler)
+
+public boolean onError(
+android.media.MediaPlayer
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =AudioHandler )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/AudioService; )
+ class android.media.AudioService$AudioHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.media.AudioService this$0
+----------------METHODS----------------
+
+private void <init>(
+android.media.AudioService)
+
+ void <init>(
+android.media.AudioService
+android.media.AudioService$1)
+
+static void access$2200(
+android.media.AudioService$AudioHandler
+android.media.MediaPlayer)
+
+private void cleanupPlayer(
+android.media.MediaPlayer)
+
+private void persistRingerMode()
+
+private void persistVibrateSetting()
+
+private void persistVolume(
+android.media.AudioService$VolumeStreamState)
+
+private void playSoundEffect(
+int)
+
+private void setSystemVolume(
+android.media.AudioService$VolumeStreamState)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/media/AudioService; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =AudioSystemThread )
+ class android.media.AudioService$AudioSystemThread extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final android.media.AudioService this$0
+----------------METHODS----------------
+
+ void <init>(
+android.media.AudioService)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/media/AudioService$VolumeStreamState; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =VolumeDeathHandler )
+ class android.media.AudioService$VolumeStreamState$VolumeDeathHandler extends java.lang.Object implements android.os.IBinder$DeathRecipient
+
+----------------FIELDS----------------
+
+private android.os.IBinder mICallback
+
+private int mMuteCount
+
+final android.media.AudioService$VolumeStreamState this$1
+----------------METHODS----------------
+
+ void <init>(
+android.media.AudioService$VolumeStreamState
+android.os.IBinder)
+
+static int access$1100(
+android.media.AudioService$VolumeStreamState$VolumeDeathHandler)
+
+static android.os.IBinder access$1200(
+android.media.AudioService$VolumeStreamState$VolumeDeathHandler)
+
+public void binderDied()
+
+public void mute(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1 name =VolumeStreamState )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/AudioService; )
+@dalvik.annotation.MemberClasses (value =Landroid/media/AudioService$VolumeStreamState$VolumeDeathHandler; )
+public class android.media.AudioService$VolumeStreamState extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/media/AudioService$VolumeStreamState$VolumeDeathHandler;>; )
+private java.util.ArrayList mDeathHandlers
+
+private int mIndex
+
+private int mLastAudibleIndex
+
+private final java.lang.String mLastAudibleVolumeIndexSettingName
+
+private final int mStreamType
+
+private final java.lang.String mVolumeIndexSettingName
+
+private final int[] mVolumes
+
+final android.media.AudioService this$0
+----------------METHODS----------------
+
+private void <init>(
+android.media.AudioService
+java.lang.String
+int
+int[])
+
+ void <init>(
+android.media.AudioService
+java.lang.String
+int
+int[]
+android.media.AudioService$1)
+
+static int[] access$1400(
+android.media.AudioService$VolumeStreamState)
+
+static java.lang.String access$1500(
+android.media.AudioService$VolumeStreamState)
+
+static java.lang.String access$1600(
+android.media.AudioService$VolumeStreamState)
+
+static int access$400(
+android.media.AudioService$VolumeStreamState)
+
+static int access$500(
+android.media.AudioService$VolumeStreamState)
+
+static int access$600(
+android.media.AudioService$VolumeStreamState)
+
+static java.util.ArrayList access$800(
+android.media.AudioService$VolumeStreamState)
+
+static int access$900(
+android.media.AudioService$VolumeStreamState)
+
+private android.media.AudioService$VolumeStreamState$VolumeDeathHandler getDeathHandler(
+android.os.IBinder
+boolean)
+
+private int getValidIndex(
+int)
+
+private int muteCount()
+
+public boolean adjustIndex(
+int)
+
+public int getMaxIndex()
+
+public void mute(
+android.os.IBinder
+boolean)
+
+public boolean setIndex(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/media/IAudioService$Stub; )
+public abstract interface class android.media.IAudioService extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void adjustStreamVolume(
+int
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void adjustSuggestedStreamVolume(
+int
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void adjustVolume(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getMode()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getRingerMode()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getRouting(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getStreamMaxVolume(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getStreamVolume(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getVibrateSetting(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean isMicrophoneMute()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean isMusicActive()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean loadSoundEffects()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void playSoundEffect(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setMicrophoneMute(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setMode(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setParameter(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setRingerMode(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setRouting(
+int
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setStreamMute(
+int
+boolean
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setStreamSolo(
+int
+boolean
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setStreamVolume(
+int
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setVibrateSetting(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean shouldVibrate(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void unloadSoundEffects()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/media/IAudioService$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/IAudioService; )
+public abstract class android.media.IAudioService$Stub extends android.os.Binder implements android.media.IAudioService
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_adjustStreamVolume
+
+static final int TRANSACTION_adjustSuggestedStreamVolume
+
+static final int TRANSACTION_adjustVolume
+
+static final int TRANSACTION_getMode
+
+static final int TRANSACTION_getRingerMode
+
+static final int TRANSACTION_getRouting
+
+static final int TRANSACTION_getStreamMaxVolume
+
+static final int TRANSACTION_getStreamVolume
+
+static final int TRANSACTION_getVibrateSetting
+
+static final int TRANSACTION_isMicrophoneMute
+
+static final int TRANSACTION_isMusicActive
+
+static final int TRANSACTION_loadSoundEffects
+
+static final int TRANSACTION_playSoundEffect
+
+static final int TRANSACTION_setMicrophoneMute
+
+static final int TRANSACTION_setMode
+
+static final int TRANSACTION_setParameter
+
+static final int TRANSACTION_setRingerMode
+
+static final int TRANSACTION_setRouting
+
+static final int TRANSACTION_setStreamMute
+
+static final int TRANSACTION_setStreamSolo
+
+static final int TRANSACTION_setStreamVolume
+
+static final int TRANSACTION_setVibrateSetting
+
+static final int TRANSACTION_shouldVibrate
+
+static final int TRANSACTION_unloadSoundEffects
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.media.IAudioService asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/media/AudioService$AudioHandler;Landroid/media/AudioService$AudioSystemThread;Landroid/media/AudioService$VolumeStreamState; )
+public class android.media.AudioService extends android.media.IAudioService$Stub
+
+----------------FIELDS----------------
+
+private static final int MSG_MEDIA_SERVER_DIED
+
+private static final int MSG_MEDIA_SERVER_STARTED
+
+private static final int MSG_PERSIST_RINGER_MODE
+
+private static final int MSG_PERSIST_VIBRATE_SETTING
+
+private static final int MSG_PERSIST_VOLUME
+
+private static final int MSG_PLAY_SOUND_EFFECT
+
+private static final int MSG_SET_SYSTEM_VOLUME
+
+private static final int NUM_SOUNDPOOL_CHANNELS
+
+private static final int PERSIST_DELAY
+
+private static final int SENDMSG_NOOP
+
+private static final int SENDMSG_QUEUE
+
+private static final int SENDMSG_REPLACE
+
+private static final int SHARED_MSG
+
+private static final java.lang.String SOUND_EFFECTS_PATH
+
+private static final java.lang.String[] SOUND_EFFECT_FILES
+
+private static final float SOUND_EFFECT_VOLUME
+
+private static final java.lang.String TAG
+
+private int[][] SOUND_EFFECT_FILES_MAP
+
+private android.media.AudioService$AudioHandler mAudioHandler
+
+private android.media.AudioSystem$ErrorCallback mAudioSystemCallback
+
+private android.media.AudioService$AudioSystemThread mAudioSystemThread
+
+private android.content.ContentResolver mContentResolver
+
+private android.content.Context mContext
+
+private boolean mMediaServerOk
+
+private boolean mMicMute
+
+private int mMode
+
+private int mMuteAffectedStreams
+
+private int mRingerMode
+
+private int mRingerModeAffectedStreams
+
+private int[] mRoutes
+
+private java.lang.Object mSettingsLock
+
+private java.lang.Object mSoundEffectsLock
+
+private android.media.SoundPool mSoundPool
+
+private android.media.AudioService$VolumeStreamState[] mStreamStates
+
+private int mVibrateSetting
+
+private android.view.VolumePanel mVolumePanel
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+static boolean access$000(
+android.media.AudioService)
+
+static boolean access$002(
+android.media.AudioService
+boolean)
+
+static android.media.AudioService$AudioHandler access$100(
+android.media.AudioService)
+
+static int access$1000(
+android.media.AudioService)
+
+static android.media.AudioService$AudioHandler access$102(
+android.media.AudioService
+android.media.AudioService$AudioHandler)
+
+static int access$1700(
+android.media.AudioService)
+
+static java.lang.Object access$1800(
+android.media.AudioService)
+
+static android.media.SoundPool access$1900(
+android.media.AudioService)
+
+static void access$200(
+android.os.Handler
+int
+int
+int
+int
+int
+java.lang.Object
+int)
+
+static int[][] access$2000(
+android.media.AudioService)
+
+static java.lang.String[] access$2100()
+
+static int access$2300(
+int)
+
+static void access$2400(
+android.media.AudioService)
+
+static android.media.AudioService$VolumeStreamState[] access$2500(
+android.media.AudioService)
+
+static android.content.ContentResolver access$700(
+android.media.AudioService)
+
+private void applyAudioSettings()
+
+private void broadcastRingerMode()
+
+private void broadcastVibrateSetting(
+int)
+
+private boolean checkForRingerModeChange(
+int
+int)
+
+private void createAudioSystemThread()
+
+private void createStreamStates()
+
+private static int[] createVolumeLevels(
+int
+int)
+
+private void ensureValidDirection(
+int)
+
+private void ensureValidStreamType(
+int)
+
+private int getActiveStreamType(
+int)
+
+private static int getMsg(
+int
+int)
+
+private static int getMsgBase(
+int)
+
+public static int getValueForVibrateSetting(
+int
+int
+int)
+
+private void readAudioSettings()
+
+private void readPersistedSettings()
+
+private static void sendMsg(
+android.os.Handler
+int
+int
+int
+int
+int
+java.lang.Object
+int)
+
+private void setStreamVolumeInt(
+int
+int)
+
+private void waitForAudioHandlerCreation()
+
+public void adjustStreamVolume(
+int
+int
+int)
+
+public void adjustSuggestedStreamVolume(
+int
+int
+int)
+
+public void adjustVolume(
+int
+int)
+
+ boolean checkAudioSettingsPermission(
+java.lang.String)
+
+public int getMode()
+
+public int getRingerMode()
+
+public int getRouting(
+int)
+
+public int getStreamMaxVolume(
+int)
+
+public int getStreamVolume(
+int)
+
+public int getVibrateSetting(
+int)
+
+public boolean isMicrophoneMute()
+
+public boolean isMusicActive()
+
+public boolean isStreamAffectedByMute(
+int)
+
+public boolean isStreamAffectedByRingerMode(
+int)
+
+public boolean loadSoundEffects()
+
+public void playSoundEffect(
+int)
+
+public void setMicrophoneMute(
+boolean)
+
+public void setMode(
+int)
+
+public void setParameter(
+java.lang.String
+java.lang.String)
+
+public void setRingerMode(
+int)
+
+public void setRouting(
+int
+int
+int)
+
+public void setStreamMute(
+int
+boolean
+android.os.IBinder)
+
+public void setStreamSolo(
+int
+boolean
+android.os.IBinder)
+
+public void setStreamVolume(
+int
+int
+int)
+
+public void setVibrateSetting(
+int
+int)
+
+public boolean shouldVibrate(
+int)
+
+public void unloadSoundEffects()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/media/AudioSystem$ErrorCallback; )
+public class android.media.AudioSystem extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int AUDIO_STATUS_ERROR
+
+public static final int AUDIO_STATUS_OK
+
+public static final int AUDIO_STATUS_SERVER_DIED
+
+public static final int MAX_VOLUME
+
+public static final int MIN_VOLUME
+
+public static final int MODE_CURRENT
+
+public static final int MODE_INVALID
+
+public static final int MODE_IN_CALL
+
+public static final int MODE_NORMAL
+
+public static final int MODE_RINGTONE
+
+public static final int NUM_MODES
+
+public static final int NUM_STREAMS
+
+public static final int ROUTE_ALL
+
+public static final int ROUTE_BLUETOOTH
+
+public static final int ROUTE_EARPIECE
+
+public static final int ROUTE_HEADSET
+
+public static final int ROUTE_SPEAKER
+
+public static final int STREAM_ALARM
+
+public static final int STREAM_MUSIC
+
+public static final int STREAM_RING
+
+public static final int STREAM_SYSTEM
+
+public static final int STREAM_VOICE_CALL
+
+private static android.media.AudioSystem$ErrorCallback mErrorCallback
+----------------METHODS----------------
+
+public void <init>()
+
+private static void errorCallbackFromNative(
+int)
+
+public static native int getMode()
+
+public static native int getRouting(
+int)
+
+public static native int getVolume(
+int)
+
+public static native boolean isMicrophoneMuted()
+
+public static native boolean isMusicActive()
+
+public static native int muteMicrophone(
+boolean)
+
+public static void setErrorCallback(
+android.media.AudioSystem$ErrorCallback)
+
+public static native int setMode(
+int)
+
+public static native void setParameter(
+java.lang.String
+java.lang.String)
+
+public static native int setRouting(
+int
+int
+int)
+
+public static native int setVolume(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/FaceDetector; )
+ class android.media.FaceDetector$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1 name =Face )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/FaceDetector; )
+public class android.media.FaceDetector$Face extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final float CONFIDENCE_THRESHOLD
+
+public static final int EULER_X
+
+public static final int EULER_Y
+
+public static final int EULER_Z
+
+private float mConfidence
+
+private float mEyesDist
+
+private float mMidPointX
+
+private float mMidPointY
+
+private float mPoseEulerX
+
+private float mPoseEulerY
+
+private float mPoseEulerZ
+
+final android.media.FaceDetector this$0
+----------------METHODS----------------
+
+private void <init>(
+android.media.FaceDetector)
+
+ void <init>(
+android.media.FaceDetector
+android.media.FaceDetector$1)
+
+public float confidence()
+
+public float eyesDistance()
+
+public void getMidPoint(
+android.graphics.PointF)
+
+public float pose(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/media/FaceDetector$1;Landroid/media/FaceDetector$Face; )
+public class android.media.FaceDetector extends java.lang.Object
+
+----------------FIELDS----------------
+
+private byte[] mBWBuffer
+
+private int mFD
+
+private byte[] mFaceDataArray
+
+private int mFaceDataSize
+
+private int mHeight
+
+private int mMaxFaces
+
+private int mWidth
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+int
+int)
+
+private native void fft_destroy()
+
+private native int fft_detect(
+android.graphics.Bitmap)
+
+private native void fft_get_face(
+android.media.FaceDetector$Face
+int)
+
+private native int fft_initialize(
+int
+int
+int)
+
+private static native void nativeClassInit()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public int findFaces(
+android.graphics.Bitmap
+android.media.FaceDetector$Face[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/IAudioService$Stub; )
+ class android.media.IAudioService$Stub$Proxy extends java.lang.Object implements android.media.IAudioService
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void adjustStreamVolume(
+int
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void adjustSuggestedStreamVolume(
+int
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void adjustVolume(
+int
+int)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getMode()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getRingerMode()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getRouting(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getStreamMaxVolume(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getStreamVolume(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getVibrateSetting(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean isMicrophoneMute()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean isMusicActive()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean loadSoundEffects()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void playSoundEffect(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setMicrophoneMute(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setMode(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setParameter(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setRingerMode(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setRouting(
+int
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setStreamMute(
+int
+boolean
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setStreamSolo(
+int
+boolean
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setStreamVolume(
+int
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setVibrateSetting(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean shouldVibrate(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void unloadSoundEffects()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/media/IMediaScannerListener$Stub; )
+public abstract interface class android.media.IMediaScannerListener extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scanCompleted(
+java.lang.String
+android.net.Uri)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/media/IMediaScannerListener$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class android.media.IMediaScannerListener$Stub$Proxy extends java.lang.Object implements android.media.IMediaScannerListener
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void scanCompleted(
+java.lang.String
+android.net.Uri)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.MemberClasses (value =Landroid/media/IMediaScannerListener$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/IMediaScannerListener; )
+public abstract class android.media.IMediaScannerListener$Stub extends android.os.Binder implements android.media.IMediaScannerListener
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_scanCompleted
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.media.IMediaScannerListener asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/media/IMediaScannerService$Stub; )
+public abstract interface class android.media.IMediaScannerService extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void requestScanFile(
+java.lang.String
+java.lang.String
+android.media.IMediaScannerListener)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void scanFile(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/IMediaScannerService$Stub; )
+ class android.media.IMediaScannerService$Stub$Proxy extends java.lang.Object implements android.media.IMediaScannerService
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void requestScanFile(
+java.lang.String
+java.lang.String
+android.media.IMediaScannerListener)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void scanFile(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/media/IMediaScannerService$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/IMediaScannerService; )
+public abstract class android.media.IMediaScannerService$Stub extends android.os.Binder implements android.media.IMediaScannerService
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_requestScanFile
+
+static final int TRANSACTION_scanFile
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.media.IMediaScannerService asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =MediaFileType )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaFile; )
+ class android.media.MediaFile$MediaFileType extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int fileType
+
+ java.lang.String mimeType
+----------------METHODS----------------
+
+ void <init>(
+int
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/media/MediaFile$MediaFileType; )
+public class android.media.MediaFile extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int FILE_TYPE_3GPP
+
+public static final int FILE_TYPE_3GPP2
+
+public static final int FILE_TYPE_AMR
+
+public static final int FILE_TYPE_AWB
+
+public static final int FILE_TYPE_BMP
+
+public static final int FILE_TYPE_GIF
+
+public static final int FILE_TYPE_IMY
+
+public static final int FILE_TYPE_JPEG
+
+public static final int FILE_TYPE_M3U
+
+public static final int FILE_TYPE_M4A
+
+public static final int FILE_TYPE_M4V
+
+public static final int FILE_TYPE_MID
+
+public static final int FILE_TYPE_MP3
+
+public static final int FILE_TYPE_MP4
+
+public static final int FILE_TYPE_OGG
+
+public static final int FILE_TYPE_PLS
+
+public static final int FILE_TYPE_PNG
+
+public static final int FILE_TYPE_SMF
+
+public static final int FILE_TYPE_WAV
+
+public static final int FILE_TYPE_WBMP
+
+public static final int FILE_TYPE_WMA
+
+public static final int FILE_TYPE_WMV
+
+public static final int FILE_TYPE_WPL
+
+private static final int FIRST_AUDIO_FILE_TYPE
+
+private static final int FIRST_IMAGE_FILE_TYPE
+
+private static final int FIRST_MIDI_FILE_TYPE
+
+private static final int FIRST_PLAYLIST_FILE_TYPE
+
+private static final int FIRST_VIDEO_FILE_TYPE
+
+private static final int LAST_AUDIO_FILE_TYPE
+
+private static final int LAST_IMAGE_FILE_TYPE
+
+private static final int LAST_MIDI_FILE_TYPE
+
+private static final int LAST_PLAYLIST_FILE_TYPE
+
+private static final int LAST_VIDEO_FILE_TYPE
+
+public static final java.lang.String UNKNOWN_STRING
+
+public static java.lang.String sFileExtensions
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Landroid/media/MediaFile$MediaFileType;>; )
+private static java.util.HashMap sFileTypeMap
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Integer;>; )
+private static java.util.HashMap sMimeTypeMap
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static void addFileType(
+java.lang.String
+int
+java.lang.String)
+
+public static android.media.MediaFile$MediaFileType getFileType(
+java.lang.String)
+
+public static int getFileTypeForMimeType(
+java.lang.String)
+
+public static boolean isAudioFileType(
+int)
+
+public static boolean isImageFileType(
+int)
+
+public static boolean isPlayListFileType(
+int)
+
+public static boolean isVideoFileType(
+int)
+
+________________CLASS________________
+
+
+public class android.media.MediaMetadataRetriever extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int METADATA_KEY_ALBUM
+
+public static final int METADATA_KEY_ARTIST
+
+public static final int METADATA_KEY_AUTHOR
+
+public static final int METADATA_KEY_CD_TRACK_NUMBER
+
+public static final int METADATA_KEY_COMPOSER
+
+public static final int METADATA_KEY_DATE
+
+public static final int METADATA_KEY_DURATION
+
+public static final int METADATA_KEY_GENRE
+
+public static final int METADATA_KEY_NUM_TRACKS
+
+public static final int METADATA_KEY_TITLE
+
+public static final int METADATA_KEY_YEAR
+
+public static final int MODE_CAPTURE_FRAME_ONLY
+
+public static final int MODE_GET_METADATA_ONLY
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private final native void native_finalize()
+
+private native void native_setup()
+
+public native android.graphics.Bitmap captureFrame()
+
+public native byte[] extractAlbumArt()
+
+public native java.lang.String extractMetadata(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public native void release()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public native void setDataSource(
+java.lang.String)
+
+public native void setMode(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =EventHandler )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaPlayer; )
+ class android.media.MediaPlayer$EventHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+private android.media.MediaPlayer mMediaPlayer
+
+final android.media.MediaPlayer this$0
+----------------METHODS----------------
+
+public void <init>(
+android.media.MediaPlayer
+android.media.MediaPlayer
+android.os.Looper)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnBufferingUpdateListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaPlayer; )
+public abstract interface class android.media.MediaPlayer$OnBufferingUpdateListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onBufferingUpdate(
+android.media.MediaPlayer
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaPlayer; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnPreparedListener )
+public abstract interface class android.media.MediaPlayer$OnPreparedListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onPrepared(
+android.media.MediaPlayer)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaPlayer; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnSeekCompleteListener )
+public abstract interface class android.media.MediaPlayer$OnSeekCompleteListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onSeekComplete(
+android.media.MediaPlayer)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/media/MediaPlayer$OnErrorListener;Landroid/media/MediaPlayer$OnSeekCompleteListener;Landroid/media/MediaPlayer$OnBufferingUpdateListener;Landroid/media/MediaPlayer$OnCompletionListener;Landroid/media/MediaPlayer$OnPreparedListener;Landroid/media/MediaPlayer$EventHandler; )
+public class android.media.MediaPlayer extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int ERROR_CONTENT_IS_POORLY_INTERLEAVED
+
+private static final int ERROR_SEEK_NOT_SUPPORTED
+
+private static final int ERROR_VIDEO_TRACK_IS_FALLING_BEHIND
+
+private static final int MEDIA_BUFFERING_UPDATE
+
+private static final int MEDIA_ERROR
+
+public static final int MEDIA_ERROR_SERVER_DIED
+
+public static final int MEDIA_ERROR_UNKNOWN
+
+private static final int MEDIA_NOP
+
+private static final int MEDIA_PLAYBACK_COMPLETE
+
+private static final int MEDIA_PREPARED
+
+private static final int MEDIA_SEEK_COMPLETE
+
+private static final java.lang.String TAG
+
+private android.media.MediaPlayer$EventHandler mEventHandler
+
+private int mListenerContext
+
+private int mNativeContext
+
+private android.media.MediaPlayer$OnBufferingUpdateListener mOnBufferingUpdateListener
+
+private android.media.MediaPlayer$OnCompletionListener mOnCompletionListener
+
+private android.media.MediaPlayer$OnErrorListener mOnErrorListener
+
+private android.media.MediaPlayer$OnPreparedListener mOnPreparedListener
+
+private android.media.MediaPlayer$OnSeekCompleteListener mOnSeekCompleteListener
+
+private boolean mScreenOnWhilePlaying
+
+private boolean mStayAwake
+
+private android.view.Surface mSurface
+
+private android.view.SurfaceHolder mSurfaceHolder
+
+private android.os.PowerManager$WakeLock mWakeLock
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+private native void _pause()
+
+private native void _release()
+
+private native void _reset()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+private native void _start()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+private native void _stop()
+
+static int access$000(
+android.media.MediaPlayer)
+
+static android.media.MediaPlayer$OnPreparedListener access$100(
+android.media.MediaPlayer)
+
+static android.media.MediaPlayer$OnCompletionListener access$200(
+android.media.MediaPlayer)
+
+static void access$300(
+android.media.MediaPlayer
+boolean)
+
+static android.media.MediaPlayer$OnBufferingUpdateListener access$400(
+android.media.MediaPlayer)
+
+static android.media.MediaPlayer$OnSeekCompleteListener access$500(
+android.media.MediaPlayer)
+
+static android.media.MediaPlayer$OnErrorListener access$600(
+android.media.MediaPlayer)
+
+public static android.media.MediaPlayer create(
+android.content.Context
+int)
+
+public static android.media.MediaPlayer create(
+android.content.Context
+android.net.Uri)
+
+public static android.media.MediaPlayer create(
+android.content.Context
+android.net.Uri
+android.view.SurfaceHolder)
+
+private final native void native_finalize()
+
+private final native void native_setup(
+java.lang.Object)
+
+private static void postEventFromNative(
+java.lang.Object
+int
+int
+int
+java.lang.Object)
+
+private void stayAwake(
+boolean)
+
+private void updateSurfaceScreenOn()
+
+protected void finalize()
+
+public native int getCurrentPosition()
+
+public native int getDuration()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public native android.graphics.Bitmap getFrameAt(
+int)
+
+public native int getVideoHeight()
+
+public native int getVideoWidth()
+
+public native boolean isPlaying()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public void pause()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalStateException; )
+public native void prepare()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public native void prepareAsync()
+
+public void release()
+
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public native void seekTo(
+int)
+
+public native void setAudioStreamType(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/SecurityException;Ljava/lang/IllegalStateException; )
+public void setDataSource(
+android.content.Context
+android.net.Uri)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public void setDataSource(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public native void setDataSource(
+java.io.FileDescriptor
+long
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public native void setDataSource(
+java.lang.String)
+
+public void setDisplay(
+android.view.SurfaceHolder)
+
+public native void setLooping(
+boolean)
+
+public void setOnBufferingUpdateListener(
+android.media.MediaPlayer$OnBufferingUpdateListener)
+
+public void setOnCompletionListener(
+android.media.MediaPlayer$OnCompletionListener)
+
+public void setOnErrorListener(
+android.media.MediaPlayer$OnErrorListener)
+
+public void setOnPreparedListener(
+android.media.MediaPlayer$OnPreparedListener)
+
+public void setOnSeekCompleteListener(
+android.media.MediaPlayer$OnSeekCompleteListener)
+
+public void setScreenOnWhilePlaying(
+boolean)
+
+public native void setVolume(
+float
+float)
+
+public void setWakeMode(
+android.content.Context
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public void start()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public void stop()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaRecorder; )
+@dalvik.annotation.InnerClass (accessFlags =17 name =AudioEncoder )
+public final class android.media.MediaRecorder$AudioEncoder extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int AMR_NB
+
+public static final int DEFAULT
+
+final android.media.MediaRecorder this$0
+----------------METHODS----------------
+
+private void <init>(
+android.media.MediaRecorder)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaRecorder; )
+@dalvik.annotation.InnerClass (accessFlags =17 name =AudioSource )
+public final class android.media.MediaRecorder$AudioSource extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int DEFAULT
+
+public static final int MIC
+
+final android.media.MediaRecorder this$0
+----------------METHODS----------------
+
+private void <init>(
+android.media.MediaRecorder)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaRecorder; )
+@dalvik.annotation.InnerClass (accessFlags =17 name =OutputFormat )
+public final class android.media.MediaRecorder$OutputFormat extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int DEFAULT
+
+public static final int MPEG_4
+
+public static final int THREE_GPP
+
+final android.media.MediaRecorder this$0
+----------------METHODS----------------
+
+private void <init>(
+android.media.MediaRecorder)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaRecorder; )
+@dalvik.annotation.InnerClass (accessFlags =17 name =VideoEncoder )
+public final class android.media.MediaRecorder$VideoEncoder extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int DEFAULT
+
+public static final int H263
+
+public static final int H264
+
+public static final int MPEG_4_SP
+
+final android.media.MediaRecorder this$0
+----------------METHODS----------------
+
+private void <init>(
+android.media.MediaRecorder)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =17 name =VideoSource )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaRecorder; )
+public final class android.media.MediaRecorder$VideoSource extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CAMERA
+
+public static final int DEFAULT
+
+final android.media.MediaRecorder this$0
+----------------METHODS----------------
+
+private void <init>(
+android.media.MediaRecorder)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/media/MediaRecorder$VideoEncoder;Landroid/media/MediaRecorder$AudioEncoder;Landroid/media/MediaRecorder$OutputFormat;Landroid/media/MediaRecorder$VideoSource;Landroid/media/MediaRecorder$AudioSource; )
+public class android.media.MediaRecorder extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private int mNativeContext
+
+private android.view.Surface mSurface
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void log(
+java.lang.String)
+
+private final native void native_finalize()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+private final native void native_setup()
+
+protected void finalize()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public native int getMaxAmplitude()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public native void prepare()
+
+public native void release()
+
+public native void reset()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public native void setAudioEncoder(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public native void setAudioSource(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public native void setOutputFile(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public native void setOutputFormat(
+int)
+
+public void setPreviewDisplay(
+android.view.Surface)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public native void setVideoEncoder(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public native void setVideoFrameRate(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public native void setVideoSize(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public native void setVideoSource(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public native void start()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public native void stop()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaScanner; )
+ class android.media.MediaScanner$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaScanner; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =FileCacheEntry )
+ class android.media.MediaScanner$FileCacheEntry extends java.lang.Object
+
+----------------FIELDS----------------
+
+ long mLastModified
+
+ boolean mLastModifiedChanged
+
+ java.lang.String mPath
+
+ long mRowId
+
+ boolean mSeenInFileSystem
+
+ android.net.Uri mTableUri
+----------------METHODS----------------
+
+ void <init>(
+android.net.Uri
+long
+java.lang.String
+long)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class android.media.MediaScannerClient extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void handleStringTag(
+java.lang.String
+java.lang.String)
+
+public abstract void scanFile(
+java.lang.String
+long
+long)
+
+public abstract void scanFile(
+java.lang.String
+java.lang.String
+long
+long)
+
+public abstract void setMimeType(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaScanner; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =MyMediaScannerClient )
+ class android.media.MediaScanner$MyMediaScannerClient extends java.lang.Object implements android.media.MediaScannerClient
+
+----------------FIELDS----------------
+
+private java.lang.String mAlbum
+
+private java.lang.String mAlbumArtist
+
+private java.lang.String mArtist
+
+private java.lang.String mComposer
+
+private int mDuration
+
+private long mFileSize
+
+private int mFileType
+
+private java.lang.String mGenre
+
+private long mLastModified
+
+private java.lang.String mMimeType
+
+private java.lang.String mPath
+
+private java.lang.String mTitle
+
+private int mTrack
+
+private int mYear
+
+final android.media.MediaScanner this$0
+----------------METHODS----------------
+
+private void <init>(
+android.media.MediaScanner)
+
+ void <init>(
+android.media.MediaScanner
+android.media.MediaScanner$1)
+
+private boolean doesPathHaveFilename(
+java.lang.String
+java.lang.String)
+
+private int parseSubstring(
+java.lang.String
+int
+int)
+
+private void setSettingIfNotSet(
+java.lang.String
+android.net.Uri
+long)
+
+private android.content.ContentValues toValues()
+
+public android.media.MediaScanner$FileCacheEntry beginFile(
+java.lang.String
+java.lang.String
+long
+long)
+
+public android.net.Uri doScanFile(
+java.lang.String
+java.lang.String
+long
+long
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.net.Uri endFile(
+android.media.MediaScanner$FileCacheEntry
+boolean
+boolean
+boolean
+boolean)
+
+public void handleStringTag(
+java.lang.String
+java.lang.String)
+
+public void scanFile(
+java.lang.String
+long
+long)
+
+public void scanFile(
+java.lang.String
+java.lang.String
+long
+long)
+
+public void setMimeType(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class android.sax.StartElementListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void start(
+org.xml.sax.Attributes)
+
+________________CLASS________________
+
+
+public abstract interface class android.sax.EndElementListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void end()
+
+________________CLASS________________
+
+
+public abstract interface class android.sax.ElementListener extends java.lang.Object implements android.sax.StartElementListener, android.sax.EndElementListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =WplHandler )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaScanner; )
+ class android.media.MediaScanner$WplHandler extends java.lang.Object implements android.sax.ElementListener
+
+----------------FIELDS----------------
+
+final org.xml.sax.ContentHandler handler
+
+ int index
+
+ java.lang.String playListDirectory
+
+final android.media.MediaScanner this$0
+
+ android.net.Uri uri
+
+ android.content.ContentValues values
+----------------METHODS----------------
+
+public void <init>(
+android.media.MediaScanner
+java.lang.String
+android.net.Uri)
+
+public void end()
+
+ org.xml.sax.ContentHandler getContentHandler()
+
+public void start(
+org.xml.sax.Attributes)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/media/MediaScanner$1;Landroid/media/MediaScanner$WplHandler;Landroid/media/MediaScanner$MyMediaScannerClient;Landroid/media/MediaScanner$FileCacheEntry; )
+public class android.media.MediaScanner extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String ALARMS_DIR
+
+private static final java.lang.String[] AUDIO_PROJECTION
+
+private static final int DATE_MODIFIED_AUDIO_COLUMN_INDEX
+
+private static final int DATE_MODIFIED_IMAGES_COLUMN_INDEX
+
+private static final int DATE_MODIFIED_PLAYLISTS_COLUMN_INDEX
+
+private static final int DATE_MODIFIED_VIDEO_COLUMN_INDEX
+
+private static final java.lang.String DEFAULT_RINGTONE_PROPERTY_PREFIX
+
+private static final java.lang.String[] GENRE_LOOKUP_PROJECTION
+
+private static final java.lang.String[] ID3_GENRES
+
+private static final int ID_AUDIO_COLUMN_INDEX
+
+private static final int ID_IMAGES_COLUMN_INDEX
+
+private static final int ID_PLAYLISTS_COLUMN_INDEX
+
+private static final int ID_VIDEO_COLUMN_INDEX
+
+private static final java.lang.String[] IMAGES_PROJECTION
+
+private static final java.lang.String MUSIC_DIR
+
+private static final java.lang.String NOTIFICATIONS_DIR
+
+private static final int PATH_AUDIO_COLUMN_INDEX
+
+private static final int PATH_IMAGES_COLUMN_INDEX
+
+private static final int PATH_PLAYLISTS_COLUMN_INDEX
+
+private static final int PATH_VIDEO_COLUMN_INDEX
+
+private static final java.lang.String[] PLAYLISTS_PROJECTION
+
+private static final java.lang.String[] PLAYLIST_MEMBERS_PROJECTION
+
+private static final java.lang.String RINGTONES_DIR
+
+private static final java.lang.String TAG
+
+private static final java.lang.String[] VIDEO_PROJECTION
+
+private android.net.Uri mAudioUri
+
+private android.graphics.BitmapFactory$Options mBitmapOptions
+
+private boolean mCaseInsensitivePaths
+
+private android.media.MediaScanner$MyMediaScannerClient mClient
+
+private android.content.Context mContext
+
+private java.lang.String mDefaultNotificationFilename
+
+private boolean mDefaultNotificationSet
+
+private java.lang.String mDefaultRingtoneFilename
+
+private boolean mDefaultRingtoneSet
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Landroid/media/MediaScanner$FileCacheEntry;>; )
+private java.util.HashMap mFileCache
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Landroid/net/Uri;>; )
+private java.util.HashMap mGenreCache
+
+private android.net.Uri mGenresUri
+
+private android.net.Uri mImagesUri
+
+private android.content.IContentProvider mMediaProvider
+
+private int mNativeContext
+
+private int mOriginalCount
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/media/MediaScanner$FileCacheEntry;>; )
+private java.util.ArrayList mPlayLists
+
+private android.net.Uri mPlaylistsUri
+
+private boolean mProcessGenres
+
+private boolean mProcessPlaylists
+
+private android.net.Uri mThumbsUri
+
+private android.net.Uri mVideoUri
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+static boolean access$100(
+android.media.MediaScanner)
+
+static android.content.IContentProvider access$1000(
+android.media.MediaScanner)
+
+static boolean access$1100(
+android.media.MediaScanner)
+
+static java.util.HashMap access$1200(
+android.media.MediaScanner)
+
+static android.net.Uri access$1300(
+android.media.MediaScanner)
+
+static java.lang.String[] access$1400()
+
+static boolean access$1500(
+android.media.MediaScanner)
+
+static boolean access$1502(
+android.media.MediaScanner
+boolean)
+
+static java.lang.String access$1600(
+android.media.MediaScanner)
+
+static boolean access$1700(
+android.media.MediaScanner)
+
+static boolean access$1702(
+android.media.MediaScanner
+boolean)
+
+static java.lang.String access$1800(
+android.media.MediaScanner)
+
+static android.content.Context access$1900(
+android.media.MediaScanner)
+
+static java.util.HashMap access$200(
+android.media.MediaScanner)
+
+static boolean access$2000(
+android.media.MediaScanner
+java.lang.String
+java.lang.String
+android.net.Uri
+android.content.ContentValues
+int)
+
+static boolean access$300(
+android.media.MediaScanner)
+
+static java.util.ArrayList access$400(
+android.media.MediaScanner)
+
+static void access$500(
+android.media.MediaScanner
+java.lang.String
+java.lang.String
+android.media.MediaScannerClient)
+
+static java.lang.String[] access$600()
+
+static android.net.Uri access$700(
+android.media.MediaScanner)
+
+static android.net.Uri access$800(
+android.media.MediaScanner)
+
+static android.net.Uri access$900(
+android.media.MediaScanner)
+
+private boolean addPlayListEntry(
+java.lang.String
+java.lang.String
+android.net.Uri
+android.content.ContentValues
+int)
+
+private boolean inScanDirectory(
+java.lang.String
+java.lang.String[])
+
+private void initialize(
+java.lang.String)
+
+private int matchPaths(
+java.lang.String
+java.lang.String)
+
+private final native void native_finalize()
+
+private final native void native_setup()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+private void postscan(
+java.lang.String[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+private void prescan(
+java.lang.String)
+
+private native void processDirectory(
+java.lang.String
+java.lang.String
+android.media.MediaScannerClient)
+
+private native void processFile(
+java.lang.String
+java.lang.String
+android.media.MediaScannerClient)
+
+private void processM3uPlayList(
+java.lang.String
+java.lang.String
+android.net.Uri
+android.content.ContentValues)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+private void processPlayLists()
+
+private void processPlsPlayList(
+java.lang.String
+java.lang.String
+android.net.Uri
+android.content.ContentValues)
+
+private void processWplPlayList(
+java.lang.String
+java.lang.String
+android.net.Uri)
+
+private void pruneDeadThumbnailFiles()
+
+private void setDefaultRingtoneFileNames()
+
+public native byte[] extractAlbumArt(
+java.io.FileDescriptor)
+
+protected void finalize()
+
+public void scanDirectories(
+java.lang.String[]
+java.lang.String)
+
+public android.net.Uri scanSingleFile(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaScannerConnection; )
+ class android.media.MediaScannerConnection$1 extends android.media.IMediaScannerListener$Stub
+
+----------------FIELDS----------------
+
+final android.media.MediaScannerConnection this$0
+----------------METHODS----------------
+
+ void <init>(
+android.media.MediaScannerConnection)
+
+public void scanCompleted(
+java.lang.String
+android.net.Uri)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =MediaScannerConnectionClient )
+@dalvik.annotation.EnclosingClass (value =Landroid/media/MediaScannerConnection; )
+public abstract interface class android.media.MediaScannerConnection$MediaScannerConnectionClient extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onMediaScannerConnected()
+
+public abstract void onScanCompleted(
+java.lang.String
+android.net.Uri)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/media/MediaScannerConnection$MediaScannerConnectionClient; )
+public class android.media.MediaScannerConnection extends java.lang.Object implements android.content.ServiceConnection
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private android.media.MediaScannerConnection$MediaScannerConnectionClient mClient
+
+private boolean mConnected
+
+private android.content.Context mContext
+
+private android.media.IMediaScannerListener$Stub mListener
+
+private android.media.IMediaScannerService mService
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.media.MediaScannerConnection$MediaScannerConnectionClient)
+
+static android.media.MediaScannerConnection$MediaScannerConnectionClient access$000(
+android.media.MediaScannerConnection)
+
+public void connect()
+
+public void disconnect()
+
+public boolean isConnected()
+
+public void onServiceConnected(
+android.content.ComponentName
+android.os.IBinder)
+
+public void onServiceDisconnected(
+android.content.ComponentName)
+
+public void scanFile(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.media.Ringtone extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String[] DRM_COLUMNS
+
+private static final java.lang.String[] MEDIA_COLUMNS
+
+private static java.lang.String TAG
+
+private android.content.res.AssetFileDescriptor mAssetFileDescriptor
+
+private android.media.MediaPlayer mAudio
+
+private android.content.Context mContext
+
+private java.io.FileDescriptor mFileDescriptor
+
+private int mStreamType
+
+private java.lang.String mTitle
+
+private android.net.Uri mUri
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+android.content.Context)
+
+private static java.lang.String getTitle(
+android.content.Context
+android.net.Uri
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void openMediaPlayer()
+
+public int getStreamType()
+
+public java.lang.String getTitle(
+android.content.Context)
+
+public boolean isPlaying()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void open(
+android.content.res.AssetFileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void open(
+android.net.Uri)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void open(
+java.io.FileDescriptor)
+
+public void play()
+
+public void setStreamType(
+int)
+
+ void setTitle(
+java.lang.String)
+
+public void stop()
+
+________________CLASS________________
+
+
+public class android.media.RingtoneManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACTION_RINGTONE_PICKER
+
+private static final java.lang.String[] DRM_COLUMNS
+
+public static final java.lang.String EXTRA_RINGTONE_DEFAULT_URI
+
+public static final java.lang.String EXTRA_RINGTONE_EXISTING_URI
+
+public static final java.lang.String EXTRA_RINGTONE_INCLUDE_DRM
+
+public static final java.lang.String EXTRA_RINGTONE_PICKED_URI
+
+public static final java.lang.String EXTRA_RINGTONE_SHOW_DEFAULT
+
+public static final java.lang.String EXTRA_RINGTONE_SHOW_SILENT
+
+public static final java.lang.String EXTRA_RINGTONE_TITLE
+
+public static final java.lang.String EXTRA_RINGTONE_TYPE
+
+public static final int ID_COLUMN_INDEX
+
+private static final java.lang.String[] INTERNAL_COLUMNS
+
+private static final java.lang.String[] MEDIA_COLUMNS
+
+private static final java.lang.String TAG
+
+public static final int TITLE_COLUMN_INDEX
+
+public static final int TYPE_ALARM
+
+public static final int TYPE_ALL
+
+public static final int TYPE_NOTIFICATION
+
+public static final int TYPE_RINGTONE
+
+public static final int URI_COLUMN_INDEX
+
+private android.app.Activity mActivity
+
+private android.content.Context mContext
+
+private android.database.Cursor mCursor
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/lang/String;>; )
+private java.util.List mFilterColumns
+
+private boolean mIncludeDrm
+
+private android.media.Ringtone mPreviousRingtone
+
+private boolean mStopPreviousRingtone
+
+private int mType
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.app.Activity)
+
+public void <init>(
+android.content.Context)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Ljava/lang/String;>;)Ljava/lang/String; )
+private static java.lang.String constructBooleanTrueWhereClause(
+java.util.List)
+
+public static android.net.Uri getActualDefaultRingtoneUri(
+android.content.Context
+int)
+
+public static int getDefaultType(
+android.net.Uri)
+
+public static android.net.Uri getDefaultUri(
+int)
+
+private android.database.Cursor getDrmRingtones()
+
+private android.database.Cursor getInternalRingtones()
+
+private android.database.Cursor getMediaRingtones()
+
+public static android.media.Ringtone getRingtone(
+android.content.Context
+android.net.Uri)
+
+private static java.lang.String getSettingForType(
+int)
+
+private static android.net.Uri getUriFromCursor(
+android.database.Cursor)
+
+public static android.net.Uri getValidRingtoneUri(
+android.content.Context)
+
+private static android.net.Uri getValidRingtoneUriFromCursorAndClose(
+android.content.Context
+android.database.Cursor)
+
+public static boolean isDefault(
+android.net.Uri)
+
+private android.database.Cursor query(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+public static void setActualDefaultRingtoneUri(
+android.content.Context
+int
+android.net.Uri)
+
+private void setFilterColumnsList(
+int)
+
+public android.database.Cursor getCursor()
+
+public boolean getIncludeDrm()
+
+public android.media.Ringtone getRingtone(
+int)
+
+public int getRingtonePosition(
+android.net.Uri)
+
+public android.net.Uri getRingtoneUri(
+int)
+
+public boolean getStopPreviousRingtone()
+
+public void setIncludeDrm(
+boolean)
+
+public void setStopPreviousRingtone(
+boolean)
+
+public void setType(
+int)
+
+public void stopPreviousRingtone()
+
+________________CLASS________________
+
+
+public class android.media.SoundPool extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private int mNativeContext
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+int
+int)
+
+private final native int _load(
+java.io.FileDescriptor
+long
+long
+int)
+
+private final native int _load(
+java.lang.String
+int)
+
+private final native void native_setup(
+java.lang.Object
+int
+int
+int)
+
+protected void finalize()
+
+public int load(
+android.content.Context
+int
+int)
+
+public int load(
+java.lang.String
+int)
+
+public final native void pause(
+int)
+
+public final native int play(
+int
+float
+float
+int
+int
+float)
+
+public final native void release()
+
+public final native void resume(
+int)
+
+public final native void setLoop(
+int
+int)
+
+public final native void setPriority(
+int
+int)
+
+public final native void setRate(
+int
+float)
+
+public final native void setVolume(
+int
+float
+float)
+
+public final native void stop(
+int)
+
+public final native boolean unload(
+int)
+
+________________CLASS________________
+
+
+public class android.media.ToneGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int MAX_VOLUME
+
+public static final int MIN_VOLUME
+
+public static final int TONE_DTMF_0
+
+public static final int TONE_DTMF_1
+
+public static final int TONE_DTMF_2
+
+public static final int TONE_DTMF_3
+
+public static final int TONE_DTMF_4
+
+public static final int TONE_DTMF_5
+
+public static final int TONE_DTMF_6
+
+public static final int TONE_DTMF_7
+
+public static final int TONE_DTMF_8
+
+public static final int TONE_DTMF_9
+
+public static final int TONE_DTMF_A
+
+public static final int TONE_DTMF_B
+
+public static final int TONE_DTMF_C
+
+public static final int TONE_DTMF_D
+
+public static final int TONE_DTMF_P
+
+public static final int TONE_DTMF_S
+
+public static final int TONE_PROP_ACK
+
+public static final int TONE_PROP_BEEP
+
+public static final int TONE_PROP_BEEP2
+
+public static final int TONE_PROP_NACK
+
+public static final int TONE_PROP_PROMPT
+
+public static final int TONE_SUP_BUSY
+
+public static final int TONE_SUP_CALL_WAITING
+
+public static final int TONE_SUP_CONGESTION
+
+public static final int TONE_SUP_DIAL
+
+public static final int TONE_SUP_ERROR
+
+public static final int TONE_SUP_RADIO_ACK
+
+public static final int TONE_SUP_RADIO_NOTAVAIL
+
+public static final int TONE_SUP_RINGTONE
+
+private int mNativeContext
+----------------METHODS----------------
+
+public void <init>(
+int
+int)
+
+private final native void native_finalize()
+
+private final native void native_setup(
+int
+int)
+
+protected void finalize()
+
+public native void release()
+
+public native boolean startTone(
+int)
+
+public native void stopTone()
+
+________________CLASS________________
+
+
+public class android.net.ConnectivityManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONNECTIVITY_ACTION
+
+public static final int DEFAULT_NETWORK_PREFERENCE
+
+public static final java.lang.String EXTRA_EXTRA_INFO
+
+public static final java.lang.String EXTRA_IS_FAILOVER
+
+public static final java.lang.String EXTRA_NETWORK_INFO
+
+public static final java.lang.String EXTRA_NO_CONNECTIVITY
+
+public static final java.lang.String EXTRA_OTHER_NETWORK_INFO
+
+public static final java.lang.String EXTRA_REASON
+
+public static final int TYPE_MOBILE
+
+public static final int TYPE_WIFI
+
+private android.net.IConnectivityManager mService
+----------------METHODS----------------
+
+private void <init>()
+
+public void <init>(
+android.net.IConnectivityManager)
+
+public static boolean isNetworkTypeValid(
+int)
+
+public android.net.NetworkInfo getActiveNetworkInfo()
+
+public android.net.NetworkInfo[] getAllNetworkInfo()
+
+public android.net.NetworkInfo getNetworkInfo(
+int)
+
+public int getNetworkPreference()
+
+public boolean requestRouteToHost(
+int
+int)
+
+public void setNetworkPreference(
+int)
+
+public boolean setRadio(
+int
+boolean)
+
+public boolean setRadios(
+boolean)
+
+public int startUsingNetworkFeature(
+int
+java.lang.String)
+
+public int stopUsingNetworkFeature(
+int
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.net.Credentials extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int gid
+
+private final int pid
+
+private final int uid
+----------------METHODS----------------
+
+public void <init>(
+int
+int
+int)
+
+public int getGid()
+
+public int getPid()
+
+public int getUid()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/DhcpInfo; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/net/DhcpInfo;>; )
+final class android.net.DhcpInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.net.DhcpInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.net.DhcpInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.net.DhcpInfo extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/net/DhcpInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public int dns1
+
+public int dns2
+
+public int gateway
+
+public int ipAddress
+
+public int leaseDuration
+
+public int netmask
+
+public int serverAddress
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static void putAddress(
+java.lang.StringBuffer
+int)
+
+public int describeContents()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/IConnectivityManager$Stub; )
+public abstract interface class android.net.IConnectivityManager extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.net.NetworkInfo getActiveNetworkInfo()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.net.NetworkInfo[] getAllNetworkInfo()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.net.NetworkInfo getNetworkInfo(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getNetworkPreference()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean requestRouteToHost(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setNetworkPreference(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean setRadio(
+int
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean setRadios(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int startUsingNetworkFeature(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int stopUsingNetworkFeature(
+int
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/IConnectivityManager$Stub; )
+ class android.net.IConnectivityManager$Stub$Proxy extends java.lang.Object implements android.net.IConnectivityManager
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.net.NetworkInfo getActiveNetworkInfo()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.net.NetworkInfo[] getAllNetworkInfo()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.net.NetworkInfo getNetworkInfo(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getNetworkPreference()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean requestRouteToHost(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setNetworkPreference(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean setRadio(
+int
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean setRadios(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int startUsingNetworkFeature(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int stopUsingNetworkFeature(
+int
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/IConnectivityManager; )
+@dalvik.annotation.MemberClasses (value =Landroid/net/IConnectivityManager$Stub$Proxy; )
+public abstract class android.net.IConnectivityManager$Stub extends android.os.Binder implements android.net.IConnectivityManager
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_getActiveNetworkInfo
+
+static final int TRANSACTION_getAllNetworkInfo
+
+static final int TRANSACTION_getNetworkInfo
+
+static final int TRANSACTION_getNetworkPreference
+
+static final int TRANSACTION_requestRouteToHost
+
+static final int TRANSACTION_setNetworkPreference
+
+static final int TRANSACTION_setRadio
+
+static final int TRANSACTION_setRadios
+
+static final int TRANSACTION_startUsingNetworkFeature
+
+static final int TRANSACTION_stopUsingNetworkFeature
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.net.IConnectivityManager asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class android.net.LocalServerSocket extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int LISTEN_BACKLOG
+
+private final android.net.LocalSocketImpl impl
+
+private final android.net.LocalSocketAddress localAddress
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public android.net.LocalSocket accept()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public java.io.FileDescriptor getFileDescriptor()
+
+public android.net.LocalSocketAddress getLocalSocketAddress()
+
+________________CLASS________________
+
+
+public class android.net.LocalSocket extends java.lang.Object
+
+----------------FIELDS----------------
+
+private android.net.LocalSocketImpl impl
+
+private volatile boolean implCreated
+
+private boolean isBound
+
+private boolean isConnected
+
+private android.net.LocalSocketAddress localAddress
+----------------METHODS----------------
+
+public void <init>()
+
+ void <init>(
+android.net.LocalSocketImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void implCreateIfNeeded()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void bind(
+android.net.LocalSocketAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connect(
+android.net.LocalSocketAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connect(
+android.net.LocalSocketAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.FileDescriptor[] getAncillaryFileDescriptors()
+
+public java.io.FileDescriptor getFileDescriptor()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getInputStream()
+
+public android.net.LocalSocketAddress getLocalSocketAddress()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.OutputStream getOutputStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public android.net.Credentials getPeerCredentials()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int getReceiveBufferSize()
+
+public android.net.LocalSocketAddress getRemoteSocketAddress()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int getSendBufferSize()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int getSoTimeout()
+
+public boolean isBound()
+
+public boolean isClosed()
+
+public boolean isConnected()
+
+public boolean isInputShutdown()
+
+public boolean isOutputShutdown()
+
+public void setFileDescriptorsForSend(
+java.io.FileDescriptor[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setReceiveBufferSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setSendBufferSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setSoTimeout(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void shutdownInput()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void shutdownOutput()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/LocalSocketAddress; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Namespace )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/net/LocalSocketAddress$Namespace;>; )
+public final class android.net.LocalSocketAddress$Namespace extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.net.LocalSocketAddress$Namespace[] $VALUES
+
+public static final android.net.LocalSocketAddress$Namespace ABSTRACT
+
+public static final android.net.LocalSocketAddress$Namespace FILESYSTEM
+
+public static final android.net.LocalSocketAddress$Namespace RESERVED
+
+private int id
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.net.LocalSocketAddress$Namespace valueOf(
+java.lang.String)
+
+public static android.net.LocalSocketAddress$Namespace[] values()
+
+ int getId()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/LocalSocketAddress$Namespace; )
+public class android.net.LocalSocketAddress extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final java.lang.String name
+
+private final android.net.LocalSocketAddress$Namespace namespace
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+android.net.LocalSocketAddress$Namespace)
+
+public java.lang.String getName()
+
+public android.net.LocalSocketAddress$Namespace getNamespace()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =SocketInputStream )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/LocalSocketImpl; )
+ class android.net.LocalSocketImpl$SocketInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+final android.net.LocalSocketImpl this$0
+----------------METHODS----------------
+
+ void <init>(
+android.net.LocalSocketImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/LocalSocketImpl; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =SocketOutputStream )
+ class android.net.LocalSocketImpl$SocketOutputStream extends java.io.OutputStream
+
+----------------FIELDS----------------
+
+final android.net.LocalSocketImpl this$0
+----------------METHODS----------------
+
+ void <init>(
+android.net.LocalSocketImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/LocalSocketImpl$SocketOutputStream;Landroid/net/LocalSocketImpl$SocketInputStream; )
+ class android.net.LocalSocketImpl extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.io.FileDescriptor fd
+
+private android.net.LocalSocketImpl$SocketInputStream fis
+
+private android.net.LocalSocketImpl$SocketOutputStream fos
+
+ java.io.FileDescriptor[] inboundFileDescriptors
+
+ java.io.FileDescriptor[] outboundFileDescriptors
+
+private java.lang.Object readMonitor
+
+private java.lang.Object writeMonitor
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void <init>(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native java.io.FileDescriptor accept(
+java.io.FileDescriptor
+android.net.LocalSocketImpl)
+
+static java.io.FileDescriptor access$000(
+android.net.LocalSocketImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static int access$100(
+android.net.LocalSocketImpl
+java.io.FileDescriptor)
+
+static java.lang.Object access$200(
+android.net.LocalSocketImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static int access$300(
+android.net.LocalSocketImpl
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static int access$400(
+android.net.LocalSocketImpl
+byte[]
+int
+int
+java.io.FileDescriptor)
+
+static java.lang.Object access$500(
+android.net.LocalSocketImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static void access$600(
+android.net.LocalSocketImpl
+byte[]
+int
+int
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static void access$700(
+android.net.LocalSocketImpl
+int
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native int available_native(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native void bindLocal(
+java.io.FileDescriptor
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native void close_native(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native void connectLocal(
+java.io.FileDescriptor
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native java.io.FileDescriptor create_native(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native int getOption_native(
+java.io.FileDescriptor
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native android.net.Credentials getPeerCredentials_native(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native void listen_native(
+java.io.FileDescriptor
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native int read_native(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native int readba_native(
+byte[]
+int
+int
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native void setOption_native(
+java.io.FileDescriptor
+int
+int
+int)
+
+private native void shutdown(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native void write_native(
+int
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native void writeba_native(
+byte[]
+int
+int
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void accept(
+android.net.LocalSocketImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void bind(
+android.net.LocalSocketAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void connect(
+android.net.LocalSocketAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void create(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void finalize()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.FileDescriptor[] getAncillaryFileDescriptors()
+
+protected java.io.FileDescriptor getFileDescriptor()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.io.InputStream getInputStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getOption(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.io.OutputStream getOutputStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public android.net.Credentials getPeerCredentials()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public android.net.LocalSocketAddress getSockAddress()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void listen(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void sendUrgentData(
+int)
+
+public void setFileDescriptorsForSend(
+java.io.FileDescriptor[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setOption(
+int
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void shutdownInput()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void shutdownOutput()
+
+protected boolean supportsUrgentData()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class android.net.MailTo extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String BODY
+
+private static final java.lang.String CC
+
+public static final java.lang.String MAILTO_SCHEME
+
+private static final java.lang.String SUBJECT
+
+private static final java.lang.String TO
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>; )
+private java.util.HashMap mHeaders
+----------------METHODS----------------
+
+private void <init>()
+
+public static boolean isMailTo(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/net/ParseException; )
+public static android.net.MailTo parse(
+java.lang.String)
+
+public java.lang.String getBody()
+
+public java.lang.String getCc()
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+public java.util.Map getHeaders()
+
+public java.lang.String getSubject()
+
+public java.lang.String getTo()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/MobileDataStateTracker; )
+ class android.net.MobileDataStateTracker$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$com$android$internal$telephony$Phone$DataState
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/MobileDataStateTracker; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =MobileDataStateReceiver )
+ class android.net.MobileDataStateTracker$MobileDataStateReceiver extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final android.net.MobileDataStateTracker this$0
+----------------METHODS----------------
+
+private void <init>(
+android.net.MobileDataStateTracker)
+
+ void <init>(
+android.net.MobileDataStateTracker
+android.net.MobileDataStateTracker$1)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+
+public abstract class android.net.NetworkStateTracker extends android.os.Handler
+
+----------------FIELDS----------------
+
+private static boolean DBG
+
+public static final int EVENT_CONFIGURATION_CHANGED
+
+public static final int EVENT_NOTIFICATION_CHANGED
+
+public static final int EVENT_SCAN_RESULTS_AVAILABLE
+
+public static final int EVENT_STATE_CHANGED
+
+private static final java.lang.String TAG
+
+protected android.content.Context mContext
+
+protected android.net.NetworkInfo mNetworkInfo
+
+protected android.os.Handler mTarget
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context
+android.os.Handler
+int)
+
+protected static java.lang.String[] getNameServerList(
+java.lang.String[])
+
+private void setBufferSize(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void stringToFile(
+java.lang.String
+java.lang.String)
+
+public abstract java.lang.String[] getNameServers()
+
+public android.net.NetworkInfo getNetworkInfo()
+
+public abstract java.lang.String getTcpBufferSizesPropName()
+
+public void interpretScanResultsAvailable()
+
+public abstract boolean isAvailable()
+
+public abstract boolean reconnect()
+
+public boolean requestRouteToHost(
+int)
+
+protected void sendScanResultsAvailable()
+
+public void setDetailedState(
+android.net.NetworkInfo$DetailedState)
+
+public void setDetailedState(
+android.net.NetworkInfo$DetailedState
+java.lang.String
+java.lang.String)
+
+protected void setDetailedStateInternal(
+android.net.NetworkInfo$DetailedState)
+
+public abstract boolean setRadio(
+boolean)
+
+public abstract void startMonitoring()
+
+public abstract int startUsingNetworkFeature(
+java.lang.String
+int
+int)
+
+public abstract int stopUsingNetworkFeature(
+java.lang.String
+int
+int)
+
+public abstract boolean teardown()
+
+public void updateNetworkSettings()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/MobileDataStateTracker$1;Landroid/net/MobileDataStateTracker$MobileDataStateReceiver; )
+public class android.net.MobileDataStateTracker extends android.net.NetworkStateTracker
+
+----------------FIELDS----------------
+
+private static final boolean DBG
+
+private static final java.lang.String TAG
+
+private static final java.lang.String[] sDnsPropNames
+
+private int mDefaultGatewayAddr
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/lang/String;>; )
+private java.util.List mDnsServers
+
+private java.lang.String mInterfaceName
+
+private int mLastCallingPid
+
+private com.android.internal.telephony.Phone$DataState mMobileDataState
+
+private com.android.internal.telephony.ITelephony mPhoneService
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context
+android.os.Handler)
+
+static com.android.internal.telephony.Phone$DataState access$100(
+android.content.Intent)
+
+static com.android.internal.telephony.Phone$DataState access$200(
+android.net.MobileDataStateTracker)
+
+static com.android.internal.telephony.Phone$DataState access$202(
+android.net.MobileDataStateTracker
+com.android.internal.telephony.Phone$DataState)
+
+static java.lang.String access$300(
+android.net.MobileDataStateTracker)
+
+static java.lang.String access$302(
+android.net.MobileDataStateTracker
+java.lang.String)
+
+static int access$402(
+android.net.MobileDataStateTracker
+int)
+
+static void access$500(
+android.net.MobileDataStateTracker)
+
+private static com.android.internal.telephony.Phone$DataState getMobileDataState(
+android.content.Intent)
+
+private void getPhoneService(
+boolean)
+
+private int setEnableApn(
+java.lang.String
+boolean)
+
+private void setupDnsProperties()
+
+public void addPrivateRoutes()
+
+public java.lang.String[] getNameServers()
+
+public java.lang.String getTcpBufferSizesPropName()
+
+public boolean isAvailable()
+
+public boolean reconnect()
+
+public void removeDefaultRoute()
+
+public void removePrivateRoutes()
+
+public boolean requestRouteToHost(
+int)
+
+public void restoreDefaultRoute()
+
+public boolean setRadio(
+boolean)
+
+public void startMonitoring()
+
+public int startUsingNetworkFeature(
+java.lang.String
+int
+int)
+
+public int stopUsingNetworkFeature(
+java.lang.String
+int
+int)
+
+public boolean teardown()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/NetworkConnectivityListener; )
+ class android.net.NetworkConnectivityListener$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/NetworkConnectivityListener; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =ConnectivityBroadcastReceiver )
+ class android.net.NetworkConnectivityListener$ConnectivityBroadcastReceiver extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final android.net.NetworkConnectivityListener this$0
+----------------METHODS----------------
+
+private void <init>(
+android.net.NetworkConnectivityListener)
+
+ void <init>(
+android.net.NetworkConnectivityListener
+android.net.NetworkConnectivityListener$1)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/net/NetworkConnectivityListener$State;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/NetworkConnectivityListener; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =State )
+public final class android.net.NetworkConnectivityListener$State extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.net.NetworkConnectivityListener$State[] $VALUES
+
+public static final android.net.NetworkConnectivityListener$State CONNECTED
+
+public static final android.net.NetworkConnectivityListener$State NOT_CONNECTED
+
+public static final android.net.NetworkConnectivityListener$State UNKNOWN
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.net.NetworkConnectivityListener$State valueOf(
+java.lang.String)
+
+public static android.net.NetworkConnectivityListener$State[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/NetworkConnectivityListener$1;Landroid/net/NetworkConnectivityListener$State;Landroid/net/NetworkConnectivityListener$ConnectivityBroadcastReceiver; )
+public class android.net.NetworkConnectivityListener extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean DBG
+
+private static final java.lang.String TAG
+
+private android.content.Context mContext
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Landroid/os/Handler;Ljava/lang/Integer;>; )
+private java.util.HashMap mHandlers
+
+private boolean mIsFailover
+
+private boolean mListening
+
+private android.net.NetworkInfo mNetworkInfo
+
+private android.net.NetworkInfo mOtherNetworkInfo
+
+private java.lang.String mReason
+
+private android.net.NetworkConnectivityListener$ConnectivityBroadcastReceiver mReceiver
+
+private android.net.NetworkConnectivityListener$State mState
+----------------METHODS----------------
+
+public void <init>()
+
+static boolean access$000(
+android.net.NetworkConnectivityListener)
+
+static android.net.NetworkConnectivityListener$State access$100(
+android.net.NetworkConnectivityListener)
+
+static android.net.NetworkConnectivityListener$State access$102(
+android.net.NetworkConnectivityListener
+android.net.NetworkConnectivityListener$State)
+
+static android.net.NetworkInfo access$202(
+android.net.NetworkConnectivityListener
+android.net.NetworkInfo)
+
+static android.net.NetworkInfo access$302(
+android.net.NetworkConnectivityListener
+android.net.NetworkInfo)
+
+static java.lang.String access$402(
+android.net.NetworkConnectivityListener
+java.lang.String)
+
+static boolean access$502(
+android.net.NetworkConnectivityListener
+boolean)
+
+static java.util.HashMap access$600(
+android.net.NetworkConnectivityListener)
+
+public android.net.NetworkInfo getNetworkInfo()
+
+public android.net.NetworkInfo getOtherNetworkInfo()
+
+public java.lang.String getReason()
+
+public android.net.NetworkConnectivityListener$State getState()
+
+public boolean isFailover()
+
+public void registerHandler(
+android.os.Handler
+int)
+
+public void startListening(
+android.content.Context)
+
+public void stopListening()
+
+public void unregisterHandler(
+android.os.Handler)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/NetworkInfo; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/net/NetworkInfo;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.net.NetworkInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.net.NetworkInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.net.NetworkInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/NetworkInfo; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/net/NetworkInfo$DetailedState;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =DetailedState )
+public final class android.net.NetworkInfo$DetailedState extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.net.NetworkInfo$DetailedState[] $VALUES
+
+public static final android.net.NetworkInfo$DetailedState AUTHENTICATING
+
+public static final android.net.NetworkInfo$DetailedState CONNECTED
+
+public static final android.net.NetworkInfo$DetailedState CONNECTING
+
+public static final android.net.NetworkInfo$DetailedState DISCONNECTED
+
+public static final android.net.NetworkInfo$DetailedState DISCONNECTING
+
+public static final android.net.NetworkInfo$DetailedState FAILED
+
+public static final android.net.NetworkInfo$DetailedState IDLE
+
+public static final android.net.NetworkInfo$DetailedState OBTAINING_IPADDR
+
+public static final android.net.NetworkInfo$DetailedState SCANNING
+
+public static final android.net.NetworkInfo$DetailedState SUSPENDED
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.net.NetworkInfo$DetailedState valueOf(
+java.lang.String)
+
+public static android.net.NetworkInfo$DetailedState[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/net/NetworkInfo$State;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =State )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/NetworkInfo; )
+public final class android.net.NetworkInfo$State extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.net.NetworkInfo$State[] $VALUES
+
+public static final android.net.NetworkInfo$State CONNECTED
+
+public static final android.net.NetworkInfo$State CONNECTING
+
+public static final android.net.NetworkInfo$State DISCONNECTED
+
+public static final android.net.NetworkInfo$State DISCONNECTING
+
+public static final android.net.NetworkInfo$State SUSPENDED
+
+public static final android.net.NetworkInfo$State UNKNOWN
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.net.NetworkInfo$State valueOf(
+java.lang.String)
+
+public static android.net.NetworkInfo$State[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/NetworkInfo$DetailedState;Landroid/net/NetworkInfo$State; )
+public class android.net.NetworkInfo extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/net/NetworkInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+@dalvik.annotation.Signature (value =Ljava/util/EnumMap<Landroid/net/NetworkInfo$DetailedState;Landroid/net/NetworkInfo$State;>; )
+private static final java.util.EnumMap stateMap
+
+private android.net.NetworkInfo$DetailedState mDetailedState
+
+private java.lang.String mExtraInfo
+
+private boolean mIsAvailable
+
+private boolean mIsFailover
+
+private int mNetworkType
+
+private java.lang.String mReason
+
+private android.net.NetworkInfo$State mState
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int)
+
+static android.net.NetworkInfo$State access$002(
+android.net.NetworkInfo
+android.net.NetworkInfo$State)
+
+static android.net.NetworkInfo$DetailedState access$102(
+android.net.NetworkInfo
+android.net.NetworkInfo$DetailedState)
+
+static boolean access$202(
+android.net.NetworkInfo
+boolean)
+
+static boolean access$302(
+android.net.NetworkInfo
+boolean)
+
+static java.lang.String access$402(
+android.net.NetworkInfo
+java.lang.String)
+
+static java.lang.String access$502(
+android.net.NetworkInfo
+java.lang.String)
+
+public int describeContents()
+
+public android.net.NetworkInfo$DetailedState getDetailedState()
+
+public java.lang.String getExtraInfo()
+
+public java.lang.String getReason()
+
+public android.net.NetworkInfo$State getState()
+
+public int getType()
+
+public java.lang.String getTypeName()
+
+public boolean isAvailable()
+
+public boolean isConnected()
+
+public boolean isConnectedOrConnecting()
+
+public boolean isFailover()
+
+ void setDetailedState(
+android.net.NetworkInfo$DetailedState
+java.lang.String
+java.lang.String)
+
+public void setFailover(
+boolean)
+
+public void setIsAvailable(
+boolean)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class android.net.NetworkUtils extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static native int addHostRoute(
+java.lang.String
+int)
+
+public static boolean configureInterface(
+java.lang.String
+android.net.DhcpInfo)
+
+private static native boolean configureNative(
+java.lang.String
+int
+int
+int
+int
+int)
+
+public static native int disableInterface(
+java.lang.String)
+
+public static native int getDefaultRoute(
+java.lang.String)
+
+public static native java.lang.String getDhcpError()
+
+public static int lookupHost(
+java.lang.String)
+
+public static native int removeDefaultRoute(
+java.lang.String)
+
+public static native int removeHostRoutes(
+java.lang.String)
+
+public static native int resetConnections(
+java.lang.String)
+
+public static native boolean runDhcp(
+java.lang.String
+android.net.DhcpInfo)
+
+public static native int setDefaultRoute(
+java.lang.String
+int)
+
+public static native boolean stopDhcp(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.net.ParseException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+public java.lang.String response
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class android.net.Proxy extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String PROXY_CHANGE_ACTION
+----------------METHODS----------------
+
+public void <init>()
+
+public static final java.lang.String getDefaultHost()
+
+public static final int getDefaultPort()
+
+public static final java.lang.String getHost(
+android.content.Context)
+
+public static final int getPort(
+android.content.Context)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/SSLCertificateSocketFactory; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.net.SSLCertificateSocketFactory$1 extends java.lang.Object implements javax.net.ssl.X509TrustManager
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public void checkClientTrusted(
+java.security.cert.X509Certificate[]
+java.lang.String)
+
+public void checkServerTrusted(
+java.security.cert.X509Certificate[]
+java.lang.String)
+
+public java.security.cert.X509Certificate[] getAcceptedIssuers()
+
+________________CLASS________________
+
+
+public class android.net.SSLCertificateSocketFactory extends javax.net.ssl.SSLSocketFactory
+
+----------------FIELDS----------------
+
+private static final boolean DBG
+
+private static final java.lang.String LOG_TAG
+
+private static final javax.net.ssl.TrustManager[] TRUST_MANAGER
+
+private static javax.net.ssl.X509TrustManager sDefaultTrustManager
+
+private javax.net.ssl.SSLSocketFactory factory
+
+private final int socketReadTimeoutForSslHandshake
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/KeyManagementException; )
+public void <init>(
+int)
+
+public static javax.net.SocketFactory getDefault(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private boolean hasValidCertificateChain(
+java.security.cert.Certificate[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void validateSocket(
+javax.net.ssl.SSLSocket
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket createSocket(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket createSocket(
+java.lang.String
+int
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket createSocket(
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket createSocket(
+java.net.InetAddress
+int
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket createSocket(
+java.net.Socket
+java.lang.String
+int
+boolean)
+
+public java.lang.String[] getDefaultCipherSuites()
+
+public java.lang.String[] getSupportedCipherSuites()
+
+________________CLASS________________
+
+
+public class android.net.SntpClient extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int NTP_MODE_CLIENT
+
+private static final int NTP_PACKET_SIZE
+
+private static final int NTP_PORT
+
+private static final int NTP_VERSION
+
+private static final long OFFSET_1900_TO_1970
+
+private static final int ORIGINATE_TIME_OFFSET
+
+private static final int RECEIVE_TIME_OFFSET
+
+private static final int REFERENCE_TIME_OFFSET
+
+private static final java.lang.String TAG
+
+private static final int TRANSMIT_TIME_OFFSET
+
+private long mNtpTime
+
+private long mNtpTimeReference
+
+private long mRoundTripTime
+----------------METHODS----------------
+
+public void <init>()
+
+private long read32(
+byte[]
+int)
+
+private long readTimeStamp(
+byte[]
+int)
+
+private void writeTimeStamp(
+byte[]
+int
+long)
+
+public long getNtpTime()
+
+public long getNtpTimeReference()
+
+public long getRoundTripTime()
+
+public boolean requestTime(
+java.lang.String
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/net/Uri;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/Uri; )
+final class android.net.Uri$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.net.Uri createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.net.Uri[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/Uri$PathPart;Landroid/net/Uri$Part;Landroid/net/Uri$AbstractPart;Landroid/net/Uri$Builder;Landroid/net/Uri$HierarchicalUri;Landroid/net/Uri$AbstractHierarchicalUri;Landroid/net/Uri$PathSegmentsBuilder;Landroid/net/Uri$PathSegments;Landroid/net/Uri$OpaqueUri;Landroid/net/Uri$StringUri; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable;Ljava/lang/Comparable<Landroid/net/Uri;>; )
+public abstract class android.net.Uri extends java.lang.Object implements android.os.Parcelable, java.lang.Comparable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/net/Uri;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+private static final java.lang.String DEFAULT_ENCODING
+
+public static final android.net.Uri EMPTY
+
+private static final char[] HEX_DIGITS
+
+private static final java.lang.String LOG
+
+private static final java.lang.String NOT_CACHED
+
+private static final int NOT_CALCULATED
+
+private static final int NOT_FOUND
+
+private static final java.lang.String NOT_HIERARCHICAL
+
+private static final int NULL_TYPE_ID
+
+private static final byte[] REPLACEMENT
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+ void <init>(
+android.net.Uri$1)
+
+static java.lang.String access$300()
+
+static java.lang.String access$600()
+
+public static java.lang.String decode(
+java.lang.String)
+
+public static java.lang.String encode(
+java.lang.String)
+
+public static java.lang.String encode(
+java.lang.String
+java.lang.String)
+
+public static android.net.Uri fromFile(
+java.io.File)
+
+public static android.net.Uri fromParts(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private static boolean isAllowed(
+char
+java.lang.String)
+
+public static android.net.Uri parse(
+java.lang.String)
+
+public static android.net.Uri withAppendedPath(
+android.net.Uri
+java.lang.String)
+
+public static void writeToParcel(
+android.os.Parcel
+android.net.Uri)
+
+public abstract android.net.Uri$Builder buildUpon()
+
+public int compareTo(
+android.net.Uri)
+
+public volatile int compareTo(
+java.lang.Object)
+
+public boolean equals(
+java.lang.Object)
+
+public abstract java.lang.String getAuthority()
+
+public abstract java.lang.String getEncodedAuthority()
+
+public abstract java.lang.String getEncodedFragment()
+
+public abstract java.lang.String getEncodedPath()
+
+public abstract java.lang.String getEncodedQuery()
+
+public abstract java.lang.String getEncodedSchemeSpecificPart()
+
+public abstract java.lang.String getEncodedUserInfo()
+
+public abstract java.lang.String getFragment()
+
+public abstract java.lang.String getHost()
+
+public abstract java.lang.String getLastPathSegment()
+
+public abstract java.lang.String getPath()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public abstract java.util.List getPathSegments()
+
+public abstract int getPort()
+
+public abstract java.lang.String getQuery()
+
+public java.lang.String getQueryParameter(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getQueryParameters(
+java.lang.String)
+
+public abstract java.lang.String getScheme()
+
+public abstract java.lang.String getSchemeSpecificPart()
+
+public abstract java.lang.String getUserInfo()
+
+public int hashCode()
+
+public boolean isAbsolute()
+
+public abstract boolean isHierarchical()
+
+public boolean isOpaque()
+
+public abstract boolean isRelative()
+
+public abstract java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/Uri; )
+@dalvik.annotation.InnerClass (accessFlags =1034 name =AbstractHierarchicalUri )
+abstract class android.net.Uri$AbstractHierarchicalUri extends android.net.Uri
+
+----------------FIELDS----------------
+
+private volatile java.lang.String host
+
+private volatile int port
+
+private android.net.Uri$Part userInfo
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.net.Uri$1)
+
+private android.net.Uri$Part getUserInfoPart()
+
+private java.lang.String parseHost()
+
+private int parsePort()
+
+private java.lang.String parseUserInfo()
+
+public volatile int compareTo(
+java.lang.Object)
+
+public final java.lang.String getEncodedUserInfo()
+
+public java.lang.String getHost()
+
+public java.lang.String getLastPathSegment()
+
+public int getPort()
+
+public java.lang.String getUserInfo()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =Representation )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/Uri$AbstractPart; )
+ class android.net.Uri$AbstractPart$Representation extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int BOTH
+
+static final int DECODED
+
+static final int ENCODED
+----------------METHODS----------------
+
+ void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/Uri; )
+@dalvik.annotation.MemberClasses (value =Landroid/net/Uri$AbstractPart$Representation; )
+@dalvik.annotation.InnerClass (accessFlags =1032 name =AbstractPart )
+abstract class android.net.Uri$AbstractPart extends java.lang.Object
+
+----------------FIELDS----------------
+
+volatile java.lang.String decoded
+
+volatile java.lang.String encoded
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+java.lang.String)
+
+final java.lang.String getDecoded()
+
+abstract java.lang.String getEncoded()
+
+final void writeTo(
+android.os.Parcel)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Builder )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/Uri; )
+public final class android.net.Uri$Builder extends java.lang.Object
+
+----------------FIELDS----------------
+
+private android.net.Uri$Part authority
+
+private android.net.Uri$Part fragment
+
+private android.net.Uri$Part opaquePart
+
+private android.net.Uri$PathPart path
+
+private android.net.Uri$Part query
+
+private java.lang.String scheme
+----------------METHODS----------------
+
+public void <init>()
+
+private boolean hasSchemeOrAuthority()
+
+public android.net.Uri$Builder appendEncodedPath(
+java.lang.String)
+
+public android.net.Uri$Builder appendPath(
+java.lang.String)
+
+public android.net.Uri$Builder appendQueryParameter(
+java.lang.String
+java.lang.String)
+
+ android.net.Uri$Builder authority(
+android.net.Uri$Part)
+
+public android.net.Uri$Builder authority(
+java.lang.String)
+
+public android.net.Uri build()
+
+public android.net.Uri$Builder encodedAuthority(
+java.lang.String)
+
+public android.net.Uri$Builder encodedFragment(
+java.lang.String)
+
+public android.net.Uri$Builder encodedOpaquePart(
+java.lang.String)
+
+public android.net.Uri$Builder encodedPath(
+java.lang.String)
+
+public android.net.Uri$Builder encodedQuery(
+java.lang.String)
+
+ android.net.Uri$Builder fragment(
+android.net.Uri$Part)
+
+public android.net.Uri$Builder fragment(
+java.lang.String)
+
+ android.net.Uri$Builder opaquePart(
+android.net.Uri$Part)
+
+public android.net.Uri$Builder opaquePart(
+java.lang.String)
+
+ android.net.Uri$Builder path(
+android.net.Uri$PathPart)
+
+public android.net.Uri$Builder path(
+java.lang.String)
+
+ android.net.Uri$Builder query(
+android.net.Uri$Part)
+
+public android.net.Uri$Builder query(
+java.lang.String)
+
+public android.net.Uri$Builder scheme(
+java.lang.String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/Uri; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =HierarchicalUri )
+ class android.net.Uri$HierarchicalUri extends android.net.Uri$AbstractHierarchicalUri
+
+----------------FIELDS----------------
+
+static final int TYPE_ID
+
+private final android.net.Uri$Part authority
+
+private final android.net.Uri$Part fragment
+
+private final android.net.Uri$PathPart path
+
+private final android.net.Uri$Part query
+
+private final java.lang.String scheme
+
+private android.net.Uri$Part ssp
+
+private volatile java.lang.String uriString
+----------------METHODS----------------
+
+private void <init>(
+java.lang.String
+android.net.Uri$Part
+android.net.Uri$PathPart
+android.net.Uri$Part
+android.net.Uri$Part)
+
+ void <init>(
+java.lang.String
+android.net.Uri$Part
+android.net.Uri$PathPart
+android.net.Uri$Part
+android.net.Uri$Part
+android.net.Uri$1)
+
+private void appendSspTo(
+java.lang.StringBuilder)
+
+private android.net.Uri$Part getSsp()
+
+private java.lang.String makeSchemeSpecificPart()
+
+private java.lang.String makeUriString()
+
+static android.net.Uri readFrom(
+android.os.Parcel)
+
+public android.net.Uri$Builder buildUpon()
+
+public int describeContents()
+
+public java.lang.String getAuthority()
+
+public java.lang.String getEncodedAuthority()
+
+public java.lang.String getEncodedFragment()
+
+public java.lang.String getEncodedPath()
+
+public java.lang.String getEncodedQuery()
+
+public java.lang.String getEncodedSchemeSpecificPart()
+
+public java.lang.String getFragment()
+
+public java.lang.String getPath()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getPathSegments()
+
+public java.lang.String getQuery()
+
+public java.lang.String getScheme()
+
+public java.lang.String getSchemeSpecificPart()
+
+public boolean isHierarchical()
+
+public boolean isRelative()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/Uri; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =OpaqueUri )
+ class android.net.Uri$OpaqueUri extends android.net.Uri
+
+----------------FIELDS----------------
+
+static final int TYPE_ID
+
+private volatile java.lang.String cachedString
+
+private final android.net.Uri$Part fragment
+
+private final java.lang.String scheme
+
+private final android.net.Uri$Part ssp
+----------------METHODS----------------
+
+private void <init>(
+java.lang.String
+android.net.Uri$Part
+android.net.Uri$Part)
+
+ void <init>(
+java.lang.String
+android.net.Uri$Part
+android.net.Uri$Part
+android.net.Uri$1)
+
+static android.net.Uri readFrom(
+android.os.Parcel)
+
+public android.net.Uri$Builder buildUpon()
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int describeContents()
+
+public java.lang.String getAuthority()
+
+public java.lang.String getEncodedAuthority()
+
+public java.lang.String getEncodedFragment()
+
+public java.lang.String getEncodedPath()
+
+public java.lang.String getEncodedQuery()
+
+public java.lang.String getEncodedSchemeSpecificPart()
+
+public java.lang.String getEncodedUserInfo()
+
+public java.lang.String getFragment()
+
+public java.lang.String getHost()
+
+public java.lang.String getLastPathSegment()
+
+public java.lang.String getPath()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getPathSegments()
+
+public int getPort()
+
+public java.lang.String getQuery()
+
+public java.lang.String getScheme()
+
+public java.lang.String getSchemeSpecificPart()
+
+public java.lang.String getUserInfo()
+
+public boolean isHierarchical()
+
+public boolean isRelative()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/Uri$Part$EmptyPart; )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/Uri; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =Part )
+ class android.net.Uri$Part extends android.net.Uri$AbstractPart
+
+----------------FIELDS----------------
+
+static final android.net.Uri$Part EMPTY
+
+static final android.net.Uri$Part NULL
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+java.lang.String
+java.lang.String)
+
+ void <init>(
+java.lang.String
+java.lang.String
+android.net.Uri$1)
+
+static android.net.Uri$Part from(
+java.lang.String
+java.lang.String)
+
+static android.net.Uri$Part fromDecoded(
+java.lang.String)
+
+static android.net.Uri$Part fromEncoded(
+java.lang.String)
+
+static android.net.Uri$Part nonNull(
+android.net.Uri$Part)
+
+static android.net.Uri$Part readFrom(
+android.os.Parcel)
+
+ java.lang.String getEncoded()
+
+ boolean isEmpty()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =EmptyPart )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/Uri$Part; )
+ class android.net.Uri$Part$EmptyPart extends android.net.Uri$Part
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+ boolean isEmpty()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =PathPart )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/Uri; )
+ class android.net.Uri$PathPart extends android.net.Uri$AbstractPart
+
+----------------FIELDS----------------
+
+static final android.net.Uri$PathPart EMPTY
+
+static final android.net.Uri$PathPart NULL
+
+private android.net.Uri$PathSegments pathSegments
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+java.lang.String
+java.lang.String)
+
+static android.net.Uri$PathPart appendDecodedSegment(
+android.net.Uri$PathPart
+java.lang.String)
+
+static android.net.Uri$PathPart appendEncodedSegment(
+android.net.Uri$PathPart
+java.lang.String)
+
+static android.net.Uri$PathPart from(
+java.lang.String
+java.lang.String)
+
+static android.net.Uri$PathPart fromDecoded(
+java.lang.String)
+
+static android.net.Uri$PathPart fromEncoded(
+java.lang.String)
+
+static android.net.Uri$PathPart makeAbsolute(
+android.net.Uri$PathPart)
+
+static android.net.Uri$PathPart readFrom(
+android.os.Parcel)
+
+ java.lang.String getEncoded()
+
+ android.net.Uri$PathSegments getPathSegments()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/Uri; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =PathSegments )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractList<Ljava/lang/String;>;Ljava/util/RandomAccess; )
+ class android.net.Uri$PathSegments extends java.util.AbstractList implements java.util.RandomAccess
+
+----------------FIELDS----------------
+
+static final android.net.Uri$PathSegments EMPTY
+
+final java.lang.String[] segments
+
+final int size
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+java.lang.String[]
+int)
+
+public volatile java.lang.Object get(
+int)
+
+public java.lang.String get(
+int)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/Uri; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =PathSegmentsBuilder )
+ class android.net.Uri$PathSegmentsBuilder extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.lang.String[] segments
+
+ int size
+----------------METHODS----------------
+
+ void <init>()
+
+ void add(
+java.lang.String)
+
+ android.net.Uri$PathSegments build()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =StringUri )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/Uri; )
+ class android.net.Uri$StringUri extends android.net.Uri$AbstractHierarchicalUri
+
+----------------FIELDS----------------
+
+static final int TYPE_ID
+
+private android.net.Uri$Part authority
+
+private volatile int cachedFsi
+
+private volatile int cachedSsi
+
+private android.net.Uri$Part fragment
+
+private android.net.Uri$PathPart path
+
+private android.net.Uri$Part query
+
+private volatile java.lang.String scheme
+
+private android.net.Uri$Part ssp
+
+private final java.lang.String uriString
+----------------METHODS----------------
+
+private void <init>(
+java.lang.String)
+
+ void <init>(
+java.lang.String
+android.net.Uri$1)
+
+private int findFragmentSeparator()
+
+private int findSchemeSeparator()
+
+private android.net.Uri$Part getAuthorityPart()
+
+private android.net.Uri$Part getFragmentPart()
+
+private android.net.Uri$PathPart getPathPart()
+
+private android.net.Uri$Part getQueryPart()
+
+private android.net.Uri$Part getSsp()
+
+static java.lang.String parseAuthority(
+java.lang.String
+int)
+
+private java.lang.String parseFragment()
+
+private java.lang.String parsePath()
+
+static java.lang.String parsePath(
+java.lang.String
+int)
+
+private java.lang.String parseQuery()
+
+private java.lang.String parseScheme()
+
+private java.lang.String parseSsp()
+
+static android.net.Uri readFrom(
+android.os.Parcel)
+
+public android.net.Uri$Builder buildUpon()
+
+public int describeContents()
+
+public java.lang.String getAuthority()
+
+public java.lang.String getEncodedAuthority()
+
+public java.lang.String getEncodedFragment()
+
+public java.lang.String getEncodedPath()
+
+public java.lang.String getEncodedQuery()
+
+public java.lang.String getEncodedSchemeSpecificPart()
+
+public java.lang.String getFragment()
+
+public java.lang.String getPath()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getPathSegments()
+
+public java.lang.String getQuery()
+
+public java.lang.String getScheme()
+
+public java.lang.String getSchemeSpecificPart()
+
+public boolean isHierarchical()
+
+public boolean isRelative()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/UrlQuerySanitizer; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ValueSanitizer )
+public abstract interface class android.net.UrlQuerySanitizer$ValueSanitizer extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String sanitize(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =IllegalCharacterValueSanitizer )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/UrlQuerySanitizer; )
+public class android.net.UrlQuerySanitizer$IllegalCharacterValueSanitizer extends java.lang.Object implements android.net.UrlQuerySanitizer$ValueSanitizer
+
+----------------FIELDS----------------
+
+public static final int ALL_BUT_NUL_AND_ANGLE_BRACKETS_LEGAL
+
+public static final int ALL_BUT_NUL_LEGAL
+
+public static final int ALL_BUT_WHITESPACE_LEGAL
+
+public static final int ALL_ILLEGAL
+
+public static final int ALL_OK
+
+public static final int ALL_WHITESPACE_OK
+
+public static final int AMP_AND_SPACE_LEGAL
+
+public static final int AMP_LEGAL
+
+public static final int AMP_OK
+
+public static final int DQUOTE_OK
+
+public static final int GT_OK
+
+private static final java.lang.String JAVASCRIPT_PREFIX
+
+public static final int LT_OK
+
+private static final int MIN_SCRIPT_PREFIX_LENGTH
+
+public static final int NON_7_BIT_ASCII_OK
+
+public static final int NUL_OK
+
+public static final int OTHER_WHITESPACE_OK
+
+public static final int PCT_OK
+
+public static final int SCRIPT_URL_OK
+
+public static final int SPACE_LEGAL
+
+public static final int SPACE_OK
+
+public static final int SQUOTE_OK
+
+public static final int URL_AND_SPACE_LEGAL
+
+public static final int URL_LEGAL
+
+private static final java.lang.String VBSCRIPT_PREFIX
+
+private int mFlags
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int)
+
+private boolean characterIsLegal(
+char)
+
+private boolean isWhitespace(
+char)
+
+private java.lang.String trimWhitespace(
+java.lang.String)
+
+public java.lang.String sanitize(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1 name =ParameterValuePair )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/UrlQuerySanitizer; )
+public class android.net.UrlQuerySanitizer$ParameterValuePair extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String mParameter
+
+public java.lang.String mValue
+
+final android.net.UrlQuerySanitizer this$0
+----------------METHODS----------------
+
+public void <init>(
+android.net.UrlQuerySanitizer
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/UrlQuerySanitizer$IllegalCharacterValueSanitizer;Landroid/net/UrlQuerySanitizer$ValueSanitizer;Landroid/net/UrlQuerySanitizer$ParameterValuePair; )
+public class android.net.UrlQuerySanitizer extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final android.net.UrlQuerySanitizer$ValueSanitizer sAllButNulAndAngleBracketsLegal
+
+private static final android.net.UrlQuerySanitizer$ValueSanitizer sAllButNulLegal
+
+private static final android.net.UrlQuerySanitizer$ValueSanitizer sAllButWhitespaceLegal
+
+private static final android.net.UrlQuerySanitizer$ValueSanitizer sAllIllegal
+
+private static final android.net.UrlQuerySanitizer$ValueSanitizer sAmpAndSpaceLegal
+
+private static final android.net.UrlQuerySanitizer$ValueSanitizer sAmpLegal
+
+private static final android.net.UrlQuerySanitizer$ValueSanitizer sSpaceLegal
+
+private static final android.net.UrlQuerySanitizer$ValueSanitizer sURLLegal
+
+private static final android.net.UrlQuerySanitizer$ValueSanitizer sUrlAndSpaceLegal
+
+private boolean mAllowUnregisteredParamaters
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>; )
+private final java.util.HashMap mEntries
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/net/UrlQuerySanitizer$ParameterValuePair;>; )
+private final java.util.ArrayList mEntriesList
+
+private boolean mPreferFirstRepeatedParameter
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Landroid/net/UrlQuerySanitizer$ValueSanitizer;>; )
+private final java.util.HashMap mSanitizers
+
+private android.net.UrlQuerySanitizer$ValueSanitizer mUnregisteredParameterValueSanitizer
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public static final android.net.UrlQuerySanitizer$ValueSanitizer getAllButNulAndAngleBracketsLegal()
+
+public static final android.net.UrlQuerySanitizer$ValueSanitizer getAllButNulLegal()
+
+public static final android.net.UrlQuerySanitizer$ValueSanitizer getAllButWhitespaceLegal()
+
+public static final android.net.UrlQuerySanitizer$ValueSanitizer getAllIllegal()
+
+public static final android.net.UrlQuerySanitizer$ValueSanitizer getAmpAndSpaceLegal()
+
+public static final android.net.UrlQuerySanitizer$ValueSanitizer getAmpLegal()
+
+public static final android.net.UrlQuerySanitizer$ValueSanitizer getSpaceLegal()
+
+public static final android.net.UrlQuerySanitizer$ValueSanitizer getUrlAndSpaceLegal()
+
+public static final android.net.UrlQuerySanitizer$ValueSanitizer getUrlLegal()
+
+protected void addSanitizedEntry(
+java.lang.String
+java.lang.String)
+
+protected void clear()
+
+protected int decodeHexDigit(
+char)
+
+public boolean getAllowUnregisteredParamaters()
+
+public android.net.UrlQuerySanitizer$ValueSanitizer getEffectiveValueSanitizer(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Landroid/net/UrlQuerySanitizer$ParameterValuePair;>; )
+public java.util.List getParameterList()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public java.util.Set getParameterSet()
+
+public boolean getPreferFirstRepeatedParameter()
+
+public android.net.UrlQuerySanitizer$ValueSanitizer getUnregisteredParameterValueSanitizer()
+
+public java.lang.String getValue(
+java.lang.String)
+
+public android.net.UrlQuerySanitizer$ValueSanitizer getValueSanitizer(
+java.lang.String)
+
+public boolean hasParameter(
+java.lang.String)
+
+protected boolean isHexDigit(
+char)
+
+protected void parseEntry(
+java.lang.String
+java.lang.String)
+
+public void parseQuery(
+java.lang.String)
+
+public void parseUrl(
+java.lang.String)
+
+public void registerParameter(
+java.lang.String
+android.net.UrlQuerySanitizer$ValueSanitizer)
+
+public void registerParameters(
+java.lang.String[]
+android.net.UrlQuerySanitizer$ValueSanitizer)
+
+public void setAllowUnregisteredParamaters(
+boolean)
+
+public void setPreferFirstRepeatedParameter(
+boolean)
+
+public void setUnregisteredParameterValueSanitizer(
+android.net.UrlQuerySanitizer$ValueSanitizer)
+
+public java.lang.String unescape(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.net.WebAddress extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String LOGTAG
+
+static final int MATCH_GROUP_AUTHORITY
+
+static final int MATCH_GROUP_HOST
+
+static final int MATCH_GROUP_PATH
+
+static final int MATCH_GROUP_PORT
+
+static final int MATCH_GROUP_SCHEME
+
+static java.util.regex.Pattern sAddressPattern
+
+public java.lang.String mAuthInfo
+
+public java.lang.String mHost
+
+public java.lang.String mPath
+
+public int mPort
+
+public java.lang.String mScheme
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Landroid/net/ParseException; )
+public void <init>(
+java.lang.String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HttpRequestInterceptor extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public abstract void process(
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/http/AndroidHttpClient; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.net.http.AndroidHttpClient$1 extends java.lang.Object implements org.apache.http.HttpRequestInterceptor
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public void process(
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.client.HttpClient extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler<+TT;>;)TT; )
+public abstract java.lang.Object execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.client.ResponseHandler)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler<+TT;>;Lorg/apache/http/protocol/HttpContext;)TT; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+public abstract java.lang.Object execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.client.ResponseHandler
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler<+TT;>;)TT; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+public abstract java.lang.Object execute(
+org.apache.http.client.methods.HttpUriRequest
+org.apache.http.client.ResponseHandler)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler<+TT;>;Lorg/apache/http/protocol/HttpContext;)TT; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+public abstract java.lang.Object execute(
+org.apache.http.client.methods.HttpUriRequest
+org.apache.http.client.ResponseHandler
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+public abstract org.apache.http.HttpResponse execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+public abstract org.apache.http.HttpResponse execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+public abstract org.apache.http.HttpResponse execute(
+org.apache.http.client.methods.HttpUriRequest)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+public abstract org.apache.http.HttpResponse execute(
+org.apache.http.client.methods.HttpUriRequest
+org.apache.http.protocol.HttpContext)
+
+public abstract org.apache.http.conn.ClientConnectionManager getConnectionManager()
+
+public abstract org.apache.http.params.HttpParams getParams()
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.impl.client.AbstractHttpClient extends java.lang.Object implements org.apache.http.client.HttpClient
+
+----------------FIELDS----------------
+
+private org.apache.http.conn.ClientConnectionManager connManager
+
+private org.apache.http.client.CookieStore cookieStore
+
+private org.apache.http.client.CredentialsProvider credsProvider
+
+private org.apache.http.params.HttpParams defaultParams
+
+private org.apache.http.protocol.BasicHttpProcessor httpProcessor
+
+private org.apache.http.conn.ConnectionKeepAliveStrategy keepAliveStrategy
+
+private final org.apache.commons.logging.Log log
+
+private org.apache.http.client.AuthenticationHandler proxyAuthHandler
+
+private org.apache.http.client.RedirectHandler redirectHandler
+
+private org.apache.http.protocol.HttpRequestExecutor requestExec
+
+private org.apache.http.client.HttpRequestRetryHandler retryHandler
+
+private org.apache.http.ConnectionReuseStrategy reuseStrategy
+
+private org.apache.http.conn.routing.HttpRoutePlanner routePlanner
+
+private org.apache.http.auth.AuthSchemeRegistry supportedAuthSchemes
+
+private org.apache.http.cookie.CookieSpecRegistry supportedCookieSpecs
+
+private org.apache.http.client.AuthenticationHandler targetAuthHandler
+
+private org.apache.http.client.UserTokenHandler userTokenHandler
+----------------METHODS----------------
+
+protected void <init>(
+org.apache.http.conn.ClientConnectionManager
+org.apache.http.params.HttpParams)
+
+private org.apache.http.HttpHost determineTarget(
+org.apache.http.client.methods.HttpUriRequest)
+
+public void addRequestInterceptor(
+org.apache.http.HttpRequestInterceptor)
+
+public void addRequestInterceptor(
+org.apache.http.HttpRequestInterceptor
+int)
+
+public void addResponseInterceptor(
+org.apache.http.HttpResponseInterceptor)
+
+public void addResponseInterceptor(
+org.apache.http.HttpResponseInterceptor
+int)
+
+public void clearRequestInterceptors()
+
+public void clearResponseInterceptors()
+
+protected abstract org.apache.http.auth.AuthSchemeRegistry createAuthSchemeRegistry()
+
+protected abstract org.apache.http.conn.ClientConnectionManager createClientConnectionManager()
+
+protected org.apache.http.client.RequestDirector createClientRequestDirector(
+org.apache.http.protocol.HttpRequestExecutor
+org.apache.http.conn.ClientConnectionManager
+org.apache.http.ConnectionReuseStrategy
+org.apache.http.conn.ConnectionKeepAliveStrategy
+org.apache.http.conn.routing.HttpRoutePlanner
+org.apache.http.protocol.HttpProcessor
+org.apache.http.client.HttpRequestRetryHandler
+org.apache.http.client.RedirectHandler
+org.apache.http.client.AuthenticationHandler
+org.apache.http.client.AuthenticationHandler
+org.apache.http.client.UserTokenHandler
+org.apache.http.params.HttpParams)
+
+protected abstract org.apache.http.conn.ConnectionKeepAliveStrategy createConnectionKeepAliveStrategy()
+
+protected abstract org.apache.http.ConnectionReuseStrategy createConnectionReuseStrategy()
+
+protected abstract org.apache.http.cookie.CookieSpecRegistry createCookieSpecRegistry()
+
+protected abstract org.apache.http.client.CookieStore createCookieStore()
+
+protected abstract org.apache.http.client.CredentialsProvider createCredentialsProvider()
+
+protected abstract org.apache.http.protocol.HttpContext createHttpContext()
+
+protected abstract org.apache.http.params.HttpParams createHttpParams()
+
+protected abstract org.apache.http.protocol.BasicHttpProcessor createHttpProcessor()
+
+protected abstract org.apache.http.client.HttpRequestRetryHandler createHttpRequestRetryHandler()
+
+protected abstract org.apache.http.conn.routing.HttpRoutePlanner createHttpRoutePlanner()
+
+protected abstract org.apache.http.client.AuthenticationHandler createProxyAuthenticationHandler()
+
+protected abstract org.apache.http.client.RedirectHandler createRedirectHandler()
+
+protected abstract org.apache.http.protocol.HttpRequestExecutor createRequestExecutor()
+
+protected abstract org.apache.http.client.AuthenticationHandler createTargetAuthenticationHandler()
+
+protected abstract org.apache.http.client.UserTokenHandler createUserTokenHandler()
+
+protected org.apache.http.params.HttpParams determineParams(
+org.apache.http.HttpRequest)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler<+TT;>;)TT; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+public java.lang.Object execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.client.ResponseHandler)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler<+TT;>;Lorg/apache/http/protocol/HttpContext;)TT; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+public java.lang.Object execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.client.ResponseHandler
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler<+TT;>;)TT; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+public java.lang.Object execute(
+org.apache.http.client.methods.HttpUriRequest
+org.apache.http.client.ResponseHandler)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler<+TT;>;Lorg/apache/http/protocol/HttpContext;)TT; )
+public java.lang.Object execute(
+org.apache.http.client.methods.HttpUriRequest
+org.apache.http.client.ResponseHandler
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+public final org.apache.http.HttpResponse execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+public final org.apache.http.HttpResponse execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+public final org.apache.http.HttpResponse execute(
+org.apache.http.client.methods.HttpUriRequest)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+public final org.apache.http.HttpResponse execute(
+org.apache.http.client.methods.HttpUriRequest
+org.apache.http.protocol.HttpContext)
+
+public final org.apache.http.auth.AuthSchemeRegistry getAuthSchemes()
+
+public final org.apache.http.conn.ConnectionKeepAliveStrategy getConnectionKeepAliveStrategy()
+
+public final org.apache.http.conn.ClientConnectionManager getConnectionManager()
+
+public final org.apache.http.ConnectionReuseStrategy getConnectionReuseStrategy()
+
+public final org.apache.http.cookie.CookieSpecRegistry getCookieSpecs()
+
+public final org.apache.http.client.CookieStore getCookieStore()
+
+public final org.apache.http.client.CredentialsProvider getCredentialsProvider()
+
+protected final org.apache.http.protocol.BasicHttpProcessor getHttpProcessor()
+
+public final org.apache.http.client.HttpRequestRetryHandler getHttpRequestRetryHandler()
+
+public final org.apache.http.params.HttpParams getParams()
+
+public final org.apache.http.client.AuthenticationHandler getProxyAuthenticationHandler()
+
+public final org.apache.http.client.RedirectHandler getRedirectHandler()
+
+public final org.apache.http.protocol.HttpRequestExecutor getRequestExecutor()
+
+public org.apache.http.HttpRequestInterceptor getRequestInterceptor(
+int)
+
+public int getRequestInterceptorCount()
+
+public org.apache.http.HttpResponseInterceptor getResponseInterceptor(
+int)
+
+public int getResponseInterceptorCount()
+
+public final org.apache.http.conn.routing.HttpRoutePlanner getRoutePlanner()
+
+public final org.apache.http.client.AuthenticationHandler getTargetAuthenticationHandler()
+
+public final org.apache.http.client.UserTokenHandler getUserTokenHandler()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<+Lorg/apache/http/HttpRequestInterceptor;>;)V )
+public void removeRequestInterceptorByClass(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<+Lorg/apache/http/HttpResponseInterceptor;>;)V )
+public void removeResponseInterceptorByClass(
+java.lang.Class)
+
+public void setAuthSchemes(
+org.apache.http.auth.AuthSchemeRegistry)
+
+public void setCookieSpecs(
+org.apache.http.cookie.CookieSpecRegistry)
+
+public void setCookieStore(
+org.apache.http.client.CookieStore)
+
+public void setCredentialsProvider(
+org.apache.http.client.CredentialsProvider)
+
+public void setHttpRequestRetryHandler(
+org.apache.http.client.HttpRequestRetryHandler)
+
+public void setKeepAliveStrategy(
+org.apache.http.conn.ConnectionKeepAliveStrategy)
+
+public void setParams(
+org.apache.http.params.HttpParams)
+
+public void setProxyAuthenticationHandler(
+org.apache.http.client.AuthenticationHandler)
+
+public void setRedirectHandler(
+org.apache.http.client.RedirectHandler)
+
+public void setReuseStrategy(
+org.apache.http.ConnectionReuseStrategy)
+
+public void setRoutePlanner(
+org.apache.http.conn.routing.HttpRoutePlanner)
+
+public void setTargetAuthenticationHandler(
+org.apache.http.client.AuthenticationHandler)
+
+public void setUserTokenHandler(
+org.apache.http.client.UserTokenHandler)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.client.DefaultHttpClient extends org.apache.http.impl.client.AbstractHttpClient
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.apache.http.conn.ClientConnectionManager
+org.apache.http.params.HttpParams)
+
+public void <init>(
+org.apache.http.params.HttpParams)
+
+protected org.apache.http.auth.AuthSchemeRegistry createAuthSchemeRegistry()
+
+protected org.apache.http.conn.ClientConnectionManager createClientConnectionManager()
+
+protected org.apache.http.conn.ConnectionKeepAliveStrategy createConnectionKeepAliveStrategy()
+
+protected org.apache.http.ConnectionReuseStrategy createConnectionReuseStrategy()
+
+protected org.apache.http.cookie.CookieSpecRegistry createCookieSpecRegistry()
+
+protected org.apache.http.client.CookieStore createCookieStore()
+
+protected org.apache.http.client.CredentialsProvider createCredentialsProvider()
+
+protected org.apache.http.protocol.HttpContext createHttpContext()
+
+protected org.apache.http.params.HttpParams createHttpParams()
+
+protected org.apache.http.protocol.BasicHttpProcessor createHttpProcessor()
+
+protected org.apache.http.client.HttpRequestRetryHandler createHttpRequestRetryHandler()
+
+protected org.apache.http.conn.routing.HttpRoutePlanner createHttpRoutePlanner()
+
+protected org.apache.http.client.AuthenticationHandler createProxyAuthenticationHandler()
+
+protected org.apache.http.client.RedirectHandler createRedirectHandler()
+
+protected org.apache.http.protocol.HttpRequestExecutor createRequestExecutor()
+
+protected org.apache.http.client.AuthenticationHandler createTargetAuthenticationHandler()
+
+protected org.apache.http.client.UserTokenHandler createUserTokenHandler()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.net.http.AndroidHttpClient$2 extends org.apache.http.impl.client.DefaultHttpClient
+
+----------------FIELDS----------------
+
+final android.net.http.AndroidHttpClient this$0
+----------------METHODS----------------
+
+ void <init>(
+android.net.http.AndroidHttpClient
+org.apache.http.conn.ClientConnectionManager
+org.apache.http.params.HttpParams)
+
+protected org.apache.http.protocol.HttpContext createHttpContext()
+
+protected org.apache.http.protocol.BasicHttpProcessor createHttpProcessor()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/http/AndroidHttpClient; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =CurlLogger )
+ class android.net.http.AndroidHttpClient$CurlLogger extends java.lang.Object implements org.apache.http.HttpRequestInterceptor
+
+----------------FIELDS----------------
+
+final android.net.http.AndroidHttpClient this$0
+----------------METHODS----------------
+
+private void <init>(
+android.net.http.AndroidHttpClient)
+
+ void <init>(
+android.net.http.AndroidHttpClient
+android.net.http.AndroidHttpClient$1)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void process(
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =LoggingConfiguration )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/http/AndroidHttpClient; )
+ class android.net.http.AndroidHttpClient$LoggingConfiguration extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int level
+
+private final java.lang.String tag
+----------------METHODS----------------
+
+private void <init>(
+java.lang.String
+int)
+
+ void <init>(
+java.lang.String
+int
+android.net.http.AndroidHttpClient$1)
+
+static boolean access$500(
+android.net.http.AndroidHttpClient$LoggingConfiguration)
+
+static void access$700(
+android.net.http.AndroidHttpClient$LoggingConfiguration
+java.lang.String)
+
+private boolean isLoggable()
+
+private void println(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/http/AndroidHttpClient$CurlLogger;Landroid/net/http/AndroidHttpClient$LoggingConfiguration; )
+public final class android.net.http.AndroidHttpClient extends java.lang.Object implements org.apache.http.client.HttpClient
+
+----------------FIELDS----------------
+
+public static long DEFAULT_SYNC_MIN_GZIP_BYTES
+
+private static final java.lang.String TAG
+@dalvik.annotation.Signature (value =Ljava/lang/ThreadLocal<Ljava/lang/Boolean;>; )
+private static final java.lang.ThreadLocal sThreadBlocked
+
+private static final org.apache.http.HttpRequestInterceptor sThreadCheckInterceptor
+
+private volatile android.net.http.AndroidHttpClient$LoggingConfiguration curlConfiguration
+
+private final org.apache.http.client.HttpClient delegate
+
+private java.lang.RuntimeException mLeakedException
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+org.apache.http.conn.ClientConnectionManager
+org.apache.http.params.HttpParams)
+
+static java.lang.ThreadLocal access$000()
+
+static org.apache.http.HttpRequestInterceptor access$100()
+
+static android.net.http.AndroidHttpClient$LoggingConfiguration access$400(
+android.net.http.AndroidHttpClient)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static java.lang.String access$600(
+org.apache.http.client.methods.HttpUriRequest)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static org.apache.http.entity.AbstractHttpEntity getCompressedEntity(
+byte[]
+android.content.ContentResolver)
+
+public static long getMinGzipSize(
+android.content.ContentResolver)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static java.io.InputStream getUngzippedContent(
+org.apache.http.HttpEntity)
+
+public static void modifyRequestToAcceptGzipResponse(
+org.apache.http.HttpRequest)
+
+public static android.net.http.AndroidHttpClient newInstance(
+java.lang.String)
+
+public static void setThreadBlocked(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static java.lang.String toCurl(
+org.apache.http.client.methods.HttpUriRequest)
+
+public void close()
+
+public void disableCurlLogging()
+
+public void enableCurlLogging(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler<+TT;>;)TT; )
+public java.lang.Object execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.client.ResponseHandler)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler<+TT;>;Lorg/apache/http/protocol/HttpContext;)TT; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+public java.lang.Object execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.client.ResponseHandler
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler<+TT;>;)TT; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+public java.lang.Object execute(
+org.apache.http.client.methods.HttpUriRequest
+org.apache.http.client.ResponseHandler)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler<+TT;>;Lorg/apache/http/protocol/HttpContext;)TT; )
+public java.lang.Object execute(
+org.apache.http.client.methods.HttpUriRequest
+org.apache.http.client.ResponseHandler
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.apache.http.HttpResponse execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.apache.http.HttpResponse execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.apache.http.HttpResponse execute(
+org.apache.http.client.methods.HttpUriRequest)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.apache.http.HttpResponse execute(
+org.apache.http.client.methods.HttpUriRequest
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public org.apache.http.conn.ClientConnectionManager getConnectionManager()
+
+public org.apache.http.params.HttpParams getParams()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HttpConnection extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void close()
+
+public abstract org.apache.http.HttpConnectionMetrics getMetrics()
+
+public abstract int getSocketTimeout()
+
+public abstract boolean isOpen()
+
+public abstract boolean isStale()
+
+public abstract void setSocketTimeout(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void shutdown()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HttpInetConnection extends java.lang.Object implements org.apache.http.HttpConnection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.net.InetAddress getLocalAddress()
+
+public abstract int getLocalPort()
+
+public abstract java.net.InetAddress getRemoteAddress()
+
+public abstract int getRemotePort()
+
+________________CLASS________________
+
+
+public class android.net.http.AndroidHttpClientConnection extends java.lang.Object implements org.apache.http.HttpInetConnection, org.apache.http.HttpConnection
+
+----------------FIELDS----------------
+
+private final org.apache.http.impl.entity.EntitySerializer entityserializer
+
+private org.apache.http.io.SessionInputBuffer inbuffer
+
+private int maxHeaderCount
+
+private int maxLineLength
+
+private org.apache.http.impl.HttpConnectionMetricsImpl metrics
+
+private volatile boolean open
+
+private org.apache.http.io.SessionOutputBuffer outbuffer
+
+private org.apache.http.io.HttpMessageWriter requestWriter
+
+private java.net.Socket socket
+----------------METHODS----------------
+
+public void <init>()
+
+private void assertNotOpen()
+
+private void assertOpen()
+
+private long determineLength(
+android.net.http.Headers)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void bind(
+java.net.Socket
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void doFlush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+
+public java.net.InetAddress getLocalAddress()
+
+public int getLocalPort()
+
+public org.apache.http.HttpConnectionMetrics getMetrics()
+
+public java.net.InetAddress getRemoteAddress()
+
+public int getRemotePort()
+
+public int getSocketTimeout()
+
+public boolean isOpen()
+
+public boolean isStale()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/ParseException; )
+public org.apache.http.StatusLine parseResponseHeader(
+android.net.http.Headers)
+
+public org.apache.http.HttpEntity receiveResponseEntity(
+android.net.http.Headers)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void sendRequestEntity(
+org.apache.http.HttpEntityEnclosingRequest)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void sendRequestHeader(
+org.apache.http.HttpRequest)
+
+public void setSocketTimeout(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void shutdown()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+ class android.net.http.CertificateChainValidator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static android.net.http.CertificateChainValidator sInstance
+
+private static long sTotal
+
+private static long sTotalReused
+
+private javax.net.ssl.X509TrustManager mDefaultTrustManager
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLHandshakeException;Ljava/io/IOException; )
+private void closeSocketThrowException(
+javax.net.ssl.SSLSocket
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLHandshakeException;Ljava/io/IOException; )
+private void closeSocketThrowException(
+javax.net.ssl.SSLSocket
+java.lang.String
+java.lang.String)
+
+public static android.net.http.CertificateChainValidator getInstance()
+
+private javax.net.ssl.SSLSession getSSLSession(
+javax.net.ssl.SSLContext
+org.apache.http.HttpHost)
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLHandshakeException;Ljava/io/IOException; )
+public android.net.http.SslError doHandshakeAndValidateServerCertificates(
+android.net.http.HttpsConnection
+javax.net.ssl.SSLSocket
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/http/CertificateValidatorCache; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =CacheEntry )
+ class android.net.http.CertificateValidatorCache$CacheEntry extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.String mDomain
+
+private byte[] mHash
+
+public long mSave
+
+private long mTime
+
+final android.net.http.CertificateValidatorCache this$0
+----------------METHODS----------------
+
+public void <init>(
+android.net.http.CertificateValidatorCache
+java.lang.String
+byte[]
+long)
+
+public boolean expired()
+
+public boolean has(
+java.lang.String
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/http/CertificateValidatorCache$CacheEntry; )
+ class android.net.http.CertificateValidatorCache extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final long CACHE_ENTRY_LIFETIME
+
+public static long mCost
+
+public static long mSave
+
+private static java.security.cert.CertificateFactory sCertificateFactory
+
+private int mBigScrew
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Landroid/net/http/CertificateValidatorCache$CacheEntry;>; )
+private java.util.HashMap mCacheMap
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static byte[] secureHash(
+java.security.cert.Certificate[])
+
+public boolean has(
+java.lang.String
+byte[])
+
+public boolean put(
+java.lang.String
+byte[]
+long)
+
+________________CLASS________________
+
+
+ class android.net.http.CharArrayBuffers extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final char uppercaseAddon
+----------------METHODS----------------
+
+ void <init>()
+
+static boolean containsIgnoreCaseTrimmed(
+org.apache.http.util.CharArrayBuffer
+int
+java.lang.String)
+
+static int setLowercaseIndexOf(
+org.apache.http.util.CharArrayBuffer
+int)
+
+private static char toLower(
+char)
+
+________________CLASS________________
+
+
+abstract class android.net.http.Connection extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int DONE
+
+private static final int DRAIN
+
+private static final java.lang.String HTTP_CONNECTION
+
+private static final int MAX_PIPE
+
+private static final int MIN_PIPE
+
+private static final int READ
+
+private static final int RETRY_REQUEST_LIMIT
+
+private static final int SEND
+
+static final int SOCKET_TIMEOUT
+
+private static int STATE_CANCEL_REQUESTED
+
+private static int STATE_NORMAL
+
+private static final java.lang.String[] states
+
+private int mActive
+
+private byte[] mBuf
+
+private boolean mCanPersist
+
+protected android.net.http.SslCertificate mCertificate
+
+ android.net.http.RequestQueue$ConnectionManager mConnectionManager
+
+ android.content.Context mContext
+
+ org.apache.http.HttpHost mHost
+
+protected android.net.http.AndroidHttpClientConnection mHttpClientConnection
+
+private org.apache.http.protocol.HttpContext mHttpContext
+
+ android.net.http.RequestFeeder mRequestFeeder
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+android.content.Context
+org.apache.http.HttpHost
+android.net.http.RequestQueue$ConnectionManager
+android.net.http.RequestFeeder)
+@dalvik.annotation.Signature (value =(Ljava/util/LinkedList<Landroid/net/http/Request;>;)Z )
+private boolean clearPipe(
+java.util.LinkedList)
+
+static android.net.http.Connection getConnection(
+android.content.Context
+org.apache.http.HttpHost
+android.net.http.RequestQueue$ConnectionManager
+android.net.http.RequestFeeder)
+
+private boolean httpFailure(
+android.net.http.Request
+int
+java.lang.Exception)
+
+private boolean keepAlive(
+org.apache.http.HttpEntity
+org.apache.http.ProtocolVersion
+int
+org.apache.http.protocol.HttpContext)
+
+private boolean openHttpConnection(
+android.net.http.Request)
+
+ void cancel()
+
+abstract void closeConnection()
+
+ byte[] getBuf()
+
+ boolean getCanPersist()
+
+ android.net.http.SslCertificate getCertificate()
+
+ org.apache.http.HttpHost getHost()
+
+ org.apache.http.protocol.HttpContext getHttpContext()
+
+abstract java.lang.String getScheme()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+abstract android.net.http.AndroidHttpClientConnection openConnection(
+android.net.http.Request)
+
+ void processRequests(
+android.net.http.Request)
+
+ void setCanPersist(
+org.apache.http.HttpEntity
+org.apache.http.ProtocolVersion
+int)
+
+ void setCanPersist(
+boolean)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+ class android.net.http.ConnectionThread extends java.lang.Thread
+
+----------------FIELDS----------------
+
+static final int WAIT_TICK
+
+static final int WAIT_TIMEOUT
+
+ android.net.http.Connection mConnection
+
+private android.net.http.RequestQueue$ConnectionManager mConnectionManager
+
+private android.content.Context mContext
+
+ long mCurrentThreadTime
+
+private int mId
+
+private android.net.http.RequestFeeder mRequestFeeder
+
+private volatile boolean mRunning
+
+ long mStartThreadTime
+
+private boolean mWaiting
+----------------METHODS----------------
+
+ void <init>(
+android.content.Context
+int
+android.net.http.RequestQueue$ConnectionManager
+android.net.http.RequestFeeder)
+
+ void requestStop()
+
+public void run()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class android.net.http.DomainNameChecker extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int ALT_DNS_NAME
+
+private static final int ALT_IPA_NAME
+
+private static java.util.regex.Pattern QUICK_IP_PATTERN
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static boolean domainTokenMatch(
+java.lang.String
+java.lang.String)
+
+private static boolean isIpAddress(
+java.lang.String)
+
+public static boolean match(
+java.security.cert.X509Certificate
+java.lang.String)
+
+private static boolean matchDns(
+java.lang.String
+java.lang.String)
+
+private static boolean matchDns(
+java.security.cert.X509Certificate
+java.lang.String)
+
+private static boolean matchIpAddress(
+java.security.cert.X509Certificate
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class android.net.http.EventHandler extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ERROR
+
+public static final int ERROR_AUTH
+
+public static final int ERROR_BAD_URL
+
+public static final int ERROR_CONNECT
+
+public static final int ERROR_FAILED_SSL_HANDSHAKE
+
+public static final int ERROR_IO
+
+public static final int ERROR_LOOKUP
+
+public static final int ERROR_PROXYAUTH
+
+public static final int ERROR_REDIRECT_LOOP
+
+public static final int ERROR_TIMEOUT
+
+public static final int ERROR_UNSUPPORTED_AUTH_SCHEME
+
+public static final int ERROR_UNSUPPORTED_SCHEME
+
+public static final int FILE_ERROR
+
+public static final int FILE_NOT_FOUND_ERROR
+
+public static final int OK
+
+public static final int TOO_MANY_REQUESTS_ERROR
+
+public static final int[] errorStringResources
+----------------METHODS----------------
+
+static void <clinit>()
+
+public abstract void certificate(
+android.net.http.SslCertificate)
+
+public abstract void data(
+byte[]
+int)
+
+public abstract void endData()
+
+public abstract void error(
+int
+java.lang.String)
+
+public abstract void handleSslErrorRequest(
+android.net.http.SslError)
+
+public abstract void headers(
+android.net.http.Headers)
+
+public abstract void status(
+int
+int
+int
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class android.net.http.Headers extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACCEPT_RANGES
+
+public static final java.lang.String CACHE_CONTROL
+
+public static final int CONN_CLOSE
+
+public static final java.lang.String CONN_DIRECTIVE
+
+public static final int CONN_KEEP_ALIVE
+
+public static final java.lang.String CONTENT_DISPOSITION
+
+public static final java.lang.String CONTENT_ENCODING
+
+public static final java.lang.String CONTENT_LEN
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final java.lang.String ETAG
+
+public static final java.lang.String EXPIRES
+
+private static final int HASH_ACCEPT_RANGES
+
+private static final int HASH_CACHE_CONTROL
+
+private static final int HASH_CONN_DIRECTIVE
+
+private static final int HASH_CONTENT_DISPOSITION
+
+private static final int HASH_CONTENT_ENCODING
+
+private static final int HASH_CONTENT_LEN
+
+private static final int HASH_CONTENT_TYPE
+
+private static final int HASH_ETAG
+
+private static final int HASH_EXPIRES
+
+private static final int HASH_LAST_MODIFIED
+
+private static final int HASH_LOCATION
+
+private static final int HASH_PRAGMA
+
+private static final int HASH_PROXY_AUTHENTICATE
+
+private static final int HASH_PROXY_CONNECTION
+
+private static final int HASH_REFRESH
+
+private static final int HASH_SET_COOKIE
+
+private static final int HASH_TRANSFER_ENCODING
+
+private static final int HASH_WWW_AUTHENTICATE
+
+public static final java.lang.String LAST_MODIFIED
+
+public static final java.lang.String LOCATION
+
+private static final java.lang.String LOGTAG
+
+public static final int NO_CONN_TYPE
+
+public static final long NO_CONTENT_LENGTH
+
+public static final long NO_TRANSFER_ENCODING
+
+public static final java.lang.String PRAGMA
+
+public static final java.lang.String PROXY_AUTHENTICATE
+
+public static final java.lang.String PROXY_CONNECTION
+
+public static final java.lang.String REFRESH
+
+public static final java.lang.String SET_COOKIE
+
+public static final java.lang.String TRANSFER_ENCODING
+
+public static final java.lang.String WWW_AUTHENTICATE
+
+private java.lang.String acceptRanges
+
+private java.lang.String cacheControl
+
+private int connectionType
+
+private java.lang.String contentDisposition
+
+private java.lang.String contentEncoding
+
+private long contentLength
+
+private java.lang.String contentType
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+private java.util.ArrayList cookies
+
+private java.lang.String etag
+
+private java.lang.String expires
+
+private java.lang.String lastModified
+
+private java.lang.String location
+
+private java.lang.String pragma
+
+private java.lang.String proxyAuthenticate
+
+private java.lang.String refresh
+
+private long transferEncoding
+
+private java.lang.String wwwAuthenticate
+----------------METHODS----------------
+
+public void <init>()
+
+private void setConnectionType(
+org.apache.http.util.CharArrayBuffer
+int)
+
+public java.lang.String getAcceptRanges()
+
+public java.lang.String getCacheControl()
+
+public int getConnectionType()
+
+public java.lang.String getContentDisposition()
+
+public java.lang.String getContentEncoding()
+
+public long getContentLength()
+
+public java.lang.String getContentType()
+
+public java.lang.String getEtag()
+
+public java.lang.String getExpires()
+
+public java.lang.String getLastModified()
+
+public java.lang.String getLocation()
+
+public java.lang.String getPragma()
+
+public java.lang.String getProxyAuthenticate()
+
+public java.lang.String getRefresh()
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Ljava/lang/String;>; )
+public java.util.ArrayList getSetCookie()
+
+public long getTransferEncoding()
+
+public java.lang.String getWwwAuthenticate()
+
+public void parseHeader(
+org.apache.http.util.CharArrayBuffer)
+
+public void setAcceptRanges(
+java.lang.String)
+
+public void setCacheControl(
+java.lang.String)
+
+public void setContentDisposition(
+java.lang.String)
+
+public void setContentEncoding(
+java.lang.String)
+
+public void setContentLength(
+long)
+
+public void setContentType(
+java.lang.String)
+
+public void setEtag(
+java.lang.String)
+
+public void setExpires(
+java.lang.String)
+
+public void setLastModified(
+java.lang.String)
+
+public void setLocation(
+java.lang.String)
+
+public void setProxyAuthenticate(
+java.lang.String)
+
+public void setWwwAuthenticate(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.net.http.HttpAuthHeader extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String ALGORITHM_TOKEN
+
+public static final int BASIC
+
+public static final java.lang.String BASIC_TOKEN
+
+public static final int DIGEST
+
+public static final java.lang.String DIGEST_TOKEN
+
+private static final java.lang.String NONCE_TOKEN
+
+private static final java.lang.String OPAQUE_TOKEN
+
+private static final java.lang.String QOP_TOKEN
+
+private static final java.lang.String REALM_TOKEN
+
+private static final java.lang.String STALE_TOKEN
+
+public static final int UNKNOWN
+
+private java.lang.String mAlgorithm
+
+private boolean mIsProxy
+
+private java.lang.String mNonce
+
+private java.lang.String mOpaque
+
+private java.lang.String mPassword
+
+private java.lang.String mQop
+
+private java.lang.String mRealm
+
+private int mScheme
+
+private boolean mStale
+
+private java.lang.String mUsername
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+private void parseHeader(
+java.lang.String)
+
+private void parseParameter(
+java.lang.String)
+
+private void parseParameter(
+java.lang.String
+java.lang.String)
+
+private void parseParameters(
+java.lang.String)
+
+private java.lang.String parseScheme(
+java.lang.String)
+
+private void parseStale(
+java.lang.String)
+
+private static java.lang.String trimDoubleQuotesIfAny(
+java.lang.String)
+
+public java.lang.String getAlgorithm()
+
+public java.lang.String getNonce()
+
+public java.lang.String getOpaque()
+
+public java.lang.String getPassword()
+
+public java.lang.String getQop()
+
+public java.lang.String getRealm()
+
+public int getScheme()
+
+public boolean getStale()
+
+public java.lang.String getUsername()
+
+public boolean isBasic()
+
+public boolean isDigest()
+
+public boolean isProxy()
+
+public boolean isSupportedScheme()
+
+public void setPassword(
+java.lang.String)
+
+public void setProxy()
+
+public void setUsername(
+java.lang.String)
+
+________________CLASS________________
+
+
+ class android.net.http.HttpConnection extends android.net.http.Connection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+android.content.Context
+org.apache.http.HttpHost
+android.net.http.RequestQueue$ConnectionManager
+android.net.http.RequestFeeder)
+
+ void closeConnection()
+
+ java.lang.String getScheme()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ android.net.http.AndroidHttpClientConnection openConnection(
+android.net.http.Request)
+
+ void restartConnection(
+boolean)
+
+________________CLASS________________
+
+
+ class android.net.http.HttpLog extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG
+
+private static final java.lang.String LOGTAG
+
+static final boolean LOGV
+----------------METHODS----------------
+
+ void <init>()
+
+static void e(
+java.lang.String)
+
+static void v(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/http/HttpsConnection; )
+final class android.net.http.HttpsConnection$1 extends java.lang.Object implements javax.net.ssl.X509TrustManager
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public void checkClientTrusted(
+java.security.cert.X509Certificate[]
+java.lang.String)
+
+public void checkServerTrusted(
+java.security.cert.X509Certificate[]
+java.lang.String)
+
+public java.security.cert.X509Certificate[] getAcceptedIssuers()
+
+________________CLASS________________
+
+
+ class android.net.http.HttpsConnection extends android.net.http.Connection
+
+----------------FIELDS----------------
+
+private static javax.net.ssl.SSLContext mSslContext
+
+private static javax.net.ssl.SSLSocketFactory mSslSocketFactory
+
+private boolean mAborted
+
+private java.lang.Object mSuspendLock
+
+private boolean mSuspended
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+android.content.Context
+org.apache.http.HttpHost
+android.net.http.RequestQueue$ConnectionManager
+android.net.http.RequestFeeder)
+
+static javax.net.ssl.SSLContext getContext()
+
+ void closeConnection()
+
+ java.lang.String getScheme()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ android.net.http.AndroidHttpClientConnection openConnection(
+android.net.http.Request)
+
+ void restartConnection(
+boolean)
+
+ void setCertificate(
+android.net.http.SslCertificate)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/http/IdleCache; )
+ class android.net.http.IdleCache$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/http/IdleCache; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =Entry )
+ class android.net.http.IdleCache$Entry extends java.lang.Object
+
+----------------FIELDS----------------
+
+ android.net.http.Connection mConnection
+
+ org.apache.http.HttpHost mHost
+
+ long mTimeout
+
+final android.net.http.IdleCache this$0
+----------------METHODS----------------
+
+ void <init>(
+android.net.http.IdleCache)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/http/IdleCache; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =IdleReaper )
+ class android.net.http.IdleCache$IdleReaper extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final android.net.http.IdleCache this$0
+----------------METHODS----------------
+
+private void <init>(
+android.net.http.IdleCache)
+
+ void <init>(
+android.net.http.IdleCache
+android.net.http.IdleCache$1)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/http/IdleCache$1;Landroid/net/http/IdleCache$IdleReaper;Landroid/net/http/IdleCache$Entry; )
+ class android.net.http.IdleCache extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int CHECK_INTERVAL
+
+private static final int EMPTY_CHECK_MAX
+
+private static final int IDLE_CACHE_MAX
+
+private static final int TIMEOUT
+
+private int mCached
+
+private int mCount
+
+private android.net.http.IdleCache$Entry[] mEntries
+
+private int mReused
+
+private android.net.http.IdleCache$IdleReaper mThread
+----------------METHODS----------------
+
+ void <init>()
+
+static int access$100(
+android.net.http.IdleCache)
+
+static void access$200(
+android.net.http.IdleCache)
+
+static android.net.http.IdleCache$IdleReaper access$302(
+android.net.http.IdleCache
+android.net.http.IdleCache$IdleReaper)
+
+private void clearIdle()
+
+ boolean cacheConnection(
+org.apache.http.HttpHost
+android.net.http.Connection)
+
+ void clear()
+
+ android.net.http.Connection getConnection(
+org.apache.http.HttpHost)
+
+________________CLASS________________
+
+
+public class android.net.http.LoggingEventHandler extends java.lang.Object implements android.net.http.EventHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void certificate(
+android.net.http.SslCertificate)
+
+public void data(
+byte[]
+int)
+
+public void endData()
+
+public void error(
+int
+java.lang.String)
+
+public void handleSslErrorRequest(
+android.net.http.SslError)
+
+public void headers(
+android.net.http.Headers)
+
+public void locationChanged(
+java.lang.String
+boolean)
+
+public void requestSent()
+
+public void status(
+int
+int
+int
+java.lang.String)
+
+________________CLASS________________
+
+
+ class android.net.http.Request extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String ACCEPT_ENCODING_HEADER
+
+private static final java.lang.String CONTENT_LENGTH_HEADER
+
+private static final java.lang.String HOST_HEADER
+
+private static org.apache.http.protocol.RequestContent requestContentProcessor
+
+private int mBodyLength
+
+private java.io.InputStream mBodyProvider
+
+volatile boolean mCancelled
+
+private final java.lang.Object mClientResource
+
+private android.net.http.Connection mConnection
+
+ android.net.http.EventHandler mEventHandler
+
+ int mFailCount
+
+ boolean mHighPriority
+
+ org.apache.http.HttpHost mHost
+
+ org.apache.http.message.BasicHttpRequest mHttpRequest
+
+ java.lang.String mPath
+
+ org.apache.http.HttpHost mProxyHost
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Lorg/apache/http/HttpHost;Lorg/apache/http/HttpHost;Ljava/lang/String;Ljava/io/InputStream;ILandroid/net/http/EventHandler;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;Z)V )
+ void <init>(
+java.lang.String
+org.apache.http.HttpHost
+org.apache.http.HttpHost
+java.lang.String
+java.io.InputStream
+int
+android.net.http.EventHandler
+java.util.Map
+boolean)
+
+private static boolean canResponseHaveBody(
+org.apache.http.HttpRequest
+int)
+
+private void setBodyProvider(
+java.io.InputStream
+int)
+
+ void addHeader(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)V )
+ void addHeaders(
+java.util.Map)
+
+ void cancel()
+
+ void complete()
+
+ void error(
+int
+int)
+
+ android.net.http.EventHandler getEventHandler()
+
+ java.lang.String getHostPort()
+
+ java.lang.String getUri()
+
+public void handleSslErrorResponse(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/ParseException; )
+ void readResponse(
+android.net.http.AndroidHttpClientConnection)
+
+ void reset()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+ void sendRequest(
+android.net.http.AndroidHttpClientConnection)
+
+ void setConnection(
+android.net.http.Connection)
+
+public java.lang.String toString()
+
+ void waitUntilComplete()
+
+________________CLASS________________
+
+
+abstract interface class android.net.http.RequestFeeder extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.net.http.Request getRequest()
+
+public abstract android.net.http.Request getRequest(
+org.apache.http.HttpHost)
+
+public abstract boolean haveRequest(
+org.apache.http.HttpHost)
+
+public abstract void requeueRequest(
+android.net.http.Request)
+
+________________CLASS________________
+
+
+public class android.net.http.RequestHandle extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String AUTHORIZATION_HEADER
+
+private static final int MAX_REDIRECT_COUNT
+
+private static final java.lang.String PROXY_AUTHORIZATION_HEADER
+
+private int mBodyLength
+
+private java.io.InputStream mBodyProvider
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+private java.util.Map mHeaders
+
+private java.lang.String mMethod
+
+private int mRedirectCount
+
+private android.net.http.Request mRequest
+
+private android.net.http.RequestQueue mRequestQueue
+
+private android.net.WebAddress mUri
+
+private java.lang.String mUrl
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Landroid/net/http/RequestQueue;Ljava/lang/String;Landroid/net/WebAddress;Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;Ljava/io/InputStream;ILandroid/net/http/Request;)V )
+public void <init>(
+android.net.http.RequestQueue
+java.lang.String
+android.net.WebAddress
+java.lang.String
+java.util.Map
+java.io.InputStream
+int
+android.net.http.Request)
+
+private java.lang.String H(
+java.lang.String)
+
+private java.lang.String KD(
+java.lang.String
+java.lang.String)
+
+public static java.lang.String authorizationHeader(
+boolean)
+
+private java.lang.String bufferToHex(
+byte[])
+
+public static java.lang.String computeBasicAuthResponse(
+java.lang.String
+java.lang.String)
+
+private java.lang.String computeCnonce()
+
+private java.lang.String computeDigest(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private java.lang.String computeDigestAuthResponse(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private void createAndQueueNewRequest()
+
+private java.lang.String doubleQuote(
+java.lang.String)
+
+private void setupAuthResponse()
+
+public void cancel()
+
+public java.lang.String getMethod()
+
+public void handleSslErrorResponse(
+boolean)
+
+public boolean isRedirectMax()
+
+public void setupBasicAuthResponse(
+boolean
+java.lang.String
+java.lang.String)
+
+public void setupDigestAuthResponse(
+boolean
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;ILjava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)Z )
+public boolean setupRedirect(
+java.lang.String
+int
+java.util.Map)
+
+public void waitUntilComplete()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.net.http.RequestQueue$1 extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final android.net.http.RequestQueue this$0
+----------------METHODS----------------
+
+ void <init>(
+android.net.http.RequestQueue)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1544 name =ConnectionManager )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/http/RequestQueue; )
+abstract interface class android.net.http.RequestQueue$ConnectionManager extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.net.http.Connection getConnection(
+android.content.Context
+org.apache.http.HttpHost)
+
+public abstract org.apache.http.HttpHost getProxyHost()
+
+public abstract boolean isNetworkConnected()
+
+public abstract boolean recycleConnection(
+org.apache.http.HttpHost
+android.net.http.Connection)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/http/RequestQueue; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =ActivePool )
+ class android.net.http.RequestQueue$ActivePool extends java.lang.Object implements android.net.http.RequestQueue$ConnectionManager
+
+----------------FIELDS----------------
+
+private int mConnectionCount
+
+ android.net.http.IdleCache mIdleCache
+
+ android.net.http.ConnectionThread[] mThreads
+
+private int mTotalConnection
+
+private int mTotalRequest
+
+final android.net.http.RequestQueue this$0
+----------------METHODS----------------
+
+ void <init>(
+android.net.http.RequestQueue
+int)
+
+static int access$308(
+android.net.http.RequestQueue$ActivePool)
+
+ void disablePersistence()
+
+public android.net.http.Connection getConnection(
+android.content.Context
+org.apache.http.HttpHost)
+
+public org.apache.http.HttpHost getProxyHost()
+
+ android.net.http.ConnectionThread getThread(
+org.apache.http.HttpHost)
+
+public boolean isNetworkConnected()
+
+ void logState()
+
+public boolean recycleConnection(
+org.apache.http.HttpHost
+android.net.http.Connection)
+
+ void shutdown()
+
+ void startConnectionThread()
+
+public void startTiming()
+
+ void startup()
+
+public void stopTiming()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/http/RequestQueue$NetworkStateTracker; )
+ class android.net.http.RequestQueue$NetworkStateTracker$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.net.http.RequestQueue$NetworkStateTracker this$1
+----------------METHODS----------------
+
+ void <init>(
+android.net.http.RequestQueue$NetworkStateTracker)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =NetworkStateTracker )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/http/RequestQueue; )
+ class android.net.http.RequestQueue$NetworkStateTracker extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int EVENT_DATA_STATE_CHANGED
+
+ android.net.NetworkConnectivityListener mConnectivityListener
+
+ android.content.Context mContext
+
+ int mCurrentNetworkType
+
+private android.os.Handler mHandler
+
+ android.net.NetworkInfo$State mLastNetworkState
+
+final android.net.http.RequestQueue this$0
+----------------METHODS----------------
+
+ void <init>(
+android.net.http.RequestQueue
+android.content.Context)
+
+ void broadcastState(
+boolean)
+
+protected void disable()
+
+protected void enable()
+
+ int getCurrentNetworkType()
+
+ void networkStateChanged()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/http/RequestQueue$ConnectionManager;Landroid/net/http/RequestQueue$ActivePool;Landroid/net/http/RequestQueue$NetworkStateTracker; )
+public class android.net.http.RequestQueue extends java.lang.Object implements android.net.http.RequestFeeder
+
+----------------FIELDS----------------
+
+private static final int CONNECTION_COUNT
+
+public static final java.lang.String HTTP_NETWORK_STATE_CHANGED_INTENT
+
+public static final java.lang.String HTTP_NETWORK_STATE_UP
+
+private android.net.http.RequestQueue$ActivePool mActivePool
+
+private boolean mClientWaiting
+
+private android.content.Context mContext
+
+ boolean mNetworkConnected
+
+private android.net.http.RequestQueue$NetworkStateTracker mNetworkStateTracker
+@dalvik.annotation.Signature (value =Ljava/util/LinkedHashMap<Lorg/apache/http/HttpHost;Ljava/util/LinkedList<Landroid/net/http/Request;>;>; )
+private java.util.LinkedHashMap mPending
+
+private android.content.BroadcastReceiver mProxyChangeReceiver
+
+private org.apache.http.HttpHost mProxyHost
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+int)
+
+static void access$000(
+android.net.http.RequestQueue)
+
+static android.content.Context access$100(
+android.net.http.RequestQueue)
+
+static org.apache.http.HttpHost access$200(
+android.net.http.RequestQueue)
+@dalvik.annotation.Signature (value =(Ljava/util/LinkedHashMap<Lorg/apache/http/HttpHost;Ljava/util/LinkedList<Landroid/net/http/Request;>;>;)Landroid/net/http/Request; )
+private android.net.http.Request removeFirst(
+java.util.LinkedHashMap)
+
+private void setProxyConfig()
+
+public void disablePlatformNotifications()
+
+ void dump()
+
+public void enablePlatformNotifications()
+
+public org.apache.http.HttpHost getProxyHost()
+
+public android.net.http.Request getRequest()
+
+public android.net.http.Request getRequest(
+org.apache.http.HttpHost)
+
+public boolean haveRequest(
+org.apache.http.HttpHost)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Landroid/net/WebAddress;Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;Landroid/net/http/EventHandler;Ljava/io/InputStream;IZ)Landroid/net/http/RequestHandle; )
+public android.net.http.RequestHandle queueRequest(
+java.lang.String
+android.net.WebAddress
+java.lang.String
+java.util.Map
+android.net.http.EventHandler
+java.io.InputStream
+int
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;Landroid/net/http/EventHandler;Ljava/io/InputStream;IZ)Landroid/net/http/RequestHandle; )
+public android.net.http.RequestHandle queueRequest(
+java.lang.String
+java.lang.String
+java.util.Map
+android.net.http.EventHandler
+java.io.InputStream
+int
+boolean)
+
+protected void queueRequest(
+android.net.http.Request
+boolean)
+
+ boolean requestsPending()
+
+public void requeueRequest(
+android.net.http.Request)
+
+public void setNetworkState(
+boolean)
+
+public void shutdown()
+
+public void startTiming()
+
+public void stopTiming()
+
+________________CLASS________________
+
+
+ class android.net.http.SSLConnectionClosedByUserException extends javax.net.ssl.SSLException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/http/SslCertificate; )
+@dalvik.annotation.InnerClass (accessFlags =1 name =DName )
+public class android.net.http.SslCertificate$DName extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.String mCName
+
+private java.lang.String mDName
+
+private java.lang.String mOName
+
+private java.lang.String mUName
+
+final android.net.http.SslCertificate this$0
+----------------METHODS----------------
+
+public void <init>(
+android.net.http.SslCertificate
+java.lang.String)
+
+public java.lang.String getCName()
+
+public java.lang.String getDName()
+
+public java.lang.String getOName()
+
+public java.lang.String getUName()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/http/SslCertificate$DName; )
+public class android.net.http.SslCertificate extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String ISSUED_BY
+
+private static final java.lang.String ISSUED_TO
+
+private static final java.lang.String VALID_NOT_AFTER
+
+private static final java.lang.String VALID_NOT_BEFORE
+
+private android.net.http.SslCertificate$DName mIssuedBy
+
+private android.net.http.SslCertificate$DName mIssuedTo
+
+private java.lang.String mValidNotAfter
+
+private java.lang.String mValidNotBefore
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public void <init>(
+java.security.cert.X509Certificate)
+
+public static android.net.http.SslCertificate restoreState(
+android.os.Bundle)
+
+public static android.os.Bundle saveState(
+android.net.http.SslCertificate)
+
+public android.net.http.SslCertificate$DName getIssuedBy()
+
+public android.net.http.SslCertificate$DName getIssuedTo()
+
+public java.lang.String getValidNotAfter()
+
+public java.lang.String getValidNotBefore()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class android.net.http.SslError extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int SSL_EXPIRED
+
+public static final int SSL_IDMISMATCH
+
+public static final int SSL_MAX_ERROR
+
+public static final int SSL_NOTYETVALID
+
+public static final int SSL_UNTRUSTED
+
+ android.net.http.SslCertificate mCertificate
+
+ int mErrors
+----------------METHODS----------------
+
+public void <init>(
+int
+android.net.http.SslCertificate)
+
+public void <init>(
+int
+java.security.cert.X509Certificate)
+
+public boolean addError(
+int)
+
+public android.net.http.SslCertificate getCertificate()
+
+public int getPrimaryError()
+
+public boolean hasError(
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+ class android.net.http.Timer extends java.lang.Object
+
+----------------FIELDS----------------
+
+private long mLast
+
+private long mStart
+----------------METHODS----------------
+
+public void <init>()
+
+public void mark(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/wifi/IWifiManager$Stub; )
+public abstract interface class android.net.wifi.IWifiManager extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean acquireWifiLock(
+android.os.IBinder
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int addOrUpdateNetwork(
+android.net.wifi.WifiConfiguration)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean disableNetwork(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean disconnect()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean enableNetwork(
+int
+boolean)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Landroid/net/wifi/WifiConfiguration;>; )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.util.List getConfiguredNetworks()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.net.wifi.WifiInfo getConnectionInfo()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.net.DhcpInfo getDhcpInfo()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Landroid/net/wifi/ScanResult;>; )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.util.List getScanResults()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getWifiState()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean pingSupplicant()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean reassociate()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean reconnect()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean releaseWifiLock(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean removeNetwork(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean saveConfiguration()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean setWifiEnabled(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean startScan()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/IWifiManager$Stub; )
+ class android.net.wifi.IWifiManager$Stub$Proxy extends java.lang.Object implements android.net.wifi.IWifiManager
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean acquireWifiLock(
+android.os.IBinder
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int addOrUpdateNetwork(
+android.net.wifi.WifiConfiguration)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean disableNetwork(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean disconnect()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean enableNetwork(
+int
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =()Ljava/util/List<Landroid/net/wifi/WifiConfiguration;>; )
+public java.util.List getConfiguredNetworks()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.net.wifi.WifiInfo getConnectionInfo()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.net.DhcpInfo getDhcpInfo()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Landroid/net/wifi/ScanResult;>; )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.util.List getScanResults()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getWifiState()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean pingSupplicant()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean reassociate()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean reconnect()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean releaseWifiLock(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean removeNetwork(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean saveConfiguration()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean setWifiEnabled(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean startScan()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.MemberClasses (value =Landroid/net/wifi/IWifiManager$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/IWifiManager; )
+public abstract class android.net.wifi.IWifiManager$Stub extends android.os.Binder implements android.net.wifi.IWifiManager
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_acquireWifiLock
+
+static final int TRANSACTION_addOrUpdateNetwork
+
+static final int TRANSACTION_disableNetwork
+
+static final int TRANSACTION_disconnect
+
+static final int TRANSACTION_enableNetwork
+
+static final int TRANSACTION_getConfiguredNetworks
+
+static final int TRANSACTION_getConnectionInfo
+
+static final int TRANSACTION_getDhcpInfo
+
+static final int TRANSACTION_getScanResults
+
+static final int TRANSACTION_getWifiState
+
+static final int TRANSACTION_pingSupplicant
+
+static final int TRANSACTION_reassociate
+
+static final int TRANSACTION_reconnect
+
+static final int TRANSACTION_releaseWifiLock
+
+static final int TRANSACTION_removeNetwork
+
+static final int TRANSACTION_saveConfiguration
+
+static final int TRANSACTION_setWifiEnabled
+
+static final int TRANSACTION_startScan
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.net.wifi.IWifiManager asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/ScanResult; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/net/wifi/ScanResult;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.net.wifi.ScanResult$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.net.wifi.ScanResult createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.net.wifi.ScanResult[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.net.wifi.ScanResult extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/net/wifi/ScanResult;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public java.lang.String BSSID
+
+public java.lang.String SSID
+
+public java.lang.String capabilities
+
+public int frequency
+
+public int level
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+int
+int)
+
+public int describeContents()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/net/wifi/SupplicantState;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/SupplicantState; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.net.wifi.SupplicantState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.net.wifi.SupplicantState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.net.wifi.SupplicantState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/net/wifi/SupplicantState;>;Landroid/os/Parcelable; )
+public final class android.net.wifi.SupplicantState extends java.lang.Enum implements android.os.Parcelable
+
+----------------FIELDS----------------
+
+private static final android.net.wifi.SupplicantState[] $VALUES
+
+public static final android.net.wifi.SupplicantState ASSOCIATED
+
+public static final android.net.wifi.SupplicantState ASSOCIATING
+
+public static final android.net.wifi.SupplicantState COMPLETED
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/net/wifi/SupplicantState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final android.net.wifi.SupplicantState DISCONNECTED
+
+public static final android.net.wifi.SupplicantState DORMANT
+
+public static final android.net.wifi.SupplicantState FOUR_WAY_HANDSHAKE
+
+public static final android.net.wifi.SupplicantState GROUP_HANDSHAKE
+
+public static final android.net.wifi.SupplicantState INACTIVE
+
+public static final android.net.wifi.SupplicantState INVALID
+
+public static final android.net.wifi.SupplicantState SCANNING
+
+public static final android.net.wifi.SupplicantState UNINITIALIZED
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static boolean isValidState(
+android.net.wifi.SupplicantState)
+
+public static android.net.wifi.SupplicantState valueOf(
+java.lang.String)
+
+public static android.net.wifi.SupplicantState[] values()
+
+public int describeContents()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/WifiConfiguration; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/net/wifi/WifiConfiguration;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.net.wifi.WifiConfiguration$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.net.wifi.WifiConfiguration createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.net.wifi.WifiConfiguration[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/WifiConfiguration; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =AuthAlgorithm )
+public class android.net.wifi.WifiConfiguration$AuthAlgorithm extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int LEAP
+
+public static final int OPEN
+
+public static final int SHARED
+
+public static final java.lang.String[] strings
+
+public static final java.lang.String varName
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/WifiConfiguration; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =GroupCipher )
+public class android.net.wifi.WifiConfiguration$GroupCipher extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CCMP
+
+public static final int TKIP
+
+public static final int WEP104
+
+public static final int WEP40
+
+public static final java.lang.String[] strings
+
+public static final java.lang.String varName
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =KeyMgmt )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/WifiConfiguration; )
+public class android.net.wifi.WifiConfiguration$KeyMgmt extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int IEEE8021X
+
+public static final int NONE
+
+public static final int WPA_EAP
+
+public static final int WPA_PSK
+
+public static final java.lang.String[] strings
+
+public static final java.lang.String varName
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PairwiseCipher )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/WifiConfiguration; )
+public class android.net.wifi.WifiConfiguration$PairwiseCipher extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CCMP
+
+public static final int NONE
+
+public static final int TKIP
+
+public static final java.lang.String[] strings
+
+public static final java.lang.String varName
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Protocol )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/WifiConfiguration; )
+public class android.net.wifi.WifiConfiguration$Protocol extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int RSN
+
+public static final int WPA
+
+public static final java.lang.String[] strings
+
+public static final java.lang.String varName
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/WifiConfiguration; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Status )
+public class android.net.wifi.WifiConfiguration$Status extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CURRENT
+
+public static final int DISABLED
+
+public static final int ENABLED
+
+public static final java.lang.String[] strings
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/wifi/WifiConfiguration$Status;Landroid/net/wifi/WifiConfiguration$GroupCipher;Landroid/net/wifi/WifiConfiguration$PairwiseCipher;Landroid/net/wifi/WifiConfiguration$AuthAlgorithm;Landroid/net/wifi/WifiConfiguration$Protocol;Landroid/net/wifi/WifiConfiguration$KeyMgmt; )
+public class android.net.wifi.WifiConfiguration extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/net/wifi/WifiConfiguration;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final java.lang.String bssidVarName
+
+public static final java.lang.String hiddenSSIDVarName
+
+public static final java.lang.String priorityVarName
+
+public static final java.lang.String pskVarName
+
+public static final java.lang.String ssidVarName
+
+public static final java.lang.String[] wepKeyVarNames
+
+public static final java.lang.String wepTxKeyIdxVarName
+
+public java.lang.String BSSID
+
+public java.lang.String SSID
+
+public java.util.BitSet allowedAuthAlgorithms
+
+public java.util.BitSet allowedGroupCiphers
+
+public java.util.BitSet allowedKeyManagement
+
+public java.util.BitSet allowedPairwiseCiphers
+
+public java.util.BitSet allowedProtocols
+
+public boolean hiddenSSID
+
+public int networkId
+
+public java.lang.String preSharedKey
+
+public int priority
+
+public int status
+
+public java.lang.String[] wepKeys
+
+public int wepTxKeyIndex
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static java.util.BitSet access$000(
+android.os.Parcel)
+
+private static java.util.BitSet readBitSet(
+android.os.Parcel)
+
+private static void writeBitSet(
+android.os.Parcel
+java.util.BitSet)
+
+public int describeContents()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/WifiInfo; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/net/wifi/WifiInfo;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.net.wifi.WifiInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.net.wifi.WifiInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.net.wifi.WifiInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.net.wifi.WifiInfo extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/net/wifi/WifiInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final java.lang.String LINK_SPEED_UNITS
+@dalvik.annotation.Signature (value =Ljava/util/EnumMap<Landroid/net/wifi/SupplicantState;Landroid/net/NetworkInfo$DetailedState;>; )
+private static final java.util.EnumMap stateMap
+
+private java.lang.String mBSSID
+
+private boolean mHiddenSSID
+
+private int mIpAddress
+
+private int mLinkSpeed
+
+private java.lang.String mMacAddress
+
+private int mNetworkId
+
+private int mRssi
+
+private java.lang.String mSSID
+
+private android.net.wifi.SupplicantState mSupplicantState
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+static java.lang.String access$002(
+android.net.wifi.WifiInfo
+java.lang.String)
+
+static java.lang.String access$102(
+android.net.wifi.WifiInfo
+java.lang.String)
+
+static android.net.wifi.SupplicantState access$202(
+android.net.wifi.WifiInfo
+android.net.wifi.SupplicantState)
+
+public static android.net.NetworkInfo$DetailedState getDetailedStateOf(
+android.net.wifi.SupplicantState)
+
+static android.net.wifi.SupplicantState valueOf(
+java.lang.String)
+
+public int describeContents()
+
+public java.lang.String getBSSID()
+
+public boolean getHiddenSSID()
+
+public int getIpAddress()
+
+public int getLinkSpeed()
+
+public java.lang.String getMacAddress()
+
+public int getNetworkId()
+
+public int getRssi()
+
+public java.lang.String getSSID()
+
+public android.net.wifi.SupplicantState getSupplicantState()
+
+ void setBSSID(
+java.lang.String)
+
+public void setHiddenSSID(
+boolean)
+
+ void setIpAddress(
+int)
+
+ void setLinkSpeed(
+int)
+
+ void setMacAddress(
+java.lang.String)
+
+ void setNetworkId(
+int)
+
+ void setRssi(
+int)
+
+ void setSSID(
+java.lang.String)
+
+ void setSupplicantState(
+android.net.wifi.SupplicantState)
+
+ void setSupplicantState(
+java.lang.String)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/WifiManager; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.net.wifi.WifiManager$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/WifiManager; )
+@dalvik.annotation.InnerClass (accessFlags =1 name =WifiLock )
+public class android.net.wifi.WifiManager$WifiLock extends java.lang.Object
+
+----------------FIELDS----------------
+
+private android.os.IBinder mBinder
+
+private boolean mHeld
+
+private int mRefCount
+
+private boolean mRefCounted
+
+private java.lang.String mTag
+
+final android.net.wifi.WifiManager this$0
+----------------METHODS----------------
+
+private void <init>(
+android.net.wifi.WifiManager
+java.lang.String)
+
+ void <init>(
+android.net.wifi.WifiManager
+java.lang.String
+android.net.wifi.WifiManager$1)
+
+public void acquire()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public boolean isHeld()
+
+public void release()
+
+public void setReferenceCounted(
+boolean)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/wifi/WifiManager$1;Landroid/net/wifi/WifiManager$WifiLock; )
+public class android.net.wifi.WifiManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACTION_PICK_WIFI_NETWORK
+
+public static final int ERROR_AUTHENTICATING
+
+public static final java.lang.String EXTRA_BSSID
+
+public static final java.lang.String EXTRA_NETWORK_INFO
+
+public static final java.lang.String EXTRA_NEW_RSSI
+
+public static final java.lang.String EXTRA_NEW_STATE
+
+public static final java.lang.String EXTRA_PREVIOUS_WIFI_STATE
+
+public static final java.lang.String EXTRA_SUPPLICANT_CONNECTED
+
+public static final java.lang.String EXTRA_SUPPLICANT_ERROR
+
+public static final java.lang.String EXTRA_WIFI_STATE
+
+private static final int MAX_RSSI
+
+private static final int MIN_RSSI
+
+public static final java.lang.String NETWORK_IDS_CHANGED_ACTION
+
+public static final java.lang.String NETWORK_STATE_CHANGED_ACTION
+
+public static final java.lang.String RSSI_CHANGED_ACTION
+
+public static final java.lang.String SCAN_RESULTS_AVAILABLE_ACTION
+
+public static final java.lang.String SUPPLICANT_CONNECTION_CHANGE_ACTION
+
+public static final java.lang.String SUPPLICANT_STATE_CHANGED_ACTION
+
+public static final java.lang.String WIFI_STATE_CHANGED_ACTION
+
+public static final int WIFI_STATE_DISABLED
+
+public static final int WIFI_STATE_DISABLING
+
+public static final int WIFI_STATE_ENABLED
+
+public static final int WIFI_STATE_ENABLING
+
+public static final int WIFI_STATE_UNKNOWN
+
+ android.os.Handler mHandler
+
+ android.net.wifi.IWifiManager mService
+----------------METHODS----------------
+
+private void <init>()
+
+public void <init>(
+android.net.wifi.IWifiManager
+android.os.Handler)
+
+private int addOrUpdateNetwork(
+android.net.wifi.WifiConfiguration)
+
+public static int calculateSignalLevel(
+int
+int)
+
+public static int compareSignalLevel(
+int
+int)
+
+public int addNetwork(
+android.net.wifi.WifiConfiguration)
+
+public android.net.wifi.WifiManager$WifiLock createWifiLock(
+java.lang.String)
+
+public boolean disableNetwork(
+int)
+
+public boolean disconnect()
+
+public boolean enableNetwork(
+int
+boolean)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Landroid/net/wifi/WifiConfiguration;>; )
+public java.util.List getConfiguredNetworks()
+
+public android.net.wifi.WifiInfo getConnectionInfo()
+
+public android.net.DhcpInfo getDhcpInfo()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Landroid/net/wifi/ScanResult;>; )
+public java.util.List getScanResults()
+
+public int getWifiState()
+
+public boolean isWifiEnabled()
+
+public boolean pingSupplicant()
+
+public boolean reassociate()
+
+public boolean reconnect()
+
+public boolean removeNetwork(
+int)
+
+public boolean saveConfiguration()
+
+public boolean setWifiEnabled(
+boolean)
+
+public boolean startScan()
+
+public int updateNetwork(
+android.net.wifi.WifiConfiguration)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/WifiMonitor; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =MonitorThread )
+ class android.net.wifi.WifiMonitor$MonitorThread extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final android.net.wifi.WifiMonitor this$0
+----------------METHODS----------------
+
+public void <init>(
+android.net.wifi.WifiMonitor)
+
+private void ensureSupplicantConnection()
+
+private void handleDriverEvent(
+java.lang.String)
+
+private void handlePasswordKeyMayBeIncorrect()
+
+private void handleSupplicantStateChange(
+java.lang.String)
+
+ void handleEvent(
+int
+java.lang.String)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/wifi/WifiMonitor$MonitorThread; )
+public class android.net.wifi.WifiMonitor extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int CONNECTED
+
+private static final int DISCONNECTED
+
+private static final int DRIVER_STATE
+
+private static final int LINK_SPEED
+
+private static final int SCAN_RESULTS
+
+private static final int STATE_CHANGE
+
+private static final java.lang.String TAG
+
+private static final int TERMINATING
+
+private static final int UNKNOWN
+
+private static final java.lang.String connectedEvent
+
+private static final java.lang.String disconnectedEvent
+
+private static final java.lang.String driverStateEvent
+
+private static final java.lang.String eventPrefix
+
+private static final int eventPrefixLen
+
+private static final java.lang.String linkSpeedEvent
+
+private static java.util.regex.Pattern mConnectedEventPattern
+
+private static final java.lang.String passwordKeyMayBeIncorrectEvent
+
+private static final java.lang.String scanResultsEvent
+
+private static final java.lang.String stateChangeEvent
+
+private static final java.lang.String terminatingEvent
+
+private static final java.lang.String wpaEventPrefix
+
+private final android.net.wifi.WifiStateTracker mWifiStateTracker
+
+private boolean oneShot
+
+private boolean supplicantConnected
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.net.wifi.WifiStateTracker)
+
+static int access$000()
+
+static boolean access$100(
+android.net.wifi.WifiMonitor)
+
+static boolean access$102(
+android.net.wifi.WifiMonitor
+boolean)
+
+static android.net.wifi.WifiStateTracker access$200(
+android.net.wifi.WifiMonitor)
+
+static boolean access$300(
+android.net.wifi.WifiMonitor)
+
+static boolean access$302(
+android.net.wifi.WifiMonitor
+boolean)
+
+static void access$400(
+int)
+
+static void access$500(
+android.net.wifi.WifiMonitor
+android.net.NetworkInfo$DetailedState
+java.lang.String)
+
+private void handleNetworkStateChange(
+android.net.NetworkInfo$DetailedState
+java.lang.String)
+
+private static void nap(
+int)
+
+public android.net.NetworkStateTracker getNetworkStateTracker()
+
+public void startMonitoring()
+
+________________CLASS________________
+
+
+public class android.net.wifi.WifiNative extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static native int addNetworkCommand()
+
+public static native boolean addToBlacklistCommand(
+java.lang.String)
+
+public static native boolean clearBlacklistCommand()
+
+public static native void closeSupplicantConnection()
+
+public static native boolean connectToSupplicant()
+
+public static native boolean disableNetworkCommand(
+int)
+
+public static native boolean disconnectCommand()
+
+public static native boolean doDhcpRequest(
+android.net.DhcpInfo)
+
+public static native boolean enableNetworkCommand(
+int
+boolean)
+
+public static native java.lang.String getDhcpError()
+
+public static native java.lang.String getErrorString(
+int)
+
+public static native int getLinkSpeedCommand()
+
+public static native java.lang.String getMacAddressCommand()
+
+public static native java.lang.String getNetworkVariableCommand(
+int
+java.lang.String)
+
+public static native int getRssiCommand()
+
+public static native java.lang.String listNetworksCommand()
+
+public static native boolean loadDriver()
+
+public static native boolean pingCommand()
+
+public static native boolean reassociateCommand()
+
+public static native boolean reconnectCommand()
+
+public static native boolean reloadConfigCommand()
+
+public static native boolean removeNetworkCommand(
+int)
+
+public static native boolean saveConfigCommand()
+
+public static native boolean scanCommand()
+
+public static native java.lang.String scanResultsCommand()
+
+public static native boolean setNetworkVariableCommand(
+int
+java.lang.String
+java.lang.String)
+
+public static native boolean setPowerModeCommand(
+int)
+
+public static native boolean setScanModeCommand(
+boolean)
+
+public static native boolean setScanResultHandlingCommand(
+int)
+
+public static native boolean startDriverCommand()
+
+public static native boolean startSupplicant()
+
+public static native java.lang.String statusCommand()
+
+public static native boolean stopDriverCommand()
+
+public static native boolean stopSupplicant()
+
+public static native boolean unloadDriver()
+
+public static native java.lang.String waitForEvent()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/WifiStateTracker; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =DhcpHandler )
+ class android.net.wifi.WifiStateTracker$DhcpHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+private boolean mCancelCallback
+
+private android.os.Handler mTarget
+
+final android.net.wifi.WifiStateTracker this$0
+----------------METHODS----------------
+
+public void <init>(
+android.net.wifi.WifiStateTracker
+android.os.Looper
+android.os.Handler)
+
+public void handleMessage(
+android.os.Message)
+
+public void setCancelCallback(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/WifiStateTracker; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =NetworkStateChangeResult )
+ class android.net.wifi.WifiStateTracker$NetworkStateChangeResult extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.lang.String BSSID
+
+ int networkId
+
+ android.net.NetworkInfo$DetailedState state
+----------------METHODS----------------
+
+ void <init>(
+android.net.NetworkInfo$DetailedState
+java.lang.String
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =NotificationEnabledSettingObserver )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/WifiStateTracker; )
+ class android.net.wifi.WifiStateTracker$NotificationEnabledSettingObserver extends android.database.ContentObserver
+
+----------------FIELDS----------------
+
+final android.net.wifi.WifiStateTracker this$0
+----------------METHODS----------------
+
+public void <init>(
+android.net.wifi.WifiStateTracker
+android.os.Handler)
+
+private boolean getValue()
+
+public void onChange(
+boolean)
+
+public void register()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =StaticIpSettingObserver )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/WifiStateTracker; )
+ class android.net.wifi.WifiStateTracker$StaticIpSettingObserver extends android.database.ContentObserver
+
+----------------FIELDS----------------
+
+final android.net.wifi.WifiStateTracker this$0
+----------------METHODS----------------
+
+public void <init>(
+android.net.wifi.WifiStateTracker
+android.os.Handler)
+
+public void onChange(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =SupplicantStateChangeResult )
+@dalvik.annotation.EnclosingClass (value =Landroid/net/wifi/WifiStateTracker; )
+ class android.net.wifi.WifiStateTracker$SupplicantStateChangeResult extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int networkId
+
+ android.net.wifi.SupplicantState state
+----------------METHODS----------------
+
+ void <init>(
+int
+android.net.wifi.SupplicantState)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/net/wifi/WifiStateTracker$NotificationEnabledSettingObserver;Landroid/net/wifi/WifiStateTracker$StaticIpSettingObserver;Landroid/net/wifi/WifiStateTracker$DhcpHandler;Landroid/net/wifi/WifiStateTracker$NetworkStateChangeResult;Landroid/net/wifi/WifiStateTracker$SupplicantStateChangeResult; )
+public class android.net.wifi.WifiStateTracker extends android.net.NetworkStateTracker
+
+----------------FIELDS----------------
+
+private static final int DISCONNECT_DELAY_MSECS
+
+private static final int DRIVER_POWER_MODE_ACTIVE
+
+private static final int DRIVER_POWER_MODE_AUTO
+
+private static final int EVENTLOG_DRIVER_STATE_CHANGED
+
+private static final int EVENTLOG_INTERFACE_CONFIGURATION_STATE_CHANGED
+
+private static final int EVENTLOG_NETWORK_STATE_CHANGED
+
+private static final int EVENTLOG_SUPPLICANT_CONNECTION_STATE_CHANGED
+
+private static final int EVENTLOG_SUPPLICANT_STATE_CHANGED
+
+private static final int EVENT_DEFERRED_DISCONNECT
+
+private static final int EVENT_DEFERRED_RECONNECT
+
+private static final int EVENT_DHCP_START
+
+private static final int EVENT_DRIVER_STATE_CHANGED
+
+private static final int EVENT_INTERFACE_CONFIGURATION_FAILED
+
+private static final int EVENT_INTERFACE_CONFIGURATION_SUCCEEDED
+
+private static final int EVENT_NETWORK_STATE_CHANGED
+
+private static final int EVENT_PASSWORD_KEY_MAY_BE_INCORRECT
+
+private static final int EVENT_POLL_INTERVAL
+
+private static final int EVENT_SCAN_RESULTS_AVAILABLE
+
+private static final int EVENT_SUPPLICANT_CONNECTION
+
+private static final int EVENT_SUPPLICANT_DISCONNECT
+
+private static final int EVENT_SUPPLICANT_STATE_CHANGED
+
+private static final int ICON_NETWORKS_AVAILABLE
+
+private static final boolean LOCAL_LOGD
+
+private static java.lang.String LS
+
+private static final int MAX_RECONNECT_ATTEMPTS
+
+private static final int MAX_SUPPLICANT_LOOP_ITERATIONS
+
+private static final int NUM_SCANS_BEFORE_ACTUALLY_SCANNING
+
+private static final int POLL_STATUS_INTERVAL_MSECS
+
+private static final int RECONNECT_DELAY_MSECS
+
+public static final int SUPPL_SCAN_HANDLING_LIST_ONLY
+
+public static final int SUPPL_SCAN_HANDLING_NORMAL
+
+private static final java.lang.String TAG
+
+private static java.lang.String[] sDnsPropNames
+
+private final long NOTIFICATION_REPEAT_DELAY_MS
+
+private android.net.DhcpInfo mDhcpInfo
+
+private android.net.wifi.WifiStateTracker$DhcpHandler mDhcpTarget
+
+private boolean mDisconnectPending
+
+private boolean mDriverIsStopped
+
+private boolean mExplicitlyDisabled
+
+private boolean mHaveIPAddress
+
+private java.lang.String mInterfaceName
+
+private boolean mIsScanModeActive
+
+private boolean mIsScanModeSetDueToAHiddenNetwork
+
+private java.lang.String mLastBssid
+
+private int mLastNetworkId
+
+private int mLastSignalLevel
+
+private java.lang.String mLastSsid
+
+private android.app.Notification mNotification
+
+private boolean mNotificationEnabled
+
+private android.net.wifi.WifiStateTracker$NotificationEnabledSettingObserver mNotificationEnabledSettingObserver
+
+private long mNotificationRepeatTime
+
+private boolean mNotificationShown
+
+private int mNumScansSinceNetworkStateChange
+
+private int mNumSupplicantLoopIterations
+
+private boolean mObtainingIPAddress
+
+private boolean mPasswordKeyMayBeIncorrect
+
+private int mReconnectCount
+
+private int[] mSavedConfiguration
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/net/wifi/ScanResult;>; )
+private java.util.List mScanResults
+
+private android.net.wifi.WifiStateTracker$StaticIpSettingObserver mStaticIpSettingObserver
+
+private android.net.wifi.SupplicantState mSupplicantLoopState
+
+private boolean mUseStaticIp
+
+private android.net.wifi.WifiManager mWM
+
+private android.net.wifi.WifiInfo mWifiInfo
+
+private android.net.wifi.WifiMonitor mWifiMonitor
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context
+android.os.Handler)
+
+static java.lang.String access$000(
+android.net.wifi.WifiStateTracker)
+
+static android.net.DhcpInfo access$100(
+android.net.wifi.WifiStateTracker)
+
+static void access$1000(
+android.net.wifi.WifiStateTracker)
+
+static android.content.Context access$1100(
+android.net.wifi.WifiStateTracker)
+
+static android.content.Context access$200(
+android.net.wifi.WifiStateTracker)
+
+static android.net.wifi.WifiInfo access$300(
+android.net.wifi.WifiStateTracker)
+
+static boolean access$400(
+android.net.wifi.WifiStateTracker)
+
+static void access$500(
+android.net.wifi.WifiStateTracker)
+
+static void access$600(
+android.net.wifi.WifiStateTracker)
+
+static android.os.Handler access$700(
+android.net.wifi.WifiStateTracker)
+
+static android.content.Context access$800(
+android.net.wifi.WifiStateTracker)
+
+static boolean access$900(
+android.net.wifi.WifiStateTracker)
+
+static boolean access$902(
+android.net.wifi.WifiStateTracker
+boolean)
+
+private void cancelDisconnect()
+
+private void checkUseStaticIp()
+
+private void configureInterface()
+
+private void handleDisconnectedState(
+android.net.NetworkInfo$DetailedState)
+
+private boolean isSupplicantLooping(
+android.net.wifi.SupplicantState)
+
+private void requestConnectionStatus(
+android.net.wifi.WifiInfo)
+
+private void requestPolledInfo(
+android.net.wifi.WifiInfo)
+
+private void resetNotificationTimer()
+
+private void resetSupplicantLoopState()
+
+private void scheduleDisconnect()
+
+private void sendNetworkStateChangeBroadcast()
+
+private void sendRssiChangeBroadcast(
+int)
+
+private void setExplicitlyDisabled(
+boolean)
+
+private void setPollTimer()
+
+private void setSupplicantState(
+android.net.wifi.SupplicantState)
+
+private void setSupplicantState(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+private static int stringToIpAddr(
+java.lang.String)
+
+private void updateNetworkInfo()
+
+private boolean wifiManagerDisableNetwork(
+int)
+
+public boolean addToBlacklist(
+java.lang.String)
+
+public boolean clearBlacklist()
+
+public android.net.DhcpInfo getDhcpInfo()
+
+public java.lang.String[] getNameServers()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Landroid/net/wifi/ScanResult;>; )
+public java.util.List getScanResultsList()
+
+public android.net.wifi.SupplicantState getSupplicantState()
+
+public java.lang.String getTcpBufferSizesPropName()
+
+public void handleMessage(
+android.os.Message)
+
+public void interpretScanResultsAvailable()
+
+public boolean isAvailable()
+
+public boolean isConnectionCompleted()
+
+ void notifyDriverStarted()
+
+ void notifyDriverStopped()
+
+ void notifyPasswordKeyMayBeIncorrect()
+
+ void notifyScanResultsAvailable()
+
+ void notifyStateChange(
+int
+android.net.wifi.SupplicantState)
+
+ void notifyStateChange(
+android.net.NetworkInfo$DetailedState
+java.lang.String
+int)
+
+ void notifySupplicantConnection()
+
+ void notifySupplicantLost()
+
+public boolean reconnect()
+
+public android.net.wifi.WifiInfo requestConnectionInfo()
+
+public void resetInterface()
+
+public void setNotificationVisible(
+boolean
+int
+boolean
+int)
+
+public boolean setRadio(
+boolean)
+
+public void setScanMode(
+boolean
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/net/wifi/ScanResult;>;)V )
+public void setScanResultsList(
+java.util.List)
+
+public void startEventLoop()
+
+public void startMonitoring()
+
+public int startUsingNetworkFeature(
+java.lang.String
+int
+int)
+
+public int stopUsingNetworkFeature(
+java.lang.String
+int
+int)
+
+public boolean teardown()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class javax.microedition.khronos.egl.EGL extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class javax.microedition.khronos.egl.EGL10 extends java.lang.Object implements javax.microedition.khronos.egl.EGL
+
+----------------FIELDS----------------
+
+public static final int EGL_ALPHA_FORMAT
+
+public static final int EGL_ALPHA_MASK_SIZE
+
+public static final int EGL_ALPHA_SIZE
+
+public static final int EGL_BAD_ACCESS
+
+public static final int EGL_BAD_ALLOC
+
+public static final int EGL_BAD_ATTRIBUTE
+
+public static final int EGL_BAD_CONFIG
+
+public static final int EGL_BAD_CONTEXT
+
+public static final int EGL_BAD_CURRENT_SURFACE
+
+public static final int EGL_BAD_DISPLAY
+
+public static final int EGL_BAD_MATCH
+
+public static final int EGL_BAD_NATIVE_PIXMAP
+
+public static final int EGL_BAD_NATIVE_WINDOW
+
+public static final int EGL_BAD_PARAMETER
+
+public static final int EGL_BAD_SURFACE
+
+public static final int EGL_BLUE_SIZE
+
+public static final int EGL_BUFFER_SIZE
+
+public static final int EGL_COLORSPACE
+
+public static final int EGL_COLOR_BUFFER_TYPE
+
+public static final int EGL_CONFIG_CAVEAT
+
+public static final int EGL_CONFIG_ID
+
+public static final int EGL_CORE_NATIVE_ENGINE
+
+public static final java.lang.Object EGL_DEFAULT_DISPLAY
+
+public static final int EGL_DEPTH_SIZE
+
+public static final int EGL_DONT_CARE
+
+public static final int EGL_DRAW
+
+public static final int EGL_EXTENSIONS
+
+public static final int EGL_GREEN_SIZE
+
+public static final int EGL_HEIGHT
+
+public static final int EGL_HORIZONTAL_RESOLUTION
+
+public static final int EGL_LARGEST_PBUFFER
+
+public static final int EGL_LEVEL
+
+public static final int EGL_LUMINANCE_BUFFER
+
+public static final int EGL_LUMINANCE_SIZE
+
+public static final int EGL_MAX_PBUFFER_HEIGHT
+
+public static final int EGL_MAX_PBUFFER_PIXELS
+
+public static final int EGL_MAX_PBUFFER_WIDTH
+
+public static final int EGL_NATIVE_RENDERABLE
+
+public static final int EGL_NATIVE_VISUAL_ID
+
+public static final int EGL_NATIVE_VISUAL_TYPE
+
+public static final int EGL_NONE
+
+public static final int EGL_NON_CONFORMANT_CONFIG
+
+public static final int EGL_NOT_INITIALIZED
+
+public static final javax.microedition.khronos.egl.EGLContext EGL_NO_CONTEXT
+
+public static final javax.microedition.khronos.egl.EGLDisplay EGL_NO_DISPLAY
+
+public static final javax.microedition.khronos.egl.EGLSurface EGL_NO_SURFACE
+
+public static final int EGL_PBUFFER_BIT
+
+public static final int EGL_PIXEL_ASPECT_RATIO
+
+public static final int EGL_PIXMAP_BIT
+
+public static final int EGL_READ
+
+public static final int EGL_RED_SIZE
+
+public static final int EGL_RENDERABLE_TYPE
+
+public static final int EGL_RENDER_BUFFER
+
+public static final int EGL_RGB_BUFFER
+
+public static final int EGL_SAMPLES
+
+public static final int EGL_SAMPLE_BUFFERS
+
+public static final int EGL_SINGLE_BUFFER
+
+public static final int EGL_SLOW_CONFIG
+
+public static final int EGL_STENCIL_SIZE
+
+public static final int EGL_SUCCESS
+
+public static final int EGL_SURFACE_TYPE
+
+public static final int EGL_TRANSPARENT_BLUE_VALUE
+
+public static final int EGL_TRANSPARENT_GREEN_VALUE
+
+public static final int EGL_TRANSPARENT_RED_VALUE
+
+public static final int EGL_TRANSPARENT_RGB
+
+public static final int EGL_TRANSPARENT_TYPE
+
+public static final int EGL_VENDOR
+
+public static final int EGL_VERSION
+
+public static final int EGL_VERTICAL_RESOLUTION
+
+public static final int EGL_WIDTH
+
+public static final int EGL_WINDOW_BIT
+----------------METHODS----------------
+
+static void <clinit>()
+
+public abstract boolean eglChooseConfig(
+javax.microedition.khronos.egl.EGLDisplay
+int[]
+javax.microedition.khronos.egl.EGLConfig[]
+int
+int[])
+
+public abstract boolean eglCopyBuffers(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLSurface
+java.lang.Object)
+
+public abstract javax.microedition.khronos.egl.EGLContext eglCreateContext(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+javax.microedition.khronos.egl.EGLContext
+int[])
+
+public abstract javax.microedition.khronos.egl.EGLSurface eglCreatePbufferSurface(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+int[])
+
+public abstract javax.microedition.khronos.egl.EGLSurface eglCreatePixmapSurface(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+java.lang.Object
+int[])
+
+public abstract javax.microedition.khronos.egl.EGLSurface eglCreateWindowSurface(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+java.lang.Object
+int[])
+
+public abstract boolean eglDestroyContext(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLContext)
+
+public abstract boolean eglDestroySurface(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLSurface)
+
+public abstract boolean eglGetConfigAttrib(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+int
+int[])
+
+public abstract boolean eglGetConfigs(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig[]
+int
+int[])
+
+public abstract javax.microedition.khronos.egl.EGLContext eglGetCurrentContext()
+
+public abstract javax.microedition.khronos.egl.EGLDisplay eglGetCurrentDisplay()
+
+public abstract javax.microedition.khronos.egl.EGLSurface eglGetCurrentSurface(
+int)
+
+public abstract javax.microedition.khronos.egl.EGLDisplay eglGetDisplay(
+java.lang.Object)
+
+public abstract int eglGetError()
+
+public abstract boolean eglInitialize(
+javax.microedition.khronos.egl.EGLDisplay
+int[])
+
+public abstract boolean eglMakeCurrent(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLSurface
+javax.microedition.khronos.egl.EGLSurface
+javax.microedition.khronos.egl.EGLContext)
+
+public abstract boolean eglQueryContext(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLContext
+int
+int[])
+
+public abstract java.lang.String eglQueryString(
+javax.microedition.khronos.egl.EGLDisplay
+int)
+
+public abstract boolean eglQuerySurface(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLSurface
+int
+int[])
+
+public abstract boolean eglSwapBuffers(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLSurface)
+
+public abstract boolean eglTerminate(
+javax.microedition.khronos.egl.EGLDisplay)
+
+public abstract boolean eglWaitGL()
+
+public abstract boolean eglWaitNative(
+int
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract interface class javax.microedition.khronos.egl.EGL11 extends java.lang.Object implements javax.microedition.khronos.egl.EGL10
+
+----------------FIELDS----------------
+
+public static final int EGL_CONTEXT_LOST
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+ class android.opengl.EGLLogWrapper extends java.lang.Object implements javax.microedition.khronos.egl.EGL11
+
+----------------FIELDS----------------
+
+private int mArgCount
+
+ boolean mCheckError
+
+private javax.microedition.khronos.egl.EGL10 mEgl10
+
+ java.io.Writer mLog
+
+ boolean mLogArgumentNames
+----------------METHODS----------------
+
+public void <init>(
+javax.microedition.khronos.egl.EGL
+int
+java.io.Writer)
+
+private void arg(
+java.lang.String
+int)
+
+private void arg(
+java.lang.String
+java.lang.Object)
+
+private void arg(
+java.lang.String
+java.lang.String)
+
+private void arg(
+java.lang.String
+javax.microedition.khronos.egl.EGLContext)
+
+private void arg(
+java.lang.String
+javax.microedition.khronos.egl.EGLDisplay)
+
+private void arg(
+java.lang.String
+javax.microedition.khronos.egl.EGLSurface)
+
+private void arg(
+java.lang.String
+int[])
+
+private void arg(
+java.lang.String
+java.lang.Object[])
+
+private void begin(
+java.lang.String)
+
+private void checkError()
+
+private void end()
+
+private void flush()
+
+public static java.lang.String getErrorString(
+int)
+
+private static java.lang.String getHex(
+int)
+
+private void log(
+java.lang.String)
+
+private void logLine(
+java.lang.String)
+
+private void returns(
+int)
+
+private void returns(
+java.lang.Object)
+
+private void returns(
+java.lang.String)
+
+private void returns(
+boolean)
+
+private java.lang.String toString(
+int
+int[]
+int)
+
+private java.lang.String toString(
+int
+java.lang.Object[]
+int)
+
+private java.lang.String toString(
+java.lang.Object)
+
+public boolean eglChooseConfig(
+javax.microedition.khronos.egl.EGLDisplay
+int[]
+javax.microedition.khronos.egl.EGLConfig[]
+int
+int[])
+
+public boolean eglCopyBuffers(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLSurface
+java.lang.Object)
+
+public javax.microedition.khronos.egl.EGLContext eglCreateContext(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+javax.microedition.khronos.egl.EGLContext
+int[])
+
+public javax.microedition.khronos.egl.EGLSurface eglCreatePbufferSurface(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+int[])
+
+public javax.microedition.khronos.egl.EGLSurface eglCreatePixmapSurface(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+java.lang.Object
+int[])
+
+public javax.microedition.khronos.egl.EGLSurface eglCreateWindowSurface(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+java.lang.Object
+int[])
+
+public boolean eglDestroyContext(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLContext)
+
+public boolean eglDestroySurface(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLSurface)
+
+public boolean eglGetConfigAttrib(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+int
+int[])
+
+public boolean eglGetConfigs(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig[]
+int
+int[])
+
+public javax.microedition.khronos.egl.EGLContext eglGetCurrentContext()
+
+public javax.microedition.khronos.egl.EGLDisplay eglGetCurrentDisplay()
+
+public javax.microedition.khronos.egl.EGLSurface eglGetCurrentSurface(
+int)
+
+public javax.microedition.khronos.egl.EGLDisplay eglGetDisplay(
+java.lang.Object)
+
+public int eglGetError()
+
+public boolean eglInitialize(
+javax.microedition.khronos.egl.EGLDisplay
+int[])
+
+public boolean eglMakeCurrent(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLSurface
+javax.microedition.khronos.egl.EGLSurface
+javax.microedition.khronos.egl.EGLContext)
+
+public boolean eglQueryContext(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLContext
+int
+int[])
+
+public java.lang.String eglQueryString(
+javax.microedition.khronos.egl.EGLDisplay
+int)
+
+public boolean eglQuerySurface(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLSurface
+int
+int[])
+
+public boolean eglSwapBuffers(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLSurface)
+
+public boolean eglTerminate(
+javax.microedition.khronos.egl.EGLDisplay)
+
+public boolean eglWaitGL()
+
+public boolean eglWaitNative(
+int
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class android.opengl.GLDebugHelper extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CONFIG_CHECK_GL_ERROR
+
+public static final int CONFIG_CHECK_THREAD
+
+public static final int CONFIG_LOG_ARGUMENT_NAMES
+
+public static final int ERROR_WRONG_THREAD
+----------------METHODS----------------
+
+public void <init>()
+
+public static javax.microedition.khronos.egl.EGL wrap(
+javax.microedition.khronos.egl.EGL
+int
+java.io.Writer)
+
+public static javax.microedition.khronos.opengles.GL wrap(
+javax.microedition.khronos.opengles.GL
+int
+java.io.Writer)
+
+________________CLASS________________
+
+
+public abstract interface class javax.microedition.khronos.opengles.GL extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class javax.microedition.khronos.opengles.GL10 extends java.lang.Object implements javax.microedition.khronos.opengles.GL
+
+----------------FIELDS----------------
+
+public static final int GL_ADD
+
+public static final int GL_ALIASED_LINE_WIDTH_RANGE
+
+public static final int GL_ALIASED_POINT_SIZE_RANGE
+
+public static final int GL_ALPHA
+
+public static final int GL_ALPHA_BITS
+
+public static final int GL_ALPHA_TEST
+
+public static final int GL_ALWAYS
+
+public static final int GL_AMBIENT
+
+public static final int GL_AMBIENT_AND_DIFFUSE
+
+public static final int GL_AND
+
+public static final int GL_AND_INVERTED
+
+public static final int GL_AND_REVERSE
+
+public static final int GL_BACK
+
+public static final int GL_BLEND
+
+public static final int GL_BLUE_BITS
+
+public static final int GL_BYTE
+
+public static final int GL_CCW
+
+public static final int GL_CLAMP_TO_EDGE
+
+public static final int GL_CLEAR
+
+public static final int GL_COLOR_ARRAY
+
+public static final int GL_COLOR_BUFFER_BIT
+
+public static final int GL_COLOR_LOGIC_OP
+
+public static final int GL_COLOR_MATERIAL
+
+public static final int GL_COMPRESSED_TEXTURE_FORMATS
+
+public static final int GL_CONSTANT_ATTENUATION
+
+public static final int GL_COPY
+
+public static final int GL_COPY_INVERTED
+
+public static final int GL_CULL_FACE
+
+public static final int GL_CW
+
+public static final int GL_DECAL
+
+public static final int GL_DECR
+
+public static final int GL_DEPTH_BITS
+
+public static final int GL_DEPTH_BUFFER_BIT
+
+public static final int GL_DEPTH_TEST
+
+public static final int GL_DIFFUSE
+
+public static final int GL_DITHER
+
+public static final int GL_DONT_CARE
+
+public static final int GL_DST_ALPHA
+
+public static final int GL_DST_COLOR
+
+public static final int GL_EMISSION
+
+public static final int GL_EQUAL
+
+public static final int GL_EQUIV
+
+public static final int GL_EXP
+
+public static final int GL_EXP2
+
+public static final int GL_EXTENSIONS
+
+public static final int GL_FALSE
+
+public static final int GL_FASTEST
+
+public static final int GL_FIXED
+
+public static final int GL_FLAT
+
+public static final int GL_FLOAT
+
+public static final int GL_FOG
+
+public static final int GL_FOG_COLOR
+
+public static final int GL_FOG_DENSITY
+
+public static final int GL_FOG_END
+
+public static final int GL_FOG_HINT
+
+public static final int GL_FOG_MODE
+
+public static final int GL_FOG_START
+
+public static final int GL_FRONT
+
+public static final int GL_FRONT_AND_BACK
+
+public static final int GL_GEQUAL
+
+public static final int GL_GREATER
+
+public static final int GL_GREEN_BITS
+
+public static final int GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
+
+public static final int GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
+
+public static final int GL_INCR
+
+public static final int GL_INVALID_ENUM
+
+public static final int GL_INVALID_OPERATION
+
+public static final int GL_INVALID_VALUE
+
+public static final int GL_INVERT
+
+public static final int GL_KEEP
+
+public static final int GL_LEQUAL
+
+public static final int GL_LESS
+
+public static final int GL_LIGHT0
+
+public static final int GL_LIGHT1
+
+public static final int GL_LIGHT2
+
+public static final int GL_LIGHT3
+
+public static final int GL_LIGHT4
+
+public static final int GL_LIGHT5
+
+public static final int GL_LIGHT6
+
+public static final int GL_LIGHT7
+
+public static final int GL_LIGHTING
+
+public static final int GL_LIGHT_MODEL_AMBIENT
+
+public static final int GL_LIGHT_MODEL_TWO_SIDE
+
+public static final int GL_LINEAR
+
+public static final int GL_LINEAR_ATTENUATION
+
+public static final int GL_LINEAR_MIPMAP_LINEAR
+
+public static final int GL_LINEAR_MIPMAP_NEAREST
+
+public static final int GL_LINES
+
+public static final int GL_LINE_LOOP
+
+public static final int GL_LINE_SMOOTH
+
+public static final int GL_LINE_SMOOTH_HINT
+
+public static final int GL_LINE_STRIP
+
+public static final int GL_LUMINANCE
+
+public static final int GL_LUMINANCE_ALPHA
+
+public static final int GL_MAX_ELEMENTS_INDICES
+
+public static final int GL_MAX_ELEMENTS_VERTICES
+
+public static final int GL_MAX_LIGHTS
+
+public static final int GL_MAX_MODELVIEW_STACK_DEPTH
+
+public static final int GL_MAX_PROJECTION_STACK_DEPTH
+
+public static final int GL_MAX_TEXTURE_SIZE
+
+public static final int GL_MAX_TEXTURE_STACK_DEPTH
+
+public static final int GL_MAX_TEXTURE_UNITS
+
+public static final int GL_MAX_VIEWPORT_DIMS
+
+public static final int GL_MODELVIEW
+
+public static final int GL_MODULATE
+
+public static final int GL_MULTISAMPLE
+
+public static final int GL_NAND
+
+public static final int GL_NEAREST
+
+public static final int GL_NEAREST_MIPMAP_LINEAR
+
+public static final int GL_NEAREST_MIPMAP_NEAREST
+
+public static final int GL_NEVER
+
+public static final int GL_NICEST
+
+public static final int GL_NOOP
+
+public static final int GL_NOR
+
+public static final int GL_NORMALIZE
+
+public static final int GL_NORMAL_ARRAY
+
+public static final int GL_NOTEQUAL
+
+public static final int GL_NO_ERROR
+
+public static final int GL_NUM_COMPRESSED_TEXTURE_FORMATS
+
+public static final int GL_ONE
+
+public static final int GL_ONE_MINUS_DST_ALPHA
+
+public static final int GL_ONE_MINUS_DST_COLOR
+
+public static final int GL_ONE_MINUS_SRC_ALPHA
+
+public static final int GL_ONE_MINUS_SRC_COLOR
+
+public static final int GL_OR
+
+public static final int GL_OR_INVERTED
+
+public static final int GL_OR_REVERSE
+
+public static final int GL_OUT_OF_MEMORY
+
+public static final int GL_PACK_ALIGNMENT
+
+public static final int GL_PALETTE4_R5_G6_B5_OES
+
+public static final int GL_PALETTE4_RGB5_A1_OES
+
+public static final int GL_PALETTE4_RGB8_OES
+
+public static final int GL_PALETTE4_RGBA4_OES
+
+public static final int GL_PALETTE4_RGBA8_OES
+
+public static final int GL_PALETTE8_R5_G6_B5_OES
+
+public static final int GL_PALETTE8_RGB5_A1_OES
+
+public static final int GL_PALETTE8_RGB8_OES
+
+public static final int GL_PALETTE8_RGBA4_OES
+
+public static final int GL_PALETTE8_RGBA8_OES
+
+public static final int GL_PERSPECTIVE_CORRECTION_HINT
+
+public static final int GL_POINTS
+
+public static final int GL_POINT_FADE_THRESHOLD_SIZE
+
+public static final int GL_POINT_SIZE
+
+public static final int GL_POINT_SMOOTH
+
+public static final int GL_POINT_SMOOTH_HINT
+
+public static final int GL_POLYGON_OFFSET_FILL
+
+public static final int GL_POLYGON_SMOOTH_HINT
+
+public static final int GL_POSITION
+
+public static final int GL_PROJECTION
+
+public static final int GL_QUADRATIC_ATTENUATION
+
+public static final int GL_RED_BITS
+
+public static final int GL_RENDERER
+
+public static final int GL_REPEAT
+
+public static final int GL_REPLACE
+
+public static final int GL_RESCALE_NORMAL
+
+public static final int GL_RGB
+
+public static final int GL_RGBA
+
+public static final int GL_SAMPLE_ALPHA_TO_COVERAGE
+
+public static final int GL_SAMPLE_ALPHA_TO_ONE
+
+public static final int GL_SAMPLE_COVERAGE
+
+public static final int GL_SCISSOR_TEST
+
+public static final int GL_SET
+
+public static final int GL_SHININESS
+
+public static final int GL_SHORT
+
+public static final int GL_SMOOTH
+
+public static final int GL_SMOOTH_LINE_WIDTH_RANGE
+
+public static final int GL_SMOOTH_POINT_SIZE_RANGE
+
+public static final int GL_SPECULAR
+
+public static final int GL_SPOT_CUTOFF
+
+public static final int GL_SPOT_DIRECTION
+
+public static final int GL_SPOT_EXPONENT
+
+public static final int GL_SRC_ALPHA
+
+public static final int GL_SRC_ALPHA_SATURATE
+
+public static final int GL_SRC_COLOR
+
+public static final int GL_STACK_OVERFLOW
+
+public static final int GL_STACK_UNDERFLOW
+
+public static final int GL_STENCIL_BITS
+
+public static final int GL_STENCIL_BUFFER_BIT
+
+public static final int GL_STENCIL_TEST
+
+public static final int GL_SUBPIXEL_BITS
+
+public static final int GL_TEXTURE
+
+public static final int GL_TEXTURE0
+
+public static final int GL_TEXTURE1
+
+public static final int GL_TEXTURE10
+
+public static final int GL_TEXTURE11
+
+public static final int GL_TEXTURE12
+
+public static final int GL_TEXTURE13
+
+public static final int GL_TEXTURE14
+
+public static final int GL_TEXTURE15
+
+public static final int GL_TEXTURE16
+
+public static final int GL_TEXTURE17
+
+public static final int GL_TEXTURE18
+
+public static final int GL_TEXTURE19
+
+public static final int GL_TEXTURE2
+
+public static final int GL_TEXTURE20
+
+public static final int GL_TEXTURE21
+
+public static final int GL_TEXTURE22
+
+public static final int GL_TEXTURE23
+
+public static final int GL_TEXTURE24
+
+public static final int GL_TEXTURE25
+
+public static final int GL_TEXTURE26
+
+public static final int GL_TEXTURE27
+
+public static final int GL_TEXTURE28
+
+public static final int GL_TEXTURE29
+
+public static final int GL_TEXTURE3
+
+public static final int GL_TEXTURE30
+
+public static final int GL_TEXTURE31
+
+public static final int GL_TEXTURE4
+
+public static final int GL_TEXTURE5
+
+public static final int GL_TEXTURE6
+
+public static final int GL_TEXTURE7
+
+public static final int GL_TEXTURE8
+
+public static final int GL_TEXTURE9
+
+public static final int GL_TEXTURE_2D
+
+public static final int GL_TEXTURE_COORD_ARRAY
+
+public static final int GL_TEXTURE_ENV
+
+public static final int GL_TEXTURE_ENV_COLOR
+
+public static final int GL_TEXTURE_ENV_MODE
+
+public static final int GL_TEXTURE_MAG_FILTER
+
+public static final int GL_TEXTURE_MIN_FILTER
+
+public static final int GL_TEXTURE_WRAP_S
+
+public static final int GL_TEXTURE_WRAP_T
+
+public static final int GL_TRIANGLES
+
+public static final int GL_TRIANGLE_FAN
+
+public static final int GL_TRIANGLE_STRIP
+
+public static final int GL_TRUE
+
+public static final int GL_UNPACK_ALIGNMENT
+
+public static final int GL_UNSIGNED_BYTE
+
+public static final int GL_UNSIGNED_SHORT
+
+public static final int GL_UNSIGNED_SHORT_4_4_4_4
+
+public static final int GL_UNSIGNED_SHORT_5_5_5_1
+
+public static final int GL_UNSIGNED_SHORT_5_6_5
+
+public static final int GL_VENDOR
+
+public static final int GL_VERSION
+
+public static final int GL_VERTEX_ARRAY
+
+public static final int GL_XOR
+
+public static final int GL_ZERO
+----------------METHODS----------------
+
+public abstract void glActiveTexture(
+int)
+
+public abstract void glAlphaFunc(
+int
+float)
+
+public abstract void glAlphaFuncx(
+int
+int)
+
+public abstract void glBindTexture(
+int
+int)
+
+public abstract void glBlendFunc(
+int
+int)
+
+public abstract void glClear(
+int)
+
+public abstract void glClearColor(
+float
+float
+float
+float)
+
+public abstract void glClearColorx(
+int
+int
+int
+int)
+
+public abstract void glClearDepthf(
+float)
+
+public abstract void glClearDepthx(
+int)
+
+public abstract void glClearStencil(
+int)
+
+public abstract void glClientActiveTexture(
+int)
+
+public abstract void glColor4f(
+float
+float
+float
+float)
+
+public abstract void glColor4x(
+int
+int
+int
+int)
+
+public abstract void glColorMask(
+boolean
+boolean
+boolean
+boolean)
+
+public abstract void glColorPointer(
+int
+int
+int
+java.nio.Buffer)
+
+public abstract void glCompressedTexImage2D(
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public abstract void glCompressedTexSubImage2D(
+int
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public abstract void glCopyTexImage2D(
+int
+int
+int
+int
+int
+int
+int
+int)
+
+public abstract void glCopyTexSubImage2D(
+int
+int
+int
+int
+int
+int
+int
+int)
+
+public abstract void glCullFace(
+int)
+
+public abstract void glDeleteTextures(
+int
+java.nio.IntBuffer)
+
+public abstract void glDeleteTextures(
+int
+int[]
+int)
+
+public abstract void glDepthFunc(
+int)
+
+public abstract void glDepthMask(
+boolean)
+
+public abstract void glDepthRangef(
+float
+float)
+
+public abstract void glDepthRangex(
+int
+int)
+
+public abstract void glDisable(
+int)
+
+public abstract void glDisableClientState(
+int)
+
+public abstract void glDrawArrays(
+int
+int
+int)
+
+public abstract void glDrawElements(
+int
+int
+int
+java.nio.Buffer)
+
+public abstract void glEnable(
+int)
+
+public abstract void glEnableClientState(
+int)
+
+public abstract void glFinish()
+
+public abstract void glFlush()
+
+public abstract void glFogf(
+int
+float)
+
+public abstract void glFogfv(
+int
+java.nio.FloatBuffer)
+
+public abstract void glFogfv(
+int
+float[]
+int)
+
+public abstract void glFogx(
+int
+int)
+
+public abstract void glFogxv(
+int
+java.nio.IntBuffer)
+
+public abstract void glFogxv(
+int
+int[]
+int)
+
+public abstract void glFrontFace(
+int)
+
+public abstract void glFrustumf(
+float
+float
+float
+float
+float
+float)
+
+public abstract void glFrustumx(
+int
+int
+int
+int
+int
+int)
+
+public abstract void glGenTextures(
+int
+java.nio.IntBuffer)
+
+public abstract void glGenTextures(
+int
+int[]
+int)
+
+public abstract int glGetError()
+
+public abstract void glGetIntegerv(
+int
+java.nio.IntBuffer)
+
+public abstract void glGetIntegerv(
+int
+int[]
+int)
+
+public abstract java.lang.String glGetString(
+int)
+
+public abstract void glHint(
+int
+int)
+
+public abstract void glLightModelf(
+int
+float)
+
+public abstract void glLightModelfv(
+int
+java.nio.FloatBuffer)
+
+public abstract void glLightModelfv(
+int
+float[]
+int)
+
+public abstract void glLightModelx(
+int
+int)
+
+public abstract void glLightModelxv(
+int
+java.nio.IntBuffer)
+
+public abstract void glLightModelxv(
+int
+int[]
+int)
+
+public abstract void glLightf(
+int
+int
+float)
+
+public abstract void glLightfv(
+int
+int
+java.nio.FloatBuffer)
+
+public abstract void glLightfv(
+int
+int
+float[]
+int)
+
+public abstract void glLightx(
+int
+int
+int)
+
+public abstract void glLightxv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glLightxv(
+int
+int
+int[]
+int)
+
+public abstract void glLineWidth(
+float)
+
+public abstract void glLineWidthx(
+int)
+
+public abstract void glLoadIdentity()
+
+public abstract void glLoadMatrixf(
+java.nio.FloatBuffer)
+
+public abstract void glLoadMatrixf(
+float[]
+int)
+
+public abstract void glLoadMatrixx(
+java.nio.IntBuffer)
+
+public abstract void glLoadMatrixx(
+int[]
+int)
+
+public abstract void glLogicOp(
+int)
+
+public abstract void glMaterialf(
+int
+int
+float)
+
+public abstract void glMaterialfv(
+int
+int
+java.nio.FloatBuffer)
+
+public abstract void glMaterialfv(
+int
+int
+float[]
+int)
+
+public abstract void glMaterialx(
+int
+int
+int)
+
+public abstract void glMaterialxv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glMaterialxv(
+int
+int
+int[]
+int)
+
+public abstract void glMatrixMode(
+int)
+
+public abstract void glMultMatrixf(
+java.nio.FloatBuffer)
+
+public abstract void glMultMatrixf(
+float[]
+int)
+
+public abstract void glMultMatrixx(
+java.nio.IntBuffer)
+
+public abstract void glMultMatrixx(
+int[]
+int)
+
+public abstract void glMultiTexCoord4f(
+int
+float
+float
+float
+float)
+
+public abstract void glMultiTexCoord4x(
+int
+int
+int
+int
+int)
+
+public abstract void glNormal3f(
+float
+float
+float)
+
+public abstract void glNormal3x(
+int
+int
+int)
+
+public abstract void glNormalPointer(
+int
+int
+java.nio.Buffer)
+
+public abstract void glOrthof(
+float
+float
+float
+float
+float
+float)
+
+public abstract void glOrthox(
+int
+int
+int
+int
+int
+int)
+
+public abstract void glPixelStorei(
+int
+int)
+
+public abstract void glPointSize(
+float)
+
+public abstract void glPointSizex(
+int)
+
+public abstract void glPolygonOffset(
+float
+float)
+
+public abstract void glPolygonOffsetx(
+int
+int)
+
+public abstract void glPopMatrix()
+
+public abstract void glPushMatrix()
+
+public abstract void glReadPixels(
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public abstract void glRotatef(
+float
+float
+float
+float)
+
+public abstract void glRotatex(
+int
+int
+int
+int)
+
+public abstract void glSampleCoverage(
+float
+boolean)
+
+public abstract void glSampleCoveragex(
+int
+boolean)
+
+public abstract void glScalef(
+float
+float
+float)
+
+public abstract void glScalex(
+int
+int
+int)
+
+public abstract void glScissor(
+int
+int
+int
+int)
+
+public abstract void glShadeModel(
+int)
+
+public abstract void glStencilFunc(
+int
+int
+int)
+
+public abstract void glStencilMask(
+int)
+
+public abstract void glStencilOp(
+int
+int
+int)
+
+public abstract void glTexCoordPointer(
+int
+int
+int
+java.nio.Buffer)
+
+public abstract void glTexEnvf(
+int
+int
+float)
+
+public abstract void glTexEnvfv(
+int
+int
+java.nio.FloatBuffer)
+
+public abstract void glTexEnvfv(
+int
+int
+float[]
+int)
+
+public abstract void glTexEnvx(
+int
+int
+int)
+
+public abstract void glTexEnvxv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glTexEnvxv(
+int
+int
+int[]
+int)
+
+public abstract void glTexImage2D(
+int
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public abstract void glTexParameterf(
+int
+int
+float)
+
+public abstract void glTexParameterx(
+int
+int
+int)
+
+public abstract void glTexSubImage2D(
+int
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public abstract void glTranslatef(
+float
+float
+float)
+
+public abstract void glTranslatex(
+int
+int
+int)
+
+public abstract void glVertexPointer(
+int
+int
+int
+java.nio.Buffer)
+
+public abstract void glViewport(
+int
+int
+int
+int)
+
+________________CLASS________________
+
+
+public abstract interface class javax.microedition.khronos.opengles.GL10Ext extends java.lang.Object implements javax.microedition.khronos.opengles.GL
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int glQueryMatrixxOES(
+java.nio.IntBuffer
+java.nio.IntBuffer)
+
+public abstract int glQueryMatrixxOES(
+int[]
+int
+int[]
+int)
+
+________________CLASS________________
+
+
+public abstract interface class javax.microedition.khronos.opengles.GL11 extends java.lang.Object implements javax.microedition.khronos.opengles.GL10
+
+----------------FIELDS----------------
+
+public static final int GL_ACTIVE_TEXTURE
+
+public static final int GL_ADD_SIGNED
+
+public static final int GL_ALPHA_SCALE
+
+public static final int GL_ALPHA_TEST_FUNC
+
+public static final int GL_ALPHA_TEST_REF
+
+public static final int GL_ARRAY_BUFFER
+
+public static final int GL_ARRAY_BUFFER_BINDING
+
+public static final int GL_BLEND_DST
+
+public static final int GL_BLEND_SRC
+
+public static final int GL_BUFFER_ACCESS
+
+public static final int GL_BUFFER_SIZE
+
+public static final int GL_BUFFER_USAGE
+
+public static final int GL_CLIENT_ACTIVE_TEXTURE
+
+public static final int GL_CLIP_PLANE0
+
+public static final int GL_CLIP_PLANE1
+
+public static final int GL_CLIP_PLANE2
+
+public static final int GL_CLIP_PLANE3
+
+public static final int GL_CLIP_PLANE4
+
+public static final int GL_CLIP_PLANE5
+
+public static final int GL_COLOR_ARRAY_BUFFER_BINDING
+
+public static final int GL_COLOR_ARRAY_POINTER
+
+public static final int GL_COLOR_ARRAY_SIZE
+
+public static final int GL_COLOR_ARRAY_STRIDE
+
+public static final int GL_COLOR_ARRAY_TYPE
+
+public static final int GL_COLOR_CLEAR_VALUE
+
+public static final int GL_COLOR_WRITEMASK
+
+public static final int GL_COMBINE
+
+public static final int GL_COMBINE_ALPHA
+
+public static final int GL_COMBINE_RGB
+
+public static final int GL_CONSTANT
+
+public static final int GL_COORD_REPLACE_OES
+
+public static final int GL_CULL_FACE_MODE
+
+public static final int GL_CURRENT_COLOR
+
+public static final int GL_CURRENT_NORMAL
+
+public static final int GL_CURRENT_TEXTURE_COORDS
+
+public static final int GL_DEPTH_CLEAR_VALUE
+
+public static final int GL_DEPTH_FUNC
+
+public static final int GL_DEPTH_RANGE
+
+public static final int GL_DEPTH_WRITEMASK
+
+public static final int GL_DOT3_RGB
+
+public static final int GL_DOT3_RGBA
+
+public static final int GL_DYNAMIC_DRAW
+
+public static final int GL_ELEMENT_ARRAY_BUFFER
+
+public static final int GL_ELEMENT_ARRAY_BUFFER_BINDING
+
+public static final int GL_FRONT_FACE
+
+public static final int GL_GENERATE_MIPMAP
+
+public static final int GL_GENERATE_MIPMAP_HINT
+
+public static final int GL_INTERPOLATE
+
+public static final int GL_LINE_WIDTH
+
+public static final int GL_LOGIC_OP_MODE
+
+public static final int GL_MATRIX_MODE
+
+public static final int GL_MAX_CLIP_PLANES
+
+public static final int GL_MODELVIEW_MATRIX
+
+public static final int GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES
+
+public static final int GL_MODELVIEW_STACK_DEPTH
+
+public static final int GL_NORMAL_ARRAY_BUFFER_BINDING
+
+public static final int GL_NORMAL_ARRAY_POINTER
+
+public static final int GL_NORMAL_ARRAY_STRIDE
+
+public static final int GL_NORMAL_ARRAY_TYPE
+
+public static final int GL_OPERAND0_ALPHA
+
+public static final int GL_OPERAND0_RGB
+
+public static final int GL_OPERAND1_ALPHA
+
+public static final int GL_OPERAND1_RGB
+
+public static final int GL_OPERAND2_ALPHA
+
+public static final int GL_OPERAND2_RGB
+
+public static final int GL_POINT_DISTANCE_ATTENUATION
+
+public static final int GL_POINT_FADE_THRESHOLD_SIZE
+
+public static final int GL_POINT_SIZE
+
+public static final int GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES
+
+public static final int GL_POINT_SIZE_ARRAY_OES
+
+public static final int GL_POINT_SIZE_ARRAY_POINTER_OES
+
+public static final int GL_POINT_SIZE_ARRAY_STRIDE_OES
+
+public static final int GL_POINT_SIZE_ARRAY_TYPE_OES
+
+public static final int GL_POINT_SIZE_MAX
+
+public static final int GL_POINT_SIZE_MIN
+
+public static final int GL_POINT_SPRITE_OES
+
+public static final int GL_POLYGON_OFFSET_FACTOR
+
+public static final int GL_POLYGON_OFFSET_UNITS
+
+public static final int GL_PREVIOUS
+
+public static final int GL_PRIMARY_COLOR
+
+public static final int GL_PROJECTION_MATRIX
+
+public static final int GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES
+
+public static final int GL_PROJECTION_STACK_DEPTH
+
+public static final int GL_RGB_SCALE
+
+public static final int GL_SAMPLES
+
+public static final int GL_SAMPLE_BUFFERS
+
+public static final int GL_SAMPLE_COVERAGE_INVERT
+
+public static final int GL_SAMPLE_COVERAGE_VALUE
+
+public static final int GL_SCISSOR_BOX
+
+public static final int GL_SHADE_MODEL
+
+public static final int GL_SRC0_ALPHA
+
+public static final int GL_SRC0_RGB
+
+public static final int GL_SRC1_ALPHA
+
+public static final int GL_SRC1_RGB
+
+public static final int GL_SRC2_ALPHA
+
+public static final int GL_SRC2_RGB
+
+public static final int GL_STATIC_DRAW
+
+public static final int GL_STENCIL_CLEAR_VALUE
+
+public static final int GL_STENCIL_FAIL
+
+public static final int GL_STENCIL_FUNC
+
+public static final int GL_STENCIL_PASS_DEPTH_FAIL
+
+public static final int GL_STENCIL_PASS_DEPTH_PASS
+
+public static final int GL_STENCIL_REF
+
+public static final int GL_STENCIL_VALUE_MASK
+
+public static final int GL_STENCIL_WRITEMASK
+
+public static final int GL_SUBTRACT
+
+public static final int GL_TEXTURE_BINDING_2D
+
+public static final int GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING
+
+public static final int GL_TEXTURE_COORD_ARRAY_POINTER
+
+public static final int GL_TEXTURE_COORD_ARRAY_SIZE
+
+public static final int GL_TEXTURE_COORD_ARRAY_STRIDE
+
+public static final int GL_TEXTURE_COORD_ARRAY_TYPE
+
+public static final int GL_TEXTURE_MATRIX
+
+public static final int GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES
+
+public static final int GL_TEXTURE_STACK_DEPTH
+
+public static final int GL_VERTEX_ARRAY_BUFFER_BINDING
+
+public static final int GL_VERTEX_ARRAY_POINTER
+
+public static final int GL_VERTEX_ARRAY_SIZE
+
+public static final int GL_VERTEX_ARRAY_STRIDE
+
+public static final int GL_VERTEX_ARRAY_TYPE
+
+public static final int GL_VIEWPORT
+
+public static final int GL_WRITE_ONLY
+----------------METHODS----------------
+
+public abstract void glBindBuffer(
+int
+int)
+
+public abstract void glBufferData(
+int
+int
+java.nio.Buffer
+int)
+
+public abstract void glBufferSubData(
+int
+int
+int
+java.nio.Buffer)
+
+public abstract void glClipPlanef(
+int
+java.nio.FloatBuffer)
+
+public abstract void glClipPlanef(
+int
+float[]
+int)
+
+public abstract void glClipPlanex(
+int
+java.nio.IntBuffer)
+
+public abstract void glClipPlanex(
+int
+int[]
+int)
+
+public abstract void glColor4ub(
+byte
+byte
+byte
+byte)
+
+public abstract void glColorPointer(
+int
+int
+int
+int)
+
+public abstract void glDeleteBuffers(
+int
+java.nio.IntBuffer)
+
+public abstract void glDeleteBuffers(
+int
+int[]
+int)
+
+public abstract void glDrawElements(
+int
+int
+int
+int)
+
+public abstract void glGenBuffers(
+int
+java.nio.IntBuffer)
+
+public abstract void glGenBuffers(
+int
+int[]
+int)
+
+public abstract void glGetBooleanv(
+int
+java.nio.IntBuffer)
+
+public abstract void glGetBooleanv(
+int
+boolean[]
+int)
+
+public abstract void glGetBufferParameteriv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glGetBufferParameteriv(
+int
+int
+int[]
+int)
+
+public abstract void glGetClipPlanef(
+int
+java.nio.FloatBuffer)
+
+public abstract void glGetClipPlanef(
+int
+float[]
+int)
+
+public abstract void glGetClipPlanex(
+int
+java.nio.IntBuffer)
+
+public abstract void glGetClipPlanex(
+int
+int[]
+int)
+
+public abstract void glGetFixedv(
+int
+java.nio.IntBuffer)
+
+public abstract void glGetFixedv(
+int
+int[]
+int)
+
+public abstract void glGetFloatv(
+int
+java.nio.FloatBuffer)
+
+public abstract void glGetFloatv(
+int
+float[]
+int)
+
+public abstract void glGetLightfv(
+int
+int
+java.nio.FloatBuffer)
+
+public abstract void glGetLightfv(
+int
+int
+float[]
+int)
+
+public abstract void glGetLightxv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glGetLightxv(
+int
+int
+int[]
+int)
+
+public abstract void glGetMaterialfv(
+int
+int
+java.nio.FloatBuffer)
+
+public abstract void glGetMaterialfv(
+int
+int
+float[]
+int)
+
+public abstract void glGetMaterialxv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glGetMaterialxv(
+int
+int
+int[]
+int)
+
+public abstract void glGetPointerv(
+int
+java.nio.Buffer[])
+
+public abstract void glGetTexEnviv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glGetTexEnviv(
+int
+int
+int[]
+int)
+
+public abstract void glGetTexEnvxv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glGetTexEnvxv(
+int
+int
+int[]
+int)
+
+public abstract void glGetTexParameterfv(
+int
+int
+java.nio.FloatBuffer)
+
+public abstract void glGetTexParameterfv(
+int
+int
+float[]
+int)
+
+public abstract void glGetTexParameteriv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glGetTexParameteriv(
+int
+int
+int[]
+int)
+
+public abstract void glGetTexParameterxv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glGetTexParameterxv(
+int
+int
+int[]
+int)
+
+public abstract boolean glIsBuffer(
+int)
+
+public abstract boolean glIsEnabled(
+int)
+
+public abstract boolean glIsTexture(
+int)
+
+public abstract void glNormalPointer(
+int
+int
+int)
+
+public abstract void glPointParameterf(
+int
+float)
+
+public abstract void glPointParameterfv(
+int
+java.nio.FloatBuffer)
+
+public abstract void glPointParameterfv(
+int
+float[]
+int)
+
+public abstract void glPointParameterx(
+int
+int)
+
+public abstract void glPointParameterxv(
+int
+java.nio.IntBuffer)
+
+public abstract void glPointParameterxv(
+int
+int[]
+int)
+
+public abstract void glPointSizePointerOES(
+int
+int
+java.nio.Buffer)
+
+public abstract void glTexCoordPointer(
+int
+int
+int
+int)
+
+public abstract void glTexEnvi(
+int
+int
+int)
+
+public abstract void glTexEnviv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glTexEnviv(
+int
+int
+int[]
+int)
+
+public abstract void glTexParameterfv(
+int
+int
+java.nio.FloatBuffer)
+
+public abstract void glTexParameterfv(
+int
+int
+float[]
+int)
+
+public abstract void glTexParameteri(
+int
+int
+int)
+
+public abstract void glTexParameteriv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glTexParameteriv(
+int
+int
+int[]
+int)
+
+public abstract void glTexParameterxv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glTexParameterxv(
+int
+int
+int[]
+int)
+
+public abstract void glVertexPointer(
+int
+int
+int
+int)
+
+________________CLASS________________
+
+
+public abstract interface class javax.microedition.khronos.opengles.GL11Ext extends java.lang.Object implements javax.microedition.khronos.opengles.GL
+
+----------------FIELDS----------------
+
+public static final int GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES
+
+public static final int GL_MATRIX_INDEX_ARRAY_OES
+
+public static final int GL_MATRIX_INDEX_ARRAY_POINTER_OES
+
+public static final int GL_MATRIX_INDEX_ARRAY_SIZE_OES
+
+public static final int GL_MATRIX_INDEX_ARRAY_STRIDE_OES
+
+public static final int GL_MATRIX_INDEX_ARRAY_TYPE_OES
+
+public static final int GL_MATRIX_PALETTE_OES
+
+public static final int GL_MAX_PALETTE_MATRICES_OES
+
+public static final int GL_MAX_VERTEX_UNITS_OES
+
+public static final int GL_TEXTURE_CROP_RECT_OES
+
+public static final int GL_WEIGHT_ARRAY_BUFFER_BINDING_OES
+
+public static final int GL_WEIGHT_ARRAY_OES
+
+public static final int GL_WEIGHT_ARRAY_POINTER_OES
+
+public static final int GL_WEIGHT_ARRAY_SIZE_OES
+
+public static final int GL_WEIGHT_ARRAY_STRIDE_OES
+
+public static final int GL_WEIGHT_ARRAY_TYPE_OES
+----------------METHODS----------------
+
+public abstract void glCurrentPaletteMatrixOES(
+int)
+
+public abstract void glDrawTexfOES(
+float
+float
+float
+float
+float)
+
+public abstract void glDrawTexfvOES(
+java.nio.FloatBuffer)
+
+public abstract void glDrawTexfvOES(
+float[]
+int)
+
+public abstract void glDrawTexiOES(
+int
+int
+int
+int
+int)
+
+public abstract void glDrawTexivOES(
+java.nio.IntBuffer)
+
+public abstract void glDrawTexivOES(
+int[]
+int)
+
+public abstract void glDrawTexsOES(
+short
+short
+short
+short
+short)
+
+public abstract void glDrawTexsvOES(
+java.nio.ShortBuffer)
+
+public abstract void glDrawTexsvOES(
+short[]
+int)
+
+public abstract void glDrawTexxOES(
+int
+int
+int
+int
+int)
+
+public abstract void glDrawTexxvOES(
+java.nio.IntBuffer)
+
+public abstract void glDrawTexxvOES(
+int[]
+int)
+
+public abstract void glEnable(
+int)
+
+public abstract void glEnableClientState(
+int)
+
+public abstract void glLoadPaletteFromModelViewMatrixOES()
+
+public abstract void glMatrixIndexPointerOES(
+int
+int
+int
+int)
+
+public abstract void glMatrixIndexPointerOES(
+int
+int
+int
+java.nio.Buffer)
+
+public abstract void glTexParameterfv(
+int
+int
+float[]
+int)
+
+public abstract void glWeightPointerOES(
+int
+int
+int
+int)
+
+public abstract void glWeightPointerOES(
+int
+int
+int
+java.nio.Buffer)
+
+________________CLASS________________
+
+
+abstract class android.opengl.GLWrapperBase extends java.lang.Object implements javax.microedition.khronos.opengles.GL, javax.microedition.khronos.opengles.GL10, javax.microedition.khronos.opengles.GL10Ext, javax.microedition.khronos.opengles.GL11, javax.microedition.khronos.opengles.GL11Ext
+
+----------------FIELDS----------------
+
+protected javax.microedition.khronos.opengles.GL10 mgl
+
+protected javax.microedition.khronos.opengles.GL10Ext mgl10Ext
+
+protected javax.microedition.khronos.opengles.GL11 mgl11
+
+protected javax.microedition.khronos.opengles.GL11Ext mgl11Ext
+
+protected javax.microedition.khronos.opengles.GL11ExtensionPack mgl11ExtensionPack
+----------------METHODS----------------
+
+public void <init>(
+javax.microedition.khronos.opengles.GL)
+
+public void glBindBuffer(
+int
+int)
+
+public void glBindFramebufferOES(
+int
+int)
+
+public void glBindRenderbufferOES(
+int
+int)
+
+public void glBlendEquation(
+int)
+
+public void glBlendEquationSeparate(
+int
+int)
+
+public void glBlendFuncSeparate(
+int
+int
+int
+int)
+
+public void glBufferData(
+int
+int
+java.nio.Buffer
+int)
+
+public void glBufferSubData(
+int
+int
+int
+java.nio.Buffer)
+
+ int glCheckFramebufferStatusOES(
+int)
+
+public void glColor4ub(
+byte
+byte
+byte
+byte)
+
+public void glColorPointer(
+int
+int
+int
+int)
+
+public void glCompressedTexImage2D(
+int
+int
+int
+int
+int
+int
+int)
+
+public void glCurrentPaletteMatrixOES(
+int)
+
+public void glDeleteBuffers(
+int
+java.nio.IntBuffer)
+
+public void glDeleteBuffers(
+int
+int[]
+int)
+
+public void glDeleteFramebuffersOES(
+int
+java.nio.IntBuffer)
+
+public void glDeleteFramebuffersOES(
+int
+int[]
+int)
+
+public void glDeleteRenderbuffersOES(
+int
+java.nio.IntBuffer)
+
+public void glDeleteRenderbuffersOES(
+int
+int[]
+int)
+
+public void glDrawElements(
+int
+int
+int
+int)
+
+public void glFramebufferRenderbufferOES(
+int
+int
+int
+int)
+
+public void glFramebufferTexture2DOES(
+int
+int
+int
+int
+int)
+
+public void glGenBuffers(
+int
+java.nio.IntBuffer)
+
+public void glGenBuffers(
+int
+int[]
+int)
+
+public void glGenFramebuffersOES(
+int
+java.nio.IntBuffer)
+
+public void glGenFramebuffersOES(
+int
+int[]
+int)
+
+public void glGenRenderbuffersOES(
+int
+java.nio.IntBuffer)
+
+public void glGenRenderbuffersOES(
+int
+int[]
+int)
+
+public void glGenerateMipmapOES(
+int)
+
+public void glGetBooleanv(
+int
+java.nio.IntBuffer)
+
+public void glGetBooleanv(
+int
+boolean[]
+int)
+
+public void glGetBufferParameteriv(
+int
+int
+java.nio.IntBuffer)
+
+public void glGetBufferParameteriv(
+int
+int
+int[]
+int)
+
+public void glGetClipPlanef(
+int
+java.nio.FloatBuffer)
+
+public void glGetClipPlanef(
+int
+float[]
+int)
+
+public void glGetClipPlanex(
+int
+java.nio.IntBuffer)
+
+public void glGetClipPlanex(
+int
+int[]
+int)
+
+public void glGetFixedv(
+int
+java.nio.IntBuffer)
+
+public void glGetFixedv(
+int
+int[]
+int)
+
+public void glGetFloatv(
+int
+java.nio.FloatBuffer)
+
+public void glGetFloatv(
+int
+float[]
+int)
+
+public void glGetFramebufferAttachmentParameterivOES(
+int
+int
+int
+java.nio.IntBuffer)
+
+public void glGetFramebufferAttachmentParameterivOES(
+int
+int
+int
+int[]
+int)
+
+public void glGetLightfv(
+int
+int
+java.nio.FloatBuffer)
+
+public void glGetLightfv(
+int
+int
+float[]
+int)
+
+public void glGetLightxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glGetLightxv(
+int
+int
+int[]
+int)
+
+public void glGetMaterialfv(
+int
+int
+java.nio.FloatBuffer)
+
+public void glGetMaterialfv(
+int
+int
+float[]
+int)
+
+public void glGetMaterialxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glGetMaterialxv(
+int
+int
+int[]
+int)
+
+public void glGetPointerv(
+int
+java.nio.Buffer[])
+
+public void glGetRenderbufferParameterivOES(
+int
+int
+java.nio.IntBuffer)
+
+public void glGetRenderbufferParameterivOES(
+int
+int
+int[]
+int)
+
+public void glGetTexEnviv(
+int
+int
+java.nio.IntBuffer)
+
+public void glGetTexEnviv(
+int
+int
+int[]
+int)
+
+public void glGetTexEnvxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glGetTexEnvxv(
+int
+int
+int[]
+int)
+
+public void glGetTexGenfv(
+int
+int
+java.nio.FloatBuffer)
+
+public void glGetTexGenfv(
+int
+int
+float[]
+int)
+
+public void glGetTexGeniv(
+int
+int
+java.nio.IntBuffer)
+
+public void glGetTexGeniv(
+int
+int
+int[]
+int)
+
+public void glGetTexGenxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glGetTexGenxv(
+int
+int
+int[]
+int)
+
+public void glGetTexParameterfv(
+int
+int
+java.nio.FloatBuffer)
+
+public void glGetTexParameterfv(
+int
+int
+float[]
+int)
+
+public void glGetTexParameteriv(
+int
+int
+java.nio.IntBuffer)
+
+public void glGetTexParameteriv(
+int
+int
+int[]
+int)
+
+public void glGetTexParameterxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glGetTexParameterxv(
+int
+int
+int[]
+int)
+
+public boolean glIsBuffer(
+int)
+
+public boolean glIsEnabled(
+int)
+
+public boolean glIsFramebufferOES(
+int)
+
+public boolean glIsRenderbufferOES(
+int)
+
+public boolean glIsTexture(
+int)
+
+public void glLoadPaletteFromModelViewMatrixOES()
+
+public void glMatrixIndexPointerOES(
+int
+int
+int
+int)
+
+public void glMatrixIndexPointerOES(
+int
+int
+int
+java.nio.Buffer)
+
+public void glNormalPointer(
+int
+int
+int)
+
+public void glPointParameterf(
+int
+float)
+
+public void glPointParameterfv(
+int
+java.nio.FloatBuffer)
+
+public void glPointParameterfv(
+int
+float[]
+int)
+
+public void glPointParameterx(
+int
+int)
+
+public void glPointParameterxv(
+int
+java.nio.IntBuffer)
+
+public void glPointParameterxv(
+int
+int[]
+int)
+
+public void glPointSizePointerOES(
+int
+int
+java.nio.Buffer)
+
+public void glRenderbufferStorageOES(
+int
+int
+int
+int)
+
+public void glTexCoordPointer(
+int
+int
+int
+int)
+
+public void glTexEnvi(
+int
+int
+int)
+
+public void glTexEnviv(
+int
+int
+java.nio.IntBuffer)
+
+public void glTexEnviv(
+int
+int
+int[]
+int)
+
+public void glTexGenf(
+int
+int
+float)
+
+public void glTexGenfv(
+int
+int
+java.nio.FloatBuffer)
+
+public void glTexGenfv(
+int
+int
+float[]
+int)
+
+public void glTexGeni(
+int
+int
+int)
+
+public void glTexGeniv(
+int
+int
+java.nio.IntBuffer)
+
+public void glTexGeniv(
+int
+int
+int[]
+int)
+
+public void glTexGenx(
+int
+int
+int)
+
+public void glTexGenxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glTexGenxv(
+int
+int
+int[]
+int)
+
+public void glTexParameterfv(
+int
+int
+java.nio.FloatBuffer)
+
+public void glTexParameterfv(
+int
+int
+float[]
+int)
+
+public void glTexParameteri(
+int
+int
+int)
+
+public void glTexParameterxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glTexParameterxv(
+int
+int
+int[]
+int)
+
+public void glVertexPointer(
+int
+int
+int
+int)
+
+public void glWeightPointerOES(
+int
+int
+int
+int)
+
+public void glWeightPointerOES(
+int
+int
+int
+java.nio.Buffer)
+
+________________CLASS________________
+
+
+ class android.opengl.GLErrorWrapper extends android.opengl.GLWrapperBase
+
+----------------FIELDS----------------
+
+ boolean mCheckError
+
+ boolean mCheckThread
+
+ java.lang.Thread mOurThread
+----------------METHODS----------------
+
+public void <init>(
+javax.microedition.khronos.opengles.GL
+int)
+
+private void checkError()
+
+private void checkThread()
+
+public void glActiveTexture(
+int)
+
+public void glAlphaFunc(
+int
+float)
+
+public void glAlphaFuncx(
+int
+int)
+
+public void glBindTexture(
+int
+int)
+
+public void glBlendFunc(
+int
+int)
+
+public void glClear(
+int)
+
+public void glClearColor(
+float
+float
+float
+float)
+
+public void glClearColorx(
+int
+int
+int
+int)
+
+public void glClearDepthf(
+float)
+
+public void glClearDepthx(
+int)
+
+public void glClearStencil(
+int)
+
+public void glClientActiveTexture(
+int)
+
+public void glClipPlanef(
+int
+java.nio.FloatBuffer)
+
+public void glClipPlanef(
+int
+float[]
+int)
+
+public void glClipPlanex(
+int
+java.nio.IntBuffer)
+
+public void glClipPlanex(
+int
+int[]
+int)
+
+public void glColor4f(
+float
+float
+float
+float)
+
+public void glColor4x(
+int
+int
+int
+int)
+
+public void glColorMask(
+boolean
+boolean
+boolean
+boolean)
+
+public void glColorPointer(
+int
+int
+int
+java.nio.Buffer)
+
+public void glCompressedTexImage2D(
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public void glCompressedTexSubImage2D(
+int
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public void glCopyTexImage2D(
+int
+int
+int
+int
+int
+int
+int
+int)
+
+public void glCopyTexSubImage2D(
+int
+int
+int
+int
+int
+int
+int
+int)
+
+public void glCullFace(
+int)
+
+public void glDeleteTextures(
+int
+java.nio.IntBuffer)
+
+public void glDeleteTextures(
+int
+int[]
+int)
+
+public void glDepthFunc(
+int)
+
+public void glDepthMask(
+boolean)
+
+public void glDepthRangef(
+float
+float)
+
+public void glDepthRangex(
+int
+int)
+
+public void glDisable(
+int)
+
+public void glDisableClientState(
+int)
+
+public void glDrawArrays(
+int
+int
+int)
+
+public void glDrawElements(
+int
+int
+int
+java.nio.Buffer)
+
+public void glDrawTexfOES(
+float
+float
+float
+float
+float)
+
+public void glDrawTexfvOES(
+java.nio.FloatBuffer)
+
+public void glDrawTexfvOES(
+float[]
+int)
+
+public void glDrawTexiOES(
+int
+int
+int
+int
+int)
+
+public void glDrawTexivOES(
+java.nio.IntBuffer)
+
+public void glDrawTexivOES(
+int[]
+int)
+
+public void glDrawTexsOES(
+short
+short
+short
+short
+short)
+
+public void glDrawTexsvOES(
+java.nio.ShortBuffer)
+
+public void glDrawTexsvOES(
+short[]
+int)
+
+public void glDrawTexxOES(
+int
+int
+int
+int
+int)
+
+public void glDrawTexxvOES(
+java.nio.IntBuffer)
+
+public void glDrawTexxvOES(
+int[]
+int)
+
+public void glEnable(
+int)
+
+public void glEnableClientState(
+int)
+
+public void glFinish()
+
+public void glFlush()
+
+public void glFogf(
+int
+float)
+
+public void glFogfv(
+int
+java.nio.FloatBuffer)
+
+public void glFogfv(
+int
+float[]
+int)
+
+public void glFogx(
+int
+int)
+
+public void glFogxv(
+int
+java.nio.IntBuffer)
+
+public void glFogxv(
+int
+int[]
+int)
+
+public void glFrontFace(
+int)
+
+public void glFrustumf(
+float
+float
+float
+float
+float
+float)
+
+public void glFrustumx(
+int
+int
+int
+int
+int
+int)
+
+public void glGenTextures(
+int
+java.nio.IntBuffer)
+
+public void glGenTextures(
+int
+int[]
+int)
+
+public int glGetError()
+
+public void glGetIntegerv(
+int
+java.nio.IntBuffer)
+
+public void glGetIntegerv(
+int
+int[]
+int)
+
+public java.lang.String glGetString(
+int)
+
+public void glHint(
+int
+int)
+
+public void glLightModelf(
+int
+float)
+
+public void glLightModelfv(
+int
+java.nio.FloatBuffer)
+
+public void glLightModelfv(
+int
+float[]
+int)
+
+public void glLightModelx(
+int
+int)
+
+public void glLightModelxv(
+int
+java.nio.IntBuffer)
+
+public void glLightModelxv(
+int
+int[]
+int)
+
+public void glLightf(
+int
+int
+float)
+
+public void glLightfv(
+int
+int
+java.nio.FloatBuffer)
+
+public void glLightfv(
+int
+int
+float[]
+int)
+
+public void glLightx(
+int
+int
+int)
+
+public void glLightxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glLightxv(
+int
+int
+int[]
+int)
+
+public void glLineWidth(
+float)
+
+public void glLineWidthx(
+int)
+
+public void glLoadIdentity()
+
+public void glLoadMatrixf(
+java.nio.FloatBuffer)
+
+public void glLoadMatrixf(
+float[]
+int)
+
+public void glLoadMatrixx(
+java.nio.IntBuffer)
+
+public void glLoadMatrixx(
+int[]
+int)
+
+public void glLogicOp(
+int)
+
+public void glMaterialf(
+int
+int
+float)
+
+public void glMaterialfv(
+int
+int
+java.nio.FloatBuffer)
+
+public void glMaterialfv(
+int
+int
+float[]
+int)
+
+public void glMaterialx(
+int
+int
+int)
+
+public void glMaterialxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glMaterialxv(
+int
+int
+int[]
+int)
+
+public void glMatrixMode(
+int)
+
+public void glMultMatrixf(
+java.nio.FloatBuffer)
+
+public void glMultMatrixf(
+float[]
+int)
+
+public void glMultMatrixx(
+java.nio.IntBuffer)
+
+public void glMultMatrixx(
+int[]
+int)
+
+public void glMultiTexCoord4f(
+int
+float
+float
+float
+float)
+
+public void glMultiTexCoord4x(
+int
+int
+int
+int
+int)
+
+public void glNormal3f(
+float
+float
+float)
+
+public void glNormal3x(
+int
+int
+int)
+
+public void glNormalPointer(
+int
+int
+java.nio.Buffer)
+
+public void glOrthof(
+float
+float
+float
+float
+float
+float)
+
+public void glOrthox(
+int
+int
+int
+int
+int
+int)
+
+public void glPixelStorei(
+int
+int)
+
+public void glPointSize(
+float)
+
+public void glPointSizex(
+int)
+
+public void glPolygonOffset(
+float
+float)
+
+public void glPolygonOffsetx(
+int
+int)
+
+public void glPopMatrix()
+
+public void glPushMatrix()
+
+public int glQueryMatrixxOES(
+java.nio.IntBuffer
+java.nio.IntBuffer)
+
+public int glQueryMatrixxOES(
+int[]
+int
+int[]
+int)
+
+public void glReadPixels(
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public void glRotatef(
+float
+float
+float
+float)
+
+public void glRotatex(
+int
+int
+int
+int)
+
+public void glSampleCoverage(
+float
+boolean)
+
+public void glSampleCoveragex(
+int
+boolean)
+
+public void glScalef(
+float
+float
+float)
+
+public void glScalex(
+int
+int
+int)
+
+public void glScissor(
+int
+int
+int
+int)
+
+public void glShadeModel(
+int)
+
+public void glStencilFunc(
+int
+int
+int)
+
+public void glStencilMask(
+int)
+
+public void glStencilOp(
+int
+int
+int)
+
+public void glTexCoordPointer(
+int
+int
+int
+java.nio.Buffer)
+
+public void glTexEnvf(
+int
+int
+float)
+
+public void glTexEnvfv(
+int
+int
+java.nio.FloatBuffer)
+
+public void glTexEnvfv(
+int
+int
+float[]
+int)
+
+public void glTexEnvx(
+int
+int
+int)
+
+public void glTexEnvxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glTexEnvxv(
+int
+int
+int[]
+int)
+
+public void glTexImage2D(
+int
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public void glTexParameterf(
+int
+int
+float)
+
+public void glTexParameteriv(
+int
+int
+java.nio.IntBuffer)
+
+public void glTexParameteriv(
+int
+int
+int[]
+int)
+
+public void glTexParameterx(
+int
+int
+int)
+
+public void glTexSubImage2D(
+int
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public void glTranslatef(
+float
+float
+float)
+
+public void glTranslatex(
+int
+int
+int)
+
+public void glVertexPointer(
+int
+int
+int
+java.nio.Buffer)
+
+public void glViewport(
+int
+int
+int
+int)
+
+________________CLASS________________
+
+
+public class android.opengl.GLException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private final int mError
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+int
+java.lang.String)
+
+private static java.lang.String getErrorString(
+int)
+
+ int getError()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =PointerInfo )
+@dalvik.annotation.EnclosingClass (value =Landroid/opengl/GLLogWrapper; )
+ class android.opengl.GLLogWrapper$PointerInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.nio.Buffer mPointer
+
+public int mSize
+
+public int mStride
+
+public java.nio.ByteBuffer mTempByteBuffer
+
+public int mType
+
+final android.opengl.GLLogWrapper this$0
+----------------METHODS----------------
+
+public void <init>(
+android.opengl.GLLogWrapper
+int
+int
+int
+java.nio.Buffer)
+
+public void bindByteBuffer()
+
+public int getStride()
+
+public int sizeof(
+int)
+
+public void unbindByteBuffer()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/opengl/GLLogWrapper$PointerInfo; )
+ class android.opengl.GLLogWrapper extends android.opengl.GLWrapperBase
+
+----------------FIELDS----------------
+
+private static final int FORMAT_FIXED
+
+private static final int FORMAT_FLOAT
+
+private static final int FORMAT_INT
+
+private int mArgCount
+
+ boolean mColorArrayEnabled
+
+private android.opengl.GLLogWrapper$PointerInfo mColorPointer
+
+private java.io.Writer mLog
+
+private boolean mLogArgumentNames
+
+ boolean mNormalArrayEnabled
+
+private android.opengl.GLLogWrapper$PointerInfo mNormalPointer
+
+ java.lang.StringBuilder mStringBuilder
+
+private android.opengl.GLLogWrapper$PointerInfo mTexCoordPointer
+
+ boolean mTextureCoordArrayEnabled
+
+ boolean mVertexArrayEnabled
+
+private android.opengl.GLLogWrapper$PointerInfo mVertexPointer
+----------------METHODS----------------
+
+public void <init>(
+javax.microedition.khronos.opengles.GL
+java.io.Writer
+boolean)
+
+static java.nio.ByteBuffer access$000(
+android.opengl.GLLogWrapper
+int
+java.nio.Buffer)
+
+private void arg(
+java.lang.String
+float)
+
+private void arg(
+java.lang.String
+int)
+
+private void arg(
+java.lang.String
+int
+java.nio.FloatBuffer)
+
+private void arg(
+java.lang.String
+int
+java.nio.IntBuffer)
+
+private void arg(
+java.lang.String
+int
+java.nio.ShortBuffer)
+
+private void arg(
+java.lang.String
+int
+float[]
+int)
+
+private void arg(
+java.lang.String
+int
+int[]
+int)
+
+private void arg(
+java.lang.String
+int
+short[]
+int)
+
+private void arg(
+java.lang.String
+java.lang.String)
+
+private void arg(
+java.lang.String
+boolean)
+
+private void argPointer(
+int
+int
+int
+java.nio.Buffer)
+
+private void begin(
+java.lang.String)
+
+private void bindArrays()
+
+private void checkError()
+
+private void doArrayElement(
+java.lang.StringBuilder
+boolean
+java.lang.String
+android.opengl.GLLogWrapper$PointerInfo
+int)
+
+private void doElement(
+java.lang.StringBuilder
+int
+int)
+
+private void end()
+
+private void endLogIndices()
+
+private void flush()
+
+private void formattedAppend(
+java.lang.StringBuilder
+int
+int)
+
+private java.lang.String getBeginMode(
+int)
+
+private java.lang.String getCap(
+int)
+
+private java.lang.String getClearBufferMask(
+int)
+
+private java.lang.String getClientState(
+int)
+
+public static java.lang.String getErrorString(
+int)
+
+private java.lang.String getFaceName(
+int)
+
+private java.lang.String getFactor(
+int)
+
+private java.lang.String getFogPName(
+int)
+
+private int getFogParamCount(
+int)
+
+private static java.lang.String getHex(
+int)
+
+private java.lang.String getHintMode(
+int)
+
+private java.lang.String getHintTarget(
+int)
+
+private java.lang.String getIndexType(
+int)
+
+private int getIntegerStateFormat(
+int)
+
+private java.lang.String getIntegerStateName(
+int)
+
+private int getIntegerStateSize(
+int)
+
+private java.lang.String getLightModelPName(
+int)
+
+private int getLightModelParamCount(
+int)
+
+private java.lang.String getLightName(
+int)
+
+private java.lang.String getLightPName(
+int)
+
+private int getLightParamCount(
+int)
+
+private java.lang.String getMaterialPName(
+int)
+
+private int getMaterialParamCount(
+int)
+
+private java.lang.String getMatrixMode(
+int)
+
+private java.lang.String getPointerTypeName(
+int)
+
+private java.lang.String getShadeModel(
+int)
+
+private java.lang.String getTextureEnvPName(
+int)
+
+private int getTextureEnvParamCount(
+int)
+
+private java.lang.String getTextureEnvParamName(
+float)
+
+private java.lang.String getTextureEnvTarget(
+int)
+
+private java.lang.String getTexturePName(
+int)
+
+private java.lang.String getTextureParamName(
+float)
+
+private java.lang.String getTextureTarget(
+int)
+
+private void log(
+java.lang.String)
+
+private void logLine(
+java.lang.String)
+
+private void returns(
+int)
+
+private void returns(
+java.lang.String)
+
+private void startLogIndices()
+
+private java.nio.ByteBuffer toByteBuffer(
+int
+java.nio.Buffer)
+
+private char[] toCharIndices(
+int
+int
+java.nio.Buffer)
+
+private java.lang.String toString(
+int
+int
+java.nio.IntBuffer)
+
+private java.lang.String toString(
+int
+int
+int[]
+int)
+
+private java.lang.String toString(
+int
+java.nio.FloatBuffer)
+
+private java.lang.String toString(
+int
+java.nio.ShortBuffer)
+
+private java.lang.String toString(
+int
+float[]
+int)
+
+private java.lang.String toString(
+int
+short[]
+int)
+
+private void unbindArrays()
+
+public void glActiveTexture(
+int)
+
+public void glAlphaFunc(
+int
+float)
+
+public void glAlphaFuncx(
+int
+int)
+
+public void glBindBuffer(
+int
+int)
+
+public void glBindTexture(
+int
+int)
+
+public void glBlendFunc(
+int
+int)
+
+public void glBufferData(
+int
+int
+java.nio.Buffer
+int)
+
+public void glBufferSubData(
+int
+int
+int
+java.nio.Buffer)
+
+public void glClear(
+int)
+
+public void glClearColor(
+float
+float
+float
+float)
+
+public void glClearColorx(
+int
+int
+int
+int)
+
+public void glClearDepthf(
+float)
+
+public void glClearDepthx(
+int)
+
+public void glClearStencil(
+int)
+
+public void glClientActiveTexture(
+int)
+
+public void glClipPlanef(
+int
+java.nio.FloatBuffer)
+
+public void glClipPlanef(
+int
+float[]
+int)
+
+public void glClipPlanex(
+int
+java.nio.IntBuffer)
+
+public void glClipPlanex(
+int
+int[]
+int)
+
+public void glColor4f(
+float
+float
+float
+float)
+
+public void glColor4ub(
+byte
+byte
+byte
+byte)
+
+public void glColor4x(
+int
+int
+int
+int)
+
+public void glColorMask(
+boolean
+boolean
+boolean
+boolean)
+
+public void glColorPointer(
+int
+int
+int
+java.nio.Buffer)
+
+public void glCompressedTexImage2D(
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public void glCompressedTexSubImage2D(
+int
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public void glCopyTexImage2D(
+int
+int
+int
+int
+int
+int
+int
+int)
+
+public void glCopyTexSubImage2D(
+int
+int
+int
+int
+int
+int
+int
+int)
+
+public void glCullFace(
+int)
+
+public void glDeleteBuffers(
+int
+java.nio.IntBuffer)
+
+public void glDeleteBuffers(
+int
+int[]
+int)
+
+public void glDeleteTextures(
+int
+java.nio.IntBuffer)
+
+public void glDeleteTextures(
+int
+int[]
+int)
+
+public void glDepthFunc(
+int)
+
+public void glDepthMask(
+boolean)
+
+public void glDepthRangef(
+float
+float)
+
+public void glDepthRangex(
+int
+int)
+
+public void glDisable(
+int)
+
+public void glDisableClientState(
+int)
+
+public void glDrawArrays(
+int
+int
+int)
+
+public void glDrawElements(
+int
+int
+int
+java.nio.Buffer)
+
+public void glDrawTexfOES(
+float
+float
+float
+float
+float)
+
+public void glDrawTexfvOES(
+java.nio.FloatBuffer)
+
+public void glDrawTexfvOES(
+float[]
+int)
+
+public void glDrawTexiOES(
+int
+int
+int
+int
+int)
+
+public void glDrawTexivOES(
+java.nio.IntBuffer)
+
+public void glDrawTexivOES(
+int[]
+int)
+
+public void glDrawTexsOES(
+short
+short
+short
+short
+short)
+
+public void glDrawTexsvOES(
+java.nio.ShortBuffer)
+
+public void glDrawTexsvOES(
+short[]
+int)
+
+public void glDrawTexxOES(
+int
+int
+int
+int
+int)
+
+public void glDrawTexxvOES(
+java.nio.IntBuffer)
+
+public void glDrawTexxvOES(
+int[]
+int)
+
+public void glEnable(
+int)
+
+public void glEnableClientState(
+int)
+
+public void glFinish()
+
+public void glFlush()
+
+public void glFogf(
+int
+float)
+
+public void glFogfv(
+int
+java.nio.FloatBuffer)
+
+public void glFogfv(
+int
+float[]
+int)
+
+public void glFogx(
+int
+int)
+
+public void glFogxv(
+int
+java.nio.IntBuffer)
+
+public void glFogxv(
+int
+int[]
+int)
+
+public void glFrontFace(
+int)
+
+public void glFrustumf(
+float
+float
+float
+float
+float
+float)
+
+public void glFrustumx(
+int
+int
+int
+int
+int
+int)
+
+public void glGenBuffers(
+int
+java.nio.IntBuffer)
+
+public void glGenBuffers(
+int
+int[]
+int)
+
+public void glGenTextures(
+int
+java.nio.IntBuffer)
+
+public void glGenTextures(
+int
+int[]
+int)
+
+public void glGetBooleanv(
+int
+java.nio.IntBuffer)
+
+public void glGetBooleanv(
+int
+boolean[]
+int)
+
+public void glGetBufferParameteriv(
+int
+int
+java.nio.IntBuffer)
+
+public void glGetBufferParameteriv(
+int
+int
+int[]
+int)
+
+public void glGetClipPlanef(
+int
+java.nio.FloatBuffer)
+
+public void glGetClipPlanef(
+int
+float[]
+int)
+
+public void glGetClipPlanex(
+int
+java.nio.IntBuffer)
+
+public void glGetClipPlanex(
+int
+int[]
+int)
+
+public int glGetError()
+
+public void glGetFixedv(
+int
+java.nio.IntBuffer)
+
+public void glGetFixedv(
+int
+int[]
+int)
+
+public void glGetFloatv(
+int
+java.nio.FloatBuffer)
+
+public void glGetFloatv(
+int
+float[]
+int)
+
+public void glGetIntegerv(
+int
+java.nio.IntBuffer)
+
+public void glGetIntegerv(
+int
+int[]
+int)
+
+public void glGetLightfv(
+int
+int
+java.nio.FloatBuffer)
+
+public void glGetLightfv(
+int
+int
+float[]
+int)
+
+public void glGetLightxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glGetLightxv(
+int
+int
+int[]
+int)
+
+public void glGetMaterialfv(
+int
+int
+java.nio.FloatBuffer)
+
+public void glGetMaterialfv(
+int
+int
+float[]
+int)
+
+public void glGetMaterialxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glGetMaterialxv(
+int
+int
+int[]
+int)
+
+public java.lang.String glGetString(
+int)
+
+public void glGetTexEnviv(
+int
+int
+java.nio.IntBuffer)
+
+public void glGetTexEnviv(
+int
+int
+int[]
+int)
+
+public void glGetTexEnvxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glGetTexEnvxv(
+int
+int
+int[]
+int)
+
+public void glGetTexParameterfv(
+int
+int
+java.nio.FloatBuffer)
+
+public void glGetTexParameterfv(
+int
+int
+float[]
+int)
+
+public void glGetTexParameteriv(
+int
+int
+java.nio.IntBuffer)
+
+public void glGetTexParameteriv(
+int
+int
+int[]
+int)
+
+public void glGetTexParameterxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glGetTexParameterxv(
+int
+int
+int[]
+int)
+
+public void glHint(
+int
+int)
+
+public boolean glIsBuffer(
+int)
+
+public boolean glIsEnabled(
+int)
+
+public boolean glIsTexture(
+int)
+
+public void glLightModelf(
+int
+float)
+
+public void glLightModelfv(
+int
+java.nio.FloatBuffer)
+
+public void glLightModelfv(
+int
+float[]
+int)
+
+public void glLightModelx(
+int
+int)
+
+public void glLightModelxv(
+int
+java.nio.IntBuffer)
+
+public void glLightModelxv(
+int
+int[]
+int)
+
+public void glLightf(
+int
+int
+float)
+
+public void glLightfv(
+int
+int
+java.nio.FloatBuffer)
+
+public void glLightfv(
+int
+int
+float[]
+int)
+
+public void glLightx(
+int
+int
+int)
+
+public void glLightxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glLightxv(
+int
+int
+int[]
+int)
+
+public void glLineWidth(
+float)
+
+public void glLineWidthx(
+int)
+
+public void glLoadIdentity()
+
+public void glLoadMatrixf(
+java.nio.FloatBuffer)
+
+public void glLoadMatrixf(
+float[]
+int)
+
+public void glLoadMatrixx(
+java.nio.IntBuffer)
+
+public void glLoadMatrixx(
+int[]
+int)
+
+public void glLogicOp(
+int)
+
+public void glMaterialf(
+int
+int
+float)
+
+public void glMaterialfv(
+int
+int
+java.nio.FloatBuffer)
+
+public void glMaterialfv(
+int
+int
+float[]
+int)
+
+public void glMaterialx(
+int
+int
+int)
+
+public void glMaterialxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glMaterialxv(
+int
+int
+int[]
+int)
+
+public void glMatrixMode(
+int)
+
+public void glMultMatrixf(
+java.nio.FloatBuffer)
+
+public void glMultMatrixf(
+float[]
+int)
+
+public void glMultMatrixx(
+java.nio.IntBuffer)
+
+public void glMultMatrixx(
+int[]
+int)
+
+public void glMultiTexCoord4f(
+int
+float
+float
+float
+float)
+
+public void glMultiTexCoord4x(
+int
+int
+int
+int
+int)
+
+public void glNormal3f(
+float
+float
+float)
+
+public void glNormal3x(
+int
+int
+int)
+
+public void glNormalPointer(
+int
+int
+java.nio.Buffer)
+
+public void glOrthof(
+float
+float
+float
+float
+float
+float)
+
+public void glOrthox(
+int
+int
+int
+int
+int
+int)
+
+public void glPixelStorei(
+int
+int)
+
+public void glPointParameterf(
+int
+float)
+
+public void glPointParameterfv(
+int
+java.nio.FloatBuffer)
+
+public void glPointParameterfv(
+int
+float[]
+int)
+
+public void glPointParameterx(
+int
+int)
+
+public void glPointParameterxv(
+int
+java.nio.IntBuffer)
+
+public void glPointParameterxv(
+int
+int[]
+int)
+
+public void glPointSize(
+float)
+
+public void glPointSizePointerOES(
+int
+int
+java.nio.Buffer)
+
+public void glPointSizex(
+int)
+
+public void glPolygonOffset(
+float
+float)
+
+public void glPolygonOffsetx(
+int
+int)
+
+public void glPopMatrix()
+
+public void glPushMatrix()
+
+public int glQueryMatrixxOES(
+java.nio.IntBuffer
+java.nio.IntBuffer)
+
+public int glQueryMatrixxOES(
+int[]
+int
+int[]
+int)
+
+public void glReadPixels(
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public void glRotatef(
+float
+float
+float
+float)
+
+public void glRotatex(
+int
+int
+int
+int)
+
+public void glSampleCoverage(
+float
+boolean)
+
+public void glSampleCoveragex(
+int
+boolean)
+
+public void glScalef(
+float
+float
+float)
+
+public void glScalex(
+int
+int
+int)
+
+public void glScissor(
+int
+int
+int
+int)
+
+public void glShadeModel(
+int)
+
+public void glStencilFunc(
+int
+int
+int)
+
+public void glStencilMask(
+int)
+
+public void glStencilOp(
+int
+int
+int)
+
+public void glTexCoordPointer(
+int
+int
+int
+java.nio.Buffer)
+
+public void glTexEnvf(
+int
+int
+float)
+
+public void glTexEnvfv(
+int
+int
+java.nio.FloatBuffer)
+
+public void glTexEnvfv(
+int
+int
+float[]
+int)
+
+public void glTexEnvi(
+int
+int
+int)
+
+public void glTexEnviv(
+int
+int
+java.nio.IntBuffer)
+
+public void glTexEnviv(
+int
+int
+int[]
+int)
+
+public void glTexEnvx(
+int
+int
+int)
+
+public void glTexEnvxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glTexEnvxv(
+int
+int
+int[]
+int)
+
+public void glTexImage2D(
+int
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public void glTexParameterf(
+int
+int
+float)
+
+public void glTexParameterfv(
+int
+int
+java.nio.FloatBuffer)
+
+public void glTexParameterfv(
+int
+int
+float[]
+int)
+
+public void glTexParameteri(
+int
+int
+int)
+
+public void glTexParameteriv(
+int
+int
+java.nio.IntBuffer)
+
+public void glTexParameteriv(
+int
+int
+int[]
+int)
+
+public void glTexParameterx(
+int
+int
+int)
+
+public void glTexParameterxv(
+int
+int
+java.nio.IntBuffer)
+
+public void glTexParameterxv(
+int
+int
+int[]
+int)
+
+public void glTexSubImage2D(
+int
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public void glTranslatef(
+float
+float
+float)
+
+public void glTranslatex(
+int
+int
+int)
+
+public void glVertexPointer(
+int
+int
+int
+java.nio.Buffer)
+
+public void glViewport(
+int
+int
+int
+int)
+
+________________CLASS________________
+
+
+public class android.opengl.GLU extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String gluErrorString(
+int)
+
+public static void gluLookAt(
+javax.microedition.khronos.opengles.GL10
+float
+float
+float
+float
+float
+float
+float
+float
+float)
+
+public static void gluOrtho2D(
+javax.microedition.khronos.opengles.GL10
+float
+float
+float
+float)
+
+public static void gluPerspective(
+javax.microedition.khronos.opengles.GL10
+float
+float
+float
+float)
+
+public static int gluProject(
+float
+float
+float
+float[]
+int
+float[]
+int
+int[]
+int
+float[]
+int)
+
+public static int gluUnProject(
+float
+float
+float
+float[]
+int
+float[]
+int
+int[]
+int
+float[]
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/opengl/GLUtils; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.opengl.GLUtils$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$android$graphics$Bitmap$Config
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/opengl/GLUtils$1; )
+public final class android.opengl.GLUtils extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static int getInternalFormat(
+android.graphics.Bitmap)
+
+public static int getType(
+android.graphics.Bitmap)
+
+private static native void nativeClassInit()
+
+private static native int native_texImage2D(
+int
+int
+int
+android.graphics.Bitmap
+int
+int)
+
+private static native int native_texSubImage2D(
+int
+int
+int
+int
+android.graphics.Bitmap
+int
+int)
+
+public static void texImage2D(
+int
+int
+int
+android.graphics.Bitmap
+int)
+
+public static void texImage2D(
+int
+int
+int
+android.graphics.Bitmap
+int
+int)
+
+public static void texImage2D(
+int
+int
+android.graphics.Bitmap
+int)
+
+public static void texSubImage2D(
+int
+int
+int
+int
+android.graphics.Bitmap)
+
+public static void texSubImage2D(
+int
+int
+int
+int
+android.graphics.Bitmap
+int
+int)
+
+________________CLASS________________
+
+
+public class android.opengl.Group extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/opengl/MaterialIndices;>; )
+private java.util.List materialIndices
+
+private java.lang.String name
+
+private android.opengl.Object3D parent
+----------------METHODS----------------
+
+public void <init>(
+android.opengl.Object3D)
+
+public void draw(
+javax.microedition.khronos.opengles.GL10)
+
+public java.lang.String getName()
+
+public int getNumTriangles()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void load(
+java.io.DataInputStream)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class android.opengl.Material extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static float[] black
+
+private float d
+
+private int illum
+
+private float[] ka
+
+private float[] kd
+
+private float[] ks
+
+private java.lang.String map_kd
+
+private java.lang.String name
+
+private float ns
+
+private android.opengl.Object3D parent
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.opengl.Object3D)
+
+public java.lang.String getMap_Kd()
+
+public java.lang.String getName()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void load(
+java.io.DataInputStream)
+
+public void setMaterialParameters(
+javax.microedition.khronos.opengles.GL10)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+ class android.opengl.MaterialIndices extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.nio.ShortBuffer indexBuffer
+
+private android.opengl.Material material
+----------------METHODS----------------
+
+public void <init>(
+android.opengl.Material
+java.nio.ShortBuffer)
+
+public java.nio.ShortBuffer getIndexBuffer()
+
+public android.opengl.Material getMaterial()
+
+________________CLASS________________
+
+
+public class android.opengl.Matrix extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static void frustumM(
+float[]
+int
+float
+float
+float
+float
+float
+float)
+
+public static boolean invertM(
+float[]
+int
+float[]
+int)
+
+public static float length(
+float
+float
+float)
+
+public static native void multiplyMM(
+float[]
+int
+float[]
+int
+float[]
+int)
+
+public static native void multiplyMV(
+float[]
+int
+float[]
+int
+float[]
+int)
+
+public static void orthoM(
+float[]
+int
+float
+float
+float
+float
+float
+float)
+
+public static void rotateM(
+float[]
+int
+float
+float
+float
+float)
+
+public static void rotateM(
+float[]
+int
+float[]
+int
+float
+float
+float
+float)
+
+public static void scaleM(
+float[]
+int
+float
+float
+float)
+
+public static void scaleM(
+float[]
+int
+float[]
+int
+float
+float
+float)
+
+public static void setIdentityM(
+float[]
+int)
+
+public static void setRotateEulerM(
+float[]
+int
+float
+float
+float)
+
+public static void setRotateM(
+float[]
+int
+float
+float
+float
+float)
+
+public static void translateM(
+float[]
+int
+float
+float
+float)
+
+public static void translateM(
+float[]
+int
+float[]
+int
+float
+float
+float)
+
+public static void transposeM(
+float[]
+int
+float[]
+int)
+
+________________CLASS________________
+
+
+public abstract class android.opengl.Object3D extends java.lang.Object
+
+----------------FIELDS----------------
+
+private float mBoundsMaxX
+
+private float mBoundsMaxY
+
+private float mBoundsMaxZ
+
+private float mBoundsMinX
+
+private float mBoundsMinY
+
+private float mBoundsMinZ
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Landroid/opengl/Group;>; )
+private java.util.Map mGroups
+
+private boolean mHasTexcoords
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Landroid/opengl/Material;>; )
+private java.util.Map mMaterials
+
+private java.nio.IntBuffer mNormalBuffer
+
+private java.nio.IntBuffer mTexcoordBuffer
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Landroid/opengl/Texture;>; )
+private java.util.Map mTextures
+
+private java.nio.IntBuffer mVertexBuffer
+----------------METHODS----------------
+
+public void <init>()
+
+private void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void verifyByte(
+java.io.DataInputStream
+int)
+
+public void draw(
+javax.microedition.khronos.opengles.GL10)
+
+public float getBoundsMaxX()
+
+public float getBoundsMaxY()
+
+public float getBoundsMaxZ()
+
+public float getBoundsMinX()
+
+public float getBoundsMinY()
+
+public float getBoundsMinZ()
+
+public android.opengl.Material getMaterial(
+java.lang.String)
+
+public java.nio.IntBuffer getNormalBuffer()
+
+public int getNumTriangles()
+
+public java.nio.IntBuffer getTexcoordBuffer()
+
+public android.opengl.Texture getTexture(
+java.lang.String)
+
+public java.nio.IntBuffer getVertexBuffer()
+
+public boolean hasTexcoords()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void load(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void loadTexture(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.io.InputStream readFile(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.opengl.Texture extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int bpp
+
+private java.nio.ByteBuffer data
+
+private int height
+
+private int name
+
+private int width
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.InputStream)
+
+private int loadTexture(
+javax.microedition.khronos.opengles.GL10
+int
+int
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int readInt16(
+java.io.InputStream)
+
+public void setTextureParameters(
+javax.microedition.khronos.opengles.GL10)
+
+________________CLASS________________
+
+
+public class android.opengl.Visibility extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static native void computeBoundingSphere(
+float[]
+int
+int
+float[]
+int)
+
+public static native int frustumCullSpheres(
+float[]
+int
+float[]
+int
+int
+int[]
+int
+int)
+
+public static native int visibilityTest(
+float[]
+int
+float[]
+int
+char[]
+int
+int)
+
+________________CLASS________________
+
+
+public class android.os.AsyncResult extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.Throwable exception
+
+public java.lang.Object result
+
+public java.lang.Object userObj
+----------------METHODS----------------
+
+public void <init>(
+java.lang.Object
+java.lang.Object
+java.lang.Throwable)
+
+public static android.os.AsyncResult forMessage(
+android.os.Message)
+
+public static android.os.AsyncResult forMessage(
+android.os.Message
+java.lang.Object
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class android.os.BadParcelableException extends android.util.AndroidRuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.Exception)
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.os.Base64Utils extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static byte[] decodeBase64(
+java.lang.String)
+
+private static native byte[] decodeBase64Native(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.os.BatteryManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int BATTERY_HEALTH_DEAD
+
+public static final int BATTERY_HEALTH_GOOD
+
+public static final int BATTERY_HEALTH_OVERHEAT
+
+public static final int BATTERY_HEALTH_OVER_VOLTAGE
+
+public static final int BATTERY_HEALTH_UNKNOWN
+
+public static final int BATTERY_HEALTH_UNSPECIFIED_FAILURE
+
+public static final int BATTERY_PLUGGED_AC
+
+public static final int BATTERY_PLUGGED_USB
+
+public static final int BATTERY_STATUS_CHARGING
+
+public static final int BATTERY_STATUS_DISCHARGING
+
+public static final int BATTERY_STATUS_FULL
+
+public static final int BATTERY_STATUS_NOT_CHARGING
+
+public static final int BATTERY_STATUS_UNKNOWN
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+final class android.os.BinderProxy extends java.lang.Object implements android.os.IBinder
+
+----------------FIELDS----------------
+
+private int mObject
+
+private final java.lang.ref.WeakReference mSelf
+----------------METHODS----------------
+
+ void <init>()
+
+private final native void destroy()
+
+private static final void sendDeathNotice(
+android.os.IBinder$DeathRecipient)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public native java.lang.String getInterfaceDescriptor()
+
+public native boolean isBinderAlive()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public native void linkToDeath(
+android.os.IBinder$DeathRecipient
+int)
+
+public native boolean pingBinder()
+
+public android.os.IInterface queryLocalInterface(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public native boolean transact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+public native boolean unlinkToDeath(
+android.os.IBinder$DeathRecipient
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/Broadcaster; )
+ class android.os.Broadcaster$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =Registration )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/Broadcaster; )
+ class android.os.Broadcaster$Registration extends java.lang.Object
+
+----------------FIELDS----------------
+
+ android.os.Broadcaster$Registration next
+
+ android.os.Broadcaster$Registration prev
+
+ int senderWhat
+
+ int[] targetWhats
+
+ android.os.Handler[] targets
+
+final android.os.Broadcaster this$0
+----------------METHODS----------------
+
+private void <init>(
+android.os.Broadcaster)
+
+ void <init>(
+android.os.Broadcaster
+android.os.Broadcaster$1)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/Broadcaster$1;Landroid/os/Broadcaster$Registration; )
+public class android.os.Broadcaster extends java.lang.Object
+
+----------------FIELDS----------------
+
+private android.os.Broadcaster$Registration mReg
+----------------METHODS----------------
+
+public void <init>()
+
+public void broadcast(
+android.os.Message)
+
+public void cancelRequest(
+int
+android.os.Handler
+int)
+
+public void dumpRegistrations()
+
+public void request(
+int
+android.os.Handler
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =VERSION )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/Build; )
+public class android.os.Build$VERSION extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String INCREMENTAL
+
+public static final java.lang.String RELEASE
+
+public static final java.lang.String SDK
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/Build$VERSION; )
+public class android.os.Build extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String BOARD
+
+public static final java.lang.String BRAND
+
+public static final java.lang.String DEVICE
+
+public static final java.lang.String FINGERPRINT
+
+public static final java.lang.String HOST
+
+public static final java.lang.String ID
+
+public static final java.lang.String MODEL
+
+public static final java.lang.String PRODUCT
+
+public static final java.lang.String TAGS
+
+public static final long TIME
+
+public static final java.lang.String TYPE
+
+private static final java.lang.String UNKNOWN
+
+public static final java.lang.String USER
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static java.lang.String access$000(
+java.lang.String)
+
+private static long getLong(
+java.lang.String)
+
+private static java.lang.String getString(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/os/Bundle;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/Bundle; )
+final class android.os.Bundle$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.os.Bundle createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.os.Bundle[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public final class android.os.Bundle extends java.lang.Object implements android.os.Parcelable, java.lang.Cloneable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/os/Bundle;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final android.os.Bundle EMPTY
+
+private static final java.lang.String LOG_TAG
+
+private java.lang.ClassLoader mClassLoader
+
+private boolean mFdsKnown
+
+private boolean mHasFds
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>; )
+ java.util.Map mMap
+
+ android.os.Parcel mParcelledData
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+android.os.Bundle)
+
+ void <init>(
+android.os.Parcel)
+
+public void <init>(
+java.lang.ClassLoader)
+
+private void typeWarning(
+java.lang.String
+java.lang.Object
+java.lang.String
+java.lang.ClassCastException)
+
+private void typeWarning(
+java.lang.String
+java.lang.Object
+java.lang.String
+java.lang.Object
+java.lang.ClassCastException)
+
+public void clear()
+
+public java.lang.Object clone()
+
+public boolean containsKey(
+java.lang.String)
+
+public int describeContents()
+
+public java.lang.Object get(
+java.lang.String)
+
+public boolean getBoolean(
+java.lang.String)
+
+public boolean getBoolean(
+java.lang.String
+boolean)
+
+public boolean[] getBooleanArray(
+java.lang.String)
+
+public android.os.Bundle getBundle(
+java.lang.String)
+
+public byte getByte(
+java.lang.String)
+
+public java.lang.Byte getByte(
+java.lang.String
+byte)
+
+public byte[] getByteArray(
+java.lang.String)
+
+public char getChar(
+java.lang.String)
+
+public char getChar(
+java.lang.String
+char)
+
+public char[] getCharArray(
+java.lang.String)
+
+public java.lang.CharSequence getCharSequence(
+java.lang.String)
+
+public double getDouble(
+java.lang.String)
+
+public double getDouble(
+java.lang.String
+double)
+
+public double[] getDoubleArray(
+java.lang.String)
+
+public float getFloat(
+java.lang.String)
+
+public float getFloat(
+java.lang.String
+float)
+
+public float[] getFloatArray(
+java.lang.String)
+@java.lang.Deprecated
+public android.os.IBinder getIBinder(
+java.lang.String)
+
+public int getInt(
+java.lang.String)
+
+public int getInt(
+java.lang.String
+int)
+
+public int[] getIntArray(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/ArrayList<Ljava/lang/Integer;>; )
+public java.util.ArrayList getIntegerArrayList(
+java.lang.String)
+
+public long getLong(
+java.lang.String)
+
+public long getLong(
+java.lang.String
+long)
+
+public long[] getLongArray(
+java.lang.String)
+@dalvik.annotation.Signature (value =<T::Landroid/os/Parcelable;>(Ljava/lang/String;)TT; )
+public android.os.Parcelable getParcelable(
+java.lang.String)
+
+public android.os.Parcelable[] getParcelableArray(
+java.lang.String)
+@dalvik.annotation.Signature (value =<T::Landroid/os/Parcelable;>(Ljava/lang/String;)Ljava/util/ArrayList<TT;>; )
+public java.util.ArrayList getParcelableArrayList(
+java.lang.String)
+
+public java.io.Serializable getSerializable(
+java.lang.String)
+
+public short getShort(
+java.lang.String)
+
+public short getShort(
+java.lang.String
+short)
+
+public short[] getShortArray(
+java.lang.String)
+@dalvik.annotation.Signature (value =<T::Landroid/os/Parcelable;>(Ljava/lang/String;)Landroid/util/SparseArray<TT;>; )
+public android.util.SparseArray getSparseParcelableArray(
+java.lang.String)
+
+public java.lang.String getString(
+java.lang.String)
+
+public java.lang.String[] getStringArray(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/ArrayList<Ljava/lang/String;>; )
+public java.util.ArrayList getStringArrayList(
+java.lang.String)
+
+public boolean hasFileDescriptors()
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public java.util.Set keySet()
+
+public void putAll(
+android.os.Bundle)
+
+public void putBoolean(
+java.lang.String
+boolean)
+
+public void putBooleanArray(
+java.lang.String
+boolean[])
+
+public void putBundle(
+java.lang.String
+android.os.Bundle)
+
+public void putByte(
+java.lang.String
+byte)
+
+public void putByteArray(
+java.lang.String
+byte[])
+
+public void putChar(
+java.lang.String
+char)
+
+public void putCharArray(
+java.lang.String
+char[])
+
+public void putCharSequence(
+java.lang.String
+java.lang.CharSequence)
+
+public void putDouble(
+java.lang.String
+double)
+
+public void putDoubleArray(
+java.lang.String
+double[])
+
+public void putFloat(
+java.lang.String
+float)
+
+public void putFloatArray(
+java.lang.String
+float[])
+@java.lang.Deprecated
+public void putIBinder(
+java.lang.String
+android.os.IBinder)
+
+public void putInt(
+java.lang.String
+int)
+
+public void putIntArray(
+java.lang.String
+int[])
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/ArrayList<Ljava/lang/Integer;>;)V )
+public void putIntegerArrayList(
+java.lang.String
+java.util.ArrayList)
+
+public void putLong(
+java.lang.String
+long)
+
+public void putLongArray(
+java.lang.String
+long[])
+
+public void putParcelable(
+java.lang.String
+android.os.Parcelable)
+
+public void putParcelableArray(
+java.lang.String
+android.os.Parcelable[])
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/ArrayList<+Landroid/os/Parcelable;>;)V )
+public void putParcelableArrayList(
+java.lang.String
+java.util.ArrayList)
+
+public void putSerializable(
+java.lang.String
+java.io.Serializable)
+
+public void putShort(
+java.lang.String
+short)
+
+public void putShortArray(
+java.lang.String
+short[])
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Landroid/util/SparseArray<+Landroid/os/Parcelable;>;)V )
+public void putSparseParcelableArray(
+java.lang.String
+android.util.SparseArray)
+
+public void putString(
+java.lang.String
+java.lang.String)
+
+public void putStringArray(
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/ArrayList<Ljava/lang/String;>;)V )
+public void putStringArrayList(
+java.lang.String
+java.util.ArrayList)
+
+public void readFromParcel(
+android.os.Parcel)
+
+public void remove(
+java.lang.String)
+
+public void setClassLoader(
+java.lang.ClassLoader)
+
+public int size()
+
+public java.lang.String toString()
+
+ void unparcel()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class android.os.ConditionVariable extends java.lang.Object
+
+----------------FIELDS----------------
+
+private volatile boolean mCondition
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+boolean)
+
+public void block()
+
+public boolean block(
+long)
+
+public void close()
+
+public void open()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/CountDownTimer; )
+ class android.os.CountDownTimer$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.os.CountDownTimer this$0
+----------------METHODS----------------
+
+ void <init>(
+android.os.CountDownTimer)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+
+public abstract class android.os.CountDownTimer extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int MSG
+
+private final long mCountdownInterval
+
+private android.os.Handler mHandler
+
+private final long mMillisInFuture
+
+private long mStopTimeInFuture
+----------------METHODS----------------
+
+public void <init>(
+long
+long)
+
+static long access$000(
+android.os.CountDownTimer)
+
+static long access$100(
+android.os.CountDownTimer)
+
+public final void cancel()
+
+public abstract void onFinish()
+
+public abstract void onTick(
+long)
+
+public final android.os.CountDownTimer start()
+
+________________CLASS________________
+
+
+public class android.os.RemoteException extends android.util.AndroidException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class android.os.DeadObjectException extends android.os.RemoteException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =InstructionCount )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/Debug; )
+public class android.os.Debug$InstructionCount extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int NUM_INSTR
+
+private int[] mCounts
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean collect()
+
+public int globalMethodInvocations()
+
+public int globalTotal()
+
+public boolean resetAndStart()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =MemoryInfo )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/Debug; )
+public class android.os.Debug$MemoryInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public int dalvikPrivateDirty
+
+public int dalvikPss
+
+public int dalvikSharedDirty
+
+public int nativePrivateDirty
+
+public int nativePss
+
+public int nativeSharedDirty
+
+public int otherPrivateDirty
+
+public int otherPss
+
+public int otherSharedDirty
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/Debug$InstructionCount;Landroid/os/Debug$MemoryInfo; )
+public final class android.os.Debug extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String DEFAULT_TRACE_BODY
+
+private static final java.lang.String DEFAULT_TRACE_EXTENSION
+
+private static final java.lang.String DEFAULT_TRACE_FILE_PATH
+
+private static final java.lang.String DEFAULT_TRACE_PATH_PREFIX
+
+private static final int MIN_DEBUGGER_IDLE
+
+public static final int SHOW_CLASSLOADER
+
+public static final int SHOW_FULL_DETAIL
+
+public static final int SHOW_INITIALIZED
+
+private static final int SPIN_DELAY
+
+private static final java.lang.String SYSFS_QEMU_TRACE_STATE
+
+public static final int TRACE_COUNT_ALLOCS
+
+private static volatile boolean mWaiting
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static void changeDebugPort(
+int)
+
+public static void enableEmulatorTraceOutput()
+
+public static final native int getBinderDeathObjectCount()
+
+public static final native int getBinderLocalObjectCount()
+
+public static final native int getBinderProxyObjectCount()
+
+public static native int getBinderReceivedTransactions()
+
+public static native int getBinderSentTransactions()
+
+public static int getGlobalAllocCount()
+
+public static int getGlobalAllocSize()
+
+public static int getGlobalExternalAllocCount()
+
+public static int getGlobalExternalAllocSize()
+
+public static int getGlobalExternalFreedCount()
+
+public static int getGlobalExternalFreedSize()
+
+public static int getGlobalFreedCount()
+
+public static int getGlobalFreedSize()
+
+public static int getGlobalGcInvocationCount()
+
+public static int getLoadedClassCount()
+
+public static native void getMemoryInfo(
+android.os.Debug$MemoryInfo)
+
+public static native long getNativeHeapAllocatedSize()
+
+public static native long getNativeHeapFreeSize()
+
+public static native long getNativeHeapSize()
+
+public static int getThreadAllocCount()
+
+public static int getThreadAllocSize()
+
+public static int getThreadExternalAllocCount()
+
+public static int getThreadExternalAllocSize()
+
+public static int getThreadGcInvocationCount()
+
+public static boolean isDebuggerConnected()
+
+public static void printLoadedClasses(
+int)
+
+public static void resetAllCounts()
+
+public static void resetGlobalAllocCount()
+
+public static void resetGlobalAllocSize()
+
+public static void resetGlobalExternalAllocCount()
+
+public static void resetGlobalExternalAllocSize()
+
+public static void resetGlobalExternalFreedCount()
+
+public static void resetGlobalExternalFreedSize()
+
+public static void resetGlobalFreedCount()
+
+public static void resetGlobalFreedSize()
+
+public static void resetGlobalGcInvocationCount()
+
+public static void resetThreadAllocCount()
+
+public static void resetThreadAllocSize()
+
+public static void resetThreadExternalAllocCount()
+
+public static void resetThreadExternalAllocSize()
+
+public static void resetThreadGcInvocationCount()
+
+public static int setAllocationLimit(
+int)
+
+public static int setGlobalAllocationLimit(
+int)
+
+public static void startAllocCounting()
+
+public static void startMethodTracing()
+
+public static void startMethodTracing(
+java.lang.String)
+
+public static void startMethodTracing(
+java.lang.String
+int)
+
+public static void startMethodTracing(
+java.lang.String
+int
+int)
+
+public static void startNativeTracing()
+
+public static void stopAllocCounting()
+
+public static void stopMethodTracing()
+
+public static void stopNativeTracing()
+
+public static long threadCpuTimeNanos()
+
+public static void waitForDebugger()
+
+public static boolean waitingForDebugger()
+
+________________CLASS________________
+
+
+public class android.os.Environment extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.io.File DATA_DIRECTORY
+
+private static final java.io.File DOWNLOAD_CACHE_DIRECTORY
+
+private static final java.io.File EXTERNAL_STORAGE_DIRECTORY
+
+public static final java.lang.String MEDIA_BAD_REMOVAL
+
+public static final java.lang.String MEDIA_MOUNTED
+
+public static final java.lang.String MEDIA_MOUNTED_READ_ONLY
+
+public static final java.lang.String MEDIA_REMOVED
+
+public static final java.lang.String MEDIA_SHARED
+
+public static final java.lang.String MEDIA_UNMOUNTABLE
+
+public static final java.lang.String MEDIA_UNMOUNTED
+
+private static final java.io.File ROOT_DIRECTORY
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.io.File getDataDirectory()
+
+static java.io.File getDirectory(
+java.lang.String
+java.lang.String)
+
+public static java.io.File getDownloadCacheDirectory()
+
+public static java.io.File getExternalStorageDirectory()
+
+public static java.lang.String getExternalStorageState()
+
+public static java.io.File getRootDirectory()
+
+________________CLASS________________
+
+
+public class android.os.Exec extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.io.FileDescriptor createSubprocess(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public static native java.io.FileDescriptor createSubprocess(
+java.lang.String
+java.lang.String
+java.lang.String
+int[])
+
+public static native void setPtyWindowSize(
+java.io.FileDescriptor
+int
+int
+int
+int)
+
+public static native int waitFor(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =ObserverThread )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/FileObserver; )
+ class android.os.FileObserver$ObserverThread extends java.lang.Thread
+
+----------------FIELDS----------------
+
+private int m_fd
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/ref/WeakReference;>; )
+private java.util.HashMap m_observers
+----------------METHODS----------------
+
+public void <init>()
+
+private native int init()
+
+private native void observe(
+int)
+
+private native int startWatching(
+int
+java.lang.String
+int)
+
+private native void stopWatching(
+int
+int)
+
+public void onEvent(
+int
+int
+java.lang.String)
+
+public void run()
+
+public int startWatching(
+java.lang.String
+int
+android.os.FileObserver)
+
+public void stopWatching(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/FileObserver$ObserverThread; )
+public abstract class android.os.FileObserver extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ACCESS
+
+public static final int ALL_EVENTS
+
+public static final int ATTRIB
+
+public static final int CLOSE_NOWRITE
+
+public static final int CLOSE_WRITE
+
+public static final int CREATE
+
+public static final int DELETE
+
+public static final int DELETE_SELF
+
+private static final java.lang.String LOG_TAG
+
+public static final int MODIFY
+
+public static final int MOVED_FROM
+
+public static final int MOVED_TO
+
+public static final int MOVE_SELF
+
+public static final int OPEN
+
+private static android.os.FileObserver$ObserverThread s_observerThread
+
+private java.lang.Integer m_descriptor
+
+private int m_mask
+
+private java.lang.String m_path
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+int)
+
+protected void finalize()
+
+public abstract void onEvent(
+int
+java.lang.String)
+
+public void startWatching()
+
+public void stopWatching()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =FileStatus )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/FileUtils; )
+public final class android.os.FileUtils$FileStatus extends java.lang.Object
+
+----------------FIELDS----------------
+
+public long atime
+
+public int blksize
+
+public long blocks
+
+public long ctime
+
+public int dev
+
+public int gid
+
+public int ino
+
+public int mode
+
+public long mtime
+
+public int nlink
+
+public int rdev
+
+public long size
+
+public int uid
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/FileUtils$FileStatus; )
+public class android.os.FileUtils extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.util.regex.Pattern SAFE_FILENAME_PATTERN
+
+public static final int S_IRGRP
+
+public static final int S_IROTH
+
+public static final int S_IRUSR
+
+public static final int S_IRWXG
+
+public static final int S_IRWXO
+
+public static final int S_IRWXU
+
+public static final int S_IWGRP
+
+public static final int S_IWOTH
+
+public static final int S_IWUSR
+
+public static final int S_IXGRP
+
+public static final int S_IXOTH
+
+public static final int S_IXUSR
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static boolean copyFile(
+java.io.File
+java.io.File)
+
+public static boolean copyToFile(
+java.io.InputStream
+java.io.File)
+
+public static native int getFatVolumeId(
+java.lang.String)
+
+public static native boolean getFileStatus(
+java.lang.String
+android.os.FileUtils$FileStatus)
+
+public static native int getPermissions(
+java.lang.String
+int[])
+
+public static boolean isFilenameSafe(
+java.io.File)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static java.lang.String readTextFile(
+java.io.File
+int
+java.lang.String)
+
+public static native int setPermissions(
+java.lang.String
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/Handler; )
+ class android.os.Handler$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/IMessenger$Stub; )
+public abstract interface class android.os.IMessenger extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void send(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/os/IMessenger; )
+@dalvik.annotation.MemberClasses (value =Landroid/os/IMessenger$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class android.os.IMessenger$Stub extends android.os.Binder implements android.os.IMessenger
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_send
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.os.IMessenger asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/os/Handler; )
+@dalvik.annotation.InnerClass (accessFlags =18 name =MessengerImpl )
+final class android.os.Handler$MessengerImpl extends android.os.IMessenger$Stub
+
+----------------FIELDS----------------
+
+final android.os.Handler this$0
+----------------METHODS----------------
+
+private void <init>(
+android.os.Handler)
+
+ void <init>(
+android.os.Handler
+android.os.Handler$1)
+
+public void send(
+android.os.Message)
+
+________________CLASS________________
+
+
+public abstract interface class android.os.HandlerInterface extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+
+public class android.os.HandlerThread extends java.lang.Thread
+
+----------------FIELDS----------------
+
+private android.os.Looper mLooper
+
+private int mPriority
+
+private int mTid
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+int)
+
+public android.os.Looper getLooper()
+
+public int getThreadId()
+
+protected void onLooperPrepared()
+
+public void run()
+
+________________CLASS________________
+
+
+public class android.os.Hardware extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static native void enableCameraFlash(
+int)
+
+public static native boolean getFlashlightEnabled()
+
+public static native void setButtonBacklight(
+boolean)
+
+public static native void setFlashlightEnabled(
+boolean)
+
+public static native void setKeyboardBacklight(
+boolean)
+
+public static native int setLedState(
+int
+int
+int)
+
+public static native void setScreenBacklight(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/ICheckinService$Stub; )
+public abstract interface class android.os.ICheckinService extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void getParentalControlState(
+android.os.IParentalControlCallback)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void masterClear()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void reportCrashAsync(
+byte[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void reportCrashSync(
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/ICheckinService$Stub; )
+ class android.os.ICheckinService$Stub$Proxy extends java.lang.Object implements android.os.ICheckinService
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void getParentalControlState(
+android.os.IParentalControlCallback)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void masterClear()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void reportCrashAsync(
+byte[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void reportCrashSync(
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/ICheckinService$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/ICheckinService; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class android.os.ICheckinService$Stub extends android.os.Binder implements android.os.ICheckinService
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_getParentalControlState
+
+static final int TRANSACTION_masterClear
+
+static final int TRANSACTION_reportCrashAsync
+
+static final int TRANSACTION_reportCrashSync
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.os.ICheckinService asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/IHardwareService$Stub; )
+public abstract interface class android.os.IHardwareService extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void cancelVibrate()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void enableCameraFlash(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean getFlashlightEnabled()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setButtonBacklight(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setFlashlightEnabled(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setKeyboardBacklight(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setLedState(
+int
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setScreenBacklight(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void vibrate(
+long)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void vibratePattern(
+long[]
+int
+android.os.IBinder)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/IHardwareService$Stub; )
+ class android.os.IHardwareService$Stub$Proxy extends java.lang.Object implements android.os.IHardwareService
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void cancelVibrate()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void enableCameraFlash(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean getFlashlightEnabled()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setButtonBacklight(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setFlashlightEnabled(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setKeyboardBacklight(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setLedState(
+int
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setScreenBacklight(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void vibrate(
+long)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void vibratePattern(
+long[]
+int
+android.os.IBinder)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/IHardwareService$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/IHardwareService; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class android.os.IHardwareService$Stub extends android.os.Binder implements android.os.IHardwareService
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_cancelVibrate
+
+static final int TRANSACTION_enableCameraFlash
+
+static final int TRANSACTION_getFlashlightEnabled
+
+static final int TRANSACTION_setButtonBacklight
+
+static final int TRANSACTION_setFlashlightEnabled
+
+static final int TRANSACTION_setKeyboardBacklight
+
+static final int TRANSACTION_setLedState
+
+static final int TRANSACTION_setScreenBacklight
+
+static final int TRANSACTION_vibrate
+
+static final int TRANSACTION_vibratePattern
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.os.IHardwareService asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/IMessenger$Stub; )
+ class android.os.IMessenger$Stub$Proxy extends java.lang.Object implements android.os.IMessenger
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void send(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/IMountService$Stub; )
+public abstract interface class android.os.IMountService extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean getMassStorageConnected()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean getMassStorageEnabled()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void mountMedia(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setMassStorageEnabled(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void unmountMedia(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/IMountService$Stub; )
+ class android.os.IMountService$Stub$Proxy extends java.lang.Object implements android.os.IMountService
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean getMassStorageConnected()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean getMassStorageEnabled()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void mountMedia(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setMassStorageEnabled(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void unmountMedia(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/IMountService$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/IMountService; )
+public abstract class android.os.IMountService$Stub extends android.os.Binder implements android.os.IMountService
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_getMassStorageConnected
+
+static final int TRANSACTION_getMassStorageEnabled
+
+static final int TRANSACTION_mountMedia
+
+static final int TRANSACTION_setMassStorageEnabled
+
+static final int TRANSACTION_unmountMedia
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.os.IMountService asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/INetStatService$Stub; )
+public abstract interface class android.os.INetStatService extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getRxBytes()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getRxPackets()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getTxBytes()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getTxPackets()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/os/INetStatService$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class android.os.INetStatService$Stub$Proxy extends java.lang.Object implements android.os.INetStatService
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getRxBytes()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getRxPackets()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getTxBytes()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getTxPackets()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/INetStatService; )
+@dalvik.annotation.MemberClasses (value =Landroid/os/INetStatService$Stub$Proxy; )
+public abstract class android.os.INetStatService$Stub extends android.os.Binder implements android.os.INetStatService
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_getRxBytes
+
+static final int TRANSACTION_getRxPackets
+
+static final int TRANSACTION_getTxBytes
+
+static final int TRANSACTION_getTxPackets
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.os.INetStatService asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/IParentalControlCallback$Stub; )
+public abstract interface class android.os.IParentalControlCallback extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onResult(
+com.google.android.net.ParentalControlState)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/os/IParentalControlCallback$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class android.os.IParentalControlCallback$Stub$Proxy extends java.lang.Object implements android.os.IParentalControlCallback
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onResult(
+com.google.android.net.ParentalControlState)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/IParentalControlCallback$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/IParentalControlCallback; )
+public abstract class android.os.IParentalControlCallback$Stub extends android.os.Binder implements android.os.IParentalControlCallback
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_onResult
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.os.IParentalControlCallback asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/IPermissionController$Stub; )
+public abstract interface class android.os.IPermissionController extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean checkPermission(
+java.lang.String
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/IPermissionController$Stub; )
+ class android.os.IPermissionController$Stub$Proxy extends java.lang.Object implements android.os.IPermissionController
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean checkPermission(
+java.lang.String
+int
+int)
+
+public java.lang.String getInterfaceDescriptor()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/os/IPermissionController; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.MemberClasses (value =Landroid/os/IPermissionController$Stub$Proxy; )
+public abstract class android.os.IPermissionController$Stub extends android.os.Binder implements android.os.IPermissionController
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_checkPermission
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.os.IPermissionController asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/IPowerManager$Stub; )
+public abstract interface class android.os.IPowerManager extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void acquireWakeLock(
+int
+android.os.IBinder
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract long getScreenOnTime()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void goToSleep(
+long)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void releaseWakeLock(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setPokeLock(
+int
+android.os.IBinder
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setStayOnSetting(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void userActivity(
+long
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void userActivityWithForce(
+long
+boolean
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/IPowerManager$Stub; )
+ class android.os.IPowerManager$Stub$Proxy extends java.lang.Object implements android.os.IPowerManager
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void acquireWakeLock(
+int
+android.os.IBinder
+java.lang.String)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public long getScreenOnTime()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void goToSleep(
+long)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void releaseWakeLock(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setPokeLock(
+int
+android.os.IBinder
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setStayOnSetting(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void userActivity(
+long
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void userActivityWithForce(
+long
+boolean
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/IPowerManager$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/IPowerManager; )
+public abstract class android.os.IPowerManager$Stub extends android.os.Binder implements android.os.IPowerManager
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_acquireWakeLock
+
+static final int TRANSACTION_getScreenOnTime
+
+static final int TRANSACTION_goToSleep
+
+static final int TRANSACTION_releaseWakeLock
+
+static final int TRANSACTION_setPokeLock
+
+static final int TRANSACTION_setStayOnSetting
+
+static final int TRANSACTION_userActivity
+
+static final int TRANSACTION_userActivityWithForce
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.os.IPowerManager asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public abstract interface class android.os.IServiceManager extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+
+public static final int ADD_SERVICE_TRANSACTION
+
+public static final int CHECK_SERVICES_TRANSACTION
+
+public static final int CHECK_SERVICE_TRANSACTION
+
+public static final int GET_SERVICE_TRANSACTION
+
+public static final int LIST_SERVICES_TRANSACTION
+
+public static final int SET_PERMISSION_CONTROLLER_TRANSACTION
+
+public static final java.lang.String descriptor
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void addService(
+java.lang.String
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.os.IBinder checkService(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.os.IBinder getService(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String[] listServices()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setPermissionController(
+android.os.IPermissionController)
+
+________________CLASS________________
+
+
+public abstract interface class android.os.LocalPowerManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int BUTTON_EVENT
+
+public static final int CHEEK_EVENT
+
+public static final int OTHER_EVENT
+
+public static final int POKE_LOCK_IGNORE_CHEEK_EVENTS
+
+public static final int POKE_LOCK_MEDIUM_TIMEOUT
+
+public static final int POKE_LOCK_SHORT_TIMEOUT
+
+public static final int POKE_LOCK_TIMEOUT_MASK
+
+public static final int TOUCH_EVENT
+----------------METHODS----------------
+
+public abstract void enableUserActivity(
+boolean)
+
+public abstract void goToSleep(
+long)
+
+public abstract void setKeyboardVisibility(
+boolean)
+
+public abstract void userActivity(
+long
+boolean
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =HandlerException )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/Looper; )
+ class android.os.Looper$HandlerException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+android.os.Message
+java.lang.Throwable)
+
+static java.lang.String createMessage(
+java.lang.Throwable)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/Looper$HandlerException; )
+public class android.os.Looper extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG
+
+private static final boolean localLOGV
+
+private static android.os.Looper mMainLooper
+
+private static final java.lang.ThreadLocal sThreadLocal
+
+private android.util.Printer mLogging
+
+final android.os.MessageQueue mQueue
+
+volatile boolean mRun
+
+ java.lang.Thread mThread
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static final android.os.Looper getMainLooper()
+
+public static final void loop()
+
+public static final android.os.Looper myLooper()
+
+public static final android.os.MessageQueue myQueue()
+
+public static final void prepare()
+
+public static final void prepareMainLooper()
+
+private static void setMainLooper(
+android.os.Looper)
+
+public void dump(
+android.util.Printer
+java.lang.String)
+
+public void quit()
+
+public void setMessageLogging(
+android.util.Printer)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class android.os.MailboxNotAvailableException extends java.lang.Throwable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/MemoryFile; )
+ class android.os.MemoryFile$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/os/MemoryFile; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =MemoryInputStream )
+ class android.os.MemoryFile$MemoryInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+private int mMark
+
+private int mOffset
+
+private byte[] mSingleByte
+
+final android.os.MemoryFile this$0
+----------------METHODS----------------
+
+private void <init>(
+android.os.MemoryFile)
+
+ void <init>(
+android.os.MemoryFile
+android.os.MemoryFile$1)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+
+public void mark(
+int)
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =MemoryOutputStream )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/MemoryFile; )
+ class android.os.MemoryFile$MemoryOutputStream extends java.io.OutputStream
+
+----------------FIELDS----------------
+
+private int mOffset
+
+private byte[] mSingleByte
+
+final android.os.MemoryFile this$0
+----------------METHODS----------------
+
+private void <init>(
+android.os.MemoryFile)
+
+ void <init>(
+android.os.MemoryFile
+android.os.MemoryFile$1)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/MemoryFile$1;Landroid/os/MemoryFile$MemoryOutputStream;Landroid/os/MemoryFile$MemoryInputStream; )
+public class android.os.MemoryFile extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.lang.String TAG
+
+private int mAddress
+
+private boolean mAllowPurging
+
+private int mFD
+
+private int mLength
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+int)
+
+static int access$200(
+android.os.MemoryFile)
+
+private native void native_close(
+int)
+
+private native int native_mmap(
+int
+int)
+
+private native int native_open(
+java.lang.String
+int)
+
+private native void native_pin(
+int
+boolean)
+
+private native int native_read(
+int
+int
+byte[]
+int
+int
+int
+boolean)
+
+private native void native_write(
+int
+int
+byte[]
+int
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean allowPurging(
+boolean)
+
+public void close()
+
+protected void finalize()
+
+public java.io.InputStream getInputStream()
+
+public java.io.OutputStream getOutputStream()
+
+public boolean isPurgingAllowed()
+
+public int length()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int readBytes(
+byte[]
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeBytes(
+byte[]
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/os/Message; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/os/Message;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.os.Message$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.os.Message createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.os.Message[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public final class android.os.Message extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/os/Message;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+private static final int MAX_POOL_SIZE
+
+private static android.os.Message mPool
+
+private static int mPoolSize
+
+private static java.lang.Object mPoolSync
+
+public int arg1
+
+public int arg2
+
+ java.lang.Runnable callback
+
+ android.os.Bundle data
+
+ android.os.Message next
+
+public java.lang.Object obj
+
+public android.os.Messenger replyTo
+
+ android.os.Handler target
+
+public int what
+
+ long when
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static void access$000(
+android.os.Message
+android.os.Parcel)
+
+public static android.os.Message obtain()
+
+public static android.os.Message obtain(
+android.os.Handler)
+
+public static android.os.Message obtain(
+android.os.Handler
+int)
+
+public static android.os.Message obtain(
+android.os.Handler
+int
+int
+int)
+
+public static android.os.Message obtain(
+android.os.Handler
+int
+int
+int
+java.lang.Object)
+
+public static android.os.Message obtain(
+android.os.Handler
+int
+java.lang.Object)
+
+public static android.os.Message obtain(
+android.os.Handler
+java.lang.Runnable)
+
+public static android.os.Message obtain(
+android.os.Message)
+
+private final void readFromParcel(
+android.os.Parcel)
+
+ void clearForRecycle()
+
+public void copyFrom(
+android.os.Message)
+
+public int describeContents()
+
+public java.lang.Runnable getCallback()
+
+public android.os.Bundle getData()
+
+public android.os.Handler getTarget()
+
+public long getWhen()
+
+public android.os.Bundle peekData()
+
+public void recycle()
+
+public void sendToTarget()
+
+public void setData(
+android.os.Bundle)
+
+public void setTarget(
+android.os.Handler)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/MessageQueue$IdleHandler; )
+public class android.os.MessageQueue extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final java.util.ArrayList mIdleHandlers
+
+ android.os.Message mMessages
+
+ boolean mQuitAllowed
+
+private boolean mQuiting
+----------------METHODS----------------
+
+ void <init>()
+
+public final void addIdleHandler(
+android.os.MessageQueue$IdleHandler)
+
+final boolean enqueueMessage(
+android.os.Message
+long)
+
+final android.os.Message next()
+
+ void poke()
+
+final android.os.Message pullNextLocked(
+long)
+
+final void removeCallbacksAndMessages(
+android.os.Handler
+java.lang.Object)
+
+public final void removeIdleHandler(
+android.os.MessageQueue$IdleHandler)
+
+final void removeMessages(
+android.os.Handler
+java.lang.Runnable
+java.lang.Object)
+
+final boolean removeMessages(
+android.os.Handler
+int
+java.lang.Object
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/os/Messenger;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/Messenger; )
+final class android.os.Messenger$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.os.Messenger createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.os.Messenger[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public final class android.os.Messenger extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/os/Messenger;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+private final android.os.IMessenger mTarget
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.os.Handler)
+
+public void <init>(
+android.os.IBinder)
+
+public static android.os.Messenger readMessengerOrNullFromParcel(
+android.os.Parcel)
+
+public static void writeMessengerOrNullToParcel(
+android.os.Messenger
+android.os.Parcel)
+
+public int describeContents()
+
+public boolean equals(
+java.lang.Object)
+
+public android.os.IBinder getBinder()
+
+public int hashCode()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void send(
+android.os.Message)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class android.os.NetStat extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static native int netStatGetRxBytes()
+
+public static native int netStatGetRxPkts()
+
+public static native int netStatGetTxBytes()
+
+public static native int netStatGetTxPkts()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Ljava/lang/String;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/Parcel; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.os.Parcel$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public java.lang.String createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+public java.lang.String[] newArray(
+int)
+
+________________CLASS________________
+
+
+public final class android.os.Parcel extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG_RECYCLE
+
+private static final int EX_BAD_PARCELABLE
+
+private static final int EX_ILLEGAL_ARGUMENT
+
+private static final int EX_ILLEGAL_STATE
+
+private static final int EX_NULL_POINTER
+
+private static final int EX_SECURITY
+
+private static final int POOL_SIZE
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Ljava/lang/String;>; )
+public static final android.os.Parcelable$Creator STRING_CREATOR
+
+private static final int VAL_BOOLEAN
+
+private static final int VAL_BOOLEANARRAY
+
+private static final int VAL_BUNDLE
+
+private static final int VAL_BYTE
+
+private static final int VAL_BYTEARRAY
+
+private static final int VAL_CHARSEQUENCE
+
+private static final int VAL_DOUBLE
+
+private static final int VAL_FLOAT
+
+private static final int VAL_IBINDER
+
+private static final int VAL_INTARRAY
+
+private static final int VAL_INTEGER
+
+private static final int VAL_LIST
+
+private static final int VAL_LONG
+
+private static final int VAL_LONGARRAY
+
+private static final int VAL_MAP
+
+private static final int VAL_NULL
+
+private static final int VAL_OBJECTARRAY
+
+private static final int VAL_PARCELABLE
+
+private static final int VAL_PARCELABLEARRAY
+
+private static final int VAL_SERIALIZABLE
+
+private static final int VAL_SHORT
+
+private static final int VAL_SPARSEARRAY
+
+private static final int VAL_SPARSEBOOLEANARRAY
+
+private static final int VAL_STRING
+
+private static final int VAL_STRINGARRAY
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/ClassLoader;Ljava/util/HashMap<Ljava/lang/String;Landroid/os/Parcelable$Creator;>;>; )
+private static final java.util.HashMap mCreators
+
+private static final android.os.Parcel[] sHolderPool
+
+private static final android.os.Parcel[] sOwnedPool
+
+private int mObject
+
+private int mOwnObject
+
+private java.lang.RuntimeException mStack
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native void closeFileDescriptor(
+java.io.FileDescriptor)
+
+private native void destroy()
+
+private native void freeBuffer()
+
+private native void init(
+int)
+
+private native java.io.FileDescriptor internalReadFileDescriptor()
+
+public static android.os.Parcel obtain()
+
+protected static final android.os.Parcel obtain(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+static native java.io.FileDescriptor openFileDescriptor(
+java.lang.String
+int)
+
+private void readArrayInternal(
+java.lang.Object[]
+int
+java.lang.ClassLoader)
+
+private void readListInternal(
+java.util.List
+int
+java.lang.ClassLoader)
+
+private void readMapInternal(
+java.util.Map
+int
+java.lang.ClassLoader)
+
+private void readSparseArrayInternal(
+android.util.SparseArray
+int
+java.lang.ClassLoader)
+
+private void readSparseBooleanArrayInternal(
+android.util.SparseBooleanArray
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;)V )
+private void writeMapInternal(
+java.util.Map)
+
+private native void writeNative(
+byte[]
+int
+int)
+
+public final native void appendFrom(
+android.os.Parcel
+int
+int)
+
+public final android.os.IBinder[] createBinderArray()
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Landroid/os/IBinder;>; )
+public final java.util.ArrayList createBinderArrayList()
+
+public final boolean[] createBooleanArray()
+
+public final native byte[] createByteArray()
+
+public final char[] createCharArray()
+
+public final double[] createDoubleArray()
+
+public final float[] createFloatArray()
+
+public final int[] createIntArray()
+
+public final long[] createLongArray()
+
+public final java.lang.String[] createStringArray()
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Ljava/lang/String;>; )
+public final java.util.ArrayList createStringArrayList()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Landroid/os/Parcelable$Creator<TT;>;)[TT; )
+public final java.lang.Object[] createTypedArray(
+android.os.Parcelable$Creator)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Landroid/os/Parcelable$Creator<TT;>;)Ljava/util/ArrayList<TT;>; )
+public final java.util.ArrayList createTypedArrayList(
+android.os.Parcelable$Creator)
+
+public final native int dataAvail()
+
+public final native int dataCapacity()
+
+public final native int dataPosition()
+
+public final native int dataSize()
+
+public final native void enforceInterface(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public final native boolean hasFileDescriptors()
+
+public final native byte[] marshall()
+
+public final java.lang.Object[] readArray(
+java.lang.ClassLoader)
+
+public final java.util.ArrayList readArrayList(
+java.lang.ClassLoader)
+
+public final void readBinderArray(
+android.os.IBinder[])
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/os/IBinder;>;)V )
+public final void readBinderList(
+java.util.List)
+
+public final void readBooleanArray(
+boolean[])
+
+public final android.os.Bundle readBundle()
+
+public final android.os.Bundle readBundle(
+java.lang.ClassLoader)
+
+ android.os.Bundle readBundleUnpacked(
+java.lang.ClassLoader)
+
+public final byte readByte()
+
+public final void readByteArray(
+byte[])
+
+public final void readCharArray(
+char[])
+
+public final native double readDouble()
+
+public final void readDoubleArray(
+double[])
+
+public final void readException()
+
+public final void readException(
+int
+java.lang.String)
+
+public final android.os.ParcelFileDescriptor readFileDescriptor()
+
+public final native float readFloat()
+
+public final void readFloatArray(
+float[])
+
+public final java.util.HashMap readHashMap(
+java.lang.ClassLoader)
+
+public final native int readInt()
+
+public final void readIntArray(
+int[])
+
+public final void readList(
+java.util.List
+java.lang.ClassLoader)
+
+public final native long readLong()
+
+public final void readLongArray(
+long[])
+
+public final void readMap(
+java.util.Map
+java.lang.ClassLoader)
+@dalvik.annotation.Signature (value =<T::Landroid/os/Parcelable;>(Ljava/lang/ClassLoader;)TT; )
+public final android.os.Parcelable readParcelable(
+java.lang.ClassLoader)
+
+public final android.os.Parcelable[] readParcelableArray(
+java.lang.ClassLoader)
+
+public final java.io.Serializable readSerializable()
+
+public final android.util.SparseArray readSparseArray(
+java.lang.ClassLoader)
+
+public final android.util.SparseBooleanArray readSparseBooleanArray()
+
+public final native java.lang.String readString()
+
+public final void readStringArray(
+java.lang.String[])
+
+public final java.lang.String[] readStringArray()
+@dalvik.annotation.Signature (value =(Ljava/util/List<Ljava/lang/String;>;)V )
+public final void readStringList(
+java.util.List)
+
+public final native android.os.IBinder readStrongBinder()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;Landroid/os/Parcelable$Creator<TT;>;)V )
+public final void readTypedArray(
+java.lang.Object[]
+android.os.Parcelable$Creator)
+@java.lang.Deprecated
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Landroid/os/Parcelable$Creator<TT;>;)[TT; )
+public final java.lang.Object[] readTypedArray(
+android.os.Parcelable$Creator)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/List<TT;>;Landroid/os/Parcelable$Creator<TT;>;)V )
+public final void readTypedList(
+java.util.List
+android.os.Parcelable$Creator)
+
+public final java.lang.Object readValue(
+java.lang.ClassLoader)
+
+public final void recycle()
+
+public final native void setDataCapacity(
+int)
+
+public final native void setDataPosition(
+int)
+
+public final native void setDataSize(
+int)
+
+public final native void unmarshall(
+byte[]
+int
+int)
+
+public final void writeArray(
+java.lang.Object[])
+
+public final void writeBinderArray(
+android.os.IBinder[])
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/os/IBinder;>;)V )
+public final void writeBinderList(
+java.util.List)
+
+public final void writeBooleanArray(
+boolean[])
+
+public final void writeBundle(
+android.os.Bundle)
+
+public final void writeByte(
+byte)
+
+public final void writeByteArray(
+byte[])
+
+public final void writeByteArray(
+byte[]
+int
+int)
+
+public final void writeCharArray(
+char[])
+
+public final native void writeDouble(
+double)
+
+public final void writeDoubleArray(
+double[])
+
+public final void writeException(
+java.lang.Exception)
+
+public final native void writeFileDescriptor(
+java.io.FileDescriptor)
+
+public final native void writeFloat(
+float)
+
+public final void writeFloatArray(
+float[])
+
+public final native void writeInt(
+int)
+
+public final void writeIntArray(
+int[])
+
+public final native void writeInterfaceToken(
+java.lang.String)
+
+public final void writeList(
+java.util.List)
+
+public final native void writeLong(
+long)
+
+public final void writeLongArray(
+long[])
+
+public final void writeMap(
+java.util.Map)
+
+public final void writeNoException()
+
+public final void writeParcelable(
+android.os.Parcelable
+int)
+@dalvik.annotation.Signature (value =<T::Landroid/os/Parcelable;>([TT;I)V )
+public final void writeParcelableArray(
+android.os.Parcelable[]
+int)
+
+public final void writeSerializable(
+java.io.Serializable)
+@dalvik.annotation.Signature (value =(Landroid/util/SparseArray<Ljava/lang/Object;>;)V )
+public final void writeSparseArray(
+android.util.SparseArray)
+
+public final void writeSparseBooleanArray(
+android.util.SparseBooleanArray)
+
+public final native void writeString(
+java.lang.String)
+
+public final void writeStringArray(
+java.lang.String[])
+@dalvik.annotation.Signature (value =(Ljava/util/List<Ljava/lang/String;>;)V )
+public final void writeStringList(
+java.util.List)
+
+public final native void writeStrongBinder(
+android.os.IBinder)
+
+public final void writeStrongInterface(
+android.os.IInterface)
+@dalvik.annotation.Signature (value =<T::Landroid/os/Parcelable;>([TT;I)V )
+public final void writeTypedArray(
+android.os.Parcelable[]
+int)
+@dalvik.annotation.Signature (value =<T::Landroid/os/Parcelable;>(Ljava/util/List<TT;>;)V )
+public final void writeTypedList(
+java.util.List)
+
+public final void writeValue(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/os/ParcelFileDescriptor;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/ParcelFileDescriptor; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.os.ParcelFileDescriptor$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.os.ParcelFileDescriptor createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.os.ParcelFileDescriptor[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =AutoCloseInputStream )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/ParcelFileDescriptor; )
+public class android.os.ParcelFileDescriptor$AutoCloseInputStream extends java.io.FileInputStream
+
+----------------FIELDS----------------
+
+private final android.os.ParcelFileDescriptor mFd
+----------------METHODS----------------
+
+public void <init>(
+android.os.ParcelFileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =AutoCloseOutputStream )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/ParcelFileDescriptor; )
+public class android.os.ParcelFileDescriptor$AutoCloseOutputStream extends java.io.FileOutputStream
+
+----------------FIELDS----------------
+
+private final android.os.ParcelFileDescriptor mFd
+----------------METHODS----------------
+
+public void <init>(
+android.os.ParcelFileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+________________CLASS________________
+
+
+public class android.os.ParcelFormatException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/os/PatternMatcher;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/PatternMatcher; )
+final class android.os.PatternMatcher$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.os.PatternMatcher createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.os.PatternMatcher[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.os.PatternMatcher extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/os/PatternMatcher;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final int PATTERN_LITERAL
+
+public static final int PATTERN_PREFIX
+
+public static final int PATTERN_SIMPLE_GLOB
+
+private final java.lang.String mPattern
+
+private final int mType
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.os.Parcel)
+
+public void <init>(
+java.lang.String
+int)
+
+static boolean matchPattern(
+java.lang.String
+java.lang.String
+int)
+
+public int describeContents()
+
+public final java.lang.String getPath()
+
+public final int getType()
+
+public boolean match(
+java.lang.String)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class android.os.Power extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ALL_LIGHTS
+
+public static final int BRIGHTNESS_DIM
+
+public static final int BRIGHTNESS_LOW_BATTERY
+
+public static final int BRIGHTNESS_OFF
+
+public static final int BRIGHTNESS_ON
+
+public static final int BUTTON_LIGHT
+
+public static final int FULL_WAKE_LOCK
+
+public static final int KEYBOARD_LIGHT
+
+public static final int LOW_BATTERY_THRESHOLD
+
+public static final int PARTIAL_WAKE_LOCK
+
+public static final int SCREEN_LIGHT
+----------------METHODS----------------
+
+private void <init>()
+
+public static native void acquireWakeLock(
+int
+java.lang.String)
+
+public static native void reboot(
+java.lang.String)
+
+public static native void releaseWakeLock(
+java.lang.String)
+
+public static native int setLastUserActivityTimeout(
+long)
+
+public static native int setLightBrightness(
+int
+int)
+
+public static native int setScreenState(
+boolean)
+@java.lang.Deprecated
+public static native void shutdown()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/PowerManager$WakeLock; )
+ class android.os.PowerManager$WakeLock$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.os.PowerManager$WakeLock this$1
+----------------METHODS----------------
+
+ void <init>(
+android.os.PowerManager$WakeLock)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1 name =WakeLock )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/PowerManager; )
+public class android.os.PowerManager$WakeLock extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int RELEASE_WAKE_LOCK
+
+ int mCount
+
+ int mFlags
+
+ boolean mHeld
+
+ boolean mRefCounted
+
+ java.lang.Runnable mReleaser
+
+ java.lang.String mTag
+
+ android.os.IBinder mToken
+
+final android.os.PowerManager this$0
+----------------METHODS----------------
+
+ void <init>(
+android.os.PowerManager
+int
+java.lang.String)
+
+public void acquire()
+
+public void acquire(
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public boolean isHeld()
+
+public void release()
+
+public void setReferenceCounted(
+boolean)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/PowerManager$WakeLock; )
+public class android.os.PowerManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ACQUIRE_CAUSES_WAKEUP
+
+public static final int FULL_WAKE_LOCK
+
+private static final int LOCK_MASK
+
+public static final int ON_AFTER_RELEASE
+
+public static final int PARTIAL_WAKE_LOCK
+
+public static final int SCREEN_BRIGHT_WAKE_LOCK
+
+public static final int SCREEN_DIM_WAKE_LOCK
+
+private static final java.lang.String TAG
+
+private static final int WAKE_BIT_CPU_STRONG
+
+private static final int WAKE_BIT_CPU_WEAK
+
+private static final int WAKE_BIT_KEYBOARD_BRIGHT
+
+private static final int WAKE_BIT_SCREEN_BRIGHT
+
+private static final int WAKE_BIT_SCREEN_DIM
+
+ android.os.Handler mHandler
+
+ android.os.IPowerManager mService
+----------------METHODS----------------
+
+private void <init>()
+
+public void <init>(
+android.os.IPowerManager
+android.os.Handler)
+
+public void goToSleep(
+long)
+
+public android.os.PowerManager$WakeLock newWakeLock(
+int
+java.lang.String)
+
+public void userActivity(
+long
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.os.Process$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final java.lang.String val$processClass
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+public void run()
+
+________________CLASS________________
+
+
+public class android.os.Process extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ANDROID_SHARED_MEDIA
+
+public static final int BLUETOOTH_GID
+
+public static final int FIRST_APPLICATION_UID
+
+public static final java.lang.String GOOGLE_SHARED_APP_CONTENT
+
+public static final int LAST_APPLICATION_UID
+
+private static final java.lang.String LOG_TAG
+
+public static final int PHONE_UID
+
+public static final int PROC_COMBINE
+
+public static final int PROC_OUT_FLOAT
+
+public static final int PROC_OUT_LONG
+
+public static final int PROC_OUT_STRING
+
+public static final int PROC_PARENS
+
+public static final int PROC_SPACE_TERM
+
+public static final int PROC_TERM_MASK
+
+public static final int PROC_ZERO_TERM
+
+public static final int SIGNAL_KILL
+
+public static final int SIGNAL_QUIT
+
+public static final int SIGNAL_USR1
+
+public static final int SYSTEM_UID
+
+public static final int THREAD_PRIORITY_AUDIO
+
+public static final int THREAD_PRIORITY_BACKGROUND
+
+public static final int THREAD_PRIORITY_DEFAULT
+
+public static final int THREAD_PRIORITY_DISPLAY
+
+public static final int THREAD_PRIORITY_FOREGROUND
+
+public static final int THREAD_PRIORITY_LESS_FAVORABLE
+
+public static final int THREAD_PRIORITY_LOWEST
+
+public static final int THREAD_PRIORITY_MORE_FAVORABLE
+
+public static final int THREAD_PRIORITY_URGENT_AUDIO
+
+public static final int THREAD_PRIORITY_URGENT_DISPLAY
+
+static final int ZYGOTE_RETRY_MILLIS
+
+private static final java.lang.String ZYGOTE_SOCKET
+
+static boolean sPreviousZygoteOpenFailed
+
+static java.io.DataInputStream sZygoteInputStream
+
+static android.net.LocalSocket sZygoteSocket
+
+static java.io.BufferedWriter sZygoteWriter
+----------------METHODS----------------
+
+public void <init>()
+
+static void access$000(
+java.lang.String)
+
+public static final native long getElapsedCpuTime()
+
+public static final native int getFreeMemory()
+
+public static final native int getGidForName(
+java.lang.String)
+
+public static final native int[] getPids(
+java.lang.String
+int[])
+
+public static final native long getPss(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public static final native int getThreadPriority(
+int)
+
+public static final native int getUidForName(
+java.lang.String)
+
+private static void invokeStaticMain(
+java.lang.String)
+
+public static final void killProcess(
+int)
+
+public static final native int myPid()
+
+public static final native int myTid()
+@dalvik.annotation.Throws (value =Landroid/os/ZygoteStartFailedEx; )
+private static void openZygoteSocketIfNeeded()
+
+public static final native boolean readProcFile(
+java.lang.String
+int[]
+java.lang.String[]
+long[]
+float[])
+
+public static final native void readProcLines(
+java.lang.String
+java.lang.String[]
+long[])
+
+public static final native void sendSignal(
+int
+int)
+
+public static final native void setArgV0(
+java.lang.String)
+
+public static final native int setGid(
+int)
+
+public static final native boolean setOomAdj(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/SecurityException; )
+public static final native void setThreadPriority(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/SecurityException; )
+public static final native void setThreadPriority(
+int
+int)
+
+public static final native int setUid(
+int)
+
+public static final int start(
+java.lang.String
+int
+int
+int[]
+boolean
+java.lang.String[])
+
+public static final int start(
+java.lang.String
+java.lang.String
+int
+int
+int[]
+boolean
+java.lang.String[])
+@dalvik.annotation.Throws (value =Landroid/os/ZygoteStartFailedEx; )
+private static int startViaZygote(
+java.lang.String
+java.lang.String
+int
+int
+int[]
+boolean
+java.lang.String[])
+
+public static final native boolean supportsProcesses()
+@dalvik.annotation.Throws (value =Landroid/os/ZygoteStartFailedEx; )
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Ljava/lang/String;>;)I )
+private static int zygoteSendArgsAndGetPid(
+java.util.ArrayList)
+
+________________CLASS________________
+
+
+public class android.os.Registrant extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.lang.ref.WeakReference refH
+
+ java.lang.Object userObj
+
+ int what
+----------------METHODS----------------
+
+public void <init>(
+android.os.Handler
+int
+java.lang.Object)
+
+public void clear()
+
+public android.os.Handler getHandler()
+
+ void internalNotifyRegistrant(
+java.lang.Object
+java.lang.Throwable)
+
+public android.os.Message messageForRegistrant()
+
+public void notifyException(
+java.lang.Throwable)
+
+public void notifyRegistrant()
+
+public void notifyRegistrant(
+android.os.AsyncResult)
+
+public void notifyResult(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class android.os.RegistrantList extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.util.ArrayList registrants
+----------------METHODS----------------
+
+public void <init>()
+
+private void internalNotifyRegistrants(
+java.lang.Object
+java.lang.Throwable)
+
+public void add(
+android.os.Handler
+int
+java.lang.Object)
+
+public void add(
+android.os.Registrant)
+
+public void addUnique(
+android.os.Handler
+int
+java.lang.Object)
+
+public java.lang.Object get(
+int)
+
+public void notifyException(
+java.lang.Throwable)
+
+public void notifyRegistrants()
+
+public void notifyRegistrants(
+android.os.AsyncResult)
+
+public void notifyResult(
+java.lang.Object)
+
+public void remove(
+android.os.Handler)
+
+public void removeCleared()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =18 name =Callback )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/RemoteCallbackList; )
+final class android.os.RemoteCallbackList$Callback extends java.lang.Object implements android.os.IBinder$DeathRecipient
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =TE; )
+final android.os.IInterface mCallback
+
+final android.os.RemoteCallbackList this$0
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TE;)V )
+ void <init>(
+android.os.RemoteCallbackList
+android.os.IInterface)
+
+public void binderDied()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/RemoteCallbackList$Callback; )
+@dalvik.annotation.Signature (value =<E::Landroid/os/IInterface;>Ljava/lang/Object; )
+public class android.os.RemoteCallbackList extends java.lang.Object
+
+----------------FIELDS----------------
+
+private android.os.IInterface[] mActiveBroadcast
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Landroid/os/IBinder;Landroid/os/RemoteCallbackList<TE;>.Callback;>; )
+ java.util.HashMap mCallbacks
+
+private boolean mKilled
+----------------METHODS----------------
+
+public void <init>()
+
+public int beginBroadcast()
+
+public void finishBroadcast()
+@dalvik.annotation.Signature (value =(I)TE; )
+public android.os.IInterface getBroadcastItem(
+int)
+
+public void kill()
+@dalvik.annotation.Signature (value =(TE;)V )
+public void onCallbackDied(
+android.os.IInterface)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean register(
+android.os.IInterface)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean unregister(
+android.os.IInterface)
+
+________________CLASS________________
+
+
+public class android.os.RemoteMailException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class android.os.ServiceManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Landroid/os/IBinder;>; )
+private static java.util.HashMap sCache
+
+private static android.os.IServiceManager sServiceManager
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static void addService(
+java.lang.String
+android.os.IBinder)
+
+public static android.os.IBinder checkService(
+java.lang.String)
+
+private static android.os.IServiceManager getIServiceManager()
+
+public static android.os.IBinder getService(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Landroid/os/IBinder;>;)V )
+public static void initServiceCache(
+java.util.Map)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public static java.lang.String[] listServices()
+
+________________CLASS________________
+
+
+public abstract class android.os.ServiceManagerNative extends android.os.Binder implements android.os.IServiceManager
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.os.IServiceManager asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+ class android.os.ServiceManagerProxy extends java.lang.Object implements android.os.IServiceManager
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+public void <init>(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void addService(
+java.lang.String
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.os.IBinder checkService(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.os.IBinder getService(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String[] listServices()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setPermissionController(
+android.os.IPermissionController)
+
+________________CLASS________________
+
+
+public class android.os.StatFs extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int mNativeContext
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+private native void native_finalize()
+
+private native void native_restat(
+java.lang.String)
+
+private native void native_setup(
+java.lang.String)
+
+protected void finalize()
+
+public native int getAvailableBlocks()
+
+public native int getBlockCount()
+
+public native int getBlockSize()
+
+public native int getFreeBlocks()
+
+public void restat(
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class android.os.SystemClock extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static native long currentThreadTimeMillis()
+
+public static native long elapsedRealtime()
+
+public static native boolean setCurrentTimeMillis(
+long)
+
+public static void sleep(
+long)
+
+public static native long uptimeMillis()
+
+________________CLASS________________
+
+
+public class android.os.SystemProperties extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int PROP_NAME_MAX
+
+public static final int PROP_VALUE_MAX
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String get(
+java.lang.String)
+
+public static java.lang.String get(
+java.lang.String
+java.lang.String)
+
+public static boolean getBoolean(
+java.lang.String
+boolean)
+
+public static int getInt(
+java.lang.String
+int)
+
+public static long getLong(
+java.lang.String
+long)
+
+private static native java.lang.String native_get(
+java.lang.String)
+
+private static native java.lang.String native_get(
+java.lang.String
+java.lang.String)
+
+private static native void native_set(
+java.lang.String
+java.lang.String)
+
+public static void set(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.os.SystemService extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static void start(
+java.lang.String)
+
+public static void stop(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/os/TokenWatcher; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.os.TokenWatcher$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.os.TokenWatcher this$0
+----------------METHODS----------------
+
+ void <init>(
+android.os.TokenWatcher)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/os/TokenWatcher; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =Death )
+ class android.os.TokenWatcher$Death extends java.lang.Object implements android.os.IBinder$DeathRecipient
+
+----------------FIELDS----------------
+
+ java.lang.String tag
+
+final android.os.TokenWatcher this$0
+
+ android.os.IBinder token
+----------------METHODS----------------
+
+ void <init>(
+android.os.TokenWatcher
+android.os.IBinder
+java.lang.String)
+
+public void binderDied()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/TokenWatcher$Death; )
+public abstract class android.os.TokenWatcher extends java.lang.Object
+
+----------------FIELDS----------------
+
+private volatile boolean mAcquired
+
+private android.os.Handler mHandler
+
+private int mNotificationQueue
+
+private java.lang.Runnable mNotificationTask
+
+private java.lang.String mTag
+@dalvik.annotation.Signature (value =Ljava/util/WeakHashMap<Landroid/os/IBinder;Landroid/os/TokenWatcher$Death;>; )
+private java.util.WeakHashMap mTokens
+----------------METHODS----------------
+
+public void <init>(
+android.os.Handler
+java.lang.String)
+
+static java.util.WeakHashMap access$000(
+android.os.TokenWatcher)
+
+static int access$100(
+android.os.TokenWatcher)
+
+static int access$102(
+android.os.TokenWatcher
+int)
+
+static java.lang.String access$200(
+android.os.TokenWatcher)
+
+private void sendNotificationLocked(
+boolean)
+
+public void acquire(
+android.os.IBinder
+java.lang.String)
+
+public abstract void acquired()
+
+public void cleanup(
+android.os.IBinder
+boolean)
+
+public void dump()
+
+public boolean isAcquired()
+
+public void release(
+android.os.IBinder)
+
+public abstract void released()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/os/UEventObserver; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =UEvent )
+public class android.os.UEventObserver$UEvent extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>; )
+public java.util.HashMap mMap
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public java.lang.String get(
+java.lang.String)
+
+public java.lang.String get(
+java.lang.String
+java.lang.String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =UEventThread )
+@dalvik.annotation.EnclosingClass (value =Landroid/os/UEventObserver; )
+ class android.os.UEventObserver$UEventThread extends java.lang.Thread
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/Object;>; )
+private java.util.ArrayList mObservers
+----------------METHODS----------------
+
+ void <init>()
+
+public void addObserver(
+java.lang.String
+android.os.UEventObserver)
+
+public void removeObserver(
+android.os.UEventObserver)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/os/UEventObserver$UEventThread;Landroid/os/UEventObserver$UEvent; )
+public abstract class android.os.UEventObserver extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private static android.os.UEventObserver$UEventThread sThread
+
+private static boolean sThreadStarted
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static void access$000()
+
+static int access$100(
+byte[])
+
+private static final void ensureThreadStarted()
+
+private static native void native_setup()
+
+private static native int next_event(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public abstract void onUEvent(
+android.os.UEventObserver$UEvent)
+
+public final void startObserving(
+java.lang.String)
+
+public final void stopObserving()
+
+________________CLASS________________
+
+
+public class android.os.Vibrator extends java.lang.Object
+
+----------------FIELDS----------------
+
+ android.os.IHardwareService mService
+----------------METHODS----------------
+
+public void <init>()
+
+public void cancel()
+
+public void vibrate(
+long)
+
+public void vibrate(
+long[]
+int)
+
+________________CLASS________________
+
+
+ class android.os.ZygoteStartFailedEx extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+ void <init>(
+java.lang.String)
+
+ void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/pim/ContactsAsyncHelper; )
+ class android.pim.ContactsAsyncHelper$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/pim/ContactsAsyncHelper; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =ImageTracker )
+public class android.pim.ContactsAsyncHelper$ImageTracker extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int DISPLAY_DEFAULT
+
+public static final int DISPLAY_IMAGE
+
+public static final int DISPLAY_UNDEFINED
+
+private int displayMode
+
+private com.android.internal.telephony.CallerInfo mCurrentCallerInfo
+----------------METHODS----------------
+
+public void <init>()
+
+public int getPhotoState()
+
+public android.net.Uri getPhotoUri()
+
+public boolean isDifferentImageRequest(
+com.android.internal.telephony.CallerInfo)
+
+public boolean isDifferentImageRequest(
+com.android.internal.telephony.Connection)
+
+public void setPhotoRequest(
+com.android.internal.telephony.CallerInfo)
+
+public void setPhotoState(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnImageLoadCompleteListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/pim/ContactsAsyncHelper; )
+public abstract interface class android.pim.ContactsAsyncHelper$OnImageLoadCompleteListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onImageLoadComplete(
+int
+java.lang.Object
+android.widget.ImageView
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/pim/ContactsAsyncHelper; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =WorkerArgs )
+final class android.pim.ContactsAsyncHelper$WorkerArgs extends java.lang.Object
+
+----------------FIELDS----------------
+
+public android.content.Context context
+
+public java.lang.Object cookie
+
+public int defaultResource
+
+public com.android.internal.telephony.CallerInfo info
+
+public android.pim.ContactsAsyncHelper$OnImageLoadCompleteListener listener
+
+public java.lang.Object result
+
+public android.net.Uri uri
+
+public android.widget.ImageView view
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.pim.ContactsAsyncHelper$1)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/pim/ContactsAsyncHelper; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =WorkerHandler )
+ class android.pim.ContactsAsyncHelper$WorkerHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.pim.ContactsAsyncHelper this$0
+----------------METHODS----------------
+
+public void <init>(
+android.pim.ContactsAsyncHelper
+android.os.Looper)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/pim/ContactsAsyncHelper$1;Landroid/pim/ContactsAsyncHelper$WorkerHandler;Landroid/pim/ContactsAsyncHelper$ImageTracker;Landroid/pim/ContactsAsyncHelper$WorkerArgs;Landroid/pim/ContactsAsyncHelper$OnImageLoadCompleteListener; )
+public class android.pim.ContactsAsyncHelper extends android.os.Handler
+
+----------------FIELDS----------------
+
+private static final boolean DBG
+
+private static final int DEFAULT_TOKEN
+
+private static final int EVENT_LOAD_IMAGE
+
+private static final java.lang.String LOG_TAG
+
+private static android.pim.ContactsAsyncHelper sInstance
+
+private static android.os.Handler sThreadHandler
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static final void updateImageViewWithContactPhotoAsync(
+android.content.Context
+android.widget.ImageView
+android.net.Uri
+int)
+
+public static final void updateImageViewWithContactPhotoAsync(
+com.android.internal.telephony.CallerInfo
+int
+android.pim.ContactsAsyncHelper$OnImageLoadCompleteListener
+java.lang.Object
+android.content.Context
+android.widget.ImageView
+android.net.Uri
+int)
+
+public static final void updateImageViewWithContactPhotoAsync(
+com.android.internal.telephony.CallerInfo
+android.content.Context
+android.widget.ImageView
+android.net.Uri
+int)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+
+public class android.pim.DateException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.pim.DateFormat extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final char AM_PM
+
+public static final char CAPITAL_AM_PM
+
+public static final char DATE
+
+public static final char DAY
+
+public static final char HOUR
+
+public static final char HOUR_OF_DAY
+
+public static final char MINUTE
+
+public static final char MONTH
+
+public static final char QUOTE
+
+public static final char SECONDS
+
+public static final char TIME_ZONE
+
+public static final char YEAR
+----------------METHODS----------------
+
+public void <init>()
+
+private static final int appendQuotedText(
+android.text.SpannableStringBuilder
+int
+int)
+
+public static final java.lang.CharSequence format(
+java.lang.CharSequence
+long)
+
+public static final java.lang.CharSequence format(
+java.lang.CharSequence
+java.util.Calendar)
+
+public static final java.lang.CharSequence format(
+java.lang.CharSequence
+java.util.Date)
+
+private static final java.lang.String formatZoneOffset(
+int
+int)
+
+public static final java.text.DateFormat getDateFormat(
+android.content.Context)
+
+public static final char[] getDateFormatOrder(
+android.content.Context)
+
+private static java.lang.String getDateFormatString(
+android.content.Context)
+
+public static final java.text.DateFormat getLongDateFormat(
+android.content.Context)
+
+private static final java.lang.String getMonthString(
+java.util.Calendar
+int)
+
+public static final java.text.DateFormat getTimeFormat(
+android.content.Context)
+
+private static final java.lang.String getTimeZoneString(
+java.util.Calendar
+int)
+
+private static final java.lang.String getYearString(
+java.util.Calendar
+int)
+
+public static boolean is24HourFormat(
+android.content.Context)
+
+private static final java.lang.String zeroPad(
+int
+int)
+
+________________CLASS________________
+
+
+public class android.pim.DateUtils extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ABBREV_MONTH_FORMAT
+
+public static final java.lang.String ABBREV_WEEKDAY_FORMAT
+
+public static final long DAY_IN_MILLIS
+
+private static final java.lang.String FAST_FORMAT_HMMSS
+
+private static final java.lang.String FAST_FORMAT_MMSS
+
+public static final int FORMAT_24HOUR
+
+public static final int FORMAT_ABBREV_ALL
+
+public static final int FORMAT_ABBREV_MONTH
+
+public static final int FORMAT_ABBREV_TIME
+
+public static final int FORMAT_ABBREV_WEEKDAY
+
+public static final int FORMAT_CAP_AMPM
+
+public static final int FORMAT_CAP_MIDNIGHT
+
+public static final int FORMAT_CAP_NOON
+
+public static final int FORMAT_CAP_NOON_MIDNIGHT
+
+public static final int FORMAT_NO_MIDNIGHT
+
+public static final int FORMAT_NO_MONTH_DAY
+
+public static final int FORMAT_NO_NOON
+
+public static final int FORMAT_NO_NOON_MIDNIGHT
+
+public static final int FORMAT_NO_YEAR
+
+public static final int FORMAT_NUMERIC_DATE
+
+public static final int FORMAT_SHOW_DATE
+
+public static final int FORMAT_SHOW_TIME
+
+public static final int FORMAT_SHOW_WEEKDAY
+
+public static final int FORMAT_SHOW_YEAR
+
+public static final int FORMAT_UTC
+
+public static final java.lang.String HOUR_AMPM
+
+public static final java.lang.String HOUR_CAP_AMPM
+
+public static final long HOUR_IN_MILLIS
+
+public static final java.lang.String HOUR_MINUTE_24
+
+public static final java.lang.String HOUR_MINUTE_AMPM
+
+public static final java.lang.String HOUR_MINUTE_CAP_AMPM
+
+public static final int LENGTH_LONG
+
+public static final int LENGTH_MEDIUM
+
+public static final int LENGTH_SHORT
+
+public static final int LENGTH_SHORTER
+
+public static final int LENGTH_SHORTEST
+
+public static final long MINUTE_IN_MILLIS
+
+public static final java.lang.String MONTH_DAY_FORMAT
+
+public static final java.lang.String MONTH_FORMAT
+
+public static final java.lang.String NUMERIC_MONTH_FORMAT
+
+public static final long SECOND_IN_MILLIS
+
+private static final java.lang.String TAG
+
+private static final char TIME_PADDING
+
+private static final char TIME_SEPARATOR
+
+public static final java.lang.String WEEKDAY_FORMAT
+
+public static final long WEEK_IN_MILLIS
+
+public static final java.lang.String YEAR_FORMAT
+
+public static final java.lang.String YEAR_FORMAT_TWO_DIGITS
+
+public static final long YEAR_IN_MILLIS
+
+private static final int[] sAmPm
+
+private static final int[] sDaysLong
+
+private static final int[] sDaysMedium
+
+private static final int[] sDaysShort
+
+private static final int[] sDaysShorter
+
+private static final int[] sDaysShortest
+
+private static java.lang.String sElapsedFormatHMMSS
+
+private static java.lang.String sElapsedFormatMMSS
+
+private static int sFirstDay
+
+private static android.content.res.Configuration sLastConfig
+
+private static final java.lang.Object sLock
+
+private static java.lang.String sMonthDayFormat
+
+private static final int[] sMonthsLong
+
+private static final int[] sMonthsMedium
+
+private static final int[] sMonthsShortest
+
+private static android.pim.Time sNowTime
+
+private static java.lang.String sStatusDateFormat
+
+private static java.lang.String sStatusTimeFormat
+
+private static android.pim.Time sThenTime
+
+public static final int[] sameMonthTable
+
+public static final int[] sameYearTable
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static void assign(
+java.util.Calendar
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Landroid/pim/DateException; )
+private static final int check(
+int
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/pim/DateException; )
+private static final int ctoi(
+java.lang.String
+int)
+
+public static final java.lang.CharSequence dateString(
+long)
+
+public static java.lang.String formatDateRange(
+long
+long
+int)
+
+public static java.lang.String formatElapsedTime(
+long)
+
+private static java.lang.String formatElapsedTime(
+java.lang.String
+long
+long)
+
+private static java.lang.String formatElapsedTime(
+java.lang.String
+long
+long
+long)
+
+public static final java.lang.CharSequence formatSameDayTime(
+long
+long
+int
+int)
+
+public static java.lang.String getAMPMString(
+int)
+
+public static java.lang.String getDayOfWeekString(
+int
+int)
+
+public static java.lang.String getMonthString(
+int
+int)
+
+private static java.lang.String getPrepositionDate(
+android.content.res.Resources
+android.pim.Time
+int
+java.lang.String
+boolean)
+
+private static final java.lang.String getRelativeDayString(
+android.content.res.Resources
+long
+long)
+
+public static java.lang.CharSequence getRelativeTimeSpanString(
+long)
+
+public static java.lang.CharSequence getRelativeTimeSpanString(
+long
+long
+long)
+
+public static java.lang.CharSequence getRelativeTimeSpanString(
+long
+long
+long
+java.lang.String
+java.lang.String)
+
+public static java.lang.CharSequence getRelativeTimeSpanString(
+android.content.Context
+long)
+
+public static java.lang.CharSequence getRelativeTimeSpanString(
+android.content.Context
+long
+boolean)
+
+private static void initFormatStrings()
+
+public static boolean isToday(
+long)
+
+public static boolean isUTC(
+java.lang.String)
+
+public static java.util.Calendar newCalendar(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/pim/DateException; )
+public static void parseDateTime(
+java.lang.String
+java.lang.String
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Landroid/pim/DateException; )
+public static boolean parseDateTime(
+java.lang.String
+java.util.Calendar)
+
+private static final java.lang.String pluralizedSpan(
+long
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public static final java.lang.CharSequence timeString(
+long)
+
+private static char toDigitChar(
+long)
+
+public static java.lang.String writeDateTime(
+java.util.Calendar)
+
+public static java.lang.String writeDateTime(
+java.util.Calendar
+java.lang.StringBuilder)
+
+public static java.lang.String writeDateTime(
+java.util.Calendar
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =InvalidFormatException )
+@dalvik.annotation.EnclosingClass (value =Landroid/pim/EventRecurrence; )
+public class android.pim.EventRecurrence$InvalidFormatException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/pim/EventRecurrence$InvalidFormatException; )
+public class android.pim.EventRecurrence extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int DAILY
+
+public static final int FR
+
+public static final int HOURLY
+
+public static final int MINUTELY
+
+public static final int MO
+
+public static final int MONTHLY
+
+public static final int SA
+
+public static final int SECONDLY
+
+public static final int SU
+
+public static final int TH
+
+public static final int TU
+
+public static final int WE
+
+public static final int WEEKLY
+
+public static final int YEARLY
+
+public int[] byday
+
+public int bydayCount
+
+public int[] bydayNum
+
+public int[] byhour
+
+public int byhourCount
+
+public int[] byminute
+
+public int byminuteCount
+
+public int[] bymonth
+
+public int bymonthCount
+
+public int[] bymonthday
+
+public int bymonthdayCount
+
+public int[] bysecond
+
+public int bysecondCount
+
+public int[] bysetpos
+
+public int bysetposCount
+
+public int[] byweekno
+
+public int byweeknoCount
+
+public int[] byyearday
+
+public int byyeardayCount
+
+public int count
+
+public int freq
+
+public int interval
+
+public android.pim.Time startDate
+
+public java.lang.String until
+
+public int wkst
+----------------METHODS----------------
+
+public void <init>()
+
+private void appendByDay(
+java.lang.StringBuilder
+int)
+
+private static void appendNumbers(
+java.lang.StringBuilder
+java.lang.String
+int
+int[])
+
+public static int calendarDay2Day(
+int)
+
+public static int day2CalendarDay(
+int)
+
+private static java.lang.String day2String(
+int)
+
+public static int day2TimeDay(
+int)
+
+private java.lang.String dayToString(
+android.content.res.Resources
+int)
+
+public static int timeDay2Day(
+int)
+
+public java.lang.String getRepeatString()
+
+public native void parse(
+java.lang.String)
+
+public boolean repeatsMonthlyOnDayCount()
+
+public boolean repeatsOnEveryWeekDay()
+
+public void setStartDate(
+android.pim.Time)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/pim/ICalendar; )
+ class android.pim.ICalendar$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Component )
+@dalvik.annotation.EnclosingClass (value =Landroid/pim/ICalendar; )
+public class android.pim.ICalendar$Component extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String BEGIN
+
+private static final java.lang.String END
+
+private static final java.lang.String NEWLINE
+
+public static final java.lang.String VALARM
+
+public static final java.lang.String VCALENDAR
+
+public static final java.lang.String VEVENT
+
+public static final java.lang.String VFREEBUSY
+
+public static final java.lang.String VJOURNAL
+
+public static final java.lang.String VTIMEZONE
+
+public static final java.lang.String VTODO
+@dalvik.annotation.Signature (value =Ljava/util/LinkedList<Landroid/pim/ICalendar$Component;>; )
+private java.util.LinkedList mChildren
+
+private final java.lang.String mName
+
+private final android.pim.ICalendar$Component mParent
+@dalvik.annotation.Signature (value =Ljava/util/LinkedHashMap<Ljava/lang/String;Ljava/util/ArrayList<Landroid/pim/ICalendar$Property;>;>; )
+private final java.util.LinkedHashMap mPropsMap
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+android.pim.ICalendar$Component)
+
+public void addChild(
+android.pim.ICalendar$Component)
+
+public void addProperty(
+android.pim.ICalendar$Property)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Landroid/pim/ICalendar$Component;>; )
+public java.util.List getComponents()
+
+public android.pim.ICalendar$Property getFirstProperty(
+java.lang.String)
+
+public java.lang.String getName()
+@dalvik.annotation.Signature (value =()Ljava/util/LinkedList<Landroid/pim/ICalendar$Component;>; )
+protected java.util.LinkedList getOrCreateChildren()
+
+public android.pim.ICalendar$Component getParent()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/List<Landroid/pim/ICalendar$Property;>; )
+public java.util.List getProperties(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public java.util.Set getPropertyNames()
+
+public java.lang.String toString()
+
+public void toString(
+java.lang.StringBuilder)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =FormatException )
+@dalvik.annotation.EnclosingClass (value =Landroid/pim/ICalendar; )
+public class android.pim.ICalendar$FormatException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/pim/ICalendar; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Parameter )
+public class android.pim.ICalendar$Parameter extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String name
+
+public java.lang.String value
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public java.lang.String toString()
+
+public void toString(
+java.lang.StringBuilder)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/pim/ICalendar; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =ParserState )
+final class android.pim.ICalendar$ParserState extends java.lang.Object
+
+----------------FIELDS----------------
+
+public int index
+
+public java.lang.String line
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.pim.ICalendar$1)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/pim/ICalendar; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Property )
+public class android.pim.ICalendar$Property extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String DTEND
+
+public static final java.lang.String DTSTART
+
+public static final java.lang.String DURATION
+
+public static final java.lang.String EXDATE
+
+public static final java.lang.String EXRULE
+
+public static final java.lang.String RDATE
+
+public static final java.lang.String RRULE
+
+private final java.lang.String mName
+@dalvik.annotation.Signature (value =Ljava/util/LinkedHashMap<Ljava/lang/String;Ljava/util/ArrayList<Landroid/pim/ICalendar$Parameter;>;>; )
+private java.util.LinkedHashMap mParamsMap
+
+private java.lang.String mValue
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public void addParameter(
+android.pim.ICalendar$Parameter)
+
+public android.pim.ICalendar$Parameter getFirstParameter(
+java.lang.String)
+
+public java.lang.String getName()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public java.util.Set getParameterNames()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/List<Landroid/pim/ICalendar$Parameter;>; )
+public java.util.List getParameters(
+java.lang.String)
+
+public java.lang.String getValue()
+
+public void setValue(
+java.lang.String)
+
+public java.lang.String toString()
+
+public void toString(
+java.lang.StringBuilder)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/pim/ICalendar$1;Landroid/pim/ICalendar$ParserState;Landroid/pim/ICalendar$Parameter;Landroid/pim/ICalendar$Property;Landroid/pim/ICalendar$Component;Landroid/pim/ICalendar$FormatException; )
+public class android.pim.ICalendar extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+private void <init>()
+@dalvik.annotation.Throws (value =Landroid/pim/ICalendar$FormatException; )
+private static android.pim.ICalendar$Parameter extractParameter(
+android.pim.ICalendar$ParserState)
+@dalvik.annotation.Throws (value =Landroid/pim/ICalendar$FormatException; )
+private static java.lang.String extractValue(
+android.pim.ICalendar$ParserState)
+
+private static java.lang.String normalizeText(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/pim/ICalendar$FormatException; )
+public static android.pim.ICalendar$Component parseCalendar(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/pim/ICalendar$FormatException; )
+public static android.pim.ICalendar$Component parseComponent(
+android.pim.ICalendar$Component
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/pim/ICalendar$FormatException; )
+public static android.pim.ICalendar$Component parseComponent(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/pim/ICalendar$FormatException; )
+private static android.pim.ICalendar$Component parseComponentImpl(
+android.pim.ICalendar$Component
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/pim/ICalendar$FormatException; )
+public static android.pim.ICalendar$Component parseEvent(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/pim/ICalendar$FormatException; )
+private static android.pim.ICalendar$Component parseLine(
+java.lang.String
+android.pim.ICalendar$ParserState
+android.pim.ICalendar$Component)
+
+________________CLASS________________
+
+
+public class android.pim.RecurrenceSet extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String RULE_SEPARATOR
+
+private static final java.lang.String TAG
+
+public long[] exdates
+
+public android.pim.EventRecurrence[] exrules
+
+public long[] rdates
+
+public android.pim.EventRecurrence[] rrules
+----------------METHODS----------------
+
+public void <init>(
+android.content.ContentValues)
+
+public void <init>(
+android.database.Cursor)
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private static void addPropertiesForRuleStr(
+android.pim.ICalendar$Component
+java.lang.String
+java.lang.String)
+
+private static void addPropertyForDateStr(
+android.pim.ICalendar$Component
+java.lang.String
+java.lang.String)
+
+private static java.lang.String computeDuration(
+android.pim.Time
+android.pim.ICalendar$Component)
+
+private static java.lang.String extractDates(
+android.pim.ICalendar$Property)
+
+private static java.lang.String flattenProperties(
+android.pim.ICalendar$Component
+java.lang.String)
+
+private void init(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public static long[] parseRecurrenceDates(
+java.lang.String)
+
+public static boolean populateComponent(
+android.database.Cursor
+android.pim.ICalendar$Component)
+
+public static boolean populateContentValues(
+android.pim.ICalendar$Component
+android.content.ContentValues)
+
+public boolean hasRecurrence()
+
+________________CLASS________________
+
+
+public class android.pim.Time extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int[] DAYS_PER_MONTH
+
+public static final int EPOCH_JULIAN_DAY
+
+public static final int FRIDAY
+
+public static final int HOUR
+
+public static final int MINUTE
+
+public static final int MONDAY
+
+public static final int MONTH
+
+public static final int MONTH_DAY
+
+public static final int SATURDAY
+
+public static final int SECOND
+
+public static final int SUNDAY
+
+public static final int THURSDAY
+
+public static final java.lang.String TIMEZONE_UTC
+
+public static final int TUESDAY
+
+public static final int WEDNESDAY
+
+public static final int WEEK_DAY
+
+public static final int WEEK_NUM
+
+public static final int YEAR
+
+public static final int YEAR_DAY
+
+private static final int[] sThursdayOffset
+
+public boolean allDay
+
+public long gmtoff
+
+public int hour
+
+public int isDst
+
+public int minute
+
+public int month
+
+public int monthDay
+
+public int second
+
+public java.lang.String timezone
+
+public int weekDay
+
+public int year
+
+public int yearDay
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+android.pim.Time)
+
+public void <init>(
+java.lang.String)
+
+public static native int compare(
+android.pim.Time
+android.pim.Time)
+
+public static java.lang.String getCurrentTimezone()
+
+public static int getJulianDay(
+long
+long)
+
+public static boolean isEpoch(
+android.pim.Time)
+
+private native boolean nativeParse2445(
+java.lang.String)
+
+private native boolean nativeParse3339(
+java.lang.String)
+
+public boolean after(
+android.pim.Time)
+
+public boolean before(
+android.pim.Time)
+
+public void clear(
+java.lang.String)
+
+public native java.lang.String format(
+java.lang.String)
+
+public native java.lang.String format2445()
+
+public java.lang.String format3339(
+boolean)
+
+public int getActualMaximum(
+int)
+
+public int getWeekNumber()
+
+public native long normalize(
+boolean)
+
+public native void parse(
+java.lang.String)
+
+public boolean parse2445(
+java.lang.String)
+
+public boolean parse3339(
+java.lang.String)
+
+public void set(
+int
+int
+int)
+
+public void set(
+int
+int
+int
+int
+int
+int)
+
+public native void set(
+long)
+
+public void set(
+android.pim.Time)
+
+public long setJulianDay(
+int)
+
+public native void setToNow()
+
+public native void switchTimezone(
+java.lang.String)
+
+public native long toMillis(
+boolean)
+
+public native java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/CheckBoxPreference$SavedState; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/preference/CheckBoxPreference$SavedState;>; )
+final class android.preference.CheckBoxPreference$SavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.preference.CheckBoxPreference$SavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.preference.CheckBoxPreference$SavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public abstract class android.view.AbsSavedState extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/view/AbsSavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final android.view.AbsSavedState EMPTY_STATE
+
+private final android.os.Parcelable mSuperState
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+protected void <init>(
+android.os.Parcel)
+
+protected void <init>(
+android.os.Parcelable)
+
+ void <init>(
+android.view.AbsSavedState$1)
+
+public int describeContents()
+
+public final android.os.Parcelable getSuperState()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =BaseSavedState )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/Preference; )
+public class android.preference.Preference$BaseSavedState extends android.view.AbsSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/preference/Preference$BaseSavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.os.Parcel)
+
+public void <init>(
+android.os.Parcelable)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =SavedState )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/CheckBoxPreference; )
+ class android.preference.CheckBoxPreference$SavedState extends android.preference.Preference$BaseSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/preference/CheckBoxPreference$SavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+ boolean checked
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.os.Parcel)
+
+public void <init>(
+android.os.Parcelable)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+abstract interface class android.preference.OnDependencyChangeListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onDependencyChanged(
+android.preference.Preference
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/lang/Comparable<Landroid/preference/Preference;>;Landroid/preference/OnDependencyChangeListener; )
+@dalvik.annotation.MemberClasses (value =Landroid/preference/Preference$BaseSavedState;Landroid/preference/Preference$OnPreferenceChangeInternalListener;Landroid/preference/Preference$OnPreferenceClickListener;Landroid/preference/Preference$OnPreferenceChangeListener; )
+public class android.preference.Preference extends java.lang.Object implements java.lang.Comparable, android.preference.OnDependencyChangeListener
+
+----------------FIELDS----------------
+
+public static final int DEFAULT_ORDER
+
+private boolean mBaseMethodCalled
+
+private android.content.Context mContext
+
+private java.lang.Object mDefaultValue
+
+private java.lang.String mDependencyKey
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/preference/Preference;>; )
+private java.util.List mDependents
+
+private boolean mEnabled
+
+private boolean mHasSpecifiedLayout
+
+private long mId
+
+private android.content.Intent mIntent
+
+private java.lang.String mKey
+
+private int mLayoutResId
+
+private android.preference.Preference$OnPreferenceChangeInternalListener mListener
+
+private android.preference.Preference$OnPreferenceChangeListener mOnChangeListener
+
+private android.preference.Preference$OnPreferenceClickListener mOnClickListener
+
+private int mOrder
+
+private boolean mPersistent
+
+private android.preference.PreferenceManager mPreferenceManager
+
+private boolean mRequiresKey
+
+private boolean mSelectable
+
+private boolean mShouldDisableView
+
+private java.lang.CharSequence mSummary
+
+private java.lang.CharSequence mTitle
+
+private int mWidgetLayoutResId
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+private void dispatchSetInitialValue()
+
+private void registerDependency()
+
+private void registerDependent(
+android.preference.Preference)
+
+private void setEnabledStateOnViews(
+android.view.View
+boolean)
+
+private void tryCommit(
+android.content.SharedPreferences$Editor)
+
+private void unregisterDependency()
+
+private void unregisterDependent(
+android.preference.Preference)
+
+protected boolean callChangeListener(
+java.lang.Object)
+
+public int compareTo(
+android.preference.Preference)
+
+public volatile int compareTo(
+java.lang.Object)
+
+ void dispatchRestoreInstanceState(
+android.os.Bundle)
+
+ void dispatchSaveInstanceState(
+android.os.Bundle)
+
+protected android.preference.Preference findPreferenceInHierarchy(
+java.lang.String)
+
+public android.content.Context getContext()
+
+public java.lang.String getDependency()
+
+public android.content.SharedPreferences$Editor getEditor()
+
+ java.lang.StringBuilder getFilterableStringBuilder()
+
+ long getId()
+
+public android.content.Intent getIntent()
+
+public java.lang.String getKey()
+
+public int getLayoutResource()
+
+public android.preference.Preference$OnPreferenceChangeListener getOnPreferenceChangeListener()
+
+public android.preference.Preference$OnPreferenceClickListener getOnPreferenceClickListener()
+
+public int getOrder()
+
+protected boolean getPersistedBoolean(
+boolean)
+
+protected float getPersistedFloat(
+float)
+
+protected int getPersistedInt(
+int)
+
+protected long getPersistedLong(
+long)
+
+protected java.lang.String getPersistedString(
+java.lang.String)
+
+public android.preference.PreferenceManager getPreferenceManager()
+
+public android.content.SharedPreferences getSharedPreferences()
+
+public boolean getShouldDisableView()
+
+public java.lang.CharSequence getSummary()
+
+public java.lang.CharSequence getTitle()
+
+public android.view.View getView(
+android.view.View
+android.view.ViewGroup)
+
+public int getWidgetLayoutResource()
+
+public boolean hasKey()
+
+ boolean hasSpecifiedLayout()
+
+public boolean isEnabled()
+
+public boolean isPersistent()
+
+public boolean isSelectable()
+
+protected void notifyChanged()
+
+public void notifyDependencyChange(
+boolean)
+
+protected void notifyHierarchyChanged()
+
+protected void onAttachedToActivity()
+
+protected void onAttachedToHierarchy(
+android.preference.PreferenceManager)
+
+protected void onBindView(
+android.view.View)
+
+protected void onClick()
+
+protected android.view.View onCreateView(
+android.view.ViewGroup)
+
+public void onDependencyChanged(
+android.preference.Preference
+boolean)
+
+protected java.lang.Object onGetDefaultValue(
+android.content.res.TypedArray
+int)
+
+protected void onPrepareForRemoval()
+
+protected void onRestoreInstanceState(
+android.os.Parcelable)
+
+protected android.os.Parcelable onSaveInstanceState()
+
+protected void onSetInitialValue(
+boolean
+java.lang.Object)
+
+ void performClick(
+android.preference.PreferenceScreen)
+
+protected boolean persistBoolean(
+boolean)
+
+protected boolean persistFloat(
+float)
+
+protected boolean persistInt(
+int)
+
+protected boolean persistLong(
+long)
+
+protected boolean persistString(
+java.lang.String)
+
+ void requireKey()
+
+public void restoreHierarchyState(
+android.os.Bundle)
+
+public void saveHierarchyState(
+android.os.Bundle)
+
+public void setDefaultValue(
+java.lang.Object)
+
+public void setDependency(
+java.lang.String)
+
+public void setEnabled(
+boolean)
+
+public void setIntent(
+android.content.Intent)
+
+public void setKey(
+java.lang.String)
+
+public void setLayoutResource(
+int)
+
+final void setOnPreferenceChangeInternalListener(
+android.preference.Preference$OnPreferenceChangeInternalListener)
+
+public void setOnPreferenceChangeListener(
+android.preference.Preference$OnPreferenceChangeListener)
+
+public void setOnPreferenceClickListener(
+android.preference.Preference$OnPreferenceClickListener)
+
+public void setOrder(
+int)
+
+public void setPersistent(
+boolean)
+
+public void setSelectable(
+boolean)
+
+public void setShouldDisableView(
+boolean)
+
+public void setSummary(
+int)
+
+public void setSummary(
+java.lang.CharSequence)
+
+public void setTitle(
+int)
+
+public void setTitle(
+java.lang.CharSequence)
+
+public void setWidgetLayoutResource(
+int)
+
+public boolean shouldCommit()
+
+public boolean shouldDisableDependents()
+
+protected boolean shouldPersist()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/preference/CheckBoxPreference$SavedState; )
+public class android.preference.CheckBoxPreference extends android.preference.Preference
+
+----------------FIELDS----------------
+
+private boolean mChecked
+
+private boolean mDisableDependentsState
+
+private java.lang.CharSequence mSummaryOff
+
+private java.lang.CharSequence mSummaryOn
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+public boolean getDisableDependentsState()
+
+public java.lang.CharSequence getSummaryOff()
+
+public java.lang.CharSequence getSummaryOn()
+
+public boolean isChecked()
+
+protected void onBindView(
+android.view.View)
+
+protected void onClick()
+
+protected java.lang.Object onGetDefaultValue(
+android.content.res.TypedArray
+int)
+
+protected void onRestoreInstanceState(
+android.os.Parcelable)
+
+protected android.os.Parcelable onSaveInstanceState()
+
+protected void onSetInitialValue(
+boolean
+java.lang.Object)
+
+public void setChecked(
+boolean)
+
+public void setDisableDependentsState(
+boolean)
+
+public void setSummaryOff(
+int)
+
+public void setSummaryOff(
+java.lang.CharSequence)
+
+public void setSummaryOn(
+int)
+
+public void setSummaryOn(
+java.lang.CharSequence)
+
+public boolean shouldDisableDependents()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/preference/DialogPreference$SavedState;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/DialogPreference$SavedState; )
+final class android.preference.DialogPreference$SavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.preference.DialogPreference$SavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.preference.DialogPreference$SavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =SavedState )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/DialogPreference; )
+ class android.preference.DialogPreference$SavedState extends android.preference.Preference$BaseSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/preference/DialogPreference$SavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+ android.os.Bundle dialogBundle
+
+ boolean isDialogShowing
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.os.Parcel)
+
+public void <init>(
+android.os.Parcelable)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnActivityDestroyListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/PreferenceManager; )
+public abstract interface class android.preference.PreferenceManager$OnActivityDestroyListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onActivityDestroy()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/preference/DialogPreference$SavedState; )
+public abstract class android.preference.DialogPreference extends android.preference.Preference implements android.content.DialogInterface$OnClickListener, android.content.DialogInterface$OnDismissListener, android.preference.PreferenceManager$OnActivityDestroyListener
+
+----------------FIELDS----------------
+
+private android.app.AlertDialog$Builder mBuilder
+
+private android.app.Dialog mDialog
+
+private android.graphics.drawable.Drawable mDialogIcon
+
+private int mDialogLayoutResId
+
+private java.lang.CharSequence mDialogMessage
+
+private java.lang.CharSequence mDialogTitle
+
+private java.lang.CharSequence mNegativeButtonText
+
+private java.lang.CharSequence mPositiveButtonText
+
+private int mWhichButtonClicked
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+public android.graphics.drawable.Drawable getDialogIcon()
+
+public int getDialogLayoutResource()
+
+public java.lang.CharSequence getDialogMessage()
+
+public java.lang.CharSequence getDialogTitle()
+
+public java.lang.CharSequence getNegativeButtonText()
+
+public java.lang.CharSequence getPositiveButtonText()
+
+public void onActivityDestroy()
+
+protected void onBindDialogView(
+android.view.View)
+
+protected void onClick()
+
+public void onClick(
+android.content.DialogInterface
+int)
+
+protected android.view.View onCreateDialogView()
+
+protected void onDialogClosed(
+boolean)
+
+public void onDismiss(
+android.content.DialogInterface)
+
+protected void onPrepareDialogBuilder(
+android.app.AlertDialog$Builder)
+
+protected void onRestoreInstanceState(
+android.os.Parcelable)
+
+protected android.os.Parcelable onSaveInstanceState()
+
+public void setDialogIcon(
+int)
+
+public void setDialogIcon(
+android.graphics.drawable.Drawable)
+
+public void setDialogLayoutResource(
+int)
+
+public void setDialogMessage(
+int)
+
+public void setDialogMessage(
+java.lang.CharSequence)
+
+public void setDialogTitle(
+int)
+
+public void setDialogTitle(
+java.lang.CharSequence)
+
+public void setNegativeButtonText(
+int)
+
+public void setNegativeButtonText(
+java.lang.CharSequence)
+
+public void setPositiveButtonText(
+int)
+
+public void setPositiveButtonText(
+java.lang.CharSequence)
+
+protected void showDialog(
+android.os.Bundle)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/EditTextPreference$SavedState; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/preference/EditTextPreference$SavedState;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.preference.EditTextPreference$SavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.preference.EditTextPreference$SavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.preference.EditTextPreference$SavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =SavedState )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/EditTextPreference; )
+ class android.preference.EditTextPreference$SavedState extends android.preference.Preference$BaseSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/preference/EditTextPreference$SavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+ java.lang.String text
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.os.Parcel)
+
+public void <init>(
+android.os.Parcelable)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/preference/EditTextPreference$SavedState; )
+public class android.preference.EditTextPreference extends android.preference.DialogPreference
+
+----------------FIELDS----------------
+
+private android.widget.EditText mEditText
+
+private java.lang.String mText
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+public android.widget.EditText getEditText()
+
+public java.lang.String getText()
+
+protected void onAddEditTextToDialogView(
+android.view.View
+android.widget.EditText)
+
+protected void onBindDialogView(
+android.view.View)
+
+protected void onDialogClosed(
+boolean)
+
+protected java.lang.Object onGetDefaultValue(
+android.content.res.TypedArray
+int)
+
+protected void onRestoreInstanceState(
+android.os.Parcelable)
+
+protected android.os.Parcelable onSaveInstanceState()
+
+protected void onSetInitialValue(
+boolean
+java.lang.Object)
+
+public void setText(
+java.lang.String)
+
+public boolean shouldDisableDependents()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Factory )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/GenericInflater; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract interface class android.preference.GenericInflater$Factory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)TT; )
+public abstract java.lang.Object onCreateItem(
+java.lang.String
+android.content.Context
+android.util.AttributeSet)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =FactoryMerger )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object;Landroid/preference/GenericInflater$Factory<TT;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/GenericInflater; )
+ class android.preference.GenericInflater$FactoryMerger extends java.lang.Object implements android.preference.GenericInflater$Factory
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/preference/GenericInflater$Factory<TT;>; )
+private final android.preference.GenericInflater$Factory mF1
+@dalvik.annotation.Signature (value =Landroid/preference/GenericInflater$Factory<TT;>; )
+private final android.preference.GenericInflater$Factory mF2
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Landroid/preference/GenericInflater$Factory<TT;>;Landroid/preference/GenericInflater$Factory<TT;>;)V )
+ void <init>(
+android.preference.GenericInflater$Factory
+android.preference.GenericInflater$Factory)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)TT; )
+public java.lang.Object onCreateItem(
+java.lang.String
+android.content.Context
+android.util.AttributeSet)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/GenericInflater; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Parent )
+public abstract interface class android.preference.GenericInflater$Parent extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TT;)V )
+public abstract void addItemFromInflater(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/preference/GenericInflater$FactoryMerger;Landroid/preference/GenericInflater$Factory;Landroid/preference/GenericInflater$Parent; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;P::Landroid/preference/GenericInflater$Parent;>Ljava/lang/Object; )
+abstract class android.preference.GenericInflater extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.Class[] mConstructorSignature
+
+private static final java.util.HashMap sConstructorMap
+
+private final boolean DEBUG
+
+private final java.lang.Object[] mConstructorArgs
+
+protected final android.content.Context mContext
+
+private java.lang.String mDefaultPackage
+@dalvik.annotation.Signature (value =Landroid/preference/GenericInflater$Factory<TT;>; )
+private android.preference.GenericInflater$Factory mFactory
+
+private boolean mFactorySet
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+android.content.Context)
+@dalvik.annotation.Signature (value =(Landroid/preference/GenericInflater<TT;TP;>;Landroid/content/Context;)V )
+protected void <init>(
+android.preference.GenericInflater
+android.content.Context)
+@dalvik.annotation.Signature (value =(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Landroid/util/AttributeSet;)TT; )
+private final java.lang.Object createItemFromTag(
+org.xmlpull.v1.XmlPullParser
+java.lang.String
+android.util.AttributeSet)
+@dalvik.annotation.Signature (value =(Lorg/xmlpull/v1/XmlPullParser;TT;Landroid/util/AttributeSet;)V )
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private void rInflate(
+org.xmlpull.v1.XmlPullParser
+java.lang.Object
+android.util.AttributeSet)
+
+public abstract android.preference.GenericInflater cloneInContext(
+android.content.Context)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)TT; )
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException;Landroid/view/InflateException; )
+public final java.lang.Object createItem(
+java.lang.String
+java.lang.String
+android.util.AttributeSet)
+
+public android.content.Context getContext()
+
+public java.lang.String getDefaultPackage()
+@dalvik.annotation.Signature (value =()Landroid/preference/GenericInflater$Factory<TT;>; )
+public final android.preference.GenericInflater$Factory getFactory()
+@dalvik.annotation.Signature (value =(ITP;)TT; )
+public java.lang.Object inflate(
+int
+android.preference.GenericInflater$Parent)
+@dalvik.annotation.Signature (value =(ITP;Z)TT; )
+public java.lang.Object inflate(
+int
+android.preference.GenericInflater$Parent
+boolean)
+@dalvik.annotation.Signature (value =(Lorg/xmlpull/v1/XmlPullParser;TP;)TT; )
+public java.lang.Object inflate(
+org.xmlpull.v1.XmlPullParser
+android.preference.GenericInflater$Parent)
+@dalvik.annotation.Signature (value =(Lorg/xmlpull/v1/XmlPullParser;TP;Z)TT; )
+public java.lang.Object inflate(
+org.xmlpull.v1.XmlPullParser
+android.preference.GenericInflater$Parent
+boolean)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+@dalvik.annotation.Signature (value =(Lorg/xmlpull/v1/XmlPullParser;TT;Landroid/util/AttributeSet;)Z )
+protected boolean onCreateCustomFromTag(
+org.xmlpull.v1.XmlPullParser
+java.lang.Object
+android.util.AttributeSet)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Landroid/util/AttributeSet;)TT; )
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException; )
+protected java.lang.Object onCreateItem(
+java.lang.String
+android.util.AttributeSet)
+@dalvik.annotation.Signature (value =(TP;ZTP;)TP; )
+protected android.preference.GenericInflater$Parent onMergeRoots(
+android.preference.GenericInflater$Parent
+boolean
+android.preference.GenericInflater$Parent)
+
+public void setDefaultPackage(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Landroid/preference/GenericInflater$Factory<TT;>;)V )
+public void setFactory(
+android.preference.GenericInflater$Factory)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.preference.ListPreference$1 extends java.lang.Object implements android.content.DialogInterface$OnClickListener
+
+----------------FIELDS----------------
+
+final android.preference.ListPreference this$0
+----------------METHODS----------------
+
+ void <init>(
+android.preference.ListPreference)
+
+public void onClick(
+android.content.DialogInterface
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/ListPreference$SavedState; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/preference/ListPreference$SavedState;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.preference.ListPreference$SavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.preference.ListPreference$SavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.preference.ListPreference$SavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/ListPreference; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =SavedState )
+ class android.preference.ListPreference$SavedState extends android.preference.Preference$BaseSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/preference/ListPreference$SavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+ java.lang.String value
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.os.Parcel)
+
+public void <init>(
+android.os.Parcelable)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/preference/ListPreference$SavedState; )
+public class android.preference.ListPreference extends android.preference.DialogPreference
+
+----------------FIELDS----------------
+
+private int mClickedDialogEntryIndex
+
+private java.lang.CharSequence[] mEntries
+
+private java.lang.CharSequence[] mEntryValues
+
+private java.lang.String mValue
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+static int access$002(
+android.preference.ListPreference
+int)
+
+private int getValueIndex()
+
+public int findIndexOfValue(
+java.lang.String)
+
+public java.lang.CharSequence[] getEntries()
+
+public java.lang.CharSequence getEntry()
+
+public java.lang.CharSequence[] getEntryValues()
+
+public java.lang.String getValue()
+
+protected void onDialogClosed(
+boolean)
+
+protected java.lang.Object onGetDefaultValue(
+android.content.res.TypedArray
+int)
+
+protected void onPrepareDialogBuilder(
+android.app.AlertDialog$Builder)
+
+protected void onRestoreInstanceState(
+android.os.Parcelable)
+
+protected android.os.Parcelable onSaveInstanceState()
+
+protected void onSetInitialValue(
+boolean
+java.lang.Object)
+
+public void setEntries(
+int)
+
+public void setEntries(
+java.lang.CharSequence[])
+
+public void setEntryValues(
+int)
+
+public void setEntryValues(
+java.lang.CharSequence[])
+
+public void setValue(
+java.lang.String)
+
+public void setValueIndex(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/Preference$BaseSavedState; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/preference/Preference$BaseSavedState;>; )
+final class android.preference.Preference$BaseSavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.preference.Preference$BaseSavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.preference.Preference$BaseSavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1544 name =OnPreferenceChangeInternalListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/Preference; )
+abstract interface class android.preference.Preference$OnPreferenceChangeInternalListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onPreferenceChange(
+android.preference.Preference)
+
+public abstract void onPreferenceHierarchyChange(
+android.preference.Preference)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnPreferenceChangeListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/Preference; )
+public abstract interface class android.preference.Preference$OnPreferenceChangeListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean onPreferenceChange(
+android.preference.Preference
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnPreferenceClickListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/Preference; )
+public abstract interface class android.preference.Preference$OnPreferenceClickListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean onPreferenceClick(
+android.preference.Preference)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/PreferenceActivity; )
+ class android.preference.PreferenceActivity$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.preference.PreferenceActivity this$0
+----------------METHODS----------------
+
+ void <init>(
+android.preference.PreferenceActivity)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1544 name =OnPreferenceTreeClickListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/PreferenceManager; )
+abstract interface class android.preference.PreferenceManager$OnPreferenceTreeClickListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean onPreferenceTreeClick(
+android.preference.PreferenceScreen
+android.preference.Preference)
+
+________________CLASS________________
+
+
+public abstract class android.preference.PreferenceActivity extends android.app.ListActivity implements android.preference.PreferenceManager$OnPreferenceTreeClickListener
+
+----------------FIELDS----------------
+
+private static final int FIRST_REQUEST_CODE
+
+private static final int MSG_BIND_PREFERENCES
+
+private static final java.lang.String PREFERENCES_TAG
+
+private android.os.Handler mHandler
+
+private android.preference.PreferenceManager mPreferenceManager
+----------------METHODS----------------
+
+public void <init>()
+
+static void access$000(
+android.preference.PreferenceActivity)
+
+private void bindPreferences()
+
+private android.preference.PreferenceManager onCreatePreferenceManager()
+
+private void postBindPreferences()
+
+private void requirePreferenceManager()
+
+public void addPreferencesFromIntent(
+android.content.Intent)
+
+public void addPreferencesFromResource(
+int)
+
+public android.preference.Preference findPreference(
+java.lang.CharSequence)
+
+public android.preference.PreferenceManager getPreferenceManager()
+
+public android.preference.PreferenceScreen getPreferenceScreen()
+
+protected void onActivityResult(
+int
+int
+android.content.Intent)
+
+public void onContentChanged()
+
+protected void onCreate(
+android.os.Bundle)
+
+protected void onDestroy()
+
+protected void onNewIntent(
+android.content.Intent)
+
+public boolean onPreferenceTreeClick(
+android.preference.PreferenceScreen
+android.preference.Preference)
+
+protected void onRestoreInstanceState(
+android.os.Bundle)
+
+protected void onSaveInstanceState(
+android.os.Bundle)
+
+protected void onStop()
+
+public void setPreferenceScreen(
+android.preference.PreferenceScreen)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Landroid/preference/Preference;Landroid/preference/GenericInflater$Parent<Landroid/preference/Preference;>; )
+public abstract class android.preference.PreferenceGroup extends android.preference.Preference implements android.preference.GenericInflater$Parent
+
+----------------FIELDS----------------
+
+private boolean mAttachedToActivity
+
+private int mCurrentPreferenceOrder
+
+private boolean mOrderingAsAdded
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/preference/Preference;>; )
+private java.util.List mPreferenceList
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+private boolean removePreferenceInt(
+android.preference.Preference)
+
+public void addItemFromInflater(
+android.preference.Preference)
+
+public volatile void addItemFromInflater(
+java.lang.Object)
+
+public boolean addPreference(
+android.preference.Preference)
+
+protected void dispatchRestoreInstanceState(
+android.os.Bundle)
+
+protected void dispatchSaveInstanceState(
+android.os.Bundle)
+
+public android.preference.Preference findPreference(
+java.lang.CharSequence)
+
+public android.preference.Preference getPreference(
+int)
+
+public int getPreferenceCount()
+
+protected boolean isOnSameScreenAsChildren()
+
+public boolean isOrderingAsAdded()
+
+protected void onAttachedToActivity()
+
+protected boolean onPrepareAddPreference(
+android.preference.Preference)
+
+protected void onPrepareForRemoval()
+
+public void removeAll()
+
+public boolean removePreference(
+android.preference.Preference)
+
+public void setEnabled(
+boolean)
+
+public void setOrderingAsAdded(
+boolean)
+
+ void sortPreferences()
+
+________________CLASS________________
+
+
+public class android.preference.PreferenceCategory extends android.preference.PreferenceGroup
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+public boolean isEnabled()
+
+protected boolean onPrepareAddPreference(
+android.preference.Preference)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/PreferenceGroupAdapter; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.preference.PreferenceGroupAdapter$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.preference.PreferenceGroupAdapter this$0
+----------------METHODS----------------
+
+ void <init>(
+android.preference.PreferenceGroupAdapter)
+
+public void run()
+
+________________CLASS________________
+
+
+ class android.preference.PreferenceGroupAdapter extends android.widget.BaseAdapter implements android.preference.Preference$OnPreferenceChangeInternalListener
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private android.os.Handler mHandler
+
+private boolean mHasReturnedViewTypeCount
+
+private volatile boolean mIsSyncing
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/lang/String;>; )
+private java.util.List mPreferenceClassNames
+
+private android.preference.PreferenceGroup mPreferenceGroup
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/preference/Preference;>; )
+private java.util.List mPreferenceList
+
+private java.lang.Runnable mSyncRunnable
+----------------METHODS----------------
+
+public void <init>(
+android.preference.PreferenceGroup)
+
+static void access$000(
+android.preference.PreferenceGroupAdapter)
+
+private void addPreferenceClassName(
+android.preference.Preference)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/preference/Preference;>;Landroid/preference/PreferenceGroup;)V )
+private void flattenPreferenceGroup(
+java.util.List
+android.preference.PreferenceGroup)
+
+private void syncMyPreferences()
+
+public boolean areAllItemsEnabled()
+
+public int getCount()
+
+public android.preference.Preference getItem(
+int)
+
+public volatile java.lang.Object getItem(
+int)
+
+public long getItemId(
+int)
+
+public int getItemViewType(
+int)
+
+public android.view.View getView(
+int
+android.view.View
+android.view.ViewGroup)
+
+public int getViewTypeCount()
+
+public boolean hasStableIds()
+
+public boolean isEnabled(
+int)
+
+public void onPreferenceChange(
+android.preference.Preference)
+
+public void onPreferenceHierarchyChange(
+android.preference.Preference)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Landroid/preference/GenericInflater<Landroid/preference/Preference;Landroid/preference/PreferenceGroup;>; )
+ class android.preference.PreferenceInflater extends android.preference.GenericInflater
+
+----------------FIELDS----------------
+
+private static final java.lang.String INTENT_TAG_NAME
+
+private static final java.lang.String TAG
+
+private android.preference.PreferenceManager mPreferenceManager
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.preference.PreferenceManager)
+@dalvik.annotation.Signature (value =(Landroid/preference/GenericInflater<Landroid/preference/Preference;Landroid/preference/PreferenceGroup;>;Landroid/preference/PreferenceManager;Landroid/content/Context;)V )
+ void <init>(
+android.preference.GenericInflater
+android.preference.PreferenceManager
+android.content.Context)
+
+private void init(
+android.preference.PreferenceManager)
+@dalvik.annotation.Signature (value =(Landroid/content/Context;)Landroid/preference/GenericInflater<Landroid/preference/Preference;Landroid/preference/PreferenceGroup;>; )
+public android.preference.GenericInflater cloneInContext(
+android.content.Context)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+protected boolean onCreateCustomFromTag(
+org.xmlpull.v1.XmlPullParser
+android.preference.Preference
+android.util.AttributeSet)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+protected volatile boolean onCreateCustomFromTag(
+org.xmlpull.v1.XmlPullParser
+java.lang.Object
+android.util.AttributeSet)
+
+protected volatile android.preference.GenericInflater$Parent onMergeRoots(
+android.preference.GenericInflater$Parent
+boolean
+android.preference.GenericInflater$Parent)
+
+protected android.preference.PreferenceGroup onMergeRoots(
+android.preference.PreferenceGroup
+boolean
+android.preference.PreferenceGroup)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnActivityResultListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/PreferenceManager; )
+public abstract interface class android.preference.PreferenceManager$OnActivityResultListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean onActivityResult(
+int
+int
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/PreferenceManager; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnActivityStopListener )
+public abstract interface class android.preference.PreferenceManager$OnActivityStopListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onActivityStop()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/preference/PreferenceManager$OnActivityDestroyListener;Landroid/preference/PreferenceManager$OnActivityStopListener;Landroid/preference/PreferenceManager$OnActivityResultListener;Landroid/preference/PreferenceManager$OnPreferenceTreeClickListener; )
+public class android.preference.PreferenceManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String KEY_HAS_SET_DEFAULT_VALUES
+
+public static final java.lang.String METADATA_KEY_PREFERENCES
+
+private static final java.lang.String TAG
+
+private android.app.Activity mActivity
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/preference/PreferenceManager$OnActivityDestroyListener;>; )
+private java.util.List mActivityDestroyListeners
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/preference/PreferenceManager$OnActivityResultListener;>; )
+private java.util.List mActivityResultListeners
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/preference/PreferenceManager$OnActivityStopListener;>; )
+private java.util.List mActivityStopListeners
+
+private android.content.Context mContext
+
+private android.content.SharedPreferences$Editor mEditor
+
+private long mNextId
+
+private int mNextRequestCode
+
+private boolean mNoCommit
+
+private android.preference.PreferenceManager$OnPreferenceTreeClickListener mOnPreferenceTreeClickListener
+
+private android.preference.PreferenceScreen mPreferenceScreen
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/content/DialogInterface;>; )
+private java.util.List mPreferencesScreens
+
+private android.content.SharedPreferences mSharedPreferences
+
+private int mSharedPreferencesMode
+
+private java.lang.String mSharedPreferencesName
+----------------METHODS----------------
+
+ void <init>(
+android.app.Activity
+int)
+
+private void <init>(
+android.content.Context)
+
+public static android.content.SharedPreferences getDefaultSharedPreferences(
+android.content.Context)
+
+private static int getDefaultSharedPreferencesMode()
+
+private static java.lang.String getDefaultSharedPreferencesName(
+android.content.Context)
+
+private void init(
+android.content.Context)
+@dalvik.annotation.Signature (value =(Landroid/content/Intent;)Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+private java.util.List queryIntentActivities(
+android.content.Intent)
+
+public static void setDefaultValues(
+android.content.Context
+int
+boolean)
+
+public static void setDefaultValues(
+android.content.Context
+java.lang.String
+int
+int
+boolean)
+
+private void setNoCommit(
+boolean)
+
+ void addPreferencesScreen(
+android.content.DialogInterface)
+
+public android.preference.PreferenceScreen createPreferenceScreen(
+android.content.Context)
+
+ void dispatchActivityDestroy()
+
+ void dispatchActivityResult(
+int
+int
+android.content.Intent)
+
+ void dispatchActivityStop()
+
+ void dispatchNewIntent(
+android.content.Intent)
+
+public android.preference.Preference findPreference(
+java.lang.CharSequence)
+
+ android.app.Activity getActivity()
+
+ android.content.Context getContext()
+
+ android.content.SharedPreferences$Editor getEditor()
+
+ long getNextId()
+
+ int getNextRequestCode()
+
+ android.preference.PreferenceManager$OnPreferenceTreeClickListener getOnPreferenceTreeClickListener()
+
+ android.preference.PreferenceScreen getPreferenceScreen()
+
+public android.content.SharedPreferences getSharedPreferences()
+
+public int getSharedPreferencesMode()
+
+public java.lang.String getSharedPreferencesName()
+
+ android.preference.PreferenceScreen inflateFromIntent(
+android.content.Intent
+android.preference.PreferenceScreen)
+
+ android.preference.PreferenceScreen inflateFromResource(
+android.content.Context
+int
+android.preference.PreferenceScreen)
+
+ void registerOnActivityDestroyListener(
+android.preference.PreferenceManager$OnActivityDestroyListener)
+
+ void registerOnActivityResultListener(
+android.preference.PreferenceManager$OnActivityResultListener)
+
+ void registerOnActivityStopListener(
+android.preference.PreferenceManager$OnActivityStopListener)
+
+ void removePreferencesScreen(
+android.content.DialogInterface)
+
+ void setOnPreferenceTreeClickListener(
+android.preference.PreferenceManager$OnPreferenceTreeClickListener)
+
+ boolean setPreferences(
+android.preference.PreferenceScreen)
+
+public void setSharedPreferencesMode(
+int)
+
+public void setSharedPreferencesName(
+java.lang.String)
+
+ boolean shouldCommit()
+
+ void unregisterOnActivityDestroyListener(
+android.preference.PreferenceManager$OnActivityDestroyListener)
+
+ void unregisterOnActivityResultListener(
+android.preference.PreferenceManager$OnActivityResultListener)
+
+ void unregisterOnActivityStopListener(
+android.preference.PreferenceManager$OnActivityStopListener)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/PreferenceScreen$SavedState; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/preference/PreferenceScreen$SavedState;>; )
+final class android.preference.PreferenceScreen$SavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.preference.PreferenceScreen$SavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.preference.PreferenceScreen$SavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/PreferenceScreen; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =SavedState )
+ class android.preference.PreferenceScreen$SavedState extends android.preference.Preference$BaseSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/preference/PreferenceScreen$SavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+ android.os.Bundle dialogBundle
+
+ boolean isDialogShowing
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.os.Parcel)
+
+public void <init>(
+android.os.Parcelable)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/preference/PreferenceScreen$SavedState; )
+public final class android.preference.PreferenceScreen extends android.preference.PreferenceGroup implements android.widget.AdapterView$OnItemClickListener, android.content.DialogInterface$OnDismissListener
+
+----------------FIELDS----------------
+
+private android.app.Dialog mDialog
+
+private android.widget.ListAdapter mRootAdapter
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+private void showDialog(
+android.os.Bundle)
+
+public void bind(
+android.widget.ListView)
+
+public android.app.Dialog getDialog()
+
+public android.widget.ListAdapter getRootAdapter()
+
+protected boolean isOnSameScreenAsChildren()
+
+protected void onClick()
+
+protected android.widget.ListAdapter onCreateRootAdapter()
+
+public void onDismiss(
+android.content.DialogInterface)
+
+public void onItemClick(
+android.widget.AdapterView
+android.view.View
+int
+long)
+
+protected void onRestoreInstanceState(
+android.os.Parcelable)
+
+protected android.os.Parcelable onSaveInstanceState()
+
+________________CLASS________________
+
+
+public class android.preference.RingtonePreference extends android.preference.Preference implements android.preference.PreferenceManager$OnActivityResultListener
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private int mRequestCode
+
+private int mRingtoneType
+
+private boolean mShowDefault
+
+private boolean mShowSilent
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+public int getRingtoneType()
+
+public boolean getShowDefault()
+
+public boolean getShowSilent()
+
+public boolean onActivityResult(
+int
+int
+android.content.Intent)
+
+protected void onAttachedToHierarchy(
+android.preference.PreferenceManager)
+
+protected void onClick()
+
+protected java.lang.Object onGetDefaultValue(
+android.content.res.TypedArray
+int)
+
+protected void onPrepareRingtonePickerIntent(
+android.content.Intent)
+
+protected android.net.Uri onRestoreRingtone()
+
+protected void onSaveRingtone(
+android.net.Uri)
+
+protected void onSetInitialValue(
+boolean
+java.lang.Object)
+
+public void setRingtoneType(
+int)
+
+public void setShowDefault(
+boolean)
+
+public void setShowSilent(
+boolean)
+
+________________CLASS________________
+
+
+public class android.preference.SeekBarPreference extends android.preference.DialogPreference
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private android.graphics.drawable.Drawable mMyIcon
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+protected static android.widget.SeekBar getSeekBar(
+android.view.View)
+
+protected void onBindDialogView(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/preference/VolumePreference; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.preference.VolumePreference$1 extends android.database.ContentObserver
+
+----------------FIELDS----------------
+
+final android.preference.VolumePreference this$0
+----------------METHODS----------------
+
+ void <init>(
+android.preference.VolumePreference
+android.os.Handler)
+
+public void onChange(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnSeekBarChangeListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/SeekBar; )
+public abstract interface class android.widget.SeekBar$OnSeekBarChangeListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onProgressChanged(
+android.widget.SeekBar
+int
+boolean)
+
+public abstract void onStartTrackingTouch(
+android.widget.SeekBar)
+
+public abstract void onStopTrackingTouch(
+android.widget.SeekBar)
+
+________________CLASS________________
+
+
+public class android.preference.VolumePreference extends android.preference.SeekBarPreference implements android.widget.SeekBar$OnSeekBarChangeListener, java.lang.Runnable, android.preference.PreferenceManager$OnActivityStopListener
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private android.content.ContentResolver mContentResolver
+
+private android.os.Handler mHandler
+
+private int mLastProgress
+
+private int mOriginalStreamVolume
+
+private android.media.Ringtone mRingtone
+
+private android.widget.SeekBar mSeekBar
+
+private int mStreamType
+
+private android.media.AudioManager mVolume
+
+private android.database.ContentObserver mVolumeObserver
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+static android.widget.SeekBar access$000(
+android.preference.VolumePreference)
+
+static android.content.ContentResolver access$100(
+android.preference.VolumePreference)
+
+static int access$200(
+android.preference.VolumePreference)
+
+private void cleanup()
+
+private void postSetVolume(
+int)
+
+private void sample()
+
+private void stopSample()
+
+public void onActivityStop()
+
+protected void onBindDialogView(
+android.view.View)
+
+protected void onDialogClosed(
+boolean)
+
+public void onProgressChanged(
+android.widget.SeekBar
+int
+boolean)
+
+public void onStartTrackingTouch(
+android.widget.SeekBar)
+
+public void onStopTrackingTouch(
+android.widget.SeekBar)
+
+public void run()
+
+________________CLASS________________
+
+
+public abstract interface class android.provider.BaseColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String _COUNT
+
+public static final java.lang.String _ID
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =BookmarkColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Browser; )
+public class android.provider.Browser$BookmarkColumns extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String BOOKMARK
+
+public static final java.lang.String CREATED
+
+public static final java.lang.String DATE
+
+public static final java.lang.String FAVICON
+
+public static final java.lang.String TITLE
+
+public static final java.lang.String URL
+
+public static final java.lang.String VISITS
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Browser; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =SearchColumns )
+public class android.provider.Browser$SearchColumns extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String DATE
+
+public static final java.lang.String SEARCH
+
+public static final java.lang.String URL
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Browser$SearchColumns;Landroid/provider/Browser$BookmarkColumns; )
+public class android.provider.Browser extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final android.net.Uri BOOKMARKS_URI
+
+public static final java.lang.String[] HISTORY_PROJECTION
+
+public static final int HISTORY_PROJECTION_BOOKMARK_INDEX
+
+public static final int HISTORY_PROJECTION_DATE_INDEX
+
+public static final int HISTORY_PROJECTION_FAVICON_INDEX
+
+public static final int HISTORY_PROJECTION_ID_INDEX
+
+public static final int HISTORY_PROJECTION_TITLE_INDEX
+
+public static final int HISTORY_PROJECTION_URL_INDEX
+
+public static final int HISTORY_PROJECTION_VISITS_INDEX
+
+public static final java.lang.String INITIAL_ZOOM_LEVEL
+
+private static final java.lang.String LOGTAG
+
+private static final int MAX_HISTORY_COUNT
+
+public static final java.lang.String[] SEARCHES_PROJECTION
+
+public static final int SEARCHES_PROJECTION_DATE_INDEX
+
+public static final int SEARCHES_PROJECTION_SEARCH_INDEX
+
+public static final android.net.Uri SEARCHES_URI
+
+private static final java.lang.String SEARCHES_WHERE_CLAUSE
+
+public static final java.lang.String[] TRUNCATE_HISTORY_PROJECTION
+
+public static final int TRUNCATE_HISTORY_PROJECTION_ID_INDEX
+
+public static final int TRUNCATE_N_OLDEST
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static final void addSearchUrl(
+android.content.ContentResolver
+java.lang.String)
+
+public static final boolean canClearHistory(
+android.content.ContentResolver)
+
+public static final void clearHistory(
+android.content.ContentResolver)
+
+public static final void clearSearches(
+android.content.ContentResolver)
+
+public static final void deleteFromHistory(
+android.content.ContentResolver
+java.lang.String)
+
+public static final void deleteHistoryTimeFrame(
+android.content.ContentResolver
+long
+long)
+
+private static final void deleteHistoryWhere(
+android.content.ContentResolver
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public static final android.database.Cursor getAllBookmarks(
+android.content.ContentResolver)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public static final android.database.Cursor getAllVisitedUrls(
+android.content.ContentResolver)
+
+public static final void requestAllIcons(
+android.content.ContentResolver
+java.lang.String
+android.webkit.WebIconDatabase$IconListener)
+
+public static final void saveBookmark(
+android.content.Context
+java.lang.String
+java.lang.String)
+
+public static final void sendString(
+android.content.Context
+java.lang.String)
+
+public static final void truncateHistory(
+android.content.ContentResolver)
+
+public static final void updateVisitedHistory(
+android.content.ContentResolver
+java.lang.String
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =AttendeesColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Calendar; )
+public abstract interface class android.provider.Calendar$AttendeesColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ATTENDEE_EMAIL
+
+public static final java.lang.String ATTENDEE_NAME
+
+public static final java.lang.String ATTENDEE_RELATIONSHIP
+
+public static final java.lang.String ATTENDEE_STATUS
+
+public static final int ATTENDEE_STATUS_ACCEPTED
+
+public static final int ATTENDEE_STATUS_DECLINED
+
+public static final int ATTENDEE_STATUS_INVITED
+
+public static final int ATTENDEE_STATUS_NONE
+
+public static final int ATTENDEE_STATUS_TENTATIVE
+
+public static final java.lang.String ATTENDEE_TYPE
+
+public static final java.lang.String EVENT_ID
+
+public static final int RELATIONSHIP_ATTENDEE
+
+public static final int RELATIONSHIP_NONE
+
+public static final int RELATIONSHIP_ORGANIZER
+
+public static final int RELATIONSHIP_PERFORMER
+
+public static final int RELATIONSHIP_SPEAKER
+
+public static final int TYPE_NONE
+
+public static final int TYPE_OPTIONAL
+
+public static final int TYPE_REQUIRED
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =EventsColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Calendar; )
+public abstract interface class android.provider.Calendar$EventsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ALL_DAY
+
+public static final java.lang.String CALENDAR_ID
+
+public static final java.lang.String COMMENTS_URI
+
+public static final java.lang.String DESCRIPTION
+
+public static final java.lang.String DTEND
+
+public static final java.lang.String DTSTART
+
+public static final java.lang.String DURATION
+
+public static final java.lang.String EVENT_LOCATION
+
+public static final java.lang.String EVENT_TIMEZONE
+
+public static final java.lang.String EXDATE
+
+public static final java.lang.String EXRULE
+
+public static final java.lang.String HAS_ALARM
+
+public static final java.lang.String HAS_EXTENDED_PROPERTIES
+
+public static final java.lang.String HTML_URI
+
+public static final java.lang.String LAST_DATE
+
+public static final java.lang.String ORIGINAL_EVENT
+
+public static final java.lang.String ORIGINAL_INSTANCE_TIME
+
+public static final java.lang.String RDATE
+
+public static final java.lang.String RRULE
+
+public static final java.lang.String SELF_ATTENDEE_STATUS
+
+public static final java.lang.String STATUS
+
+public static final int STATUS_CANCELED
+
+public static final int STATUS_CONFIRMED
+
+public static final int STATUS_TENTATIVE
+
+public static final java.lang.String TITLE
+
+public static final java.lang.String TRANSPARENCY
+
+public static final int TRANSPARENCY_OPAQUE
+
+public static final int TRANSPARENCY_TRANSPARENT
+
+public static final java.lang.String VISIBILITY
+
+public static final int VISIBILITY_CONFIDENTIAL
+
+public static final int VISIBILITY_DEFAULT
+
+public static final int VISIBILITY_PRIVATE
+
+public static final int VISIBILITY_PUBLIC
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Attendees )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Calendar; )
+public final class android.provider.Calendar$Attendees extends java.lang.Object implements android.provider.BaseColumns, android.provider.Calendar$AttendeesColumns, android.provider.Calendar$EventsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Calendar; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =BusyBitsColumns )
+public abstract interface class android.provider.Calendar$BusyBitsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ALL_DAY_COUNT
+
+public static final java.lang.String BUSYBITS
+
+public static final java.lang.String DAY
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Calendar; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =BusyBits )
+public final class android.provider.Calendar$BusyBits extends java.lang.Object implements android.provider.Calendar$BusyBitsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final int INTERVALS_PER_DAY
+
+public static final int MINUTES_PER_BUSY_INTERVAL
+
+public static final java.lang.String[] PROJECTION
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Calendar; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =CalendarAlertsColumns )
+public abstract interface class android.provider.Calendar$CalendarAlertsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ALARM_TIME
+
+public static final java.lang.String BEGIN
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final int DISMISSED
+
+public static final java.lang.String END
+
+public static final java.lang.String EVENT_ID
+
+public static final int FIRED
+
+public static final java.lang.String MINUTES
+
+public static final int SCHEDULED
+
+public static final java.lang.String STATE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Calendar; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =CalendarsColumns )
+public abstract interface class android.provider.Calendar$CalendarsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACCESS_LEVEL
+
+public static final java.lang.String COLOR
+
+public static final int CONTRIBUTOR_ACCESS
+
+public static final int EDITOR_ACCESS
+
+public static final int FREEBUSY_ACCESS
+
+public static final int NO_ACCESS
+
+public static final int OVERRIDE_ACCESS
+
+public static final int OWNER_ACCESS
+
+public static final int READ_ACCESS
+
+public static final int RESPOND_ACCESS
+
+public static final int ROOT_ACCESS
+
+public static final java.lang.String SELECTED
+
+public static final java.lang.String SYNC_EVENTS
+
+public static final java.lang.String TIMEZONE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Calendar; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =CalendarAlerts )
+public final class android.provider.Calendar$CalendarAlerts extends java.lang.Object implements android.provider.BaseColumns, android.provider.Calendar$CalendarAlertsColumns, android.provider.Calendar$EventsColumns, android.provider.Calendar$CalendarsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final android.net.Uri CONTENT_URI_BY_INSTANCE
+
+public static final java.lang.String TABLE_NAME
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static final boolean alarmExists(
+android.content.ContentResolver
+long
+long
+long)
+
+public static final long findNextAlarmTime(
+android.content.ContentResolver
+long)
+
+public static final android.net.Uri insert(
+android.content.ContentResolver
+long
+long
+long
+long
+int)
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+java.lang.String[]
+java.lang.String
+java.lang.String[])
+
+public static final void rescheduleMissedAlarms(
+android.content.ContentResolver
+android.content.Context
+android.app.AlarmManager)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Calendar; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =CalendarMetaDataColumns )
+public abstract interface class android.provider.Calendar$CalendarMetaDataColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String LOCAL_TIMEZONE
+
+public static final java.lang.String MAX_BUSYBITS
+
+public static final java.lang.String MAX_INSTANCE
+
+public static final java.lang.String MIN_BUSYBITS
+
+public static final java.lang.String MIN_INSTANCE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Calendar; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =CalendarMetaData )
+public final class android.provider.Calendar$CalendarMetaData extends java.lang.Object implements android.provider.Calendar$CalendarMetaDataColumns
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public abstract interface class android.provider.SyncConstValue extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String NON_SYNCABLE_ACCOUNT
+
+public static final java.lang.String _SYNC_ACCOUNT
+
+public static final java.lang.String _SYNC_DIRTY
+
+public static final java.lang.String _SYNC_ID
+
+public static final java.lang.String _SYNC_LOCAL_ID
+
+public static final java.lang.String _SYNC_MARK
+
+public static final java.lang.String _SYNC_TIME
+
+public static final java.lang.String _SYNC_VERSION
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Calendars )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Calendar; )
+public class android.provider.Calendar$Calendars extends java.lang.Object implements android.provider.BaseColumns, android.provider.SyncConstValue, android.provider.Calendar$CalendarsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String DISPLAY_NAME
+
+public static final java.lang.String HIDDEN
+
+public static final android.net.Uri LIVE_CONTENT_URI
+
+public static final java.lang.String LOCATION
+
+public static final java.lang.String NAME
+
+public static final java.lang.String URL
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static int delete(
+android.content.ContentResolver
+java.lang.String
+java.lang.String[])
+
+public static int deleteCalendarsForAccount(
+android.content.ContentResolver
+java.lang.String)
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+java.lang.String[]
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Events )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Calendar; )
+public final class android.provider.Calendar$Events extends java.lang.Object implements android.provider.BaseColumns, android.provider.SyncConstValue, android.provider.Calendar$EventsColumns, android.provider.Calendar$CalendarsColumns
+
+----------------FIELDS----------------
+
+private static final java.lang.String[] ATTENDEES_COLUMNS
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final android.net.Uri DELETED_CONTENT_URI
+
+private static final java.lang.String[] FETCH_ENTRY_COLUMNS
+
+private static com.google.wireless.gdata.calendar.client.CalendarClient sCalendarClient
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Lcom/google/wireless/gdata/calendar/data/EventEntry;Ljava/util/ArrayList<Ljava/util/ArrayList;>;)V )
+private static final void extractAttendeesIntoArrayList(
+com.google.wireless.gdata.calendar.data.EventEntry
+java.util.ArrayList)
+
+private static java.lang.String extractValue(
+android.pim.ICalendar$Component
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lcom/google/wireless/gdata/parser/ParseException; )
+private static final com.google.wireless.gdata.calendar.data.EventEntry fetchEntry(
+com.google.android.googleapps.GoogleLoginServiceBlockingHelper
+com.google.wireless.gdata.calendar.client.CalendarClient
+java.lang.String
+java.lang.String)
+
+private static com.google.wireless.gdata.calendar.client.CalendarClient getCalendarClient(
+android.content.ContentResolver)
+
+public static final android.net.Uri insertVEvent(
+android.content.ContentResolver
+android.pim.ICalendar$Component
+long
+int
+android.content.ContentValues)
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+java.lang.String[])
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+java.lang.String[]
+java.lang.String
+java.lang.String)
+
+public static final android.database.Cursor queryAttendees(
+android.content.Context
+android.content.ContentResolver
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ExtendedPropertiesColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Calendar; )
+public abstract interface class android.provider.Calendar$ExtendedPropertiesColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String EVENT_ID
+
+public static final java.lang.String NAME
+
+public static final java.lang.String VALUE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Calendar; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =ExtendedProperties )
+public final class android.provider.Calendar$ExtendedProperties extends java.lang.Object implements android.provider.BaseColumns, android.provider.Calendar$ExtendedPropertiesColumns, android.provider.Calendar$EventsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Instances )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Calendar; )
+public final class android.provider.Calendar$Instances extends java.lang.Object implements android.provider.BaseColumns, android.provider.Calendar$EventsColumns, android.provider.Calendar$CalendarsColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String BEGIN
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String END
+
+public static final java.lang.String END_DAY
+
+public static final java.lang.String END_MINUTE
+
+public static final java.lang.String EVENT_ID
+
+public static final java.lang.String SORT_CALENDAR_VIEW
+
+public static final java.lang.String START_DAY
+
+public static final java.lang.String START_MINUTE
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+java.lang.String[]
+long
+long)
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+java.lang.String[]
+long
+long
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Calendar; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =RemindersColumns )
+public abstract interface class android.provider.Calendar$RemindersColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String EVENT_ID
+
+public static final java.lang.String METHOD
+
+public static final int METHOD_ALERT
+
+public static final int METHOD_DEFAULT
+
+public static final int METHOD_EMAIL
+
+public static final int METHOD_SMS
+
+public static final java.lang.String MINUTES
+
+public static final int MINUTES_DEFAULT
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Reminders )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Calendar; )
+public final class android.provider.Calendar$Reminders extends java.lang.Object implements android.provider.BaseColumns, android.provider.Calendar$RemindersColumns, android.provider.Calendar$EventsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String TABLE_NAME
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Calendar$ExtendedProperties;Landroid/provider/Calendar$ExtendedPropertiesColumns;Landroid/provider/Calendar$CalendarAlerts;Landroid/provider/Calendar$CalendarAlertsColumns;Landroid/provider/Calendar$Reminders;Landroid/provider/Calendar$RemindersColumns;Landroid/provider/Calendar$BusyBits;Landroid/provider/Calendar$BusyBitsColumns;Landroid/provider/Calendar$CalendarMetaData;Landroid/provider/Calendar$CalendarMetaDataColumns;Landroid/provider/Calendar$Instances;Landroid/provider/Calendar$Events;Landroid/provider/Calendar$EventsColumns;Landroid/provider/Calendar$Attendees;Landroid/provider/Calendar$AttendeesColumns;Landroid/provider/Calendar$Calendars;Landroid/provider/Calendar$CalendarsColumns; )
+public final class android.provider.Calendar extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String AUTHORITY
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String EVENT_BEGIN_TIME
+
+public static final java.lang.String EVENT_END_TIME
+
+public static final java.lang.String EVENT_REMINDER_ACTION
+
+public static final java.lang.String TAG
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/CallLog; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Calls )
+public class android.provider.CallLog$Calls extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CACHED_NAME
+
+public static final java.lang.String CACHED_NUMBER_LABEL
+
+public static final java.lang.String CACHED_NUMBER_TYPE
+
+public static final android.net.Uri CONTENT_FILTER_URI
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DATE
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String DURATION
+
+public static final int INCOMING_TYPE
+
+public static final int MISSED_TYPE
+
+public static final java.lang.String NEW
+
+public static final java.lang.String NUMBER
+
+public static final int OUTGOING_TYPE
+
+public static final java.lang.String TYPE
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.net.Uri addCall(
+com.android.internal.telephony.CallerInfo
+android.content.Context
+java.lang.String
+boolean
+int
+long
+int)
+
+private static void removeExpiredEntries(
+android.content.Context)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/CallLog$Calls; )
+public class android.provider.CallLog extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String AUTHORITY
+
+public static final android.net.Uri CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Crashes )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Checkin; )
+public abstract interface class android.provider.Checkin$Crashes extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DATA
+
+public static final java.lang.String LOGS
+
+public static final java.lang.String TABLE_NAME
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Checkin$Events; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Tag )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/provider/Checkin$Events$Tag;>; )
+public final class android.provider.Checkin$Events$Tag extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.provider.Checkin$Events$Tag[] $VALUES
+
+public static final android.provider.Checkin$Events$Tag BROWSER_BUG_REPORT
+
+public static final android.provider.Checkin$Events$Tag CARRIER_BUG_REPORT
+
+public static final android.provider.Checkin$Events$Tag CHECKIN_FAILURE
+
+public static final android.provider.Checkin$Events$Tag CHECKIN_SUCCESS
+
+public static final android.provider.Checkin$Events$Tag FOTA_BEGIN
+
+public static final android.provider.Checkin$Events$Tag FOTA_FAILURE
+
+public static final android.provider.Checkin$Events$Tag FOTA_INSTALL
+
+public static final android.provider.Checkin$Events$Tag FOTA_PROMPT
+
+public static final android.provider.Checkin$Events$Tag FOTA_PROMPT_ACCEPT
+
+public static final android.provider.Checkin$Events$Tag FOTA_PROMPT_REJECT
+
+public static final android.provider.Checkin$Events$Tag FOTA_PROMPT_SKIPPED
+
+public static final android.provider.Checkin$Events$Tag GSERVICES_ERROR
+
+public static final android.provider.Checkin$Events$Tag GSERVICES_UPDATE
+
+public static final android.provider.Checkin$Events$Tag LOGIN_SERVICE_ACCOUNT_SAVED
+
+public static final android.provider.Checkin$Events$Tag LOGIN_SERVICE_ACCOUNT_TRIED
+
+public static final android.provider.Checkin$Events$Tag LOGIN_SERVICE_AUTHENTICATE
+
+public static final android.provider.Checkin$Events$Tag LOGIN_SERVICE_CAPTCHA_ANSWERED
+
+public static final android.provider.Checkin$Events$Tag LOGIN_SERVICE_CAPTCHA_SHOWN
+
+public static final android.provider.Checkin$Events$Tag LOGIN_SERVICE_PASSWORD_ENTERED
+
+public static final android.provider.Checkin$Events$Tag LOGIN_SERVICE_SWITCH_GOOGLE_MAIL
+
+public static final android.provider.Checkin$Events$Tag NETWORK_DOWN
+
+public static final android.provider.Checkin$Events$Tag NETWORK_UP
+
+public static final android.provider.Checkin$Events$Tag PHONE_UI
+
+public static final android.provider.Checkin$Events$Tag RADIO_BUG_REPORT
+
+public static final android.provider.Checkin$Events$Tag SETUP_COMPLETED
+
+public static final android.provider.Checkin$Events$Tag SETUP_INITIATED
+
+public static final android.provider.Checkin$Events$Tag SETUP_IO_ERROR
+
+public static final android.provider.Checkin$Events$Tag SETUP_NETWORK_ERROR
+
+public static final android.provider.Checkin$Events$Tag SETUP_REQUIRED_CAPTCHA
+
+public static final android.provider.Checkin$Events$Tag SETUP_RETRIES_EXHAUSTED
+
+public static final android.provider.Checkin$Events$Tag SETUP_SERVER_ERROR
+
+public static final android.provider.Checkin$Events$Tag SETUP_SERVER_TIMEOUT
+
+public static final android.provider.Checkin$Events$Tag SYSTEM_APP_NOT_RESPONDING
+
+public static final android.provider.Checkin$Events$Tag SYSTEM_BOOT
+
+public static final android.provider.Checkin$Events$Tag SYSTEM_LAST_KMSG
+
+public static final android.provider.Checkin$Events$Tag SYSTEM_RECOVERY_LOG
+
+public static final android.provider.Checkin$Events$Tag SYSTEM_RESTART
+
+public static final android.provider.Checkin$Events$Tag SYSTEM_SERVICE_LOOPING
+
+public static final android.provider.Checkin$Events$Tag SYSTEM_TOMBSTONE
+
+public static final android.provider.Checkin$Events$Tag TEST
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.provider.Checkin$Events$Tag valueOf(
+java.lang.String)
+
+public static android.provider.Checkin$Events$Tag[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Events )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Checkin; )
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Checkin$Events$Tag; )
+public abstract interface class android.provider.Checkin$Events extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DATE
+
+public static final java.lang.String TABLE_NAME
+
+public static final java.lang.String TAG
+
+public static final java.lang.String VALUE
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/provider/Checkin$Properties$Tag;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Tag )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Checkin$Properties; )
+public final class android.provider.Checkin$Properties$Tag extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.provider.Checkin$Properties$Tag[] $VALUES
+
+public static final android.provider.Checkin$Properties$Tag DESIRED_BUILD
+
+public static final android.provider.Checkin$Properties$Tag MARKET_CHECKIN
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.provider.Checkin$Properties$Tag valueOf(
+java.lang.String)
+
+public static android.provider.Checkin$Properties$Tag[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Checkin$Properties$Tag; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Properties )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Checkin; )
+public abstract interface class android.provider.Checkin$Properties extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String TABLE_NAME
+
+public static final java.lang.String TAG
+
+public static final java.lang.String VALUE
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Tag )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/provider/Checkin$Stats$Tag;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Checkin$Stats; )
+public final class android.provider.Checkin$Stats$Tag extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.provider.Checkin$Stats$Tag[] $VALUES
+
+public static final android.provider.Checkin$Stats$Tag CRASHES_REPORTED
+
+public static final android.provider.Checkin$Stats$Tag CRASHES_TRUNCATED
+
+public static final android.provider.Checkin$Stats$Tag ELAPSED_REALTIME_SEC
+
+public static final android.provider.Checkin$Stats$Tag ELAPSED_UPTIME_SEC
+
+public static final android.provider.Checkin$Stats$Tag HTTP_STATUS
+
+public static final android.provider.Checkin$Stats$Tag PHONE_GPRS_ATTEMPTED
+
+public static final android.provider.Checkin$Stats$Tag PHONE_GPRS_CONNECTED
+
+public static final android.provider.Checkin$Stats$Tag PHONE_GSM_REGISTERED
+
+public static final android.provider.Checkin$Stats$Tag PHONE_RADIO_RESETS
+
+public static final android.provider.Checkin$Stats$Tag TEST
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.provider.Checkin$Stats$Tag valueOf(
+java.lang.String)
+
+public static android.provider.Checkin$Stats$Tag[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Checkin; )
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Checkin$Stats$Tag; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Stats )
+public abstract interface class android.provider.Checkin$Stats extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String COUNT
+
+public static final java.lang.String SUM
+
+public static final java.lang.String TABLE_NAME
+
+public static final java.lang.String TAG
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Checkin; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =TriggerIntent )
+public abstract interface class android.provider.Checkin$TriggerIntent extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACTION
+
+public static final java.lang.String CATEGORY
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Checkin$TriggerIntent;Landroid/provider/Checkin$Crashes;Landroid/provider/Checkin$Properties;Landroid/provider/Checkin$Stats;Landroid/provider/Checkin$Events; )
+public final class android.provider.Checkin extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String AUTHORITY
+
+private static final long MIN_CRASH_FAILURE_RETRY
+
+private static final java.lang.String TAG
+
+private static volatile long sLastCrashFailureRealtime
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.net.Uri logEvent(
+android.content.ContentResolver
+android.provider.Checkin$Events$Tag
+java.lang.String)
+
+public static android.net.Uri reportCrash(
+android.content.ContentResolver
+android.server.data.CrashData)
+
+public static android.net.Uri reportCrash(
+android.content.ContentResolver
+byte[])
+
+public static android.net.Uri updateStats(
+android.content.ContentResolver
+android.provider.Checkin$Stats$Tag
+int
+double)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ContactMethodsColumns )
+public abstract interface class android.provider.Contacts$ContactMethodsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String AUX_DATA
+
+public static final java.lang.String DATA
+
+public static final java.lang.String ISPRIMARY
+
+public static final java.lang.String KIND
+
+public static final java.lang.String LABEL
+
+public static final java.lang.String TYPE
+
+public static final int TYPE_CUSTOM
+
+public static final int TYPE_HOME
+
+public static final int TYPE_OTHER
+
+public static final int TYPE_WORK
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =PeopleColumns )
+public abstract interface class android.provider.Contacts$PeopleColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String CUSTOM_RINGTONE
+
+public static final java.lang.String DISPLAY_NAME
+
+public static final java.lang.String LAST_TIME_CONTACTED
+
+public static final java.lang.String NAME
+
+public static final java.lang.String NOTES
+
+public static final java.lang.String PHOTO_VERSION
+
+public static final java.lang.String SEND_TO_VOICEMAIL
+
+public static final java.lang.String STARRED
+
+public static final java.lang.String TIMES_CONTACTED
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =ContactMethods )
+public final class android.provider.Contacts$ContactMethods extends java.lang.Object implements android.provider.BaseColumns, android.provider.Contacts$ContactMethodsColumns, android.provider.Contacts$PeopleColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_EMAIL_ITEM_TYPE
+
+public static final java.lang.String CONTENT_EMAIL_TYPE
+
+public static final android.net.Uri CONTENT_EMAIL_URI
+
+public static final java.lang.String CONTENT_IM_ITEM_TYPE
+
+public static final java.lang.String CONTENT_POSTAL_ITEM_TYPE
+
+public static final java.lang.String CONTENT_POSTAL_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String PERSON_ID
+
+public static final java.lang.String POSTAL_LOCATION_LATITUDE
+
+public static final java.lang.String POSTAL_LOCATION_LONGITUDE
+
+public static final int PROTOCOL_AIM
+
+public static final int PROTOCOL_GOOGLE_TALK
+
+public static final int PROTOCOL_ICQ
+
+public static final int PROTOCOL_JABBER
+
+public static final int PROTOCOL_MSN
+
+public static final int PROTOCOL_QQ
+
+public static final int PROTOCOL_SKYPE
+
+public static final int PROTOCOL_YAHOO
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static java.lang.Object decodeImProtocol(
+java.lang.String)
+
+public static java.lang.String encodeCustomImProtocol(
+java.lang.String)
+
+public static java.lang.String encodePredefinedImProtocol(
+int)
+
+public static final java.lang.CharSequence getDisplayLabel(
+android.content.Context
+int
+int
+java.lang.CharSequence)
+
+public static java.lang.String lookupProviderCategoryFromId(
+int)
+
+public void addPostalLocation(
+android.content.Context
+long
+double
+double)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ExtensionsColumns )
+public abstract interface class android.provider.Contacts$ExtensionsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String NAME
+
+public static final java.lang.String VALUE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Extensions )
+public final class android.provider.Contacts$Extensions extends java.lang.Object implements android.provider.BaseColumns, android.provider.Contacts$ExtensionsColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String PERSON_ID
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =GroupsColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+public abstract interface class android.provider.Contacts$GroupsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String NAME
+
+public static final java.lang.String NOTES
+
+public static final java.lang.String SHOULD_SYNC
+
+public static final java.lang.String SYSTEM_ID
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =GroupMembership )
+public final class android.provider.Contacts$GroupMembership extends java.lang.Object implements android.provider.BaseColumns, android.provider.Contacts$GroupsColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_DIRECTORY
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String GROUP_ID
+
+public static final java.lang.String GROUP_SYNC_ACCOUNT
+
+public static final java.lang.String GROUP_SYNC_ID
+
+public static final java.lang.String PERSON_ID
+
+public static final android.net.Uri RAW_CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Groups )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+public final class android.provider.Contacts$Groups extends java.lang.Object implements android.provider.BaseColumns, android.provider.SyncConstValue, android.provider.Contacts$GroupsColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final android.net.Uri DELETED_CONTENT_URI
+
+public static final java.lang.String GROUP_ANDROID_STARRED
+
+public static final java.lang.String GROUP_MY_CONTACTS
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Insert )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts$Intents; )
+public final class android.provider.Contacts$Intents$Insert extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACTION
+
+public static final java.lang.String COMPANY
+
+public static final java.lang.String EMAIL
+
+public static final java.lang.String EMAIL_ISPRIMARY
+
+public static final java.lang.String EMAIL_TYPE
+
+public static final java.lang.String FULL_MODE
+
+public static final java.lang.String IM_HANDLE
+
+public static final java.lang.String IM_ISPRIMARY
+
+public static final java.lang.String IM_PROTOCOL
+
+public static final java.lang.String JOB_TITLE
+
+public static final java.lang.String NAME
+
+public static final java.lang.String NOTES
+
+public static final java.lang.String PHONE
+
+public static final java.lang.String PHONE_ISPRIMARY
+
+public static final java.lang.String PHONE_TYPE
+
+public static final java.lang.String POSTAL
+
+public static final java.lang.String POSTAL_ISPRIMARY
+
+public static final java.lang.String POSTAL_TYPE
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =UI )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts$Intents; )
+public final class android.provider.Contacts$Intents$UI extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String FILTER_CONTACTS_ACTION
+
+public static final java.lang.String FILTER_TEXT_EXTRA_KEY
+
+public static final java.lang.String GROUP_NAME_EXTRA_KEY
+
+public static final java.lang.String LIST_ALL_CONTACTS_ACTION
+
+public static final java.lang.String LIST_CONTACTS_WITH_PHONES_ACTION
+
+public static final java.lang.String LIST_DEFAULT
+
+public static final java.lang.String LIST_FREQUENT_ACTION
+
+public static final java.lang.String LIST_GROUP_ACTION
+
+public static final java.lang.String LIST_STARRED_ACTION
+
+public static final java.lang.String LIST_STREQUENT_ACTION
+
+public static final java.lang.String TITLE_EXTRA_KEY
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Contacts$Intents$Insert;Landroid/provider/Contacts$Intents$UI; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Intents )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+public final class android.provider.Contacts$Intents extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ATTACH_IMAGE
+
+public static final java.lang.String SEARCH_SUGGESTION_CLICKED
+
+public static final java.lang.String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED
+
+public static final java.lang.String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OrganizationColumns )
+public abstract interface class android.provider.Contacts$OrganizationColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String COMPANY
+
+public static final java.lang.String ISPRIMARY
+
+public static final java.lang.String LABEL
+
+public static final java.lang.String PERSON_ID
+
+public static final java.lang.String TITLE
+
+public static final java.lang.String TYPE
+
+public static final int TYPE_CUSTOM
+
+public static final int TYPE_OTHER
+
+public static final int TYPE_WORK
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Organizations )
+public final class android.provider.Contacts$Organizations extends java.lang.Object implements android.provider.BaseColumns, android.provider.Contacts$OrganizationColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_DIRECTORY
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static final java.lang.CharSequence getDisplayLabel(
+android.content.Context
+int
+java.lang.CharSequence)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts$People; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =ContactMethods )
+public final class android.provider.Contacts$People$ContactMethods extends java.lang.Object implements android.provider.BaseColumns, android.provider.Contacts$ContactMethodsColumns, android.provider.Contacts$PeopleColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_DIRECTORY
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Extensions )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts$People; )
+public class android.provider.Contacts$People$Extensions extends java.lang.Object implements android.provider.BaseColumns, android.provider.Contacts$ExtensionsColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_DIRECTORY
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String PERSON_ID
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =PhonesColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+public abstract interface class android.provider.Contacts$PhonesColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ISPRIMARY
+
+public static final java.lang.String LABEL
+
+public static final java.lang.String NUMBER
+
+public static final java.lang.String NUMBER_KEY
+
+public static final java.lang.String TYPE
+
+public static final int TYPE_CUSTOM
+
+public static final int TYPE_FAX_HOME
+
+public static final int TYPE_FAX_WORK
+
+public static final int TYPE_HOME
+
+public static final int TYPE_MOBILE
+
+public static final int TYPE_OTHER
+
+public static final int TYPE_PAGER
+
+public static final int TYPE_WORK
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Phones )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts$People; )
+public final class android.provider.Contacts$People$Phones extends java.lang.Object implements android.provider.BaseColumns, android.provider.Contacts$PhonesColumns, android.provider.Contacts$PeopleColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_DIRECTORY
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =1544 name =CommonPresenceColumns )
+abstract interface class android.provider.Im$CommonPresenceColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int AVAILABLE
+
+public static final int AWAY
+
+public static final int DO_NOT_DISTURB
+
+public static final int IDLE
+
+public static final int INVISIBLE
+
+public static final int OFFLINE
+
+public static final java.lang.String PRESENCE_CUSTOM_STATUS
+
+public static final java.lang.String PRESENCE_STATUS
+
+public static final java.lang.String PRIORITY
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =PresenceColumns )
+public abstract interface class android.provider.Contacts$PresenceColumns extends java.lang.Object implements android.provider.Im$CommonPresenceColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String IM_ACCOUNT
+
+public static final java.lang.String IM_HANDLE
+
+public static final java.lang.String IM_PROTOCOL
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Contacts$People$Extensions;Landroid/provider/Contacts$People$ContactMethods;Landroid/provider/Contacts$People$Phones; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =People )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+public final class android.provider.Contacts$People extends java.lang.Object implements android.provider.BaseColumns, android.provider.SyncConstValue, android.provider.Contacts$PeopleColumns, android.provider.Contacts$PhonesColumns, android.provider.Contacts$PresenceColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_FILTER_URI
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final android.net.Uri DELETED_CONTENT_URI
+
+private static final java.lang.String[] GROUPS_PROJECTION
+
+public static final java.lang.String PRIMARY_EMAIL_ID
+
+public static final java.lang.String PRIMARY_ORGANIZATION_ID
+
+public static final java.lang.String PRIMARY_PHONE_ID
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static android.net.Uri addToGroup(
+android.content.ContentResolver
+long
+long)
+
+public static android.net.Uri addToGroup(
+android.content.ContentResolver
+long
+java.lang.String)
+
+public static android.net.Uri addToMyContactsGroup(
+android.content.ContentResolver
+long)
+
+public static android.net.Uri createPersonInMyContactsGroup(
+android.content.ContentResolver
+android.content.ContentValues)
+
+public static android.graphics.Bitmap loadContactPhoto(
+android.content.Context
+android.net.Uri
+int
+android.graphics.BitmapFactory$Options)
+
+private static android.graphics.Bitmap loadPlaceholderPhoto(
+int
+android.content.Context
+android.graphics.BitmapFactory$Options)
+
+public static void markAsContacted(
+android.content.ContentResolver
+long)
+
+public static java.io.InputStream openContactPhotoInputStream(
+android.content.ContentResolver
+android.net.Uri)
+
+public static android.database.Cursor queryGroups(
+android.content.ContentResolver
+long)
+
+public static void setPhotoData(
+android.content.ContentResolver
+android.net.Uri
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Phones )
+public final class android.provider.Contacts$Phones extends java.lang.Object implements android.provider.BaseColumns, android.provider.Contacts$PhonesColumns, android.provider.Contacts$PeopleColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_FILTER_URL
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String PERSON_ID
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static final java.lang.CharSequence getDisplayLabel(
+android.content.Context
+int
+java.lang.CharSequence)
+
+public static final java.lang.CharSequence getDisplayLabel(
+android.content.Context
+int
+java.lang.CharSequence
+java.lang.CharSequence[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =PhotosColumns )
+public abstract interface class android.provider.Contacts$PhotosColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String DATA
+
+public static final java.lang.String DOWNLOAD_REQUIRED
+
+public static final java.lang.String EXISTS_ON_SERVER
+
+public static final java.lang.String LOCAL_VERSION
+
+public static final java.lang.String PERSON_ID
+
+public static final java.lang.String SYNC_ERROR
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Photos )
+public final class android.provider.Contacts$Photos extends java.lang.Object implements android.provider.BaseColumns, android.provider.Contacts$PhotosColumns, android.provider.SyncConstValue
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_DIRECTORY
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Presence )
+public final class android.provider.Contacts$Presence extends java.lang.Object implements android.provider.BaseColumns, android.provider.Contacts$PresenceColumns, android.provider.Contacts$PeopleColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String PERSON_ID
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static final int getPresenceIconResourceId(
+int)
+
+public static final void setPresenceIcon(
+android.widget.ImageView
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =SettingsColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+public abstract interface class android.provider.Contacts$SettingsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String KEY
+
+public static final java.lang.String VALUE
+
+public static final java.lang.String _SYNC_ACCOUNT
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Contacts; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Settings )
+public final class android.provider.Contacts$Settings extends java.lang.Object implements android.provider.BaseColumns, android.provider.Contacts$SettingsColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_DIRECTORY
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String SYNC_EVERYTHING
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static java.lang.String getSetting(
+android.content.ContentResolver
+java.lang.String
+java.lang.String)
+
+public static void setSetting(
+android.content.ContentResolver
+java.lang.String
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Contacts$Intents;Landroid/provider/Contacts$Extensions;Landroid/provider/Contacts$ExtensionsColumns;Landroid/provider/Contacts$Photos;Landroid/provider/Contacts$PhotosColumns;Landroid/provider/Contacts$Organizations;Landroid/provider/Contacts$OrganizationColumns;Landroid/provider/Contacts$Presence;Landroid/provider/Contacts$PresenceColumns;Landroid/provider/Contacts$ContactMethods;Landroid/provider/Contacts$ContactMethodsColumns;Landroid/provider/Contacts$GroupMembership;Landroid/provider/Contacts$Phones;Landroid/provider/Contacts$PhonesColumns;Landroid/provider/Contacts$Groups;Landroid/provider/Contacts$GroupsColumns;Landroid/provider/Contacts$People;Landroid/provider/Contacts$PeopleColumns;Landroid/provider/Contacts$Settings;Landroid/provider/Contacts$SettingsColumns; )
+public class android.provider.Contacts extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String AUTHORITY
+
+public static final android.net.Uri CONTENT_URI
+
+public static final int KIND_EMAIL
+
+public static final int KIND_IM
+
+public static final int KIND_ORGANIZATION
+
+public static final int KIND_PHONE
+
+public static final int KIND_POSTAL
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+
+public final class android.provider.Downloads extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String CONTROL
+
+public static final int CONTROL_PAUSE
+
+public static final int CONTROL_RUN
+
+public static final int CONTROL_STOP
+
+public static final java.lang.String COOKIE_DATA
+
+public static final java.lang.String CURRENT_BYTES
+
+public static final java.lang.String DESCRIPTION
+
+public static final java.lang.String DESTINATION
+
+public static final int DESTINATION_CACHE_PARTITION
+
+public static final int DESTINATION_CACHE_PARTITION_PURGEABLE
+
+public static final int DESTINATION_DATA_CACHE
+
+public static final int DESTINATION_EXTERNAL
+
+public static final java.lang.String DOWNLOAD_COMPLETED_ACTION
+
+public static final java.lang.String ENTITY
+
+public static final java.lang.String ETAG
+
+public static final java.lang.String FAILED_CONNECTIONS
+
+public static final java.lang.String FILENAME
+
+public static final java.lang.String FILENAME_HINT
+
+public static final java.lang.String LAST_MODIFICATION
+
+public static final java.lang.String MEDIA_SCANNED
+
+public static final java.lang.String METHOD
+
+public static final int METHOD_GET
+
+public static final int METHOD_POST
+
+public static final java.lang.String MIMETYPE
+
+public static final java.lang.String NOTIFICATION_CLASS
+
+public static final java.lang.String NOTIFICATION_CLICKED_ACTION
+
+public static final java.lang.String NOTIFICATION_EXTRAS
+
+public static final java.lang.String NOTIFICATION_PACKAGE
+
+public static final java.lang.String NO_INTEGRITY
+
+public static final java.lang.String NO_SYSTEM_FILES
+
+public static final java.lang.String OTA_UPDATE
+
+public static final java.lang.String OTHER_UID
+
+public static final java.lang.String REFERER
+
+public static final java.lang.String STATUS
+
+public static final int STATUS_BAD_REQUEST
+
+public static final int STATUS_CANCELED
+
+public static final int STATUS_CANCELLED
+
+public static final int STATUS_ERROR
+
+public static final int STATUS_FILE_ERROR
+
+public static final int STATUS_HTTP_DATA_ERROR
+
+public static final int STATUS_HTTP_EXCEPTION
+
+public static final int STATUS_LENGTH_REQUIRED
+
+public static final int STATUS_NOT_ACCEPTABLE
+
+public static final int STATUS_NOT_AUTHORIZED
+
+public static final int STATUS_PENDING
+
+public static final int STATUS_PENDING_PAUSED
+
+public static final int STATUS_PRECONDITION_FAILED
+
+public static final int STATUS_RUNNING
+
+public static final int STATUS_RUNNING_PAUSED
+
+public static final int STATUS_SUCCESS
+
+public static final int STATUS_UNHANDLED_HTTP_CODE
+
+public static final int STATUS_UNHANDLED_REDIRECT
+
+public static final int STATUS_UNKNOWN_ERROR
+
+public static final java.lang.String TITLE
+
+public static final java.lang.String TOTAL_BYTES
+
+public static final java.lang.String UID
+
+public static final java.lang.String URI
+
+public static final java.lang.String USER_AGENT
+
+public static final java.lang.String VISIBILITY
+
+public static final int VISIBILITY_HIDDEN
+
+public static final int VISIBILITY_VISIBLE
+
+public static final int VISIBILITY_VISIBLE_NOTIFY_COMPLETED
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static boolean isStatusClientError(
+int)
+
+public static boolean isStatusCompleted(
+int)
+
+public static boolean isStatusError(
+int)
+
+public static boolean isStatusInformational(
+int)
+
+public static boolean isStatusServerError(
+int)
+
+public static boolean isStatusSuccess(
+int)
+
+public static boolean isStatusSuspended(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/DrmStore; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Columns )
+public abstract interface class android.provider.DrmStore$Columns extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String DATA
+
+public static final java.lang.String MIME_TYPE
+
+public static final java.lang.String SIZE
+
+public static final java.lang.String TITLE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Audio )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/DrmStore; )
+public abstract interface class android.provider.DrmStore$Audio extends java.lang.Object implements android.provider.DrmStore$Columns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Images )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/DrmStore; )
+public abstract interface class android.provider.DrmStore$Images extends java.lang.Object implements android.provider.DrmStore$Columns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/DrmStore$Audio;Landroid/provider/DrmStore$Images;Landroid/provider/DrmStore$Columns; )
+public final class android.provider.DrmStore extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String ACCESS_DRM_PERMISSION
+
+public static final java.lang.String AUTHORITY
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+public void <init>()
+
+public static final android.content.Intent addDrmFile(
+android.content.ContentResolver
+java.io.File
+java.lang.String)
+
+public static void enforceAccessDrmPermission(
+android.content.Context)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.provider.Gmail$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Attachment )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+public final class android.provider.Gmail$Attachment extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String contentType
+
+public java.lang.String name
+
+public android.provider.Gmail$AttachmentOrigin origin
+
+public java.lang.String originExtras
+
+public java.lang.String partId
+
+public java.lang.String simpleContentType
+
+public int size
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.provider.Gmail$Attachment parseJoinedString(
+java.lang.String)
+
+public java.lang.String toJoinedString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =AttachmentColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+public final class android.provider.Gmail$AttachmentColumns extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String FILENAME
+
+public static final java.lang.String STATUS
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =AttachmentOrigin )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/provider/Gmail$AttachmentOrigin;>; )
+public final class android.provider.Gmail$AttachmentOrigin extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.provider.Gmail$AttachmentOrigin[] $VALUES
+
+public static final android.provider.Gmail$AttachmentOrigin LOCAL_FILE
+
+public static final android.provider.Gmail$AttachmentOrigin SERVER_ATTACHMENT
+
+private static final java.lang.String SERVER_EXTRAS_SEPARATOR
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static java.lang.String localFileExtras(
+android.net.Uri)
+
+public static java.lang.String serverExtras(
+long
+long
+java.lang.String)
+
+public static java.lang.String[] splitServerExtras(
+java.lang.String)
+
+public static android.provider.Gmail$AttachmentOrigin valueOf(
+java.lang.String)
+
+public static android.provider.Gmail$AttachmentOrigin[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/provider/Gmail$AttachmentRendition;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =AttachmentRendition )
+public final class android.provider.Gmail$AttachmentRendition extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.provider.Gmail$AttachmentRendition[] $VALUES
+
+public static final android.provider.Gmail$AttachmentRendition BEST
+
+public static final android.provider.Gmail$AttachmentRendition SIMPLE
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.provider.Gmail$AttachmentRendition valueOf(
+java.lang.String)
+
+public static android.provider.Gmail$AttachmentRendition[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/TextUtils; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/lang/Iterable<Ljava/lang/String;>; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =StringSplitter )
+public abstract interface class android.text.TextUtils$StringSplitter extends java.lang.Object implements java.lang.Iterable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void setString(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =SimpleStringSplitter )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/text/TextUtils$StringSplitter;Ljava/util/Iterator<Ljava/lang/String;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/TextUtils; )
+public class android.text.TextUtils$SimpleStringSplitter extends java.lang.Object implements android.text.TextUtils$StringSplitter, java.util.Iterator
+
+----------------FIELDS----------------
+
+private char mDelimiter
+
+private int mLength
+
+private int mPosition
+
+private java.lang.String mString
+----------------METHODS----------------
+
+public void <init>(
+char)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/lang/String;>; )
+public java.util.Iterator iterator()
+
+public volatile java.lang.Object next()
+
+public java.lang.String next()
+
+public void remove()
+
+public void setString(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =CommaStringSplitter )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+ class android.provider.Gmail$CommaStringSplitter extends android.text.TextUtils$SimpleStringSplitter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void setString(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =ConversationColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+public final class android.provider.Gmail$ConversationColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String DATE
+
+public static final java.lang.String FORCE_ALL_UNREAD
+
+public static final java.lang.String FROM
+
+public static final java.lang.String HAS_ATTACHMENTS
+
+public static final java.lang.String HAS_MESSAGES_WITH_ERRORS
+
+public static final java.lang.String ID
+
+public static final java.lang.String LABEL_IDS
+
+public static final java.lang.String MAX_MESSAGE_ID
+
+public static final java.lang.String NUM_MESSAGES
+
+public static final java.lang.String PERSONAL_LEVEL
+
+public static final java.lang.String SNIPPET
+
+public static final java.lang.String SUBJECT
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =MailCursor )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+public class android.provider.Gmail$MailCursor extends android.database.ContentObserver
+
+----------------FIELDS----------------
+
+protected java.lang.String mAccount
+
+protected android.database.Cursor mCursor
+@dalvik.annotation.Signature (value =Ljava/util/Set<Landroid/provider/Gmail$MailCursorObserver;>; )
+private java.util.Set mObservers
+
+private android.content.ContentValues mUpdateValues
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.String
+android.database.Cursor)
+
+protected void checkCursor()
+
+protected void checkThread()
+
+public final int count()
+
+public final boolean deliverSelfNotifications()
+
+public java.lang.String getAccount()
+
+public android.database.Cursor getCursor()
+
+protected java.lang.String getStringInColumn(
+int)
+
+protected android.content.ContentValues getUpdateValues()
+
+public final boolean moveTo(
+int)
+
+public final boolean next()
+
+public void onChange(
+boolean)
+
+protected void onCursorPositionChanged()
+
+public final int position()
+
+public final void registerContentObserver(
+android.database.ContentObserver)
+
+public final void registerDataSetObserver(
+android.database.DataSetObserver)
+
+public final void registerObserver(
+android.provider.Gmail$MailCursorObserver)
+
+public final void release()
+
+public final void unregisterContentObserver(
+android.database.ContentObserver)
+
+public final void unregisterDataSetObserver(
+android.database.DataSetObserver)
+
+public final void unregisterObserver(
+android.provider.Gmail$MailCursorObserver)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =ConversationCursor )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+public final class android.provider.Gmail$ConversationCursor extends android.provider.Gmail$MailCursor
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private int mConversationIdIndex
+
+private int mDateIndex
+
+private int mForceAllUnreadIndex
+
+private int mFromIndex
+
+private int mHasAttachmentsIndex
+
+private int mHasMessagesWithErrorsIndex
+
+private int mLabelIdsIndex
+
+private android.text.TextUtils$StringSplitter mLabelIdsSplitter
+
+private android.provider.Gmail$LabelMap mLabelMap
+
+private int mMaxMessageIdIndex
+
+private int mNumMessagesIndex
+
+private int mPersonalLevelIndex
+
+private int mSnippetIndex
+
+private int mSubjectIndex
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+android.provider.Gmail
+java.lang.String
+android.database.Cursor)
+
+ void <init>(
+android.provider.Gmail
+java.lang.String
+android.database.Cursor
+android.provider.Gmail$1)
+
+public void becomeActiveNetworkCursor()
+
+public long getConversationId()
+
+public long getDateMs()
+
+public boolean getForceAllUnread()
+
+public java.lang.String getFromSnippetInstructions()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/Long;>; )
+public java.util.Set getLabelIds()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public java.util.Set getLabels()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Landroid/provider/Gmail$LabelMap;)Ljava/util/Set<Ljava/lang/String;>; )
+public java.util.Set getLabels(
+java.lang.String
+android.provider.Gmail$LabelMap)
+
+public long getMaxMessageId()
+
+public int getNumMessages()
+
+public android.provider.Gmail$PersonalLevel getPersonalLevel()
+
+public java.lang.String getRawLabelIds()
+
+public java.lang.String getSnippet()
+
+public android.provider.Gmail$CursorStatus getStatus()
+
+public java.lang.String getSubject()
+
+public boolean hasAttachments()
+
+public boolean hasMessagesWithErrors()
+
+protected void onCursorPositionChanged()
+
+public void retry()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/provider/Gmail$CursorStatus;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =CursorStatus )
+public final class android.provider.Gmail$CursorStatus extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.provider.Gmail$CursorStatus[] $VALUES
+
+public static final android.provider.Gmail$CursorStatus ERROR
+
+public static final android.provider.Gmail$CursorStatus LOADED
+
+public static final android.provider.Gmail$CursorStatus LOADING
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.provider.Gmail$CursorStatus valueOf(
+java.lang.String)
+
+public static android.provider.Gmail$CursorStatus[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =LabelColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+public final class android.provider.Gmail$LabelColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String CANONICAL_NAME
+
+public static final java.lang.String NAME
+
+public static final java.lang.String NUM_CONVERSATIONS
+
+public static final java.lang.String NUM_UNREAD_CONVERSATIONS
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+@dalvik.annotation.InnerClass (accessFlags =17 name =LabelCursor )
+public final class android.provider.Gmail$LabelCursor extends android.provider.Gmail$MailCursor
+
+----------------FIELDS----------------
+
+private int mNameIndex
+
+private int mNumConversationsIndex
+
+private int mNumUnreadConversationsIndex
+
+final android.provider.Gmail this$0
+----------------METHODS----------------
+
+private void <init>(
+android.provider.Gmail
+java.lang.String
+android.database.Cursor)
+
+public java.lang.String getName()
+
+public int getNumConversations()
+
+public int getNumUnreadConversations()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.provider.Gmail$LabelMap$1 extends java.lang.Object implements java.util.Observer
+
+----------------FIELDS----------------
+
+final android.provider.Gmail$LabelMap this$0
+----------------METHODS----------------
+
+ void <init>(
+android.provider.Gmail$LabelMap)
+
+public void update(
+java.util.Observable
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =LabelMap )
+public final class android.provider.Gmail$LabelMap extends java.util.Observable
+
+----------------FIELDS----------------
+
+private static final android.content.ContentValues EMPTY_CONTENT_VALUES
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/lang/String;>; )
+private static final java.util.Set FORCED_INCLUDED_LABELS
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/lang/String;>; )
+private static final java.util.Set FORCED_INCLUDED_OR_PARTIAL_LABELS
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/lang/String;>; )
+private static final java.util.Set FORCED_UNSYNCED_LABELS
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/lang/String;>; )
+private static final java.util.List SORTED_USER_MEANINGFUL_SYSTEM_LABELS
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/Long;>; )
+private java.util.Map mCanonicalNameToId
+
+private long mLabelIdCached
+
+private long mLabelIdChat
+
+private long mLabelIdDraft
+
+private long mLabelIdInbox
+
+private long mLabelIdOutbox
+
+private long mLabelIdSent
+
+private long mLabelIdSpam
+
+private long mLabelIdStarred
+
+private long mLabelIdTrash
+
+private long mLabelIdUnread
+
+private long mLabelIdVoicemail
+
+private long mLabelIdVoicemailInbox
+
+private boolean mLabelsSynced
+
+private android.content.ContentQueryMap mQueryMap
+@dalvik.annotation.Signature (value =Ljava/util/SortedSet<Ljava/lang/String;>; )
+private java.util.SortedSet mSortedUserLabels
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.ContentResolver
+java.lang.String
+boolean)
+
+public void <init>(
+android.database.Cursor
+boolean)
+
+static void access$400(
+android.provider.Gmail$LabelMap)
+
+static void access$500(
+android.provider.Gmail$LabelMap)
+
+private void checkLabelsSynced()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public static java.util.Set getForcedIncludedLabels()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public static java.util.Set getForcedIncludedOrPartialLabels()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public static java.util.Set getForcedUnsyncedLabels()
+
+private android.content.ContentValues getLabelIdValues(
+long)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public static java.util.List getSortedUserMeaningfulSystemLabels()
+
+private void init(
+android.database.Cursor
+boolean)
+
+private void updateDataStructures()
+
+public void close()
+
+public java.lang.String getCanonicalName(
+long)
+
+public long getLabelId(
+java.lang.String)
+
+public long getLabelIdCached()
+
+public long getLabelIdChat()
+
+public long getLabelIdDraft()
+
+public long getLabelIdInbox()
+
+public long getLabelIdOutbox()
+
+public long getLabelIdSent()
+
+public long getLabelIdSpam()
+
+public long getLabelIdStarred()
+
+public long getLabelIdTrash()
+
+public long getLabelIdUnread()
+
+public long getLabelIdVoicemail()
+
+public long getLabelIdVoicemailInbox()
+
+public java.lang.String getName(
+long)
+
+public int getNumConversations(
+long)
+
+public int getNumConversations(
+java.lang.String)
+
+public int getNumUnreadConversations(
+long)
+
+public int getNumUnreadConversations(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/SortedSet<Ljava/lang/String;>; )
+public java.util.SortedSet getSortedUserLabels()
+
+public boolean hasLabel(
+long)
+
+public boolean labelsSynced()
+
+public void requery()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =MailCursorObserver )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+public abstract interface class android.provider.Gmail$MailCursorObserver extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onCursorChanged(
+android.provider.Gmail$MailCursor)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =MessageColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+public final class android.provider.Gmail$MessageColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String BCC
+
+public static final java.lang.String BODY
+
+public static final java.lang.String CC
+
+public static final java.lang.String CONVERSATION_ID
+
+public static final java.lang.String DATE_RECEIVED_MS
+
+public static final java.lang.String DATE_SENT_MS
+
+public static final java.lang.String EMBEDS_EXTERNAL_RESOURCES
+
+public static final java.lang.String ERROR
+
+public static final java.lang.String FAKE_REF_MESSAGE_ID
+
+public static final java.lang.String FAKE_SAVE
+
+public static final java.lang.String FROM
+
+public static final java.lang.String ID
+
+public static final java.lang.String JOINED_ATTACHMENT_INFOS
+
+public static final java.lang.String LABEL_IDS
+
+public static final java.lang.String LIST_INFO
+
+public static final java.lang.String MESSAGE_ID
+
+public static final java.lang.String PERSONAL_LEVEL
+
+public static final java.lang.String REPLY_TO
+
+public static final java.lang.String SNIPPET
+
+public static final java.lang.String SUBJECT
+
+public static final java.lang.String TO
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =MessageCursor )
+public final class android.provider.Gmail$MessageCursor extends android.provider.Gmail$MailCursor
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private int mBccIndex
+
+private int mBodyEmbedsExternalResourcesIndex
+
+private int mBodyIndex
+
+private int mCcIndex
+
+private android.content.ContentResolver mContentResolver
+
+private int mConversationIdIndex
+
+private int mDateReceivedMsIndex
+
+private int mDateSentMsIndex
+
+private int mErrorIndex
+
+private int mFromIndex
+
+private int mIdIndex
+
+ long mInReplyToLocalMessageId
+
+private int mJoinedAttachmentInfosIndex
+
+private int mLabelIdsIndex
+
+private android.text.TextUtils$StringSplitter mLabelIdsSplitter
+
+private android.provider.Gmail$LabelMap mLabelMap
+
+private int mListInfoIndex
+
+private int mPersonalLevelIndex
+
+ boolean mPreserveAttachments
+
+private int mReplyToIndex
+
+private int mSnippetIndex
+
+private int mSubjectIndex
+
+private int mToIndex
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+android.content.ContentResolver
+java.lang.String
+long
+boolean)
+
+public void <init>(
+android.provider.Gmail
+android.content.ContentResolver
+java.lang.String
+android.database.Cursor)
+
+private java.lang.String[] getAddresses(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/provider/Gmail$NonexistentLabelException; )
+public void addOrRemoveLabel(
+java.lang.String
+boolean)
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Landroid/provider/Gmail$Attachment;>; )
+public java.util.ArrayList getAttachmentInfos()
+
+public java.lang.String[] getBccAddresses()
+
+public java.lang.String getBody()
+
+public boolean getBodyEmbedsExternalResources()
+
+public java.lang.String[] getCcAddresses()
+
+public long getConversationId()
+
+public long getDateReceivedMs()
+
+public long getDateSentMs()
+
+public java.lang.String getErrorText()
+
+public boolean getExpanded()
+
+public java.lang.String getFromAddress()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/Long;>; )
+public java.util.Set getLabelIds()
+
+public java.lang.String getListInfo()
+
+public long getMessageId()
+
+public android.provider.Gmail$PersonalLevel getPersonalLevel()
+
+public java.lang.String getRawLabelIds()
+
+public java.lang.String[] getReplyToAddress()
+
+public java.lang.String getSnippet()
+
+public android.provider.Gmail$CursorStatus getStatus()
+
+public java.lang.String getSubject()
+
+public java.lang.String[] getToAddresses()
+
+protected void onCursorPositionChanged()
+
+public void retry()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =MessageModification )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+public class android.provider.Gmail$MessageModification extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/provider/Gmail$Attachment;>;)Ljava/lang/String; )
+public static java.lang.String joinedAttachmentsString(
+java.util.List)
+@dalvik.annotation.Signature (value =(Landroid/content/ContentValues;Ljava/util/List<Landroid/provider/Gmail$Attachment;>;)V )
+public static void putAttachments(
+android.content.ContentValues
+java.util.List)
+
+public static void putBccAddresses(
+android.content.ContentValues
+java.lang.String[])
+
+public static void putBody(
+android.content.ContentValues
+java.lang.String)
+
+public static void putCcAddresses(
+android.content.ContentValues
+java.lang.String[])
+
+public static void putSubject(
+android.content.ContentValues
+java.lang.String)
+
+public static void putToAddresses(
+android.content.ContentValues
+java.lang.String[])
+
+public static void sendOrSaveExistingMessage(
+android.content.ContentResolver
+java.lang.String
+long
+android.content.ContentValues
+boolean)
+
+public static long sendOrSaveNewMessage(
+android.content.ContentResolver
+java.lang.String
+android.content.ContentValues
+long
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =NonexistentLabelException )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+public class android.provider.Gmail$NonexistentLabelException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =PersonalLevel )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/provider/Gmail$PersonalLevel;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+public final class android.provider.Gmail$PersonalLevel extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.provider.Gmail$PersonalLevel[] $VALUES
+
+public static final android.provider.Gmail$PersonalLevel NOT_TO_ME
+
+public static final android.provider.Gmail$PersonalLevel ONLY_TO_ME
+
+public static final android.provider.Gmail$PersonalLevel TO_ME_AND_OTHERS
+
+private int mLevel
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.provider.Gmail$PersonalLevel fromInt(
+int)
+
+public static android.provider.Gmail$PersonalLevel valueOf(
+java.lang.String)
+
+public static android.provider.Gmail$PersonalLevel[] values()
+
+public int toInt()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Settings )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+public class android.provider.Gmail$Settings extends java.lang.Object
+
+----------------FIELDS----------------
+
+public long conversationAgeDays
+
+public java.lang.String[] labelsIncluded
+
+public java.lang.String[] labelsPartial
+
+public long maxAttachmentSizeMb
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Gmail; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =SettingsColumns )
+public final class android.provider.Gmail$SettingsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONVERSATION_AGE_DAYS
+
+public static final java.lang.String LABELS_INCLUDED
+
+public static final java.lang.String LABELS_PARTIAL
+
+public static final java.lang.String MAX_ATTACHMENET_SIZE_MB
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Gmail$1;Landroid/provider/Gmail$ConversationCursor;Landroid/provider/Gmail$MessageModification;Landroid/provider/Gmail$MessageCursor;Landroid/provider/Gmail$CursorStatus;Landroid/provider/Gmail$Attachment;Landroid/provider/Gmail$AttachmentOrigin;Landroid/provider/Gmail$AttachmentColumns;Landroid/provider/Gmail$AttachmentRendition;Landroid/provider/Gmail$PersonalLevel;Landroid/provider/Gmail$LabelMap;Landroid/provider/Gmail$LabelCursor;Landroid/provider/Gmail$NonexistentLabelException;Landroid/provider/Gmail$MailCursorObserver;Landroid/provider/Gmail$MailCursor;Landroid/provider/Gmail$Settings;Landroid/provider/Gmail$SettingsColumns;Landroid/provider/Gmail$LabelColumns;Landroid/provider/Gmail$MessageColumns;Landroid/provider/Gmail$ConversationColumns;Landroid/provider/Gmail$CommaStringSplitter; )
+public final class android.provider.Gmail extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+public static final java.lang.String ATTACHMENT_INFO_SEPARATOR
+
+public static final java.util.regex.Pattern ATTACHMENT_INFO_SEPARATOR_PATTERN
+
+public static final java.lang.String AUTHORITY
+
+private static final java.lang.String AUTHORITY_PLUS_CONVERSATIONS
+
+private static final java.lang.String AUTHORITY_PLUS_LABELS
+
+private static final java.lang.String AUTHORITY_PLUS_MESSAGES
+
+private static final java.lang.String AUTHORITY_PLUS_SETTINGS
+
+public static final android.net.Uri BASE_URI
+
+public static final java.lang.String COMMAND_ACTIVATE
+
+public static final java.lang.String COMMAND_RESPONSE_OK
+
+public static final java.lang.String COMMAND_RESPONSE_UNKNOWN
+
+public static final java.lang.String COMMAND_RETRY
+
+private static final char COMMA_SEPARATOR
+
+public static final java.util.regex.Pattern COMMA_SEPARATOR_PATTERN
+
+private static final android.net.Uri CONVERSATIONS_URI
+
+private static java.lang.String[] CONVERSATION_PROJECTION
+
+public static final java.lang.String EMAIL_SEPARATOR
+
+public static final java.util.regex.Pattern EMAIL_SEPARATOR_PATTERN
+
+public static final java.lang.String EXTRA_STATUS
+
+public static final java.lang.String GMAIL_AUTH_SERVICE
+
+public static final java.lang.String INSERT_PARAM_ATTACHMENT_ORIGIN
+
+public static final java.lang.String INSERT_PARAM_ATTACHMENT_ORIGIN_EXTRAS
+
+private static final android.net.Uri LABELS_URI
+
+public static final java.lang.String LABEL_ALL
+
+public static final java.lang.String LABEL_CACHED
+
+public static final java.lang.String LABEL_CHAT
+
+public static final java.lang.String LABEL_DRAFT
+
+public static final java.lang.String LABEL_INBOX
+
+public static final java.lang.String LABEL_OUTBOX
+
+private static java.lang.String[] LABEL_PROJECTION
+
+public static final java.lang.String LABEL_SENT
+
+public static final java.lang.String LABEL_SPAM
+
+public static final java.lang.String LABEL_STARRED
+
+public static final java.lang.String LABEL_TRASH
+
+public static final java.lang.String LABEL_UNREAD
+
+public static final java.lang.String LABEL_VOICEMAIL
+
+public static final java.lang.String LABEL_VOICEMAIL_INBOX
+
+private static java.lang.String[] MESSAGE_PROJECTION
+
+private static final java.util.regex.Pattern NAME_ADDRESS_PATTERN
+
+public static final java.lang.String PROVIDER_CHANGED_EXTRA_ACCOUNT
+
+public static final java.lang.String PROVIDER_CHANGED_EXTRA_COUNT
+
+public static final java.lang.String PROVIDER_CHANGED_EXTRA_GET_ATTENTION
+
+public static final java.lang.String PROVIDER_CHANGED_EXTRA_TAG_LABEL
+
+public static final java.lang.String RESPOND_INPUT_COMMAND
+
+public static final java.lang.String RESPOND_OUTPUT_COMMAND_RESPONSE
+
+public static final java.lang.Character SENDER_LIST_SEPARATOR
+
+public static final java.lang.String SENDER_LIST_TOKEN_ELIDED
+
+public static final java.lang.String SENDER_LIST_TOKEN_LITERAL
+
+public static final java.lang.String SENDER_LIST_TOKEN_NUM_DRAFTS
+
+public static final java.lang.String SENDER_LIST_TOKEN_NUM_MESSAGES
+
+public static final java.lang.String SENDER_LIST_TOKEN_SENDING
+
+public static final java.lang.String SENDER_LIST_TOKEN_SEND_FAILED
+
+private static java.lang.String[] SETTINGS_PROJECTION
+
+private static final android.net.Uri SETTINGS_URI
+
+private static final char SPACE_SEPARATOR
+
+public static final java.util.regex.Pattern SPACE_SEPARATOR_PATTERN
+
+private static final java.lang.String TAG
+
+private static final java.util.regex.Pattern UNNAMED_ADDRESS_PATTERN
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/lang/String;>; )
+private static final java.util.Set USER_SETTABLE_BUILTIN_LABELS
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/Integer;Ljava/lang/Integer;>; )
+private static final java.util.Map sPriorityToLength
+
+public static java.lang.String[] sSenderFragments
+
+public static final android.text.TextUtils$SimpleStringSplitter sSenderListSplitter
+
+private android.content.ContentResolver mContentResolver
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Landroid/provider/Gmail$LabelMap;>; )
+private java.util.Map mLabelMaps
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.ContentResolver)
+
+static java.lang.String access$100(
+java.lang.String)
+
+static android.net.Uri access$200()
+
+static java.lang.String[] access$300()
+
+public static void addOrRemoveLabelOnMessage(
+android.content.ContentResolver
+java.lang.String
+long
+long
+java.lang.String
+boolean)
+
+public static android.net.Uri getAttachmentDownloadUri(
+android.net.Uri)
+
+public static android.net.Uri getAttachmentUri(
+java.lang.String
+long
+android.provider.Gmail$Attachment
+android.provider.Gmail$AttachmentRendition
+boolean)
+@dalvik.annotation.Signature (value =(Landroid/provider/Gmail$LabelMap;Landroid/text/TextUtils$StringSplitter;)Ljava/util/Set<Ljava/lang/String;>; )
+public static java.util.Set getCanonicalNamesFromLabelIdsString(
+android.provider.Gmail$LabelMap
+android.text.TextUtils$StringSplitter)
+
+public static java.lang.String getEmailFromAddressString(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Landroid/text/TextUtils$StringSplitter;)Ljava/util/Set<Ljava/lang/Long;>; )
+public static java.util.Set getLabelIdsFromLabelIdsString(
+android.text.TextUtils$StringSplitter)
+@dalvik.annotation.Signature (value =(Ljava/util/Set<Ljava/lang/Long;>;)Ljava/lang/String; )
+public static java.lang.String getLabelIdsStringFromLabelIds(
+java.util.Set)
+
+public static java.lang.String getNameFromAddressString(
+java.lang.String)
+
+public static void getSenderSnippet(
+java.lang.String
+android.text.SpannableStringBuilder
+int
+android.text.style.CharacterStyle
+android.text.style.CharacterStyle
+java.lang.CharSequence
+java.lang.CharSequence
+java.lang.CharSequence
+java.lang.CharSequence
+java.lang.CharSequence
+boolean
+boolean)
+
+public static boolean isLabelUserDefined(
+java.lang.String)
+
+public static boolean isLabelUserSettable(
+java.lang.String)
+
+public static android.text.TextUtils$StringSplitter newConversationLabelIdsSplitter()
+
+public static android.text.TextUtils$StringSplitter newMessageLabelIdsSplitter()
+
+private static java.lang.String toNonnullString(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/provider/Gmail$NonexistentLabelException; )
+public void addOrRemoveLabelOnConversation(
+java.lang.String
+long
+long
+java.lang.String
+boolean)
+
+public void expungeMessage(
+java.lang.String
+long)
+
+public android.provider.Gmail$ConversationCursor getConversationCursorForCursor(
+java.lang.String
+android.database.Cursor)
+
+public android.provider.Gmail$ConversationCursor getConversationCursorForQuery(
+java.lang.String
+java.lang.String)
+
+public android.provider.Gmail$LabelMap getLabelMap(
+java.lang.String)
+
+public android.provider.Gmail$MessageCursor getLocalMessageCursorForQuery(
+java.lang.String
+java.lang.String)
+
+public android.provider.Gmail$MessageCursor getMessageCursorForConversationId(
+java.lang.String
+long)
+
+public android.provider.Gmail$MessageCursor getMessageCursorForMessageId(
+java.lang.String
+long)
+
+public android.provider.Gmail$Settings getSettings(
+java.lang.String)
+
+public void runQueryForConversations(
+java.lang.String
+android.content.AsyncQueryHandler
+int
+java.lang.String)
+
+public void setSettings(
+java.lang.String
+android.provider.Gmail$Settings)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =AccountColumns )
+public abstract interface class android.provider.Im$AccountColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACTIVE
+
+public static final java.lang.String KEEP_SIGNED_IN
+
+public static final java.lang.String LAST_LOGIN_STATE
+
+public static final java.lang.String LOCKED
+
+public static final java.lang.String NAME
+
+public static final java.lang.String PASSWORD
+
+public static final java.lang.String PROVIDER
+
+public static final java.lang.String USERNAME
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Account )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public final class android.provider.Im$Account extends java.lang.Object implements android.provider.BaseColumns, android.provider.Im$AccountColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+private static final int PROVIDER_COLUMN
+
+private static final java.lang.String[] PROVIDER_PROJECTION
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static final long getProviderIdForAccount(
+android.content.ContentResolver
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =AvatarsColumns )
+public abstract interface class android.provider.Im$AvatarsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACCOUNT
+
+public static final java.lang.String CONTACT
+
+public static final java.lang.String DATA
+
+public static final java.lang.String HASH
+
+public static final java.lang.String PROVIDER
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Avatars )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public final class android.provider.Im$Avatars extends java.lang.Object implements android.provider.BaseColumns, android.provider.Im$AvatarsColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final android.net.Uri CONTENT_URI_AVATARS_BY
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =BaseMessageColumns )
+public abstract interface class android.provider.Im$BaseMessageColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String BODY
+
+public static final java.lang.String CONTACT
+
+public static final java.lang.String DATE
+
+public static final java.lang.String ERROR_CODE
+
+public static final java.lang.String ERROR_MESSAGE
+
+public static final java.lang.String PACKET_ID
+
+public static final java.lang.String TYPE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =BlockedListColumns )
+public abstract interface class android.provider.Im$BlockedListColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACCOUNT
+
+public static final java.lang.String NICKNAME
+
+public static final java.lang.String PROVIDER
+
+public static final java.lang.String USERNAME
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =BlockedList )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public final class android.provider.Im$BlockedList extends java.lang.Object implements android.provider.BaseColumns, android.provider.Im$BlockedListColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACCOUNT_NAME
+
+public static final java.lang.String AVATAR_DATA
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String PROVIDER_NAME
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ChatsColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public abstract interface class android.provider.Im$ChatsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTACT_ID
+
+public static final java.lang.String GROUP_CHAT
+
+public static final java.lang.String JID_RESOURCE
+
+public static final java.lang.String LAST_MESSAGE_DATE
+
+public static final java.lang.String LAST_UNREAD_MESSAGE
+
+public static final java.lang.String UNSENT_COMPOSED_MESSAGE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Chats )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public final class android.provider.Im$Chats extends java.lang.Object implements android.provider.BaseColumns, android.provider.Im$ChatsColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final android.net.Uri CONTENT_URI_BY_ACCOUNT
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ContactListColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public abstract interface class android.provider.Im$ContactListColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACCOUNT
+
+public static final java.lang.String NAME
+
+public static final java.lang.String PROVIDER
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =ContactList )
+public final class android.provider.Im$ContactList extends java.lang.Object implements android.provider.BaseColumns, android.provider.Im$ContactListColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACCOUNT_NAME
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String PROVIDER_NAME
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ContactsColumns )
+public abstract interface class android.provider.Im$ContactsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACCOUNT
+
+public static final java.lang.String CONTACTLIST
+
+public static final java.lang.String NICKNAME
+
+public static final java.lang.String PROVIDER
+
+public static final java.lang.String QUICK_CONTACT
+
+public static final java.lang.String REJECTED
+
+public static final java.lang.String SUBSCRIPTION_STATUS
+
+public static final int SUBSCRIPTION_STATUS_NONE
+
+public static final int SUBSCRIPTION_STATUS_SUBSCRIBE_PENDING
+
+public static final int SUBSCRIPTION_STATUS_UNSUBSCRIBE_PENDING
+
+public static final java.lang.String SUBSCRIPTION_TYPE
+
+public static final int SUBSCRIPTION_TYPE_BOTH
+
+public static final int SUBSCRIPTION_TYPE_FROM
+
+public static final int SUBSCRIPTION_TYPE_INVITATIONS
+
+public static final int SUBSCRIPTION_TYPE_NONE
+
+public static final int SUBSCRIPTION_TYPE_REMOVE
+
+public static final int SUBSCRIPTION_TYPE_TO
+
+public static final java.lang.String TYPE
+
+public static final int TYPE_BLOCKED
+
+public static final int TYPE_GROUP
+
+public static final int TYPE_HIDDEN
+
+public static final int TYPE_NORMAL
+
+public static final int TYPE_PINNED
+
+public static final int TYPE_TEMPORARY
+
+public static final java.lang.String USERNAME
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =PresenceColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public abstract interface class android.provider.Im$PresenceColumns extends java.lang.Object implements android.provider.Im$CommonPresenceColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CLIENT_TYPE
+
+public static final int CLIENT_TYPE_ANDROID
+
+public static final int CLIENT_TYPE_DEFAULT
+
+public static final int CLIENT_TYPE_MOBILE
+
+public static final java.lang.String CONTACT_ID
+
+public static final java.lang.String JID_RESOURCE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Contacts )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public final class android.provider.Im$Contacts extends java.lang.Object implements android.provider.BaseColumns, android.provider.Im$ContactsColumns, android.provider.Im$PresenceColumns, android.provider.Im$ChatsColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String AVATAR_DATA
+
+public static final java.lang.String AVATAR_HASH
+
+public static final android.net.Uri BULK_CONTENT_URI
+
+public static final java.lang.String CHATS_CONTACT
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final android.net.Uri CONTENT_URI_BLOCKED_CONTACTS
+
+public static final android.net.Uri CONTENT_URI_CHAT_CONTACTS
+
+public static final android.net.Uri CONTENT_URI_CHAT_CONTACTS_BY
+
+public static final android.net.Uri CONTENT_URI_CONTACTS_BAREBONE
+
+public static final android.net.Uri CONTENT_URI_CONTACTS_BY
+
+public static final android.net.Uri CONTENT_URI_OFFLINE_CONTACTS_BY
+
+public static final android.net.Uri CONTENT_URI_ONLINE_CONTACTS_BY
+
+public static final android.net.Uri CONTENT_URI_WITH_PRESENCE
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ContactsEtagColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public abstract interface class android.provider.Im$ContactsEtagColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACCOUNT
+
+public static final java.lang.String ETAG
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =ContactsEtag )
+public final class android.provider.Im$ContactsEtag extends java.lang.Object implements android.provider.BaseColumns, android.provider.Im$ContactsEtagColumns
+
+----------------FIELDS----------------
+
+private static int COLUMN_ETAG
+
+private static final java.lang.String[] CONTACT_ETAG_PROJECTION
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static final java.lang.String getRosterEtag(
+android.content.ContentResolver
+long)
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+java.lang.String[])
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+java.lang.String[]
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =CredentialSettingsColumns )
+public abstract interface class android.provider.Im$CredentialSettingsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String NAME
+
+public static final java.lang.String PROVIDER
+
+public static final java.lang.String VALUE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =CredentialSettings )
+public final class android.provider.Im$CredentialSettings extends java.lang.Object implements android.provider.BaseColumns, android.provider.Im$CredentialSettingsColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CLIENT_ID
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String PRIVATE_CLIENT_KEY1
+
+public static final java.lang.String PRIVATE_CLIENT_KEY2
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =GroupMemberColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public abstract interface class android.provider.Im$GroupMemberColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String GROUP
+
+public static final java.lang.String NICKNAME
+
+public static final java.lang.String USERNAME
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =GroupMembers )
+public final class android.provider.Im$GroupMembers extends java.lang.Object implements android.provider.Im$GroupMemberColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =GroupMessageColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public abstract interface class android.provider.Im$GroupMessageColumns extends java.lang.Object implements android.provider.Im$BaseMessageColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String GROUP
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =GroupMessages )
+public final class android.provider.Im$GroupMessages extends java.lang.Object implements android.provider.BaseColumns, android.provider.Im$GroupMessageColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final android.net.Uri CONTENT_URI_GROUP_MESSAGES_BY
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static final android.net.Uri getContentUriByGroup(
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =InvitationColumns )
+public abstract interface class android.provider.Im$InvitationColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACCOUNT
+
+public static final java.lang.String GROUP_NAME
+
+public static final java.lang.String INVITE_ID
+
+public static final java.lang.String NOTE
+
+public static final java.lang.String PROVIDER
+
+public static final java.lang.String SENDER
+
+public static final java.lang.String STATUS
+
+public static final int STATUS_ACCEPTED
+
+public static final int STATUS_PENDING
+
+public static final int STATUS_REJECTED
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Invitation )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public final class android.provider.Im$Invitation extends java.lang.Object implements android.provider.Im$InvitationColumns, android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =LastRmqIdColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public abstract interface class android.provider.Im$LastRmqIdColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String RMQ_ID
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =LastRmqId )
+public final class android.provider.Im$LastRmqId extends java.lang.Object implements android.provider.BaseColumns, android.provider.Im$LastRmqIdColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+private static java.lang.String[] PROJECTION
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static final long queryLastRmqId(
+android.content.ContentResolver)
+
+public static final void saveLastRmqId(
+android.content.ContentResolver
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =MessageType )
+public abstract interface class android.provider.Im$MessageType extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CONVERT_TO_GROUPCHAT
+
+public static final int INCOMING
+
+public static final int OUTGOING
+
+public static final int POSTPONED
+
+public static final int PRESENCE_AVAILABLE
+
+public static final int PRESENCE_AWAY
+
+public static final int PRESENCE_DND
+
+public static final int PRESENCE_UNAVAILABLE
+
+public static final int STATUS
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =MessagesColumns )
+public abstract interface class android.provider.Im$MessagesColumns extends java.lang.Object implements android.provider.Im$BaseMessageColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACCOUNT
+
+public static final java.lang.String PROVIDER
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Messages )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public final class android.provider.Im$Messages extends java.lang.Object implements android.provider.BaseColumns, android.provider.Im$MessagesColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final android.net.Uri CONTENT_URI_MESSAGES_BY
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static final android.net.Uri getContentUriByContact(
+long
+long
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OutgoingRmqColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public abstract interface class android.provider.Im$OutgoingRmqColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String DATA
+
+public static final java.lang.String RMQ_ID
+
+public static final java.lang.String TIMESTAMP
+
+public static final java.lang.String TYPE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =OutgoingRmq )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public final class android.provider.Im$OutgoingRmq extends java.lang.Object implements android.provider.BaseColumns, android.provider.Im$OutgoingRmqColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final android.net.Uri CONTENT_URI_FOR_HIGHEST_RMQ_ID
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+private static java.lang.String[] RMQ_ID_PROJECTION
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static final long queryHighestRmqId(
+android.content.ContentResolver)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Presence )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public final class android.provider.Im$Presence extends java.lang.Object implements android.provider.BaseColumns, android.provider.Im$PresenceColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri BULK_CONTENT_URI
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final android.net.Uri CONTENT_URI_BY_ACCOUNT
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final android.net.Uri SEED_PRESENCE_BY_ACCOUNT_CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ProviderColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public abstract interface class android.provider.Im$ProviderColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String FULLNAME
+
+public static final java.lang.String NAME
+
+public static final java.lang.String SIGNUP_URL
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Provider )
+public final class android.provider.Im$Provider extends java.lang.Object implements android.provider.BaseColumns, android.provider.Im$ProviderColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACTIVE_ACCOUNT_ID
+
+public static final java.lang.String ACTIVE_ACCOUNT_PW
+
+public static final java.lang.String ACTIVE_ACCOUNT_USERNAME
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final android.net.Uri CONTENT_URI_WITH_ACCOUNT
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+private static final java.lang.String[] PROVIDER_PROJECTION
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static java.lang.String getProviderCategoryFromName(
+java.lang.String)
+
+public static final long getProviderIdForName(
+android.content.ContentResolver
+java.lang.String)
+
+public static java.lang.String getProviderNameForCategory(
+java.lang.String)
+
+public static final java.lang.String getProviderNameForId(
+android.content.ContentResolver
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ProviderCategories )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public abstract interface class android.provider.Im$ProviderCategories extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String AIM
+
+public static final java.lang.String GTALK
+
+public static final java.lang.String ICQ
+
+public static final java.lang.String MSN
+
+public static final java.lang.String YAHOO
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ProviderNames )
+public abstract interface class android.provider.Im$ProviderNames extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String AIM
+
+public static final java.lang.String GTALK
+
+public static final java.lang.String ICQ
+
+public static final java.lang.String MSN
+
+public static final java.lang.String YAHOO
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im$ProviderSettings; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =QueryMap )
+public class android.provider.Im$ProviderSettings$QueryMap extends android.content.ContentQueryMap
+
+----------------FIELDS----------------
+
+private android.content.ContentResolver mContentResolver
+
+private long mProviderId
+----------------METHODS----------------
+
+public void <init>(
+android.content.ContentResolver
+long
+boolean
+android.os.Handler)
+
+private boolean getBoolean(
+java.lang.String
+boolean)
+
+private int getInteger(
+java.lang.String
+int)
+
+private java.lang.String getString(
+java.lang.String
+java.lang.String)
+
+public boolean getAutomaticallyConnectToGTalkServer()
+
+public boolean getEnableNotification()
+
+public boolean getHideOfflineContacts()
+
+public java.lang.String getRingtoneURI()
+
+public boolean getShowMobileIndicator()
+
+public boolean getVibrate()
+
+public void setAutomaticallyConnectToGTalkServer(
+boolean)
+
+public void setEnableNotification(
+boolean)
+
+public void setHideOfflineContacts(
+boolean)
+
+public void setRingtoneURI(
+java.lang.String)
+
+public void setShowMobileIndicator(
+boolean)
+
+public void setVibrate(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ProviderSettingsColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public abstract interface class android.provider.Im$ProviderSettingsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String NAME
+
+public static final java.lang.String PROVIDER
+
+public static final java.lang.String VALUE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =ProviderSettings )
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Im$ProviderSettings$QueryMap; )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public class android.provider.Im$ProviderSettings extends java.lang.Object implements android.provider.Im$ProviderSettingsColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_ACCOUNT
+
+public static final java.lang.String DEFUALT_DOMAIN
+
+public static final java.lang.String IMPS_BASIC_PA_ONLY_PREF
+
+public static final java.lang.String IMPS_CIR_CHANNEL_PREF
+
+public static final java.lang.String IMPS_DATA_CHANNEL_PREF
+
+public static final java.lang.String IMPS_DATA_ENCODING_PREF
+
+public static final java.lang.String IMPS_HOST_PREF
+
+public static final java.lang.String IMPS_MSISDN_PREF
+
+public static final java.lang.String IMPS_PASSWORD_DIGEST_CLASS_PREF
+
+public static final java.lang.String IMPS_PRESENCE_MAPPING_CLASS_PREF
+
+public static final java.lang.String IMPS_SECURE_LOGIN_PREF
+
+public static final java.lang.String LAST_RMQ_RECEIVED
+
+public static final java.lang.String SETTING_AUTOMATICALLY_CONNECT_GTALK
+
+public static final java.lang.String SETTING_AUTOMATICALLY_START_SERVICE
+
+public static final java.lang.String SETTING_ENABLE_NOTIFICATION
+
+public static final java.lang.String SETTING_HIDE_OFFLINE_CONTACTS
+
+public static final java.lang.String SETTING_RINGTONE
+
+public static final java.lang.String SETTING_RINGTONE_DEFAULT
+
+public static final java.lang.String SETTING_SHOW_MOBILE_INDICATOR
+
+public static final java.lang.String SETTING_VIBRATE
+
+public static final java.lang.String SHOW_OFFLINE_CONTACTS
+
+public static final java.lang.String SIGNUP_URL
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static boolean getBooleanValue(
+android.content.ContentResolver
+long
+java.lang.String)
+
+private static android.database.Cursor getSettingValue(
+android.content.ContentResolver
+long
+java.lang.String)
+
+public static java.lang.String getStringValue(
+android.content.ContentResolver
+long
+java.lang.String)
+
+public static void putBooleanValue(
+android.content.ContentResolver
+long
+java.lang.String
+boolean)
+
+public static void putLongValue(
+android.content.ContentResolver
+long
+java.lang.String
+long)
+
+public static void putStringValue(
+android.content.ContentResolver
+long
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Signature (value =(Landroid/content/ContentResolver;J)Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>; )
+public static java.util.HashMap queryProviderSettings(
+android.content.ContentResolver
+long)
+
+public static void setAutomaticallyConnectGTalk(
+android.content.ContentResolver
+long
+boolean)
+
+public static void setEnableNotification(
+android.content.ContentResolver
+long
+boolean)
+
+public static void setHideOfflineContacts(
+android.content.ContentResolver
+long
+boolean)
+
+public static void setRingtoneURI(
+android.content.ContentResolver
+long
+java.lang.String)
+
+public static void setShowMobileIndicator(
+android.content.ContentResolver
+long
+boolean)
+
+public static void setVibrate(
+android.content.ContentResolver
+long
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =SessionCookiesColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+public abstract interface class android.provider.Im$SessionCookiesColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACCOUNT
+
+public static final java.lang.String NAME
+
+public static final java.lang.String PROVIDER
+
+public static final java.lang.String VALUE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Im; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =SessionCookies )
+public class android.provider.Im$SessionCookies extends java.lang.Object implements android.provider.Im$SessionCookiesColumns, android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final android.net.Uri CONTENT_URI_SESSION_COOKIES_BY
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Im$CredentialSettings;Landroid/provider/Im$CredentialSettingsColumns;Landroid/provider/Im$LastRmqId;Landroid/provider/Im$LastRmqIdColumns;Landroid/provider/Im$OutgoingRmq;Landroid/provider/Im$OutgoingRmqColumns;Landroid/provider/Im$ProviderSettings;Landroid/provider/Im$ProviderSettingsColumns;Landroid/provider/Im$SessionCookies;Landroid/provider/Im$SessionCookiesColumns;Landroid/provider/Im$Chats;Landroid/provider/Im$ChatsColumns;Landroid/provider/Im$Presence;Landroid/provider/Im$PresenceColumns;Landroid/provider/Im$CommonPresenceColumns;Landroid/provider/Im$Avatars;Landroid/provider/Im$AvatarsColumns;Landroid/provider/Im$GroupMessages;Landroid/provider/Im$GroupMessageColumns;Landroid/provider/Im$Invitation;Landroid/provider/Im$InvitationColumns;Landroid/provider/Im$GroupMembers;Landroid/provider/Im$GroupMemberColumns;Landroid/provider/Im$Messages;Landroid/provider/Im$MessagesColumns;Landroid/provider/Im$BaseMessageColumns;Landroid/provider/Im$MessageType;Landroid/provider/Im$ContactsEtag;Landroid/provider/Im$ContactsEtagColumns;Landroid/provider/Im$BlockedList;Landroid/provider/Im$BlockedListColumns;Landroid/provider/Im$ContactList;Landroid/provider/Im$ContactListColumns;Landroid/provider/Im$Contacts;Landroid/provider/Im$ContactsColumns;Landroid/provider/Im$Account;Landroid/provider/Im$AccountColumns;Landroid/provider/Im$Provider;Landroid/provider/Im$ProviderCategories;Landroid/provider/Im$ProviderNames;Landroid/provider/Im$ProviderColumns; )
+public class android.provider.Im extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =AlbumColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Audio; )
+public abstract interface class android.provider.MediaStore$Audio$AlbumColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ALBUM
+
+public static final java.lang.String ALBUM_ART
+
+public static final java.lang.String ALBUM_ID
+
+public static final java.lang.String ALBUM_KEY
+
+public static final java.lang.String ARTIST
+
+public static final java.lang.String FIRST_YEAR
+
+public static final java.lang.String LAST_YEAR
+
+public static final java.lang.String NUMBER_OF_SONGS
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Albums )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Audio; )
+public final class android.provider.MediaStore$Audio$Albums extends java.lang.Object implements android.provider.BaseColumns, android.provider.MediaStore$Audio$AlbumColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String ENTRY_CONTENT_TYPE
+
+public static final android.net.Uri EXTERNAL_CONTENT_URI
+
+public static final android.net.Uri INTERNAL_CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.net.Uri getContentUri(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Audio; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ArtistColumns )
+public abstract interface class android.provider.MediaStore$Audio$ArtistColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ARTIST
+
+public static final java.lang.String ARTIST_KEY
+
+public static final java.lang.String NUMBER_OF_ALBUMS
+
+public static final java.lang.String NUMBER_OF_TRACKS
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Audio$Artists; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Albums )
+public final class android.provider.MediaStore$Audio$Artists$Albums extends java.lang.Object implements android.provider.MediaStore$Audio$AlbumColumns
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static final android.net.Uri getContentUri(
+java.lang.String
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/MediaStore$Audio$Artists$Albums; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Artists )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Audio; )
+public final class android.provider.MediaStore$Audio$Artists extends java.lang.Object implements android.provider.BaseColumns, android.provider.MediaStore$Audio$ArtistColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String ENTRY_CONTENT_TYPE
+
+public static final android.net.Uri EXTERNAL_CONTENT_URI
+
+public static final android.net.Uri INTERNAL_CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.net.Uri getContentUri(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =MediaColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore; )
+public abstract interface class android.provider.MediaStore$MediaColumns extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String DATA
+
+public static final java.lang.String DATE_ADDED
+
+public static final java.lang.String DATE_MODIFIED
+
+public static final java.lang.String DISPLAY_NAME
+
+public static final java.lang.String MIME_TYPE
+
+public static final java.lang.String SIZE
+
+public static final java.lang.String TITLE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =AudioColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Audio; )
+public abstract interface class android.provider.MediaStore$Audio$AudioColumns extends java.lang.Object implements android.provider.MediaStore$MediaColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String ALBUM
+
+public static final java.lang.String ALBUM_ART
+
+public static final java.lang.String ALBUM_ID
+
+public static final java.lang.String ALBUM_KEY
+
+public static final java.lang.String ARTIST
+
+public static final java.lang.String ARTIST_ID
+
+public static final java.lang.String ARTIST_KEY
+
+public static final java.lang.String COMPOSER
+
+public static final java.lang.String DURATION
+
+public static final java.lang.String IS_ALARM
+
+public static final java.lang.String IS_MUSIC
+
+public static final java.lang.String IS_NOTIFICATION
+
+public static final java.lang.String IS_RINGTONE
+
+public static final java.lang.String TITLE_KEY
+
+public static final java.lang.String TRACK
+
+public static final java.lang.String YEAR
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Audio$Genres; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Members )
+public final class android.provider.MediaStore$Audio$Genres$Members extends java.lang.Object implements android.provider.MediaStore$Audio$AudioColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String AUDIO_ID
+
+public static final java.lang.String CONTENT_DIRECTORY
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String GENRE_ID
+----------------METHODS----------------
+
+public void <init>()
+
+public static final android.net.Uri getContentUri(
+java.lang.String
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =GenresColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Audio; )
+public abstract interface class android.provider.MediaStore$Audio$GenresColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String NAME
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Genres )
+@dalvik.annotation.MemberClasses (value =Landroid/provider/MediaStore$Audio$Genres$Members; )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Audio; )
+public final class android.provider.MediaStore$Audio$Genres extends java.lang.Object implements android.provider.BaseColumns, android.provider.MediaStore$Audio$GenresColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String ENTRY_CONTENT_TYPE
+
+public static final android.net.Uri EXTERNAL_CONTENT_URI
+
+public static final android.net.Uri INTERNAL_CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.net.Uri getContentUri(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Media )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Audio; )
+public final class android.provider.MediaStore$Audio$Media extends java.lang.Object implements android.provider.MediaStore$Audio$AudioColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final android.net.Uri EXTERNAL_CONTENT_URI
+
+public static final android.net.Uri INTERNAL_CONTENT_URI
+
+public static final java.lang.String RECORD_SOUND_ACTION
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.net.Uri getContentUri(
+java.lang.String)
+
+public static android.net.Uri getContentUriForPath(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Members )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Audio$Playlists; )
+public final class android.provider.MediaStore$Audio$Playlists$Members extends java.lang.Object implements android.provider.MediaStore$Audio$AudioColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String AUDIO_ID
+
+public static final java.lang.String CONTENT_DIRECTORY
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String PLAYLIST_ID
+
+public static final java.lang.String PLAY_ORDER
+
+public static final java.lang.String _ID
+----------------METHODS----------------
+
+public void <init>()
+
+public static final android.net.Uri getContentUri(
+java.lang.String
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Audio; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =PlaylistsColumns )
+public abstract interface class android.provider.MediaStore$Audio$PlaylistsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String DATA
+
+public static final java.lang.String DATE_ADDED
+
+public static final java.lang.String DATE_MODIFIED
+
+public static final java.lang.String NAME
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Playlists )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Audio; )
+@dalvik.annotation.MemberClasses (value =Landroid/provider/MediaStore$Audio$Playlists$Members; )
+public final class android.provider.MediaStore$Audio$Playlists extends java.lang.Object implements android.provider.BaseColumns, android.provider.MediaStore$Audio$PlaylistsColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String ENTRY_CONTENT_TYPE
+
+public static final android.net.Uri EXTERNAL_CONTENT_URI
+
+public static final android.net.Uri INTERNAL_CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.net.Uri getContentUri(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/MediaStore$Audio$Albums;Landroid/provider/MediaStore$Audio$AlbumColumns;Landroid/provider/MediaStore$Audio$Artists;Landroid/provider/MediaStore$Audio$ArtistColumns;Landroid/provider/MediaStore$Audio$Playlists;Landroid/provider/MediaStore$Audio$PlaylistsColumns;Landroid/provider/MediaStore$Audio$Genres;Landroid/provider/MediaStore$Audio$GenresColumns;Landroid/provider/MediaStore$Audio$Media;Landroid/provider/MediaStore$Audio$AudioColumns; )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Audio )
+public final class android.provider.MediaStore$Audio extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String keyFor(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Images; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ImageColumns )
+public abstract interface class android.provider.MediaStore$Images$ImageColumns extends java.lang.Object implements android.provider.MediaStore$MediaColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String BUCKET_DISPLAY_NAME
+
+public static final java.lang.String BUCKET_ID
+
+public static final java.lang.String DATE_TAKEN
+
+public static final java.lang.String DESCRIPTION
+
+public static final java.lang.String IS_PRIVATE
+
+public static final java.lang.String LATITUDE
+
+public static final java.lang.String LONGITUDE
+
+public static final java.lang.String MINI_THUMB_MAGIC
+
+public static final java.lang.String ORIENTATION
+
+public static final java.lang.String PICASA_ID
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Images; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Media )
+public final class android.provider.MediaStore$Images$Media extends java.lang.Object implements android.provider.MediaStore$Images$ImageColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final android.net.Uri EXTERNAL_CONTENT_URI
+
+public static final android.net.Uri INTERNAL_CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static final android.graphics.Bitmap StoreThumbnail(
+android.content.ContentResolver
+android.graphics.Bitmap
+long
+float
+float
+int)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException;Ljava/io/IOException; )
+public static final android.graphics.Bitmap getBitmap(
+android.content.ContentResolver
+android.net.Uri)
+
+public static android.net.Uri getContentUri(
+java.lang.String)
+
+public static final java.lang.String insertImage(
+android.content.ContentResolver
+android.graphics.Bitmap
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public static final java.lang.String insertImage(
+android.content.ContentResolver
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+android.net.Uri
+java.lang.String[])
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String)
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Thumbnails )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Images; )
+public class android.provider.MediaStore$Images$Thumbnails extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String DATA
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final android.net.Uri EXTERNAL_CONTENT_URI
+
+public static final int FULL_SCREEN_KIND
+
+public static final java.lang.String HEIGHT
+
+public static final java.lang.String IMAGE_ID
+
+public static final android.net.Uri INTERNAL_CONTENT_URI
+
+public static final java.lang.String KIND
+
+public static final int MICRO_KIND
+
+public static final int MINI_KIND
+
+public static final java.lang.String WIDTH
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.net.Uri getContentUri(
+java.lang.String)
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+android.net.Uri
+java.lang.String[])
+
+public static final android.database.Cursor queryMiniThumbnail(
+android.content.ContentResolver
+long
+int
+java.lang.String[])
+
+public static final android.database.Cursor queryMiniThumbnails(
+android.content.ContentResolver
+android.net.Uri
+int
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/MediaStore$Images$Thumbnails;Landroid/provider/MediaStore$Images$Media;Landroid/provider/MediaStore$Images$ImageColumns; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Images )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore; )
+public final class android.provider.MediaStore$Images extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =VideoColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Video; )
+public abstract interface class android.provider.MediaStore$Video$VideoColumns extends java.lang.Object implements android.provider.MediaStore$MediaColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String ALBUM
+
+public static final java.lang.String ARTIST
+
+public static final java.lang.String CATEGORY
+
+public static final java.lang.String DATE_TAKEN
+
+public static final java.lang.String DESCRIPTION
+
+public static final java.lang.String DURATION
+
+public static final java.lang.String IS_PRIVATE
+
+public static final java.lang.String LANGUAGE
+
+public static final java.lang.String LATITUDE
+
+public static final java.lang.String LONGITUDE
+
+public static final java.lang.String MINI_THUMB_MAGIC
+
+public static final java.lang.String RESOLUTION
+
+public static final java.lang.String TAGS
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Media )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore$Video; )
+public final class android.provider.MediaStore$Video$Media extends java.lang.Object implements android.provider.MediaStore$Video$VideoColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final android.net.Uri EXTERNAL_CONTENT_URI
+
+public static final android.net.Uri INTERNAL_CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.net.Uri getContentUri(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/MediaStore$Video$Media;Landroid/provider/MediaStore$Video$VideoColumns; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Video )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/MediaStore; )
+public final class android.provider.MediaStore$Video extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+public void <init>()
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+android.net.Uri
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/MediaStore$Video;Landroid/provider/MediaStore$Audio;Landroid/provider/MediaStore$Images;Landroid/provider/MediaStore$MediaColumns; )
+public final class android.provider.MediaStore extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACTION_IMAGE_CAPTURE
+
+public static final java.lang.String AUTHORITY
+
+private static final java.lang.String CONTENT_AUTHORITY_SLASH
+
+public static final java.lang.String FILE_URI_PREFIX
+
+public static final java.lang.String MEDIA_SCANNER_VOLUME
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.net.Uri getMediaScannerUri()
+
+________________CLASS________________
+
+
+public abstract interface class android.provider.OpenableColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String DISPLAY_NAME
+
+public static final java.lang.String SIZE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/SearchRecentSuggestions; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =SuggestionColumns )
+ class android.provider.SearchRecentSuggestions$SuggestionColumns extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String DATE
+
+public static final java.lang.String DISPLAY1
+
+public static final java.lang.String DISPLAY2
+
+public static final java.lang.String QUERY
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/SearchRecentSuggestions$SuggestionColumns; )
+public class android.provider.SearchRecentSuggestions extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int DBG_SUGGESTION_TIMESTAMPS
+
+private static final java.lang.String LOG_TAG
+
+private static final int MAX_HISTORY_COUNT
+
+public static final java.lang.String[] QUERIES_PROJECTION_1LINE
+
+public static final java.lang.String[] QUERIES_PROJECTION_2LINE
+
+public static final int QUERIES_PROJECTION_DATE_INDEX
+
+public static final int QUERIES_PROJECTION_DISPLAY1_INDEX
+
+public static final int QUERIES_PROJECTION_DISPLAY2_INDEX
+
+public static final int QUERIES_PROJECTION_QUERY_INDEX
+
+private static final java.lang.String[] TRUNCATE_HISTORY_PROJECTION
+
+private java.lang.String mAuthority
+
+private android.content.Context mContext
+
+private java.lang.String[] mQueriesProjection
+
+private android.net.Uri mSuggestionsUri
+
+private boolean mTwoLineDisplay
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context
+java.lang.String
+int)
+
+public void clearHistory()
+
+public void saveRecentQuery(
+java.lang.String
+java.lang.String)
+
+protected void truncateHistory(
+android.content.ContentResolver
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Settings; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Bookmarks )
+public final class android.provider.Settings$Bookmarks extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String FOLDER
+
+public static final java.lang.String ID
+
+public static final java.lang.String INTENT
+
+public static final java.lang.String ORDERING
+
+public static final java.lang.String SHORTCUT
+
+private static final java.lang.String TAG
+
+public static final java.lang.String TITLE
+
+private static final java.lang.String[] sIntentProjection
+
+private static final java.lang.String[] sShortcutProjection
+
+private static final java.lang.String sShortcutSelection
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.net.Uri add(
+android.content.ContentResolver
+android.content.Intent
+java.lang.String
+java.lang.String
+char
+int)
+
+public static android.content.Intent getIntentForShortcut(
+android.content.ContentResolver
+char)
+
+public static java.lang.CharSequence labelForFolder(
+android.content.res.Resources
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Settings$Gservices; )
+@java.lang.Deprecated
+@dalvik.annotation.InnerClass (accessFlags =9 name =QueryMap )
+public class android.provider.Settings$Gservices$QueryMap extends android.content.ContentQueryMap
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.content.ContentResolver
+android.database.Cursor
+boolean
+android.os.Handler)
+
+public void <init>(
+android.content.ContentResolver
+boolean
+android.os.Handler)
+
+public java.lang.String getString(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =NameValueTable )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Settings; )
+public class android.provider.Settings$NameValueTable extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String NAME
+
+public static final java.lang.String VALUE
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.net.Uri getUriFor(
+android.net.Uri
+java.lang.String)
+
+protected static boolean putString(
+android.content.ContentResolver
+android.net.Uri
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Settings$Gservices$QueryMap; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Gservices )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Settings; )
+public final class android.provider.Settings$Gservices extends android.provider.Settings$NameValueTable
+
+----------------FIELDS----------------
+
+public static final java.lang.String CHECKIN_EVENTS
+
+public static final java.lang.String CHECKIN_INTERVAL
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DISK_FREE_CHANGE_REPORTING_THRESHOLD
+
+public static final java.lang.String GLS_PUBLIC_KEY
+
+public static final java.lang.String GMAIL_CONFIG_INFO_MIN_SERVER_VERSION
+
+public static final java.lang.String GMAIL_DISALLOW_IMAGE_PREVIEWS
+
+public static final java.lang.String GMAIL_TIMEOUT_MS
+
+public static final java.lang.String GOOGLE_LOGIN_GENERIC_AUTH_SERVICE
+
+public static final java.lang.String GOOGLE_SERVICES_PREFIX
+
+public static final java.lang.String GTALK_DATA_MESSAGE_WAKELOCK_MS
+
+public static final java.lang.String GTALK_SERVICE_ACTIVE_HEARTBEAT_INTERVAL_MS
+
+public static final java.lang.String GTALK_SERVICE_AWAY_HEARTBEAT_INTERVAL_MS
+
+public static final java.lang.String GTALK_SERVICE_CONNECT_ON_AUTO_SYNC
+
+public static final java.lang.String GTALK_SERVICE_HEARTBEAT_ACK_TIMEOUT_MS
+
+public static final java.lang.String GTALK_SERVICE_HOSTNAME
+
+public static final java.lang.String GTALK_SERVICE_IDLE_TIMEOUT_MS
+
+public static final java.lang.String GTALK_SERVICE_MAX_RECONNECT_DELAY
+
+public static final java.lang.String GTALK_SERVICE_MIN_RECONNECT_DELAY_LONG
+
+public static final java.lang.String GTALK_SERVICE_MIN_RECONNECT_DELAY_SHORT
+
+public static final java.lang.String GTALK_SERVICE_NOSYNC_HEARTBEAT_INTERVAL_MS
+
+public static final java.lang.String GTALK_SERVICE_RECONNECT_VARIANT_LONG
+
+public static final java.lang.String GTALK_SERVICE_RECONNECT_VARIANT_SHORT
+
+public static final java.lang.String GTALK_SERVICE_RMQ_ACK_INTERVAL
+
+public static final java.lang.String GTALK_SERVICE_SECURE_PORT
+
+public static final java.lang.String GTALK_SERVICE_SHORT_NETWORK_DOWNTIME
+
+public static final java.lang.String GTALK_SERVICE_SYNC_HEARTBEAT_INTERVAL_MS
+
+public static final java.lang.String GTALK_SSL_HANDSHAKE_TIMEOUT_MS
+
+public static final java.lang.String MEMCHECK_EXEC_END_TIME
+
+public static final java.lang.String MEMCHECK_EXEC_START_TIME
+
+public static final java.lang.String MEMCHECK_INTERVAL
+
+public static final java.lang.String MEMCHECK_LOG_REALTIME_INTERVAL
+
+public static final java.lang.String MEMCHECK_MIN_ALARM
+
+public static final java.lang.String MEMCHECK_MIN_SCREEN_OFF
+
+public static final java.lang.String MEMCHECK_PHONE_ENABLED
+
+public static final java.lang.String MEMCHECK_PHONE_HARD_THRESHOLD
+
+public static final java.lang.String MEMCHECK_PHONE_SOFT_THRESHOLD
+
+public static final java.lang.String MEMCHECK_RECHECK_INTERVAL
+
+public static final java.lang.String MEMCHECK_SYSTEM_ENABLED
+
+public static final java.lang.String MEMCHECK_SYSTEM_HARD_THRESHOLD
+
+public static final java.lang.String MEMCHECK_SYSTEM_SOFT_THRESHOLD
+
+public static final java.lang.String MMS_X_WAP_PROFILE_URL
+
+public static final java.lang.String PARENTAL_CONTROL_CHECK_ENABLED
+
+public static final java.lang.String PARENTAL_CONTROL_EXPECTED_RESPONSE
+
+public static final java.lang.String PARENTAL_CONTROL_REDIRECT_REGEX
+
+public static final java.lang.String PARENTAL_CONTROL_TIMEOUT_IN_MS
+
+public static final java.lang.String PROVISIONING_DIGEST
+
+public static final java.lang.String PROVISIONING_OVERRIDE
+
+public static final java.lang.String REBOOT_INTERVAL
+
+public static final java.lang.String REBOOT_START_TIME
+
+public static final java.lang.String REBOOT_WINDOW
+
+public static final java.lang.String SETTINGS_CONTRIBUTORS_PRETTY_URL
+
+public static final java.lang.String SETTINGS_CONTRIBUTORS_URL
+
+public static final java.lang.String SETTINGS_TOS_PRETTY_URL
+
+public static final java.lang.String SETTINGS_TOS_URL
+
+public static final java.lang.String SYNC_MAX_RETRY_DELAY_IN_SECONDS
+
+public static final java.lang.String SYNC_MIN_GZIP_BYTES
+
+public static final java.lang.String SYS_FREE_STORAGE_LOG_INTERVAL
+
+public static final java.lang.String SYS_PROP_SETTING_VERSION
+
+public static final java.lang.String SYS_STORAGE_THRESHOLD_PERCENTAGE
+
+public static final java.lang.String USE_MSISDN_TOKEN
+
+public static final java.lang.String VENDING_REQUIRE_SIM_FOR_PURCHASE
+
+public static final java.lang.String VENDING_SUPPORT_URL
+
+public static final java.lang.String VENDING_SYNC_FREQUENCY_MS
+
+public static final java.lang.String VENDING_TOS_URL
+
+public static final java.lang.String VENDING_TOS_VERSION
+
+public static final java.lang.String VENDING_USE_CHECKOUT_QA_SERVICE
+
+public static final java.lang.String YOUTUBE_BY_AUTHOR_URL
+
+public static final java.lang.String YOUTUBE_CATEGORY_LIST_URL
+
+public static final java.lang.String YOUTUBE_CATEGORY_SEARCH_URL
+
+public static final java.lang.String YOUTUBE_INDIVIDUAL_VIDEO_URL
+
+public static final java.lang.String YOUTUBE_MOBILE_VIDEOS_URL
+
+public static final java.lang.String YOUTUBE_MOST_DISCUSSED_URL
+
+public static final java.lang.String YOUTUBE_MOST_LINKED_URL
+
+public static final java.lang.String YOUTUBE_MOST_RECENT_URL
+
+public static final java.lang.String YOUTUBE_MOST_RESPONDED_URL
+
+public static final java.lang.String YOUTUBE_MOST_VIEWED_URL
+
+public static final java.lang.String YOUTUBE_MY_FAVORITES_URL
+
+public static final java.lang.String YOUTUBE_MY_PLAYLISTS_URL
+
+public static final java.lang.String YOUTUBE_MY_SUBSCRIPTIONS_URL
+
+public static final java.lang.String YOUTUBE_MY_VIDEOS_URL
+
+public static final java.lang.String YOUTUBE_RECENTLY_FEATURED_URL
+
+public static final java.lang.String YOUTUBE_REGISTER_DEVICE_URL
+
+public static final java.lang.String YOUTUBE_RELATED_VIDEOS_URL
+
+public static final java.lang.String YOUTUBE_SAVE_TO_FAVORITES_URL
+
+public static final java.lang.String YOUTUBE_SEARCH_URL
+
+public static final java.lang.String YOUTUBE_TOP_FAVORITES_URL
+
+public static final java.lang.String YOUTUBE_TOP_RATED_URL
+
+public static final java.lang.String YOUTUBE_USE_PROXY
+
+private static volatile android.provider.Settings$NameValueCache mNameValueCache
+
+private static final java.lang.Object mNameValueCacheLock
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static int getInt(
+android.content.ContentResolver
+java.lang.String
+int)
+
+public static long getLong(
+android.content.ContentResolver
+java.lang.String
+long)
+
+public static java.lang.String getString(
+android.content.ContentResolver
+java.lang.String)
+
+public static android.net.Uri getUriFor(
+java.lang.String)
+
+public static boolean putString(
+android.content.ContentResolver
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Settings; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =NameValueCache )
+ class android.provider.Settings$NameValueCache extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final android.net.Uri mUri
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>; )
+private final java.util.HashMap mValues
+
+private long mValuesVersion
+
+private final java.lang.String mVersionSystemProperty
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+android.net.Uri)
+
+ java.lang.String getString(
+android.content.ContentResolver
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Settings; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =SettingNotFoundException )
+public class android.provider.Settings$SettingNotFoundException extends android.util.AndroidException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =System )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Settings; )
+public final class android.provider.Settings$System extends android.provider.Settings$NameValueTable
+
+----------------FIELDS----------------
+
+public static final java.lang.String ADB_ENABLED
+
+public static final java.lang.String AIRPLANE_MODE_ON
+
+public static final java.lang.String AIRPLANE_MODE_RADIOS
+
+public static final java.lang.String ALWAYS_FINISH_ACTIVITIES
+
+public static final java.lang.String ANDROID_ID
+
+public static final java.lang.String APPEND_FOR_LAST_AUDIBLE
+
+public static final java.lang.String AUTO_TIME
+
+public static final java.lang.String BLUETOOTH_DISCOVERABILITY
+
+public static final java.lang.String BLUETOOTH_DISCOVERABILITY_TIMEOUT
+
+public static final java.lang.String BLUETOOTH_ON
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DATA_ROAMING
+
+public static final java.lang.String DATE_FORMAT
+
+public static final java.lang.String DEBUG_APP
+
+public static final android.net.Uri DEFAULT_NOTIFICATION_URI
+
+public static final android.net.Uri DEFAULT_RINGTONE_URI
+
+public static final java.lang.String DEVICE_PROVISIONED
+
+public static final java.lang.String DIM_SCREEN
+
+public static final java.lang.String DTMF_TONE_WHEN_DIALING
+
+public static final java.lang.String END_BUTTON_BEHAVIOR
+
+public static final java.lang.String FONT_SCALE
+
+public static final java.lang.String HTTP_PROXY
+
+public static final java.lang.String INSTALL_NON_MARKET_APPS
+
+public static final java.lang.String LOCATION_PROVIDERS_ALLOWED
+
+public static final java.lang.String LOCK_PATTERN_ENABLED
+
+public static final java.lang.String LOCK_PATTERN_VISIBLE
+
+public static final java.lang.String LOGGING_ID
+
+public static final java.lang.String MODE_RINGER
+
+public static final java.lang.String MODE_RINGER_STREAMS_AFFECTED
+
+public static final java.lang.String MUTE_STREAMS_AFFECTED
+
+public static final java.lang.String NETWORK_PREFERENCE
+
+public static final java.lang.String NEXT_ALARM_FORMATTED
+
+public static final java.lang.String NOTIFICATION_SOUND
+
+public static final java.lang.String PARENTAL_CONTROL_ENABLED
+
+public static final java.lang.String PARENTAL_CONTROL_LAST_UPDATE
+
+public static final java.lang.String PARENTAL_CONTROL_REDIRECT_URL
+
+public static final java.lang.String RADIO_BLUETOOTH
+
+public static final java.lang.String RADIO_CELL
+
+public static final java.lang.String RADIO_WIFI
+
+public static final java.lang.String RINGTONE
+
+public static final java.lang.String SCREEN_BRIGHTNESS
+
+public static final java.lang.String SCREEN_OFF_TIMEOUT
+
+public static final java.lang.String SETTINGS_CLASSNAME
+
+public static final java.lang.String SETUP_WIZARD_HAS_RUN
+
+public static final java.lang.String SHOW_GTALK_SERVICE_STATUS
+
+public static final java.lang.String SHOW_PROCESSES
+
+public static final java.lang.String SOUND_EFFECTS_ENABLED
+
+public static final java.lang.String STAY_ON_WHILE_PLUGGED_IN
+
+public static final java.lang.String SYS_PROP_SETTING_VERSION
+
+public static final java.lang.String TEXT_AUTO_CAPS
+
+public static final java.lang.String TEXT_AUTO_PUNCTUATE
+
+public static final java.lang.String TEXT_AUTO_REPLACE
+
+public static final java.lang.String TEXT_SHOW_PASSWORD
+
+public static final java.lang.String TIME_12_24
+
+public static final java.lang.String TRANSITION_ANIMATION_SCALE
+
+public static final java.lang.String USB_MASS_STORAGE_ENABLED
+
+public static final java.lang.String USE_GOOGLE_MAIL
+
+public static final java.lang.String VIBRATE_ON
+
+public static final java.lang.String VOLUME_ALARM
+
+public static final java.lang.String VOLUME_MUSIC
+
+public static final java.lang.String VOLUME_RING
+
+public static final java.lang.String[] VOLUME_SETTINGS
+
+public static final java.lang.String VOLUME_SYSTEM
+
+public static final java.lang.String VOLUME_VOICE
+
+public static final java.lang.String WAIT_FOR_DEBUGGER
+
+public static final java.lang.String WALLPAPER_ACTIVITY
+
+public static final java.lang.String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON
+
+public static final java.lang.String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY
+
+public static final java.lang.String WIFI_NUM_OPEN_NETWORKS_KEPT
+
+public static final java.lang.String WIFI_ON
+
+public static final java.lang.String WIFI_STATIC_DNS1
+
+public static final java.lang.String WIFI_STATIC_DNS2
+
+public static final java.lang.String WIFI_STATIC_GATEWAY
+
+public static final java.lang.String WIFI_STATIC_IP
+
+public static final java.lang.String WIFI_STATIC_NETMASK
+
+public static final java.lang.String WIFI_USE_STATIC_IP
+
+public static final java.lang.String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE
+
+public static final java.lang.String WIFI_WATCHDOG_AP_COUNT
+
+public static final java.lang.String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS
+
+public static final java.lang.String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED
+
+public static final java.lang.String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS
+
+public static final java.lang.String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT
+
+public static final java.lang.String WIFI_WATCHDOG_MAX_AP_CHECKS
+
+public static final java.lang.String WIFI_WATCHDOG_ON
+
+public static final java.lang.String WIFI_WATCHDOG_PING_COUNT
+
+public static final java.lang.String WIFI_WATCHDOG_PING_DELAY_MS
+
+public static final java.lang.String WIFI_WATCHDOG_PING_TIMEOUT_MS
+
+public static final java.lang.String WINDOW_ANIMATION_SCALE
+
+private static volatile android.provider.Settings$NameValueCache mNameValueCache
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static void getConfiguration(
+android.content.ContentResolver
+android.content.res.Configuration)
+@dalvik.annotation.Throws (value =Landroid/provider/Settings$SettingNotFoundException; )
+public static float getFloat(
+android.content.ContentResolver
+java.lang.String)
+
+public static float getFloat(
+android.content.ContentResolver
+java.lang.String
+float)
+@dalvik.annotation.Throws (value =Landroid/provider/Settings$SettingNotFoundException; )
+public static int getInt(
+android.content.ContentResolver
+java.lang.String)
+
+public static int getInt(
+android.content.ContentResolver
+java.lang.String
+int)
+
+public static boolean getShowGTalkServiceStatus(
+android.content.ContentResolver)
+
+public static java.lang.String getString(
+android.content.ContentResolver
+java.lang.String)
+
+public static android.net.Uri getUriFor(
+java.lang.String)
+
+public static boolean putConfiguration(
+android.content.ContentResolver
+android.content.res.Configuration)
+
+public static boolean putFloat(
+android.content.ContentResolver
+java.lang.String
+float)
+
+public static boolean putInt(
+android.content.ContentResolver
+java.lang.String
+int)
+
+public static boolean putString(
+android.content.ContentResolver
+java.lang.String
+java.lang.String)
+
+public static void setShowGTalkServiceStatus(
+android.content.ContentResolver
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Settings$Bookmarks;Landroid/provider/Settings$Gservices;Landroid/provider/Settings$System;Landroid/provider/Settings$NameValueCache;Landroid/provider/Settings$NameValueTable;Landroid/provider/Settings$SettingNotFoundException; )
+public final class android.provider.Settings extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACTION_APN_SETTINGS
+
+public static final java.lang.String ACTION_APPLICATION_SETTINGS
+
+public static final java.lang.String ACTION_BLUETOOTH_SETTINGS
+
+public static final java.lang.String ACTION_DATE_SETTINGS
+
+public static final java.lang.String ACTION_DISPLAY_SETTINGS
+
+public static final java.lang.String ACTION_LOCALE_SETTINGS
+
+public static final java.lang.String ACTION_LOCATION_SOURCE_SETTINGS
+
+public static final java.lang.String ACTION_SECURITY_SETTINGS
+
+public static final java.lang.String ACTION_SETTINGS
+
+public static final java.lang.String ACTION_SOUND_SETTINGS
+
+public static final java.lang.String ACTION_WIFI_SETTINGS
+
+public static final java.lang.String ACTION_WIRELESS_SETTINGS
+
+public static final java.lang.String AUTHORITY
+
+private static final java.lang.String JID_RESOURCE_PREFIX
+
+private static final java.lang.String TAG
+
+private static java.lang.String sJidResource
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.lang.String getGTalkDeviceId(
+long)
+
+public static java.lang.String getJidResource()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =AccountColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/SubscribedFeeds; )
+public abstract interface class android.provider.SubscribedFeeds$AccountColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String _SYNC_ACCOUNT
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Accounts )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/SubscribedFeeds; )
+public final class android.provider.SubscribedFeeds$Accounts extends java.lang.Object implements android.provider.BaseColumns, android.provider.SubscribedFeeds$AccountColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static android.database.Cursor query(
+android.content.ContentResolver
+java.lang.String[])
+
+public static android.database.Cursor query(
+android.content.ContentResolver
+java.lang.String[]
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/SubscribedFeeds; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =FeedColumns )
+public abstract interface class android.provider.SubscribedFeeds$FeedColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String AUTHORITY
+
+public static final java.lang.String FEED
+
+public static final java.lang.String SERVICE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Feeds )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/SubscribedFeeds; )
+public final class android.provider.SubscribedFeeds$Feeds extends java.lang.Object implements android.provider.BaseColumns, android.provider.SyncConstValue, android.provider.SubscribedFeeds$FeedColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_ITEM_TYPE
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final android.net.Uri DELETED_CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static android.database.Cursor query(
+android.content.ContentResolver
+java.lang.String[])
+
+public static android.database.Cursor query(
+android.content.ContentResolver
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/SubscribedFeeds$Accounts;Landroid/provider/SubscribedFeeds$AccountColumns;Landroid/provider/SubscribedFeeds$Feeds;Landroid/provider/SubscribedFeeds$FeedColumns; )
+public class android.provider.SubscribedFeeds extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static android.net.Uri addFeed(
+android.content.ContentResolver
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public static int deleteFeed(
+android.content.ContentResolver
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public static int deleteFeeds(
+android.content.ContentResolver
+java.lang.String
+java.lang.String)
+
+public static java.lang.String gtalkServiceRoutingInfoFromAccountAndResource(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Sync; )
+ class android.provider.Sync$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =QueryMap )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Sync$Active; )
+public class android.provider.Sync$Active$QueryMap extends android.content.ContentQueryMap
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.content.ContentResolver
+boolean
+android.os.Handler)
+
+public android.content.ContentValues getActiveSyncInfo()
+
+public long getSyncStartTime()
+
+public java.lang.String getSyncingAccount()
+
+public java.lang.String getSyncingAuthority()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =StatsColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Sync; )
+public abstract interface class android.provider.Sync$StatsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACCOUNT
+
+public static final java.lang.String AUTHORITY
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Sync; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ActiveColumns )
+public abstract interface class android.provider.Sync$ActiveColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String START_TIME
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Active )
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Sync$Active$QueryMap; )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Sync; )
+public final class android.provider.Sync$Active extends java.lang.Object implements android.provider.BaseColumns, android.provider.Sync$StatsColumns, android.provider.Sync$ActiveColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Sync; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =HistoryColumns )
+public abstract interface class android.provider.Sync$HistoryColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String DOWNSTREAM_ACTIVITY
+
+public static final java.lang.String ELAPSED_TIME
+
+public static final java.lang.String EVENT
+
+public static final java.lang.String EVENT_TIME
+
+public static final java.lang.String MESG
+
+public static final java.lang.String SOURCE
+
+public static final java.lang.String STATS_ID
+
+public static final java.lang.String UPSTREAM_ACTIVITY
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Sync; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =History )
+public class android.provider.Sync$History extends java.lang.Object implements android.provider.BaseColumns, android.provider.Sync$StatsColumns, android.provider.Sync$HistoryColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final int ERROR_AUTHENTICATION
+
+public static final int ERROR_CONFLICT
+
+public static final int ERROR_IO
+
+public static final int ERROR_PARSE
+
+public static final int ERROR_SYNC_ALREADY_IN_PROGRESS
+
+public static final int ERROR_TOO_MANY_DELETIONS
+
+public static final int ERROR_TOO_MANY_RETRIES
+
+public static final java.lang.String[] EVENTS
+
+public static final int EVENT_START
+
+public static final int EVENT_STOP
+
+private static final java.lang.String FINISHED_SINCE_WHERE_CLAUSE
+
+public static final java.lang.String MESG_CANCELED
+
+public static final java.lang.String MESG_SUCCESS
+
+public static final java.lang.String[] SOURCES
+
+public static final int SOURCE_LOCAL
+
+public static final int SOURCE_POLL
+
+public static final int SOURCE_SERVER
+
+public static final int SOURCE_USER
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+ void <init>(
+android.provider.Sync$1)
+
+public static boolean hasNewerSyncFinished(
+android.content.ContentResolver
+java.lang.String
+java.lang.String
+long)
+
+public static java.lang.String mesgToString(
+java.lang.String)
+
+public static android.database.Cursor query(
+android.content.ContentResolver)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Sync$Pending; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =QueryMap )
+public class android.provider.Sync$Pending$QueryMap extends android.content.ContentQueryMap
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.content.ContentResolver
+boolean
+android.os.Handler)
+
+public boolean isPending(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Pending )
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Sync$Pending$QueryMap; )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Sync; )
+public final class android.provider.Sync$Pending extends java.lang.Object implements android.provider.BaseColumns, android.provider.Sync$StatsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =QueryMap )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Sync$Settings; )
+public class android.provider.Sync$Settings$QueryMap extends android.content.ContentQueryMap
+
+----------------FIELDS----------------
+
+private android.content.ContentResolver mContentResolver
+----------------METHODS----------------
+
+public void <init>(
+android.content.ContentResolver
+boolean
+android.os.Handler)
+
+private boolean getBoolean(
+java.lang.String
+boolean)
+
+public boolean getListenForNetworkTickles()
+
+public boolean getSyncProviderAutomatically(
+java.lang.String)
+
+public void setListenForNetworkTickles(
+boolean)
+
+public void setSyncProviderAutomatically(
+java.lang.String
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =SettingsColumns )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Sync; )
+public abstract interface class android.provider.Sync$SettingsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String KEY
+
+public static final java.lang.String VALUE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Sync$Settings$QueryMap; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Settings )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Sync; )
+public final class android.provider.Sync$Settings extends java.lang.Object implements android.provider.BaseColumns, android.provider.Sync$SettingsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String SETTING_LISTEN_FOR_TICKLES
+
+public static final java.lang.String SETTING_SYNC_PROVIDER_PREFIX
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static void putBoolean(
+android.content.ContentResolver
+java.lang.String
+boolean)
+
+public static void setListenForNetworkTickles(
+android.content.ContentResolver
+boolean)
+
+public static void setSyncProviderAutomatically(
+android.content.ContentResolver
+java.lang.String
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Stats )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Sync; )
+public final class android.provider.Sync$Stats extends java.lang.Object implements android.provider.BaseColumns, android.provider.Sync$StatsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String[] SYNC_STATS_PROJECTION
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =QueryMap )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Sync$Status; )
+public class android.provider.Sync$Status$QueryMap extends android.content.ContentQueryMap
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.content.ContentResolver
+boolean
+android.os.Handler)
+
+public android.content.ContentValues get(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Sync; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =StatusColumns )
+public abstract interface class android.provider.Sync$StatusColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String LAST_FAILURE_MESG
+
+public static final java.lang.String LAST_FAILURE_SOURCE
+
+public static final java.lang.String LAST_FAILURE_TIME
+
+public static final java.lang.String LAST_SUCCESS_SOURCE
+
+public static final java.lang.String LAST_SUCCESS_TIME
+
+public static final java.lang.String NUM_SOURCE_LOCAL
+
+public static final java.lang.String NUM_SOURCE_POLL
+
+public static final java.lang.String NUM_SOURCE_SERVER
+
+public static final java.lang.String NUM_SOURCE_USER
+
+public static final java.lang.String NUM_SYNCS
+
+public static final java.lang.String PENDING
+
+public static final java.lang.String TOTAL_ELAPSED_TIME
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Sync$Status$QueryMap; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Status )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Sync; )
+public class android.provider.Sync$Status extends android.provider.Sync$History implements android.provider.Sync$StatusColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static android.database.Cursor query(
+android.content.ContentResolver)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Sync$1;Landroid/provider/Sync$Settings;Landroid/provider/Sync$SettingsColumns;Landroid/provider/Sync$Active;Landroid/provider/Sync$ActiveColumns;Landroid/provider/Sync$Pending;Landroid/provider/Sync$Status;Landroid/provider/Sync$History;Landroid/provider/Sync$StatusColumns;Landroid/provider/Sync$HistoryColumns;Landroid/provider/Sync$Stats;Landroid/provider/Sync$StatsColumns; )
+public final class android.provider.Sync extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =BaseMmsColumns )
+public abstract interface class android.provider.Telephony$BaseMmsColumns extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String ADAPTATION_ALLOWED
+
+public static final java.lang.String APPLIC_ID
+
+public static final java.lang.String AUX_APPLIC_ID
+
+public static final java.lang.String BCC
+
+public static final java.lang.String CANCEL_ID
+
+public static final java.lang.String CANCEL_STATUS
+
+public static final java.lang.String CC
+
+public static final java.lang.String CONTENT_CLASS
+
+public static final java.lang.String CONTENT_LOCATION
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final java.lang.String DATE
+
+public static final java.lang.String DELIVERY_REPORT
+
+public static final java.lang.String DELIVERY_TIME
+
+public static final java.lang.String DELIVERY_TIME_TOKEN
+
+public static final java.lang.String DISTRIBUTION_INDICATOR
+
+public static final java.lang.String DRM_CONTENT
+
+public static final java.lang.String ELEMENT_DESCRIPTOR
+
+public static final java.lang.String EXPIRY
+
+public static final java.lang.String FROM
+
+public static final java.lang.String LIMIT
+
+public static final java.lang.String MBOX_QUOTAS
+
+public static final java.lang.String MBOX_QUOTAS_TOKEN
+
+public static final java.lang.String MBOX_TOTALS
+
+public static final java.lang.String MBOX_TOTALS_TOKEN
+
+public static final java.lang.String MESSAGE_BOX
+
+public static final int MESSAGE_BOX_ALL
+
+public static final int MESSAGE_BOX_DRAFTS
+
+public static final int MESSAGE_BOX_INBOX
+
+public static final int MESSAGE_BOX_OUTBOX
+
+public static final int MESSAGE_BOX_SENT
+
+public static final java.lang.String MESSAGE_CLASS
+
+public static final java.lang.String MESSAGE_COUNT
+
+public static final java.lang.String MESSAGE_ID
+
+public static final java.lang.String MESSAGE_SIZE
+
+public static final java.lang.String MESSAGE_TYPE
+
+public static final java.lang.String MMS_VERSION
+
+public static final java.lang.String MM_FLAGS
+
+public static final java.lang.String MM_FLAGS_TOKEN
+
+public static final java.lang.String MM_STATE
+
+public static final java.lang.String PREVIOUSLY_SENT_BY
+
+public static final java.lang.String PREVIOUSLY_SENT_DATE
+
+public static final java.lang.String PRIORITY
+
+public static final java.lang.String QUOTAS
+
+public static final java.lang.String READ
+
+public static final java.lang.String READ_REPORT
+
+public static final java.lang.String READ_STATUS
+
+public static final java.lang.String RECOMMENDED_RETRIEVAL_MODE
+
+public static final java.lang.String RECOMMENDED_RETRIEVAL_MODE_TEXT
+
+public static final java.lang.String REPLACE_ID
+
+public static final java.lang.String REPLY_APPLIC_ID
+
+public static final java.lang.String REPLY_CHARGING
+
+public static final java.lang.String REPLY_CHARGING_DEADLINE
+
+public static final java.lang.String REPLY_CHARGING_DEADLINE_TOKEN
+
+public static final java.lang.String REPLY_CHARGING_ID
+
+public static final java.lang.String REPLY_CHARGING_SIZE
+
+public static final java.lang.String REPORT_ALLOWED
+
+public static final java.lang.String RESPONSE_STATUS
+
+public static final java.lang.String RESPONSE_TEXT
+
+public static final java.lang.String RETRIEVE_STATUS
+
+public static final java.lang.String RETRIEVE_TEXT
+
+public static final java.lang.String RETRIEVE_TEXT_CHARSET
+
+public static final java.lang.String SENDER_VISIBILITY
+
+public static final java.lang.String START
+
+public static final java.lang.String STATUS
+
+public static final java.lang.String STATUS_TEXT
+
+public static final java.lang.String STORE
+
+public static final java.lang.String STORED
+
+public static final java.lang.String STORE_STATUS
+
+public static final java.lang.String STORE_STATUS_TEXT
+
+public static final java.lang.String SUBJECT
+
+public static final java.lang.String SUBJECT_CHARSET
+
+public static final java.lang.String THREAD_ID
+
+public static final java.lang.String TO
+
+public static final java.lang.String TOTALS
+
+public static final java.lang.String TRANSACTION_ID
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =CanonicalAddressesColumns )
+public abstract interface class android.provider.Telephony$CanonicalAddressesColumns extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String ADDRESS
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Carriers )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony; )
+public final class android.provider.Telephony$Carriers extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String APN
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String MCC
+
+public static final java.lang.String MMSC
+
+public static final java.lang.String MMSPORT
+
+public static final java.lang.String MMSPROXY
+
+public static final java.lang.String MNC
+
+public static final java.lang.String NAME
+
+public static final java.lang.String NUMERIC
+
+public static final java.lang.String PASSWORD
+
+public static final java.lang.String PORT
+
+public static final java.lang.String PROXY
+
+public static final java.lang.String SERVER
+
+public static final java.lang.String TYPE
+
+public static final java.lang.String USER
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Intents )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony; )
+public final class android.provider.Telephony$Intents extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String EXTRA_PLMN
+
+public static final java.lang.String EXTRA_SHOW_PLMN
+
+public static final java.lang.String EXTRA_SHOW_SPN
+
+public static final java.lang.String EXTRA_SPN
+
+public static final java.lang.String SECRET_CODE_ACTION
+
+public static final java.lang.String SPN_STRINGS_UPDATED_ACTION
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Addr )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony$Mms; )
+public final class android.provider.Telephony$Mms$Addr extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String ADDRESS
+
+public static final java.lang.String CHARSET
+
+public static final java.lang.String CONTACT_ID
+
+public static final java.lang.String MSG_ID
+
+public static final java.lang.String TYPE
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Draft )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony$Mms; )
+public final class android.provider.Telephony$Mms$Draft extends java.lang.Object implements android.provider.Telephony$BaseMmsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony$Mms; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Inbox )
+public final class android.provider.Telephony$Mms$Inbox extends java.lang.Object implements android.provider.Telephony$BaseMmsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Intents )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony$Mms; )
+public final class android.provider.Telephony$Mms$Intents extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_CHANGED_ACTION
+
+public static final java.lang.String DELETED_CONTENTS
+
+public static final java.lang.String EXTRA_BCC
+
+public static final java.lang.String EXTRA_CC
+
+public static final java.lang.String EXTRA_CONTENTS
+
+public static final java.lang.String EXTRA_SUBJECT
+
+public static final java.lang.String EXTRA_TYPES
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony$Mms; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Outbox )
+public final class android.provider.Telephony$Mms$Outbox extends java.lang.Object implements android.provider.Telephony$BaseMmsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Part )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony$Mms; )
+public final class android.provider.Telephony$Mms$Part extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CHARSET
+
+public static final java.lang.String CONTENT_DISPOSITION
+
+public static final java.lang.String CONTENT_ID
+
+public static final java.lang.String CONTENT_LOCATION
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final java.lang.String CT_START
+
+public static final java.lang.String CT_TYPE
+
+public static final java.lang.String FILENAME
+
+public static final java.lang.String MSG_ID
+
+public static final java.lang.String NAME
+
+public static final java.lang.String SEQ
+
+public static final java.lang.String _DATA
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony$Mms; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Rate )
+public final class android.provider.Telephony$Mms$Rate extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String SENT_TIME
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony$Mms; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Sent )
+public final class android.provider.Telephony$Mms$Sent extends java.lang.Object implements android.provider.Telephony$BaseMmsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Telephony$Mms$Intents;Landroid/provider/Telephony$Mms$Rate;Landroid/provider/Telephony$Mms$Part;Landroid/provider/Telephony$Mms$Addr;Landroid/provider/Telephony$Mms$Outbox;Landroid/provider/Telephony$Mms$Draft;Landroid/provider/Telephony$Mms$Sent;Landroid/provider/Telephony$Mms$Inbox; )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Mms )
+public final class android.provider.Telephony$Mms extends java.lang.Object implements android.provider.Telephony$BaseMmsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.util.regex.Pattern NAME_ADDR_EMAIL_PATTERN
+
+public static final java.util.regex.Pattern QUOTED_STRING_PATTERN
+
+public static final android.net.Uri REPORT_REQUEST_URI
+
+public static final android.net.Uri REPORT_STATUS_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.lang.String extractAddrSpec(
+java.lang.String)
+
+public static final java.lang.String getMessageBoxName(
+int)
+
+public static boolean isEmailAddress(
+java.lang.String)
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+java.lang.String[])
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+java.lang.String[]
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony$MmsSms; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =PendingMessages )
+public final class android.provider.Telephony$MmsSms$PendingMessages extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DUE_TIME
+
+public static final java.lang.String ERROR_CODE
+
+public static final java.lang.String ERROR_TYPE
+
+public static final java.lang.String LAST_TRY
+
+public static final java.lang.String MSG_ID
+
+public static final java.lang.String MSG_TYPE
+
+public static final java.lang.String PROTO_TYPE
+
+public static final java.lang.String RETRY_INDEX
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Telephony$MmsSms$PendingMessages; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =MmsSms )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony; )
+public final class android.provider.Telephony$MmsSms extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_CONVERSATIONS_URI
+
+public static final android.net.Uri CONTENT_DRAFT_URI
+
+public static final android.net.Uri CONTENT_FILTER_BYPHONE_URI
+
+public static final android.net.Uri CONTENT_UNDELIVERED_URI
+
+public static final android.net.Uri CONTENT_URI
+
+public static final int ERR_TYPE_GENERIC
+
+public static final int ERR_TYPE_GENERIC_PERMANENT
+
+public static final int ERR_TYPE_MMS_PROTO_PERMANENT
+
+public static final int ERR_TYPE_MMS_PROTO_TRANSIENT
+
+public static final int ERR_TYPE_SMS_PROTO_PERMANENT
+
+public static final int ERR_TYPE_SMS_PROTO_TRANSIENT
+
+public static final int ERR_TYPE_TRANSPORT_FAILURE
+
+public static final int MMS_PROTO
+
+public static final int NO_ERROR
+
+public static final int SMS_PROTO
+
+public static final java.lang.String TYPE_DISCRIMINATOR_COLUMN
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =TextBasedSmsColumns )
+public abstract interface class android.provider.Telephony$TextBasedSmsColumns extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ADDRESS
+
+public static final java.lang.String BODY
+
+public static final java.lang.String DATE
+
+public static final int MESSAGE_TYPE_ALL
+
+public static final int MESSAGE_TYPE_DRAFT
+
+public static final int MESSAGE_TYPE_FAILED
+
+public static final int MESSAGE_TYPE_INBOX
+
+public static final int MESSAGE_TYPE_OUTBOX
+
+public static final int MESSAGE_TYPE_QUEUED
+
+public static final int MESSAGE_TYPE_SENT
+
+public static final java.lang.String PERSON
+
+public static final java.lang.String PERSON_ID
+
+public static final java.lang.String PROTOCOL
+
+public static final java.lang.String READ
+
+public static final java.lang.String REPLY_PATH_PRESENT
+
+public static final java.lang.String SERVICE_CENTER
+
+public static final java.lang.String STATUS
+
+public static final int STATUS_COMPLETE
+
+public static final int STATUS_FAILED
+
+public static final int STATUS_NONE
+
+public static final int STATUS_PENDING
+
+public static final java.lang.String SUBJECT
+
+public static final java.lang.String THREAD_ID
+
+public static final java.lang.String TYPE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Conversations )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony$Sms; )
+public final class android.provider.Telephony$Sms$Conversations extends java.lang.Object implements android.provider.BaseColumns, android.provider.Telephony$TextBasedSmsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+
+public static final java.lang.String MESSAGE_COUNT
+
+public static final java.lang.String SNIPPET
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Draft )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony$Sms; )
+public final class android.provider.Telephony$Sms$Draft extends java.lang.Object implements android.provider.BaseColumns, android.provider.Telephony$TextBasedSmsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.net.Uri addMessage(
+android.content.ContentResolver
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.Long)
+
+public static boolean saveMessage(
+android.content.ContentResolver
+android.net.Uri
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Inbox )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony$Sms; )
+public final class android.provider.Telephony$Sms$Inbox extends java.lang.Object implements android.provider.BaseColumns, android.provider.Telephony$TextBasedSmsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.net.Uri addMessage(
+android.content.ContentResolver
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.Long
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony$Sms; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Intents )
+public final class android.provider.Telephony$Sms$Intents extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String DATA_SMS_RECEIVED_ACTION
+
+public static final java.lang.String SIM_FULL_ACTION
+
+public static final java.lang.String SMS_RECEIVED_ACTION
+
+public static final java.lang.String WAP_PUSH_RECEIVED_ACTION
+----------------METHODS----------------
+
+public void <init>()
+
+public static final android.telephony.gsm.SmsMessage[] getMessagesFromIntent(
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony$Sms; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Outbox )
+public final class android.provider.Telephony$Sms$Outbox extends java.lang.Object implements android.provider.BaseColumns, android.provider.Telephony$TextBasedSmsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.net.Uri addMessage(
+android.content.ContentResolver
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.Long
+boolean
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Sent )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony$Sms; )
+public final class android.provider.Telephony$Sms$Sent extends java.lang.Object implements android.provider.BaseColumns, android.provider.Telephony$TextBasedSmsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.net.Uri addMessage(
+android.content.ContentResolver
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.Long)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Telephony$Sms$Intents;Landroid/provider/Telephony$Sms$Conversations;Landroid/provider/Telephony$Sms$Outbox;Landroid/provider/Telephony$Sms$Draft;Landroid/provider/Telephony$Sms$Sent;Landroid/provider/Telephony$Sms$Inbox; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Sms )
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony; )
+public final class android.provider.Telephony$Sms extends java.lang.Object implements android.provider.BaseColumns, android.provider.Telephony$TextBasedSmsColumns
+
+----------------FIELDS----------------
+
+public static final android.net.Uri CONTENT_URI
+
+public static final java.lang.String DEFAULT_SORT_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.net.Uri addMessageToUri(
+android.content.ContentResolver
+android.net.Uri
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.Long
+boolean
+boolean)
+
+public static android.net.Uri addMessageToUri(
+android.content.ContentResolver
+android.net.Uri
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.Long
+boolean
+boolean
+long)
+
+public static boolean isOutgoingFolder(
+int)
+
+public static boolean moveMessageToFolder(
+android.content.Context
+android.net.Uri
+int)
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+java.lang.String[])
+
+public static final android.database.Cursor query(
+android.content.ContentResolver
+java.lang.String[]
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ThreadsColumns )
+public abstract interface class android.provider.Telephony$ThreadsColumns extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String DATE
+
+public static final java.lang.String ERROR
+
+public static final java.lang.String MESSAGE_COUNT
+
+public static final java.lang.String READ
+
+public static final java.lang.String RECIPIENT_IDS
+
+public static final java.lang.String SNIPPET
+
+public static final java.lang.String SNIPPET_CHARSET
+
+public static final java.lang.String TYPE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/provider/Telephony; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Threads )
+public final class android.provider.Telephony$Threads extends java.lang.Object implements android.provider.Telephony$ThreadsColumns
+
+----------------FIELDS----------------
+
+public static final int BROADCAST_THREAD
+
+public static final int COMMON_THREAD
+
+public static final android.net.Uri CONTENT_URI
+
+private static final java.lang.String[] ID_PROJECTION
+
+public static final android.net.Uri OBSOLETE_THREADS_URI
+
+private static final java.lang.String STANDARD_ENCODING
+
+private static final android.net.Uri THREAD_ID_CONTENT_URI
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static long getOrCreateThreadId(
+android.content.Context
+java.lang.String)
+@dalvik.annotation.Signature (value =(Landroid/content/Context;Ljava/util/Set<Ljava/lang/String;>;)J )
+public static long getOrCreateThreadId(
+android.content.Context
+java.util.Set)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/provider/Telephony$Intents;Landroid/provider/Telephony$Carriers;Landroid/provider/Telephony$MmsSms;Landroid/provider/Telephony$Mms;Landroid/provider/Telephony$Threads;Landroid/provider/Telephony$ThreadsColumns;Landroid/provider/Telephony$CanonicalAddressesColumns;Landroid/provider/Telephony$BaseMmsColumns;Landroid/provider/Telephony$Sms;Landroid/provider/Telephony$TextBasedSmsColumns; )
+public final class android.provider.Telephony extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG
+
+private static final boolean LOCAL_LOGV
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+ class android.sax.BadXmlException extends org.xml.sax.SAXParseException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+org.xml.sax.Locator)
+
+public java.lang.String getMessage()
+
+________________CLASS________________
+
+
+public class android.sax.Element extends java.lang.Object
+
+----------------FIELDS----------------
+
+ android.sax.Children children
+
+final int depth
+
+ android.sax.EndElementListener endElementListener
+
+ android.sax.EndTextElementListener endTextElementListener
+
+final java.lang.String localName
+
+final android.sax.Element parent
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/sax/Element;>; )
+ java.util.ArrayList requiredChilden
+
+ android.sax.StartElementListener startElementListener
+
+final java.lang.String uri
+
+ boolean visited
+----------------METHODS----------------
+
+ void <init>(
+android.sax.Element
+java.lang.String
+java.lang.String
+int)
+
+static java.lang.String toString(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXParseException; )
+ void checkRequiredChildren(
+org.xml.sax.Locator)
+
+public android.sax.Element getChild(
+java.lang.String)
+
+public android.sax.Element getChild(
+java.lang.String
+java.lang.String)
+
+public android.sax.Element requireChild(
+java.lang.String)
+
+public android.sax.Element requireChild(
+java.lang.String
+java.lang.String)
+
+ void resetRequiredChildren()
+
+public void setElementListener(
+android.sax.ElementListener)
+
+public void setEndElementListener(
+android.sax.EndElementListener)
+
+public void setEndTextElementListener(
+android.sax.EndTextElementListener)
+
+public void setStartElementListener(
+android.sax.StartElementListener)
+
+public void setTextElementListener(
+android.sax.TextElementListener)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =Child )
+@dalvik.annotation.EnclosingClass (value =Landroid/sax/Children; )
+ class android.sax.Children$Child extends android.sax.Element
+
+----------------FIELDS----------------
+
+final int hash
+
+ android.sax.Children$Child next
+----------------METHODS----------------
+
+ void <init>(
+android.sax.Element
+java.lang.String
+java.lang.String
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/sax/Children$Child; )
+ class android.sax.Children extends java.lang.Object
+
+----------------FIELDS----------------
+
+ android.sax.Children$Child[] children
+----------------METHODS----------------
+
+ void <init>()
+
+ android.sax.Element get(
+java.lang.String
+java.lang.String)
+
+ android.sax.Element getOrCreate(
+android.sax.Element
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class android.sax.EndTextElementListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void end(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =Handler )
+@dalvik.annotation.EnclosingClass (value =Landroid/sax/RootElement; )
+ class android.sax.RootElement$Handler extends org.xml.sax.helpers.DefaultHandler
+
+----------------FIELDS----------------
+
+ java.lang.StringBuilder bodyBuilder
+
+ android.sax.Element current
+
+ int depth
+
+ org.xml.sax.Locator locator
+
+final android.sax.RootElement this$0
+----------------METHODS----------------
+
+ void <init>(
+android.sax.RootElement)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void characters(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endElement(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public void setDocumentLocator(
+org.xml.sax.Locator)
+
+ void start(
+android.sax.Element
+org.xml.sax.Attributes)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startElement(
+java.lang.String
+java.lang.String
+java.lang.String
+org.xml.sax.Attributes)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void startRoot(
+java.lang.String
+java.lang.String
+org.xml.sax.Attributes)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/sax/RootElement$Handler; )
+public class android.sax.RootElement extends android.sax.Element
+
+----------------FIELDS----------------
+
+final android.sax.RootElement$Handler handler
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public org.xml.sax.ContentHandler getContentHandler()
+
+________________CLASS________________
+
+
+public abstract interface class android.sax.TextElementListener extends java.lang.Object implements android.sax.StartElementListener, android.sax.EndTextElementListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract class android.security.MessageDigest extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static android.security.MessageDigest getInstance(
+java.lang.String)
+
+public abstract byte[] digest()
+
+public abstract byte[] digest(
+byte[])
+
+public abstract void update(
+byte[])
+
+________________CLASS________________
+
+
+public class android.security.Md5MessageDigest extends android.security.MessageDigest
+
+----------------FIELDS----------------
+
+private int mNativeMd5Context
+----------------METHODS----------------
+
+public void <init>()
+
+private native void init()
+
+public native byte[] digest()
+
+public byte[] digest(
+byte[])
+
+public native void reset()
+
+public native void update(
+byte[])
+
+________________CLASS________________
+
+
+public class android.security.Sha1MessageDigest extends android.security.MessageDigest
+
+----------------FIELDS----------------
+
+private int mNativeSha1Context
+----------------METHODS----------------
+
+public void <init>()
+
+private native void init()
+
+public native byte[] digest()
+
+public byte[] digest(
+byte[])
+
+public native void reset()
+
+public native void update(
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/server/BluetoothDeviceService; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.server.BluetoothDeviceService$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.server.BluetoothDeviceService this$0
+----------------METHODS----------------
+
+ void <init>(
+android.server.BluetoothDeviceService)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/server/BluetoothDeviceService; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.server.BluetoothDeviceService$2 extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final android.server.BluetoothDeviceService this$0
+----------------METHODS----------------
+
+ void <init>(
+android.server.BluetoothDeviceService)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =EnableThread )
+@dalvik.annotation.EnclosingClass (value =Landroid/server/BluetoothDeviceService; )
+ class android.server.BluetoothDeviceService$EnableThread extends java.lang.Thread
+
+----------------FIELDS----------------
+
+private final android.bluetooth.IBluetoothDeviceCallback mEnableCallback
+
+final android.server.BluetoothDeviceService this$0
+----------------METHODS----------------
+
+public void <init>(
+android.server.BluetoothDeviceService
+android.bluetooth.IBluetoothDeviceCallback)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/server/BluetoothDeviceService$EnableThread; )
+public class android.server.BluetoothDeviceService extends android.bluetooth.IBluetoothDevice$Stub
+
+----------------FIELDS----------------
+
+private static final java.lang.String BLUETOOTH
+
+private static final java.lang.String BLUETOOTH_ADMIN
+
+private static final java.lang.String DISABLE_ESCO_PATH
+
+private static final int MAX_OUTSTANDING_ASYNC
+
+private static final int REGISTER_SDP_RECORDS
+
+private static final java.lang.String TAG
+
+private android.content.Context mContext
+
+private android.server.BluetoothDeviceService$EnableThread mEnableThread
+
+private android.server.BluetoothEventLoop mEventLoop
+
+private final android.os.Handler mHandler
+
+private android.content.IntentFilter mIntentFilter
+
+private boolean mIsAirplaneSensitive
+
+private boolean mIsDiscovering
+
+private volatile boolean mIsEnabled
+
+private int mNativeData
+
+private final android.content.BroadcastReceiver mReceiver
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+static int access$000(
+android.server.BluetoothDeviceService)
+
+static android.server.BluetoothEventLoop access$100(
+android.server.BluetoothDeviceService)
+
+static boolean access$202(
+android.server.BluetoothDeviceService
+boolean)
+
+static boolean access$302(
+android.server.BluetoothDeviceService
+boolean)
+
+static android.content.Context access$400(
+android.server.BluetoothDeviceService)
+
+static android.os.Handler access$500(
+android.server.BluetoothDeviceService)
+
+static android.server.BluetoothDeviceService$EnableThread access$602(
+android.server.BluetoothDeviceService
+android.server.BluetoothDeviceService$EnableThread)
+
+static boolean access$700(
+android.server.BluetoothDeviceService)
+
+private native boolean cancelBondingProcessNative(
+java.lang.String)
+
+private native boolean cancelDiscoveryNative()
+
+private native boolean cancelPinNative(
+java.lang.String
+int)
+
+private void checkPermissionBluetooth()
+
+private void checkPermissionBluetoothAdmin()
+
+private static native void classInitNative()
+
+private native void cleanupNativeDataNative()
+
+private native boolean clearRemoteAliasNative(
+java.lang.String)
+
+private native boolean createBondingNative(
+java.lang.String
+int)
+
+private static void disableEsco()
+
+private native int disableNative()
+
+private native boolean disconnectRemoteDeviceNative(
+java.lang.String)
+
+private native int enableNative()
+
+private native java.lang.String getAddressNative()
+
+private native java.lang.String getCompanyNative()
+
+private native int getDiscoverableTimeoutNative()
+
+private native java.lang.String getMajorClassNative()
+
+private native java.lang.String getManufacturerNative()
+
+private native java.lang.String getMinorClassNative()
+
+private native java.lang.String getModeNative()
+
+private native java.lang.String getNameNative()
+
+private native java.lang.String getRemoteAliasNative(
+java.lang.String)
+
+private native int getRemoteClassNative(
+java.lang.String)
+
+private native java.lang.String getRemoteCompanyNative(
+java.lang.String)
+
+private native byte[] getRemoteFeaturesNative(
+java.lang.String)
+
+private native java.lang.String getRemoteMajorClassNative(
+java.lang.String)
+
+private native java.lang.String getRemoteManufacturerNative(
+java.lang.String)
+
+private native java.lang.String getRemoteMinorClassNative(
+java.lang.String)
+
+private native java.lang.String getRemoteNameNative(
+java.lang.String)
+
+private native java.lang.String getRemoteRevisionNative(
+java.lang.String)
+
+private native boolean getRemoteServiceChannelNative(
+java.lang.String
+short)
+
+private native java.lang.String[] getRemoteServiceClassesNative(
+java.lang.String)
+
+private native int[] getRemoteServiceHandlesNative(
+java.lang.String
+java.lang.String)
+
+private native byte[] getRemoteServiceRecordNative(
+java.lang.String
+int)
+
+private native java.lang.String getRemoteVersionNative(
+java.lang.String)
+
+private native java.lang.String getRevisionNative()
+
+private native java.lang.String getVersionNative()
+
+private native boolean hasBondingNative(
+java.lang.String)
+
+private native void initializeNativeDataNative()
+
+private final boolean isAirplaneModeOn()
+
+private native boolean isConnectableNative()
+
+private native boolean isConnectedNative(
+java.lang.String)
+
+private native boolean isDiscoverableNative()
+
+private native int isEnabledNative()
+
+private native boolean isPeriodicDiscoveryNative()
+
+private native java.lang.String lastSeenNative(
+java.lang.String)
+
+private native java.lang.String lastUsedNative(
+java.lang.String)
+
+private native java.lang.String[] listBondingsNative()
+
+private native java.lang.String[] listConnectionsNative()
+
+private native java.lang.String[] listRemoteDevicesNative()
+
+private void registerForAirplaneMode()
+
+private native boolean removeBondingNative(
+java.lang.String)
+
+private native boolean setDiscoverableTimeoutNative(
+int)
+
+private native boolean setModeNative(
+java.lang.String)
+
+private native boolean setNameNative(
+java.lang.String)
+
+private native boolean setPinNative(
+java.lang.String
+java.lang.String
+int)
+
+private native boolean setRemoteAliasNative(
+java.lang.String
+java.lang.String)
+
+private native boolean startDiscoveryNative(
+boolean)
+
+private native boolean startPeriodicDiscoveryNative()
+
+private native boolean stopPeriodicDiscoveryNative()
+
+public boolean cancelBondingProcess(
+java.lang.String)
+
+public boolean cancelDiscovery()
+
+public boolean cancelPin(
+java.lang.String)
+
+public boolean clearRemoteAlias(
+java.lang.String)
+
+public boolean createBonding(
+java.lang.String
+android.bluetooth.IBluetoothDeviceCallback)
+
+public boolean disable()
+
+public boolean disconnectRemoteDeviceAcl(
+java.lang.String)
+
+protected void dump(
+java.io.FileDescriptor
+java.io.PrintWriter
+java.lang.String[])
+
+public boolean enable(
+android.bluetooth.IBluetoothDeviceCallback)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+native java.lang.String getAdapterPathNative()
+
+public java.lang.String getAddress()
+
+public java.lang.String getCompany()
+
+public int getDiscoverableTimeout()
+
+public java.lang.String getMajorClass()
+
+public java.lang.String getManufacturer()
+
+public java.lang.String getMinorClass()
+
+public int getMode()
+
+public java.lang.String getName()
+
+public java.lang.String getRemoteAlias(
+java.lang.String)
+
+public int getRemoteClass(
+java.lang.String)
+
+public java.lang.String getRemoteCompany(
+java.lang.String)
+
+public byte[] getRemoteFeatures(
+java.lang.String)
+
+public java.lang.String getRemoteMajorClass(
+java.lang.String)
+
+public java.lang.String getRemoteManufacturer(
+java.lang.String)
+
+public java.lang.String getRemoteMinorClass(
+java.lang.String)
+
+public java.lang.String getRemoteName(
+java.lang.String)
+
+public java.lang.String getRemoteRevision(
+java.lang.String)
+
+public boolean getRemoteServiceChannel(
+java.lang.String
+int
+android.bluetooth.IBluetoothDeviceCallback)
+
+public java.lang.String[] getRemoteServiceClasses(
+java.lang.String)
+
+public int[] getRemoteServiceHandles(
+java.lang.String
+java.lang.String)
+
+public byte[] getRemoteServiceRecord(
+java.lang.String
+int)
+
+public java.lang.String getRemoteVersion(
+java.lang.String)
+
+public java.lang.String getRevision()
+
+public java.lang.String getVersion()
+
+public boolean hasBonding(
+java.lang.String)
+
+public void init()
+
+public boolean isAclConnected(
+java.lang.String)
+
+public boolean isConnectable()
+
+public boolean isDiscoverable()
+
+public boolean isDiscovering()
+
+public boolean isEnabled()
+
+public boolean isPeriodicDiscovery()
+
+public java.lang.String lastSeen(
+java.lang.String)
+
+public java.lang.String lastUsed(
+java.lang.String)
+
+public java.lang.String[] listAclConnections()
+
+public java.lang.String[] listBondings()
+
+public java.lang.String[] listRemoteDevices()
+
+public boolean removeBonding(
+java.lang.String)
+
+public boolean setDiscoverableTimeout(
+int)
+
+ void setIsDiscovering(
+boolean)
+
+public boolean setMode(
+int)
+
+public boolean setName(
+java.lang.String)
+
+public boolean setPin(
+java.lang.String
+byte[])
+
+public boolean setRemoteAlias(
+java.lang.String
+java.lang.String)
+
+public boolean startDiscovery(
+boolean)
+
+public boolean startPeriodicDiscovery()
+
+public boolean stopPeriodicDiscovery()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.server.BluetoothEventLoop$1 extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final android.server.BluetoothEventLoop this$0
+----------------METHODS----------------
+
+ void <init>(
+android.server.BluetoothEventLoop
+java.lang.String)
+
+public void run()
+
+________________CLASS________________
+
+
+ class android.server.BluetoothEventLoop extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean DBG
+
+private static final java.lang.String TAG
+
+private android.server.BluetoothDeviceService mBluetoothService
+
+private android.content.Context mContext
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Landroid/bluetooth/IBluetoothDeviceCallback;>; )
+private java.util.HashMap mCreateBondingCallbacks
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Landroid/bluetooth/IBluetoothDeviceCallback;>; )
+private java.util.HashMap mGetRemoteServiceChannelCallbacks
+
+private boolean mInterrupted
+
+private int mNativeData
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Integer;>; )
+private java.util.HashMap mPasskeyAgentRequestData
+
+private java.lang.Thread mThread
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+android.content.Context
+android.server.BluetoothDeviceService)
+
+static boolean access$000(
+android.server.BluetoothEventLoop)
+
+static boolean access$100(
+android.server.BluetoothEventLoop)
+
+static boolean access$200(
+android.server.BluetoothEventLoop
+int)
+
+static void access$300(
+android.server.BluetoothEventLoop)
+
+private static native void classInitNative()
+
+private native void cleanupNativeDataNative()
+
+private native void initializeNativeDataNative()
+
+private static void log(
+java.lang.String)
+
+private void onCreateBondingResult(
+java.lang.String
+boolean)
+
+private void onGetRemoteServiceChannelResult(
+java.lang.String
+int)
+
+private native boolean setUpEventLoopNative()
+
+private native void tearDownEventLoopNative()
+
+private boolean waitForAndDispatchEvent(
+int)
+
+private native boolean waitForAndDispatchEventNative(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+@dalvik.annotation.Signature (value =()Ljava/util/HashMap<Ljava/lang/String;Landroid/bluetooth/IBluetoothDeviceCallback;>; )
+ java.util.HashMap getCreateBondingCallbacks()
+@dalvik.annotation.Signature (value =()Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Integer;>; )
+ java.util.HashMap getPasskeyAgentRequestData()
+@dalvik.annotation.Signature (value =()Ljava/util/HashMap<Ljava/lang/String;Landroid/bluetooth/IBluetoothDeviceCallback;>; )
+ java.util.HashMap getRemoteServiceChannelCallbacks()
+
+public boolean isEventLoopRunning()
+
+public void onBondingCreated(
+java.lang.String)
+
+public void onBondingRemoved(
+java.lang.String)
+
+public void onDiscoveryCompleted()
+
+public void onDiscoveryStarted()
+
+public void onModeChanged(
+java.lang.String)
+
+public void onNameChanged(
+java.lang.String)
+
+public void onPairingCancel()
+
+public void onPairingRequest()
+
+public void onPasskeyAgentCancel(
+java.lang.String)
+
+public void onPasskeyAgentRequest(
+java.lang.String
+int)
+
+public void onRemoteAliasChanged(
+java.lang.String
+java.lang.String)
+
+public void onRemoteAliasCleared(
+java.lang.String)
+
+public void onRemoteClassUpdated(
+java.lang.String
+int)
+
+public void onRemoteDeviceConnected(
+java.lang.String)
+
+public void onRemoteDeviceDisappeared(
+java.lang.String)
+
+public void onRemoteDeviceDisconnectRequested(
+java.lang.String)
+
+public void onRemoteDeviceDisconnected(
+java.lang.String)
+
+public void onRemoteDeviceFound(
+java.lang.String
+int
+short)
+
+public void onRemoteNameChanged(
+java.lang.String
+java.lang.String)
+
+public void onRemoteNameFailed(
+java.lang.String)
+
+public void onRemoteNameUpdated(
+java.lang.String
+java.lang.String)
+
+ void start()
+
+public void stop()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/server/checkin/CheckinProtocol; )
+ class android.server.checkin.CheckinProtocol$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$android$provider$Checkin$Properties$Tag
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/server/checkin/CheckinProtocol$1; )
+public class android.server.checkin.CheckinProtocol extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public static org.json.JSONObject formatRequest(
+long
+long
+java.lang.String
+java.util.Locale
+android.database.Cursor
+android.database.Cursor
+android.database.Cursor
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public static android.content.Intent[] getReplyIntents(
+org.json.JSONObject)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+@dalvik.annotation.Signature (value =(Lorg/json/JSONObject;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+public static java.util.Map getReplySettings(
+org.json.JSONObject)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public static long getReplyTime(
+org.json.JSONObject)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public static boolean isMarketReplyOk(
+org.json.JSONObject)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public static boolean isReplyOk(
+org.json.JSONObject)
+
+public static long sentEventDate(
+org.json.JSONObject)
+
+public static android.content.ContentValues[] sentStats(
+org.json.JSONObject)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =OpenHelper )
+@dalvik.annotation.EnclosingClass (value =Landroid/server/checkin/CheckinProvider; )
+ class android.server.checkin.CheckinProvider$OpenHelper extends android.database.sqlite.SQLiteOpenHelper
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void onCreate(
+android.database.sqlite.SQLiteDatabase)
+
+public void onUpgrade(
+android.database.sqlite.SQLiteDatabase
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/server/checkin/CheckinProvider$OpenHelper; )
+public class android.server.checkin.CheckinProvider extends android.content.ContentProvider
+
+----------------FIELDS----------------
+
+private static final int CRASH_LIMIT
+
+private static final int CRASH_SIZE
+
+private static final java.lang.String DATABASE_FILENAME
+
+private static final int DATABASE_VERSION
+
+private static final int EVENT_LIMIT
+
+private static final int EVENT_SIZE
+
+private static final java.lang.String PROPERTIES_PERMISSION
+
+private static final java.lang.String TAG
+
+private android.database.sqlite.SQLiteOpenHelper mOpenHelper
+
+private final java.lang.Object mStatsLock
+----------------METHODS----------------
+
+public void <init>()
+
+private void checkPermissions(
+android.net.Uri)
+
+private long insertCrash(
+android.content.ContentValues)
+
+private long insertEvent(
+android.content.ContentValues)
+
+private long insertStats(
+android.content.ContentValues)
+
+public int delete(
+android.net.Uri
+java.lang.String
+java.lang.String[])
+
+public java.lang.String getType(
+android.net.Uri)
+
+public android.net.Uri insert(
+android.net.Uri
+android.content.ContentValues)
+
+public boolean onCreate()
+
+public android.database.Cursor query(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+public int update(
+android.net.Uri
+android.content.ContentValues
+java.lang.String
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.server.checkin.CheckinService$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.server.checkin.CheckinService this$0
+
+final byte[] val$data
+
+final int val$uid
+----------------METHODS----------------
+
+ void <init>(
+android.server.checkin.CheckinService
+int
+byte[])
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/server/checkin/CheckinService; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =CheckinReceiver )
+ class android.server.checkin.CheckinService$CheckinReceiver extends android.content.BroadcastReceiver implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.server.checkin.CheckinService this$0
+----------------METHODS----------------
+
+private void <init>(
+android.server.checkin.CheckinService)
+
+ void <init>(
+android.server.checkin.CheckinService
+android.server.checkin.CheckinService$1)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/server/checkin/CheckinService; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =ConnectivityReceiver )
+ class android.server.checkin.CheckinService$ConnectivityReceiver extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final android.server.checkin.CheckinService this$0
+----------------METHODS----------------
+
+private void <init>(
+android.server.checkin.CheckinService)
+
+ void <init>(
+android.server.checkin.CheckinService
+android.server.checkin.CheckinService$1)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =ParentalControlRunnable )
+@dalvik.annotation.EnclosingClass (value =Landroid/server/checkin/CheckinService; )
+ class android.server.checkin.CheckinService$ParentalControlRunnable extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private android.os.IParentalControlCallback mCallback
+
+final android.server.checkin.CheckinService this$0
+----------------METHODS----------------
+
+public void <init>(
+android.server.checkin.CheckinService
+android.os.IParentalControlCallback)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/server/checkin/CheckinService; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =TimeChangedReceiver )
+ class android.server.checkin.CheckinService$TimeChangedReceiver extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final android.server.checkin.CheckinService this$0
+----------------METHODS----------------
+
+private void <init>(
+android.server.checkin.CheckinService)
+
+ void <init>(
+android.server.checkin.CheckinService
+android.server.checkin.CheckinService$1)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/server/checkin/CheckinService$ConnectivityReceiver;Landroid/server/checkin/CheckinService$TimeChangedReceiver;Landroid/server/checkin/CheckinService$CheckinReceiver;Landroid/server/checkin/CheckinService$ParentalControlRunnable; )
+public class android.server.checkin.CheckinService extends android.os.ICheckinService$Stub
+
+----------------FIELDS----------------
+
+private static final long CHECKIN_INTERVAL
+
+private static final long CHECKIN_INTERVAL_MAX
+
+private static final java.lang.String CHECKIN_URL
+
+private static final java.lang.String CRASH_URL
+
+private static final int EVENT_LOG_SENTINEL
+
+private static final java.lang.String[] GSERVICES_QUERY_PROJECTION
+
+private static final int KERNEL_VERSION_MAX
+
+private static final java.io.File KERNEL_VERSION_PATH
+
+private static final int LAST_KMSG_MAX_LENGTH
+
+private static final java.io.File LAST_KMSG_PATH
+
+private static final boolean LOCAL_LOGV
+
+private static final int MAX_EVENTDATA
+
+private static final int MAX_EVENTS
+
+private static final int MAX_REQUESTS
+
+private static final long MIN_TIME_DIFF
+
+private static final long MIN_TIME_SET
+
+private static final java.lang.String RUNTIME_STARTED_PROPERTY
+
+private static final java.lang.String TAG
+
+private static final java.lang.String TIME_FETCH_URL
+
+private static final int TOMBSTONES_MAX_LENGTH
+
+private static final java.io.File TOMBSTONES_PATH
+
+private static final java.lang.String USER_AGENT
+
+private final android.app.AlarmManager mAlarmManager
+
+private final android.content.ContentResolver mContentResolver
+
+private final android.content.Context mContext
+
+private final android.util.EventLogTags mEventTags
+
+private final android.os.Handler mHandler
+
+private final com.google.android.net.GoogleHttpClient mHttpClient
+
+private long mLastRealtime
+
+private long mLastUptime
+
+private boolean mNetworkConnected
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+static void access$1000(
+android.server.checkin.CheckinService)
+
+static boolean access$1100(
+android.server.checkin.CheckinService)
+
+static boolean access$1102(
+android.server.checkin.CheckinService
+boolean)
+
+static void access$300(
+android.server.checkin.CheckinService
+int
+byte[])
+
+static android.content.ContentResolver access$400(
+android.server.checkin.CheckinService)
+
+static void access$500(
+android.server.checkin.CheckinService)
+
+static android.content.Context access$600(
+android.server.checkin.CheckinService)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/json/JSONException; )
+static void access$700(
+android.server.checkin.CheckinService)
+
+static void access$800(
+android.server.checkin.CheckinService
+java.lang.Throwable)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/HttpException; )
+static void access$900(
+android.server.checkin.CheckinService)
+
+private void addBootEvents()
+
+private void addKernelEvents()
+
+private void addTombstoneEvents()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/json/JSONException; )
+private void doCheckin()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/json/JSONException; )
+private boolean doFetchTime()
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+private void formatKernelEvent(
+java.lang.Object
+java.lang.StringBuilder)
+
+private long getAndroidId()
+
+private long getLastSuccessTime()
+
+private long getLoggingId()
+
+private java.lang.String getProvisioningDigest()
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+private void handleReply(
+org.json.JSONObject
+org.json.JSONObject)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+private org.json.JSONObject makeRequest()
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+private boolean maybeSetTime(
+org.json.JSONObject)
+
+private void reportCrashInternal(
+int
+byte[])
+
+private void reportFailure(
+java.lang.Throwable)
+
+private void scheduleCheckin()
+
+private void updateClockStats()
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)V )
+private void updateGservices(
+java.util.Map)
+
+private void updateParentalControlStatus()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/HttpException; )
+private void uploadCrashes()
+
+protected void dump(
+java.io.FileDescriptor
+java.io.PrintWriter
+java.lang.String[])
+
+public void getParentalControlState(
+android.os.IParentalControlCallback)
+
+public void masterClear()
+
+public void reportCrashAsync(
+byte[])
+
+public void reportCrashSync(
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/server/checkin/DumpStateReceiver; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =CrashReportObserver )
+ class android.server.checkin.DumpStateReceiver$CrashReportObserver extends android.database.ContentObserver implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private android.content.ContentResolver mContentResolver
+
+private long mHighestId
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void onChange(
+boolean)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/server/checkin/DumpStateReceiver$CrashReportObserver; )
+ class android.server.checkin.DumpStateReceiver extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String DUMPCRASH
+
+private static final java.lang.String DUMPSTATE
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static void dumpStateTo(
+java.io.OutputStream
+boolean)
+
+________________CLASS________________
+
+
+public class android.server.checkin.RecoverySystem extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.io.File COMMAND_FILE
+
+private static java.io.File INTENT_FILE
+
+private static int INTENT_FILE_MAX_LENGTH
+
+private static java.io.File LOG_FILE
+
+private static int LOG_FILE_MAX_LENGTH
+
+public static final java.lang.String RECOVERY_COMPLETED_ACTION
+
+private static java.io.File RECOVERY_DIR
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)V )
+private static void bootCommand(
+java.lang.String
+java.util.Map)
+
+public static void handleAftermath(
+android.content.Context)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/io/File;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)V )
+public static void rebootAndUpdate(
+java.io.File
+java.util.Map)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)V )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static void rebootAndWipe(
+java.util.Map)
+
+________________CLASS________________
+
+
+public class android.server.checkin.SecretCodeReceiver extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+public void <init>()
+
+private static void setDesiredBuild(
+android.content.Context
+java.lang.String)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/server/checkin/UpdateReceiver; )
+ class android.server.checkin.UpdateReceiver$1 extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final android.server.checkin.UpdateReceiver this$0
+----------------METHODS----------------
+
+ void <init>(
+android.server.checkin.UpdateReceiver)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/server/checkin/UpdateReceiver; )
+ class android.server.checkin.UpdateReceiver$2 extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final android.server.checkin.UpdateReceiver this$0
+----------------METHODS----------------
+
+ void <init>(
+android.server.checkin.UpdateReceiver)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/server/checkin/UpdateReceiver; )
+ class android.server.checkin.UpdateReceiver$3 extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final android.server.checkin.UpdateReceiver this$0
+----------------METHODS----------------
+
+ void <init>(
+android.server.checkin.UpdateReceiver)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DownloadCompletedBroadcastReceiver )
+@dalvik.annotation.EnclosingClass (value =Landroid/server/checkin/UpdateReceiver; )
+public class android.server.checkin.UpdateReceiver$DownloadCompletedBroadcastReceiver extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/server/checkin/UpdateReceiver; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =VerifierRunner )
+ class android.server.checkin.UpdateReceiver$VerifierRunner extends java.lang.Thread
+
+----------------FIELDS----------------
+
+private final android.content.Context mContext
+
+private final android.content.Intent mIntent
+
+private final java.io.File mUpdate
+----------------METHODS----------------
+
+ void <init>(
+android.content.Context
+android.content.Intent
+java.lang.String)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/server/checkin/UpdateReceiver$VerifierRunner;Landroid/server/checkin/UpdateReceiver$DownloadCompletedBroadcastReceiver; )
+public class android.server.checkin.UpdateReceiver extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String CANCEL_ACTION
+
+private static final java.lang.String DM_NOTIFICATION_CLASS
+
+private static final java.lang.String DM_NOTIFICATION_PACKAGE
+
+public static final java.lang.String INSTALL_ACTION
+
+public static final java.lang.String PERMISSION
+
+private static final java.lang.String[] QUERY_PROJECTION
+
+private static final java.lang.String[] QUERY_WHERE_ARGS
+
+private static final java.lang.String QUERY_WHERE_CLAUSE
+
+public static final java.lang.String READY_ACTION
+
+private static final long REDOWNLOAD_MSEC
+
+private static final long REVERIFY_MSEC
+
+private static final java.lang.String SETTINGS_PACKAGE_NAME
+
+private static final java.lang.String TAG
+
+public static final java.lang.String UPDATE_ACTION
+
+private static android.content.Intent mUpdateIntent
+
+private static long mVerificationStarted
+
+private final android.app.AlarmManager mAlarmManager
+
+private android.content.BroadcastReceiver mCancelReceiver
+
+private final android.content.Context mContext
+
+private android.content.BroadcastReceiver mInstallReceiver
+
+private android.content.BroadcastReceiver mUpdateReceiver
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+static android.content.Intent access$000()
+
+static android.content.Intent access$002(
+android.content.Intent)
+
+static long access$100()
+
+static long access$102(
+long)
+
+static java.lang.String[] access$200()
+
+static android.content.Context access$300(
+android.server.checkin.UpdateReceiver)
+
+static void access$400(
+android.content.Context)
+
+static java.lang.String access$500()
+
+static void access$600(
+android.content.Context
+java.io.File)
+
+private static void installUpdate(
+android.content.Context
+java.io.File)
+
+private static void removeAllDownloads(
+android.content.Context)
+
+________________CLASS________________
+
+
+public class android.server.checkin.UpdateVerifier extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.io.File KEYSTORE
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/security/GeneralSecurityException; )
+public static void verifyPackage(
+java.io.File)
+
+________________CLASS________________
+
+
+public class android.server.data.BuildData extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int VERSION
+
+private final java.lang.String fingerprint
+
+private final java.lang.String incrementalVersion
+
+private final long time
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void <init>(
+java.io.DataInput)
+
+public void <init>(
+java.lang.String
+java.lang.String
+long)
+
+public java.lang.String getFingerprint()
+
+public java.lang.String getIncrementalVersion()
+
+public long getTime()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void write(
+java.io.DataOutput)
+
+________________CLASS________________
+
+
+public class android.server.data.CrashData extends java.lang.Object
+
+----------------FIELDS----------------
+
+final java.lang.String activity
+
+final android.server.data.BuildData buildData
+
+final java.lang.String id
+
+final byte[] state
+
+final android.server.data.ThrowableData throwableData
+
+final long time
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.DataInput)
+
+public void <init>(
+java.lang.String
+java.lang.String
+android.server.data.BuildData
+android.server.data.ThrowableData)
+
+public void <init>(
+java.lang.String
+java.lang.String
+android.server.data.BuildData
+android.server.data.ThrowableData
+byte[])
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public java.lang.String getActivity()
+
+public android.server.data.BuildData getBuildData()
+
+public java.lang.String getId()
+
+public byte[] getState()
+
+public android.server.data.ThrowableData getThrowableData()
+
+public long getTime()
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+java.io.DataOutput)
+
+________________CLASS________________
+
+
+public class android.server.data.StackTraceElementData extends java.lang.Object
+
+----------------FIELDS----------------
+
+final java.lang.String className
+
+final java.lang.String fileName
+
+final int lineNumber
+
+final java.lang.String methodName
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.DataInput)
+
+public void <init>(
+java.lang.StackTraceElement)
+
+public java.lang.String getClassName()
+
+public java.lang.String getFileName()
+
+public int getLineNumber()
+
+public java.lang.String getMethodName()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void write(
+java.io.DataOutput)
+
+________________CLASS________________
+
+
+public class android.server.data.ThrowableData extends java.lang.Object
+
+----------------FIELDS----------------
+
+final android.server.data.ThrowableData cause
+
+final java.lang.String message
+
+final android.server.data.StackTraceElementData[] stackTrace
+
+final java.lang.String type
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.DataInput)
+
+public void <init>(
+java.lang.Throwable)
+
+private static void append(
+java.lang.String
+java.lang.StringBuilder
+android.server.data.ThrowableData)
+
+public android.server.data.ThrowableData getCause()
+
+public java.lang.String getMessage()
+
+public android.server.data.StackTraceElementData[] getStackTrace()
+
+public java.lang.String getType()
+
+public java.lang.String toString()
+
+public java.lang.String toString(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+java.io.DataOutput)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/server/search/SearchManagerService; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.server.search.SearchManagerService$1 extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final android.server.search.SearchManagerService this$0
+----------------METHODS----------------
+
+ void <init>(
+android.server.search.SearchManagerService)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/server/search/SearchManagerService; )
+ class android.server.search.SearchManagerService$2 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.server.search.SearchManagerService this$0
+----------------METHODS----------------
+
+ void <init>(
+android.server.search.SearchManagerService)
+
+public void run()
+
+________________CLASS________________
+
+
+public class android.server.search.SearchManagerService extends android.app.ISearchManager$Stub
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG
+
+private static final boolean IMMEDIATE_SEARCHABLES_UPDATE
+
+private static final java.lang.String TAG
+
+private static final boolean localLOGV
+
+private final android.content.Context mContext
+
+private final android.os.Handler mHandler
+
+private android.content.BroadcastReceiver mIntentReceiver
+
+private java.lang.Runnable mRunUpdateSearchable
+
+private boolean mSearchablesDirty
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+static boolean access$000(
+android.server.search.SearchManagerService)
+
+static boolean access$002(
+android.server.search.SearchManagerService
+boolean)
+
+static java.lang.Runnable access$100(
+android.server.search.SearchManagerService)
+
+static android.os.Handler access$200(
+android.server.search.SearchManagerService)
+
+static void access$300(
+android.server.search.SearchManagerService)
+
+private void updateSearchables()
+
+public android.server.search.SearchableInfo getSearchableInfo(
+android.content.ComponentName
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/server/search/SearchableInfo; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/server/search/SearchableInfo;>; )
+final class android.server.search.SearchableInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.server.search.SearchableInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.server.search.SearchableInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1 name =ActionKeyInfo )
+@dalvik.annotation.EnclosingClass (value =Landroid/server/search/SearchableInfo; )
+public class android.server.search.SearchableInfo$ActionKeyInfo extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+
+public int mKeyCode
+
+private android.server.search.SearchableInfo$ActionKeyInfo mNext
+
+public java.lang.String mQueryActionMsg
+
+public java.lang.String mSuggestActionMsg
+
+public java.lang.String mSuggestActionMsgColumn
+
+final android.server.search.SearchableInfo this$0
+----------------METHODS----------------
+
+public void <init>(
+android.server.search.SearchableInfo
+android.content.Context
+android.util.AttributeSet
+android.server.search.SearchableInfo$ActionKeyInfo)
+
+public void <init>(
+android.server.search.SearchableInfo
+android.os.Parcel
+android.server.search.SearchableInfo$ActionKeyInfo)
+
+static android.server.search.SearchableInfo$ActionKeyInfo access$100(
+android.server.search.SearchableInfo$ActionKeyInfo)
+
+public int describeContents()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/server/search/SearchableInfo$ActionKeyInfo; )
+public final class android.server.search.SearchableInfo extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/server/search/SearchableInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+static final int DBG_INHIBIT_SUGGESTIONS
+
+static final java.lang.String LOG_TAG
+
+private static final java.lang.String MD_LABEL_DEFAULT_SEARCHABLE
+
+private static final java.lang.String MD_LABEL_SEARCHABLE
+
+private static final java.lang.String MD_SEARCHABLE_SYSTEM_SEARCH
+
+private static final java.lang.String MD_XML_ELEMENT_SEARCHABLE
+
+private static final java.lang.String MD_XML_ELEMENT_SEARCHABLE_ACTION_KEY
+
+private static android.server.search.SearchableInfo sDefaultSearchable
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/server/search/SearchableInfo;>; )
+private static java.util.ArrayList sSearchablesList
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Landroid/content/ComponentName;Landroid/server/search/SearchableInfo;>; )
+private static java.util.HashMap sSearchablesMap
+
+private android.server.search.SearchableInfo$ActionKeyInfo mActionKeyList
+
+public boolean mBadgeIcon
+
+public boolean mBadgeLabel
+
+private android.content.Context mCacheActivityContext
+
+private int mHintId
+
+private int mIconId
+
+private int mLabelId
+
+public boolean mQueryRewriteFromData
+
+public boolean mQueryRewriteFromText
+
+public android.content.ComponentName mSearchActivity
+
+private int mSearchButtonText
+
+private int mSearchMode
+
+public boolean mSearchable
+
+private java.lang.String mSuggestAuthority
+
+private java.lang.String mSuggestIntentAction
+
+private java.lang.String mSuggestIntentData
+
+private java.lang.String mSuggestPath
+
+private java.lang.String mSuggestProviderPackage
+
+private java.lang.String mSuggestSelection
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+android.content.Context
+android.util.AttributeSet
+android.content.ComponentName)
+
+public void <init>(
+android.os.Parcel)
+
+static android.content.Context access$000(
+android.server.search.SearchableInfo)
+
+public static void buildSearchableList(
+android.content.Context)
+
+private static android.server.search.SearchableInfo getActivityMetaData(
+android.content.Context
+org.xmlpull.v1.XmlPullParser
+android.content.ComponentName)
+
+public static android.server.search.SearchableInfo getDefaultSearchable()
+
+public static android.server.search.SearchableInfo getSearchableInfo(
+android.content.Context
+android.content.ComponentName)
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Landroid/server/search/SearchableInfo;>; )
+public static java.util.ArrayList getSearchablesList()
+
+public static void setDefaultSearchable(
+android.content.Context
+android.content.ComponentName)
+
+private void setSearchModeFlags()
+
+public int describeContents()
+
+public android.server.search.SearchableInfo$ActionKeyInfo findActionKey(
+int)
+
+public android.content.Context getActivityContext(
+android.content.Context)
+
+public int getHintId()
+
+public int getIconId()
+
+public int getLabelId()
+
+public android.content.Context getProviderContext(
+android.content.Context
+android.content.Context)
+
+public int getSearchButtonText()
+
+public java.lang.String getSuggestAuthority()
+
+public java.lang.String getSuggestIntentAction()
+
+public java.lang.String getSuggestIntentData()
+
+public java.lang.String getSuggestPath()
+
+public java.lang.String getSuggestSelection()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public abstract interface class android.speech.recognition.GrammarListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onError(
+java.lang.Exception)
+
+public abstract void onLoaded()
+
+public abstract void onUnloaded()
+
+________________CLASS________________
+
+
+public abstract interface class android.speech.recognition.EmbeddedGrammarListener extends java.lang.Object implements android.speech.recognition.GrammarListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onCompileAllSlots()
+
+public abstract void onError(
+java.lang.Exception)
+
+public abstract void onResetAllSlots()
+
+public abstract void onSaved(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class android.speech.recognition.AbstractEmbeddedGrammarListener extends java.lang.Object implements android.speech.recognition.EmbeddedGrammarListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void onCompileAllSlots()
+
+public void onError(
+java.lang.Exception)
+
+public void onLoaded()
+
+public void onResetAllSlots()
+
+public void onSaved(
+java.lang.String)
+
+public void onUnloaded()
+
+________________CLASS________________
+
+
+public abstract class android.speech.recognition.AbstractGrammarListener extends java.lang.Object implements android.speech.recognition.GrammarListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void onError(
+java.lang.Exception)
+
+public void onLoaded()
+
+public void onUnloaded()
+
+________________CLASS________________
+
+
+public abstract interface class android.speech.recognition.ParametersListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>;)V )
+public abstract void onParametersGet(
+java.util.Hashtable)
+@dalvik.annotation.Signature (value =(Ljava/util/Vector<Ljava/lang/String;>;Ljava/lang/Exception;)V )
+public abstract void onParametersGetError(
+java.util.Vector
+java.lang.Exception)
+@dalvik.annotation.Signature (value =(Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>;)V )
+public abstract void onParametersSet(
+java.util.Hashtable)
+@dalvik.annotation.Signature (value =(Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>;Ljava/lang/Exception;)V )
+public abstract void onParametersSetError(
+java.util.Hashtable
+java.lang.Exception)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/speech/recognition/RecognizerListener$FailureReason; )
+public abstract interface class android.speech.recognition.RecognizerListener extends java.lang.Object implements android.speech.recognition.ParametersListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onAcousticStateReset()
+
+public abstract void onBeginningOfSpeech()
+
+public abstract void onEndOfSpeech()
+
+public abstract void onError(
+java.lang.Exception)
+
+public abstract void onRecognitionFailure(
+android.speech.recognition.RecognizerListener$FailureReason)
+
+public abstract void onRecognitionSuccess(
+android.speech.recognition.RecognitionResult)
+
+public abstract void onStartOfSpeechTimeout()
+
+public abstract void onStarted()
+
+public abstract void onStopped()
+
+________________CLASS________________
+
+
+public abstract class android.speech.recognition.AbstractRecognizerListener extends java.lang.Object implements android.speech.recognition.RecognizerListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void onAcousticStateReset()
+
+public void onBeginningOfSpeech()
+
+public void onEndOfSpeech()
+
+public void onError(
+java.lang.Exception)
+@dalvik.annotation.Signature (value =(Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>;)V )
+public void onParametersGet(
+java.util.Hashtable)
+@dalvik.annotation.Signature (value =(Ljava/util/Vector<Ljava/lang/String;>;Ljava/lang/Exception;)V )
+public void onParametersGetError(
+java.util.Vector
+java.lang.Exception)
+@dalvik.annotation.Signature (value =(Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>;)V )
+public void onParametersSet(
+java.util.Hashtable)
+@dalvik.annotation.Signature (value =(Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>;Ljava/lang/Exception;)V )
+public void onParametersSetError(
+java.util.Hashtable
+java.lang.Exception)
+
+public void onRecognitionFailure(
+android.speech.recognition.RecognizerListener$FailureReason)
+
+public void onRecognitionSuccess(
+android.speech.recognition.RecognitionResult)
+
+public void onStartOfSpeechTimeout()
+
+public void onStarted()
+
+public void onStopped()
+
+________________CLASS________________
+
+
+public abstract interface class android.speech.recognition.SrecGrammarListener extends java.lang.Object implements android.speech.recognition.EmbeddedGrammarListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onAddItemList()
+
+public abstract void onAddItemListFailure(
+int
+java.lang.Exception)
+
+public abstract void onError(
+java.lang.Exception)
+
+________________CLASS________________
+
+
+public abstract class android.speech.recognition.AbstractSrecGrammarListener extends java.lang.Object implements android.speech.recognition.SrecGrammarListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void onAddItemList()
+
+public void onAddItemListFailure(
+int
+java.lang.Exception)
+
+public void onCompileAllSlots()
+
+public void onError(
+java.lang.Exception)
+
+public void onLoaded()
+
+public void onResetAllSlots()
+
+public void onSaved(
+java.lang.String)
+
+public void onUnloaded()
+
+________________CLASS________________
+
+
+public class android.speech.recognition.AudioAlreadyInUseException extends java.lang.IllegalArgumentException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.speech.recognition.AudioDriverErrorException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class android.speech.recognition.AudioSource extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.speech.recognition.AudioStream createAudio()
+
+public abstract void start()
+
+public abstract void stop()
+
+________________CLASS________________
+
+
+public abstract interface class android.speech.recognition.AudioSourceListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onError(
+java.lang.Exception)
+
+public abstract void onStarted()
+
+public abstract void onStopped()
+
+________________CLASS________________
+
+
+public abstract interface class android.speech.recognition.AudioStream extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@java.lang.Deprecated
+public abstract void dispose()
+
+________________CLASS________________
+
+
+public abstract class android.speech.recognition.Codec extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final android.speech.recognition.Codec PCM_16BIT_11K
+
+public static final android.speech.recognition.Codec PCM_16BIT_22K
+
+public static final android.speech.recognition.Codec PCM_16BIT_8K
+
+public static final android.speech.recognition.Codec ULAW_8BIT_8K
+
+private final java.lang.String message
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+java.lang.String)
+
+ void <init>(
+java.lang.String
+android.speech.recognition.Codec$1)
+
+public abstract byte getBitsPerSample()
+
+public abstract int getSampleRate()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/speech/recognition/Codec; )
+final class android.speech.recognition.Codec$1 extends android.speech.recognition.Codec
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+public byte getBitsPerSample()
+
+public int getSampleRate()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/speech/recognition/Codec; )
+final class android.speech.recognition.Codec$2 extends android.speech.recognition.Codec
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+public byte getBitsPerSample()
+
+public int getSampleRate()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/speech/recognition/Codec; )
+final class android.speech.recognition.Codec$3 extends android.speech.recognition.Codec
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+public byte getBitsPerSample()
+
+public int getSampleRate()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/speech/recognition/Codec; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.speech.recognition.Codec$4 extends android.speech.recognition.Codec
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+public byte getBitsPerSample()
+
+public int getSampleRate()
+
+________________CLASS________________
+
+
+public abstract class android.speech.recognition.DeviceSpeaker extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static android.speech.recognition.DeviceSpeaker instance
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.speech.recognition.DeviceSpeaker getInstance()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException;Ljava/lang/IllegalArgumentException; )
+public abstract void setCodec(
+android.speech.recognition.Codec)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public abstract void setListener(
+android.speech.recognition.DeviceSpeakerListener)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException;Ljava/lang/IllegalArgumentException; )
+public abstract void start(
+android.speech.recognition.AudioStream)
+
+public abstract void stop()
+
+________________CLASS________________
+
+
+public abstract interface class android.speech.recognition.DeviceSpeakerListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onError(
+java.lang.Exception)
+
+public abstract void onStarted()
+
+public abstract void onStopped()
+
+________________CLASS________________
+
+
+public abstract interface class android.speech.recognition.Grammar extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void dispose()
+
+public abstract void load()
+
+public abstract void unload()
+
+________________CLASS________________
+
+
+public abstract interface class android.speech.recognition.EmbeddedGrammar extends java.lang.Object implements android.speech.recognition.Grammar
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void compileAllSlots()
+
+public abstract void resetAllSlots()
+
+public abstract void save(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class android.speech.recognition.Recognizer extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public abstract android.speech.recognition.Grammar createGrammar(
+java.lang.String
+android.speech.recognition.GrammarListener)
+@dalvik.annotation.Signature (value =(Ljava/util/Vector<Ljava/lang/String;>;)V )
+public abstract void getParameters(
+java.util.Vector)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException;Ljava/lang/IllegalArgumentException; )
+public abstract void recognize(
+android.speech.recognition.AudioStream
+android.speech.recognition.Grammar)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException;Ljava/lang/IllegalArgumentException;Ljava/lang/UnsupportedOperationException; )
+@dalvik.annotation.Signature (value =(Landroid/speech/recognition/AudioStream;Ljava/util/Vector<Landroid/speech/recognition/Grammar;>;)V )
+public abstract void recognize(
+android.speech.recognition.AudioStream
+java.util.Vector)
+
+public abstract void setListener(
+android.speech.recognition.RecognizerListener)
+@dalvik.annotation.Signature (value =(Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>;)V )
+public abstract void setParameters(
+java.util.Hashtable)
+
+public abstract void stop()
+
+________________CLASS________________
+
+
+public abstract class android.speech.recognition.EmbeddedRecognizer extends java.lang.Object implements android.speech.recognition.Recognizer
+
+----------------FIELDS----------------
+
+private static android.speech.recognition.EmbeddedRecognizer instance
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.speech.recognition.EmbeddedRecognizer getInstance()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/io/FileNotFoundException;Ljava/io/IOException;Ljava/lang/UnsatisfiedLinkError;Ljava/lang/ClassNotFoundException; )
+public abstract void configure(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public abstract void resetAcousticState()
+
+________________CLASS________________
+
+
+public class android.speech.recognition.GrammarErrorException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.speech.recognition.GrammarOverflowException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.speech.recognition.InvalidURLException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =LogLevel )
+@dalvik.annotation.EnclosingClass (value =Landroid/speech/recognition/Logger; )
+public class android.speech.recognition.Logger$LogLevel extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static android.speech.recognition.Logger$LogLevel LEVEL_ERROR
+
+public static android.speech.recognition.Logger$LogLevel LEVEL_INFO
+
+public static android.speech.recognition.Logger$LogLevel LEVEL_NONE
+
+public static android.speech.recognition.Logger$LogLevel LEVEL_TRACE
+
+public static android.speech.recognition.Logger$LogLevel LEVEL_WARN
+
+private java.lang.String message
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+java.lang.String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/speech/recognition/Logger$LogLevel; )
+public abstract class android.speech.recognition.Logger extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.speech.recognition.Logger getInstance()
+
+public abstract void error(
+java.lang.String)
+
+public abstract void info(
+java.lang.String)
+
+public abstract void setLoggingLevel(
+android.speech.recognition.Logger$LogLevel)
+
+public abstract void setPath(
+java.lang.String)
+
+public abstract void trace(
+java.lang.String)
+
+public abstract void warn(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Mode )
+@dalvik.annotation.EnclosingClass (value =Landroid/speech/recognition/MediaFileReader; )
+public class android.speech.recognition.MediaFileReader$Mode extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static android.speech.recognition.MediaFileReader$Mode ALL_AT_ONCE
+
+public static android.speech.recognition.MediaFileReader$Mode REAL_TIME
+
+private java.lang.String message
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/speech/recognition/MediaFileReader$Mode; )
+public abstract class android.speech.recognition.MediaFileReader extends java.lang.Object implements android.speech.recognition.AudioSource
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public static android.speech.recognition.MediaFileReader create(
+java.lang.String
+android.speech.recognition.AudioSourceListener)
+
+public abstract android.speech.recognition.AudioStream createAudio()
+
+public abstract void setMode(
+android.speech.recognition.MediaFileReader$Mode)
+
+public abstract void start()
+
+public abstract void stop()
+
+________________CLASS________________
+
+
+public abstract interface class android.speech.recognition.MediaFileReaderListener extends java.lang.Object implements android.speech.recognition.AudioSourceListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract class android.speech.recognition.MediaFileWriter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.speech.recognition.MediaFileWriter create(
+android.speech.recognition.MediaFileWriterListener)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public abstract void save(
+android.speech.recognition.AudioStream
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class android.speech.recognition.MediaFileWriterListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onError(
+java.lang.Exception)
+
+public abstract void onStopped()
+
+________________CLASS________________
+
+
+public abstract class android.speech.recognition.Microphone extends java.lang.Object implements android.speech.recognition.AudioSource
+
+----------------FIELDS----------------
+
+private static android.speech.recognition.Microphone instance
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.speech.recognition.Microphone getInstance()
+
+public abstract android.speech.recognition.AudioStream createAudio()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException;Ljava/lang/IllegalArgumentException; )
+public abstract void setCodec(
+android.speech.recognition.Codec)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public abstract void setListener(
+android.speech.recognition.AudioSourceListener)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public abstract void start()
+
+public abstract void stop()
+
+________________CLASS________________
+
+
+public abstract interface class android.speech.recognition.MicrophoneListener extends java.lang.Object implements android.speech.recognition.AudioSourceListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/speech/recognition/NBestRecognitionResult; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Entry )
+public abstract interface class android.speech.recognition.NBestRecognitionResult$Entry extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String get(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public abstract byte getConfidenceScore()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public abstract java.lang.String getLiteralMeaning()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public abstract java.lang.String getSemanticMeaning()
+
+public abstract java.util.Enumeration keys()
+
+________________CLASS________________
+
+
+public abstract interface class android.speech.recognition.RecognitionResult extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/speech/recognition/NBestRecognitionResult$Entry; )
+public abstract interface class android.speech.recognition.NBestRecognitionResult extends java.lang.Object implements android.speech.recognition.RecognitionResult
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract android.speech.recognition.VoicetagItem createVoicetagItem(
+java.lang.String
+android.speech.recognition.VoicetagItemListener)
+@dalvik.annotation.Throws (value =Ljava/lang/ArrayIndexOutOfBoundsException; )
+public abstract android.speech.recognition.NBestRecognitionResult$Entry getEntry(
+int)
+
+public abstract int getSize()
+
+________________CLASS________________
+
+
+public class android.speech.recognition.ParameterErrorException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.speech.recognition.ParseErrorException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =FailureReason )
+@dalvik.annotation.EnclosingClass (value =Landroid/speech/recognition/RecognizerListener; )
+public class android.speech.recognition.RecognizerListener$FailureReason extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static android.speech.recognition.RecognizerListener$FailureReason BEGINNING_OF_SPEECH_TIMEOUT
+
+public static android.speech.recognition.RecognizerListener$FailureReason NO_MATCH
+
+public static android.speech.recognition.RecognizerListener$FailureReason RECOGNITION_TIMEOUT
+
+public static android.speech.recognition.RecognizerListener$FailureReason SPOKE_TOO_SOON
+
+public static android.speech.recognition.RecognizerListener$FailureReason TOO_MUCH_SPEECH
+
+public static android.speech.recognition.RecognizerListener$FailureReason UNKNOWN
+
+private final java.lang.String message
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+java.lang.String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class android.speech.recognition.SlotItem extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Item )
+@dalvik.annotation.EnclosingClass (value =Landroid/speech/recognition/SrecGrammar; )
+public class android.speech.recognition.SrecGrammar$Item extends java.lang.Object
+
+----------------FIELDS----------------
+
+public android.speech.recognition.SlotItem _item
+
+public java.lang.String _semanticMeaning
+
+public int _weight
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void <init>(
+android.speech.recognition.SlotItem
+int
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/speech/recognition/SrecGrammar$Item; )
+public abstract interface class android.speech.recognition.SrecGrammar extends java.lang.Object implements android.speech.recognition.EmbeddedGrammar
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public abstract void addItem(
+java.lang.String
+android.speech.recognition.SlotItem
+int
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/Vector<Landroid/speech/recognition/SrecGrammar$Item;>;)V )
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public abstract void addItemList(
+java.lang.String
+java.util.Vector)
+
+________________CLASS________________
+
+
+public abstract class android.speech.recognition.VoicetagItem extends java.lang.Object implements android.speech.recognition.SlotItem
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/io/FileNotFoundException;Ljava/io/IOException; )
+public static android.speech.recognition.VoicetagItem create(
+java.lang.String
+android.speech.recognition.VoicetagItemListener)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public abstract byte[] getAudio()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public abstract void load()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract void save(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract void setAudio(
+byte[])
+
+________________CLASS________________
+
+
+public abstract interface class android.speech.recognition.VoicetagItemListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onError(
+java.lang.Exception)
+
+public abstract void onLoaded()
+
+public abstract void onSaved(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class android.speech.recognition.WordItem extends java.lang.Object implements android.speech.recognition.SlotItem
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public static android.speech.recognition.WordItem valueOf(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public static android.speech.recognition.WordItem valueOf(
+java.lang.String
+java.lang.String[])
+
+________________CLASS________________
+
+
+public class android.speech.recognition.impl.AudioStreamImpl extends java.lang.Object implements android.speech.recognition.AudioStream, java.lang.Runnable
+
+----------------FIELDS----------------
+
+private long nativeObject
+----------------METHODS----------------
+
+public void <init>(
+long)
+
+private native void deleteNativeObject(
+long)
+
+public void dispose()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public long getNativeObject()
+
+public void run()
+
+________________CLASS________________
+
+
+public class android.speech.recognition.impl.DeviceSpeakerImpl extends android.speech.recognition.DeviceSpeaker implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private static android.speech.recognition.impl.DeviceSpeakerImpl instance
+
+private android.speech.recognition.DeviceSpeakerListener locallistener
+
+private long nativeObject
+----------------METHODS----------------
+
+private void <init>()
+
+private native void deleteNativeObject(
+long)
+
+private void dispose()
+
+public static android.speech.recognition.impl.DeviceSpeakerImpl getInstance()
+
+private native long initNativeObject()
+
+private native void setCodecProxy(
+long
+android.speech.recognition.Codec)
+
+private native void setListenerProxy(
+long
+android.speech.recognition.DeviceSpeakerListener)
+
+private native void startProxy(
+long
+long)
+
+private native void stopProxy(
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public void run()
+
+public void setCodec(
+android.speech.recognition.Codec)
+
+public void setListener(
+android.speech.recognition.DeviceSpeakerListener)
+
+public void start(
+android.speech.recognition.AudioStream)
+
+public void stop()
+
+________________CLASS________________
+
+
+public class android.speech.recognition.impl.GrammarImpl extends java.lang.Object implements android.speech.recognition.Grammar, java.lang.Runnable
+
+----------------FIELDS----------------
+
+protected long nativeObject
+----------------METHODS----------------
+
+public void <init>(
+long)
+
+private native void deleteNativeObject(
+long)
+
+private native void loadProxy(
+long)
+
+private native void unloadProxy(
+long)
+
+public void dispose()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public long getNativeObject()
+
+public void load()
+
+public void run()
+
+public void unload()
+
+________________CLASS________________
+
+
+public class android.speech.recognition.impl.EmbeddedGrammarImpl extends android.speech.recognition.impl.GrammarImpl implements android.speech.recognition.EmbeddedGrammar
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+long)
+
+private native void compileAllSlotsProxy(
+long)
+
+private native void resetAllSlotsProxy(
+long)
+
+private native void saveProxy(
+long
+java.lang.String)
+
+public void compileAllSlots()
+
+public void resetAllSlots()
+
+public void save(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.speech.recognition.impl.EmbeddedRecognizerImpl extends android.speech.recognition.EmbeddedRecognizer implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private static android.speech.recognition.impl.EmbeddedRecognizerImpl instance
+
+private long nativeObject
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/io/FileNotFoundException;Ljava/io/IOException;Ljava/lang/UnsatisfiedLinkError;Ljava/lang/ClassNotFoundException; )
+private native void configureProxy(
+long
+java.lang.String)
+
+private native long createEmbeddedGrammarProxy(
+long
+java.lang.String
+android.speech.recognition.GrammarListener)
+
+private native void deleteNativeObject(
+long)
+
+private void dispose()
+
+public static android.speech.recognition.impl.EmbeddedRecognizerImpl getInstance()
+
+private native long getInstanceProxy()
+@dalvik.annotation.Signature (value =(JLjava/util/Vector<Ljava/lang/String;>;)V )
+private native void getParametersProxy(
+long
+java.util.Vector)
+
+private native void recognizeProxy(
+long
+long
+long[])
+
+private native void resetAcousticStateProxy(
+long)
+
+private native void setListenerProxy(
+long
+android.speech.recognition.RecognizerListener)
+@dalvik.annotation.Signature (value =(JLjava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>;)V )
+private native void setParametersProxy(
+long
+java.util.Hashtable)
+
+private native void stopProxy(
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/io/FileNotFoundException;Ljava/io/IOException;Ljava/lang/UnsatisfiedLinkError;Ljava/lang/ClassNotFoundException; )
+public void configure(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public android.speech.recognition.Grammar createGrammar(
+java.lang.String
+android.speech.recognition.GrammarListener)
+@dalvik.annotation.Signature (value =(Ljava/util/Vector<Ljava/lang/String;>;)V )
+public void getParameters(
+java.util.Vector)
+
+public void recognize(
+android.speech.recognition.AudioStream
+android.speech.recognition.Grammar)
+@dalvik.annotation.Signature (value =(Landroid/speech/recognition/AudioStream;Ljava/util/Vector<Landroid/speech/recognition/Grammar;>;)V )
+public void recognize(
+android.speech.recognition.AudioStream
+java.util.Vector)
+
+public void resetAcousticState()
+
+public void run()
+
+public void setListener(
+android.speech.recognition.RecognizerListener)
+@dalvik.annotation.Signature (value =(Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>;)V )
+public void setParameters(
+java.util.Hashtable)
+
+public void stop()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.speech.recognition.impl.EntryImpl$1 extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+
+private int indexOfNextRead
+
+private java.lang.String[] keys
+
+final android.speech.recognition.impl.EntryImpl this$0
+----------------METHODS----------------
+
+ void <init>(
+android.speech.recognition.impl.EntryImpl)
+
+public boolean hasMoreElements()
+
+public java.lang.Object nextElement()
+
+________________CLASS________________
+
+
+public class android.speech.recognition.impl.EntryImpl extends java.lang.Object implements android.speech.recognition.NBestRecognitionResult$Entry, java.lang.Runnable
+
+----------------FIELDS----------------
+
+private long nativeObject
+----------------METHODS----------------
+
+public void <init>(
+long)
+
+static long access$000(
+android.speech.recognition.impl.EntryImpl)
+
+static java.lang.String[] access$100(
+android.speech.recognition.impl.EntryImpl
+long)
+
+private native void deleteNativeObject(
+long)
+
+private void dispose()
+
+private native byte getConfidenceScoreProxy(
+long)
+
+private native java.lang.String getLiteralMeaningProxy(
+long)
+
+private native java.lang.String getProxy(
+long
+java.lang.String)
+
+private native java.lang.String getSemanticMeaningProxy(
+long)
+
+private native java.lang.String[] keysProxy(
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public java.lang.String get(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public byte getConfidenceScore()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public java.lang.String getLiteralMeaning()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public java.lang.String getSemanticMeaning()
+
+public java.util.Enumeration keys()
+
+public void run()
+
+________________CLASS________________
+
+
+public class android.speech.recognition.impl.LoggerImpl extends android.speech.recognition.Logger implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private static android.speech.recognition.impl.LoggerImpl instance
+
+private long nativeObject
+----------------METHODS----------------
+
+private void <init>()
+
+private native void deleteNativeObject(
+long)
+
+private void dispose()
+
+private native void errorProxy(
+long
+java.lang.String)
+
+public static android.speech.recognition.impl.LoggerImpl getInstance()
+
+private native void infoProxy(
+long
+java.lang.String)
+
+private native long initNativeObject()
+
+private native void setLoggingLevelProxy(
+long
+android.speech.recognition.Logger$LogLevel)
+
+private native void setPathProxy(
+long
+java.lang.String)
+
+private native void traceProxy(
+long
+java.lang.String)
+
+private native void warnProxy(
+long
+java.lang.String)
+
+public void error(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public void info(
+java.lang.String)
+
+public void run()
+
+public void setLoggingLevel(
+android.speech.recognition.Logger$LogLevel)
+
+public void setPath(
+java.lang.String)
+
+public void trace(
+java.lang.String)
+
+public void warn(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.speech.recognition.impl.MediaFileReaderImpl extends android.speech.recognition.MediaFileReader implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private long nativeObject
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+android.speech.recognition.AudioSourceListener)
+
+private native long createAudioProxy(
+long)
+
+private native long createMediaFileReaderProxy(
+java.lang.String
+android.speech.recognition.AudioSourceListener)
+
+private native void deleteNativeObject(
+long)
+
+private native void setModeProxy(
+long
+android.speech.recognition.MediaFileReader$Mode)
+
+private native void startProxy(
+long)
+
+private native void stopProxy(
+long)
+
+public android.speech.recognition.AudioStream createAudio()
+
+public void dispose()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public void run()
+
+public void setMode(
+android.speech.recognition.MediaFileReader$Mode)
+
+public void start()
+
+public void stop()
+
+________________CLASS________________
+
+
+public class android.speech.recognition.impl.MediaFileWriterImpl extends android.speech.recognition.MediaFileWriter implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private long nativeObject
+----------------METHODS----------------
+
+public void <init>(
+android.speech.recognition.MediaFileWriterListener)
+
+private native long createMediaFileWriterProxy(
+android.speech.recognition.MediaFileWriterListener)
+
+private native void deleteNativeObject(
+long)
+
+private native void saveProxy(
+long
+long
+java.lang.String)
+
+public void dispose()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public void run()
+
+public void save(
+android.speech.recognition.AudioStream
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.speech.recognition.impl.MicrophoneImpl extends android.speech.recognition.Microphone implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private static android.speech.recognition.impl.MicrophoneImpl instance
+
+private long nativeObject
+----------------METHODS----------------
+
+private void <init>()
+
+private native long createAudioProxy(
+long)
+
+private native void deleteNativeObject(
+long)
+
+private void dispose()
+
+public static android.speech.recognition.impl.MicrophoneImpl getInstance()
+
+private native long initNativeObject()
+
+private native void setCodecProxy(
+long
+android.speech.recognition.Codec)
+
+private native void setListenerProxy(
+long
+android.speech.recognition.AudioSourceListener)
+
+private native void startProxy(
+long)
+
+private native void stopProxy(
+long)
+
+public android.speech.recognition.AudioStream createAudio()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public void run()
+
+public void setCodec(
+android.speech.recognition.Codec)
+
+public void setListener(
+android.speech.recognition.AudioSourceListener)
+
+public void start()
+
+public void stop()
+
+________________CLASS________________
+
+
+public class android.speech.recognition.impl.NBestRecognitionResultImpl extends java.lang.Object implements android.speech.recognition.NBestRecognitionResult
+
+----------------FIELDS----------------
+
+private long nativeObject
+----------------METHODS----------------
+
+public void <init>(
+long)
+
+private native long createVoicetagItemProxy(
+long
+java.lang.String
+android.speech.recognition.VoicetagItemListener)
+
+private void dispose()
+
+private native long getEntryProxy(
+long
+int)
+
+private native int getSizeProxy(
+long)
+
+public android.speech.recognition.VoicetagItem createVoicetagItem(
+java.lang.String
+android.speech.recognition.VoicetagItemListener)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public android.speech.recognition.NBestRecognitionResult$Entry getEntry(
+int)
+
+public int getSize()
+
+________________CLASS________________
+
+
+public class android.speech.recognition.impl.SrecGrammarImpl extends android.speech.recognition.impl.EmbeddedGrammarImpl implements android.speech.recognition.SrecGrammar
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+long)
+
+private native void addItemListProxy(
+long
+java.lang.String
+long[]
+int[]
+java.lang.String[])
+
+private native void addItemProxy(
+long
+java.lang.String
+long
+int
+java.lang.String)
+
+public void addItem(
+java.lang.String
+android.speech.recognition.SlotItem
+int
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/Vector<Landroid/speech/recognition/SrecGrammar$Item;>;)V )
+public void addItemList(
+java.lang.String
+java.util.Vector)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.speech.recognition.impl.System$1 extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final android.speech.recognition.impl.System this$0
+----------------METHODS----------------
+
+ void <init>(
+android.speech.recognition.impl.System)
+
+public void run()
+
+________________CLASS________________
+
+
+public class android.speech.recognition.impl.System extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static android.speech.recognition.impl.System instance
+
+private static boolean libraryLoaded
+@dalvik.annotation.Signature (value =Ljava/util/WeakHashMap<Ljava/lang/Object;Ljava/lang/ref/WeakReference;>; )
+private static java.util.WeakHashMap registerMap
+
+private long nativeObject
+
+private boolean shutdownRequested
+----------------METHODS----------------
+
+private void <init>()
+
+private static native void disposeProxy()
+
+public static native java.lang.String getAPIVersion()
+
+public static android.speech.recognition.impl.System getInstance()
+
+private void initLibrary()
+
+private static native long initNativeObject()
+@dalvik.annotation.Throws (value =Ljava/util/concurrent/TimeoutException;Ljava/lang/IllegalThreadStateException; )
+public void dispose()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public void register(
+java.lang.Runnable)
+
+public void unregister(
+java.lang.Runnable)
+
+________________CLASS________________
+
+
+public class android.speech.recognition.impl.VoicetagItemImpl extends android.speech.recognition.VoicetagItem implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private long nativeObject
+
+private boolean needToBeLoaded
+----------------METHODS----------------
+
+public void <init>(
+long
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/io/FileNotFoundException;Ljava/io/IOException; )
+public static android.speech.recognition.VoicetagItem create(
+java.lang.String
+android.speech.recognition.VoicetagItemListener)
+
+private static native long createVoicetagProxy(
+java.lang.String
+android.speech.recognition.VoicetagItemListener)
+
+private native void deleteNativeObject(
+long)
+
+private void dispose()
+
+private native byte[] getAudioProxy(
+long)
+
+private native void loadVoicetagProxy(
+long)
+
+private native void saveVoicetagProxy(
+long
+java.lang.String)
+
+private native void setAudioProxy(
+long
+byte[])
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public byte[] getAudio()
+
+public long getNativeObject()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public void load()
+
+public void run()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void save(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public void setAudio(
+byte[])
+
+________________CLASS________________
+
+
+public class android.speech.recognition.impl.WordItemImpl extends android.speech.recognition.WordItem implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private static final java.lang.String[] guessPronunciations
+
+private long nativeObject
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+private void <init>(
+java.lang.String
+java.lang.String[])
+
+private native void deleteNativeObject(
+long)
+
+private void dispose()
+
+private native void initNativeObject(
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public static android.speech.recognition.impl.WordItemImpl valueOf(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public static android.speech.recognition.impl.WordItemImpl valueOf(
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public long getNativeObject()
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/speech/srec/Srec; )
+@dalvik.annotation.InnerClass (accessFlags =1 name =Grammar )
+public class android.speech.srec.Srec$Grammar extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int mId
+
+final android.speech.srec.Srec this$0
+----------------METHODS----------------
+
+public void <init>(
+android.speech.srec.Srec)
+
+public void addToSlot(
+java.lang.String
+java.lang.String
+java.lang.String
+int
+java.lang.String)
+
+public void compileSlots()
+
+public void resetAllSlots()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void save(
+java.lang.String)
+
+public void unload()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/speech/srec/Srec$Grammar; )
+public class android.speech.srec.Srec extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int mNative
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void <init>(
+java.lang.String)
+
+public void dispose()
+
+protected void finalize()
+
+public java.lang.String getResult(
+int
+java.lang.String)
+
+public int getResultCount()
+
+public java.lang.String[] getResultKeys(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public android.speech.srec.Srec$Grammar loadGrammar(
+java.lang.String)
+
+public boolean process()
+
+public void reset()
+
+public void start()
+
+________________CLASS________________
+
+
+public class android.syncml.pim.PropertyNode extends java.lang.Object
+
+----------------FIELDS----------------
+
+public android.content.ContentValues paraMap
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+public java.util.ArrayList paraMap_TYPE
+
+public java.lang.String propName
+
+public java.lang.String propValue
+
+public byte[] propValue_byts
+@dalvik.annotation.Signature (value =Ljava/util/Collection<Ljava/lang/String;>; )
+public java.util.Collection propValue_vector
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public abstract interface class android.syncml.pim.VBuilder extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void end()
+
+public abstract void endProperty()
+
+public abstract void endRecord()
+
+public abstract void propertyName(
+java.lang.String)
+
+public abstract void propertyParamType(
+java.lang.String)
+
+public abstract void propertyParamValue(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<Ljava/lang/String;>;)V )
+public abstract void propertyValues(
+java.util.Collection)
+
+public abstract void start()
+
+public abstract void startProperty()
+
+public abstract void startRecord(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.syncml.pim.VDataBuilder extends java.lang.Object implements android.syncml.pim.VBuilder
+
+----------------FIELDS----------------
+
+ java.lang.String curParamType
+
+ android.syncml.pim.PropertyNode curPropNode
+
+ android.syncml.pim.VNode curVNode
+
+ int nodeListPos
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/syncml/pim/VNode;>; )
+public java.util.ArrayList vNodeList
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<Ljava/lang/String;>;)Ljava/lang/String; )
+private java.lang.String listToString(
+java.util.Collection)
+
+public void end()
+
+public void endProperty()
+
+public void endRecord()
+
+public java.lang.String getResult()
+
+public void propertyName(
+java.lang.String)
+
+public void propertyParamType(
+java.lang.String)
+
+public void propertyParamValue(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<Ljava/lang/String;>;)V )
+public void propertyValues(
+java.util.Collection)
+
+public void start()
+
+public void startProperty()
+
+public void startRecord(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.syncml.pim.VNode extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String VName
+
+public int parseStatus
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/syncml/pim/PropertyNode;>; )
+public java.util.ArrayList propList
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public abstract class android.syncml.pim.VParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected final int PARSE_ERROR
+
+protected java.lang.String mBuffer
+
+protected android.syncml.pim.VBuilder mBuilder
+
+protected final java.lang.String mDefaultEncoding
+
+protected java.lang.String mEncoding
+----------------METHODS----------------
+
+public void <init>()
+
+protected java.lang.String getWord(
+int)
+
+protected boolean isLetter(
+char)
+
+protected boolean isLetterOrDigit(
+char)
+
+protected boolean isPrintable(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean parse(
+java.io.InputStream
+java.lang.String
+android.syncml.pim.VBuilder)
+
+protected int parse8bit(
+int)
+
+protected int parseBase64(
+int)
+
+protected int parseCharsetVal(
+int)
+
+protected int parseCrlf(
+int)
+
+protected int parseLangVal(
+int)
+
+protected int parseOctet(
+int)
+
+protected int parsePEncodingVal(
+int)
+
+protected int parsePValueVal(
+int)
+
+protected int parsePtext(
+int)
+
+protected int parseQuotedPrintable(
+int)
+
+protected int parseString(
+int
+java.lang.String
+boolean)
+
+protected int parseTag(
+int)
+
+protected abstract int parseVFile(
+int)
+
+protected int parseValue(
+int)
+
+protected int parseWord(
+int)
+
+protected int parseWsls(
+int)
+
+protected int parseXWord(
+int)
+
+protected int removeWs(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+protected void setInputStream(
+java.io.InputStream
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/syncml/pim/vcalendar/CalendarStruct; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =EventStruct )
+public class android.syncml.pim.vcalendar.CalendarStruct$EventStruct extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String description
+
+public java.lang.String dtend
+
+public java.lang.String dtstart
+
+public java.lang.String duration
+
+public java.lang.String event_location
+
+public java.lang.String has_alarm
+
+public java.lang.String last_date
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List reminderList
+
+public java.lang.String rrule
+
+public java.lang.String status
+
+public java.lang.String title
+
+public java.lang.String uid
+----------------METHODS----------------
+
+public void <init>()
+
+public void addReminderList(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/syncml/pim/vcalendar/CalendarStruct$EventStruct; )
+public class android.syncml.pim.vcalendar.CalendarStruct extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/syncml/pim/vcalendar/CalendarStruct$EventStruct;>; )
+public java.util.List eventList
+
+public java.lang.String timezone
+----------------METHODS----------------
+
+public void <init>()
+
+public void addEventList(
+android.syncml.pim.vcalendar.CalendarStruct$EventStruct)
+
+________________CLASS________________
+
+
+public class android.syncml.pim.vcalendar.VCalComposer extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int VERSION_VCAL10_INT
+
+public static final int VERSION_VCAL20_INT
+
+public static final java.lang.String VERSION_VCALENDAR10
+
+public static final java.lang.String VERSION_VCALENDAR20
+
+private static java.lang.String mNewLine
+
+private java.lang.String mVersion
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private java.lang.String buildEventStr(
+android.syncml.pim.vcalendar.CalendarStruct$EventStruct)
+
+private java.lang.String foldingString(
+java.lang.String)
+
+private boolean isNull(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/syncml/pim/vcalendar/VCalException; )
+public java.lang.String createVCal(
+android.syncml.pim.vcalendar.CalendarStruct
+int)
+
+________________CLASS________________
+
+
+public class android.syncml.pim.vcalendar.VCalException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.syncml.pim.vcalendar.VCalParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+public static final java.lang.String VERSION_VCALENDAR10
+
+public static final java.lang.String VERSION_VCALENDAR20
+
+private android.syncml.pim.VParser mParser
+
+private java.lang.String mVersion
+----------------METHODS----------------
+
+public void <init>()
+
+private void judgeVersion(
+java.lang.String)
+
+private java.lang.String verifyVCal(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/syncml/pim/vcalendar/VCalException; )
+public boolean parse(
+java.lang.String
+android.syncml.pim.VDataBuilder)
+
+________________CLASS________________
+
+
+public class android.syncml.pim.vcalendar.VCalParser_V10 extends android.syncml.pim.VParser
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private static final java.util.HashSet mEscAllowedProps
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private static final java.util.HashSet mEvtPropNameGroup1
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private static final java.util.HashSet mEvtPropNameGroup2
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/util/HashSet<Ljava/lang/String;>;>; )
+private static final java.util.HashMap mSpecialValueSetMap
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private static final java.util.HashSet mValueCAT
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private static final java.util.HashSet mValueCLASS
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private static final java.util.HashSet mValueRES
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private static final java.util.HashSet mValueSTAT
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private java.lang.String exportEntpropValue(
+java.lang.String
+java.lang.String)
+
+private int parseCalentities(
+int)
+
+private int parseCalentity(
+int)
+
+private int parseCalprop(
+int)
+
+private int parseCalprop0(
+int
+java.lang.String)
+
+private int parseCalprop1(
+int)
+
+private int parseCalprops(
+int)
+
+private int parseEntprop(
+int)
+
+private int parseEntprop0(
+int)
+
+private int parseEntprop1(
+int)
+
+private int parseEntprops(
+int)
+
+private int parseEvententity(
+int)
+
+private int parseKnownType(
+int)
+
+private int parseParam(
+int)
+
+private int parseParam0(
+int)
+
+private int parseParam1(
+int)
+
+private int parseParam2(
+int)
+
+private int parseParam3(
+int)
+
+private int parseParam4(
+int)
+
+private int parseParam5(
+int)
+
+private int parseParam6(
+int)
+
+private int parseParam7(
+int)
+
+private int parseParamlist(
+int)
+
+private int parseParams(
+int)
+
+private int parsePtypeval(
+int)
+
+private int parseRoleVal(
+int)
+
+private int parseStatuVal(
+int)
+
+private int parseTodoentity(
+int)
+
+private int parseVCal(
+int)
+
+private int parseVCalFile(
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/ArrayList<Ljava/lang/String;>;)I )
+private int valueFilter(
+java.lang.String
+java.util.ArrayList)
+
+protected int parseVFile(
+int)
+
+________________CLASS________________
+
+
+public class android.syncml.pim.vcalendar.VCalParser_V20 extends android.syncml.pim.vcalendar.VCalParser_V10
+
+----------------FIELDS----------------
+
+private static final java.lang.String V10LINEBREAKER
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private static final java.util.HashSet acceptableComponents
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private static final java.util.HashSet acceptableV20Props
+
+private boolean hasTZ
+
+private int index
+
+private java.lang.String[] lines
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private boolean parseV20Calbody(
+java.lang.String[]
+java.lang.StringBuilder)
+@dalvik.annotation.Throws (value =Ljava/lang/ArrayIndexOutOfBoundsException; )
+private boolean parseV20Component(
+java.lang.String
+java.lang.StringBuilder)
+
+private java.lang.String[] splitProperty(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean parse(
+java.io.InputStream
+java.lang.String
+android.syncml.pim.VBuilder)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =ContactMethod )
+@dalvik.annotation.EnclosingClass (value =Landroid/syncml/pim/vcard/ContactStruct; )
+public class android.syncml.pim.vcard.ContactStruct$ContactMethod extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String data
+
+public java.lang.String kind
+
+public java.lang.String label
+
+public java.lang.String type
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/syncml/pim/vcard/ContactStruct; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PhoneData )
+public class android.syncml.pim.vcard.ContactStruct$PhoneData extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String data
+
+public java.lang.String label
+
+public java.lang.String type
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/syncml/pim/vcard/ContactStruct$ContactMethod;Landroid/syncml/pim/vcard/ContactStruct$PhoneData; )
+public class android.syncml.pim.vcard.ContactStruct extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String company
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/syncml/pim/vcard/ContactStruct$ContactMethod;>; )
+public java.util.List contactmethodList
+
+public java.lang.String name
+
+public java.lang.String notes
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/syncml/pim/vcard/ContactStruct$PhoneData;>; )
+public java.util.List phoneList
+
+public byte[] photoBytes
+
+public java.lang.String photoType
+
+public java.lang.String title
+----------------METHODS----------------
+
+public void <init>()
+
+public void addContactmethod(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public void addPhone(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.syncml.pim.vcard.VCardComposer extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+public static final int VERSION_VCARD21_INT
+
+public static final int VERSION_VCARD30_INT
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/String;>; )
+private static final java.util.HashMap emailTypeMap
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private static final java.util.HashSet emailTypes
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/String;>; )
+private static final java.util.HashMap phoneTypeMap
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private static final java.util.HashSet phoneTypes
+
+private java.lang.String mNewline
+
+private java.lang.StringBuilder mResult
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/syncml/pim/vcard/ContactStruct$ContactMethod;>;I)V )
+private void appendContactMethodStr(
+java.util.List
+int)
+
+private void appendNameStr(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/syncml/pim/vcard/ContactStruct$PhoneData;>;I)V )
+private void appendPhoneStr(
+java.util.List
+int)
+@dalvik.annotation.Throws (value =Landroid/syncml/pim/vcard/VCardException; )
+private void appendPhotoStr(
+byte[]
+java.lang.String
+int)
+
+private java.lang.String foldingString(
+java.lang.String
+int)
+
+private java.lang.String getPhoneTypeStr(
+android.syncml.pim.vcard.ContactStruct$PhoneData)
+
+private boolean isNull(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/syncml/pim/vcard/VCardException; )
+public java.lang.String createVCard(
+android.syncml.pim.vcard.ContactStruct
+int)
+
+________________CLASS________________
+
+
+public class android.syncml.pim.vcard.VCardException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.syncml.pim.vcard.VCardParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+public static final java.lang.String VERSION_VCARD21
+
+public static final int VERSION_VCARD21_INT
+
+public static final java.lang.String VERSION_VCARD30
+
+public static final int VERSION_VCARD30_INT
+
+ android.syncml.pim.VParser mParser
+
+ java.lang.String mVersion
+----------------METHODS----------------
+
+public void <init>()
+
+private void judgeVersion(
+java.lang.String)
+
+private void setVersion(
+java.lang.String)
+
+private java.lang.String verifyVCard(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/syncml/pim/vcard/VCardException;Ljava/io/IOException; )
+public boolean parse(
+java.lang.String
+android.syncml.pim.VDataBuilder)
+
+________________CLASS________________
+
+
+public class android.syncml.pim.vcard.VCardParser_V21 extends android.syncml.pim.VParser
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private static final java.util.HashSet mKnownTypeSet
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private static final java.util.HashSet mName
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private java.lang.String escapeTranslator(
+java.lang.String)
+
+private int parseGroups(
+int)
+
+private int parseGroupsWithDot(
+int)
+
+private int parseItem(
+int)
+
+private int parseItem0(
+int)
+
+private int parseItem1(
+int)
+
+private int parseItem2(
+int)
+
+private int parseItems(
+int)
+
+private int parseKnownType(
+int)
+
+private int parseName(
+int)
+
+private int parsePTypeVal(
+int)
+
+private int parseParam(
+int)
+
+private int parseParam0(
+int)
+
+private int parseParam1(
+int)
+
+private int parseParam2(
+int)
+
+private int parseParam3(
+int)
+
+private int parseParam4(
+int)
+
+private int parseParam5(
+int)
+
+private int parseParamList(
+int)
+
+private int parseParams(
+int)
+
+private int parseVCard(
+int)
+
+ int parseVCardFile(
+int)
+
+protected int parseVFile(
+int)
+
+________________CLASS________________
+
+
+public class android.syncml.pim.vcard.VCardParser_V30 extends android.syncml.pim.vcard.VCardParser_V21
+
+----------------FIELDS----------------
+
+private static final java.lang.String V21LINEBREAKER
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private static final java.util.HashSet acceptablePropsWithParam
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private static final java.util.HashSet acceptablePropsWithoutParam
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>; )
+private static final java.util.HashMap propV30ToV21Map
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private java.lang.String mapContentlineV30ToV21(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private java.lang.String[] splitProperty(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean parse(
+java.io.InputStream
+java.lang.String
+android.syncml.pim.VBuilder)
+
+________________CLASS________________
+
+
+public abstract class android.telephony.CellLocation extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.telephony.CellLocation getEmpty()
+
+public static android.telephony.CellLocation newFromBundle(
+android.os.Bundle)
+
+public static void requestLocationUpdate()
+
+public abstract void fillInNotifierBundle(
+android.os.Bundle)
+
+________________CLASS________________
+
+
+public class android.telephony.PhoneNumberFormattingTextWatcher extends java.lang.Object implements android.text.TextWatcher
+
+----------------FIELDS----------------
+
+private static java.util.Locale sCachedLocale
+
+private static int sFormatType
+
+private boolean mDeletingBackward
+
+private boolean mDeletingHyphen
+
+private boolean mFormatting
+
+private int mHyphenStart
+----------------METHODS----------------
+
+public void <init>()
+
+public void afterTextChanged(
+android.text.Editable)
+
+public void beforeTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+public void onTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+________________CLASS________________
+
+
+public class android.telephony.PhoneNumberUtils extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int FORMAT_NANP
+
+public static final int FORMAT_UNKNOWN
+
+private static final java.util.regex.Pattern GLOBAL_PHONE_NUMBER_PATTERN
+
+private static final android.util.SparseIntArray KEYPAD_MAP
+
+static final int MIN_MATCH
+
+private static final java.lang.String[] NANP_COUNTRIES
+
+private static final int NANP_STATE_DASH
+
+private static final int NANP_STATE_DIGIT
+
+private static final int NANP_STATE_ONE
+
+private static final int NANP_STATE_PLUS
+
+public static final char PAUSE
+
+public static final int TOA_International
+
+public static final int TOA_Unknown
+
+public static final char WAIT
+
+public static final char WILD
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static char bcdToChar(
+byte)
+
+public static java.lang.String calledPartyBCDFragmentToString(
+byte[]
+int
+int)
+
+public static java.lang.String calledPartyBCDToString(
+byte[]
+int
+int)
+
+private static int charToBCD(
+char)
+
+public static boolean compare(
+java.lang.String
+java.lang.String)
+
+public static java.lang.String convertKeypadLettersToDigits(
+java.lang.String)
+
+public static java.lang.String extractNetworkPortion(
+java.lang.String)
+
+public static java.lang.String extractPostDialPortion(
+java.lang.String)
+
+public static void formatNanpNumber(
+android.text.Editable)
+
+public static java.lang.String formatNumber(
+java.lang.String)
+
+public static void formatNumber(
+android.text.Editable
+int)
+
+public static int getFormatTypeForLocale(
+java.util.Locale)
+
+public static java.lang.String getNumberFromIntent(
+android.content.Intent
+android.content.Context)
+
+public static java.lang.String getStrippedReversed(
+java.lang.String)
+
+private static int indexOfLastNetworkChar(
+java.lang.String)
+
+private static void internalCalledPartyBCDFragmentToString(
+java.lang.StringBuilder
+byte[]
+int
+int)
+
+private static java.lang.String internalGetStrippedReversed(
+java.lang.String
+int)
+
+public static final boolean is12Key(
+char)
+
+public static final boolean isDialable(
+char)
+
+private static boolean isDialable(
+java.lang.String)
+
+public static boolean isEmergencyNumber(
+java.lang.String)
+
+public static boolean isGlobalPhoneNumber(
+java.lang.String)
+
+public static boolean isISODigit(
+char)
+
+public static final boolean isNonSeparator(
+char)
+
+public static final boolean isReallyDialable(
+char)
+
+public static final boolean isStartsPostDial(
+char)
+
+public static boolean isWellFormedSmsAddress(
+java.lang.String)
+
+private static boolean matchIntlPrefix(
+java.lang.String
+int)
+
+private static boolean matchIntlPrefixAndCC(
+java.lang.String
+int)
+
+private static boolean matchTrunkPrefix(
+java.lang.String
+int)
+
+private static int minPositive(
+int
+int)
+
+public static byte[] networkPortionToCalledPartyBCD(
+java.lang.String)
+
+public static byte[] networkPortionToCalledPartyBCDWithLength(
+java.lang.String)
+
+public static byte[] numberToCalledPartyBCD(
+java.lang.String)
+
+private static byte[] numberToCalledPartyBCDHelper(
+byte[]
+int
+java.lang.String)
+
+private static byte[] numberToCalledPartyBCDWithLength(
+java.lang.String)
+
+public static java.lang.String stringFromStringAndTOA(
+java.lang.String
+int)
+
+public static java.lang.String stripSeparators(
+java.lang.String)
+
+public static java.lang.String toCallerIDMinMatch(
+java.lang.String)
+
+public static int toaFromString(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/IPhoneStateListener$Stub; )
+public abstract interface class com.android.internal.telephony.IPhoneStateListener extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onCallForwardingIndicatorChanged(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onCallStateChanged(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onCellLocationChanged(
+android.os.Bundle)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onDataActivity(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onDataConnectionStateChanged(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onMessageWaitingIndicatorChanged(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onServiceStateChanged(
+android.telephony.ServiceState)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void onSignalStrengthChanged(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/IPhoneStateListener; )
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy; )
+public abstract class com.android.internal.telephony.IPhoneStateListener$Stub extends android.os.Binder implements com.android.internal.telephony.IPhoneStateListener
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_onCallForwardingIndicatorChanged
+
+static final int TRANSACTION_onCallStateChanged
+
+static final int TRANSACTION_onCellLocationChanged
+
+static final int TRANSACTION_onDataActivity
+
+static final int TRANSACTION_onDataConnectionStateChanged
+
+static final int TRANSACTION_onMessageWaitingIndicatorChanged
+
+static final int TRANSACTION_onServiceStateChanged
+
+static final int TRANSACTION_onSignalStrengthChanged
+----------------METHODS----------------
+
+public void <init>()
+
+public static com.android.internal.telephony.IPhoneStateListener asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/telephony/PhoneStateListener; )
+ class android.telephony.PhoneStateListener$1 extends com.android.internal.telephony.IPhoneStateListener$Stub
+
+----------------FIELDS----------------
+
+final android.telephony.PhoneStateListener this$0
+----------------METHODS----------------
+
+ void <init>(
+android.telephony.PhoneStateListener)
+
+public void onCallForwardingIndicatorChanged(
+boolean)
+
+public void onCallStateChanged(
+int
+java.lang.String)
+
+public void onCellLocationChanged(
+android.os.Bundle)
+
+public void onDataActivity(
+int)
+
+public void onDataConnectionStateChanged(
+int)
+
+public void onMessageWaitingIndicatorChanged(
+boolean)
+
+public void onServiceStateChanged(
+android.telephony.ServiceState)
+
+public void onSignalStrengthChanged(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/telephony/PhoneStateListener; )
+ class android.telephony.PhoneStateListener$2 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.telephony.PhoneStateListener this$0
+----------------METHODS----------------
+
+ void <init>(
+android.telephony.PhoneStateListener)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+
+public class android.telephony.PhoneStateListener extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int LISTEN_CALL_FORWARDING_INDICATOR
+
+public static final int LISTEN_CALL_STATE
+
+public static final int LISTEN_CELL_LOCATION
+
+public static final int LISTEN_DATA_ACTIVITY
+
+public static final int LISTEN_DATA_CONNECTION_STATE
+
+public static final int LISTEN_MESSAGE_WAITING_INDICATOR
+
+public static final int LISTEN_NONE
+
+public static final int LISTEN_SERVICE_STATE
+
+public static final int LISTEN_SIGNAL_STRENGTH
+
+ com.android.internal.telephony.IPhoneStateListener callback
+
+ android.os.Handler mHandler
+----------------METHODS----------------
+
+public void <init>()
+
+public void onCallForwardingIndicatorChanged(
+boolean)
+
+public void onCallStateChanged(
+int
+java.lang.String)
+
+public void onCellLocationChanged(
+android.telephony.CellLocation)
+
+public void onDataActivity(
+int)
+
+public void onDataConnectionStateChanged(
+int)
+
+public void onMessageWaitingIndicatorChanged(
+boolean)
+
+public void onServiceStateChanged(
+android.telephony.ServiceState)
+
+public void onSignalStrengthChanged(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/telephony/ServiceState; )
+final class android.telephony.ServiceState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.telephony.ServiceState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.telephony.ServiceState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class android.telephony.ServiceState extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/telephony/ServiceState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final int STATE_EMERGENCY_ONLY
+
+public static final int STATE_IN_SERVICE
+
+public static final int STATE_OUT_OF_SERVICE
+
+public static final int STATE_POWER_OFF
+
+private boolean mIsManualNetworkSelection
+
+private java.lang.String mOperatorAlphaLong
+
+private java.lang.String mOperatorAlphaShort
+
+private java.lang.String mOperatorNumeric
+
+private boolean mRoaming
+
+private int mState
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+android.os.Parcel)
+
+public void <init>(
+android.telephony.ServiceState)
+
+private static boolean equalsHandlesNulls(
+java.lang.Object
+java.lang.Object)
+
+public static android.telephony.ServiceState newFromBundle(
+android.os.Bundle)
+
+private void setFromNotifierBundle(
+android.os.Bundle)
+
+protected void copyFrom(
+android.telephony.ServiceState)
+
+public int describeContents()
+
+public boolean equals(
+java.lang.Object)
+
+public void fillInNotifierBundle(
+android.os.Bundle)
+
+public boolean getIsManualSelection()
+
+public java.lang.String getOperatorAlphaLong()
+
+public java.lang.String getOperatorAlphaShort()
+
+public java.lang.String getOperatorNumeric()
+
+public boolean getRoaming()
+
+public int getState()
+
+public int hashCode()
+
+public void setIsManualSelection(
+boolean)
+
+public void setOperatorName(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public void setRoaming(
+boolean)
+
+public void setState(
+int)
+
+public void setStateOff()
+
+public void setStateOutOfService()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class android.telephony.TelephonyManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CALL_STATE_IDLE
+
+public static final int CALL_STATE_OFFHOOK
+
+public static final int CALL_STATE_RINGING
+
+public static final int DATA_ACTIVITY_IN
+
+public static final int DATA_ACTIVITY_INOUT
+
+public static final int DATA_ACTIVITY_NONE
+
+public static final int DATA_ACTIVITY_OUT
+
+public static final int DATA_CONNECTED
+
+public static final int DATA_CONNECTING
+
+public static final int DATA_DISCONNECTED
+
+public static final int DATA_SUSPENDED
+
+public static final int NETWORK_TYPE_EDGE
+
+public static final int NETWORK_TYPE_GPRS
+
+public static final int NETWORK_TYPE_UMTS
+
+public static final int NETWORK_TYPE_UNKNOWN
+
+public static final int PHONE_TYPE_GSM
+
+public static final int PHONE_TYPE_NONE
+
+public static final int SIM_STATE_ABSENT
+
+public static final int SIM_STATE_NETWORK_LOCKED
+
+public static final int SIM_STATE_PIN_REQUIRED
+
+public static final int SIM_STATE_PUK_REQUIRED
+
+public static final int SIM_STATE_READY
+
+public static final int SIM_STATE_UNKNOWN
+
+private static final java.lang.String TAG
+
+private static android.telephony.TelephonyManager sInstance
+
+private android.content.Context mContext
+
+private com.android.internal.telephony.ITelephonyRegistry mRegistry
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public void <init>(
+android.content.Context)
+
+public static android.telephony.TelephonyManager getDefault()
+
+private com.android.internal.telephony.ITelephony getITelephony()
+
+private com.android.internal.telephony.IPhoneSubInfo getSubscriberInfo()
+
+public void disableLocationUpdates()
+
+public void enableLocationUpdates()
+
+public int getCallState()
+
+public android.telephony.CellLocation getCellLocation()
+
+public int getDataActivity()
+
+public int getDataState()
+
+public java.lang.String getDeviceId()
+
+public java.lang.String getDeviceSoftwareVersion()
+
+public java.lang.String getLine1AlphaTag()
+
+public java.lang.String getLine1Number()
+
+public java.lang.String getNetworkCountryIso()
+
+public java.lang.String getNetworkOperator()
+
+public java.lang.String getNetworkOperatorName()
+
+public int getNetworkType()
+
+public int getPhoneType()
+
+public java.lang.String getSimCountryIso()
+
+public java.lang.String getSimOperator()
+
+public java.lang.String getSimOperatorName()
+
+public java.lang.String getSimSerialNumber()
+
+public int getSimState()
+
+public java.lang.String getSubscriberId()
+
+public java.lang.String getVoiceMailAlphaTag()
+
+public java.lang.String getVoiceMailNumber()
+
+public boolean isNetworkRoaming()
+
+public void listen(
+android.telephony.PhoneStateListener
+int)
+
+________________CLASS________________
+
+
+public class android.telephony.gsm.GsmCellLocation extends android.telephony.CellLocation
+
+----------------FIELDS----------------
+
+private int mCid
+
+private int mLac
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+android.os.Bundle)
+
+private static boolean equalsHandlesNulls(
+java.lang.Object
+java.lang.Object)
+
+public boolean equals(
+java.lang.Object)
+
+public void fillInNotifierBundle(
+android.os.Bundle)
+
+public int getCid()
+
+public int getLac()
+
+public int hashCode()
+
+public void setLacAndCid(
+int
+int)
+
+public void setStateInvalid()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+ class android.telephony.gsm.SmsAddress extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int OFFSET_ADDRESS_LENGTH
+
+static final int OFFSET_ADDRESS_VALUE
+
+static final int OFFSET_TOA
+
+static final int TON_ALPHANUMERIC
+
+static final int TON_APPREVIATED
+
+static final int TON_INTERNATIONAL
+
+static final int TON_NATIONAL
+
+static final int TON_NETWORK
+
+static final int TON_SUBSCRIBER
+
+static final int TON_UNKNOWN
+
+ java.lang.String address
+
+ byte[] origBytes
+
+ int ton
+----------------METHODS----------------
+
+ void <init>(
+byte[]
+int
+int)
+
+public boolean couldBeEmailGateway()
+
+public java.lang.String getAddressString()
+
+public boolean isAlphanumeric()
+
+public boolean isCphsVoiceMessageClear()
+
+public boolean isCphsVoiceMessageIndicatorAddress()
+
+public boolean isCphsVoiceMessageSet()
+
+public boolean isNetworkSpecific()
+
+________________CLASS________________
+
+
+public final class android.telephony.gsm.SmsManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int RESULT_ERROR_GENERIC_FAILURE
+
+public static final int RESULT_ERROR_NO_SERVICE
+
+public static final int RESULT_ERROR_NULL_PDU
+
+public static final int RESULT_ERROR_RADIO_OFF
+
+public static final int STATUS_ON_SIM_FREE
+
+public static final int STATUS_ON_SIM_READ
+
+public static final int STATUS_ON_SIM_SENT
+
+public static final int STATUS_ON_SIM_UNREAD
+
+public static final int STATUS_ON_SIM_UNSENT
+
+private static android.telephony.gsm.SmsManager sInstance
+----------------METHODS----------------
+
+private void <init>()
+@dalvik.annotation.Signature (value =(Ljava/util/List;)Ljava/util/ArrayList<Landroid/telephony/gsm/SmsMessage;>; )
+private java.util.ArrayList createMessageListFromRawRecords(
+java.util.List)
+
+public static android.telephony.gsm.SmsManager getDefault()
+
+private void sendRawPdu(
+byte[]
+byte[]
+android.app.PendingIntent
+android.app.PendingIntent)
+
+public boolean copyMessageToSim(
+byte[]
+byte[]
+int)
+
+public boolean deleteMessageFromSim(
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/ArrayList<Ljava/lang/String;>; )
+public java.util.ArrayList divideMessage(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Landroid/telephony/gsm/SmsMessage;>; )
+public java.util.ArrayList getAllMessagesFromSim()
+
+public void sendDataMessage(
+java.lang.String
+java.lang.String
+short
+byte[]
+android.app.PendingIntent
+android.app.PendingIntent)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList<Ljava/lang/String;>;Ljava/util/ArrayList<Landroid/app/PendingIntent;>;Ljava/util/ArrayList<Landroid/app/PendingIntent;>;)V )
+public void sendMultipartTextMessage(
+java.lang.String
+java.lang.String
+java.util.ArrayList
+java.util.ArrayList
+java.util.ArrayList)
+
+public void sendTextMessage(
+java.lang.String
+java.lang.String
+java.lang.String
+android.app.PendingIntent
+android.app.PendingIntent)
+
+public boolean updateMessageOnSim(
+int
+int
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/telephony/gsm/SmsMessage; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =MessageClass )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/telephony/gsm/SmsMessage$MessageClass;>; )
+public final class android.telephony.gsm.SmsMessage$MessageClass extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.telephony.gsm.SmsMessage$MessageClass[] $VALUES
+
+public static final android.telephony.gsm.SmsMessage$MessageClass CLASS_0
+
+public static final android.telephony.gsm.SmsMessage$MessageClass CLASS_1
+
+public static final android.telephony.gsm.SmsMessage$MessageClass CLASS_2
+
+public static final android.telephony.gsm.SmsMessage$MessageClass CLASS_3
+
+public static final android.telephony.gsm.SmsMessage$MessageClass UNKNOWN
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.telephony.gsm.SmsMessage$MessageClass valueOf(
+java.lang.String)
+
+public static android.telephony.gsm.SmsMessage$MessageClass[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =PduParser )
+@dalvik.annotation.EnclosingClass (value =Landroid/telephony/gsm/SmsMessage; )
+ class android.telephony.gsm.SmsMessage$PduParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int cur
+
+ int mUserDataSeptetPadding
+
+ int mUserDataSize
+
+ byte[] pdu
+
+ byte[] userData
+
+ com.android.internal.telephony.gsm.SmsHeader userDataHeader
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+ void <init>(
+byte[])
+
+ int constructUserData(
+boolean
+boolean)
+
+ android.telephony.gsm.SmsAddress getAddress()
+
+ int getByte()
+
+ java.lang.String getSCAddress()
+
+ long getSCTimestampMillis()
+
+ byte[] getUserData()
+
+ java.lang.String getUserDataGSM7Bit(
+int)
+
+ com.android.internal.telephony.gsm.SmsHeader getUserDataHeader()
+
+ int getUserDataSeptetPadding()
+
+ java.lang.String getUserDataUCS2(
+int)
+
+ boolean moreDataPresent()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/telephony/gsm/SmsMessage; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =SubmitPdu )
+public class android.telephony.gsm.SmsMessage$SubmitPdu extends java.lang.Object
+
+----------------FIELDS----------------
+
+public byte[] encodedMessage
+
+public byte[] encodedScAddress
+----------------METHODS----------------
+
+public void <init>()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/telephony/gsm/SmsMessage$PduParser;Landroid/telephony/gsm/SmsMessage$SubmitPdu;Landroid/telephony/gsm/SmsMessage$MessageClass; )
+public class android.telephony.gsm.SmsMessage extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ENCODING_16BIT
+
+public static final int ENCODING_7BIT
+
+public static final int ENCODING_8BIT
+
+public static final int ENCODING_UNKNOWN
+
+static final java.lang.String LOG_TAG
+
+public static final int MAX_USER_DATA_BYTES
+
+private static final int MAX_USER_DATA_BYTES_WITH_HEADER
+
+public static final int MAX_USER_DATA_SEPTETS
+
+public static final int MAX_USER_DATA_SEPTETS_WITH_HEADER
+
+ boolean automaticDeletion
+
+ int dataCodingScheme
+
+ long dischargeTimeMillis
+
+ java.lang.String emailBody
+
+ java.lang.String emailFrom
+
+ boolean forSubmit
+
+ int indexOnSim
+
+ boolean isEmail
+
+private boolean isMwi
+
+ boolean isStatusReportMessage
+
+ byte[] mPdu
+
+ java.lang.String messageBody
+
+ android.telephony.gsm.SmsMessage$MessageClass messageClass
+
+public int messageRef
+
+ int mti
+
+private boolean mwiDontStore
+
+private boolean mwiSense
+
+ android.telephony.gsm.SmsAddress originatingAddress
+
+ int protocolIdentifier
+
+ java.lang.String pseudoSubject
+
+ android.telephony.gsm.SmsAddress recipientAddress
+
+ boolean replyPathPresent
+
+ java.lang.String scAddress
+
+ long scTimeMillis
+
+ int status
+
+ int statusOnSim
+
+ byte[] userData
+
+ com.android.internal.telephony.gsm.SmsHeader userDataHeader
+----------------METHODS----------------
+
+public void <init>()
+
+public static int[] calculateLength(
+java.lang.String
+boolean)
+
+public static android.telephony.gsm.SmsMessage createFromEfRecord(
+int
+byte[])
+
+public static android.telephony.gsm.SmsMessage createFromPdu(
+byte[])
+
+private void extractEmailAddressFromMessageBody()
+
+public static android.telephony.gsm.SmsMessage$SubmitPdu getSubmitPdu(
+java.lang.String
+java.lang.String
+java.lang.String
+boolean)
+
+public static android.telephony.gsm.SmsMessage$SubmitPdu getSubmitPdu(
+java.lang.String
+java.lang.String
+java.lang.String
+boolean
+byte[])
+
+public static android.telephony.gsm.SmsMessage$SubmitPdu getSubmitPdu(
+java.lang.String
+java.lang.String
+short
+byte[]
+boolean)
+
+private static java.io.ByteArrayOutputStream getSubmitPduHead(
+java.lang.String
+java.lang.String
+byte
+boolean
+android.telephony.gsm.SmsMessage$SubmitPdu)
+
+public static int getTPLayerLengthForPDU(
+java.lang.String)
+
+public static android.telephony.gsm.SmsMessage newFromCDS(
+java.lang.String)
+
+public static android.telephony.gsm.SmsMessage newFromCMT(
+java.lang.String[])
+
+static android.telephony.gsm.SmsMessage newFromCMTI(
+java.lang.String)
+
+private void parseMessageBody()
+
+private void parsePdu(
+byte[])
+
+private void parseSmsDeliver(
+android.telephony.gsm.SmsMessage$PduParser
+int)
+
+private void parseSmsStatusReport(
+android.telephony.gsm.SmsMessage$PduParser
+int)
+
+private void parseUserData(
+android.telephony.gsm.SmsMessage$PduParser
+boolean)
+
+public java.lang.String getDisplayMessageBody()
+
+public java.lang.String getDisplayOriginatingAddress()
+
+public java.lang.String getEmailBody()
+
+public java.lang.String getEmailFrom()
+
+public int getIndexOnSim()
+
+public java.lang.String getMessageBody()
+
+public android.telephony.gsm.SmsMessage$MessageClass getMessageClass()
+
+public java.lang.String getOriginatingAddress()
+
+public byte[] getPdu()
+
+public int getProtocolIdentifier()
+
+public java.lang.String getPseudoSubject()
+
+public java.lang.String getServiceCenterAddress()
+
+public int getStatus()
+
+public int getStatusOnSim()
+
+public long getTimestampMillis()
+
+public byte[] getUserData()
+
+public com.android.internal.telephony.gsm.SmsHeader getUserDataHeader()
+
+public boolean isCphsMwiMessage()
+
+public boolean isEmail()
+
+public boolean isMWIClearMessage()
+
+public boolean isMWISetMessage()
+
+public boolean isMwiDontStore()
+
+public boolean isReplace()
+
+public boolean isReplyPathPresent()
+
+public boolean isStatusReportMessage()
+
+________________CLASS________________
+
+
+public class android.test.AndroidTestCase extends junit.framework.TestCase
+
+----------------FIELDS----------------
+
+protected android.content.Context mContext
+----------------METHODS----------------
+
+public void <init>()
+
+public android.content.Context getContext()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)V )
+protected void scrubClass(
+java.lang.Class)
+
+public void setContext(
+android.content.Context)
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+protected void setUp()
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+protected void tearDown()
+
+public void testAndroidTestCaseSetupProperly()
+
+________________CLASS________________
+
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!METHOD )
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+@dalvik.annotation.AnnotationDefault (value =Landroid/test/FlakyTest;:[tolerance =1] )
+public abstract interface class android.test.FlakyTest extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int tolerance()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.test.InstrumentationTestCase$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.test.InstrumentationTestCase this$0
+
+final java.lang.Throwable[] val$exceptions
+
+final java.lang.reflect.Method val$testMethod
+
+final int val$tolerance
+----------------METHODS----------------
+
+ void <init>(
+android.test.InstrumentationTestCase
+java.lang.reflect.Method
+int
+java.lang.Throwable[])
+
+public void run()
+
+________________CLASS________________
+
+
+public class android.test.InstrumentationTestCase extends junit.framework.TestCase
+
+----------------FIELDS----------------
+
+private android.app.Instrumentation mInstrumentation
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+static void access$000(
+android.test.InstrumentationTestCase
+java.lang.reflect.Method
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+private void runMethod(
+java.lang.reflect.Method
+int)
+
+public android.app.Instrumentation getInstrumentation()
+
+public void injectInsrumentation(
+android.app.Instrumentation)
+@dalvik.annotation.Signature (value =<T:Landroid/app/Activity;>(Ljava/lang/String;Ljava/lang/Class<TT;>;Landroid/os/Bundle;)TT; )
+public final android.app.Activity launchActivity(
+java.lang.String
+java.lang.Class
+android.os.Bundle)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void runTest()
+
+public void sendKeys(
+java.lang.String)
+
+public transient void sendKeys(
+int[])
+
+public transient void sendRepeatedKeys(
+int[])
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+protected void tearDown()
+
+________________CLASS________________
+
+
+public class android.test.InstrumentationTestSuite extends junit.framework.TestSuite
+
+----------------FIELDS----------------
+
+private final android.app.Instrumentation mInstrumentation
+----------------METHODS----------------
+
+public void <init>(
+android.app.Instrumentation)
+
+public void <init>(
+java.lang.Class
+android.app.Instrumentation)
+
+public void <init>(
+java.lang.String
+android.app.Instrumentation)
+
+public void addTestSuite(
+java.lang.Class)
+
+public void runTest(
+junit.framework.Test
+junit.framework.TestResult)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/test/PerformanceTestCase; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Intermediates )
+public abstract interface class android.test.PerformanceTestCase$Intermediates extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void addIntermediate(
+java.lang.String)
+
+public abstract void addIntermediate(
+java.lang.String
+long)
+
+public abstract void finishTiming(
+boolean)
+
+public abstract void setInternalIterations(
+int)
+
+public abstract void startTiming(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/test/PerformanceTestCase$Intermediates; )
+public abstract interface class android.test.PerformanceTestCase extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean isPerformanceOnly()
+
+public abstract int startPerformance(
+android.test.PerformanceTestCase$Intermediates)
+
+________________CLASS________________
+
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!METHOD )
+public abstract interface class android.test.UiThreadTest extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!METHODLjava/lang/annotation/ElementType;!TYPE )
+public abstract interface class android.test.suitebuilder.annotation.Smoke extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!METHODLjava/lang/annotation/ElementType;!TYPE )
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+public abstract interface class android.test.suitebuilder.annotation.Suppress extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/AlteredCharSequence; )
+ class android.text.AlteredCharSequence$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class android.text.GetChars extends java.lang.Object implements java.lang.CharSequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void getChars(
+int
+int
+char[]
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/AlteredCharSequence$1;Landroid/text/AlteredCharSequence$AlteredSpanned; )
+public class android.text.AlteredCharSequence extends java.lang.Object implements java.lang.CharSequence, android.text.GetChars
+
+----------------FIELDS----------------
+
+private char[] mChars
+
+private int mEnd
+
+private java.lang.CharSequence mSource
+
+private int mStart
+----------------METHODS----------------
+
+private void <init>(
+java.lang.CharSequence
+char[]
+int
+int)
+
+ void <init>(
+java.lang.CharSequence
+char[]
+int
+int
+android.text.AlteredCharSequence$1)
+
+public static android.text.AlteredCharSequence make(
+java.lang.CharSequence
+char[]
+int
+int)
+
+public char charAt(
+int)
+
+public void getChars(
+int
+int
+char[]
+int)
+
+public int length()
+
+public java.lang.CharSequence subSequence(
+int
+int)
+
+public java.lang.String toString()
+
+ void update(
+char[]
+int
+int)
+
+________________CLASS________________
+
+
+public abstract interface class android.text.Spanned extends java.lang.Object implements java.lang.CharSequence
+
+----------------FIELDS----------------
+
+public static final int SPAN_EXCLUSIVE_EXCLUSIVE
+
+public static final int SPAN_EXCLUSIVE_INCLUSIVE
+
+public static final int SPAN_INCLUSIVE_EXCLUSIVE
+
+public static final int SPAN_INCLUSIVE_INCLUSIVE
+
+public static final int SPAN_MARK_MARK
+
+public static final int SPAN_MARK_POINT
+
+public static final int SPAN_PARAGRAPH
+
+public static final int SPAN_POINT_MARK
+
+public static final int SPAN_POINT_POINT
+
+public static final int SPAN_PRIORITY
+
+public static final int SPAN_PRIORITY_SHIFT
+
+public static final int SPAN_USER
+
+public static final int SPAN_USER_SHIFT
+----------------METHODS----------------
+
+public abstract int getSpanEnd(
+java.lang.Object)
+
+public abstract int getSpanFlags(
+java.lang.Object)
+
+public abstract int getSpanStart(
+java.lang.Object)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(IILjava/lang/Class<TT;>;)[TT; )
+public abstract java.lang.Object[] getSpans(
+int
+int
+java.lang.Class)
+
+public abstract int nextSpanTransition(
+int
+int
+java.lang.Class)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =AlteredSpanned )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/AlteredCharSequence; )
+ class android.text.AlteredCharSequence$AlteredSpanned extends android.text.AlteredCharSequence implements android.text.Spanned
+
+----------------FIELDS----------------
+
+private android.text.Spanned mSpanned
+----------------METHODS----------------
+
+private void <init>(
+java.lang.CharSequence
+char[]
+int
+int)
+
+ void <init>(
+java.lang.CharSequence
+char[]
+int
+int
+android.text.AlteredCharSequence$1)
+
+public int getSpanEnd(
+java.lang.Object)
+
+public int getSpanFlags(
+java.lang.Object)
+
+public int getSpanStart(
+java.lang.Object)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(IILjava/lang/Class<TT;>;)[TT; )
+public java.lang.Object[] getSpans(
+int
+int
+java.lang.Class)
+
+public int nextSpanTransition(
+int
+int
+java.lang.Class)
+
+________________CLASS________________
+
+
+public class android.text.AndroidCharacter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static native void getDirectionalities(
+char[]
+byte[]
+int)
+
+public static native char getMirror(
+char)
+
+public static native boolean mirror(
+char[]
+int
+int)
+
+________________CLASS________________
+
+
+public class android.text.Annotation extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.String mKey
+
+private java.lang.String mValue
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getKey()
+
+public java.lang.String getValue()
+
+________________CLASS________________
+
+
+public class android.text.AutoText extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int DEFAULT
+
+private static final int INCREMENT
+
+private static final int RIGHT
+
+private static final int TRIE_C
+
+private static final int TRIE_CHILD
+
+private static final int TRIE_NEXT
+
+private static final char TRIE_NULL
+
+private static final int TRIE_OFF
+
+private static final int TRIE_ROOT
+
+private static final int TRIE_SIZEOF
+
+private static android.text.AutoText sInstance
+
+private static java.lang.Object sLock
+
+private java.util.Locale mLocale
+
+private java.lang.String mText
+
+private char[] mTrie
+
+private char mTrieUsed
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+android.content.res.Resources)
+
+private void add(
+java.lang.String
+char)
+
+public static java.lang.String get(
+java.lang.CharSequence
+int
+int
+android.view.View)
+
+private void init(
+android.content.res.Resources)
+
+private java.lang.String lookup(
+java.lang.CharSequence
+int
+int)
+
+private char newTrieNode()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/BoringLayout; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Metrics )
+public class android.text.BoringLayout$Metrics extends android.graphics.Paint$FontMetricsInt
+
+----------------FIELDS----------------
+
+public int width
+----------------METHODS----------------
+
+public void <init>()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/Layout$Alignment;Landroid/text/Layout$SpannedEllipsizer;Landroid/text/Layout$Ellipsizer;Landroid/text/Layout$Directions; )
+public abstract class android.text.Layout extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final android.text.Layout$Directions DIRS_ALL_LEFT_TO_RIGHT
+
+static final android.text.Layout$Directions DIRS_ALL_RIGHT_TO_LEFT
+
+public static final int DIR_LEFT_TO_RIGHT
+
+public static final int DIR_RIGHT_TO_LEFT
+
+private static final int TAB_INCREMENT
+
+private static android.graphics.Rect sTempRect
+
+private android.text.Layout$Alignment mAlignment
+
+private android.text.TextPaint mPaint
+
+private float mSpacingAdd
+
+private float mSpacingMult
+
+private boolean mSpannedText
+
+private java.lang.CharSequence mText
+
+private int mWidth
+
+ android.text.TextPaint mWorkPaint
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.lang.CharSequence
+android.text.TextPaint
+int
+android.text.Layout$Alignment
+float
+float)
+
+static void access$100(
+android.text.Layout
+int
+int
+int
+char[]
+int)
+
+private void addSelection(
+int
+int
+int
+int
+int
+android.graphics.Path)
+
+private static void drawText(
+android.graphics.Canvas
+java.lang.CharSequence
+int
+int
+int
+android.text.Layout$Directions
+float
+int
+int
+int
+android.text.TextPaint
+android.text.TextPaint
+boolean
+java.lang.Object[])
+
+private void ellipsize(
+int
+int
+int
+char[]
+int)
+
+public static float getDesiredWidth(
+java.lang.CharSequence
+int
+int
+android.text.TextPaint)
+
+public static float getDesiredWidth(
+java.lang.CharSequence
+android.text.TextPaint)
+
+private float getHorizontal(
+int
+boolean
+boolean)
+
+private float getHorizontal(
+int
+boolean
+boolean
+int)
+
+private float getLineMax(
+int
+java.lang.Object[]
+boolean)
+
+private int getLineVisibleEnd(
+int
+int
+int)
+
+private int getOffsetAtStartOf(
+int)
+
+private static float measureText(
+android.text.TextPaint
+android.text.TextPaint
+java.lang.CharSequence
+int
+int
+int
+int
+android.text.Layout$Directions
+boolean
+boolean
+boolean
+java.lang.Object[])
+
+static float measureText(
+android.text.TextPaint
+android.text.TextPaint
+java.lang.CharSequence
+int
+int
+android.graphics.Paint$FontMetricsInt
+boolean
+java.lang.Object[])
+
+static float nextTab(
+java.lang.CharSequence
+int
+int
+float
+java.lang.Object[])
+
+public void draw(
+android.graphics.Canvas)
+
+public void draw(
+android.graphics.Canvas
+android.graphics.Path
+android.graphics.Paint
+int)
+
+public final android.text.Layout$Alignment getAlignment()
+
+public abstract int getBottomPadding()
+
+public void getCursorPath(
+int
+android.graphics.Path
+java.lang.CharSequence)
+
+public abstract int getEllipsisCount(
+int)
+
+public abstract int getEllipsisStart(
+int)
+
+public int getEllipsizedWidth()
+
+public int getHeight()
+
+public final int getLineAscent(
+int)
+
+public final int getLineBaseline(
+int)
+
+public final int getLineBottom(
+int)
+
+public int getLineBounds(
+int
+android.graphics.Rect)
+
+public abstract boolean getLineContainsTab(
+int)
+
+public abstract int getLineCount()
+
+public abstract int getLineDescent(
+int)
+
+public abstract android.text.Layout$Directions getLineDirections(
+int)
+
+public final int getLineEnd(
+int)
+
+public int getLineForOffset(
+int)
+
+public int getLineForVertical(
+int)
+
+public float getLineLeft(
+int)
+
+public float getLineMax(
+int)
+
+public float getLineRight(
+int)
+
+public abstract int getLineStart(
+int)
+
+public abstract int getLineTop(
+int)
+
+public int getLineVisibleEnd(
+int)
+
+public float getLineWidth(
+int)
+
+public int getOffsetForHorizontal(
+int
+float)
+
+public int getOffsetToLeftOf(
+int)
+
+public int getOffsetToRightOf(
+int)
+
+public final android.text.TextPaint getPaint()
+
+public final android.text.Layout$Alignment getParagraphAlignment(
+int)
+
+public abstract int getParagraphDirection(
+int)
+
+public final int getParagraphLeft(
+int)
+
+public final int getParagraphRight(
+int)
+
+public float getPrimaryHorizontal(
+int)
+
+public float getSecondaryHorizontal(
+int)
+
+public void getSelectionPath(
+int
+int
+android.graphics.Path)
+
+public final float getSpacingAdd()
+
+public final float getSpacingMultiplier()
+
+public final java.lang.CharSequence getText()
+
+public abstract int getTopPadding()
+
+public final int getWidth()
+
+public final void increaseWidthTo(
+int)
+
+protected final boolean isSpanned()
+
+ void replaceWith(
+java.lang.CharSequence
+android.text.TextPaint
+int
+android.text.Layout$Alignment
+float
+float)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/TextUtils; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =EllipsizeCallback )
+public abstract interface class android.text.TextUtils$EllipsizeCallback extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void ellipsized(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/BoringLayout$Metrics; )
+public class android.text.BoringLayout extends android.text.Layout implements android.text.TextUtils$EllipsizeCallback
+
+----------------FIELDS----------------
+
+private static final char FIRST_RIGHT_TO_LEFT
+
+private static final android.text.TextPaint sTemp
+
+ int mBottom
+
+private int mBottomPadding
+
+ int mDesc
+
+private java.lang.String mDirect
+
+private int mEllipsizedCount
+
+private int mEllipsizedStart
+
+private int mEllipsizedWidth
+
+private float mMax
+
+private android.graphics.Paint mPaint
+
+private int mTopPadding
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.CharSequence
+android.text.TextPaint
+int
+android.text.Layout$Alignment
+float
+float
+android.text.BoringLayout$Metrics
+boolean)
+
+public void <init>(
+java.lang.CharSequence
+android.text.TextPaint
+int
+android.text.Layout$Alignment
+float
+float
+android.text.BoringLayout$Metrics
+boolean
+android.text.TextUtils$TruncateAt
+int)
+
+public static android.text.BoringLayout$Metrics isBoring(
+java.lang.CharSequence
+android.text.TextPaint)
+
+public static android.text.BoringLayout$Metrics isBoring(
+java.lang.CharSequence
+android.text.TextPaint
+android.text.BoringLayout$Metrics)
+
+public static android.text.BoringLayout make(
+java.lang.CharSequence
+android.text.TextPaint
+int
+android.text.Layout$Alignment
+float
+float
+android.text.BoringLayout$Metrics
+boolean)
+
+public static android.text.BoringLayout make(
+java.lang.CharSequence
+android.text.TextPaint
+int
+android.text.Layout$Alignment
+float
+float
+android.text.BoringLayout$Metrics
+boolean
+android.text.TextUtils$TruncateAt
+int)
+
+public void draw(
+android.graphics.Canvas
+android.graphics.Path
+android.graphics.Paint
+int)
+
+public void ellipsized(
+int
+int)
+
+public int getBottomPadding()
+
+public int getEllipsisCount(
+int)
+
+public int getEllipsisStart(
+int)
+
+public int getEllipsizedWidth()
+
+public int getHeight()
+
+public boolean getLineContainsTab(
+int)
+
+public int getLineCount()
+
+public int getLineDescent(
+int)
+
+public final android.text.Layout$Directions getLineDirections(
+int)
+
+public float getLineMax(
+int)
+
+public int getLineStart(
+int)
+
+public int getLineTop(
+int)
+
+public int getParagraphDirection(
+int)
+
+public int getTopPadding()
+
+ void init(
+java.lang.CharSequence
+android.text.TextPaint
+int
+android.text.Layout$Alignment
+float
+float
+android.text.BoringLayout$Metrics
+boolean
+boolean)
+
+public android.text.BoringLayout replaceOrMake(
+java.lang.CharSequence
+android.text.TextPaint
+int
+android.text.Layout$Alignment
+float
+float
+android.text.BoringLayout$Metrics
+boolean)
+
+public android.text.BoringLayout replaceOrMake(
+java.lang.CharSequence
+android.text.TextPaint
+int
+android.text.Layout$Alignment
+float
+float
+android.text.BoringLayout$Metrics
+boolean
+android.text.TextUtils$TruncateAt
+int)
+
+________________CLASS________________
+
+
+public class android.text.ClipboardManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static android.text.IClipboard sService
+
+private android.content.Context mContext
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.os.Handler)
+
+private static android.text.IClipboard getService()
+
+public java.lang.CharSequence getText()
+
+public boolean hasText()
+
+public void setText(
+java.lang.CharSequence)
+
+________________CLASS________________
+
+
+public abstract interface class android.text.SpanWatcher extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onSpanAdded(
+android.text.Spannable
+java.lang.Object
+int
+int)
+
+public abstract void onSpanChanged(
+android.text.Spannable
+java.lang.Object
+int
+int
+int
+int)
+
+public abstract void onSpanRemoved(
+android.text.Spannable
+java.lang.Object
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/DynamicLayout; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =ChangeWatcher )
+ class android.text.DynamicLayout$ChangeWatcher extends java.lang.Object implements android.text.TextWatcher, android.text.SpanWatcher
+
+----------------FIELDS----------------
+
+private java.lang.ref.WeakReference mLayout
+----------------METHODS----------------
+
+public void <init>(
+android.text.DynamicLayout)
+
+private void reflow(
+java.lang.CharSequence
+int
+int
+int)
+
+public void afterTextChanged(
+android.text.Editable)
+
+public void beforeTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+public void onSpanAdded(
+android.text.Spannable
+java.lang.Object
+int
+int)
+
+public void onSpanChanged(
+android.text.Spannable
+java.lang.Object
+int
+int
+int
+int)
+
+public void onSpanRemoved(
+android.text.Spannable
+java.lang.Object
+int
+int)
+
+public void onTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/DynamicLayout$ChangeWatcher; )
+public class android.text.DynamicLayout extends android.text.Layout
+
+----------------FIELDS----------------
+
+private static final int COLUMNS_ELLIPSIZE
+
+private static final int COLUMNS_NORMAL
+
+private static final int DESCENT
+
+private static final int DIR
+
+private static final int DIR_MASK
+
+private static final int DIR_SHIFT
+
+private static final int ELLIPSIS_COUNT
+
+private static final int ELLIPSIS_START
+
+private static final int ELLIPSIS_UNDEFINED
+
+private static final int PRIORITY
+
+private static final int START
+
+private static final int START_MASK
+
+private static final int TAB
+
+private static final int TAB_MASK
+
+private static final int TOP
+
+private static java.lang.Object sLock
+
+private static android.text.StaticLayout sStaticLayout
+
+private java.lang.CharSequence mBase
+
+private int mBottomPadding
+
+private java.lang.CharSequence mDisplay
+
+private boolean mEllipsize
+
+private android.text.TextUtils$TruncateAt mEllipsizeAt
+
+private int mEllipsizedWidth
+
+private boolean mIncludePad
+
+private android.text.PackedIntVector mInts
+@dalvik.annotation.Signature (value =Landroid/text/PackedObjectVector<Landroid/text/Layout$Directions;>; )
+private android.text.PackedObjectVector mObjects
+
+private int mTopPadding
+
+private android.text.DynamicLayout$ChangeWatcher mWatcher
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.CharSequence
+android.text.TextPaint
+int
+android.text.Layout$Alignment
+float
+float
+boolean)
+
+public void <init>(
+java.lang.CharSequence
+java.lang.CharSequence
+android.text.TextPaint
+int
+android.text.Layout$Alignment
+float
+float
+boolean)
+
+public void <init>(
+java.lang.CharSequence
+java.lang.CharSequence
+android.text.TextPaint
+int
+android.text.Layout$Alignment
+float
+float
+boolean
+android.text.TextUtils$TruncateAt
+int)
+
+static void access$000(
+android.text.DynamicLayout
+java.lang.CharSequence
+int
+int
+int)
+
+private void dump(
+boolean)
+
+private void reflow(
+java.lang.CharSequence
+int
+int
+int)
+
+public int getBottomPadding()
+
+public int getEllipsisCount(
+int)
+
+public int getEllipsisStart(
+int)
+
+public int getEllipsizedWidth()
+
+public boolean getLineContainsTab(
+int)
+
+public int getLineCount()
+
+public int getLineDescent(
+int)
+
+public final android.text.Layout$Directions getLineDirections(
+int)
+
+public int getLineStart(
+int)
+
+public int getLineTop(
+int)
+
+public int getParagraphDirection(
+int)
+
+public int getTopPadding()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Factory )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/Editable; )
+public class android.text.Editable$Factory extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static android.text.Editable$Factory sInstance
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.text.Editable$Factory getInstance()
+
+public android.text.Editable newEditable(
+java.lang.CharSequence)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/Spannable$Factory; )
+public abstract interface class android.text.Spannable extends java.lang.Object implements android.text.Spanned
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void removeSpan(
+java.lang.Object)
+
+public abstract void setSpan(
+java.lang.Object
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/Editable$Factory; )
+public abstract interface class android.text.Editable extends java.lang.Object implements java.lang.CharSequence, android.text.GetChars, android.text.Spannable, java.lang.Appendable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.text.Editable append(
+char)
+
+public abstract android.text.Editable append(
+java.lang.CharSequence)
+
+public abstract android.text.Editable append(
+java.lang.CharSequence
+int
+int)
+
+public abstract void clear()
+
+public abstract void clearSpans()
+
+public abstract android.text.Editable delete(
+int
+int)
+
+public abstract android.text.InputFilter[] getFilters()
+
+public abstract android.text.Editable insert(
+int
+java.lang.CharSequence)
+
+public abstract android.text.Editable insert(
+int
+java.lang.CharSequence
+int
+int)
+
+public abstract android.text.Editable replace(
+int
+int
+java.lang.CharSequence)
+
+public abstract android.text.Editable replace(
+int
+int
+java.lang.CharSequence
+int
+int)
+
+public abstract void setFilters(
+android.text.InputFilter[])
+
+________________CLASS________________
+
+
+public abstract interface class android.text.GraphicsOperations extends java.lang.Object implements java.lang.CharSequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void drawText(
+android.graphics.Canvas
+int
+int
+float
+float
+android.graphics.Paint)
+
+public abstract int getTextWidths(
+int
+int
+float[]
+android.graphics.Paint)
+
+public abstract float measureText(
+int
+int
+android.graphics.Paint)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =HtmlParser )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/Html; )
+ class android.text.Html$HtmlParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final org.ccil.cowan.tagsoup.HTMLSchema schema
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+static org.ccil.cowan.tagsoup.HTMLSchema access$000()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/Html; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ImageGetter )
+public abstract interface class android.text.Html$ImageGetter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.graphics.drawable.Drawable getDrawable(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/Html; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =TagHandler )
+public abstract interface class android.text.Html$TagHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void handleTag(
+boolean
+java.lang.String
+android.text.Editable
+org.xml.sax.XMLReader)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/Html$HtmlParser;Landroid/text/Html$TagHandler;Landroid/text/Html$ImageGetter; )
+public class android.text.Html extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static android.text.Spanned fromHtml(
+java.lang.String)
+
+public static android.text.Spanned fromHtml(
+java.lang.String
+android.text.Html$ImageGetter
+android.text.Html$TagHandler)
+
+public static java.lang.String toHtml(
+android.text.Spanned)
+
+private static void withinBlockquote(
+java.lang.StringBuilder
+android.text.Spanned
+int
+int)
+
+private static void withinParagraph(
+java.lang.StringBuilder
+android.text.Spanned
+int
+int
+int
+boolean)
+
+private static void withinStyle(
+java.lang.StringBuilder
+android.text.Spanned
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/HtmlToSpannedConverter; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.text.HtmlToSpannedConverter$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/HtmlToSpannedConverter; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Big )
+ class android.text.HtmlToSpannedConverter$Big extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.text.HtmlToSpannedConverter$1)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/HtmlToSpannedConverter; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Blockquote )
+ class android.text.HtmlToSpannedConverter$Blockquote extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.text.HtmlToSpannedConverter$1)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/HtmlToSpannedConverter; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Bold )
+ class android.text.HtmlToSpannedConverter$Bold extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.text.HtmlToSpannedConverter$1)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Font )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/HtmlToSpannedConverter; )
+ class android.text.HtmlToSpannedConverter$Font extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String mColor
+
+public java.lang.String mFace
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/HtmlToSpannedConverter; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Header )
+ class android.text.HtmlToSpannedConverter$Header extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int mLevel
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+static int access$900(
+android.text.HtmlToSpannedConverter$Header)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/HtmlToSpannedConverter; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Href )
+ class android.text.HtmlToSpannedConverter$Href extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String mHref
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/HtmlToSpannedConverter; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Italic )
+ class android.text.HtmlToSpannedConverter$Italic extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.text.HtmlToSpannedConverter$1)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/HtmlToSpannedConverter; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Monospace )
+ class android.text.HtmlToSpannedConverter$Monospace extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.text.HtmlToSpannedConverter$1)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Small )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/HtmlToSpannedConverter; )
+ class android.text.HtmlToSpannedConverter$Small extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.text.HtmlToSpannedConverter$1)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Sub )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/HtmlToSpannedConverter; )
+ class android.text.HtmlToSpannedConverter$Sub extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.text.HtmlToSpannedConverter$1)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/HtmlToSpannedConverter; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Super )
+ class android.text.HtmlToSpannedConverter$Super extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.text.HtmlToSpannedConverter$1)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Underline )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/HtmlToSpannedConverter; )
+ class android.text.HtmlToSpannedConverter$Underline extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.text.HtmlToSpannedConverter$1)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/HtmlToSpannedConverter$1;Landroid/text/HtmlToSpannedConverter$Header;Landroid/text/HtmlToSpannedConverter$Href;Landroid/text/HtmlToSpannedConverter$Font;Landroid/text/HtmlToSpannedConverter$Sub;Landroid/text/HtmlToSpannedConverter$Super;Landroid/text/HtmlToSpannedConverter$Blockquote;Landroid/text/HtmlToSpannedConverter$Monospace;Landroid/text/HtmlToSpannedConverter$Small;Landroid/text/HtmlToSpannedConverter$Big;Landroid/text/HtmlToSpannedConverter$Underline;Landroid/text/HtmlToSpannedConverter$Italic;Landroid/text/HtmlToSpannedConverter$Bold; )
+ class android.text.HtmlToSpannedConverter extends java.lang.Object implements org.xml.sax.ContentHandler
+
+----------------FIELDS----------------
+
+private static final float[] HEADER_SIZES
+
+private android.text.Html$ImageGetter mImageGetter
+
+private org.xml.sax.XMLReader mReader
+
+private java.lang.String mSource
+
+private android.text.SpannableStringBuilder mSpannableStringBuilder
+
+private android.text.Html$TagHandler mTagHandler
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+android.text.Html$ImageGetter
+android.text.Html$TagHandler
+org.ccil.cowan.tagsoup.Parser)
+
+private static void end(
+android.text.SpannableStringBuilder
+java.lang.Class
+java.lang.Object)
+
+private static void endA(
+android.text.SpannableStringBuilder)
+
+private static void endFont(
+android.text.SpannableStringBuilder)
+
+private static void endHeader(
+android.text.SpannableStringBuilder)
+
+private static java.lang.Object getLast(
+android.text.Spanned
+java.lang.Class)
+
+private static void handleBr(
+android.text.SpannableStringBuilder)
+
+private void handleEndTag(
+java.lang.String)
+
+private static void handleP(
+android.text.SpannableStringBuilder)
+
+private void handleStartTag(
+java.lang.String
+org.xml.sax.Attributes)
+
+private static void start(
+android.text.SpannableStringBuilder
+java.lang.Object)
+
+private static void startA(
+android.text.SpannableStringBuilder
+org.xml.sax.Attributes)
+
+private static void startFont(
+android.text.SpannableStringBuilder
+org.xml.sax.Attributes)
+
+private static void startImg(
+android.text.SpannableStringBuilder
+org.xml.sax.Attributes
+android.text.Html$ImageGetter)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void characters(
+char[]
+int
+int)
+
+public android.text.Spanned convert()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endElement(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endPrefixMapping(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void ignorableWhitespace(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void processingInstruction(
+java.lang.String
+java.lang.String)
+
+public void setDocumentLocator(
+org.xml.sax.Locator)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void skippedEntity(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startElement(
+java.lang.String
+java.lang.String
+java.lang.String
+org.xml.sax.Attributes)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startPrefixMapping(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/IClipboard$Stub; )
+public abstract interface class android.text.IClipboard extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.CharSequence getClipboardText()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean hasClipboardText()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setClipboardText(
+java.lang.CharSequence)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/IClipboard$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class android.text.IClipboard$Stub$Proxy extends java.lang.Object implements android.text.IClipboard
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.CharSequence getClipboardText()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean hasClipboardText()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setClipboardText(
+java.lang.CharSequence)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/IClipboard$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/IClipboard; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class android.text.IClipboard$Stub extends android.os.Binder implements android.text.IClipboard
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_getClipboardText
+
+static final int TRANSACTION_hasClipboardText
+
+static final int TRANSACTION_setClipboardText
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.text.IClipboard asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/InputFilter$LengthFilter;Landroid/text/InputFilter$AllCaps; )
+public abstract interface class android.text.InputFilter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.CharSequence filter(
+java.lang.CharSequence
+int
+int
+android.text.Spanned
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/InputFilter; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =AllCaps )
+public class android.text.InputFilter$AllCaps extends java.lang.Object implements android.text.InputFilter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public java.lang.CharSequence filter(
+java.lang.CharSequence
+int
+int
+android.text.Spanned
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =LengthFilter )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/InputFilter; )
+public class android.text.InputFilter$LengthFilter extends java.lang.Object implements android.text.InputFilter
+
+----------------FIELDS----------------
+
+private int mMax
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public java.lang.CharSequence filter(
+java.lang.CharSequence
+int
+int
+android.text.Spanned
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/text/Layout$Alignment;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Alignment )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/Layout; )
+public final class android.text.Layout$Alignment extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.text.Layout$Alignment[] $VALUES
+
+public static final android.text.Layout$Alignment ALIGN_CENTER
+
+public static final android.text.Layout$Alignment ALIGN_NORMAL
+
+public static final android.text.Layout$Alignment ALIGN_OPPOSITE
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.text.Layout$Alignment valueOf(
+java.lang.String)
+
+public static android.text.Layout$Alignment[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Directions )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/Layout; )
+public class android.text.Layout$Directions extends java.lang.Object
+
+----------------FIELDS----------------
+
+private short[] mDirections
+----------------METHODS----------------
+
+ void <init>(
+short[])
+
+static short[] access$000(
+android.text.Layout$Directions)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/Layout; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =Ellipsizer )
+ class android.text.Layout$Ellipsizer extends java.lang.Object implements java.lang.CharSequence, android.text.GetChars
+
+----------------FIELDS----------------
+
+ android.text.Layout mLayout
+
+ android.text.TextUtils$TruncateAt mMethod
+
+ java.lang.CharSequence mText
+
+ int mWidth
+----------------METHODS----------------
+
+public void <init>(
+java.lang.CharSequence)
+
+public char charAt(
+int)
+
+public void getChars(
+int
+int
+char[]
+int)
+
+public int length()
+
+public java.lang.CharSequence subSequence(
+int
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/Layout; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =SpannedEllipsizer )
+ class android.text.Layout$SpannedEllipsizer extends android.text.Layout$Ellipsizer implements android.text.Spanned
+
+----------------FIELDS----------------
+
+private android.text.Spanned mSpanned
+----------------METHODS----------------
+
+public void <init>(
+java.lang.CharSequence)
+
+public int getSpanEnd(
+java.lang.Object)
+
+public int getSpanFlags(
+java.lang.Object)
+
+public int getSpanStart(
+java.lang.Object)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(IILjava/lang/Class<TT;>;)[TT; )
+public java.lang.Object[] getSpans(
+int
+int
+java.lang.Class)
+
+public int nextSpanTransition(
+int
+int
+java.lang.Class)
+
+public java.lang.CharSequence subSequence(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/LoginFilter$PasswordFilterGMail;Landroid/text/LoginFilter$UsernameFilterGeneric;Landroid/text/LoginFilter$UsernameFilterGMail; )
+public abstract class android.text.LoginFilter extends java.lang.Object implements android.text.InputFilter
+
+----------------FIELDS----------------
+
+private boolean mAppendInvalid
+----------------METHODS----------------
+
+ void <init>()
+
+ void <init>(
+boolean)
+
+public java.lang.CharSequence filter(
+java.lang.CharSequence
+int
+int
+android.text.Spanned
+int
+int)
+
+public abstract boolean isAllowed(
+char)
+
+public void onInvalidCharacter(
+char)
+
+public void onStart()
+
+public void onStop()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/LoginFilter; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PasswordFilterGMail )
+public class android.text.LoginFilter$PasswordFilterGMail extends android.text.LoginFilter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+boolean)
+
+public boolean isAllowed(
+char)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =UsernameFilterGMail )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/LoginFilter; )
+public class android.text.LoginFilter$UsernameFilterGMail extends android.text.LoginFilter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+boolean)
+
+public boolean isAllowed(
+char)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =UsernameFilterGeneric )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/LoginFilter; )
+public class android.text.LoginFilter$UsernameFilterGeneric extends android.text.LoginFilter
+
+----------------FIELDS----------------
+
+private static final java.lang.String mAllowed
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+boolean)
+
+public boolean isAllowed(
+char)
+
+________________CLASS________________
+
+
+ class android.text.PackedIntVector extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int mColumns
+
+private int mRowGapLength
+
+private int mRowGapStart
+
+private int mRows
+
+private int[] mValueGap
+
+private int[] mValues
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+private final void growBuffer()
+
+private final void moveRowGapTo(
+int)
+
+private final void moveValueGapTo(
+int
+int)
+
+private void setValueInternal(
+int
+int
+int)
+
+public void adjustValuesBelow(
+int
+int
+int)
+
+public void deleteAt(
+int
+int)
+
+public int getValue(
+int
+int)
+
+public void insertAt(
+int
+int[])
+
+public void setValue(
+int
+int
+int)
+
+public int size()
+
+public int width()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object; )
+ class android.text.PackedObjectVector extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int mColumns
+
+private int mRowGapLength
+
+private int mRowGapStart
+
+private int mRows
+
+private java.lang.Object[] mValues
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+private void growBuffer()
+
+private void moveRowGapTo(
+int)
+
+public void deleteAt(
+int
+int)
+
+public void dump()
+@dalvik.annotation.Signature (value =(II)TE; )
+public java.lang.Object getValue(
+int
+int)
+@dalvik.annotation.Signature (value =(I[TE;)V )
+public void insertAt(
+int
+java.lang.Object[])
+@dalvik.annotation.Signature (value =(IITE;)V )
+public void setValue(
+int
+int
+java.lang.Object)
+
+public int size()
+
+public int width()
+
+________________CLASS________________
+
+
+public class android.text.Selection extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.Object SELECTION_END
+
+public static final java.lang.Object SELECTION_START
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+private static int chooseHorizontal(
+android.text.Layout
+int
+int
+int)
+
+public static boolean extendDown(
+android.text.Spannable
+android.text.Layout)
+
+public static boolean extendLeft(
+android.text.Spannable
+android.text.Layout)
+
+public static boolean extendRight(
+android.text.Spannable
+android.text.Layout)
+
+public static final void extendSelection(
+android.text.Spannable
+int)
+
+public static boolean extendToLeftEdge(
+android.text.Spannable
+android.text.Layout)
+
+public static boolean extendToRightEdge(
+android.text.Spannable
+android.text.Layout)
+
+public static boolean extendUp(
+android.text.Spannable
+android.text.Layout)
+
+private static int findEdge(
+android.text.Spannable
+android.text.Layout
+int)
+
+public static final int getSelectionEnd(
+java.lang.CharSequence)
+
+public static final int getSelectionStart(
+java.lang.CharSequence)
+
+public static boolean moveDown(
+android.text.Spannable
+android.text.Layout)
+
+public static boolean moveLeft(
+android.text.Spannable
+android.text.Layout)
+
+public static boolean moveRight(
+android.text.Spannable
+android.text.Layout)
+
+public static boolean moveToLeftEdge(
+android.text.Spannable
+android.text.Layout)
+
+public static boolean moveToRightEdge(
+android.text.Spannable
+android.text.Layout)
+
+public static boolean moveUp(
+android.text.Spannable
+android.text.Layout)
+
+public static final void removeSelection(
+android.text.Spannable)
+
+public static final void selectAll(
+android.text.Spannable)
+
+public static final void setSelection(
+android.text.Spannable
+int)
+
+public static void setSelection(
+android.text.Spannable
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Factory )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/Spannable; )
+public class android.text.Spannable$Factory extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static android.text.Spannable$Factory sInstance
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.text.Spannable$Factory getInstance()
+
+public android.text.Spannable newSpannable(
+java.lang.CharSequence)
+
+________________CLASS________________
+
+
+abstract class android.text.SpannableStringInternal extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int COLUMNS
+
+static final java.lang.Object[] EMPTY
+
+private static final int END
+
+private static final int FLAGS
+
+private static final int START
+
+private int mSpanCount
+
+private int[] mSpanData
+
+private java.lang.Object[] mSpans
+
+private java.lang.String mText
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+java.lang.CharSequence
+int
+int)
+
+private void checkRange(
+java.lang.String
+int
+int)
+
+private static java.lang.String region(
+int
+int)
+
+private void sendSpanAdded(
+java.lang.Object
+int
+int)
+
+private void sendSpanChanged(
+java.lang.Object
+int
+int
+int
+int)
+
+private void sendSpanRemoved(
+java.lang.Object
+int
+int)
+
+public final char charAt(
+int)
+
+public final void getChars(
+int
+int
+char[]
+int)
+
+public int getSpanEnd(
+java.lang.Object)
+
+public int getSpanFlags(
+java.lang.Object)
+
+public int getSpanStart(
+java.lang.Object)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(IILjava/lang/Class<TT;>;)[TT; )
+public java.lang.Object[] getSpans(
+int
+int
+java.lang.Class)
+
+public final int length()
+
+public int nextSpanTransition(
+int
+int
+java.lang.Class)
+
+ void removeSpan(
+java.lang.Object)
+
+ void setSpan(
+java.lang.Object
+int
+int
+int)
+
+public final java.lang.String toString()
+
+________________CLASS________________
+
+
+public class android.text.SpannableString extends android.text.SpannableStringInternal implements java.lang.CharSequence, android.text.GetChars, android.text.Spannable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.CharSequence)
+
+private void <init>(
+java.lang.CharSequence
+int
+int)
+
+public static android.text.SpannableString valueOf(
+java.lang.CharSequence)
+
+public volatile int getSpanEnd(
+java.lang.Object)
+
+public volatile int getSpanFlags(
+java.lang.Object)
+
+public volatile int getSpanStart(
+java.lang.Object)
+
+public volatile java.lang.Object[] getSpans(
+int
+int
+java.lang.Class)
+
+public volatile int nextSpanTransition(
+int
+int
+java.lang.Class)
+
+public void removeSpan(
+java.lang.Object)
+
+public void setSpan(
+java.lang.Object
+int
+int
+int)
+
+public final java.lang.CharSequence subSequence(
+int
+int)
+
+________________CLASS________________
+
+
+public class android.text.SpannableStringBuilder extends java.lang.Object implements java.lang.CharSequence, android.text.GetChars, android.text.Spannable, android.text.Editable, java.lang.Appendable, android.text.GraphicsOperations
+
+----------------FIELDS----------------
+
+private static final int END_MASK
+
+private static final int MARK
+
+private static final android.text.InputFilter[] NO_FILTERS
+
+private static final int PARAGRAPH
+
+private static final int POINT
+
+private static final int START_MASK
+
+private static final int START_SHIFT
+
+private android.text.InputFilter[] mFilters
+
+private int mGapLength
+
+private int mGapStart
+
+private int mSpanCount
+
+private int[] mSpanEnds
+
+private int[] mSpanFlags
+
+private int[] mSpanStarts
+
+private java.lang.Object[] mSpans
+
+private char[] mText
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+java.lang.CharSequence)
+
+public void <init>(
+java.lang.CharSequence
+int
+int)
+
+private int change(
+int
+int
+java.lang.CharSequence
+int
+int)
+
+private int change(
+boolean
+int
+int
+java.lang.CharSequence
+int
+int)
+
+private void checkRange(
+java.lang.String
+int
+int)
+
+private boolean isprint(
+char)
+
+private void moveGapTo(
+int)
+
+private static java.lang.String region(
+int
+int)
+
+private void resizeFor(
+int)
+
+private void sendSpanAdded(
+java.lang.Object
+int
+int)
+
+private void sendSpanChanged(
+java.lang.Object
+int
+int
+int
+int)
+
+private void sendSpanRemoved(
+java.lang.Object
+int
+int)
+
+private void sendTextChange(
+android.text.TextWatcher[]
+int
+int
+int)
+
+private void sendTextHasChanged(
+android.text.TextWatcher[])
+
+private android.text.TextWatcher[] sendTextWillChange(
+int
+int
+int)
+
+private void setSpan(
+boolean
+java.lang.Object
+int
+int
+int)
+
+public static android.text.SpannableStringBuilder valueOf(
+java.lang.CharSequence)
+
+public volatile android.text.Editable append(
+char)
+
+public volatile android.text.Editable append(
+java.lang.CharSequence)
+
+public volatile android.text.Editable append(
+java.lang.CharSequence
+int
+int)
+
+public android.text.SpannableStringBuilder append(
+char)
+
+public android.text.SpannableStringBuilder append(
+java.lang.CharSequence)
+
+public android.text.SpannableStringBuilder append(
+java.lang.CharSequence
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence
+int
+int)
+
+public char charAt(
+int)
+
+public void clear()
+
+public void clearSpans()
+
+public volatile android.text.Editable delete(
+int
+int)
+
+public android.text.SpannableStringBuilder delete(
+int
+int)
+
+public void drawText(
+android.graphics.Canvas
+int
+int
+float
+float
+android.graphics.Paint)
+
+public void getChars(
+int
+int
+char[]
+int)
+
+public android.text.InputFilter[] getFilters()
+
+public int getSpanEnd(
+java.lang.Object)
+
+public int getSpanFlags(
+java.lang.Object)
+
+public int getSpanStart(
+java.lang.Object)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(IILjava/lang/Class<TT;>;)[TT; )
+public java.lang.Object[] getSpans(
+int
+int
+java.lang.Class)
+
+public int getTextWidths(
+int
+int
+float[]
+android.graphics.Paint)
+
+public volatile android.text.Editable insert(
+int
+java.lang.CharSequence)
+
+public volatile android.text.Editable insert(
+int
+java.lang.CharSequence
+int
+int)
+
+public android.text.SpannableStringBuilder insert(
+int
+java.lang.CharSequence)
+
+public android.text.SpannableStringBuilder insert(
+int
+java.lang.CharSequence
+int
+int)
+
+public int length()
+
+public float measureText(
+int
+int
+android.graphics.Paint)
+
+public int nextSpanTransition(
+int
+int
+java.lang.Class)
+
+public void removeSpan(
+java.lang.Object)
+
+public volatile android.text.Editable replace(
+int
+int
+java.lang.CharSequence)
+
+public volatile android.text.Editable replace(
+int
+int
+java.lang.CharSequence
+int
+int)
+
+public android.text.SpannableStringBuilder replace(
+int
+int
+java.lang.CharSequence)
+
+public android.text.SpannableStringBuilder replace(
+int
+int
+java.lang.CharSequence
+int
+int)
+
+public void setFilters(
+android.text.InputFilter[])
+
+public void setSpan(
+java.lang.Object
+int
+int
+int)
+
+public java.lang.CharSequence subSequence(
+int
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public final class android.text.SpannedString extends android.text.SpannableStringInternal implements java.lang.CharSequence, android.text.GetChars, android.text.Spanned
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.CharSequence)
+
+private void <init>(
+java.lang.CharSequence
+int
+int)
+
+public static android.text.SpannedString valueOf(
+java.lang.CharSequence)
+
+public volatile int getSpanEnd(
+java.lang.Object)
+
+public volatile int getSpanFlags(
+java.lang.Object)
+
+public volatile int getSpanStart(
+java.lang.Object)
+
+public volatile java.lang.Object[] getSpans(
+int
+int
+java.lang.Class)
+
+public volatile int nextSpanTransition(
+int
+int
+java.lang.Class)
+
+public java.lang.CharSequence subSequence(
+int
+int)
+
+________________CLASS________________
+
+
+public class android.text.StaticLayout extends android.text.Layout
+
+----------------FIELDS----------------
+
+private static final int COLUMNS_ELLIPSIZE
+
+private static final int COLUMNS_NORMAL
+
+private static final int DESCENT
+
+private static final int DIR
+
+private static final int DIR_MASK
+
+private static final int DIR_SHIFT
+
+private static final int ELLIPSIS_COUNT
+
+private static final int ELLIPSIS_START
+
+private static final char FIRST_RIGHT_TO_LEFT
+
+private static final int START
+
+private static final int START_MASK
+
+private static final int TAB
+
+private static final int TAB_MASK
+
+private static final int TOP
+
+private int mBottomPadding
+
+private byte[] mChdirs
+
+private char[] mChs
+
+private int mColumns
+
+private int mEllipsizedWidth
+
+private android.graphics.Paint$FontMetricsInt mFontMetricsInt
+
+private int mLineCount
+
+private android.text.Layout$Directions[] mLineDirections
+
+private int[] mLines
+
+private int mTopPadding
+
+private float[] mWidths
+----------------METHODS----------------
+
+public void <init>(
+java.lang.CharSequence
+int
+int
+android.text.TextPaint
+int
+android.text.Layout$Alignment
+float
+float
+boolean)
+
+public void <init>(
+java.lang.CharSequence
+int
+int
+android.text.TextPaint
+int
+android.text.Layout$Alignment
+float
+float
+boolean
+android.text.TextUtils$TruncateAt
+int)
+
+public void <init>(
+java.lang.CharSequence
+android.text.TextPaint
+int
+android.text.Layout$Alignment
+float
+float
+boolean)
+
+ void <init>(
+boolean)
+
+private void calculateEllipsis(
+int
+int
+float[]
+int
+int
+float
+android.text.TextUtils$TruncateAt
+int
+float
+android.text.TextPaint)
+
+private static int getFit(
+android.text.TextPaint
+android.text.TextPaint
+java.lang.CharSequence
+int
+int
+float)
+
+private int out(
+java.lang.CharSequence
+int
+int
+int
+int
+int
+int
+int
+float
+float
+android.text.style.LineHeightSpan[]
+int[]
+android.graphics.Paint$FontMetricsInt
+boolean
+boolean
+int
+byte[]
+int
+boolean
+boolean
+boolean
+boolean
+float[]
+int
+int
+android.text.TextUtils$TruncateAt
+float
+float
+android.text.TextPaint)
+
+ void generate(
+java.lang.CharSequence
+int
+int
+android.text.TextPaint
+int
+android.text.Layout$Alignment
+float
+float
+boolean
+boolean
+boolean
+float
+android.text.TextUtils$TruncateAt)
+
+public int getBottomPadding()
+
+public int getEllipsisCount(
+int)
+
+public int getEllipsisStart(
+int)
+
+public int getEllipsizedWidth()
+
+public boolean getLineContainsTab(
+int)
+
+public int getLineCount()
+
+public int getLineDescent(
+int)
+
+public final android.text.Layout$Directions getLineDirections(
+int)
+
+public int getLineForVertical(
+int)
+
+public int getLineStart(
+int)
+
+public int getLineTop(
+int)
+
+public int getParagraphDirection(
+int)
+
+public int getTopPadding()
+
+________________CLASS________________
+
+
+ class android.text.Styled extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public static float drawText(
+android.graphics.Canvas
+java.lang.CharSequence
+int
+int
+int
+boolean
+float
+int
+int
+int
+android.text.TextPaint
+android.text.TextPaint
+boolean)
+
+private static float each(
+android.graphics.Canvas
+android.text.Spanned
+int
+int
+int
+boolean
+float
+int
+int
+int
+android.graphics.Paint$FontMetricsInt
+android.text.TextPaint
+android.text.TextPaint
+boolean)
+
+private static float foreach(
+android.graphics.Canvas
+java.lang.CharSequence
+int
+int
+int
+boolean
+float
+int
+int
+int
+android.graphics.Paint$FontMetricsInt
+android.text.TextPaint
+android.text.TextPaint
+boolean)
+
+public static int getTextWidths(
+android.text.TextPaint
+android.text.TextPaint
+android.text.Spanned
+int
+int
+float[]
+android.graphics.Paint$FontMetricsInt)
+
+public static float measureText(
+android.text.TextPaint
+android.text.TextPaint
+java.lang.CharSequence
+int
+int
+android.graphics.Paint$FontMetricsInt)
+
+________________CLASS________________
+
+
+public class android.text.TextPaint extends android.graphics.Paint
+
+----------------FIELDS----------------
+
+public int baselineShift
+
+public int bgColor
+
+public int[] drawableState
+
+public int linkColor
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+android.graphics.Paint)
+
+public void set(
+android.text.TextPaint)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/TextUtils; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Ljava/lang/CharSequence;>; )
+final class android.text.TextUtils$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.CharSequence createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public java.lang.CharSequence[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Reverser )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/TextUtils; )
+ class android.text.TextUtils$Reverser extends java.lang.Object implements java.lang.CharSequence, android.text.GetChars
+
+----------------FIELDS----------------
+
+private int mEnd
+
+private java.lang.CharSequence mSource
+
+private int mStart
+----------------METHODS----------------
+
+public void <init>(
+java.lang.CharSequence
+int
+int)
+
+public char charAt(
+int)
+
+public void getChars(
+int
+int
+char[]
+int)
+
+public int length()
+
+public java.lang.CharSequence subSequence(
+int
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/TextUtils; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =TruncateAt )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/text/TextUtils$TruncateAt;>; )
+public final class android.text.TextUtils$TruncateAt extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.text.TextUtils$TruncateAt[] $VALUES
+
+public static final android.text.TextUtils$TruncateAt END
+
+public static final android.text.TextUtils$TruncateAt MIDDLE
+
+public static final android.text.TextUtils$TruncateAt START
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.text.TextUtils$TruncateAt valueOf(
+java.lang.String)
+
+public static android.text.TextUtils$TruncateAt[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/TextUtils$EllipsizeCallback;Landroid/text/TextUtils$TruncateAt;Landroid/text/TextUtils$Reverser;Landroid/text/TextUtils$SimpleStringSplitter;Landroid/text/TextUtils$StringSplitter; )
+public class android.text.TextUtils extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int ABSOLUTE_SIZE_SPAN
+
+private static final int ALIGNMENT_SPAN
+
+private static final int ANNOTATION
+
+private static final int BACKGROUND_COLOR_SPAN
+
+private static final int BULLET_SPAN
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Ljava/lang/CharSequence;>; )
+public static final android.os.Parcelable$Creator CHAR_SEQUENCE_CREATOR
+
+private static java.lang.String[] EMPTY_STRING_ARRAY
+
+private static final int FOREGROUND_COLOR_SPAN
+
+private static final int LEADING_MARGIN_SPAN
+
+private static final int QUOTE_SPAN
+
+private static final int RELATIVE_SIZE_SPAN
+
+private static final int SCALE_X_SPAN
+
+private static final int STRIKETHROUGH_SPAN
+
+private static final int STYLE_SPAN
+
+private static final int SUBSCRIPT_SPAN
+
+private static final int SUPERSCRIPT_SPAN
+
+private static final int TEXT_APPEARANCE_SPAN
+
+private static final int TYPEFACE_SPAN
+
+private static final int UNDERLINE_SPAN
+
+private static final int URL_SPAN
+
+private static java.lang.String sEllipsis
+
+private static java.lang.Object sLock
+
+private static char[] sTemp
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+static void access$000(
+android.os.Parcel
+android.text.Spannable
+java.lang.Object)
+
+private static java.lang.String blank(
+java.lang.CharSequence
+int
+int)
+
+public static java.lang.CharSequence commaEllipsize(
+java.lang.CharSequence
+android.text.TextPaint
+float
+java.lang.String
+java.lang.String)
+
+public static transient java.lang.CharSequence concat(
+java.lang.CharSequence[])
+
+public static void copySpansFrom(
+android.text.Spanned
+int
+int
+java.lang.Class
+android.text.Spannable
+int)
+
+public static java.lang.CharSequence ellipsize(
+java.lang.CharSequence
+android.text.TextPaint
+float
+android.text.TextUtils$TruncateAt)
+
+public static java.lang.CharSequence ellipsize(
+java.lang.CharSequence
+android.text.TextPaint
+float
+android.text.TextUtils$TruncateAt
+boolean
+android.text.TextUtils$EllipsizeCallback)
+
+public static boolean equals(
+java.lang.CharSequence
+java.lang.CharSequence)
+
+public static transient java.lang.CharSequence expandTemplate(
+java.lang.CharSequence
+java.lang.CharSequence[])
+
+public static void getChars(
+java.lang.CharSequence
+int
+int
+char[]
+int)
+
+public static int getOffsetAfter(
+java.lang.CharSequence
+int)
+
+public static int getOffsetBefore(
+java.lang.CharSequence
+int)
+
+public static java.lang.CharSequence getReverse(
+java.lang.CharSequence
+int
+int)
+
+public static int getTrimmedLength(
+java.lang.CharSequence)
+
+public static java.lang.String htmlEncode(
+java.lang.String)
+
+public static int indexOf(
+java.lang.CharSequence
+char)
+
+public static int indexOf(
+java.lang.CharSequence
+char
+int)
+
+public static int indexOf(
+java.lang.CharSequence
+char
+int
+int)
+
+public static int indexOf(
+java.lang.CharSequence
+java.lang.CharSequence)
+
+public static int indexOf(
+java.lang.CharSequence
+java.lang.CharSequence
+int)
+
+public static int indexOf(
+java.lang.CharSequence
+java.lang.CharSequence
+int
+int)
+
+public static boolean isDigitsOnly(
+java.lang.CharSequence)
+
+public static boolean isEmpty(
+java.lang.CharSequence)
+
+public static boolean isGraphic(
+char)
+
+public static boolean isGraphic(
+java.lang.CharSequence)
+
+public static java.lang.String join(
+java.lang.CharSequence
+java.lang.Iterable)
+
+public static java.lang.String join(
+java.lang.CharSequence
+java.lang.Object[])
+
+public static int lastIndexOf(
+java.lang.CharSequence
+char)
+
+public static int lastIndexOf(
+java.lang.CharSequence
+char
+int)
+
+public static int lastIndexOf(
+java.lang.CharSequence
+char
+int
+int)
+
+static char[] obtain(
+int)
+
+private static void readSpan(
+android.os.Parcel
+android.text.Spannable
+java.lang.Object)
+
+static void recycle(
+char[])
+
+public static boolean regionMatches(
+java.lang.CharSequence
+int
+java.lang.CharSequence
+int
+int)
+
+public static java.lang.CharSequence replace(
+java.lang.CharSequence
+java.lang.String[]
+java.lang.CharSequence[])
+
+public static java.lang.String[] split(
+java.lang.String
+java.lang.String)
+
+public static java.lang.String[] split(
+java.lang.String
+java.util.regex.Pattern)
+
+public static java.lang.CharSequence stringOrSpannedString(
+java.lang.CharSequence)
+
+public static java.lang.String substring(
+java.lang.CharSequence
+int
+int)
+
+public static void writeToParcel(
+java.lang.CharSequence
+android.os.Parcel
+int)
+
+private static void writeWhere(
+android.os.Parcel
+android.text.Spanned
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract interface class android.text.method.MovementMethod extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean canSelectArbitrarily()
+
+public abstract void initialize(
+android.widget.TextView
+android.text.Spannable)
+
+public abstract boolean onKeyDown(
+android.widget.TextView
+android.text.Spannable
+int
+android.view.KeyEvent)
+
+public abstract boolean onKeyUp(
+android.widget.TextView
+android.text.Spannable
+int
+android.view.KeyEvent)
+
+public abstract void onTakeFocus(
+android.widget.TextView
+android.text.Spannable
+int)
+
+public abstract boolean onTouchEvent(
+android.widget.TextView
+android.text.Spannable
+android.view.MotionEvent)
+
+public abstract boolean onTrackballEvent(
+android.widget.TextView
+android.text.Spannable
+android.view.MotionEvent)
+
+________________CLASS________________
+
+
+public class android.text.method.ArrowKeyMovementMethod extends java.lang.Object implements android.text.method.MovementMethod
+
+----------------FIELDS----------------
+
+private static android.text.method.ArrowKeyMovementMethod sInstance
+----------------METHODS----------------
+
+public void <init>()
+
+private boolean down(
+android.widget.TextView
+android.text.Spannable)
+
+public static android.text.method.MovementMethod getInstance()
+
+private boolean left(
+android.widget.TextView
+android.text.Spannable)
+
+private boolean right(
+android.widget.TextView
+android.text.Spannable)
+
+private boolean up(
+android.widget.TextView
+android.text.Spannable)
+
+public boolean canSelectArbitrarily()
+
+public void initialize(
+android.widget.TextView
+android.text.Spannable)
+
+public boolean onKeyDown(
+android.widget.TextView
+android.text.Spannable
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+android.widget.TextView
+android.text.Spannable
+int
+android.view.KeyEvent)
+
+public void onTakeFocus(
+android.widget.TextView
+android.text.Spannable
+int)
+
+public boolean onTouchEvent(
+android.widget.TextView
+android.text.Spannable
+android.view.MotionEvent)
+
+public boolean onTrackballEvent(
+android.widget.TextView
+android.text.Spannable
+android.view.MotionEvent)
+
+________________CLASS________________
+
+
+public abstract class android.text.method.MetaKeyKeyListener extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.Object ALT
+
+private static final java.lang.Object CAP
+
+private static final int LOCKED
+
+public static final int META_ALT_LOCKED
+
+public static final int META_ALT_ON
+
+public static final int META_CAP_LOCKED
+
+public static final int META_SHIFT_ON
+
+public static final int META_SYM_LOCKED
+
+public static final int META_SYM_ON
+
+private static final int PRESSED
+
+private static final int RELEASED
+
+private static final java.lang.Object SYM
+
+private static final int USED
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static void adjust(
+android.text.Spannable
+java.lang.Object)
+
+public static void adjustMetaAfterKeypress(
+android.text.Spannable)
+
+private static int getActive(
+java.lang.CharSequence
+java.lang.Object
+int
+int)
+
+public static final int getMetaState(
+java.lang.CharSequence)
+
+public static final int getMetaState(
+java.lang.CharSequence
+int)
+
+public static boolean isMetaTracker(
+java.lang.CharSequence
+java.lang.Object)
+
+private void press(
+android.text.Editable
+java.lang.Object)
+
+private void release(
+android.text.Editable
+java.lang.Object)
+
+private static void resetLock(
+android.text.Spannable
+java.lang.Object)
+
+protected static void resetLockedMeta(
+android.text.Spannable)
+
+public static void resetMetaState(
+android.text.Spannable)
+
+public boolean onKeyDown(
+android.view.View
+android.text.Editable
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+android.view.View
+android.text.Editable
+int
+android.view.KeyEvent)
+
+________________CLASS________________
+
+
+public abstract interface class android.text.method.KeyListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean onKeyDown(
+android.view.View
+android.text.Editable
+int
+android.view.KeyEvent)
+
+public abstract boolean onKeyUp(
+android.view.View
+android.text.Editable
+int
+android.view.KeyEvent)
+
+________________CLASS________________
+
+
+public abstract class android.text.method.BaseKeyListener extends android.text.method.MetaKeyKeyListener implements android.text.method.KeyListener
+
+----------------FIELDS----------------
+
+static final java.lang.Object OLD_SEL_START
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private boolean altBackspace(
+android.view.View
+android.text.Editable
+int
+android.view.KeyEvent)
+
+public boolean backspace(
+android.view.View
+android.text.Editable
+int
+android.view.KeyEvent)
+
+public boolean onKeyDown(
+android.view.View
+android.text.Editable
+int
+android.view.KeyEvent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/method/CharacterPickerDialog; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =OptionsAdapter )
+ class android.text.method.CharacterPickerDialog$OptionsAdapter extends android.widget.BaseAdapter
+
+----------------FIELDS----------------
+
+private android.content.Context mContext
+
+final android.text.method.CharacterPickerDialog this$0
+----------------METHODS----------------
+
+public void <init>(
+android.text.method.CharacterPickerDialog
+android.content.Context)
+
+public final int getCount()
+
+public final java.lang.Object getItem(
+int)
+
+public final long getItemId(
+int)
+
+public android.view.View getView(
+int
+android.view.View
+android.view.ViewGroup)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/method/CharacterPickerDialog$OptionsAdapter; )
+public class android.text.method.CharacterPickerDialog extends android.app.Dialog implements android.widget.AdapterView$OnItemClickListener, android.view.View$OnClickListener
+
+----------------FIELDS----------------
+
+private android.view.LayoutInflater mInflater
+
+private boolean mInsert
+
+private java.lang.String mOptions
+
+private android.text.Editable mText
+
+private android.view.View mView
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.view.View
+android.text.Editable
+java.lang.String
+boolean)
+
+static android.view.LayoutInflater access$000(
+android.text.method.CharacterPickerDialog)
+
+static java.lang.String access$100(
+android.text.method.CharacterPickerDialog)
+
+public void onClick(
+android.view.View)
+
+protected void onCreate(
+android.os.Bundle)
+
+public void onItemClick(
+android.widget.AdapterView
+android.view.View
+int
+long)
+
+________________CLASS________________
+
+
+public abstract class android.text.method.NumberKeyListener extends android.text.method.BaseKeyListener implements android.text.InputFilter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected static boolean ok(
+char[]
+char)
+
+public java.lang.CharSequence filter(
+java.lang.CharSequence
+int
+int
+android.text.Spanned
+int
+int)
+
+protected abstract char[] getAcceptedChars()
+
+protected int lookup(
+android.view.KeyEvent
+android.text.Spannable)
+
+public boolean onKeyDown(
+android.view.View
+android.text.Editable
+int
+android.view.KeyEvent)
+
+________________CLASS________________
+
+
+public class android.text.method.DateKeyListener extends android.text.method.NumberKeyListener
+
+----------------FIELDS----------------
+
+public static final char[] CHARACTERS
+
+private static android.text.method.DateKeyListener sInstance
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.text.method.DateKeyListener getInstance()
+
+protected char[] getAcceptedChars()
+
+________________CLASS________________
+
+
+public class android.text.method.DateTimeKeyListener extends android.text.method.NumberKeyListener
+
+----------------FIELDS----------------
+
+public static final char[] CHARACTERS
+
+private static android.text.method.DateTimeKeyListener sInstance
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.text.method.DateTimeKeyListener getInstance()
+
+protected char[] getAcceptedChars()
+
+________________CLASS________________
+
+
+public class android.text.method.DialerKeyListener extends android.text.method.NumberKeyListener
+
+----------------FIELDS----------------
+
+public static final char[] CHARACTERS
+
+private static android.text.method.DialerKeyListener sInstance
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.text.method.DialerKeyListener getInstance()
+
+protected char[] getAcceptedChars()
+
+protected int lookup(
+android.view.KeyEvent
+android.text.Spannable)
+
+________________CLASS________________
+
+
+public class android.text.method.DigitsKeyListener extends android.text.method.NumberKeyListener
+
+----------------FIELDS----------------
+
+private static final char[][] CHARACTERS
+
+private static final int DECIMAL
+
+private static final int SIGN
+
+private static android.text.method.DigitsKeyListener[] sInstance
+
+private char[] mAccepted
+
+private boolean mDecimal
+
+private boolean mSign
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+boolean
+boolean)
+
+public static android.text.method.DigitsKeyListener getInstance()
+
+public static android.text.method.DigitsKeyListener getInstance(
+java.lang.String)
+
+public static android.text.method.DigitsKeyListener getInstance(
+boolean
+boolean)
+
+public java.lang.CharSequence filter(
+java.lang.CharSequence
+int
+int
+android.text.Spanned
+int
+int)
+
+protected char[] getAcceptedChars()
+
+________________CLASS________________
+
+
+public abstract interface class android.text.method.TransformationMethod extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.CharSequence getTransformation(
+java.lang.CharSequence
+android.view.View)
+
+public abstract void onFocusChanged(
+android.view.View
+java.lang.CharSequence
+boolean
+int
+android.graphics.Rect)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence;Landroid/text/method/ReplacementTransformationMethod$ReplacementCharSequence; )
+public abstract class android.text.method.ReplacementTransformationMethod extends java.lang.Object implements android.text.method.TransformationMethod
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected abstract char[] getOriginal()
+
+protected abstract char[] getReplacement()
+
+public java.lang.CharSequence getTransformation(
+java.lang.CharSequence
+android.view.View)
+
+public void onFocusChanged(
+android.view.View
+java.lang.CharSequence
+boolean
+int
+android.graphics.Rect)
+
+________________CLASS________________
+
+
+public class android.text.method.HideReturnsTransformationMethod extends android.text.method.ReplacementTransformationMethod
+
+----------------FIELDS----------------
+
+private static char[] ORIGINAL
+
+private static char[] REPLACEMENT
+
+private static android.text.method.HideReturnsTransformationMethod sInstance
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.text.method.HideReturnsTransformationMethod getInstance()
+
+protected char[] getOriginal()
+
+protected char[] getReplacement()
+
+________________CLASS________________
+
+
+public class android.text.method.ScrollingMovementMethod extends java.lang.Object implements android.text.method.MovementMethod
+
+----------------FIELDS----------------
+
+private static android.text.method.ScrollingMovementMethod sInstance
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.text.method.MovementMethod getInstance()
+
+public boolean canSelectArbitrarily()
+
+protected boolean down(
+android.widget.TextView
+android.text.Spannable)
+
+public void initialize(
+android.widget.TextView
+android.text.Spannable)
+
+protected boolean left(
+android.widget.TextView
+android.text.Spannable)
+
+public boolean onKeyDown(
+android.widget.TextView
+android.text.Spannable
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+android.widget.TextView
+android.text.Spannable
+int
+android.view.KeyEvent)
+
+public void onTakeFocus(
+android.widget.TextView
+android.text.Spannable
+int)
+
+public boolean onTouchEvent(
+android.widget.TextView
+android.text.Spannable
+android.view.MotionEvent)
+
+public boolean onTrackballEvent(
+android.widget.TextView
+android.text.Spannable
+android.view.MotionEvent)
+
+protected boolean right(
+android.widget.TextView
+android.text.Spannable)
+
+protected boolean up(
+android.widget.TextView
+android.text.Spannable)
+
+________________CLASS________________
+
+
+public class android.text.method.LinkMovementMethod extends android.text.method.ScrollingMovementMethod
+
+----------------FIELDS----------------
+
+private static final int CLICK
+
+private static final int DOWN
+
+private static java.lang.Object FROM_BELOW
+
+private static final int UP
+
+private static android.text.method.LinkMovementMethod sInstance
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private boolean action(
+int
+android.widget.TextView
+android.text.Spannable)
+
+public static android.text.method.MovementMethod getInstance()
+
+protected boolean down(
+android.widget.TextView
+android.text.Spannable)
+
+public void initialize(
+android.widget.TextView
+android.text.Spannable)
+
+protected boolean left(
+android.widget.TextView
+android.text.Spannable)
+
+public boolean onKeyDown(
+android.widget.TextView
+android.text.Spannable
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+android.widget.TextView
+android.text.Spannable
+int
+android.view.KeyEvent)
+
+public void onTakeFocus(
+android.widget.TextView
+android.text.Spannable
+int)
+
+public boolean onTouchEvent(
+android.widget.TextView
+android.text.Spannable
+android.view.MotionEvent)
+
+protected boolean right(
+android.widget.TextView
+android.text.Spannable)
+
+protected boolean up(
+android.widget.TextView
+android.text.Spannable)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =Timeout )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/method/MultiTapKeyListener; )
+ class android.text.method.MultiTapKeyListener$Timeout extends android.os.Handler implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private android.text.Editable mBuffer
+
+final android.text.method.MultiTapKeyListener this$0
+----------------METHODS----------------
+
+public void <init>(
+android.text.method.MultiTapKeyListener
+android.text.Editable)
+
+static android.text.Editable access$002(
+android.text.method.MultiTapKeyListener$Timeout
+android.text.Editable)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/method/MultiTapKeyListener$Timeout; )
+public class android.text.method.MultiTapKeyListener extends android.text.method.BaseKeyListener implements android.text.SpanWatcher
+
+----------------FIELDS----------------
+
+private static android.text.method.MultiTapKeyListener[] sInstance
+@dalvik.annotation.Signature (value =Landroid/util/SparseArray<Ljava/lang/String;>; )
+private static final android.util.SparseArray sRecs
+
+private boolean mAutoText
+
+private android.text.method.TextKeyListener$Capitalize mCapitalize
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.text.method.TextKeyListener$Capitalize
+boolean)
+
+public static android.text.method.MultiTapKeyListener getInstance(
+boolean
+android.text.method.TextKeyListener$Capitalize)
+
+private static void removeTimeouts(
+android.text.Spannable)
+
+public boolean onKeyDown(
+android.view.View
+android.text.Editable
+int
+android.view.KeyEvent)
+
+public void onSpanAdded(
+android.text.Spannable
+java.lang.Object
+int
+int)
+
+public void onSpanChanged(
+android.text.Spannable
+java.lang.Object
+int
+int
+int
+int)
+
+public void onSpanRemoved(
+android.text.Spannable
+java.lang.Object
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =PasswordCharSequence )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/method/PasswordTransformationMethod; )
+ class android.text.method.PasswordTransformationMethod$PasswordCharSequence extends java.lang.Object implements java.lang.CharSequence, android.text.GetChars
+
+----------------FIELDS----------------
+
+private java.lang.CharSequence mSource
+----------------METHODS----------------
+
+public void <init>(
+java.lang.CharSequence)
+
+public char charAt(
+int)
+
+public void getChars(
+int
+int
+char[]
+int)
+
+public int length()
+
+public java.lang.CharSequence subSequence(
+int
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =ViewReference )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/method/PasswordTransformationMethod; )
+@dalvik.annotation.Signature (value =Ljava/lang/ref/WeakReference<Landroid/view/View;>; )
+ class android.text.method.PasswordTransformationMethod$ViewReference extends java.lang.ref.WeakReference
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.view.View)
+
+________________CLASS________________
+
+
+public abstract interface class android.text.style.UpdateLayout extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Visible )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/method/PasswordTransformationMethod; )
+ class android.text.method.PasswordTransformationMethod$Visible extends android.os.Handler implements android.text.style.UpdateLayout, java.lang.Runnable
+
+----------------FIELDS----------------
+
+private android.text.Spannable mText
+
+private android.text.method.PasswordTransformationMethod mTransformer
+----------------METHODS----------------
+
+public void <init>(
+android.text.Spannable
+android.text.method.PasswordTransformationMethod)
+
+static android.text.method.PasswordTransformationMethod access$000(
+android.text.method.PasswordTransformationMethod$Visible)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/method/PasswordTransformationMethod$ViewReference;Landroid/text/method/PasswordTransformationMethod$Visible;Landroid/text/method/PasswordTransformationMethod$PasswordCharSequence; )
+public class android.text.method.PasswordTransformationMethod extends java.lang.Object implements android.text.method.TransformationMethod, android.text.TextWatcher
+
+----------------FIELDS----------------
+
+private static char DOT
+
+private static android.text.method.PasswordTransformationMethod sInstance
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static char access$100()
+
+public static android.text.method.PasswordTransformationMethod getInstance()
+
+public void afterTextChanged(
+android.text.Editable)
+
+public void beforeTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+public java.lang.CharSequence getTransformation(
+java.lang.CharSequence
+android.view.View)
+
+public void onFocusChanged(
+android.view.View
+java.lang.CharSequence
+boolean
+int
+android.graphics.Rect)
+
+public void onTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =Replaced )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/method/QwertyKeyListener; )
+ class android.text.method.QwertyKeyListener$Replaced extends java.lang.Object
+
+----------------FIELDS----------------
+
+private char[] mText
+----------------METHODS----------------
+
+public void <init>(
+char[])
+
+static char[] access$000(
+android.text.method.QwertyKeyListener$Replaced)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/method/QwertyKeyListener$Replaced; )
+public class android.text.method.QwertyKeyListener extends android.text.method.BaseKeyListener
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/util/SparseArray<Ljava/lang/String;>; )
+private static android.util.SparseArray PICKER_SETS
+
+private static android.text.method.QwertyKeyListener[] sInstance
+
+private android.text.method.TextKeyListener$Capitalize mAutoCap
+
+private boolean mAutoText
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.text.method.TextKeyListener$Capitalize
+boolean)
+
+public static android.text.method.QwertyKeyListener getInstance(
+boolean
+android.text.method.TextKeyListener$Capitalize)
+
+private java.lang.String getReplacement(
+java.lang.CharSequence
+int
+int
+android.view.View)
+
+public static void markAsReplaced(
+android.text.Spannable
+int
+int
+java.lang.String)
+
+private boolean showCharacterPicker(
+android.view.View
+android.text.Editable
+char
+boolean
+int)
+
+private static java.lang.String toTitleCase(
+java.lang.String)
+
+public boolean onKeyDown(
+android.view.View
+android.text.Editable
+int
+android.view.KeyEvent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/method/ReplacementTransformationMethod; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =ReplacementCharSequence )
+ class android.text.method.ReplacementTransformationMethod$ReplacementCharSequence extends java.lang.Object implements java.lang.CharSequence, android.text.GetChars
+
+----------------FIELDS----------------
+
+private char[] mOriginal
+
+private char[] mReplacement
+
+private java.lang.CharSequence mSource
+----------------METHODS----------------
+
+public void <init>(
+java.lang.CharSequence
+char[]
+char[])
+
+public char charAt(
+int)
+
+public void getChars(
+int
+int
+char[]
+int)
+
+public int length()
+
+public java.lang.CharSequence subSequence(
+int
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/method/ReplacementTransformationMethod; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =SpannedReplacementCharSequence )
+ class android.text.method.ReplacementTransformationMethod$SpannedReplacementCharSequence extends android.text.method.ReplacementTransformationMethod$ReplacementCharSequence implements android.text.Spanned
+
+----------------FIELDS----------------
+
+private android.text.Spanned mSpanned
+----------------METHODS----------------
+
+public void <init>(
+android.text.Spanned
+char[]
+char[])
+
+public int getSpanEnd(
+java.lang.Object)
+
+public int getSpanFlags(
+java.lang.Object)
+
+public int getSpanStart(
+java.lang.Object)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(IILjava/lang/Class<TT;>;)[TT; )
+public java.lang.Object[] getSpans(
+int
+int
+java.lang.Class)
+
+public int nextSpanTransition(
+int
+int
+java.lang.Class)
+
+public java.lang.CharSequence subSequence(
+int
+int)
+
+________________CLASS________________
+
+
+public class android.text.method.SingleLineTransformationMethod extends android.text.method.ReplacementTransformationMethod
+
+----------------FIELDS----------------
+
+private static char[] ORIGINAL
+
+private static char[] REPLACEMENT
+
+private static android.text.method.SingleLineTransformationMethod sInstance
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.text.method.SingleLineTransformationMethod getInstance()
+
+protected char[] getOriginal()
+
+protected char[] getReplacement()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/text/method/TextKeyListener$Capitalize;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Capitalize )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/method/TextKeyListener; )
+public final class android.text.method.TextKeyListener$Capitalize extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.text.method.TextKeyListener$Capitalize[] $VALUES
+
+public static final android.text.method.TextKeyListener$Capitalize CHARACTERS
+
+public static final android.text.method.TextKeyListener$Capitalize NONE
+
+public static final android.text.method.TextKeyListener$Capitalize SENTENCES
+
+public static final android.text.method.TextKeyListener$Capitalize WORDS
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.text.method.TextKeyListener$Capitalize valueOf(
+java.lang.String)
+
+public static android.text.method.TextKeyListener$Capitalize[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/method/TextKeyListener; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =NullKeyListener )
+ class android.text.method.TextKeyListener$NullKeyListener extends java.lang.Object implements android.text.method.KeyListener
+
+----------------FIELDS----------------
+
+private static android.text.method.TextKeyListener$NullKeyListener sInstance
+----------------METHODS----------------
+
+private void <init>()
+
+public static android.text.method.TextKeyListener$NullKeyListener getInstance()
+
+public boolean onKeyDown(
+android.view.View
+android.text.Editable
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+android.view.View
+android.text.Editable
+int
+android.view.KeyEvent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =SettingsObserver )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/method/TextKeyListener; )
+ class android.text.method.TextKeyListener$SettingsObserver extends android.database.ContentObserver
+
+----------------FIELDS----------------
+
+final android.text.method.TextKeyListener this$0
+----------------METHODS----------------
+
+public void <init>(
+android.text.method.TextKeyListener)
+
+public void onChange(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/method/TextKeyListener$SettingsObserver;Landroid/text/method/TextKeyListener$NullKeyListener;Landroid/text/method/TextKeyListener$Capitalize; )
+public class android.text.method.TextKeyListener extends android.text.method.BaseKeyListener implements android.text.SpanWatcher
+
+----------------FIELDS----------------
+
+static final java.lang.Object ACTIVE
+
+static final int AUTO_CAP
+
+static final int AUTO_PERIOD
+
+static final int AUTO_TEXT
+
+static final java.lang.Object CAPPED
+
+static final java.lang.Object INHIBIT_REPLACEMENT
+
+static final java.lang.Object LAST_TYPED
+
+static final int SHOW_PASSWORD
+
+private static android.text.method.TextKeyListener[] sInstance
+
+private android.text.method.TextKeyListener$Capitalize mAutoCap
+
+private boolean mAutoText
+
+private android.text.method.TextKeyListener$SettingsObserver mObserver
+
+private int mPrefs
+
+private boolean mPrefsInited
+@dalvik.annotation.Signature (value =Ljava/lang/ref/WeakReference<Landroid/content/ContentResolver;>; )
+private java.lang.ref.WeakReference mResolver
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.text.method.TextKeyListener$Capitalize
+boolean)
+
+static java.lang.ref.WeakReference access$000(
+android.text.method.TextKeyListener)
+
+static boolean access$102(
+android.text.method.TextKeyListener
+boolean)
+
+static void access$200(
+android.text.method.TextKeyListener
+android.content.ContentResolver)
+
+public static void clear(
+android.text.Editable)
+
+public static android.text.method.TextKeyListener getInstance()
+
+public static android.text.method.TextKeyListener getInstance(
+boolean
+android.text.method.TextKeyListener$Capitalize)
+
+private android.text.method.KeyListener getKeyListener(
+android.view.KeyEvent)
+
+private void initPrefs(
+android.content.Context)
+
+public static boolean shouldCap(
+android.text.method.TextKeyListener$Capitalize
+java.lang.CharSequence
+int)
+
+private void updatePrefs(
+android.content.ContentResolver)
+
+ int getPrefs(
+android.content.Context)
+
+public boolean onKeyDown(
+android.view.View
+android.text.Editable
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+android.view.View
+android.text.Editable
+int
+android.view.KeyEvent)
+
+public void onSpanAdded(
+android.text.Spannable
+java.lang.Object
+int
+int)
+
+public void onSpanChanged(
+android.text.Spannable
+java.lang.Object
+int
+int
+int
+int)
+
+public void onSpanRemoved(
+android.text.Spannable
+java.lang.Object
+int
+int)
+
+public void release()
+
+________________CLASS________________
+
+
+public class android.text.method.TimeKeyListener extends android.text.method.NumberKeyListener
+
+----------------FIELDS----------------
+
+public static final char[] CHARACTERS
+
+private static android.text.method.TimeKeyListener sInstance
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.text.method.TimeKeyListener getInstance()
+
+protected char[] getAcceptedChars()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =DragState )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/method/Touch; )
+ class android.text.method.Touch$DragState extends java.lang.Object
+
+----------------FIELDS----------------
+
+public boolean mFarEnough
+
+public boolean mUsed
+
+public float mX
+
+public float mY
+----------------METHODS----------------
+
+public void <init>(
+float
+float)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/method/Touch$DragState; )
+public class android.text.method.Touch extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static boolean onTouchEvent(
+android.widget.TextView
+android.text.Spannable
+android.view.MotionEvent)
+
+public static void scrollTo(
+android.widget.TextView
+android.text.Layout
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/style/CharacterStyle$Passthrough; )
+public abstract class android.text.style.CharacterStyle extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.text.style.CharacterStyle wrap(
+android.text.style.CharacterStyle)
+
+public android.text.style.CharacterStyle getUnderlying()
+
+public abstract void updateDrawState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/style/MetricAffectingSpan$Passthrough; )
+public abstract class android.text.style.MetricAffectingSpan extends android.text.style.CharacterStyle implements android.text.style.UpdateLayout
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public volatile android.text.style.CharacterStyle getUnderlying()
+
+public android.text.style.MetricAffectingSpan getUnderlying()
+
+public abstract void updateMeasureState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+
+public class android.text.style.AbsoluteSizeSpan extends android.text.style.MetricAffectingSpan
+
+----------------FIELDS----------------
+
+private int mSize
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public int getSize()
+
+public void updateDrawState(
+android.text.TextPaint)
+
+public void updateMeasureState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/style/AlignmentSpan$Standard; )
+public abstract interface class android.text.style.AlignmentSpan extends java.lang.Object implements android.text.style.ParagraphStyle
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.text.Layout$Alignment getAlignment()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Standard )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/style/AlignmentSpan; )
+public class android.text.style.AlignmentSpan$Standard extends java.lang.Object implements android.text.style.AlignmentSpan
+
+----------------FIELDS----------------
+
+private android.text.Layout$Alignment mAlignment
+----------------METHODS----------------
+
+public void <init>(
+android.text.Layout$Alignment)
+
+public android.text.Layout$Alignment getAlignment()
+
+________________CLASS________________
+
+
+public class android.text.style.BackgroundColorSpan extends android.text.style.CharacterStyle
+
+----------------FIELDS----------------
+
+private int mColor
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public int getBackgroundColor()
+
+public void updateDrawState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/style/LeadingMarginSpan$Standard; )
+public abstract interface class android.text.style.LeadingMarginSpan extends java.lang.Object implements android.text.style.ParagraphStyle
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void drawLeadingMargin(
+android.graphics.Canvas
+android.graphics.Paint
+int
+int
+int
+int
+int
+java.lang.CharSequence
+int
+int
+boolean
+android.text.Layout)
+
+public abstract int getLeadingMargin(
+boolean)
+
+________________CLASS________________
+
+
+public class android.text.style.BulletSpan extends java.lang.Object implements android.text.style.LeadingMarginSpan
+
+----------------FIELDS----------------
+
+private static final int BULLET_RADIUS
+
+public static final int STANDARD_GAP_WIDTH
+
+private int mColor
+
+private int mGapWidth
+
+private boolean mWantColor
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+int
+int)
+
+public void drawLeadingMargin(
+android.graphics.Canvas
+android.graphics.Paint
+int
+int
+int
+int
+int
+java.lang.CharSequence
+int
+int
+boolean
+android.text.Layout)
+
+public int getLeadingMargin(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/style/CharacterStyle; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Passthrough )
+ class android.text.style.CharacterStyle$Passthrough extends android.text.style.CharacterStyle
+
+----------------FIELDS----------------
+
+private android.text.style.CharacterStyle mStyle
+----------------METHODS----------------
+
+public void <init>(
+android.text.style.CharacterStyle)
+
+public android.text.style.CharacterStyle getUnderlying()
+
+public void updateDrawState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+
+public abstract class android.text.style.ClickableSpan extends android.text.style.CharacterStyle
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public abstract void onClick(
+android.view.View)
+
+public void updateDrawState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+
+public class android.text.style.DrawableMarginSpan extends java.lang.Object implements android.text.style.LeadingMarginSpan, android.text.style.LineHeightSpan
+
+----------------FIELDS----------------
+
+private android.graphics.drawable.Drawable mDrawable
+
+private int mPad
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.drawable.Drawable)
+
+public void <init>(
+android.graphics.drawable.Drawable
+int)
+
+public void chooseHeight(
+java.lang.CharSequence
+int
+int
+int
+int
+android.graphics.Paint$FontMetricsInt)
+
+public void drawLeadingMargin(
+android.graphics.Canvas
+android.graphics.Paint
+int
+int
+int
+int
+int
+java.lang.CharSequence
+int
+int
+boolean
+android.text.Layout)
+
+public int getLeadingMargin(
+boolean)
+
+________________CLASS________________
+
+
+public abstract class android.text.style.ReplacementSpan extends android.text.style.MetricAffectingSpan
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public abstract void draw(
+android.graphics.Canvas
+java.lang.CharSequence
+int
+int
+float
+int
+int
+int
+android.graphics.Paint)
+
+public abstract int getSize(
+android.graphics.Paint
+java.lang.CharSequence
+int
+int
+android.graphics.Paint$FontMetricsInt)
+
+public void updateDrawState(
+android.text.TextPaint)
+
+public void updateMeasureState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+
+public abstract class android.text.style.DynamicDrawableSpan extends android.text.style.ReplacementSpan
+
+----------------FIELDS----------------
+
+private java.lang.ref.WeakReference mDrawableRef
+----------------METHODS----------------
+
+public void <init>()
+
+private android.graphics.drawable.Drawable getCachedDrawable()
+
+public void draw(
+android.graphics.Canvas
+java.lang.CharSequence
+int
+int
+float
+int
+int
+int
+android.graphics.Paint)
+
+public abstract android.graphics.drawable.Drawable getDrawable()
+
+public int getSize(
+android.graphics.Paint
+java.lang.CharSequence
+int
+int
+android.graphics.Paint$FontMetricsInt)
+
+________________CLASS________________
+
+
+public class android.text.style.ForegroundColorSpan extends android.text.style.CharacterStyle
+
+----------------FIELDS----------------
+
+private int mColor
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public int getForegroundColor()
+
+public void updateDrawState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+
+public class android.text.style.IconMarginSpan extends java.lang.Object implements android.text.style.LeadingMarginSpan, android.text.style.LineHeightSpan
+
+----------------FIELDS----------------
+
+private android.graphics.Bitmap mBitmap
+
+private int mPad
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.Bitmap)
+
+public void <init>(
+android.graphics.Bitmap
+int)
+
+public void chooseHeight(
+java.lang.CharSequence
+int
+int
+int
+int
+android.graphics.Paint$FontMetricsInt)
+
+public void drawLeadingMargin(
+android.graphics.Canvas
+android.graphics.Paint
+int
+int
+int
+int
+int
+java.lang.CharSequence
+int
+int
+boolean
+android.text.Layout)
+
+public int getLeadingMargin(
+boolean)
+
+________________CLASS________________
+
+
+public class android.text.style.ImageSpan extends android.text.style.DynamicDrawableSpan
+
+----------------FIELDS----------------
+
+private android.net.Uri mContentUri
+
+private android.content.Context mContext
+
+private android.graphics.drawable.Drawable mDrawable
+
+private int mResourceId
+
+private java.lang.String mSource
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+int)
+
+public void <init>(
+android.content.Context
+android.net.Uri)
+
+public void <init>(
+android.graphics.Bitmap)
+
+public void <init>(
+android.graphics.drawable.Drawable)
+
+public void <init>(
+android.graphics.drawable.Drawable
+java.lang.String)
+
+public android.graphics.drawable.Drawable getDrawable()
+
+public java.lang.String getSource()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Standard )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/style/LeadingMarginSpan; )
+public class android.text.style.LeadingMarginSpan$Standard extends java.lang.Object implements android.text.style.LeadingMarginSpan
+
+----------------FIELDS----------------
+
+private int mFirst
+
+private int mRest
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+int
+int)
+
+public void drawLeadingMargin(
+android.graphics.Canvas
+android.graphics.Paint
+int
+int
+int
+int
+int
+java.lang.CharSequence
+int
+int
+boolean
+android.text.Layout)
+
+public int getLeadingMargin(
+boolean)
+
+________________CLASS________________
+
+
+public abstract interface class android.text.style.LineBackgroundSpan extends java.lang.Object implements android.text.style.ParagraphStyle
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void drawBackground(
+android.graphics.Canvas
+android.graphics.Paint
+int
+int
+int
+int
+int
+java.lang.CharSequence
+int
+int
+int)
+
+________________CLASS________________
+
+
+public class android.text.style.MaskFilterSpan extends android.text.style.CharacterStyle
+
+----------------FIELDS----------------
+
+private android.graphics.MaskFilter mFilter
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.MaskFilter)
+
+public android.graphics.MaskFilter getMaskFilter()
+
+public void updateDrawState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =Passthrough )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/style/MetricAffectingSpan; )
+ class android.text.style.MetricAffectingSpan$Passthrough extends android.text.style.MetricAffectingSpan
+
+----------------FIELDS----------------
+
+private android.text.style.MetricAffectingSpan mStyle
+----------------METHODS----------------
+
+public void <init>(
+android.text.style.MetricAffectingSpan)
+
+public volatile android.text.style.CharacterStyle getUnderlying()
+
+public android.text.style.MetricAffectingSpan getUnderlying()
+
+public void updateDrawState(
+android.text.TextPaint)
+
+public void updateMeasureState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+
+public class android.text.style.QuoteSpan extends java.lang.Object implements android.text.style.LeadingMarginSpan
+
+----------------FIELDS----------------
+
+private static final int GAP_WIDTH
+
+private static final int STRIPE_WIDTH
+
+private int mColor
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void drawLeadingMargin(
+android.graphics.Canvas
+android.graphics.Paint
+int
+int
+int
+int
+int
+java.lang.CharSequence
+int
+int
+boolean
+android.text.Layout)
+
+public int getColor()
+
+public int getLeadingMargin(
+boolean)
+
+________________CLASS________________
+
+
+public class android.text.style.RasterizerSpan extends android.text.style.CharacterStyle
+
+----------------FIELDS----------------
+
+private android.graphics.Rasterizer mRasterizer
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.Rasterizer)
+
+public android.graphics.Rasterizer getRasterizer()
+
+public void updateDrawState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+
+public class android.text.style.RelativeSizeSpan extends android.text.style.MetricAffectingSpan
+
+----------------FIELDS----------------
+
+private float mProportion
+----------------METHODS----------------
+
+public void <init>(
+float)
+
+public float getSizeChange()
+
+public void updateDrawState(
+android.text.TextPaint)
+
+public void updateMeasureState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+
+public class android.text.style.ScaleXSpan extends android.text.style.MetricAffectingSpan
+
+----------------FIELDS----------------
+
+private float mProportion
+----------------METHODS----------------
+
+public void <init>(
+float)
+
+public float getScaleX()
+
+public void updateDrawState(
+android.text.TextPaint)
+
+public void updateMeasureState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+
+public class android.text.style.StrikethroughSpan extends android.text.style.CharacterStyle
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void updateDrawState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+
+public class android.text.style.StyleSpan extends android.text.style.MetricAffectingSpan
+
+----------------FIELDS----------------
+
+private int mStyle
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+private static void apply(
+android.graphics.Paint
+int)
+
+public int getStyle()
+
+public void updateDrawState(
+android.text.TextPaint)
+
+public void updateMeasureState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+
+public class android.text.style.SubscriptSpan extends android.text.style.MetricAffectingSpan
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void updateDrawState(
+android.text.TextPaint)
+
+public void updateMeasureState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+
+public class android.text.style.SuperscriptSpan extends android.text.style.MetricAffectingSpan
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void updateDrawState(
+android.text.TextPaint)
+
+public void updateMeasureState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/style/TabStopSpan$Standard; )
+public abstract interface class android.text.style.TabStopSpan extends java.lang.Object implements android.text.style.ParagraphStyle
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int getTabStop()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Standard )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/style/TabStopSpan; )
+public class android.text.style.TabStopSpan$Standard extends java.lang.Object implements android.text.style.TabStopSpan
+
+----------------FIELDS----------------
+
+private int mTab
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public int getTabStop()
+
+________________CLASS________________
+
+
+public class android.text.style.TextAppearanceSpan extends android.text.style.MetricAffectingSpan
+
+----------------FIELDS----------------
+
+private int mStyle
+
+private android.content.res.ColorStateList mTextColor
+
+private android.content.res.ColorStateList mTextColorLink
+
+private int mTextSize
+
+private java.lang.String mTypeface
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+int)
+
+public void <init>(
+android.content.Context
+int
+int)
+
+public void <init>(
+java.lang.String
+int
+int
+android.content.res.ColorStateList
+android.content.res.ColorStateList)
+
+public java.lang.String getFamily()
+
+public android.content.res.ColorStateList getLinkTextColor()
+
+public android.content.res.ColorStateList getTextColor()
+
+public int getTextSize()
+
+public int getTextStyle()
+
+public void updateDrawState(
+android.text.TextPaint)
+
+public void updateMeasureState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+
+public class android.text.style.TypefaceSpan extends android.text.style.MetricAffectingSpan
+
+----------------FIELDS----------------
+
+private java.lang.String mFamily
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+private static void apply(
+android.graphics.Paint
+java.lang.String)
+
+public java.lang.String getFamily()
+
+public void updateDrawState(
+android.text.TextPaint)
+
+public void updateMeasureState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+
+public class android.text.style.URLSpan extends android.text.style.ClickableSpan
+
+----------------FIELDS----------------
+
+private java.lang.String mURL
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public java.lang.String getURL()
+
+public void onClick(
+android.view.View)
+
+________________CLASS________________
+
+
+public class android.text.style.UnderlineSpan extends android.text.style.CharacterStyle
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void updateDrawState(
+android.text.TextPaint)
+
+________________CLASS________________
+
+
+ class android.text.util.LinkSpec extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int end
+
+ int start
+
+ java.lang.String url
+----------------METHODS----------------
+
+ void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/util/Linkify; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =MatchFilter )
+public abstract interface class android.text.util.Linkify$MatchFilter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean acceptMatch(
+java.lang.CharSequence
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/util/Linkify; )
+final class android.text.util.Linkify$1 extends java.lang.Object implements android.text.util.Linkify$MatchFilter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public final boolean acceptMatch(
+java.lang.CharSequence
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/util/Linkify; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.text.util.Linkify$2 extends java.lang.Object implements android.text.util.Linkify$MatchFilter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public final boolean acceptMatch(
+java.lang.CharSequence
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =TransformFilter )
+@dalvik.annotation.EnclosingClass (value =Landroid/text/util/Linkify; )
+public abstract interface class android.text.util.Linkify$TransformFilter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String transformUrl(
+java.util.regex.Matcher
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/text/util/Linkify; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.text.util.Linkify$3 extends java.lang.Object implements android.text.util.Linkify$TransformFilter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public final java.lang.String transformUrl(
+java.util.regex.Matcher
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Comparator<Landroid/text/util/LinkSpec;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.text.util.Linkify$4 extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public final int compare(
+android.text.util.LinkSpec
+android.text.util.LinkSpec)
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+public final boolean equals(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/text/util/Linkify$TransformFilter;Landroid/text/util/Linkify$MatchFilter; )
+public class android.text.util.Linkify extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ALL
+
+public static final int EMAIL_ADDRESSES
+
+public static final int MAP_ADDRESSES
+
+public static final int PHONE_NUMBERS
+
+private static final int PHONE_NUMBER_MINIMUM_DIGITS
+
+public static final int WEB_URLS
+
+public static final android.text.util.Linkify$MatchFilter sPhoneNumberMatchFilter
+
+public static final android.text.util.Linkify$TransformFilter sPhoneNumberTransformFilter
+
+public static final android.text.util.Linkify$MatchFilter sUrlMatchFilter
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static final void addLinkMovementMethod(
+android.widget.TextView)
+
+public static final void addLinks(
+android.widget.TextView
+java.util.regex.Pattern
+java.lang.String)
+
+public static final void addLinks(
+android.widget.TextView
+java.util.regex.Pattern
+java.lang.String
+android.text.util.Linkify$MatchFilter
+android.text.util.Linkify$TransformFilter)
+
+public static final boolean addLinks(
+android.text.Spannable
+int)
+
+public static final boolean addLinks(
+android.text.Spannable
+java.util.regex.Pattern
+java.lang.String)
+
+public static final boolean addLinks(
+android.text.Spannable
+java.util.regex.Pattern
+java.lang.String
+android.text.util.Linkify$MatchFilter
+android.text.util.Linkify$TransformFilter)
+
+public static final boolean addLinks(
+android.widget.TextView
+int)
+
+private static final void applyLink(
+java.lang.String
+int
+int
+android.text.Spannable)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/text/util/LinkSpec;>;Landroid/text/Spannable;Ljava/util/regex/Pattern;[Ljava/lang/String;Landroid/text/util/Linkify$MatchFilter;Landroid/text/util/Linkify$TransformFilter;)V )
+private static final void gatherLinks(
+java.util.ArrayList
+android.text.Spannable
+java.util.regex.Pattern
+java.lang.String[]
+android.text.util.Linkify$MatchFilter
+android.text.util.Linkify$TransformFilter)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/text/util/LinkSpec;>;Landroid/text/Spannable;)V )
+private static final void gatherMapLinks(
+java.util.ArrayList
+android.text.Spannable)
+
+private static final java.lang.String makeUrl(
+java.lang.String
+java.lang.String[]
+java.util.regex.Matcher
+android.text.util.Linkify$TransformFilter)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/text/util/LinkSpec;>;)V )
+private static final void pruneOverlaps(
+java.util.ArrayList)
+
+________________CLASS________________
+
+
+public class android.text.util.Regex extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.util.regex.Pattern DOMAIN_NAME_PATTERN
+
+public static final java.util.regex.Pattern EMAIL_ADDRESS_PATTERN
+
+public static final java.util.regex.Pattern IP_ADDRESS_PATTERN
+
+public static final java.util.regex.Pattern PHONE_PATTERN
+
+public static final java.util.regex.Pattern TOP_LEVEL_DOMAIN_PATTERN
+
+public static final java.util.regex.Pattern WEB_URL_PATTERN
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static final java.lang.String concatGroups(
+java.util.regex.Matcher)
+
+public static final java.lang.String digitsAndPlusOnly(
+java.util.regex.Matcher)
+
+________________CLASS________________
+
+
+public class android.text.util.Rfc822Token extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.String mAddress
+
+private java.lang.String mComment
+
+private java.lang.String mName
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public static java.lang.String quoteComment(
+java.lang.String)
+
+public static java.lang.String quoteName(
+java.lang.String)
+
+public static java.lang.String quoteNameIfNecessary(
+java.lang.String)
+
+public java.lang.String getAddress()
+
+public java.lang.String getComment()
+
+public java.lang.String getName()
+
+public void setAddress(
+java.lang.String)
+
+public void setComment(
+java.lang.String)
+
+public void setName(
+java.lang.String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Tokenizer )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/MultiAutoCompleteTextView; )
+public abstract interface class android.widget.MultiAutoCompleteTextView$Tokenizer extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int findTokenEnd(
+java.lang.CharSequence
+int)
+
+public abstract int findTokenStart(
+java.lang.CharSequence
+int)
+
+public abstract java.lang.CharSequence terminateToken(
+java.lang.CharSequence)
+
+________________CLASS________________
+
+
+public class android.text.util.Rfc822Tokenizer extends java.lang.Object implements android.widget.MultiAutoCompleteTextView$Tokenizer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+private static void crunch(
+java.lang.StringBuilder)
+
+public static android.text.util.Rfc822Token[] tokenize(
+java.lang.CharSequence)
+
+public int findTokenEnd(
+java.lang.CharSequence
+int)
+
+public int findTokenStart(
+java.lang.CharSequence
+int)
+
+public java.lang.CharSequence terminateToken(
+java.lang.CharSequence)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AutoCompleteTextView; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Validator )
+public abstract interface class android.widget.AutoCompleteTextView$Validator extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.CharSequence fixText(
+java.lang.CharSequence)
+
+public abstract boolean isValid(
+java.lang.CharSequence)
+
+________________CLASS________________
+
+
+public class android.text.util.Rfc822Validator extends java.lang.Object implements android.widget.AutoCompleteTextView$Validator
+
+----------------FIELDS----------------
+
+private static final java.util.regex.Pattern EMAIL_ADDRESS_PATTERN
+
+private java.lang.String mDomain
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String)
+
+private java.lang.String removeIllegalCharacters(
+java.lang.String)
+
+public java.lang.CharSequence fixText(
+java.lang.CharSequence)
+
+public boolean isValid(
+java.lang.CharSequence)
+
+________________CLASS________________
+
+
+public final class android.util.Config extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final boolean DEBUG
+
+public static final boolean LOGD
+
+public static final boolean LOGV
+
+public static final boolean PROFILE
+
+public static final boolean RELEASE
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class android.util.MonthDisplayHelper extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.util.Calendar mCalendar
+
+private int mNumDaysInMonth
+
+private int mNumDaysInPrevMonth
+
+private int mOffset
+
+private final int mWeekStartDay
+----------------METHODS----------------
+
+public void <init>(
+int
+int)
+
+public void <init>(
+int
+int
+int)
+
+private void recalculate()
+
+public int getColumnOf(
+int)
+
+public int getDayAt(
+int
+int)
+
+public int[] getDigitsForRow(
+int)
+
+public int getFirstDayOfMonth()
+
+public int getMonth()
+
+public int getNumberOfDaysInMonth()
+
+public int getOffset()
+
+public int getRowOf(
+int)
+
+public int getWeekStartDay()
+
+public int getYear()
+
+public boolean isWithinCurrentMonth(
+int
+int)
+
+public void nextMonth()
+
+public void previousMonth()
+
+________________CLASS________________
+
+
+public class android.util.DayOfMonthCursor extends android.util.MonthDisplayHelper
+
+----------------FIELDS----------------
+
+private int mColumn
+
+private int mRow
+----------------METHODS----------------
+
+public void <init>(
+int
+int
+int
+int)
+
+public boolean down()
+
+public int getSelectedColumn()
+
+public int getSelectedDayOfMonth()
+
+public int getSelectedRow()
+
+public boolean isSelected(
+int
+int)
+
+public boolean left()
+
+public boolean right()
+
+public void setSelectedDayOfMonth(
+int)
+
+public void setSelectedRowColumn(
+int
+int)
+
+public boolean up()
+
+________________CLASS________________
+
+
+public class android.util.DebugUtils extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static boolean isObjectSelected(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class android.util.DisplayMetrics extends java.lang.Object
+
+----------------FIELDS----------------
+
+public float density
+
+public int heightPixels
+
+public float scaledDensity
+
+public int widthPixels
+
+public float xdpi
+
+public float ydpi
+----------------METHODS----------------
+
+public void <init>()
+
+public void setTo(
+android.util.DisplayMetrics)
+
+public void setToDefaults()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/util/EventLog; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =Event )
+public final class android.util.EventLog$Event extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int DATA_START
+
+private static final int LENGTH_OFFSET
+
+private static final int NANOSECONDS_OFFSET
+
+private static final int PAYLOAD_START
+
+private static final int PROCESS_OFFSET
+
+private static final int SECONDS_OFFSET
+
+private static final int TAG_OFFSET
+
+private static final int THREAD_OFFSET
+
+private final java.nio.ByteBuffer mBuffer
+----------------METHODS----------------
+
+public void <init>(
+byte[])
+
+private java.lang.Object decodeObject()
+
+public java.lang.Object getData()
+
+public int getProcessId()
+
+public int getTag()
+
+public int getThreadId()
+
+public long getTimeNanos()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =List )
+@dalvik.annotation.EnclosingClass (value =Landroid/util/EventLog; )
+public final class android.util.EventLog$List extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.Object[] mItems
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public transient void <init>(
+java.lang.Object[])
+
+public final java.lang.Object getItem(
+int)
+
+public final byte getNumItems()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/util/EventLog$Event;Landroid/util/EventLog$List; )
+public class android.util.EventLog extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final byte INT
+
+public static final byte LIST
+
+public static final byte LONG
+
+public static final byte STRING
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =([ILjava/util/Collection<Landroid/util/EventLog$Event;>;)V )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static native void readEvents(
+int[]
+java.util.Collection)
+
+public static native int writeEvent(
+int
+int)
+
+public static native int writeEvent(
+int
+long)
+
+public static native int writeEvent(
+int
+android.util.EventLog$List)
+
+public static native int writeEvent(
+int
+java.lang.String)
+
+public static transient int writeEvent(
+int
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/util/EventLogTags; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Description )
+public class android.util.EventLogTags$Description extends java.lang.Object
+
+----------------FIELDS----------------
+
+public final java.lang.String mName
+
+public final int mTag
+----------------METHODS----------------
+
+ void <init>(
+int
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/util/EventLogTags$Description; )
+public class android.util.EventLogTags extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.util.regex.Pattern COMMENT_PATTERN
+
+private static final java.lang.String TAG
+
+private static final java.lang.String TAGS_FILE
+
+private static final java.util.regex.Pattern TAG_PATTERN
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Landroid/util/EventLogTags$Description;>; )
+private final java.util.HashMap mNameMap
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Landroid/util/EventLogTags$Description;>; )
+private final java.util.HashMap mTagMap
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.BufferedReader)
+
+public android.util.EventLogTags$Description get(
+int)
+
+public android.util.EventLogTags$Description get(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.util.FloatMath extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static native float ceil(
+float)
+
+public static native float cos(
+float)
+
+public static native float floor(
+float)
+
+public static native float sin(
+float)
+
+public static native float sqrt(
+float)
+
+________________CLASS________________
+
+
+public final class android.util.Log extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ASSERT
+
+public static final int DEBUG
+
+public static final int ERROR
+
+public static final int INFO
+
+public static final int VERBOSE
+
+public static final int WARN
+----------------METHODS----------------
+
+private void <init>()
+
+public static int d(
+java.lang.String
+java.lang.String)
+
+public static int d(
+java.lang.String
+java.lang.String
+java.lang.Throwable)
+
+public static int e(
+java.lang.String
+java.lang.String)
+
+public static int e(
+java.lang.String
+java.lang.String
+java.lang.Throwable)
+
+public static java.lang.String getStackTraceString(
+java.lang.Throwable)
+
+public static int i(
+java.lang.String
+java.lang.String)
+
+public static int i(
+java.lang.String
+java.lang.String
+java.lang.Throwable)
+
+public static native boolean isLoggable(
+java.lang.String
+int)
+
+public static native int println(
+int
+java.lang.String
+java.lang.String)
+
+public static int v(
+java.lang.String
+java.lang.String)
+
+public static int v(
+java.lang.String
+java.lang.String
+java.lang.Throwable)
+
+public static int w(
+java.lang.String
+java.lang.String)
+
+public static int w(
+java.lang.String
+java.lang.String
+java.lang.Throwable)
+
+public static int w(
+java.lang.String
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public abstract interface class android.util.Printer extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void println(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.util.LogPrinter extends java.lang.Object implements android.util.Printer
+
+----------------FIELDS----------------
+
+private final int mPriority
+
+private final java.lang.String mTag
+----------------METHODS----------------
+
+public void <init>(
+int
+java.lang.String)
+
+public void println(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.util.PrintWriterPrinter extends java.lang.Object implements android.util.Printer
+
+----------------FIELDS----------------
+
+private final java.io.PrintWriter mPW
+----------------METHODS----------------
+
+public void <init>(
+java.io.PrintWriter)
+
+public void println(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object; )
+public class android.util.SparseArray extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.Object DELETED
+
+private boolean mGarbage
+
+private int[] mKeys
+
+private int mSize
+
+private java.lang.Object[] mValues
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int)
+
+private static int binarySearch(
+int[]
+int
+int
+int)
+
+private void checkIntegrity()
+
+private void gc()
+@dalvik.annotation.Signature (value =(ITE;)V )
+public void append(
+int
+java.lang.Object)
+
+public void clear()
+
+public void delete(
+int)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object get(
+int)
+@dalvik.annotation.Signature (value =(ITE;)TE; )
+public java.lang.Object get(
+int
+java.lang.Object)
+
+public int indexOfKey(
+int)
+@dalvik.annotation.Signature (value =(TE;)I )
+public int indexOfValue(
+java.lang.Object)
+
+public int keyAt(
+int)
+@dalvik.annotation.Signature (value =(ITE;)V )
+public void put(
+int
+java.lang.Object)
+
+public void remove(
+int)
+@dalvik.annotation.Signature (value =(ITE;)V )
+public void setValueAt(
+int
+java.lang.Object)
+
+public int size()
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object valueAt(
+int)
+
+________________CLASS________________
+
+
+public class android.util.SparseBooleanArray extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int[] mKeys
+
+private int mSize
+
+private boolean[] mValues
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+private static int binarySearch(
+int[]
+int
+int
+int)
+
+private void checkIntegrity()
+
+public void append(
+int
+boolean)
+
+public void clear()
+
+public void delete(
+int)
+
+public boolean get(
+int)
+
+public boolean get(
+int
+boolean)
+
+public int indexOfKey(
+int)
+
+public int indexOfValue(
+boolean)
+
+public int keyAt(
+int)
+
+public void put(
+int
+boolean)
+
+public int size()
+
+public boolean valueAt(
+int)
+
+________________CLASS________________
+
+
+public class android.util.SparseIntArray extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int[] mKeys
+
+private int mSize
+
+private int[] mValues
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+private static int binarySearch(
+int[]
+int
+int
+int)
+
+private void checkIntegrity()
+
+public void append(
+int
+int)
+
+public void clear()
+
+public void delete(
+int)
+
+public int get(
+int)
+
+public int get(
+int
+int)
+
+public int indexOfKey(
+int)
+
+public int indexOfValue(
+int)
+
+public int keyAt(
+int)
+
+public void put(
+int
+int)
+
+public int size()
+
+public int valueAt(
+int)
+
+________________CLASS________________
+
+
+public class android.util.StateSet extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int[] WILD_CARD
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.lang.String dump(
+int[])
+
+public static boolean isWildCard(
+int[])
+
+public static boolean stateSetMatches(
+int[]
+int)
+
+public static boolean stateSetMatches(
+int[]
+int[])
+
+public static int[] trimStateSet(
+int[]
+int)
+
+________________CLASS________________
+
+
+public class android.util.StringBuilderPrinter extends java.lang.Object implements android.util.Printer
+
+----------------FIELDS----------------
+
+private final java.lang.StringBuilder mBuilder
+----------------METHODS----------------
+
+public void <init>(
+java.lang.StringBuilder)
+
+public void println(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.util.TimeFormatException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.util.TimeUtils extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.util.TimeZone getTimeZone(
+int
+boolean
+long
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.util.TimingLogger extends java.lang.Object
+
+----------------FIELDS----------------
+
+private boolean mDisabled
+
+private java.lang.String mLabel
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+ java.util.ArrayList mSplitLabels
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/Long;>; )
+ java.util.ArrayList mSplits
+
+private java.lang.String mTag
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public void addSplit(
+java.lang.String)
+
+public void dumpToLog()
+
+public void reset()
+
+public void reset(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.util.TypedValue extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int COMPLEX_MANTISSA_MASK
+
+public static final int COMPLEX_MANTISSA_SHIFT
+
+public static final int COMPLEX_RADIX_0p23
+
+public static final int COMPLEX_RADIX_16p7
+
+public static final int COMPLEX_RADIX_23p0
+
+public static final int COMPLEX_RADIX_8p15
+
+public static final int COMPLEX_RADIX_MASK
+
+public static final int COMPLEX_RADIX_SHIFT
+
+public static final int COMPLEX_UNIT_DIP
+
+public static final int COMPLEX_UNIT_FRACTION
+
+public static final int COMPLEX_UNIT_FRACTION_PARENT
+
+public static final int COMPLEX_UNIT_IN
+
+public static final int COMPLEX_UNIT_MASK
+
+public static final int COMPLEX_UNIT_MM
+
+public static final int COMPLEX_UNIT_PT
+
+public static final int COMPLEX_UNIT_PX
+
+public static final int COMPLEX_UNIT_SHIFT
+
+public static final int COMPLEX_UNIT_SP
+
+private static final java.lang.String[] DIMENSION_UNIT_STRS
+
+private static final java.lang.String[] FRACTION_UNIT_STRS
+
+private static final float MANTISSA_MULT
+
+private static final float[] RADIX_MULTS
+
+public static final int TYPE_ATTRIBUTE
+
+public static final int TYPE_DIMENSION
+
+public static final int TYPE_FIRST_COLOR_INT
+
+public static final int TYPE_FIRST_INT
+
+public static final int TYPE_FLOAT
+
+public static final int TYPE_FRACTION
+
+public static final int TYPE_INT_BOOLEAN
+
+public static final int TYPE_INT_COLOR_ARGB4
+
+public static final int TYPE_INT_COLOR_ARGB8
+
+public static final int TYPE_INT_COLOR_RGB4
+
+public static final int TYPE_INT_COLOR_RGB8
+
+public static final int TYPE_INT_DEC
+
+public static final int TYPE_INT_HEX
+
+public static final int TYPE_LAST_COLOR_INT
+
+public static final int TYPE_LAST_INT
+
+public static final int TYPE_NULL
+
+public static final int TYPE_REFERENCE
+
+public static final int TYPE_STRING
+
+public int assetCookie
+
+public int changingConfigurations
+
+public int data
+
+public int resourceId
+
+public java.lang.CharSequence string
+
+public int type
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static float applyDimension(
+int
+float
+android.util.DisplayMetrics)
+
+public static final java.lang.String coerceToString(
+int
+int)
+
+public static float complexToDimension(
+int
+android.util.DisplayMetrics)
+
+public static float complexToDimensionNoisy(
+int
+android.util.DisplayMetrics)
+
+public static int complexToDimensionPixelOffset(
+int
+android.util.DisplayMetrics)
+
+public static int complexToDimensionPixelSize(
+int
+android.util.DisplayMetrics)
+
+public static float complexToFloat(
+int)
+
+public static float complexToFraction(
+int
+float
+float)
+
+public final java.lang.CharSequence coerceToString()
+
+public float getDimension(
+android.util.DisplayMetrics)
+
+public final float getFloat()
+
+public float getFraction(
+float
+float)
+
+public void setTo(
+android.util.TypedValue)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/util/Xml; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/util/Xml$Encoding;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Encoding )
+public final class android.util.Xml$Encoding extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.util.Xml$Encoding[] $VALUES
+
+public static final android.util.Xml$Encoding ISO_8859_1
+
+public static final android.util.Xml$Encoding US_ASCII
+
+public static final android.util.Xml$Encoding UTF_16
+
+public static final android.util.Xml$Encoding UTF_8
+
+final java.lang.String expatName
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)V )
+private void <init>(
+java.lang.String
+int
+java.lang.String)
+
+public static android.util.Xml$Encoding valueOf(
+java.lang.String)
+
+public static android.util.Xml$Encoding[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/util/Xml; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =XmlSerializerFactory )
+ class android.util.Xml$XmlSerializerFactory extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final java.lang.String TYPE
+
+static final org.xmlpull.v1.XmlPullParserFactory instance
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/util/Xml$Encoding;Landroid/util/Xml$XmlSerializerFactory; )
+public class android.util.Xml extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static java.lang.String FEATURE_RELAXED
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.util.AttributeSet asAttributeSet(
+org.xmlpull.v1.XmlPullParser)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public static android.util.Xml$Encoding findEncodingByName(
+java.lang.String)
+
+public static org.xmlpull.v1.XmlPullParser newPullParser()
+
+public static org.xmlpull.v1.XmlSerializer newSerializer()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+public static void parse(
+java.io.InputStream
+android.util.Xml$Encoding
+org.xml.sax.ContentHandler)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+public static void parse(
+java.io.Reader
+org.xml.sax.ContentHandler)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public static void parse(
+java.lang.String
+org.xml.sax.ContentHandler)
+
+________________CLASS________________
+
+
+ class android.util.XmlPullAttributes extends java.lang.Object implements android.util.AttributeSet
+
+----------------FIELDS----------------
+
+private org.xmlpull.v1.XmlPullParser mParser
+----------------METHODS----------------
+
+public void <init>(
+org.xmlpull.v1.XmlPullParser)
+
+public boolean getAttributeBooleanValue(
+int
+boolean)
+
+public boolean getAttributeBooleanValue(
+java.lang.String
+java.lang.String
+boolean)
+
+public int getAttributeCount()
+
+public float getAttributeFloatValue(
+int
+float)
+
+public float getAttributeFloatValue(
+java.lang.String
+java.lang.String
+float)
+
+public int getAttributeIntValue(
+int
+int)
+
+public int getAttributeIntValue(
+java.lang.String
+java.lang.String
+int)
+
+public int getAttributeListValue(
+int
+java.lang.String[]
+int)
+
+public int getAttributeListValue(
+java.lang.String
+java.lang.String
+java.lang.String[]
+int)
+
+public java.lang.String getAttributeName(
+int)
+
+public int getAttributeNameResource(
+int)
+
+public int getAttributeResourceValue(
+int
+int)
+
+public int getAttributeResourceValue(
+java.lang.String
+java.lang.String
+int)
+
+public int getAttributeUnsignedIntValue(
+int
+int)
+
+public int getAttributeUnsignedIntValue(
+java.lang.String
+java.lang.String
+int)
+
+public java.lang.String getAttributeValue(
+int)
+
+public java.lang.String getAttributeValue(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getClassAttribute()
+
+public java.lang.String getIdAttribute()
+
+public int getIdAttributeResourceValue(
+int)
+
+public java.lang.String getPositionDescription()
+
+public int getStyleAttribute()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/AbsSavedState; )
+final class android.view.AbsSavedState$1 extends android.view.AbsSavedState
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/AbsSavedState; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/view/AbsSavedState;>; )
+final class android.view.AbsSavedState$2 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.view.AbsSavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.view.AbsSavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ContextMenu; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ContextMenuInfo )
+public abstract interface class android.view.ContextMenu$ContextMenuInfo extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class android.view.Menu extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CATEGORY_ALTERNATIVE
+
+public static final int CATEGORY_CONTAINER
+
+public static final int CATEGORY_MASK
+
+public static final int CATEGORY_SECONDARY
+
+public static final int CATEGORY_SHIFT
+
+public static final int CATEGORY_SYSTEM
+
+public static final int FIRST
+
+public static final int FLAG_ALWAYS_PERFORM_CLOSE
+
+public static final int FLAG_APPEND_TO_GROUP
+
+public static final int FLAG_PERFORM_NO_CLOSE
+
+public static final int NONE
+
+public static final int USER_MASK
+
+public static final int USER_SHIFT
+----------------METHODS----------------
+
+public abstract android.view.MenuItem add(
+int)
+
+public abstract android.view.MenuItem add(
+int
+int
+int
+int)
+
+public abstract android.view.MenuItem add(
+int
+int
+int
+java.lang.CharSequence)
+
+public abstract android.view.MenuItem add(
+java.lang.CharSequence)
+
+public abstract int addIntentOptions(
+int
+int
+int
+android.content.ComponentName
+android.content.Intent[]
+android.content.Intent
+int
+android.view.MenuItem[])
+
+public abstract android.view.SubMenu addSubMenu(
+int)
+
+public abstract android.view.SubMenu addSubMenu(
+int
+int
+int
+int)
+
+public abstract android.view.SubMenu addSubMenu(
+int
+int
+int
+java.lang.CharSequence)
+
+public abstract android.view.SubMenu addSubMenu(
+java.lang.CharSequence)
+
+public abstract void clear()
+
+public abstract android.view.MenuItem findItem(
+int)
+
+public abstract boolean hasVisibleItems()
+
+public abstract boolean isShortcutKey(
+int
+android.view.KeyEvent)
+
+public abstract boolean performIdentifierAction(
+int
+int)
+
+public abstract boolean performShortcut(
+int
+android.view.KeyEvent
+int)
+
+public abstract void removeGroup(
+int)
+
+public abstract void removeItem(
+int)
+
+public abstract void setGroupCheckable(
+int
+boolean
+boolean)
+
+public abstract void setGroupEnabled(
+int
+boolean)
+
+public abstract void setGroupVisible(
+int
+boolean)
+
+public abstract void setQwertyMode(
+boolean)
+
+public abstract int size()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/ContextMenu$ContextMenuInfo; )
+public abstract interface class android.view.ContextMenu extends java.lang.Object implements android.view.Menu
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void clearHeader()
+
+public abstract android.view.ContextMenu setHeaderIcon(
+int)
+
+public abstract android.view.ContextMenu setHeaderIcon(
+android.graphics.drawable.Drawable)
+
+public abstract android.view.ContextMenu setHeaderTitle(
+int)
+
+public abstract android.view.ContextMenu setHeaderTitle(
+java.lang.CharSequence)
+
+public abstract android.view.ContextMenu setHeaderView(
+android.view.View)
+
+________________CLASS________________
+
+
+public class android.view.Display extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int DEFAULT_DISPLAY
+
+private static boolean mInitialized
+
+private static final java.lang.Object mStaticInit
+
+private float mDensity
+
+private int mDisplay
+
+private float mDpiX
+
+private float mDpiY
+
+private int mPixelFormat
+
+private float mRefreshRate
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+int)
+
+static native int getDisplayCount()
+
+private native void init(
+int)
+
+private static native void nativeClassInit()
+
+public int getDisplayId()
+
+public native int getHeight()
+
+public void getMetrics(
+android.util.DisplayMetrics)
+
+public native int getOrientation()
+
+public int getPixelFormat()
+
+public float getRefreshRate()
+
+public native int getWidth()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/ThreadLocal<Landroid/view/FocusFinder;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/FocusFinder; )
+final class android.view.FocusFinder$1 extends java.lang.ThreadLocal
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+protected android.view.FocusFinder initialValue()
+
+protected volatile java.lang.Object initialValue()
+
+________________CLASS________________
+
+
+public class android.view.FocusFinder extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/lang/ThreadLocal<Landroid/view/FocusFinder;>; )
+private static java.lang.ThreadLocal tlFocusFinder
+
+ android.graphics.Rect mBestCandidateRect
+
+ android.graphics.Rect mFocusedRect
+
+ android.graphics.Rect mOtherRect
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+ void <init>(
+android.view.FocusFinder$1)
+
+private android.view.View findNextFocus(
+android.view.ViewGroup
+android.view.View
+android.graphics.Rect
+int)
+
+public static android.view.FocusFinder getInstance()
+
+private boolean isTouchCandidate(
+int
+int
+android.graphics.Rect
+int)
+
+static int majorAxisDistance(
+int
+android.graphics.Rect
+android.graphics.Rect)
+
+static int majorAxisDistanceRaw(
+int
+android.graphics.Rect
+android.graphics.Rect)
+
+static int majorAxisDistanceToFarEdge(
+int
+android.graphics.Rect
+android.graphics.Rect)
+
+static int majorAxisDistanceToFarEdgeRaw(
+int
+android.graphics.Rect
+android.graphics.Rect)
+
+static int minorAxisDistance(
+int
+android.graphics.Rect
+android.graphics.Rect)
+
+ boolean beamBeats(
+int
+android.graphics.Rect
+android.graphics.Rect
+android.graphics.Rect)
+
+ boolean beamsOverlap(
+int
+android.graphics.Rect
+android.graphics.Rect)
+
+public android.view.View findNearestTouchable(
+android.view.ViewGroup
+int
+int
+int
+int[])
+
+public final android.view.View findNextFocus(
+android.view.ViewGroup
+android.view.View
+int)
+
+public android.view.View findNextFocusFromRect(
+android.view.ViewGroup
+android.graphics.Rect
+int)
+
+ int getWeightedDistanceFor(
+int
+int)
+
+ boolean isBetterCandidate(
+int
+android.graphics.Rect
+android.graphics.Rect
+android.graphics.Rect)
+
+ boolean isCandidate(
+android.graphics.Rect
+android.graphics.Rect
+int)
+
+ boolean isToDirectionOf(
+int
+android.graphics.Rect
+android.graphics.Rect)
+
+________________CLASS________________
+
+
+public class android.view.FocusFinderHelper extends java.lang.Object
+
+----------------FIELDS----------------
+
+private android.view.FocusFinder mFocusFinder
+----------------METHODS----------------
+
+public void <init>(
+android.view.FocusFinder)
+
+public static int majorAxisDistance(
+int
+android.graphics.Rect
+android.graphics.Rect)
+
+public static int majorAxisDistanceToFarEdge(
+int
+android.graphics.Rect
+android.graphics.Rect)
+
+public boolean beamBeats(
+int
+android.graphics.Rect
+android.graphics.Rect
+android.graphics.Rect)
+
+public boolean beamsOverlap(
+int
+android.graphics.Rect
+android.graphics.Rect)
+
+public boolean isBetterCandidate(
+int
+android.graphics.Rect
+android.graphics.Rect
+android.graphics.Rect)
+
+public boolean isCandidate(
+android.graphics.Rect
+android.graphics.Rect
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =GestureHandler )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/GestureDetector; )
+ class android.view.GestureDetector$GestureHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.view.GestureDetector this$0
+----------------METHODS----------------
+
+ void <init>(
+android.view.GestureDetector)
+
+ void <init>(
+android.view.GestureDetector
+android.os.Handler)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/GestureDetector; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnGestureListener )
+public abstract interface class android.view.GestureDetector$OnGestureListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean onDown(
+android.view.MotionEvent)
+
+public abstract boolean onFling(
+android.view.MotionEvent
+android.view.MotionEvent
+float
+float)
+
+public abstract void onLongPress(
+android.view.MotionEvent)
+
+public abstract boolean onScroll(
+android.view.MotionEvent
+android.view.MotionEvent
+float
+float)
+
+public abstract void onShowPress(
+android.view.MotionEvent)
+
+public abstract boolean onSingleTapUp(
+android.view.MotionEvent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =SimpleOnGestureListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/GestureDetector; )
+public class android.view.GestureDetector$SimpleOnGestureListener extends java.lang.Object implements android.view.GestureDetector$OnGestureListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean onDown(
+android.view.MotionEvent)
+
+public boolean onFling(
+android.view.MotionEvent
+android.view.MotionEvent
+float
+float)
+
+public void onLongPress(
+android.view.MotionEvent)
+
+public boolean onScroll(
+android.view.MotionEvent
+android.view.MotionEvent
+float
+float)
+
+public void onShowPress(
+android.view.MotionEvent)
+
+public boolean onSingleTapUp(
+android.view.MotionEvent)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/GestureDetector$GestureHandler;Landroid/view/GestureDetector$SimpleOnGestureListener;Landroid/view/GestureDetector$OnGestureListener; )
+public class android.view.GestureDetector extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int LONG_PRESS
+
+private static final int SHOW_PRESS
+
+private static final int TOUCH_SLOP_SQUARE
+
+private boolean mAlwaysInTapRegion
+
+private android.view.MotionEvent mCurrentDownEvent
+
+private android.view.MotionEvent mCurrentUpEvent
+
+private final android.os.Handler mHandler
+
+private boolean mInLongPress
+
+private boolean mIsLongpressEnabled
+
+private float mLastMotionX
+
+private float mLastMotionY
+
+private final android.view.GestureDetector$OnGestureListener mListener
+
+private android.view.VelocityTracker mVelocityTracker
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.view.GestureDetector$OnGestureListener)
+
+public void <init>(
+android.view.GestureDetector$OnGestureListener
+android.os.Handler)
+
+static android.view.MotionEvent access$000(
+android.view.GestureDetector)
+
+static android.view.GestureDetector$OnGestureListener access$100(
+android.view.GestureDetector)
+
+static void access$200(
+android.view.GestureDetector)
+
+private void dispatchLongPress()
+
+private void init()
+
+public boolean isLongpressEnabled()
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+public void setIsLongpressEnabled(
+boolean)
+
+________________CLASS________________
+
+
+public class android.view.Gravity extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int AXIS_PULL_AFTER
+
+public static final int AXIS_PULL_BEFORE
+
+public static final int AXIS_SPECIFIED
+
+public static final int AXIS_X_SHIFT
+
+public static final int AXIS_Y_SHIFT
+
+public static final int BOTTOM
+
+public static final int CENTER
+
+public static final int CENTER_HORIZONTAL
+
+public static final int CENTER_VERTICAL
+
+public static final int FILL
+
+public static final int FILL_HORIZONTAL
+
+public static final int FILL_VERTICAL
+
+public static final int HORIZONTAL_GRAVITY_MASK
+
+public static final int LEFT
+
+public static final int NO_GRAVITY
+
+public static final int RIGHT
+
+public static final int TOP
+
+public static final int VERTICAL_GRAVITY_MASK
+----------------METHODS----------------
+
+public void <init>()
+
+public static void apply(
+int
+int
+int
+android.graphics.Rect
+int
+int
+android.graphics.Rect)
+
+public static void apply(
+int
+int
+int
+android.graphics.Rect
+android.graphics.Rect)
+
+private static int applyMovement(
+int
+int
+int
+int
+int)
+
+public static boolean isHorizontal(
+int)
+
+public static boolean isVertical(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/IApplicationToken$Stub; )
+public abstract interface class android.view.IApplicationToken extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract long getKeyDispatchingTimeout()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean keyDispatchingTimedOut()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void windowsGone()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void windowsVisible()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/IApplicationToken$Stub; )
+ class android.view.IApplicationToken$Stub$Proxy extends java.lang.Object implements android.view.IApplicationToken
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public long getKeyDispatchingTimeout()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean keyDispatchingTimedOut()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void windowsGone()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void windowsVisible()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/IApplicationToken$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/IApplicationToken; )
+public abstract class android.view.IApplicationToken$Stub extends android.os.Binder implements android.view.IApplicationToken
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_getKeyDispatchingTimeout
+
+static final int TRANSACTION_keyDispatchingTimedOut
+
+static final int TRANSACTION_windowsGone
+
+static final int TRANSACTION_windowsVisible
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.view.IApplicationToken asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/IOnKeyguardExitResult$Stub; )
+ class android.view.IOnKeyguardExitResult$Stub$Proxy extends java.lang.Object implements android.view.IOnKeyguardExitResult
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onKeyguardExitResult(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/IRotationWatcher$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class android.view.IRotationWatcher$Stub$Proxy extends java.lang.Object implements android.view.IRotationWatcher
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onRotationChanged(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/IWindow$Stub; )
+public abstract interface class android.view.IWindow extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void dispatchAppVisibility(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void dispatchGetNewSurface()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void dispatchKey(
+android.view.KeyEvent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void dispatchPointer(
+android.view.MotionEvent
+long)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void dispatchTrackball(
+android.view.MotionEvent
+long)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void executeCommand(
+java.lang.String
+java.lang.String
+android.os.ParcelFileDescriptor)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void resized(
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void windowFocusChanged(
+boolean
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/IWindow$Stub; )
+ class android.view.IWindow$Stub$Proxy extends java.lang.Object implements android.view.IWindow
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void dispatchAppVisibility(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void dispatchGetNewSurface()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void dispatchKey(
+android.view.KeyEvent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void dispatchPointer(
+android.view.MotionEvent
+long)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void dispatchTrackball(
+android.view.MotionEvent
+long)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void executeCommand(
+java.lang.String
+java.lang.String
+android.os.ParcelFileDescriptor)
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void resized(
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void windowFocusChanged(
+boolean
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.MemberClasses (value =Landroid/view/IWindow$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/IWindow; )
+public abstract class android.view.IWindow$Stub extends android.os.Binder implements android.view.IWindow
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_dispatchAppVisibility
+
+static final int TRANSACTION_dispatchGetNewSurface
+
+static final int TRANSACTION_dispatchKey
+
+static final int TRANSACTION_dispatchPointer
+
+static final int TRANSACTION_dispatchTrackball
+
+static final int TRANSACTION_executeCommand
+
+static final int TRANSACTION_resized
+
+static final int TRANSACTION_windowFocusChanged
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.view.IWindow asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/IWindowManager$Stub; )
+public abstract interface class android.view.IWindowManager extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void addAppToken(
+int
+android.view.IApplicationToken
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void disableKeyguard(
+android.os.IBinder
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void executeAppTransition()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void exitKeyguardSecurely(
+android.view.IOnKeyguardExitResult)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract float getAnimationScale(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract float[] getAnimationScales()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getAppOrientation(
+android.view.IApplicationToken)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getKeycodeState(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getKeycodeStateForDevice(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getRotation()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getScancodeState(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getScancodeStateForDevice(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getSwitchState(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getSwitchStateForDevice(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean inKeyguardRestrictedInputMode()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean injectKeyEvent(
+android.view.KeyEvent
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean injectPointerEvent(
+android.view.MotionEvent
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean injectTrackballEvent(
+android.view.MotionEvent
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean isViewServerRunning()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void moveAppToken(
+int
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/os/IBinder;>;)V )
+public abstract void moveAppTokensToBottom(
+java.util.List)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/os/IBinder;>;)V )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void moveAppTokensToTop(
+java.util.List)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.view.IWindowSession openSession(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void pauseKeyDispatching(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void prepareAppTransition(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void reenableKeyguard(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void removeAppToken(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void resumeKeyDispatching(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setAnimationScale(
+int
+float)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setAnimationScales(
+float[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setAppGroupId(
+android.os.IBinder
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setAppOrientation(
+android.view.IApplicationToken
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setAppStartingWindow(
+android.os.IBinder
+java.lang.String
+int
+java.lang.CharSequence
+int
+int
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setAppVisibility(
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setAppWillBeHidden(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setEventDispatching(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setFocusedApp(
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setInTouchMode(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setRotation(
+int
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void startAppFreezingScreen(
+android.os.IBinder
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean startViewServer(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void stopAppFreezingScreen(
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean stopViewServer()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.content.res.Configuration updateOrientationFromAppTokens(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int watchRotation(
+android.view.IRotationWatcher)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/IWindowManager$Stub; )
+ class android.view.IWindowManager$Stub$Proxy extends java.lang.Object implements android.view.IWindowManager
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void addAppToken(
+int
+android.view.IApplicationToken
+int
+int
+boolean)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void disableKeyguard(
+android.os.IBinder
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void executeAppTransition()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void exitKeyguardSecurely(
+android.view.IOnKeyguardExitResult)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public float getAnimationScale(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public float[] getAnimationScales()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getAppOrientation(
+android.view.IApplicationToken)
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getKeycodeState(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getKeycodeStateForDevice(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getRotation()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getScancodeState(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getScancodeStateForDevice(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getSwitchState(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getSwitchStateForDevice(
+int
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean inKeyguardRestrictedInputMode()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean injectKeyEvent(
+android.view.KeyEvent
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean injectPointerEvent(
+android.view.MotionEvent
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean injectTrackballEvent(
+android.view.MotionEvent
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean isViewServerRunning()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void moveAppToken(
+int
+android.os.IBinder)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/os/IBinder;>;)V )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void moveAppTokensToBottom(
+java.util.List)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/os/IBinder;>;)V )
+public void moveAppTokensToTop(
+java.util.List)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.view.IWindowSession openSession(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void pauseKeyDispatching(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void prepareAppTransition(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void reenableKeyguard(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void removeAppToken(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void resumeKeyDispatching(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setAnimationScale(
+int
+float)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setAnimationScales(
+float[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setAppGroupId(
+android.os.IBinder
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setAppOrientation(
+android.view.IApplicationToken
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setAppStartingWindow(
+android.os.IBinder
+java.lang.String
+int
+java.lang.CharSequence
+int
+int
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setAppVisibility(
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setAppWillBeHidden(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setEventDispatching(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setFocusedApp(
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setInTouchMode(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setRotation(
+int
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void startAppFreezingScreen(
+android.os.IBinder
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean startViewServer(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void stopAppFreezingScreen(
+android.os.IBinder
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean stopViewServer()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.content.res.Configuration updateOrientationFromAppTokens(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int watchRotation(
+android.view.IRotationWatcher)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/IWindowManager$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/IWindowManager; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class android.view.IWindowManager$Stub extends android.os.Binder implements android.view.IWindowManager
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_addAppToken
+
+static final int TRANSACTION_disableKeyguard
+
+static final int TRANSACTION_executeAppTransition
+
+static final int TRANSACTION_exitKeyguardSecurely
+
+static final int TRANSACTION_getAnimationScale
+
+static final int TRANSACTION_getAnimationScales
+
+static final int TRANSACTION_getAppOrientation
+
+static final int TRANSACTION_getKeycodeState
+
+static final int TRANSACTION_getKeycodeStateForDevice
+
+static final int TRANSACTION_getRotation
+
+static final int TRANSACTION_getScancodeState
+
+static final int TRANSACTION_getScancodeStateForDevice
+
+static final int TRANSACTION_getSwitchState
+
+static final int TRANSACTION_getSwitchStateForDevice
+
+static final int TRANSACTION_inKeyguardRestrictedInputMode
+
+static final int TRANSACTION_injectKeyEvent
+
+static final int TRANSACTION_injectPointerEvent
+
+static final int TRANSACTION_injectTrackballEvent
+
+static final int TRANSACTION_isViewServerRunning
+
+static final int TRANSACTION_moveAppToken
+
+static final int TRANSACTION_moveAppTokensToBottom
+
+static final int TRANSACTION_moveAppTokensToTop
+
+static final int TRANSACTION_openSession
+
+static final int TRANSACTION_pauseKeyDispatching
+
+static final int TRANSACTION_prepareAppTransition
+
+static final int TRANSACTION_reenableKeyguard
+
+static final int TRANSACTION_removeAppToken
+
+static final int TRANSACTION_resumeKeyDispatching
+
+static final int TRANSACTION_setAnimationScale
+
+static final int TRANSACTION_setAnimationScales
+
+static final int TRANSACTION_setAppGroupId
+
+static final int TRANSACTION_setAppOrientation
+
+static final int TRANSACTION_setAppStartingWindow
+
+static final int TRANSACTION_setAppVisibility
+
+static final int TRANSACTION_setAppWillBeHidden
+
+static final int TRANSACTION_setEventDispatching
+
+static final int TRANSACTION_setFocusedApp
+
+static final int TRANSACTION_setInTouchMode
+
+static final int TRANSACTION_setRotation
+
+static final int TRANSACTION_startAppFreezingScreen
+
+static final int TRANSACTION_startViewServer
+
+static final int TRANSACTION_stopAppFreezingScreen
+
+static final int TRANSACTION_stopViewServer
+
+static final int TRANSACTION_updateOrientationFromAppTokens
+
+static final int TRANSACTION_watchRotation
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.view.IWindowManager asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/IWindowSession$Stub; )
+public abstract interface class android.view.IWindowSession extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int add(
+android.view.IWindow
+android.view.WindowManager$LayoutParams
+int
+android.graphics.Rect)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void finishDrawing(
+android.view.IWindow)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void finishKey(
+android.view.IWindow)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean getInTouchMode()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.view.MotionEvent getPendingPointerMove(
+android.view.IWindow)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.view.MotionEvent getPendingTrackballMove(
+android.view.IWindow)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int relayout(
+android.view.IWindow
+android.view.WindowManager$LayoutParams
+int
+int
+int
+android.graphics.Rect
+android.graphics.Rect
+android.view.Surface)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void remove(
+android.view.IWindow)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setInTouchMode(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setTransparentRegion(
+android.view.IWindow
+android.graphics.Region)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/IWindowSession$Stub; )
+ class android.view.IWindowSession$Stub$Proxy extends java.lang.Object implements android.view.IWindowSession
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int add(
+android.view.IWindow
+android.view.WindowManager$LayoutParams
+int
+android.graphics.Rect)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void finishDrawing(
+android.view.IWindow)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void finishKey(
+android.view.IWindow)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean getInTouchMode()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.view.MotionEvent getPendingPointerMove(
+android.view.IWindow)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.view.MotionEvent getPendingTrackballMove(
+android.view.IWindow)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int relayout(
+android.view.IWindow
+android.view.WindowManager$LayoutParams
+int
+int
+int
+android.graphics.Rect
+android.graphics.Rect
+android.view.Surface)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void remove(
+android.view.IWindow)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setInTouchMode(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setTransparentRegion(
+android.view.IWindow
+android.graphics.Region)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.MemberClasses (value =Landroid/view/IWindowSession$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/IWindowSession; )
+public abstract class android.view.IWindowSession$Stub extends android.os.Binder implements android.view.IWindowSession
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_add
+
+static final int TRANSACTION_finishDrawing
+
+static final int TRANSACTION_finishKey
+
+static final int TRANSACTION_getInTouchMode
+
+static final int TRANSACTION_getPendingPointerMove
+
+static final int TRANSACTION_getPendingTrackballMove
+
+static final int TRANSACTION_relayout
+
+static final int TRANSACTION_remove
+
+static final int TRANSACTION_setInTouchMode
+
+static final int TRANSACTION_setTransparentRegion
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.view.IWindowSession asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class android.view.InflateException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/KeyCharacterMap; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =KeyData )
+public class android.view.KeyCharacterMap$KeyData extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int META_LENGTH
+
+public char displayLabel
+
+public char[] meta
+
+public char number
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/KeyCharacterMap$KeyData; )
+public class android.view.KeyCharacterMap extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int ACUTE
+
+public static final int ALPHA
+
+public static final int BUILT_IN_KEYBOARD
+
+private static final int CIRCUMFLEX
+
+private static android.util.SparseIntArray COMBINING
+
+public static final int COMBINING_ACCENT
+
+public static final int COMBINING_ACCENT_MASK
+
+private static android.util.SparseIntArray DEAD
+
+private static final int GRAVE
+
+public static final char HEX_INPUT
+
+public static final int NUMERIC
+
+public static final char PICKER_DIALOG_INPUT
+
+public static final int PREDICTIVE
+
+private static final int TILDE
+
+private static final int UMLAUT
+@dalvik.annotation.Signature (value =Landroid/util/SparseArray<Ljava/lang/ref/WeakReference<Landroid/view/KeyCharacterMap;>;>; )
+private static android.util.SparseArray sInstances
+
+private static java.lang.Object sLock
+
+private int mKeyboardDevice
+
+private int mPointer
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+int)
+
+private static native int ctor_native(
+int)
+
+private static native void dtor_native(
+int)
+
+public static int getDeadChar(
+int
+int)
+
+private static native char getDisplayLabel_native(
+int
+int)
+
+private static native long[] getEvents_native(
+int
+char[])
+
+private static native boolean getKeyData_native(
+int
+int
+android.view.KeyCharacterMap$KeyData)
+
+private static native int getKeyboardType_native(
+int)
+
+private static native char getMatch_native(
+int
+int
+char[]
+int)
+
+private static native char getNumber_native(
+int
+int)
+
+private static native char get_native(
+int
+int
+int)
+
+public static android.view.KeyCharacterMap load(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public int get(
+int
+int)
+
+public char getDisplayLabel(
+int)
+
+public android.view.KeyEvent[] getEvents(
+char[])
+
+public boolean getKeyData(
+int
+android.view.KeyCharacterMap$KeyData)
+
+public int getKeyboardType()
+
+public char getMatch(
+int
+char[])
+
+public char getMatch(
+int
+char[]
+int)
+
+public char getNumber(
+int)
+
+public boolean isPrintingKey(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/view/KeyEvent;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/KeyEvent; )
+final class android.view.KeyEvent$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.view.KeyEvent createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.view.KeyEvent[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/KeyEvent$Callback; )
+public class android.view.KeyEvent extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+
+public static final int ACTION_DOWN
+
+public static final int ACTION_MULTIPLE
+
+public static final int ACTION_UP
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/view/KeyEvent;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final int FLAG_WOKE_HERE
+
+public static final int KEYCODE_0
+
+public static final int KEYCODE_1
+
+public static final int KEYCODE_2
+
+public static final int KEYCODE_3
+
+public static final int KEYCODE_4
+
+public static final int KEYCODE_5
+
+public static final int KEYCODE_6
+
+public static final int KEYCODE_7
+
+public static final int KEYCODE_8
+
+public static final int KEYCODE_9
+
+public static final int KEYCODE_A
+
+public static final int KEYCODE_ALT_LEFT
+
+public static final int KEYCODE_ALT_RIGHT
+
+public static final int KEYCODE_APOSTROPHE
+
+public static final int KEYCODE_AT
+
+public static final int KEYCODE_B
+
+public static final int KEYCODE_BACK
+
+public static final int KEYCODE_BACKSLASH
+
+public static final int KEYCODE_C
+
+public static final int KEYCODE_CALL
+
+public static final int KEYCODE_CAMERA
+
+public static final int KEYCODE_CLEAR
+
+public static final int KEYCODE_COMMA
+
+public static final int KEYCODE_D
+
+public static final int KEYCODE_DEL
+
+public static final int KEYCODE_DPAD_CENTER
+
+public static final int KEYCODE_DPAD_DOWN
+
+public static final int KEYCODE_DPAD_LEFT
+
+public static final int KEYCODE_DPAD_RIGHT
+
+public static final int KEYCODE_DPAD_UP
+
+public static final int KEYCODE_E
+
+public static final int KEYCODE_ENDCALL
+
+public static final int KEYCODE_ENTER
+
+public static final int KEYCODE_ENVELOPE
+
+public static final int KEYCODE_EQUALS
+
+public static final int KEYCODE_EXPLORER
+
+public static final int KEYCODE_F
+
+public static final int KEYCODE_FOCUS
+
+public static final int KEYCODE_G
+
+public static final int KEYCODE_GRAVE
+
+public static final int KEYCODE_H
+
+public static final int KEYCODE_HEADSETHOOK
+
+public static final int KEYCODE_HOME
+
+public static final int KEYCODE_I
+
+public static final int KEYCODE_J
+
+public static final int KEYCODE_K
+
+public static final int KEYCODE_L
+
+public static final int KEYCODE_LEFT_BRACKET
+
+public static final int KEYCODE_M
+
+public static final int KEYCODE_MENU
+
+public static final int KEYCODE_MINUS
+
+public static final int KEYCODE_N
+
+public static final int KEYCODE_NOTIFICATION
+
+public static final int KEYCODE_NUM
+
+public static final int KEYCODE_O
+
+public static final int KEYCODE_P
+
+public static final int KEYCODE_PERIOD
+
+public static final int KEYCODE_PLUS
+
+public static final int KEYCODE_POUND
+
+public static final int KEYCODE_POWER
+
+public static final int KEYCODE_Q
+
+public static final int KEYCODE_R
+
+public static final int KEYCODE_RIGHT_BRACKET
+
+public static final int KEYCODE_S
+
+public static final int KEYCODE_SEARCH
+
+public static final int KEYCODE_SEMICOLON
+
+public static final int KEYCODE_SHIFT_LEFT
+
+public static final int KEYCODE_SHIFT_RIGHT
+
+public static final int KEYCODE_SLASH
+
+public static final int KEYCODE_SOFT_LEFT
+
+public static final int KEYCODE_SOFT_RIGHT
+
+public static final int KEYCODE_SPACE
+
+public static final int KEYCODE_STAR
+
+public static final int KEYCODE_SYM
+
+public static final int KEYCODE_T
+
+public static final int KEYCODE_TAB
+
+public static final int KEYCODE_U
+
+public static final int KEYCODE_UNKNOWN
+
+public static final int KEYCODE_V
+
+public static final int KEYCODE_VOLUME_DOWN
+
+public static final int KEYCODE_VOLUME_UP
+
+public static final int KEYCODE_W
+
+public static final int KEYCODE_X
+
+public static final int KEYCODE_Y
+
+public static final int KEYCODE_Z
+
+public static final int MAX_KEYCODE
+
+public static final int META_ALT_LEFT_ON
+
+public static final int META_ALT_ON
+
+public static final int META_ALT_RIGHT_ON
+
+public static final int META_SHIFT_LEFT_ON
+
+public static final int META_SHIFT_ON
+
+public static final int META_SHIFT_RIGHT_ON
+
+public static final int META_SYM_ON
+
+private int mAction
+
+private int mDeviceId
+
+private long mDownTime
+
+private long mEventTime
+
+private int mFlags
+
+private int mKeyCode
+
+private int mMetaState
+
+private int mRepeatCount
+
+private int mScancode
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+int)
+
+public void <init>(
+long
+long
+int
+int
+int)
+
+public void <init>(
+long
+long
+int
+int
+int
+int)
+
+public void <init>(
+long
+long
+int
+int
+int
+int
+int
+int)
+
+public void <init>(
+long
+long
+int
+int
+int
+int
+int
+int
+int)
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.view.KeyEvent$1)
+
+public void <init>(
+android.view.KeyEvent
+long
+int)
+
+public static int getDeadChar(
+int
+int)
+
+public static boolean isModifierKey(
+int)
+
+public int describeContents()
+
+public final boolean dispatch(
+android.view.KeyEvent$Callback)
+
+public final int getAction()
+
+public final int getDeviceId()
+
+public char getDisplayLabel()
+
+public final long getDownTime()
+
+public final long getEventTime()
+
+public final int getFlags()
+
+public final int getKeyCode()
+
+public boolean getKeyData(
+android.view.KeyCharacterMap$KeyData)
+
+public final int getKeyboardDevice()
+
+public char getMatch(
+char[])
+
+public char getMatch(
+char[]
+int)
+
+public final int getMetaState()
+
+public char getNumber()
+
+public final int getRepeatCount()
+
+public final int getScanCode()
+
+public int getUnicodeChar()
+
+public int getUnicodeChar(
+int)
+
+public final boolean isAltPressed()
+@java.lang.Deprecated
+public final boolean isDown()
+
+public boolean isPrintingKey()
+
+public final boolean isShiftPressed()
+
+public final boolean isSymPressed()
+
+public final boolean isSystem()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =FactoryMerger )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/LayoutInflater; )
+ class android.view.LayoutInflater$FactoryMerger extends java.lang.Object implements android.view.LayoutInflater$Factory
+
+----------------FIELDS----------------
+
+private final android.view.LayoutInflater$Factory mF1
+
+private final android.view.LayoutInflater$Factory mF2
+----------------METHODS----------------
+
+ void <init>(
+android.view.LayoutInflater$Factory
+android.view.LayoutInflater$Factory)
+
+public android.view.View onCreateView(
+java.lang.String
+android.content.Context
+android.util.AttributeSet)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/LayoutInflater; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Filter )
+public abstract interface class android.view.LayoutInflater$Filter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean onLoadClass(
+java.lang.Class)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/LayoutInflater$FactoryMerger;Landroid/view/LayoutInflater$Factory;Landroid/view/LayoutInflater$Filter; )
+public abstract class android.view.LayoutInflater extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG_INCLUDE
+
+private static final java.lang.String TAG_MERGE
+
+private static final java.lang.String TAG_REQUEST_FOCUS
+
+private static final java.lang.Class[] mConstructorSignature
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/reflect/Constructor;>; )
+private static final java.util.HashMap sConstructorMap
+
+private final boolean DEBUG
+
+private final java.lang.Object[] mConstructorArgs
+
+protected final android.content.Context mContext
+
+private android.view.LayoutInflater$Factory mFactory
+
+private boolean mFactorySet
+
+private android.view.LayoutInflater$Filter mFilter
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Boolean;>; )
+private java.util.HashMap mFilterMap
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+android.content.Context)
+
+protected void <init>(
+android.view.LayoutInflater
+android.content.Context)
+
+private void failNotAllowed(
+java.lang.String
+java.lang.String
+android.util.AttributeSet)
+
+public static android.view.LayoutInflater from(
+android.content.Context)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private void parseInclude(
+org.xmlpull.v1.XmlPullParser
+android.view.View
+android.util.AttributeSet)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private void parseRequestFocus(
+org.xmlpull.v1.XmlPullParser
+android.view.View)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private void rInflate(
+org.xmlpull.v1.XmlPullParser
+android.view.View
+android.util.AttributeSet)
+
+public abstract android.view.LayoutInflater cloneInContext(
+android.content.Context)
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException;Landroid/view/InflateException; )
+public final android.view.View createView(
+java.lang.String
+java.lang.String
+android.util.AttributeSet)
+
+ android.view.View createViewFromTag(
+java.lang.String
+android.util.AttributeSet)
+
+public android.content.Context getContext()
+
+public final android.view.LayoutInflater$Factory getFactory()
+
+public android.view.LayoutInflater$Filter getFilter()
+
+public android.view.View inflate(
+int
+android.view.ViewGroup)
+
+public android.view.View inflate(
+int
+android.view.ViewGroup
+boolean)
+
+public android.view.View inflate(
+org.xmlpull.v1.XmlPullParser
+android.view.ViewGroup)
+
+public android.view.View inflate(
+org.xmlpull.v1.XmlPullParser
+android.view.ViewGroup
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException; )
+protected android.view.View onCreateView(
+java.lang.String
+android.util.AttributeSet)
+
+public void setFactory(
+android.view.LayoutInflater$Factory)
+
+public void setFilter(
+android.view.LayoutInflater$Filter)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/MenuInflater; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =MenuState )
+ class android.view.MenuInflater$MenuState extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int defaultGroupId
+
+private static final int defaultItemCategory
+
+private static final int defaultItemCheckable
+
+private static final boolean defaultItemChecked
+
+private static final boolean defaultItemEnabled
+
+private static final int defaultItemId
+
+private static final int defaultItemOrder
+
+private static final boolean defaultItemVisible
+
+private int groupCategory
+
+private int groupCheckable
+
+private boolean groupEnabled
+
+private int groupId
+
+private int groupOrder
+
+private boolean groupVisible
+
+private boolean itemAdded
+
+private char itemAlphabeticShortcut
+
+private int itemCategoryOrder
+
+private int itemCheckable
+
+private boolean itemChecked
+
+private boolean itemEnabled
+
+private int itemIconResId
+
+private int itemId
+
+private char itemNumericShortcut
+
+private java.lang.String itemTitle
+
+private java.lang.String itemTitleCondensed
+
+private boolean itemVisible
+
+private android.view.Menu menu
+
+final android.view.MenuInflater this$0
+----------------METHODS----------------
+
+public void <init>(
+android.view.MenuInflater
+android.view.Menu)
+
+private char getShortcut(
+java.lang.String)
+
+private void setItem(
+android.view.MenuItem)
+
+public void addItem()
+
+public android.view.SubMenu addSubMenuItem()
+
+public boolean hasAddedItem()
+
+public void readGroup(
+android.util.AttributeSet)
+
+public void readItem(
+android.util.AttributeSet)
+
+public void resetGroup()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/MenuInflater$MenuState; )
+public class android.view.MenuInflater extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int NO_ID
+
+private static final java.lang.String XML_GROUP
+
+private static final java.lang.String XML_ITEM
+
+private static final java.lang.String XML_MENU
+
+private android.content.Context mContext
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+static android.content.Context access$000(
+android.view.MenuInflater)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private void parseMenu(
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet
+android.view.Menu)
+
+public void inflate(
+int
+android.view.Menu)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnMenuItemClickListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/MenuItem; )
+public abstract interface class android.view.MenuItem$OnMenuItemClickListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean onMenuItemClick(
+android.view.MenuItem)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/MenuItem$OnMenuItemClickListener; )
+public abstract interface class android.view.MenuItem extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract char getAlphabeticShortcut()
+
+public abstract int getGroupId()
+
+public abstract android.graphics.drawable.Drawable getIcon()
+
+public abstract android.content.Intent getIntent()
+
+public abstract int getItemId()
+
+public abstract android.view.ContextMenu$ContextMenuInfo getMenuInfo()
+
+public abstract char getNumericShortcut()
+
+public abstract int getOrder()
+
+public abstract android.view.SubMenu getSubMenu()
+
+public abstract java.lang.CharSequence getTitle()
+
+public abstract java.lang.CharSequence getTitleCondensed()
+
+public abstract boolean hasSubMenu()
+
+public abstract boolean isCheckable()
+
+public abstract boolean isChecked()
+
+public abstract boolean isEnabled()
+
+public abstract boolean isVisible()
+
+public abstract android.view.MenuItem setAlphabeticShortcut(
+char)
+
+public abstract android.view.MenuItem setCheckable(
+boolean)
+
+public abstract android.view.MenuItem setChecked(
+boolean)
+
+public abstract android.view.MenuItem setEnabled(
+boolean)
+
+public abstract android.view.MenuItem setIcon(
+int)
+
+public abstract android.view.MenuItem setIcon(
+android.graphics.drawable.Drawable)
+
+public abstract android.view.MenuItem setIntent(
+android.content.Intent)
+
+public abstract android.view.MenuItem setNumericShortcut(
+char)
+
+public abstract android.view.MenuItem setOnMenuItemClickListener(
+android.view.MenuItem$OnMenuItemClickListener)
+
+public abstract android.view.MenuItem setShortcut(
+char
+char)
+
+public abstract android.view.MenuItem setTitle(
+int)
+
+public abstract android.view.MenuItem setTitle(
+java.lang.CharSequence)
+
+public abstract android.view.MenuItem setTitleCondensed(
+java.lang.CharSequence)
+
+public abstract android.view.MenuItem setVisible(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/MotionEvent; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/view/MotionEvent;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.view.MotionEvent$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.view.MotionEvent createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.view.MotionEvent[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public final class android.view.MotionEvent extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+
+public static final int ACTION_CANCEL
+
+public static final int ACTION_DOWN
+
+public static final int ACTION_MOVE
+
+public static final int ACTION_UP
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/view/MotionEvent;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final int EDGE_BOTTOM
+
+public static final int EDGE_LEFT
+
+public static final int EDGE_RIGHT
+
+public static final int EDGE_TOP
+
+private static final int MAX_RECYCLED
+
+private static final boolean TRACK_RECYCLED_LOCATION
+
+private static java.lang.Object gRecyclerLock
+
+private static android.view.MotionEvent gRecyclerTop
+
+private static int gRecyclerUsed
+
+private int mAction
+
+private int mDeviceId
+
+private long mDownTime
+
+private int mEdgeFlags
+
+private long mEventTime
+
+private float[] mHistory
+
+private long[] mHistoryTimes
+
+private int mMetaState
+
+private android.view.MotionEvent mNext
+
+private int mNumHistory
+
+private float mPressure
+
+private float mRawX
+
+private float mRawY
+
+private boolean mRecycled
+
+private java.lang.RuntimeException mRecycledLocation
+
+private float mSize
+
+private float mX
+
+private float mXPrecision
+
+private float mY
+
+private float mYPrecision
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+static android.view.MotionEvent access$000()
+
+static void access$100(
+android.view.MotionEvent
+android.os.Parcel)
+
+private static android.view.MotionEvent obtain()
+
+public static android.view.MotionEvent obtain(
+long
+long
+int
+float
+float
+float
+float
+int
+float
+float
+int
+int)
+
+public static android.view.MotionEvent obtain(
+long
+long
+int
+float
+float
+int)
+
+public static android.view.MotionEvent obtain(
+android.view.MotionEvent)
+
+private void readFromParcel(
+android.os.Parcel)
+
+public final void addBatch(
+long
+float
+float
+float
+float
+int)
+
+public int describeContents()
+
+public final int getAction()
+
+public final int getDeviceId()
+
+public final long getDownTime()
+
+public final int getEdgeFlags()
+
+public final long getEventTime()
+
+public final long getHistoricalEventTime(
+int)
+
+public final float getHistoricalPressure(
+int)
+
+public final float getHistoricalSize(
+int)
+
+public final float getHistoricalX(
+int)
+
+public final float getHistoricalY(
+int)
+
+public final int getHistorySize()
+
+public final int getMetaState()
+
+public final float getPressure()
+
+public final float getRawX()
+
+public final float getRawY()
+
+public final float getSize()
+
+public final float getX()
+
+public final float getXPrecision()
+
+public final float getY()
+
+public final float getYPrecision()
+
+public final void offsetLocation(
+float
+float)
+
+public void recycle()
+
+public final void setAction(
+int)
+
+public final void setEdgeFlags(
+int)
+
+public final void setLocation(
+float
+float)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public abstract class android.view.OrientationListener extends java.lang.Object implements android.hardware.SensorListener
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG
+
+public static final int ORIENTATION_UNKNOWN
+
+private static final java.lang.String TAG
+
+private static final boolean localLOGV
+
+private boolean mEnabled
+
+private int mOrientation
+
+private android.hardware.SensorManager mSensorManager
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void disable()
+
+public void enable()
+
+public void onAccuracyChanged(
+int
+int)
+
+public abstract void onOrientationChanged(
+int)
+
+public void onSensorChanged(
+int
+float[])
+
+________________CLASS________________
+
+
+public class android.view.RawInputEvent extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ABS_BRAKE
+
+public static final int ABS_DISTANCE
+
+public static final int ABS_GAS
+
+public static final int ABS_HAT0X
+
+public static final int ABS_HAT0Y
+
+public static final int ABS_HAT1X
+
+public static final int ABS_HAT1Y
+
+public static final int ABS_HAT2X
+
+public static final int ABS_HAT2Y
+
+public static final int ABS_HAT3X
+
+public static final int ABS_HAT3Y
+
+public static final int ABS_MAX
+
+public static final int ABS_MISC
+
+public static final int ABS_PRESSURE
+
+public static final int ABS_RUDDER
+
+public static final int ABS_RX
+
+public static final int ABS_RY
+
+public static final int ABS_RZ
+
+public static final int ABS_THROTTLE
+
+public static final int ABS_TILT_X
+
+public static final int ABS_TILT_Y
+
+public static final int ABS_TOOL_WIDTH
+
+public static final int ABS_VOLUME
+
+public static final int ABS_WHEEL
+
+public static final int ABS_X
+
+public static final int ABS_Y
+
+public static final int ABS_Z
+
+public static final int BTN_0
+
+public static final int BTN_1
+
+public static final int BTN_2
+
+public static final int BTN_3
+
+public static final int BTN_4
+
+public static final int BTN_5
+
+public static final int BTN_6
+
+public static final int BTN_7
+
+public static final int BTN_8
+
+public static final int BTN_9
+
+public static final int BTN_A
+
+public static final int BTN_B
+
+public static final int BTN_BACK
+
+public static final int BTN_BASE
+
+public static final int BTN_BASE2
+
+public static final int BTN_BASE3
+
+public static final int BTN_BASE4
+
+public static final int BTN_BASE5
+
+public static final int BTN_BASE6
+
+public static final int BTN_C
+
+public static final int BTN_DEAD
+
+public static final int BTN_DIGI
+
+public static final int BTN_EXTRA
+
+public static final int BTN_FIRST
+
+public static final int BTN_FORWARD
+
+public static final int BTN_GAMEPAD
+
+public static final int BTN_GEAR_DOWN
+
+public static final int BTN_GEAR_UP
+
+public static final int BTN_JOYSTICK
+
+public static final int BTN_LAST
+
+public static final int BTN_LEFT
+
+public static final int BTN_MIDDLE
+
+public static final int BTN_MISC
+
+public static final int BTN_MODE
+
+public static final int BTN_MOUSE
+
+public static final int BTN_PINKIE
+
+public static final int BTN_RIGHT
+
+public static final int BTN_SELECT
+
+public static final int BTN_SIDE
+
+public static final int BTN_START
+
+public static final int BTN_STYLUS
+
+public static final int BTN_STYLUS2
+
+public static final int BTN_TASK
+
+public static final int BTN_THUMB
+
+public static final int BTN_THUMB2
+
+public static final int BTN_THUMBL
+
+public static final int BTN_THUMBR
+
+public static final int BTN_TL
+
+public static final int BTN_TL2
+
+public static final int BTN_TOOL_AIRBRUSH
+
+public static final int BTN_TOOL_BRUSH
+
+public static final int BTN_TOOL_DOUBLETAP
+
+public static final int BTN_TOOL_FINGER
+
+public static final int BTN_TOOL_LENS
+
+public static final int BTN_TOOL_MOUSE
+
+public static final int BTN_TOOL_PEN
+
+public static final int BTN_TOOL_PENCIL
+
+public static final int BTN_TOOL_RUBBER
+
+public static final int BTN_TOOL_TRIPLETAP
+
+public static final int BTN_TOP
+
+public static final int BTN_TOP2
+
+public static final int BTN_TOUCH
+
+public static final int BTN_TR
+
+public static final int BTN_TR2
+
+public static final int BTN_TRIGGER
+
+public static final int BTN_WHEEL
+
+public static final int BTN_X
+
+public static final int BTN_Y
+
+public static final int BTN_Z
+
+public static final int CLASS_CONFIGURATION_CHANGED
+
+public static final int CLASS_KEYBOARD
+
+public static final int CLASS_TOUCHSCREEN
+
+public static final int CLASS_TRACKBALL
+
+public static final int EV_ABS
+
+public static final int EV_DEVICE_ADDED
+
+public static final int EV_DEVICE_REMOVED
+
+public static final int EV_FF
+
+public static final int EV_FF_STATUS
+
+public static final int EV_KEY
+
+public static final int EV_LED
+
+public static final int EV_MSC
+
+public static final int EV_PWR
+
+public static final int EV_REL
+
+public static final int EV_REP
+
+public static final int EV_SND
+
+public static final int EV_SW
+
+public static final int EV_SYN
+
+public static final int REL_DIAL
+
+public static final int REL_HWHEEL
+
+public static final int REL_MAX
+
+public static final int REL_MISC
+
+public static final int REL_RX
+
+public static final int REL_RY
+
+public static final int REL_RZ
+
+public static final int REL_WHEEL
+
+public static final int REL_X
+
+public static final int REL_Y
+
+public static final int REL_Z
+
+public int deviceId
+
+public int flags
+
+public int keycode
+
+public int scancode
+
+public int type
+
+public int value
+
+public long when
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class android.view.SoundEffectConstants extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CLICK
+
+public static final int NAVIGATION_DOWN
+
+public static final int NAVIGATION_LEFT
+
+public static final int NAVIGATION_RIGHT
+
+public static final int NAVIGATION_UP
+----------------METHODS----------------
+
+private void <init>()
+
+public static int getContantForFocusDirection(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class android.view.SubMenu extends java.lang.Object implements android.view.Menu
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void clearHeader()
+
+public abstract android.view.MenuItem getItem()
+
+public abstract android.view.SubMenu setHeaderIcon(
+int)
+
+public abstract android.view.SubMenu setHeaderIcon(
+android.graphics.drawable.Drawable)
+
+public abstract android.view.SubMenu setHeaderTitle(
+int)
+
+public abstract android.view.SubMenu setHeaderTitle(
+java.lang.CharSequence)
+
+public abstract android.view.SubMenu setHeaderView(
+android.view.View)
+
+public abstract android.view.SubMenu setIcon(
+int)
+
+public abstract android.view.SubMenu setIcon(
+android.graphics.drawable.Drawable)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/Surface; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/view/Surface;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.view.Surface$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.view.Surface createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.view.Surface[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =OutOfResourcesException )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/Surface; )
+public class android.view.Surface$OutOfResourcesException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/Surface$OutOfResourcesException; )
+public class android.view.Surface extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/view/Surface;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final int FX_SURFACE_BLUR
+
+public static final int FX_SURFACE_DIM
+
+public static final int FX_SURFACE_MASK
+
+public static final int FX_SURFACE_NORMAL
+
+public static final int GPU
+
+public static final int HARDWARE
+
+public static final int HIDDEN
+
+private static final java.lang.String LOG_TAG
+
+public static final int NON_PREMULTIPLIED
+
+public static final int PUSH_BUFFERS
+
+public static final int ROTATION_0
+
+public static final int ROTATION_180
+
+public static final int ROTATION_270
+
+public static final int ROTATION_90
+
+public static final int SECURE
+
+public static final int SURACE_FROZEN
+
+public static final int SURFACE_BLUR_FREEZE
+
+public static final int SURFACE_DITHER
+
+public static final int SURFACE_HIDDEN
+
+private android.graphics.Canvas mCanvas
+
+private int mSaveCount
+
+private int mSurface
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Landroid/view/Surface$OutOfResourcesException; )
+private void <init>(
+android.os.Parcel)
+@dalvik.annotation.Throws (value =Landroid/view/Surface$OutOfResourcesException; )
+ void <init>(
+android.os.Parcel
+android.view.Surface$1)
+@dalvik.annotation.Throws (value =Landroid/view/Surface$OutOfResourcesException; )
+public void <init>(
+android.view.SurfaceSession
+int
+int
+int
+int
+int
+int)
+
+public static native void closeTransaction()
+
+public static native void freezeDisplay(
+int)
+
+private native void init(
+android.os.Parcel)
+@dalvik.annotation.Throws (value =Landroid/view/Surface$OutOfResourcesException; )
+private native void init(
+android.view.SurfaceSession
+int
+int
+int
+int
+int
+int)
+
+private native android.graphics.Canvas lockCanvasNative(
+android.graphics.Rect)
+
+private static native void nativeClassInit()
+
+public static native void openTransaction()
+
+public static native void setOrientation(
+int
+int)
+
+public static native void unfreezeDisplay(
+int)
+
+public native void clear()
+
+public native void copyFrom(
+android.view.Surface)
+
+public int describeContents()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public native void freeze()
+
+public native void hide()
+
+public native boolean isValid()
+@dalvik.annotation.Throws (value =Landroid/view/Surface$OutOfResourcesException; )
+public android.graphics.Canvas lockCanvas(
+android.graphics.Rect)
+
+public native void readFromParcel(
+android.os.Parcel)
+
+public native void setAlpha(
+float)
+
+public native void setFlags(
+int
+int)
+
+public native void setFreezeTint(
+int)
+
+public native void setLayer(
+int)
+
+public native void setMatrix(
+float
+float
+float
+float)
+
+public native void setPosition(
+int
+int)
+
+public native void setSize(
+int
+int)
+
+public native void setTransparentRegionHint(
+android.graphics.Region)
+
+public native void show()
+
+public java.lang.String toString()
+
+public native void unfreeze()
+
+public native void unlockCanvas(
+android.graphics.Canvas)
+
+public native void unlockCanvasAndPost(
+android.graphics.Canvas)
+
+public native void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =BadSurfaceTypeException )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/SurfaceHolder; )
+public class android.view.SurfaceHolder$BadSurfaceTypeException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Callback )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/SurfaceHolder; )
+public abstract interface class android.view.SurfaceHolder$Callback extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void surfaceChanged(
+android.view.SurfaceHolder
+int
+int
+int)
+
+public abstract void surfaceCreated(
+android.view.SurfaceHolder)
+
+public abstract void surfaceDestroyed(
+android.view.SurfaceHolder)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/SurfaceHolder$Callback;Landroid/view/SurfaceHolder$BadSurfaceTypeException; )
+public abstract interface class android.view.SurfaceHolder extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int SURFACE_TYPE_GPU
+
+public static final int SURFACE_TYPE_HARDWARE
+
+public static final int SURFACE_TYPE_NORMAL
+
+public static final int SURFACE_TYPE_PUSH_BUFFERS
+----------------METHODS----------------
+
+public abstract void addCallback(
+android.view.SurfaceHolder$Callback)
+
+public abstract android.view.Surface getSurface()
+
+public abstract android.graphics.Rect getSurfaceFrame()
+
+public abstract boolean isCreating()
+
+public abstract android.graphics.Canvas lockCanvas()
+
+public abstract android.graphics.Canvas lockCanvas(
+android.graphics.Rect)
+
+public abstract void removeCallback(
+android.view.SurfaceHolder$Callback)
+
+public abstract void setFixedSize(
+int
+int)
+
+public abstract void setFormat(
+int)
+
+public abstract void setKeepScreenOn(
+boolean)
+
+public abstract void setSizeFromLayout()
+
+public abstract void setType(
+int)
+
+public abstract void unlockCanvasAndPost(
+android.graphics.Canvas)
+
+________________CLASS________________
+
+
+public class android.view.SurfaceSession extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int mClient
+----------------METHODS----------------
+
+public void <init>()
+
+private native void destroy()
+
+private native void init()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public native void kill()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/SurfaceView; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.view.SurfaceView$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.view.SurfaceView this$0
+----------------METHODS----------------
+
+ void <init>(
+android.view.SurfaceView)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/SurfaceView; )
+ class android.view.SurfaceView$2 extends java.lang.Object implements android.view.SurfaceHolder
+
+----------------FIELDS----------------
+
+private static final java.lang.String LOG_TAG
+
+final android.view.SurfaceView this$0
+----------------METHODS----------------
+
+ void <init>(
+android.view.SurfaceView)
+
+private final android.graphics.Canvas internalLockCanvas(
+android.graphics.Rect)
+
+public void addCallback(
+android.view.SurfaceHolder$Callback)
+
+public android.view.Surface getSurface()
+
+public android.graphics.Rect getSurfaceFrame()
+
+public boolean isCreating()
+
+public android.graphics.Canvas lockCanvas()
+
+public android.graphics.Canvas lockCanvas(
+android.graphics.Rect)
+
+public void removeCallback(
+android.view.SurfaceHolder$Callback)
+
+public void setFixedSize(
+int
+int)
+
+public void setFormat(
+int)
+
+public void setKeepScreenOn(
+boolean)
+
+public void setSizeFromLayout()
+
+public void setType(
+int)
+
+public void unlockCanvasAndPost(
+android.graphics.Canvas)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =MyWindow )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/SurfaceView; )
+ class android.view.SurfaceView$MyWindow extends android.view.IWindow$Stub
+
+----------------FIELDS----------------
+
+ int mCurHeight
+
+ int mCurWidth
+
+final android.view.SurfaceView this$0
+----------------METHODS----------------
+
+private void <init>(
+android.view.SurfaceView)
+
+ void <init>(
+android.view.SurfaceView
+android.view.SurfaceView$1)
+
+public void dispatchAppVisibility(
+boolean)
+
+public void dispatchGetNewSurface()
+
+public void dispatchKey(
+android.view.KeyEvent)
+
+public void dispatchPointer(
+android.view.MotionEvent
+long)
+
+public void dispatchTrackball(
+android.view.MotionEvent
+long)
+
+public void executeCommand(
+java.lang.String
+java.lang.String
+android.os.ParcelFileDescriptor)
+
+public void resized(
+int
+int
+boolean)
+
+public void windowFocusChanged(
+boolean
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/View$1;Landroid/view/View$ScrollabilityCache;Landroid/view/View$AttachInfo;Landroid/view/View$BaseSavedState;Landroid/view/View$UnsetPressedState;Landroid/view/View$OnCreateContextMenuListener;Landroid/view/View$OnClickListener;Landroid/view/View$OnFocusChangeListener;Landroid/view/View$OnLongClickListener;Landroid/view/View$OnTouchListener;Landroid/view/View$OnKeyListener;Landroid/view/View$CheckForLongPress;Landroid/view/View$MeasureSpec; )
+public class android.view.View extends java.lang.Object implements android.graphics.drawable.Drawable$Callback, android.view.KeyEvent$Callback
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+static final int ALPHA_SET
+
+static final int ANIMATION_STARTED
+
+static final int CLICKABLE
+
+private static final boolean DBG
+
+static final int DISABLED
+
+static final int DRAWABLE_STATE_DIRTY
+
+static final int DRAWING_CACHE_ENABLED
+
+public static final int DRAWING_CACHE_QUALITY_AUTO
+
+private static final int[] DRAWING_CACHE_QUALITY_FLAGS
+
+public static final int DRAWING_CACHE_QUALITY_HIGH
+
+public static final int DRAWING_CACHE_QUALITY_LOW
+
+static final int DRAWING_CACHE_QUALITY_MASK
+
+static final int DRAWING_CACHE_VALID
+
+static final int DRAWN
+
+static final int DRAW_MASK
+
+static final int DUPLICATE_PARENT_STATE
+
+protected static final int[] EMPTY_STATE_SET
+
+static final int ENABLED
+
+protected static final int[] ENABLED_FOCUSED_SELECTED_STATE_SET
+
+protected static final int[] ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET
+
+protected static final int[] ENABLED_FOCUSED_STATE_SET
+
+protected static final int[] ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET
+
+static final int ENABLED_MASK
+
+protected static final int[] ENABLED_SELECTED_STATE_SET
+
+protected static final int[] ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET
+
+protected static final int[] ENABLED_STATE_SET
+
+protected static final int[] ENABLED_WINDOW_FOCUSED_STATE_SET
+
+static final int FADING_EDGE_HORIZONTAL
+
+static final int FADING_EDGE_MASK
+
+static final int FADING_EDGE_NONE
+
+static final int FADING_EDGE_VERTICAL
+
+protected static final int[] FIRST_STATE_SET
+
+private static final int FITS_SYSTEM_WINDOWS
+
+private static final int FOCUSABLE
+
+static final int FOCUSABLE_IN_TOUCH_MODE
+
+private static final int FOCUSABLE_MASK
+
+static final int FOCUSED
+
+protected static final int[] FOCUSED_SELECTED_STATE_SET
+
+protected static final int[] FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET
+
+protected static final int[] FOCUSED_STATE_SET
+
+protected static final int[] FOCUSED_WINDOW_FOCUSED_STATE_SET
+
+public static final int FOCUS_BACKWARD
+
+public static final int FOCUS_DOWN
+
+public static final int FOCUS_FORWARD
+
+public static final int FOCUS_LEFT
+
+public static final int FOCUS_RIGHT
+
+public static final int FOCUS_UP
+
+static final int FORCE_LAYOUT
+
+public static final int GONE
+
+static final int HAS_BOUNDS
+
+public static final int INVISIBLE
+
+static final int IS_ROOT_NAMESPACE
+
+public static final int KEEP_SCREEN_ON
+
+protected static final int[] LAST_STATE_SET
+
+private static final int LAYOUT_REQUIRED
+
+static final int LONG_CLICKABLE
+
+static final int MEASURED_DIMENSION_SET
+
+protected static final int[] MIDDLE_STATE_SET
+
+private static final int NOT_FOCUSABLE
+
+public static final int NO_ID
+
+static final int ONLY_DRAWS_BACKGROUND
+
+private static final int PRESSED
+
+protected static final int[] PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET
+
+protected static final int[] PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET
+
+protected static final int[] PRESSED_ENABLED_FOCUSED_STATE_SET
+
+protected static final int[] PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET
+
+protected static final int[] PRESSED_ENABLED_SELECTED_STATE_SET
+
+protected static final int[] PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET
+
+protected static final int[] PRESSED_ENABLED_STATE_SET
+
+protected static final int[] PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET
+
+protected static final int[] PRESSED_FIRST_STATE_SET
+
+protected static final int[] PRESSED_FOCUSED_SELECTED_STATE_SET
+
+protected static final int[] PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET
+
+protected static final int[] PRESSED_FOCUSED_STATE_SET
+
+protected static final int[] PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET
+
+protected static final int[] PRESSED_LAST_STATE_SET
+
+protected static final int[] PRESSED_MIDDLE_STATE_SET
+
+protected static final int[] PRESSED_SELECTED_STATE_SET
+
+protected static final int[] PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET
+
+protected static final int[] PRESSED_SINGLE_STATE_SET
+
+protected static final int[] PRESSED_STATE_SET
+
+protected static final int[] PRESSED_WINDOW_FOCUSED_STATE_SET
+
+static final int REQUEST_TRANSPARENT_REGIONS
+
+static final int SAVE_DISABLED
+
+static final int SAVE_DISABLED_MASK
+
+private static final int SAVE_STATE_CALLED
+
+static final int SCROLLBARS_HORIZONTAL
+
+static final int SCROLLBARS_INSET_MASK
+
+public static final int SCROLLBARS_INSIDE_INSET
+
+public static final int SCROLLBARS_INSIDE_OVERLAY
+
+static final int SCROLLBARS_MASK
+
+static final int SCROLLBARS_NONE
+
+public static final int SCROLLBARS_OUTSIDE_INSET
+
+static final int SCROLLBARS_OUTSIDE_MASK
+
+public static final int SCROLLBARS_OUTSIDE_OVERLAY
+
+static final int SCROLLBARS_STYLE_MASK
+
+static final int SCROLLBARS_VERTICAL
+
+static final int SELECTED
+
+protected static final int[] SELECTED_STATE_SET
+
+protected static final int[] SELECTED_WINDOW_FOCUSED_STATE_SET
+
+protected static final int[] SINGLE_STATE_SET
+
+static final int SKIP_DRAW
+
+public static final int SOUND_EFFECTS_ENABLED
+
+protected static final java.lang.String VIEW_LOG_TAG
+
+private static final int[][] VIEW_STATE_SETS
+
+private static final int[] VISIBILITY_FLAGS
+
+static final int VISIBILITY_MASK
+
+public static final int VISIBLE
+
+static final int WANTS_FOCUS
+
+static final int WILL_NOT_CACHE_DRAWING
+
+static final int WILL_NOT_DRAW
+
+protected static final int[] WINDOW_FOCUSED_STATE_SET
+
+static long sInstanceCount
+
+ android.view.View$AttachInfo mAttachInfo
+
+private android.graphics.drawable.Drawable mBGDrawable
+
+private int mBackgroundResource
+
+private boolean mBackgroundSizeChanged
+@android.view.ViewDebug$ExportedProperty
+protected int mBottom
+
+protected android.content.Context mContext
+
+protected android.view.animation.Animation mCurrentAnimation
+
+private int[] mDrawableState
+
+private android.graphics.Bitmap mDrawingCache
+
+private int mDrawingCacheBackgroundColor
+
+private android.view.ViewTreeObserver mFloatingTreeObserver
+
+private boolean mHasPerformedLongPress
+@android.view.ViewDebug$ExportedProperty (resolveId =true )
+ int mID
+
+protected android.view.ViewGroup$LayoutParams mLayoutParams
+@android.view.ViewDebug$ExportedProperty
+protected int mLeft
+
+protected final int[] mLocation
+@android.view.ViewDebug$ExportedProperty
+protected int mMeasuredHeight
+@android.view.ViewDebug$ExportedProperty
+protected int mMeasuredWidth
+
+private int mMinHeight
+
+private int mMinWidth
+
+private int mNextFocusDownId
+
+private int mNextFocusLeftId
+
+private int mNextFocusRightId
+
+private int mNextFocusUpId
+
+private int mOldHeightMeasureSpec
+
+private int mOldWidthMeasureSpec
+
+protected android.view.View$OnClickListener mOnClickListener
+
+protected android.view.View$OnCreateContextMenuListener mOnCreateContextMenuListener
+
+protected android.view.View$OnFocusChangeListener mOnFocusChangeListener
+
+private android.view.View$OnKeyListener mOnKeyListener
+
+protected android.view.View$OnLongClickListener mOnLongClickListener
+
+private android.view.View$OnTouchListener mOnTouchListener
+@android.view.ViewDebug$ExportedProperty
+protected int mPaddingBottom
+@android.view.ViewDebug$ExportedProperty
+protected int mPaddingLeft
+@android.view.ViewDebug$ExportedProperty
+protected int mPaddingRight
+@android.view.ViewDebug$ExportedProperty
+protected int mPaddingTop
+
+protected android.view.ViewParent mParent
+
+private android.view.View$CheckForLongPress mPendingCheckForLongPress
+
+ int mPrivateFlags
+
+private android.content.res.Resources mResources
+@android.view.ViewDebug$ExportedProperty
+protected int mRight
+
+private android.view.View$ScrollabilityCache mScrollCache
+@android.view.ViewDebug$ExportedProperty
+protected int mScrollX
+@android.view.ViewDebug$ExportedProperty
+protected int mScrollY
+
+protected java.lang.Object mTag
+
+private final android.graphics.Rect mTempRect
+@android.view.ViewDebug$ExportedProperty
+protected int mTop
+
+private android.view.TouchDelegate mTouchDelegate
+@android.view.ViewDebug$ExportedProperty
+protected int mUserPaddingBottom
+@android.view.ViewDebug$ExportedProperty
+protected int mUserPaddingRight
+
+ int mViewFlags
+
+ int mWindowAttachCount
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static boolean access$102(
+android.view.View
+boolean)
+
+private static void captureViewInfo(
+java.lang.String
+android.view.View)
+
+protected static java.lang.String debugIndent(
+int)
+
+private static android.view.View findViewShouldExist(
+android.view.View
+int)
+
+public static int getDefaultSize(
+int
+int)
+
+private int getScrollBarPaddingBottom()
+
+private int getScrollBarPaddingLeft()
+
+private int getScrollBarPaddingRight()
+
+private boolean hasAncestorThatBlocksDescendantFocus()
+
+public static android.view.View inflate(
+android.content.Context
+int
+android.view.ViewGroup)
+
+private void initScrollCache()
+
+protected static int[] mergeDrawableStates(
+int[]
+int[])
+
+private void onDrawHorizontalScrollBar(
+android.graphics.Canvas
+android.widget.ScrollBarDrawable
+int
+int
+int)
+
+private void onDrawScrollBars(
+android.graphics.Canvas)
+
+private void onDrawVerticalScrollBar(
+android.graphics.Canvas
+android.widget.ScrollBarDrawable
+int
+int
+int)
+
+private void postCheckForLongClick()
+
+private static java.lang.String printFlags(
+int)
+
+private static java.lang.String printPrivateFlags(
+int)
+
+private void recomputePadding()
+
+public static int resolveSize(
+int
+int)
+
+private static int[] stateSetUnion(
+int[]
+int[])
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/view/View;>;I)V )
+public void addFocusables(
+java.util.ArrayList
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/view/View;>;)V )
+public void addTouchables(
+java.util.ArrayList)
+
+public void applyDrawableToTransparentRegion(
+android.graphics.drawable.Drawable
+android.graphics.Region)
+
+ void assignParent(
+android.view.ViewParent)
+
+public void bringToFront()
+
+public void buildDrawingCache()
+
+public void cancelLongPress()
+
+public void clearAnimation()
+
+public void clearFocus()
+
+ void clearFocusForRemoval()
+
+protected int computeHorizontalScrollExtent()
+
+protected int computeHorizontalScrollOffset()
+
+protected int computeHorizontalScrollRange()
+
+public void computeScroll()
+
+protected int computeVerticalScrollExtent()
+
+protected int computeVerticalScrollOffset()
+
+protected int computeVerticalScrollRange()
+
+public void createContextMenu(
+android.view.ContextMenu)
+
+public void debug()
+
+protected void debug(
+int)
+
+public void destroyDrawingCache()
+
+ void dispatchAttachedToWindow(
+android.view.View$AttachInfo
+int)
+
+ void dispatchCollectViewAttributes(
+int)
+
+ void dispatchDetachedFromWindow()
+
+protected void dispatchDraw(
+android.graphics.Canvas)
+
+public boolean dispatchKeyEvent(
+android.view.KeyEvent)
+
+public boolean dispatchKeyShortcutEvent(
+android.view.KeyEvent)
+@dalvik.annotation.Signature (value =(Landroid/util/SparseArray<Landroid/os/Parcelable;>;)V )
+protected void dispatchRestoreInstanceState(
+android.util.SparseArray)
+@dalvik.annotation.Signature (value =(Landroid/util/SparseArray<Landroid/os/Parcelable;>;)V )
+protected void dispatchSaveInstanceState(
+android.util.SparseArray)
+
+protected void dispatchSetPressed(
+boolean)
+
+protected void dispatchSetSelected(
+boolean)
+
+public boolean dispatchTouchEvent(
+android.view.MotionEvent)
+
+public boolean dispatchTrackballEvent(
+android.view.MotionEvent)
+
+public boolean dispatchUnhandledMove(
+android.view.View
+int)
+
+public void dispatchWindowFocusChanged(
+boolean)
+
+public void dispatchWindowVisibilityChanged(
+int)
+
+public void draw(
+android.graphics.Canvas)
+
+protected void drawableStateChanged()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public android.view.View findFocus()
+
+ android.view.View findUserSetNextFocus(
+android.view.View
+int)
+
+public final android.view.View findViewById(
+int)
+
+protected android.view.View findViewTraversal(
+int)
+
+public final android.view.View findViewWithTag(
+java.lang.Object)
+
+protected android.view.View findViewWithTagTraversal(
+java.lang.Object)
+
+protected boolean fitSystemWindows(
+android.graphics.Rect)
+
+public android.view.View focusSearch(
+int)
+
+public void forceLayout()
+
+public boolean gatherTransparentRegion(
+android.graphics.Region)
+
+public android.view.animation.Animation getAnimation()
+
+public android.os.IBinder getApplicationWindowToken()
+
+public android.graphics.drawable.Drawable getBackground()
+@android.view.ViewDebug$ExportedProperty
+public int getBaseline()
+@android.view.ViewDebug$CapturedViewProperty
+public final int getBottom()
+
+protected float getBottomFadingEdgeStrength()
+@android.view.ViewDebug$CapturedViewProperty
+public final android.content.Context getContext()
+
+protected android.view.ContextMenu$ContextMenuInfo getContextMenuInfo()
+
+public final int[] getDrawableState()
+
+public android.graphics.Bitmap getDrawingCache()
+
+public int getDrawingCacheBackgroundColor()
+
+public int getDrawingCacheQuality()
+
+public void getDrawingRect(
+android.graphics.Rect)
+
+public long getDrawingTime()
+@dalvik.annotation.Signature (value =(I)Ljava/util/ArrayList<Landroid/view/View;>; )
+public java.util.ArrayList getFocusables(
+int)
+
+public void getFocusedRect(
+android.graphics.Rect)
+
+public final boolean getGlobalVisibleRect(
+android.graphics.Rect)
+
+public boolean getGlobalVisibleRect(
+android.graphics.Rect
+android.graphics.Point)
+
+protected android.os.Handler getHandler()
+@android.view.ViewDebug$ExportedProperty
+public final int getHeight()
+
+public void getHitRect(
+android.graphics.Rect)
+
+public int getHorizontalFadingEdgeLength()
+
+protected int getHorizontalScrollbarHeight()
+@android.view.ViewDebug$CapturedViewProperty
+public int getId()
+
+public boolean getKeepScreenOn()
+@android.view.ViewDebug$ExportedProperty (deepExport =true prefix =layout_ )
+public android.view.ViewGroup$LayoutParams getLayoutParams()
+@android.view.ViewDebug$CapturedViewProperty
+public final int getLeft()
+
+protected float getLeftFadingEdgeStrength()
+
+public final boolean getLocalVisibleRect(
+android.graphics.Rect)
+
+public void getLocationInWindow(
+int[])
+
+public void getLocationOnScreen(
+int[])
+
+public final int getMeasuredHeight()
+
+public final int getMeasuredWidth()
+
+public int getNextFocusDownId()
+
+public int getNextFocusLeftId()
+
+public int getNextFocusRightId()
+
+public int getNextFocusUpId()
+
+public android.view.View$OnFocusChangeListener getOnFocusChangeListener()
+
+public int getPaddingBottom()
+
+public int getPaddingLeft()
+
+public int getPaddingRight()
+
+public int getPaddingTop()
+
+public final android.view.ViewParent getParent()
+
+public android.content.res.Resources getResources()
+@android.view.ViewDebug$CapturedViewProperty
+public final int getRight()
+
+protected float getRightFadingEdgeStrength()
+
+public android.view.View getRootView()
+
+public int getScrollBarStyle()
+
+public final int getScrollX()
+
+public final int getScrollY()
+
+public int getSolidColor()
+
+protected int getSuggestedMinimumHeight()
+
+protected int getSuggestedMinimumWidth()
+@android.view.ViewDebug$ExportedProperty
+public java.lang.Object getTag()
+@android.view.ViewDebug$CapturedViewProperty
+public final int getTop()
+
+protected float getTopFadingEdgeStrength()
+
+public android.view.TouchDelegate getTouchDelegate()
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Landroid/view/View;>; )
+public java.util.ArrayList getTouchables()
+
+public int getVerticalFadingEdgeLength()
+
+public int getVerticalScrollbarWidth()
+
+public android.view.ViewTreeObserver getViewTreeObserver()
+@android.view.ViewDebug$ExportedProperty (mapping =Landroid/view/ViewDebug$IntToString;:[from =0, to =VISIBLE]Landroid/view/ViewDebug$IntToString;:[from =4, to =INVISIBLE]Landroid/view/ViewDebug$IntToString;:[from =8, to =GONE] )
+public int getVisibility()
+@android.view.ViewDebug$ExportedProperty
+public final int getWidth()
+
+protected int getWindowAttachCount()
+
+ android.view.IWindowSession getWindowSession()
+
+public android.os.IBinder getWindowToken()
+
+public int getWindowVisibility()
+
+ void handleFocusGainInternal(
+int
+android.graphics.Rect)
+@android.view.ViewDebug$ExportedProperty
+public boolean hasFocus()
+
+public boolean hasFocusable()
+
+public boolean hasWindowFocus()
+
+protected void initializeFadingEdge(
+android.content.res.TypedArray)
+
+protected void initializeScrollbars(
+android.content.res.TypedArray)
+
+public void invalidate()
+
+public void invalidate(
+int
+int
+int
+int)
+
+public void invalidate(
+android.graphics.Rect)
+
+public void invalidateDrawable(
+android.graphics.drawable.Drawable)
+@android.view.ViewDebug$ExportedProperty
+public boolean isClickable()
+@android.view.ViewDebug$ExportedProperty
+public boolean isDrawingCacheEnabled()
+
+public boolean isDuplicateParentStateEnabled()
+@android.view.ViewDebug$ExportedProperty
+public boolean isEnabled()
+@android.view.ViewDebug$ExportedProperty
+public final boolean isFocusable()
+@android.view.ViewDebug$ExportedProperty
+public final boolean isFocusableInTouchMode()
+@android.view.ViewDebug$ExportedProperty
+public boolean isFocused()
+
+public boolean isHorizontalFadingEdgeEnabled()
+
+public boolean isHorizontalScrollBarEnabled()
+@android.view.ViewDebug$ExportedProperty
+public boolean isInTouchMode()
+
+public boolean isLayoutRequested()
+
+public boolean isLongClickable()
+
+public boolean isPressed()
+
+public boolean isRootNamespace()
+
+public boolean isSaveEnabled()
+@android.view.ViewDebug$ExportedProperty
+public boolean isSelected()
+
+public boolean isShown()
+@android.view.ViewDebug$ExportedProperty
+public boolean isSoundEffectsEnabled()
+
+public boolean isVerticalFadingEdgeEnabled()
+
+public boolean isVerticalScrollBarEnabled()
+
+public final void layout(
+int
+int
+int
+int)
+
+public final void measure(
+int
+int)
+
+ void needGlobalAttributesUpdate(
+boolean)
+
+public void offsetLeftAndRight(
+int)
+
+public void offsetTopAndBottom(
+int)
+
+protected void onAnimationEnd()
+
+protected void onAnimationStart()
+
+protected void onAttachedToWindow()
+
+protected void onCreateContextMenu(
+android.view.ContextMenu)
+
+protected int[] onCreateDrawableState(
+int)
+
+protected void onDetachedFromWindow()
+
+protected void onDraw(
+android.graphics.Canvas)
+
+protected void onFinishInflate()
+
+protected void onFocusChanged(
+boolean
+int
+android.graphics.Rect)
+
+public boolean onKeyDown(
+int
+android.view.KeyEvent)
+
+public boolean onKeyMultiple(
+int
+int
+android.view.KeyEvent)
+
+public boolean onKeyShortcut(
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+int
+android.view.KeyEvent)
+
+protected void onLayout(
+boolean
+int
+int
+int
+int)
+
+protected void onMeasure(
+int
+int)
+
+protected void onRestoreInstanceState(
+android.os.Parcelable)
+
+protected android.os.Parcelable onSaveInstanceState()
+
+protected void onScrollChanged(
+int
+int
+int
+int)
+
+protected boolean onSetAlpha(
+int)
+
+protected void onSizeChanged(
+int
+int
+int
+int)
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+public boolean onTrackballEvent(
+android.view.MotionEvent)
+
+public void onWindowFocusChanged(
+boolean)
+
+protected void onWindowVisibilityChanged(
+int)
+
+public boolean performClick()
+
+ void performCollectViewAttributes(
+int)
+
+public boolean performLongClick()
+
+protected void playSoundEffect(
+int)
+
+public boolean post(
+java.lang.Runnable)
+
+public boolean postDelayed(
+java.lang.Runnable
+long)
+
+public void postInvalidate()
+
+public void postInvalidate(
+int
+int
+int
+int)
+
+public void postInvalidateDelayed(
+long)
+
+public void postInvalidateDelayed(
+long
+int
+int
+int
+int)
+
+public void refreshDrawableState()
+
+public boolean removeCallbacks(
+java.lang.Runnable)
+
+public final boolean requestFocus()
+
+public final boolean requestFocus(
+int)
+
+public boolean requestFocus(
+int
+android.graphics.Rect)
+
+public final boolean requestFocusFromTouch()
+
+public void requestLayout()
+
+public boolean requestRectangleOnScreen(
+android.graphics.Rect)
+
+public boolean requestRectangleOnScreen(
+android.graphics.Rect
+boolean)
+@dalvik.annotation.Signature (value =(Landroid/util/SparseArray<Landroid/os/Parcelable;>;)V )
+public void restoreHierarchyState(
+android.util.SparseArray)
+@dalvik.annotation.Signature (value =(Landroid/util/SparseArray<Landroid/os/Parcelable;>;)V )
+public void saveHierarchyState(
+android.util.SparseArray)
+
+public void scheduleDrawable(
+android.graphics.drawable.Drawable
+java.lang.Runnable
+long)
+
+public void scrollBy(
+int
+int)
+
+public void scrollTo(
+int
+int)
+
+public void setAnimation(
+android.view.animation.Animation)
+
+public void setBackgroundColor(
+int)
+
+public void setBackgroundDrawable(
+android.graphics.drawable.Drawable)
+
+public void setBackgroundResource(
+int)
+
+public void setClickable(
+boolean)
+
+public void setDrawingCacheBackgroundColor(
+int)
+
+public void setDrawingCacheEnabled(
+boolean)
+
+public void setDrawingCacheQuality(
+int)
+
+public void setDuplicateParentStateEnabled(
+boolean)
+
+public void setEnabled(
+boolean)
+
+public void setFadingEdgeLength(
+int)
+
+ void setFlags(
+int
+int)
+
+public void setFocusable(
+boolean)
+
+public void setFocusableInTouchMode(
+boolean)
+
+protected boolean setFrame(
+int
+int
+int
+int)
+
+public void setHorizontalFadingEdgeEnabled(
+boolean)
+
+public void setHorizontalScrollBarEnabled(
+boolean)
+
+public void setId(
+int)
+
+public void setIsRootNamespace(
+boolean)
+
+public void setKeepScreenOn(
+boolean)
+
+public void setLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+public void setLongClickable(
+boolean)
+
+protected final void setMeasuredDimension(
+int
+int)
+
+public void setMinimumHeight(
+int)
+
+public void setMinimumWidth(
+int)
+
+public void setNextFocusDownId(
+int)
+
+public void setNextFocusLeftId(
+int)
+
+public void setNextFocusRightId(
+int)
+
+public void setNextFocusUpId(
+int)
+
+public void setOnClickListener(
+android.view.View$OnClickListener)
+
+public void setOnCreateContextMenuListener(
+android.view.View$OnCreateContextMenuListener)
+
+public void setOnFocusChangeListener(
+android.view.View$OnFocusChangeListener)
+
+public void setOnKeyListener(
+android.view.View$OnKeyListener)
+
+public void setOnLongClickListener(
+android.view.View$OnLongClickListener)
+
+public void setOnTouchListener(
+android.view.View$OnTouchListener)
+
+public void setPadding(
+int
+int
+int
+int)
+
+public void setPressed(
+boolean)
+
+public void setSaveEnabled(
+boolean)
+
+public void setScrollBarStyle(
+int)
+
+public void setSelected(
+boolean)
+
+public void setSoundEffectsEnabled(
+boolean)
+
+public void setTag(
+java.lang.Object)
+
+public void setTouchDelegate(
+android.view.TouchDelegate)
+
+public void setVerticalFadingEdgeEnabled(
+boolean)
+
+public void setVerticalScrollBarEnabled(
+boolean)
+
+public void setVisibility(
+int)
+
+public void setWillNotCacheDrawing(
+boolean)
+
+public void setWillNotDraw(
+boolean)
+
+public boolean showContextMenu()
+
+public void startAnimation(
+android.view.animation.Animation)
+
+ void unFocus()
+
+public void unscheduleDrawable(
+android.graphics.drawable.Drawable)
+
+public void unscheduleDrawable(
+android.graphics.drawable.Drawable
+java.lang.Runnable)
+
+protected boolean verifyDrawable(
+android.graphics.drawable.Drawable)
+@android.view.ViewDebug$ExportedProperty
+public boolean willNotCacheDrawing()
+@android.view.ViewDebug$ExportedProperty
+public boolean willNotDraw()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/SurfaceView$MyWindow; )
+public class android.view.SurfaceView extends android.view.View
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG
+
+static final int GET_NEW_SURFACE_MSG
+
+static final int KEEP_SCREEN_ON_MSG
+
+private static final java.lang.String TAG
+
+private static final boolean localLOGV
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/view/SurfaceHolder$Callback;>; )
+final java.util.ArrayList mCallbacks
+
+final android.graphics.Rect mCoveredInsets
+
+ boolean mDestroyReportNeeded
+
+ boolean mDrawingStopped
+
+ int mFormat
+
+final android.os.Handler mHandler
+
+ boolean mHaveFrame
+
+ int mHeight
+
+ boolean mIsCreating
+
+ long mLastLockTime
+
+final android.view.WindowManager$LayoutParams mLayout
+
+ int mLeft
+
+ boolean mNewSurfaceNeeded
+
+ int mRequestedFormat
+
+ int mRequestedHeight
+
+ int mRequestedType
+
+ boolean mRequestedVisible
+
+ int mRequestedWidth
+
+ android.view.IWindowSession mSession
+
+final android.view.Surface mSurface
+
+final android.graphics.Rect mSurfaceFrame
+
+private android.view.SurfaceHolder mSurfaceHolder
+
+final java.util.concurrent.locks.ReentrantLock mSurfaceLock
+
+ int mTop
+
+ int mType
+
+ boolean mVisible
+
+ int mWidth
+
+final android.graphics.Rect mWinFrame
+
+ android.view.SurfaceView$MyWindow mWindow
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static void access$100(
+android.view.SurfaceView
+boolean)
+
+private void reportSurfaceDestroyed()
+
+private void updateWindow(
+boolean)
+
+protected void dispatchDraw(
+android.graphics.Canvas)
+
+public void draw(
+android.graphics.Canvas)
+
+public boolean gatherTransparentRegion(
+android.graphics.Region)
+
+public android.view.SurfaceHolder getHolder()
+
+ void handleGetNewSurface()
+
+protected void onAttachedToWindow()
+
+protected void onDetachedFromWindow()
+
+protected void onMeasure(
+int
+int)
+
+protected void onScrollChanged(
+int
+int
+int
+int)
+
+protected void onSizeChanged(
+int
+int
+int
+int)
+
+protected void onWindowVisibilityChanged(
+int)
+
+________________CLASS________________
+
+
+public class android.view.TouchDelegate extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ABOVE
+
+public static final int BELOW
+
+public static final int TO_LEFT
+
+public static final int TO_RIGHT
+
+private android.graphics.Rect mBounds
+
+private boolean mDelegateTargeted
+
+private android.view.View mDelegateView
+
+private android.graphics.Rect mSlopBounds
+----------------METHODS----------------
+
+public void <init>(
+android.graphics.Rect
+android.view.View)
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+________________CLASS________________
+
+
+public final class android.view.VelocityTracker extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final boolean DEBUG
+
+static final int LONGEST_PAST_TIME
+
+static final int NUM_PAST
+
+static final java.lang.String TAG
+
+static final boolean localLOGV
+
+static final android.view.VelocityTracker[] mPool
+
+final long[] mPastTime
+
+final float[] mPastX
+
+final float[] mPastY
+
+ float mXVelocity
+
+ float mYVelocity
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+private void addPoint(
+float
+float
+long)
+
+public static android.view.VelocityTracker obtain()
+
+public void addMovement(
+android.view.MotionEvent)
+
+public void clear()
+
+public void computeCurrentVelocity(
+int)
+
+public float getXVelocity()
+
+public float getYVelocity()
+
+public void recycle()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/View; )
+ class android.view.View$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1544 name =SoundEffectPlayer )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/View$AttachInfo; )
+abstract interface class android.view.View$AttachInfo$SoundEffectPlayer extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void playSoundEffect(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =AttachInfo )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/View; )
+@dalvik.annotation.MemberClasses (value =Landroid/view/View$AttachInfo$SoundEffectPlayer; )
+ class android.view.View$AttachInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int INVALIDATE_MSG
+
+static final int INVALIDATE_RECT_MSG
+
+ boolean mAttributesChanged
+
+ android.graphics.Canvas mCanvas
+
+ long mDrawingTime
+
+final android.os.Handler mHandler
+
+ boolean mHasWindowFocus
+
+ boolean mInTouchMode
+
+ boolean mKeepScreenOn
+
+ android.os.IBinder mPanelParentWindowToken
+
+ boolean mRecomputeGlobalAttributes
+
+ android.view.IWindowSession mSession
+
+ android.view.View$AttachInfo$SoundEffectPlayer mSoundEffectPlayer
+
+ android.view.Surface mSurface
+
+final android.view.ViewTreeObserver mTreeObserver
+
+ int mWindowLeft
+
+ android.os.IBinder mWindowToken
+
+ int mWindowTop
+
+ int mWindowVisibility
+----------------METHODS----------------
+
+ void <init>(
+android.os.Handler)
+
+ void <init>(
+android.os.Handler
+android.view.View$AttachInfo$SoundEffectPlayer)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/view/View$BaseSavedState;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/View$BaseSavedState; )
+final class android.view.View$BaseSavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.view.View$BaseSavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.view.View$BaseSavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/View; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =BaseSavedState )
+public class android.view.View$BaseSavedState extends android.view.AbsSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/view/View$BaseSavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.os.Parcel)
+
+public void <init>(
+android.os.Parcelable)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =CheckForLongPress )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/View; )
+ class android.view.View$CheckForLongPress extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private int mOriginalWindowAttachCount
+
+final android.view.View this$0
+----------------METHODS----------------
+
+ void <init>(
+android.view.View)
+
+public void rememberWindowAttachCount()
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =MeasureSpec )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/View; )
+public class android.view.View$MeasureSpec extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int AT_MOST
+
+public static final int EXACTLY
+
+private static final int MODE_MASK
+
+private static final int MODE_SHIFT
+
+public static final int UNSPECIFIED
+----------------METHODS----------------
+
+public void <init>()
+
+public static int getMode(
+int)
+
+public static int getSize(
+int)
+
+public static int makeMeasureSpec(
+int
+int)
+
+public static java.lang.String toString(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/View; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnLongClickListener )
+public abstract interface class android.view.View$OnLongClickListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean onLongClick(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnTouchListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/View; )
+public abstract interface class android.view.View$OnTouchListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean onTouch(
+android.view.View
+android.view.MotionEvent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/View; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =ScrollabilityCache )
+ class android.view.View$ScrollabilityCache extends java.lang.Object
+
+----------------FIELDS----------------
+
+public int fadingEdgeLength
+
+private int mLastColor
+
+public final android.graphics.Matrix matrix
+
+public final android.graphics.Paint paint
+
+public android.widget.ScrollBarDrawable scrollBar
+
+public int scrollBarSize
+
+public android.graphics.Shader shader
+----------------METHODS----------------
+
+public void <init>()
+
+public void setFadeColor(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/View; )
+@dalvik.annotation.InnerClass (accessFlags =18 name =UnsetPressedState )
+final class android.view.View$UnsetPressedState extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.view.View this$0
+----------------METHODS----------------
+
+private void <init>(
+android.view.View)
+
+ void <init>(
+android.view.View
+android.view.View$1)
+
+public void run()
+
+________________CLASS________________
+
+
+public class android.view.ViewConfiguration extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int EDGE_SLOP
+
+private static final int FADING_EDGE_LENGTH
+
+private static final int GLOBAL_ACTIONS_KEY_TIMEOUT
+
+private static final int JUMP_TAP_TIMEOUT
+
+private static final int LONG_PRESS_TIMEOUT
+
+private static final int MAXIMUM_DRAWING_CACHE_SIZE
+
+private static final int MINIMUM_FLING_VELOCITY
+
+private static final int PRESSED_STATE_DURATION
+
+private static final int SCROLL_BAR_SIZE
+
+private static float SCROLL_FRICTION
+
+private static final int TAP_TIMEOUT
+
+private static final int TOUCH_SLOP
+
+private static final int WINDOW_TOUCH_SLOP
+
+private static final int ZOOM_CONTROLS_TIMEOUT
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static int getEdgeSlop()
+
+public static int getFadingEdgeLength()
+
+public static long getGlobalActionKeyTimeout()
+
+public static int getJumpTapTimeout()
+
+public static int getLongPressTimeout()
+
+public static int getMaximumDrawingCacheSize()
+
+public static int getMinimumFlingVelocity()
+
+public static int getPressedStateDuration()
+
+public static int getScrollBarSize()
+
+public static float getScrollFriction()
+
+public static int getTapTimeout()
+
+public static int getTouchSlop()
+
+public static int getWindowTouchSlop()
+
+public static long getZoomControlsTimeout()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.view.ViewDebug$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.view.View val$view
+----------------METHODS----------------
+
+ void <init>(
+android.view.View)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.view.ViewDebug$2 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.graphics.Bitmap[] val$cache
+
+final android.view.View val$captureView
+
+final boolean val$hasCache
+
+final java.util.concurrent.CountDownLatch val$latch
+----------------METHODS----------------
+
+ void <init>(
+boolean
+android.view.View
+android.graphics.Bitmap[]
+java.util.concurrent.CountDownLatch)
+
+public void run()
+
+________________CLASS________________
+
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+@dalvik.annotation.InnerClass (accessFlags =9737 name =CapturedViewProperty )
+@dalvik.annotation.AnnotationDefault (value =Landroid/view/ViewDebug$CapturedViewProperty;:[retrieveReturn =false] )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewDebug; )
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!FIELDLjava/lang/annotation/ElementType;!METHOD )
+public abstract interface class android.view.ViewDebug$CapturedViewProperty extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean retrieveReturn()
+
+________________CLASS________________
+
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewDebug; )
+@dalvik.annotation.AnnotationDefault (value =Landroid/view/ViewDebug$ExportedProperty;:[deepExport =false, mapping =, prefix =, resolveId =false] )
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!FIELDLjava/lang/annotation/ElementType;!METHOD )
+@dalvik.annotation.InnerClass (accessFlags =9737 name =ExportedProperty )
+public abstract interface class android.view.ViewDebug$ExportedProperty extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean deepExport()
+
+public abstract android.view.ViewDebug$IntToString[] mapping()
+
+public abstract java.lang.String prefix()
+
+public abstract boolean resolveId()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/view/ViewDebug$HierarchyTraceType;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewDebug; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =HierarchyTraceType )
+public final class android.view.ViewDebug$HierarchyTraceType extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.view.ViewDebug$HierarchyTraceType[] $VALUES
+
+public static final android.view.ViewDebug$HierarchyTraceType BUILD_CACHE
+
+public static final android.view.ViewDebug$HierarchyTraceType DRAW
+
+public static final android.view.ViewDebug$HierarchyTraceType INVALIDATE
+
+public static final android.view.ViewDebug$HierarchyTraceType INVALIDATE_CHILD
+
+public static final android.view.ViewDebug$HierarchyTraceType INVALIDATE_CHILD_IN_PARENT
+
+public static final android.view.ViewDebug$HierarchyTraceType ON_LAYOUT
+
+public static final android.view.ViewDebug$HierarchyTraceType ON_MEASURE
+
+public static final android.view.ViewDebug$HierarchyTraceType REQUEST_LAYOUT
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.view.ViewDebug$HierarchyTraceType valueOf(
+java.lang.String)
+
+public static android.view.ViewDebug$HierarchyTraceType[] values()
+
+________________CLASS________________
+
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+@dalvik.annotation.InnerClass (accessFlags =9737 name =IntToString )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewDebug; )
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!TYPE )
+public abstract interface class android.view.ViewDebug$IntToString extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int from()
+
+public abstract java.lang.String to()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =RecyclerTrace )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewDebug; )
+ class android.view.ViewDebug$RecyclerTrace extends java.lang.Object
+
+----------------FIELDS----------------
+
+public int indexOnScreen
+
+public int position
+
+public android.view.ViewDebug$RecyclerTraceType type
+
+public int view
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.view.ViewDebug$1)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/view/ViewDebug$RecyclerTraceType;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =RecyclerTraceType )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewDebug; )
+public final class android.view.ViewDebug$RecyclerTraceType extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.view.ViewDebug$RecyclerTraceType[] $VALUES
+
+public static final android.view.ViewDebug$RecyclerTraceType BIND_VIEW
+
+public static final android.view.ViewDebug$RecyclerTraceType MOVE_FROM_ACTIVE_TO_SCRAP_HEAP
+
+public static final android.view.ViewDebug$RecyclerTraceType MOVE_TO_ACTIVE_HEAP
+
+public static final android.view.ViewDebug$RecyclerTraceType MOVE_TO_SCRAP_HEAP
+
+public static final android.view.ViewDebug$RecyclerTraceType NEW_VIEW
+
+public static final android.view.ViewDebug$RecyclerTraceType RECYCLE_FROM_ACTIVE_HEAP
+
+public static final android.view.ViewDebug$RecyclerTraceType RECYCLE_FROM_SCRAP_HEAP
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.view.ViewDebug$RecyclerTraceType valueOf(
+java.lang.String)
+
+public static android.view.ViewDebug$RecyclerTraceType[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/ViewDebug$RecyclerTrace;Landroid/view/ViewDebug$RecyclerTraceType;Landroid/view/ViewDebug$HierarchyTraceType;Landroid/view/ViewDebug$CapturedViewProperty;Landroid/view/ViewDebug$IntToString;Landroid/view/ViewDebug$ExportedProperty; )
+public class android.view.ViewDebug extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int CAPTURE_TIMEOUT
+
+private static final java.lang.String REMOTE_COMMAND_CAPTURE
+
+private static final java.lang.String REMOTE_COMMAND_DUMP
+
+private static final java.lang.String REMOTE_COMMAND_INVALIDATE
+
+private static final java.lang.String REMOTE_COMMAND_REQUEST_LAYOUT
+
+static final java.lang.String SYSTEM_PROPERTY_CAPTURE_EVENT
+
+static final java.lang.String SYSTEM_PROPERTY_CAPTURE_VIEW
+
+public static final boolean TRACE_HIERARCHY
+
+public static final boolean TRACE_RECYCLER
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Class<*>;[Ljava/lang/reflect/Field;>; )
+private static java.util.HashMap mCapturedViewFieldsForClasses
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Class<*>;[Ljava/lang/reflect/Method;>; )
+private static java.util.HashMap mCapturedViewMethodsForClasses
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Class<*>;[Ljava/lang/reflect/Field;>; )
+private static java.util.HashMap sFieldsForClasses
+
+private static java.lang.String sHierarchyTracePrefix
+
+private static java.io.BufferedWriter sHierarchyTraces
+
+private static android.view.ViewRoot sHierarhcyRoot
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Class<*>;[Ljava/lang/reflect/Method;>; )
+private static java.util.HashMap sMethodsForClasses
+
+private static android.view.View sRecyclerOwnerView
+
+private static java.lang.String sRecyclerTracePrefix
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/view/ViewDebug$RecyclerTrace;>; )
+private static java.util.List sRecyclerTraces
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/view/View;>; )
+private static java.util.List sRecyclerViews
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void capture(
+android.view.View
+java.io.OutputStream
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;)Ljava/lang/String; )
+private static java.lang.String capturedViewExportFields(
+java.lang.Object
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;)Ljava/lang/String; )
+private static java.lang.String capturedViewExportMethods(
+java.lang.Object
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)[Ljava/lang/reflect/Field; )
+private static java.lang.reflect.Field[] capturedViewGetPropertyFields(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)[Ljava/lang/reflect/Method; )
+private static java.lang.reflect.Method[] capturedViewGetPropertyMethods(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static void dispatchCommand(
+android.view.View
+java.lang.String
+java.lang.String
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void dump(
+android.view.View
+java.io.OutputStream)
+
+public static void dumpCapturedView(
+java.lang.String
+java.lang.Object)
+
+private static boolean dumpView(
+java.lang.Object
+java.io.BufferedWriter
+int)
+
+private static void dumpViewHierarchy(
+android.view.ViewGroup
+java.io.BufferedWriter
+int)
+
+private static void dumpViewHierarchyWithProperties(
+android.view.ViewGroup
+java.io.BufferedWriter
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void dumpViewProperties(
+java.lang.Object
+java.io.BufferedWriter)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void dumpViewProperties(
+java.lang.Object
+java.io.BufferedWriter
+java.lang.String)
+
+private static boolean dumpViewWithProperties(
+android.view.View
+java.io.BufferedWriter
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/io/BufferedWriter;Ljava/lang/Class<*>;Ljava/lang/String;)V )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void exportFields(
+java.lang.Object
+java.io.BufferedWriter
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/io/BufferedWriter;Ljava/lang/Class<*>;Ljava/lang/String;)V )
+private static void exportMethods(
+java.lang.Object
+java.io.BufferedWriter
+java.lang.Class
+java.lang.String)
+
+private static android.view.View findView(
+android.view.ViewGroup
+java.lang.String
+int)
+
+private static android.view.View findViewByHashCode(
+android.view.View
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)[Ljava/lang/reflect/Field; )
+private static java.lang.reflect.Field[] getExportedPropertyFields(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)[Ljava/lang/reflect/Method; )
+private static java.lang.reflect.Method[] getExportedPropertyMethods(
+java.lang.Class)
+
+public static long getViewInstanceCount()
+
+public static long getViewRootInstanceCount()
+
+private static void invalidate(
+android.view.View
+java.lang.String)
+
+private static boolean isRequestedView(
+android.view.View
+java.lang.String
+int)
+
+private static void requestLayout(
+android.view.View
+java.lang.String)
+
+public static void startHierarchyTracing(
+java.lang.String
+android.view.View)
+
+public static void startRecyclerTracing(
+java.lang.String
+android.view.View)
+
+public static void stopHierarchyTracing()
+
+public static void stopRecyclerTracing()
+
+public static void trace(
+android.view.View
+android.view.ViewDebug$HierarchyTraceType)
+
+public static transient void trace(
+android.view.View
+android.view.ViewDebug$RecyclerTraceType
+int[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.view.ViewGroup$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.view.ViewGroup this$0
+----------------METHODS----------------
+
+ void <init>(
+android.view.ViewGroup)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.view.ViewGroup$2 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.view.ViewGroup this$0
+----------------METHODS----------------
+
+ void <init>(
+android.view.ViewGroup)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =LayoutParams )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewGroup; )
+public class android.view.ViewGroup$LayoutParams extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int FILL_PARENT
+
+public static final int WRAP_CONTENT
+@android.view.ViewDebug$ExportedProperty (mapping =Landroid/view/ViewDebug$IntToString;:[from =255, to =FILL_PARENT]Landroid/view/ViewDebug$IntToString;:[from =254, to =WRAP_CONTENT] )
+public int height
+
+public android.view.animation.LayoutAnimationController$AnimationParameters layoutAnimationParameters
+@android.view.ViewDebug$ExportedProperty (mapping =Landroid/view/ViewDebug$IntToString;:[from =255, to =FILL_PARENT]Landroid/view/ViewDebug$IntToString;:[from =254, to =WRAP_CONTENT] )
+public int width
+----------------METHODS----------------
+
+ void <init>()
+
+public void <init>(
+int
+int)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.view.ViewGroup$LayoutParams)
+
+protected static java.lang.String sizeToString(
+int)
+
+public java.lang.String debug(
+java.lang.String)
+
+protected void setBaseAttributes(
+android.content.res.TypedArray
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewGroup; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =MarginLayoutParams )
+public class android.view.ViewGroup$MarginLayoutParams extends android.view.ViewGroup$LayoutParams
+
+----------------FIELDS----------------
+@android.view.ViewDebug$ExportedProperty
+public int bottomMargin
+@android.view.ViewDebug$ExportedProperty
+public int leftMargin
+@android.view.ViewDebug$ExportedProperty
+public int rightMargin
+@android.view.ViewDebug$ExportedProperty
+public int topMargin
+----------------METHODS----------------
+
+public void <init>(
+int
+int)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.view.ViewGroup$LayoutParams)
+
+public void <init>(
+android.view.ViewGroup$MarginLayoutParams)
+
+public void setMargins(
+int
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewGroup; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnHierarchyChangeListener )
+public abstract interface class android.view.ViewGroup$OnHierarchyChangeListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onChildViewAdded(
+android.view.View
+android.view.View)
+
+public abstract void onChildViewRemoved(
+android.view.View
+android.view.View)
+
+________________CLASS________________
+
+
+public abstract interface class android.view.ViewParent extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void bringChildToFront(
+android.view.View)
+
+public abstract void childDrawableStateChanged(
+android.view.View)
+
+public abstract void clearChildFocus(
+android.view.View)
+
+public abstract void createContextMenu(
+android.view.ContextMenu)
+
+public abstract android.view.View focusSearch(
+android.view.View
+int)
+
+public abstract void focusableViewAvailable(
+android.view.View)
+
+public abstract boolean getChildVisibleRect(
+android.view.View
+android.graphics.Rect
+android.graphics.Point)
+
+public abstract android.view.ViewParent getParent()
+
+public abstract void invalidateChild(
+android.view.View
+android.graphics.Rect)
+
+public abstract android.view.ViewParent invalidateChildInParent(
+int[]
+android.graphics.Rect)
+
+public abstract boolean isLayoutRequested()
+
+public abstract void recomputeViewAttributes(
+android.view.View)
+
+public abstract void requestChildFocus(
+android.view.View
+android.view.View)
+
+public abstract void requestDisallowInterceptTouchEvent(
+boolean)
+
+public abstract void requestLayout()
+
+public abstract void requestTransparentRegion(
+android.view.View)
+
+public abstract boolean showContextMenuForChild(
+android.view.View)
+
+________________CLASS________________
+
+
+public abstract interface class android.view.ViewManager extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void addView(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+public abstract void removeView(
+android.view.View)
+
+public abstract void updateViewLayout(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/ViewGroup$MarginLayoutParams;Landroid/view/ViewGroup$LayoutParams;Landroid/view/ViewGroup$OnHierarchyChangeListener; )
+public abstract class android.view.ViewGroup extends android.view.View implements android.view.ViewParent, android.view.ViewManager
+
+----------------FIELDS----------------
+
+private static final int ARRAY_CAPACITY_INCREMENT
+
+private static final int ARRAY_INITIAL_CAPACITY
+
+private static final int CHILD_LEFT_INDEX
+
+private static final int CHILD_TOP_INDEX
+
+protected static final int CLIP_TO_PADDING_MASK
+
+private static final boolean DBG
+
+private static final int[] DESCENDANT_FOCUSABILITY_FLAGS
+
+private static final int FLAG_ADD_STATES_FROM_CHILDREN
+
+private static final int FLAG_ALPHA_LOWER_THAN_ONE
+
+private static final int FLAG_ALWAYS_DRAWN_WITH_CACHE
+
+private static final int FLAG_ANIMATION_CACHE
+
+private static final int FLAG_ANIMATION_DONE
+
+private static final int FLAG_CHILDREN_DRAWN_WITH_CACHE
+
+private static final int FLAG_CLEAR_TRANSFORMATION
+
+private static final int FLAG_CLIP_CHILDREN
+
+private static final int FLAG_CLIP_TO_PADDING
+
+private static final int FLAG_DISALLOW_INTERCEPT
+
+private static final int FLAG_INVALIDATE_REQUIRED
+
+private static final int FLAG_MASK_FOCUSABILITY
+
+private static final int FLAG_NOTIFY_ANIMATION_LISTENER
+
+private static final int FLAG_NOTIFY_CHILDREN_ON_DRAWABLE_STATE_CHANGE
+
+private static final int FLAG_OPTIMIZE_INVALIDATE
+
+private static final int FLAG_PADDING_NOT_NULL
+
+private static final int FLAG_RUN_ANIMATION
+
+protected static final int FLAG_SUPPORT_STATIC_TRANSFORMATIONS
+
+protected static final int FLAG_USE_CHILD_DRAWING_ORDER
+
+public static final int FOCUS_AFTER_DESCENDANTS
+
+public static final int FOCUS_BEFORE_DESCENDANTS
+
+public static final int FOCUS_BLOCK_DESCENDANTS
+
+public static final int PERSISTENT_ALL_CACHES
+
+public static final int PERSISTENT_ANIMATION_CACHE
+
+public static final int PERSISTENT_NO_CACHE
+
+public static final int PERSISTENT_SCROLLING_CACHE
+
+private android.view.animation.Animation$AnimationListener mAnimationListener
+
+private final android.graphics.Paint mCachePaint
+
+private final android.view.animation.Transformation mChildTransformation
+
+private android.view.View[] mChildren
+
+private int mChildrenCount
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/view/View;>; )
+protected java.util.ArrayList mDisappearingChildren
+
+private android.view.View mFocused
+
+protected int mGroupFlags
+
+private android.view.animation.LayoutAnimationController mLayoutAnimationController
+
+private android.view.View mMotionTarget
+
+protected android.view.ViewGroup$OnHierarchyChangeListener mOnHierarchyChangeListener
+
+protected int mPersistentDrawingCache
+
+private final android.graphics.Rect mTempRect
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static void access$000(
+android.view.ViewGroup)
+
+static android.view.animation.LayoutAnimationController access$100(
+android.view.ViewGroup)
+
+static android.view.animation.Animation$AnimationListener access$200(
+android.view.ViewGroup)
+
+private void addDisappearingView(
+android.view.View)
+
+private void addInArray(
+android.view.View
+int)
+
+private void addViewInner(
+android.view.View
+int
+android.view.ViewGroup$LayoutParams
+boolean)
+
+private void bindLayoutAnimation(
+android.view.View)
+
+private void finishAnimatingView(
+android.view.View
+android.view.animation.Animation)
+
+public static int getChildMeasureSpec(
+int
+int
+int)
+
+private void initFromAttributes(
+android.content.Context
+android.util.AttributeSet)
+
+private void initViewGroup()
+
+private void notifyAnimationListener()
+
+private void removeFromArray(
+int)
+
+private void removeFromArray(
+int
+int)
+
+private void removeViewInternal(
+int
+android.view.View)
+
+private void removeViewInternal(
+android.view.View)
+
+private void removeViewsInternal(
+int
+int)
+
+private void setBooleanFlag(
+int
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/view/View;>;I)V )
+public void addFocusables(
+java.util.ArrayList
+int)
+
+public boolean addStatesFromChildren()
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/view/View;>;)V )
+public void addTouchables(
+java.util.ArrayList)
+
+public void addView(
+android.view.View)
+
+public void addView(
+android.view.View
+int)
+
+public void addView(
+android.view.View
+int
+int)
+
+public void addView(
+android.view.View
+int
+android.view.ViewGroup$LayoutParams)
+
+public void addView(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+protected boolean addViewInLayout(
+android.view.View
+int
+android.view.ViewGroup$LayoutParams)
+
+protected boolean addViewInLayout(
+android.view.View
+int
+android.view.ViewGroup$LayoutParams
+boolean)
+
+protected void attachLayoutAnimationParameters(
+android.view.View
+android.view.ViewGroup$LayoutParams
+int
+int)
+
+protected void attachViewToParent(
+android.view.View
+int
+android.view.ViewGroup$LayoutParams)
+
+public void bringChildToFront(
+android.view.View)
+
+protected boolean canAnimate()
+
+protected boolean checkLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+public void childDrawableStateChanged(
+android.view.View)
+
+protected void cleanupLayoutState(
+android.view.View)
+
+public void clearChildFocus(
+android.view.View)
+
+public void clearDisappearingChildren()
+
+public void clearFocus()
+
+protected void debug(
+int)
+
+protected void detachAllViewsFromParent()
+
+protected void detachViewFromParent(
+int)
+
+protected void detachViewFromParent(
+android.view.View)
+
+protected void detachViewsFromParent(
+int
+int)
+
+ void dispatchAttachedToWindow(
+android.view.View$AttachInfo
+int)
+
+ void dispatchCollectViewAttributes(
+int)
+
+ void dispatchDetachedFromWindow()
+
+protected void dispatchDraw(
+android.graphics.Canvas)
+@dalvik.annotation.Signature (value =(Landroid/util/SparseArray<Landroid/os/Parcelable;>;)V )
+protected void dispatchFreezeSelfOnly(
+android.util.SparseArray)
+
+public boolean dispatchKeyEvent(
+android.view.KeyEvent)
+@dalvik.annotation.Signature (value =(Landroid/util/SparseArray<Landroid/os/Parcelable;>;)V )
+protected void dispatchRestoreInstanceState(
+android.util.SparseArray)
+@dalvik.annotation.Signature (value =(Landroid/util/SparseArray<Landroid/os/Parcelable;>;)V )
+protected void dispatchSaveInstanceState(
+android.util.SparseArray)
+
+protected void dispatchSetPressed(
+boolean)
+
+public void dispatchSetSelected(
+boolean)
+@dalvik.annotation.Signature (value =(Landroid/util/SparseArray<Landroid/os/Parcelable;>;)V )
+protected void dispatchThawSelfOnly(
+android.util.SparseArray)
+
+public boolean dispatchTouchEvent(
+android.view.MotionEvent)
+
+public boolean dispatchTrackballEvent(
+android.view.MotionEvent)
+
+public boolean dispatchUnhandledMove(
+android.view.View
+int)
+
+public void dispatchWindowFocusChanged(
+boolean)
+
+public void dispatchWindowVisibilityChanged(
+int)
+
+protected boolean drawChild(
+android.graphics.Canvas
+android.view.View
+long)
+
+protected void drawableStateChanged()
+
+public android.view.View findFocus()
+
+protected android.view.View findViewTraversal(
+int)
+
+protected android.view.View findViewWithTagTraversal(
+java.lang.Object)
+
+protected boolean fitSystemWindows(
+android.graphics.Rect)
+
+public android.view.View focusSearch(
+android.view.View
+int)
+
+public void focusableViewAvailable(
+android.view.View)
+
+public boolean gatherTransparentRegion(
+android.graphics.Region)
+
+protected android.view.ViewGroup$LayoutParams generateDefaultLayoutParams()
+
+public android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+protected android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+public android.view.View getChildAt(
+int)
+
+public int getChildCount()
+
+protected int getChildDrawingOrder(
+int
+int)
+
+protected boolean getChildStaticTransformation(
+android.view.View
+android.view.animation.Transformation)
+
+public boolean getChildVisibleRect(
+android.view.View
+android.graphics.Rect
+android.graphics.Point)
+@android.view.ViewDebug$ExportedProperty (mapping =Landroid/view/ViewDebug$IntToString;:[from =131072, to =FOCUS_BEFORE_DESCENDANTS]Landroid/view/ViewDebug$IntToString;:[from =262144, to =FOCUS_AFTER_DESCENDANTS]Landroid/view/ViewDebug$IntToString;:[from =393216, to =FOCUS_BLOCK_DESCENDANTS] )
+public int getDescendantFocusability()
+
+public android.view.View getFocusedChild()
+
+public android.view.animation.LayoutAnimationController getLayoutAnimation()
+
+public android.view.animation.Animation$AnimationListener getLayoutAnimationListener()
+@android.view.ViewDebug$ExportedProperty (mapping =Landroid/view/ViewDebug$IntToString;:[from =0, to =NONE]Landroid/view/ViewDebug$IntToString;:[from =3, to =ANIMATION]Landroid/view/ViewDebug$IntToString;:[from =2, to =SCROLLING]Landroid/view/ViewDebug$IntToString;:[from =3, to =ALL] )
+public int getPersistentDrawingCache()
+
+ void handleFocusGainInternal(
+int
+android.graphics.Rect)
+
+public boolean hasFocus()
+
+public boolean hasFocusable()
+
+public int indexOfChild(
+android.view.View)
+
+public final void invalidateChild(
+android.view.View
+android.graphics.Rect)
+
+public android.view.ViewParent invalidateChildInParent(
+int[]
+android.graphics.Rect)
+@android.view.ViewDebug$ExportedProperty
+public boolean isAlwaysDrawnWithCacheEnabled()
+@android.view.ViewDebug$ExportedProperty
+public boolean isAnimationCacheEnabled()
+@android.view.ViewDebug$ExportedProperty
+protected boolean isChildrenDrawnWithCacheEnabled()
+
+protected void measureChild(
+android.view.View
+int
+int)
+
+protected void measureChildWithMargins(
+android.view.View
+int
+int
+int
+int)
+
+protected void measureChildren(
+int
+int)
+
+public void offsetChildrenTopAndBottom(
+int)
+
+public final void offsetDescendantRectToMyCoords(
+android.view.View
+android.graphics.Rect)
+
+ void offsetRectBetweenParentAndChild(
+android.view.View
+android.graphics.Rect
+boolean
+boolean)
+
+public final void offsetRectIntoDescendantCoords(
+android.view.View
+android.graphics.Rect)
+
+protected void onAnimationEnd()
+
+protected void onAnimationStart()
+
+protected int[] onCreateDrawableState(
+int)
+
+public boolean onInterceptTouchEvent(
+android.view.MotionEvent)
+
+protected abstract void onLayout(
+boolean
+int
+int
+int
+int)
+
+protected boolean onRequestFocusInDescendants(
+int
+android.graphics.Rect)
+
+public void recomputeViewAttributes(
+android.view.View)
+
+public void removeAllViews()
+
+public void removeAllViewsInLayout()
+
+protected void removeDetachedView(
+android.view.View
+boolean)
+
+public void removeView(
+android.view.View)
+
+public void removeViewAt(
+int)
+
+public void removeViewInLayout(
+android.view.View)
+
+public void removeViews(
+int
+int)
+
+public void removeViewsInLayout(
+int
+int)
+
+public void requestChildFocus(
+android.view.View
+android.view.View)
+
+public boolean requestChildRectangleOnScreen(
+android.view.View
+android.graphics.Rect
+boolean)
+
+public void requestDisallowInterceptTouchEvent(
+boolean)
+
+public boolean requestFocus(
+int
+android.graphics.Rect)
+
+public void requestTransparentRegion(
+android.view.View)
+
+public void scheduleLayoutAnimation()
+
+public void setAddStatesFromChildren(
+boolean)
+
+public void setAlwaysDrawnWithCacheEnabled(
+boolean)
+
+public void setAnimationCacheEnabled(
+boolean)
+
+protected void setChildrenDrawingCacheEnabled(
+boolean)
+
+protected void setChildrenDrawnWithCacheEnabled(
+boolean)
+
+public void setClipChildren(
+boolean)
+
+public void setClipToPadding(
+boolean)
+
+public void setDescendantFocusability(
+int)
+
+public void setLayoutAnimation(
+android.view.animation.LayoutAnimationController)
+
+public void setLayoutAnimationListener(
+android.view.animation.Animation$AnimationListener)
+
+public void setOnHierarchyChangeListener(
+android.view.ViewGroup$OnHierarchyChangeListener)
+
+public void setPadding(
+int
+int
+int
+int)
+
+public void setPersistentDrawingCache(
+int)
+
+public boolean showContextMenuForChild(
+android.view.View)
+
+public void startLayoutAnimation()
+
+ void unFocus()
+
+public void updateViewLayout(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewRoot; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.view.ViewRoot$1 extends java.lang.Object implements android.view.SurfaceHolder
+
+----------------FIELDS----------------
+
+final android.view.ViewRoot this$0
+----------------METHODS----------------
+
+ void <init>(
+android.view.ViewRoot)
+
+public void addCallback(
+android.view.SurfaceHolder$Callback)
+
+public android.view.Surface getSurface()
+
+public android.graphics.Rect getSurfaceFrame()
+
+public boolean isCreating()
+
+public android.graphics.Canvas lockCanvas()
+
+public android.graphics.Canvas lockCanvas(
+android.graphics.Rect)
+
+public void removeCallback(
+android.view.SurfaceHolder$Callback)
+
+public void setFixedSize(
+int
+int)
+
+public void setFormat(
+int)
+
+public void setKeepScreenOn(
+boolean)
+
+public void setSizeFromLayout()
+
+public void setType(
+int)
+
+public void unlockCanvasAndPost(
+android.graphics.Canvas)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewRoot; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =CalledFromWrongThreadException )
+public final class android.view.ViewRoot$CalledFromWrongThreadException extends android.util.AndroidRuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewRoot; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =RootHandler )
+final class android.view.ViewRoot$RootHandler extends android.os.Handler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.view.ViewRoot$1)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =HandlerAction )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewRoot$RunQueue; )
+ class android.view.ViewRoot$RunQueue$HandlerAction extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.lang.Runnable action
+
+ long delay
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.view.ViewRoot$1)
+
+public boolean equals(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewRoot; )
+@dalvik.annotation.MemberClasses (value =Landroid/view/ViewRoot$RunQueue$HandlerAction; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =RunQueue )
+final class android.view.ViewRoot$RunQueue extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/view/ViewRoot$RunQueue$HandlerAction;>; )
+private final java.util.ArrayList mActions
+----------------METHODS----------------
+
+ void <init>()
+
+ void executeActions(
+android.os.Handler)
+
+ void post(
+java.lang.Runnable)
+
+ void postDelayed(
+java.lang.Runnable
+long)
+
+ void removeCallbacks(
+java.lang.Runnable)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewRoot; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =TrackballAxis )
+final class android.view.ViewRoot$TrackballAxis extends java.lang.Object
+
+----------------FIELDS----------------
+
+ float absPosition
+
+ float acceleration
+
+ int dir
+
+ int nonAccelMovement
+
+ float position
+
+ int step
+----------------METHODS----------------
+
+ void <init>()
+
+ float collect(
+float
+java.lang.String)
+
+ int generate(
+float)
+
+ void reset(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =W )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewRoot; )
+ class android.view.ViewRoot$W extends android.view.IWindow$Stub
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/lang/ref/WeakReference<Landroid/view/ViewRoot;>; )
+private java.lang.ref.WeakReference mViewRoot
+----------------METHODS----------------
+
+public void <init>(
+android.view.ViewRoot)
+
+private static int checkCallingPermission(
+java.lang.String)
+
+public void dispatchAppVisibility(
+boolean)
+
+public void dispatchGetNewSurface()
+
+public void dispatchKey(
+android.view.KeyEvent)
+
+public void dispatchPointer(
+android.view.MotionEvent
+long)
+
+public void dispatchTrackball(
+android.view.MotionEvent
+long)
+
+public void executeCommand(
+java.lang.String
+java.lang.String
+android.os.ParcelFileDescriptor)
+
+public void resized(
+int
+int
+boolean)
+
+public void windowFocusChanged(
+boolean
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/ViewRoot$RunQueue;Landroid/view/ViewRoot$RootHandler;Landroid/view/ViewRoot$CalledFromWrongThreadException;Landroid/view/ViewRoot$TrackballAxis;Landroid/view/ViewRoot$W; )
+final class android.view.ViewRoot extends android.os.Handler implements android.view.ViewParent, android.view.View$AttachInfo$SoundEffectPlayer
+
+----------------FIELDS----------------
+
+private static final boolean DBG
+
+private static final boolean DEBUG_DRAW
+
+private static final boolean DEBUG_ORIENTATION
+
+private static final boolean DEBUG_TRACKBALL
+
+private static final int DIE
+
+private static final int DISPATCH_APP_VISIBILITY
+
+private static final int DISPATCH_GET_NEW_SURFACE
+
+private static final int DISPATCH_KEY
+
+private static final int DISPATCH_POINTER
+
+private static final int DISPATCH_TRACKBALL
+
+private static final int DO_TRAVERSAL
+
+private static final boolean LOCAL_LOGV
+
+static final int MAX_TRACKBALL_DELAY
+
+static final boolean PROFILE_DRAWING
+
+private static final boolean PROFILE_LAYOUT
+
+private static final int RESIZED
+
+private static final int RESIZED_REPORT
+
+private static final boolean SHOW_FPS
+
+private static final java.lang.String TAG
+
+private static final boolean WATCH_POINTER
+
+private static final int WINDOW_FOCUS_CHANGED
+
+private static boolean mInitialized
+
+private static final java.lang.Object mStaticInit
+
+private static int sDrawTime
+
+private static long sInstanceCount
+
+static final android.view.ViewRoot$RunQueue sRunQueue
+@dalvik.annotation.Signature (value =Ljava/lang/ThreadLocal<Landroid/os/Handler;>; )
+static final java.lang.ThreadLocal sUiThreads
+
+private static android.view.IWindowSession sWindowSession
+
+ int mAddNesting
+
+private boolean mAdded
+
+private boolean mAddedTouchMode
+
+private boolean mAppVisible
+
+private final android.view.View$AttachInfo mAttachInfo
+
+private android.media.AudioManager mAudioManager
+
+private final android.graphics.Rect mCoveredInsets
+
+private android.graphics.Rect mDirty
+
+private javax.microedition.khronos.egl.EGL10 mEgl
+
+private javax.microedition.khronos.egl.EGLContext mEglContext
+
+private javax.microedition.khronos.egl.EGLDisplay mEglDisplay
+
+private javax.microedition.khronos.egl.EGLSurface mEglSurface
+
+private boolean mFirst
+
+private android.view.View mFocusedView
+
+private boolean mFullRedrawNeeded
+
+private javax.microedition.khronos.opengles.GL11 mGL
+
+private android.graphics.Canvas mGlCanvas
+
+private boolean mGlWanted
+
+private int mHeight
+
+private android.view.SurfaceHolder mHolder
+
+private long mLastTrackballTime
+
+private boolean mLayoutRequested
+
+private final android.view.WindowLeaked mLocation
+
+private final android.graphics.Rect mNewCoveredInsets
+
+private boolean mNewSurfaceNeeded
+
+private final android.graphics.Region mPreviousTransparentRegion
+
+private boolean mProfile
+
+private boolean mReportNextDraw
+
+private android.view.Surface mSurface
+
+private final android.graphics.Rect mTempRect
+
+private final java.lang.Thread mThread
+
+private final android.view.ViewRoot$TrackballAxis mTrackballAxisX
+
+private final android.view.ViewRoot$TrackballAxis mTrackballAxisY
+
+private final android.graphics.Region mTransparentRegion
+
+private boolean mTraversalScheduled
+
+private boolean mUseGL
+
+private android.view.View mView
+
+private int mViewVisibility
+
+private int mWidth
+
+private boolean mWillDrawSoon
+
+private final android.graphics.Rect mWinFrame
+
+final android.view.ViewRoot$W mWindow
+
+private final android.view.WindowManager$LayoutParams mWindowAttributes
+
+private boolean mWindowAttributesChanged
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static android.view.View access$100(
+android.view.ViewRoot)
+
+static android.view.Surface access$200(
+android.view.ViewRoot)
+
+private static void captureKeyLog(
+java.lang.String
+android.view.KeyEvent)
+
+private static void captureMotionLog(
+java.lang.String
+android.view.MotionEvent)
+
+private void checkEglErrors()
+
+private boolean checkForLeavingTouchModeAndConsume(
+android.view.KeyEvent)
+
+private void deliverKeyEvent(
+android.view.KeyEvent
+boolean)
+
+private void deliverTrackballEvent(
+android.view.MotionEvent)
+
+private void destroyGL()
+
+private void draw(
+boolean)
+
+private boolean ensureTouchModeLocally(
+boolean)
+
+private boolean enterTouchMode()
+
+private android.view.ViewGroup findAncestorToTakeFocusInTouchMode(
+android.view.View)
+
+private android.media.AudioManager getAudioManager()
+
+public static long getInstanceCount()
+
+private int getRootMeasureSpec(
+int
+int)
+
+private void initializeGL()
+
+private void initializeGLInner()
+
+static boolean isDirectional(
+int)
+
+static boolean isInTouchMode()
+
+private static boolean isKeyboardKey(
+android.view.KeyEvent)
+
+private static boolean isViewDescendantOf(
+android.view.View
+android.view.View)
+
+private boolean leaveTouchMode()
+
+private static native void nativeAbandonGlCaches()
+
+private static native void nativeShowFPS(
+android.graphics.Canvas
+int)
+
+private void performTraversals()
+
+public void bringChildToFront(
+android.view.View)
+
+ void checkThread()
+
+public void childDrawableStateChanged(
+android.view.View)
+
+public void clearChildFocus(
+android.view.View)
+
+public void createContextMenu(
+android.view.ContextMenu)
+
+public void debug()
+
+public void die(
+boolean)
+
+public void dispatchAppVisibility(
+boolean)
+
+ void dispatchDetachedFromWindow()
+
+public void dispatchGetNewSurface()
+
+public void dispatchKey(
+android.view.KeyEvent)
+
+public void dispatchPointer(
+android.view.MotionEvent
+long)
+
+public void dispatchResized(
+int
+int
+boolean)
+
+public void dispatchTrackball(
+android.view.MotionEvent
+long)
+
+ boolean ensureTouchMode(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public android.view.View focusSearch(
+android.view.View
+int)
+
+public void focusableViewAvailable(
+android.view.View)
+
+public boolean getChildVisibleRect(
+android.view.View
+android.graphics.Rect
+android.graphics.Point)
+
+ int getHostVisibility()
+
+final android.view.WindowLeaked getLocation()
+
+public android.view.ViewParent getParent()
+
+public android.view.View getView()
+
+protected android.graphics.Rect getWindowFrame()
+
+ void handleAppVisibility(
+boolean)
+
+ void handleGetNewSurface()
+
+public void handleMessage(
+android.os.Message)
+
+public void invalidateChild(
+android.view.View
+android.graphics.Rect)
+
+public android.view.ViewParent invalidateChildInParent(
+int[]
+android.graphics.Rect)
+
+public boolean isLayoutRequested()
+
+public void playSoundEffect(
+int)
+
+public void profile()
+
+public void recomputeViewAttributes(
+android.view.View)
+
+public void requestChildFocus(
+android.view.View
+android.view.View)
+
+public void requestDisallowInterceptTouchEvent(
+boolean)
+
+public void requestLayout()
+
+public void requestTransparentRegion(
+android.view.View)
+
+public void scheduleTraversals()
+
+public void setLayoutParams(
+android.view.WindowManager$LayoutParams)
+
+public void setView(
+android.view.View
+android.view.WindowManager$LayoutParams
+android.view.View)
+
+public boolean showContextMenuForChild(
+android.view.View)
+
+public void unscheduleTraversals()
+
+public void windowFocusChanged(
+boolean
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewStub; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnInflateListener )
+public abstract interface class android.view.ViewStub$OnInflateListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onInflate(
+android.view.ViewStub
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/ViewStub$OnInflateListener; )
+public final class android.view.ViewStub extends android.view.View
+
+----------------FIELDS----------------
+
+private android.view.ViewStub$OnInflateListener mInflateListener
+
+private int mInflatedId
+
+private int mLayoutResource
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+int)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+private void initialize(
+android.content.Context)
+
+protected void dispatchDraw(
+android.graphics.Canvas)
+
+public void draw(
+android.graphics.Canvas)
+
+public int getInflatedId()
+
+public int getLayoutResource()
+
+public android.view.View inflate()
+
+protected void onMeasure(
+int
+int)
+
+public void setInflatedId(
+int)
+
+public void setLayoutResource(
+int)
+
+public void setOnInflateListener(
+android.view.ViewStub$OnInflateListener)
+
+public void setVisibility(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewTreeObserver; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnGlobalFocusChangeListener )
+public abstract interface class android.view.ViewTreeObserver$OnGlobalFocusChangeListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onGlobalFocusChanged(
+android.view.View
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnPreDrawListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewTreeObserver; )
+public abstract interface class android.view.ViewTreeObserver$OnPreDrawListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean onPreDraw()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/ViewTreeObserver; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnTouchModeChangeListener )
+public abstract interface class android.view.ViewTreeObserver$OnTouchModeChangeListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onTouchModeChanged(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/ViewTreeObserver$OnTouchModeChangeListener;Landroid/view/ViewTreeObserver$OnPreDrawListener;Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;Landroid/view/ViewTreeObserver$OnGlobalFocusChangeListener; )
+public final class android.view.ViewTreeObserver extends java.lang.Object
+
+----------------FIELDS----------------
+
+private boolean mAlive
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/view/ViewTreeObserver$OnGlobalFocusChangeListener;>; )
+private java.util.ArrayList mOnGlobalFocusListeners
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;>; )
+private java.util.ArrayList mOnGlobalLayoutListeners
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/view/ViewTreeObserver$OnPreDrawListener;>; )
+private java.util.ArrayList mOnPreDrawListeners
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/view/ViewTreeObserver$OnTouchModeChangeListener;>; )
+private java.util.ArrayList mOnTouchModeChangeListeners
+----------------METHODS----------------
+
+ void <init>()
+
+private void checkIsAlive()
+
+private void kill()
+
+public void addOnGlobalFocusChangeListener(
+android.view.ViewTreeObserver$OnGlobalFocusChangeListener)
+
+public void addOnGlobalLayoutListener(
+android.view.ViewTreeObserver$OnGlobalLayoutListener)
+
+public void addOnPreDrawListener(
+android.view.ViewTreeObserver$OnPreDrawListener)
+
+public void addOnTouchModeChangeListener(
+android.view.ViewTreeObserver$OnTouchModeChangeListener)
+
+final void dispatchOnGlobalFocusChange(
+android.view.View
+android.view.View)
+
+public final void dispatchOnGlobalLayout()
+
+public final boolean dispatchOnPreDraw()
+
+final void dispatchOnTouchModeChanged(
+boolean)
+
+public boolean isAlive()
+
+ void merge(
+android.view.ViewTreeObserver)
+
+public void removeGlobalOnLayoutListener(
+android.view.ViewTreeObserver$OnGlobalLayoutListener)
+
+public void removeOnGlobalFocusChangeListener(
+android.view.ViewTreeObserver$OnGlobalFocusChangeListener)
+
+public void removeOnPreDrawListener(
+android.view.ViewTreeObserver$OnPreDrawListener)
+
+public void removeOnTouchModeChangeListener(
+android.view.ViewTreeObserver$OnTouchModeChangeListener)
+
+________________CLASS________________
+
+
+public class android.view.VolumePanel extends android.os.Handler
+
+----------------FIELDS----------------
+
+private static final int BEEP_DURATION
+
+private static final int FREE_DELAY
+
+private static boolean LOGD
+
+private static final int MAX_VOLUME
+
+private static final int MSG_FREE_RESOURCES
+
+private static final int MSG_PLAY_SOUND
+
+private static final int MSG_STOP_SOUNDS
+
+private static final int MSG_VIBRATE
+
+private static final int MSG_VOLUME_CHANGED
+
+public static final int PLAY_SOUND_DELAY
+
+private static final java.lang.String TAG
+
+public static final int VIBRATE_DELAY
+
+private static final int VIBRATE_DURATION
+
+private final java.lang.String ALARM_VOLUME_TEXT
+
+private final java.lang.String INCALL_VOLUME_TEXT
+
+private final java.lang.String MUSIC_VOLUME_TEXT
+
+private final java.lang.String RINGTONE_VOLUME_TEXT
+
+private final java.lang.String UNKNOWN_VOLUME_TEXT
+
+protected android.media.AudioService mAudioService
+
+protected android.content.Context mContext
+
+private android.widget.ProgressBar mLevel
+
+private android.widget.TextView mMessage
+
+private android.widget.ImageView mOtherStreamIcon
+
+private android.widget.ImageView mRingerStreamIcon
+
+private android.widget.Toast mToast
+
+private android.media.ToneGenerator[] mToneGenerators
+
+private android.os.Vibrator mVibrator
+
+private android.view.View mView
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context
+android.media.AudioService)
+
+private android.media.ToneGenerator getOrCreateToneGenerator(
+int)
+
+private void setOtherIcon(
+int)
+
+private void setRingerIcon(
+int)
+
+public void handleMessage(
+android.os.Message)
+
+protected void onFreeResources()
+
+protected void onPlaySound(
+int
+int)
+
+protected void onShowVolumeChanged(
+int
+int)
+
+protected void onStopSounds()
+
+protected void onVibrate()
+
+protected void onVolumeChanged(
+int
+int)
+
+public void postVolumeChanged(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$BadTokenException; )
+public abstract interface class android.view.WindowManager extends java.lang.Object implements android.view.ViewManager
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.view.Display getDefaultDisplay()
+
+public abstract void removeViewImmediate(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/Window; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =LocalWindowManager )
+ class android.view.Window$LocalWindowManager extends java.lang.Object implements android.view.WindowManager
+
+----------------FIELDS----------------
+
+ android.view.WindowManager mWindowManager
+
+final android.view.Window this$0
+----------------METHODS----------------
+
+ void <init>(
+android.view.Window
+android.view.WindowManager)
+
+public final void addView(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+public android.view.Display getDefaultDisplay()
+
+public final void removeView(
+android.view.View)
+
+public final void removeViewImmediate(
+android.view.View)
+
+public void updateViewLayout(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/Window$LocalWindowManager;Landroid/view/Window$Callback; )
+public abstract class android.view.Window extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected static final int DEFAULT_FEATURES
+
+public static final int FEATURE_CONTEXT_MENU
+
+public static final int FEATURE_CUSTOM_TITLE
+
+public static final int FEATURE_INDETERMINATE_PROGRESS
+
+public static final int FEATURE_LEFT_ICON
+
+public static final int FEATURE_NO_TITLE
+
+private static final int FEATURE_OPENGL
+
+public static final int FEATURE_OPTIONS_PANEL
+
+public static final int FEATURE_PROGRESS
+
+public static final int FEATURE_RIGHT_ICON
+
+public static final int ID_ANDROID_CONTENT
+
+public static final int PROGRESS_END
+
+public static final int PROGRESS_INDETERMINATE_OFF
+
+public static final int PROGRESS_INDETERMINATE_ON
+
+public static final int PROGRESS_SECONDARY_END
+
+public static final int PROGRESS_SECONDARY_START
+
+public static final int PROGRESS_START
+
+public static final int PROGRESS_VISIBILITY_OFF
+
+public static final int PROGRESS_VISIBILITY_ON
+
+private android.view.Window mActiveChild
+
+private java.lang.String mAppName
+
+private android.os.IBinder mAppToken
+
+private android.view.Window$Callback mCallback
+
+private android.view.Window mContainer
+
+private final android.content.Context mContext
+
+private int mDefaultWindowFormat
+
+private int mFeatures
+
+private int mForcedWindowFlags
+
+private boolean mHasChildren
+
+private boolean mHaveWindowFormat
+
+private boolean mIsActive
+
+private int mLocalFeatures
+
+private final android.view.WindowManager$LayoutParams mWindowAttributes
+
+private android.view.WindowManager mWindowManager
+
+private android.content.res.TypedArray mWindowStyle
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+static java.lang.String access$000(
+android.view.Window)
+
+static android.view.Window access$100(
+android.view.Window)
+
+static android.os.IBinder access$200(
+android.view.Window)
+
+static android.content.Context access$300(
+android.view.Window)
+
+public abstract void addContentView(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+public void addFlags(
+int)
+
+public void clearFlags(
+int)
+
+public abstract void closeAllPanels()
+
+public abstract void closePanel(
+int)
+
+public android.view.View findViewById(
+int)
+
+public final android.view.WindowManager$LayoutParams getAttributes()
+
+public final android.view.Window$Callback getCallback()
+
+public final android.view.Window getContainer()
+
+public final android.content.Context getContext()
+
+public abstract android.view.View getCurrentFocus()
+
+public abstract android.view.View getDecorView()
+
+protected final int getFeatures()
+
+protected final int getForcedWindowFlags()
+
+public abstract android.view.LayoutInflater getLayoutInflater()
+
+protected final int getLocalFeatures()
+
+public abstract int getVolumeControlStream()
+
+public android.view.WindowManager getWindowManager()
+
+public final android.content.res.TypedArray getWindowStyle()
+
+public final boolean hasChildren()
+
+public final boolean isActive()
+
+public abstract boolean isFloating()
+
+public abstract boolean isShortcutKey(
+int
+android.view.KeyEvent)
+
+public final void makeActive()
+
+protected abstract void onActive()
+
+public abstract void onConfigurationChanged(
+android.content.res.Configuration)
+
+public abstract void openPanel(
+int
+android.view.KeyEvent)
+
+public abstract android.view.View peekDecorView()
+
+public abstract boolean performContextMenuIdentifierAction(
+int
+int)
+
+public abstract boolean performPanelIdentifierAction(
+int
+int
+int)
+
+public abstract boolean performPanelShortcut(
+int
+int
+android.view.KeyEvent
+int)
+
+public boolean requestFeature(
+int)
+
+public abstract void restoreHierarchyState(
+android.os.Bundle)
+
+public abstract android.os.Bundle saveHierarchyState()
+
+public void setAttributes(
+android.view.WindowManager$LayoutParams)
+
+public abstract void setBackgroundDrawable(
+android.graphics.drawable.Drawable)
+
+public void setBackgroundDrawableResource(
+int)
+
+public void setCallback(
+android.view.Window$Callback)
+
+public abstract void setChildDrawable(
+int
+android.graphics.drawable.Drawable)
+
+public abstract void setChildInt(
+int
+int)
+
+public void setContainer(
+android.view.Window)
+
+public abstract void setContentView(
+int)
+
+public abstract void setContentView(
+android.view.View)
+
+public abstract void setContentView(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+protected void setDefaultWindowFormat(
+int)
+
+public abstract void setFeatureDrawable(
+int
+android.graphics.drawable.Drawable)
+
+public abstract void setFeatureDrawableAlpha(
+int
+int)
+
+public abstract void setFeatureDrawableResource(
+int
+int)
+
+public abstract void setFeatureDrawableUri(
+int
+android.net.Uri)
+
+public abstract void setFeatureInt(
+int
+int)
+
+public void setFlags(
+int
+int)
+
+public void setFormat(
+int)
+
+public void setGravity(
+int)
+
+public void setLayout(
+int
+int)
+
+public abstract void setTitle(
+java.lang.CharSequence)
+
+public abstract void setTitleColor(
+int)
+
+public void setType(
+int)
+
+public abstract void setVolumeControlStream(
+int)
+
+public void setWindowManager(
+android.view.WindowManager
+android.os.IBinder
+java.lang.String)
+
+public abstract boolean superDispatchKeyEvent(
+android.view.KeyEvent)
+
+public abstract boolean superDispatchTouchEvent(
+android.view.MotionEvent)
+
+public abstract boolean superDispatchTrackballEvent(
+android.view.MotionEvent)
+
+public abstract void takeKeyEvents(
+boolean)
+
+public abstract void togglePanel(
+int
+android.view.KeyEvent)
+
+________________CLASS________________
+
+
+final class android.view.WindowLeaked extends android.util.AndroidRuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =BadTokenException )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/WindowManager; )
+public class android.view.WindowManager$BadTokenException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/WindowManager$LayoutParams; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/view/WindowManager$LayoutParams;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.view.WindowManager$LayoutParams$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.view.WindowManager$LayoutParams createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.view.WindowManager$LayoutParams[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/WindowManager; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =LayoutParams )
+public class android.view.WindowManager$LayoutParams extends android.view.ViewGroup$LayoutParams implements android.os.Parcelable
+
+----------------FIELDS----------------
+
+public static final int ALPHA_CHANGED
+
+public static final int ANIMATION_CHANGED
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/view/WindowManager$LayoutParams;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public static final int DIM_AMOUNT_CHANGED
+
+public static final int FIRST_APPLICATION_WINDOW
+
+public static final int FIRST_SUB_WINDOW
+
+public static final int FIRST_SYSTEM_WINDOW
+
+public static final int FLAGS_CHANGED
+
+public static final int FLAG_BLUR_BEHIND
+
+public static final int FLAG_DIM_BEHIND
+
+public static final int FLAG_DITHER
+
+public static final int FLAG_FORCE_NOT_FULLSCREEN
+
+public static final int FLAG_FULLSCREEN
+
+public static final int FLAG_IGNORE_CHEEK_PRESSES
+
+public static final int FLAG_KEEP_SCREEN_ON
+
+public static final int FLAG_LAYOUT_INSET_DECOR
+
+public static final int FLAG_LAYOUT_IN_SCREEN
+
+public static final int FLAG_LAYOUT_NO_LIMITS
+
+public static final int FLAG_NOT_FOCUSABLE
+
+public static final int FLAG_NOT_TOUCHABLE
+
+public static final int FLAG_NOT_TOUCH_MODAL
+
+public static final int FLAG_SCALED
+
+public static final int FLAG_SECURE
+
+public static final int FLAG_SYSTEM_ERROR
+
+public static final int FLAG_TOUCHABLE_WHEN_WAKING
+
+public static final int FORMAT_CHANGED
+
+public static final int LAST_APPLICATION_WINDOW
+
+public static final int LAST_SUB_WINDOW
+
+public static final int LAST_SYSTEM_WINDOW
+
+public static final int LAYOUT_CHANGED
+
+public static final int MEMORY_TYPE_CHANGED
+
+public static final int MEMORY_TYPE_GPU
+
+public static final int MEMORY_TYPE_HARDWARE
+
+public static final int MEMORY_TYPE_NORMAL
+
+public static final int MEMORY_TYPE_PUSH_BUFFERS
+
+public static final int TITLE_CHANGED
+
+public static final int TYPE_APPLICATION
+
+public static final int TYPE_APPLICATION_MEDIA
+
+public static final int TYPE_APPLICATION_PANEL
+
+public static final int TYPE_APPLICATION_STARTING
+
+public static final int TYPE_APPLICATION_SUB_PANEL
+
+public static final int TYPE_BASE_APPLICATION
+
+public static final int TYPE_CHANGED
+
+public static final int TYPE_KEYGUARD
+
+public static final int TYPE_KEYGUARD_DIALOG
+
+public static final int TYPE_PHONE
+
+public static final int TYPE_PRIORITY_PHONE
+
+public static final int TYPE_SEARCH_BAR
+
+public static final int TYPE_STATUS_BAR
+
+public static final int TYPE_STATUS_BAR_PANEL
+
+public static final int TYPE_SYSTEM_ALERT
+
+public static final int TYPE_SYSTEM_DIALOG
+
+public static final int TYPE_SYSTEM_ERROR
+
+public static final int TYPE_SYSTEM_OVERLAY
+
+public static final int TYPE_TOAST
+
+public float alpha
+
+public float dimAmount
+
+public int flags
+
+public int format
+
+public int gravity
+
+public float horizontalMargin
+
+public float horizontalWeight
+
+private java.lang.CharSequence mTitle
+
+public int memoryType
+
+public java.lang.String packageName
+
+public android.os.IBinder token
+
+public int type
+
+public float verticalMargin
+
+public float verticalWeight
+
+public int windowAnimations
+
+public int x
+
+public int y
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+int
+int)
+
+public void <init>(
+int
+int
+int)
+
+public void <init>(
+int
+int
+int
+int
+int)
+
+public void <init>(
+int
+int
+int
+int
+int
+int
+int)
+
+public void <init>(
+android.os.Parcel)
+
+public final int copyFrom(
+android.view.WindowManager$LayoutParams)
+
+public java.lang.String debug(
+java.lang.String)
+
+public int describeContents()
+
+public final java.lang.CharSequence getTitle()
+
+public final void setTitle(
+java.lang.CharSequence)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class android.view.WindowManagerImpl extends java.lang.Object implements android.view.WindowManager
+
+----------------FIELDS----------------
+
+public static final int ADD_APP_EXITING
+
+public static final int ADD_BAD_APP_TOKEN
+
+public static final int ADD_BAD_SUBWINDOW_TOKEN
+
+public static final int ADD_DUPLICATE_ADD
+
+public static final int ADD_FLAG_APP_VISIBLE
+
+public static final int ADD_FLAG_IN_TOUCH_MODE
+
+public static final int ADD_MULTIPLE_SINGLETON
+
+public static final int ADD_NOT_APP_TOKEN
+
+public static final int ADD_OKAY
+
+public static final int ADD_PERMISSION_DENIED
+
+public static final int ADD_STARTING_NOT_NEEDED
+
+public static final int RELAYOUT_FIRST_TIME
+
+public static final int RELAYOUT_IN_TOUCH_MODE
+
+private static android.view.WindowManagerImpl mWindowManager
+
+private android.view.WindowManager$LayoutParams[] mParams
+
+private android.view.ViewRoot[] mRoots
+
+private android.view.View[] mViews
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void addView(
+android.view.View
+android.view.ViewGroup$LayoutParams
+boolean)
+
+private int findViewLocked(
+android.view.View
+boolean)
+
+public static android.view.WindowManagerImpl getDefault()
+
+private static void removeItem(
+java.lang.Object[]
+java.lang.Object[]
+int)
+
+public void addView(
+android.view.View)
+
+public void addView(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+public void addViewNesting(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+public void closeAll()
+
+public void closeAll(
+android.os.IBinder
+java.lang.String
+java.lang.String)
+
+ void finishRemoveViewLocked(
+android.view.View
+int)
+
+public android.view.Display getDefaultDisplay()
+
+public void removeView(
+android.view.View)
+
+public void removeViewImmediate(
+android.view.View)
+
+ android.view.View removeViewLocked(
+int)
+
+public void updateViewLayout(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/WindowManagerPolicy; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnKeyguardExitResult )
+public abstract interface class android.view.WindowManagerPolicy$OnKeyguardExitResult extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onKeyguardExitResult(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =WindowState )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/WindowManagerPolicy; )
+public abstract interface class android.view.WindowManagerPolicy$WindowState extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void computeFrameLw(
+int
+int
+int
+int
+int
+int
+int
+int)
+
+public abstract boolean fillsScreenLw(
+int
+int
+boolean)
+
+public abstract android.view.WindowManagerPolicy$WindowState getAppStartingWindow()
+
+public abstract android.view.IApplicationToken getAppToken()
+
+public abstract android.view.WindowManager$LayoutParams getAttrs()
+
+public abstract android.graphics.Rect getFrameLw()
+
+public abstract boolean hasAppShownWindows()
+
+public abstract boolean hasAppStartingIcon()
+
+public abstract boolean hasDrawnLw()
+
+public abstract void hideLw()
+
+public abstract boolean isDisplayedLw()
+
+public abstract void setCoveredInsetsLw(
+int
+int
+int
+int)
+
+public abstract void setFrameLw(
+int
+int
+int
+int)
+
+public abstract void showLw()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/WindowManagerPolicy$OnKeyguardExitResult;Landroid/view/WindowManagerPolicy$WindowState; )
+public abstract interface class android.view.WindowManagerPolicy extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ACTION_GO_TO_SLEEP
+
+public static final int ACTION_PASS_TO_USER
+
+public static final int ACTION_POKE_USER_ACTIVITY
+
+public static final int FLAG_ALT
+
+public static final int FLAG_ALT_GR
+
+public static final int FLAG_BRIGHT_HERE
+
+public static final int FLAG_CAPS_LOCK
+
+public static final int FLAG_LAUNCHER
+
+public static final int FLAG_MENU
+
+public static final int FLAG_SHIFT
+
+public static final int FLAG_WAKE
+
+public static final int FLAG_WAKE_DROPPED
+
+public static final int FLAG_WOKE_HERE
+
+public static final int OFF_BECAUSE_OF_TIMEOUT
+
+public static final int OFF_BECAUSE_OF_USER
+
+public static final int TRANSIT_ACTIVITY_CLOSE
+
+public static final int TRANSIT_ACTIVITY_OPEN
+
+public static final int TRANSIT_ENTER
+
+public static final int TRANSIT_EXIT
+
+public static final int TRANSIT_HIDE
+
+public static final int TRANSIT_NONE
+
+public static final int TRANSIT_PREVIEW_DONE
+
+public static final int TRANSIT_SHOW
+
+public static final int TRANSIT_TASK_CLOSE
+
+public static final int TRANSIT_TASK_OPEN
+
+public static final int TRANSIT_TASK_TO_BACK
+
+public static final int TRANSIT_TASK_TO_FRONT
+
+public static final int USE_LAST_ROTATION
+
+public static final boolean WATCH_POINTER
+----------------METHODS----------------
+
+public abstract android.view.View addStartingWindow(
+android.os.IBinder
+java.lang.String
+int
+java.lang.CharSequence
+int
+int)
+
+public abstract void adjustConfigurationLw(
+android.content.res.Configuration)
+
+public abstract void adjustWindowParamsLw(
+android.view.WindowManager$LayoutParams)
+
+public abstract void animatingWindowLw(
+android.view.WindowManagerPolicy$WindowState
+android.view.WindowManager$LayoutParams)
+
+public abstract void beginAnimationLw(
+int
+int)
+
+public abstract void beginLayoutLw(
+int
+int)
+
+public abstract int checkAddPermission(
+android.view.WindowManager$LayoutParams)
+
+public abstract void enableKeyguard(
+boolean)
+
+public abstract void enableScreenAfterBoot()
+
+public abstract void exitKeyguardSecurely(
+android.view.WindowManagerPolicy$OnKeyguardExitResult)
+
+public abstract boolean finishAnimationLw()
+
+public abstract void finishLayoutLw()
+
+public abstract void getCoveredInsetHintLw(
+android.view.WindowManager$LayoutParams
+android.graphics.Rect)
+
+public abstract boolean inKeyguardRestrictedKeyInputMode()
+
+public abstract void init(
+android.content.Context
+android.view.IWindowManager
+android.os.LocalPowerManager)
+
+public abstract boolean interceptKeyTi(
+android.view.WindowManagerPolicy$WindowState
+int
+int
+boolean
+int)
+
+public abstract int interceptKeyTq(
+android.view.RawInputEvent
+boolean)
+
+public abstract boolean isAppSwitchKeyTqTiLwLi(
+int)
+
+public abstract boolean isCheekPressedAgainstScreen(
+android.view.MotionEvent)
+
+public abstract boolean isMovementKeyTi(
+int)
+
+public abstract boolean isWakeAbsMovementTq(
+int
+int
+android.view.RawInputEvent)
+
+public abstract boolean isWakeRelMovementTq(
+int
+int
+android.view.RawInputEvent)
+
+public abstract boolean keyguardIsShowingTq()
+
+public abstract void layoutWindowLw(
+android.view.WindowManagerPolicy$WindowState
+android.view.WindowManager$LayoutParams
+android.view.WindowManagerPolicy$WindowState)
+
+public abstract int prepareAddWindowLw(
+android.view.WindowManagerPolicy$WindowState
+android.view.WindowManager$LayoutParams)
+
+public abstract boolean preprocessInputEventTq(
+android.view.RawInputEvent)
+
+public abstract void removeStartingWindow(
+android.os.IBinder
+android.view.View)
+
+public abstract void removeWindowLw(
+android.view.WindowManagerPolicy$WindowState)
+
+public abstract int rotationForOrientation(
+int)
+
+public abstract void screenTurnedOff(
+int)
+
+public abstract void screenTurnedOn()
+
+public abstract int selectAnimationLw(
+android.view.WindowManagerPolicy$WindowState
+int)
+
+public abstract void setCurrentOrientation(
+int)
+
+public abstract int subWindowTypeToLayerLw(
+int)
+
+public abstract void systemReady()
+
+public abstract int windowTypeToLayerLw(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class android.view.animation.Interpolator extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract float getInterpolation(
+float)
+
+________________CLASS________________
+
+
+public class android.view.animation.AccelerateDecelerateInterpolator extends java.lang.Object implements android.view.animation.Interpolator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public float getInterpolation(
+float)
+
+________________CLASS________________
+
+
+public class android.view.animation.AccelerateInterpolator extends java.lang.Object implements android.view.animation.Interpolator
+
+----------------FIELDS----------------
+
+private float mFactor
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+float)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public float getInterpolation(
+float)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/animation/Animation$AnimationListener;Landroid/view/animation/Animation$Description; )
+public abstract class android.view.animation.Animation extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ABSOLUTE
+
+public static final int INFINITE
+
+public static final int RELATIVE_TO_PARENT
+
+public static final int RELATIVE_TO_SELF
+
+public static final int RESTART
+
+public static final int REVERSE
+
+public static final int START_ON_FIRST_FRAME
+
+public static final int ZORDER_BOTTOM
+
+public static final int ZORDER_NORMAL
+
+public static final int ZORDER_TOP
+
+ boolean mCycleFlip
+
+ long mDuration
+
+ boolean mEnded
+
+ boolean mFillAfter
+
+ boolean mFillBefore
+
+ boolean mInitialized
+
+ android.view.animation.Interpolator mInterpolator
+
+ android.view.animation.Animation$AnimationListener mListener
+
+private boolean mMore
+
+ int mRepeatCount
+
+ int mRepeatMode
+
+ int mRepeated
+
+ long mStartOffset
+
+ long mStartTime
+
+ boolean mStarted
+
+private int mZAdjustment
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+protected void applyTransformation(
+float
+android.view.animation.Transformation)
+
+protected void ensureInterpolator()
+
+public long getDuration()
+
+public boolean getFillAfter()
+
+public boolean getFillBefore()
+
+public android.view.animation.Interpolator getInterpolator()
+
+public int getRepeatCount()
+
+public int getRepeatMode()
+
+public long getStartOffset()
+
+public long getStartTime()
+
+public boolean getTransformation(
+long
+android.view.animation.Transformation)
+
+public int getZAdjustment()
+
+public boolean hasEnded()
+
+public boolean hasStarted()
+
+public void initialize(
+int
+int
+int
+int)
+
+public boolean isInitialized()
+
+public void reset()
+
+protected float resolveSize(
+int
+float
+int
+int)
+
+public void restrictDuration(
+long)
+
+public void scaleCurrentDuration(
+float)
+
+public void setAnimationListener(
+android.view.animation.Animation$AnimationListener)
+
+public void setDuration(
+long)
+
+public void setFillAfter(
+boolean)
+
+public void setFillBefore(
+boolean)
+
+public void setInterpolator(
+android.content.Context
+int)
+
+public void setInterpolator(
+android.view.animation.Interpolator)
+
+public void setRepeatCount(
+int)
+
+public void setRepeatMode(
+int)
+
+public void setStartOffset(
+long)
+
+public void setStartTime(
+long)
+
+public void setZAdjustment(
+int)
+
+public void start()
+
+public void startNow()
+
+public boolean willChangeBounds()
+
+public boolean willChangeTransformationMatrix()
+
+________________CLASS________________
+
+
+public class android.view.animation.AlphaAnimation extends android.view.animation.Animation
+
+----------------FIELDS----------------
+
+private float mFromAlpha
+
+private float mToAlpha
+----------------METHODS----------------
+
+public void <init>(
+float
+float)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+protected void applyTransformation(
+float
+android.view.animation.Transformation)
+
+public boolean willChangeBounds()
+
+public boolean willChangeTransformationMatrix()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =AnimationListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/animation/Animation; )
+public abstract interface class android.view.animation.Animation$AnimationListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onAnimationEnd(
+android.view.animation.Animation)
+
+public abstract void onAnimationRepeat(
+android.view.animation.Animation)
+
+public abstract void onAnimationStart(
+android.view.animation.Animation)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =12 name =Description )
+@dalvik.annotation.EnclosingClass (value =Landroid/view/animation/Animation; )
+public class android.view.animation.Animation$Description extends java.lang.Object
+
+----------------FIELDS----------------
+
+public int type
+
+public float value
+----------------METHODS----------------
+
+protected void <init>()
+
+static android.view.animation.Animation$Description parseValue(
+android.util.TypedValue)
+
+________________CLASS________________
+
+
+public class android.view.animation.AnimationSet extends android.view.animation.Animation
+
+----------------FIELDS----------------
+
+private static final int PROPERTY_DURATION_MASK
+
+private static final int PROPERTY_FILL_AFTER_MASK
+
+private static final int PROPERTY_FILL_BEFORE_MASK
+
+private static final int PROPERTY_MORPH_MATRIX_MASK
+
+private static final int PROPERTY_REPEAT_MODE_MASK
+
+private static final int PROPERTY_SHARE_INTERPOLATOR_MASK
+
+private static final int PROPERTY_START_OFFSET_MASK
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/view/animation/Animation;>; )
+private java.util.ArrayList mAnimations
+
+private int mFlags
+
+private long mLastEnd
+
+private long[] mStoredOffsets
+
+private android.view.animation.Transformation mTempTransformation
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+boolean)
+
+private void init()
+
+private void setFlag(
+int
+boolean)
+
+public void addAnimation(
+android.view.animation.Animation)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Landroid/view/animation/Animation;>; )
+public java.util.List getAnimations()
+
+public long getDuration()
+
+public long getStartTime()
+
+public boolean getTransformation(
+long
+android.view.animation.Transformation)
+
+public void initialize(
+int
+int
+int
+int)
+
+ void restoreChildrenStartOffset()
+
+public void restrictDuration(
+long)
+
+ void saveChildrenStartOffset(
+long)
+
+public void scaleCurrentDuration(
+float)
+
+public void setDuration(
+long)
+
+public void setFillAfter(
+boolean)
+
+public void setFillBefore(
+boolean)
+
+public void setRepeatMode(
+int)
+
+public void setStartOffset(
+long)
+
+public void setStartTime(
+long)
+
+public boolean willChangeTransformationMatrix()
+
+________________CLASS________________
+
+
+public class android.view.animation.AnimationUtils extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private static android.view.animation.Animation createAnimationFromXml(
+android.content.Context
+org.xmlpull.v1.XmlPullParser)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private static android.view.animation.Animation createAnimationFromXml(
+android.content.Context
+org.xmlpull.v1.XmlPullParser
+android.view.animation.AnimationSet
+android.util.AttributeSet)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private static android.view.animation.Interpolator createInterpolatorFromXml(
+android.content.Context
+org.xmlpull.v1.XmlPullParser)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private static android.view.animation.LayoutAnimationController createLayoutAnimationFromXml(
+android.content.Context
+org.xmlpull.v1.XmlPullParser)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private static android.view.animation.LayoutAnimationController createLayoutAnimationFromXml(
+android.content.Context
+org.xmlpull.v1.XmlPullParser
+android.util.AttributeSet)
+
+public static long currentAnimationTimeMillis()
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public static android.view.animation.Animation loadAnimation(
+android.content.Context
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public static android.view.animation.Interpolator loadInterpolator(
+android.content.Context
+int)
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public static android.view.animation.LayoutAnimationController loadLayoutAnimation(
+android.content.Context
+int)
+
+public static android.view.animation.Animation makeInAnimation(
+android.content.Context
+boolean)
+
+public static android.view.animation.Animation makeInChildBottomAnimation(
+android.content.Context)
+
+public static android.view.animation.Animation makeOutAnimation(
+android.content.Context
+boolean)
+
+________________CLASS________________
+
+
+public class android.view.animation.CycleInterpolator extends java.lang.Object implements android.view.animation.Interpolator
+
+----------------FIELDS----------------
+
+private float mCycles
+----------------METHODS----------------
+
+public void <init>(
+float)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public float getInterpolation(
+float)
+
+________________CLASS________________
+
+
+public class android.view.animation.DecelerateInterpolator extends java.lang.Object implements android.view.animation.Interpolator
+
+----------------FIELDS----------------
+
+private float mFactor
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+float)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public float getInterpolation(
+float)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/animation/LayoutAnimationController; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =AnimationParameters )
+public class android.view.animation.LayoutAnimationController$AnimationParameters extends java.lang.Object
+
+----------------FIELDS----------------
+
+public int count
+
+public int index
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/animation/GridLayoutAnimationController; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =AnimationParameters )
+public class android.view.animation.GridLayoutAnimationController$AnimationParameters extends android.view.animation.LayoutAnimationController$AnimationParameters
+
+----------------FIELDS----------------
+
+public int column
+
+public int columnsCount
+
+public int row
+
+public int rowsCount
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/animation/LayoutAnimationController$1;Landroid/view/animation/LayoutAnimationController$DelayedAnimation;Landroid/view/animation/LayoutAnimationController$AnimationParameters; )
+public class android.view.animation.LayoutAnimationController extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ORDER_NORMAL
+
+public static final int ORDER_RANDOM
+
+public static final int ORDER_REVERSE
+
+protected android.view.animation.Animation mAnimation
+
+private float mDelay
+
+private long mDuration
+
+protected android.view.animation.Interpolator mInterpolator
+
+private long mMaxDelay
+
+private int mOrder
+
+protected java.util.Random mRandomizer
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.view.animation.Animation)
+
+public void <init>(
+android.view.animation.Animation
+float)
+
+public android.view.animation.Animation getAnimation()
+
+public final android.view.animation.Animation getAnimationForView(
+android.view.View)
+
+public float getDelay()
+
+protected long getDelayForView(
+android.view.View)
+
+public android.view.animation.Interpolator getInterpolator()
+
+public int getOrder()
+
+protected int getTransformedIndex(
+android.view.animation.LayoutAnimationController$AnimationParameters)
+
+public boolean isDone()
+
+public void setAnimation(
+android.content.Context
+int)
+
+public void setAnimation(
+android.view.animation.Animation)
+
+public void setDelay(
+float)
+
+public void setInterpolator(
+android.content.Context
+int)
+
+public void setInterpolator(
+android.view.animation.Interpolator)
+
+public void setOrder(
+int)
+
+public void start()
+
+public boolean willOverlap()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/view/animation/GridLayoutAnimationController$AnimationParameters; )
+public class android.view.animation.GridLayoutAnimationController extends android.view.animation.LayoutAnimationController
+
+----------------FIELDS----------------
+
+public static final int DIRECTION_BOTTOM_TO_TOP
+
+public static final int DIRECTION_HORIZONTAL_MASK
+
+public static final int DIRECTION_LEFT_TO_RIGHT
+
+public static final int DIRECTION_RIGHT_TO_LEFT
+
+public static final int DIRECTION_TOP_TO_BOTTOM
+
+public static final int DIRECTION_VERTICAL_MASK
+
+public static final int PRIORITY_COLUMN
+
+public static final int PRIORITY_NONE
+
+public static final int PRIORITY_ROW
+
+private float mColumnDelay
+
+private int mDirection
+
+private int mDirectionPriority
+
+private float mRowDelay
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.view.animation.Animation)
+
+public void <init>(
+android.view.animation.Animation
+float
+float)
+
+private int getTransformedColumnIndex(
+android.view.animation.GridLayoutAnimationController$AnimationParameters)
+
+private int getTransformedRowIndex(
+android.view.animation.GridLayoutAnimationController$AnimationParameters)
+
+public float getColumnDelay()
+
+protected long getDelayForView(
+android.view.View)
+
+public int getDirection()
+
+public int getDirectionPriority()
+
+public float getRowDelay()
+
+public void setColumnDelay(
+float)
+
+public void setDirection(
+int)
+
+public void setDirectionPriority(
+int)
+
+public void setRowDelay(
+float)
+
+public boolean willOverlap()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/animation/LayoutAnimationController; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.view.animation.LayoutAnimationController$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/view/animation/LayoutAnimationController; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =DelayedAnimation )
+ class android.view.animation.LayoutAnimationController$DelayedAnimation extends android.view.animation.Animation
+
+----------------FIELDS----------------
+
+private final android.view.animation.Animation mAnimation
+
+private final long mDelay
+----------------METHODS----------------
+
+private void <init>(
+long
+android.view.animation.Animation)
+
+ void <init>(
+long
+android.view.animation.Animation
+android.view.animation.LayoutAnimationController$1)
+
+public long getDuration()
+
+public boolean getFillAfter()
+
+public boolean getFillBefore()
+
+public android.view.animation.Interpolator getInterpolator()
+
+public int getRepeatMode()
+
+public long getStartOffset()
+
+public long getStartTime()
+
+public boolean getTransformation(
+long
+android.view.animation.Transformation)
+
+public void initialize(
+int
+int
+int
+int)
+
+public boolean isInitialized()
+
+public void reset()
+
+public void scaleCurrentDuration(
+float)
+
+public void setDuration(
+long)
+
+public void setFillAfter(
+boolean)
+
+public void setFillBefore(
+boolean)
+
+public void setInterpolator(
+android.view.animation.Interpolator)
+
+public void setRepeatMode(
+int)
+
+public void setStartOffset(
+long)
+
+public void setStartTime(
+long)
+
+public boolean willChangeBounds()
+
+public boolean willChangeTransformationMatrix()
+
+________________CLASS________________
+
+
+public class android.view.animation.LinearInterpolator extends java.lang.Object implements android.view.animation.Interpolator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public float getInterpolation(
+float)
+
+________________CLASS________________
+
+
+public class android.view.animation.RotateAnimation extends android.view.animation.Animation
+
+----------------FIELDS----------------
+
+private float mFromDegrees
+
+private float mPivotX
+
+private int mPivotXType
+
+private float mPivotXValue
+
+private float mPivotY
+
+private int mPivotYType
+
+private float mPivotYValue
+
+private float mToDegrees
+----------------METHODS----------------
+
+public void <init>(
+float
+float)
+
+public void <init>(
+float
+float
+float
+float)
+
+public void <init>(
+float
+float
+int
+float
+int
+float)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+protected void applyTransformation(
+float
+android.view.animation.Transformation)
+
+public void initialize(
+int
+int
+int
+int)
+
+________________CLASS________________
+
+
+public class android.view.animation.ScaleAnimation extends android.view.animation.Animation
+
+----------------FIELDS----------------
+
+private float mFromX
+
+private float mFromY
+
+private float mPivotX
+
+private int mPivotXType
+
+private float mPivotXValue
+
+private float mPivotY
+
+private int mPivotYType
+
+private float mPivotYValue
+
+private float mToX
+
+private float mToY
+----------------METHODS----------------
+
+public void <init>(
+float
+float
+float
+float)
+
+public void <init>(
+float
+float
+float
+float
+float
+float)
+
+public void <init>(
+float
+float
+float
+float
+int
+float
+int
+float)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+protected void applyTransformation(
+float
+android.view.animation.Transformation)
+
+public void initialize(
+int
+int
+int
+int)
+
+________________CLASS________________
+
+
+public class android.view.animation.Transformation extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static int TYPE_ALPHA
+
+public static int TYPE_BOTH
+
+public static int TYPE_IDENTITY
+
+public static int TYPE_MATRIX
+
+protected float mAlpha
+
+protected android.graphics.Matrix mMatrix
+
+protected int mTransformationType
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void clear()
+
+public void compose(
+android.view.animation.Transformation)
+
+public float getAlpha()
+
+public android.graphics.Matrix getMatrix()
+
+public int getTransformationType()
+
+public void set(
+android.view.animation.Transformation)
+
+public void setAlpha(
+float)
+
+public void setTransformationType(
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class android.view.animation.TranslateAnimation extends android.view.animation.Animation
+
+----------------FIELDS----------------
+
+private float mFromXDelta
+
+private int mFromXType
+
+private float mFromXValue
+
+private float mFromYDelta
+
+private int mFromYType
+
+private float mFromYValue
+
+private float mToXDelta
+
+private int mToXType
+
+private float mToXValue
+
+private float mToYDelta
+
+private int mToYType
+
+private float mToYValue
+----------------METHODS----------------
+
+public void <init>(
+float
+float
+float
+float)
+
+public void <init>(
+int
+float
+int
+float
+int
+float
+int
+float)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+protected void applyTransformation(
+float
+android.view.animation.Transformation)
+
+public void initialize(
+int
+int
+int
+int)
+
+________________CLASS________________
+
+
+ class android.webkit.BrowserFrame extends android.os.Handler
+
+----------------FIELDS----------------
+
+static final int FRAME_COMPLETED
+
+static final int FRAME_LOADTYPE_BACK
+
+static final int FRAME_LOADTYPE_FORWARD
+
+static final int FRAME_LOADTYPE_INDEXEDBACKFORWARD
+
+static final int FRAME_LOADTYPE_REDIRECT
+
+static final int FRAME_LOADTYPE_RELOAD
+
+static final int FRAME_LOADTYPE_RELOADALLOWINGSTALEDATA
+
+static final int FRAME_LOADTYPE_REPLACE
+
+static final int FRAME_LOADTYPE_SAME
+
+static final int FRAME_LOADTYPE_STANDARD
+
+private static final java.lang.String LOGTAG
+
+private static final int MAX_OUTSTANDING_REQUESTS
+
+static final int POLICY_FUNCTION
+
+static final int POLICY_IGNORE
+
+static final int POLICY_USE
+
+private static final int TRANSITION_SWITCH_THRESHOLD
+
+static android.webkit.JWebCoreJavaBridge sJavaBridge
+
+private final android.webkit.CallbackProxy mCallbackProxy
+
+private boolean mCommitted
+
+private java.lang.String mCompletedUrl
+
+private final android.content.Context mContext
+
+private java.lang.String mCurrentUrl
+
+private final android.webkit.WebViewDatabase mDatabase
+
+private boolean mFirstLayoutDone
+
+private boolean mIsMainFrame
+
+private java.util.HashMap mJSInterfaceMap
+
+private boolean mLoadInitFromJava
+
+private int mLoadType
+
+ int mNativeFrame
+
+private final android.webkit.WebSettings mSettings
+
+private final android.webkit.WebViewCore mWebViewCore
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.webkit.WebViewCore
+android.webkit.CallbackProxy
+android.webkit.WebSettings)
+
+private void closeWindow(
+android.webkit.WebViewCore)
+
+private android.webkit.BrowserFrame createWindow(
+boolean
+boolean)
+
+private void decidePolicyForFormResubmission(
+int)
+
+private void didReceiveIcon(
+android.graphics.Bitmap)
+
+private native java.lang.String documentAsText()
+
+private native java.lang.String externalRepresentation()
+
+private native java.util.HashMap getFormTextData()
+
+private native java.lang.String[] getUsernamePassword()
+
+private native boolean hasPasswordField()
+
+private void loadFinished(
+java.lang.String
+int
+boolean)
+
+private void loadStarted(
+java.lang.String
+android.graphics.Bitmap
+int
+boolean)
+
+private native void nativeAddJavascriptInterface(
+int
+java.lang.Object
+java.lang.String)
+
+private native void nativeCallPolicyFunction(
+int
+int)
+
+private native void nativeCreateFrame(
+android.content.res.AssetManager
+android.webkit.WebBackForwardList)
+
+private native void nativeCreateView(
+android.webkit.WebViewCore)
+
+private native void nativeDetachView()
+
+private native void nativeLoadData(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private native void nativeLoadUrl(
+java.lang.String)
+
+private void reportError(
+int
+java.lang.String
+java.lang.String)
+
+private void requestFocus()
+
+private native void setCacheDisabled(
+boolean)
+
+private void setProgress(
+int)
+
+private void setTitle(
+java.lang.String)
+
+private native void setUsernamePassword(
+java.lang.String
+java.lang.String)
+
+private android.webkit.LoadListener startLoadingResource(
+int
+java.lang.String
+java.lang.String
+java.util.HashMap
+java.lang.String
+int
+boolean
+boolean)
+
+private void transitionToCommitted(
+int
+boolean)
+
+private void updateVisitedHistory(
+java.lang.String
+boolean)
+
+private void windowObjectCleared(
+int)
+
+public void addJavascriptInterface(
+java.lang.Object
+java.lang.String)
+
+public native boolean cacheDisabled()
+
+ void certificate(
+android.net.http.SslCertificate)
+
+public native void clearCache()
+
+ boolean committed()
+
+ java.lang.String currentUrl()
+
+public void destroy()
+
+ void didFirstLayout(
+java.lang.String)
+
+public void documentAsText(
+android.os.Message)
+
+public native boolean documentHasImages()
+
+public void externalRepresentation(
+android.os.Message)
+
+ boolean firstLayoutDone()
+
+ android.webkit.CallbackProxy getCallbackProxy()
+
+ java.lang.String getUserAgentString()
+
+public native void goBackOrForward(
+int)
+
+public void handleMessage(
+android.os.Message)
+
+public boolean handleUrl(
+java.lang.String)
+
+public void loadData(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+ int loadType()
+
+public void loadUrl(
+java.lang.String)
+
+public native void nativeDestroyFrame()
+
+public native void reload(
+boolean)
+
+public native void stopLoading()
+
+public native java.lang.String stringByEvaluatingJavaScriptFromString(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Chunk )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/ByteArrayBuilder; )
+public class android.webkit.ByteArrayBuilder$Chunk extends java.lang.Object
+
+----------------FIELDS----------------
+
+public byte[] mArray
+
+public int mLength
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/ByteArrayBuilder$Chunk; )
+ class android.webkit.ByteArrayBuilder extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int DEFAULT_CAPACITY
+@dalvik.annotation.Signature (value =Ljava/util/LinkedList<Landroid/webkit/ByteArrayBuilder$Chunk;>; )
+private java.util.LinkedList mChunks
+
+private int mMinCapacity
+@dalvik.annotation.Signature (value =Ljava/util/LinkedList<Landroid/webkit/ByteArrayBuilder$Chunk;>; )
+private java.util.LinkedList mPool
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+private android.webkit.ByteArrayBuilder$Chunk appendChunk(
+int)
+
+private void init(
+int)
+
+private android.webkit.ByteArrayBuilder$Chunk obtainChunk(
+int)
+
+public void append(
+byte[])
+
+public void append(
+byte[]
+int
+int)
+
+public android.webkit.ByteArrayBuilder$Chunk getFirstChunk()
+
+public boolean isEmpty()
+
+public void releaseChunk(
+android.webkit.ByteArrayBuilder$Chunk)
+
+________________CLASS________________
+
+
+abstract class android.webkit.StreamLoader extends android.os.Handler
+
+----------------FIELDS----------------
+
+private static final int MSG_DATA
+
+private static final int MSG_END
+
+private static final int MSG_HEADERS
+
+private static final int MSG_STATUS
+
+public static final java.lang.String NO_STORE
+
+protected long mContentLength
+
+private byte[] mData
+
+protected java.io.InputStream mDataStream
+
+protected android.webkit.LoadListener mHandler
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.LoadListener)
+
+private void closeStreamAndSendEndData()
+
+private boolean sendData()
+
+private void sendHeaders()
+
+protected abstract void buildHeaders(
+android.net.http.Headers)
+
+public void handleMessage(
+android.os.Message)
+
+public void load()
+
+protected abstract boolean setupStreamAndSendStatus()
+
+________________CLASS________________
+
+
+ class android.webkit.CacheLoader extends android.webkit.StreamLoader
+
+----------------FIELDS----------------
+
+ android.webkit.CacheManager$CacheResult mCacheResult
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.LoadListener
+android.webkit.CacheManager$CacheResult)
+
+protected void buildHeaders(
+android.net.http.Headers)
+
+protected boolean setupStreamAndSendStatus()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class android.webkit.CacheManager$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =CacheResult )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/CacheManager; )
+public class android.webkit.CacheManager$CacheResult extends java.lang.Object
+
+----------------FIELDS----------------
+
+ long contentLength
+
+ java.lang.String encoding
+
+ java.lang.String etag
+
+ long expires
+
+ int httpStatusCode
+
+ java.io.InputStream inStream
+
+ java.lang.String lastModified
+
+ java.lang.String localPath
+
+ java.lang.String location
+
+ java.lang.String mimeType
+
+ java.io.File outFile
+
+ java.io.OutputStream outStream
+----------------METHODS----------------
+
+public void <init>()
+
+public long getContentLength()
+
+public java.lang.String getETag()
+
+public java.lang.String getEncoding()
+
+public long getExpires()
+
+public int getHttpStatusCode()
+
+public java.io.InputStream getInputStream()
+
+public java.lang.String getLastModified()
+
+public java.lang.String getLocalPath()
+
+public java.lang.String getLocation()
+
+public java.lang.String getMimeType()
+
+public java.io.OutputStream getOutputStream()
+
+public void setEncoding(
+java.lang.String)
+
+public void setInputStream(
+java.io.InputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/CacheManager$CacheResult; )
+public final class android.webkit.CacheManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static long CACHE_THRESHOLD
+
+private static long CACHE_TRIM_AMOUNT
+
+static final java.lang.String HEADER_KEY_IFMODIFIEDSINCE
+
+static final java.lang.String HEADER_KEY_IFNONEMATCH
+
+private static final java.lang.String LOGTAG
+
+private static final java.lang.String MAX_AGE
+
+private static final java.lang.String NO_CACHE
+
+private static final java.lang.String NO_STORE
+
+private static java.io.File mBaseDir
+
+private static android.webkit.WebViewDatabase mDataBase
+
+private static boolean mDisabled
+
+private static int mRefCount
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static java.io.File access$000()
+
+static android.webkit.WebViewDatabase access$100()
+
+private static void appendAsHex(
+int
+java.lang.StringBuffer)
+
+public static boolean cacheDisabled()
+
+static boolean cacheEmpty()
+
+public static android.webkit.CacheManager$CacheResult createCacheFile(
+java.lang.String
+int
+android.net.http.Headers
+java.lang.String
+boolean)
+
+static boolean disableTransaction()
+
+static boolean enableTransaction()
+
+public static boolean endCacheTransaction()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)Landroid/webkit/CacheManager$CacheResult; )
+public static android.webkit.CacheManager$CacheResult getCacheFile(
+java.lang.String
+java.util.Map)
+
+public static java.io.File getCacheFileBaseDir()
+
+static void init(
+android.content.Context)
+
+private static android.webkit.CacheManager$CacheResult parseHeaders(
+int
+android.net.http.Headers
+java.lang.String)
+
+static boolean removeAllCacheFiles()
+
+public static void saveCacheFile(
+java.lang.String
+android.webkit.CacheManager$CacheResult)
+
+static void setCacheDisabled(
+boolean)
+
+private static void setupFiles(
+java.lang.String
+android.webkit.CacheManager$CacheResult)
+
+public static boolean startCacheTransaction()
+
+static void trimCacheIfNeeded()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/CallbackProxy; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.webkit.CallbackProxy$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/CallbackProxy; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =ResultTransport )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object; )
+ class android.webkit.CallbackProxy$ResultTransport extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =TE; )
+private java.lang.Object mResult
+
+final android.webkit.CallbackProxy this$0
+----------------METHODS----------------
+
+private void <init>(
+android.webkit.CallbackProxy)
+
+ void <init>(
+android.webkit.CallbackProxy
+android.webkit.CallbackProxy$1)
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object getResult()
+@dalvik.annotation.Signature (value =(TE;)V )
+public void setResult(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/CallbackProxy$1;Landroid/webkit/CallbackProxy$ResultTransport; )
+ class android.webkit.CallbackProxy extends android.os.Handler
+
+----------------FIELDS----------------
+
+private static final int ASYNC_KEYEVENTS
+
+private static final int AUTH_REQUEST
+
+private static final int CLOSE_WINDOW
+
+private static final int CREATE_WINDOW
+
+private static final int DOWNLOAD_FILE
+
+private static final int JS_ALERT
+
+private static final int JS_CONFIRM
+
+private static final int JS_PROMPT
+
+private static final int JS_UNLOAD
+
+private static final int LOAD_RESOURCE
+
+private static final java.lang.String LOGTAG
+
+private static final int NOTIFY
+
+private static final int OVERRIDE_URL
+
+private static final int PAGE_FINISHED
+
+private static final int PAGE_STARTED
+
+private static final int PROGRESS
+
+private static final int RECEIVED_CERTIFICATE
+
+private static final int RECEIVED_ICON
+
+private static final int RECEIVED_TITLE
+
+private static final int REPORT_ERROR
+
+private static final int REQUEST_FOCUS
+
+private static final int RESEND_POST_DATA
+
+private static final int SAVE_PASSWORD
+
+private static final int SCALE_CHANGED
+
+private static final int SSL_ERROR
+
+private static final int SWITCH_OUT_HISTORY
+
+private static final int TOO_MANY_REDIRECTS
+
+private static final int UPDATE_VISITED
+
+private final android.webkit.WebBackForwardList mBackForwardList
+
+private final android.content.Context mContext
+
+private volatile android.webkit.DownloadListener mDownloadListener
+
+private volatile int mLatestProgress
+
+private boolean mProgressUpdatePending
+
+private volatile android.webkit.WebChromeClient mWebChromeClient
+
+private long mWebCoreThreadTime
+
+private final android.webkit.WebView mWebView
+
+private volatile android.webkit.WebViewClient mWebViewClient
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.webkit.WebView)
+
+public android.webkit.WebView createWindow(
+boolean
+boolean)
+
+public void doUpdateVisitedHistory(
+java.lang.String
+boolean)
+
+public android.webkit.WebBackForwardList getBackForwardList()
+
+public int getProgress()
+
+public void handleMessage(
+android.os.Message)
+
+public void onCloseWindow(
+android.webkit.WebView)
+
+public boolean onDownloadStart(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+long)
+
+public void onFormResubmission(
+android.os.Message
+android.os.Message)
+
+public void onJsAlert(
+java.lang.String
+java.lang.String)
+
+public boolean onJsBeforeUnload(
+java.lang.String
+java.lang.String)
+
+public boolean onJsConfirm(
+java.lang.String
+java.lang.String)
+
+public java.lang.String onJsPrompt(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public void onLoadResource(
+java.lang.String)
+
+public void onPageFinished(
+java.lang.String)
+
+public void onPageStarted(
+java.lang.String
+android.graphics.Bitmap)
+
+public void onProgressChanged(
+int)
+
+public void onReceivedCertificate(
+android.net.http.SslCertificate)
+
+public void onReceivedError(
+int
+java.lang.String
+java.lang.String)
+
+public void onReceivedHttpAuthRequest(
+android.webkit.HttpAuthHandler
+java.lang.String
+java.lang.String)
+
+public void onReceivedIcon(
+android.graphics.Bitmap)
+
+public void onReceivedSslError(
+android.webkit.SslErrorHandler
+android.net.http.SslError)
+
+public void onReceivedTitle(
+java.lang.String)
+
+public void onRequestFocus()
+
+public boolean onSavePassword(
+java.lang.String
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void onScaleChanged(
+float
+float)
+
+public void onTooManyRedirects(
+android.os.Message
+android.os.Message)
+
+public void onUnhandledKeyEvent(
+android.view.KeyEvent)
+
+public void setDownloadListener(
+android.webkit.DownloadListener)
+
+public void setWebChromeClient(
+android.webkit.WebChromeClient)
+
+public void setWebViewClient(
+android.webkit.WebViewClient)
+
+public boolean shouldOverrideUrlLoading(
+java.lang.String)
+
+ void switchOutDrawHistory()
+
+public boolean uiOverrideKeyEvent(
+android.view.KeyEvent)
+
+public boolean uiOverrideUrlLoading(
+java.lang.String)
+
+________________CLASS________________
+
+
+ class android.webkit.ContentLoader extends android.webkit.StreamLoader
+
+----------------FIELDS----------------
+
+private java.lang.String mContentType
+
+private android.content.Context mContext
+
+private java.lang.String mUrl
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+android.webkit.LoadListener
+android.content.Context)
+
+public static void requestUrl(
+java.lang.String
+android.webkit.LoadListener
+android.content.Context)
+
+protected void buildHeaders(
+android.net.http.Headers)
+
+protected boolean setupStreamAndSendStatus()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/CookieManager; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =Cookie )
+ class android.webkit.CookieManager$Cookie extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final byte MODE_DELETED
+
+static final byte MODE_NEW
+
+static final byte MODE_NORMAL
+
+static final byte MODE_REPLACED
+
+ java.lang.String domain
+
+ long expires
+
+ long lastAcessTime
+
+ long lastUpdateTime
+
+ byte mode
+
+ java.lang.String name
+
+ java.lang.String path
+
+ boolean secure
+
+ java.lang.String value
+----------------METHODS----------------
+
+ void <init>()
+
+ void <init>(
+java.lang.String
+java.lang.String)
+
+ boolean domainMatch(
+java.lang.String)
+
+ boolean exactMatch(
+android.webkit.CookieManager$Cookie)
+
+ boolean pathMatch(
+java.lang.String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/CookieManager$Cookie; )
+public final class android.webkit.CookieManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String[] BAD_COUNTRY_2LDS
+
+private static final char COMMA
+
+private static final java.lang.String DOMAIN
+
+private static final char EQUAL
+
+private static final java.lang.String EXPIRES
+
+private static final java.lang.String HTTPS
+
+private static final java.lang.String HTTP_ONLY
+
+private static final int HTTP_ONLY_LENGTH
+
+private static final java.lang.String LOGTAG
+
+private static final java.lang.String MAX_AGE
+
+private static final int MAX_COOKIE_COUNT_PER_BASE_DOMAIN
+
+private static final int MAX_COOKIE_LENGTH
+
+private static final int MAX_DOMAIN_COUNT
+
+private static final int MAX_RAM_COOKIES_COUNT
+
+private static final int MAX_RAM_DOMAIN_COUNT
+
+private static final java.lang.String PATH
+
+private static final char PATH_DELIM
+
+private static final char PERIOD
+
+private static final char QUESTION_MARK
+
+private static final char QUOTATION
+
+private static final java.lang.String SECURE
+
+private static final int SECURE_LENGTH
+
+private static final char SEMICOLON
+
+private static final char WHITE_SPACE
+
+private static android.webkit.CookieManager sRef
+
+private boolean mAcceptCookie
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/util/ArrayList<Landroid/webkit/CookieManager$Cookie;>;>; )
+private java.util.Map mCookieMap
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+private java.lang.String getBaseDomain(
+java.lang.String)
+
+private java.lang.String[] getHostAndPath(
+android.net.WebAddress)
+
+public static android.webkit.CookieManager getInstance()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/ArrayList<Landroid/webkit/CookieManager$Cookie;>; )
+private java.util.ArrayList parseCookie(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public boolean acceptCookie()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+protected java.lang.Object clone()
+
+ void deleteACookie(
+android.webkit.CookieManager$Cookie)
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Landroid/webkit/CookieManager$Cookie;>; )
+ java.util.ArrayList deleteLRUDomain()
+
+public java.lang.String getCookie(
+android.net.WebAddress)
+
+public java.lang.String getCookie(
+java.lang.String)
+@dalvik.annotation.Signature (value =(J)Ljava/util/ArrayList<Landroid/webkit/CookieManager$Cookie;>; )
+ java.util.ArrayList getUpdatedCookiesSince(
+long)
+
+public boolean hasCookies()
+
+public void removeAllCookie()
+
+public void removeExpiredCookie()
+
+public void removeSessionCookie()
+
+public void setAcceptCookie(
+boolean)
+
+public void setCookie(
+android.net.WebAddress
+java.lang.String)
+
+public void setCookie(
+java.lang.String
+java.lang.String)
+
+ void syncedACookie(
+android.webkit.CookieManager$Cookie)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/WebSyncManager$1;Landroid/webkit/WebSyncManager$SyncHandler; )
+abstract class android.webkit.WebSyncManager extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+protected static final java.lang.String LOGTAG
+
+private static int SYNC_LATER_INTERVAL
+
+private static final int SYNC_MESSAGE
+
+private static int SYNC_NOW_INTERVAL
+
+protected android.webkit.WebViewDatabase mDataBase
+
+protected android.os.Handler mHandler
+
+private int mStartSyncRefCount
+
+private java.lang.Thread mSyncThread
+
+private java.lang.String mThreadName
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+android.content.Context
+java.lang.String)
+
+static int access$000()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+protected java.lang.Object clone()
+
+protected void onSyncInit()
+
+public void resetSync()
+
+public void run()
+
+public void startSync()
+
+public void stopSync()
+
+public void sync()
+
+abstract void syncFromRamToFlash()
+
+________________CLASS________________
+
+
+public final class android.webkit.CookieSyncManager extends android.webkit.WebSyncManager
+
+----------------FIELDS----------------
+
+private static android.webkit.CookieSyncManager sRef
+
+private long mLastUpdate
+----------------METHODS----------------
+
+private void <init>(
+android.content.Context)
+
+public static android.webkit.CookieSyncManager createInstance(
+android.content.Context)
+
+public static android.webkit.CookieSyncManager getInstance()
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/webkit/CookieManager$Cookie;>;)V )
+private void syncFromRamToFlash(
+java.util.ArrayList)
+
+ void clearAllCookies()
+
+ void clearExpiredCookies(
+long)
+
+ void clearSessionCookies()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/ArrayList<Landroid/webkit/CookieManager$Cookie;>; )
+ java.util.ArrayList getCookiesForDomain(
+java.lang.String)
+
+ boolean hasCookies()
+
+public volatile void resetSync()
+
+public volatile void run()
+
+public volatile void startSync()
+
+public volatile void stopSync()
+
+public volatile void sync()
+
+protected void syncFromRamToFlash()
+
+________________CLASS________________
+
+
+ class android.webkit.DataLoader extends android.webkit.StreamLoader
+
+----------------FIELDS----------------
+
+private java.lang.String mContentType
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+android.webkit.LoadListener)
+
+public static void requestUrl(
+java.lang.String
+android.webkit.LoadListener)
+
+protected void buildHeaders(
+android.net.http.Headers)
+
+protected boolean setupStreamAndSendStatus()
+
+________________CLASS________________
+
+
+public class android.webkit.DateSorter extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int DAY_COUNT
+
+private static final java.lang.String LOGTAG
+
+private long[] mBins
+
+ java.util.Calendar mCal
+
+ java.util.Date mDate
+
+private java.lang.String[] mLabels
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+private java.util.Calendar beginningOfDay(
+java.util.Calendar)
+
+public long getBoundary(
+int)
+
+public int getIndex(
+long)
+
+public java.lang.String getLabel(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class android.webkit.DownloadListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onDownloadStart(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+long)
+
+________________CLASS________________
+
+
+ class android.webkit.FileLoader extends android.webkit.StreamLoader
+
+----------------FIELDS----------------
+
+private android.content.Context mContext
+
+private boolean mIsAsset
+
+private java.lang.String mPath
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+android.webkit.LoadListener
+android.content.Context
+boolean)
+
+public static void requestUrl(
+java.lang.String
+android.webkit.LoadListener
+android.content.Context
+boolean)
+
+protected void buildHeaders(
+android.net.http.Headers)
+
+protected boolean setupStreamAndSendStatus()
+
+________________CLASS________________
+
+
+ class android.webkit.FrameLoader extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.lang.String ACCEPT_LANGUAGE
+
+private static final java.lang.String CONTENT_TYPE
+
+static final java.lang.String HEADER_STR
+
+private static final java.lang.String LOGTAG
+
+private static final int URI_PROTOCOL
+
+private static final java.lang.String mAboutBlank
+
+protected int mCacheMode
+
+protected java.lang.String mContentType
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+protected java.util.Map mHeaders
+
+protected boolean mIsHighPriority
+
+protected android.webkit.LoadListener mListener
+
+protected java.lang.String mMethod
+
+protected android.webkit.Network mNetwork
+
+protected java.lang.String mPostData
+
+protected java.lang.String mReferrer
+
+protected java.lang.String mUserAgent
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+android.webkit.LoadListener
+java.lang.String
+java.lang.String
+boolean)
+
+static boolean handleLocalFile(
+java.lang.String
+android.webkit.LoadListener)
+
+private void populateHeaders()
+
+private void populateStaticHeaders()
+
+public boolean executeLoad()
+
+public android.webkit.LoadListener getLoadListener()
+
+protected boolean handleCache()
+
+protected boolean handleHTTPLoad(
+boolean)
+
+protected boolean handleUrlIntercept()
+
+public void setCacheMode(
+int)
+
+public void setContentTypeForPost(
+java.lang.String)
+
+public void setHeaders(
+java.util.HashMap)
+
+public void setPostData(
+java.lang.String)
+
+public void setReferrer(
+java.lang.String)
+
+protected void startCacheLoad(
+android.webkit.CacheManager$CacheResult)
+
+________________CLASS________________
+
+
+public class android.webkit.HttpAuthHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+private static final java.lang.String LOGTAG
+
+private final int AUTH_CANCEL
+
+private final int AUTH_PROCEED
+@dalvik.annotation.Signature (value =Ljava/util/LinkedList<Landroid/webkit/LoadListener;>; )
+private java.util.LinkedList mLoaderQueue
+
+private android.webkit.Network mNetwork
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.Network)
+
+private void processNextLoader()
+
+public void cancel()
+
+ void handleAuthRequest(
+android.webkit.LoadListener)
+
+public void handleMessage(
+android.os.Message)
+
+public void proceed(
+java.lang.String
+java.lang.String)
+
+ void reset(
+android.webkit.BrowserFrame)
+
+public boolean useHttpAuthUsernamePassword()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/HttpDateTime; )
+ class android.webkit.HttpDateTime$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/HttpDateTime; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =TimeOfDay )
+ class android.webkit.HttpDateTime$TimeOfDay extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int hour
+
+ int minute
+
+ int second
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.webkit.HttpDateTime$1)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/HttpDateTime$1;Landroid/webkit/HttpDateTime$TimeOfDay; )
+ class android.webkit.HttpDateTime extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.util.regex.Pattern HTTP_DATE_ANSIC_PATTERN
+
+private static final java.lang.String HTTP_DATE_ANSIC_REGEXP
+
+private static final java.util.regex.Pattern HTTP_DATE_RFC_PATTERN
+
+private static final java.lang.String HTTP_DATE_RFC_REGEXP
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+private static int getDate(
+java.lang.String)
+
+private static int getMonth(
+java.lang.String)
+
+private static android.webkit.HttpDateTime$TimeOfDay getTime(
+java.lang.String)
+
+private static int getYear(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public static java.lang.Long parse(
+java.lang.String)
+
+________________CLASS________________
+
+
+final class android.webkit.JWebCoreJavaBridge extends android.os.Handler
+
+----------------FIELDS----------------
+
+private static final int FUNCPTR_MESSAGE
+
+private static final java.lang.String LOGTAG
+
+private static final int TIMER_MESSAGE
+
+private boolean mHasInstantTimer
+
+private int mNativeBridge
+
+private int mPauseTimerRefCount
+----------------METHODS----------------
+
+public void <init>()
+
+private java.lang.String cookies(
+java.lang.String)
+
+private boolean cookiesEnabled()
+
+private native void nativeConstructor()
+
+private native void nativeFinalize()
+
+private native void nativeServiceFuncPtrQueue()
+
+private void setCookies(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private native void setDeferringTimers(
+boolean)
+
+private void setSharedTimer(
+long)
+
+private native void sharedTimerFired()
+
+private void signalServiceFuncPtrQueue()
+
+private void stopSharedTimer()
+
+protected void finalize()
+
+public void handleMessage(
+android.os.Message)
+
+public void pause()
+
+public void resume()
+
+public native void setCacheSize(
+int)
+
+________________CLASS________________
+
+
+public class android.webkit.JsResult extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final boolean mDefaultValue
+
+protected final android.webkit.CallbackProxy mProxy
+
+private boolean mReady
+
+protected boolean mResult
+
+private boolean mTriedToNotifyBeforeReady
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.CallbackProxy
+boolean)
+
+public final void cancel()
+
+public final void confirm()
+
+final boolean getResult()
+
+ void handleDefault()
+
+final void setReady()
+
+protected final void wakeUp()
+
+________________CLASS________________
+
+
+public class android.webkit.JsPromptResult extends android.webkit.JsResult
+
+----------------FIELDS----------------
+
+private java.lang.String mStringResult
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.CallbackProxy)
+
+public void confirm(
+java.lang.String)
+
+ java.lang.String getStringResult()
+
+ void handleDefault()
+
+________________CLASS________________
+
+
+ class android.webkit.LoadListener extends android.os.Handler implements android.net.http.EventHandler
+
+----------------FIELDS----------------
+
+private static final java.util.regex.Pattern CONTENT_TYPE_PATTERN
+
+private static final int HTTP_AUTH
+
+private static final int HTTP_FOUND
+
+private static final int HTTP_MOVED_PERMANENTLY
+
+private static final int HTTP_NOT_FOUND
+
+private static final int HTTP_NOT_MODIFIED
+
+private static final int HTTP_OK
+
+private static final int HTTP_PROXY_AUTH
+
+private static final int HTTP_SEE_OTHER
+
+private static final int HTTP_TEMPORARY_REDIRECT
+
+private static final java.lang.String LOGTAG
+
+private static final int MSG_CONTENT_DATA
+
+private static final int MSG_CONTENT_ERROR
+
+private static final int MSG_CONTENT_FINISHED
+
+private static final int MSG_CONTENT_HEADERS
+
+private static final int MSG_LOCATION_CHANGED
+
+private static final int MSG_LOCATION_CHANGED_REQUEST
+
+private static int sNativeLoaderCount
+
+private boolean mAuthFailed
+
+private android.net.http.HttpAuthHeader mAuthHeader
+
+private android.webkit.BrowserFrame mBrowserFrame
+
+private android.webkit.CacheLoader mCacheLoader
+
+private android.webkit.CacheManager$CacheResult mCacheResult
+
+private boolean mCancelled
+
+public long mContentLength
+
+private android.content.Context mContext
+
+private final android.webkit.ByteArrayBuilder mDataBuilder
+
+private java.lang.String mEncoding
+
+private java.lang.String mErrorDescription
+
+private int mErrorID
+
+private android.net.http.Headers mHeaders
+
+private boolean mIsHighPriority
+
+private boolean mIsMainPageLoader
+@dalvik.annotation.Signature (value =Ljava/util/Vector<Landroid/os/Message;>; )
+private java.util.Vector mMessageQueue
+
+private java.lang.String mMethod
+
+private java.lang.String mMimeType
+
+private int mNativeLoader
+
+private java.lang.String mOriginalUrl
+
+private boolean mPermanent
+
+private java.lang.String mPostData
+
+private android.net.http.RequestHandle mRequestHandle
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+private java.util.Map mRequestHeaders
+
+private android.net.http.SslError mSslError
+
+private int mStatusCode
+
+private java.lang.String mStatusText
+
+private boolean mSynchronous
+
+private java.lang.String mTransferEncoding
+
+private android.net.WebAddress mUri
+
+private java.lang.String mUrl
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+android.content.Context
+android.webkit.BrowserFrame
+java.lang.String
+int
+boolean
+boolean)
+
+private void clearNativeLoader()
+
+private void commitHeaders()
+
+private void commitLoad()
+
+private int createNativeResponse()
+
+private void doRedirect()
+
+private java.lang.String getErrorDescription()
+
+private int getErrorID()
+
+public static android.webkit.LoadListener getLoadListener(
+android.content.Context
+android.webkit.BrowserFrame
+java.lang.String
+int
+boolean
+boolean)
+
+public static int getNativeLoaderCount()
+
+private void guessMimeType()
+
+private java.lang.String guessMimeTypeFromExtension()
+
+private boolean ignoreCallbacks()
+
+private native void nativeAddData(
+byte[]
+int)
+
+private native int nativeCreateResponse(
+java.lang.String
+int
+java.lang.String
+java.lang.String
+long
+java.lang.String
+long)
+
+private native void nativeError(
+int
+java.lang.String
+java.lang.String)
+
+private native void nativeFinished()
+
+private native void nativeReceivedResponse(
+int)
+
+private native java.lang.String nativeRedirectedToUrl(
+java.lang.String
+java.lang.String
+int)
+
+private native void nativeSetResponseHeader(
+int
+java.lang.String
+java.lang.String)
+
+private android.net.http.HttpAuthHeader parseAuthHeader(
+java.lang.String)
+
+private void parseContentTypeHeader(
+java.lang.String)
+
+private void sendMessageInternal(
+android.os.Message)
+
+static boolean willLoadFromCache(
+java.lang.String)
+
+ void attachRequestHandle(
+android.net.http.RequestHandle)
+
+ boolean authCredentialsInvalid()
+
+public void cancel()
+
+public boolean cancelled()
+
+public void certificate(
+android.net.http.SslCertificate)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)Z )
+ boolean checkCache(
+java.util.Map)
+
+ long contentLength()
+
+public void data(
+byte[]
+int)
+
+ void detachRequestHandle()
+
+ void downloadFile()
+
+public void endData()
+
+public void error(
+int
+java.lang.String)
+
+ android.content.Context getContext()
+
+ android.webkit.BrowserFrame getFrame()
+
+ android.net.WebAddress getWebAddress()
+
+ void handleAuthResponse(
+java.lang.String
+java.lang.String)
+
+public void handleMessage(
+android.os.Message)
+
+public void handleSslErrorRequest(
+android.net.http.SslError)
+
+ void handleSslErrorResponse(
+boolean)
+
+public void headers(
+android.net.http.Headers)
+
+ java.lang.String host()
+
+ boolean isSynchronous()
+
+ void loadSynchronousMessages()
+
+ java.lang.String mimeType()
+
+ void notifyError()
+
+ java.lang.String originalUrl()
+
+ boolean proxyAuthenticate()
+
+ java.lang.String realm()
+
+ void resetCancel()
+
+ void setCacheLoader(
+android.webkit.CacheLoader)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;Ljava/lang/String;Z)V )
+ void setRequestData(
+java.lang.String
+java.util.Map
+java.lang.String
+boolean)
+
+ void setUrl(
+java.lang.String)
+
+ android.net.http.SslError sslError()
+
+public void status(
+int
+int
+int
+java.lang.String)
+
+ void tearDown()
+
+ java.lang.String url()
+
+________________CLASS________________
+
+
+public class android.webkit.MimeTypeMap extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static android.webkit.MimeTypeMap sMimeTypeMap
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>; )
+private java.util.HashMap mExtensionToMimeTypeMap
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>; )
+private java.util.HashMap mMimeTypeToExtensionMap
+----------------METHODS----------------
+
+private void <init>()
+
+public static java.lang.String getFileExtensionFromUrl(
+java.lang.String)
+
+public static android.webkit.MimeTypeMap getSingleton()
+
+private void loadEntry(
+java.lang.String
+java.lang.String
+boolean)
+
+public java.lang.String getExtensionFromMimeType(
+java.lang.String)
+
+public java.lang.String getMimeTypeFromExtension(
+java.lang.String)
+
+public boolean hasExtension(
+java.lang.String)
+
+public boolean hasMimeType(
+java.lang.String)
+
+________________CLASS________________
+
+
+ class android.webkit.Network extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String LOGTAG
+
+private static android.webkit.Network sNetwork
+
+private static int sPlatformNotificationEnableRefCount
+
+private static boolean sPlatformNotifications
+
+private android.webkit.HttpAuthHandler mHttpAuthHandler
+
+private java.lang.String mProxyPassword
+
+private java.lang.String mProxyUsername
+
+private android.net.http.RequestQueue mRequestQueue
+
+private android.webkit.SslErrorHandler mSslErrorHandler
+----------------METHODS----------------
+
+private void <init>(
+android.content.Context)
+
+public static void disablePlatformNotifications()
+
+public static void enablePlatformNotifications()
+
+public static android.webkit.Network getInstance(
+android.content.Context)
+
+public void clearUserSslPrefTable()
+
+public java.lang.String getProxyHostname()
+
+public java.lang.String getProxyPassword()
+
+public java.lang.String getProxyUsername()
+
+public void handleAuthRequest(
+android.webkit.LoadListener)
+
+public void handleSslErrorRequest(
+android.webkit.LoadListener)
+
+public boolean isValidProxySet()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;Ljava/lang/String;Landroid/webkit/LoadListener;Z)Z )
+public boolean requestURL(
+java.lang.String
+java.util.Map
+java.lang.String
+android.webkit.LoadListener
+boolean)
+
+public void resetHandlersAndStopLoading(
+android.webkit.BrowserFrame)
+
+public boolean restoreState(
+android.os.Bundle)
+
+public boolean saveState(
+android.os.Bundle)
+
+public void setProxyPassword(
+java.lang.String)
+
+public void setProxyUsername(
+java.lang.String)
+
+public void startTiming()
+
+public void stopTiming()
+
+________________CLASS________________
+
+
+ class android.webkit.PerfChecker extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final long mResponseThreshold
+
+private long mTime
+----------------METHODS----------------
+
+public void <init>()
+
+public void responseAlert(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/Plugin; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.webkit.Plugin$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =PreferencesClickHandler )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/Plugin; )
+public abstract interface class android.webkit.Plugin$PreferencesClickHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void handleClickEvent(
+android.content.Context)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/Plugin; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =DefaultClickHandler )
+ class android.webkit.Plugin$DefaultClickHandler extends java.lang.Object implements android.webkit.Plugin$PreferencesClickHandler, android.content.DialogInterface$OnClickListener
+
+----------------FIELDS----------------
+
+private android.app.AlertDialog mDialog
+
+final android.webkit.Plugin this$0
+----------------METHODS----------------
+
+private void <init>(
+android.webkit.Plugin)
+
+ void <init>(
+android.webkit.Plugin
+android.webkit.Plugin$1)
+
+public void handleClickEvent(
+android.content.Context)
+
+public void onClick(
+android.content.DialogInterface
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/Plugin$1;Landroid/webkit/Plugin$DefaultClickHandler;Landroid/webkit/Plugin$PreferencesClickHandler; )
+public class android.webkit.Plugin extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.String mDescription
+
+private java.lang.String mFileName
+
+private android.webkit.Plugin$PreferencesClickHandler mHandler
+
+private java.lang.String mName
+
+private java.lang.String mPath
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+static java.lang.String access$100(
+android.webkit.Plugin)
+
+static java.lang.String access$200(
+android.webkit.Plugin)
+
+public void dispatchClickEvent(
+android.content.Context)
+
+public java.lang.String getDescription()
+
+public java.lang.String getFileName()
+
+public java.lang.String getName()
+
+public java.lang.String getPath()
+
+public void setClickHandler(
+android.webkit.Plugin$PreferencesClickHandler)
+
+public void setDescription(
+java.lang.String)
+
+public void setFileName(
+java.lang.String)
+
+public void setName(
+java.lang.String)
+
+public void setPath(
+java.lang.String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class android.webkit.PluginList extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/webkit/Plugin;>; )
+private java.util.ArrayList mPlugins
+----------------METHODS----------------
+
+public void <init>()
+
+public void addPlugin(
+android.webkit.Plugin)
+
+public void clear()
+
+public java.util.List getList()
+
+public void pluginClicked(
+android.content.Context
+int)
+
+public void removePlugin(
+android.webkit.Plugin)
+
+________________CLASS________________
+
+
+public class android.webkit.SslErrorHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+private static final java.lang.String LOGTAG
+
+private final int HANDLE_RESPONSE
+@dalvik.annotation.Signature (value =Ljava/util/LinkedList<Landroid/webkit/LoadListener;>; )
+private java.util.LinkedList mLoaderQueue
+
+private android.webkit.Network mNetwork
+
+private android.os.Bundle mSslPrefTable
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.Network)
+
+private boolean processNextLoader()
+
+public void cancel()
+
+ void clear()
+
+ void fastProcessQueuedSslErrors()
+
+public void handleMessage(
+android.os.Message)
+
+ void handleSslErrorRequest(
+android.webkit.LoadListener)
+
+ void handleSslErrorResponse(
+boolean)
+
+public void proceed()
+
+ void reset(
+android.webkit.BrowserFrame)
+
+ boolean restoreState(
+android.os.Bundle)
+
+ boolean saveState(
+android.os.Bundle)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/TextDialog; )
+ class android.webkit.TextDialog$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.webkit.TextDialog this$0
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.TextDialog)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/TextView$1;Landroid/widget/TextView$MenuHandler;Landroid/widget/TextView$BufferType;Landroid/widget/TextView$Blink;Landroid/widget/TextView$ChangeWatcher;Landroid/widget/TextView$CharWrapper;Landroid/widget/TextView$SavedState; )
+@android.widget.RemoteViews$RemoteView
+public class android.widget.TextView extends android.view.View implements android.view.ViewTreeObserver$OnPreDrawListener
+
+----------------FIELDS----------------
+
+private static final int ANIMATED_SCROLL_GAP
+
+private static final int BLINK
+
+private static final int DECIMAL
+
+private static final android.text.Spanned EMPTY_SPANNED
+
+private static final int EMS
+
+private static final int ID_COPY
+
+private static final int ID_COPY_URL
+
+private static final int ID_CUT
+
+private static final int ID_PASTE
+
+private static final int ID_SELECT_ALL
+
+private static final int LINES
+
+private static final int MONOSPACE
+
+private static final android.text.InputFilter[] NO_FILTERS
+
+private static final int PIXELS
+
+private static final int PREDRAW_DONE
+
+private static final int PREDRAW_NOT_REGISTERED
+
+private static final int PREDRAW_PENDING
+
+private static int PRIORITY
+
+private static final int SANS
+
+private static final int SERIF
+
+private static final int SIGNED
+
+private static final android.text.BoringLayout$Metrics UNKNOWN_BORING
+
+private static final int VERY_WIDE
+
+private static android.graphics.RectF sTempRect
+
+private int mAutoLinkMask
+
+private android.widget.TextView$Blink mBlink
+
+private android.text.BoringLayout$Metrics mBoring
+
+private android.widget.TextView$BufferType mBufferType
+
+private android.widget.TextView$ChangeWatcher mChangeWatcher
+
+private android.widget.TextView$CharWrapper mCharWrapper
+
+private android.graphics.Rect mCompoundRect
+
+private int mCurHintTextColor
+
+private int mCurTextColor
+
+private boolean mCursorVisible
+
+private int mDesiredHeightAtMeasure
+
+private android.graphics.drawable.Drawable mDrawableBottom
+
+private int mDrawableHeightLeft
+
+private int mDrawableHeightRight
+
+private android.graphics.drawable.Drawable mDrawableLeft
+
+private int mDrawablePadding
+
+private android.graphics.drawable.Drawable mDrawableRight
+
+private int mDrawableSizeBottom
+
+private int mDrawableSizeLeft
+
+private int mDrawableSizeRight
+
+private int mDrawableSizeTop
+
+private android.graphics.drawable.Drawable mDrawableTop
+
+private int mDrawableWidthBottom
+
+private int mDrawableWidthTop
+
+private boolean mDrawables
+
+private boolean mEatTouchRelease
+
+private android.text.Editable$Factory mEditableFactory
+
+private android.text.TextUtils$TruncateAt mEllipsize
+
+private java.lang.CharSequence mError
+
+private boolean mErrorWasChanged
+
+private android.text.InputFilter[] mFilters
+
+private boolean mFreezesText
+
+private boolean mFrozenWithFocus
+
+private int mGravity
+
+private int mHighlightColor
+
+private android.graphics.Paint mHighlightPaint
+
+private android.graphics.Path mHighlightPath
+
+private boolean mHighlightPathBogus
+
+private java.lang.CharSequence mHint
+
+private android.text.BoringLayout$Metrics mHintBoring
+
+private android.text.Layout mHintLayout
+
+private android.content.res.ColorStateList mHintTextColor
+
+private boolean mHorizontallyScrolling
+
+private boolean mIncludePad
+
+private android.text.method.KeyListener mInput
+
+private long mLastScroll
+
+private android.text.Layout mLayout
+
+private android.content.res.ColorStateList mLinkTextColor
+
+private boolean mLinksClickable
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/text/TextWatcher;>; )
+private java.util.ArrayList mListeners
+
+private int mMaxMode
+
+private int mMaxWidth
+
+private int mMaxWidthMode
+
+private int mMaximum
+
+private int mMinMode
+
+private int mMinWidth
+
+private int mMinWidthMode
+
+private int mMinimum
+
+private android.text.method.MovementMethod mMovement
+
+private android.widget.PopupWindow mPopup
+
+private int mPreDrawState
+
+private android.text.BoringLayout mSavedHintLayout
+
+private android.text.BoringLayout mSavedLayout
+
+private android.widget.Scroller mScroller
+
+private boolean mSelectAllOnFocus
+
+private boolean mSelectionMoved
+
+private float mShadowDx
+
+private float mShadowDy
+
+private float mShadowRadius
+
+private long mShowCursor
+
+private boolean mSingleLine
+
+private float mSpacingAdd
+
+private float mSpacingMult
+
+private android.text.Spannable$Factory mSpannableFactory
+@android.view.ViewDebug$ExportedProperty
+private java.lang.CharSequence mText
+
+private android.content.res.ColorStateList mTextColor
+
+private android.text.TextPaint mTextPaint
+
+private android.text.method.TransformationMethod mTransformation
+
+private java.lang.CharSequence mTransformed
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static void access$1000(
+android.widget.TextView
+java.lang.CharSequence
+int
+int
+int)
+
+static void access$1100(
+android.widget.TextView
+android.text.Editable)
+
+static boolean access$1202(
+android.widget.TextView
+boolean)
+
+static void access$1300(
+android.widget.TextView
+int
+int
+int)
+
+static void access$1400(
+android.widget.TextView)
+
+static java.lang.CharSequence access$1500(
+android.widget.TextView)
+
+static android.text.Layout access$1600(
+android.widget.TextView)
+
+static void access$1700(
+android.widget.TextView)
+
+static boolean access$1900(
+android.widget.TextView
+int)
+
+static void access$300(
+android.widget.TextView
+java.lang.CharSequence
+int
+int
+int)
+
+static int access$400(
+android.widget.TextView)
+
+static void access$500(
+android.widget.TextView)
+
+static boolean access$602(
+android.widget.TextView
+boolean)
+
+static long access$702(
+android.widget.TextView
+long)
+
+static void access$800(
+android.widget.TextView)
+
+static void access$900(
+android.widget.TextView)
+
+private void assumeLayout()
+
+private boolean bringPointIntoView(
+int)
+
+private boolean bringTextIntoView()
+
+private boolean canCopy()
+
+private boolean canCut()
+
+private boolean canPaste()
+
+private boolean canSelectAll()
+
+private void checkForRelayout()
+
+private void checkForResize()
+
+private void chooseSize(
+android.widget.PopupWindow
+java.lang.CharSequence
+android.widget.TextView)
+
+private static int desired(
+android.text.Layout)
+
+private void fixFocusableAndClickableSettings()
+
+private int getBottomVerticalOffset(
+boolean)
+
+private int getDesiredHeight()
+
+private int getDesiredHeight(
+android.text.Layout
+boolean)
+
+private int getErrorX()
+
+private int getErrorY()
+
+private void getInterestingRect(
+android.graphics.Rect
+int
+int
+int
+int)
+
+public static int getTextColor(
+android.content.Context
+android.content.res.TypedArray
+int)
+
+public static android.content.res.ColorStateList getTextColors(
+android.content.Context
+android.content.res.TypedArray)
+
+private int getVerticalOffset(
+boolean)
+
+private void hideError()
+
+private void invalidateCursor()
+
+private void invalidateCursor(
+int
+int
+int)
+
+private void invalidateCursorPath()
+
+private void makeBlink()
+
+private void nullLayouts()
+
+private boolean onMenu(
+int)
+
+private void registerForPreDraw()
+
+private void sendAfterTextChanged(
+android.text.Editable)
+
+private void sendBeforeTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+private void sendOnTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+private void setFilters(
+android.text.Editable
+android.text.InputFilter[])
+
+private void setRawTextSize(
+float)
+
+private void setText(
+java.lang.CharSequence
+android.widget.TextView$BufferType
+boolean
+int)
+
+private void setTypefaceByIndex(
+int
+int)
+
+private void showError()
+
+private void updateTextColors()
+
+public void addTextChangedListener(
+android.text.TextWatcher)
+
+public final void append(
+java.lang.CharSequence)
+
+public void append(
+java.lang.CharSequence
+int
+int)
+
+protected int computeHorizontalScrollRange()
+
+public void computeScroll()
+
+protected int computeVerticalScrollRange()
+
+public void debug(
+int)
+
+protected void drawableStateChanged()
+
+public final int getAutoLinkMask()
+
+public int getBaseline()
+
+public int getCompoundDrawablePadding()
+
+public android.graphics.drawable.Drawable[] getCompoundDrawables()
+
+public int getCompoundPaddingBottom()
+
+public int getCompoundPaddingLeft()
+
+public int getCompoundPaddingRight()
+
+public int getCompoundPaddingTop()
+
+public final int getCurrentHintTextColor()
+
+public final int getCurrentTextColor()
+
+protected boolean getDefaultEditable()
+
+protected android.text.method.MovementMethod getDefaultMovementMethod()
+
+public android.text.TextUtils$TruncateAt getEllipsize()
+
+public java.lang.CharSequence getError()
+
+public int getExtendedPaddingBottom()
+
+public int getExtendedPaddingTop()
+
+public android.text.InputFilter[] getFilters()
+
+public void getFocusedRect(
+android.graphics.Rect)
+
+public boolean getFreezesText()
+
+public int getGravity()
+@android.view.ViewDebug$CapturedViewProperty
+public java.lang.CharSequence getHint()
+
+public final android.content.res.ColorStateList getHintTextColors()
+
+public final android.text.method.KeyListener getKeyListener()
+
+public final android.text.Layout getLayout()
+
+public int getLineBounds(
+int
+android.graphics.Rect)
+
+public int getLineCount()
+
+public int getLineHeight()
+
+public final android.content.res.ColorStateList getLinkTextColors()
+
+public final boolean getLinksClickable()
+
+public final android.text.method.MovementMethod getMovementMethod()
+
+public android.text.TextPaint getPaint()
+
+public int getPaintFlags()
+
+public int getSelectionEnd()
+
+public int getSelectionStart()
+@android.view.ViewDebug$CapturedViewProperty
+public java.lang.CharSequence getText()
+
+public final android.content.res.ColorStateList getTextColors()
+
+public float getTextScaleX()
+
+public float getTextSize()
+
+public int getTotalPaddingBottom()
+
+public int getTotalPaddingLeft()
+
+public int getTotalPaddingRight()
+
+public int getTotalPaddingTop()
+
+public final android.text.method.TransformationMethod getTransformationMethod()
+
+public android.graphics.Typeface getTypeface()
+
+public android.text.style.URLSpan[] getUrls()
+
+public boolean hasSelection()
+
+public int length()
+
+protected void makeNewLayout(
+int
+int
+android.text.BoringLayout$Metrics
+android.text.BoringLayout$Metrics
+int
+boolean)
+
+protected void onCreateContextMenu(
+android.view.ContextMenu)
+
+protected void onDetachedFromWindow()
+
+protected void onDraw(
+android.graphics.Canvas)
+
+protected void onFocusChanged(
+boolean
+int
+android.graphics.Rect)
+
+public boolean onKeyDown(
+int
+android.view.KeyEvent)
+
+public boolean onKeyShortcut(
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+int
+android.view.KeyEvent)
+
+protected void onMeasure(
+int
+int)
+
+public boolean onPreDraw()
+
+public void onRestoreInstanceState(
+android.os.Parcelable)
+
+public android.os.Parcelable onSaveInstanceState()
+
+protected void onTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+public boolean onTrackballEvent(
+android.view.MotionEvent)
+
+public void onWindowFocusChanged(
+boolean)
+
+public boolean performLongClick()
+
+public void removeTextChangedListener(
+android.text.TextWatcher)
+
+public final void setAutoLinkMask(
+int)
+
+public void setCompoundDrawablePadding(
+int)
+
+public void setCompoundDrawables(
+android.graphics.drawable.Drawable
+android.graphics.drawable.Drawable
+android.graphics.drawable.Drawable
+android.graphics.drawable.Drawable)
+
+public void setCompoundDrawablesWithIntrinsicBounds(
+android.graphics.drawable.Drawable
+android.graphics.drawable.Drawable
+android.graphics.drawable.Drawable
+android.graphics.drawable.Drawable)
+
+public void setCursorVisible(
+boolean)
+
+public final void setEditableFactory(
+android.text.Editable$Factory)
+
+public void setEllipsize(
+android.text.TextUtils$TruncateAt)
+
+public void setEms(
+int)
+
+public void setError(
+java.lang.CharSequence)
+
+public void setError(
+java.lang.CharSequence
+android.graphics.drawable.Drawable)
+
+public void setFilters(
+android.text.InputFilter[])
+
+protected boolean setFrame(
+int
+int
+int
+int)
+
+public void setFreezesText(
+boolean)
+
+public void setGravity(
+int)
+
+public void setHeight(
+int)
+
+public void setHighlightColor(
+int)
+
+public final void setHint(
+int)
+
+public final void setHint(
+java.lang.CharSequence)
+
+public final void setHintTextColor(
+int)
+
+public final void setHintTextColor(
+android.content.res.ColorStateList)
+
+public void setHorizontallyScrolling(
+boolean)
+
+public void setIncludeFontPadding(
+boolean)
+
+public void setKeyListener(
+android.text.method.KeyListener)
+
+public void setLineSpacing(
+float
+float)
+
+public void setLines(
+int)
+
+public final void setLinkTextColor(
+int)
+
+public final void setLinkTextColor(
+android.content.res.ColorStateList)
+
+public final void setLinksClickable(
+boolean)
+
+public void setMaxEms(
+int)
+
+public void setMaxHeight(
+int)
+
+public void setMaxLines(
+int)
+
+public void setMaxWidth(
+int)
+
+public void setMinEms(
+int)
+
+public void setMinHeight(
+int)
+
+public void setMinLines(
+int)
+
+public void setMinWidth(
+int)
+
+public final void setMovementMethod(
+android.text.method.MovementMethod)
+
+public void setPadding(
+int
+int
+int
+int)
+
+public void setPaintFlags(
+int)
+
+public void setScroller(
+android.widget.Scroller)
+
+public void setSelectAllOnFocus(
+boolean)
+
+public void setShadowLayer(
+float
+float
+float
+int)
+
+public void setSingleLine()
+
+public void setSingleLine(
+boolean)
+
+public final void setSpannableFactory(
+android.text.Spannable$Factory)
+
+public final void setText(
+int)
+
+public final void setText(
+int
+android.widget.TextView$BufferType)
+
+public final void setText(
+java.lang.CharSequence)
+
+public void setText(
+java.lang.CharSequence
+android.widget.TextView$BufferType)
+
+public final void setText(
+char[]
+int
+int)
+
+public void setTextAppearance(
+android.content.Context
+int)
+
+public void setTextColor(
+int)
+
+public void setTextColor(
+android.content.res.ColorStateList)
+
+public final void setTextKeepState(
+java.lang.CharSequence)
+
+public final void setTextKeepState(
+java.lang.CharSequence
+android.widget.TextView$BufferType)
+
+public void setTextScaleX(
+float)
+
+public void setTextSize(
+float)
+
+public void setTextSize(
+int
+float)
+
+public final void setTransformationMethod(
+android.text.method.TransformationMethod)
+
+public void setTypeface(
+android.graphics.Typeface)
+
+public void setTypeface(
+android.graphics.Typeface
+int)
+
+public void setWidth(
+int)
+
+________________CLASS________________
+
+
+public class android.widget.EditText extends android.widget.TextView
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+public void extendSelection(
+int)
+
+protected boolean getDefaultEditable()
+
+protected android.text.method.MovementMethod getDefaultMovementMethod()
+
+public android.text.Editable getText()
+
+public volatile java.lang.CharSequence getText()
+
+public void selectAll()
+
+public void setSelection(
+int)
+
+public void setSelection(
+int
+int)
+
+public void setText(
+java.lang.CharSequence
+android.widget.TextView$BufferType)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/Filter; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =FilterListener )
+public abstract interface class android.widget.Filter$FilterListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onFilterComplete(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/AutoCompleteTextView$1;Landroid/widget/AutoCompleteTextView$Validator;Landroid/widget/AutoCompleteTextView$DropDownListView;Landroid/widget/AutoCompleteTextView$DropDownItemClickListener; )
+public class android.widget.AutoCompleteTextView extends android.widget.EditText implements android.widget.Filter$FilterListener
+
+----------------FIELDS----------------
+
+private static final int HINT_VIEW_ID
+
+private android.widget.ListAdapter mAdapter
+
+private final android.widget.AutoCompleteTextView$DropDownItemClickListener mDropDownItemClickListener
+
+private android.widget.AutoCompleteTextView$DropDownListView mDropDownList
+
+private android.graphics.drawable.Drawable mDropDownListHighlight
+
+private android.widget.Filter mFilter
+
+private int mHintResource
+
+private java.lang.CharSequence mHintText
+
+private android.widget.AdapterView$OnItemClickListener mItemClickListener
+
+private android.widget.AdapterView$OnItemSelectedListener mItemSelectedListener
+
+private android.widget.PopupWindow mPopup
+
+private boolean mTextChanged
+
+private int mThreshold
+
+private android.widget.AutoCompleteTextView$Validator mValidator
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static void access$100(
+android.widget.AutoCompleteTextView
+android.view.View
+int
+long)
+
+private int buildDropDown()
+
+private android.view.View getHintView(
+android.content.Context)
+
+private void performCompletion(
+android.view.View
+int
+long)
+
+protected java.lang.CharSequence convertSelectionToString(
+java.lang.Object)
+
+public void dismissDropDown()
+
+public boolean enoughToFilter()
+
+ void finishInit()
+
+public android.widget.ListAdapter getAdapter()
+
+protected android.widget.Filter getFilter()
+
+public android.widget.AdapterView$OnItemClickListener getItemClickListener()
+
+public android.widget.AdapterView$OnItemSelectedListener getItemSelectedListener()
+
+public int getThreshold()
+
+public android.widget.AutoCompleteTextView$Validator getValidator()
+
+public boolean isPopupShowing()
+
+public void onFilterComplete(
+int)
+
+protected void onFocusChanged(
+boolean
+int
+android.graphics.Rect)
+
+public boolean onKeyDown(
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+int
+android.view.KeyEvent)
+
+protected void onTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+public void onWindowFocusChanged(
+boolean)
+
+public void performCompletion()
+
+protected void performFiltering(
+java.lang.CharSequence
+int)
+
+public void performValidation()
+
+protected void replaceText(
+java.lang.CharSequence)
+@dalvik.annotation.Signature (value =<T::Landroid/widget/ListAdapter;:Landroid/widget/Filterable;>(TT;)V )
+public void setAdapter(
+android.widget.ListAdapter)
+
+public void setCompletionHint(
+java.lang.CharSequence)
+
+protected boolean setFrame(
+int
+int
+int
+int)
+
+public void setOnItemClickListener(
+android.widget.AdapterView$OnItemClickListener)
+
+public void setOnItemSelectedListener(
+android.widget.AdapterView$OnItemSelectedListener)
+
+public void setThreshold(
+int)
+
+public void setValidator(
+android.widget.AutoCompleteTextView$Validator)
+
+public void showDropDown()
+
+________________CLASS________________
+
+
+ class android.webkit.TextDialog extends android.widget.AutoCompleteTextView
+
+----------------FIELDS----------------
+
+private static int LONGPRESS
+
+private static final android.text.InputFilter[] NO_FILTERS
+
+private char[] mCharacter
+
+private long mDownTime
+
+private boolean mGotEnterDown
+
+private android.os.Handler mHandler
+
+private int mHeightSpec
+
+private int mMaxLength
+
+private int mNodePointer
+
+private java.lang.String mPreChange
+
+private boolean mScrollToAccommodateCursor
+
+private boolean mSingle
+
+private boolean mTrackballDown
+
+private android.webkit.WebView mWebView
+
+private int mWidthSpec
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+android.content.Context
+android.webkit.WebView)
+
+static int access$000()
+
+static boolean access$100(
+android.webkit.TextDialog)
+
+static boolean access$102(
+android.webkit.TextDialog
+boolean)
+
+private void sendDomEvent(
+android.view.KeyEvent)
+
+public boolean dispatchKeyEvent(
+android.view.KeyEvent)
+
+ boolean isSameTextField(
+int)
+
+public boolean onPreDraw()
+
+protected void onTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+public boolean onTrackballEvent(
+android.view.MotionEvent)
+
+ void remove()
+
+public boolean requestRectangleOnScreen(
+android.graphics.Rect)
+
+ void setInPassword(
+boolean)
+
+ void setMaxLength(
+int)
+
+ void setNodePointer(
+int)
+
+ void setRect(
+int
+int
+int
+int)
+
+public void setSingleLine(
+boolean)
+
+ void setText(
+java.lang.CharSequence
+int
+int)
+
+ void setTextAndKeepSelection(
+java.lang.String)
+
+ void updateCachedTextfield()
+
+________________CLASS________________
+
+
+public final class android.webkit.URLUtil extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final java.lang.String ASSET_BASE
+
+private static final java.util.regex.Pattern CONTENT_DISPOSITION_PATTERN
+
+static final java.lang.String FILE_BASE
+
+private static final java.lang.String LOGTAG
+
+static final java.lang.String PROXY_BASE
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.lang.String composeSearchUrl(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public static byte[] decode(
+byte[])
+
+public static final java.lang.String guessFileName(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public static java.lang.String guessUrl(
+java.lang.String)
+
+public static boolean isAboutUrl(
+java.lang.String)
+
+public static boolean isAssetUrl(
+java.lang.String)
+
+public static boolean isContentUrl(
+java.lang.String)
+
+public static boolean isCookielessProxyUrl(
+java.lang.String)
+
+public static boolean isDataUrl(
+java.lang.String)
+
+public static boolean isFileUrl(
+java.lang.String)
+
+public static boolean isHttpUrl(
+java.lang.String)
+
+public static boolean isHttpsUrl(
+java.lang.String)
+
+public static boolean isJavaScriptUrl(
+java.lang.String)
+
+public static boolean isNetworkUrl(
+java.lang.String)
+
+public static boolean isValidUrl(
+java.lang.String)
+
+private static java.lang.String parseContentDisposition(
+java.lang.String)
+
+private static int parseHex(
+byte)
+
+public static java.lang.String stripAnchor(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class android.webkit.UrlInterceptHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)Landroid/webkit/CacheManager$CacheResult; )
+public abstract android.webkit.CacheManager$CacheResult service(
+java.lang.String
+java.util.Map)
+
+________________CLASS________________
+
+
+public final class android.webkit.UrlInterceptRegistry extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String LOGTAG
+
+private static boolean mDisabled
+
+private static java.util.LinkedList mHandlerList
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static java.util.LinkedList getHandlers()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)Landroid/webkit/CacheManager$CacheResult; )
+public static android.webkit.CacheManager$CacheResult getSurrogate(
+java.lang.String
+java.util.Map)
+
+public static boolean registerHandler(
+android.webkit.UrlInterceptHandler)
+
+public static void setUrlInterceptDisabled(
+boolean)
+
+public static boolean unregisterHandler(
+android.webkit.UrlInterceptHandler)
+
+public static boolean urlInterceptDisabled()
+
+________________CLASS________________
+
+
+public class android.webkit.WebBackForwardList extends java.lang.Object implements java.lang.Cloneable, java.io.Serializable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/webkit/WebHistoryItem;>; )
+private java.util.ArrayList mArray
+
+private boolean mClearPending
+
+private int mCurrentIndex
+----------------METHODS----------------
+
+ void <init>()
+
+private static native void nativeClose(
+int)
+
+private void removeHistoryItem(
+int)
+
+static synchronized native void restoreIndex(
+int
+int)
+
+ void addHistoryItem(
+android.webkit.WebHistoryItem)
+
+protected android.webkit.WebBackForwardList clone()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+protected volatile java.lang.Object clone()
+
+ void close(
+int)
+
+ boolean getClearPending()
+
+public int getCurrentIndex()
+
+public android.webkit.WebHistoryItem getCurrentItem()
+
+public android.webkit.WebHistoryItem getItemAtIndex(
+int)
+
+public int getSize()
+
+ void setClearPending()
+
+ void setCurrentIndex(
+int)
+
+________________CLASS________________
+
+
+public class android.webkit.WebChromeClient extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void onCloseWindow(
+android.webkit.WebView)
+
+public boolean onCreateWindow(
+android.webkit.WebView
+boolean
+boolean
+android.os.Message)
+
+public boolean onJsAlert(
+android.webkit.WebView
+java.lang.String
+java.lang.String
+android.webkit.JsResult)
+
+public boolean onJsBeforeUnload(
+android.webkit.WebView
+java.lang.String
+java.lang.String
+android.webkit.JsResult)
+
+public boolean onJsConfirm(
+android.webkit.WebView
+java.lang.String
+java.lang.String
+android.webkit.JsResult)
+
+public boolean onJsPrompt(
+android.webkit.WebView
+java.lang.String
+java.lang.String
+java.lang.String
+android.webkit.JsPromptResult)
+
+public void onProgressChanged(
+android.webkit.WebView
+int)
+
+public void onReceivedIcon(
+android.webkit.WebView
+android.graphics.Bitmap)
+
+public void onReceivedTitle(
+android.webkit.WebView
+java.lang.String)
+
+public void onRequestFocus(
+android.webkit.WebView)
+
+________________CLASS________________
+
+
+public class android.webkit.WebHistoryItem extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private static int sNextId
+
+private android.graphics.Bitmap mFavicon
+
+private byte[] mFlattenedData
+
+private final int mId
+
+private java.lang.String mOriginalUrl
+
+private java.lang.String mTitle
+
+private java.lang.String mUrl
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+private void <init>(
+android.webkit.WebHistoryItem)
+
+ void <init>(
+byte[])
+
+private native void inflate(
+int
+byte[])
+
+private void update(
+java.lang.String
+java.lang.String
+java.lang.String
+android.graphics.Bitmap
+byte[])
+
+protected android.webkit.WebHistoryItem clone()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+protected volatile java.lang.Object clone()
+
+public android.graphics.Bitmap getFavicon()
+
+ byte[] getFlattenedData()
+
+public int getId()
+
+public java.lang.String getOriginalUrl()
+
+public java.lang.String getTitle()
+
+public java.lang.String getUrl()
+
+ void inflate(
+int)
+
+ void setFavicon(
+android.graphics.Bitmap)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebIconDatabase; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.webkit.WebIconDatabase$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.webkit.WebIconDatabase$EventHandler$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.webkit.WebIconDatabase$EventHandler this$1
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.WebIconDatabase$EventHandler)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebIconDatabase$EventHandler; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =IconResult )
+ class android.webkit.WebIconDatabase$EventHandler$IconResult extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final android.graphics.Bitmap mIcon
+
+private final android.webkit.WebIconDatabase$IconListener mListener
+
+private final java.lang.String mUrl
+
+final android.webkit.WebIconDatabase$EventHandler this$1
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.WebIconDatabase$EventHandler
+java.lang.String
+android.graphics.Bitmap
+android.webkit.WebIconDatabase$IconListener)
+
+ void dispatch()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =EventHandler )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebIconDatabase; )
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/WebIconDatabase$EventHandler$IconResult; )
+ class android.webkit.WebIconDatabase$EventHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+static final int CLOSE
+
+private static final int ICON_RESULT
+
+static final int OPEN
+
+static final int RELEASE_ICON
+
+static final int REMOVE_ALL
+
+static final int REQUEST_ICON
+
+static final int RETAIN_ICON
+
+private android.os.Handler mHandler
+@dalvik.annotation.Signature (value =Ljava/util/Vector<Landroid/os/Message;>; )
+private java.util.Vector mMessages
+
+final android.webkit.WebIconDatabase this$0
+----------------METHODS----------------
+
+private void <init>(
+android.webkit.WebIconDatabase)
+
+ void <init>(
+android.webkit.WebIconDatabase
+android.webkit.WebIconDatabase$1)
+
+static void access$700(
+android.webkit.WebIconDatabase$EventHandler
+android.os.Message)
+
+static void access$800(
+android.webkit.WebIconDatabase$EventHandler)
+
+private void createHandler()
+
+private void postMessage(
+android.os.Message)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =IconListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebIconDatabase; )
+public abstract interface class android.webkit.WebIconDatabase$IconListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onReceivedIcon(
+java.lang.String
+android.graphics.Bitmap)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/WebIconDatabase$1;Landroid/webkit/WebIconDatabase$IconListener;Landroid/webkit/WebIconDatabase$EventHandler; )
+public final class android.webkit.WebIconDatabase extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static android.webkit.WebIconDatabase sIconDatabase
+
+private final android.webkit.WebIconDatabase$EventHandler mEventHandler
+----------------METHODS----------------
+
+private void <init>()
+
+static void access$100(
+java.lang.String)
+
+static void access$200()
+
+static void access$300()
+
+static android.graphics.Bitmap access$400(
+java.lang.String)
+
+static void access$500(
+java.lang.String)
+
+static void access$600(
+java.lang.String)
+
+public static android.webkit.WebIconDatabase getInstance()
+
+private static native void nativeClose()
+
+private static native android.graphics.Bitmap nativeIconForPageUrl(
+java.lang.String)
+
+private static native void nativeOpen(
+java.lang.String)
+
+private static native void nativeReleaseIconForPageUrl(
+java.lang.String)
+
+private static native void nativeRemoveAllIcons()
+
+private static native void nativeRetainIconForPageUrl(
+java.lang.String)
+
+public void close()
+
+ void createHandler()
+
+public void open(
+java.lang.String)
+
+public void releaseIconForPageUrl(
+java.lang.String)
+
+public void removeAllIcons()
+
+public void requestIconForPageUrl(
+java.lang.String
+android.webkit.WebIconDatabase$IconListener)
+
+public void retainIconForPageUrl(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebSettings; )
+ class android.webkit.WebSettings$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.webkit.WebSettings$EventHandler$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.webkit.WebSettings$EventHandler this$1
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.WebSettings$EventHandler)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebSettings; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =EventHandler )
+ class android.webkit.WebSettings$EventHandler extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int PRIORITY
+
+static final int SYNC
+
+private android.os.Handler mHandler
+
+final android.webkit.WebSettings this$0
+----------------METHODS----------------
+
+private void <init>(
+android.webkit.WebSettings)
+
+ void <init>(
+android.webkit.WebSettings
+android.webkit.WebSettings$1)
+
+static void access$300(
+android.webkit.WebSettings$EventHandler)
+
+static boolean access$600(
+android.webkit.WebSettings$EventHandler
+android.os.Message)
+
+static void access$700(
+android.webkit.WebSettings$EventHandler)
+
+private void createHandler()
+
+private boolean sendMessage(
+android.os.Message)
+
+private void setRenderPriority()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/webkit/WebSettings$LayoutAlgorithm;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =LayoutAlgorithm )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebSettings; )
+public final class android.webkit.WebSettings$LayoutAlgorithm extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.webkit.WebSettings$LayoutAlgorithm[] $VALUES
+
+public static final android.webkit.WebSettings$LayoutAlgorithm NARROW_COLUMNS
+
+public static final android.webkit.WebSettings$LayoutAlgorithm NORMAL
+
+public static final android.webkit.WebSettings$LayoutAlgorithm SINGLE_COLUMN
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.webkit.WebSettings$LayoutAlgorithm valueOf(
+java.lang.String)
+
+public static android.webkit.WebSettings$LayoutAlgorithm[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebSettings; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/webkit/WebSettings$RenderPriority;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =RenderPriority )
+public final class android.webkit.WebSettings$RenderPriority extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.webkit.WebSettings$RenderPriority[] $VALUES
+
+public static final android.webkit.WebSettings$RenderPriority HIGH
+
+public static final android.webkit.WebSettings$RenderPriority LOW
+
+public static final android.webkit.WebSettings$RenderPriority NORMAL
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.webkit.WebSettings$RenderPriority valueOf(
+java.lang.String)
+
+public static android.webkit.WebSettings$RenderPriority[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/webkit/WebSettings$TextSize;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =TextSize )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebSettings; )
+public final class android.webkit.WebSettings$TextSize extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.webkit.WebSettings$TextSize[] $VALUES
+
+public static final android.webkit.WebSettings$TextSize LARGER
+
+public static final android.webkit.WebSettings$TextSize LARGEST
+
+public static final android.webkit.WebSettings$TextSize NORMAL
+
+public static final android.webkit.WebSettings$TextSize SMALLER
+
+public static final android.webkit.WebSettings$TextSize SMALLEST
+
+ int value
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.webkit.WebSettings$TextSize valueOf(
+java.lang.String)
+
+public static android.webkit.WebSettings$TextSize[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/WebSettings$1;Landroid/webkit/WebSettings$EventHandler;Landroid/webkit/WebSettings$RenderPriority;Landroid/webkit/WebSettings$TextSize;Landroid/webkit/WebSettings$LayoutAlgorithm; )
+public class android.webkit.WebSettings extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.lang.String ANDROID_USERAGENT
+
+private static final java.lang.String DESKTOP_USERAGENT
+
+private static final java.lang.String IPHONE_USERAGENT
+
+public static final int LOAD_CACHE_ELSE_NETWORK
+
+public static final int LOAD_CACHE_ONLY
+
+public static final int LOAD_DEFAULT
+
+public static final int LOAD_NORMAL
+
+public static final int LOAD_NO_CACHE
+
+private boolean mBlockNetworkImage
+
+private android.webkit.BrowserFrame mBrowserFrame
+
+private java.lang.String mCursiveFontFamily
+
+private int mDefaultFixedFontSize
+
+private int mDefaultFontSize
+
+private java.lang.String mDefaultTextEncoding
+
+private final android.webkit.WebSettings$EventHandler mEventHandler
+
+private java.lang.String mFantasyFontFamily
+
+private java.lang.String mFixedFontFamily
+
+private boolean mJavaScriptCanOpenWindowsAutomatically
+
+private boolean mJavaScriptEnabled
+
+private android.webkit.WebSettings$LayoutAlgorithm mLayoutAlgorithm
+
+private boolean mLightTouchEnabled
+
+private boolean mLoadsImagesAutomatically
+
+private int mMinimumFontSize
+
+private int mMinimumLogicalFontSize
+
+private boolean mNavDump
+
+private boolean mNeedInitialFocus
+
+private int mOverrideCacheMode
+
+private boolean mPluginsEnabled
+
+private java.lang.String mPluginsPath
+
+private android.webkit.WebSettings$RenderPriority mRenderPriority
+
+private java.lang.String mSansSerifFontFamily
+
+private boolean mSaveFormData
+
+private boolean mSavePassword
+
+private java.lang.String mSerifFontFamily
+
+private java.lang.String mStandardFontFamily
+
+private boolean mSupportMultipleWindows
+
+private boolean mSupportZoom
+
+private boolean mSyncPending
+
+private android.webkit.WebSettings$TextSize mTextSize
+
+private boolean mUseDoubleTree
+
+private boolean mUseWideViewport
+
+private java.lang.String mUserAgent
+----------------METHODS----------------
+
+ void <init>(
+android.content.Context)
+
+static android.webkit.BrowserFrame access$000(
+android.webkit.WebSettings)
+
+static void access$100(
+android.webkit.WebSettings
+int)
+
+static boolean access$202(
+android.webkit.WebSettings
+boolean)
+
+static android.webkit.WebSettings$RenderPriority access$400(
+android.webkit.WebSettings)
+
+private native void nativeSync(
+int)
+
+private int pin(
+int)
+
+private void postSync()
+
+public boolean getBlockNetworkImage()
+
+public int getCacheMode()
+
+public java.lang.String getCursiveFontFamily()
+
+public int getDefaultFixedFontSize()
+
+public int getDefaultFontSize()
+
+public java.lang.String getDefaultTextEncodingName()
+
+public java.lang.String getFantasyFontFamily()
+
+public java.lang.String getFixedFontFamily()
+
+public boolean getJavaScriptCanOpenWindowsAutomatically()
+
+public boolean getJavaScriptEnabled()
+
+public android.webkit.WebSettings$LayoutAlgorithm getLayoutAlgorithm()
+
+public boolean getLightTouchEnabled()
+
+public boolean getLoadsImagesAutomatically()
+
+public int getMinimumFontSize()
+
+public int getMinimumLogicalFontSize()
+
+public boolean getNavDump()
+
+ boolean getNeedInitialFocus()
+
+public boolean getPluginsEnabled()
+
+public java.lang.String getPluginsPath()
+
+public java.lang.String getSansSerifFontFamily()
+
+public boolean getSaveFormData()
+
+public boolean getSavePassword()
+
+public java.lang.String getSerifFontFamily()
+
+public java.lang.String getStandardFontFamily()
+
+public android.webkit.WebSettings$TextSize getTextSize()
+
+public boolean getUseDoubleTree()
+
+public boolean getUseWideViewPort()
+
+public int getUserAgent()
+
+ java.lang.String getUserAgentString()
+
+public void setBlockNetworkImage(
+boolean)
+
+public void setCacheMode(
+int)
+
+public void setCursiveFontFamily(
+java.lang.String)
+
+public void setDefaultFixedFontSize(
+int)
+
+public void setDefaultFontSize(
+int)
+
+public void setDefaultTextEncodingName(
+java.lang.String)
+
+public void setFantasyFontFamily(
+java.lang.String)
+
+public void setFixedFontFamily(
+java.lang.String)
+
+public void setJavaScriptCanOpenWindowsAutomatically(
+boolean)
+
+public void setJavaScriptEnabled(
+boolean)
+
+public void setLayoutAlgorithm(
+android.webkit.WebSettings$LayoutAlgorithm)
+
+public void setLightTouchEnabled(
+boolean)
+
+public void setLoadsImagesAutomatically(
+boolean)
+
+public void setMinimumFontSize(
+int)
+
+public void setMinimumLogicalFontSize(
+int)
+
+public void setNavDump(
+boolean)
+
+public void setNeedInitialFocus(
+boolean)
+
+public void setPluginsEnabled(
+boolean)
+
+public void setPluginsPath(
+java.lang.String)
+
+public void setRenderPriority(
+android.webkit.WebSettings$RenderPriority)
+
+public void setSansSerifFontFamily(
+java.lang.String)
+
+public void setSaveFormData(
+boolean)
+
+public void setSavePassword(
+boolean)
+
+public void setSerifFontFamily(
+java.lang.String)
+
+public void setStandardFontFamily(
+java.lang.String)
+
+public void setSupportMultipleWindows(
+boolean)
+
+public void setSupportZoom(
+boolean)
+
+public void setTextSize(
+android.webkit.WebSettings$TextSize)
+
+public void setUseDoubleTree(
+boolean)
+
+public void setUseWideViewPort(
+boolean)
+
+public void setUserAgent(
+int)
+
+public boolean supportMultipleWindows()
+
+public boolean supportZoom()
+
+ void syncSettingsAndCreateHandler(
+android.webkit.BrowserFrame)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebSyncManager; )
+ class android.webkit.WebSyncManager$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebSyncManager; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =SyncHandler )
+ class android.webkit.WebSyncManager$SyncHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.webkit.WebSyncManager this$0
+----------------METHODS----------------
+
+private void <init>(
+android.webkit.WebSyncManager)
+
+ void <init>(
+android.webkit.WebSyncManager
+android.webkit.WebSyncManager$1)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.webkit.WebView$1 extends java.lang.Object implements android.content.DialogInterface$OnCancelListener
+
+----------------FIELDS----------------
+
+final android.webkit.WebView this$0
+
+final android.os.Message val$resumeMsg
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.WebView
+android.os.Message)
+
+public void onCancel(
+android.content.DialogInterface)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.webkit.WebView$2 extends java.lang.Object implements android.content.DialogInterface$OnClickListener
+
+----------------FIELDS----------------
+
+final android.webkit.WebView this$0
+
+final android.os.Message val$neverRemember
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.WebView
+android.os.Message)
+
+public void onClick(
+android.content.DialogInterface
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.webkit.WebView$3 extends java.lang.Object implements android.content.DialogInterface$OnClickListener
+
+----------------FIELDS----------------
+
+final android.webkit.WebView this$0
+
+final android.os.Message val$remember
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.WebView
+android.os.Message)
+
+public void onClick(
+android.content.DialogInterface
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.webkit.WebView$4 extends java.lang.Object implements android.content.DialogInterface$OnClickListener
+
+----------------FIELDS----------------
+
+final android.webkit.WebView this$0
+
+final android.os.Message val$resumeMsg
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.WebView
+android.os.Message)
+
+public void onClick(
+android.content.DialogInterface
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.webkit.WebView$5 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.webkit.WebView this$0
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.WebView)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.webkit.WebView$6 extends java.lang.Object implements android.view.View$OnClickListener
+
+----------------FIELDS----------------
+
+final android.webkit.WebView this$0
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.WebView)
+
+public void onClick(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.webkit.WebView$7 extends java.lang.Object implements android.view.View$OnClickListener
+
+----------------FIELDS----------------
+
+final android.webkit.WebView this$0
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.WebView)
+
+public void onClick(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.webkit.WebView$8 extends java.lang.Object implements android.view.View$OnClickListener
+
+----------------FIELDS----------------
+
+final android.webkit.WebView this$0
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.WebView)
+
+public void onClick(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/RelativeLayout$LayoutParams; )
+@android.widget.RemoteViews$RemoteView
+public class android.widget.RelativeLayout extends android.view.ViewGroup
+
+----------------FIELDS----------------
+
+public static final int ABOVE
+
+public static final int ALIGN_BASELINE
+
+public static final int ALIGN_BOTTOM
+
+public static final int ALIGN_LEFT
+
+public static final int ALIGN_PARENT_BOTTOM
+
+public static final int ALIGN_PARENT_LEFT
+
+public static final int ALIGN_PARENT_RIGHT
+
+public static final int ALIGN_PARENT_TOP
+
+public static final int ALIGN_RIGHT
+
+public static final int ALIGN_TOP
+
+public static final int BELOW
+
+public static final int CENTER_HORIZONTAL
+
+public static final int CENTER_IN_PARENT
+
+public static final int CENTER_VERTICAL
+
+public static final int LEFT_OF
+
+public static final int RIGHT_OF
+
+public static final int TRUE
+
+private static final int VERB_COUNT
+
+private android.view.View mBaselineView
+
+private final android.graphics.Rect mContentBounds
+
+private int mGravity
+
+private boolean mHasBaselineAlignedChild
+
+private int mIgnoreGravity
+
+private final android.graphics.Rect mSelfBounds
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+private void alignBaseline(
+android.view.View
+android.widget.RelativeLayout$LayoutParams)
+
+private void applySizeRules(
+android.widget.RelativeLayout$LayoutParams
+int
+int)
+
+private void centerHorizontal(
+android.view.View
+android.widget.RelativeLayout$LayoutParams
+int)
+
+private void centerVertical(
+android.view.View
+android.widget.RelativeLayout$LayoutParams
+int)
+
+private int getChildMeasureSpec(
+int
+int
+int
+int
+int
+int
+int
+int)
+
+private android.view.View getRelatedView(
+int[]
+int)
+
+private int getRelatedViewBaseline(
+int[]
+int)
+
+private android.widget.RelativeLayout$LayoutParams getRelatedViewParams(
+int[]
+int)
+
+private void initFromAttributes(
+android.content.Context
+android.util.AttributeSet)
+
+private void measureChild(
+android.view.View
+android.widget.RelativeLayout$LayoutParams
+int
+int)
+
+private void positionChild(
+android.view.View
+android.widget.RelativeLayout$LayoutParams
+int
+int)
+
+protected boolean checkLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+protected android.view.ViewGroup$LayoutParams generateDefaultLayoutParams()
+
+public volatile android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+protected android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+public android.widget.RelativeLayout$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+public int getBaseline()
+
+protected void onLayout(
+boolean
+int
+int
+int
+int)
+
+protected void onMeasure(
+int
+int)
+
+public void setGravity(
+int)
+
+public void setHorizontalGravity(
+int)
+
+public void setIgnoreGravity(
+int)
+
+public void setVerticalGravity(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =ExtendedZoomControls )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebView; )
+ class android.webkit.WebView$ExtendedZoomControls extends android.widget.RelativeLayout
+
+----------------FIELDS----------------
+
+ android.widget.ZoomControls mZoomControls
+
+ android.widget.ImageView mZoomMagnify
+
+final android.webkit.WebView this$0
+----------------METHODS----------------
+
+public void <init>(
+android.webkit.WebView
+android.content.Context
+android.util.AttributeSet)
+
+private void fade(
+int
+float
+float)
+
+public boolean hasFocus()
+
+public void hide()
+
+public void setIsZoomMagnifyEnabled(
+boolean)
+
+public void setOnZoomInClickListener(
+android.view.View$OnClickListener)
+
+public void setOnZoomMagnifyClickListener(
+android.view.View$OnClickListener)
+
+public void setOnZoomOutClickListener(
+android.view.View$OnClickListener)
+
+public void show(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebView; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =FocusNode )
+ class android.webkit.WebView$FocusNode extends java.lang.Object
+
+----------------FIELDS----------------
+
+public android.graphics.Rect mBounds
+
+public int mFramePointer
+
+public boolean mIsAnchor
+
+public boolean mIsPassword
+
+public boolean mIsRtlText
+
+public boolean mIsTextArea
+
+public boolean mIsTextField
+
+public int mMaxLength
+
+public java.lang.String mName
+
+public int mNodePointer
+
+public int mRootTextGeneration
+
+public int mSelectionEnd
+
+public int mSelectionStart
+
+public java.lang.String mText
+
+public int mTextSize
+
+final android.webkit.WebView this$0
+----------------METHODS----------------
+
+public void <init>(
+android.webkit.WebView)
+
+private void setAll(
+boolean
+boolean
+boolean
+boolean
+boolean
+int
+int
+int
+int
+int
+int
+int
+int
+java.lang.String
+java.lang.String
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebView; )
+@dalvik.annotation.InnerClass (accessFlags =1 name =HitTestResult )
+public class android.webkit.WebView$HitTestResult extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ANCHOR_TYPE
+
+public static final int EDIT_TEXT_TYPE
+
+public static final int EMAIL_TYPE
+
+public static final int GEO_TYPE
+
+public static final int IMAGE_ANCHOR_TYPE
+
+public static final int IMAGE_TYPE
+
+public static final int PHONE_TYPE
+
+public static final int SRC_ANCHOR_TYPE
+
+public static final int SRC_IMAGE_ANCHOR_TYPE
+
+public static final int UNKNOWN_TYPE
+
+private java.lang.String mExtra
+
+private int mType
+
+final android.webkit.WebView this$0
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.WebView)
+
+static void access$000(
+android.webkit.WebView$HitTestResult
+int)
+
+static void access$100(
+android.webkit.WebView$HitTestResult
+java.lang.String)
+
+static int access$200(
+android.webkit.WebView$HitTestResult)
+
+private void setExtra(
+java.lang.String)
+
+private void setType(
+int)
+
+public java.lang.String getExtra()
+
+public int getType()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.webkit.WebView$InvokeListBox$1 extends java.lang.Object implements android.content.DialogInterface$OnClickListener
+
+----------------FIELDS----------------
+
+final android.webkit.WebView$InvokeListBox this$1
+
+final android.webkit.WebView$InvokeListBox$MyArrayListAdapter val$adapter
+
+final android.widget.ListView val$listView
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.WebView$InvokeListBox
+android.webkit.WebView$InvokeListBox$MyArrayListAdapter
+android.widget.ListView)
+
+public void onClick(
+android.content.DialogInterface
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.webkit.WebView$InvokeListBox$2 extends java.lang.Object implements android.widget.AdapterView$OnItemClickListener
+
+----------------FIELDS----------------
+
+final android.webkit.WebView$InvokeListBox this$1
+
+final android.app.AlertDialog val$dialog
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.WebView$InvokeListBox
+android.app.AlertDialog)
+
+public void onItemClick(
+android.widget.AdapterView
+android.view.View
+int
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =Container )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebView$InvokeListBox; )
+ class android.webkit.WebView$InvokeListBox$Container extends java.lang.Object
+
+----------------FIELDS----------------
+
+ boolean mEnabled
+
+ int mId
+
+ java.lang.String mString
+
+final android.webkit.WebView$InvokeListBox this$1
+----------------METHODS----------------
+
+private void <init>(
+android.webkit.WebView$InvokeListBox)
+
+ void <init>(
+android.webkit.WebView$InvokeListBox
+android.webkit.WebView$1)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Landroid/widget/BaseAdapter;Landroid/widget/Filterable; )
+@dalvik.annotation.MemberClasses (value =Landroid/widget/ArrayAdapter$1;Landroid/widget/ArrayAdapter$ArrayFilter; )
+public class android.widget.ArrayAdapter extends android.widget.BaseAdapter implements android.widget.Filterable
+
+----------------FIELDS----------------
+
+private android.content.Context mContext
+
+private int mDropDownResource
+
+private int mFieldId
+@dalvik.annotation.Signature (value =Landroid/widget/ArrayAdapter<TT;>.ArrayFilter; )
+private android.widget.ArrayAdapter$ArrayFilter mFilter
+
+private android.view.LayoutInflater mInflater
+
+private final java.lang.Object mLock
+
+private boolean mNotifyOnChange
+@dalvik.annotation.Signature (value =Ljava/util/List<TT;>; )
+private java.util.List mObjects
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<TT;>; )
+private java.util.ArrayList mOriginalValues
+
+private int mResource
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+int)
+
+public void <init>(
+android.content.Context
+int
+int)
+@dalvik.annotation.Signature (value =(Landroid/content/Context;IILjava/util/List<TT;>;)V )
+public void <init>(
+android.content.Context
+int
+int
+java.util.List)
+@dalvik.annotation.Signature (value =(Landroid/content/Context;II[TT;)V )
+public void <init>(
+android.content.Context
+int
+int
+java.lang.Object[])
+@dalvik.annotation.Signature (value =(Landroid/content/Context;ILjava/util/List<TT;>;)V )
+public void <init>(
+android.content.Context
+int
+java.util.List)
+@dalvik.annotation.Signature (value =(Landroid/content/Context;I[TT;)V )
+public void <init>(
+android.content.Context
+int
+java.lang.Object[])
+
+static java.util.ArrayList access$100(
+android.widget.ArrayAdapter)
+
+static java.util.ArrayList access$102(
+android.widget.ArrayAdapter
+java.util.ArrayList)
+
+static java.lang.Object access$200(
+android.widget.ArrayAdapter)
+
+static java.util.List access$300(
+android.widget.ArrayAdapter)
+
+static java.util.List access$302(
+android.widget.ArrayAdapter
+java.util.List)
+@dalvik.annotation.Signature (value =(Landroid/content/Context;II)Landroid/widget/ArrayAdapter<Ljava/lang/CharSequence;>; )
+public static android.widget.ArrayAdapter createFromResource(
+android.content.Context
+int
+int)
+
+private android.view.View createViewFromResource(
+int
+android.view.View
+android.view.ViewGroup
+int)
+@dalvik.annotation.Signature (value =(Landroid/content/Context;IILjava/util/List<TT;>;)V )
+private void init(
+android.content.Context
+int
+int
+java.util.List)
+@dalvik.annotation.Signature (value =(TT;)V )
+public void add(
+java.lang.Object)
+
+public void clear()
+
+public android.content.Context getContext()
+
+public int getCount()
+
+public android.view.View getDropDownView(
+int
+android.view.View
+android.view.ViewGroup)
+
+public android.widget.Filter getFilter()
+@dalvik.annotation.Signature (value =(I)TT; )
+public java.lang.Object getItem(
+int)
+
+public long getItemId(
+int)
+@dalvik.annotation.Signature (value =(TT;)I )
+public int getPosition(
+java.lang.Object)
+
+public android.view.View getView(
+int
+android.view.View
+android.view.ViewGroup)
+@dalvik.annotation.Signature (value =(TT;I)V )
+public void insert(
+java.lang.Object
+int)
+
+public void notifyDataSetChanged()
+@dalvik.annotation.Signature (value =(TT;)V )
+public void remove(
+java.lang.Object)
+
+public void setDropDownViewResource(
+int)
+
+public void setNotifyOnChange(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =MyArrayListAdapter )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebView$InvokeListBox; )
+@dalvik.annotation.Signature (value =Landroid/widget/ArrayAdapter<Landroid/webkit/WebView$InvokeListBox$Container;>; )
+ class android.webkit.WebView$InvokeListBox$MyArrayListAdapter extends android.widget.ArrayAdapter
+
+----------------FIELDS----------------
+
+final android.webkit.WebView$InvokeListBox this$1
+----------------METHODS----------------
+
+public void <init>(
+android.webkit.WebView$InvokeListBox
+android.content.Context
+android.webkit.WebView$InvokeListBox$Container[]
+boolean)
+
+private android.webkit.WebView$InvokeListBox$Container item(
+int)
+
+public boolean areAllItemsEnabled()
+
+public long getItemId(
+int)
+
+public boolean hasStableIds()
+
+public boolean isEnabled(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =InvokeListBox )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebView; )
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/WebView$InvokeListBox$MyArrayListAdapter;Landroid/webkit/WebView$InvokeListBox$Container; )
+ class android.webkit.WebView$InvokeListBox extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private java.lang.String[] mArray
+
+private android.webkit.WebView$InvokeListBox$Container[] mContainers
+
+private boolean[] mEnableArray
+
+private boolean mMultiple
+
+private int[] mSelectedArray
+
+private int mSelection
+
+final android.webkit.WebView this$0
+----------------METHODS----------------
+
+private void <init>(
+android.webkit.WebView
+java.lang.String[]
+boolean[]
+int)
+
+ void <init>(
+android.webkit.WebView
+java.lang.String[]
+boolean[]
+int
+android.webkit.WebView$1)
+
+private void <init>(
+android.webkit.WebView
+java.lang.String[]
+boolean[]
+int[])
+
+ void <init>(
+android.webkit.WebView
+java.lang.String[]
+boolean[]
+int[]
+android.webkit.WebView$1)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebView; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =PictureListener )
+public abstract interface class android.webkit.WebView$PictureListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onNewPicture(
+android.webkit.WebView
+android.graphics.Picture)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebView; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =PrivateHandler )
+ class android.webkit.WebView$PrivateHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.webkit.WebView this$0
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.WebView)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebView; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =UpdateTextEntryAdapter )
+ class android.webkit.WebView$UpdateTextEntryAdapter extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private java.lang.String mName
+
+private android.os.Message mUpdateMessage
+
+private java.lang.String mUrl
+
+final android.webkit.WebView this$0
+----------------METHODS----------------
+
+public void <init>(
+android.webkit.WebView
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1 name =WebViewTransport )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebView; )
+public class android.webkit.WebView$WebViewTransport extends java.lang.Object
+
+----------------FIELDS----------------
+
+private android.webkit.WebView mWebview
+
+final android.webkit.WebView this$0
+----------------METHODS----------------
+
+public void <init>(
+android.webkit.WebView)
+
+public android.webkit.WebView getWebView()
+
+public void setWebView(
+android.webkit.WebView)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/AbsoluteLayout$LayoutParams; )
+@android.widget.RemoteViews$RemoteView
+public class android.widget.AbsoluteLayout extends android.view.ViewGroup
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+protected boolean checkLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+protected android.view.ViewGroup$LayoutParams generateDefaultLayoutParams()
+
+public android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+protected android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+protected void onLayout(
+boolean
+int
+int
+int
+int)
+
+protected void onMeasure(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/WebView$InvokeListBox;Landroid/webkit/WebView$PrivateHandler;Landroid/webkit/WebView$UpdateTextEntryAdapter;Landroid/webkit/WebView$FocusNode;Landroid/webkit/WebView$HitTestResult;Landroid/webkit/WebView$PictureListener;Landroid/webkit/WebView$WebViewTransport;Landroid/webkit/WebView$ExtendedZoomControls; )
+public class android.webkit.WebView extends android.widget.AbsoluteLayout implements android.view.ViewTreeObserver$OnGlobalFocusChangeListener, android.view.ViewGroup$OnHierarchyChangeListener
+
+----------------FIELDS----------------
+
+static final boolean DEBUG
+
+private static final float DEFAULT_MAX_ZOOM_SCALE
+
+private static final float DEFAULT_MIN_ZOOM_SCALE
+
+static final int DID_FIRST_LAYOUT_MSG_ID
+
+private static final int DOUBLE_TAP_TIMEOUT
+
+private static final boolean ENABLE_COPY_PASTE
+
+private static final int FIRST_SCROLL_ZOOM
+
+private static final int LAST_SCROLL_ZOOM
+
+static final java.lang.String LOGTAG
+
+static final boolean LOGV_ENABLED
+
+private static final int LONG_PRESS_TIMEOUT
+
+static final int LONG_PRESS_TRACKBALL
+
+static final int MARK_NODE_INVALID_ID
+
+private static final int MAX_DURATION
+
+private static final float MAX_SLOPE_FOR_DIAG
+
+private static final int MIN_BREAK_SNAP_CROSS_DISTANCE
+
+private static final int MIN_FLING_TIME
+
+private static final int MIN_LOCK_SNAP_REVERSE_DISTANCE
+
+private static final int NEVER_REMEMBER_PASSWORD
+
+static final int NEW_PICTURE_MSG_ID
+
+static final int NOTIFY_FOCUS_SET_MSG_ID
+
+private static final int PAGE_SCROLL_OVERLAP
+
+static final int RECOMPUTE_FOCUS_MSG_ID
+
+private static final int RELEASE_SINGLE_TAP
+
+private static final int REMEMBER_PASSWORD
+
+private static final int RESUME_WEBCORE_UPDATE
+
+public static final java.lang.String SCHEME_GEO
+
+public static final java.lang.String SCHEME_MAILTO
+
+public static final java.lang.String SCHEME_TEL
+
+static final int SCROLL_BY_MSG_ID
+
+static final int SCROLL_TO_MSG_ID
+
+private static final int SCROLL_ZOOM_ANIMATION_IN
+
+private static final int SCROLL_ZOOM_ANIMATION_OUT
+
+private static final int SCROLL_ZOOM_DURATION
+
+private static final int SCROLL_ZOOM_FINGER_BUFFER
+
+private static final int SCROLL_ZOOM_GRID
+
+private static final int SCROLL_ZOOM_OUT
+
+private static final int SELECT_CURSOR_OFFSET
+
+private static final long SET_KIT_FOCUS_DELAY
+
+private static final int SNAP_NONE
+
+private static final int SNAP_X
+
+private static final int SNAP_X_LOCK
+
+private static final int SNAP_Y
+
+private static final int SNAP_Y_LOCK
+
+static final int SPAWN_SCROLL_TO_MSG_ID
+
+private static final int STD_SPEED
+
+private static final int SWITCH_TO_ENTER
+
+private static final int SWITCH_TO_LONGPRESS
+
+private static final int SWITCH_TO_SHORTPRESS
+
+static final int SYNC_SCROLL_TO_MSG_ID
+
+private static final int TAP_TIMEOUT
+
+private static final int TOUCH_DONE_MODE
+
+private static final int TOUCH_DOUBLECLICK_MODE
+
+private static final int TOUCH_DRAG_MODE
+
+private static final int TOUCH_DRAG_START_MODE
+
+private static final int TOUCH_INIT_MODE
+
+private static final int TOUCH_SHORTPRESS_MODE
+
+private static final int TOUCH_SHORTPRESS_START_MODE
+
+private static final int TOUCH_SLOP_SQUARE
+
+private static final int TRACKBALL_KEY_TIMEOUT
+
+private static final int TRACKBALL_MULTIPLIER
+
+private static final int TRACKBALL_SCALE
+
+private static final int TRACKBALL_SCROLL_COUNT
+
+private static final int TRACKBALL_TIMEOUT
+
+private static final int TRACKBALL_WAIT
+
+static final int UPDATE_CLIPBOARD
+
+static final int UPDATE_TEXTFIELD_TEXT_MSG_ID
+
+private static final int UPDATE_TEXT_ENTRY_ADAPTER
+
+static final int UPDATE_TEXT_ENTRY_MSG_ID
+
+static final int WEBCORE_INITIALIZED_MSG_ID
+
+private static final int ZOOM_ANIMATION_LENGTH
+
+private static final long ZOOM_CONTROLS_TIMEOUT
+
+static final int ZOOM_OUT_WIDTH
+
+private static android.webkit.PluginList sPluginList
+
+private float mActualScale
+
+private boolean mAltIsPressed
+
+private int mBackgroundColor
+
+private final android.webkit.CallbackProxy mCallbackProxy
+
+private android.net.http.SslCertificate mCertificate
+
+private int mContentHeight
+
+private int mContentWidth
+
+private final android.webkit.WebViewDatabase mDatabase
+
+private long mDownTime
+
+private boolean mDrawFocusRing
+
+private boolean mDrawHistory
+
+private boolean mExtendSelection
+
+private android.webkit.WebViewCore$FocusData mFocusData
+
+private android.webkit.WebView$FocusNode mFocusNode
+
+private boolean mGlobalFocusChangeListenerAdded
+
+private boolean mGotDown
+
+private boolean mGotKeyDown
+
+ boolean mHeightCanMeasure
+
+private int mHistoryHeight
+
+private android.graphics.Picture mHistoryPicture
+
+private int mHistoryWidth
+
+private int mInitialScale
+
+private float mInvActualScale
+
+private float mInvFinalZoomScale
+
+private float mInvInitialZoomScale
+
+private android.graphics.Rect mLastFocusBounds
+
+private long mLastFocusTime
+
+ int mLastHeightSent
+
+private int mLastScrollX
+
+private int mLastScrollY
+
+private long mLastTouchTime
+
+private float mLastTouchX
+
+private float mLastTouchY
+
+private android.graphics.Rect mLastVisibleRectSent
+
+ int mLastWidthSent
+
+private float mLastZoomScrollRawX
+
+private float mLastZoomScrollRawY
+
+private boolean mMapTrackballToArrowKeys
+
+private float mMaxZoomScale
+
+private float mMinZoomScale
+
+private int mNativeClass
+
+private boolean mNeedsUpdateTextEntry
+
+private boolean mOverlayHorizontalScrollbar
+
+private boolean mOverlayVerticalScrollbar
+
+private android.webkit.WebView$PictureListener mPictureListener
+
+final android.os.Handler mPrivateHandler
+
+private android.widget.Scroller mScroller
+
+private int mSelectX
+
+private int mSelectY
+
+private boolean mShiftIsPressed
+
+private boolean mSnapPositive
+
+private int mSnapScrollMode
+
+private android.webkit.TextDialog mTextEntry
+
+private int mTextGeneration
+
+private int mTouchMode
+
+private boolean mTrackTrackball
+
+private boolean mTrackballDown
+
+private long mTrackballFirstTime
+
+private long mTrackballLastTime
+
+private float mTrackballRemainsX
+
+private float mTrackballRemainsY
+
+private long mTrackballUpTime
+
+private int mTrackballXMove
+
+private int mTrackballYMove
+
+private boolean mUserScroll
+
+ android.view.VelocityTracker mVelocityTracker
+
+private android.webkit.WebViewCore mWebViewCore
+
+ boolean mWidthCanMeasure
+
+private boolean mWrapContent
+
+private java.lang.Runnable mZoomControlRunnable
+
+private android.webkit.WebView$ExtendedZoomControls mZoomControls
+
+private float mZoomScale
+
+private float mZoomScrollInvLimit
+
+private float mZoomScrollLimit
+
+private long mZoomScrollStart
+
+private int mZoomScrollX
+
+private int mZoomScrollY
+
+private long mZoomStart
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static void access$1000(
+android.webkit.WebView)
+
+static void access$1100(
+android.webkit.WebView)
+
+static void access$1200(
+android.webkit.WebView)
+
+static void access$1300(
+android.webkit.WebView
+int
+int)
+
+static boolean access$1400(
+android.webkit.WebView)
+
+static boolean access$1402(
+android.webkit.WebView
+boolean)
+
+static boolean access$1500(
+android.webkit.WebView
+int
+int)
+
+static android.webkit.WebViewCore access$1600(
+android.webkit.WebView)
+
+static void access$1700(
+android.webkit.WebView
+int
+int)
+
+static float access$1800(
+android.webkit.WebView)
+
+static float access$1802(
+android.webkit.WebView
+float)
+
+static int access$1900(
+android.webkit.WebView)
+
+static void access$2000(
+android.webkit.WebView
+int
+int
+boolean)
+
+static android.webkit.WebView$PictureListener access$2100(
+android.webkit.WebView)
+
+static void access$2200(
+android.webkit.WebView
+int)
+
+static boolean access$2300(
+android.webkit.WebView)
+
+static android.webkit.TextDialog access$2400(
+android.webkit.WebView)
+
+static int access$2500(
+android.webkit.WebView)
+
+static int access$2600(
+android.webkit.WebView)
+
+static float access$2702(
+android.webkit.WebView
+float)
+
+static float access$2802(
+android.webkit.WebView
+float)
+
+static boolean access$2900(
+android.webkit.WebView)
+
+static android.webkit.WebViewDatabase access$300(
+android.webkit.WebView)
+
+static int access$3000(
+android.webkit.WebView)
+
+static void access$3100(
+android.webkit.WebView
+float
+boolean)
+
+static void access$3200(
+android.webkit.WebView
+int)
+
+static void access$3300(
+android.webkit.WebView
+boolean)
+
+static void access$3400(
+android.webkit.WebView)
+
+static boolean access$3502(
+android.webkit.WebView
+boolean)
+
+static boolean access$3602(
+android.webkit.WebView
+boolean)
+
+static android.content.Context access$3800(
+android.webkit.WebView)
+
+static android.content.Context access$3900(
+android.webkit.WebView)
+
+static android.content.Context access$400(
+android.webkit.WebView)
+
+static android.content.Context access$4000(
+android.webkit.WebView)
+
+static android.webkit.WebView$ExtendedZoomControls access$500(
+android.webkit.WebView)
+
+static java.lang.Runnable access$600(
+android.webkit.WebView)
+
+static long access$700()
+
+static void access$800(
+android.webkit.WebView)
+
+static int access$900(
+android.webkit.WebView)
+
+static int access$902(
+android.webkit.WebView
+int)
+
+private void calcOurContentVisibleRect(
+android.graphics.Rect)
+
+private void calcOurVisibleRect(
+android.graphics.Rect)
+
+private boolean canZoomScrollOut()
+
+private void clearMatches()
+
+private void clearTextEntry()
+
+private static int computeDuration(
+int
+int)
+
+private void contentSizeChanged(
+boolean)
+
+private int contentToView(
+int)
+
+private android.webkit.WebView$ExtendedZoomControls createZoomControls()
+
+public static void disablePlatformNotifications()
+
+private void doFling()
+
+private void doShortPress()
+
+private void doTrackball(
+long)
+
+private void drawCoreAndFocusRing(
+android.graphics.Canvas
+int
+boolean)
+
+private void drawMagnifyFrame(
+android.graphics.Canvas
+android.graphics.Rect
+android.graphics.Paint)
+
+public static void enablePlatformNotifications()
+
+private boolean extendScroll(
+int)
+
+public static java.lang.String findAddress(
+java.lang.String)
+
+private void findAll(
+java.lang.String
+android.os.Message)
+
+private void findFirst(
+java.lang.String
+android.os.Message)
+
+private void findNext(
+java.lang.String
+android.os.Message)
+
+private void findPrevious(
+java.lang.String
+android.os.Message)
+
+public static android.webkit.PluginList getPluginList()
+
+private int getScaledMaxXScroll()
+
+private int getScaledMaxYScroll()
+
+private int getViewHeight()
+
+private int getViewWidth()
+
+private void goBackOrForward(
+int
+boolean)
+
+private boolean inEditingMode()
+
+private void init()
+
+private int keyCodeToSoundsEffect(
+int)
+
+private void moveZoomScrollWindow(
+float
+float)
+
+private native void nativeClearFocus(
+int
+int)
+
+private native void nativeCreate(
+int)
+
+private native void nativeDebugDump()
+
+private native void nativeDestroy()
+
+private native void nativeDrawFocusRing(
+android.graphics.Canvas)
+
+private native void nativeDrawSelection(
+android.graphics.Canvas
+int
+int
+boolean)
+
+private native android.graphics.Rect nativeGetFocusRingBounds()
+
+private native android.graphics.Rect nativeGetNavBounds()
+
+private native android.graphics.Region nativeGetSelection()
+
+private native boolean nativeHasSrcUrl()
+
+private native boolean nativeIsImage(
+int
+int)
+
+private native void nativeMarkNodeInvalid(
+int)
+
+private native void nativeMotionUp(
+int
+int
+int
+boolean)
+
+private native boolean nativeMoveFocus(
+int
+int
+boolean)
+
+private native void nativeMoveSelection(
+int
+int
+boolean)
+
+private native void nativeNotifyFocusSet(
+boolean)
+
+private native void nativeRecomputeFocus()
+
+private native void nativeRecordButtons()
+
+private native void nativeResetFocus()
+
+private native void nativeResetNavClipBounds()
+
+private native void nativeSelectBestAt(
+android.graphics.Rect)
+
+private native void nativeSetFollowedLink(
+boolean)
+
+private native void nativeSetHeightCanMeasure(
+boolean)
+
+private native void nativeSetNavBounds(
+android.graphics.Rect)
+
+private native void nativeSetNavClipBounds(
+android.graphics.Rect)
+
+private native void nativeUpdateCachedTextfield(
+java.lang.String
+int)
+
+private native boolean nativeUpdateFocusNode()
+
+private boolean navHandledKey(
+int
+int
+boolean
+long)
+
+private static int pinLoc(
+int
+int
+int)
+
+private int pinLocX(
+int)
+
+private int pinLocY(
+int)
+
+private boolean pinScrollBy(
+int
+int
+boolean)
+
+private boolean pinScrollTo(
+int
+int
+boolean)
+
+private void recordNewContentSize(
+int
+int
+boolean)
+
+private int scaleTrackballX(
+float
+int)
+
+private int scaleTrackballY(
+float
+int)
+
+private void scrollZoomDraw(
+android.graphics.Canvas)
+
+private android.graphics.Rect scrollZoomFrame(
+int
+int
+float)
+
+private float scrollZoomGridScale(
+float)
+
+private float scrollZoomMagScale(
+float)
+
+private float scrollZoomX(
+float)
+
+private float scrollZoomY(
+float)
+
+private void sendFinalFocus(
+int
+int
+int
+int)
+
+private void sendKitFocus()
+
+private void sendMotionUp(
+int
+int
+int
+int
+int
+int
+int
+boolean
+boolean)
+
+private android.graphics.Rect sendOurVisibleRect()
+
+private boolean sendViewSizeZoom()
+
+private void setContentScrollBy(
+int
+int)
+
+private boolean setContentScrollTo(
+int
+int)
+
+private void setFocusData(
+int
+int
+int
+int
+int
+int
+boolean)
+
+private void setNewZoomScale(
+float
+boolean)
+
+private void setTextEntryRect(
+int
+int
+int
+int)
+
+private void setZoomScrollIn()
+
+private void spawnContentScrollTo(
+int
+int)
+
+private void startZoomScrollOut()
+
+private void updateSelection()
+
+private void updateTextEntry()
+
+private void viewInvalidate()
+
+private void zoomScrollOut()
+
+private void zoomScrollTap(
+float
+float)
+
+private boolean zoomWithPreview(
+float)
+
+public void addJavascriptInterface(
+java.lang.Object
+java.lang.String)
+
+public boolean canGoBack()
+
+public boolean canGoBackOrForward(
+int)
+
+public boolean canGoForward()
+
+public android.graphics.Picture capturePicture()
+
+public void clearCache(
+boolean)
+
+public void clearFormData()
+
+public void clearHistory()
+
+public void clearSslPreferences()
+
+public void clearView()
+
+protected int computeHorizontalScrollRange()
+
+public void computeScroll()
+
+protected int computeVerticalScrollRange()
+
+public android.webkit.WebBackForwardList copyBackForwardList()
+
+public void debugDump()
+
+ void deleteSelection(
+int
+int)
+
+public void destroy()
+
+public boolean dispatchKeyEvent(
+android.view.KeyEvent)
+
+public void documentAsText(
+android.os.Message)
+
+public void documentHasImages(
+android.os.Message)
+
+ boolean drawHistory()
+
+public void externalRepresentation(
+android.os.Message)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public void flingScroll(
+int
+int)
+
+public android.net.http.SslCertificate getCertificate()
+
+public int getContentHeight()
+
+public android.graphics.Bitmap getFavicon()
+
+public android.webkit.WebView$HitTestResult getHitTestResult()
+
+public java.lang.String[] getHttpAuthUsernamePassword(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getOriginalUrl()
+
+public int getProgress()
+
+public float getScale()
+
+public android.webkit.WebSettings getSettings()
+
+public java.lang.String getTitle()
+
+public java.lang.String getUrl()
+
+ android.webkit.WebViewCore getWebViewCore()
+
+public android.view.View getZoomControls()
+
+public void goBack()
+
+public void goBackOrForward(
+int)
+
+public void goForward()
+
+public void invokeZoomPicker()
+
+public void loadData(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public void loadDataWithBaseURL(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public void loadUrl(
+java.lang.String)
+
+ void moveSelection(
+float
+float)
+
+protected void onAttachedToWindow()
+
+public void onChildViewAdded(
+android.view.View
+android.view.View)
+
+public void onChildViewRemoved(
+android.view.View
+android.view.View)
+
+protected void onDetachedFromWindow()
+
+protected void onDraw(
+android.graphics.Canvas)
+
+protected void onFocusChanged(
+boolean
+int
+android.graphics.Rect)
+
+public void onGlobalFocusChanged(
+android.view.View
+android.view.View)
+
+public boolean onKeyDown(
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+int
+android.view.KeyEvent)
+
+protected void onMeasure(
+int
+int)
+
+ boolean onSavePassword(
+java.lang.String
+java.lang.String
+java.lang.String
+android.os.Message)
+
+protected void onScrollChanged(
+int
+int
+int
+int)
+
+protected void onSizeChanged(
+int
+int
+int
+int)
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+public boolean onTrackballEvent(
+android.view.MotionEvent)
+
+public void onWindowFocusChanged(
+boolean)
+
+public boolean overlayHorizontalScrollbar()
+
+public boolean overlayVerticalScrollbar()
+
+public boolean pageDown(
+boolean)
+
+public boolean pageUp(
+boolean)
+
+ void passToJavaScript(
+java.lang.String
+android.view.KeyEvent)
+
+public void pauseTimers()
+
+public boolean performLongClick()
+
+public void refreshPlugins(
+boolean)
+
+public void reload()
+
+ void replaceTextfieldText(
+int
+int
+java.lang.String
+int
+int)
+
+public boolean requestChildRectangleOnScreen(
+android.view.View
+android.graphics.Rect
+boolean)
+
+public boolean requestFocus(
+int
+android.graphics.Rect)
+
+public void requestFocusNodeHref(
+android.os.Message)
+
+public void requestImageRef(
+android.os.Message)
+
+ void requestListBox(
+java.lang.String[]
+boolean[]
+int)
+
+ void requestListBox(
+java.lang.String[]
+boolean[]
+int[])
+
+ void resetTrackballTime()
+
+public android.webkit.WebBackForwardList restoreState(
+android.os.Bundle)
+
+public void resumeTimers()
+
+public void savePassword(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public android.webkit.WebBackForwardList saveState(
+android.os.Bundle)
+
+public void setBackgroundColor(
+int)
+
+public void setCertificate(
+android.net.http.SslCertificate)
+
+public void setDownloadListener(
+android.webkit.DownloadListener)
+
+public void setHorizontalScrollbarOverlay(
+boolean)
+
+public void setHttpAuthUsernamePassword(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public void setInitialScale(
+int)
+
+public void setLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+public void setMapTrackballToArrowKeys(
+boolean)
+
+public void setPictureListener(
+android.webkit.WebView$PictureListener)
+
+public void setScrollBarStyle(
+int)
+
+ void setSelection(
+int
+int)
+
+public void setVerticalScrollbarOverlay(
+boolean)
+
+public void setWebChromeClient(
+android.webkit.WebChromeClient)
+
+public void setWebViewClient(
+android.webkit.WebViewClient)
+
+ void shortPressOnTextField()
+
+public void stopLoading()
+
+ void switchOutDrawHistory()
+
+ void updateCachedTextfield(
+java.lang.String)
+
+ int viewToContent(
+int)
+
+public boolean zoomIn()
+
+public boolean zoomOut()
+
+________________CLASS________________
+
+
+public class android.webkit.WebViewClient extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void doUpdateVisitedHistory(
+android.webkit.WebView
+java.lang.String
+boolean)
+
+public void onFormResubmission(
+android.webkit.WebView
+android.os.Message
+android.os.Message)
+
+public void onLoadResource(
+android.webkit.WebView
+java.lang.String)
+
+public void onPageFinished(
+android.webkit.WebView
+java.lang.String)
+
+public void onPageStarted(
+android.webkit.WebView
+java.lang.String
+android.graphics.Bitmap)
+
+public void onReceivedError(
+android.webkit.WebView
+int
+java.lang.String
+java.lang.String)
+
+public void onReceivedHttpAuthRequest(
+android.webkit.WebView
+android.webkit.HttpAuthHandler
+java.lang.String
+java.lang.String)
+
+public void onReceivedSslError(
+android.webkit.WebView
+android.webkit.SslErrorHandler
+android.net.http.SslError)
+
+public void onScaleChanged(
+android.webkit.WebView
+float
+float)
+
+public void onTooManyRedirects(
+android.webkit.WebView
+android.os.Message
+android.os.Message)
+
+public void onUnhandledKeyEvent(
+android.webkit.WebView
+android.view.KeyEvent)
+
+public boolean shouldOverrideKeyEvent(
+android.webkit.WebView
+android.view.KeyEvent)
+
+public boolean shouldOverrideUrlLoading(
+android.webkit.WebView
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebViewCore; )
+ class android.webkit.WebViewCore$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.webkit.WebViewCore$EventHub$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.webkit.WebViewCore$EventHub this$1
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.WebViewCore$EventHub)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebViewCore; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =EventHub )
+ class android.webkit.WebViewCore$EventHub extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int ADD_JS_INTERFACE
+
+static final int BLOCK_FOCUS_CHANGE_UNTIL_KEY_UP
+
+static final int CLEAR_CACHE
+
+static final int CLEAR_HISTORY
+
+static final int CLEAR_MATCHES
+
+static final int CLEAR_SSL_PREF_TABLE
+
+static final int DELETE_SELECTION
+
+private static final int DESTROY
+
+static final int DOC_HAS_IMAGES
+
+static final int DUMP_WEBKIT
+
+static final int FIND
+
+static final int FIND_ALL
+
+static final int GET_SELECTION
+
+static final int GO_BACK_FORWARD
+
+static final int KEY_DOWN
+
+static final int KEY_UP
+
+static final int LISTBOX_CHOICES
+
+static final int LOAD_DATA
+
+static final int LOAD_URL
+
+static final int NO_FOCUS_CHANGE_BLOCK
+
+static final int PASS_TO_JS
+
+static final int PAUSE_TIMERS
+
+static final int REFRESH_PLUGINS
+
+static final int RELOAD
+
+static final int REPLACE_TEXT
+
+static final int REQUEST_DOC_AS_TEXT
+
+static final int REQUEST_EXT_REPRESENTATION
+
+static final int REQUEST_FOCUS_HREF
+
+static final int REQUEST_IMAGE_HREF
+
+static final int RESTORE_STATE
+
+static final int RESUME_TIMERS
+
+static final int SAVE_DOCUMENT_STATE
+
+static final int SET_BACKGROUND_COLOR
+
+static final int SET_FINAL_FOCUS
+
+static final int SET_KIT_FOCUS
+
+static final int SET_SELECTION
+
+static final int SET_SNAP_ANCHOR
+
+static final int SET_VISIBLE_RECT
+
+static final int SINGLE_LISTBOX_CHOICE
+
+static final int STOP_LOADING
+
+static final int SYNC_SCROLL
+
+static final int TOUCH_UP
+
+static final int UNBLOCK_FOCUS
+
+static final int UPDATE_CACHE_AND_TEXT_ENTRY
+
+static final int VIEW_SIZE_CHANGED
+
+static final int WEBKIT_DRAW
+
+private boolean mBlockMessages
+
+private android.os.Handler mHandler
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/os/Message;>; )
+private java.util.ArrayList mMessages
+
+private int mSavedPriority
+
+private int mTid
+
+final android.webkit.WebViewCore this$0
+----------------METHODS----------------
+
+private void <init>(
+android.webkit.WebViewCore)
+
+ void <init>(
+android.webkit.WebViewCore
+android.webkit.WebViewCore$1)
+
+static int access$1500(
+android.webkit.WebViewCore$EventHub)
+
+static int access$1502(
+android.webkit.WebViewCore$EventHub
+int)
+
+static int access$1600(
+android.webkit.WebViewCore$EventHub)
+
+static void access$200(
+android.webkit.WebViewCore$EventHub)
+
+static void access$4700(
+android.webkit.WebViewCore$EventHub
+android.os.Message)
+
+static void access$4800(
+android.webkit.WebViewCore$EventHub
+android.os.Message
+long)
+
+static void access$4900(
+android.webkit.WebViewCore$EventHub
+int)
+
+static void access$5000(
+android.webkit.WebViewCore$EventHub)
+
+static void access$5100(
+android.webkit.WebViewCore$EventHub
+android.os.Message)
+
+static void access$5200(
+android.webkit.WebViewCore$EventHub)
+
+private void blockMessages()
+
+private void removeMessages()
+
+private void removeMessages(
+int)
+
+private void sendMessage(
+android.os.Message)
+
+private void sendMessageAtFrontOfQueue(
+android.os.Message)
+
+private void sendMessageDelayed(
+android.os.Message
+long)
+
+private void transferMessages()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =FocusData )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebViewCore; )
+ class android.webkit.WebViewCore$FocusData extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int mBuildGeneration
+
+ int mFrame
+
+ boolean mIgnoreNullFocus
+
+ int mMoveGeneration
+
+ int mNode
+
+ int mX
+
+ int mY
+----------------METHODS----------------
+
+ void <init>()
+
+ void <init>(
+android.webkit.WebViewCore$FocusData)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebViewCore; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =TouchUpData )
+ class android.webkit.WebViewCore$TouchUpData extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int mBuildGeneration
+
+ int mFrame
+
+ boolean mIsClick
+
+ int mMoveGeneration
+
+ int mNode
+
+ boolean mRetry
+
+ int mSize
+
+ int mX
+
+ int mY
+----------------METHODS----------------
+
+ void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.webkit.WebViewCore$WebCoreThread$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.webkit.WebViewCore$WebCoreThread this$0
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.WebViewCore$WebCoreThread)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/WebViewCore; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =WebCoreThread )
+ class android.webkit.WebViewCore$WebCoreThread extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private static final int BLOCK_CACHE_TICKER
+
+private static final int CACHE_TICKER
+
+private static final int CACHE_TICKER_INTERVAL
+
+private static final int INITIALIZE
+
+private static final int REDUCE_PRIORITY
+
+private static final int RESUME_CACHE_TICKER
+
+private static final int RESUME_PRIORITY
+
+private static boolean mCacheTickersBlocked
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+ void <init>(
+android.webkit.WebViewCore$1)
+
+static boolean access$500()
+
+static boolean access$502(
+boolean)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/WebViewCore$1;Landroid/webkit/WebViewCore$EventHub;Landroid/webkit/WebViewCore$TouchUpData;Landroid/webkit/WebViewCore$FocusData;Landroid/webkit/WebViewCore$WebCoreThread; )
+final class android.webkit.WebViewCore extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final boolean DEBUG
+
+private static final java.lang.String LOGTAG
+
+static final boolean LOGV_ENABLED
+
+static final int SCROLL_BITS
+
+static final java.lang.String THREAD_NAME
+
+static final int ZOOM_BITS
+
+private static android.os.Handler sWebCoreHandler
+
+private android.webkit.BrowserFrame mBrowserFrame
+
+private final android.webkit.CallbackProxy mCallbackProxy
+
+private android.graphics.Picture mContentPictureA
+
+private android.graphics.Picture mContentPictureB
+
+private final android.content.Context mContext
+
+private int mCurrentViewHeight
+
+private int mCurrentViewWidth
+
+private boolean mDrawIsScheduled
+
+ boolean mEndScaleZoom
+
+private final android.webkit.WebViewCore$EventHub mEventHub
+
+private int mNativeClass
+
+private java.lang.Object mPictureSync
+
+private int mRestoredScale
+
+private int mRestoredX
+
+private int mRestoredY
+
+final android.graphics.DrawFilter mScrollFilter
+
+private final android.webkit.WebSettings mSettings
+
+private int mViewportHeight
+
+private int mViewportInitialScale
+
+private int mViewportMaximumScale
+
+private int mViewportMinimumScale
+
+private boolean mViewportUserScalable
+
+private int mViewportWidth
+
+private android.webkit.WebView mWebView
+
+private int mWebkitScrollX
+
+private int mWebkitScrollY
+
+final android.graphics.DrawFilter mZoomFilter
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context
+android.webkit.WebView
+android.webkit.CallbackProxy)
+
+static void access$1000(
+android.webkit.WebViewCore
+int
+android.view.KeyEvent)
+
+static void access$1100(
+android.webkit.WebViewCore
+int
+android.view.KeyEvent)
+
+static void access$1200(
+android.webkit.WebViewCore
+int
+int
+float)
+
+static void access$1300(
+android.webkit.WebViewCore
+int
+int
+int
+int)
+
+static void access$1400(
+android.webkit.WebViewCore
+int)
+
+static android.webkit.CallbackProxy access$1700(
+android.webkit.WebViewCore)
+
+static void access$1800(
+android.webkit.WebViewCore
+int
+int
+int
+int
+int
+int
+java.lang.String
+int
+int)
+
+static void access$1900(
+android.webkit.WebViewCore
+int
+int
+int
+int
+int
+java.lang.String
+int
+int
+boolean
+boolean
+boolean
+boolean)
+
+static void access$2000(
+android.webkit.WebViewCore
+int
+int
+int
+int)
+
+static boolean access$2100(
+android.webkit.WebViewCore
+java.lang.String
+boolean
+boolean)
+
+static int access$2200(
+android.webkit.WebViewCore
+java.lang.String)
+
+static void access$2300(
+android.webkit.WebViewCore)
+
+static android.content.Context access$2400(
+android.webkit.WebViewCore)
+
+static void access$2500(
+android.webkit.WebViewCore
+int
+int
+int
+int
+int
+int
+int
+boolean
+boolean)
+
+static void access$2600(
+android.webkit.WebViewCore
+int
+int
+int
+int
+boolean)
+
+static void access$2700(
+android.webkit.WebViewCore)
+
+static void access$2800(
+android.webkit.WebViewCore
+int
+int
+int
+int
+int
+int
+boolean)
+
+static java.lang.String access$2900(
+android.webkit.WebViewCore
+int
+int)
+
+static android.os.Handler access$300()
+
+static java.lang.String access$3000(
+android.webkit.WebViewCore
+int
+int)
+
+static android.os.Handler access$302(
+android.os.Handler)
+
+static void access$3100(
+android.webkit.WebViewCore)
+
+static void access$3200(
+android.webkit.WebViewCore)
+
+static void access$3300(
+android.webkit.WebViewCore)
+
+static void access$3400(
+android.webkit.WebViewCore
+int
+int)
+
+static void access$3500(
+android.webkit.WebViewCore
+int
+int
+int
+int
+int
+int)
+
+static void access$3600(
+android.webkit.WebViewCore
+int
+int
+int
+int
+int
+int)
+
+static void access$3700(
+android.webkit.WebViewCore
+boolean[]
+int)
+
+static void access$3800(
+android.webkit.WebViewCore
+int)
+
+static void access$3900(
+android.webkit.WebViewCore
+int)
+
+static void access$400(
+android.webkit.WebViewCore)
+
+static java.lang.String access$4000(
+android.webkit.WebViewCore
+android.graphics.Region)
+
+static android.webkit.WebView access$4100(
+android.webkit.WebViewCore)
+
+static void access$4200(
+android.webkit.WebViewCore)
+
+static int access$4302(
+android.webkit.WebViewCore
+int)
+
+static int access$4402(
+android.webkit.WebViewCore
+int)
+
+static void access$4500(
+android.webkit.WebViewCore
+boolean)
+
+static boolean access$4602(
+android.webkit.WebViewCore
+boolean)
+
+static void access$600(
+android.webkit.WebViewCore)
+
+static android.webkit.BrowserFrame access$700(
+android.webkit.WebViewCore)
+
+static android.webkit.BrowserFrame access$702(
+android.webkit.WebViewCore
+android.webkit.BrowserFrame)
+
+static int access$802(
+android.webkit.WebViewCore
+int)
+
+static void access$900(
+android.webkit.WebViewCore
+java.lang.String)
+
+private void contentScrollBy(
+int
+int)
+
+private void contentScrollTo(
+int
+int)
+
+private void contentSpawnScrollTo(
+int
+int)
+
+private void didFirstLayout(
+java.lang.String)
+
+static void endCacheTransaction()
+
+private void initialize()
+
+private void keyDown(
+int
+android.view.KeyEvent)
+
+private void keyUp(
+int
+android.view.KeyEvent)
+
+private void loadUrl(
+java.lang.String)
+
+private native void nativeClearMatches()
+
+private native void nativeDeleteSelection(
+int
+int
+int
+int
+int
+int)
+
+private native void nativeDraw(
+android.graphics.Picture)
+
+private native void nativeDump()
+
+private native boolean nativeFind(
+java.lang.String
+boolean
+boolean)
+
+static native java.lang.String nativeFindAddress(
+java.lang.String)
+
+private native int nativeFindAll(
+java.lang.String)
+
+private native int nativeGetContentMinPrefWidth()
+
+private native java.lang.String nativeGetSelection(
+android.graphics.Region)
+
+private native boolean nativeKeyUp(
+int
+int)
+
+private native void nativeRefreshPlugins(
+boolean)
+
+private native void nativeReplaceTextfieldText(
+int
+int
+int
+int
+int
+int
+java.lang.String
+int
+int)
+
+private native java.lang.String nativeRetrieveHref(
+int
+int)
+
+private native java.lang.String nativeRetrieveImageRef(
+int
+int)
+
+private native void nativeSaveDocumentState(
+int
+int
+int
+int)
+
+private native void nativeSendListBoxChoice(
+int)
+
+private native void nativeSendListBoxChoices(
+boolean[]
+int)
+
+private native void nativeSetBackgroundColor(
+int)
+
+private native void nativeSetFinalFocus(
+int
+int
+int
+int
+boolean)
+
+private native void nativeSetKitFocus(
+int
+int
+int
+int
+int
+int
+boolean)
+
+private native void nativeSetSelection(
+int
+int
+int
+int
+int
+int)
+
+private native void nativeSetSize(
+int
+int
+int
+float)
+
+private native void nativeSetSnapAnchor(
+int
+int)
+
+private native void nativeSetVisibleRect(
+int
+int
+int
+int)
+
+private native void nativeSnapToAnchor()
+
+private native void nativeTouchUp(
+int
+int
+int
+int
+int
+int
+int
+boolean
+boolean)
+
+private native void nativeUnblockFocus()
+
+private native void nativeUpdateFrameCache()
+
+private native void passToJs(
+int
+int
+int
+int
+int
+java.lang.String
+int
+int
+boolean
+boolean
+boolean
+boolean)
+
+public static void pauseTimers()
+
+static void pauseUpdate(
+android.webkit.WebViewCore)
+
+private void requestListBox(
+java.lang.String[]
+boolean[]
+int)
+
+private void requestListBox(
+java.lang.String[]
+boolean[]
+int[])
+
+private void restoreScale(
+int)
+
+private void restoreState(
+int)
+
+public static void resumeTimers()
+
+static void resumeUpdate(
+android.webkit.WebViewCore)
+
+private void sendMarkNodeInvalid(
+int)
+
+private void sendNotifyFocusSet()
+
+private void sendNotifyProgressFinished()
+
+private void sendRecomputeFocus()
+
+private void sendUpdateTextEntry()
+
+private void sendViewInvalidate()
+
+private native void setViewportSettingsFromNative()
+
+static void startCacheTransaction()
+
+private void updateTextfield(
+int
+boolean
+java.lang.String
+int)
+
+private void viewSizeChanged(
+int
+int
+float)
+
+private void webkitDraw()
+
+ void clearContentPicture()
+
+ void contentInvalidate()
+
+ android.graphics.Picture copyContentPicture()
+
+ void destroy()
+
+ void drawContentPicture(
+android.graphics.Canvas
+int
+boolean
+boolean)
+
+ android.webkit.BrowserFrame getBrowserFrame()
+
+public android.webkit.WebSettings getSettings()
+
+ android.webkit.WebView getWebView()
+
+ void initializeSubwindow()
+
+protected void jsAlert(
+java.lang.String
+java.lang.String)
+
+protected boolean jsConfirm(
+java.lang.String
+java.lang.String)
+
+protected java.lang.String jsPrompt(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+protected boolean jsUnload(
+java.lang.String
+java.lang.String)
+
+ void removeMessages()
+
+ void removeMessages(
+int)
+
+ void sendMessage(
+int)
+
+ void sendMessage(
+int
+int)
+
+ void sendMessage(
+int
+int
+int)
+
+ void sendMessage(
+int
+int
+int
+java.lang.Object)
+
+ void sendMessage(
+int
+int
+java.lang.Object)
+
+ void sendMessage(
+int
+java.lang.Object)
+
+ void sendMessage(
+android.os.Message)
+
+ void sendMessageDelayed(
+int
+java.lang.Object
+long)
+
+ void stopLoading()
+
+________________CLASS________________
+
+
+public class android.webkit.WebViewDatabase extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String CACHE_CONTENTLENGTH_COL
+
+private static final java.lang.String CACHE_DATABASE_FILE
+
+private static final int CACHE_DATABASE_VERSION
+
+private static final java.lang.String CACHE_ENCODING_COL
+
+private static final java.lang.String CACHE_ETAG_COL
+
+private static final java.lang.String CACHE_EXPIRES_COL
+
+private static final java.lang.String CACHE_FILE_PATH_COL
+
+private static final java.lang.String CACHE_HTTP_STATUS_COL
+
+private static final java.lang.String CACHE_LAST_MODIFY_COL
+
+private static final java.lang.String CACHE_LOCATION_COL
+
+private static final java.lang.String CACHE_MIMETYPE_COL
+
+private static final java.lang.String CACHE_URL_COL
+
+private static final java.lang.String COOKIES_DOMAIN_COL
+
+private static final java.lang.String COOKIES_EXPIRES_COL
+
+private static final java.lang.String COOKIES_NAME_COL
+
+private static final java.lang.String COOKIES_PATH_COL
+
+private static final java.lang.String COOKIES_SECURE_COL
+
+private static final java.lang.String COOKIES_VALUE_COL
+
+private static final java.lang.String DATABASE_FILE
+
+private static final int DATABASE_VERSION
+
+private static final java.lang.String FORMDATA_NAME_COL
+
+private static final java.lang.String FORMDATA_URLID_COL
+
+private static final java.lang.String FORMDATA_VALUE_COL
+
+private static final java.lang.String FORMURL_URL_COL
+
+private static final java.lang.String HTTPAUTH_HOST_COL
+
+private static final java.lang.String HTTPAUTH_PASSWORD_COL
+
+private static final java.lang.String HTTPAUTH_REALM_COL
+
+private static final java.lang.String HTTPAUTH_USERNAME_COL
+
+private static final java.lang.String ID_COL
+
+private static final java.lang.String[] ID_PROJECTION
+
+protected static final java.lang.String LOGTAG
+
+private static final java.lang.String PASSWORD_HOST_COL
+
+private static final java.lang.String PASSWORD_PASSWORD_COL
+
+private static final java.lang.String PASSWORD_USERNAME_COL
+
+private static final int TABLE_COOKIES_ID
+
+private static final int TABLE_FORMDATA_ID
+
+private static final int TABLE_FORMURL_ID
+
+private static final int TABLE_HTTPAUTH_ID
+
+private static final int TABLE_PASSWORD_ID
+
+private static int mCacheContentLengthColIndex
+
+private static android.database.sqlite.SQLiteDatabase mCacheDatabase
+
+private static int mCacheETagColIndex
+
+private static int mCacheEncodingColIndex
+
+private static int mCacheExpiresColIndex
+
+private static int mCacheFilePathColIndex
+
+private static int mCacheHttpStatusColIndex
+
+private static android.database.DatabaseUtils$InsertHelper mCacheInserter
+
+private static int mCacheLastModifyColIndex
+
+private static int mCacheLocationColIndex
+
+private static int mCacheMimeTypeColIndex
+
+private static int mCacheTransactionRefcount
+
+private static int mCacheUrlColIndex
+
+private static android.database.sqlite.SQLiteDatabase mDatabase
+
+private static android.webkit.WebViewDatabase mInstance
+
+private static final java.lang.String[] mTableNames
+
+private final java.lang.Object mCookieLock
+
+private final java.lang.Object mFormLock
+
+private final java.lang.Object mHttpAuthLock
+
+private final java.lang.Object mPasswordLock
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+private static void bootstrapCacheDatabase()
+
+private static void bootstrapDatabase()
+
+public static android.webkit.WebViewDatabase getInstance(
+android.content.Context)
+
+private boolean hasEntries(
+int)
+
+private static void upgradeCacheDatabase()
+
+private static void upgradeDatabase()
+
+ void addCache(
+java.lang.String
+android.webkit.CacheManager$CacheResult)
+
+ void addCookie(
+android.webkit.CookieManager$Cookie)
+
+ void clearCache()
+
+ void clearCookies()
+
+ void clearExpiredCookies(
+long)
+
+public void clearFormData()
+
+public void clearHttpAuthUsernamePassword()
+
+ void clearSessionCookies()
+
+public void clearUsernamePassword()
+
+ void deleteCookies(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+ boolean endCacheTransaction()
+
+ android.webkit.CacheManager$CacheResult getCache(
+java.lang.String)
+
+ long getCacheTotalSize()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/ArrayList<Landroid/webkit/CookieManager$Cookie;>; )
+ java.util.ArrayList getCookiesForDomain(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/String;)Ljava/util/ArrayList<Ljava/lang/String;>; )
+ java.util.ArrayList getFormData(
+java.lang.String
+java.lang.String)
+
+ java.lang.String[] getHttpAuthUsernamePassword(
+java.lang.String
+java.lang.String)
+
+ java.lang.String[] getUsernamePassword(
+java.lang.String)
+
+ boolean hasCache()
+
+ boolean hasCookies()
+
+public boolean hasFormData()
+
+public boolean hasHttpAuthUsernamePassword()
+
+public boolean hasUsernamePassword()
+
+ void removeCache(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>;)V )
+ void setFormData(
+java.lang.String
+java.util.HashMap)
+
+ void setHttpAuthUsernamePassword(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+ void setUsernamePassword(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+ boolean startCacheTransaction()
+@dalvik.annotation.Signature (value =(J)Ljava/util/ArrayList<Ljava/lang/String;>; )
+ java.util.ArrayList trimCache(
+long)
+
+________________CLASS________________
+
+
+public final class android.webkit.gears.AndroidGpsLocationProvider extends java.lang.Object implements android.location.LocationListener
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private android.location.LocationManager locationManager
+
+private long nativeObject
+----------------METHODS----------------
+
+public void <init>(
+android.webkit.WebView
+long)
+
+private native void nativeLocationChanged(
+android.location.Location
+long)
+
+private native void nativeProviderError(
+boolean
+long)
+
+public void onLocationChanged(
+android.location.Location)
+
+public void onProviderDisabled(
+java.lang.String)
+
+public void onProviderEnabled(
+java.lang.String)
+
+public void onStatusChanged(
+java.lang.String
+int
+android.os.Bundle)
+
+public void shutdown()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =RadioData )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/gears/AndroidRadioDataProvider; )
+public final class android.webkit.gears.AndroidRadioDataProvider$RadioData extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String carrierName
+
+public int cellId
+
+public int homeMobileCountryCode
+
+public int homeMobileNetworkCode
+
+public int locationAreaCode
+
+public int mobileCountryCode
+
+public int mobileNetworkCode
+
+public int radioType
+
+public int signalStrength
+----------------METHODS----------------
+
+private void <init>()
+
+public static android.webkit.gears.AndroidRadioDataProvider$RadioData getInstance(
+android.telephony.TelephonyManager
+android.telephony.CellLocation
+int
+android.telephony.ServiceState)
+
+private void setMobileCodes(
+java.lang.String
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/gears/AndroidRadioDataProvider$RadioData; )
+public final class android.webkit.gears.AndroidRadioDataProvider extends android.telephony.PhoneStateListener
+
+----------------FIELDS----------------
+
+private static final int RADIO_TYPE_GSM
+
+private static final int RADIO_TYPE_UNKNOWN
+
+private static final int RADIO_TYPE_WCDMA
+
+private static final java.lang.String TAG
+
+private android.telephony.CellLocation cellLocation
+
+private long nativeObject
+
+private android.telephony.ServiceState serviceState
+
+private int signalStrength
+
+private android.telephony.TelephonyManager telephonyManager
+----------------METHODS----------------
+
+public void <init>(
+android.webkit.WebView
+long)
+
+private void notifyListeners()
+
+private static native void onUpdateAvailable(
+android.webkit.gears.AndroidRadioDataProvider$RadioData
+long)
+
+public void onCellLocationChanged(
+android.telephony.CellLocation)
+
+public void onServiceStateChanged(
+android.telephony.ServiceState)
+
+public void onSignalStrengthChanged(
+int)
+
+public void shutdown()
+
+________________CLASS________________
+
+
+public class android.webkit.gears.DesktopAndroid extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String ACTION_INSTALL_SHORTCUT
+
+private static final java.lang.String BROWSER
+
+private static final java.lang.String BROWSER_ACTIVITY
+
+private static final java.lang.String EXTRA_SHORTCUT_DUPLICATE
+
+private static int MAX_HEIGHT
+
+private static int MAX_WIDTH
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static android.graphics.Bitmap getBitmap(
+java.lang.String)
+
+public static void setShortcut(
+android.webkit.WebView
+java.lang.String
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/gears/GearsPluginSettings; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.webkit.gears.GearsPluginSettings$1 extends java.lang.Object implements android.content.ServiceConnection
+
+----------------FIELDS----------------
+
+final android.webkit.gears.GearsPluginSettings this$0
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.gears.GearsPluginSettings)
+
+public void onServiceConnected(
+android.content.ComponentName
+android.os.IBinder)
+
+public void onServiceDisconnected(
+android.content.ComponentName)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/gears/GearsPluginSettings; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =ClickHandler )
+ class android.webkit.gears.GearsPluginSettings$ClickHandler extends java.lang.Object implements android.webkit.Plugin$PreferencesClickHandler
+
+----------------FIELDS----------------
+
+final android.webkit.gears.GearsPluginSettings this$0
+----------------METHODS----------------
+
+private void <init>(
+android.webkit.gears.GearsPluginSettings)
+
+ void <init>(
+android.webkit.gears.GearsPluginSettings
+android.webkit.gears.GearsPluginSettings$1)
+
+public void handleClickEvent(
+android.content.Context)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =StartService )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/gears/GearsPluginSettings; )
+ class android.webkit.gears.GearsPluginSettings$StartService extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.webkit.gears.GearsPluginSettings this$0
+----------------METHODS----------------
+
+private void <init>(
+android.webkit.gears.GearsPluginSettings)
+
+ void <init>(
+android.webkit.gears.GearsPluginSettings
+android.webkit.gears.GearsPluginSettings$1)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/gears/GearsPluginSettings$StartService;Landroid/webkit/gears/GearsPluginSettings$ClickHandler; )
+public class android.webkit.gears.GearsPluginSettings extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private android.content.Context context
+
+private android.content.ServiceConnection serviceConnection
+----------------METHODS----------------
+
+public void <init>(
+android.webkit.Plugin)
+
+static android.content.Context access$100(
+android.webkit.gears.GearsPluginSettings)
+
+static android.content.Context access$102(
+android.webkit.gears.GearsPluginSettings
+android.content.Context)
+
+static android.content.ServiceConnection access$300(
+android.webkit.gears.GearsPluginSettings)
+
+static void access$400(
+android.content.Context)
+
+private static native void runSettingsDialog(
+android.content.Context)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/gears/HtmlDialogAndroid; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.webkit.gears.HtmlDialogAndroid$1 extends java.lang.Object implements android.content.ServiceConnection
+
+----------------FIELDS----------------
+
+final android.webkit.gears.HtmlDialogAndroid this$0
+----------------METHODS----------------
+
+ void <init>(
+android.webkit.gears.HtmlDialogAndroid)
+
+public void onServiceConnected(
+android.content.ComponentName
+android.os.IBinder)
+
+public void onServiceDisconnected(
+android.content.ComponentName)
+
+________________CLASS________________
+
+
+public class android.webkit.gears.HtmlDialogAndroid extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String DIALOG_INTERFACE
+
+private static final java.lang.String DIALOG_PACKAGE
+
+private static final java.lang.String DIALOG_SERVICE
+
+private static final java.lang.String TAG
+
+private static android.webkit.gears.IGearsDialogService gearsDialogService
+
+private android.content.ServiceConnection defaultServiceConnection
+----------------METHODS----------------
+
+public void <init>()
+
+static android.content.ServiceConnection access$000(
+android.webkit.gears.HtmlDialogAndroid)
+
+static android.webkit.gears.IGearsDialogService access$102(
+android.webkit.gears.IGearsDialogService)
+
+public static boolean bindToService(
+android.content.Context
+android.content.ServiceConnection)
+
+public static void setGearsDialogService(
+android.webkit.gears.IGearsDialogService)
+
+public java.lang.String readHTML(
+java.lang.String)
+
+public java.lang.String showDialog(
+android.content.Context
+java.lang.String
+java.lang.String)
+
+public void synchronousBindToService(
+android.content.Context)
+
+________________CLASS________________
+
+
+public final class android.webkit.gears.HttpRequestAndroid extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int BUFFER_SIZE
+
+private static final java.lang.String DEFAULT_MIME_TYPE
+
+public static final int HEADERS_MAP_INDEX_KEY
+
+public static final int HEADERS_MAP_INDEX_VALUE
+
+private static final java.lang.String HTTP_LINE_ENDING
+
+public static final java.lang.String KEY_CONTENT_LENGTH
+
+public static final java.lang.String KEY_CONTENT_TYPE
+
+public static final java.lang.String KEY_ETAG
+
+public static final java.lang.String KEY_EXPIRES
+
+public static final java.lang.String KEY_LAST_MODIFIED
+
+public static final java.lang.String KEY_LOCATION
+
+private static final java.lang.String LOG_TAG
+
+private static boolean logEnabled
+
+private boolean abortReceived
+
+private android.webkit.CacheManager$CacheResult cacheResult
+
+private java.lang.String cacheResultUrl
+
+private java.lang.Thread childThread
+
+private java.net.HttpURLConnection connection
+
+private boolean inBlockingOperation
+
+private java.io.InputStream inputStream
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;[Ljava/lang/String;>; )
+private java.util.Map requestHeaders
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;[Ljava/lang/String;>; )
+private java.util.Map responseHeaders
+
+private java.lang.String responseLine
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void applyRequestHeadersToConnection()
+
+public static void enableLogging(
+boolean)
+
+public static java.lang.String getCookieForUrl(
+java.lang.String)
+
+private static void log(
+java.lang.String)
+
+public static void setCookieForUrl(
+java.lang.String
+java.lang.String)
+
+private void setResponseHeader(
+java.lang.String
+java.lang.String)
+
+private void synthesizeHeadersFromCacheResult(
+android.webkit.CacheManager$CacheResult)
+
+public boolean appendCacheResult(
+byte[]
+int)
+
+public boolean connectToRemote()
+
+public boolean createCacheResult(
+java.lang.String
+int
+java.lang.String
+java.lang.String)
+
+public java.lang.String getAllResponseHeaders()
+
+public java.lang.String getRequestHeader(
+java.lang.String)
+
+public java.lang.String getResponseHeader(
+java.lang.String)
+
+public java.lang.String getResponseLine()
+
+public void initChildThread()
+
+public void interrupt()
+
+public boolean open(
+java.lang.String
+java.lang.String)
+
+public boolean parseHeaders()
+
+public int receive(
+byte[])
+
+public boolean saveCacheResult()
+
+public boolean sendPostData(
+byte[]
+int)
+
+public void setRequestHeader(
+java.lang.String
+java.lang.String)
+
+public boolean useCacheResult(
+java.lang.String)
+
+public boolean useLocalServerResult(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/gears/IGearsDialogService$Stub; )
+public abstract interface class android.webkit.gears.IGearsDialogService extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String showDialog(
+java.lang.String
+java.lang.String
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/gears/IGearsDialogService$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class android.webkit.gears.IGearsDialogService$Stub$Proxy extends java.lang.Object implements android.webkit.gears.IGearsDialogService
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String showDialog(
+java.lang.String
+java.lang.String
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/gears/IGearsDialogService; )
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/gears/IGearsDialogService$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class android.webkit.gears.IGearsDialogService$Stub extends android.os.Binder implements android.webkit.gears.IGearsDialogService
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_showDialog
+----------------METHODS----------------
+
+public void <init>()
+
+public static android.webkit.gears.IGearsDialogService asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =ServiceRequest )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/gears/UrlInterceptHandlerGears; )
+public class android.webkit.gears.UrlInterceptHandlerGears$ServiceRequest extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;[Ljava/lang/String;>; )
+private java.util.Map requestHeaders
+
+private java.lang.String url
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;[Ljava/lang/String;>;)V )
+public void <init>(
+java.lang.String
+java.util.Map)
+
+public java.lang.String getRequestHeader(
+java.lang.String)
+
+public java.lang.String getUrl()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1 name =ServiceResponse )
+@dalvik.annotation.EnclosingClass (value =Landroid/webkit/gears/UrlInterceptHandlerGears; )
+public class android.webkit.gears.UrlInterceptHandlerGears$ServiceResponse extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.String encoding
+
+private java.io.InputStream inputStream
+
+private java.lang.String mimeType
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;[Ljava/lang/String;>; )
+private java.util.Map responseHeaders
+
+private int statusCode
+
+private java.lang.String statusLine
+
+final android.webkit.gears.UrlInterceptHandlerGears this$0
+----------------METHODS----------------
+
+public void <init>(
+android.webkit.gears.UrlInterceptHandlerGears)
+
+public java.lang.String getContentType()
+
+public java.lang.String getEncoding()
+
+public java.io.InputStream getInputStream()
+
+public java.lang.String getMimeType()
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;[Ljava/lang/String;>; )
+public java.util.Map getResponseHeaders()
+
+public int getStatusCode()
+
+public java.lang.String getStatusLine()
+
+public void setResponseHeader(
+java.lang.String
+java.lang.String)
+
+ void setResultArray(
+int
+java.lang.String
+java.lang.String
+java.lang.String
+byte[])
+
+ boolean setResultFile(
+int
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/webkit/gears/UrlInterceptHandlerGears$ServiceResponse;Landroid/webkit/gears/UrlInterceptHandlerGears$ServiceRequest; )
+public class android.webkit.gears.UrlInterceptHandlerGears extends java.lang.Object implements android.webkit.UrlInterceptHandler
+
+----------------FIELDS----------------
+
+private static final int BUFFER_SIZE
+
+private static final int CACHE_EXPIRY_MS
+
+public static final int HEADERS_MAP_INDEX_KEY
+
+public static final int HEADERS_MAP_INDEX_VALUE
+
+private static final java.lang.String LOG_TAG
+
+private static android.webkit.gears.UrlInterceptHandlerGears instance
+
+private static boolean logEnabled
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static void access$000(
+android.webkit.gears.UrlInterceptHandlerGears
+java.lang.String)
+
+private boolean copyStream(
+java.io.InputStream
+java.io.OutputStream)
+
+public static void enableLogging(
+boolean)
+
+public static android.webkit.gears.UrlInterceptHandlerGears getInstance()
+
+private void log(
+java.lang.String)
+
+private static native android.webkit.gears.UrlInterceptHandlerGears$ServiceResponse nativeService(
+android.webkit.gears.UrlInterceptHandlerGears$ServiceRequest)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;[Ljava/lang/String;>;)Landroid/webkit/gears/UrlInterceptHandlerGears$ServiceResponse; )
+public android.webkit.gears.UrlInterceptHandlerGears$ServiceResponse getServiceResponse(
+java.lang.String
+java.util.Map)
+
+public void register()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)Landroid/webkit/CacheManager$CacheResult; )
+public android.webkit.CacheManager$CacheResult service(
+java.lang.String
+java.util.Map)
+
+public void unregister()
+
+________________CLASS________________
+
+
+public final class android.webkit.gears.VersionExtractor extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private static final java.lang.String URL
+
+private static final java.lang.String VERSION
+----------------METHODS----------------
+
+public void <init>()
+
+public static boolean extract(
+java.lang.String
+long)
+
+private static java.lang.String extractText(
+org.w3c.dom.Document
+java.lang.String)
+
+private static native void setVersionAndUrl(
+java.lang.String
+java.lang.String
+long)
+
+________________CLASS________________
+
+
+public final class android.webkit.gears.ZipInflater extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int BUFFER_SIZE_BYTES
+
+private static final java.lang.String DATA_PARTITION_ROOT
+
+private static final java.lang.String PATH_NAVIGATION_COMPONENT
+
+private static final long SIZE_MULTIPLIER
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static final long freeSpace()
+
+public static boolean inflate(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.widget.AbsListView$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.widget.AbsListView this$0
+
+final android.view.View val$child
+
+final android.widget.AbsListView$PerformClick val$performClick
+----------------METHODS----------------
+
+ void <init>(
+android.widget.AbsListView
+android.view.View
+android.widget.AbsListView$PerformClick)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AbsListView; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =WindowRunnnable )
+ class android.widget.AbsListView$WindowRunnnable extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int mOriginalAttachCount
+
+final android.widget.AbsListView this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.AbsListView)
+
+ void <init>(
+android.widget.AbsListView
+android.widget.AbsListView$1)
+
+public void rememberWindowAttachCount()
+
+public boolean sameWindow()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AbsListView; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =CheckForKeyLongPress )
+ class android.widget.AbsListView$CheckForKeyLongPress extends android.widget.AbsListView$WindowRunnnable implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.widget.AbsListView this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.AbsListView)
+
+ void <init>(
+android.widget.AbsListView
+android.widget.AbsListView$1)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AbsListView; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =CheckForLongPress )
+ class android.widget.AbsListView$CheckForLongPress extends android.widget.AbsListView$WindowRunnnable implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.widget.AbsListView this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.AbsListView)
+
+ void <init>(
+android.widget.AbsListView
+android.widget.AbsListView$1)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AbsListView; )
+@dalvik.annotation.InnerClass (accessFlags =16 name =CheckForTap )
+final class android.widget.AbsListView$CheckForTap extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.widget.AbsListView this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.AbsListView)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =FlingRunnable )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AbsListView; )
+ class android.widget.AbsListView$FlingRunnable extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private int mLastFlingY
+
+private android.widget.Scroller mScroller
+
+final android.widget.AbsListView this$0
+----------------METHODS----------------
+
+public void <init>(
+android.widget.AbsListView)
+
+private void endFling()
+
+public void run()
+
+public void start(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =LayoutParams )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AbsListView; )
+public class android.widget.AbsListView$LayoutParams extends android.view.ViewGroup$LayoutParams
+
+----------------FIELDS----------------
+
+ int viewType
+----------------METHODS----------------
+
+public void <init>(
+int
+int)
+
+public void <init>(
+int
+int
+int)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.view.ViewGroup$LayoutParams)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AbsListView; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnScrollListener )
+public abstract interface class android.widget.AbsListView$OnScrollListener extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int SCROLL_STATE_FLING
+
+public static final int SCROLL_STATE_IDLE
+
+public static final int SCROLL_STATE_TOUCH_SCROLL
+----------------METHODS----------------
+
+public abstract void onScroll(
+android.widget.AbsListView
+int
+int
+int)
+
+public abstract void onScrollStateChanged(
+android.widget.AbsListView
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =PerformClick )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AbsListView; )
+ class android.widget.AbsListView$PerformClick extends android.widget.AbsListView$WindowRunnnable implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+ android.view.View mChild
+
+ int mClickMotionPosition
+
+final android.widget.AbsListView this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.AbsListView)
+
+ void <init>(
+android.widget.AbsListView
+android.widget.AbsListView$1)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =RecycleBin )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AbsListView; )
+ class android.widget.AbsListView$RecycleBin extends java.lang.Object
+
+----------------FIELDS----------------
+
+private android.view.View[] mActiveViews
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/view/View;>; )
+private java.util.ArrayList mCurrentScrap
+
+private int mFirstActivePosition
+
+private android.widget.AbsListView$RecyclerListener mRecyclerListener
+@dalvik.annotation.Signature (value =[Ljava/util/ArrayList<Landroid/view/View;>; )
+private java.util.ArrayList[] mScrapViews
+
+private int mViewTypeCount
+
+final android.widget.AbsListView this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.AbsListView)
+
+static android.widget.AbsListView$RecyclerListener access$1500(
+android.widget.AbsListView$RecycleBin)
+
+static android.widget.AbsListView$RecyclerListener access$1502(
+android.widget.AbsListView$RecycleBin
+android.widget.AbsListView$RecyclerListener)
+
+private void pruneScrapViews()
+
+ void addScrapView(
+android.view.View)
+
+ void clear()
+
+ void fillActiveViews(
+int
+int)
+
+ android.view.View getActiveView(
+int)
+
+ android.view.View getScrapView(
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/view/View;>;)V )
+ void reclaimScrapViews(
+java.util.List)
+
+ void scrapActiveViews()
+
+public void setViewTypeCount(
+int)
+
+public boolean shouldRecycleViewType(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =RecyclerListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AbsListView; )
+public abstract interface class android.widget.AbsListView$RecyclerListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onMovedToScrapHeap(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/widget/AbsListView$SavedState;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AbsListView$SavedState; )
+final class android.widget.AbsListView$SavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.widget.AbsListView$SavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.widget.AbsListView$SavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =SavedState )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AbsListView; )
+ class android.widget.AbsListView$SavedState extends android.view.View$BaseSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/widget/AbsListView$SavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+ java.lang.String filter
+
+ long firstId
+
+ int height
+
+ int position
+
+ long selectedId
+
+ int viewTop
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.widget.AbsListView$1)
+
+ void <init>(
+android.os.Parcelable)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/AdapterView$1;Landroid/widget/AdapterView$SelectionNotifier;Landroid/widget/AdapterView$AdapterDataSetObserver;Landroid/widget/AdapterView$AdapterContextMenuInfo;Landroid/widget/AdapterView$OnItemSelectedListener;Landroid/widget/AdapterView$OnItemLongClickListener;Landroid/widget/AdapterView$OnItemClickListener; )
+@dalvik.annotation.Signature (value =<T::Landroid/widget/Adapter;>Landroid/view/ViewGroup; )
+public abstract class android.widget.AdapterView extends android.view.ViewGroup
+
+----------------FIELDS----------------
+
+public static int INVALID_POSITION
+
+public static long INVALID_ROW_ID
+
+public static final int ITEM_VIEW_TYPE_HEADER_OR_FOOTER
+
+public static final int ITEM_VIEW_TYPE_IGNORE
+
+static final int SYNC_FIRST_POSITION
+
+static final int SYNC_MAX_DURATION_MILLIS
+
+static final int SYNC_SELECTED_POSITION
+
+ boolean mBlockLayoutRequests
+
+ boolean mDataChanged
+
+private boolean mDesiredFocusableInTouchModeState
+
+private boolean mDesiredFocusableState
+
+ android.view.View mEmptyView
+@android.view.ViewDebug$ExportedProperty
+ int mFirstPosition
+
+ boolean mInLayout
+@android.view.ViewDebug$ExportedProperty
+ int mItemCount
+
+private int mLayoutHeight
+
+ boolean mNeedSync
+@android.view.ViewDebug$ExportedProperty
+ int mNextSelectedPosition
+
+ long mNextSelectedRowId
+
+ int mOldItemCount
+
+ int mOldSelectedPosition
+
+ long mOldSelectedRowId
+
+ android.widget.AdapterView$OnItemClickListener mOnItemClickListener
+
+ android.widget.AdapterView$OnItemLongClickListener mOnItemLongClickListener
+
+ android.widget.AdapterView$OnItemSelectedListener mOnItemSelectedListener
+@android.view.ViewDebug$ExportedProperty
+ int mSelectedPosition
+
+ long mSelectedRowId
+@dalvik.annotation.Signature (value =Landroid/widget/AdapterView<TT;>.SelectionNotifier; )
+private android.widget.AdapterView$SelectionNotifier mSelectionNotifier
+
+ int mSpecificTop
+
+ long mSyncHeight
+
+ int mSyncMode
+
+ int mSyncPosition
+
+ long mSyncRowId
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static void access$000(
+android.widget.AdapterView
+android.os.Parcelable)
+
+static android.os.Parcelable access$100(
+android.widget.AdapterView)
+
+static void access$200(
+android.widget.AdapterView)
+
+private void fireOnSelected()
+
+private void updateEmptyStatus(
+boolean)
+
+public void addView(
+android.view.View)
+
+public void addView(
+android.view.View
+int)
+
+public void addView(
+android.view.View
+int
+android.view.ViewGroup$LayoutParams)
+
+public void addView(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+protected boolean canAnimate()
+
+ void checkFocus()
+
+ void checkSelectionChanged()
+@dalvik.annotation.Signature (value =(Landroid/util/SparseArray<Landroid/os/Parcelable;>;)V )
+protected void dispatchRestoreInstanceState(
+android.util.SparseArray)
+@dalvik.annotation.Signature (value =(Landroid/util/SparseArray<Landroid/os/Parcelable;>;)V )
+protected void dispatchSaveInstanceState(
+android.util.SparseArray)
+
+ int findSyncPosition()
+@dalvik.annotation.Signature (value =()TT; )
+public abstract android.widget.Adapter getAdapter()
+@android.view.ViewDebug$CapturedViewProperty
+public int getCount()
+
+public android.view.View getEmptyView()
+
+public int getFirstVisiblePosition()
+
+public java.lang.Object getItemAtPosition(
+int)
+
+public long getItemIdAtPosition(
+int)
+
+public int getLastVisiblePosition()
+
+public final android.widget.AdapterView$OnItemClickListener getOnItemClickListener()
+
+public final android.widget.AdapterView$OnItemLongClickListener getOnItemLongClickListener()
+
+public final android.widget.AdapterView$OnItemSelectedListener getOnItemSelectedListener()
+
+public int getPositionForView(
+android.view.View)
+
+public java.lang.Object getSelectedItem()
+@android.view.ViewDebug$CapturedViewProperty
+public long getSelectedItemId()
+@android.view.ViewDebug$CapturedViewProperty
+public int getSelectedItemPosition()
+
+public abstract android.view.View getSelectedView()
+
+ void handleDataChanged()
+
+ boolean isInFilterMode()
+
+ int lookForSelectablePosition(
+int
+boolean)
+
+protected void onLayout(
+boolean
+int
+int
+int
+int)
+
+public boolean performItemClick(
+android.view.View
+int
+long)
+
+ void rememberSyncState()
+
+public void removeAllViews()
+
+public void removeView(
+android.view.View)
+
+public void removeViewAt(
+int)
+
+ void selectionChanged()
+@dalvik.annotation.Signature (value =(TT;)V )
+public abstract void setAdapter(
+android.widget.Adapter)
+
+public void setEmptyView(
+android.view.View)
+
+public void setFocusable(
+boolean)
+
+public void setFocusableInTouchMode(
+boolean)
+
+ void setNextSelectedPositionInt(
+int)
+
+public void setOnClickListener(
+android.view.View$OnClickListener)
+
+public void setOnItemClickListener(
+android.widget.AdapterView$OnItemClickListener)
+
+public void setOnItemLongClickListener(
+android.widget.AdapterView$OnItemLongClickListener)
+
+public void setOnItemSelectedListener(
+android.widget.AdapterView$OnItemSelectedListener)
+
+ void setSelectedPositionInt(
+int)
+
+public abstract void setSelection(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Landroid/widget/AdapterView<Landroid/widget/ListAdapter;>;Landroid/text/TextWatcher;Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;Landroid/widget/Filter$FilterListener;Landroid/view/ViewTreeObserver$OnTouchModeChangeListener; )
+@dalvik.annotation.MemberClasses (value =Landroid/widget/AbsListView$RecycleBin;Landroid/widget/AbsListView$RecyclerListener;Landroid/widget/AbsListView$LayoutParams;Landroid/widget/AbsListView$FlingRunnable;Landroid/widget/AbsListView$CheckForTap;Landroid/widget/AbsListView$CheckForKeyLongPress;Landroid/widget/AbsListView$CheckForLongPress;Landroid/widget/AbsListView$PerformClick;Landroid/widget/AbsListView$WindowRunnnable;Landroid/widget/AbsListView$SavedState;Landroid/widget/AbsListView$OnScrollListener; )
+public abstract class android.widget.AbsListView extends android.widget.AdapterView implements android.text.TextWatcher, android.view.ViewTreeObserver$OnGlobalLayoutListener, android.widget.Filter$FilterListener, android.view.ViewTreeObserver$OnTouchModeChangeListener
+
+----------------FIELDS----------------
+
+static final int LAYOUT_FORCE_BOTTOM
+
+static final int LAYOUT_FORCE_TOP
+
+static final int LAYOUT_MOVE_SELECTION
+
+static final int LAYOUT_NORMAL
+
+static final int LAYOUT_SET_SELECTION
+
+static final int LAYOUT_SPECIFIC
+
+static final int LAYOUT_SYNC
+
+private static final boolean PROFILE_FLINGING
+
+private static final boolean PROFILE_SCROLLING
+
+static final int TOUCH_MODE_DONE_WAITING
+
+static final int TOUCH_MODE_DOWN
+
+static final int TOUCH_MODE_FLING
+
+private static final int TOUCH_MODE_OFF
+
+private static final int TOUCH_MODE_ON
+
+static final int TOUCH_MODE_REST
+
+static final int TOUCH_MODE_SCROLL
+
+static final int TOUCH_MODE_TAP
+
+private static final int TOUCH_MODE_UNKNOWN
+
+public static final int TRANSCRIPT_MODE_ALWAYS_SCROLL
+
+public static final int TRANSCRIPT_MODE_DISABLED
+
+public static final int TRANSCRIPT_MODE_NORMAL
+
+ android.widget.ListAdapter mAdapter
+
+private int mCacheColorHint
+
+ boolean mCachingStarted
+
+private android.view.ContextMenu$ContextMenuInfo mContextMenuInfo
+@dalvik.annotation.Signature (value =Landroid/widget/AdapterView<Landroid/widget/ListAdapter;>.AdapterDataSetObserver; )
+ android.widget.AdapterView$AdapterDataSetObserver mDataSetObserver
+
+ boolean mDrawSelectorOnTop
+
+private boolean mFiltered
+
+private boolean mFlingProfilingStarted
+
+private android.widget.AbsListView$FlingRunnable mFlingRunnable
+
+private boolean mIsChildViewEnabled
+
+private int mLastScrollState
+
+private int mLastTouchMode
+
+ int mLastY
+
+ int mLayoutMode
+
+ android.graphics.Rect mListPadding
+
+ int mMotionCorrection
+
+ int mMotionPosition
+
+ int mMotionViewNewTop
+
+ int mMotionViewOriginalTop
+
+ int mMotionX
+
+ int mMotionY
+
+private android.widget.AbsListView$OnScrollListener mOnScrollListener
+
+private android.widget.AbsListView$CheckForKeyLongPress mPendingCheckForKeyLongPress
+
+private android.widget.AbsListView$CheckForLongPress mPendingCheckForLongPress
+
+private java.lang.Runnable mPendingCheckForTap
+
+private android.widget.AbsListView$PerformClick mPerformClick
+
+ android.widget.PopupWindow mPopup
+
+final android.widget.AbsListView$RecycleBin mRecycler
+
+ int mResurrectToPosition
+
+ android.view.View mScrollDown
+
+private boolean mScrollProfilingStarted
+
+ android.view.View mScrollUp
+
+ boolean mScrollingCacheEnabled
+
+ int mSelectedTop
+
+ int mSelectionBottomPadding
+
+ int mSelectionLeftPadding
+
+ int mSelectionRightPadding
+
+ int mSelectionTopPadding
+
+ android.graphics.drawable.Drawable mSelector
+
+ android.graphics.Rect mSelectorRect
+
+ boolean mStackFromBottom
+
+ android.widget.EditText mTextFilter
+
+private boolean mTextFilterEnabled
+
+private android.graphics.Rect mTouchFrame
+
+ int mTouchMode
+
+private int mTranscriptMode
+
+private android.view.VelocityTracker mVelocityTracker
+
+ int mWidthMeasureSpec
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static void access$1000(
+android.widget.AbsListView)
+
+static int access$1100(
+android.widget.AbsListView)
+
+static int access$1200(
+android.widget.AbsListView)
+
+static int access$1300(
+android.widget.AbsListView)
+
+static int access$1400(
+android.widget.AbsListView)
+
+static void access$1600(
+android.widget.AbsListView
+android.view.View
+boolean)
+
+static void access$1700(
+android.widget.AbsListView
+android.view.View
+boolean)
+
+static void access$1800(
+android.widget.AbsListView
+android.view.View
+boolean)
+
+static int access$200(
+android.widget.AbsListView)
+
+static int access$300(
+android.widget.AbsListView)
+
+static boolean access$500(
+android.widget.AbsListView
+android.view.View
+int
+long)
+
+static android.widget.AbsListView$CheckForLongPress access$600(
+android.widget.AbsListView)
+
+static android.widget.AbsListView$CheckForLongPress access$602(
+android.widget.AbsListView
+android.widget.AbsListView$CheckForLongPress)
+
+static android.widget.AbsListView$OnScrollListener access$900(
+android.widget.AbsListView)
+
+private void clearScrollingCache()
+
+private void createScrollingCache()
+
+private void createTextFilter(
+boolean)
+
+private void drawSelector(
+android.graphics.Canvas)
+
+static int getDistance(
+android.graphics.Rect
+android.graphics.Rect
+int)
+
+private void initAbsListView()
+
+private boolean performLongPress(
+android.view.View
+int
+long)
+
+private void positionSelector(
+int
+int
+int
+int)
+
+private void reportScrollStateChange(
+int)
+
+private void showPopup()
+
+private boolean startScrollIfNeeded(
+int)
+
+private void useDefaultSelector()
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/view/View;>;)V )
+public void addTouchables(
+java.util.ArrayList)
+
+public void afterTextChanged(
+android.text.Editable)
+
+public void beforeTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+protected boolean checkLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+public void clearTextFilter()
+
+protected int computeVerticalScrollExtent()
+
+protected int computeVerticalScrollOffset()
+
+protected int computeVerticalScrollRange()
+
+ android.view.ContextMenu$ContextMenuInfo createContextMenuInfo(
+android.view.View
+int
+long)
+
+ void dismissPopup()
+
+protected void dispatchDraw(
+android.graphics.Canvas)
+
+protected void dispatchSetPressed(
+boolean)
+
+protected void drawableStateChanged()
+
+abstract void fillGap(
+boolean)
+
+abstract int findMotionRow(
+int)
+
+public volatile android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+protected android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+public android.widget.AbsListView$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+protected float getBottomFadingEdgeStrength()
+
+public int getCacheColorHint()
+
+protected android.view.ContextMenu$ContextMenuInfo getContextMenuInfo()
+
+public void getFocusedRect(
+android.graphics.Rect)
+
+ int getFooterViewsCount()
+
+ int getHeaderViewsCount()
+
+public int getListPaddingBottom()
+
+public int getListPaddingLeft()
+
+public int getListPaddingRight()
+
+public int getListPaddingTop()
+@android.view.ViewDebug$ExportedProperty
+public android.view.View getSelectedView()
+
+public android.graphics.drawable.Drawable getSelector()
+
+public int getSolidColor()
+
+protected float getTopFadingEdgeStrength()
+
+public int getTranscriptMode()
+
+protected void handleDataChanged()
+
+public boolean hasTextFilter()
+
+ void hideSelector()
+
+public void invalidateViews()
+
+ void invokeOnItemScrollListener()
+
+protected boolean isInFilterMode()
+
+public boolean isScrollingCacheEnabled()
+
+public boolean isStackFromBottom()
+
+public boolean isTextFilterEnabled()
+
+ void keyPressed()
+
+protected void layoutChildren()
+
+ android.view.View obtainView(
+int)
+
+protected void onAttachedToWindow()
+
+protected int[] onCreateDrawableState(
+int)
+
+protected void onDetachedFromWindow()
+
+public void onFilterComplete(
+int)
+
+protected void onFocusChanged(
+boolean
+int
+android.graphics.Rect)
+
+public void onGlobalLayout()
+
+public boolean onInterceptTouchEvent(
+android.view.MotionEvent)
+
+public boolean onKeyUp(
+int
+android.view.KeyEvent)
+
+protected void onLayout(
+boolean
+int
+int
+int
+int)
+
+protected void onMeasure(
+int
+int)
+
+public void onRestoreInstanceState(
+android.os.Parcelable)
+
+public android.os.Parcelable onSaveInstanceState()
+
+protected void onSizeChanged(
+int
+int
+int
+int)
+
+public void onTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+public void onTouchModeChanged(
+boolean)
+
+public void onWindowFocusChanged(
+boolean)
+
+public int pointToPosition(
+int
+int)
+
+public long pointToRowId(
+int
+int)
+
+ void positionSelector(
+android.view.View)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/view/View;>;)V )
+public void reclaimViews(
+java.util.List)
+
+ int reconcileSelectedPosition()
+
+public void requestLayout()
+
+ void requestLayoutIfNecessary()
+
+ void resetList()
+
+ boolean resurrectSelection()
+
+ boolean sendToTextFilter(
+int
+int
+android.view.KeyEvent)
+
+public void setCacheColorHint(
+int)
+
+public void setDrawSelectorOnTop(
+boolean)
+
+public void setFilterText(
+java.lang.String)
+
+public void setOnScrollListener(
+android.widget.AbsListView$OnScrollListener)
+
+public void setRecyclerListener(
+android.widget.AbsListView$RecyclerListener)
+
+public void setScrollIndicators(
+android.view.View
+android.view.View)
+
+public void setScrollingCacheEnabled(
+boolean)
+
+abstract void setSelectionInt(
+int)
+
+public void setSelector(
+int)
+
+public void setSelector(
+android.graphics.drawable.Drawable)
+
+public void setStackFromBottom(
+boolean)
+
+public void setTextFilterEnabled(
+boolean)
+
+public void setTranscriptMode(
+int)
+
+ boolean shouldShowSelector()
+
+public boolean showContextMenuForChild(
+android.view.View)
+
+ boolean touchModeDrawsInPressedState()
+
+ void trackMotionScroll(
+int
+int)
+
+ void updateScrollIndicators()
+
+public boolean verifyDrawable(
+android.graphics.drawable.Drawable)
+
+________________CLASS________________
+
+@android.widget.RemoteViews$RemoteView
+@dalvik.annotation.MemberClasses (value =Landroid/widget/ProgressBar$RefreshProgressRunnable; )
+public class android.widget.ProgressBar extends android.view.View
+
+----------------FIELDS----------------
+
+private static final int ANIMATION_RESOLUTION
+
+private static final int MAX_LEVEL
+
+private android.view.animation.AlphaAnimation mAnimation
+
+private int mBehavior
+
+private android.graphics.drawable.Drawable mCurrentDrawable
+
+private int mDuration
+
+private boolean mInDrawing
+
+private boolean mIndeterminate
+
+private android.graphics.drawable.Drawable mIndeterminateDrawable
+
+private android.view.animation.Interpolator mInterpolator
+
+private long mLastDrawTime
+
+private int mMax
+
+ int mMaxHeight
+
+ int mMaxWidth
+
+ int mMinHeight
+
+ int mMinWidth
+
+private boolean mNoInvalidate
+
+private boolean mOnlyIndeterminate
+
+private int mProgress
+
+private android.graphics.drawable.Drawable mProgressDrawable
+
+private android.widget.ProgressBar$RefreshProgressRunnable mRefreshProgressRunnable
+
+ android.graphics.Bitmap mSampleTile
+
+private int mSecondaryProgress
+
+private boolean mShouldStartAnimationDrawable
+
+private android.view.animation.Transformation mTransformation
+
+private long mUiThreadId
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static void access$000(
+android.widget.ProgressBar
+int
+int
+boolean)
+
+static android.widget.ProgressBar$RefreshProgressRunnable access$102(
+android.widget.ProgressBar
+android.widget.ProgressBar$RefreshProgressRunnable)
+
+private android.graphics.drawable.Drawable createDrawableForTile(
+android.graphics.drawable.Drawable
+boolean)
+
+private void doRefreshProgress(
+int
+int
+boolean)
+
+private void initProgressBar()
+
+private void refreshProgress(
+int
+int
+boolean)
+
+private android.graphics.drawable.Drawable tileify(
+android.graphics.drawable.Drawable)
+
+private android.graphics.drawable.Drawable tileifyIndeterminate(
+android.graphics.drawable.Drawable)
+
+ android.graphics.drawable.Drawable getCurrentDrawable()
+
+ android.graphics.drawable.shapes.Shape getDrawableShape()
+
+public android.graphics.drawable.Drawable getIndeterminateDrawable()
+
+public android.view.animation.Interpolator getInterpolator()
+
+public int getMax()
+
+public int getProgress()
+
+public android.graphics.drawable.Drawable getProgressDrawable()
+
+public int getSecondaryProgress()
+
+public final void incrementProgressBy(
+int)
+
+public final void incrementSecondaryProgressBy(
+int)
+
+public void invalidateDrawable(
+android.graphics.drawable.Drawable)
+
+public boolean isIndeterminate()
+
+protected void onDraw(
+android.graphics.Canvas)
+
+protected void onMeasure(
+int
+int)
+
+ void onProgressRefresh(
+float
+boolean)
+
+protected void onSizeChanged(
+int
+int
+int
+int)
+
+public void postInvalidate()
+
+public void setIndeterminate(
+boolean)
+
+public void setIndeterminateDrawable(
+android.graphics.drawable.Drawable)
+
+public void setInterpolator(
+android.content.Context
+int)
+
+public void setInterpolator(
+android.view.animation.Interpolator)
+
+public void setMax(
+int)
+
+public void setProgress(
+int)
+
+ void setProgress(
+int
+boolean)
+
+public void setProgressDrawable(
+android.graphics.drawable.Drawable)
+
+public void setSecondaryProgress(
+int)
+
+public void setVisibility(
+int)
+
+ void startAnimation()
+
+ void stopAnimation()
+
+protected boolean verifyDrawable(
+android.graphics.drawable.Drawable)
+
+________________CLASS________________
+
+
+public abstract class android.widget.AbsSeekBar extends android.widget.ProgressBar
+
+----------------FIELDS----------------
+
+private static final int NO_ALPHA
+
+ float mDisabledAlpha
+
+ boolean mIsUserSeekable
+
+private android.graphics.drawable.Drawable mThumb
+
+private int mThumbOffset
+
+ float mTouchProgressOffset
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+private void setThumbPos(
+int
+int
+android.graphics.drawable.Drawable
+float
+int)
+
+private void trackTouchEvent(
+android.view.MotionEvent)
+
+protected void drawableStateChanged()
+
+public int getThumbOffset()
+
+protected void onDraw(
+android.graphics.Canvas)
+
+protected void onMeasure(
+int
+int)
+
+ void onProgressRefresh(
+float
+boolean)
+
+protected void onSizeChanged(
+int
+int
+int
+int)
+
+ void onStartTrackingTouch()
+
+ void onStopTrackingTouch()
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+public void setThumb(
+android.graphics.drawable.Drawable)
+
+public void setThumbOffset(
+int)
+
+protected boolean verifyDrawable(
+android.graphics.drawable.Drawable)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AbsSpinner; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.widget.AbsSpinner$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AbsSpinner; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =RecycleBin )
+ class android.widget.AbsSpinner$RecycleBin extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/util/SparseArray<Landroid/view/View;>; )
+private android.util.SparseArray mScrapHeap
+
+final android.widget.AbsSpinner this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.AbsSpinner)
+
+ void clear()
+
+ android.view.View get(
+int)
+
+ android.view.View peek(
+int)
+
+public void put(
+int
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AbsSpinner$SavedState; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/widget/AbsSpinner$SavedState;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.widget.AbsSpinner$SavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.widget.AbsSpinner$SavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.widget.AbsSpinner$SavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =SavedState )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AbsSpinner; )
+ class android.widget.AbsSpinner$SavedState extends android.view.View$BaseSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/widget/AbsSpinner$SavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+ int position
+
+ long selectedId
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.widget.AbsSpinner$1)
+
+ void <init>(
+android.os.Parcelable)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/AbsSpinner$1;Landroid/widget/AbsSpinner$RecycleBin;Landroid/widget/AbsSpinner$SavedState; )
+@dalvik.annotation.Signature (value =Landroid/widget/AdapterView<Landroid/widget/SpinnerAdapter;>; )
+public abstract class android.widget.AbsSpinner extends android.widget.AdapterView
+
+----------------FIELDS----------------
+
+ android.widget.SpinnerAdapter mAdapter
+
+ boolean mBlockLayoutRequests
+
+private android.database.DataSetObserver mDataSetObserver
+
+ int mHeightMeasureSpec
+
+ android.view.animation.Interpolator mInterpolator
+
+ android.widget.AbsSpinner$RecycleBin mRecycler
+
+ android.view.View mSelectedView
+
+ int mSelectionBottomPadding
+
+ int mSelectionLeftPadding
+
+ int mSelectionRightPadding
+
+ int mSelectionTopPadding
+
+ android.graphics.Rect mSpinnerPadding
+
+private android.graphics.Rect mTouchFrame
+
+ int mWidthMeasureSpec
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static void access$100(
+android.widget.AbsSpinner
+android.view.View
+boolean)
+
+private void initAbsSpinner()
+
+protected android.view.ViewGroup$LayoutParams generateDefaultLayoutParams()
+
+public volatile android.widget.Adapter getAdapter()
+
+public android.widget.SpinnerAdapter getAdapter()
+
+ int getChildHeight(
+android.view.View)
+
+ int getChildWidth(
+android.view.View)
+
+public int getCount()
+
+public android.view.View getSelectedView()
+
+ void handleDataChanged()
+
+abstract void layout(
+int
+boolean)
+
+protected void onMeasure(
+int
+int)
+
+public void onRestoreInstanceState(
+android.os.Parcelable)
+
+public android.os.Parcelable onSaveInstanceState()
+
+public int pointToPosition(
+int
+int)
+
+ void recycleAllViews()
+
+public void requestLayout()
+
+ void resetList()
+
+public volatile void setAdapter(
+android.widget.Adapter)
+
+public void setAdapter(
+android.widget.SpinnerAdapter)
+
+public void setSelection(
+int)
+
+public void setSelection(
+int
+boolean)
+
+ void setSelectionInt(
+int
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AbsoluteLayout; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =LayoutParams )
+public class android.widget.AbsoluteLayout$LayoutParams extends android.view.ViewGroup$LayoutParams
+
+----------------FIELDS----------------
+
+public int x
+
+public int y
+----------------METHODS----------------
+
+public void <init>(
+int
+int
+int
+int)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.view.ViewGroup$LayoutParams)
+
+public java.lang.String debug(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AdapterView; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.widget.AdapterView$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AdapterView; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =AdapterContextMenuInfo )
+public class android.widget.AdapterView$AdapterContextMenuInfo extends java.lang.Object implements android.view.ContextMenu$ContextMenuInfo
+
+----------------FIELDS----------------
+
+public long id
+
+public int position
+
+public android.view.View targetView
+----------------METHODS----------------
+
+public void <init>(
+android.view.View
+int
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AdapterView; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =AdapterDataSetObserver )
+ class android.widget.AdapterView$AdapterDataSetObserver extends android.database.DataSetObserver
+
+----------------FIELDS----------------
+
+private android.os.Parcelable mInstanceState
+
+final android.widget.AdapterView this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.AdapterView)
+
+public void clearSavedState()
+
+public void onChanged()
+
+public void onInvalidated()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnItemLongClickListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AdapterView; )
+public abstract interface class android.widget.AdapterView$OnItemLongClickListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Landroid/widget/AdapterView<*>;Landroid/view/View;IJ)Z )
+public abstract boolean onItemLongClick(
+android.widget.AdapterView
+android.view.View
+int
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AdapterView; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =SelectionNotifier )
+ class android.widget.AdapterView$SelectionNotifier extends android.os.Handler implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.widget.AdapterView this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.AdapterView)
+
+ void <init>(
+android.widget.AdapterView
+android.widget.AdapterView$1)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AnalogClock; )
+ class android.widget.AnalogClock$1 extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final android.widget.AnalogClock this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.AnalogClock)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+
+public class android.widget.AnalogClock extends android.view.View
+
+----------------FIELDS----------------
+
+private boolean mAttached
+
+private android.pim.Time mCalendar
+
+private boolean mChanged
+
+private android.graphics.drawable.Drawable mDial
+
+private int mDialHeight
+
+private int mDialWidth
+
+private final android.os.Handler mHandler
+
+private float mHour
+
+private android.graphics.drawable.Drawable mHourHand
+
+private final android.content.BroadcastReceiver mIntentReceiver
+
+private long mLastTime
+
+private android.graphics.drawable.Drawable mMinuteHand
+
+private float mMinutes
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static android.pim.Time access$002(
+android.widget.AnalogClock
+android.pim.Time)
+
+static void access$100(
+android.widget.AnalogClock)
+
+private void onTimeChanged()
+
+protected void onAttachedToWindow()
+
+protected void onDetachedFromWindow()
+
+protected void onDraw(
+android.graphics.Canvas)
+
+protected void onMeasure(
+int
+int)
+
+protected void onSizeChanged(
+int
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AppSecurityPermissions; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.widget.AppSecurityPermissions$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$android$widget$AppSecurityPermissions$State
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/widget/AppSecurityPermissions$State;>; )
+@dalvik.annotation.InnerClass (accessFlags =16410 name =State )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AppSecurityPermissions; )
+final class android.widget.AppSecurityPermissions$State extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.widget.AppSecurityPermissions$State[] $VALUES
+
+public static final android.widget.AppSecurityPermissions$State BOTH
+
+public static final android.widget.AppSecurityPermissions$State DANGEROUS_ONLY
+
+public static final android.widget.AppSecurityPermissions$State NORMAL_ONLY
+
+public static final android.widget.AppSecurityPermissions$State NO_PERMS
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.widget.AppSecurityPermissions$State valueOf(
+java.lang.String)
+
+public static android.widget.AppSecurityPermissions$State[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/AppSecurityPermissions$1;Landroid/widget/AppSecurityPermissions$State; )
+public class android.widget.AppSecurityPermissions extends java.lang.Object implements android.view.View$OnClickListener
+
+----------------FIELDS----------------
+
+private final java.lang.String TAG
+
+private boolean localLOGV
+
+private android.content.Context mContext
+
+private android.widget.AppSecurityPermissions$State mCurrentState
+
+private android.graphics.drawable.Drawable mDangerousIcon
+
+private android.widget.LinearLayout mDangerousList
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>; )
+private java.util.HashMap mDangerousMap
+
+private java.lang.String mDefaultGrpLabel
+
+private java.lang.String mDefaultGrpName
+
+private boolean mExpanded
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>; )
+private java.util.HashMap mGroupLabelCache
+
+private android.view.LayoutInflater mInflater
+
+private android.view.View mNoPermsView
+
+private android.widget.LinearLayout mNonDangerousList
+
+private android.graphics.drawable.Drawable mNormalIcon
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>; )
+private java.util.HashMap mNormalMap
+
+private java.lang.String mPermFormat
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/content/pm/PermissionInfo;>; )
+private java.util.ArrayList mPermsList
+
+private android.widget.LinearLayout mPermsView
+
+private android.content.pm.PackageManager mPm
+
+private android.graphics.drawable.Drawable mShowMaxIcon
+
+private android.graphics.drawable.Drawable mShowMinIcon
+
+private android.view.View mShowMore
+
+private android.widget.ImageView mShowMoreIcon
+
+private android.widget.TextView mShowMoreText
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+@dalvik.annotation.Signature (value =(Landroid/content/Context;Ljava/util/ArrayList<Landroid/content/pm/PermissionInfo;>;)V )
+public void <init>(
+android.content.Context
+java.util.ArrayList)
+
+private java.lang.String canonicalizeGroupDesc(
+java.lang.String)
+
+private void displayNoPermissions()
+
+private void displayPermissions(
+boolean)
+
+private java.lang.String formatPermissions(
+java.lang.String
+java.lang.CharSequence)
+
+private java.lang.String formatPermissions(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/content/pm/PackageParser$Permission;>;Ljava/util/ArrayList<Ljava/lang/String;>;)Ljava/util/ArrayList<Landroid/content/pm/PermissionInfo;>; )
+private java.util.ArrayList generatePermissionsInfo(
+java.util.ArrayList
+java.util.ArrayList)
+@dalvik.annotation.Signature (value =([Landroid/content/pm/PermissionInfo;[Ljava/lang/String;)Ljava/util/ArrayList<Landroid/content/pm/PermissionInfo;>; )
+private java.util.ArrayList generatePermissionsInfo(
+android.content.pm.PermissionInfo[]
+java.lang.String[])
+
+private java.lang.String getGroupLabel(
+java.lang.String)
+
+private android.view.View getPermissionItemView(
+java.lang.String
+java.lang.String
+boolean)
+
+private boolean isDisplayablePermission(
+android.content.pm.PermissionInfo)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/content/pm/PermissionInfo;>;)V )
+private void setPermissions(
+java.util.ArrayList)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/content/pm/PermissionInfo;>;Landroid/content/pm/ApplicationInfo;)V )
+private void setPermissions(
+java.util.ArrayList
+android.content.pm.ApplicationInfo)
+
+private void showPermissions()
+
+public android.view.View getPermissionsView()
+
+public void onClick(
+android.view.View)
+
+public void setSecurityPermissionsView()
+
+public void setSecurityPermissionsView(
+android.content.pm.PackageInfo)
+
+public void setSecurityPermissionsView(
+android.net.Uri)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ArrayAdapter; )
+ class android.widget.ArrayAdapter$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =ArrayFilter )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ArrayAdapter; )
+ class android.widget.ArrayAdapter$ArrayFilter extends android.widget.Filter
+
+----------------FIELDS----------------
+
+final android.widget.ArrayAdapter this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.ArrayAdapter)
+
+ void <init>(
+android.widget.ArrayAdapter
+android.widget.ArrayAdapter$1)
+
+protected android.widget.Filter$FilterResults performFiltering(
+java.lang.CharSequence)
+
+protected void publishResults(
+java.lang.CharSequence
+android.widget.Filter$FilterResults)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AutoCompleteTextView; )
+ class android.widget.AutoCompleteTextView$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =DropDownItemClickListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AutoCompleteTextView; )
+ class android.widget.AutoCompleteTextView$DropDownItemClickListener extends java.lang.Object implements android.widget.AdapterView$OnItemClickListener
+
+----------------FIELDS----------------
+
+final android.widget.AutoCompleteTextView this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.AutoCompleteTextView)
+
+ void <init>(
+android.widget.AutoCompleteTextView
+android.widget.AutoCompleteTextView$1)
+
+public void onItemClick(
+android.widget.AdapterView
+android.view.View
+int
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/ListView$1;Landroid/widget/ListView$SavedState;Landroid/widget/ListView$ArrowScrollFocusResult;Landroid/widget/ListView$FixedViewInfo; )
+public class android.widget.ListView extends android.widget.AbsListView
+
+----------------FIELDS----------------
+
+public static final int CHOICE_MODE_MULTIPLE
+
+public static final int CHOICE_MODE_NONE
+
+public static final int CHOICE_MODE_SINGLE
+
+private static final float MAX_SCROLL_FACTOR
+
+private static final int MIN_SCROLL_PREVIEW_PIXELS
+
+static final int NO_POSITION
+
+private boolean mAreAllItemsSelectable
+
+private android.widget.ListView$ArrowScrollFocusResult mArrowScrollFocusResult
+
+private android.util.SparseBooleanArray mCheckStates
+
+private int mChoiceMode
+
+ android.graphics.drawable.Drawable mDivider
+
+ int mDividerHeight
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/widget/ListView$FixedViewInfo;>; )
+private java.util.ArrayList mFooterViewInfos
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/widget/ListView$FixedViewInfo;>; )
+private java.util.ArrayList mHeaderViewInfos
+
+private boolean mItemsCanFocus
+
+private android.graphics.Rect mTempRect
+@dalvik.annotation.Signature (value =Landroid/util/SparseArray<Landroid/os/Parcelable;>; )
+private android.util.SparseArray mfocusRestoreChildState
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+private android.view.View addViewAbove(
+android.view.View
+int)
+
+private android.view.View addViewBelow(
+android.view.View
+int)
+
+private void adjustViewsUpOrDown()
+
+private int amountToScroll(
+int
+int)
+
+private int amountToScrollToNewFocus(
+int
+android.view.View
+int)
+
+private android.widget.ListView$ArrowScrollFocusResult arrowScrollFocused(
+int)
+
+private boolean arrowScrollImpl(
+int)
+
+private boolean commonKey(
+int
+int
+android.view.KeyEvent)
+
+private void correctTooHigh(
+int)
+
+private void correctTooLow(
+int)
+
+private int distanceToView(
+android.view.View)
+
+private void fillAboveAndBelow(
+android.view.View
+int)
+
+private android.view.View fillDown(
+int
+int)
+
+private android.view.View fillFromMiddle(
+int
+int)
+
+private android.view.View fillFromSelection(
+int
+int
+int)
+
+private android.view.View fillFromTop(
+int)
+
+private android.view.View fillSpecific(
+int
+int)
+
+private android.view.View fillUp(
+int
+int)
+
+private int getArrowScrollPreviewLength()
+
+private int getBottomSelectionPixel(
+int
+int
+int)
+
+private int getTopSelectionPixel(
+int
+int
+int)
+
+private boolean handleHorizontalFocusWithinListItem(
+int)
+
+private void handleNewSelectionChange(
+android.view.View
+int
+int
+boolean)
+
+private boolean isDirectChildHeaderOrFooter(
+android.view.View)
+
+private boolean isViewAncestorOf(
+android.view.View
+android.view.View)
+
+private int lookForSelectablePositionOnScreen(
+int)
+
+private android.view.View makeAndAddView(
+int
+int
+boolean
+int
+boolean)
+
+private void measureAndAdjustDown(
+android.view.View
+int
+int)
+
+private void measureItem(
+android.view.View)
+
+private android.view.View moveSelection(
+android.view.View
+android.view.View
+int
+int
+int)
+
+private int positionOfNewFocus(
+android.view.View)
+
+private void relayoutMeasuredItem(
+android.view.View)
+@dalvik.annotation.Signature (value =(Landroid/view/View;Ljava/util/ArrayList<Landroid/widget/ListView$FixedViewInfo;>;)V )
+private void removeFixedViewInfo(
+android.view.View
+java.util.ArrayList)
+
+private void scrollListItemsBy(
+int)
+
+private void setupChild(
+android.view.View
+int
+int
+boolean
+int
+boolean
+boolean)
+
+private boolean showingBottomFadingEdge()
+
+private boolean showingTopFadingEdge()
+
+public void addFooterView(
+android.view.View)
+
+public void addFooterView(
+android.view.View
+java.lang.Object
+boolean)
+
+public void addHeaderView(
+android.view.View)
+
+public void addHeaderView(
+android.view.View
+java.lang.Object
+boolean)
+
+ boolean arrowScroll(
+int)
+
+protected boolean canAnimate()
+
+public void clearChoices()
+
+protected void dispatchDraw(
+android.graphics.Canvas)
+
+public boolean dispatchKeyEvent(
+android.view.KeyEvent)
+
+ void drawDivider(
+android.graphics.Canvas
+android.graphics.Rect
+int)
+
+ void fillGap(
+boolean)
+
+ int findMotionRow(
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/widget/ListView$FixedViewInfo;>;I)Landroid/view/View; )
+ android.view.View findViewInHeadersOrFooters(
+java.util.ArrayList
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/widget/ListView$FixedViewInfo;>;Ljava/lang/Object;)Landroid/view/View; )
+ android.view.View findViewTagInHeadersOrFooters(
+java.util.ArrayList
+java.lang.Object)
+
+protected android.view.View findViewTraversal(
+int)
+
+protected android.view.View findViewWithTagTraversal(
+java.lang.Object)
+
+ boolean fullScroll(
+int)
+
+public volatile android.widget.Adapter getAdapter()
+
+public android.widget.ListAdapter getAdapter()
+
+public int getCheckedItemPosition()
+
+public android.util.SparseBooleanArray getCheckedItemPositions()
+
+public int getChoiceMode()
+
+public android.graphics.drawable.Drawable getDivider()
+
+public int getDividerHeight()
+
+public int getFooterViewsCount()
+
+public int getHeaderViewsCount()
+
+public boolean getItemsCanFocus()
+
+public int getMaxScrollAmount()
+
+public boolean isItemChecked(
+int)
+
+protected void layoutChildren()
+
+ int lookForSelectablePosition(
+int
+boolean)
+
+final int measureHeightOfChildren(
+int
+int
+int
+int
+int)
+
+protected void onFinishInflate()
+
+protected void onFocusChanged(
+boolean
+int
+android.graphics.Rect)
+
+public boolean onKeyDown(
+int
+android.view.KeyEvent)
+
+public boolean onKeyMultiple(
+int
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+int
+android.view.KeyEvent)
+
+protected void onMeasure(
+int
+int)
+
+public void onRestoreInstanceState(
+android.os.Parcelable)
+
+public android.os.Parcelable onSaveInstanceState()
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+ boolean pageScroll(
+int)
+
+public boolean performItemClick(
+android.view.View
+int
+long)
+
+public boolean removeFooterView(
+android.view.View)
+
+public boolean removeHeaderView(
+android.view.View)
+
+public boolean requestChildRectangleOnScreen(
+android.view.View
+android.graphics.Rect
+boolean)
+
+ void resetList()
+
+public volatile void setAdapter(
+android.widget.Adapter)
+
+public void setAdapter(
+android.widget.ListAdapter)
+
+public void setChoiceMode(
+int)
+
+public void setDivider(
+android.graphics.drawable.Drawable)
+
+public void setDividerHeight(
+int)
+
+public void setItemChecked(
+int
+boolean)
+
+public void setItemsCanFocus(
+boolean)
+
+public void setSelection(
+int)
+
+public void setSelectionAfterHeaderView()
+
+public void setSelectionFromTop(
+int
+int)
+
+ void setSelectionInt(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/AutoCompleteTextView; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =DropDownListView )
+ class android.widget.AutoCompleteTextView$DropDownListView extends android.widget.ListView
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public int getSelectionPaddingBottom()
+
+public int getSelectionPaddingTop()
+
+public boolean hasFocus()
+
+public boolean hasWindowFocus()
+
+public boolean isFocused()
+
+protected android.view.View obtainView(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class android.widget.ExpandableListAdapter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean areAllItemsEnabled()
+
+public abstract java.lang.Object getChild(
+int
+int)
+
+public abstract long getChildId(
+int
+int)
+
+public abstract android.view.View getChildView(
+int
+int
+boolean
+android.view.View
+android.view.ViewGroup)
+
+public abstract int getChildrenCount(
+int)
+
+public abstract long getCombinedChildId(
+long
+long)
+
+public abstract long getCombinedGroupId(
+long)
+
+public abstract java.lang.Object getGroup(
+int)
+
+public abstract int getGroupCount()
+
+public abstract long getGroupId(
+int)
+
+public abstract android.view.View getGroupView(
+int
+boolean
+android.view.View
+android.view.ViewGroup)
+
+public abstract boolean hasStableIds()
+
+public abstract boolean isChildSelectable(
+int
+int)
+
+public abstract boolean isEmpty()
+
+public abstract void onGroupCollapsed(
+int)
+
+public abstract void onGroupExpanded(
+int)
+
+public abstract void registerDataSetObserver(
+android.database.DataSetObserver)
+
+public abstract void unregisterDataSetObserver(
+android.database.DataSetObserver)
+
+________________CLASS________________
+
+
+public abstract class android.widget.BaseExpandableListAdapter extends java.lang.Object implements android.widget.ExpandableListAdapter
+
+----------------FIELDS----------------
+
+private final android.database.DataSetObservable mDataSetObservable
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean areAllItemsEnabled()
+
+public long getCombinedChildId(
+long
+long)
+
+public long getCombinedGroupId(
+long)
+
+public boolean isEmpty()
+
+public void notifyDataSetChanged()
+
+public void notifyDataSetInvalidated()
+
+public void onGroupCollapsed(
+int)
+
+public void onGroupExpanded(
+int)
+
+public void registerDataSetObserver(
+android.database.DataSetObserver)
+
+public void unregisterDataSetObserver(
+android.database.DataSetObserver)
+
+________________CLASS________________
+
+
+public class android.widget.Button extends android.widget.TextView
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+________________CLASS________________
+
+
+public abstract interface class android.widget.Checkable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean isChecked()
+
+public abstract void setChecked(
+boolean)
+
+public abstract void toggle()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/CompoundButton$1;Landroid/widget/CompoundButton$SavedState;Landroid/widget/CompoundButton$OnCheckedChangeListener; )
+public abstract class android.widget.CompoundButton extends android.widget.Button implements android.widget.Checkable
+
+----------------FIELDS----------------
+
+private static final int[] CHECKED_STATE_SET
+
+private boolean mBroadcasting
+
+private android.graphics.drawable.Drawable mButtonDrawable
+
+private int mButtonResource
+
+private boolean mChecked
+
+private android.widget.CompoundButton$OnCheckedChangeListener mOnCheckedChangeListener
+
+private android.widget.CompoundButton$OnCheckedChangeListener mOnCheckedChangeWidgetListener
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+protected void drawableStateChanged()
+
+public boolean isChecked()
+
+protected int[] onCreateDrawableState(
+int)
+
+protected void onDraw(
+android.graphics.Canvas)
+
+public void onRestoreInstanceState(
+android.os.Parcelable)
+
+public android.os.Parcelable onSaveInstanceState()
+
+public boolean performClick()
+
+public void setButtonDrawable(
+int)
+
+public void setButtonDrawable(
+android.graphics.drawable.Drawable)
+
+public void setChecked(
+boolean)
+
+public void setOnCheckedChangeListener(
+android.widget.CompoundButton$OnCheckedChangeListener)
+
+ void setOnCheckedChangeWidgetListener(
+android.widget.CompoundButton$OnCheckedChangeListener)
+
+public void toggle()
+
+________________CLASS________________
+
+
+public class android.widget.CheckBox extends android.widget.CompoundButton
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+________________CLASS________________
+
+
+public abstract class android.widget.CheckedTextView extends android.widget.TextView implements android.widget.Checkable
+
+----------------FIELDS----------------
+
+private static final int[] CHECKED_STATE_SET
+
+private int mBasePaddingRight
+
+private android.graphics.drawable.Drawable mCheckMarkDrawable
+
+private int mCheckMarkResource
+
+private int mCheckMarkWidth
+
+private boolean mChecked
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+protected void drawableStateChanged()
+
+public boolean isChecked()
+
+protected int[] onCreateDrawableState(
+int)
+
+protected void onDraw(
+android.graphics.Canvas)
+
+public void setCheckMarkDrawable(
+int)
+
+public void setCheckMarkDrawable(
+android.graphics.drawable.Drawable)
+
+public void setChecked(
+boolean)
+
+public void setPadding(
+int
+int
+int
+int)
+
+public void toggle()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/Chronometer; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.widget.Chronometer$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.widget.Chronometer this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.Chronometer)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@android.widget.RemoteViews$RemoteView
+public class android.widget.Chronometer extends android.widget.TextView
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private long mBase
+
+private java.lang.String mFormat
+
+private java.lang.StringBuilder mFormatBuilder
+
+private java.util.Formatter mFormatter
+
+private java.lang.Object[] mFormatterArgs
+
+private java.util.Locale mFormatterLocale
+
+private android.os.Handler mHandler
+
+private boolean mLogged
+
+private boolean mRunning
+
+private boolean mStarted
+
+private boolean mVisible
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static boolean access$000(
+android.widget.Chronometer)
+
+static void access$100(
+android.widget.Chronometer
+long)
+
+private void init()
+
+private void updateRunning()
+
+private void updateText(
+long)
+
+public long getBase()
+
+public java.lang.String getFormat()
+
+protected void onDetachedFromWindow()
+
+protected void onWindowVisibilityChanged(
+int)
+
+public void setBase(
+long)
+
+public void setFormat(
+java.lang.String)
+
+public void start()
+
+public void stop()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/CompoundButton; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.widget.CompoundButton$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnCheckedChangeListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/CompoundButton; )
+public abstract interface class android.widget.CompoundButton$OnCheckedChangeListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onCheckedChanged(
+android.widget.CompoundButton
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/CompoundButton$SavedState; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/widget/CompoundButton$SavedState;>; )
+final class android.widget.CompoundButton$SavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.widget.CompoundButton$SavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.widget.CompoundButton$SavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =SavedState )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/CompoundButton; )
+ class android.widget.CompoundButton$SavedState extends android.view.View$BaseSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/widget/CompoundButton$SavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+ boolean checked
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.widget.CompoundButton$1)
+
+ void <init>(
+android.os.Parcelable)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/CursorAdapter; )
+ class android.widget.CursorAdapter$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =ChangeObserver )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/CursorAdapter; )
+ class android.widget.CursorAdapter$ChangeObserver extends android.database.ContentObserver
+
+----------------FIELDS----------------
+
+final android.widget.CursorAdapter this$0
+----------------METHODS----------------
+
+public void <init>(
+android.widget.CursorAdapter)
+
+public boolean deliverSelfNotifications()
+
+public void onChange(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/CursorAdapter; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =MyDataSetObserver )
+ class android.widget.CursorAdapter$MyDataSetObserver extends android.database.DataSetObserver
+
+----------------FIELDS----------------
+
+final android.widget.CursorAdapter this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.CursorAdapter)
+
+ void <init>(
+android.widget.CursorAdapter
+android.widget.CursorAdapter$1)
+
+public void onChanged()
+
+public void onInvalidated()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/CursorFilter$CursorFilterClient; )
+ class android.widget.CursorFilter extends android.widget.Filter
+
+----------------FIELDS----------------
+
+ android.widget.CursorFilter$CursorFilterClient mClient
+----------------METHODS----------------
+
+ void <init>(
+android.widget.CursorFilter$CursorFilterClient)
+
+public java.lang.CharSequence convertResultToString(
+java.lang.Object)
+
+protected android.widget.Filter$FilterResults performFiltering(
+java.lang.CharSequence)
+
+protected void publishResults(
+java.lang.CharSequence
+android.widget.Filter$FilterResults)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/CursorTreeAdapter; )
+ class android.widget.CursorTreeAdapter$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/CursorTreeAdapter$MyCursorHelper; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =MyContentObserver )
+ class android.widget.CursorTreeAdapter$MyCursorHelper$MyContentObserver extends android.database.ContentObserver
+
+----------------FIELDS----------------
+
+final android.widget.CursorTreeAdapter$MyCursorHelper this$1
+----------------METHODS----------------
+
+public void <init>(
+android.widget.CursorTreeAdapter$MyCursorHelper)
+
+public boolean deliverSelfNotifications()
+
+public void onChange(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =MyDataSetObserver )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/CursorTreeAdapter$MyCursorHelper; )
+ class android.widget.CursorTreeAdapter$MyCursorHelper$MyDataSetObserver extends android.database.DataSetObserver
+
+----------------FIELDS----------------
+
+final android.widget.CursorTreeAdapter$MyCursorHelper this$1
+----------------METHODS----------------
+
+private void <init>(
+android.widget.CursorTreeAdapter$MyCursorHelper)
+
+ void <init>(
+android.widget.CursorTreeAdapter$MyCursorHelper
+android.widget.CursorTreeAdapter$1)
+
+public void onChanged()
+
+public void onInvalidated()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/CursorTreeAdapter; )
+@dalvik.annotation.MemberClasses (value =Landroid/widget/CursorTreeAdapter$MyCursorHelper$MyDataSetObserver;Landroid/widget/CursorTreeAdapter$MyCursorHelper$MyContentObserver; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =MyCursorHelper )
+ class android.widget.CursorTreeAdapter$MyCursorHelper extends java.lang.Object
+
+----------------FIELDS----------------
+
+private android.widget.CursorTreeAdapter$MyCursorHelper$MyContentObserver mContentObserver
+
+private android.database.Cursor mCursor
+
+private android.widget.CursorTreeAdapter$MyCursorHelper$MyDataSetObserver mDataSetObserver
+
+private boolean mDataValid
+
+private int mRowIDColumn
+
+final android.widget.CursorTreeAdapter this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.CursorTreeAdapter
+android.database.Cursor)
+
+static android.database.Cursor access$300(
+android.widget.CursorTreeAdapter$MyCursorHelper)
+
+static boolean access$402(
+android.widget.CursorTreeAdapter$MyCursorHelper
+boolean)
+
+ void changeCursor(
+android.database.Cursor
+boolean)
+
+ void deactivate()
+
+ int getCount()
+
+ android.database.Cursor getCursor()
+
+ long getId(
+int)
+
+ boolean isValid()
+
+ android.database.Cursor moveTo(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/CursorTreeAdapter$1;Landroid/widget/CursorTreeAdapter$MyCursorHelper; )
+public abstract class android.widget.CursorTreeAdapter extends android.widget.BaseExpandableListAdapter implements android.widget.Filterable, android.widget.CursorFilter$CursorFilterClient
+
+----------------FIELDS----------------
+
+private boolean mAutoRequery
+@dalvik.annotation.Signature (value =Landroid/util/SparseArray<Landroid/widget/CursorTreeAdapter$MyCursorHelper;>; )
+ android.util.SparseArray mChildrenCursorHelpers
+
+private android.content.Context mContext
+
+ android.widget.CursorFilter mCursorFilter
+
+ android.widget.FilterQueryProvider mFilterQueryProvider
+
+ android.widget.CursorTreeAdapter$MyCursorHelper mGroupCursorHelper
+
+private android.os.Handler mHandler
+----------------METHODS----------------
+
+public void <init>(
+android.database.Cursor
+android.content.Context)
+
+public void <init>(
+android.database.Cursor
+android.content.Context
+boolean)
+
+static android.os.Handler access$100(
+android.widget.CursorTreeAdapter)
+
+static boolean access$200(
+android.widget.CursorTreeAdapter)
+
+private void init(
+android.database.Cursor
+android.content.Context
+boolean)
+
+private void releaseCursorHelpers()
+
+protected abstract void bindChildView(
+android.view.View
+android.content.Context
+android.database.Cursor
+boolean)
+
+protected abstract void bindGroupView(
+android.view.View
+android.content.Context
+android.database.Cursor
+boolean)
+
+public void changeCursor(
+android.database.Cursor)
+
+public volatile java.lang.CharSequence convertToString(
+android.database.Cursor)
+
+public java.lang.String convertToString(
+android.database.Cursor)
+
+ void deactivateChildrenCursorHelper(
+int)
+
+public android.database.Cursor getChild(
+int
+int)
+
+public volatile java.lang.Object getChild(
+int
+int)
+
+public long getChildId(
+int
+int)
+
+public android.view.View getChildView(
+int
+int
+boolean
+android.view.View
+android.view.ViewGroup)
+
+public int getChildrenCount(
+int)
+
+protected abstract android.database.Cursor getChildrenCursor(
+android.database.Cursor)
+
+ android.widget.CursorTreeAdapter$MyCursorHelper getChildrenCursorHelper(
+int
+boolean)
+
+public android.database.Cursor getCursor()
+
+public android.widget.Filter getFilter()
+
+public android.widget.FilterQueryProvider getFilterQueryProvider()
+
+public android.database.Cursor getGroup(
+int)
+
+public volatile java.lang.Object getGroup(
+int)
+
+public int getGroupCount()
+
+public long getGroupId(
+int)
+
+public android.view.View getGroupView(
+int
+boolean
+android.view.View
+android.view.ViewGroup)
+
+public boolean hasStableIds()
+
+public boolean isChildSelectable(
+int
+int)
+
+protected abstract android.view.View newChildView(
+android.content.Context
+android.database.Cursor
+boolean
+android.view.ViewGroup)
+
+protected abstract android.view.View newGroupView(
+android.content.Context
+android.database.Cursor
+boolean
+android.view.ViewGroup)
+
+public void notifyDataSetChanged()
+
+public void notifyDataSetChanged(
+boolean)
+
+public void notifyDataSetInvalidated()
+
+public void onGroupCollapsed(
+int)
+
+public android.database.Cursor runQueryOnBackgroundThread(
+java.lang.CharSequence)
+
+public void setChildrenCursor(
+int
+android.database.Cursor)
+
+public void setFilterQueryProvider(
+android.widget.FilterQueryProvider)
+
+public void setGroupCursor(
+android.database.Cursor)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnChangedListener )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/NumberPicker; )
+public abstract interface class com.android.internal.widget.NumberPicker$OnChangedListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onChanged(
+com.android.internal.widget.NumberPicker
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.widget.DatePicker$1 extends java.lang.Object implements com.android.internal.widget.NumberPicker$OnChangedListener
+
+----------------FIELDS----------------
+
+final android.widget.DatePicker this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.DatePicker)
+
+public void onChanged(
+com.android.internal.widget.NumberPicker
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.widget.DatePicker$2 extends java.lang.Object implements com.android.internal.widget.NumberPicker$OnChangedListener
+
+----------------FIELDS----------------
+
+final android.widget.DatePicker this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.DatePicker)
+
+public void onChanged(
+com.android.internal.widget.NumberPicker
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.widget.DatePicker$3 extends java.lang.Object implements com.android.internal.widget.NumberPicker$OnChangedListener
+
+----------------FIELDS----------------
+
+final android.widget.DatePicker this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.DatePicker)
+
+public void onChanged(
+com.android.internal.widget.NumberPicker
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/widget/DatePicker$SavedState;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/DatePicker$SavedState; )
+final class android.widget.DatePicker$SavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.widget.DatePicker$SavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.widget.DatePicker$SavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/DatePicker; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =SavedState )
+ class android.widget.DatePicker$SavedState extends android.view.View$BaseSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/widget/DatePicker$SavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+private final int mDay
+
+private final int mMonth
+
+private final int mYear
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.widget.DatePicker$1)
+
+private void <init>(
+android.os.Parcelable
+int
+int
+int)
+
+ void <init>(
+android.os.Parcelable
+int
+int
+int
+android.widget.DatePicker$1)
+
+public int getDay()
+
+public int getMonth()
+
+public int getYear()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@android.widget.RemoteViews$RemoteView
+@dalvik.annotation.MemberClasses (value =Landroid/widget/FrameLayout$LayoutParams; )
+public class android.widget.FrameLayout extends android.view.ViewGroup
+
+----------------FIELDS----------------
+
+private android.graphics.drawable.Drawable mForeground
+
+private int mForegroundGravity
+
+private int mForegroundPaddingBottom
+
+private int mForegroundPaddingLeft
+
+private int mForegroundPaddingRight
+
+private int mForegroundPaddingTop
+
+ boolean mMeasureAllChildren
+
+private final android.graphics.Rect mOverlayBounds
+
+private final android.graphics.Rect mSelfBounds
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+protected boolean checkLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+public void draw(
+android.graphics.Canvas)
+
+protected void drawableStateChanged()
+
+public boolean gatherTransparentRegion(
+android.graphics.Region)
+
+protected volatile android.view.ViewGroup$LayoutParams generateDefaultLayoutParams()
+
+protected android.widget.FrameLayout$LayoutParams generateDefaultLayoutParams()
+
+public volatile android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+protected android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+public android.widget.FrameLayout$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+public boolean getConsiderGoneChildrenWhenMeasuring()
+
+public android.graphics.drawable.Drawable getForeground()
+
+protected void onLayout(
+boolean
+int
+int
+int
+int)
+
+protected void onMeasure(
+int
+int)
+
+protected void onSizeChanged(
+int
+int
+int
+int)
+
+public void setForeground(
+android.graphics.drawable.Drawable)
+
+public void setForegroundGravity(
+int)
+
+public void setMeasureAllChildren(
+boolean)
+
+protected boolean verifyDrawable(
+android.graphics.drawable.Drawable)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/DatePicker$SavedState;Landroid/widget/DatePicker$OnDateChangedListener; )
+public class android.widget.DatePicker extends android.widget.FrameLayout
+
+----------------FIELDS----------------
+
+private static final int DEFAULT_END_YEAR
+
+private static final int DEFAULT_START_YEAR
+
+private int mDay
+
+private final com.android.internal.widget.NumberPicker mDayPicker
+
+private final int mEndYear
+
+private int mMonth
+
+private final com.android.internal.widget.NumberPicker mMonthPicker
+
+private android.widget.DatePicker$OnDateChangedListener mOnDateChangedListener
+
+private final int mStartYear
+
+private int mYear
+
+private final com.android.internal.widget.NumberPicker mYearPicker
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static int access$000(
+android.widget.DatePicker)
+
+static int access$002(
+android.widget.DatePicker
+int)
+
+static android.widget.DatePicker$OnDateChangedListener access$100(
+android.widget.DatePicker)
+
+static int access$200(
+android.widget.DatePicker)
+
+static int access$202(
+android.widget.DatePicker
+int)
+
+static int access$300(
+android.widget.DatePicker)
+
+static int access$302(
+android.widget.DatePicker
+int)
+
+static void access$400(
+android.widget.DatePicker)
+
+private void reorderPickers()
+
+private void updateDaySpinner()
+
+private void updateSpinners()
+@dalvik.annotation.Signature (value =(Landroid/util/SparseArray<Landroid/os/Parcelable;>;)V )
+protected void dispatchRestoreInstanceState(
+android.util.SparseArray)
+
+public int getDayOfMonth()
+
+public int getMonth()
+
+public int getYear()
+
+public void init(
+int
+int
+int
+android.widget.DatePicker$OnDateChangedListener)
+
+protected void onRestoreInstanceState(
+android.os.Parcelable)
+
+protected android.os.Parcelable onSaveInstanceState()
+
+public void setEnabled(
+boolean)
+
+public void updateDate(
+int
+int
+int)
+
+________________CLASS________________
+
+
+public class android.widget.DialerFilter extends android.widget.RelativeLayout
+
+----------------FIELDS----------------
+
+public static final int DIGITS_AND_LETTERS
+
+public static final int DIGITS_AND_LETTERS_NO_DIGITS
+
+public static final int DIGITS_AND_LETTERS_NO_LETTERS
+
+public static final int DIGITS_ONLY
+
+public static final int LETTERS_ONLY
+
+ android.widget.EditText mDigits
+
+ android.widget.EditText mHint
+
+ android.widget.ImageView mIcon
+
+ android.text.InputFilter[] mInputFilters
+
+private boolean mIsQwerty
+
+ android.widget.EditText mLetters
+
+ int mMode
+
+ android.widget.EditText mPrimary
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+private void makeDigitsPrimary()
+
+private void makeLettersPrimary()
+
+private void swapPrimaryAndHint(
+boolean)
+
+public void append(
+java.lang.String)
+
+public void clearText()
+
+public java.lang.CharSequence getDigits()
+
+public java.lang.CharSequence getFilterText()
+
+public java.lang.CharSequence getLetters()
+
+public int getMode()
+
+public boolean isQwertyKeyboard()
+
+protected void onFinishInflate()
+
+protected void onFocusChanged(
+boolean
+int
+android.graphics.Rect)
+
+public boolean onKeyDown(
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+int
+android.view.KeyEvent)
+
+protected void onModeChange(
+int
+int)
+
+public void removeFilterWatcher(
+android.text.TextWatcher)
+
+public void setDigitsWatcher(
+android.text.TextWatcher)
+
+public void setFilterWatcher(
+android.text.TextWatcher)
+
+public void setLettersWatcher(
+android.text.TextWatcher)
+
+public void setMode(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.widget.DigitalClock$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.widget.DigitalClock this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.DigitalClock)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/DigitalClock; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =FormatChangeObserver )
+ class android.widget.DigitalClock$FormatChangeObserver extends android.database.ContentObserver
+
+----------------FIELDS----------------
+
+final android.widget.DigitalClock this$0
+----------------METHODS----------------
+
+public void <init>(
+android.widget.DigitalClock)
+
+public void onChange(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/DigitalClock$FormatChangeObserver; )
+public class android.widget.DigitalClock extends android.widget.TextView
+
+----------------FIELDS----------------
+
+private static final java.lang.String m12
+
+private static final java.lang.String m24
+
+ java.util.Calendar mCalendar
+
+ java.lang.String mFormat
+
+private android.widget.DigitalClock$FormatChangeObserver mFormatChangeObserver
+
+private android.os.Handler mHandler
+
+private java.lang.Runnable mTicker
+
+private boolean mTickerStopped
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+static boolean access$000(
+android.widget.DigitalClock)
+
+static java.lang.Runnable access$100(
+android.widget.DigitalClock)
+
+static android.os.Handler access$200(
+android.widget.DigitalClock)
+
+static void access$300(
+android.widget.DigitalClock)
+
+private boolean get24HourMode()
+
+private void initClock(
+android.content.Context)
+
+private void setFormat()
+
+protected void onAttachedToWindow()
+
+protected void onDetachedFromWindow()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.widget.DoubleDigitManager$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.widget.DoubleDigitManager this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.DoubleDigitManager)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1544 name =CallBack )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/DoubleDigitManager; )
+abstract interface class android.widget.DoubleDigitManager$CallBack extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void singleDigitFinal(
+int)
+
+public abstract boolean singleDigitIntermediate(
+int)
+
+public abstract boolean twoDigitsFinal(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/DoubleDigitManager$CallBack; )
+ class android.widget.DoubleDigitManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.Integer intermediateDigit
+
+private final android.widget.DoubleDigitManager$CallBack mCallBack
+
+private final long timeoutInMillis
+----------------METHODS----------------
+
+public void <init>(
+long
+android.widget.DoubleDigitManager$CallBack)
+
+static java.lang.Integer access$000(
+android.widget.DoubleDigitManager)
+
+static java.lang.Integer access$002(
+android.widget.DoubleDigitManager
+java.lang.Integer)
+
+static android.widget.DoubleDigitManager$CallBack access$100(
+android.widget.DoubleDigitManager)
+
+public void reportDigit(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/widget/ExpandableListConnector$GroupMetadata;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ExpandableListConnector$GroupMetadata; )
+final class android.widget.ExpandableListConnector$GroupMetadata$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.widget.ExpandableListConnector$GroupMetadata createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.widget.ExpandableListConnector$GroupMetadata[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =GroupMetadata )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ExpandableListConnector; )
+ class android.widget.ExpandableListConnector$GroupMetadata extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/widget/ExpandableListConnector$GroupMetadata;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+static final int REFRESH
+
+ int flPos
+
+ int gPos
+
+ int lastChildFlPos
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+public int describeContents()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4 name =MyDataSetObserver )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ExpandableListConnector; )
+public class android.widget.ExpandableListConnector$MyDataSetObserver extends android.database.DataSetObserver
+
+----------------FIELDS----------------
+
+final android.widget.ExpandableListConnector this$0
+----------------METHODS----------------
+
+protected void <init>(
+android.widget.ExpandableListConnector)
+
+public void onChanged()
+
+public void onInvalidated()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ExpandableListConnector; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PositionMetadata )
+public class android.widget.ExpandableListConnector$PositionMetadata extends java.lang.Object
+
+----------------FIELDS----------------
+
+public int groupInsertIndex
+
+public android.widget.ExpandableListConnector$GroupMetadata groupMetadata
+
+public android.widget.ExpandableListPosition position
+----------------METHODS----------------
+
+public void <init>(
+int
+int
+int
+int)
+
+protected void <init>(
+int
+int
+int
+int
+android.widget.ExpandableListConnector$GroupMetadata
+int)
+
+public boolean isExpanded()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/ExpandableListConnector$PositionMetadata;Landroid/widget/ExpandableListConnector$GroupMetadata;Landroid/widget/ExpandableListConnector$MyDataSetObserver; )
+ class android.widget.ExpandableListConnector extends android.widget.BaseAdapter implements android.widget.Filterable
+
+----------------FIELDS----------------
+
+private android.database.DataSetObserver mDataSetObserver
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/widget/ExpandableListConnector$GroupMetadata;>; )
+private java.util.ArrayList mExpGroupMetadataList
+
+private android.widget.ExpandableListAdapter mExpandableListAdapter
+
+private int mMaxExpGroupCount
+
+private int mTotalExpChildrenCount
+----------------METHODS----------------
+
+public void <init>(
+android.widget.ExpandableListAdapter)
+
+static void access$000(
+android.widget.ExpandableListConnector
+boolean)
+
+private void refreshExpGroupMetadataList(
+boolean)
+
+public boolean areAllItemsEnabled()
+
+ boolean collapseGroup(
+int)
+
+ boolean collapseGroup(
+android.widget.ExpandableListConnector$PositionMetadata)
+
+ boolean expandGroup(
+int)
+
+ boolean expandGroup(
+android.widget.ExpandableListConnector$PositionMetadata)
+
+ android.widget.ExpandableListAdapter getAdapter()
+
+public int getCount()
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Landroid/widget/ExpandableListConnector$GroupMetadata;>; )
+ java.util.ArrayList getExpandedGroupMetadataList()
+
+public android.widget.Filter getFilter()
+
+ android.widget.ExpandableListConnector$PositionMetadata getFlattenedPos(
+android.widget.ExpandableListPosition)
+
+public java.lang.Object getItem(
+int)
+
+public long getItemId(
+int)
+
+public int getItemViewType(
+int)
+
+ android.widget.ExpandableListConnector$PositionMetadata getUnflattenedPos(
+int)
+
+public android.view.View getView(
+int
+android.view.View
+android.view.ViewGroup)
+
+public int getViewTypeCount()
+
+public boolean hasStableIds()
+
+public boolean isEmpty()
+
+public boolean isEnabled(
+int)
+
+public boolean isGroupExpanded(
+int)
+
+public void setExpandableListAdapter(
+android.widget.ExpandableListAdapter)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/widget/ExpandableListConnector$GroupMetadata;>;)V )
+ void setExpandedGroupMetadataList(
+java.util.ArrayList)
+
+public void setMaxExpGroupCount(
+int)
+
+________________CLASS________________
+
+
+ class android.widget.ExpandableListPosition extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CHILD
+
+public static final int GROUP
+
+public int childPos
+
+ int flatListPos
+
+public int groupPos
+
+public int type
+----------------METHODS----------------
+
+private void <init>(
+int
+int
+int)
+
+ void <init>(
+int
+int
+int
+int)
+
+static android.widget.ExpandableListPosition obtainChildPosition(
+int
+int)
+
+static android.widget.ExpandableListPosition obtainGroupPosition(
+int)
+
+static android.widget.ExpandableListPosition obtainPosition(
+long)
+
+ long getPackedPosition()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ExpandableListView; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.widget.ExpandableListView$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ExpandableListView; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =ExpandableListContextMenuInfo )
+public class android.widget.ExpandableListView$ExpandableListContextMenuInfo extends java.lang.Object implements android.view.ContextMenu$ContextMenuInfo
+
+----------------FIELDS----------------
+
+public long id
+
+public long packedPosition
+
+public android.view.View targetView
+----------------METHODS----------------
+
+public void <init>(
+android.view.View
+long
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ExpandableListView; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnGroupClickListener )
+public abstract interface class android.widget.ExpandableListView$OnGroupClickListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean onGroupClick(
+android.widget.ExpandableListView
+android.view.View
+int
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ExpandableListView$SavedState; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/widget/ExpandableListView$SavedState;>; )
+final class android.widget.ExpandableListView$SavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.widget.ExpandableListView$SavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.widget.ExpandableListView$SavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =SavedState )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ExpandableListView; )
+ class android.widget.ExpandableListView$SavedState extends android.view.View$BaseSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/widget/ExpandableListView$SavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/widget/ExpandableListConnector$GroupMetadata;>; )
+ java.util.ArrayList expandedGroupMetadataList
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.widget.ExpandableListView$1)
+@dalvik.annotation.Signature (value =(Landroid/os/Parcelable;Ljava/util/ArrayList<Landroid/widget/ExpandableListConnector$GroupMetadata;>;)V )
+ void <init>(
+android.os.Parcelable
+java.util.ArrayList)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/ExpandableListView$1;Landroid/widget/ExpandableListView$SavedState;Landroid/widget/ExpandableListView$ExpandableListContextMenuInfo;Landroid/widget/ExpandableListView$OnChildClickListener;Landroid/widget/ExpandableListView$OnGroupClickListener;Landroid/widget/ExpandableListView$OnGroupExpandListener;Landroid/widget/ExpandableListView$OnGroupCollapseListener; )
+public class android.widget.ExpandableListView extends android.widget.ListView
+
+----------------FIELDS----------------
+
+public static final int CHILD_INDICATOR_INHERIT
+
+private static final int[] CHILD_LAST_STATE_SET
+
+private static final int[] EMPTY_STATE_SET
+
+private static final int[] GROUP_EMPTY_STATE_SET
+
+private static final int[] GROUP_EXPANDED_EMPTY_STATE_SET
+
+private static final int[] GROUP_EXPANDED_STATE_SET
+
+private static final int[][] GROUP_STATE_SETS
+
+private static final long PACKED_POSITION_INT_MASK_CHILD
+
+private static final long PACKED_POSITION_INT_MASK_GROUP
+
+private static final long PACKED_POSITION_MASK_CHILD
+
+private static final long PACKED_POSITION_MASK_GROUP
+
+private static final long PACKED_POSITION_MASK_TYPE
+
+private static final long PACKED_POSITION_SHIFT_GROUP
+
+private static final long PACKED_POSITION_SHIFT_TYPE
+
+public static final int PACKED_POSITION_TYPE_CHILD
+
+public static final int PACKED_POSITION_TYPE_GROUP
+
+public static final int PACKED_POSITION_TYPE_NULL
+
+public static final long PACKED_POSITION_VALUE_NULL
+
+private android.widget.ExpandableListAdapter mAdapter
+
+private android.graphics.drawable.Drawable mChildDivider
+
+private android.graphics.drawable.Drawable mChildIndicator
+
+private int mChildIndicatorLeft
+
+private int mChildIndicatorRight
+
+private android.widget.ExpandableListConnector mConnector
+
+private android.graphics.drawable.Drawable mGroupIndicator
+
+private int mIndicatorLeft
+
+private int mIndicatorRight
+
+private android.widget.ExpandableListView$OnChildClickListener mOnChildClickListener
+
+private android.widget.ExpandableListView$OnGroupClickListener mOnGroupClickListener
+
+private android.widget.ExpandableListView$OnGroupCollapseListener mOnGroupCollapseListener
+
+private android.widget.ExpandableListView$OnGroupExpandListener mOnGroupExpandListener
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+private long getChildOrGroupId(
+android.widget.ExpandableListPosition)
+
+private android.graphics.drawable.Drawable getIndicator(
+android.widget.ExpandableListConnector$PositionMetadata)
+
+public static int getPackedPositionChild(
+long)
+
+public static long getPackedPositionForChild(
+int
+int)
+
+public static long getPackedPositionForGroup(
+int)
+
+public static int getPackedPositionGroup(
+long)
+
+public static int getPackedPositionType(
+long)
+
+public boolean collapseGroup(
+int)
+
+ android.view.ContextMenu$ContextMenuInfo createContextMenuInfo(
+android.view.View
+int
+long)
+
+protected void dispatchDraw(
+android.graphics.Canvas)
+
+ void drawDivider(
+android.graphics.Canvas
+android.graphics.Rect
+int)
+
+public boolean expandGroup(
+int)
+
+public volatile android.widget.Adapter getAdapter()
+
+public android.widget.ListAdapter getAdapter()
+
+public android.widget.ExpandableListAdapter getExpandableListAdapter()
+
+public long getExpandableListPosition(
+int)
+
+public int getFlatListPosition(
+long)
+
+public long getSelectedId()
+
+public long getSelectedPosition()
+
+ boolean handleItemClick(
+android.view.View
+int
+long)
+
+public boolean isGroupExpanded(
+int)
+
+public void onRestoreInstanceState(
+android.os.Parcelable)
+
+public android.os.Parcelable onSaveInstanceState()
+
+public boolean performItemClick(
+android.view.View
+int
+long)
+
+public volatile void setAdapter(
+android.widget.Adapter)
+
+public void setAdapter(
+android.widget.ExpandableListAdapter)
+
+public void setAdapter(
+android.widget.ListAdapter)
+
+public void setChildDivider(
+android.graphics.drawable.Drawable)
+
+public void setChildIndicator(
+android.graphics.drawable.Drawable)
+
+public void setChildIndicatorBounds(
+int
+int)
+
+public void setGroupIndicator(
+android.graphics.drawable.Drawable)
+
+public void setIndicatorBounds(
+int
+int)
+
+public void setOnChildClickListener(
+android.widget.ExpandableListView$OnChildClickListener)
+
+public void setOnGroupClickListener(
+android.widget.ExpandableListView$OnGroupClickListener)
+
+public void setOnGroupCollapseListener(
+android.widget.ExpandableListView$OnGroupCollapseListener)
+
+public void setOnGroupExpandListener(
+android.widget.ExpandableListView$OnGroupExpandListener)
+
+public void setOnItemClickListener(
+android.widget.AdapterView$OnItemClickListener)
+
+public boolean setSelectedChild(
+int
+int
+boolean)
+
+public void setSelectedGroup(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/Filter; )
+ class android.widget.Filter$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/Filter; )
+@dalvik.annotation.InnerClass (accessFlags =12 name =FilterResults )
+public class android.widget.Filter$FilterResults extends java.lang.Object
+
+----------------FIELDS----------------
+
+public int count
+
+public java.lang.Object values
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/Filter; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =RequestArguments )
+ class android.widget.Filter$RequestArguments extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.lang.CharSequence constraint
+
+ android.widget.Filter$FilterListener listener
+
+ android.widget.Filter$FilterResults results
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.widget.Filter$1)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =RequestHandler )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/Filter; )
+ class android.widget.Filter$RequestHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.widget.Filter this$0
+----------------METHODS----------------
+
+public void <init>(
+android.widget.Filter
+android.os.Looper)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/Filter; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =ResultsHandler )
+ class android.widget.Filter$ResultsHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.widget.Filter this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.Filter)
+
+ void <init>(
+android.widget.Filter
+android.widget.Filter$1)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+
+public abstract interface class android.widget.FilterQueryProvider extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.database.Cursor runQuery(
+java.lang.CharSequence)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/FrameLayout; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =LayoutParams )
+public class android.widget.FrameLayout$LayoutParams extends android.view.ViewGroup$MarginLayoutParams
+
+----------------FIELDS----------------
+
+public int gravity
+----------------METHODS----------------
+
+public void <init>(
+int
+int)
+
+public void <init>(
+int
+int
+int)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.view.ViewGroup$LayoutParams)
+
+public void <init>(
+android.view.ViewGroup$MarginLayoutParams)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.widget.Gallery$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.widget.Gallery this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.Gallery)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/Gallery; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =FlingRunnable )
+ class android.widget.Gallery$FlingRunnable extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private int mLastFlingX
+
+private android.widget.Scroller mScroller
+
+final android.widget.Gallery this$0
+----------------METHODS----------------
+
+public void <init>(
+android.widget.Gallery)
+
+static void access$000(
+android.widget.Gallery$FlingRunnable
+boolean)
+
+static android.widget.Scroller access$100(
+android.widget.Gallery$FlingRunnable)
+
+private void endFling(
+boolean)
+
+private void startCommon()
+
+public void run()
+
+public void startUsingDistance(
+int)
+
+public void startUsingVelocity(
+int)
+
+public void stop(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =LayoutParams )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/Gallery; )
+public class android.widget.Gallery$LayoutParams extends android.view.ViewGroup$LayoutParams
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+int
+int)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.view.ViewGroup$LayoutParams)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/Gallery$LayoutParams;Landroid/widget/Gallery$FlingRunnable; )
+public class android.widget.Gallery extends android.widget.AbsSpinner implements android.view.GestureDetector$OnGestureListener
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private static final boolean localLOGV
+
+private int mAnimationDuration
+
+private android.widget.AdapterView$AdapterContextMenuInfo mContextMenuInfo
+
+private int mDownTouchPosition
+
+private android.view.View mDownTouchView
+
+private android.widget.Gallery$FlingRunnable mFlingRunnable
+
+private android.view.GestureDetector mGestureDetector
+
+private int mGravity
+
+private int mLeftMost
+
+private int mRightMost
+
+private android.view.View mSelectedChild
+
+private boolean mShouldCallbackDuringFling
+
+private boolean mShouldCallbackOnUnselectedItemClick
+
+private boolean mShouldStopFling
+
+private int mSpacing
+
+private boolean mSuppressSelectionChanged
+
+private float mUnselectedAlpha
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static int access$1000(
+android.widget.Gallery)
+
+static void access$200(
+android.widget.Gallery)
+
+static int access$300(
+android.widget.Gallery)
+
+static void access$400(
+android.widget.Gallery)
+
+static boolean access$500(
+android.widget.Gallery)
+
+static boolean access$502(
+android.widget.Gallery
+boolean)
+
+static int access$602(
+android.widget.Gallery
+int)
+
+static int access$700(
+android.widget.Gallery)
+
+static int access$800(
+android.widget.Gallery)
+
+static int access$900(
+android.widget.Gallery)
+
+private int calculateTop(
+android.view.View
+android.widget.Gallery$LayoutParams
+boolean)
+
+private void detachOffScreenChildren(
+boolean)
+
+private boolean dispatchLongPress(
+android.view.View
+int
+long)
+
+private void dispatchPress(
+android.view.View)
+
+private void dispatchUnpress()
+
+private void fillToGalleryLeft()
+
+private void fillToGalleryRight()
+
+private int getCenterOfGallery()
+
+private static int getCenterOfView(
+android.view.View)
+
+private android.view.View makeAndAddView(
+int
+int
+int
+boolean)
+
+private void offsetChildrenLeftAndRight(
+int)
+
+private void onFinishedMovement()
+
+private void scrollIntoSlots()
+
+private boolean scrollToChild(
+int)
+
+private void setSelectionToCenterChild()
+
+private void setUpChild(
+android.view.View
+int
+int
+boolean)
+
+private void updateSelectedItemMetadata()
+
+protected boolean checkLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+protected int computeHorizontalScrollExtent()
+
+protected int computeHorizontalScrollOffset()
+
+protected int computeHorizontalScrollRange()
+
+public boolean dispatchKeyEvent(
+android.view.KeyEvent)
+
+protected void dispatchSetPressed(
+boolean)
+
+public void dispatchSetSelected(
+boolean)
+
+protected android.view.ViewGroup$LayoutParams generateDefaultLayoutParams()
+
+public android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+protected android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+protected int getChildDrawingOrder(
+int
+int)
+
+ int getChildHeight(
+android.view.View)
+
+protected boolean getChildStaticTransformation(
+android.view.View
+android.view.animation.Transformation)
+
+protected android.view.ContextMenu$ContextMenuInfo getContextMenuInfo()
+
+ int getLimitedMotionScrollAmount(
+boolean
+int)
+
+ void layout(
+int
+boolean)
+
+ boolean moveNext()
+
+ boolean movePrevious()
+
+ void onCancel()
+
+public boolean onDown(
+android.view.MotionEvent)
+
+public boolean onFling(
+android.view.MotionEvent
+android.view.MotionEvent
+float
+float)
+
+protected void onFocusChanged(
+boolean
+int
+android.graphics.Rect)
+
+public boolean onKeyDown(
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+int
+android.view.KeyEvent)
+
+protected void onLayout(
+boolean
+int
+int
+int
+int)
+
+public void onLongPress(
+android.view.MotionEvent)
+
+public boolean onScroll(
+android.view.MotionEvent
+android.view.MotionEvent
+float
+float)
+
+public void onShowPress(
+android.view.MotionEvent)
+
+public boolean onSingleTapUp(
+android.view.MotionEvent)
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+ void onUp()
+
+ void selectionChanged()
+
+public void setAnimationDuration(
+int)
+
+public void setCallbackDuringFling(
+boolean)
+
+public void setCallbackOnUnselectedItemClick(
+boolean)
+
+public void setGravity(
+int)
+
+ void setSelectedPositionInt(
+int)
+
+public void setSpacing(
+int)
+
+public void setUnselectedAlpha(
+float)
+
+public boolean showContextMenu()
+
+public boolean showContextMenuForChild(
+android.view.View)
+
+ void trackMotionScroll(
+int)
+
+________________CLASS________________
+
+
+public class android.widget.GridView extends android.widget.AbsListView
+
+----------------FIELDS----------------
+
+public static final int AUTO_FIT
+
+public static final int NO_STRETCH
+
+public static final int STRETCH_COLUMN_WIDTH
+
+public static final int STRETCH_SPACING
+
+private int mColumnWidth
+
+private int mGravity
+
+private int mHorizontalSpacing
+
+private int mNumColumns
+
+private android.view.View mReferenceView
+
+private android.view.View mReferenceViewInSelectedRow
+
+private int mRequestedColumnWidth
+
+private int mRequestedHorizontalSpacing
+
+private int mRequestedNumColumns
+
+private int mStretchMode
+
+private final android.graphics.Rect mTempRect
+
+private int mVerticalSpacing
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+private void adjustForBottomFadingEdge(
+android.view.View
+int
+int)
+
+private void adjustForTopFadingEdge(
+android.view.View
+int
+int)
+
+private void adjustViewsUpOrDown()
+
+private boolean commonKey(
+int
+int
+android.view.KeyEvent)
+
+private void correctTooHigh(
+int
+int
+int)
+
+private void correctTooLow(
+int
+int
+int)
+
+private void determineColumns(
+int)
+
+private android.view.View fillDown(
+int
+int)
+
+private android.view.View fillFromBottom(
+int
+int)
+
+private android.view.View fillFromSelection(
+int
+int
+int)
+
+private android.view.View fillFromTop(
+int)
+
+private android.view.View fillSelection(
+int
+int)
+
+private android.view.View fillSpecific(
+int
+int)
+
+private android.view.View fillUp(
+int
+int)
+
+private int getBottomSelectionPixel(
+int
+int
+int
+int)
+
+private int getTopSelectionPixel(
+int
+int
+int)
+
+private boolean isCandidateSelection(
+int
+int)
+
+private android.view.View makeAndAddView(
+int
+int
+boolean
+int
+boolean
+int)
+
+private android.view.View makeRow(
+int
+int
+boolean)
+
+private android.view.View moveSelection(
+int
+int
+int)
+
+private void pinToBottom(
+int)
+
+private void pinToTop(
+int)
+
+private void setupChild(
+android.view.View
+int
+int
+boolean
+int
+boolean
+boolean
+int)
+
+ boolean arrowScroll(
+int)
+
+protected void attachLayoutAnimationParameters(
+android.view.View
+android.view.ViewGroup$LayoutParams
+int
+int)
+
+protected int computeVerticalScrollExtent()
+
+protected int computeVerticalScrollOffset()
+
+protected int computeVerticalScrollRange()
+
+ void fillGap(
+boolean)
+
+ int findMotionRow(
+int)
+
+ boolean fullScroll(
+int)
+
+public volatile android.widget.Adapter getAdapter()
+
+public android.widget.ListAdapter getAdapter()
+
+public int getStretchMode()
+
+protected void layoutChildren()
+
+ int lookForSelectablePosition(
+int
+boolean)
+
+protected void onFocusChanged(
+boolean
+int
+android.graphics.Rect)
+
+public boolean onKeyDown(
+int
+android.view.KeyEvent)
+
+public boolean onKeyMultiple(
+int
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+int
+android.view.KeyEvent)
+
+protected void onMeasure(
+int
+int)
+
+ boolean pageScroll(
+int)
+
+public volatile void setAdapter(
+android.widget.Adapter)
+
+public void setAdapter(
+android.widget.ListAdapter)
+
+public void setColumnWidth(
+int)
+
+public void setGravity(
+int)
+
+public void setHorizontalSpacing(
+int)
+
+public void setNumColumns(
+int)
+
+public void setSelection(
+int)
+
+ void setSelectionInt(
+int)
+
+public void setStretchMode(
+int)
+
+public void setVerticalSpacing(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class android.widget.WrapperListAdapter extends java.lang.Object implements android.widget.ListAdapter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.widget.ListAdapter getWrappedAdapter()
+
+________________CLASS________________
+
+
+public class android.widget.HeaderViewListAdapter extends java.lang.Object implements android.widget.WrapperListAdapter, android.widget.Filterable
+
+----------------FIELDS----------------
+
+private android.widget.ListAdapter mAdapter
+
+ boolean mAreAllFixedViewsSelectable
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/widget/ListView$FixedViewInfo;>; )
+ java.util.ArrayList mFooterViewInfos
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/widget/ListView$FixedViewInfo;>; )
+ java.util.ArrayList mHeaderViewInfos
+
+private boolean mIsFilterable
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/widget/ListView$FixedViewInfo;>;Ljava/util/ArrayList<Landroid/widget/ListView$FixedViewInfo;>;Landroid/widget/ListAdapter;)V )
+public void <init>(
+java.util.ArrayList
+java.util.ArrayList
+android.widget.ListAdapter)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/widget/ListView$FixedViewInfo;>;)Z )
+private boolean areAllListInfosSelectable(
+java.util.ArrayList)
+
+public boolean areAllItemsEnabled()
+
+public int getCount()
+
+public android.widget.Filter getFilter()
+
+public int getFootersCount()
+
+public int getHeadersCount()
+
+public java.lang.Object getItem(
+int)
+
+public long getItemId(
+int)
+
+public int getItemViewType(
+int)
+
+public android.view.View getView(
+int
+android.view.View
+android.view.ViewGroup)
+
+public int getViewTypeCount()
+
+public android.widget.ListAdapter getWrappedAdapter()
+
+public boolean hasStableIds()
+
+public boolean isEmpty()
+
+public boolean isEnabled(
+int)
+
+public void registerDataSetObserver(
+android.database.DataSetObserver)
+
+public boolean removeFooter(
+android.view.View)
+
+public boolean removeHeader(
+android.view.View)
+
+public void unregisterDataSetObserver(
+android.database.DataSetObserver)
+
+________________CLASS________________
+
+@android.widget.RemoteViews$RemoteView
+@dalvik.annotation.MemberClasses (value =Landroid/widget/ImageView$ScaleType; )
+public class android.widget.ImageView extends android.view.View
+
+----------------FIELDS----------------
+
+private static final android.graphics.Matrix$ScaleToFit[] sS2FArray
+
+private static final android.widget.ImageView$ScaleType[] sScaleTypeArray
+
+private boolean mAdjustViewBounds
+
+private int mAlpha
+
+private boolean mBaselineAligned
+
+private android.graphics.ColorFilter mColorFilter
+
+private boolean mCropToPadding
+
+private android.graphics.Matrix mDrawMatrix
+
+private android.graphics.drawable.Drawable mDrawable
+
+private int mDrawableHeight
+
+private int mDrawableWidth
+
+private boolean mHaveFrame
+
+private int mLevel
+
+private android.graphics.Matrix mMatrix
+
+private int mMaxHeight
+
+private int mMaxWidth
+
+private boolean mMergeState
+
+private int mResource
+
+private android.widget.ImageView$ScaleType mScaleType
+
+private int[] mState
+
+private android.graphics.RectF mTempDst
+
+private android.graphics.RectF mTempSrc
+
+private android.net.Uri mUri
+
+private int mViewAlphaScale
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+private void applyColorMod()
+
+private void configureBounds()
+
+private void initImageView()
+
+private void resizeFromDrawable()
+
+private int resolveAdjustedSize(
+int
+int
+int)
+
+private void resolveUri()
+
+private static android.graphics.Matrix$ScaleToFit scaleTypeToScaleToFit(
+android.widget.ImageView$ScaleType)
+
+private void updateDrawable(
+android.graphics.drawable.Drawable)
+
+public final void clearColorFilter()
+
+protected void drawableStateChanged()
+
+public int getBaseline()
+
+public android.graphics.drawable.Drawable getDrawable()
+
+public android.graphics.Matrix getImageMatrix()
+
+public android.widget.ImageView$ScaleType getScaleType()
+
+public void invalidateDrawable(
+android.graphics.drawable.Drawable)
+
+public int[] onCreateDrawableState(
+int)
+
+protected void onDraw(
+android.graphics.Canvas)
+
+protected void onMeasure(
+int
+int)
+
+protected boolean onSetAlpha(
+int)
+
+public void setAdjustViewBounds(
+boolean)
+
+public void setAlpha(
+int)
+
+public final void setColorFilter(
+int
+android.graphics.PorterDuff$Mode)
+
+public void setColorFilter(
+android.graphics.ColorFilter)
+
+protected boolean setFrame(
+int
+int
+int
+int)
+
+public void setImageBitmap(
+android.graphics.Bitmap)
+
+public void setImageDrawable(
+android.graphics.drawable.Drawable)
+
+public void setImageLevel(
+int)
+
+public void setImageMatrix(
+android.graphics.Matrix)
+
+public void setImageResource(
+int)
+
+public void setImageState(
+int[]
+boolean)
+
+public void setImageURI(
+android.net.Uri)
+
+public void setMaxHeight(
+int)
+
+public void setMaxWidth(
+int)
+
+public void setScaleType(
+android.widget.ImageView$ScaleType)
+
+public void setSelected(
+boolean)
+
+protected boolean verifyDrawable(
+android.graphics.drawable.Drawable)
+
+________________CLASS________________
+
+
+public class android.widget.ImageButton extends android.widget.ImageView
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+protected boolean onSetAlpha(
+int)
+
+________________CLASS________________
+
+
+public class android.widget.ViewAnimator extends android.widget.FrameLayout
+
+----------------FIELDS----------------
+
+ boolean mAnimateFirstTime
+
+ boolean mFirstTime
+
+ android.view.animation.Animation mInAnimation
+
+ android.view.animation.Animation mOutAnimation
+
+ int mWhichChild
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+private void initViewAnimator()
+
+public void addView(
+android.view.View
+int
+android.view.ViewGroup$LayoutParams)
+
+public int getBaseline()
+
+public android.view.View getCurrentView()
+
+public int getDisplayedChild()
+
+public android.view.animation.Animation getInAnimation()
+
+public android.view.animation.Animation getOutAnimation()
+
+public void setAnimateFirstView(
+boolean)
+
+public void setDisplayedChild(
+int)
+
+public void setInAnimation(
+android.content.Context
+int)
+
+public void setInAnimation(
+android.view.animation.Animation)
+
+public void setOutAnimation(
+android.content.Context
+int)
+
+public void setOutAnimation(
+android.view.animation.Animation)
+
+public void showNext()
+
+ void showOnly(
+int)
+
+public void showPrevious()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/ViewSwitcher$ViewFactory; )
+public class android.widget.ViewSwitcher extends android.widget.ViewAnimator
+
+----------------FIELDS----------------
+
+ android.widget.ViewSwitcher$ViewFactory mFactory
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+private android.view.View obtainView()
+
+public void addView(
+android.view.View
+int
+android.view.ViewGroup$LayoutParams)
+
+public android.view.View getNextView()
+
+public void reset()
+
+public void setFactory(
+android.widget.ViewSwitcher$ViewFactory)
+
+________________CLASS________________
+
+
+public class android.widget.ImageSwitcher extends android.widget.ViewSwitcher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void setImageDrawable(
+android.graphics.drawable.Drawable)
+
+public void setImageResource(
+int)
+
+public void setImageURI(
+android.net.Uri)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =ScaleType )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/widget/ImageView$ScaleType;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ImageView; )
+public final class android.widget.ImageView$ScaleType extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.widget.ImageView$ScaleType[] $VALUES
+
+public static final android.widget.ImageView$ScaleType CENTER
+
+public static final android.widget.ImageView$ScaleType CENTER_CROP
+
+public static final android.widget.ImageView$ScaleType CENTER_INSIDE
+
+public static final android.widget.ImageView$ScaleType FIT_CENTER
+
+public static final android.widget.ImageView$ScaleType FIT_END
+
+public static final android.widget.ImageView$ScaleType FIT_START
+
+public static final android.widget.ImageView$ScaleType FIT_XY
+
+public static final android.widget.ImageView$ScaleType MATRIX
+
+final int nativeInt
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static android.widget.ImageView$ScaleType valueOf(
+java.lang.String)
+
+public static android.widget.ImageView$ScaleType[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =LayoutParams )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/LinearLayout; )
+public class android.widget.LinearLayout$LayoutParams extends android.view.ViewGroup$MarginLayoutParams
+
+----------------FIELDS----------------
+@android.view.ViewDebug$ExportedProperty (mapping =Landroid/view/ViewDebug$IntToString;:[from =255, to =NONE]Landroid/view/ViewDebug$IntToString;:[from =0, to =NONE]Landroid/view/ViewDebug$IntToString;:[from =48, to =TOP]Landroid/view/ViewDebug$IntToString;:[from =80, to =BOTTOM]Landroid/view/ViewDebug$IntToString;:[from =3, to =LEFT]Landroid/view/ViewDebug$IntToString;:[from =5, to =RIGHT]Landroid/view/ViewDebug$IntToString;:[from =16, to =CENTER_VERTICAL]Landroid/view/ViewDebug$IntToString;:[from =112, to =FILL_VERTICAL]Landroid/view/ViewDebug$IntToString;:[from =1, to =CENTER_HORIZONTAL]Landroid/view/ViewDebug$IntToString;:[from =7, to =FILL_HORIZONTAL]Landroid/view/ViewDebug$IntToString;:[from =17, to =CENTER]Landroid/view/ViewDebug$IntToString;:[from =119, to =FILL] )
+public int gravity
+@android.view.ViewDebug$ExportedProperty
+public float weight
+----------------METHODS----------------
+
+public void <init>(
+int
+int)
+
+public void <init>(
+int
+int
+float)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.view.ViewGroup$LayoutParams)
+
+public void <init>(
+android.view.ViewGroup$MarginLayoutParams)
+
+public java.lang.String debug(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/LinearLayout$LayoutParams; )
+@android.widget.RemoteViews$RemoteView
+public class android.widget.LinearLayout extends android.view.ViewGroup
+
+----------------FIELDS----------------
+
+public static final int HORIZONTAL
+
+private static final int INDEX_BOTTOM
+
+private static final int INDEX_CENTER_VERTICAL
+
+private static final int INDEX_FILL
+
+private static final int INDEX_TOP
+
+public static final int VERTICAL
+
+private static final int VERTICAL_GRAVITY_COUNT
+
+private boolean mBaselineAligned
+
+private int mBaselineAlignedChildIndex
+
+private int mBaselineChildTop
+
+private int mGravity
+
+private int[] mMaxAscent
+
+private int[] mMaxDescent
+
+private int mOrientation
+
+private int mTotalLength
+
+private float mWeightSum
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+private void forceUniformHeight(
+int
+int)
+
+private void forceUniformWidth(
+int
+int)
+
+private void setChildFrame(
+android.view.View
+int
+int
+int
+int)
+
+protected boolean checkLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+protected volatile android.view.ViewGroup$LayoutParams generateDefaultLayoutParams()
+
+protected android.widget.LinearLayout$LayoutParams generateDefaultLayoutParams()
+
+public volatile android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+protected volatile android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+public android.widget.LinearLayout$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+protected android.widget.LinearLayout$LayoutParams generateLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+public int getBaseline()
+
+public int getBaselineAlignedChildIndex()
+
+ int getChildrenSkipCount(
+android.view.View
+int)
+
+ int getLocationOffset(
+android.view.View)
+
+ int getNextLocationOffset(
+android.view.View)
+
+public int getOrientation()
+
+ android.view.View getVirtualChildAt(
+int)
+
+ int getVirtualChildCount()
+
+public float getWeightSum()
+
+public boolean isBaselineAligned()
+
+ void layoutHorizontal()
+
+ void layoutVertical()
+
+ void measureChildBeforeLayout(
+android.view.View
+int
+int
+int
+int
+int)
+
+ void measureHorizontal(
+int
+int)
+
+ int measureNullChild(
+int)
+
+ void measureVertical(
+int
+int)
+
+protected void onLayout(
+boolean
+int
+int
+int
+int)
+
+protected void onMeasure(
+int
+int)
+
+public void setBaselineAligned(
+boolean)
+
+public void setBaselineAlignedChildIndex(
+int)
+
+public void setGravity(
+int)
+
+public void setHorizontalGravity(
+int)
+
+public void setOrientation(
+int)
+
+public void setVerticalGravity(
+int)
+
+public void setWeightSum(
+float)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ListView; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.widget.ListView$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ListView; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =ArrowScrollFocusResult )
+ class android.widget.ListView$ArrowScrollFocusResult extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int mAmountToScroll
+
+private int mSelectedPosition
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.widget.ListView$1)
+
+public int getAmountToScroll()
+
+public int getSelectedPosition()
+
+ void populate(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =FixedViewInfo )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ListView; )
+ class android.widget.ListView$FixedViewInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.Object data
+
+public boolean isSelectable
+
+final android.widget.ListView this$0
+
+public android.view.View view
+----------------METHODS----------------
+
+ void <init>(
+android.widget.ListView)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/widget/ListView$SavedState;>; )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ListView$SavedState; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.widget.ListView$SavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.widget.ListView$SavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.widget.ListView$SavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =SavedState )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ListView; )
+ class android.widget.ListView$SavedState extends android.view.View$BaseSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/widget/ListView$SavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+ android.util.SparseBooleanArray checkState
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.widget.ListView$1)
+
+ void <init>(
+android.os.Parcelable
+android.util.SparseBooleanArray)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/MediaController; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.widget.MediaController$1 extends java.lang.Object implements android.view.View$OnTouchListener
+
+----------------FIELDS----------------
+
+final android.widget.MediaController this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.MediaController)
+
+public boolean onTouch(
+android.view.View
+android.view.MotionEvent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/MediaController; )
+ class android.widget.MediaController$2 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.widget.MediaController this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.MediaController)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/MediaController; )
+ class android.widget.MediaController$3 extends java.lang.Object implements android.view.View$OnClickListener
+
+----------------FIELDS----------------
+
+final android.widget.MediaController this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.MediaController)
+
+public void onClick(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/MediaController; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.widget.MediaController$4 extends java.lang.Object implements android.widget.SeekBar$OnSeekBarChangeListener
+
+----------------FIELDS----------------
+
+ long duration
+
+final android.widget.MediaController this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.MediaController)
+
+public void onProgressChanged(
+android.widget.SeekBar
+int
+boolean)
+
+public void onStartTrackingTouch(
+android.widget.SeekBar)
+
+public void onStopTrackingTouch(
+android.widget.SeekBar)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/MediaController; )
+ class android.widget.MediaController$5 extends java.lang.Object implements android.view.View$OnClickListener
+
+----------------FIELDS----------------
+
+final android.widget.MediaController this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.MediaController)
+
+public void onClick(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/MediaController; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.widget.MediaController$6 extends java.lang.Object implements android.view.View$OnClickListener
+
+----------------FIELDS----------------
+
+final android.widget.MediaController this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.MediaController)
+
+public void onClick(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =MediaPlayerControl )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/MediaController; )
+public abstract interface class android.widget.MediaController$MediaPlayerControl extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int getBufferPercentage()
+
+public abstract int getCurrentPosition()
+
+public abstract int getDuration()
+
+public abstract boolean isPlaying()
+
+public abstract void pause()
+
+public abstract void seekTo(
+int)
+
+public abstract void start()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/MediaController$MediaPlayerControl; )
+public class android.widget.MediaController extends android.widget.FrameLayout
+
+----------------FIELDS----------------
+
+private static final int FADE_OUT
+
+private static final int SHOW_PROGRESS
+
+private static final int sDefaultTimeout
+
+private android.view.View mAnchor
+
+private android.content.Context mContext
+
+private android.widget.TextView mCurrentTime
+
+private android.view.View mDecor
+
+private boolean mDragging
+
+private android.widget.TextView mEndTime
+
+private android.widget.ImageButton mFfwdButton
+
+private android.view.View$OnClickListener mFfwdListener
+
+ java.lang.StringBuilder mFormatBuilder
+
+ java.util.Formatter mFormatter
+
+private boolean mFromXml
+
+private android.os.Handler mHandler
+
+private boolean mListenersSet
+
+private android.widget.ImageButton mNextButton
+
+private android.view.View$OnClickListener mNextListener
+
+private android.widget.ImageButton mPauseButton
+
+private android.view.View$OnClickListener mPauseListener
+
+private android.widget.MediaController$MediaPlayerControl mPlayer
+
+private android.widget.ImageButton mPrevButton
+
+private android.view.View$OnClickListener mPrevListener
+
+private android.widget.ProgressBar mProgress
+
+private android.widget.ImageButton mRewButton
+
+private android.view.View$OnClickListener mRewListener
+
+private android.view.View mRoot
+
+private android.widget.SeekBar$OnSeekBarChangeListener mSeekListener
+
+private boolean mShowing
+
+private android.view.View$OnTouchListener mTouchListener
+
+private boolean mUseFastForward
+
+private android.view.Window mWindow
+
+private android.view.WindowManager mWindowManager
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+boolean)
+
+static boolean access$000(
+android.widget.MediaController)
+
+static int access$100(
+android.widget.MediaController)
+
+static boolean access$200(
+android.widget.MediaController)
+
+static boolean access$202(
+android.widget.MediaController
+boolean)
+
+static android.widget.MediaController$MediaPlayerControl access$300(
+android.widget.MediaController)
+
+static void access$400(
+android.widget.MediaController)
+
+static android.widget.TextView access$500(
+android.widget.MediaController)
+
+static java.lang.String access$600(
+android.widget.MediaController
+int)
+
+static void access$700(
+android.widget.MediaController)
+
+private void doPauseResume()
+
+private void initControllerView(
+android.view.View)
+
+private void initFloatingWindow()
+
+private void installPrevNextListeners()
+
+private int setProgress()
+
+private java.lang.String stringForTime(
+int)
+
+private void updatePausePlay()
+
+public boolean dispatchKeyEvent(
+android.view.KeyEvent)
+
+public void hide()
+
+public boolean isShowing()
+
+protected android.view.View makeControllerView()
+
+public void onFinishInflate()
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+public boolean onTrackballEvent(
+android.view.MotionEvent)
+
+public void setAnchorView(
+android.view.View)
+
+public void setEnabled(
+boolean)
+
+public void setMediaPlayer(
+android.widget.MediaController$MediaPlayerControl)
+
+public void setPrevNextListeners(
+android.view.View$OnClickListener
+android.view.View$OnClickListener)
+
+public void show()
+
+public void show(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =CommaTokenizer )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/MultiAutoCompleteTextView; )
+public class android.widget.MultiAutoCompleteTextView$CommaTokenizer extends java.lang.Object implements android.widget.MultiAutoCompleteTextView$Tokenizer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public int findTokenEnd(
+java.lang.CharSequence
+int)
+
+public int findTokenStart(
+java.lang.CharSequence
+int)
+
+public java.lang.CharSequence terminateToken(
+java.lang.CharSequence)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/MultiAutoCompleteTextView$CommaTokenizer;Landroid/widget/MultiAutoCompleteTextView$Tokenizer; )
+public class android.widget.MultiAutoCompleteTextView extends android.widget.AutoCompleteTextView
+
+----------------FIELDS----------------
+
+private android.widget.MultiAutoCompleteTextView$Tokenizer mTokenizer
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+public boolean enoughToFilter()
+
+ void finishInit()
+
+protected void performFiltering(
+java.lang.CharSequence
+int)
+
+protected void performFiltering(
+java.lang.CharSequence
+int
+int
+int)
+
+public void performValidation()
+
+protected void replaceText(
+java.lang.CharSequence)
+
+public void setTokenizer(
+android.widget.MultiAutoCompleteTextView$Tokenizer)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/PopupWindow; )
+@dalvik.annotation.InnerClass (accessFlags =1544 name =OnDismissListener )
+abstract interface class android.widget.PopupWindow$OnDismissListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onDismiss()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/PopupWindow; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =PopupViewContainer )
+ class android.widget.PopupWindow$PopupViewContainer extends android.widget.FrameLayout
+
+----------------FIELDS----------------
+
+final android.widget.PopupWindow this$0
+----------------METHODS----------------
+
+public void <init>(
+android.widget.PopupWindow
+android.content.Context)
+
+public boolean dispatchKeyEvent(
+android.view.KeyEvent)
+
+protected int[] onCreateDrawableState(
+int)
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/PopupWindow$PopupViewContainer;Landroid/widget/PopupWindow$OnDismissListener; )
+public class android.widget.PopupWindow extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int[] ABOVE_ANCHOR_STATE_SET
+
+private static final int STATUS_BAR_HEIGHT
+
+private boolean mAboveAnchor
+
+private int mAnimationStyle
+
+private android.graphics.drawable.Drawable mBackground
+
+private android.view.View mContentView
+
+private android.content.Context mContext
+
+private int[] mDrawingLocation
+
+private boolean mFocusable
+
+private int mHeight
+
+private boolean mIgnoreCheekPress
+
+private boolean mIsShowing
+
+private android.widget.PopupWindow$OnDismissListener mOnDismissListener
+
+private android.view.View mPopupView
+
+private int[] mRootLocation
+
+private android.graphics.Rect mTempRect
+
+private int mWidth
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int
+int)
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+public void <init>(
+android.view.View)
+
+public void <init>(
+android.view.View
+int
+int)
+
+public void <init>(
+android.view.View
+int
+int
+boolean)
+
+static boolean access$000(
+android.widget.PopupWindow)
+
+static int[] access$100()
+
+private android.view.WindowManager$LayoutParams createPopupLayout(
+android.os.IBinder)
+
+private boolean findDropDownPosition(
+android.view.View
+android.view.WindowManager$LayoutParams
+int
+int)
+
+private void invokePopup(
+android.view.WindowManager$LayoutParams)
+
+private void preparePopup(
+android.view.WindowManager$LayoutParams)
+
+public void dismiss()
+
+public int getAnimationStyle()
+
+public android.graphics.drawable.Drawable getBackground()
+
+public android.view.View getContentView()
+
+public int getHeight()
+
+public int getMaxAvailableHeight(
+android.view.View)
+
+public int getWidth()
+
+public boolean isFocusable()
+
+public boolean isShowing()
+
+public void setAnimationStyle(
+int)
+
+public void setBackgroundDrawable(
+android.graphics.drawable.Drawable)
+
+public void setContentView(
+android.view.View)
+
+public void setFocusable(
+boolean)
+
+public void setHeight(
+int)
+
+public void setIgnoreCheekPress()
+
+public void setOnDismissListener(
+android.widget.PopupWindow$OnDismissListener)
+
+public void setWidth(
+int)
+
+public void showAsDropDown(
+android.view.View)
+
+public void showAsDropDown(
+android.view.View
+int
+int)
+
+public void showAtLocation(
+android.view.View
+int
+int
+int)
+
+public void update(
+int
+int
+int
+int)
+
+public void update(
+android.view.View
+int
+int)
+
+public void update(
+android.view.View
+int
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =RefreshProgressRunnable )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ProgressBar; )
+ class android.widget.ProgressBar$RefreshProgressRunnable extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private boolean mFromTouch
+
+private int mId
+
+private int mProgress
+
+final android.widget.ProgressBar this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.ProgressBar
+int
+int
+boolean)
+
+public void run()
+
+public void setup(
+int
+int
+boolean)
+
+________________CLASS________________
+
+
+public class android.widget.RadioButton extends android.widget.CompoundButton
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+public void toggle()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/RadioGroup; )
+ class android.widget.RadioGroup$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/RadioGroup; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =CheckedStateTracker )
+ class android.widget.RadioGroup$CheckedStateTracker extends java.lang.Object implements android.widget.CompoundButton$OnCheckedChangeListener
+
+----------------FIELDS----------------
+
+final android.widget.RadioGroup this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.RadioGroup)
+
+ void <init>(
+android.widget.RadioGroup
+android.widget.RadioGroup$1)
+
+public void onCheckedChanged(
+android.widget.CompoundButton
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =LayoutParams )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/RadioGroup; )
+public class android.widget.RadioGroup$LayoutParams extends android.widget.LinearLayout$LayoutParams
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+int
+int)
+
+public void <init>(
+int
+int
+float)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.view.ViewGroup$LayoutParams)
+
+public void <init>(
+android.view.ViewGroup$MarginLayoutParams)
+
+protected void setBaseAttributes(
+android.content.res.TypedArray
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnCheckedChangeListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/RadioGroup; )
+public abstract interface class android.widget.RadioGroup$OnCheckedChangeListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onCheckedChanged(
+android.widget.RadioGroup
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/RadioGroup; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =PassThroughHierarchyChangeListener )
+ class android.widget.RadioGroup$PassThroughHierarchyChangeListener extends java.lang.Object implements android.view.ViewGroup$OnHierarchyChangeListener
+
+----------------FIELDS----------------
+
+private android.view.ViewGroup$OnHierarchyChangeListener mOnHierarchyChangeListener
+
+final android.widget.RadioGroup this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.RadioGroup)
+
+ void <init>(
+android.widget.RadioGroup
+android.widget.RadioGroup$1)
+
+static android.view.ViewGroup$OnHierarchyChangeListener access$202(
+android.widget.RadioGroup$PassThroughHierarchyChangeListener
+android.view.ViewGroup$OnHierarchyChangeListener)
+
+public void onChildViewAdded(
+android.view.View
+android.view.View)
+
+public void onChildViewRemoved(
+android.view.View
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/RadioGroup$1;Landroid/widget/RadioGroup$PassThroughHierarchyChangeListener;Landroid/widget/RadioGroup$CheckedStateTracker;Landroid/widget/RadioGroup$OnCheckedChangeListener;Landroid/widget/RadioGroup$LayoutParams; )
+public class android.widget.RadioGroup extends android.widget.LinearLayout
+
+----------------FIELDS----------------
+
+private int mCheckedId
+
+private android.widget.CompoundButton$OnCheckedChangeListener mChildOnCheckedChangeListener
+
+private android.widget.RadioGroup$OnCheckedChangeListener mOnCheckedChangeListener
+
+private android.widget.RadioGroup$PassThroughHierarchyChangeListener mPassThroughListener
+
+private boolean mProtectFromCheckedChange
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+static boolean access$300(
+android.widget.RadioGroup)
+
+static boolean access$302(
+android.widget.RadioGroup
+boolean)
+
+static int access$400(
+android.widget.RadioGroup)
+
+static void access$500(
+android.widget.RadioGroup
+int
+boolean)
+
+static void access$600(
+android.widget.RadioGroup
+int)
+
+static android.widget.CompoundButton$OnCheckedChangeListener access$700(
+android.widget.RadioGroup)
+
+private void init()
+
+private void setCheckedId(
+int)
+
+private void setCheckedStateForView(
+int
+boolean)
+
+public void check(
+int)
+
+protected boolean checkLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+public void clearCheck()
+
+protected volatile android.view.ViewGroup$LayoutParams generateDefaultLayoutParams()
+
+protected android.widget.LinearLayout$LayoutParams generateDefaultLayoutParams()
+
+public volatile android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+public volatile android.widget.LinearLayout$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+public android.widget.RadioGroup$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+public int getCheckedRadioButtonId()
+
+protected void onFinishInflate()
+
+public void setOnCheckedChangeListener(
+android.widget.RadioGroup$OnCheckedChangeListener)
+
+public void setOnHierarchyChangeListener(
+android.view.ViewGroup$OnHierarchyChangeListener)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnRatingBarChangeListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/RatingBar; )
+public abstract interface class android.widget.RatingBar$OnRatingBarChangeListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onRatingChanged(
+android.widget.RatingBar
+float
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/RatingBar$OnRatingBarChangeListener; )
+public class android.widget.RatingBar extends android.widget.AbsSeekBar
+
+----------------FIELDS----------------
+
+private int mNumStars
+
+private android.widget.RatingBar$OnRatingBarChangeListener mOnRatingBarChangeListener
+
+private int mProgressOnStartTracking
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+private float getProgressPerStar()
+
+private void updateSecondaryProgress(
+int)
+
+ void dispatchRatingChange(
+boolean)
+
+ android.graphics.drawable.shapes.Shape getDrawableShape()
+
+public int getNumStars()
+
+public android.widget.RatingBar$OnRatingBarChangeListener getOnRatingBarChangeListener()
+
+public float getRating()
+
+public float getStepSize()
+
+public boolean isIndicator()
+
+protected void onMeasure(
+int
+int)
+
+ void onProgressRefresh(
+float
+boolean)
+
+ void onStartTrackingTouch()
+
+ void onStopTrackingTouch()
+
+public void setIsIndicator(
+boolean)
+
+public void setMax(
+int)
+
+public void setNumStars(
+int)
+
+public void setOnRatingBarChangeListener(
+android.widget.RatingBar$OnRatingBarChangeListener)
+
+public void setRating(
+float)
+
+public void setStepSize(
+float)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/RelativeLayout; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =LayoutParams )
+public class android.widget.RelativeLayout$LayoutParams extends android.view.ViewGroup$MarginLayoutParams
+
+----------------FIELDS----------------
+
+public boolean alignWithParent
+
+private int mBottom
+
+private int mLeft
+
+private int mRight
+
+private int[] mRules
+
+private int mTop
+----------------METHODS----------------
+
+public void <init>(
+int
+int)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.view.ViewGroup$LayoutParams)
+
+public void <init>(
+android.view.ViewGroup$MarginLayoutParams)
+
+static int access$000(
+android.widget.RelativeLayout$LayoutParams)
+
+static int access$002(
+android.widget.RelativeLayout$LayoutParams
+int)
+
+static int access$012(
+android.widget.RelativeLayout$LayoutParams
+int)
+
+static int access$100(
+android.widget.RelativeLayout$LayoutParams)
+
+static int access$102(
+android.widget.RelativeLayout$LayoutParams
+int)
+
+static int access$112(
+android.widget.RelativeLayout$LayoutParams
+int)
+
+static int access$200(
+android.widget.RelativeLayout$LayoutParams)
+
+static int access$202(
+android.widget.RelativeLayout$LayoutParams
+int)
+
+static int access$212(
+android.widget.RelativeLayout$LayoutParams
+int)
+
+static int access$300(
+android.widget.RelativeLayout$LayoutParams)
+
+static int access$302(
+android.widget.RelativeLayout$LayoutParams
+int)
+
+static int access$312(
+android.widget.RelativeLayout$LayoutParams
+int)
+
+public void addRule(
+int)
+
+public void addRule(
+int
+int)
+
+public java.lang.String debug(
+java.lang.String)
+
+public int[] getRules()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/RemoteViews; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/widget/RemoteViews;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.widget.RemoteViews$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.widget.RemoteViews createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.widget.RemoteViews[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1034 name =Action )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/RemoteViews; )
+abstract class android.widget.RemoteViews$Action extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+android.widget.RemoteViews$1)
+@dalvik.annotation.Throws (value =Landroid/widget/RemoteViews$ActionException; )
+public abstract void apply(
+android.view.View)
+
+public int describeContents()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =ActionException )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/RemoteViews; )
+public class android.widget.RemoteViews$ActionException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!TYPE )
+@dalvik.annotation.InnerClass (accessFlags =9737 name =RemoteView )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/RemoteViews; )
+public abstract interface class android.widget.RemoteViews$RemoteView extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =SetChronometer )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/RemoteViews; )
+ class android.widget.RemoteViews$SetChronometer extends android.widget.RemoteViews$Action
+
+----------------FIELDS----------------
+
+public static final int TAG
+
+ long base
+
+ java.lang.String format
+
+ boolean running
+
+final android.widget.RemoteViews this$0
+
+ int viewId
+----------------METHODS----------------
+
+public void <init>(
+android.widget.RemoteViews
+int
+long
+java.lang.String
+boolean)
+
+public void <init>(
+android.widget.RemoteViews
+android.os.Parcel)
+
+public void apply(
+android.view.View)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/RemoteViews; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =SetImageViewResource )
+ class android.widget.RemoteViews$SetImageViewResource extends android.widget.RemoteViews$Action
+
+----------------FIELDS----------------
+
+public static final int TAG
+
+ int srcId
+
+final android.widget.RemoteViews this$0
+
+ int viewId
+----------------METHODS----------------
+
+public void <init>(
+android.widget.RemoteViews
+int
+int)
+
+public void <init>(
+android.widget.RemoteViews
+android.os.Parcel)
+
+public void apply(
+android.view.View)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =SetImageViewUri )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/RemoteViews; )
+ class android.widget.RemoteViews$SetImageViewUri extends android.widget.RemoteViews$Action
+
+----------------FIELDS----------------
+
+public static final int TAG
+
+final android.widget.RemoteViews this$0
+
+ android.net.Uri uri
+
+ int viewId
+----------------METHODS----------------
+
+public void <init>(
+android.widget.RemoteViews
+int
+android.net.Uri)
+
+public void <init>(
+android.widget.RemoteViews
+android.os.Parcel)
+
+public void apply(
+android.view.View)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =SetProgressBar )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/RemoteViews; )
+ class android.widget.RemoteViews$SetProgressBar extends android.widget.RemoteViews$Action
+
+----------------FIELDS----------------
+
+public static final int TAG
+
+ boolean indeterminate
+
+ int max
+
+ int progress
+
+final android.widget.RemoteViews this$0
+
+ int viewId
+----------------METHODS----------------
+
+public void <init>(
+android.widget.RemoteViews
+int
+int
+int
+boolean)
+
+public void <init>(
+android.widget.RemoteViews
+android.os.Parcel)
+
+public void apply(
+android.view.View)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =SetTextViewText )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/RemoteViews; )
+ class android.widget.RemoteViews$SetTextViewText extends android.widget.RemoteViews$Action
+
+----------------FIELDS----------------
+
+public static final int TAG
+
+ java.lang.CharSequence text
+
+final android.widget.RemoteViews this$0
+
+ int viewId
+----------------METHODS----------------
+
+public void <init>(
+android.widget.RemoteViews
+int
+java.lang.CharSequence)
+
+public void <init>(
+android.widget.RemoteViews
+android.os.Parcel)
+
+public void apply(
+android.view.View)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/RemoteViews; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =SetViewVisibility )
+ class android.widget.RemoteViews$SetViewVisibility extends android.widget.RemoteViews$Action
+
+----------------FIELDS----------------
+
+public static final int TAG
+
+final android.widget.RemoteViews this$0
+
+private int viewId
+
+private int visibility
+----------------METHODS----------------
+
+public void <init>(
+android.widget.RemoteViews
+int
+int)
+
+public void <init>(
+android.widget.RemoteViews
+android.os.Parcel)
+
+public void apply(
+android.view.View)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/RemoteViews$SetProgressBar;Landroid/widget/RemoteViews$SetChronometer;Landroid/widget/RemoteViews$SetImageViewUri;Landroid/widget/RemoteViews$SetImageViewResource;Landroid/widget/RemoteViews$SetTextViewText;Landroid/widget/RemoteViews$SetViewVisibility;Landroid/widget/RemoteViews$Action;Landroid/widget/RemoteViews$ActionException;Landroid/widget/RemoteViews$RemoteView; )
+public class android.widget.RemoteViews extends java.lang.Object implements android.os.Parcelable, android.view.LayoutInflater$Filter
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/widget/RemoteViews;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+private static final java.lang.String LOG_TAG
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/widget/RemoteViews$Action;>; )
+private java.util.ArrayList mActions
+
+private android.content.Context mContext
+
+private int mLayoutId
+
+private java.lang.String mPackage
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.os.Parcel)
+
+public void <init>(
+java.lang.String
+int)
+
+static android.content.Context access$100(
+android.widget.RemoteViews)
+
+private void addAction(
+android.widget.RemoteViews$Action)
+
+private void performApply(
+android.view.View)
+
+private android.content.Context prepareContext(
+android.content.Context)
+
+public android.view.View apply(
+android.content.Context
+android.view.ViewGroup)
+
+public int describeContents()
+
+public int getLayoutId()
+
+public java.lang.String getPackage()
+
+public boolean onLoadClass(
+java.lang.Class)
+
+public void reapply(
+android.content.Context
+android.view.View)
+
+public void setChronometer(
+int
+long
+java.lang.String
+boolean)
+
+public void setImageViewResource(
+int
+int)
+
+public void setImageViewUri(
+int
+android.net.Uri)
+
+public void setProgressBar(
+int
+int
+int
+boolean)
+
+public void setTextViewText(
+int
+java.lang.CharSequence)
+
+public void setViewVisibility(
+int
+int)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public abstract class android.widget.ResourceCursorTreeAdapter extends android.widget.CursorTreeAdapter
+
+----------------FIELDS----------------
+
+private int mChildLayout
+
+private int mCollapsedGroupLayout
+
+private int mExpandedGroupLayout
+
+private android.view.LayoutInflater mInflater
+
+private int mLastChildLayout
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.database.Cursor
+int
+int)
+
+public void <init>(
+android.content.Context
+android.database.Cursor
+int
+int
+int)
+
+public void <init>(
+android.content.Context
+android.database.Cursor
+int
+int
+int
+int)
+
+public android.view.View newChildView(
+android.content.Context
+android.database.Cursor
+boolean
+android.view.ViewGroup)
+
+public android.view.View newGroupView(
+android.content.Context
+android.database.Cursor
+boolean
+android.view.ViewGroup)
+
+________________CLASS________________
+
+
+public class android.widget.ScrollBarDrawable extends android.graphics.drawable.Drawable
+
+----------------FIELDS----------------
+
+private boolean mAlwaysDrawHorizontalTrack
+
+private boolean mAlwaysDrawVerticalTrack
+
+private boolean mChanged
+
+private int mExtent
+
+private android.graphics.drawable.Drawable mHorizontalThumb
+
+private android.graphics.drawable.Drawable mHorizontalTrack
+
+private int mOffset
+
+private int mRange
+
+private boolean mRangeChanged
+
+private final android.graphics.Rect mTempBounds
+
+private boolean mVertical
+
+private android.graphics.drawable.Drawable mVerticalThumb
+
+private android.graphics.drawable.Drawable mVerticalTrack
+----------------METHODS----------------
+
+public void <init>()
+
+public void draw(
+android.graphics.Canvas)
+
+protected void drawThumb(
+android.graphics.Canvas
+android.graphics.Rect
+int
+int
+boolean)
+
+protected void drawTrack(
+android.graphics.Canvas
+android.graphics.Rect
+boolean)
+
+public boolean getAlwaysDrawHorizontalTrack()
+
+public boolean getAlwaysDrawVerticalTrack()
+
+public int getOpacity()
+
+public int getSize(
+boolean)
+
+protected void onBoundsChange(
+android.graphics.Rect)
+
+public void setAlpha(
+int)
+
+public void setAlwaysDrawHorizontalTrack(
+boolean)
+
+public void setAlwaysDrawVerticalTrack(
+boolean)
+
+public void setColorFilter(
+android.graphics.ColorFilter)
+
+public void setHorizontalThumbDrawable(
+android.graphics.drawable.Drawable)
+
+public void setHorizontalTrackDrawable(
+android.graphics.drawable.Drawable)
+
+public void setParameters(
+int
+int
+int
+boolean)
+
+public void setVerticalThumbDrawable(
+android.graphics.drawable.Drawable)
+
+public void setVerticalTrackDrawable(
+android.graphics.drawable.Drawable)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class android.widget.ScrollView extends android.widget.FrameLayout
+
+----------------FIELDS----------------
+
+private static final int ANIMATED_SCROLL_GAP
+
+private static final float MAX_SCROLL_FACTOR
+
+private android.view.View mChildToScrollTo
+
+private boolean mFillViewport
+
+private boolean mIsBeingDragged
+
+private boolean mIsLayoutDirty
+
+private float mLastMotionY
+
+private long mLastScroll
+
+private boolean mScrollViewMovedFocus
+
+private android.widget.Scroller mScroller
+
+private boolean mSmoothScrollingEnabled
+
+private final android.graphics.Rect mTempRect
+
+private android.view.VelocityTracker mVelocityTracker
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+private boolean canScroll()
+
+private int clamp(
+int
+int
+int)
+
+private void doScrollY(
+int)
+
+private android.view.View findFocusableViewInBounds(
+boolean
+int
+int)
+
+private android.view.View findFocusableViewInMyBounds(
+boolean
+int
+android.view.View)
+
+private void initScrollView()
+
+private boolean isOffScreen(
+android.view.View)
+
+private boolean isViewDescendantOf(
+android.view.View
+android.view.View)
+
+private boolean isWithinDeltaOfScreen(
+android.view.View
+int)
+
+private boolean scrollAndFocus(
+int
+int
+int)
+
+private void scrollToChild(
+android.view.View)
+
+private boolean scrollToChildRect(
+android.graphics.Rect
+boolean)
+
+public void addView(
+android.view.View)
+
+public void addView(
+android.view.View
+int)
+
+public void addView(
+android.view.View
+int
+android.view.ViewGroup$LayoutParams)
+
+public void addView(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+public boolean arrowScroll(
+int)
+
+public void computeScroll()
+
+protected int computeScrollDeltaToGetChildRectOnScreen(
+android.graphics.Rect)
+
+protected int computeVerticalScrollRange()
+
+public boolean dispatchKeyEvent(
+android.view.KeyEvent)
+
+public boolean executeKeyEvent(
+android.view.KeyEvent)
+
+public void fling(
+int)
+
+public boolean fullScroll(
+int)
+
+protected float getBottomFadingEdgeStrength()
+
+public int getMaxScrollAmount()
+
+protected float getTopFadingEdgeStrength()
+
+public boolean isFillViewport()
+
+public boolean isSmoothScrollingEnabled()
+
+protected void measureChild(
+android.view.View
+int
+int)
+
+protected void measureChildWithMargins(
+android.view.View
+int
+int
+int
+int)
+
+public boolean onInterceptTouchEvent(
+android.view.MotionEvent)
+
+protected void onLayout(
+boolean
+int
+int
+int
+int)
+
+protected void onMeasure(
+int
+int)
+
+protected boolean onRequestFocusInDescendants(
+int
+android.graphics.Rect)
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+public boolean pageScroll(
+int)
+
+public void requestChildFocus(
+android.view.View
+android.view.View)
+
+public boolean requestChildRectangleOnScreen(
+android.view.View
+android.graphics.Rect
+boolean)
+
+public void requestLayout()
+
+public void scrollTo(
+int
+int)
+
+public void setFillViewport(
+boolean)
+
+public void setSmoothScrollingEnabled(
+boolean)
+
+public final void smoothScrollBy(
+int
+int)
+
+public final void smoothScrollTo(
+int
+int)
+
+________________CLASS________________
+
+
+public class android.widget.Scroller extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int DEFAULT_DURATION
+
+private static final int FLING_MODE
+
+private static final int SCROLL_MODE
+
+private float mCoeffX
+
+private float mCoeffY
+
+private int mCurrX
+
+private int mCurrY
+
+private final float mDeceleration
+
+private float mDeltaX
+
+private float mDeltaY
+
+private int mDuration
+
+private float mDurationReciprocal
+
+private int mFinalX
+
+private int mFinalY
+
+private boolean mFinished
+
+private android.view.animation.Interpolator mInterpolator
+
+private int mMaxX
+
+private int mMaxY
+
+private int mMinX
+
+private int mMinY
+
+private int mMode
+
+private long mStartTime
+
+private int mStartX
+
+private int mStartY
+
+private float mVelocity
+
+private float mViscousFluidNormalize
+
+private float mViscousFluidScale
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.view.animation.Interpolator)
+
+private float viscousFluid(
+float)
+
+public void abortAnimation()
+
+public boolean computeScrollOffset()
+
+public void extendDuration(
+int)
+
+public void fling(
+int
+int
+int
+int
+int
+int
+int
+int)
+
+public final void forceFinished(
+boolean)
+
+public final int getCurrX()
+
+public final int getCurrY()
+
+public final int getDuration()
+
+public final int getFinalX()
+
+public final int getFinalY()
+
+public final boolean isFinished()
+
+public void setFinalX(
+int)
+
+public void setFinalY(
+int)
+
+public void startScroll(
+int
+int
+int
+int)
+
+public void startScroll(
+int
+int
+int
+int
+int)
+
+public int timePassed()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/SeekBar$OnSeekBarChangeListener; )
+public class android.widget.SeekBar extends android.widget.AbsSeekBar
+
+----------------FIELDS----------------
+
+private android.widget.SeekBar$OnSeekBarChangeListener mOnSeekBarChangeListener
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+ void onProgressRefresh(
+float
+boolean)
+
+ void onStartTrackingTouch()
+
+ void onStopTrackingTouch()
+
+public void setOnSeekBarChangeListener(
+android.widget.SeekBar$OnSeekBarChangeListener)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/SimpleAdapter; )
+ class android.widget.SimpleAdapter$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/SimpleAdapter; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =SimpleFilter )
+ class android.widget.SimpleAdapter$SimpleFilter extends android.widget.Filter
+
+----------------FIELDS----------------
+
+final android.widget.SimpleAdapter this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.SimpleAdapter)
+
+ void <init>(
+android.widget.SimpleAdapter
+android.widget.SimpleAdapter$1)
+
+protected android.widget.Filter$FilterResults performFiltering(
+java.lang.CharSequence)
+
+protected void publishResults(
+java.lang.CharSequence
+android.widget.Filter$FilterResults)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/SimpleAdapter; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ViewBinder )
+public abstract interface class android.widget.SimpleAdapter$ViewBinder extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean setViewValue(
+android.view.View
+java.lang.Object
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/SimpleAdapter$1;Landroid/widget/SimpleAdapter$SimpleFilter;Landroid/widget/SimpleAdapter$ViewBinder; )
+public class android.widget.SimpleAdapter extends android.widget.BaseAdapter implements android.widget.Filterable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/List<+Ljava/util/Map<Ljava/lang/String;*>;>; )
+private java.util.List mData
+
+private int mDropDownResource
+
+private android.widget.SimpleAdapter$SimpleFilter mFilter
+
+private java.lang.String[] mFrom
+
+private android.view.LayoutInflater mInflater
+
+private int mResource
+
+private int[] mTo
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/util/Map<Ljava/lang/String;*>;>; )
+private java.util.ArrayList mUnfilteredData
+
+private android.widget.SimpleAdapter$ViewBinder mViewBinder
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Landroid/content/Context;Ljava/util/List<+Ljava/util/Map<Ljava/lang/String;*>;>;I[Ljava/lang/String;[I)V )
+public void <init>(
+android.content.Context
+java.util.List
+int
+java.lang.String[]
+int[])
+
+static java.util.ArrayList access$100(
+android.widget.SimpleAdapter)
+
+static java.util.ArrayList access$102(
+android.widget.SimpleAdapter
+java.util.ArrayList)
+
+static java.util.List access$200(
+android.widget.SimpleAdapter)
+
+static java.util.List access$202(
+android.widget.SimpleAdapter
+java.util.List)
+
+static int[] access$300(
+android.widget.SimpleAdapter)
+
+static java.lang.String[] access$400(
+android.widget.SimpleAdapter)
+
+private void bindView(
+int
+android.view.View)
+
+private android.view.View createViewFromResource(
+int
+android.view.View
+android.view.ViewGroup
+int)
+
+public int getCount()
+
+public android.view.View getDropDownView(
+int
+android.view.View
+android.view.ViewGroup)
+
+public android.widget.Filter getFilter()
+
+public java.lang.Object getItem(
+int)
+
+public long getItemId(
+int)
+
+public android.view.View getView(
+int
+android.view.View
+android.view.ViewGroup)
+
+public android.widget.SimpleAdapter$ViewBinder getViewBinder()
+
+public void setDropDownViewResource(
+int)
+
+public void setViewBinder(
+android.widget.SimpleAdapter$ViewBinder)
+
+public void setViewImage(
+android.widget.ImageView
+int)
+
+public void setViewImage(
+android.widget.ImageView
+java.lang.String)
+
+public void setViewText(
+android.widget.TextView
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =CursorToStringConverter )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/SimpleCursorAdapter; )
+public abstract interface class android.widget.SimpleCursorAdapter$CursorToStringConverter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.CharSequence convertToString(
+android.database.Cursor)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/SimpleCursorAdapter; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ViewBinder )
+public abstract interface class android.widget.SimpleCursorAdapter$ViewBinder extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean setViewValue(
+android.view.View
+android.database.Cursor
+int)
+
+________________CLASS________________
+
+
+public abstract class android.widget.SimpleCursorTreeAdapter extends android.widget.ResourceCursorTreeAdapter
+
+----------------FIELDS----------------
+
+private int[] mChildFrom
+
+private int[] mChildTo
+
+private int[] mGroupFrom
+
+private int[] mGroupTo
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.database.Cursor
+int
+int
+java.lang.String[]
+int[]
+int
+int
+java.lang.String[]
+int[])
+
+public void <init>(
+android.content.Context
+android.database.Cursor
+int
+int
+java.lang.String[]
+int[]
+int
+java.lang.String[]
+int[])
+
+public void <init>(
+android.content.Context
+android.database.Cursor
+int
+java.lang.String[]
+int[]
+int
+java.lang.String[]
+int[])
+
+private void bindView(
+android.view.View
+android.content.Context
+android.database.Cursor
+int[]
+int[])
+
+private void init(
+java.lang.String[]
+int[]
+java.lang.String[]
+int[])
+
+private void initChildrenFromColumns(
+java.lang.String[]
+android.database.Cursor)
+
+private void initFromColumns(
+android.database.Cursor
+java.lang.String[]
+int[])
+
+private void initGroupFromColumns(
+java.lang.String[])
+
+protected void bindChildView(
+android.view.View
+android.content.Context
+android.database.Cursor
+boolean)
+
+protected void bindGroupView(
+android.view.View
+android.content.Context
+android.database.Cursor
+boolean)
+
+protected void setViewImage(
+android.widget.ImageView
+java.lang.String)
+
+________________CLASS________________
+
+
+public class android.widget.SimpleExpandableListAdapter extends android.widget.BaseExpandableListAdapter
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/List<+Ljava/util/List<+Ljava/util/Map<Ljava/lang/String;*>;>;>; )
+private java.util.List mChildData
+
+private java.lang.String[] mChildFrom
+
+private int mChildLayout
+
+private int[] mChildTo
+
+private int mCollapsedGroupLayout
+
+private int mExpandedGroupLayout
+@dalvik.annotation.Signature (value =Ljava/util/List<+Ljava/util/Map<Ljava/lang/String;*>;>; )
+private java.util.List mGroupData
+
+private java.lang.String[] mGroupFrom
+
+private int[] mGroupTo
+
+private android.view.LayoutInflater mInflater
+
+private int mLastChildLayout
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Landroid/content/Context;Ljava/util/List<+Ljava/util/Map<Ljava/lang/String;*>;>;II[Ljava/lang/String;[ILjava/util/List<+Ljava/util/List<+Ljava/util/Map<Ljava/lang/String;*>;>;>;II[Ljava/lang/String;[I)V )
+public void <init>(
+android.content.Context
+java.util.List
+int
+int
+java.lang.String[]
+int[]
+java.util.List
+int
+int
+java.lang.String[]
+int[])
+@dalvik.annotation.Signature (value =(Landroid/content/Context;Ljava/util/List<+Ljava/util/Map<Ljava/lang/String;*>;>;II[Ljava/lang/String;[ILjava/util/List<+Ljava/util/List<+Ljava/util/Map<Ljava/lang/String;*>;>;>;I[Ljava/lang/String;[I)V )
+public void <init>(
+android.content.Context
+java.util.List
+int
+int
+java.lang.String[]
+int[]
+java.util.List
+int
+java.lang.String[]
+int[])
+@dalvik.annotation.Signature (value =(Landroid/content/Context;Ljava/util/List<+Ljava/util/Map<Ljava/lang/String;*>;>;I[Ljava/lang/String;[ILjava/util/List<+Ljava/util/List<+Ljava/util/Map<Ljava/lang/String;*>;>;>;I[Ljava/lang/String;[I)V )
+public void <init>(
+android.content.Context
+java.util.List
+int
+java.lang.String[]
+int[]
+java.util.List
+int
+java.lang.String[]
+int[])
+@dalvik.annotation.Signature (value =(Landroid/view/View;Ljava/util/Map<Ljava/lang/String;*>;[Ljava/lang/String;[I)V )
+private void bindView(
+android.view.View
+java.util.Map
+java.lang.String[]
+int[])
+
+public java.lang.Object getChild(
+int
+int)
+
+public long getChildId(
+int
+int)
+
+public android.view.View getChildView(
+int
+int
+boolean
+android.view.View
+android.view.ViewGroup)
+
+public int getChildrenCount(
+int)
+
+public java.lang.Object getGroup(
+int)
+
+public int getGroupCount()
+
+public long getGroupId(
+int)
+
+public android.view.View getGroupView(
+int
+boolean
+android.view.View
+android.view.ViewGroup)
+
+public boolean hasStableIds()
+
+public boolean isChildSelectable(
+int
+int)
+
+public android.view.View newChildView(
+boolean
+android.view.ViewGroup)
+
+public android.view.View newGroupView(
+boolean
+android.view.ViewGroup)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/Spinner; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =DropDownAdapter )
+ class android.widget.Spinner$DropDownAdapter extends java.lang.Object implements android.widget.ListAdapter, android.widget.SpinnerAdapter
+
+----------------FIELDS----------------
+
+private android.widget.SpinnerAdapter mAdapter
+----------------METHODS----------------
+
+public void <init>(
+android.widget.SpinnerAdapter)
+
+public boolean areAllItemsEnabled()
+
+public int getCount()
+
+public android.view.View getDropDownView(
+int
+android.view.View
+android.view.ViewGroup)
+
+public java.lang.Object getItem(
+int)
+
+public long getItemId(
+int)
+
+public int getItemViewType(
+int)
+
+public android.view.View getView(
+int
+android.view.View
+android.view.ViewGroup)
+
+public int getViewTypeCount()
+
+public boolean hasStableIds()
+
+public boolean isEmpty()
+
+public boolean isEnabled(
+int)
+
+public void registerDataSetObserver(
+android.database.DataSetObserver)
+
+public void unregisterDataSetObserver(
+android.database.DataSetObserver)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/Spinner$DropDownAdapter; )
+public class android.widget.Spinner extends android.widget.AbsSpinner implements android.content.DialogInterface$OnClickListener
+
+----------------FIELDS----------------
+
+private java.lang.CharSequence mPrompt
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+private android.view.View makeAndAddView(
+int)
+
+private void setUpChild(
+android.view.View)
+
+public int getBaseline()
+
+public java.lang.CharSequence getPrompt()
+
+ void layout(
+int
+boolean)
+
+public void onClick(
+android.content.DialogInterface
+int)
+
+protected void onLayout(
+boolean
+int
+int
+int
+int)
+
+public boolean performClick()
+
+public void setOnItemClickListener(
+android.widget.AdapterView$OnItemClickListener)
+
+public void setPrompt(
+java.lang.CharSequence)
+
+public void setPromptId(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.widget.TabHost$1 extends java.lang.Object implements android.view.View$OnKeyListener
+
+----------------FIELDS----------------
+
+final android.widget.TabHost this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.TabHost)
+
+public boolean onKey(
+android.view.View
+int
+android.view.KeyEvent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TabWidget; )
+@dalvik.annotation.InnerClass (accessFlags =1544 name =OnTabSelectionChanged )
+abstract interface class android.widget.TabWidget$OnTabSelectionChanged extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onTabSelectionChanged(
+int
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.widget.TabHost$2 extends java.lang.Object implements android.widget.TabWidget$OnTabSelectionChanged
+
+----------------FIELDS----------------
+
+final android.widget.TabHost this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.TabHost)
+
+public void onTabSelectionChanged(
+int
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TabHost; )
+@dalvik.annotation.InnerClass (accessFlags =1546 name =ContentStrategy )
+abstract interface class android.widget.TabHost$ContentStrategy extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.view.View getContentView()
+
+public abstract void tabClosed()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =FactoryContentStrategy )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TabHost; )
+ class android.widget.TabHost$FactoryContentStrategy extends java.lang.Object implements android.widget.TabHost$ContentStrategy
+
+----------------FIELDS----------------
+
+private android.widget.TabHost$TabContentFactory mFactory
+
+private android.view.View mTabContent
+
+private final java.lang.CharSequence mTag
+
+final android.widget.TabHost this$0
+----------------METHODS----------------
+
+public void <init>(
+android.widget.TabHost
+java.lang.CharSequence
+android.widget.TabHost$TabContentFactory)
+
+public android.view.View getContentView()
+
+public void tabClosed()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TabHost; )
+@dalvik.annotation.InnerClass (accessFlags =1546 name =IndicatorStrategy )
+abstract interface class android.widget.TabHost$IndicatorStrategy extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.view.View createIndicatorView()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TabHost; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =IntentContentStrategy )
+ class android.widget.TabHost$IntentContentStrategy extends java.lang.Object implements android.widget.TabHost$ContentStrategy
+
+----------------FIELDS----------------
+
+private final android.content.Intent mIntent
+
+private android.view.View mLaunchedView
+
+private final java.lang.String mTag
+
+final android.widget.TabHost this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.TabHost
+java.lang.String
+android.content.Intent)
+
+ void <init>(
+android.widget.TabHost
+java.lang.String
+android.content.Intent
+android.widget.TabHost$1)
+
+public android.view.View getContentView()
+
+public void tabClosed()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =LabelAndIconIndicatorStategy )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TabHost; )
+ class android.widget.TabHost$LabelAndIconIndicatorStategy extends java.lang.Object implements android.widget.TabHost$IndicatorStrategy
+
+----------------FIELDS----------------
+
+private final android.graphics.drawable.Drawable mIcon
+
+private final java.lang.CharSequence mLabel
+
+final android.widget.TabHost this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.TabHost
+java.lang.CharSequence
+android.graphics.drawable.Drawable)
+
+ void <init>(
+android.widget.TabHost
+java.lang.CharSequence
+android.graphics.drawable.Drawable
+android.widget.TabHost$1)
+
+public android.view.View createIndicatorView()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TabHost; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =LabelIndicatorStrategy )
+ class android.widget.TabHost$LabelIndicatorStrategy extends java.lang.Object implements android.widget.TabHost$IndicatorStrategy
+
+----------------FIELDS----------------
+
+private final java.lang.CharSequence mLabel
+
+final android.widget.TabHost this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.TabHost
+java.lang.CharSequence)
+
+ void <init>(
+android.widget.TabHost
+java.lang.CharSequence
+android.widget.TabHost$1)
+
+public android.view.View createIndicatorView()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TabHost; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnTabChangeListener )
+public abstract interface class android.widget.TabHost$OnTabChangeListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onTabChanged(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TabHost; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =TabContentFactory )
+public abstract interface class android.widget.TabHost$TabContentFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.view.View createTabContent(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1 name =TabSpec )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TabHost; )
+public class android.widget.TabHost$TabSpec extends java.lang.Object
+
+----------------FIELDS----------------
+
+private android.widget.TabHost$ContentStrategy mContentStrategy
+
+private android.widget.TabHost$IndicatorStrategy mIndicatorStrategy
+
+private java.lang.String mTag
+
+final android.widget.TabHost this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.TabHost
+java.lang.String)
+
+ void <init>(
+android.widget.TabHost
+java.lang.String
+android.widget.TabHost$1)
+
+static android.widget.TabHost$IndicatorStrategy access$200(
+android.widget.TabHost$TabSpec)
+
+static android.widget.TabHost$ContentStrategy access$300(
+android.widget.TabHost$TabSpec)
+
+ java.lang.String getTag()
+
+public android.widget.TabHost$TabSpec setContent(
+int)
+
+public android.widget.TabHost$TabSpec setContent(
+android.content.Intent)
+
+public android.widget.TabHost$TabSpec setContent(
+android.widget.TabHost$TabContentFactory)
+
+public android.widget.TabHost$TabSpec setIndicator(
+java.lang.CharSequence)
+
+public android.widget.TabHost$TabSpec setIndicator(
+java.lang.CharSequence
+android.graphics.drawable.Drawable)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TabHost; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =ViewIdContentStrategy )
+ class android.widget.TabHost$ViewIdContentStrategy extends java.lang.Object implements android.widget.TabHost$ContentStrategy
+
+----------------FIELDS----------------
+
+private final android.view.View mView
+
+final android.widget.TabHost this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.TabHost
+int)
+
+ void <init>(
+android.widget.TabHost
+int
+android.widget.TabHost$1)
+
+public android.view.View getContentView()
+
+public void tabClosed()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/TabHost$IntentContentStrategy;Landroid/widget/TabHost$FactoryContentStrategy;Landroid/widget/TabHost$ViewIdContentStrategy;Landroid/widget/TabHost$LabelAndIconIndicatorStategy;Landroid/widget/TabHost$LabelIndicatorStrategy;Landroid/widget/TabHost$ContentStrategy;Landroid/widget/TabHost$IndicatorStrategy;Landroid/widget/TabHost$TabSpec;Landroid/widget/TabHost$TabContentFactory;Landroid/widget/TabHost$OnTabChangeListener; )
+public class android.widget.TabHost extends android.widget.FrameLayout implements android.view.ViewTreeObserver$OnTouchModeChangeListener
+
+----------------FIELDS----------------
+
+protected int mCurrentTab
+
+private android.view.View mCurrentView
+
+protected android.app.LocalActivityManager mLocalActivityManager
+
+private android.widget.TabHost$OnTabChangeListener mOnTabChangeListener
+
+private android.widget.FrameLayout mTabContent
+
+private android.view.View$OnKeyListener mTabKeyListener
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/widget/TabHost$TabSpec;>; )
+private java.util.List mTabSpecs
+
+private android.widget.TabWidget mTabWidget
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+static android.widget.FrameLayout access$100(
+android.widget.TabHost)
+
+static android.widget.TabWidget access$800(
+android.widget.TabHost)
+
+private final void initTabHost()
+
+private void invokeOnTabChangeListener()
+
+public void addTab(
+android.widget.TabHost$TabSpec)
+
+public void clearAllTabs()
+
+public boolean dispatchKeyEvent(
+android.view.KeyEvent)
+
+public void dispatchWindowFocusChanged(
+boolean)
+
+public int getCurrentTab()
+
+public java.lang.String getCurrentTabTag()
+
+public android.view.View getCurrentTabView()
+
+public android.view.View getCurrentView()
+
+public android.widget.FrameLayout getTabContentView()
+
+public android.widget.TabWidget getTabWidget()
+
+public android.widget.TabHost$TabSpec newTabSpec(
+java.lang.String)
+
+protected void onAttachedToWindow()
+
+protected void onDetachedFromWindow()
+
+public void onTouchModeChanged(
+boolean)
+
+public void setCurrentTab(
+int)
+
+public void setCurrentTabByTag(
+java.lang.String)
+
+public void setOnTabChangedListener(
+android.widget.TabHost$OnTabChangeListener)
+
+public void setup()
+
+public void setup(
+android.app.LocalActivityManager)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TabWidget; )
+ class android.widget.TabWidget$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TabWidget; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =TabClickListener )
+ class android.widget.TabWidget$TabClickListener extends java.lang.Object implements android.view.View$OnClickListener
+
+----------------FIELDS----------------
+
+private final int mTabIndex
+
+final android.widget.TabWidget this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.TabWidget
+int)
+
+ void <init>(
+android.widget.TabWidget
+int
+android.widget.TabWidget$1)
+
+public void onClick(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/TabWidget$1;Landroid/widget/TabWidget$OnTabSelectionChanged;Landroid/widget/TabWidget$TabClickListener; )
+public class android.widget.TabWidget extends android.widget.LinearLayout implements android.view.View$OnFocusChangeListener
+
+----------------FIELDS----------------
+
+private android.graphics.drawable.Drawable mBottomLeftStrip
+
+private android.graphics.drawable.Drawable mBottomRightStrip
+
+private int mSelectedTab
+
+private android.widget.TabWidget$OnTabSelectionChanged mSelectionChangedListener
+
+private boolean mStripMoved
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static android.widget.TabWidget$OnTabSelectionChanged access$100(
+android.widget.TabWidget)
+
+private void initTabWidget()
+
+public void addView(
+android.view.View)
+
+public void childDrawableStateChanged(
+android.view.View)
+
+public void dispatchDraw(
+android.graphics.Canvas)
+
+public void focusCurrentTab(
+int)
+
+public void onFocusChange(
+android.view.View
+boolean)
+
+protected void onSizeChanged(
+int
+int
+int
+int)
+
+public void setCurrentTab(
+int)
+
+public void setEnabled(
+boolean)
+
+ void setTabSelectionListener(
+android.widget.TabWidget$OnTabSelectionChanged)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TableLayout; )
+ class android.widget.TableLayout$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =LayoutParams )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TableLayout; )
+public class android.widget.TableLayout$LayoutParams extends android.widget.LinearLayout$LayoutParams
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int
+int)
+
+public void <init>(
+int
+int
+float)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.view.ViewGroup$LayoutParams)
+
+public void <init>(
+android.view.ViewGroup$MarginLayoutParams)
+
+protected void setBaseAttributes(
+android.content.res.TypedArray
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =PassThroughHierarchyChangeListener )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TableLayout; )
+ class android.widget.TableLayout$PassThroughHierarchyChangeListener extends java.lang.Object implements android.view.ViewGroup$OnHierarchyChangeListener
+
+----------------FIELDS----------------
+
+private android.view.ViewGroup$OnHierarchyChangeListener mOnHierarchyChangeListener
+
+final android.widget.TableLayout this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.TableLayout)
+
+ void <init>(
+android.widget.TableLayout
+android.widget.TableLayout$1)
+
+static android.view.ViewGroup$OnHierarchyChangeListener access$102(
+android.widget.TableLayout$PassThroughHierarchyChangeListener
+android.view.ViewGroup$OnHierarchyChangeListener)
+
+public void onChildViewAdded(
+android.view.View
+android.view.View)
+
+public void onChildViewRemoved(
+android.view.View
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/TableLayout$1;Landroid/widget/TableLayout$PassThroughHierarchyChangeListener;Landroid/widget/TableLayout$LayoutParams; )
+public class android.widget.TableLayout extends android.widget.LinearLayout
+
+----------------FIELDS----------------
+
+private android.util.SparseBooleanArray mCollapsedColumns
+
+private boolean mInitialized
+
+private int[] mMaxWidths
+
+private android.widget.TableLayout$PassThroughHierarchyChangeListener mPassThroughListener
+
+private boolean mShrinkAllColumns
+
+private android.util.SparseBooleanArray mShrinkableColumns
+
+private boolean mStretchAllColumns
+
+private android.util.SparseBooleanArray mStretchableColumns
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+static void access$200(
+android.widget.TableLayout
+android.view.View)
+
+private void findLargestCells(
+int)
+
+private void initTableLayout()
+
+private void mutateColumnsWidth(
+android.util.SparseBooleanArray
+boolean
+int
+int)
+
+private static android.util.SparseBooleanArray parseColumns(
+java.lang.String)
+
+private void requestRowsLayout()
+
+private void shrinkAndStretchColumns(
+int)
+
+private void trackCollapsedColumns(
+android.view.View)
+
+public void addView(
+android.view.View)
+
+public void addView(
+android.view.View
+int)
+
+public void addView(
+android.view.View
+int
+android.view.ViewGroup$LayoutParams)
+
+public void addView(
+android.view.View
+android.view.ViewGroup$LayoutParams)
+
+protected boolean checkLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+protected volatile android.view.ViewGroup$LayoutParams generateDefaultLayoutParams()
+
+protected android.widget.LinearLayout$LayoutParams generateDefaultLayoutParams()
+
+public volatile android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+protected volatile android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+public volatile android.widget.LinearLayout$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+protected android.widget.LinearLayout$LayoutParams generateLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+public android.widget.TableLayout$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+public boolean isColumnCollapsed(
+int)
+
+public boolean isColumnShrinkable(
+int)
+
+public boolean isColumnStretchable(
+int)
+
+public boolean isShrinkAllColumns()
+
+public boolean isStretchAllColumns()
+
+ void measureChildBeforeLayout(
+android.view.View
+int
+int
+int
+int
+int)
+
+ void measureVertical(
+int
+int)
+
+protected void onLayout(
+boolean
+int
+int
+int
+int)
+
+protected void onMeasure(
+int
+int)
+
+public void requestLayout()
+
+public void setColumnCollapsed(
+int
+boolean)
+
+public void setColumnShrinkable(
+int
+boolean)
+
+public void setColumnStretchable(
+int
+boolean)
+
+public void setOnHierarchyChangeListener(
+android.view.ViewGroup$OnHierarchyChangeListener)
+
+public void setShrinkAllColumns(
+boolean)
+
+public void setStretchAllColumns(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TableRow; )
+ class android.widget.TableRow$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TableRow; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =ChildrenTracker )
+ class android.widget.TableRow$ChildrenTracker extends java.lang.Object implements android.view.ViewGroup$OnHierarchyChangeListener
+
+----------------FIELDS----------------
+
+private android.view.ViewGroup$OnHierarchyChangeListener listener
+
+final android.widget.TableRow this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.TableRow)
+
+ void <init>(
+android.widget.TableRow
+android.widget.TableRow$1)
+
+static void access$100(
+android.widget.TableRow$ChildrenTracker
+android.view.ViewGroup$OnHierarchyChangeListener)
+
+private void setOnHierarchyChangeListener(
+android.view.ViewGroup$OnHierarchyChangeListener)
+
+public void onChildViewAdded(
+android.view.View
+android.view.View)
+
+public void onChildViewRemoved(
+android.view.View
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TableRow; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =LayoutParams )
+public class android.widget.TableRow$LayoutParams extends android.widget.LinearLayout$LayoutParams
+
+----------------FIELDS----------------
+
+private static final int LOCATION
+
+private static final int LOCATION_NEXT
+@android.view.ViewDebug$ExportedProperty
+public int column
+
+private int[] mOffset
+@android.view.ViewDebug$ExportedProperty
+public int span
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+int
+int)
+
+public void <init>(
+int
+int
+float)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.view.ViewGroup$LayoutParams)
+
+public void <init>(
+android.view.ViewGroup$MarginLayoutParams)
+
+static int[] access$200(
+android.widget.TableRow$LayoutParams)
+
+protected void setBaseAttributes(
+android.content.res.TypedArray
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/TableRow$1;Landroid/widget/TableRow$ChildrenTracker;Landroid/widget/TableRow$LayoutParams; )
+public class android.widget.TableRow extends android.widget.LinearLayout
+
+----------------FIELDS----------------
+
+private android.widget.TableRow$ChildrenTracker mChildrenTracker
+
+private android.util.SparseIntArray mColumnToChildIndex
+
+private int[] mColumnWidths
+
+private int[] mConstrainedColumnWidths
+
+private int mNumColumns
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+static android.util.SparseIntArray access$302(
+android.widget.TableRow
+android.util.SparseIntArray)
+
+private void initTableRow()
+
+private void mapIndexAndColumns()
+
+protected boolean checkLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+protected volatile android.view.ViewGroup$LayoutParams generateDefaultLayoutParams()
+
+protected android.widget.LinearLayout$LayoutParams generateDefaultLayoutParams()
+
+public volatile android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+protected volatile android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+public volatile android.widget.LinearLayout$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+protected android.widget.LinearLayout$LayoutParams generateLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+public android.widget.TableRow$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+ int getChildrenSkipCount(
+android.view.View
+int)
+
+ int[] getColumnsWidths(
+int)
+
+ int getLocationOffset(
+android.view.View)
+
+ int getNextLocationOffset(
+android.view.View)
+
+public android.view.View getVirtualChildAt(
+int)
+
+public int getVirtualChildCount()
+
+ void measureChildBeforeLayout(
+android.view.View
+int
+int
+int
+int
+int)
+
+ int measureNullChild(
+int)
+
+protected void onLayout(
+boolean
+int
+int
+int
+int)
+
+protected void onMeasure(
+int
+int)
+
+ void setColumnCollapsed(
+int
+boolean)
+
+ void setColumnsWidthConstraints(
+int[])
+
+public void setOnHierarchyChangeListener(
+android.view.ViewGroup$OnHierarchyChangeListener)
+
+________________CLASS________________
+
+
+public class android.widget.TextSwitcher extends android.widget.ViewSwitcher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void addView(
+android.view.View
+int
+android.view.ViewGroup$LayoutParams)
+
+public void setCurrentText(
+java.lang.CharSequence)
+
+public void setText(
+java.lang.CharSequence)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TextView; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class android.widget.TextView$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$android$text$Layout$Alignment
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TextView; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Blink )
+ class android.widget.TextView$Blink extends android.os.Handler implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private boolean mCancelled
+@dalvik.annotation.Signature (value =Ljava/lang/ref/WeakReference<Landroid/widget/TextView;>; )
+private java.lang.ref.WeakReference mView
+----------------METHODS----------------
+
+public void <init>(
+android.widget.TextView)
+
+ void cancel()
+
+public void run()
+
+ void uncancel()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Landroid/widget/TextView$BufferType;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =BufferType )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TextView; )
+public final class android.widget.TextView$BufferType extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final android.widget.TextView$BufferType[] $VALUES
+
+public static final android.widget.TextView$BufferType EDITABLE
+
+public static final android.widget.TextView$BufferType NORMAL
+
+public static final android.widget.TextView$BufferType SPANNABLE
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static android.widget.TextView$BufferType valueOf(
+java.lang.String)
+
+public static android.widget.TextView$BufferType[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TextView; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =ChangeWatcher )
+ class android.widget.TextView$ChangeWatcher extends android.os.Handler implements android.text.TextWatcher, android.text.SpanWatcher
+
+----------------FIELDS----------------
+
+final android.widget.TextView this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.TextView)
+
+ void <init>(
+android.widget.TextView
+android.widget.TextView$1)
+
+private void spanChange(
+android.text.Spanned
+java.lang.Object
+int
+int)
+
+public void afterTextChanged(
+android.text.Editable)
+
+public void beforeTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+public void onSpanAdded(
+android.text.Spannable
+java.lang.Object
+int
+int)
+
+public void onSpanChanged(
+android.text.Spannable
+java.lang.Object
+int
+int
+int
+int)
+
+public void onSpanRemoved(
+android.text.Spannable
+java.lang.Object
+int
+int)
+
+public void onTextChanged(
+java.lang.CharSequence
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =CharWrapper )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TextView; )
+ class android.widget.TextView$CharWrapper extends java.lang.Object implements java.lang.CharSequence, android.text.GetChars, android.text.GraphicsOperations
+
+----------------FIELDS----------------
+
+private char[] mChars
+
+private int mLength
+
+private int mStart
+----------------METHODS----------------
+
+public void <init>(
+char[]
+int
+int)
+
+static char[] access$102(
+android.widget.TextView$CharWrapper
+char[])
+
+public char charAt(
+int)
+
+public void drawText(
+android.graphics.Canvas
+int
+int
+float
+float
+android.graphics.Paint)
+
+public void getChars(
+int
+int
+char[]
+int)
+
+public int getTextWidths(
+int
+int
+float[]
+android.graphics.Paint)
+
+public int length()
+
+public float measureText(
+int
+int
+android.graphics.Paint)
+
+ void set(
+char[]
+int
+int)
+
+public java.lang.CharSequence subSequence(
+int
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =MenuHandler )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TextView; )
+ class android.widget.TextView$MenuHandler extends java.lang.Object implements android.view.MenuItem$OnMenuItemClickListener
+
+----------------FIELDS----------------
+
+final android.widget.TextView this$0
+----------------METHODS----------------
+
+private void <init>(
+android.widget.TextView)
+
+ void <init>(
+android.widget.TextView
+android.widget.TextView$1)
+
+public boolean onMenuItemClick(
+android.view.MenuItem)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/widget/TextView$SavedState;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TextView$SavedState; )
+final class android.widget.TextView$SavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.widget.TextView$SavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.widget.TextView$SavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TextView; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =SavedState )
+public class android.widget.TextView$SavedState extends android.view.View$BaseSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/widget/TextView$SavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+ boolean frozenWithFocus
+
+ int selEnd
+
+ int selStart
+
+ java.lang.CharSequence text
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.widget.TextView$1)
+
+ void <init>(
+android.os.Parcelable)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TimePicker; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.widget.TimePicker$1 extends java.lang.Object implements android.widget.TimePicker$OnTimeChangedListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public void onTimeChanged(
+android.widget.TimePicker
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.widget.TimePicker$2 extends java.lang.Object implements com.android.internal.widget.NumberPicker$OnChangedListener
+
+----------------FIELDS----------------
+
+final android.widget.TimePicker this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.TimePicker)
+
+public void onChanged(
+com.android.internal.widget.NumberPicker
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class android.widget.TimePicker$3 extends java.lang.Object implements com.android.internal.widget.NumberPicker$OnChangedListener
+
+----------------FIELDS----------------
+
+final android.widget.TimePicker this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.TimePicker)
+
+public void onChanged(
+com.android.internal.widget.NumberPicker
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.widget.TimePicker$4 extends java.lang.Object implements android.view.View$OnClickListener
+
+----------------FIELDS----------------
+
+final android.widget.TimePicker this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.TimePicker)
+
+public void onClick(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TimePicker$SavedState; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Landroid/widget/TimePicker$SavedState;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class android.widget.TimePicker$SavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public android.widget.TimePicker$SavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public android.widget.TimePicker$SavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =SavedState )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/TimePicker; )
+ class android.widget.TimePicker$SavedState extends android.view.View$BaseSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Landroid/widget/TimePicker$SavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+private final int mHour
+
+private final int mMinute
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+android.widget.TimePicker$1)
+
+private void <init>(
+android.os.Parcelable
+int
+int)
+
+ void <init>(
+android.os.Parcelable
+int
+int
+android.widget.TimePicker$1)
+
+public int getHour()
+
+public int getMinute()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/TimePicker$SavedState;Landroid/widget/TimePicker$OnTimeChangedListener; )
+public class android.widget.TimePicker extends android.widget.FrameLayout
+
+----------------FIELDS----------------
+
+private static final android.widget.TimePicker$OnTimeChangedListener NO_OP_CHANGE_LISTENER
+
+private final android.widget.Button mAmPmButton
+
+private final java.lang.String mAmText
+
+private int mCurrentHour
+
+private int mCurrentMinute
+
+private final com.android.internal.widget.NumberPicker mHourPicker
+
+private java.lang.Boolean mIs24HourView
+
+private boolean mIsAm
+
+private final com.android.internal.widget.NumberPicker mMinutePicker
+
+private android.widget.TimePicker$OnTimeChangedListener mOnTimeChangedListener
+
+private final java.lang.String mPmText
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static int access$000(
+android.widget.TimePicker)
+
+static int access$002(
+android.widget.TimePicker
+int)
+
+static int access$012(
+android.widget.TimePicker
+int)
+
+static int access$020(
+android.widget.TimePicker
+int)
+
+static java.lang.Boolean access$100(
+android.widget.TimePicker)
+
+static boolean access$200(
+android.widget.TimePicker)
+
+static boolean access$202(
+android.widget.TimePicker
+boolean)
+
+static void access$300(
+android.widget.TimePicker)
+
+static int access$402(
+android.widget.TimePicker
+int)
+
+static java.lang.String access$500(
+android.widget.TimePicker)
+
+static java.lang.String access$600(
+android.widget.TimePicker)
+
+static android.widget.Button access$700(
+android.widget.TimePicker)
+
+private void configurePickerRanges()
+
+private void onTimeChanged()
+
+private void updateHourDisplay()
+
+private void updateMinuteDisplay()
+
+public int getBaseline()
+
+public java.lang.Integer getCurrentHour()
+
+public java.lang.Integer getCurrentMinute()
+
+public boolean is24HourView()
+
+protected void onRestoreInstanceState(
+android.os.Parcelable)
+
+protected android.os.Parcelable onSaveInstanceState()
+
+public void setCurrentHour(
+java.lang.Integer)
+
+public void setCurrentMinute(
+java.lang.Integer)
+
+public void setEnabled(
+boolean)
+
+public void setIs24HourView(
+java.lang.Boolean)
+
+public void setOnTimeChangedListener(
+android.widget.TimePicker$OnTimeChangedListener)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/Toast$TN; )
+ class android.widget.Toast$TN$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.widget.Toast$TN this$1
+----------------METHODS----------------
+
+ void <init>(
+android.widget.Toast$TN)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/Toast$TN; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.widget.Toast$TN$2 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.widget.Toast$TN this$1
+----------------METHODS----------------
+
+ void <init>(
+android.widget.Toast$TN)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/Toast; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =TN )
+ class android.widget.Toast$TN extends android.app.ITransientNotification$Stub
+
+----------------FIELDS----------------
+
+ java.lang.Runnable mHide
+
+private final android.view.WindowManager$LayoutParams mParams
+
+ java.lang.Runnable mShow
+
+ android.view.WindowManagerImpl mWM
+
+final android.widget.Toast this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.Toast
+android.content.Context)
+
+public void handleHide()
+
+public void handleShow()
+
+public void hide()
+
+public void show()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Landroid/widget/Toast$TN; )
+public class android.widget.Toast extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int LENGTH_LONG
+
+public static final int LENGTH_SHORT
+
+static final java.lang.String TAG
+
+static final boolean localLOGV
+
+private static android.app.INotificationManager sService
+
+final android.content.Context mContext
+
+ int mDuration
+
+ int mGravity
+
+final android.os.Handler mHandler
+
+ float mHorizontalMargin
+
+ android.view.View mNextView
+
+final android.widget.Toast$TN mTN
+
+ float mVerticalMargin
+
+ android.view.View mView
+
+ int mX
+
+ int mY
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+private static android.app.INotificationManager getService()
+@dalvik.annotation.Throws (value =Landroid/content/res/Resources$NotFoundException; )
+public static android.widget.Toast makeText(
+android.content.Context
+int
+int)
+
+public static android.widget.Toast makeText(
+android.content.Context
+java.lang.CharSequence
+int)
+
+public void cancel()
+
+public int getDuration()
+
+public int getGravity()
+
+public float getHorizontalMargin()
+
+public float getVerticalMargin()
+
+public android.view.View getView()
+
+public int getXOffset()
+
+public int getYOffset()
+
+public void setDuration(
+int)
+
+public void setGravity(
+int
+int
+int)
+
+public void setMargin(
+float
+float)
+
+public void setText(
+int)
+
+public void setText(
+java.lang.CharSequence)
+
+public void setView(
+android.view.View)
+
+public void show()
+
+________________CLASS________________
+
+
+public class android.widget.ToggleButton extends android.widget.CompoundButton
+
+----------------FIELDS----------------
+
+private static final int NO_ALPHA
+
+private float mDisabledAlpha
+
+private android.graphics.drawable.Drawable mIndicatorDrawable
+
+private java.lang.CharSequence mTextOff
+
+private java.lang.CharSequence mTextOn
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+private void syncTextState()
+
+private void updateReferenceToIndicatorDrawable(
+android.graphics.drawable.Drawable)
+
+protected void drawableStateChanged()
+
+public java.lang.CharSequence getTextOff()
+
+public java.lang.CharSequence getTextOn()
+
+protected void onFinishInflate()
+
+public void setBackgroundDrawable(
+android.graphics.drawable.Drawable)
+
+public void setChecked(
+boolean)
+
+public void setTextOff(
+java.lang.CharSequence)
+
+public void setTextOn(
+java.lang.CharSequence)
+
+________________CLASS________________
+
+
+public class android.widget.TwoLineListItem extends android.widget.RelativeLayout
+
+----------------FIELDS----------------
+
+private android.widget.TextView mText1
+
+private android.widget.TextView mText2
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+public android.widget.TextView getText1()
+
+public android.widget.TextView getText2()
+
+protected void onFinishInflate()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/VideoView; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.widget.VideoView$1 extends java.lang.Object implements android.media.MediaPlayer$OnPreparedListener
+
+----------------FIELDS----------------
+
+final android.widget.VideoView this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.VideoView)
+
+public void onPrepared(
+android.media.MediaPlayer)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/VideoView; )
+ class android.widget.VideoView$2 extends java.lang.Object implements android.media.MediaPlayer$OnCompletionListener
+
+----------------FIELDS----------------
+
+final android.widget.VideoView this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.VideoView)
+
+public void onCompletion(
+android.media.MediaPlayer)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.widget.VideoView$3$1 extends java.lang.Object implements android.content.DialogInterface$OnClickListener
+
+----------------FIELDS----------------
+
+final android.widget.VideoView$3 this$1
+----------------METHODS----------------
+
+ void <init>(
+android.widget.VideoView$3)
+
+public void onClick(
+android.content.DialogInterface
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/VideoView; )
+ class android.widget.VideoView$3 extends java.lang.Object implements android.media.MediaPlayer$OnErrorListener
+
+----------------FIELDS----------------
+
+final android.widget.VideoView this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.VideoView)
+
+public boolean onError(
+android.media.MediaPlayer
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/VideoView; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.widget.VideoView$4 extends java.lang.Object implements android.media.MediaPlayer$OnBufferingUpdateListener
+
+----------------FIELDS----------------
+
+final android.widget.VideoView this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.VideoView)
+
+public void onBufferingUpdate(
+android.media.MediaPlayer
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/VideoView; )
+ class android.widget.VideoView$5 extends java.lang.Object implements android.view.SurfaceHolder$Callback
+
+----------------FIELDS----------------
+
+final android.widget.VideoView this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.VideoView)
+
+public void surfaceChanged(
+android.view.SurfaceHolder
+int
+int
+int)
+
+public void surfaceCreated(
+android.view.SurfaceHolder)
+
+public void surfaceDestroyed(
+android.view.SurfaceHolder)
+
+________________CLASS________________
+
+
+public class android.widget.VideoView extends android.view.SurfaceView implements android.widget.MediaController$MediaPlayerControl
+
+----------------FIELDS----------------
+
+private android.media.MediaPlayer$OnBufferingUpdateListener mBufferingUpdateListener
+
+private android.media.MediaPlayer$OnCompletionListener mCompletionListener
+
+private int mCurrentBufferPercentage
+
+private android.media.MediaPlayer$OnErrorListener mErrorListener
+
+private boolean mIsPrepared
+
+private android.widget.MediaController mMediaController
+
+private android.media.MediaPlayer mMediaPlayer
+
+private android.media.MediaPlayer$OnCompletionListener mOnCompletionListener
+
+private android.media.MediaPlayer$OnErrorListener mOnErrorListener
+
+private android.media.MediaPlayer$OnPreparedListener mOnPreparedListener
+
+ android.media.MediaPlayer$OnPreparedListener mPreparedListener
+
+ android.view.SurfaceHolder$Callback mSHCallback
+
+private int mSeekWhenPrepared
+
+private boolean mStartWhenPrepared
+
+private int mSurfaceHeight
+
+private android.view.SurfaceHolder mSurfaceHolder
+
+private int mSurfaceWidth
+
+private android.net.Uri mUri
+
+private int mVideoHeight
+
+private int mVideoWidth
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static boolean access$000(
+android.widget.VideoView)
+
+static boolean access$002(
+android.widget.VideoView
+boolean)
+
+static android.media.MediaPlayer$OnPreparedListener access$100(
+android.widget.VideoView)
+
+static android.media.MediaPlayer$OnCompletionListener access$1000(
+android.widget.VideoView)
+
+static android.media.MediaPlayer$OnErrorListener access$1100(
+android.widget.VideoView)
+
+static android.content.Context access$1200(
+android.widget.VideoView)
+
+static android.content.Context access$1300(
+android.widget.VideoView)
+
+static int access$1402(
+android.widget.VideoView
+int)
+
+static android.view.SurfaceHolder access$1502(
+android.widget.VideoView
+android.view.SurfaceHolder)
+
+static void access$1600(
+android.widget.VideoView)
+
+static android.media.MediaPlayer access$200(
+android.widget.VideoView)
+
+static android.media.MediaPlayer access$202(
+android.widget.VideoView
+android.media.MediaPlayer)
+
+static android.widget.MediaController access$300(
+android.widget.VideoView)
+
+static int access$400(
+android.widget.VideoView)
+
+static int access$402(
+android.widget.VideoView
+int)
+
+static int access$500(
+android.widget.VideoView)
+
+static int access$502(
+android.widget.VideoView
+int)
+
+static int access$600(
+android.widget.VideoView)
+
+static int access$602(
+android.widget.VideoView
+int)
+
+static int access$700(
+android.widget.VideoView)
+
+static int access$702(
+android.widget.VideoView
+int)
+
+static int access$800(
+android.widget.VideoView)
+
+static boolean access$900(
+android.widget.VideoView)
+
+private void attachMediaController()
+
+private void initVideoView()
+
+private void openVideo()
+
+private void toggleMediaControlsVisiblity()
+
+public int getBufferPercentage()
+
+public int getCurrentPosition()
+
+public int getDuration()
+
+public boolean isPlaying()
+
+public boolean onKeyDown(
+int
+android.view.KeyEvent)
+
+protected void onMeasure(
+int
+int)
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+public boolean onTrackballEvent(
+android.view.MotionEvent)
+
+public void pause()
+
+public int resolveAdjustedSize(
+int
+int)
+
+public void seekTo(
+int)
+
+public void setMediaController(
+android.widget.MediaController)
+
+public void setOnCompletionListener(
+android.media.MediaPlayer$OnCompletionListener)
+
+public void setOnErrorListener(
+android.media.MediaPlayer$OnErrorListener)
+
+public void setOnPreparedListener(
+android.media.MediaPlayer$OnPreparedListener)
+
+public void setVideoPath(
+java.lang.String)
+
+public void setVideoURI(
+android.net.Uri)
+
+public void start()
+
+public void stopPlayback()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ViewFlipper; )
+ class android.widget.ViewFlipper$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final android.widget.ViewFlipper this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.ViewFlipper)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+
+public class android.widget.ViewFlipper extends android.widget.ViewAnimator
+
+----------------FIELDS----------------
+
+private final int FLIP_MSG
+
+private int mFlipInterval
+
+private final android.os.Handler mHandler
+
+private boolean mKeepFlipping
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+static boolean access$000(
+android.widget.ViewFlipper)
+
+static int access$100(
+android.widget.ViewFlipper)
+
+public boolean isFlipping()
+
+public void setFlipInterval(
+int)
+
+public void startFlipping()
+
+public void stopFlipping()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ViewSwitcher; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ViewFactory )
+public abstract interface class android.widget.ViewSwitcher$ViewFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.view.View makeView()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Landroid/widget/ZoomButton; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.widget.ZoomButton$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.widget.ZoomButton this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.ZoomButton)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class android.widget.ZoomButton$2 extends android.view.GestureDetector$SimpleOnGestureListener
+
+----------------FIELDS----------------
+
+final android.widget.ZoomButton this$0
+----------------METHODS----------------
+
+ void <init>(
+android.widget.ZoomButton)
+
+public void onLongPress(
+android.view.MotionEvent)
+
+________________CLASS________________
+
+
+public class android.widget.ZoomButton extends android.widget.ImageButton implements android.view.View$OnLongClickListener
+
+----------------FIELDS----------------
+
+private final android.view.GestureDetector mGestureDetector
+
+private final android.os.Handler mHandler
+
+private boolean mIsInLongpress
+
+private final java.lang.Runnable mRunnable
+
+private long mZoomSpeed
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static android.view.View$OnClickListener access$000(
+android.widget.ZoomButton)
+
+static boolean access$100(
+android.widget.ZoomButton)
+
+static android.view.View$OnClickListener access$200(
+android.widget.ZoomButton)
+
+static long access$300(
+android.widget.ZoomButton)
+
+static android.os.Handler access$400(
+android.widget.ZoomButton)
+
+public boolean dispatchUnhandledMove(
+android.view.View
+int)
+
+public boolean onKeyUp(
+int
+android.view.KeyEvent)
+
+public boolean onLongClick(
+android.view.View)
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+public void setEnabled(
+boolean)
+
+public void setZoomSpeed(
+long)
+
+________________CLASS________________
+
+
+public class android.widget.ZoomControls extends android.widget.LinearLayout
+
+----------------FIELDS----------------
+
+private final android.widget.ZoomButton mZoomIn
+
+private final android.widget.ZoomButton mZoomOut
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+private void fade(
+int
+float
+float)
+
+public boolean hasFocus()
+
+public void hide()
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+public void setIsZoomInEnabled(
+boolean)
+
+public void setIsZoomOutEnabled(
+boolean)
+
+public void setOnZoomInClickListener(
+android.view.View$OnClickListener)
+
+public void setOnZoomOutClickListener(
+android.view.View$OnClickListener)
+
+public void setZoomSpeed(
+long)
+
+public void show()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =anim )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/R; )
+public final class com.android.internal.R$anim extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int accelerate_decelerate_interpolator
+
+public static final int accelerate_interpolator
+
+public static final int app_starting_exit
+
+public static final int decelerate_interpolator
+
+public static final int fade_in
+
+public static final int fade_out
+
+public static final int grow_fade_in
+
+public static final int grow_fade_in_center
+
+public static final int grow_fade_in_from_bottom
+
+public static final int linear_interpolator
+
+public static final int options_panel_enter
+
+public static final int options_panel_exit
+
+public static final int push_down_in
+
+public static final int push_down_out
+
+public static final int push_up_in
+
+public static final int push_up_out
+
+public static final int shrink_fade_out
+
+public static final int shrink_fade_out_center
+
+public static final int shrink_fade_out_from_bottom
+
+public static final int slide_in_bottom
+
+public static final int slide_in_child_bottom
+
+public static final int slide_in_left
+
+public static final int slide_in_right
+
+public static final int slide_in_top
+
+public static final int slide_out_bottom
+
+public static final int slide_out_left
+
+public static final int slide_out_right
+
+public static final int slide_out_top
+
+public static final int submenu_enter
+
+public static final int submenu_exit
+
+public static final int task_close_enter
+
+public static final int task_close_exit
+
+public static final int task_open_enter
+
+public static final int task_open_exit
+
+public static final int toast_enter
+
+public static final int toast_exit
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =array )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/R; )
+public final class com.android.internal.R$array extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int day_labels
+
+public static final int emailAddressTypes
+
+public static final int imAddressTypes
+
+public static final int imProtocols
+
+public static final int maps_starting_lat_lng
+
+public static final int maps_starting_zoom
+
+public static final int organizationTypes
+
+public static final int phoneTypes
+
+public static final int postalAddressTypes
+
+public static final int preloaded_drawables
+
+public static final int status_bar_icon_order
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/R; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =attr )
+public final class com.android.internal.R$attr extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int absListViewStyle
+
+public static final int action
+
+public static final int activityCloseEnterAnimation
+
+public static final int activityCloseExitAnimation
+
+public static final int activityOpenEnterAnimation
+
+public static final int activityOpenExitAnimation
+
+public static final int addStatesFromChildren
+
+public static final int adjustViewBounds
+
+public static final int alertDialogStyle
+
+public static final int allowClearUserData
+
+public static final int allowTaskReparenting
+
+public static final int alphabeticShortcut
+
+public static final int alwaysDrawnWithCache
+
+public static final int alwaysRetainTaskState
+
+public static final int angle
+
+public static final int animateOnClick
+
+public static final int animation
+
+public static final int animationCache
+
+public static final int animationDuration
+
+public static final int animationOrder
+
+public static final int antialias
+
+public static final int apiKey
+
+public static final int authorities
+
+public static final int autoCompleteTextViewStyle
+
+public static final int autoLink
+
+public static final int autoText
+
+public static final int background
+
+public static final int backgroundDimAmount
+
+public static final int baselineAlignBottom
+
+public static final int baselineAligned
+
+public static final int baselineAlignedChildIndex
+
+public static final int bottom
+
+public static final int bottomBright
+
+public static final int bottomDark
+
+public static final int bottomLeftRadius
+
+public static final int bottomMedium
+
+public static final int bottomOffset
+
+public static final int bottomRightRadius
+
+public static final int bufferType
+
+public static final int button
+
+public static final int buttonStyle
+
+public static final int buttonStyleInset
+
+public static final int buttonStyleSmall
+
+public static final int buttonStyleToggle
+
+public static final int cacheColorHint
+
+public static final int capitalize
+
+public static final int centerBright
+
+public static final int centerColor
+
+public static final int centerDark
+
+public static final int centerMedium
+
+public static final int centerX
+
+public static final int centerY
+
+public static final int checkBoxPreferenceStyle
+
+public static final int checkMark
+
+public static final int checkable
+
+public static final int checkableBehavior
+
+public static final int checkboxStyle
+
+public static final int checked
+
+public static final int checkedButton
+
+public static final int childDivider
+
+public static final int childIndicator
+
+public static final int childIndicatorLeft
+
+public static final int childIndicatorRight
+
+public static final int choiceMode
+
+public static final int clearTaskOnLaunch
+
+public static final int clickable
+
+public static final int clipChildren
+
+public static final int clipOrientation
+
+public static final int clipToPadding
+
+public static final int collapseColumns
+
+public static final int color
+
+public static final int colorBackground
+
+public static final int colorForeground
+
+public static final int colorForegroundInverse
+
+public static final int columnDelay
+
+public static final int columnWidth
+
+public static final int completionHint
+
+public static final int completionHintView
+
+public static final int completionThreshold
+
+public static final int configChanges
+
+public static final int constantSize
+
+public static final int content
+
+public static final int cropToPadding
+
+public static final int cursorVisible
+
+public static final int cycles
+
+public static final int dashGap
+
+public static final int dashWidth
+
+public static final int data
+
+public static final int debuggable
+
+public static final int defaultValue
+
+public static final int delay
+
+public static final int dependency
+
+public static final int descendantFocusability
+
+public static final int description
+
+public static final int dial
+
+public static final int dialogIcon
+
+public static final int dialogLayout
+
+public static final int dialogMessage
+
+public static final int dialogPreferenceStyle
+
+public static final int dialogTitle
+
+public static final int digits
+
+public static final int direction
+
+public static final int directionPriority
+
+public static final int disableDependentsState
+
+public static final int disabledAlpha
+
+public static final int dither
+
+public static final int divider
+
+public static final int dividerHeight
+
+public static final int drawSelectorOnTop
+
+public static final int drawable
+
+public static final int drawableBottom
+
+public static final int drawableLeft
+
+public static final int drawablePadding
+
+public static final int drawableRight
+
+public static final int drawableTop
+
+public static final int drawingCacheQuality
+
+public static final int dropDownHintAppearance
+
+public static final int dropDownItemStyle
+
+public static final int dropDownListViewStyle
+
+public static final int dropDownSelector
+
+public static final int duplicateParentState
+
+public static final int duration
+
+public static final int editTextPreferenceStyle
+
+public static final int editTextStyle
+
+public static final int editable
+
+public static final int ellipsize
+
+public static final int ems
+
+public static final int enabled
+
+public static final int endColor
+
+public static final int endYear
+
+public static final int entries
+
+public static final int entryValues
+
+public static final int excludeFromRecents
+
+public static final int expandableListPreferredChildIndicatorLeft
+
+public static final int expandableListPreferredChildIndicatorRight
+
+public static final int expandableListPreferredChildPaddingLeft
+
+public static final int expandableListPreferredItemIndicatorLeft
+
+public static final int expandableListPreferredItemIndicatorRight
+
+public static final int expandableListPreferredItemPaddingLeft
+
+public static final int expandableListViewStyle
+
+public static final int exported
+
+public static final int factor
+
+public static final int fadingEdge
+
+public static final int fadingEdgeLength
+
+public static final int fillAfter
+
+public static final int fillBefore
+
+public static final int fillViewport
+
+public static final int filter
+
+public static final int finishOnTaskLaunch
+
+public static final int fitsSystemWindows
+
+public static final int flipInterval
+
+public static final int focusable
+
+public static final int focusableInTouchMode
+
+public static final int foreground
+
+public static final int foregroundGravity
+
+public static final int format
+
+public static final int freezesText
+
+public static final int fromAlpha
+
+public static final int fromDegrees
+
+public static final int fromXDelta
+
+public static final int fromXScale
+
+public static final int fromYDelta
+
+public static final int fromYScale
+
+public static final int fullBright
+
+public static final int fullDark
+
+public static final int functionalTest
+
+public static final int galleryItemBackground
+
+public static final int galleryStyle
+
+public static final int gradientRadius
+
+public static final int grantUriPermissions
+
+public static final int gravity
+
+public static final int gridViewStyle
+
+public static final int groupIndicator
+
+public static final int hand_hour
+
+public static final int hand_minute
+
+public static final int handle
+
+public static final int handleProfiling
+
+public static final int hasCode
+
+public static final int headerBackground
+
+public static final int height
+
+public static final int hint
+
+public static final int horizontalDivider
+
+public static final int horizontalSpacing
+
+public static final int host
+
+public static final int icon
+
+public static final int id
+
+public static final int ignoreGravity
+
+public static final int imageButtonStyle
+
+public static final int imageWellStyle
+
+public static final int inAnimation
+
+public static final int includeFontPadding
+
+public static final int indeterminate
+
+public static final int indeterminateBehavior
+
+public static final int indeterminateDrawable
+
+public static final int indeterminateDuration
+
+public static final int indeterminateOnly
+
+public static final int indicatorLeft
+
+public static final int indicatorRight
+
+public static final int inflatedId
+
+public static final int initOrder
+
+public static final int innerRadiusRatio
+
+public static final int inputMethod
+
+public static final int insetBottom
+
+public static final int insetLeft
+
+public static final int insetRight
+
+public static final int insetTop
+
+public static final int interpolator
+
+public static final int isIndicator
+
+public static final int itemBackground
+
+public static final int itemIconDisabledAlpha
+
+public static final int itemTextAppearance
+
+public static final int keepScreenOn
+
+public static final int key
+
+public static final int keycode
+
+public static final int label
+
+public static final int launchMode
+
+public static final int layout
+
+public static final int layoutAnimation
+
+public static final int layout_above
+
+public static final int layout_alignBaseline
+
+public static final int layout_alignBottom
+
+public static final int layout_alignLeft
+
+public static final int layout_alignParentBottom
+
+public static final int layout_alignParentLeft
+
+public static final int layout_alignParentRight
+
+public static final int layout_alignParentTop
+
+public static final int layout_alignRight
+
+public static final int layout_alignTop
+
+public static final int layout_alignWithParentIfMissing
+
+public static final int layout_below
+
+public static final int layout_centerHorizontal
+
+public static final int layout_centerInParent
+
+public static final int layout_centerVertical
+
+public static final int layout_column
+
+public static final int layout_gravity
+
+public static final int layout_height
+
+public static final int layout_margin
+
+public static final int layout_marginBottom
+
+public static final int layout_marginLeft
+
+public static final int layout_marginRight
+
+public static final int layout_marginTop
+
+public static final int layout_scale
+
+public static final int layout_span
+
+public static final int layout_toLeftOf
+
+public static final int layout_toRightOf
+
+public static final int layout_weight
+
+public static final int layout_width
+
+public static final int layout_x
+
+public static final int layout_y
+
+public static final int left
+
+public static final int lineSpacingExtra
+
+public static final int lineSpacingMultiplier
+
+public static final int lines
+
+public static final int linksClickable
+
+public static final int listChoiceIndicatorMultiple
+
+public static final int listChoiceIndicatorSingle
+
+public static final int listDivider
+
+public static final int listPreferredItemHeight
+
+public static final int listSelector
+
+public static final int listSeparatorTextViewStyle
+
+public static final int listViewStyle
+
+public static final int listViewWhiteStyle
+
+public static final int longClickable
+
+public static final int manageSpaceActivity
+
+public static final int mapViewStyle
+
+public static final int max
+
+public static final int maxEms
+
+public static final int maxHeight
+
+public static final int maxItemsPerRow
+
+public static final int maxLength
+
+public static final int maxLevel
+
+public static final int maxLines
+
+public static final int maxRows
+
+public static final int maxWidth
+
+public static final int measureAllChildren
+
+public static final int menuCategory
+
+public static final int mimeType
+
+public static final int minEms
+
+public static final int minHeight
+
+public static final int minLevel
+
+public static final int minLines
+
+public static final int minSdkVersion
+
+public static final int minWidth
+
+public static final int mode
+
+public static final int moreIcon
+
+public static final int multiprocess
+
+public static final int name
+
+public static final int negativeButtonText
+
+public static final int nextFocusDown
+
+public static final int nextFocusLeft
+
+public static final int nextFocusRight
+
+public static final int nextFocusUp
+
+public static final int numColumns
+
+public static final int numStars
+
+public static final int numeric
+
+public static final int numericShortcut
+
+public static final int oneshot
+
+public static final int order
+
+public static final int orderInCategory
+
+public static final int orderingFromXml
+
+public static final int orientation
+
+public static final int outAnimation
+
+public static final int padding
+
+public static final int paddingBottom
+
+public static final int paddingLeft
+
+public static final int paddingRight
+
+public static final int paddingTop
+
+public static final int panelBackground
+
+public static final int panelColorBackground
+
+public static final int panelColorForeground
+
+public static final int panelFullBackground
+
+public static final int panelTextAppearance
+
+public static final int password
+
+public static final int path
+
+public static final int pathPattern
+
+public static final int pathPrefix
+
+public static final int permission
+
+public static final int permissionGroup
+
+public static final int persistent
+
+public static final int persistentDrawingCache
+
+public static final int phoneNumber
+
+public static final int pivotX
+
+public static final int pivotY
+
+public static final int popupBackground
+
+public static final int popupWindowStyle
+
+public static final int port
+
+public static final int positiveButtonText
+
+public static final int preferenceCategoryStyle
+
+public static final int preferenceInformationStyle
+
+public static final int preferenceLayoutChild
+
+public static final int preferenceScreenStyle
+
+public static final int preferenceStyle
+
+public static final int priority
+
+public static final int process
+
+public static final int progress
+
+public static final int progressBarStyle
+
+public static final int progressBarStyleHorizontal
+
+public static final int progressBarStyleLarge
+
+public static final int progressBarStyleSmall
+
+public static final int progressBarStyleSmallTitle
+
+public static final int progressDrawable
+
+public static final int prompt
+
+public static final int protectionLevel
+
+public static final int queryActionMsg
+
+public static final int radioButtonStyle
+
+public static final int radius
+
+public static final int rating
+
+public static final int ratingBarStyle
+
+public static final int ratingBarStyleIndicator
+
+public static final int ratingBarStyleSmall
+
+public static final int readPermission
+
+public static final int repeatCount
+
+public static final int repeatMode
+
+public static final int resource
+
+public static final int right
+
+public static final int ringtonePreferenceStyle
+
+public static final int ringtoneType
+
+public static final int rowDelay
+
+public static final int rowHeight
+
+public static final int saveEnabled
+
+public static final int scaleGravity
+
+public static final int scaleHeight
+
+public static final int scaleType
+
+public static final int scaleWidth
+
+public static final int scheme
+
+public static final int screenOrientation
+
+public static final int scrollHorizontally
+
+public static final int scrollViewStyle
+
+public static final int scrollX
+
+public static final int scrollY
+
+public static final int scrollbarAlwaysDrawHorizontalTrack
+
+public static final int scrollbarAlwaysDrawVerticalTrack
+
+public static final int scrollbarSize
+
+public static final int scrollbarStyle
+
+public static final int scrollbarThumbHorizontal
+
+public static final int scrollbarThumbVertical
+
+public static final int scrollbarTrackHorizontal
+
+public static final int scrollbarTrackVertical
+
+public static final int scrollbars
+
+public static final int scrollingCache
+
+public static final int searchButtonText
+
+public static final int searchMode
+
+public static final int searchSuggestAuthority
+
+public static final int searchSuggestIntentAction
+
+public static final int searchSuggestIntentData
+
+public static final int searchSuggestPath
+
+public static final int searchSuggestSelection
+
+public static final int secondaryProgress
+
+public static final int seekBarStyle
+
+public static final int selectAllOnFocus
+
+public static final int selectable
+
+public static final int shadowColor
+
+public static final int shadowDx
+
+public static final int shadowDy
+
+public static final int shadowRadius
+
+public static final int shape
+
+public static final int shareInterpolator
+
+public static final int sharedUserId
+
+public static final int shouldDisableView
+
+public static final int showDefault
+
+public static final int showSilent
+
+public static final int shrinkColumns
+
+public static final int singleLine
+
+public static final int soundEffectsEnabled
+
+public static final int spacing
+
+public static final int spinnerDropDownItemStyle
+
+public static final int spinnerItemStyle
+
+public static final int spinnerStyle
+
+public static final int src
+
+public static final int stackFromBottom
+
+public static final int starStyle
+
+public static final int startColor
+
+public static final int startOffset
+
+public static final int startYear
+
+public static final int stateNotNeeded
+
+public static final int state_above_anchor
+
+public static final int state_active
+
+public static final int state_checkable
+
+public static final int state_checked
+
+public static final int state_empty
+
+public static final int state_enabled
+
+public static final int state_expanded
+
+public static final int state_first
+
+public static final int state_focused
+
+public static final int state_last
+
+public static final int state_middle
+
+public static final int state_pressed
+
+public static final int state_selected
+
+public static final int state_single
+
+public static final int state_window_focused
+
+public static final int stepSize
+
+public static final int streamType
+
+public static final int stretchColumns
+
+public static final int stretchMode
+
+public static final int suggestActionMsg
+
+public static final int suggestActionMsgColumn
+
+public static final int summary
+
+public static final int summaryOff
+
+public static final int summaryOn
+
+public static final int syncable
+
+public static final int tabWidgetStyle
+
+public static final int tag
+
+public static final int targetActivity
+
+public static final int targetClass
+
+public static final int targetPackage
+
+public static final int taskAffinity
+
+public static final int taskCloseEnterAnimation
+
+public static final int taskCloseExitAnimation
+
+public static final int taskOpenEnterAnimation
+
+public static final int taskOpenExitAnimation
+
+public static final int taskToBackEnterAnimation
+
+public static final int taskToBackExitAnimation
+
+public static final int taskToFrontEnterAnimation
+
+public static final int taskToFrontExitAnimation
+
+public static final int text
+
+public static final int textAppearance
+
+public static final int textAppearanceButton
+
+public static final int textAppearanceInverse
+
+public static final int textAppearanceLarge
+
+public static final int textAppearanceLargeInverse
+
+public static final int textAppearanceMedium
+
+public static final int textAppearanceMediumInverse
+
+public static final int textAppearanceSmall
+
+public static final int textAppearanceSmallInverse
+
+public static final int textCheckMark
+
+public static final int textCheckMarkInverse
+
+public static final int textColor
+
+public static final int textColorHighlight
+
+public static final int textColorHint
+
+public static final int textColorHintInverse
+
+public static final int textColorLink
+
+public static final int textColorPrimary
+
+public static final int textColorPrimaryDisableOnly
+
+public static final int textColorPrimaryInverse
+
+public static final int textColorPrimaryInverseNoDisable
+
+public static final int textColorPrimaryNoDisable
+
+public static final int textColorSecondary
+
+public static final int textColorSecondaryInverse
+
+public static final int textColorSecondaryInverseNoDisable
+
+public static final int textColorSecondaryNoDisable
+
+public static final int textColorTertiary
+
+public static final int textColorTertiaryInverse
+
+public static final int textFilterEnabled
+
+public static final int textOff
+
+public static final int textOn
+
+public static final int textScaleX
+
+public static final int textSize
+
+public static final int textStyle
+
+public static final int textViewStyle
+
+public static final int theme
+
+public static final int thicknessRatio
+
+public static final int thumb
+
+public static final int thumbOffset
+
+public static final int tileMode
+
+public static final int tint
+
+public static final int title
+
+public static final int titleCondensed
+
+public static final int toAlpha
+
+public static final int toDegrees
+
+public static final int toXDelta
+
+public static final int toXScale
+
+public static final int toYDelta
+
+public static final int toYScale
+
+public static final int top
+
+public static final int topBright
+
+public static final int topDark
+
+public static final int topLeftRadius
+
+public static final int topOffset
+
+public static final int topRightRadius
+
+public static final int transcriptMode
+
+public static final int type
+
+public static final int typeface
+
+public static final int unselectedAlpha
+
+public static final int useLevel
+
+public static final int value
+
+public static final int variablePadding
+
+public static final int versionCode
+
+public static final int versionName
+
+public static final int verticalDivider
+
+public static final int verticalSpacing
+
+public static final int visibility
+
+public static final int visible
+
+public static final int webViewStyle
+
+public static final int weightSum
+
+public static final int widgetLayout
+
+public static final int width
+
+public static final int windowAnimationStyle
+
+public static final int windowBackground
+
+public static final int windowContentOverlay
+
+public static final int windowEnterAnimation
+
+public static final int windowExitAnimation
+
+public static final int windowFrame
+
+public static final int windowFullscreen
+
+public static final int windowHideAnimation
+
+public static final int windowIsFloating
+
+public static final int windowIsTranslucent
+
+public static final int windowNoTitle
+
+public static final int windowShowAnimation
+
+public static final int windowTitleBackgroundStyle
+
+public static final int windowTitleSize
+
+public static final int windowTitleStyle
+
+public static final int writePermission
+
+public static final int x
+
+public static final int y
+
+public static final int yesNoPreferenceStyle
+
+public static final int zAdjustment
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/R; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =color )
+public final class com.android.internal.R$color extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int background_dark
+
+public static final int background_light
+
+public static final int black
+
+public static final int bright_foreground_dark
+
+public static final int bright_foreground_dark_disabled
+
+public static final int bright_foreground_dark_inverse
+
+public static final int bright_foreground_light
+
+public static final int bright_foreground_light_disabled
+
+public static final int bright_foreground_light_inverse
+
+public static final int darker_gray
+
+public static final int dim_foreground_dark
+
+public static final int dim_foreground_dark_disabled
+
+public static final int dim_foreground_dark_inverse
+
+public static final int dim_foreground_dark_inverse_disabled
+
+public static final int dim_foreground_light
+
+public static final int dim_foreground_light_disabled
+
+public static final int dim_foreground_light_inverse
+
+public static final int dim_foreground_light_inverse_disabled
+
+public static final int hint_foreground_dark
+
+public static final int hint_foreground_light
+
+public static final int lighter_gray
+
+public static final int perms_dangerous_grp_color
+
+public static final int perms_dangerous_perm_color
+
+public static final int perms_normal_grp_color
+
+public static final int perms_normal_perm_color
+
+public static final int primary_text_dark
+
+public static final int primary_text_dark_disable_only
+
+public static final int primary_text_dark_focused
+
+public static final int primary_text_dark_nodisable
+
+public static final int primary_text_light
+
+public static final int primary_text_light_disable_only
+
+public static final int primary_text_light_nodisable
+
+public static final int safe_mode_text
+
+public static final int secondary_text_dark
+
+public static final int secondary_text_dark_nodisable
+
+public static final int secondary_text_light
+
+public static final int secondary_text_light_nodisable
+
+public static final int tab_indicator_text
+
+public static final int tertiary_text_dark
+
+public static final int tertiary_text_light
+
+public static final int theme_panel_text
+
+public static final int transparent
+
+public static final int white
+
+public static final int widget_autocompletetextview_dark
+
+public static final int widget_button
+
+public static final int widget_edittext_dark
+
+public static final int widget_edittext_dark_hint
+
+public static final int widget_paneltabwidget
+
+public static final int widget_textview_bigspinneritem_dark
+
+public static final int widget_textview_spinneritem_dark
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =dimen )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/R; )
+public final class com.android.internal.R$dimen extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int app_icon_size
+
+public static final int thumbnail_height
+
+public static final int thumbnail_width
+
+public static final int toast_y_offset
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/R; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =drawable )
+public final class com.android.internal.R$drawable extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int alert_dark_frame
+
+public static final int alert_light_frame
+
+public static final int app_icon_background
+
+public static final int arrow_down_float
+
+public static final int arrow_up_float
+
+public static final int battery_charge_background
+
+public static final int battery_charge_fill
+
+public static final int battery_charge_fill_empty
+
+public static final int battery_charge_fill_full
+
+public static final int battery_charge_fill_warning
+
+public static final int battery_low_battery
+
+public static final int blank_tile
+
+public static final int boot_robot
+
+public static final int bottom_bar
+
+public static final int bottombar_565
+
+public static final int box
+
+public static final int btn_application_selector
+
+public static final int btn_check
+
+public static final int btn_check_label_background
+
+public static final int btn_check_off
+
+public static final int btn_check_off_disable
+
+public static final int btn_check_off_disable_focused
+
+public static final int btn_check_off_longpress
+
+public static final int btn_check_off_pressed
+
+public static final int btn_check_off_selected
+
+public static final int btn_check_on
+
+public static final int btn_check_on_disable
+
+public static final int btn_check_on_disable_focused
+
+public static final int btn_check_on_longpress
+
+public static final int btn_check_on_pressed
+
+public static final int btn_check_on_selected
+
+public static final int btn_code_lock_default
+
+public static final int btn_code_lock_default_trackball_pressed
+
+public static final int btn_code_lock_default_trackball_selected
+
+public static final int btn_code_lock_touched
+
+public static final int btn_default
+
+public static final int btn_default_longpress
+
+public static final int btn_default_normal
+
+public static final int btn_default_normal_disable
+
+public static final int btn_default_normal_disable_focused
+
+public static final int btn_default_pressed
+
+public static final int btn_default_selected
+
+public static final int btn_default_small
+
+public static final int btn_default_small_longpress
+
+public static final int btn_default_small_normal
+
+public static final int btn_default_small_normal_disable
+
+public static final int btn_default_small_normal_disable_focused
+
+public static final int btn_default_small_pressed
+
+public static final int btn_default_small_selected
+
+public static final int btn_dialog
+
+public static final int btn_dialog_disable
+
+public static final int btn_dialog_disable_focused
+
+public static final int btn_dialog_normal
+
+public static final int btn_dialog_pressed
+
+public static final int btn_dialog_selected
+
+public static final int btn_dropdown
+
+public static final int btn_dropdown_disabled
+
+public static final int btn_dropdown_down
+
+public static final int btn_dropdown_normal
+
+public static final int btn_dropdown_pressed
+
+public static final int btn_dropdown_selected
+
+public static final int btn_erase_default
+
+public static final int btn_erase_pressed
+
+public static final int btn_erase_selected
+
+public static final int btn_flicker_minus
+
+public static final int btn_flicker_plus
+
+public static final int btn_media_player
+
+public static final int btn_media_player_disabled
+
+public static final int btn_media_player_disabled_selected
+
+public static final int btn_media_player_pressed
+
+public static final int btn_media_player_selected
+
+public static final int btn_minus
+
+public static final int btn_minus_default
+
+public static final int btn_minus_disable
+
+public static final int btn_minus_disable_focused
+
+public static final int btn_minus_pressed
+
+public static final int btn_minus_selected
+
+public static final int btn_plus
+
+public static final int btn_plus_default
+
+public static final int btn_plus_disable
+
+public static final int btn_plus_disable_focused
+
+public static final int btn_plus_pressed
+
+public static final int btn_plus_selected
+
+public static final int btn_radio
+
+public static final int btn_radio_label_background
+
+public static final int btn_radio_off
+
+public static final int btn_radio_off_disable
+
+public static final int btn_radio_off_disable_focused
+
+public static final int btn_radio_off_longpress
+
+public static final int btn_radio_off_pressed
+
+public static final int btn_radio_off_selected
+
+public static final int btn_radio_on
+
+public static final int btn_radio_on_disable
+
+public static final int btn_radio_on_disable_focused
+
+public static final int btn_radio_on_longpress
+
+public static final int btn_radio_on_pressed
+
+public static final int btn_radio_on_selected
+
+public static final int btn_rating_star_off_normal
+
+public static final int btn_rating_star_off_pressed
+
+public static final int btn_rating_star_off_selected
+
+public static final int btn_rating_star_on_normal
+
+public static final int btn_rating_star_on_pressed
+
+public static final int btn_rating_star_on_selected
+
+public static final int btn_star
+
+public static final int btn_star_big_off
+
+public static final int btn_star_big_off_disable
+
+public static final int btn_star_big_off_disable_focused
+
+public static final int btn_star_big_off_longpress
+
+public static final int btn_star_big_off_pressed
+
+public static final int btn_star_big_off_selected
+
+public static final int btn_star_big_on
+
+public static final int btn_star_big_on_disable
+
+public static final int btn_star_big_on_disable_focused
+
+public static final int btn_star_big_on_longpress
+
+public static final int btn_star_big_on_pressed
+
+public static final int btn_star_big_on_selected
+
+public static final int btn_star_label_background
+
+public static final int btn_toggle
+
+public static final int btn_toggle_bg
+
+public static final int btn_toggle_off
+
+public static final int btn_toggle_on
+
+public static final int btn_white_longpress
+
+public static final int btn_zoom_page
+
+public static final int btn_zoom_page_normal
+
+public static final int btn_zoom_page_press
+
+public static final int button_inset
+
+public static final int button_onoff_indicator_off
+
+public static final int button_onoff_indicator_on
+
+public static final int checkbox
+
+public static final int checkbox_background
+
+public static final int checkbox_label_background
+
+public static final int checkbox_off_background
+
+public static final int checkbox_off_background_focus_yellow
+
+public static final int checkbox_on_background
+
+public static final int checkbox_on_background_focus_yellow
+
+public static final int clock_dial
+
+public static final int clock_hand_hour
+
+public static final int clock_hand_minute
+
+public static final int code_lock_bottom
+
+public static final int code_lock_left
+
+public static final int code_lock_top
+
+public static final int compass_arrow
+
+public static final int compass_base
+
+public static final int contextual_menu_bottom_bright
+
+public static final int contextual_menu_top_dark
+
+public static final int default_wallpaper
+
+public static final int dialog_divider_horizontal_light
+
+public static final int dialog_frame
+
+public static final int divider_horizontal_bright
+
+public static final int divider_horizontal_dark
+
+public static final int divider_horizontal_dim_dark
+
+public static final int divider_horizontal_textfield
+
+public static final int divider_vertical_bright
+
+public static final int edit_text
+
+public static final int editbox_background
+
+public static final int editbox_background_focus_yellow
+
+public static final int editbox_background_normal
+
+public static final int editbox_dropdown_arrowdown
+
+public static final int editbox_dropdown_arrowup
+
+public static final int editbox_dropdown_background
+
+public static final int editbox_dropdown_background_dark
+
+public static final int editbox_dropdown_dark_frame
+
+public static final int editbox_dropdown_light_frame
+
+public static final int expander_group
+
+public static final int expander_ic_maximized
+
+public static final int expander_ic_minimized
+
+public static final int focused_application_background_static
+
+public static final int frame_gallery_thumb
+
+public static final int frame_gallery_thumb_pressed
+
+public static final int frame_gallery_thumb_selected
+
+public static final int gallery_item_background
+
+public static final int gallery_selected_default
+
+public static final int gallery_selected_focused
+
+public static final int gallery_selected_pressed
+
+public static final int gallery_thumb
+
+public static final int gallery_unselected_default
+
+public static final int gallery_unselected_pressed
+
+public static final int grey_list_separator
+
+public static final int grid_selector_background
+
+public static final int grid_selector_background_focus
+
+public static final int grid_selector_background_pressed
+
+public static final int highlight_disabled
+
+public static final int highlight_disabled_pressed
+
+public static final int highlight_pressed
+
+public static final int highlight_pressed_dimmed
+
+public static final int highlight_selected
+
+public static final int ic_bullet_key_permission
+
+public static final int ic_check_mark_dark
+
+public static final int ic_check_mark_light
+
+public static final int ic_delete
+
+public static final int ic_dialog_alert
+
+public static final int ic_dialog_dialer
+
+public static final int ic_dialog_email
+
+public static final int ic_dialog_info
+
+public static final int ic_dialog_map
+
+public static final int ic_dialog_menu_generic
+
+public static final int ic_dialog_time
+
+public static final int ic_emergency
+
+public static final int ic_input_add
+
+public static final int ic_input_delete
+
+public static final int ic_input_get
+
+public static final int ic_launcher_android
+
+public static final int ic_lock_idle_alarm
+
+public static final int ic_lock_idle_charging
+
+public static final int ic_lock_idle_lock
+
+public static final int ic_lock_idle_low_battery
+
+public static final int ic_lock_lock
+
+public static final int ic_lock_power_off
+
+public static final int ic_lock_silent_mode
+
+public static final int ic_lock_silent_mode_off
+
+public static final int ic_maps_indicator_current_position
+
+public static final int ic_maps_indicator_current_position_anim
+
+public static final int ic_maps_indicator_current_position_anim1
+
+public static final int ic_maps_indicator_current_position_anim2
+
+public static final int ic_maps_indicator_current_position_anim3
+
+public static final int ic_media_ff
+
+public static final int ic_media_next
+
+public static final int ic_media_pause
+
+public static final int ic_media_play
+
+public static final int ic_media_previous
+
+public static final int ic_media_rew
+
+public static final int ic_menu_add
+
+public static final int ic_menu_agenda
+
+public static final int ic_menu_always_landscape_portrait
+
+public static final int ic_menu_call
+
+public static final int ic_menu_camera
+
+public static final int ic_menu_close_clear_cancel
+
+public static final int ic_menu_compass
+
+public static final int ic_menu_crop
+
+public static final int ic_menu_day
+
+public static final int ic_menu_delete
+
+public static final int ic_menu_directions
+
+public static final int ic_menu_edit
+
+public static final int ic_menu_gallery
+
+public static final int ic_menu_help
+
+public static final int ic_menu_info_details
+
+public static final int ic_menu_manage
+
+public static final int ic_menu_mapmode
+
+public static final int ic_menu_month
+
+public static final int ic_menu_more
+
+public static final int ic_menu_my_calendar
+
+public static final int ic_menu_mylocation
+
+public static final int ic_menu_myplaces
+
+public static final int ic_menu_preferences
+
+public static final int ic_menu_recent_history
+
+public static final int ic_menu_report_image
+
+public static final int ic_menu_revert
+
+public static final int ic_menu_rotate
+
+public static final int ic_menu_save
+
+public static final int ic_menu_search
+
+public static final int ic_menu_send
+
+public static final int ic_menu_set_as
+
+public static final int ic_menu_share
+
+public static final int ic_menu_slideshow
+
+public static final int ic_menu_sort_alphabetically
+
+public static final int ic_menu_sort_by_size
+
+public static final int ic_menu_today
+
+public static final int ic_menu_upload
+
+public static final int ic_menu_upload_you_tube
+
+public static final int ic_menu_view
+
+public static final int ic_menu_week
+
+public static final int ic_menu_zoom
+
+public static final int ic_notification_clear_all
+
+public static final int ic_notification_overlay
+
+public static final int ic_partial_secure
+
+public static final int ic_popup_disk_full
+
+public static final int ic_popup_reminder
+
+public static final int ic_popup_sync
+
+public static final int ic_popup_sync_1
+
+public static final int ic_popup_sync_2
+
+public static final int ic_popup_sync_3
+
+public static final int ic_popup_sync_4
+
+public static final int ic_popup_sync_5
+
+public static final int ic_popup_sync_6
+
+public static final int ic_power
+
+public static final int ic_search_category_default
+
+public static final int ic_secure
+
+public static final int ic_settings_indicator_next_page
+
+public static final int ic_text_dot
+
+public static final int ic_vibrate
+
+public static final int ic_volume
+
+public static final int ic_volume_off
+
+public static final int ic_volume_off_small
+
+public static final int ic_volume_small
+
+public static final int icon_highlight_rectangle
+
+public static final int icon_highlight_square
+
+public static final int indicator_check_mark_dark
+
+public static final int indicator_check_mark_light
+
+public static final int indicator_code_lock_drag_direction_green_up
+
+public static final int indicator_code_lock_drag_direction_red_up
+
+public static final int indicator_code_lock_point_area_default
+
+public static final int indicator_code_lock_point_area_green
+
+public static final int indicator_code_lock_point_area_red
+
+public static final int indicator_input_error
+
+public static final int indicator_show_current_selected_dark
+
+public static final int list_highlight
+
+public static final int list_highlight_active
+
+public static final int list_highlight_inactive
+
+public static final int list_selector_background
+
+public static final int list_selector_background_disabled
+
+public static final int list_selector_background_focus
+
+public static final int list_selector_background_longpress
+
+public static final int list_selector_background_pressed
+
+public static final int list_selector_background_transition
+
+public static final int load_average_background
+
+public static final int loading_tile
+
+public static final int lock_asset
+
+public static final int maps_google_logo
+
+public static final int media_button_background
+
+public static final int menu_background
+
+public static final int menu_background_fill_parent_width
+
+public static final int menu_frame
+
+public static final int menu_full_frame
+
+public static final int menu_selector
+
+public static final int menu_separator
+
+public static final int menu_submenu_background
+
+public static final int menuitem_background
+
+public static final int menuitem_background_focus
+
+public static final int menuitem_background_pressed
+
+public static final int menuitem_background_solid
+
+public static final int menuitem_background_solid_focused
+
+public static final int menuitem_background_solid_pressed
+
+public static final int menuitem_checkbox
+
+public static final int menuitem_checkbox_on
+
+public static final int no_tile_128
+
+public static final int padlock
+
+public static final int panel_background
+
+public static final int panel_picture_frame_background
+
+public static final int panel_picture_frame_bg_disabled
+
+public static final int panel_picture_frame_bg_focus_blue
+
+public static final int panel_picture_frame_bg_normal
+
+public static final int panel_picture_frame_bg_pressed_blue
+
+public static final int panel_separator
+
+public static final int pickerbox
+
+public static final int pickerbox_background
+
+public static final int pickerbox_divider
+
+public static final int pickerbox_selected
+
+public static final int pickerbox_unselected
+
+public static final int picture_emergency
+
+public static final int picture_frame
+
+public static final int popup_bottom_bright
+
+public static final int popup_bottom_dark
+
+public static final int popup_bottom_medium
+
+public static final int popup_center_bright
+
+public static final int popup_center_dark
+
+public static final int popup_center_medium
+
+public static final int popup_divider_horizontal_dark
+
+public static final int popup_full_bright
+
+public static final int popup_full_dark
+
+public static final int popup_inline_error
+
+public static final int popup_top_bright
+
+public static final int popup_top_dark
+
+public static final int presence_away
+
+public static final int presence_busy
+
+public static final int presence_invisible
+
+public static final int presence_offline
+
+public static final int presence_online
+
+public static final int pressed_application_background_static
+
+public static final int progress
+
+public static final int progress_circular_background
+
+public static final int progress_circular_background_small
+
+public static final int progress_circular_indeterminate
+
+public static final int progress_circular_indeterminate_small
+
+public static final int progress_frame
+
+public static final int progress_horizontal
+
+public static final int progress_indeterminate
+
+public static final int progress_indeterminate_horizontal
+
+public static final int progress_indeterminate_small
+
+public static final int progress_inner
+
+public static final int progress_large
+
+public static final int progress_medium
+
+public static final int progress_particle
+
+public static final int progress_particle_small
+
+public static final int progress_small
+
+public static final int progress_small_titlebar
+
+public static final int progressbar_indeterminate1
+
+public static final int progressbar_indeterminate2
+
+public static final int progressbar_indeterminate3
+
+public static final int radiobutton
+
+public static final int radiobutton_background
+
+public static final int radiobutton_label_background
+
+public static final int radiobutton_off_background
+
+public static final int radiobutton_off_background_focus_yellow
+
+public static final int radiobutton_on_background
+
+public static final int radiobutton_on_background_focus_yellow
+
+public static final int rate_star_big_half
+
+public static final int rate_star_big_off
+
+public static final int rate_star_big_on
+
+public static final int rate_star_small_half
+
+public static final int rate_star_small_off
+
+public static final int rate_star_small_on
+
+public static final int ratingbar
+
+public static final int ratingbar_full
+
+public static final int ratingbar_small
+
+public static final int reticle
+
+public static final int safe_mode_background
+
+public static final int screen_background_dark
+
+public static final int screen_background_light
+
+public static final int screen_progress
+
+public static final int screen_progress_frame
+
+public static final int screen_progress_inner
+
+public static final int screen_title_background
+
+public static final int scroll_thumb_horz
+
+public static final int scroll_thumb_vert
+
+public static final int scrollbar
+
+public static final int scrollbar_handle_accelerated_anim2
+
+public static final int scrollbar_handle_horizontal
+
+public static final int scrollbar_handle_vertical
+
+public static final int scrollbar_horizontal
+
+public static final int scrollbar_vertical
+
+public static final int search_bar_default_color
+
+public static final int search_plate
+
+public static final int seek_thumb
+
+public static final int selected_day_background
+
+public static final int settings_header
+
+public static final int settings_header_raw
+
+public static final int spinner_background
+
+public static final int spinner_dropdown_background
+
+public static final int spinner_dropdown_background_down
+
+public static final int spinner_dropdown_background_up
+
+public static final int spinner_normal
+
+public static final int spinner_press
+
+public static final int spinner_select
+
+public static final int spinnerbox_arrow_first
+
+public static final int spinnerbox_arrow_last
+
+public static final int spinnerbox_arrow_middle
+
+public static final int spinnerbox_arrow_single
+
+public static final int spinnerbox_arrows
+
+public static final int spinnerbox_background_focus_yellow
+
+public static final int spinnerbox_background_normal
+
+public static final int spinnerbox_background_pressed_yellow
+
+public static final int star_big_off
+
+public static final int star_big_on
+
+public static final int star_off
+
+public static final int star_on
+
+public static final int starting_frame
+
+public static final int stat_notify_alarm
+
+public static final int stat_notify_browser
+
+public static final int stat_notify_calibrate_compass
+
+public static final int stat_notify_call_mute
+
+public static final int stat_notify_chat
+
+public static final int stat_notify_disk_full
+
+public static final int stat_notify_error
+
+public static final int stat_notify_missed_call
+
+public static final int stat_notify_more
+
+public static final int stat_notify_sdcard
+
+public static final int stat_notify_sdcard_usb
+
+public static final int stat_notify_sync
+
+public static final int stat_notify_sync_anim0
+
+public static final int stat_notify_sync_error
+
+public static final int stat_notify_sync_noanim
+
+public static final int stat_notify_voicemail
+
+public static final int stat_notify_wifi_in_range
+
+public static final int stat_notify_xmpp
+
+public static final int stat_sys_battery
+
+public static final int stat_sys_battery_0
+
+public static final int stat_sys_battery_10
+
+public static final int stat_sys_battery_100
+
+public static final int stat_sys_battery_20
+
+public static final int stat_sys_battery_40
+
+public static final int stat_sys_battery_60
+
+public static final int stat_sys_battery_80
+
+public static final int stat_sys_battery_charge
+
+public static final int stat_sys_battery_charge_anim0
+
+public static final int stat_sys_battery_charge_anim1
+
+public static final int stat_sys_battery_charge_anim2
+
+public static final int stat_sys_battery_charge_anim3
+
+public static final int stat_sys_battery_charge_anim4
+
+public static final int stat_sys_battery_charge_anim5
+
+public static final int stat_sys_battery_unknown
+
+public static final int stat_sys_data_bluetooth
+
+public static final int stat_sys_data_bluetooth_connected
+
+public static final int stat_sys_data_connected_3g
+
+public static final int stat_sys_data_connected_e
+
+public static final int stat_sys_data_connected_g
+
+public static final int stat_sys_data_in_3g
+
+public static final int stat_sys_data_in_e
+
+public static final int stat_sys_data_in_g
+
+public static final int stat_sys_data_inandout_3g
+
+public static final int stat_sys_data_inandout_e
+
+public static final int stat_sys_data_inandout_g
+
+public static final int stat_sys_data_out_3g
+
+public static final int stat_sys_data_out_e
+
+public static final int stat_sys_data_out_g
+
+public static final int stat_sys_download
+
+public static final int stat_sys_download_anim0
+
+public static final int stat_sys_download_anim1
+
+public static final int stat_sys_download_anim2
+
+public static final int stat_sys_download_anim3
+
+public static final int stat_sys_download_anim4
+
+public static final int stat_sys_download_anim5
+
+public static final int stat_sys_download_done
+
+public static final int stat_sys_gps_acquiring
+
+public static final int stat_sys_gps_acquiring_anim
+
+public static final int stat_sys_gps_on
+
+public static final int stat_sys_headset
+
+public static final int stat_sys_no_sim
+
+public static final int stat_sys_phone_call
+
+public static final int stat_sys_phone_call_forward
+
+public static final int stat_sys_phone_call_on_hold
+
+public static final int stat_sys_r_signal_0
+
+public static final int stat_sys_r_signal_1
+
+public static final int stat_sys_r_signal_2
+
+public static final int stat_sys_r_signal_3
+
+public static final int stat_sys_r_signal_4
+
+public static final int stat_sys_ringer_silent
+
+public static final int stat_sys_ringer_vibrate
+
+public static final int stat_sys_signal_0
+
+public static final int stat_sys_signal_1
+
+public static final int stat_sys_signal_2
+
+public static final int stat_sys_signal_3
+
+public static final int stat_sys_signal_4
+
+public static final int stat_sys_signal_flightmode
+
+public static final int stat_sys_signal_null
+
+public static final int stat_sys_speakerphone
+
+public static final int stat_sys_upload
+
+public static final int stat_sys_upload_anim0
+
+public static final int stat_sys_upload_anim1
+
+public static final int stat_sys_upload_anim2
+
+public static final int stat_sys_upload_anim3
+
+public static final int stat_sys_upload_anim4
+
+public static final int stat_sys_upload_anim5
+
+public static final int stat_sys_upload_done
+
+public static final int stat_sys_warning
+
+public static final int stat_sys_wifi_signal_0
+
+public static final int stat_sys_wifi_signal_1
+
+public static final int stat_sys_wifi_signal_2
+
+public static final int stat_sys_wifi_signal_3
+
+public static final int stat_sys_wifi_signal_4
+
+public static final int status_bar_background
+
+public static final int status_bar_close_on
+
+public static final int status_bar_closed_default_background
+
+public static final int status_bar_divider_shadow
+
+public static final int status_bar_item_app_background
+
+public static final int status_bar_item_app_background_normal
+
+public static final int status_bar_item_background
+
+public static final int status_bar_item_background_focus
+
+public static final int status_bar_item_background_normal
+
+public static final int status_bar_item_background_pressed
+
+public static final int status_bar_item_clear_background
+
+public static final int status_bar_opened_default_background
+
+public static final int status_bar_shadow_bar
+
+public static final int status_icon_background
+
+public static final int statusbar_background
+
+public static final int sub_menu_bottom_bright
+
+public static final int sub_menu_top_dark
+
+public static final int submenu_arrow
+
+public static final int submenu_arrow_back
+
+public static final int submenu_arrow_focus
+
+public static final int submenu_arrow_nofocus
+
+public static final int sym_action_call
+
+public static final int sym_action_chat
+
+public static final int sym_action_email
+
+public static final int sym_action_map
+
+public static final int sym_action_sms
+
+public static final int sym_battery_white
+
+public static final int sym_call_incoming
+
+public static final int sym_call_missed
+
+public static final int sym_call_outgoing
+
+public static final int sym_contact_card
+
+public static final int sym_def_app_icon
+
+public static final int sym_default_number
+
+public static final int tab_bottom_left
+
+public static final int tab_bottom_right
+
+public static final int tab_bottom_shadow
+
+public static final int tab_focus
+
+public static final int tab_focus_bar_left
+
+public static final int tab_focus_bar_right
+
+public static final int tab_indicator
+
+public static final int tab_press
+
+public static final int tab_press_bar_left
+
+public static final int tab_press_bar_right
+
+public static final int tab_selected
+
+public static final int tab_selected_bar_left
+
+public static final int tab_selected_bar_right
+
+public static final int tab_selected_highlight
+
+public static final int tab_unselected
+
+public static final int tab_unselected_longpress
+
+public static final int tab_unselected_pressed
+
+public static final int tab_unselected_selected
+
+public static final int textfield_default
+
+public static final int textfield_disabled
+
+public static final int textfield_disabled_selected
+
+public static final int textfield_expanded_bottom_selected
+
+public static final int textfield_expanded_bottom_unselected
+
+public static final int textfield_expanded_center_selected
+
+public static final int textfield_expanded_center_unselected
+
+public static final int textfield_expanded_top_selected
+
+public static final int textfield_expanded_top_unselected
+
+public static final int textfield_pressed
+
+public static final int textfield_selected
+
+public static final int timepicker_down_btn
+
+public static final int timepicker_down_disabled
+
+public static final int timepicker_down_disabled_focused
+
+public static final int timepicker_down_normal
+
+public static final int timepicker_down_pressed
+
+public static final int timepicker_down_selected
+
+public static final int timepicker_input
+
+public static final int timepicker_input_disabled
+
+public static final int timepicker_input_normal
+
+public static final int timepicker_input_pressed
+
+public static final int timepicker_input_selected
+
+public static final int timepicker_up_btn
+
+public static final int timepicker_up_disabled
+
+public static final int timepicker_up_disabled_focused
+
+public static final int timepicker_up_normal
+
+public static final int timepicker_up_pressed
+
+public static final int timepicker_up_selected
+
+public static final int title_bar
+
+public static final int title_bar_shadow
+
+public static final int toast_frame
+
+public static final int unknown_image
+
+public static final int zoom_in
+
+public static final int zoom_in_pressed
+
+public static final int zoom_indicator
+
+public static final int zoom_indicator_selected
+
+public static final int zoom_out
+
+public static final int zoom_out_pressed
+
+public static final int zoom_plate
+
+public static final int zoom_track
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/R; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =id )
+public final class com.android.internal.R$id extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int KEYCODE_0
+
+public static final int KEYCODE_1
+
+public static final int KEYCODE_2
+
+public static final int KEYCODE_3
+
+public static final int KEYCODE_4
+
+public static final int KEYCODE_5
+
+public static final int KEYCODE_6
+
+public static final int KEYCODE_7
+
+public static final int KEYCODE_8
+
+public static final int KEYCODE_9
+
+public static final int KEYCODE_A
+
+public static final int KEYCODE_ALT_LEFT
+
+public static final int KEYCODE_ALT_RIGHT
+
+public static final int KEYCODE_APOSTROPHE
+
+public static final int KEYCODE_AT
+
+public static final int KEYCODE_B
+
+public static final int KEYCODE_BACK
+
+public static final int KEYCODE_BACKSLASH
+
+public static final int KEYCODE_C
+
+public static final int KEYCODE_CALL
+
+public static final int KEYCODE_CAMERA
+
+public static final int KEYCODE_CLEAR
+
+public static final int KEYCODE_COMMA
+
+public static final int KEYCODE_D
+
+public static final int KEYCODE_DEL
+
+public static final int KEYCODE_DPAD_CENTER
+
+public static final int KEYCODE_DPAD_DOWN
+
+public static final int KEYCODE_DPAD_LEFT
+
+public static final int KEYCODE_DPAD_RIGHT
+
+public static final int KEYCODE_DPAD_UP
+
+public static final int KEYCODE_E
+
+public static final int KEYCODE_ENDCALL
+
+public static final int KEYCODE_ENTER
+
+public static final int KEYCODE_ENVELOPE
+
+public static final int KEYCODE_EQUALS
+
+public static final int KEYCODE_EXPLORER
+
+public static final int KEYCODE_F
+
+public static final int KEYCODE_FOCUS
+
+public static final int KEYCODE_G
+
+public static final int KEYCODE_GRAVE
+
+public static final int KEYCODE_H
+
+public static final int KEYCODE_HEADSETHOOK
+
+public static final int KEYCODE_HOME
+
+public static final int KEYCODE_I
+
+public static final int KEYCODE_J
+
+public static final int KEYCODE_K
+
+public static final int KEYCODE_L
+
+public static final int KEYCODE_LEFT_BRACKET
+
+public static final int KEYCODE_M
+
+public static final int KEYCODE_MENU
+
+public static final int KEYCODE_MINUS
+
+public static final int KEYCODE_N
+
+public static final int KEYCODE_NOTIFICATION
+
+public static final int KEYCODE_NUM
+
+public static final int KEYCODE_O
+
+public static final int KEYCODE_P
+
+public static final int KEYCODE_PERIOD
+
+public static final int KEYCODE_PLUS
+
+public static final int KEYCODE_POUND
+
+public static final int KEYCODE_POWER
+
+public static final int KEYCODE_Q
+
+public static final int KEYCODE_R
+
+public static final int KEYCODE_RIGHT_BRACKET
+
+public static final int KEYCODE_S
+
+public static final int KEYCODE_SEARCH
+
+public static final int KEYCODE_SEMICOLON
+
+public static final int KEYCODE_SHIFT_LEFT
+
+public static final int KEYCODE_SHIFT_RIGHT
+
+public static final int KEYCODE_SLASH
+
+public static final int KEYCODE_SOFT_LEFT
+
+public static final int KEYCODE_SOFT_RIGHT
+
+public static final int KEYCODE_SPACE
+
+public static final int KEYCODE_STAR
+
+public static final int KEYCODE_SYM
+
+public static final int KEYCODE_T
+
+public static final int KEYCODE_TAB
+
+public static final int KEYCODE_U
+
+public static final int KEYCODE_UNKNOWN
+
+public static final int KEYCODE_V
+
+public static final int KEYCODE_VOLUME_DOWN
+
+public static final int KEYCODE_VOLUME_UP
+
+public static final int KEYCODE_W
+
+public static final int KEYCODE_X
+
+public static final int KEYCODE_Y
+
+public static final int KEYCODE_Z
+
+public static final int afterDescendants
+
+public static final int alarm
+
+public static final int alertTitle
+
+public static final int all
+
+public static final int alternative
+
+public static final int alwaysScroll
+
+public static final int alwaysUse
+
+public static final int amPm
+
+public static final int animation
+
+public static final int arrow
+
+public static final int auto
+
+public static final int auto_fit
+
+public static final int background
+
+public static final int backspace
+
+public static final int batteryInfo
+
+public static final int batteryInfoIcon
+
+public static final int batteryInfoSpacer
+
+public static final int batteryInfoText
+
+public static final int beforeDescendants
+
+public static final int behind
+
+public static final int blocksDescendants
+
+public static final int body
+
+public static final int bold
+
+public static final int bottom
+
+public static final int bottom_to_top
+
+public static final int button1
+
+public static final int button2
+
+public static final int button3
+
+public static final int button4
+
+public static final int button5
+
+public static final int button6
+
+public static final int buttonPanel
+
+public static final int cancel
+
+public static final int category_description
+
+public static final int category_name
+
+public static final int center
+
+public static final int centerCrop
+
+public static final int centerInside
+
+public static final int center_horizontal
+
+public static final int center_vertical
+
+public static final int characterPicker
+
+public static final int characters
+
+public static final int check
+
+public static final int checkbox
+
+public static final int clamp
+
+public static final int clearDefaultHint
+
+public static final int clear_all_button
+
+public static final int close
+
+public static final int collapsing
+
+public static final int column
+
+public static final int columnWidth
+
+public static final int container
+
+public static final int content
+
+public static final int contentPanel
+
+public static final int custom
+
+public static final int customPanel
+
+public static final int cycle
+
+public static final int dangerous
+
+public static final int dangerous_perms_list
+
+public static final int date
+
+public static final int datePicker
+
+public static final int day
+
+public static final int decimal
+
+public static final int decrement
+
+public static final int disabled
+
+public static final int edit
+
+public static final int editable
+
+public static final int edittext_container
+
+public static final int eight
+
+public static final int email
+
+public static final int emergencyCall
+
+public static final int emergencyCallAlone
+
+public static final int emergencyCallButton
+
+public static final int emergencyCallTogether
+
+public static final int empty
+
+public static final int end
+
+public static final int expanded_menu
+
+public static final int ffwd
+
+public static final int fill
+
+public static final int fill_horizontal
+
+public static final int fill_parent
+
+public static final int fill_vertical
+
+public static final int fitCenter
+
+public static final int fitEnd
+
+public static final int fitStart
+
+public static final int fitXY
+
+public static final int five
+
+public static final int fontScale
+
+public static final int footerForgotPattern
+
+public static final int footerNormal
+
+public static final int forgotPattern
+
+public static final int four
+
+public static final int frame
+
+public static final int gone
+
+public static final int header
+
+public static final int headerSimBad1
+
+public static final int headerSimBad2
+
+public static final int headerSimOk1
+
+public static final int headerSimOk2
+
+public static final int headerText
+
+public static final int high
+
+public static final int hint
+
+public static final int horizontal
+
+public static final int hour
+
+public static final int icon
+
+public static final int icon1
+
+public static final int icon2
+
+public static final int icon_menu
+
+public static final int icons
+
+public static final int image
+
+public static final int increment
+
+public static final int index
+
+public static final int infinite
+
+public static final int input
+
+public static final int insideInset
+
+public static final int insideOverlay
+
+public static final int instructions
+
+public static final int integer
+
+public static final int invisible
+
+public static final int italic
+
+public static final int keyboard
+
+public static final int keyboardHidden
+
+public static final int keyguard
+
+public static final int label
+
+public static final int landscape
+
+public static final int latestItems
+
+public static final int latestTitle
+
+public static final int left
+
+public static final int leftSpacer
+
+public static final int left_icon
+
+public static final int left_to_right
+
+public static final int level
+
+public static final int level_percent
+
+public static final int line
+
+public static final int linear
+
+public static final int list
+
+public static final int listview
+
+public static final int locale
+
+public static final int lockInstructions
+
+public static final int lockPattern
+
+public static final int lock_screen
+
+public static final int login
+
+public static final int low
+
+public static final int map
+
+public static final int matrix
+
+public static final int mcc
+
+public static final int mediacontroller_progress
+
+public static final int menu
+
+public static final int message
+
+public static final int meter
+
+public static final int middle
+
+public static final int minute
+
+public static final int mirror
+
+public static final int mnc
+
+public static final int monospace
+
+public static final int month
+
+public static final int multiple
+
+public static final int multipleChoice
+
+public static final int music
+
+public static final int navigation
+
+public static final int next
+
+public static final int nextAlarmInfo
+
+public static final int nextAlarmSpacer
+
+public static final int nextAlarmText
+
+public static final int nine
+
+public static final int noNotificationsTitle
+
+public static final int no_applications_message
+
+public static final int no_permissions
+
+public static final int non_dangerous_perms_list
+
+public static final int none
+
+public static final int normal
+
+public static final int nosensor
+
+public static final int notification
+
+public static final int notificationIcons
+
+public static final int notificationLinearLayout
+
+public static final int number
+
+public static final int off
+
+public static final int ok
+
+public static final int one
+
+public static final int oneLine
+
+public static final int ongoingItems
+
+public static final int ongoingTitle
+
+public static final int orientation
+
+public static final int other_stream_icon
+
+public static final int outsideInset
+
+public static final int outsideOverlay
+
+public static final int oval
+
+public static final int padding
+
+public static final int parent
+
+public static final int parentPanel
+
+public static final int password
+
+public static final int pause
+
+public static final int perm_icon
+
+public static final int permission_group
+
+public static final int permission_list
+
+public static final int phone
+
+public static final int pinDisplay
+
+public static final int pinDisplayGroup
+
+public static final int plmnLabel
+
+public static final int portrait
+
+public static final int prev
+
+public static final int primary
+
+public static final int progress
+
+public static final int progress_circular
+
+public static final int progress_horizontal
+
+public static final int progress_number
+
+public static final int progress_percent
+
+public static final int queryRewriteFromData
+
+public static final int queryRewriteFromText
+
+public static final int radial
+
+public static final int radio
+
+public static final int radio_power
+
+public static final int random
+
+public static final int rectangle
+
+public static final int repeat
+
+public static final int restart
+
+public static final int reverse
+
+public static final int rew
+
+public static final int right
+
+public static final int rightSpacer
+
+public static final int right_container
+
+public static final int right_icon
+
+public static final int right_to_left
+
+public static final int ring
+
+public static final int ringer_stream_icon
+
+public static final int ringtone
+
+public static final int row
+
+public static final int sans
+
+public static final int screenLockedInfo
+
+public static final int scroll
+
+public static final int scrollView
+
+public static final int scrolling
+
+public static final int search_app_icon1
+
+public static final int search_app_text1
+
+public static final int search_badge
+
+public static final int search_bar
+
+public static final int search_edit_frame
+
+public static final int search_go_btn
+
+public static final int search_src_text
+
+public static final int search_suggest_list
+
+public static final int secondary
+
+public static final int secondaryProgress
+
+public static final int seekbar
+
+public static final int select_dialog_listview
+
+public static final int selectedIcon
+
+public static final int sensor
+
+public static final int sentences
+
+public static final int separator
+
+public static final int serif
+
+public static final int setting_name
+
+public static final int setting_value_layout
+
+public static final int setting_value_text
+
+public static final int seven
+
+public static final int shortcut
+
+public static final int showSearchIconAsBadge
+
+public static final int showSearchLabelAsBadge
+
+public static final int show_more
+
+public static final int show_more_icon
+
+public static final int show_more_text
+
+public static final int signature
+
+public static final int signatureOrSystem
+
+public static final int signed
+
+public static final int silent
+
+public static final int single
+
+public static final int singleChoice
+
+public static final int singleInstance
+
+public static final int singleTask
+
+public static final int singleTop
+
+public static final int six
+
+public static final int spacer
+
+public static final int spacerTop
+
+public static final int spacingWidth
+
+public static final int spannable
+
+public static final int spnLabel
+
+public static final int start
+
+public static final int status
+
+public static final int statusIcons
+
+public static final int subtitle
+
+public static final int summary
+
+public static final int sweep
+
+public static final int system
+
+public static final int tabcontent
+
+public static final int tabhost
+
+public static final int tabs
+
+public static final int text
+
+public static final int text1
+
+public static final int text2
+
+public static final int three
+
+public static final int ticker
+
+public static final int tickerIcon
+
+public static final int tickerText
+
+public static final int time
+
+public static final int timePicker
+
+public static final int time_current
+
+public static final int timepicker_input
+
+public static final int title
+
+public static final int titleDivider
+
+public static final int title_container
+
+public static final int title_template
+
+public static final int toggle
+
+public static final int top
+
+public static final int topHeader
+
+public static final int topPanel
+
+public static final int top_to_bottom
+
+public static final int touchscreen
+
+public static final int two
+
+public static final int twoLine
+
+public static final int unlockLockIcon
+
+public static final int unspecified
+
+public static final int useDefaultText
+
+public static final int user
+
+public static final int vertical
+
+public static final int visible
+
+public static final int voice
+
+public static final int web
+
+public static final int widget_frame
+
+public static final int words
+
+public static final int wrap_content
+
+public static final int year
+
+public static final int zero
+
+public static final int zoomControls
+
+public static final int zoomIn
+
+public static final int zoomMagnify
+
+public static final int zoomOut
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =layout )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/R; )
+public final class com.android.internal.R$layout extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int activity_list_item
+
+public static final int alert_dialog
+
+public static final int alert_dialog_progress
+
+public static final int always_use_checkbox
+
+public static final int app_permission_item
+
+public static final int app_perms_summary
+
+public static final int auto_complete_list
+
+public static final int battery_low
+
+public static final int battery_status
+
+public static final int browser_link_context_header
+
+public static final int character_picker
+
+public static final int character_picker_button
+
+public static final int date_picker
+
+public static final int date_picker_dialog
+
+public static final int dialog_custom_title
+
+public static final int dialog_title
+
+public static final int dialog_title_icons
+
+public static final int expandable_list_content
+
+public static final int expanded_menu_layout
+
+public static final int global_actions_item
+
+public static final int google_web_content_helper_layout
+
+public static final int icon_menu_item_layout
+
+public static final int icon_menu_layout
+
+public static final int keyguard
+
+public static final int keyguard_screen_glogin_unlock
+
+public static final int keyguard_screen_lock
+
+public static final int keyguard_screen_sim_pin_landscape
+
+public static final int keyguard_screen_sim_pin_portrait
+
+public static final int keyguard_screen_unlock_landscape
+
+public static final int keyguard_screen_unlock_portrait
+
+public static final int list_content
+
+public static final int list_menu_item_checkbox
+
+public static final int list_menu_item_icon
+
+public static final int list_menu_item_layout
+
+public static final int list_menu_item_radio
+
+public static final int media_controller
+
+public static final int menu_item
+
+public static final int menu_item_divider
+
+public static final int number_picker
+
+public static final int number_picker_edit
+
+public static final int popup_menu_layout
+
+public static final int power_dialog
+
+public static final int preference
+
+public static final int preference_category
+
+public static final int preference_child
+
+public static final int preference_dialog_edittext
+
+public static final int preference_information
+
+public static final int preference_list_content
+
+public static final int preference_widget_checkbox
+
+public static final int preferences
+
+public static final int progress_dialog
+
+public static final int recent_apps_dialog
+
+public static final int recent_apps_icon
+
+public static final int resolve_list_item
+
+public static final int safe_mode
+
+public static final int screen
+
+public static final int screen_custom_title
+
+public static final int screen_progress
+
+public static final int screen_simple
+
+public static final int screen_title
+
+public static final int screen_title_icons
+
+public static final int search_bar
+
+public static final int search_dropdown_app_selector
+
+public static final int search_dropdown_item_1line
+
+public static final int search_dropdown_item_2line
+
+public static final int search_dropdown_item_icons_1line
+
+public static final int search_dropdown_item_icons_2line
+
+public static final int seekbar_dialog
+
+public static final int select_dialog
+
+public static final int select_dialog_item
+
+public static final int select_dialog_multichoice
+
+public static final int select_dialog_singlechoice
+
+public static final int setting_list_category
+
+public static final int setting_list_expanded_category
+
+public static final int setting_list_setting
+
+public static final int setting_list_setting_value_text
+
+public static final int simple_dropdown_hint
+
+public static final int simple_dropdown_item_1line
+
+public static final int simple_dropdown_item_2line
+
+public static final int simple_expandable_list_item_1
+
+public static final int simple_expandable_list_item_2
+
+public static final int simple_gallery_item
+
+public static final int simple_list_item_1
+
+public static final int simple_list_item_2
+
+public static final int simple_list_item_checked
+
+public static final int simple_list_item_multiple_choice
+
+public static final int simple_list_item_single_choice
+
+public static final int simple_spinner_dropdown_item
+
+public static final int simple_spinner_item
+
+public static final int status_bar
+
+public static final int status_bar_expanded
+
+public static final int status_bar_icon
+
+public static final int status_bar_latest_event
+
+public static final int status_bar_latest_event_content
+
+public static final int status_bar_tracking
+
+public static final int submenu_item
+
+public static final int tab_content
+
+public static final int tab_indicator
+
+public static final int test_list_item
+
+public static final int textview_hint
+
+public static final int time_picker
+
+public static final int time_picker_dialog
+
+public static final int time_picker_text
+
+public static final int transient_notification
+
+public static final int two_line_list_item
+
+public static final int typing_filter
+
+public static final int volume_adjust
+
+public static final int zoom_controls
+
+public static final int zoom_magnify
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/R; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =plurals )
+public final class com.android.internal.R$plurals extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int wifi_available
+
+public static final int wifi_available_detailed
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/R; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =raw )
+public final class com.android.internal.R$raw extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int fallbackring
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =string )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/R; )
+public final class com.android.internal.R$string extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int BaMmi
+
+public static final int CLIRDefaultOffNextCallOff
+
+public static final int CLIRDefaultOffNextCallOn
+
+public static final int CLIRDefaultOnNextCallOff
+
+public static final int CLIRDefaultOnNextCallOn
+
+public static final int CLIRPermanent
+
+public static final int CfMmi
+
+public static final int ClipMmi
+
+public static final int ClirMmi
+
+public static final int CwMmi
+
+public static final int Midnight
+
+public static final int Noon
+
+public static final int PinMmi
+
+public static final int PwdMmi
+
+public static final int VideoView_error_button
+
+public static final int VideoView_error_text_unknown
+
+public static final int VideoView_error_title
+
+public static final int abbrev_month
+
+public static final int abbrev_month_day
+
+public static final int abbrev_month_day_year
+
+public static final int abbrev_month_year
+
+public static final int activate_keyguard
+
+public static final int aerr_application
+
+public static final int aerr_process
+
+public static final int aerr_title
+
+public static final int ago
+
+public static final int alwaysUse
+
+public static final int am
+
+public static final int anr_activity_application
+
+public static final int anr_activity_process
+
+public static final int anr_application_process
+
+public static final int anr_process
+
+public static final int anr_title
+
+public static final int badPin
+
+public static final int badPuk
+
+public static final int battery_low_percent_format
+
+public static final int battery_low_subtitle
+
+public static final int battery_low_title
+
+public static final int battery_status_charging
+
+public static final int battery_status_text_percent_format
+
+public static final int before
+
+public static final int browserSavedFormData
+
+public static final int byteShort
+
+public static final int cancel
+
+public static final int capital_off
+
+public static final int capital_on
+
+public static final int cfReasonBusy
+
+public static final int cfReasonNR
+
+public static final int cfReasonNRy
+
+public static final int cfReasonUnconditional
+
+public static final int cfTemplateForwarded
+
+public static final int cfTemplateForwardedTime
+
+public static final int cfTemplateNotForwarded
+
+public static final int cfTemplateRegistered
+
+public static final int cfTemplateRegisteredTime
+
+public static final int chooseActivity
+
+public static final int clearDefaultHintMsg
+
+public static final int compass_accuracy_banner
+
+public static final int compass_accuracy_notificaction_body
+
+public static final int compass_accuracy_notificaction_title
+
+public static final int contentServiceSync
+
+public static final int contentServiceSyncErrorNotificationDesc
+
+public static final int contentServiceSyncNotificationDesc
+
+public static final int contentServiceSyncNotificationTitle
+
+public static final int contentServiceTooManyDeletesNotificationDesc
+
+public static final int contentServiceXmppAvailable
+
+public static final int copy
+
+public static final int copyAll
+
+public static final int copyUrl
+
+public static final int cut
+
+public static final int cutAll
+
+public static final int daily
+
+public static final int daily_format
+
+public static final int date1_date2
+
+public static final int date1_time1_date2_time2
+
+public static final int date_picker_month
+
+public static final int date_picker_set
+
+public static final int date_range_separator
+
+public static final int date_time_set
+
+public static final int day
+
+public static final int day_of_week_long_friday
+
+public static final int day_of_week_long_monday
+
+public static final int day_of_week_long_saturday
+
+public static final int day_of_week_long_sunday
+
+public static final int day_of_week_long_thursday
+
+public static final int day_of_week_long_tuesday
+
+public static final int day_of_week_long_wednesday
+
+public static final int day_of_week_medium_friday
+
+public static final int day_of_week_medium_monday
+
+public static final int day_of_week_medium_saturday
+
+public static final int day_of_week_medium_sunday
+
+public static final int day_of_week_medium_thursday
+
+public static final int day_of_week_medium_tuesday
+
+public static final int day_of_week_medium_wednesday
+
+public static final int day_of_week_short_friday
+
+public static final int day_of_week_short_monday
+
+public static final int day_of_week_short_saturday
+
+public static final int day_of_week_short_sunday
+
+public static final int day_of_week_short_thursday
+
+public static final int day_of_week_short_tuesday
+
+public static final int day_of_week_short_wednesday
+
+public static final int day_of_week_shorter_friday
+
+public static final int day_of_week_shorter_monday
+
+public static final int day_of_week_shorter_saturday
+
+public static final int day_of_week_shorter_sunday
+
+public static final int day_of_week_shorter_thursday
+
+public static final int day_of_week_shorter_tuesday
+
+public static final int day_of_week_shorter_wednesday
+
+public static final int day_of_week_shortest_friday
+
+public static final int day_of_week_shortest_monday
+
+public static final int day_of_week_shortest_saturday
+
+public static final int day_of_week_shortest_sunday
+
+public static final int day_of_week_shortest_thursday
+
+public static final int day_of_week_shortest_tuesday
+
+public static final int day_of_week_shortest_wednesday
+
+public static final int days
+
+public static final int daysDurationFuturePlural
+
+public static final int daysDurationPastPlural
+
+public static final int debug
+
+public static final int defaultMsisdnAlphaTag
+
+public static final int defaultVoiceMailAlphaTag
+
+public static final int default_permission_group
+
+public static final int elapsed_time_short_format_h_mm_ss
+
+public static final int elapsed_time_short_format_mm_ss
+
+public static final int ellipsis
+
+public static final int emergency_call_dialog_call
+
+public static final int emergency_call_dialog_cancel
+
+public static final int emergency_call_dialog_number_for_display
+
+public static final int emergency_call_dialog_text
+
+public static final int emergency_call_number_uri
+
+public static final int emptyPhoneNumber
+
+public static final int every_weekday
+
+public static final int factorytest_failed
+
+public static final int factorytest_no_action
+
+public static final int factorytest_not_system
+
+public static final int factorytest_reboot
+
+public static final int force_close
+
+public static final int friday
+
+public static final int gigabyteShort
+
+public static final int global_action_lock
+
+public static final int global_action_power_off
+
+public static final int global_action_silent_mode_off_status
+
+public static final int global_action_silent_mode_on_status
+
+public static final int global_action_toggle_silent_mode
+
+public static final int global_actions
+
+public static final int googlewebcontenthelper_loading
+
+public static final int hour
+
+public static final int hours
+
+public static final int httpError
+
+public static final int httpErrorAuth
+
+public static final int httpErrorBadUrl
+
+public static final int httpErrorConnect
+
+public static final int httpErrorFailedSslHandshake
+
+public static final int httpErrorFile
+
+public static final int httpErrorFileNotFound
+
+public static final int httpErrorIO
+
+public static final int httpErrorLookup
+
+public static final int httpErrorOk
+
+public static final int httpErrorProxyAuth
+
+public static final int httpErrorRedirectLoop
+
+public static final int httpErrorTimeout
+
+public static final int httpErrorTooManyRequests
+
+public static final int httpErrorUnsupportedAuthScheme
+
+public static final int httpErrorUnsupportedScheme
+
+public static final int in
+
+public static final int invalidPin
+
+public static final int keyguard_label_text
+
+public static final int keyguard_password_emergency_instructions
+
+public static final int keyguard_password_enter_pin_code
+
+public static final int keyguard_password_instructions
+
+public static final int keyguard_password_wrong_pin_code
+
+public static final int kilobyteShort
+
+public static final int lockscreen_carrier_default
+
+public static final int lockscreen_carrier_key
+
+public static final int lockscreen_emergency_call
+
+public static final int lockscreen_failed_attempts_almost_glogin
+
+public static final int lockscreen_forgot_pattern_button_text
+
+public static final int lockscreen_glogin_instructions
+
+public static final int lockscreen_glogin_invalid_input
+
+public static final int lockscreen_glogin_password_hint
+
+public static final int lockscreen_glogin_submit_button
+
+public static final int lockscreen_glogin_too_many_attempts
+
+public static final int lockscreen_glogin_username_hint
+
+public static final int lockscreen_instructions_when_pattern_disabled
+
+public static final int lockscreen_instructions_when_pattern_enabled
+
+public static final int lockscreen_low_battery
+
+public static final int lockscreen_missing_sim_instructions
+
+public static final int lockscreen_missing_sim_message
+
+public static final int lockscreen_missing_sim_message_short
+
+public static final int lockscreen_network_locked_message
+
+public static final int lockscreen_pattern_correct
+
+public static final int lockscreen_pattern_instructions
+
+public static final int lockscreen_pattern_wrong
+
+public static final int lockscreen_plugged_in
+
+public static final int lockscreen_screen_locked
+
+public static final int lockscreen_sim_locked_message
+
+public static final int lockscreen_sim_puk_locked_instructions
+
+public static final int lockscreen_sim_puk_locked_message
+
+public static final int lockscreen_sim_unlock_progress_dialog_message
+
+public static final int lockscreen_too_many_failed_attempts_countdown
+
+public static final int lockscreen_too_many_failed_attempts_dialog_message
+
+public static final int lockscreen_too_many_failed_attempts_dialog_title
+
+public static final int low_internal_storage_text
+
+public static final int low_internal_storage_view_text
+
+public static final int low_internal_storage_view_title
+
+public static final int low_memory
+
+public static final int me
+
+public static final int megabyteShort
+
+public static final int menu_delete_shortcut_label
+
+public static final int menu_enter_shortcut_label
+
+public static final int menu_space_shortcut_label
+
+public static final int midnight
+
+public static final int minute
+
+public static final int minutes
+
+public static final int mismatchPin
+
+public static final int mmiComplete
+
+public static final int mmiError
+
+public static final int monday
+
+public static final int month
+
+public static final int month_day
+
+public static final int month_day_year
+
+public static final int month_long_april
+
+public static final int month_long_august
+
+public static final int month_long_december
+
+public static final int month_long_february
+
+public static final int month_long_january
+
+public static final int month_long_july
+
+public static final int month_long_june
+
+public static final int month_long_march
+
+public static final int month_long_may
+
+public static final int month_long_november
+
+public static final int month_long_october
+
+public static final int month_long_september
+
+public static final int month_medium_april
+
+public static final int month_medium_august
+
+public static final int month_medium_december
+
+public static final int month_medium_february
+
+public static final int month_medium_january
+
+public static final int month_medium_july
+
+public static final int month_medium_june
+
+public static final int month_medium_march
+
+public static final int month_medium_may
+
+public static final int month_medium_november
+
+public static final int month_medium_october
+
+public static final int month_medium_september
+
+public static final int month_shortest_april
+
+public static final int month_shortest_august
+
+public static final int month_shortest_december
+
+public static final int month_shortest_february
+
+public static final int month_shortest_january
+
+public static final int month_shortest_july
+
+public static final int month_shortest_june
+
+public static final int month_shortest_march
+
+public static final int month_shortest_may
+
+public static final int month_shortest_november
+
+public static final int month_shortest_october
+
+public static final int month_shortest_september
+
+public static final int month_year
+
+public static final int monthly
+
+public static final int monthly_format
+
+public static final int more_item_label
+
+public static final int needPuk2
+
+public static final int no
+
+public static final int noApplications
+
+public static final int no_permissions
+
+public static final int no_recent_tasks
+
+public static final int noon
+
+public static final int numeric_date
+
+public static final int numeric_date_notation
+
+public static final int numeric_md1_md2
+
+public static final int numeric_md1_time1_md2_time2
+
+public static final int numeric_mdy1_mdy2
+
+public static final int numeric_mdy1_time1_mdy2_time2
+
+public static final int numeric_wday1_md1_time1_wday2_md2_time2
+
+public static final int numeric_wday1_md1_wday2_md2
+
+public static final int numeric_wday1_mdy1_time1_wday2_mdy2_time2
+
+public static final int numeric_wday1_mdy1_wday2_mdy2
+
+public static final int ok
+
+public static final int oneMonthDurationPast
+
+public static final int open_permission_deny
+
+public static final int passwordIncorrect
+
+public static final int paste
+
+public static final int permdesc_accessCoarseLocation
+
+public static final int permdesc_accessFineLocation
+
+public static final int permdesc_accessLocationExtraCommands
+
+public static final int permdesc_accessMockLocation
+
+public static final int permdesc_accessNetworkState
+
+public static final int permdesc_accessPhoneInterface
+
+public static final int permdesc_accessSurfaceFlinger
+
+public static final int permdesc_accessWifiState
+
+public static final int permdesc_addSystemService
+
+public static final int permdesc_batteryStats
+
+public static final int permdesc_bluetooth
+
+public static final int permdesc_bluetoothAdmin
+
+public static final int permdesc_brick
+
+public static final int permdesc_broadcastPackageRemoved
+
+public static final int permdesc_broadcastSticky
+
+public static final int permdesc_callPhone
+
+public static final int permdesc_callPrivileged
+
+public static final int permdesc_camera
+
+public static final int permdesc_changeComponentState
+
+public static final int permdesc_changeConfiguration
+
+public static final int permdesc_changeNetworkState
+
+public static final int permdesc_changeWifiState
+
+public static final int permdesc_checkinProperties
+
+public static final int permdesc_clearAppCache
+
+public static final int permdesc_clearAppUserData
+
+public static final int permdesc_createNetworkSockets
+
+public static final int permdesc_deleteCacheFiles
+
+public static final int permdesc_deletePackages
+
+public static final int permdesc_devicePower
+
+public static final int permdesc_diagnostic
+
+public static final int permdesc_disableKeyguard
+
+public static final int permdesc_dump
+
+public static final int permdesc_expandStatusBar
+
+public static final int permdesc_factoryTest
+
+public static final int permdesc_flashlight
+
+public static final int permdesc_forceBack
+
+public static final int permdesc_fotaUpdate
+
+public static final int permdesc_getAccounts
+
+public static final int permdesc_getPackageSize
+
+public static final int permdesc_getTasks
+
+public static final int permdesc_hardware_test
+
+public static final int permdesc_injectEvents
+
+public static final int permdesc_installPackages
+
+public static final int permdesc_internalSystemWindow
+
+public static final int permdesc_locationUpdates
+
+public static final int permdesc_manageAppTokens
+
+public static final int permdesc_masterClear
+
+public static final int permdesc_modifyAudioSettings
+
+public static final int permdesc_modifyPhoneState
+
+public static final int permdesc_mount_unmount_filesystems
+
+public static final int permdesc_persistentActivity
+
+public static final int permdesc_processOutgoingCalls
+
+public static final int permdesc_raisedThreadPriority
+
+public static final int permdesc_readCalendar
+
+public static final int permdesc_readContacts
+
+public static final int permdesc_readFrameBuffer
+
+public static final int permdesc_readInputState
+
+public static final int permdesc_readLogs
+
+public static final int permdesc_readOwnerData
+
+public static final int permdesc_readPhoneState
+
+public static final int permdesc_readSms
+
+public static final int permdesc_readSyncSettings
+
+public static final int permdesc_readSyncStats
+
+public static final int permdesc_reboot
+
+public static final int permdesc_receiveBootCompleted
+
+public static final int permdesc_receiveMms
+
+public static final int permdesc_receiveSms
+
+public static final int permdesc_receiveWapPush
+
+public static final int permdesc_recordAudio
+
+public static final int permdesc_reorderTasks
+
+public static final int permdesc_restartPackages
+
+public static final int permdesc_runInstrumentation
+
+public static final int permdesc_runSetActivityWatcher
+
+public static final int permdesc_sendSms
+
+public static final int permdesc_setAlwaysFinish
+
+public static final int permdesc_setAnimationScale
+
+public static final int permdesc_setDebugApp
+
+public static final int permdesc_setOrientation
+
+public static final int permdesc_setPreferredApplications
+
+public static final int permdesc_setProcessForeground
+
+public static final int permdesc_setProcessLimit
+
+public static final int permdesc_setTimeZone
+
+public static final int permdesc_setWallpaper
+
+public static final int permdesc_setWallpaperHints
+
+public static final int permdesc_signalPersistentProcesses
+
+public static final int permdesc_statusBar
+
+public static final int permdesc_subscribedFeedsRead
+
+public static final int permdesc_subscribedFeedsWrite
+
+public static final int permdesc_systemAlertWindow
+
+public static final int permdesc_vibrate
+
+public static final int permdesc_wakeLock
+
+public static final int permdesc_writeApnSettings
+
+public static final int permdesc_writeCalendar
+
+public static final int permdesc_writeContacts
+
+public static final int permdesc_writeGservices
+
+public static final int permdesc_writeOwnerData
+
+public static final int permdesc_writeSettings
+
+public static final int permdesc_writeSms
+
+public static final int permdesc_writeSyncSettings
+
+public static final int permgroupdesc_accounts
+
+public static final int permgroupdesc_costMoney
+
+public static final int permgroupdesc_developmentTools
+
+public static final int permgroupdesc_hardwareControls
+
+public static final int permgroupdesc_location
+
+public static final int permgroupdesc_messages
+
+public static final int permgroupdesc_network
+
+public static final int permgroupdesc_personalInfo
+
+public static final int permgroupdesc_phoneCalls
+
+public static final int permgroupdesc_systemTools
+
+public static final int permgrouplab_accounts
+
+public static final int permgrouplab_costMoney
+
+public static final int permgrouplab_developmentTools
+
+public static final int permgrouplab_hardwareControls
+
+public static final int permgrouplab_location
+
+public static final int permgrouplab_messages
+
+public static final int permgrouplab_network
+
+public static final int permgrouplab_personalInfo
+
+public static final int permgrouplab_phoneCalls
+
+public static final int permgrouplab_systemTools
+
+public static final int permissions_format
+
+public static final int permlab_accessCoarseLocation
+
+public static final int permlab_accessFineLocation
+
+public static final int permlab_accessLocationExtraCommands
+
+public static final int permlab_accessMockLocation
+
+public static final int permlab_accessNetworkState
+
+public static final int permlab_accessPhoneInterface
+
+public static final int permlab_accessSurfaceFlinger
+
+public static final int permlab_accessWifiState
+
+public static final int permlab_addSystemService
+
+public static final int permlab_batteryStats
+
+public static final int permlab_bluetooth
+
+public static final int permlab_bluetoothAdmin
+
+public static final int permlab_brick
+
+public static final int permlab_broadcastPackageRemoved
+
+public static final int permlab_broadcastSticky
+
+public static final int permlab_callPhone
+
+public static final int permlab_callPrivileged
+
+public static final int permlab_camera
+
+public static final int permlab_changeComponentState
+
+public static final int permlab_changeConfiguration
+
+public static final int permlab_changeNetworkState
+
+public static final int permlab_changeWifiState
+
+public static final int permlab_checkinProperties
+
+public static final int permlab_clearAppCache
+
+public static final int permlab_clearAppUserData
+
+public static final int permlab_createNetworkSockets
+
+public static final int permlab_deleteCacheFiles
+
+public static final int permlab_deletePackages
+
+public static final int permlab_devicePower
+
+public static final int permlab_diagnostic
+
+public static final int permlab_disableKeyguard
+
+public static final int permlab_dump
+
+public static final int permlab_expandStatusBar
+
+public static final int permlab_factoryTest
+
+public static final int permlab_flashlight
+
+public static final int permlab_forceBack
+
+public static final int permlab_fotaUpdate
+
+public static final int permlab_getAccounts
+
+public static final int permlab_getPackageSize
+
+public static final int permlab_getTasks
+
+public static final int permlab_hardware_test
+
+public static final int permlab_injectEvents
+
+public static final int permlab_installPackages
+
+public static final int permlab_internalSystemWindow
+
+public static final int permlab_locationUpdates
+
+public static final int permlab_manageAppTokens
+
+public static final int permlab_masterClear
+
+public static final int permlab_modifyAudioSettings
+
+public static final int permlab_modifyPhoneState
+
+public static final int permlab_mount_unmount_filesystems
+
+public static final int permlab_persistentActivity
+
+public static final int permlab_processOutgoingCalls
+
+public static final int permlab_raisedThreadPriority
+
+public static final int permlab_readCalendar
+
+public static final int permlab_readContacts
+
+public static final int permlab_readFrameBuffer
+
+public static final int permlab_readInputState
+
+public static final int permlab_readLogs
+
+public static final int permlab_readOwnerData
+
+public static final int permlab_readPhoneState
+
+public static final int permlab_readSms
+
+public static final int permlab_readSyncSettings
+
+public static final int permlab_readSyncStats
+
+public static final int permlab_reboot
+
+public static final int permlab_receiveBootCompleted
+
+public static final int permlab_receiveMms
+
+public static final int permlab_receiveSms
+
+public static final int permlab_receiveWapPush
+
+public static final int permlab_recordAudio
+
+public static final int permlab_reorderTasks
+
+public static final int permlab_restartPackages
+
+public static final int permlab_runInstrumentation
+
+public static final int permlab_runSetActivityWatcher
+
+public static final int permlab_sendSms
+
+public static final int permlab_setAlwaysFinish
+
+public static final int permlab_setAnimationScale
+
+public static final int permlab_setDebugApp
+
+public static final int permlab_setOrientation
+
+public static final int permlab_setPreferredApplications
+
+public static final int permlab_setProcessForeground
+
+public static final int permlab_setProcessLimit
+
+public static final int permlab_setTimeZone
+
+public static final int permlab_setWallpaper
+
+public static final int permlab_setWallpaperHints
+
+public static final int permlab_signalPersistentProcesses
+
+public static final int permlab_statusBar
+
+public static final int permlab_subscribedFeedsRead
+
+public static final int permlab_subscribedFeedsWrite
+
+public static final int permlab_systemAlertWindow
+
+public static final int permlab_vibrate
+
+public static final int permlab_wakeLock
+
+public static final int permlab_writeApnSettings
+
+public static final int permlab_writeCalendar
+
+public static final int permlab_writeContacts
+
+public static final int permlab_writeGservices
+
+public static final int permlab_writeOwnerData
+
+public static final int permlab_writeSettings
+
+public static final int permlab_writeSms
+
+public static final int permlab_writeSyncSettings
+
+public static final int perms_hide
+
+public static final int perms_show_all
+
+public static final int petabyteShort
+
+public static final int pm
+
+public static final int power_dialog
+
+public static final int power_off
+
+public static final int prepend_shortcut_label
+
+public static final int preposition_for_date
+
+public static final int preposition_for_time
+
+public static final int preposition_for_year
+
+public static final int primaryEmailAddressLabel
+
+public static final int ringtone_default
+
+public static final int ringtone_default_with_actual
+
+public static final int ringtone_picker_title
+
+public static final int ringtone_silent
+
+public static final int ringtone_unknown
+
+public static final int safeMode
+
+public static final int same_month_md1_md2
+
+public static final int same_month_md1_time1_md2_time2
+
+public static final int same_month_mdy1_mdy2
+
+public static final int same_month_mdy1_time1_mdy2_time2
+
+public static final int same_month_wday1_md1_time1_wday2_md2_time2
+
+public static final int same_month_wday1_md1_wday2_md2
+
+public static final int same_month_wday1_mdy1_time1_wday2_mdy2_time2
+
+public static final int same_month_wday1_mdy1_wday2_mdy2
+
+public static final int same_year_md1_md2
+
+public static final int same_year_md1_time1_md2_time2
+
+public static final int same_year_mdy1_mdy2
+
+public static final int same_year_mdy1_time1_mdy2_time2
+
+public static final int same_year_wday1_md1_time1_wday2_md2_time2
+
+public static final int same_year_wday1_md1_wday2_md2
+
+public static final int same_year_wday1_mdy1_time1_wday2_mdy2_time2
+
+public static final int same_year_wday1_mdy1_wday2_mdy2
+
+public static final int saturday
+
+public static final int save_password_label
+
+public static final int save_password_message
+
+public static final int save_password_never
+
+public static final int save_password_notnow
+
+public static final int save_password_remember
+
+public static final int screen_lock
+
+public static final int screen_progress
+
+public static final int search_go
+
+public static final int search_hint_placeholder
+
+public static final int second
+
+public static final int seconds
+
+public static final int selectAll
+
+public static final int selectMenuLabel
+
+public static final int select_character
+
+public static final int sendText
+
+public static final int serviceClassData
+
+public static final int serviceClassDataAsync
+
+public static final int serviceClassDataSync
+
+public static final int serviceClassFAX
+
+public static final int serviceClassPAD
+
+public static final int serviceClassPacket
+
+public static final int serviceClassSMS
+
+public static final int serviceClassVoice
+
+public static final int serviceDisabled
+
+public static final int serviceEnabled
+
+public static final int serviceEnabledFor
+
+public static final int serviceErased
+
+public static final int serviceNotProvisioned
+
+public static final int serviceRegistered
+
+public static final int shutdown_confirm
+
+public static final int shutdown_progress
+
+public static final int silent_mode
+
+public static final int simAbsentLabel
+
+public static final int simNetworkPersonalizationLabel
+
+public static final int simPINLabel
+
+public static final int simPUKLabel
+
+public static final int sms_control_default_app_name
+
+public static final int sms_control_message
+
+public static final int sms_control_no
+
+public static final int sms_control_title
+
+public static final int sms_control_yes
+
+public static final int status_bar_applications_label
+
+public static final int status_bar_applications_title
+
+public static final int status_bar_clear_all_button
+
+public static final int status_bar_close
+
+public static final int status_bar_date_format
+
+public static final int status_bar_latest_events_label
+
+public static final int status_bar_latest_events_title
+
+public static final int status_bar_no_notifications
+
+public static final int status_bar_no_notifications_title
+
+public static final int status_bar_ongoing_events_label
+
+public static final int status_bar_ongoing_events_title
+
+public static final int status_bar_time_format
+
+public static final int sunday
+
+public static final int terabyteShort
+
+public static final int text_copied
+
+public static final int thursday
+
+public static final int time1_time2
+
+public static final int time_date
+
+public static final int time_picker_ColonBetweenHourAndMinute_text
+
+public static final int time_picker_set
+
+public static final int time_picker_setButton_text
+
+public static final int time_wday
+
+public static final int time_wday_date
+
+public static final int today
+
+public static final int tomorrow
+
+public static final int tuesday
+
+public static final int turn_off_radio
+
+public static final int turn_on_radio
+
+public static final int unknownName
+
+public static final int untitled
+
+public static final int volume_alarm
+
+public static final int volume_call
+
+public static final int volume_music
+
+public static final int volume_ringtone
+
+public static final int volume_unknown
+
+public static final int wait
+
+public static final int wday1_date1_time1_wday2_date2_time2
+
+public static final int wday1_date1_wday2_date2
+
+public static final int wday_date
+
+public static final int web_user_agent
+
+public static final int wednesday
+
+public static final int week
+
+public static final int weekly
+
+public static final int weekly_format
+
+public static final int weeks
+
+public static final int whichApplication
+
+public static final int year
+
+public static final int yearly
+
+public static final int yearly_format
+
+public static final int years
+
+public static final int yes
+
+public static final int yesterday
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/R; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =style )
+public final class com.android.internal.R$style extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int AlertDialog
+
+public static final int Animation
+
+public static final int Animation_Activity
+
+public static final int Animation_Dialog
+
+public static final int Animation_DropDownDown
+
+public static final int Animation_DropDownUp
+
+public static final int Animation_OptionsPanel
+
+public static final int Animation_SubMenuPanel
+
+public static final int Animation_Toast
+
+public static final int Animation_Translucent
+
+public static final int Animation_TypingFilter
+
+public static final int Animation_TypingFilterRestore
+
+public static final int DialogWindowTitle
+
+public static final int MediaButton
+
+public static final int MediaButton_Ffwd
+
+public static final int MediaButton_Next
+
+public static final int MediaButton_Pause
+
+public static final int MediaButton_Play
+
+public static final int MediaButton_Previous
+
+public static final int MediaButton_Rew
+
+public static final int Preference
+
+public static final int Preference_Category
+
+public static final int Preference_CheckBoxPreference
+
+public static final int Preference_DialogPreference
+
+public static final int Preference_DialogPreference_EditTextPreference
+
+public static final int Preference_DialogPreference_YesNoPreference
+
+public static final int Preference_Information
+
+public static final int Preference_PreferenceScreen
+
+public static final int Preference_RingtonePreference
+
+public static final int TextAppearance
+
+public static final int TextAppearance_DialogWindowTitle
+
+public static final int TextAppearance_Inverse
+
+public static final int TextAppearance_Large
+
+public static final int TextAppearance_Large_Inverse
+
+public static final int TextAppearance_Medium
+
+public static final int TextAppearance_Medium_Inverse
+
+public static final int TextAppearance_Small
+
+public static final int TextAppearance_Small_Inverse
+
+public static final int TextAppearance_StatusBarTitle
+
+public static final int TextAppearance_Theme
+
+public static final int TextAppearance_Theme_Dialog
+
+public static final int TextAppearance_Theme_Dialog_AppError
+
+public static final int TextAppearance_Widget
+
+public static final int TextAppearance_Widget_Button
+
+public static final int TextAppearance_Widget_DropDownHint
+
+public static final int TextAppearance_Widget_DropDownItem
+
+public static final int TextAppearance_Widget_EditText
+
+public static final int TextAppearance_Widget_IconMenu_Item
+
+public static final int TextAppearance_Widget_TabWidget
+
+public static final int TextAppearance_Widget_TextView
+
+public static final int TextAppearance_Widget_TextView_PopupMenu
+
+public static final int TextAppearance_Widget_TextView_SpinnerItem
+
+public static final int TextAppearance_WindowTitle
+
+public static final int Theme
+
+public static final int Theme_Black
+
+public static final int Theme_Black_NoTitleBar
+
+public static final int Theme_Black_NoTitleBar_Fullscreen
+
+public static final int Theme_Dialog
+
+public static final int Theme_Dialog_Alert
+
+public static final int Theme_Dialog_AppError
+
+public static final int Theme_ExpandedMenu
+
+public static final int Theme_IconMenu
+
+public static final int Theme_Light
+
+public static final int Theme_Light_NoTitleBar
+
+public static final int Theme_Light_NoTitleBar_Fullscreen
+
+public static final int Theme_NoTitleBar
+
+public static final int Theme_NoTitleBar_Fullscreen
+
+public static final int Theme_Translucent
+
+public static final int Theme_Translucent_NoTitleBar
+
+public static final int Theme_Translucent_NoTitleBar_Fullscreen
+
+public static final int Widget
+
+public static final int Widget_AbsListView
+
+public static final int Widget_AutoCompleteTextView
+
+public static final int Widget_Button
+
+public static final int Widget_Button_Inset
+
+public static final int Widget_Button_Small
+
+public static final int Widget_Button_Toggle
+
+public static final int Widget_CompoundButton
+
+public static final int Widget_CompoundButton_CheckBox
+
+public static final int Widget_CompoundButton_RadioButton
+
+public static final int Widget_CompoundButton_Star
+
+public static final int Widget_DropDownItem
+
+public static final int Widget_DropDownItem_Spinner
+
+public static final int Widget_EditText
+
+public static final int Widget_ExpandableListView
+
+public static final int Widget_Gallery
+
+public static final int Widget_GridView
+
+public static final int Widget_ImageButton
+
+public static final int Widget_ImageWell
+
+public static final int Widget_ListView
+
+public static final int Widget_ListView_DropDown
+
+public static final int Widget_ListView_Menu
+
+public static final int Widget_ListView_White
+
+public static final int Widget_PopupWindow
+
+public static final int Widget_ProgressBar
+
+public static final int Widget_ProgressBar_Horizontal
+
+public static final int Widget_ProgressBar_Large
+
+public static final int Widget_ProgressBar_Small
+
+public static final int Widget_ProgressBar_Small_Title
+
+public static final int Widget_RatingBar
+
+public static final int Widget_RatingBar_Indicator
+
+public static final int Widget_RatingBar_Small
+
+public static final int Widget_ScrollView
+
+public static final int Widget_SeekBar
+
+public static final int Widget_Spinner
+
+public static final int Widget_TabWidget
+
+public static final int Widget_TextView
+
+public static final int Widget_TextView_ListSeparator
+
+public static final int Widget_TextView_PopupMenu
+
+public static final int Widget_TextView_SpinnerItem
+
+public static final int Widget_WebView
+
+public static final int WindowTitle
+
+public static final int WindowTitleBackground
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/R; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =styleable )
+public final class com.android.internal.R$styleable extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int[] AbsListView
+
+public static final int AbsListView_cacheColorHint
+
+public static final int AbsListView_drawSelectorOnTop
+
+public static final int AbsListView_listSelector
+
+public static final int AbsListView_scrollingCache
+
+public static final int AbsListView_stackFromBottom
+
+public static final int AbsListView_textFilterEnabled
+
+public static final int AbsListView_transcriptMode
+
+public static final int[] AbsSpinner
+
+public static final int AbsSpinner_entries
+
+public static final int[] AbsoluteLayout_Layout
+
+public static final int AbsoluteLayout_Layout_layout_x
+
+public static final int AbsoluteLayout_Layout_layout_y
+
+public static final int[] AccelerateInterpolator
+
+public static final int AccelerateInterpolator_factor
+
+public static final int[] AlertDialog
+
+public static final int AlertDialog_bottomBright
+
+public static final int AlertDialog_bottomDark
+
+public static final int AlertDialog_bottomMedium
+
+public static final int AlertDialog_centerBright
+
+public static final int AlertDialog_centerDark
+
+public static final int AlertDialog_centerMedium
+
+public static final int AlertDialog_fullBright
+
+public static final int AlertDialog_fullDark
+
+public static final int AlertDialog_topBright
+
+public static final int AlertDialog_topDark
+
+public static final int[] AlphaAnimation
+
+public static final int AlphaAnimation_fromAlpha
+
+public static final int AlphaAnimation_toAlpha
+
+public static final int[] AnalogClock
+
+public static final int AnalogClock_dial
+
+public static final int AnalogClock_hand_hour
+
+public static final int AnalogClock_hand_minute
+
+public static final int[] AndroidManifest
+
+public static final int[] AndroidManifestAction
+
+public static final int AndroidManifestAction_name
+
+public static final int[] AndroidManifestActivity
+
+public static final int[] AndroidManifestActivityAlias
+
+public static final int AndroidManifestActivityAlias_enabled
+
+public static final int AndroidManifestActivityAlias_exported
+
+public static final int AndroidManifestActivityAlias_icon
+
+public static final int AndroidManifestActivityAlias_label
+
+public static final int AndroidManifestActivityAlias_name
+
+public static final int AndroidManifestActivityAlias_permission
+
+public static final int AndroidManifestActivityAlias_targetActivity
+
+public static final int AndroidManifestActivity_allowTaskReparenting
+
+public static final int AndroidManifestActivity_alwaysRetainTaskState
+
+public static final int AndroidManifestActivity_clearTaskOnLaunch
+
+public static final int AndroidManifestActivity_configChanges
+
+public static final int AndroidManifestActivity_enabled
+
+public static final int AndroidManifestActivity_excludeFromRecents
+
+public static final int AndroidManifestActivity_exported
+
+public static final int AndroidManifestActivity_finishOnTaskLaunch
+
+public static final int AndroidManifestActivity_icon
+
+public static final int AndroidManifestActivity_label
+
+public static final int AndroidManifestActivity_launchMode
+
+public static final int AndroidManifestActivity_multiprocess
+
+public static final int AndroidManifestActivity_name
+
+public static final int AndroidManifestActivity_permission
+
+public static final int AndroidManifestActivity_process
+
+public static final int AndroidManifestActivity_screenOrientation
+
+public static final int AndroidManifestActivity_stateNotNeeded
+
+public static final int AndroidManifestActivity_taskAffinity
+
+public static final int AndroidManifestActivity_theme
+
+public static final int[] AndroidManifestApplication
+
+public static final int AndroidManifestApplication_allowClearUserData
+
+public static final int AndroidManifestApplication_allowTaskReparenting
+
+public static final int AndroidManifestApplication_debuggable
+
+public static final int AndroidManifestApplication_description
+
+public static final int AndroidManifestApplication_enabled
+
+public static final int AndroidManifestApplication_hasCode
+
+public static final int AndroidManifestApplication_icon
+
+public static final int AndroidManifestApplication_label
+
+public static final int AndroidManifestApplication_manageSpaceActivity
+
+public static final int AndroidManifestApplication_name
+
+public static final int AndroidManifestApplication_permission
+
+public static final int AndroidManifestApplication_persistent
+
+public static final int AndroidManifestApplication_process
+
+public static final int AndroidManifestApplication_taskAffinity
+
+public static final int AndroidManifestApplication_theme
+
+public static final int[] AndroidManifestCategory
+
+public static final int AndroidManifestCategory_name
+
+public static final int[] AndroidManifestData
+
+public static final int AndroidManifestData_host
+
+public static final int AndroidManifestData_mimeType
+
+public static final int AndroidManifestData_path
+
+public static final int AndroidManifestData_pathPattern
+
+public static final int AndroidManifestData_pathPrefix
+
+public static final int AndroidManifestData_port
+
+public static final int AndroidManifestData_scheme
+
+public static final int[] AndroidManifestGrantUriPermission
+
+public static final int AndroidManifestGrantUriPermission_path
+
+public static final int AndroidManifestGrantUriPermission_pathPattern
+
+public static final int AndroidManifestGrantUriPermission_pathPrefix
+
+public static final int[] AndroidManifestInstrumentation
+
+public static final int AndroidManifestInstrumentation_functionalTest
+
+public static final int AndroidManifestInstrumentation_handleProfiling
+
+public static final int AndroidManifestInstrumentation_icon
+
+public static final int AndroidManifestInstrumentation_label
+
+public static final int AndroidManifestInstrumentation_name
+
+public static final int AndroidManifestInstrumentation_targetPackage
+
+public static final int[] AndroidManifestIntentFilter
+
+public static final int AndroidManifestIntentFilter_icon
+
+public static final int AndroidManifestIntentFilter_label
+
+public static final int AndroidManifestIntentFilter_priority
+
+public static final int[] AndroidManifestMetaData
+
+public static final int AndroidManifestMetaData_name
+
+public static final int AndroidManifestMetaData_resource
+
+public static final int AndroidManifestMetaData_value
+
+public static final int[] AndroidManifestPermission
+
+public static final int[] AndroidManifestPermissionGroup
+
+public static final int AndroidManifestPermissionGroup_description
+
+public static final int AndroidManifestPermissionGroup_icon
+
+public static final int AndroidManifestPermissionGroup_label
+
+public static final int AndroidManifestPermissionGroup_name
+
+public static final int[] AndroidManifestPermissionTree
+
+public static final int AndroidManifestPermissionTree_icon
+
+public static final int AndroidManifestPermissionTree_label
+
+public static final int AndroidManifestPermissionTree_name
+
+public static final int AndroidManifestPermission_description
+
+public static final int AndroidManifestPermission_icon
+
+public static final int AndroidManifestPermission_label
+
+public static final int AndroidManifestPermission_name
+
+public static final int AndroidManifestPermission_permissionGroup
+
+public static final int AndroidManifestPermission_protectionLevel
+
+public static final int[] AndroidManifestProvider
+
+public static final int AndroidManifestProvider_authorities
+
+public static final int AndroidManifestProvider_enabled
+
+public static final int AndroidManifestProvider_exported
+
+public static final int AndroidManifestProvider_grantUriPermissions
+
+public static final int AndroidManifestProvider_icon
+
+public static final int AndroidManifestProvider_initOrder
+
+public static final int AndroidManifestProvider_label
+
+public static final int AndroidManifestProvider_multiprocess
+
+public static final int AndroidManifestProvider_name
+
+public static final int AndroidManifestProvider_permission
+
+public static final int AndroidManifestProvider_process
+
+public static final int AndroidManifestProvider_readPermission
+
+public static final int AndroidManifestProvider_syncable
+
+public static final int AndroidManifestProvider_writePermission
+
+public static final int[] AndroidManifestReceiver
+
+public static final int AndroidManifestReceiver_enabled
+
+public static final int AndroidManifestReceiver_exported
+
+public static final int AndroidManifestReceiver_icon
+
+public static final int AndroidManifestReceiver_label
+
+public static final int AndroidManifestReceiver_name
+
+public static final int AndroidManifestReceiver_permission
+
+public static final int AndroidManifestReceiver_process
+
+public static final int[] AndroidManifestService
+
+public static final int AndroidManifestService_enabled
+
+public static final int AndroidManifestService_exported
+
+public static final int AndroidManifestService_icon
+
+public static final int AndroidManifestService_label
+
+public static final int AndroidManifestService_name
+
+public static final int AndroidManifestService_permission
+
+public static final int AndroidManifestService_process
+
+public static final int[] AndroidManifestUsesLibrary
+
+public static final int AndroidManifestUsesLibrary_name
+
+public static final int[] AndroidManifestUsesPermission
+
+public static final int AndroidManifestUsesPermission_name
+
+public static final int[] AndroidManifestUsesSdk
+
+public static final int AndroidManifestUsesSdk_minSdkVersion
+
+public static final int AndroidManifest_sharedUserId
+
+public static final int AndroidManifest_versionCode
+
+public static final int AndroidManifest_versionName
+
+public static final int[] Animation
+
+public static final int[] AnimationDrawable
+
+public static final int[] AnimationDrawableItem
+
+public static final int AnimationDrawableItem_drawable
+
+public static final int AnimationDrawableItem_duration
+
+public static final int AnimationDrawable_oneshot
+
+public static final int AnimationDrawable_variablePadding
+
+public static final int AnimationDrawable_visible
+
+public static final int[] AnimationSet
+
+public static final int AnimationSet_shareInterpolator
+
+public static final int Animation_duration
+
+public static final int Animation_fillAfter
+
+public static final int Animation_fillBefore
+
+public static final int Animation_interpolator
+
+public static final int Animation_repeatCount
+
+public static final int Animation_repeatMode
+
+public static final int Animation_startOffset
+
+public static final int Animation_zAdjustment
+
+public static final int[] AutoCompleteTextView
+
+public static final int AutoCompleteTextView_completionHint
+
+public static final int AutoCompleteTextView_completionHintView
+
+public static final int AutoCompleteTextView_completionThreshold
+
+public static final int AutoCompleteTextView_dropDownSelector
+
+public static final int[] BitmapDrawable
+
+public static final int BitmapDrawable_antialias
+
+public static final int BitmapDrawable_dither
+
+public static final int BitmapDrawable_filter
+
+public static final int BitmapDrawable_gravity
+
+public static final int BitmapDrawable_src
+
+public static final int BitmapDrawable_tileMode
+
+public static final int[] Button
+
+public static final int[] CheckBoxPreference
+
+public static final int CheckBoxPreference_disableDependentsState
+
+public static final int CheckBoxPreference_summaryOff
+
+public static final int CheckBoxPreference_summaryOn
+
+public static final int[] CheckedTextView
+
+public static final int CheckedTextView_checkMark
+
+public static final int CheckedTextView_checked
+
+public static final int[] Chronometer
+
+public static final int Chronometer_format
+
+public static final int[] ClipDrawable
+
+public static final int ClipDrawable_clipOrientation
+
+public static final int ClipDrawable_drawable
+
+public static final int ClipDrawable_gravity
+
+public static final int[] ColorDrawable
+
+public static final int ColorDrawable_color
+
+public static final int[] CompoundButton
+
+public static final int CompoundButton_button
+
+public static final int CompoundButton_checked
+
+public static final int[] CycleInterpolator
+
+public static final int CycleInterpolator_cycles
+
+public static final int[] DatePicker
+
+public static final int DatePicker_endYear
+
+public static final int DatePicker_startYear
+
+public static final int[] DecelerateInterpolator
+
+public static final int DecelerateInterpolator_factor
+
+public static final int[] DialogPreference
+
+public static final int DialogPreference_dialogIcon
+
+public static final int DialogPreference_dialogLayout
+
+public static final int DialogPreference_dialogMessage
+
+public static final int DialogPreference_dialogTitle
+
+public static final int DialogPreference_negativeButtonText
+
+public static final int DialogPreference_positiveButtonText
+
+public static final int[] Drawable
+
+public static final int[] DrawableCorners
+
+public static final int DrawableCorners_bottomLeftRadius
+
+public static final int DrawableCorners_bottomRightRadius
+
+public static final int DrawableCorners_radius
+
+public static final int DrawableCorners_topLeftRadius
+
+public static final int DrawableCorners_topRightRadius
+
+public static final int[] DrawableStates
+
+public static final int DrawableStates_state_active
+
+public static final int DrawableStates_state_checkable
+
+public static final int DrawableStates_state_checked
+
+public static final int DrawableStates_state_enabled
+
+public static final int DrawableStates_state_first
+
+public static final int DrawableStates_state_focused
+
+public static final int DrawableStates_state_last
+
+public static final int DrawableStates_state_middle
+
+public static final int DrawableStates_state_pressed
+
+public static final int DrawableStates_state_selected
+
+public static final int DrawableStates_state_single
+
+public static final int DrawableStates_state_window_focused
+
+public static final int Drawable_visible
+
+public static final int[] EditText
+
+public static final int[] ExpandableListChildIndicatorState
+
+public static final int ExpandableListChildIndicatorState_state_last
+
+public static final int[] ExpandableListGroupIndicatorState
+
+public static final int ExpandableListGroupIndicatorState_state_empty
+
+public static final int ExpandableListGroupIndicatorState_state_expanded
+
+public static final int[] ExpandableListView
+
+public static final int ExpandableListView_childDivider
+
+public static final int ExpandableListView_childIndicator
+
+public static final int ExpandableListView_childIndicatorLeft
+
+public static final int ExpandableListView_childIndicatorRight
+
+public static final int ExpandableListView_groupIndicator
+
+public static final int ExpandableListView_indicatorLeft
+
+public static final int ExpandableListView_indicatorRight
+
+public static final int[] FrameLayout
+
+public static final int[] FrameLayout_Layout
+
+public static final int FrameLayout_Layout_layout_gravity
+
+public static final int FrameLayout_foreground
+
+public static final int FrameLayout_foregroundGravity
+
+public static final int FrameLayout_measureAllChildren
+
+public static final int[] Gallery
+
+public static final int Gallery_animationDuration
+
+public static final int Gallery_gravity
+
+public static final int Gallery_spacing
+
+public static final int Gallery_unselectedAlpha
+
+public static final int[] GradientDrawable
+
+public static final int[] GradientDrawableGradient
+
+public static final int GradientDrawableGradient_angle
+
+public static final int GradientDrawableGradient_centerColor
+
+public static final int GradientDrawableGradient_centerX
+
+public static final int GradientDrawableGradient_centerY
+
+public static final int GradientDrawableGradient_endColor
+
+public static final int GradientDrawableGradient_gradientRadius
+
+public static final int GradientDrawableGradient_startColor
+
+public static final int GradientDrawableGradient_type
+
+public static final int GradientDrawableGradient_useLevel
+
+public static final int[] GradientDrawablePadding
+
+public static final int GradientDrawablePadding_bottom
+
+public static final int GradientDrawablePadding_left
+
+public static final int GradientDrawablePadding_right
+
+public static final int GradientDrawablePadding_top
+
+public static final int[] GradientDrawableSize
+
+public static final int GradientDrawableSize_height
+
+public static final int GradientDrawableSize_width
+
+public static final int[] GradientDrawableSolid
+
+public static final int GradientDrawableSolid_color
+
+public static final int[] GradientDrawableStroke
+
+public static final int GradientDrawableStroke_color
+
+public static final int GradientDrawableStroke_dashGap
+
+public static final int GradientDrawableStroke_dashWidth
+
+public static final int GradientDrawableStroke_width
+
+public static final int GradientDrawable_innerRadiusRatio
+
+public static final int GradientDrawable_shape
+
+public static final int GradientDrawable_thicknessRatio
+
+public static final int GradientDrawable_useLevel
+
+public static final int GradientDrawable_visible
+
+public static final int[] GridLayoutAnimation
+
+public static final int GridLayoutAnimation_columnDelay
+
+public static final int GridLayoutAnimation_direction
+
+public static final int GridLayoutAnimation_directionPriority
+
+public static final int GridLayoutAnimation_rowDelay
+
+public static final int[] GridView
+
+public static final int GridView_columnWidth
+
+public static final int GridView_gravity
+
+public static final int GridView_horizontalSpacing
+
+public static final int GridView_numColumns
+
+public static final int GridView_stretchMode
+
+public static final int GridView_verticalSpacing
+
+public static final int[] IconMenuView
+
+public static final int IconMenuView_maxItemsPerRow
+
+public static final int IconMenuView_maxRows
+
+public static final int IconMenuView_moreIcon
+
+public static final int IconMenuView_rowHeight
+
+public static final int[] ImageSwitcher
+
+public static final int[] ImageView
+
+public static final int ImageView_adjustViewBounds
+
+public static final int ImageView_baselineAlignBottom
+
+public static final int ImageView_cropToPadding
+
+public static final int ImageView_maxHeight
+
+public static final int ImageView_maxWidth
+
+public static final int ImageView_scaleType
+
+public static final int ImageView_src
+
+public static final int ImageView_tint
+
+public static final int[] InsetDrawable
+
+public static final int InsetDrawable_drawable
+
+public static final int InsetDrawable_insetBottom
+
+public static final int InsetDrawable_insetLeft
+
+public static final int InsetDrawable_insetRight
+
+public static final int InsetDrawable_insetTop
+
+public static final int InsetDrawable_visible
+
+public static final int[] Intent
+
+public static final int[] IntentCategory
+
+public static final int IntentCategory_name
+
+public static final int[] IntentExtra
+
+public static final int IntentExtra_name
+
+public static final int IntentExtra_value
+
+public static final int Intent_action
+
+public static final int Intent_data
+
+public static final int Intent_mimeType
+
+public static final int Intent_targetClass
+
+public static final int Intent_targetPackage
+
+public static final int[] LayerDrawableItem
+
+public static final int LayerDrawableItem_bottom
+
+public static final int LayerDrawableItem_drawable
+
+public static final int LayerDrawableItem_id
+
+public static final int LayerDrawableItem_left
+
+public static final int LayerDrawableItem_right
+
+public static final int LayerDrawableItem_top
+
+public static final int[] LayoutAnimation
+
+public static final int LayoutAnimation_animation
+
+public static final int LayoutAnimation_animationOrder
+
+public static final int LayoutAnimation_delay
+
+public static final int LayoutAnimation_interpolator
+
+public static final int[] LevelListDrawableItem
+
+public static final int LevelListDrawableItem_drawable
+
+public static final int LevelListDrawableItem_maxLevel
+
+public static final int LevelListDrawableItem_minLevel
+
+public static final int[] LinearLayout
+
+public static final int[] LinearLayout_Layout
+
+public static final int LinearLayout_Layout_layout_gravity
+
+public static final int LinearLayout_Layout_layout_height
+
+public static final int LinearLayout_Layout_layout_weight
+
+public static final int LinearLayout_Layout_layout_width
+
+public static final int LinearLayout_baselineAligned
+
+public static final int LinearLayout_baselineAlignedChildIndex
+
+public static final int LinearLayout_gravity
+
+public static final int LinearLayout_orientation
+
+public static final int LinearLayout_weightSum
+
+public static final int[] ListPreference
+
+public static final int ListPreference_entries
+
+public static final int ListPreference_entryValues
+
+public static final int[] ListView
+
+public static final int ListView_choiceMode
+
+public static final int ListView_divider
+
+public static final int ListView_dividerHeight
+
+public static final int ListView_entries
+
+public static final int[] MapView
+
+public static final int MapView_apiKey
+
+public static final int[] Menu
+
+public static final int[] MenuGroup
+
+public static final int MenuGroup_checkableBehavior
+
+public static final int MenuGroup_enabled
+
+public static final int MenuGroup_id
+
+public static final int MenuGroup_menuCategory
+
+public static final int MenuGroup_orderInCategory
+
+public static final int MenuGroup_visible
+
+public static final int[] MenuItem
+
+public static final int[] MenuItemCheckedFocusedState
+
+public static final int MenuItemCheckedFocusedState_state_checkable
+
+public static final int MenuItemCheckedFocusedState_state_checked
+
+public static final int MenuItemCheckedFocusedState_state_focused
+
+public static final int[] MenuItemCheckedState
+
+public static final int MenuItemCheckedState_state_checkable
+
+public static final int MenuItemCheckedState_state_checked
+
+public static final int[] MenuItemUncheckedFocusedState
+
+public static final int MenuItemUncheckedFocusedState_state_checkable
+
+public static final int MenuItemUncheckedFocusedState_state_focused
+
+public static final int[] MenuItemUncheckedState
+
+public static final int MenuItemUncheckedState_state_checkable
+
+public static final int MenuItem_alphabeticShortcut
+
+public static final int MenuItem_checkable
+
+public static final int MenuItem_checked
+
+public static final int MenuItem_enabled
+
+public static final int MenuItem_icon
+
+public static final int MenuItem_id
+
+public static final int MenuItem_menuCategory
+
+public static final int MenuItem_numericShortcut
+
+public static final int MenuItem_orderInCategory
+
+public static final int MenuItem_title
+
+public static final int MenuItem_titleCondensed
+
+public static final int MenuItem_visible
+
+public static final int[] MenuView
+
+public static final int MenuView_headerBackground
+
+public static final int MenuView_horizontalDivider
+
+public static final int MenuView_itemBackground
+
+public static final int MenuView_itemIconDisabledAlpha
+
+public static final int MenuView_itemTextAppearance
+
+public static final int MenuView_verticalDivider
+
+public static final int MenuView_windowAnimationStyle
+
+public static final int[] PopupWindow
+
+public static final int[] PopupWindowBackgroundState
+
+public static final int PopupWindowBackgroundState_state_above_anchor
+
+public static final int PopupWindow_popupBackground
+
+public static final int[] Preference
+
+public static final int[] PreferenceGroup
+
+public static final int PreferenceGroup_orderingFromXml
+
+public static final int Preference_defaultValue
+
+public static final int Preference_dependency
+
+public static final int Preference_enabled
+
+public static final int Preference_key
+
+public static final int Preference_layout
+
+public static final int Preference_order
+
+public static final int Preference_persistent
+
+public static final int Preference_selectable
+
+public static final int Preference_shouldDisableView
+
+public static final int Preference_summary
+
+public static final int Preference_title
+
+public static final int Preference_widgetLayout
+
+public static final int[] ProgressBar
+
+public static final int ProgressBar_indeterminate
+
+public static final int ProgressBar_indeterminateBehavior
+
+public static final int ProgressBar_indeterminateDrawable
+
+public static final int ProgressBar_indeterminateDuration
+
+public static final int ProgressBar_indeterminateOnly
+
+public static final int ProgressBar_interpolator
+
+public static final int ProgressBar_max
+
+public static final int ProgressBar_maxHeight
+
+public static final int ProgressBar_maxWidth
+
+public static final int ProgressBar_minHeight
+
+public static final int ProgressBar_minWidth
+
+public static final int ProgressBar_progress
+
+public static final int ProgressBar_progressDrawable
+
+public static final int ProgressBar_secondaryProgress
+
+public static final int[] RadioGroup
+
+public static final int RadioGroup_checkedButton
+
+public static final int RadioGroup_orientation
+
+public static final int[] RatingBar
+
+public static final int RatingBar_isIndicator
+
+public static final int RatingBar_numStars
+
+public static final int RatingBar_rating
+
+public static final int RatingBar_stepSize
+
+public static final int[] RelativeLayout
+
+public static final int[] RelativeLayout_Layout
+
+public static final int RelativeLayout_Layout_layout_above
+
+public static final int RelativeLayout_Layout_layout_alignBaseline
+
+public static final int RelativeLayout_Layout_layout_alignBottom
+
+public static final int RelativeLayout_Layout_layout_alignLeft
+
+public static final int RelativeLayout_Layout_layout_alignParentBottom
+
+public static final int RelativeLayout_Layout_layout_alignParentLeft
+
+public static final int RelativeLayout_Layout_layout_alignParentRight
+
+public static final int RelativeLayout_Layout_layout_alignParentTop
+
+public static final int RelativeLayout_Layout_layout_alignRight
+
+public static final int RelativeLayout_Layout_layout_alignTop
+
+public static final int RelativeLayout_Layout_layout_alignWithParentIfMissing
+
+public static final int RelativeLayout_Layout_layout_below
+
+public static final int RelativeLayout_Layout_layout_centerHorizontal
+
+public static final int RelativeLayout_Layout_layout_centerInParent
+
+public static final int RelativeLayout_Layout_layout_centerVertical
+
+public static final int RelativeLayout_Layout_layout_toLeftOf
+
+public static final int RelativeLayout_Layout_layout_toRightOf
+
+public static final int RelativeLayout_gravity
+
+public static final int RelativeLayout_ignoreGravity
+
+public static final int[] RingtonePreference
+
+public static final int RingtonePreference_ringtoneType
+
+public static final int RingtonePreference_showDefault
+
+public static final int RingtonePreference_showSilent
+
+public static final int[] RotateAnimation
+
+public static final int RotateAnimation_fromDegrees
+
+public static final int RotateAnimation_pivotX
+
+public static final int RotateAnimation_pivotY
+
+public static final int RotateAnimation_toDegrees
+
+public static final int[] RotateDrawable
+
+public static final int RotateDrawable_drawable
+
+public static final int RotateDrawable_fromDegrees
+
+public static final int RotateDrawable_pivotX
+
+public static final int RotateDrawable_pivotY
+
+public static final int RotateDrawable_toDegrees
+
+public static final int RotateDrawable_visible
+
+public static final int[] ScaleAnimation
+
+public static final int ScaleAnimation_fromXScale
+
+public static final int ScaleAnimation_fromYScale
+
+public static final int ScaleAnimation_pivotX
+
+public static final int ScaleAnimation_pivotY
+
+public static final int ScaleAnimation_toXScale
+
+public static final int ScaleAnimation_toYScale
+
+public static final int[] ScaleDrawable
+
+public static final int ScaleDrawable_drawable
+
+public static final int ScaleDrawable_scaleGravity
+
+public static final int ScaleDrawable_scaleHeight
+
+public static final int ScaleDrawable_scaleWidth
+
+public static final int[] ScrollView
+
+public static final int ScrollView_fillViewport
+
+public static final int[] Searchable
+
+public static final int[] SearchableActionKey
+
+public static final int SearchableActionKey_keycode
+
+public static final int SearchableActionKey_queryActionMsg
+
+public static final int SearchableActionKey_suggestActionMsg
+
+public static final int SearchableActionKey_suggestActionMsgColumn
+
+public static final int Searchable_hint
+
+public static final int Searchable_icon
+
+public static final int Searchable_label
+
+public static final int Searchable_searchButtonText
+
+public static final int Searchable_searchMode
+
+public static final int Searchable_searchSuggestAuthority
+
+public static final int Searchable_searchSuggestIntentAction
+
+public static final int Searchable_searchSuggestIntentData
+
+public static final int Searchable_searchSuggestPath
+
+public static final int Searchable_searchSuggestSelection
+
+public static final int[] SeekBar
+
+public static final int SeekBar_thumb
+
+public static final int SeekBar_thumbOffset
+
+public static final int[] ShapeDrawable
+
+public static final int[] ShapeDrawablePadding
+
+public static final int ShapeDrawablePadding_bottom
+
+public static final int ShapeDrawablePadding_left
+
+public static final int ShapeDrawablePadding_right
+
+public static final int ShapeDrawablePadding_top
+
+public static final int ShapeDrawable_color
+
+public static final int ShapeDrawable_height
+
+public static final int ShapeDrawable_width
+
+public static final int[] SlidingDrawer
+
+public static final int SlidingDrawer_animateOnClick
+
+public static final int SlidingDrawer_bottomOffset
+
+public static final int SlidingDrawer_content
+
+public static final int SlidingDrawer_handle
+
+public static final int SlidingDrawer_orientation
+
+public static final int SlidingDrawer_topOffset
+
+public static final int[] Spinner
+
+public static final int Spinner_prompt
+
+public static final int[] StateListDrawable
+
+public static final int StateListDrawable_constantSize
+
+public static final int StateListDrawable_variablePadding
+
+public static final int StateListDrawable_visible
+
+public static final int[] TabWidget
+
+public static final int[] TableLayout
+
+public static final int TableLayout_collapseColumns
+
+public static final int TableLayout_shrinkColumns
+
+public static final int TableLayout_stretchColumns
+
+public static final int[] TableRow
+
+public static final int[] TableRow_Cell
+
+public static final int TableRow_Cell_layout_column
+
+public static final int TableRow_Cell_layout_span
+
+public static final int[] TextAppearance
+
+public static final int TextAppearance_textColor
+
+public static final int TextAppearance_textColorHighlight
+
+public static final int TextAppearance_textColorHint
+
+public static final int TextAppearance_textColorLink
+
+public static final int TextAppearance_textSize
+
+public static final int TextAppearance_textStyle
+
+public static final int TextAppearance_typeface
+
+public static final int[] TextSwitcher
+
+public static final int[] TextView
+
+public static final int TextView_autoLink
+
+public static final int TextView_autoText
+
+public static final int TextView_bufferType
+
+public static final int TextView_capitalize
+
+public static final int TextView_cursorVisible
+
+public static final int TextView_digits
+
+public static final int TextView_drawableBottom
+
+public static final int TextView_drawableLeft
+
+public static final int TextView_drawablePadding
+
+public static final int TextView_drawableRight
+
+public static final int TextView_drawableTop
+
+public static final int TextView_editable
+
+public static final int TextView_ellipsize
+
+public static final int TextView_ems
+
+public static final int TextView_enabled
+
+public static final int TextView_freezesText
+
+public static final int TextView_gravity
+
+public static final int TextView_height
+
+public static final int TextView_hint
+
+public static final int TextView_includeFontPadding
+
+public static final int TextView_inputMethod
+
+public static final int TextView_lineSpacingExtra
+
+public static final int TextView_lineSpacingMultiplier
+
+public static final int TextView_lines
+
+public static final int TextView_linksClickable
+
+public static final int TextView_maxEms
+
+public static final int TextView_maxHeight
+
+public static final int TextView_maxLength
+
+public static final int TextView_maxLines
+
+public static final int TextView_maxWidth
+
+public static final int TextView_minEms
+
+public static final int TextView_minHeight
+
+public static final int TextView_minLines
+
+public static final int TextView_minWidth
+
+public static final int TextView_numeric
+
+public static final int TextView_password
+
+public static final int TextView_phoneNumber
+
+public static final int TextView_scrollHorizontally
+
+public static final int TextView_selectAllOnFocus
+
+public static final int TextView_shadowColor
+
+public static final int TextView_shadowDx
+
+public static final int TextView_shadowDy
+
+public static final int TextView_shadowRadius
+
+public static final int TextView_singleLine
+
+public static final int TextView_text
+
+public static final int TextView_textAppearance
+
+public static final int TextView_textColor
+
+public static final int TextView_textColorHighlight
+
+public static final int TextView_textColorHint
+
+public static final int TextView_textColorLink
+
+public static final int TextView_textScaleX
+
+public static final int TextView_textSize
+
+public static final int TextView_textStyle
+
+public static final int TextView_typeface
+
+public static final int TextView_width
+
+public static final int[] Theme
+
+public static final int Theme_absListViewStyle
+
+public static final int Theme_alertDialogStyle
+
+public static final int Theme_autoCompleteTextViewStyle
+
+public static final int Theme_backgroundDimAmount
+
+public static final int Theme_buttonStyle
+
+public static final int Theme_buttonStyleInset
+
+public static final int Theme_buttonStyleSmall
+
+public static final int Theme_buttonStyleToggle
+
+public static final int Theme_checkBoxPreferenceStyle
+
+public static final int Theme_checkboxStyle
+
+public static final int Theme_colorBackground
+
+public static final int Theme_colorForeground
+
+public static final int Theme_colorForegroundInverse
+
+public static final int Theme_dialogPreferenceStyle
+
+public static final int Theme_disabledAlpha
+
+public static final int Theme_dropDownHintAppearance
+
+public static final int Theme_dropDownItemStyle
+
+public static final int Theme_dropDownListViewStyle
+
+public static final int Theme_editTextPreferenceStyle
+
+public static final int Theme_editTextStyle
+
+public static final int Theme_expandableListPreferredChildIndicatorLeft
+
+public static final int Theme_expandableListPreferredChildIndicatorRight
+
+public static final int Theme_expandableListPreferredChildPaddingLeft
+
+public static final int Theme_expandableListPreferredItemIndicatorLeft
+
+public static final int Theme_expandableListPreferredItemIndicatorRight
+
+public static final int Theme_expandableListPreferredItemPaddingLeft
+
+public static final int Theme_expandableListViewStyle
+
+public static final int Theme_galleryItemBackground
+
+public static final int Theme_galleryStyle
+
+public static final int Theme_gridViewStyle
+
+public static final int Theme_imageButtonStyle
+
+public static final int Theme_imageWellStyle
+
+public static final int Theme_listChoiceIndicatorMultiple
+
+public static final int Theme_listChoiceIndicatorSingle
+
+public static final int Theme_listDivider
+
+public static final int Theme_listPreferredItemHeight
+
+public static final int Theme_listSeparatorTextViewStyle
+
+public static final int Theme_listViewStyle
+
+public static final int Theme_listViewWhiteStyle
+
+public static final int Theme_mapViewStyle
+
+public static final int Theme_panelBackground
+
+public static final int Theme_panelColorBackground
+
+public static final int Theme_panelColorForeground
+
+public static final int Theme_panelFullBackground
+
+public static final int Theme_panelTextAppearance
+
+public static final int Theme_popupWindowStyle
+
+public static final int Theme_preferenceCategoryStyle
+
+public static final int Theme_preferenceInformationStyle
+
+public static final int Theme_preferenceLayoutChild
+
+public static final int Theme_preferenceScreenStyle
+
+public static final int Theme_preferenceStyle
+
+public static final int Theme_progressBarStyle
+
+public static final int Theme_progressBarStyleHorizontal
+
+public static final int Theme_progressBarStyleLarge
+
+public static final int Theme_progressBarStyleSmall
+
+public static final int Theme_progressBarStyleSmallTitle
+
+public static final int Theme_radioButtonStyle
+
+public static final int Theme_ratingBarStyle
+
+public static final int Theme_ratingBarStyleIndicator
+
+public static final int Theme_ratingBarStyleSmall
+
+public static final int Theme_ringtonePreferenceStyle
+
+public static final int Theme_scrollViewStyle
+
+public static final int Theme_seekBarStyle
+
+public static final int Theme_spinnerDropDownItemStyle
+
+public static final int Theme_spinnerItemStyle
+
+public static final int Theme_spinnerStyle
+
+public static final int Theme_starStyle
+
+public static final int Theme_tabWidgetStyle
+
+public static final int Theme_textAppearance
+
+public static final int Theme_textAppearanceButton
+
+public static final int Theme_textAppearanceInverse
+
+public static final int Theme_textAppearanceLarge
+
+public static final int Theme_textAppearanceLargeInverse
+
+public static final int Theme_textAppearanceMedium
+
+public static final int Theme_textAppearanceMediumInverse
+
+public static final int Theme_textAppearanceSmall
+
+public static final int Theme_textAppearanceSmallInverse
+
+public static final int Theme_textCheckMark
+
+public static final int Theme_textCheckMarkInverse
+
+public static final int Theme_textColorHintInverse
+
+public static final int Theme_textColorPrimary
+
+public static final int Theme_textColorPrimaryDisableOnly
+
+public static final int Theme_textColorPrimaryInverse
+
+public static final int Theme_textColorPrimaryInverseNoDisable
+
+public static final int Theme_textColorPrimaryNoDisable
+
+public static final int Theme_textColorSecondary
+
+public static final int Theme_textColorSecondaryInverse
+
+public static final int Theme_textColorSecondaryInverseNoDisable
+
+public static final int Theme_textColorSecondaryNoDisable
+
+public static final int Theme_textColorTertiary
+
+public static final int Theme_textColorTertiaryInverse
+
+public static final int Theme_textViewStyle
+
+public static final int Theme_webViewStyle
+
+public static final int Theme_windowAnimationStyle
+
+public static final int Theme_windowBackground
+
+public static final int Theme_windowContentOverlay
+
+public static final int Theme_windowFrame
+
+public static final int Theme_windowFullscreen
+
+public static final int Theme_windowIsFloating
+
+public static final int Theme_windowIsTranslucent
+
+public static final int Theme_windowNoTitle
+
+public static final int Theme_windowTitleBackgroundStyle
+
+public static final int Theme_windowTitleSize
+
+public static final int Theme_windowTitleStyle
+
+public static final int Theme_yesNoPreferenceStyle
+
+public static final int[] ToggleButton
+
+public static final int ToggleButton_disabledAlpha
+
+public static final int ToggleButton_textOff
+
+public static final int ToggleButton_textOn
+
+public static final int[] TranslateAnimation
+
+public static final int TranslateAnimation_fromXDelta
+
+public static final int TranslateAnimation_fromYDelta
+
+public static final int TranslateAnimation_toXDelta
+
+public static final int TranslateAnimation_toYDelta
+
+public static final int[] TwoLineListItem
+
+public static final int TwoLineListItem_mode
+
+public static final int[] VerticalSlider_Layout
+
+public static final int VerticalSlider_Layout_layout_scale
+
+public static final int[] View
+
+public static final int[] ViewAnimator
+
+public static final int ViewAnimator_inAnimation
+
+public static final int ViewAnimator_outAnimation
+
+public static final int[] ViewDrawableStates
+
+public static final int ViewDrawableStates_state_enabled
+
+public static final int ViewDrawableStates_state_focused
+
+public static final int ViewDrawableStates_state_pressed
+
+public static final int ViewDrawableStates_state_selected
+
+public static final int ViewDrawableStates_state_window_focused
+
+public static final int[] ViewFlipper
+
+public static final int ViewFlipper_flipInterval
+
+public static final int[] ViewGroup
+
+public static final int[] ViewGroup_Layout
+
+public static final int ViewGroup_Layout_layout_height
+
+public static final int ViewGroup_Layout_layout_width
+
+public static final int[] ViewGroup_MarginLayout
+
+public static final int ViewGroup_MarginLayout_layout_height
+
+public static final int ViewGroup_MarginLayout_layout_margin
+
+public static final int ViewGroup_MarginLayout_layout_marginBottom
+
+public static final int ViewGroup_MarginLayout_layout_marginLeft
+
+public static final int ViewGroup_MarginLayout_layout_marginRight
+
+public static final int ViewGroup_MarginLayout_layout_marginTop
+
+public static final int ViewGroup_MarginLayout_layout_width
+
+public static final int ViewGroup_addStatesFromChildren
+
+public static final int ViewGroup_alwaysDrawnWithCache
+
+public static final int ViewGroup_animationCache
+
+public static final int ViewGroup_clipChildren
+
+public static final int ViewGroup_clipToPadding
+
+public static final int ViewGroup_descendantFocusability
+
+public static final int ViewGroup_layoutAnimation
+
+public static final int ViewGroup_persistentDrawingCache
+
+public static final int[] ViewStub
+
+public static final int ViewStub_inflatedId
+
+public static final int ViewStub_layout
+
+public static final int[] ViewSwitcher
+
+public static final int View_background
+
+public static final int View_clickable
+
+public static final int View_drawingCacheQuality
+
+public static final int View_duplicateParentState
+
+public static final int View_fadingEdge
+
+public static final int View_fadingEdgeLength
+
+public static final int View_fitsSystemWindows
+
+public static final int View_focusable
+
+public static final int View_focusableInTouchMode
+
+public static final int View_id
+
+public static final int View_keepScreenOn
+
+public static final int View_longClickable
+
+public static final int View_minHeight
+
+public static final int View_minWidth
+
+public static final int View_nextFocusDown
+
+public static final int View_nextFocusLeft
+
+public static final int View_nextFocusRight
+
+public static final int View_nextFocusUp
+
+public static final int View_padding
+
+public static final int View_paddingBottom
+
+public static final int View_paddingLeft
+
+public static final int View_paddingRight
+
+public static final int View_paddingTop
+
+public static final int View_saveEnabled
+
+public static final int View_scrollX
+
+public static final int View_scrollY
+
+public static final int View_scrollbarAlwaysDrawHorizontalTrack
+
+public static final int View_scrollbarAlwaysDrawVerticalTrack
+
+public static final int View_scrollbarSize
+
+public static final int View_scrollbarStyle
+
+public static final int View_scrollbarThumbHorizontal
+
+public static final int View_scrollbarThumbVertical
+
+public static final int View_scrollbarTrackHorizontal
+
+public static final int View_scrollbarTrackVertical
+
+public static final int View_scrollbars
+
+public static final int View_soundEffectsEnabled
+
+public static final int View_tag
+
+public static final int View_visibility
+
+public static final int[] VolumePreference
+
+public static final int VolumePreference_streamType
+
+public static final int[] Window
+
+public static final int[] WindowAnimation
+
+public static final int WindowAnimation_activityCloseEnterAnimation
+
+public static final int WindowAnimation_activityCloseExitAnimation
+
+public static final int WindowAnimation_activityOpenEnterAnimation
+
+public static final int WindowAnimation_activityOpenExitAnimation
+
+public static final int WindowAnimation_taskCloseEnterAnimation
+
+public static final int WindowAnimation_taskCloseExitAnimation
+
+public static final int WindowAnimation_taskOpenEnterAnimation
+
+public static final int WindowAnimation_taskOpenExitAnimation
+
+public static final int WindowAnimation_taskToBackEnterAnimation
+
+public static final int WindowAnimation_taskToBackExitAnimation
+
+public static final int WindowAnimation_taskToFrontEnterAnimation
+
+public static final int WindowAnimation_taskToFrontExitAnimation
+
+public static final int WindowAnimation_windowEnterAnimation
+
+public static final int WindowAnimation_windowExitAnimation
+
+public static final int WindowAnimation_windowHideAnimation
+
+public static final int WindowAnimation_windowShowAnimation
+
+public static final int Window_textColor
+
+public static final int Window_windowAnimationStyle
+
+public static final int Window_windowBackground
+
+public static final int Window_windowContentOverlay
+
+public static final int Window_windowFrame
+
+public static final int Window_windowFullscreen
+
+public static final int Window_windowIsFloating
+
+public static final int Window_windowIsTranslucent
+
+public static final int Window_windowNoTitle
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =xml )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/R; )
+public final class com.android.internal.R$xml extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int apns
+
+public static final int autotext
+
+public static final int preferred_time_zones
+
+public static final int time_zones_by_country
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/R$styleable;Lcom/android/internal/R$xml;Lcom/android/internal/R$style;Lcom/android/internal/R$string;Lcom/android/internal/R$raw;Lcom/android/internal/R$plurals;Lcom/android/internal/R$layout;Lcom/android/internal/R$id;Lcom/android/internal/R$drawable;Lcom/android/internal/R$dimen;Lcom/android/internal/R$color;Lcom/android/internal/R$attr;Lcom/android/internal/R$array;Lcom/android/internal/R$anim; )
+public final class com.android.internal.R extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public abstract class com.android.internal.app.AlertActivity extends android.app.Activity implements android.content.DialogInterface
+
+----------------FIELDS----------------
+
+protected com.android.internal.app.AlertController mAlert
+
+protected com.android.internal.app.AlertController$AlertParams mAlertParams
+----------------METHODS----------------
+
+public void <init>()
+
+public void cancel()
+
+public void dismiss()
+
+protected void onCreate(
+android.os.Bundle)
+
+public boolean onKeyDown(
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+int
+android.view.KeyEvent)
+
+protected void setupAlert()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/app/AlertController; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class com.android.internal.app.AlertController$1 extends java.lang.Object implements android.view.View$OnClickListener
+
+----------------FIELDS----------------
+
+final com.android.internal.app.AlertController this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.app.AlertController)
+
+public void onClick(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Landroid/widget/ArrayAdapter<Ljava/lang/CharSequence;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class com.android.internal.app.AlertController$AlertParams$1 extends android.widget.ArrayAdapter
+
+----------------FIELDS----------------
+
+final com.android.internal.app.AlertController$AlertParams this$0
+
+final android.widget.ListView val$listView
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.app.AlertController$AlertParams
+android.content.Context
+int
+int
+java.lang.CharSequence[]
+android.widget.ListView)
+
+public android.view.View getView(
+int
+android.view.View
+android.view.ViewGroup)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class com.android.internal.app.AlertController$AlertParams$2 extends android.widget.CursorAdapter
+
+----------------FIELDS----------------
+
+final com.android.internal.app.AlertController$AlertParams this$0
+
+final android.widget.ListView val$listView
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.app.AlertController$AlertParams
+android.content.Context
+android.database.Cursor
+boolean
+android.widget.ListView)
+
+public void bindView(
+android.view.View
+android.content.Context
+android.database.Cursor)
+
+public android.view.View newView(
+android.content.Context
+android.database.Cursor
+android.view.ViewGroup)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class com.android.internal.app.AlertController$AlertParams$3 extends java.lang.Object implements android.widget.AdapterView$OnItemClickListener
+
+----------------FIELDS----------------
+
+final com.android.internal.app.AlertController$AlertParams this$0
+
+final com.android.internal.app.AlertController val$dialog
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.app.AlertController$AlertParams
+com.android.internal.app.AlertController)
+
+public void onItemClick(
+android.widget.AdapterView
+android.view.View
+int
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class com.android.internal.app.AlertController$AlertParams$4 extends java.lang.Object implements android.widget.AdapterView$OnItemClickListener
+
+----------------FIELDS----------------
+
+final com.android.internal.app.AlertController$AlertParams this$0
+
+final com.android.internal.app.AlertController val$dialog
+
+final android.widget.ListView val$listView
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.app.AlertController$AlertParams
+android.widget.ListView
+com.android.internal.app.AlertController)
+
+public void onItemClick(
+android.widget.AdapterView
+android.view.View
+int
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/app/AlertController$AlertParams; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnPrepareListViewListener )
+public abstract interface class com.android.internal.app.AlertController$AlertParams$OnPrepareListViewListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onPrepareListView(
+android.widget.ListView)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =AlertParams )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/app/AlertController; )
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/app/AlertController$AlertParams$OnPrepareListViewListener; )
+public class com.android.internal.app.AlertController$AlertParams extends java.lang.Object
+
+----------------FIELDS----------------
+
+public android.widget.ListAdapter mAdapter
+
+public boolean mCancelable
+
+public int mCheckedItem
+
+public boolean[] mCheckedItems
+
+public final android.content.Context mContext
+
+public android.database.Cursor mCursor
+
+public android.view.View mCustomTitleView
+
+public boolean mForceInverseBackground
+
+public android.graphics.drawable.Drawable mIcon
+
+public int mIconId
+
+public final android.view.LayoutInflater mInflater
+
+public java.lang.String mIsCheckedColumn
+
+public boolean mIsMultiChoice
+
+public boolean mIsSingleChoice
+
+public java.lang.CharSequence[] mItems
+
+public java.lang.String mLabelColumn
+
+public java.lang.CharSequence mMessage
+
+public android.content.DialogInterface$OnClickListener mNegativeButtonListener
+
+public java.lang.CharSequence mNegativeButtonText
+
+public android.content.DialogInterface$OnClickListener mNeutralButtonListener
+
+public java.lang.CharSequence mNeutralButtonText
+
+public android.content.DialogInterface$OnCancelListener mOnCancelListener
+
+public android.content.DialogInterface$OnMultiChoiceClickListener mOnCheckboxClickListener
+
+public android.content.DialogInterface$OnClickListener mOnClickListener
+
+public android.widget.AdapterView$OnItemSelectedListener mOnItemSelectedListener
+
+public android.content.DialogInterface$OnKeyListener mOnKeyListener
+
+public com.android.internal.app.AlertController$AlertParams$OnPrepareListViewListener mOnPrepareListViewListener
+
+public android.content.DialogInterface$OnClickListener mPositiveButtonListener
+
+public java.lang.CharSequence mPositiveButtonText
+
+public java.lang.CharSequence mTitle
+
+public android.view.View mView
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+private void createListView(
+com.android.internal.app.AlertController)
+
+public void apply(
+com.android.internal.app.AlertController)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/app/AlertController; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =ButtonHandler )
+final class com.android.internal.app.AlertController$ButtonHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+private static final int MSG_DISMISS_DIALOG
+@dalvik.annotation.Signature (value =Ljava/lang/ref/WeakReference<Landroid/content/DialogInterface;>; )
+private java.lang.ref.WeakReference mDialog
+----------------METHODS----------------
+
+public void <init>(
+android.content.DialogInterface)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/app/AlertController$AlertParams;Lcom/android/internal/app/AlertController$ButtonHandler; )
+public class com.android.internal.app.AlertController extends java.lang.Object
+
+----------------FIELDS----------------
+
+private android.widget.ListAdapter mAdapter
+
+private android.widget.Button mButton1
+
+private android.os.Message mButton1Message
+
+private java.lang.CharSequence mButton1Text
+
+private android.widget.Button mButton2
+
+private android.os.Message mButton2Message
+
+private java.lang.CharSequence mButton2Text
+
+private android.widget.Button mButton3
+
+private android.os.Message mButton3Message
+
+private java.lang.CharSequence mButton3Text
+
+ android.view.View$OnClickListener mButtonHandler
+
+private int mCheckedItem
+
+private final android.content.Context mContext
+
+private android.view.View mCustomTitleView
+
+private final android.content.DialogInterface mDialogInterface
+
+private boolean mForceInverseBackground
+
+private android.os.Handler mHandler
+
+private android.graphics.drawable.Drawable mIcon
+
+private int mIconId
+
+private android.widget.ImageView mIconView
+
+private android.widget.ListView mListView
+
+private java.lang.CharSequence mMessage
+
+private android.widget.TextView mMessageView
+
+private android.widget.ScrollView mScrollView
+
+private java.lang.CharSequence mTitle
+
+private android.widget.TextView mTitleView
+
+private android.view.View mView
+
+private final android.view.Window mWindow
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.content.DialogInterface
+android.view.Window)
+
+static android.widget.Button access$000(
+com.android.internal.app.AlertController)
+
+static android.os.Message access$100(
+com.android.internal.app.AlertController)
+
+static android.widget.ListView access$1002(
+com.android.internal.app.AlertController
+android.widget.ListView)
+
+static android.widget.Button access$200(
+com.android.internal.app.AlertController)
+
+static android.os.Message access$300(
+com.android.internal.app.AlertController)
+
+static android.widget.Button access$400(
+com.android.internal.app.AlertController)
+
+static android.os.Message access$500(
+com.android.internal.app.AlertController)
+
+static android.content.DialogInterface access$600(
+com.android.internal.app.AlertController)
+
+static android.os.Handler access$700(
+com.android.internal.app.AlertController)
+
+static android.widget.ListAdapter access$802(
+com.android.internal.app.AlertController
+android.widget.ListAdapter)
+
+static int access$902(
+com.android.internal.app.AlertController
+int)
+
+private void centerButton(
+android.widget.Button)
+
+private int getLargeTextSize()
+
+private void setBackground(
+android.widget.LinearLayout
+android.widget.LinearLayout
+android.view.View
+boolean
+android.content.res.TypedArray
+boolean
+android.view.View)
+
+private boolean setupButtons()
+
+private void setupContent(
+android.widget.LinearLayout)
+
+private boolean setupTitle(
+android.widget.LinearLayout
+boolean)
+
+private void setupView()
+
+public android.widget.ListView getListView()
+
+public void installContent()
+
+public boolean onKeyDown(
+int
+android.view.KeyEvent)
+
+public boolean onKeyUp(
+int
+android.view.KeyEvent)
+
+public void setButton(
+java.lang.CharSequence
+android.content.DialogInterface$OnClickListener)
+
+public void setButton(
+java.lang.CharSequence
+android.os.Message)
+
+public void setButton2(
+java.lang.CharSequence
+android.content.DialogInterface$OnClickListener)
+
+public void setButton2(
+java.lang.CharSequence
+android.os.Message)
+
+public void setButton3(
+java.lang.CharSequence
+android.content.DialogInterface$OnClickListener)
+
+public void setButton3(
+java.lang.CharSequence
+android.os.Message)
+
+public void setCustomTitle(
+android.view.View)
+
+public void setIcon(
+int)
+
+public void setIcon(
+android.graphics.drawable.Drawable)
+
+public void setInverseBackgroundForced(
+boolean)
+
+public void setMessage(
+java.lang.CharSequence)
+
+public void setTitle(
+java.lang.CharSequence)
+
+public void setView(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/app/ResolverActivity$ResolveListAdapter; )
+public class com.android.internal.app.ResolverActivity extends com.android.internal.app.AlertActivity implements android.content.DialogInterface$OnClickListener, android.widget.CompoundButton$OnCheckedChangeListener
+
+----------------FIELDS----------------
+
+private com.android.internal.app.ResolverActivity$ResolveListAdapter mAdapter
+
+private android.widget.CheckBox mAlwaysCheck
+
+private android.widget.TextView mClearDefaultHint
+----------------METHODS----------------
+
+public void <init>()
+
+static android.widget.CheckBox access$100(
+com.android.internal.app.ResolverActivity)
+
+public void onCheckedChanged(
+android.widget.CompoundButton
+boolean)
+
+public void onClick(
+android.content.DialogInterface
+int)
+
+protected void onCreate(
+android.os.Bundle)
+
+protected void onCreate(
+android.os.Bundle
+android.content.Intent
+java.lang.CharSequence
+boolean)
+
+________________CLASS________________
+
+
+public class com.android.internal.app.ChooserActivity extends com.android.internal.app.ResolverActivity
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected void onCreate(
+android.os.Bundle)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/app/IBatteryStats$Stub; )
+public abstract interface class com.android.internal.app.IBatteryStats extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract long getAwakeTimeBattery()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract long getAwakeTimePlugged()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void noteStartWakelock(
+int
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void noteStopWakelock(
+int
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void setOnBattery(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/app/IBatteryStats$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class com.android.internal.app.IBatteryStats$Stub$Proxy extends java.lang.Object implements com.android.internal.app.IBatteryStats
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public long getAwakeTimeBattery()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public long getAwakeTimePlugged()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void noteStartWakelock(
+int
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void noteStopWakelock(
+int
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void setOnBattery(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/app/IBatteryStats$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/app/IBatteryStats; )
+public abstract class com.android.internal.app.IBatteryStats$Stub extends android.os.Binder implements com.android.internal.app.IBatteryStats
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_getAwakeTimeBattery
+
+static final int TRANSACTION_getAwakeTimePlugged
+
+static final int TRANSACTION_noteStartWakelock
+
+static final int TRANSACTION_noteStopWakelock
+
+static final int TRANSACTION_setOnBattery
+----------------METHODS----------------
+
+public void <init>()
+
+public static com.android.internal.app.IBatteryStats asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/app/ResolverActivity; )
+@dalvik.annotation.InnerClass (accessFlags =18 name =ResolveListAdapter )
+final class com.android.internal.app.ResolverActivity$ResolveListAdapter extends android.widget.BaseAdapter
+
+----------------FIELDS----------------
+
+private final android.view.LayoutInflater mInflater
+
+private final android.content.Intent mIntent
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/content/pm/ResolveInfo;>; )
+private java.util.List mList
+
+final com.android.internal.app.ResolverActivity this$0
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.app.ResolverActivity
+android.content.Context
+android.content.Intent)
+
+static java.util.List access$000(
+com.android.internal.app.ResolverActivity$ResolveListAdapter)
+
+private final void bindView(
+android.view.View
+android.content.pm.ResolveInfo)
+
+public int getCount()
+
+public java.lang.Object getItem(
+int)
+
+public long getItemId(
+int)
+
+public android.view.View getView(
+int
+android.view.View
+android.view.ViewGroup)
+
+public android.content.Intent intentForPosition(
+int)
+
+public android.content.pm.ResolveInfo resolveInfoForPosition(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/app/RingtonePickerActivity; )
+ class com.android.internal.app.RingtonePickerActivity$1 extends java.lang.Object implements android.content.DialogInterface$OnClickListener
+
+----------------FIELDS----------------
+
+final com.android.internal.app.RingtonePickerActivity this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.app.RingtonePickerActivity)
+
+public void onClick(
+android.content.DialogInterface
+int)
+
+________________CLASS________________
+
+
+public final class com.android.internal.app.RingtonePickerActivity extends com.android.internal.app.AlertActivity implements android.widget.AdapterView$OnItemSelectedListener, java.lang.Runnable, android.content.DialogInterface$OnClickListener, com.android.internal.app.AlertController$AlertParams$OnPrepareListViewListener
+
+----------------FIELDS----------------
+
+private static final int DELAY_MS_SELECTION_PLAYED
+
+private static final java.lang.String TAG
+
+private int mClickedPos
+
+private android.database.Cursor mCursor
+
+private android.media.Ringtone mDefaultRingtone
+
+private int mDefaultRingtonePos
+
+private android.net.Uri mExistingUri
+
+private android.os.Handler mHandler
+
+private boolean mHasDefaultItem
+
+private boolean mHasSilentItem
+
+private android.content.DialogInterface$OnClickListener mRingtoneClickListener
+
+private android.media.RingtoneManager mRingtoneManager
+
+private int mSampleRingtonePos
+
+private int mSilentPos
+
+private int mStaticItemCount
+
+private android.net.Uri mUriForDefaultItem
+----------------METHODS----------------
+
+public void <init>()
+
+static int access$002(
+com.android.internal.app.RingtonePickerActivity
+int)
+
+static void access$100(
+com.android.internal.app.RingtonePickerActivity
+int
+int)
+
+private int addDefaultRingtoneItem(
+android.widget.ListView)
+
+private int addSilentItem(
+android.widget.ListView)
+
+private int addStaticItem(
+android.widget.ListView
+int)
+
+private int getListPosition(
+int)
+
+private int getRingtoneManagerPosition(
+int)
+
+private void playRingtone(
+int
+int)
+
+private void stopAnyPlayingRingtone()
+
+public void onClick(
+android.content.DialogInterface
+int)
+
+protected void onCreate(
+android.os.Bundle)
+
+public void onItemSelected(
+android.widget.AdapterView
+android.view.View
+int
+long)
+
+public void onNothingSelected(
+android.widget.AdapterView)
+
+protected void onPause()
+
+public void onPrepareListView(
+android.widget.ListView)
+
+protected void onStop()
+
+public void run()
+
+________________CLASS________________
+
+
+public class com.android.internal.database.ArrayListCursor extends android.database.AbstractCursor
+
+----------------FIELDS----------------
+
+private java.lang.String[] mColumnNames
+@dalvik.annotation.Signature (value =[Ljava/util/ArrayList<Ljava/lang/Object;>; )
+private java.util.ArrayList[] mRows
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =([Ljava/lang/String;Ljava/util/ArrayList<Ljava/util/ArrayList;>;)V )
+public void <init>(
+java.lang.String[]
+java.util.ArrayList)
+
+public boolean deleteRow()
+
+public java.lang.String[] getColumnNames()
+
+public int getCount()
+
+public double getDouble(
+int)
+
+public float getFloat(
+int)
+
+public int getInt(
+int)
+
+public long getLong(
+int)
+
+public short getShort(
+int)
+
+public java.lang.String getString(
+int)
+
+public boolean isNull(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/database/SortCursor; )
+ class com.android.internal.database.SortCursor$1 extends android.database.DataSetObserver
+
+----------------FIELDS----------------
+
+final com.android.internal.database.SortCursor this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.database.SortCursor)
+
+public void onChanged()
+
+public void onInvalidated()
+
+________________CLASS________________
+
+
+public class com.android.internal.database.SortCursor extends android.database.AbstractCursor
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private final int ROWCACHESIZE
+
+private int[][] mCurRowNumCache
+
+private android.database.Cursor mCursor
+
+private int[] mCursorCache
+
+private android.database.Cursor[] mCursors
+
+private int mLastCacheHit
+
+private android.database.DataSetObserver mObserver
+
+private int[] mRowNumCache
+
+private int[] mSortColumns
+----------------METHODS----------------
+
+public void <init>(
+android.database.Cursor[]
+java.lang.String)
+
+static int access$002(
+com.android.internal.database.SortCursor
+int)
+
+static int access$102(
+com.android.internal.database.SortCursor
+int)
+
+public void close()
+
+public boolean commitUpdates()
+
+public void deactivate()
+
+public boolean deleteRow()
+
+public byte[] getBlob(
+int)
+
+public java.lang.String[] getColumnNames()
+
+public int getCount()
+
+public double getDouble(
+int)
+
+public float getFloat(
+int)
+
+public int getInt(
+int)
+
+public long getLong(
+int)
+
+public short getShort(
+int)
+
+public java.lang.String getString(
+int)
+
+public boolean isNull(
+int)
+
+public boolean onMove(
+int
+int)
+
+public void registerDataSetObserver(
+android.database.DataSetObserver)
+
+public boolean requery()
+
+public void unregisterDataSetObserver(
+android.database.DataSetObserver)
+
+________________CLASS________________
+
+
+public final class com.android.internal.graphics.NativeUtils extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static native boolean nativeScrollRect(
+android.graphics.Canvas
+android.graphics.Rect
+int
+int)
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.http.multipart.PartSource extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.io.InputStream createInputStream()
+
+public abstract java.lang.String getFileName()
+
+public abstract long getLength()
+
+________________CLASS________________
+
+
+public class com.android.internal.http.multipart.ByteArrayPartSource extends java.lang.Object implements com.android.internal.http.multipart.PartSource
+
+----------------FIELDS----------------
+
+private byte[] bytes
+
+private java.lang.String fileName
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+byte[])
+
+public java.io.InputStream createInputStream()
+
+public java.lang.String getFileName()
+
+public long getLength()
+
+________________CLASS________________
+
+
+public abstract class com.android.internal.http.multipart.Part extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected static final java.lang.String BOUNDARY
+
+protected static final byte[] BOUNDARY_BYTES
+
+protected static final java.lang.String CHARSET
+
+protected static final byte[] CHARSET_BYTES
+
+protected static final java.lang.String CONTENT_DISPOSITION
+
+protected static final byte[] CONTENT_DISPOSITION_BYTES
+
+protected static final java.lang.String CONTENT_TRANSFER_ENCODING
+
+protected static final byte[] CONTENT_TRANSFER_ENCODING_BYTES
+
+protected static final java.lang.String CONTENT_TYPE
+
+protected static final byte[] CONTENT_TYPE_BYTES
+
+protected static final java.lang.String CRLF
+
+protected static final byte[] CRLF_BYTES
+
+private static final byte[] DEFAULT_BOUNDARY_BYTES
+
+protected static final java.lang.String EXTRA
+
+protected static final byte[] EXTRA_BYTES
+
+private static final org.apache.commons.logging.Log LOG
+
+protected static final java.lang.String QUOTE
+
+protected static final byte[] QUOTE_BYTES
+
+private byte[] boundaryBytes
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.lang.String getBoundary()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static long getLengthOfParts(
+com.android.internal.http.multipart.Part[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static long getLengthOfParts(
+com.android.internal.http.multipart.Part[]
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static void sendParts(
+java.io.OutputStream
+com.android.internal.http.multipart.Part[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static void sendParts(
+java.io.OutputStream
+com.android.internal.http.multipart.Part[]
+byte[])
+
+public abstract java.lang.String getCharSet()
+
+public abstract java.lang.String getContentType()
+
+public abstract java.lang.String getName()
+
+protected byte[] getPartBoundary()
+
+public abstract java.lang.String getTransferEncoding()
+
+public boolean isRepeatable()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long length()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract long lengthOfData()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void send(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void sendContentTypeHeader(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void sendData(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void sendDispositionHeader(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void sendEnd(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void sendEndOfHeader(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void sendStart(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void sendTransferEncodingHeader(
+java.io.OutputStream)
+
+ void setPartBoundary(
+byte[])
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract class com.android.internal.http.multipart.PartBase extends com.android.internal.http.multipart.Part
+
+----------------FIELDS----------------
+
+private java.lang.String charSet
+
+private java.lang.String contentType
+
+private java.lang.String name
+
+private java.lang.String transferEncoding
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public java.lang.String getCharSet()
+
+public java.lang.String getContentType()
+
+public java.lang.String getName()
+
+public java.lang.String getTransferEncoding()
+
+public void setCharSet(
+java.lang.String)
+
+public void setContentType(
+java.lang.String)
+
+public void setName(
+java.lang.String)
+
+public void setTransferEncoding(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class com.android.internal.http.multipart.FilePart extends com.android.internal.http.multipart.PartBase
+
+----------------FIELDS----------------
+
+public static final java.lang.String DEFAULT_CHARSET
+
+public static final java.lang.String DEFAULT_CONTENT_TYPE
+
+public static final java.lang.String DEFAULT_TRANSFER_ENCODING
+
+protected static final java.lang.String FILE_NAME
+
+private static final byte[] FILE_NAME_BYTES
+
+private static final org.apache.commons.logging.Log LOG
+
+private com.android.internal.http.multipart.PartSource source
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+com.android.internal.http.multipart.PartSource)
+
+public void <init>(
+java.lang.String
+com.android.internal.http.multipart.PartSource
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.lang.String
+java.io.File)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.lang.String
+java.io.File
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.lang.String
+java.lang.String
+java.io.File)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.lang.String
+java.lang.String
+java.io.File
+java.lang.String
+java.lang.String)
+
+protected com.android.internal.http.multipart.PartSource getSource()
+
+protected long lengthOfData()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void sendData(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void sendDispositionHeader(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public class com.android.internal.http.multipart.FilePartSource extends java.lang.Object implements com.android.internal.http.multipart.PartSource
+
+----------------FIELDS----------------
+
+private java.io.File file
+
+private java.lang.String fileName
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.io.File)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.lang.String
+java.io.File)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream createInputStream()
+
+public java.lang.String getFileName()
+
+public long getLength()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HttpEntity extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void consumeContent()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalStateException; )
+public abstract java.io.InputStream getContent()
+
+public abstract org.apache.http.Header getContentEncoding()
+
+public abstract long getContentLength()
+
+public abstract org.apache.http.Header getContentType()
+
+public abstract boolean isChunked()
+
+public abstract boolean isRepeatable()
+
+public abstract boolean isStreaming()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void writeTo(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.entity.AbstractHttpEntity extends java.lang.Object implements org.apache.http.HttpEntity
+
+----------------FIELDS----------------
+
+protected boolean chunked
+
+protected org.apache.http.Header contentEncoding
+
+protected org.apache.http.Header contentType
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/UnsupportedOperationException; )
+public void consumeContent()
+
+public org.apache.http.Header getContentEncoding()
+
+public org.apache.http.Header getContentType()
+
+public boolean isChunked()
+
+public void setChunked(
+boolean)
+
+public void setContentEncoding(
+java.lang.String)
+
+public void setContentEncoding(
+org.apache.http.Header)
+
+public void setContentType(
+java.lang.String)
+
+public void setContentType(
+org.apache.http.Header)
+
+________________CLASS________________
+
+
+public class com.android.internal.http.multipart.MultipartEntity extends org.apache.http.entity.AbstractHttpEntity
+
+----------------FIELDS----------------
+
+public static final java.lang.String MULTIPART_BOUNDARY
+
+private static byte[] MULTIPART_CHARS
+
+private static final java.lang.String MULTIPART_FORM_CONTENT_TYPE
+
+private static final org.apache.commons.logging.Log log
+
+private boolean contentConsumed
+
+private byte[] multipartBoundary
+
+private org.apache.http.params.HttpParams params
+
+protected com.android.internal.http.multipart.Part[] parts
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+com.android.internal.http.multipart.Part[])
+
+public void <init>(
+com.android.internal.http.multipart.Part[]
+org.apache.http.params.HttpParams)
+
+private static byte[] generateMultipartBoundary()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalStateException; )
+public java.io.InputStream getContent()
+
+public long getContentLength()
+
+public org.apache.http.Header getContentType()
+
+protected byte[] getMultipartBoundary()
+
+public boolean isRepeatable()
+
+public boolean isStreaming()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeTo(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public class com.android.internal.http.multipart.StringPart extends com.android.internal.http.multipart.PartBase
+
+----------------FIELDS----------------
+
+public static final java.lang.String DEFAULT_CHARSET
+
+public static final java.lang.String DEFAULT_CONTENT_TYPE
+
+public static final java.lang.String DEFAULT_TRANSFER_ENCODING
+
+private static final org.apache.commons.logging.Log LOG
+
+private byte[] content
+
+private java.lang.String value
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private byte[] getContent()
+
+protected long lengthOfData()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void sendData(
+java.io.OutputStream)
+
+public void setCharSet(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class com.android.internal.location.CellState extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static int RADIO_TYPE_CDMA
+
+public static int RADIO_TYPE_GPRS
+
+public static int RADIO_TYPE_WCDMA
+
+public static java.lang.String TAG
+
+private java.lang.String mCarrier
+
+private int mCid
+
+private int mHomeMcc
+
+private int mHomeMnc
+
+private int mLac
+
+private int mMcc
+
+private int mMnc
+
+private int mRadioType
+
+private long mTime
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+android.telephony.ServiceState
+android.telephony.CellLocation)
+
+public boolean equals(
+com.android.internal.location.CellState)
+
+public java.lang.String getCarrier()
+
+public int getCid()
+
+public int getHomeMcc()
+
+public int getHomeMnc()
+
+public int getLac()
+
+public int getMcc()
+
+public int getMnc()
+
+public int getRadioType()
+
+public long getTime()
+
+public boolean isValid()
+
+public void setCarrier(
+java.lang.String)
+
+public void setHomeMcc(
+int)
+
+public void setHomeMnc(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =GpsEventThread )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/location/GpsLocationProvider; )
+ class com.android.internal.location.GpsLocationProvider$GpsEventThread extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final com.android.internal.location.GpsLocationProvider this$0
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.location.GpsLocationProvider)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/location/GpsLocationProvider; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =GpsNetworkThread )
+ class com.android.internal.location.GpsLocationProvider$GpsNetworkThread extends java.lang.Thread
+
+----------------FIELDS----------------
+
+private long mNextNtpTime
+
+private long mNextXtraTime
+
+private boolean mXtraDownloadRequested
+
+final com.android.internal.location.GpsLocationProvider this$0
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.location.GpsLocationProvider)
+
+private long getWaitTime()
+
+public void run()
+
+ void signal()
+
+ void xtraDownloadRequest()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =18 name =Listener )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/location/GpsLocationProvider; )
+final class com.android.internal.location.GpsLocationProvider$Listener extends java.lang.Object implements android.os.IBinder$DeathRecipient
+
+----------------FIELDS----------------
+
+final android.location.IGpsStatusListener mListener
+
+ int mSensors
+
+final com.android.internal.location.GpsLocationProvider this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.location.GpsLocationProvider
+android.location.IGpsStatusListener)
+
+public void binderDied()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/location/GpsLocationProvider$GpsNetworkThread;Lcom/android/internal/location/GpsLocationProvider$GpsEventThread;Lcom/android/internal/location/GpsLocationProvider$Listener; )
+public class com.android.internal.location.GpsLocationProvider extends android.location.LocationProviderImpl
+
+----------------FIELDS----------------
+
+private static final int ALMANAC_MASK
+
+private static final int EPHEMERIS_MASK
+
+public static final java.lang.String EXTRA_ENABLED
+
+private static final int GPS_DELETE_ALL
+
+private static final int GPS_DELETE_ALMANAC
+
+private static final int GPS_DELETE_CELLDB_INFO
+
+private static final int GPS_DELETE_EPHEMERIS
+
+private static final int GPS_DELETE_HEALTH
+
+private static final int GPS_DELETE_IONO
+
+private static final int GPS_DELETE_POSITION
+
+private static final int GPS_DELETE_RTI
+
+private static final int GPS_DELETE_SADATA
+
+private static final int GPS_DELETE_SVDIR
+
+private static final int GPS_DELETE_SVSTEER
+
+private static final int GPS_DELETE_TIME
+
+private static final int GPS_DELETE_UTC
+
+public static final java.lang.String GPS_ENABLED_CHANGE_ACTION
+
+public static final java.lang.String GPS_FIX_CHANGE_ACTION
+
+private static final int GPS_STATUS_ENGINE_OFF
+
+private static final int GPS_STATUS_ENGINE_ON
+
+private static final int GPS_STATUS_NONE
+
+private static final int GPS_STATUS_SESSION_BEGIN
+
+private static final int GPS_STATUS_SESSION_END
+
+private static final int LOCATION_HAS_ACCURACY
+
+private static final int LOCATION_HAS_ALTITUDE
+
+private static final int LOCATION_HAS_BEARING
+
+private static final int LOCATION_HAS_LAT_LONG
+
+private static final int LOCATION_HAS_SPEED
+
+private static final int LOCATION_INVALID
+
+private static final int MAX_SVS
+
+private static final long NTP_INTERVAL
+
+private static final java.lang.String PROPERTIES_FILE
+
+private static final long RECENT_FIX_TIMEOUT
+
+private static final long RETRY_INTERVAL
+
+private static final java.lang.String TAG
+
+private static final int USED_FOR_FIX_MASK
+
+private com.android.internal.location.LocationCollector mCollector
+
+private android.content.Context mContext
+
+private boolean mEnabled
+
+private com.android.internal.location.GpsLocationProvider$GpsEventThread mEventThread
+
+private int mFixInterval
+
+private long mFixRequestTime
+
+private long mLastFixTime
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/android/internal/location/GpsLocationProvider$Listener;>; )
+private java.util.ArrayList mListeners
+
+private android.location.Location mLocation
+
+private android.os.Bundle mLocationExtras
+
+private int mLocationFlags
+
+private boolean mLocationTracking
+
+private boolean mNavigating
+
+private boolean mNetworkAvailable
+
+private com.android.internal.location.GpsLocationProvider$GpsNetworkThread mNetworkThread
+
+private java.util.Properties mProperties
+
+private float[] mSnrs
+
+private boolean mStarted
+
+private int mStatus
+
+private long mStatusUpdateTime
+
+private float[] mSvAzimuths
+
+private int mSvCount
+
+private float[] mSvElevations
+
+private int[] mSvMasks
+
+private int[] mSvs
+
+private int mTTFF
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context
+com.android.internal.location.LocationCollector)
+
+static java.util.ArrayList access$000(
+com.android.internal.location.GpsLocationProvider)
+
+static boolean access$100(
+com.android.internal.location.GpsLocationProvider)
+
+static boolean access$200(
+com.android.internal.location.GpsLocationProvider)
+
+static void access$300(
+com.android.internal.location.GpsLocationProvider)
+
+static boolean access$400(
+com.android.internal.location.GpsLocationProvider)
+
+static android.content.Context access$500(
+com.android.internal.location.GpsLocationProvider)
+
+static java.util.Properties access$600(
+com.android.internal.location.GpsLocationProvider)
+
+static boolean access$700(
+com.android.internal.location.GpsLocationProvider)
+
+static void access$800(
+com.android.internal.location.GpsLocationProvider
+long
+long
+int)
+
+static void access$900(
+com.android.internal.location.GpsLocationProvider
+byte[]
+int)
+
+private static native void class_init_native()
+
+private boolean deleteAidingData(
+android.os.Bundle)
+
+public static boolean isSupported()
+
+private native void native_cleanup()
+
+private native void native_delete_aiding_data(
+int)
+
+private native void native_disable()
+
+private native boolean native_init()
+
+private native void native_inject_time(
+long
+long
+int)
+
+private native void native_inject_xtra_data(
+byte[]
+int)
+
+private static native boolean native_is_supported()
+
+private native int native_read_sv_status(
+int[]
+float[]
+float[]
+float[]
+int[])
+
+private native void native_set_fix_frequency(
+int)
+
+private native boolean native_start(
+boolean
+int)
+
+private native boolean native_stop()
+
+private native boolean native_supports_xtra()
+
+private native void native_wait_for_event()
+
+private void reportLocation(
+int
+double
+double
+double
+float
+float
+float
+long)
+
+private void reportStatus(
+int)
+
+private void reportSvStatus()
+
+private void updateStatus(
+int
+int)
+
+private void xtraDownloadRequest()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void addGpsStatusListener(
+android.location.IGpsStatusListener)
+
+public void disable()
+
+public void enable()
+
+public void enableLocationTracking(
+boolean)
+
+public int getAccuracy()
+
+public boolean getLocation(
+android.location.Location)
+
+public int getPowerRequirement()
+
+public int getStatus(
+android.os.Bundle)
+
+public long getStatusUpdateTime()
+
+public boolean hasMonetaryCost()
+
+public boolean isEnabled()
+
+public boolean isLocationTracking()
+
+public void removeGpsStatusListener(
+android.location.IGpsStatusListener)
+
+public boolean requiresCell()
+
+public boolean requiresNetwork()
+
+public boolean requiresSatellite()
+
+public boolean sendExtraCommand(
+java.lang.String
+android.os.Bundle)
+
+public void setMinTime(
+long)
+
+public void startNavigating()
+
+public void stopNavigating()
+
+public boolean supportsAltitude()
+
+public boolean supportsBearing()
+
+public boolean supportsSpeed()
+
+public void updateNetworkState(
+int)
+
+________________CLASS________________
+
+
+public class com.android.internal.location.GpsXtraDownloader extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private android.content.Context mContext
+
+private int mNextServerIndex
+
+private java.lang.String[] mXtraServers
+----------------METHODS----------------
+
+ void <init>(
+android.content.Context
+java.util.Properties)
+
+protected static byte[] doDownload(
+java.lang.String
+boolean
+java.lang.String
+int)
+
+ byte[] downloadXtraData()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1 name =Cache )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/location/LocationCache; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/util/LinkedHashMap; )
+public class com.android.internal.location.LocationCache$Cache extends java.util.LinkedHashMap
+
+----------------FIELDS----------------
+
+private final int mCapacity
+
+private final java.lang.String mDir
+
+private final java.lang.String mFile
+
+private long mLastSaveTime
+
+private final long mMaxAge
+
+final com.android.internal.location.LocationCache this$0
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.location.LocationCache
+java.lang.String
+java.lang.String
+int
+long)
+
+static com.android.internal.location.LocationCache$Record access$000(
+com.android.internal.location.LocationCache$Cache
+java.lang.String)
+
+static void access$100(
+com.android.internal.location.LocationCache$Cache)
+
+static void access$200(
+com.android.internal.location.LocationCache$Cache
+java.lang.String
+com.android.internal.location.LocationCache$Record)
+
+private void insert(
+java.lang.String
+com.android.internal.location.LocationCache$Record)
+
+private void load()
+
+private com.android.internal.location.LocationCache$Record lookup(
+java.lang.String)
+
+private void save()
+
+protected boolean removeEldestEntry(
+java.util.Map$Entry)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1 name =LocationCentroid )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/location/LocationCache; )
+public class com.android.internal.location.LocationCache$LocationCentroid extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int MAX_SIZE
+
+ double mCentroidLat
+
+ double mCentroidLng
+
+ int mConfidenceSum
+
+ double mLatSum
+
+ double[] mLats
+
+ double mLngSum
+
+ double[] mLngs
+
+ int mNumber
+
+ int[] mRadii
+
+final com.android.internal.location.LocationCache this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.location.LocationCache)
+
+public void addLocation(
+double
+double
+int
+int)
+
+public int getAccuracy()
+
+public double getCentroidLat()
+
+public double getCentroidLng()
+
+public int getConfidence()
+
+public int getNumber()
+
+public void reset()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Record )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/location/LocationCache; )
+public class com.android.internal.location.LocationCache$Record extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int accuracy
+
+private final int confidence
+
+private final double lat
+
+private final double lng
+
+private final long originTime
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int
+int
+double
+double
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static com.android.internal.location.LocationCache$Record read(
+java.io.DataInput)
+
+public int getAccuracy()
+
+public int getConfidence()
+
+public double getLat()
+
+public double getLng()
+
+public long getTime()
+
+public boolean isValid()
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+java.io.DataOutput)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/location/LocationCache$LocationCentroid;Lcom/android/internal/location/LocationCache$Cache;Lcom/android/internal/location/LocationCache$Record; )
+public class com.android.internal.location.LocationCache extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int CACHE_DB_VERSION
+
+private static final long CELL_SMOOTHING_WINDOW
+
+private static final int MAX_ACCURACY_ALLOWED
+
+private static final int MAX_CELL_RECORDS
+
+private static final long MAX_CELL_REFRESH_RECORD_AGE
+
+private static final int MAX_WIFI_RECORDS
+
+private static final long MAX_WIFI_REFRESH_RECORD_AGE
+
+private static final long SAVE_FREQUENCY
+
+private static final java.lang.String TAG
+
+private static final int WIFI_MAX_MISS_ALLOWED
+
+private static final int WIFI_MIN_AP_REQUIRED
+
+private static final java.lang.String mCellCacheFile
+
+private static final java.lang.String mWifiCacheFile
+
+private final java.lang.String EXTRA_KEY_LOCATION_TYPE
+
+private final java.lang.String EXTRA_VALUE_LOCATION_TYPE_CELL
+
+private final java.lang.String EXTRA_VALUE_LOCATION_TYPE_WIFI
+@dalvik.annotation.Signature (value =Lcom/android/internal/location/LocationCache$Cache<Lcom/android/internal/location/LocationCache$Record;>; )
+private final com.android.internal.location.LocationCache$Cache mCellCache
+
+private final com.android.internal.location.LocationCache$LocationCentroid mCellCentroid
+@dalvik.annotation.Signature (value =Lcom/android/internal/location/LocationCache$Cache<Lcom/android/internal/location/LocationCache$Record;>; )
+private final com.android.internal.location.LocationCache$Cache mWifiCache
+
+private final com.android.internal.location.LocationCache$LocationCentroid mWifiCentroid
+----------------METHODS----------------
+
+public void <init>()
+
+private java.lang.String getCellCacheKey(
+int
+int
+int
+int)
+
+public void insert(
+int
+int
+int
+int
+double
+double
+int
+int
+long)
+
+public void insert(
+java.lang.String
+double
+double
+int
+int
+long)
+@dalvik.annotation.Signature (value =(Lcom/android/internal/location/CellState;Ljava/util/List<Lcom/android/internal/location/CellState;>;Ljava/util/List<Landroid/net/wifi/ScanResult;>;Landroid/location/Location;)Z )
+public boolean lookup(
+com.android.internal.location.CellState
+java.util.List
+java.util.List
+android.location.Location)
+
+public void save()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/location/LocationCollector; )
+ class com.android.internal.location.LocationCollector$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/location/LocationCollector; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =CellUploads )
+ class com.android.internal.location.LocationCollector$CellUploads extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int MIN_DISTANCE
+
+private final int SIZE
+
+private final java.lang.String[] cells
+
+private final float[] distance
+
+private int index
+
+private final double[] latitudes
+
+private final double[] longitudes
+
+final com.android.internal.location.LocationCollector this$0
+
+private final boolean[] valid
+----------------METHODS----------------
+
+private void <init>(
+com.android.internal.location.LocationCollector)
+
+ void <init>(
+com.android.internal.location.LocationCollector
+com.android.internal.location.LocationCollector$1)
+
+static boolean access$100(
+com.android.internal.location.LocationCollector$CellUploads
+com.android.internal.location.CellState
+android.location.Location)
+
+private boolean contains(
+com.android.internal.location.CellState
+android.location.Location)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/location/LocationCollector$1;Lcom/android/internal/location/LocationCollector$CellUploads; )
+public class com.android.internal.location.LocationCollector extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int BURST_MEASUREMENT_INTERVAL
+
+private static final int BURST_NUM_SAMPLES
+
+private static final long BURST_REST_TIME_ON_BATTERY
+
+private static final long BURST_REST_TIME_PLUGGED
+
+private static final double CHARGED_BATTERY_LEVEL
+
+private static final int MAX_BURSTS_FROM_SAME_LOCATION
+
+private static final double MIN_BATTERY_LEVEL
+
+private static final int MIN_CHANGED_WIFI_POINTS
+
+private static final int MIN_DISTANCE_BETWEEN_BURSTS
+
+private static final int MIN_DISTANCE_BETWEEN_REPORTS
+
+private static final long MIN_TIME_BETWEEN_WIFI_REPORTS
+
+private static final long MIN_VALID_LOCATION_TIME
+
+private static final java.lang.String TAG
+
+private boolean mBatteryChargedAndPlugged
+
+private boolean mBatteryLevelIsHealthy
+
+private com.android.internal.location.CellState mCellState
+
+private com.android.internal.location.LocationCollector$CellUploads mCellUploads
+
+private int mCurrentBurstNumSamples
+
+private long mCurrentBurstStartTime
+
+private long mLastBurstEndTime
+
+private android.location.Location mLastBurstLocation
+
+private android.location.Location mLastKnownLocation
+
+private long mLastKnownLocationTime
+
+private android.location.Location mLastUploadedLocation
+
+private long mLastUploadedLocationTime
+
+private long mLastWifiScanElapsedTime
+
+private long mLastWifiScanRealTime
+
+private com.android.internal.location.LocationMasfClient mMasfClient
+
+private boolean mNetworkProviderIsEnabled
+
+private int mNumBurstsFromLastLocation
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/net/wifi/ScanResult;>; )
+private java.util.List mWifiCurrentScanResults
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/net/wifi/ScanResult;>; )
+private java.util.List mWifiLastScanResults
+
+private boolean mWifiUploadedWithoutLocation
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.location.LocationMasfClient)
+
+private void addToQueue(
+int)
+
+private boolean isCollectionEnabled()
+
+private void log(
+java.lang.String)
+
+public void updateBatteryState(
+int
+int
+boolean)
+
+public void updateCellState(
+com.android.internal.location.CellState)
+
+public void updateLocation(
+android.location.Location)
+
+public void updateNetworkProviderStatus(
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/net/wifi/ScanResult;>;)V )
+public void updateWifiScanResults(
+java.util.List)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class com.android.internal.location.LocationMasfClient$1 extends java.lang.Object implements com.google.masf.ServiceCallback
+
+----------------FIELDS----------------
+
+final com.android.internal.location.LocationMasfClient this$0
+
+final com.android.internal.location.NetworkLocationProvider$Callback val$finalCallback
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.location.LocationMasfClient
+com.android.internal.location.NetworkLocationProvider$Callback)
+
+public void onRequestComplete(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class com.android.internal.location.LocationMasfClient$2 extends java.lang.Object implements com.google.masf.ServiceCallback
+
+----------------FIELDS----------------
+
+final com.android.internal.location.LocationMasfClient this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.location.LocationMasfClient)
+
+public void onRequestComplete(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class com.android.internal.location.LocationMasfClient extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String APPLICATION_NAME
+
+private static final java.lang.String APPLICATION_VERSION
+
+private static final int COLLECTION_EVENT_LOG_TAG
+
+private static final java.lang.String DISTRIBUTION_CHANNEL
+
+private static final double E7
+
+private static final java.lang.String EXTRA_KEY_LOCATION_SOURCE
+
+private static final java.lang.String EXTRA_VALUE_LOCATION_SOURCE_CACHED
+
+private static final java.lang.String EXTRA_VALUE_LOCATION_SOURCE_SERVER
+
+private static final java.lang.String MASF_SERVER_ADDRESS
+
+private static final int MAX_WIFI_TO_INCLUDE
+
+private static java.lang.String PLATFORM_BUILD
+
+private static final java.lang.String PLATFORM_ID
+
+private static final java.lang.String PLATFORM_KEY_FILE
+
+private static final java.lang.String REQUEST_QUERY_LOC
+
+private static final long REQUEST_TIMEOUT
+
+private static final java.lang.String REQUEST_UPLOAD_LOC
+
+static final java.lang.String TAG
+
+private final int MAX_COLLECTION_BUFFER_SIZE
+
+private final long MIN_COLLECTION_INTERVAL
+@dalvik.annotation.Signature (value =Ljava/util/List<Lcom/android/internal/location/CellState;>; )
+private java.util.List mCellHistory
+
+private com.android.internal.location.CellState mCellState
+
+private com.google.common.io.protocol.ProtoBuf mCellularPlatformProfile
+
+private com.google.common.io.protocol.ProtoBuf mCurrentCollectionRequest
+
+private long mLastCollectionUploadTime
+
+private android.location.Location mLocation
+
+private com.android.internal.location.LocationCache mLocationCache
+
+private java.lang.String mPlatformKey
+
+private com.google.common.io.protocol.ProtoBuf mPlatformProfile
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/net/wifi/ScanResult;>; )
+private java.util.List mWifiScanResults
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+static boolean access$000(
+com.android.internal.location.LocationMasfClient
+com.google.common.io.protocol.ProtoBuf)
+
+static android.location.Location access$100(
+com.android.internal.location.LocationMasfClient)
+
+static void access$200(
+com.android.internal.location.LocationMasfClient
+java.lang.String)
+
+private com.google.common.io.protocol.ProtoBuf createCellularPlatformProfile(
+com.android.internal.location.CellState)
+
+private com.google.common.io.protocol.ProtoBuf createPlatformProfile()
+
+private com.google.common.io.protocol.ProtoBuf createPlatformProfile(
+java.util.Locale)
+@dalvik.annotation.Signature (value =(Lcom/google/common/io/protocol/ProtoBuf;Ljava/util/Locale;Ljava/util/List<Landroid/location/Address;>;)V )
+private void getAddressFromProtoBuf(
+com.google.common.io.protocol.ProtoBuf
+java.util.Locale
+java.util.List)
+
+private java.lang.String getPlatformKey()
+
+private boolean parseNetworkLocationReply(
+com.google.common.io.protocol.ProtoBuf)
+
+private void setPlatformKey(
+java.lang.String)
+
+private void uploadCollectionReport(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/util/Locale;Ljava/lang/String;Ljava/lang/String;DDDDILjava/util/List<Landroid/location/Address;>;)V )
+public void forwardGeocode(
+java.util.Locale
+java.lang.String
+java.lang.String
+double
+double
+double
+double
+int
+java.util.List)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<Ljava/lang/String;>;ILcom/android/internal/location/CellState;Ljava/util/List<Lcom/android/internal/location/CellState;>;Ljava/util/List<Landroid/net/wifi/ScanResult;>;JLcom/android/internal/location/NetworkLocationProvider$Callback;)V )
+public void getNetworkLocation(
+java.util.Collection
+int
+com.android.internal.location.CellState
+java.util.List
+java.util.List
+long
+com.android.internal.location.NetworkLocationProvider$Callback)
+@dalvik.annotation.Signature (value =(ILandroid/location/Location;Lcom/android/internal/location/CellState;Ljava/util/List<Landroid/net/wifi/ScanResult;>;JZ)V )
+public void queueCollectionReport(
+int
+android.location.Location
+com.android.internal.location.CellState
+java.util.List
+long
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/util/Locale;Ljava/lang/String;DDILjava/util/List<Landroid/location/Address;>;)V )
+public void reverseGeocode(
+java.util.Locale
+java.lang.String
+double
+double
+int
+java.util.List)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Callback )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/location/NetworkLocationProvider; )
+public abstract interface class com.android.internal.location.NetworkLocationProvider$Callback extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void locationReceived(
+android.location.Location
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class com.android.internal.location.NetworkLocationProvider$1 extends java.lang.Object implements com.android.internal.location.NetworkLocationProvider$Callback
+
+----------------FIELDS----------------
+
+final com.android.internal.location.NetworkLocationProvider this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.location.NetworkLocationProvider)
+
+public void locationReceived(
+android.location.Location
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/location/NetworkLocationProvider$Callback; )
+public class com.android.internal.location.NetworkLocationProvider extends android.location.LocationProviderImpl
+
+----------------FIELDS----------------
+
+private static final int MAX_CELL_HISTORY_TO_KEEP
+
+private static final long MAX_TIME_TO_WAIT_FOR_RADIO
+
+private static final int MIN_NETWORK_RETRY_MILLIS
+
+private static final long MIN_TIME_BETWEEN_WIFI_REPORTS
+
+private static final java.lang.String TAG
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private java.util.HashSet mApplications
+@dalvik.annotation.Signature (value =Ljava/util/LinkedList<Lcom/android/internal/location/CellState;>; )
+private java.util.LinkedList mCellHistory
+
+private com.android.internal.location.CellState mCellState
+
+private android.content.Context mContext
+
+private boolean mEnabled
+
+private long mLastCellLockTime
+
+private long mLastCellStateChangeTime
+
+private long mLastNetworkQueryTime
+
+private long mLastSuccessfulNetworkQueryTime
+
+private long mLastWifiScanElapsedTime
+
+private long mLastWifiScanRealTime
+
+private long mLastWifiScanTriggerTime
+
+private android.location.Location mLocation
+
+private com.android.internal.location.LocationMasfClient mMasfClient
+
+private int mNetworkState
+
+private int mStatus
+
+private long mStatusUpdateTime
+
+private boolean mTracking
+
+private boolean mWifiEnabled
+@dalvik.annotation.Signature (value =Ljava/util/List<Landroid/net/wifi/ScanResult;>; )
+private java.util.List mWifiLastScanResults
+
+private long mWifiScanFrequency
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+com.android.internal.location.LocationMasfClient)
+
+static android.location.Location access$000(
+com.android.internal.location.NetworkLocationProvider)
+
+static void access$100(
+com.android.internal.location.NetworkLocationProvider
+int)
+
+static void access$200(
+com.android.internal.location.NetworkLocationProvider)
+
+static long access$302(
+com.android.internal.location.NetworkLocationProvider
+long)
+
+private void clearLocation()
+
+private void forceLocation()
+
+public static boolean isSupported()
+
+private void log(
+java.lang.String)
+
+private void updateLocation()
+
+private void updateStatus(
+int)
+
+public void addListener(
+java.lang.String[])
+
+public void disable()
+
+public void enable()
+
+public void enableLocationTracking(
+boolean)
+
+public int getAccuracy()
+
+public boolean getLocation(
+android.location.Location)
+
+public int getPowerRequirement()
+
+public int getStatus(
+android.os.Bundle)
+
+public long getStatusUpdateTime()
+
+public boolean hasMonetaryCost()
+
+public boolean isEnabled()
+
+public boolean isLocationTracking()
+
+public void removeListener(
+java.lang.String[])
+
+public boolean requiresCell()
+
+public boolean requiresNetwork()
+
+public boolean requiresSatellite()
+
+public void setMinTime(
+long)
+
+public boolean supportsAltitude()
+
+public boolean supportsBearing()
+
+public boolean supportsSpeed()
+
+public void updateCellLockStatus(
+boolean)
+
+public void updateCellState(
+com.android.internal.location.CellState)
+
+public void updateNetworkState(
+int)
+
+public void updateWifiEnabledState(
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Landroid/net/wifi/ScanResult;>;)V )
+public void updateWifiScanResults(
+java.util.List)
+
+________________CLASS________________
+
+
+public class com.android.internal.location.NmeaParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final float KNOTS_TO_METERS_PER_SECOND
+
+private static final java.lang.String TAG
+
+private static final java.util.TimeZone sUtcTimeZone
+
+private double mAltitude
+
+private long mBaseTime
+
+private float mBearing
+
+private int mDay
+
+private android.os.Bundle mExtras
+
+private boolean mHasAltitude
+
+private boolean mHasBearing
+
+private boolean mHasSpeed
+
+private double mLatitude
+
+private android.location.Location mLocation
+
+private double mLongitude
+
+private int mMonth
+
+private final java.lang.String mName
+
+private boolean mNewWaypoint
+
+private float mSpeed
+
+private long mTime
+
+private int mYear
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String)
+
+private double convertFromHHMM(
+java.lang.String)
+
+private boolean updateAltitude(
+java.lang.String)
+
+private boolean updateBearing(
+java.lang.String)
+
+private boolean updateDate(
+java.lang.String)
+
+private boolean updateDoubleExtra(
+java.lang.String
+java.lang.String)
+
+private boolean updateFloatExtra(
+java.lang.String
+java.lang.String)
+
+private boolean updateIntExtra(
+java.lang.String
+java.lang.String)
+
+private boolean updateLatLon(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private boolean updateSpeed(
+java.lang.String)
+
+private boolean updateTime(
+java.lang.String)
+
+private boolean updateTime(
+java.lang.String
+java.lang.String)
+
+public android.location.Location getLocation()
+
+public boolean parseSentence(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class com.android.internal.location.ProtoRequestListener extends java.lang.Object implements com.google.masf.protocol.Request$Listener
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private com.google.common.io.protocol.ProtoBuf protoResponse
+
+private com.google.masf.services.AsyncResult result
+----------------METHODS----------------
+
+public void <init>(
+com.google.common.io.protocol.ProtoBuf
+com.google.masf.ServiceCallback)
+
+public com.google.masf.services.AsyncResult getAsyncResult()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean requestComplete(
+com.google.masf.protocol.Request
+com.google.masf.protocol.Response)
+
+public void requestException(
+com.google.masf.protocol.Request
+java.lang.Exception)
+
+________________CLASS________________
+
+
+public class com.android.internal.location.TrackProvider extends android.location.LocationProviderImpl
+
+----------------FIELDS----------------
+
+private static final long INTERVAL
+
+static final java.lang.String LOG_TAG
+
+private int mAccuracy
+
+private double mAltitude
+
+private long mBaseTime
+
+private float mBearing
+
+private boolean mEnabled
+
+private android.os.Bundle mExtras
+
+private boolean mHasAltitude
+
+private boolean mHasBearing
+
+private boolean mHasMonetaryCost
+
+private boolean mHasSpeed
+
+private android.location.Location mInitialLocation
+
+private long mLastTime
+
+private double mLatitude
+
+private double mLongitude
+
+private long mMaxTime
+
+private long mMinTime
+
+private int mPowerRequirement
+
+private boolean mRepeat
+
+private boolean mRequiresCell
+
+private boolean mRequiresNetwork
+
+private boolean mRequiresSatellite
+
+private float mSpeed
+
+private boolean mSupportsAltitude
+
+private boolean mSupportsBearing
+
+private boolean mSupportsSpeed
+
+private long mTime
+
+private float mTrackSpeed
+
+private int mWaypointIndex
+@dalvik.annotation.Signature (value =Ljava/util/List<Lcom/android/internal/location/Waypoint;>; )
+private java.util.List mWaypoints
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.io.File)
+
+private static boolean booleanVal(
+java.lang.String)
+
+private void close(
+java.io.Reader)
+
+private static float floatVal(
+java.lang.String)
+
+private static int intVal(
+java.lang.String)
+
+private double interp(
+double
+double
+float)
+
+private void setTimes()
+
+private void update()
+
+public void disable()
+
+public void enable()
+
+public int getAccuracy()
+
+public android.location.Location getInitialLocation()
+
+public boolean getLocation(
+android.location.Location)
+
+public int getPowerRequirement()
+
+public int getStatus(
+android.os.Bundle)
+
+public boolean hasMonetaryCost()
+
+public boolean isEnabled()
+
+public void readKml(
+java.io.File)
+
+public void readNmea(
+java.lang.String
+java.io.File)
+
+public void readProperties(
+java.io.File)
+
+public void readTrack(
+java.io.File)
+
+public boolean requiresCell()
+
+public boolean requiresNetwork()
+
+public boolean requiresSatellite()
+
+public void setAccuracy(
+int)
+
+public void setHasMonetaryCost(
+boolean)
+
+public void setPowerRequirement(
+int)
+
+public void setRepeat(
+boolean)
+
+public void setRequiresCell(
+boolean)
+
+public void setRequiresNetwork(
+boolean)
+
+public void setRequiresSatellite(
+boolean)
+
+public void setSupportsAltitude(
+boolean)
+
+public void setSupportsBearing(
+boolean)
+
+public void setSupportsSpeed(
+boolean)
+
+public void setTrackSpeed(
+float)
+
+public boolean supportsAltitude()
+
+public boolean supportsBearing()
+
+public boolean supportsSpeed()
+
+________________CLASS________________
+
+
+ class com.android.internal.location.Waypoint extends java.lang.Object
+
+----------------FIELDS----------------
+
+public android.location.Location mLocation
+----------------METHODS----------------
+
+public void <init>(
+android.location.Location)
+
+public void <init>(
+java.lang.String
+long
+double
+double
+double)
+
+public double getAltitude()
+
+public float getBearing()
+
+public android.os.Bundle getExtras()
+
+public double getLatitude()
+
+public android.location.Location getLocation()
+
+public double getLongitude()
+
+public float getSpeed()
+
+public long getTime()
+
+public boolean hasAltitude()
+
+public boolean hasBearing()
+
+public boolean hasSpeed()
+
+public void setBearing(
+float)
+
+public void setSpeed(
+float)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GAddress extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int COMPONENT
+
+public static final int FORMATTED_ADDRESS_LINE
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GAddressComponent extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int FEATURE_TYPE
+
+public static final int NAME
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GAppProfile extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int APP_KEY
+
+public static final int APP_NAME
+
+public static final int REQUEST_TYPE
+
+public static final int SEARCH_TERM
+
+public static final int SEARCH_TYPE
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GCell extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int AGE
+
+public static final int CELLID
+
+public static final int LAC
+
+public static final int MCC
+
+public static final int MNC
+
+public static final int PRIMARY_SCRAMBLING_CODE
+
+public static final int RSSI
+
+public static final int TIMING_ADVANCE
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GCellularPlatformProfile extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CARRIER
+
+public static final int HOME_MCC
+
+public static final int HOME_MNC
+
+public static final int IP
+
+public static final int RADIO_TYPE
+
+public static final int RADIO_TYPE_CDMA
+
+public static final int RADIO_TYPE_GPRS
+
+public static final int RADIO_TYPE_WCDMA
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GCellularProfile extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int HISTORICAL_CELLS
+
+public static final int NEIGHBORS
+
+public static final int PREFETCH_MODE
+
+public static final int PRIMARY_CELL
+
+public static final int TIMESTAMP
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GDebugProfile extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ACTUAL_REQUEST
+
+public static final int CACHE_LOCATION
+
+public static final int TRIGGER
+
+public static final int TRIGGER_CELL_AND_WIFI_CHANGE
+
+public static final int TRIGGER_CELL_CHANGE
+
+public static final int TRIGGER_COLLECTION_CONTINUE_BURST
+
+public static final int TRIGGER_COLLECTION_END_BURST
+
+public static final int TRIGGER_COLLECTION_END_BURST_AT_SAME_LOCATION
+
+public static final int TRIGGER_COLLECTION_MOVED_DISTANCE
+
+public static final int TRIGGER_COLLECTION_RESTART_BURST
+
+public static final int TRIGGER_COLLECTION_START_BURST
+
+public static final int TRIGGER_GPS_CHANGE
+
+public static final int TRIGGER_OTHER
+
+public static final int TRIGGER_WIFI_CHANGE
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GDeviceLocation extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CELL
+
+public static final int LOCATION
+
+public static final int WIFI_DEVICE
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GFeature extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ADDRESS
+
+public static final int BOUNDS
+
+public static final int CENTER
+
+public static final int FEATURE_TYPE
+
+public static final int FEATURE_TYPE_ADMINISTRATIVE_AREA
+
+public static final int FEATURE_TYPE_COUNTRY
+
+public static final int FEATURE_TYPE_COUNTRY_CODE
+
+public static final int FEATURE_TYPE_LOCALITY
+
+public static final int FEATURE_TYPE_POST_CODE
+
+public static final int FEATURE_TYPE_PREMISES
+
+public static final int FEATURE_TYPE_SUB_ADMINISTRATIVE_AREA
+
+public static final int FEATURE_TYPE_SUB_LOCALITY
+
+public static final int FEATURE_TYPE_SUB_THOROUGHFARE
+
+public static final int FEATURE_TYPE_THOROUGHFARE
+
+public static final int FEATURE_TYPE_UNKNOWN_TYPE
+
+public static final int NAME
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GGeocodeRequest extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int BOUNDING_BOX
+
+public static final int INCLUDE_BOUNDING_BOXES
+
+public static final int NUM_FEATURE_LIMIT
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GGpsProfile extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int FIX_QUALITY_DGPS_FIX
+
+public static final int FIX_QUALITY_GPS_FIX
+
+public static final int FIX_QUALITY_INVALID
+
+public static final int GPS_FIX_TYPE
+
+public static final int HDOP
+
+public static final int PDOP
+
+public static final int VDOP
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GLatLng extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int LAT_E7
+
+public static final int LNG_E7
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GLocReply extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int PLATFORM_KEY
+
+public static final int REPLY_ELEMENTS
+
+public static final int STATUS
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GLocReplyElement extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int DEVICE_LOCATION
+
+public static final int LOCATION
+
+public static final int STATUS
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GLocRequest extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int APP_PROFILES
+
+public static final int MASF_CLIENT_INFO
+
+public static final int PLATFORM_PROFILE
+
+public static final int REQUEST_ELEMENTS
+
+public static final int USER_PROFILE
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GLocRequestElement extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CELLULAR_PROFILE
+
+public static final int DEBUG_PROFILE
+
+public static final int GEOCODE
+
+public static final int LOCATION
+
+public static final int WIFI_PROFILE
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GLocation extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ACCURACY
+
+public static final int ALTITUDE
+
+public static final int CONFIDENCE
+
+public static final int FEATURE
+
+public static final int GPS_PROFILE
+
+public static final int HEADING
+
+public static final int LAT_LNG
+
+public static final int LOCATION_STRING
+
+public static final int LOCTYPE_CENTROID
+
+public static final int LOCTYPE_GPS
+
+public static final int LOCTYPE_MAPCENTER
+
+public static final int LOCTYPE_TOWER_LOCATION
+
+public static final int LOC_TYPE
+
+public static final int MISC
+
+public static final int OBSOLETE
+
+public static final int SOURCE
+
+public static final int TIMESTAMP
+
+public static final int VELOCITY
+
+public static final int VERTICAL_ACCURACY
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GPlatformProfile extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CELLULAR_PLATFORM_PROFILE
+
+public static final int DISTRIBUTION_CHANNEL
+
+public static final int LOCALE
+
+public static final int PLATFORM
+
+public static final int PLATFORM_KEY
+
+public static final int VERSION
+
+public static final int WIFI_PLATFORM_PROFILE
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GPrefetchMode extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int PREFETCH_MODE_MORE_NEIGHBORS
+
+public static final int PREFETCH_MODE_NO_PREFETCH
+
+public static final int PREFETCH_MODE_REQUESTED_NEIGHBORS_ONLY
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GRectangle extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int LOWER_LEFT
+
+public static final int UPPER_RIGHT
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GUserProfile extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int AUTH_TOKEN
+
+public static final int USER_NAME
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GWifiDevice extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CHANNEL
+
+public static final int MAC
+
+public static final int NOISE
+
+public static final int RSSI
+
+public static final int SSID
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GWifiPlatformProfile extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int RADIO_TYPE
+
+public static final int RADIO_TYPE_WIFI802_11_A
+
+public static final int RADIO_TYPE_WIFI802_11_B
+
+public static final int RADIO_TYPE_WIFI802_11_G
+
+public static final int RADIO_TYPE_WIFI802_11_N
+
+public static final int SCANNER_IP
+
+public static final int SCANNER_MAC
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.GWifiProfile extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int PREFETCH_MODE
+
+public static final int TIMESTAMP
+
+public static final int WIFI_DEVICES
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class com.android.internal.location.protocol.GaddressMessageTypes extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final com.google.common.io.protocol.ProtoBufType GADDRESS
+
+public static final com.google.common.io.protocol.ProtoBufType GADDRESS_COMPONENT
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class com.android.internal.location.protocol.GcellularMessageTypes extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final com.google.common.io.protocol.ProtoBufType GCELL
+
+public static final com.google.common.io.protocol.ProtoBufType GCELLULAR_PROFILE
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class com.android.internal.location.protocol.GdebugprofileMessageTypes extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final com.google.common.io.protocol.ProtoBufType GDEBUG_PROFILE
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class com.android.internal.location.protocol.GfeatureMessageTypes extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final com.google.common.io.protocol.ProtoBufType GFEATURE
+
+public static final com.google.common.io.protocol.ProtoBufType GFEATURE_TYPE
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class com.android.internal.location.protocol.GlatlngMessageTypes extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final com.google.common.io.protocol.ProtoBufType GLAT_LNG
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class com.android.internal.location.protocol.GlocationMessageTypes extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final com.google.common.io.protocol.ProtoBufType GAPP_PROFILE
+
+public static final com.google.common.io.protocol.ProtoBufType GCELLULAR_PLATFORM_PROFILE
+
+public static final com.google.common.io.protocol.ProtoBufType GDEVICE_LOCATION
+
+public static final com.google.common.io.protocol.ProtoBufType GGPS_PROFILE
+
+public static final com.google.common.io.protocol.ProtoBufType GLOCATION
+
+public static final com.google.common.io.protocol.ProtoBufType GPLATFORM_PROFILE
+
+public static final com.google.common.io.protocol.ProtoBufType GPREFETCH_MODE
+
+public static final com.google.common.io.protocol.ProtoBufType GUSER_PROFILE
+
+public static final com.google.common.io.protocol.ProtoBufType GWIFI_PLATFORM_PROFILE
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class com.android.internal.location.protocol.GrectangleMessageTypes extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final com.google.common.io.protocol.ProtoBufType GRECTANGLE
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class com.android.internal.location.protocol.GwifiMessageTypes extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final com.google.common.io.protocol.ProtoBufType GWIFI_DEVICE
+
+public static final com.google.common.io.protocol.ProtoBufType GWIFI_PROFILE
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class com.android.internal.location.protocol.LocserverMessageTypes extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final com.google.common.io.protocol.ProtoBufType GGEOCODE_REQUEST
+
+public static final com.google.common.io.protocol.ProtoBufType GLOC_REPLY
+
+public static final com.google.common.io.protocol.ProtoBufType GLOC_REPLY_ELEMENT
+
+public static final com.google.common.io.protocol.ProtoBufType GLOC_REQUEST
+
+public static final com.google.common.io.protocol.ProtoBufType GLOC_REQUEST_ELEMENT
+
+public static final com.google.common.io.protocol.ProtoBufType RESPONSE_CODES
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.location.protocol.ResponseCodes extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int STATUS_AUTHORIZATION_REJECTED
+
+public static final int STATUS_BLACKLISTED_IP_CELLID
+
+public static final int STATUS_BLACKLISTED_IP_WIFI
+
+public static final int STATUS_INVALID_CELLID_STRING_FORMAT
+
+public static final int STATUS_INVALID_MAC_STRING_FORMAT
+
+public static final int STATUS_INVALID_NUM_REQUESTS
+
+public static final int STATUS_INVALID_OPERATION_CODE
+
+public static final int STATUS_INVALID_REQUEST
+
+public static final int STATUS_INVALID_USERLOCATION_FORMAT
+
+public static final int STATUS_NON_EXISTENT_AP
+
+public static final int STATUS_NON_EXISTENT_CELLID
+
+public static final int STATUS_NON_SUPPORTED_OPERATION
+
+public static final int STATUS_NON_SUPPORTED_OPERATION_IN_UPDATE
+
+public static final int STATUS_NO_CELLIDDATA_FOR_UPDATE
+
+public static final int STATUS_NO_SOURCE_EXISTS
+
+public static final int STATUS_NO_STORE_EXISTS
+
+public static final int STATUS_PLATFORM_KEY_EXPIRED
+
+public static final int STATUS_SIGNAL_TOO_WEAK
+
+public static final int STATUS_STATUS_FAILED
+
+public static final int STATUS_STATUS_FAILED_NO_GEOCODE
+
+public static final int STATUS_STATUS_FAILED_NO_SAVE
+
+public static final int STATUS_STATUS_FAILED_NO_SOURCE
+
+public static final int STATUS_STATUS_SUCCESS
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class com.android.internal.logging.AndroidConfig extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class com.android.internal.logging.AndroidHandler extends java.util.logging.Handler
+
+----------------FIELDS----------------
+
+private static final java.util.logging.Formatter THE_FORMATTER
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static int getAndroidLevel(
+java.util.logging.Level)
+
+public void close()
+
+public void flush()
+
+public void publish(
+java.util.logging.LogRecord)
+
+________________CLASS________________
+
+
+abstract class com.android.internal.os.LoggingPrintStream extends java.io.PrintStream
+
+----------------FIELDS----------------
+
+private final java.lang.StringBuilder builder
+
+private final java.util.Formatter formatter
+----------------METHODS----------------
+
+protected void <init>()
+
+private void flush(
+boolean)
+
+public java.io.PrintStream append(
+char)
+
+public java.io.PrintStream append(
+java.lang.CharSequence)
+
+public java.io.PrintStream append(
+java.lang.CharSequence
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence
+int
+int)
+
+public boolean checkError()
+
+public void close()
+
+public void flush()
+
+public transient java.io.PrintStream format(
+java.lang.String
+java.lang.Object[])
+
+public transient java.io.PrintStream format(
+java.util.Locale
+java.lang.String
+java.lang.Object[])
+
+protected abstract void log(
+java.lang.String)
+
+public void print(
+char)
+
+public void print(
+double)
+
+public void print(
+float)
+
+public void print(
+int)
+
+public void print(
+long)
+
+public void print(
+java.lang.Object)
+
+public void print(
+java.lang.String)
+
+public void print(
+boolean)
+
+public void print(
+char[])
+
+public transient java.io.PrintStream printf(
+java.lang.String
+java.lang.Object[])
+
+public transient java.io.PrintStream printf(
+java.util.Locale
+java.lang.String
+java.lang.Object[])
+
+public void println()
+
+public void println(
+char)
+
+public void println(
+double)
+
+public void println(
+float)
+
+public void println(
+int)
+
+public void println(
+long)
+
+public void println(
+java.lang.Object)
+
+public void println(
+java.lang.String)
+
+public void println(
+boolean)
+
+public void println(
+char[])
+
+protected void setError()
+
+public void write(
+int)
+
+public void write(
+byte[])
+
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+ class com.android.internal.os.AndroidPrintStream extends com.android.internal.os.LoggingPrintStream
+
+----------------FIELDS----------------
+
+private final int priority
+
+private final java.lang.String tag
+----------------METHODS----------------
+
+public void <init>(
+int
+java.lang.String)
+
+protected void log(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =GcWatcher )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/os/BinderInternal; )
+final class com.android.internal.os.BinderInternal$GcWatcher extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/os/BinderInternal$GcWatcher; )
+public class com.android.internal.os.BinderInternal extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/lang/ref/WeakReference<Lcom/android/internal/os/BinderInternal$GcWatcher;>; )
+static java.lang.ref.WeakReference mGcWatcher
+
+static long mLastGcTime
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static void forceBinderGc()
+
+public static void forceGc(
+java.lang.String)
+
+public static final native android.os.IBinder getContextObject()
+
+public static long getLastGcTime()
+
+static final native void handleGc()
+
+public static final native void joinThreadPool()
+
+________________CLASS________________
+
+
+public class com.android.internal.os.HandlerHelper extends android.os.Handler
+
+----------------FIELDS----------------
+
+private android.os.HandlerInterface mTarget
+----------------METHODS----------------
+
+public void <init>(
+android.os.HandlerInterface)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+
+public class com.android.internal.os.HandlerThread extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final java.lang.Object mMonitor
+
+ java.lang.Runnable mSetup
+
+ android.os.Handler mh
+
+ android.os.HandlerInterface mhi
+
+ java.lang.Throwable mtr
+----------------METHODS----------------
+
+public void <init>(
+android.os.HandlerInterface
+java.lang.Runnable
+java.lang.String)
+
+public android.os.Handler getHandler()
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class com.android.internal.os.LoggingPrintStream$1 extends java.io.OutputStream
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class com.android.internal.os.RuntimeInit$1 extends org.apache.harmony.luni.internal.util.TimezoneGetter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.String getId()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =UncaughtHandler )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/os/RuntimeInit; )
+ class com.android.internal.os.RuntimeInit$UncaughtHandler extends java.lang.Object implements java.lang.Thread$UncaughtExceptionHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+com.android.internal.os.RuntimeInit$1)
+
+public void uncaughtException(
+java.lang.Thread
+java.lang.Throwable)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/os/RuntimeInit$UncaughtHandler; )
+public class com.android.internal.os.RuntimeInit extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private static boolean initialized
+
+private static android.os.IBinder mApplicationObject
+
+private static final java.util.concurrent.atomic.AtomicInteger sInReportException
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static final void commonInit()
+
+public static void crash(
+java.lang.String
+java.lang.Throwable)
+
+public static final native void finishInit()
+
+public static native int getQwertyKeyboard()
+@dalvik.annotation.Throws (value =Lcom/android/internal/os/ZygoteInit$MethodAndArgsCaller; )
+private static void invokeStaticMain(
+java.lang.String
+java.lang.String[])
+
+public static final native int isComputerOn()
+
+public static final void main(
+java.lang.String[])
+
+private static byte[] marshallException(
+java.lang.String
+java.lang.Throwable)
+
+public static void reportException(
+java.lang.String
+java.lang.Throwable
+boolean)
+
+public static final void setApplicationObject(
+android.os.IBinder)
+
+public static final native void turnComputerOn()
+
+public static android.server.data.CrashData unmarshallException(
+byte[])
+@dalvik.annotation.Throws (value =Lcom/android/internal/os/ZygoteInit$MethodAndArgsCaller; )
+public static final void zygoteInit(
+java.lang.String[])
+
+public static final native void zygoteInitNative()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/os/ZygoteConnection; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =Arguments )
+ class com.android.internal.os.ZygoteConnection$Arguments extends java.lang.Object
+
+----------------FIELDS----------------
+
+ boolean capabilitiesSpecified
+
+ java.lang.String classpath
+
+ long effectiveCapabilities
+
+ boolean enableDebugger
+
+ int gid
+
+ boolean gidSpecified
+
+ int[] gids
+
+ boolean peerWait
+
+ long permittedCapabilities
+
+ java.lang.String[] remainingArgs
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<[I>; )
+ java.util.ArrayList rlimits
+
+ boolean runtimeInit
+
+ int uid
+
+ boolean uidSpecified
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+ void <init>(
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+private void parseArgs(
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/os/ZygoteConnection$Arguments; )
+ class com.android.internal.os.ZygoteConnection extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int CONNECTION_TIMEOUT_MILLIS
+
+private static final int MAX_ZYGOTE_ARGC
+
+private static final java.lang.String TAG
+
+private static final int[][] intArray2d
+
+private static android.net.LocalSocket sPeerWaitSocket
+
+private final android.net.LocalSocket mSocket
+
+private final java.io.DataOutputStream mSocketOutStream
+
+private final java.io.BufferedReader mSocketReader
+
+private final android.net.Credentials peer
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void <init>(
+android.net.LocalSocket)
+@dalvik.annotation.Throws (value =Lcom/android/internal/os/ZygoteSecurityException; )
+private static void applyCapabilitiesSecurityPolicy(
+com.android.internal.os.ZygoteConnection$Arguments
+android.net.Credentials)
+
+private static void applyDebuggerSecurityPolicy(
+com.android.internal.os.ZygoteConnection$Arguments)
+@dalvik.annotation.Throws (value =Lcom/android/internal/os/ZygoteSecurityException; )
+private static void applyRlimitSecurityPolicy(
+com.android.internal.os.ZygoteConnection$Arguments
+android.net.Credentials)
+@dalvik.annotation.Throws (value =Lcom/android/internal/os/ZygoteSecurityException; )
+private static void applyUidSecurityPolicy(
+com.android.internal.os.ZygoteConnection$Arguments
+android.net.Credentials)
+@dalvik.annotation.Throws (value =Lcom/android/internal/os/ZygoteInit$MethodAndArgsCaller; )
+private void handleChildProc(
+com.android.internal.os.ZygoteConnection$Arguments
+java.io.FileDescriptor[]
+java.io.PrintStream)
+
+private boolean handleParentProc(
+int
+java.io.FileDescriptor[]
+com.android.internal.os.ZygoteConnection$Arguments)
+
+private static void logAndPrintError(
+java.io.PrintStream
+java.lang.String
+java.lang.Throwable)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.lang.String[] readArgumentList()
+
+ void closeSocket()
+
+ java.io.FileDescriptor getFileDesciptor()
+@dalvik.annotation.Throws (value =Lcom/android/internal/os/ZygoteInit$MethodAndArgsCaller; )
+ void run()
+@dalvik.annotation.Throws (value =Lcom/android/internal/os/ZygoteInit$MethodAndArgsCaller; )
+ boolean runOnce()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =MethodAndArgsCaller )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/os/ZygoteInit; )
+public class com.android.internal.os.ZygoteInit$MethodAndArgsCaller extends java.lang.Exception implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private final java.lang.String[] mArgs
+
+private final java.lang.reflect.Method mMethod
+----------------METHODS----------------
+
+public void <init>(
+java.lang.reflect.Method
+java.lang.String[])
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/os/ZygoteInit$MethodAndArgsCaller; )
+public class com.android.internal.os.ZygoteInit extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String ANDROID_SOCKET_ENV
+
+static final int GC_LOOP_COUNT
+
+private static final int LOG_BOOT_PROGRESS_PRELOAD_END
+
+private static final int LOG_BOOT_PROGRESS_PRELOAD_START
+
+private static final java.lang.String PRELOADED_CLASSES
+
+private static final int PRELOAD_GC_THRESHOLD
+
+private static final boolean PRELOAD_RESOURCES
+
+private static final int ROOT_GID
+
+private static final int ROOT_UID
+
+private static final java.lang.String TAG
+
+private static final int UNPRIVILEGED_GID
+
+private static final int UNPRIVILEGED_UID
+
+private static final boolean ZYGOTE_FORK_MODE
+
+private static android.content.res.Resources mResources
+
+private static android.net.LocalServerSocket sServerSocket
+----------------METHODS----------------
+
+private void <init>()
+
+private static com.android.internal.os.ZygoteConnection acceptCommandPeer()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native long capgetPermitted(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native void closeDescriptor(
+java.io.FileDescriptor)
+
+static void closeServerSocket()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native java.io.FileDescriptor createFileDescriptor(
+int)
+
+static void gc()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int getpgid(
+int)
+@dalvik.annotation.Throws (value =Lcom/android/internal/os/ZygoteInit$MethodAndArgsCaller; )
+private static void handleSystemServerProcess(
+com.android.internal.os.ZygoteConnection$Arguments)
+@dalvik.annotation.Throws (value =Lcom/android/internal/os/ZygoteInit$MethodAndArgsCaller; )
+static void invokeStaticMain(
+java.lang.ClassLoader
+java.lang.String
+java.lang.String[])
+
+public static void main(
+java.lang.String[])
+
+private static void preloadClasses()
+
+private static void preloadResources()
+
+private static void registerZygoteSocket()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native void reopenStdio(
+java.io.FileDescriptor
+java.io.FileDescriptor
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Lcom/android/internal/os/ZygoteInit$MethodAndArgsCaller; )
+private static void runForkMode()
+@dalvik.annotation.Throws (value =Lcom/android/internal/os/ZygoteInit$MethodAndArgsCaller; )
+private static void runSelectLoopMode()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int selectReadable(
+java.io.FileDescriptor[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native void setCapabilities(
+long
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native void setCloseOnExec(
+java.io.FileDescriptor
+boolean)
+
+private static void setEffectiveGroup(
+int)
+
+private static void setEffectiveUser(
+int)
+
+static native int setpgid(
+int
+int)
+
+static native int setregid(
+int
+int)
+
+static native int setreuid(
+int
+int)
+@dalvik.annotation.Throws (value =Lcom/android/internal/os/ZygoteInit$MethodAndArgsCaller;Ljava/lang/RuntimeException; )
+private static boolean startSystemServer()
+
+________________CLASS________________
+
+
+ class com.android.internal.os.ZygoteSecurityException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.policy.IPolicy extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract android.view.LayoutInflater makeNewLayoutInflater(
+android.content.Context)
+
+public abstract android.view.Window makeNewWindow(
+android.content.Context)
+
+public abstract android.view.WindowManagerPolicy makeNewWindowManager()
+
+________________CLASS________________
+
+
+public final class com.android.internal.policy.PolicyManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String POLICY_IMPL_CLASS_NAME
+
+private static final com.android.internal.policy.IPolicy sPolicy
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static android.view.LayoutInflater makeNewLayoutInflater(
+android.content.Context)
+
+public static android.view.Window makeNewWindow(
+android.content.Context)
+
+public static android.view.WindowManagerPolicy makeNewWindowManager()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Lcom/android/internal/preference/YesNoPreference$SavedState;>; )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/preference/YesNoPreference$SavedState; )
+final class com.android.internal.preference.YesNoPreference$SavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public com.android.internal.preference.YesNoPreference$SavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public com.android.internal.preference.YesNoPreference$SavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =SavedState )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/preference/YesNoPreference; )
+ class com.android.internal.preference.YesNoPreference$SavedState extends android.preference.Preference$BaseSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Lcom/android/internal/preference/YesNoPreference$SavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+ boolean wasPositiveResult
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.os.Parcel)
+
+public void <init>(
+android.os.Parcelable)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/preference/YesNoPreference$SavedState; )
+public class com.android.internal.preference.YesNoPreference extends android.preference.DialogPreference
+
+----------------FIELDS----------------
+
+private boolean mWasPositiveResult
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+public boolean getValue()
+
+protected void onDialogClosed(
+boolean)
+
+protected java.lang.Object onGetDefaultValue(
+android.content.res.TypedArray
+int)
+
+protected void onRestoreInstanceState(
+android.os.Parcelable)
+
+protected android.os.Parcelable onSaveInstanceState()
+
+protected void onSetInitialValue(
+boolean
+java.lang.Object)
+
+public void setValue(
+boolean)
+
+public boolean shouldDisableDependents()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =Favorites )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/provider/Settings; )
+public final class com.android.internal.provider.Settings$Favorites extends java.lang.Object implements android.provider.BaseColumns
+
+----------------FIELDS----------------
+
+public static final java.lang.String CELLX
+
+public static final java.lang.String CELLY
+
+public static final java.lang.String CONTAINER
+
+public static final int CONTAINER_DESKTOP
+
+public static final android.net.Uri CONTENT_URI
+
+public static final android.net.Uri CONTENT_URI_NO_NOTIFICATION
+
+public static final java.lang.String ICON
+
+public static final java.lang.String ICON_PACKAGE
+
+public static final java.lang.String ICON_RESOURCE
+
+public static final java.lang.String ICON_TYPE
+
+public static final int ICON_TYPE_BITMAP
+
+public static final int ICON_TYPE_RESOURCE
+
+public static final java.lang.String ID
+
+public static final java.lang.String INTENT
+
+public static final java.lang.String IS_SHORTCUT
+
+public static final java.lang.String ITEM_TYPE
+
+public static final int ITEM_TYPE_APPLICATION
+
+public static final int ITEM_TYPE_SHORTCUT
+
+public static final int ITEM_TYPE_USER_FOLDER
+
+public static final int ITEM_TYPE_WIDGET_CLOCK
+
+public static final int ITEM_TYPE_WIDGET_PHOTO_FRAME
+
+public static final int ITEM_TYPE_WIDGET_SEARCH
+
+public static final java.lang.String SCREEN
+
+public static final java.lang.String SPANX
+
+public static final java.lang.String SPANY
+
+public static final java.lang.String TITLE
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static android.net.Uri getContentUri(
+long
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/provider/Settings$Favorites; )
+public class com.android.internal.provider.Settings extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.ATParseEx extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.ATResponseParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.String line
+
+private int next
+
+private int tokEnd
+
+private int tokStart
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+private void nextTok()
+
+private void skipPrefix()
+
+private char skipWhiteSpace(
+char)
+
+public boolean hasMore()
+
+public boolean nextBoolean()
+
+public int nextInt()
+
+public java.lang.String nextString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/Call; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/Call$State;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =State )
+public final class com.android.internal.telephony.Call$State extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.Call$State[] $VALUES
+
+public static final com.android.internal.telephony.Call$State ACTIVE
+
+public static final com.android.internal.telephony.Call$State ALERTING
+
+public static final com.android.internal.telephony.Call$State DIALING
+
+public static final com.android.internal.telephony.Call$State DISCONNECTED
+
+public static final com.android.internal.telephony.Call$State HOLDING
+
+public static final com.android.internal.telephony.Call$State IDLE
+
+public static final com.android.internal.telephony.Call$State INCOMING
+
+public static final com.android.internal.telephony.Call$State WAITING
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.Call$State valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.Call$State[] values()
+
+public boolean isAlive()
+
+public boolean isDialing()
+
+public boolean isRinging()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/Call$State; )
+public abstract class com.android.internal.telephony.Call extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Lcom/android/internal/telephony/Connection;>; )
+public abstract java.util.List getConnections()
+
+public long getEarliestConnectTime()
+
+public com.android.internal.telephony.Connection getEarliestConnection()
+
+public long getEarliestCreateTime()
+
+public abstract com.android.internal.telephony.Phone getPhone()
+
+public abstract com.android.internal.telephony.Call$State getState()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public abstract void hangup()
+
+public boolean hasConnection(
+com.android.internal.telephony.Connection)
+
+public boolean hasConnections()
+
+public boolean isDialingOrAlerting()
+
+public boolean isIdle()
+
+public abstract boolean isMultiparty()
+
+public boolean isRinging()
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.CallStateException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.CallerInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String PRIVATE_NUMBER
+
+private static final java.lang.String TAG
+
+public static final java.lang.String UNKNOWN_NUMBER
+
+private static boolean sSkipVmCheck
+
+public android.graphics.drawable.Drawable cachedPhoto
+
+public android.net.Uri contactRefUri
+
+public android.net.Uri contactRingtoneUri
+
+public boolean isCachedPhotoCurrent
+
+public java.lang.String name
+
+public boolean needUpdate
+
+public java.lang.String numberLabel
+
+public int numberType
+
+public long person_id
+
+public java.lang.String phoneLabel
+
+public java.lang.String phoneNumber
+
+public int photoResource
+
+public boolean shouldSendToVoicemail
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.lang.String getCallerId(
+android.content.Context
+java.lang.String)
+
+public static com.android.internal.telephony.CallerInfo getCallerInfo(
+android.content.Context
+android.net.Uri)
+
+public static com.android.internal.telephony.CallerInfo getCallerInfo(
+android.content.Context
+android.net.Uri
+android.database.Cursor)
+
+public static com.android.internal.telephony.CallerInfo getCallerInfo(
+android.content.Context
+java.lang.String)
+
+private static java.lang.String normalize(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/CallerInfoAsyncQuery; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class com.android.internal.telephony.CallerInfoAsyncQuery$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4 name =CallerInfoWorkerHandler )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler; )
+public class com.android.internal.telephony.CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler$CallerInfoWorkerHandler extends android.content.AsyncQueryHandler$WorkerHandler
+
+----------------FIELDS----------------
+
+final com.android.internal.telephony.CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler this$1
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.telephony.CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler
+android.os.Looper)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =CallerInfoAsyncQueryHandler )
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler$CallerInfoWorkerHandler; )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/CallerInfoAsyncQuery; )
+ class com.android.internal.telephony.CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler extends android.content.AsyncQueryHandler
+
+----------------FIELDS----------------
+
+private com.android.internal.telephony.CallerInfo mCallerInfo
+
+private android.content.Context mQueryContext
+
+private android.net.Uri mQueryUri
+
+final com.android.internal.telephony.CallerInfoAsyncQuery this$0
+----------------METHODS----------------
+
+private void <init>(
+com.android.internal.telephony.CallerInfoAsyncQuery
+android.content.Context)
+
+ void <init>(
+com.android.internal.telephony.CallerInfoAsyncQuery
+android.content.Context
+com.android.internal.telephony.CallerInfoAsyncQuery$1)
+
+static android.content.Context access$302(
+com.android.internal.telephony.CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler
+android.content.Context)
+
+static android.net.Uri access$402(
+com.android.internal.telephony.CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler
+android.net.Uri)
+
+static com.android.internal.telephony.CallerInfo access$502(
+com.android.internal.telephony.CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler
+com.android.internal.telephony.CallerInfo)
+
+protected android.os.Handler createHandler(
+android.os.Looper)
+
+protected void onQueryComplete(
+int
+java.lang.Object
+android.database.Cursor)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =CookieWrapper )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/CallerInfoAsyncQuery; )
+final class com.android.internal.telephony.CallerInfoAsyncQuery$CookieWrapper extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.Object cookie
+
+public int event
+
+public com.android.internal.telephony.CallerInfoAsyncQuery$OnQueryCompleteListener listener
+
+public java.lang.String number
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+com.android.internal.telephony.CallerInfoAsyncQuery$1)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnQueryCompleteListener )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/CallerInfoAsyncQuery; )
+public abstract interface class com.android.internal.telephony.CallerInfoAsyncQuery$OnQueryCompleteListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onQueryComplete(
+int
+java.lang.Object
+com.android.internal.telephony.CallerInfo)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/CallerInfoAsyncQuery; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =QueryPoolException )
+public class com.android.internal.telephony.CallerInfoAsyncQuery$QueryPoolException extends android.database.SQLException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/CallerInfoAsyncQuery$1;Lcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;Lcom/android/internal/telephony/CallerInfoAsyncQuery$QueryPoolException;Lcom/android/internal/telephony/CallerInfoAsyncQuery$CookieWrapper;Lcom/android/internal/telephony/CallerInfoAsyncQuery$OnQueryCompleteListener; )
+public class com.android.internal.telephony.CallerInfoAsyncQuery extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean DBG
+
+private static final int EVENT_ADD_LISTENER
+
+private static final int EVENT_EMERGENCY_NUMBER
+
+private static final int EVENT_END_OF_QUEUE
+
+private static final int EVENT_NEW_QUERY
+
+private static final int EVENT_VOICEMAIL_NUMBER
+
+private static final java.lang.String LOG_TAG
+
+private static boolean sSkipVmCheck
+
+private com.android.internal.telephony.CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler mHandler
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+static void access$000(
+com.android.internal.telephony.CallerInfoAsyncQuery)
+
+private void allocate(
+android.content.Context
+android.net.Uri)
+
+private static void log(
+java.lang.String)
+
+private void release()
+
+public static com.android.internal.telephony.CallerInfoAsyncQuery startQuery(
+int
+android.content.Context
+android.net.Uri
+com.android.internal.telephony.CallerInfoAsyncQuery$OnQueryCompleteListener
+java.lang.Object)
+
+public static com.android.internal.telephony.CallerInfoAsyncQuery startQuery(
+int
+android.content.Context
+java.lang.String
+com.android.internal.telephony.CallerInfoAsyncQuery$OnQueryCompleteListener
+java.lang.Object)
+
+public void addQueryListener(
+int
+com.android.internal.telephony.CallerInfoAsyncQuery$OnQueryCompleteListener
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/Connection; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/Connection$DisconnectCause;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =DisconnectCause )
+public final class com.android.internal.telephony.Connection$DisconnectCause extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.Connection$DisconnectCause[] $VALUES
+
+public static final com.android.internal.telephony.Connection$DisconnectCause BUSY
+
+public static final com.android.internal.telephony.Connection$DisconnectCause CALL_BARRED
+
+public static final com.android.internal.telephony.Connection$DisconnectCause CONGESTION
+
+public static final com.android.internal.telephony.Connection$DisconnectCause FDN_BLOCKED
+
+public static final com.android.internal.telephony.Connection$DisconnectCause INCOMING_MISSED
+
+public static final com.android.internal.telephony.Connection$DisconnectCause INCOMING_REJECTED
+
+public static final com.android.internal.telephony.Connection$DisconnectCause INVALID_NUMBER
+
+public static final com.android.internal.telephony.Connection$DisconnectCause LIMIT_EXCEEDED
+
+public static final com.android.internal.telephony.Connection$DisconnectCause LOCAL
+
+public static final com.android.internal.telephony.Connection$DisconnectCause LOST_SIGNAL
+
+public static final com.android.internal.telephony.Connection$DisconnectCause MMI
+
+public static final com.android.internal.telephony.Connection$DisconnectCause NORMAL
+
+public static final com.android.internal.telephony.Connection$DisconnectCause NOT_DISCONNECTED
+
+public static final com.android.internal.telephony.Connection$DisconnectCause OUT_OF_SERVICE
+
+public static final com.android.internal.telephony.Connection$DisconnectCause POWER_OFF
+
+public static final com.android.internal.telephony.Connection$DisconnectCause SIM_ERROR
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.Connection$DisconnectCause valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.Connection$DisconnectCause[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/Connection; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =PostDialState )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/Connection$PostDialState;>; )
+public final class com.android.internal.telephony.Connection$PostDialState extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.Connection$PostDialState[] $VALUES
+
+public static final com.android.internal.telephony.Connection$PostDialState CANCELLED
+
+public static final com.android.internal.telephony.Connection$PostDialState COMPLETE
+
+public static final com.android.internal.telephony.Connection$PostDialState NOT_STARTED
+
+public static final com.android.internal.telephony.Connection$PostDialState STARTED
+
+public static final com.android.internal.telephony.Connection$PostDialState WAIT
+
+public static final com.android.internal.telephony.Connection$PostDialState WILD
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.Connection$PostDialState valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.Connection$PostDialState[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/Connection$PostDialState;Lcom/android/internal/telephony/Connection$DisconnectCause; )
+public abstract class com.android.internal.telephony.Connection extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.lang.Object userData
+----------------METHODS----------------
+
+public void <init>()
+
+public abstract void cancelPostDial()
+
+public abstract java.lang.String getAddress()
+
+public abstract com.android.internal.telephony.Call getCall()
+
+public abstract long getConnectTime()
+
+public abstract long getCreateTime()
+
+public abstract com.android.internal.telephony.Connection$DisconnectCause getDisconnectCause()
+
+public abstract long getDisconnectTime()
+
+public abstract long getDurationMillis()
+
+public abstract long getHoldDurationMillis()
+
+public abstract com.android.internal.telephony.Connection$PostDialState getPostDialState()
+
+public abstract java.lang.String getRemainingPostDialString()
+
+public com.android.internal.telephony.Call$State getState()
+
+public java.lang.Object getUserData()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public abstract void hangup()
+
+public boolean isAlive()
+
+public abstract boolean isIncoming()
+
+public boolean isRinging()
+
+public abstract void proceedAfterWaitChar()
+
+public abstract void proceedAfterWildChar(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public abstract void separate()
+
+public void setUserData(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/DefaultPhoneNotifier; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class com.android.internal.telephony.DefaultPhoneNotifier$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$com$android$internal$telephony$Phone$DataActivityState
+
+static final int[] $SwitchMap$com$android$internal$telephony$Phone$DataState
+
+static final int[] $SwitchMap$com$android$internal$telephony$Phone$State
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.telephony.PhoneNotifier extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void notifyCallForwardingChanged(
+com.android.internal.telephony.Phone)
+
+public abstract void notifyCellLocation(
+com.android.internal.telephony.Phone)
+
+public abstract void notifyDataActivity(
+com.android.internal.telephony.Phone)
+
+public abstract void notifyDataConnection(
+com.android.internal.telephony.Phone
+java.lang.String)
+
+public abstract void notifyDataConnectionFailed(
+com.android.internal.telephony.Phone
+java.lang.String)
+
+public abstract void notifyMessageWaitingChanged(
+com.android.internal.telephony.Phone)
+
+public abstract void notifyPhoneState(
+com.android.internal.telephony.Phone)
+
+public abstract void notifyServiceState(
+com.android.internal.telephony.Phone)
+
+public abstract void notifySignalStrength(
+com.android.internal.telephony.Phone)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/DefaultPhoneNotifier$1; )
+public class com.android.internal.telephony.DefaultPhoneNotifier extends java.lang.Object implements com.android.internal.telephony.PhoneNotifier
+
+----------------FIELDS----------------
+
+private static final boolean DBG
+
+static final java.lang.String LOG_TAG
+
+private com.android.internal.telephony.ITelephonyRegistry mRegistry
+----------------METHODS----------------
+
+ void <init>()
+
+public static int convertCallState(
+com.android.internal.telephony.Phone$State)
+
+public static com.android.internal.telephony.Phone$State convertCallState(
+int)
+
+public static int convertDataActivityState(
+com.android.internal.telephony.Phone$DataActivityState)
+
+public static com.android.internal.telephony.Phone$DataActivityState convertDataActivityState(
+int)
+
+public static int convertDataState(
+com.android.internal.telephony.Phone$DataState)
+
+public static com.android.internal.telephony.Phone$DataState convertDataState(
+int)
+
+private void log(
+java.lang.String)
+
+public void notifyCallForwardingChanged(
+com.android.internal.telephony.Phone)
+
+public void notifyCellLocation(
+com.android.internal.telephony.Phone)
+
+public void notifyDataActivity(
+com.android.internal.telephony.Phone)
+
+public void notifyDataConnection(
+com.android.internal.telephony.Phone
+java.lang.String)
+
+public void notifyDataConnectionFailed(
+com.android.internal.telephony.Phone
+java.lang.String)
+
+public void notifyMessageWaitingChanged(
+com.android.internal.telephony.Phone)
+
+public void notifyPhoneState(
+com.android.internal.telephony.Phone)
+
+public void notifyServiceState(
+com.android.internal.telephony.Phone)
+
+public void notifySignalStrength(
+com.android.internal.telephony.Phone)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/IPhoneStateListener$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class com.android.internal.telephony.IPhoneStateListener$Stub$Proxy extends java.lang.Object implements com.android.internal.telephony.IPhoneStateListener
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onCallForwardingIndicatorChanged(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onCallStateChanged(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onCellLocationChanged(
+android.os.Bundle)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onDataActivity(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onDataConnectionStateChanged(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onMessageWaitingIndicatorChanged(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onServiceStateChanged(
+android.telephony.ServiceState)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void onSignalStrengthChanged(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/IPhoneSubInfo$Stub; )
+public abstract interface class com.android.internal.telephony.IPhoneSubInfo extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getDeviceId()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getDeviceSvn()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getLine1AlphaTag()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getLine1Number()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getSimSerialNumber()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getSubscriberId()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getVoiceMailAlphaTag()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getVoiceMailNumber()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/IPhoneSubInfo$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class com.android.internal.telephony.IPhoneSubInfo$Stub$Proxy extends java.lang.Object implements com.android.internal.telephony.IPhoneSubInfo
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getDeviceId()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getDeviceSvn()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getLine1AlphaTag()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getLine1Number()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getSimSerialNumber()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getSubscriberId()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getVoiceMailAlphaTag()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getVoiceMailNumber()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/IPhoneSubInfo; )
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class com.android.internal.telephony.IPhoneSubInfo$Stub extends android.os.Binder implements com.android.internal.telephony.IPhoneSubInfo
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_getDeviceId
+
+static final int TRANSACTION_getDeviceSvn
+
+static final int TRANSACTION_getLine1AlphaTag
+
+static final int TRANSACTION_getLine1Number
+
+static final int TRANSACTION_getSimSerialNumber
+
+static final int TRANSACTION_getSubscriberId
+
+static final int TRANSACTION_getVoiceMailAlphaTag
+
+static final int TRANSACTION_getVoiceMailNumber
+----------------METHODS----------------
+
+public void <init>()
+
+public static com.android.internal.telephony.IPhoneSubInfo asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/ITelephony$Stub; )
+public abstract interface class com.android.internal.telephony.ITelephony extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void call(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void cancelMissedCallsNotification()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void dial(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int disableApnType(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean disableDataConnectivity()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void disableLocationUpdates()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int enableApnType(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean enableDataConnectivity()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void enableLocationUpdates()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean endCall()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getCallState()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract android.os.Bundle getCellLocation()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getDataActivity()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int getDataState()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean handlePinMmi(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean isDataConnectivityPossible()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean isIdle()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean isOffhook()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean isRadioOn()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean isRinging()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean isSimPinEnabled()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean setRadio(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean supplyPin(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void toggleRadioOnOff()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void updateServiceLocation()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/ITelephony$Stub; )
+ class com.android.internal.telephony.ITelephony$Stub$Proxy extends java.lang.Object implements com.android.internal.telephony.ITelephony
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void call(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void cancelMissedCallsNotification()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void dial(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int disableApnType(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean disableDataConnectivity()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void disableLocationUpdates()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int enableApnType(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean enableDataConnectivity()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void enableLocationUpdates()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean endCall()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getCallState()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public android.os.Bundle getCellLocation()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getDataActivity()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int getDataState()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean handlePinMmi(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean isDataConnectivityPossible()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean isIdle()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean isOffhook()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean isRadioOn()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean isRinging()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean isSimPinEnabled()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean setRadio(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean supplyPin(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void toggleRadioOnOff()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void updateServiceLocation()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/ITelephony$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/ITelephony; )
+public abstract class com.android.internal.telephony.ITelephony$Stub extends android.os.Binder implements com.android.internal.telephony.ITelephony
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_call
+
+static final int TRANSACTION_cancelMissedCallsNotification
+
+static final int TRANSACTION_dial
+
+static final int TRANSACTION_disableApnType
+
+static final int TRANSACTION_disableDataConnectivity
+
+static final int TRANSACTION_disableLocationUpdates
+
+static final int TRANSACTION_enableApnType
+
+static final int TRANSACTION_enableDataConnectivity
+
+static final int TRANSACTION_enableLocationUpdates
+
+static final int TRANSACTION_endCall
+
+static final int TRANSACTION_getCallState
+
+static final int TRANSACTION_getCellLocation
+
+static final int TRANSACTION_getDataActivity
+
+static final int TRANSACTION_getDataState
+
+static final int TRANSACTION_handlePinMmi
+
+static final int TRANSACTION_isDataConnectivityPossible
+
+static final int TRANSACTION_isIdle
+
+static final int TRANSACTION_isOffhook
+
+static final int TRANSACTION_isRadioOn
+
+static final int TRANSACTION_isRinging
+
+static final int TRANSACTION_isSimPinEnabled
+
+static final int TRANSACTION_setRadio
+
+static final int TRANSACTION_supplyPin
+
+static final int TRANSACTION_toggleRadioOnOff
+
+static final int TRANSACTION_updateServiceLocation
+----------------METHODS----------------
+
+public void <init>()
+
+public static com.android.internal.telephony.ITelephony asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/ITelephonyRegistry$Stub; )
+public abstract interface class com.android.internal.telephony.ITelephonyRegistry extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void listen(
+java.lang.String
+com.android.internal.telephony.IPhoneStateListener
+int
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void notifyCallForwardingChanged(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void notifyCallState(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void notifyCellLocation(
+android.os.Bundle)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void notifyDataActivity(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void notifyDataConnection(
+int
+boolean
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void notifyDataConnectionFailed(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void notifyMessageWaitingChanged(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void notifyServiceState(
+android.telephony.ServiceState)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void notifySignalStrength(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/ITelephonyRegistry$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class com.android.internal.telephony.ITelephonyRegistry$Stub$Proxy extends java.lang.Object implements com.android.internal.telephony.ITelephonyRegistry
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void listen(
+java.lang.String
+com.android.internal.telephony.IPhoneStateListener
+int
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void notifyCallForwardingChanged(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void notifyCallState(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void notifyCellLocation(
+android.os.Bundle)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void notifyDataActivity(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void notifyDataConnection(
+int
+boolean
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void notifyDataConnectionFailed(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void notifyMessageWaitingChanged(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void notifyServiceState(
+android.telephony.ServiceState)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void notifySignalStrength(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/ITelephonyRegistry; )
+public abstract class com.android.internal.telephony.ITelephonyRegistry$Stub extends android.os.Binder implements com.android.internal.telephony.ITelephonyRegistry
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_listen
+
+static final int TRANSACTION_notifyCallForwardingChanged
+
+static final int TRANSACTION_notifyCallState
+
+static final int TRANSACTION_notifyCellLocation
+
+static final int TRANSACTION_notifyDataActivity
+
+static final int TRANSACTION_notifyDataConnection
+
+static final int TRANSACTION_notifyDataConnectionFailed
+
+static final int TRANSACTION_notifyMessageWaitingChanged
+
+static final int TRANSACTION_notifyServiceState
+
+static final int TRANSACTION_notifySignalStrength
+----------------METHODS----------------
+
+public void <init>()
+
+public static com.android.internal.telephony.ITelephonyRegistry asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =State )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/MmiCode; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/MmiCode$State;>; )
+public final class com.android.internal.telephony.MmiCode$State extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.MmiCode$State[] $VALUES
+
+public static final com.android.internal.telephony.MmiCode$State CANCELLED
+
+public static final com.android.internal.telephony.MmiCode$State COMPLETE
+
+public static final com.android.internal.telephony.MmiCode$State FAILED
+
+public static final com.android.internal.telephony.MmiCode$State PENDING
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.MmiCode$State valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.MmiCode$State[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/MmiCode$State; )
+public abstract interface class com.android.internal.telephony.MmiCode extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void cancel()
+
+public abstract java.lang.CharSequence getMessage()
+
+public abstract com.android.internal.telephony.MmiCode$State getState()
+
+public abstract boolean isCancelable()
+
+public abstract boolean isUssdRequest()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/Phone$DataActivityState;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =DataActivityState )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/Phone; )
+public final class com.android.internal.telephony.Phone$DataActivityState extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.Phone$DataActivityState[] $VALUES
+
+public static final com.android.internal.telephony.Phone$DataActivityState DATAIN
+
+public static final com.android.internal.telephony.Phone$DataActivityState DATAINANDOUT
+
+public static final com.android.internal.telephony.Phone$DataActivityState DATAOUT
+
+public static final com.android.internal.telephony.Phone$DataActivityState NONE
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.Phone$DataActivityState valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.Phone$DataActivityState[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =DataState )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/Phone; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/Phone$DataState;>; )
+public final class com.android.internal.telephony.Phone$DataState extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.Phone$DataState[] $VALUES
+
+public static final com.android.internal.telephony.Phone$DataState CONNECTED
+
+public static final com.android.internal.telephony.Phone$DataState CONNECTING
+
+public static final com.android.internal.telephony.Phone$DataState DISCONNECTED
+
+public static final com.android.internal.telephony.Phone$DataState SUSPENDED
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.Phone$DataState valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.Phone$DataState[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/Phone$State;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =State )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/Phone; )
+public final class com.android.internal.telephony.Phone$State extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.Phone$State[] $VALUES
+
+public static final com.android.internal.telephony.Phone$State IDLE
+
+public static final com.android.internal.telephony.Phone$State OFFHOOK
+
+public static final com.android.internal.telephony.Phone$State RINGING
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.Phone$State valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.Phone$State[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/Phone$SuppService;>; )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/Phone; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =SuppService )
+public final class com.android.internal.telephony.Phone$SuppService extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.Phone$SuppService[] $VALUES
+
+public static final com.android.internal.telephony.Phone$SuppService CONFERENCE
+
+public static final com.android.internal.telephony.Phone$SuppService HANGUP
+
+public static final com.android.internal.telephony.Phone$SuppService REJECT
+
+public static final com.android.internal.telephony.Phone$SuppService SEPARATE
+
+public static final com.android.internal.telephony.Phone$SuppService SWITCH
+
+public static final com.android.internal.telephony.Phone$SuppService TRANSFER
+
+public static final com.android.internal.telephony.Phone$SuppService UNKNOWN
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.Phone$SuppService valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.Phone$SuppService[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/Phone$SuppService;Lcom/android/internal/telephony/Phone$DataActivityState;Lcom/android/internal/telephony/Phone$DataState;Lcom/android/internal/telephony/Phone$State; )
+public abstract interface class com.android.internal.telephony.Phone extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int APN_ALREADY_ACTIVE
+
+public static final int APN_REQUEST_FAILED
+
+public static final int APN_REQUEST_STARTED
+
+public static final java.lang.String APN_TYPE_ALL
+
+public static final java.lang.String APN_TYPE_DEFAULT
+
+public static final java.lang.String APN_TYPE_MMS
+
+public static final int APN_TYPE_NOT_AVAILABLE
+
+public static final int BM_AUS2_BAND
+
+public static final int BM_AUS_BAND
+
+public static final int BM_BOUNDARY
+
+public static final int BM_EURO_BAND
+
+public static final int BM_JPN_BAND
+
+public static final int BM_UNSPECIFIED
+
+public static final int BM_US_BAND
+
+public static final java.lang.String DATA_APN_KEY
+
+public static final java.lang.String DATA_APN_TYPE_KEY
+
+public static final java.lang.String DATA_IFACE_NAME_KEY
+
+public static final boolean DEBUG_PHONE
+
+public static final java.lang.String FAILURE_REASON_KEY
+
+public static final java.lang.String FEATURE_ENABLE_MMS
+
+public static final java.lang.String NETWORK_UNAVAILABLE_KEY
+
+public static final int NT_AUTO_TYPE
+
+public static final int NT_GSM_TYPE
+
+public static final int NT_WCDMA_TYPE
+
+public static final java.lang.String PHONE_NAME_KEY
+
+public static final java.lang.String REASON_APN_CHANGED
+
+public static final java.lang.String REASON_APN_SWITCHED
+
+public static final java.lang.String REASON_DATA_DISABLED
+
+public static final java.lang.String REASON_DATA_ENABLED
+
+public static final java.lang.String REASON_GPRS_DETACHED
+
+public static final java.lang.String REASON_RADIO_TURNED_OFF
+
+public static final java.lang.String REASON_RESTORE_DEFAULT_APN
+
+public static final java.lang.String REASON_ROAMING_OFF
+
+public static final java.lang.String REASON_ROAMING_ON
+
+public static final java.lang.String REASON_VOICE_CALL_ENDED
+
+public static final java.lang.String REASON_VOICE_CALL_STARTED
+
+public static final java.lang.String STATE_CHANGE_REASON_KEY
+
+public static final java.lang.String STATE_KEY
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public abstract void acceptCall()
+
+public abstract boolean canConference()
+
+public abstract boolean canTransfer()
+
+public abstract void clearDisconnected()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public abstract void conference()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public abstract com.android.internal.telephony.Connection dial(
+java.lang.String)
+
+public abstract int disableApnType(
+java.lang.String)
+
+public abstract boolean disableDataConnectivity()
+
+public abstract void disableLocationUpdates()
+
+public abstract int enableApnType(
+java.lang.String)
+
+public abstract boolean enableDataConnectivity()
+
+public abstract void enableLocationUpdates()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public abstract void explicitCallTransfer()
+
+public abstract java.lang.String getActiveApn()
+
+public abstract java.lang.String[] getActiveApnTypes()
+
+public abstract void getAvailableNetworks(
+android.os.Message)
+
+public abstract com.android.internal.telephony.Call getBackgroundCall()
+
+public abstract boolean getCallForwardingIndicator()
+
+public abstract void getCallForwardingOption(
+int
+android.os.Message)
+
+public abstract void getCallWaiting(
+android.os.Message)
+
+public abstract android.telephony.CellLocation getCellLocation()
+
+public abstract android.content.Context getContext()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Lcom/android/internal/telephony/gsm/PdpConnection;>; )
+public abstract java.util.List getCurrentPdpList()
+
+public abstract com.android.internal.telephony.Phone$DataActivityState getDataActivityState()
+
+public abstract com.android.internal.telephony.Phone$DataState getDataConnectionState()
+
+public abstract boolean getDataRoamingEnabled()
+
+public abstract java.lang.String getDeviceId()
+
+public abstract java.lang.String getDeviceSvn()
+
+public abstract java.lang.String[] getDnsServers(
+java.lang.String)
+
+public abstract com.android.internal.telephony.Call getForegroundCall()
+
+public abstract java.lang.String getGateway(
+java.lang.String)
+
+public abstract java.lang.String getInterfaceName(
+java.lang.String)
+
+public abstract java.lang.String getIpAddress(
+java.lang.String)
+
+public abstract java.lang.String getLine1AlphaTag()
+
+public abstract java.lang.String getLine1Number()
+
+public abstract boolean getMessageWaitingIndicator()
+
+public abstract boolean getMute()
+
+public abstract void getNeighboringCids(
+android.os.Message)
+
+public abstract void getOutgoingCallerIdDisplay(
+android.os.Message)
+
+public abstract void getPdpContextList(
+android.os.Message)
+@dalvik.annotation.Signature (value =()Ljava/util/List<+Lcom/android/internal/telephony/MmiCode;>; )
+public abstract java.util.List getPendingMmiCodes()
+
+public abstract java.lang.String getPhoneName()
+
+public abstract void getPreferredNetworkType(
+android.os.Message)
+
+public abstract com.android.internal.telephony.Call getRingingCall()
+
+public abstract android.telephony.ServiceState getServiceState()
+
+public abstract int getSignalStrengthASU()
+
+public abstract com.android.internal.telephony.SimCard getSimCard()
+
+public abstract boolean getSimRecordsLoaded()
+
+public abstract java.lang.String getSimSerialNumber()
+
+public abstract com.android.internal.telephony.test.SimulatedRadioControl getSimulatedRadioControl()
+
+public abstract com.android.internal.telephony.Phone$State getState()
+
+public abstract java.lang.String getSubscriberId()
+
+public abstract boolean getUnitTestMode()
+
+public abstract java.lang.String getVoiceMailAlphaTag()
+
+public abstract java.lang.String getVoiceMailNumber()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public abstract boolean handleInCallMmiCommands(
+java.lang.String)
+
+public abstract boolean handlePinMmi(
+java.lang.String)
+
+public abstract void invokeOemRilRequestRaw(
+byte[]
+android.os.Message)
+
+public abstract void invokeOemRilRequestStrings(
+java.lang.String[]
+android.os.Message)
+
+public abstract boolean isDataConnectivityPossible()
+
+public abstract void queryAvailableBandMode(
+android.os.Message)
+
+public abstract void registerForDisconnect(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForIncomingRing(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForMmiComplete(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForMmiInitiate(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForNewRingingConnection(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForPhoneStateChanged(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForServiceStateChanged(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForSuppServiceFailed(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForSuppServiceNotification(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForUnknownConnection(
+android.os.Handler
+int
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public abstract void rejectCall()
+
+public abstract void selectNetworkManually(
+com.android.internal.telephony.gsm.NetworkInfo
+android.os.Message)
+
+public abstract void sendDtmf(
+char)
+
+public abstract void sendUssdResponse(
+java.lang.String)
+
+public abstract void setBandMode(
+int
+android.os.Message)
+
+public abstract void setCallForwardingOption(
+int
+int
+java.lang.String
+int
+android.os.Message)
+
+public abstract void setCallWaiting(
+boolean
+android.os.Message)
+
+public abstract void setDataRoamingEnabled(
+boolean)
+
+public abstract void setLine1Number(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public abstract void setMute(
+boolean)
+
+public abstract void setNetworkSelectionModeAutomatic(
+android.os.Message)
+
+public abstract void setOnPostDialCharacter(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void setOutgoingCallerIdDisplay(
+int
+android.os.Message)
+
+public abstract void setPreferredNetworkType(
+int
+android.os.Message)
+
+public abstract void setRadioPower(
+boolean)
+
+public abstract void setUnitTestMode(
+boolean)
+
+public abstract void setVoiceMailNumber(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public abstract void startDtmf(
+char)
+
+public abstract void stopDtmf()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public abstract void switchHoldingAndActive()
+
+public abstract void unregisterForDisconnect(
+android.os.Handler)
+
+public abstract void unregisterForIncomingRing(
+android.os.Handler)
+
+public abstract void unregisterForMmiComplete(
+android.os.Handler)
+
+public abstract void unregisterForMmiInitiate(
+android.os.Handler)
+
+public abstract void unregisterForNewRingingConnection(
+android.os.Handler)
+
+public abstract void unregisterForPhoneStateChanged(
+android.os.Handler)
+
+public abstract void unregisterForServiceStateChanged(
+android.os.Handler)
+
+public abstract void unregisterForSuppServiceFailed(
+android.os.Handler)
+
+public abstract void unregisterForSuppServiceNotification(
+android.os.Handler)
+
+public abstract void unregisterForUnknownConnection(
+android.os.Handler)
+
+public abstract void updateServiceLocation(
+android.os.Message)
+
+________________CLASS________________
+
+
+public abstract class com.android.internal.telephony.PhoneBase extends java.lang.Object implements com.android.internal.telephony.Phone
+
+----------------FIELDS----------------
+
+private static final java.lang.String LOG_TAG
+
+protected android.content.Context mContext
+
+protected final android.os.RegistrantList mDisconnectRegistrants
+
+protected final android.os.RegistrantList mIncomingRingRegistrants
+
+protected android.os.Looper mLooper
+
+protected final android.os.RegistrantList mMmiCompleteRegistrants
+
+protected final android.os.RegistrantList mMmiRegistrants
+
+protected final android.os.RegistrantList mNewRingingConnectionRegistrants
+
+protected com.android.internal.telephony.PhoneNotifier mNotifier
+
+protected final android.os.RegistrantList mPhoneStateRegistrants
+
+protected final android.os.RegistrantList mServiceStateRegistrants
+
+protected com.android.internal.telephony.test.SimulatedRadioControl mSimulatedRadioControl
+
+protected final android.os.RegistrantList mSuppServiceFailedRegistrants
+
+ boolean mUnitTestMode
+
+protected final android.os.RegistrantList mUnknownConnectionRegistrants
+----------------METHODS----------------
+
+protected void <init>(
+com.android.internal.telephony.PhoneNotifier
+android.content.Context)
+
+protected void <init>(
+com.android.internal.telephony.PhoneNotifier
+android.content.Context
+boolean)
+
+private void checkCorrectThread(
+android.os.Handler)
+
+public android.content.Context getContext()
+
+public abstract java.util.List getPendingMmiCodes()
+
+public com.android.internal.telephony.test.SimulatedRadioControl getSimulatedRadioControl()
+
+public boolean getUnitTestMode()
+
+protected void notifyCallStateChangedP()
+
+protected void notifyDisconnectP(
+com.android.internal.telephony.Connection)
+
+protected void notifyNewRingingConnectionP(
+com.android.internal.telephony.Connection)
+
+protected void notifyServiceStateChangedP(
+android.telephony.ServiceState)
+
+public void registerForDisconnect(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForIncomingRing(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForMmiComplete(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForMmiInitiate(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForNewRingingConnection(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForPhoneStateChanged(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForServiceStateChanged(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForSuppServiceFailed(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForUnknownConnection(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setUnitTestMode(
+boolean)
+
+public void unregisterForDisconnect(
+android.os.Handler)
+
+public void unregisterForIncomingRing(
+android.os.Handler)
+
+public void unregisterForMmiComplete(
+android.os.Handler)
+
+public void unregisterForMmiInitiate(
+android.os.Handler)
+
+public void unregisterForNewRingingConnection(
+android.os.Handler)
+
+public void unregisterForPhoneStateChanged(
+android.os.Handler)
+
+public void unregisterForServiceStateChanged(
+android.os.Handler)
+
+public void unregisterForSuppServiceFailed(
+android.os.Handler)
+
+public void unregisterForUnknownConnection(
+android.os.Handler)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.PhoneFactory extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final java.lang.String LOG_TAG
+
+static final int SOCKET_OPEN_MAX_RETRY
+
+static final int SOCKET_OPEN_RETRY_MILLIS
+
+private static android.os.Looper sLooper
+
+private static boolean sMadeDefaults
+
+private static com.android.internal.telephony.PhoneNotifier sPhoneNotifier
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/android/internal/telephony/Phone;>; )
+private static java.util.ArrayList sPhones
+
+private static java.lang.Object testMailbox
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static com.android.internal.telephony.Phone getDefaultPhone()
+
+public static void makeDefaultPhones(
+android.content.Context)
+
+public static void registerPhone(
+com.android.internal.telephony.Phone)
+
+private static void useNewRIL(
+android.content.Context)
+
+________________CLASS________________
+
+@java.lang.Deprecated
+public final class com.android.internal.telephony.PhoneStateIntentReceiver extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+private static final boolean DBG
+
+public static final java.lang.String INTENT_KEY_ASU
+
+public static final java.lang.String INTENT_KEY_NUM
+
+private static final java.lang.String LOG_TAG
+
+private static final int NOTIF_MAX
+
+private static final int NOTIF_PHONE
+
+private static final int NOTIF_SERVICE
+
+private static final int NOTIF_SIGNAL
+
+ int mAsu
+
+private int mAsuEventWhat
+
+private android.content.Context mContext
+
+private android.content.IntentFilter mFilter
+
+ java.lang.String mIncomingNumber
+
+private int mLocationEventWhat
+
+ com.android.internal.telephony.Phone$State mPhoneState
+
+private int mPhoneStateEventWhat
+
+ android.telephony.ServiceState mServiceState
+
+private int mServiceStateEventWhat
+
+private android.os.Handler mTarget
+
+private int mWants
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+android.content.Context
+android.os.Handler)
+
+public boolean getNotifyPhoneCallState()
+
+public boolean getNotifyServiceState()
+
+public boolean getNotifySignalStrength()
+
+public com.android.internal.telephony.Phone$State getPhoneState()
+
+public android.telephony.ServiceState getServiceState()
+
+public int getSignalStrength()
+
+public int getSignalStrengthDbm()
+
+public void notifyPhoneCallState(
+int)
+
+public void notifyServiceState(
+int)
+
+public void notifySignalStrength(
+int)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+public void registerIntent()
+
+public void setContext(
+android.content.Context)
+
+public void setTarget(
+android.os.Handler)
+
+public void unregisterIntent()
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.PhoneSubInfo extends com.android.internal.telephony.IPhoneSubInfo$Stub
+
+----------------FIELDS----------------
+
+private static final java.lang.String READ_PHONE_STATE
+
+private android.content.Context mContext
+
+private com.android.internal.telephony.Phone mPhone
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.telephony.Phone)
+
+public java.lang.String getDeviceId()
+
+public java.lang.String getDeviceSvn()
+
+public java.lang.String getLine1AlphaTag()
+
+public java.lang.String getLine1Number()
+
+public java.lang.String getSimSerialNumber()
+
+public java.lang.String getSubscriberId()
+
+public java.lang.String getVoiceMailAlphaTag()
+
+public java.lang.String getVoiceMailNumber()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/SimCard; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/SimCard$State;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =State )
+public final class com.android.internal.telephony.SimCard$State extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.SimCard$State[] $VALUES
+
+public static final com.android.internal.telephony.SimCard$State ABSENT
+
+public static final com.android.internal.telephony.SimCard$State NETWORK_LOCKED
+
+public static final com.android.internal.telephony.SimCard$State PIN_REQUIRED
+
+public static final com.android.internal.telephony.SimCard$State PUK_REQUIRED
+
+public static final com.android.internal.telephony.SimCard$State READY
+
+public static final com.android.internal.telephony.SimCard$State UNKNOWN
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.SimCard$State valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.SimCard$State[] values()
+
+public boolean isPinLocked()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/SimCard$State; )
+public abstract interface class com.android.internal.telephony.SimCard extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String INTENT_KEY_LOCKED_REASON
+
+public static final java.lang.String INTENT_KEY_SIM_STATE
+
+public static final java.lang.String INTENT_VALUE_LOCKED_NETWORK
+
+public static final java.lang.String INTENT_VALUE_LOCKED_ON_PIN
+
+public static final java.lang.String INTENT_VALUE_LOCKED_ON_PUK
+
+public static final java.lang.String INTENT_VALUE_SIM_ABSENT
+
+public static final java.lang.String INTENT_VALUE_SIM_IMSI
+
+public static final java.lang.String INTENT_VALUE_SIM_LOADED
+
+public static final java.lang.String INTENT_VALUE_SIM_LOCKED
+
+public static final java.lang.String INTENT_VALUE_SIM_NOT_READY
+
+public static final java.lang.String INTENT_VALUE_SIM_READY
+----------------METHODS----------------
+
+public abstract void changeSimFdnPassword(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public abstract void changeSimLockPassword(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public abstract java.lang.String getServiceProviderName()
+
+public abstract boolean getSimFdnEnabled()
+
+public abstract boolean getSimLockEnabled()
+
+public abstract com.android.internal.telephony.SimCard$State getState()
+
+public abstract void registerForAbsent(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForLocked(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForNetworkLocked(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void setSimFdnEnabled(
+boolean
+java.lang.String
+android.os.Message)
+
+public abstract void setSimLockEnabled(
+boolean
+java.lang.String
+android.os.Message)
+
+public abstract void supplyNetworkDepersonalization(
+java.lang.String
+android.os.Message)
+
+public abstract void supplyPin(
+java.lang.String
+android.os.Message)
+
+public abstract void supplyPin2(
+java.lang.String
+android.os.Message)
+
+public abstract void supplyPuk(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public abstract void supplyPuk2(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public abstract void unregisterForAbsent(
+android.os.Handler)
+
+public abstract void unregisterForLocked(
+android.os.Handler)
+
+public abstract void unregisterForNetworkLocked(
+android.os.Handler)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.TelephonyIntents extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACTION_ANY_DATA_CONNECTION_STATE_CHANGED
+
+public static final java.lang.String ACTION_DATA_CONNECTION_FAILED
+
+public static final java.lang.String ACTION_NETWORK_SET_TIME
+
+public static final java.lang.String ACTION_NETWORK_SET_TIMEZONE
+
+public static final java.lang.String ACTION_PHONE_STATE_CHANGED
+
+public static final java.lang.String ACTION_SERVICE_STATE_CHANGED
+
+public static final java.lang.String ACTION_SIGNAL_STRENGTH_CHANGED
+
+public static final java.lang.String ACTION_SIM_STATE_CHANGED
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.telephony.TelephonyProperties extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String PROPERTY_BASEBAND_VERSION
+
+public static final java.lang.String PROPERTY_DATA_NETWORK_TYPE
+
+public static final java.lang.String PROPERTY_LINE1_VOICE_CALL_FORWARDING
+
+public static final java.lang.String PROPERTY_LINE1_VOICE_MAIL_WAITING
+
+public static final java.lang.String PROPERTY_OPERATOR_ALPHA
+
+public static final java.lang.String PROPERTY_OPERATOR_ISMANUAL
+
+public static final java.lang.String PROPERTY_OPERATOR_ISO_COUNTRY
+
+public static final java.lang.String PROPERTY_OPERATOR_ISROAMING
+
+public static final java.lang.String PROPERTY_OPERATOR_NUMERIC
+
+public static final java.lang.String PROPERTY_RIL_IMPL
+
+public static final java.lang.String PROPERTY_SIM_OPERATOR_ALPHA
+
+public static final java.lang.String PROPERTY_SIM_OPERATOR_ISO_COUNTRY
+
+public static final java.lang.String PROPERTY_SIM_OPERATOR_NUMERIC
+
+public static final java.lang.String PROPERTY_SIM_STATE
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/AdnRecord; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Lcom/android/internal/telephony/gsm/AdnRecord;>; )
+final class com.android.internal.telephony.gsm.AdnRecord$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public com.android.internal.telephony.gsm.AdnRecord createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public com.android.internal.telephony.gsm.AdnRecord[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.AdnRecord extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+
+static final int ADN_BCD_NUMBER_LENGTH
+
+static final int ADN_CAPABILITY_ID
+
+static final int ADN_DAILING_NUMBER_END
+
+static final int ADN_DAILING_NUMBER_START
+
+static final int ADN_EXTENSION_ID
+
+static final int ADN_TON_AND_NPI
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Lcom/android/internal/telephony/gsm/AdnRecord;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+static final int EXT_RECORD_LENGTH_BYTES
+
+static final int EXT_RECORD_TYPE_ADDITIONAL_DATA
+
+static final int EXT_RECORD_TYPE_MASK
+
+static final int FOOTER_SIZE_BYTES
+
+static final java.lang.String LOG_TAG
+
+static final int MAX_EXT_CALLED_PARTY_LENGTH
+
+static final int MAX_NUMBER_SIZE_BYTES
+
+ java.lang.String alphaTag
+
+ int efid
+
+ int extRecord
+
+ java.lang.String number
+
+ int recordNumber
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+int
+java.lang.String
+java.lang.String)
+
+public void <init>(
+int
+int
+byte[])
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public void <init>(
+byte[])
+
+private void parseRecord(
+byte[])
+
+public void appendExtRecord(
+byte[])
+
+public byte[] buildAdnString(
+int)
+
+public int describeContents()
+
+public java.lang.String getAlphaTag()
+
+public java.lang.String getNumber()
+
+public boolean hasExtendedRecord()
+
+public boolean isEmpty()
+
+public boolean isEqual(
+com.android.internal.telephony.gsm.AdnRecord)
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.telephony.gsm.SimConstants extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int EF_AD
+
+public static final int EF_ADN
+
+public static final int EF_CFF_CPHS
+
+public static final int EF_CFIS
+
+public static final int EF_EXT1
+
+public static final int EF_EXT2
+
+public static final int EF_EXT3
+
+public static final int EF_EXT6
+
+public static final int EF_FDN
+
+public static final int EF_ICCID
+
+public static final int EF_IMG
+
+public static final int EF_INFO_CPHS
+
+public static final int EF_MAILBOX_CPHS
+
+public static final int EF_MBDN
+
+public static final int EF_MBI
+
+public static final int EF_MSISDN
+
+public static final int EF_MWIS
+
+public static final int EF_PNN
+
+public static final int EF_SDN
+
+public static final int EF_SMS
+
+public static final int EF_SPDI
+
+public static final int EF_SPN
+
+public static final int EF_SPN_CPHS
+
+public static final int EF_SPN_SHORT_CPHS
+
+public static final int EF_SST
+
+public static final int EF_VOICE_MAIL_INDICATOR_CPHS
+
+public static final int SMS_RECORD_LENGTH
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public final class com.android.internal.telephony.gsm.AdnRecordCache extends android.os.Handler implements com.android.internal.telephony.gsm.SimConstants
+
+----------------FIELDS----------------
+
+static final int EVENT_LOAD_ALL_ADN_LIKE_DONE
+
+static final int EVENT_UPDATE_ADN_DONE
+@dalvik.annotation.Signature (value =Landroid/util/SparseArray<Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/AdnRecord;>;>; )
+ android.util.SparseArray adnLikeFiles
+@dalvik.annotation.Signature (value =Landroid/util/SparseArray<Ljava/util/ArrayList<Landroid/os/Message;>;>; )
+ android.util.SparseArray adnLikeWaiters
+
+ com.android.internal.telephony.gsm.GSMPhone phone
+@dalvik.annotation.Signature (value =Landroid/util/SparseArray<Landroid/os/Message;>; )
+ android.util.SparseArray userWriteResponse
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.GSMPhone)
+
+private void clearUserWriters()
+
+private void clearWaiters()
+
+private int extensionEfForEf(
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Landroid/os/Message;>;Landroid/os/AsyncResult;)V )
+private void notifyWaiters(
+java.util.ArrayList
+android.os.AsyncResult)
+
+private void sendErrorResponse(
+android.os.Message
+java.lang.String)
+@dalvik.annotation.Signature (value =(I)Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/AdnRecord;>; )
+ java.util.ArrayList getRecordsIfLoaded(
+int)
+
+public void handleMessage(
+android.os.Message)
+
+ void requestLoadAllAdnLike(
+int
+android.os.Message)
+
+ void reset()
+
+ void updateAdnByIndex(
+int
+com.android.internal.telephony.gsm.AdnRecord
+int
+java.lang.String
+android.os.Message)
+
+ void updateAdnBySearch(
+int
+com.android.internal.telephony.gsm.AdnRecord
+com.android.internal.telephony.gsm.AdnRecord
+java.lang.String
+android.os.Message)
+
+________________CLASS________________
+
+
+ class com.android.internal.telephony.gsm.AdnRecordLoader extends android.os.Handler
+
+----------------FIELDS----------------
+
+static final int EVENT_ADN_LOAD_ALL_DONE
+
+static final int EVENT_ADN_LOAD_DONE
+
+static final int EVENT_EF_LINEAR_RECORD_SIZE_DONE
+
+static final int EVENT_EXT_RECORD_LOAD_DONE
+
+static final int EVENT_UPDATE_RECORD_DONE
+
+static final java.lang.String LOG_TAG
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/AdnRecord;>; )
+ java.util.ArrayList adns
+
+ int ef
+
+ int extensionEF
+
+ int pendingExtLoads
+
+ com.android.internal.telephony.gsm.GSMPhone phone
+
+ java.lang.String pin2
+
+ int recordNumber
+
+ java.lang.Object result
+
+ android.os.Message userResponse
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.GSMPhone)
+
+public void handleMessage(
+android.os.Message)
+
+ void loadAllFromEF(
+int
+int
+android.os.Message)
+
+ void loadFromEF(
+int
+int
+int
+android.os.Message)
+
+ void updateEF(
+com.android.internal.telephony.gsm.AdnRecord
+int
+int
+int
+java.lang.String
+android.os.Message)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.ApnSetting extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.lang.String apn
+
+ java.lang.String carrier
+
+ java.lang.String mmsPort
+
+ java.lang.String mmsProxy
+
+ java.lang.String mmsc
+
+ java.lang.String password
+
+ java.lang.String port
+
+ java.lang.String proxy
+
+ java.lang.String[] types
+
+ java.lang.String user
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String[])
+
+ boolean canHandleType(
+java.lang.String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/CommandsInterface$SimStatus;Lcom/android/internal/telephony/gsm/CommandsInterface$RadioState; )
+public abstract interface class com.android.internal.telephony.gsm.CommandsInterface extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String CB_FACILITY_BAIC
+
+public static final java.lang.String CB_FACILITY_BAICr
+
+public static final java.lang.String CB_FACILITY_BAOC
+
+public static final java.lang.String CB_FACILITY_BAOIC
+
+public static final java.lang.String CB_FACILITY_BAOICxH
+
+public static final java.lang.String CB_FACILITY_BA_ALL
+
+public static final java.lang.String CB_FACILITY_BA_FD
+
+public static final java.lang.String CB_FACILITY_BA_MO
+
+public static final java.lang.String CB_FACILITY_BA_MT
+
+public static final java.lang.String CB_FACILITY_BA_SIM
+
+public static final int CF_ACTION_DISABLE
+
+public static final int CF_ACTION_ENABLE
+
+public static final int CF_ACTION_ERASURE
+
+public static final int CF_ACTION_REGISTRATION
+
+public static final int CF_REASON_ALL
+
+public static final int CF_REASON_ALL_CONDITIONAL
+
+public static final int CF_REASON_BUSY
+
+public static final int CF_REASON_NOT_REACHABLE
+
+public static final int CF_REASON_NO_REPLY
+
+public static final int CF_REASON_UNCONDITIONAL
+
+public static final int CLIR_DEFAULT
+
+public static final int CLIR_INVOCATION
+
+public static final int CLIR_SUPPRESSION
+
+public static final int SERVICE_CLASS_DATA
+
+public static final int SERVICE_CLASS_DATA_ASYNC
+
+public static final int SERVICE_CLASS_DATA_SYNC
+
+public static final int SERVICE_CLASS_FAX
+
+public static final int SERVICE_CLASS_MAX
+
+public static final int SERVICE_CLASS_NONE
+
+public static final int SERVICE_CLASS_PACKET
+
+public static final int SERVICE_CLASS_PAD
+
+public static final int SERVICE_CLASS_SMS
+
+public static final int SERVICE_CLASS_VOICE
+
+public static final int SIM_REFRESH_FILE_UPDATED
+
+public static final int SIM_REFRESH_INIT
+
+public static final int SIM_REFRESH_RESET
+
+public static final int USSD_MODE_NOTIFY
+
+public static final int USSD_MODE_REQUEST
+----------------METHODS----------------
+
+public abstract void acceptCall(
+android.os.Message)
+
+public abstract void acknowledgeLastIncomingSMS(
+boolean
+android.os.Message)
+
+public abstract void cancelPendingUssd(
+android.os.Message)
+
+public abstract void changeBarringPassword(
+java.lang.String
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public abstract void changeSimPin(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public abstract void changeSimPin2(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public abstract void conference(
+android.os.Message)
+
+public abstract void deactivateDefaultPDP(
+int
+android.os.Message)
+
+public abstract void deleteSmsOnSim(
+int
+android.os.Message)
+
+public abstract void dial(
+java.lang.String
+int
+android.os.Message)
+
+public abstract void explicitCallTransfer(
+android.os.Message)
+
+public abstract void getAvailableNetworks(
+android.os.Message)
+
+public abstract void getBasebandVersion(
+android.os.Message)
+
+public abstract void getCLIR(
+android.os.Message)
+
+public abstract void getCurrentCalls(
+android.os.Message)
+
+public abstract void getGPRSRegistrationState(
+android.os.Message)
+
+public abstract void getIMEI(
+android.os.Message)
+
+public abstract void getIMEISV(
+android.os.Message)
+
+public abstract void getIMSI(
+android.os.Message)
+
+public abstract void getLastCallFailCause(
+android.os.Message)
+
+public abstract void getLastPdpFailCause(
+android.os.Message)
+
+public abstract void getMute(
+android.os.Message)
+
+public abstract void getNeighboringCids(
+android.os.Message)
+
+public abstract void getNetworkSelectionMode(
+android.os.Message)
+
+public abstract void getOperator(
+android.os.Message)
+
+public abstract void getPDPContextList(
+android.os.Message)
+
+public abstract void getPreferredNetworkType(
+android.os.Message)
+
+public abstract com.android.internal.telephony.gsm.CommandsInterface$RadioState getRadioState()
+
+public abstract void getRegistrationState(
+android.os.Message)
+
+public abstract void getSignalStrength(
+android.os.Message)
+
+public abstract void getSimStatus(
+android.os.Message)
+
+public abstract void handleCallSetupRequestFromSim(
+boolean
+android.os.Message)
+
+public abstract void hangupConnection(
+int
+android.os.Message)
+
+public abstract void hangupForegroundResumeBackground(
+android.os.Message)
+
+public abstract void hangupWaitingOrBackground(
+android.os.Message)
+
+public abstract void invokeOemRilRequestRaw(
+byte[]
+android.os.Message)
+
+public abstract void invokeOemRilRequestStrings(
+java.lang.String[]
+android.os.Message)
+
+public abstract void queryAvailableBandMode(
+android.os.Message)
+
+public abstract void queryCLIP(
+android.os.Message)
+
+public abstract void queryCallForwardStatus(
+int
+int
+java.lang.String
+android.os.Message)
+
+public abstract void queryCallWaiting(
+int
+android.os.Message)
+
+public abstract void queryFacilityLock(
+java.lang.String
+java.lang.String
+int
+android.os.Message)
+
+public abstract void registerForAvailable(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForCallStateChanged(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForNetworkStateChanged(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForNotAvailable(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForOffOrNotAvailable(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForOn(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForPDPStateChanged(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForRadioStateChanged(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForSIMLockedOrAbsent(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void registerForSIMReady(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void rejectCall(
+android.os.Message)
+
+public abstract void resetRadio(
+android.os.Message)
+
+public abstract void sendDtmf(
+char
+android.os.Message)
+
+public abstract void sendEnvelope(
+java.lang.String
+android.os.Message)
+
+public abstract void sendSMS(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public abstract void sendTerminalResponse(
+java.lang.String
+android.os.Message)
+
+public abstract void sendUSSD(
+java.lang.String
+android.os.Message)
+
+public abstract void separateConnection(
+int
+android.os.Message)
+
+public abstract void setBandMode(
+int
+android.os.Message)
+
+public abstract void setCLIR(
+int
+android.os.Message)
+
+public abstract void setCallForward(
+int
+int
+int
+java.lang.String
+int
+android.os.Message)
+
+public abstract void setCallWaiting(
+boolean
+int
+android.os.Message)
+
+public abstract void setFacilityLock(
+java.lang.String
+boolean
+java.lang.String
+int
+android.os.Message)
+
+public abstract void setLocationUpdates(
+boolean
+android.os.Message)
+
+public abstract void setMute(
+boolean
+android.os.Message)
+
+public abstract void setNetworkSelectionModeAutomatic(
+android.os.Message)
+
+public abstract void setNetworkSelectionModeManual(
+java.lang.String
+android.os.Message)
+
+public abstract void setOnCallRing(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void setOnNITZTime(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void setOnNewSMS(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void setOnSignalStrengthUpdate(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void setOnSimRefresh(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void setOnSimSmsFull(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void setOnSmsOnSim(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void setOnSmsStatus(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void setOnStkCallSetUp(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void setOnStkEvent(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void setOnStkProactiveCmd(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void setOnStkSessionEnd(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void setOnSuppServiceNotification(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void setOnUSSD(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void setPreferredNetworkType(
+int
+android.os.Message)
+
+public abstract void setRadioPower(
+boolean
+android.os.Message)
+
+public abstract void setSuppServiceNotifications(
+boolean
+android.os.Message)
+
+public abstract void setupDefaultPDP(
+java.lang.String
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public abstract void simIO(
+int
+int
+java.lang.String
+int
+int
+int
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public abstract void startDtmf(
+char
+android.os.Message)
+
+public abstract void stopDtmf(
+android.os.Message)
+
+public abstract void supplyNetworkDepersonalization(
+java.lang.String
+android.os.Message)
+
+public abstract void supplySimPin(
+java.lang.String
+android.os.Message)
+
+public abstract void supplySimPin2(
+java.lang.String
+android.os.Message)
+
+public abstract void supplySimPuk(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public abstract void supplySimPuk2(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public abstract void switchWaitingOrHoldingAndActive(
+android.os.Message)
+
+public abstract void writeSmsToSim(
+int
+java.lang.String
+java.lang.String
+android.os.Message)
+
+________________CLASS________________
+
+
+public abstract class com.android.internal.telephony.gsm.BaseCommands extends java.lang.Object implements com.android.internal.telephony.gsm.CommandsInterface
+
+----------------FIELDS----------------
+
+static final java.lang.String LOG_TAG
+
+protected android.os.RegistrantList mAvailRegistrants
+
+protected android.os.RegistrantList mCallStateRegistrants
+
+protected android.content.Context mContext
+
+protected android.os.Registrant mNITZTimeRegistrant
+
+protected android.os.RegistrantList mNetworkStateRegistrants
+
+protected android.os.RegistrantList mNotAvailRegistrants
+
+protected android.os.RegistrantList mOffOrNotAvailRegistrants
+
+protected android.os.RegistrantList mOnRegistrants
+
+protected android.os.RegistrantList mPDPRegistrants
+
+protected android.os.RegistrantList mRadioStateChangedRegistrants
+
+protected android.os.Registrant mRingRegistrant
+
+protected android.os.RegistrantList mSIMLockedRegistrants
+
+protected android.os.RegistrantList mSIMReadyRegistrants
+
+protected android.os.Registrant mSMSRegistrant
+
+protected android.os.Registrant mSignalStrengthRegistrant
+
+protected android.os.Registrant mSimRefreshRegistrant
+
+protected android.os.Registrant mSimSmsFullRegistrant
+
+protected android.os.Registrant mSmsOnSimRegistrant
+
+protected android.os.Registrant mSmsStatusRegistrant
+
+protected android.os.Registrant mSsnRegistrant
+
+protected com.android.internal.telephony.gsm.CommandsInterface$RadioState mState
+
+protected java.lang.Object mStateMonitor
+
+protected android.os.Registrant mStkCallSetUpRegistrant
+
+protected android.os.Registrant mStkEventRegistrant
+
+protected android.os.Registrant mStkProCmdRegistrant
+
+protected android.os.Registrant mStkSessionEndRegistrant
+
+protected android.os.Registrant mUSSDRegistrant
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public com.android.internal.telephony.gsm.CommandsInterface$RadioState getRadioState()
+
+protected void onRadioAvailable()
+
+public void registerForAvailable(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForCallStateChanged(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForNetworkStateChanged(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForNotAvailable(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForOffOrNotAvailable(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForOn(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForPDPStateChanged(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForRadioStateChanged(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForSIMLockedOrAbsent(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForSIMReady(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setOnCallRing(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setOnNITZTime(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setOnNewSMS(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setOnSignalStrengthUpdate(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setOnSimRefresh(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setOnSimSmsFull(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setOnSmsOnSim(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setOnSmsStatus(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setOnStkCallSetUp(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setOnStkEvent(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setOnStkProactiveCmd(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setOnStkSessionEnd(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setOnSuppServiceNotification(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setOnUSSD(
+android.os.Handler
+int
+java.lang.Object)
+
+protected void setRadioState(
+com.android.internal.telephony.gsm.CommandsInterface$RadioState)
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.telephony.gsm.CallFailCause extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ACM_LIMIT_EXCEEDED
+
+public static final int BEARER_NOT_AVAIL
+
+public static final int CALL_BARRED
+
+public static final int CHANNEL_NOT_AVAIL
+
+public static final int ERROR_UNSPECIFIED
+
+public static final int FDN_BLOCKED
+
+public static final int NORMAL_CLEARING
+
+public static final int NORMAL_UNSPECIFIED
+
+public static final int NO_CIRCUIT_AVAIL
+
+public static final int NUMBER_CHANGED
+
+public static final int QOS_NOT_AVAIL
+
+public static final int STATUS_ENQUIRY
+
+public static final int SWITCHING_CONGESTION
+
+public static final int TEMPORARY_FAILURE
+
+public static final int USER_BUSY
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.CallForwardInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String number
+
+public int reason
+
+public int serviceClass
+
+public int status
+
+public int timeSeconds
+
+public int toa
+----------------METHODS----------------
+
+public void <init>()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public final class com.android.internal.telephony.gsm.CallTracker extends android.os.Handler
+
+----------------FIELDS----------------
+
+private static final boolean DBG_POLL
+
+static final int EVENT_CALL_STATE_CHANGE
+
+static final int EVENT_CONFERENCE_RESULT
+
+static final int EVENT_ECT_RESULT
+
+static final int EVENT_GET_LAST_CALL_FAIL_CAUSE
+
+static final int EVENT_OPERATION_COMPLETE
+
+static final int EVENT_POLL_CALLS_RESULT
+
+static final int EVENT_RADIO_AVAILABLE
+
+static final int EVENT_RADIO_NOT_AVAILABLE
+
+static final int EVENT_REPOLL_AFTER_DELAY
+
+static final int EVENT_SEPARATE_RESULT
+
+static final int EVENT_SWITCH_RESULT
+
+static final java.lang.String LOG_TAG
+
+static final int MAX_CONNECTIONS
+
+static final int MAX_CONNECTIONS_PER_CALL
+
+static final int POLL_DELAY_MSEC
+
+private static final boolean REPEAT_POLLING
+
+ com.android.internal.telephony.gsm.GSMCall backgroundCall
+
+ com.android.internal.telephony.gsm.CommandsInterface cm
+
+ com.android.internal.telephony.gsm.GSMConnection[] connections
+
+ boolean desiredMute
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/GSMConnection;>; )
+ java.util.ArrayList droppedDuringPoll
+
+ com.android.internal.telephony.gsm.GSMCall foregroundCall
+
+ boolean hangupPendingMO
+
+ android.os.Message lastRelevantPoll
+
+ boolean needsPoll
+
+ com.android.internal.telephony.gsm.GSMConnection pendingMO
+
+ int pendingOperations
+
+ com.android.internal.telephony.gsm.GSMPhone phone
+
+ com.android.internal.telephony.gsm.GSMCall ringingCall
+
+ com.android.internal.telephony.Phone$State state
+
+ android.os.RegistrantList voiceCallEndedRegistrants
+
+ android.os.RegistrantList voiceCallStartedRegistrants
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.GSMPhone)
+
+private boolean checkNoOperationsPending()
+
+private void dumpState()
+
+private void fakeHoldForegroundBeforeDial()
+
+private com.android.internal.telephony.Phone$SuppService getFailedService(
+int)
+
+private void handlePollCalls(
+android.os.AsyncResult)
+
+private void handleRadioAvailable()
+
+private void handleRadioNotAvailable()
+
+private void internalClearDisconnected()
+
+private boolean isCommandExceptionRadioNotAvailable(
+java.lang.Throwable)
+
+private void log(
+java.lang.String)
+
+private android.os.Message obtainCompleteMessage()
+
+private android.os.Message obtainCompleteMessage(
+int)
+
+private android.os.Message obtainNoPollCompleteMessage(
+int)
+
+private void operationComplete()
+
+private void pollCallsAfterDelay()
+
+private void pollCallsWhenSafe()
+
+private void updatePhoneState()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+ void acceptCall()
+
+ boolean canConference()
+
+ boolean canDial()
+
+ boolean canTransfer()
+
+ void clearDisconnected()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+ void conference()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+ com.android.internal.telephony.Connection dial(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+ com.android.internal.telephony.Connection dial(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+ void explicitCallTransfer()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+ com.android.internal.telephony.gsm.GSMConnection getConnectionByIndex(
+com.android.internal.telephony.gsm.GSMCall
+int)
+
+ boolean getMute()
+
+public void handleMessage(
+android.os.Message)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+ void hangup(
+com.android.internal.telephony.gsm.GSMCall)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+ void hangup(
+com.android.internal.telephony.gsm.GSMConnection)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+ void hangupAllConnections(
+com.android.internal.telephony.gsm.GSMCall)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+ void hangupConnectionByIndex(
+com.android.internal.telephony.gsm.GSMCall
+int)
+
+ void hangupForegroundResumeBackground()
+
+ void hangupWaitingOrBackground()
+
+public void registerForVoiceCallEnded(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForVoiceCallStarted(
+android.os.Handler
+int
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+ void rejectCall()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+ void separate(
+com.android.internal.telephony.gsm.GSMConnection)
+
+ void setMute(
+boolean)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+ void switchWaitingOrHoldingAndActive()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/CommandException; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Error )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/CommandException$Error;>; )
+public final class com.android.internal.telephony.gsm.CommandException$Error extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.CommandException$Error[] $VALUES
+
+public static final com.android.internal.telephony.gsm.CommandException$Error GENERIC_FAILURE
+
+public static final com.android.internal.telephony.gsm.CommandException$Error INVALID_RESPONSE
+
+public static final com.android.internal.telephony.gsm.CommandException$Error OP_NOT_ALLOWED_BEFORE_REG_NW
+
+public static final com.android.internal.telephony.gsm.CommandException$Error OP_NOT_ALLOWED_DURING_VOICE_CALL
+
+public static final com.android.internal.telephony.gsm.CommandException$Error PASSWORD_INCORRECT
+
+public static final com.android.internal.telephony.gsm.CommandException$Error RADIO_NOT_AVAILABLE
+
+public static final com.android.internal.telephony.gsm.CommandException$Error REQUEST_NOT_SUPPORTED
+
+public static final com.android.internal.telephony.gsm.CommandException$Error SIM_PIN2
+
+public static final com.android.internal.telephony.gsm.CommandException$Error SIM_PUK2
+
+public static final com.android.internal.telephony.gsm.CommandException$Error SMS_FAIL_RETRY
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.gsm.CommandException$Error valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.CommandException$Error[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/CommandException$Error; )
+public class com.android.internal.telephony.gsm.CommandException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private com.android.internal.telephony.gsm.CommandException$Error e
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.telephony.gsm.CommandException$Error)
+
+public static com.android.internal.telephony.gsm.CommandException fromRilErrno(
+int)
+
+public com.android.internal.telephony.gsm.CommandException$Error getCommandError()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/CommandsInterface; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =RadioState )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/CommandsInterface$RadioState;>; )
+public final class com.android.internal.telephony.gsm.CommandsInterface$RadioState extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.CommandsInterface$RadioState[] $VALUES
+
+public static final com.android.internal.telephony.gsm.CommandsInterface$RadioState RADIO_OFF
+
+public static final com.android.internal.telephony.gsm.CommandsInterface$RadioState RADIO_UNAVAILABLE
+
+public static final com.android.internal.telephony.gsm.CommandsInterface$RadioState SIM_LOCKED_OR_ABSENT
+
+public static final com.android.internal.telephony.gsm.CommandsInterface$RadioState SIM_NOT_READY
+
+public static final com.android.internal.telephony.gsm.CommandsInterface$RadioState SIM_READY
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.gsm.CommandsInterface$RadioState valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.CommandsInterface$RadioState[] values()
+
+ boolean isAvailable()
+
+ boolean isOn()
+
+ boolean isSIMReady()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/CommandsInterface; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =SimStatus )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/CommandsInterface$SimStatus;>; )
+public final class com.android.internal.telephony.gsm.CommandsInterface$SimStatus extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.CommandsInterface$SimStatus[] $VALUES
+
+public static final com.android.internal.telephony.gsm.CommandsInterface$SimStatus SIM_ABSENT
+
+public static final com.android.internal.telephony.gsm.CommandsInterface$SimStatus SIM_NETWORK_PERSONALIZATION
+
+public static final com.android.internal.telephony.gsm.CommandsInterface$SimStatus SIM_NOT_READY
+
+public static final com.android.internal.telephony.gsm.CommandsInterface$SimStatus SIM_PIN
+
+public static final com.android.internal.telephony.gsm.CommandsInterface$SimStatus SIM_PUK
+
+public static final com.android.internal.telephony.gsm.CommandsInterface$SimStatus SIM_READY
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.gsm.CommandsInterface$SimStatus valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.CommandsInterface$SimStatus[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/DataConnectionTracker; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class com.android.internal.telephony.gsm.DataConnectionTracker$1 extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final com.android.internal.telephony.gsm.DataConnectionTracker this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.DataConnectionTracker)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/DataConnectionTracker; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class com.android.internal.telephony.gsm.DataConnectionTracker$2 extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final com.android.internal.telephony.gsm.DataConnectionTracker this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.DataConnectionTracker)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/DataConnectionTracker; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class com.android.internal.telephony.gsm.DataConnectionTracker$3 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final com.android.internal.telephony.gsm.DataConnectionTracker this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.DataConnectionTracker)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/DataConnectionTracker$Activity;>; )
+@dalvik.annotation.InnerClass (accessFlags =16408 name =Activity )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/DataConnectionTracker; )
+final class com.android.internal.telephony.gsm.DataConnectionTracker$Activity extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.DataConnectionTracker$Activity[] $VALUES
+
+public static final com.android.internal.telephony.gsm.DataConnectionTracker$Activity DATAIN
+
+public static final com.android.internal.telephony.gsm.DataConnectionTracker$Activity DATAINANDOUT
+
+public static final com.android.internal.telephony.gsm.DataConnectionTracker$Activity DATAOUT
+
+public static final com.android.internal.telephony.gsm.DataConnectionTracker$Activity NONE
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.gsm.DataConnectionTracker$Activity valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.DataConnectionTracker$Activity[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =ApnChangeObserver )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/DataConnectionTracker; )
+ class com.android.internal.telephony.gsm.DataConnectionTracker$ApnChangeObserver extends android.database.ContentObserver
+
+----------------FIELDS----------------
+
+final com.android.internal.telephony.gsm.DataConnectionTracker this$0
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.telephony.gsm.DataConnectionTracker)
+
+public void onChange(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/DataConnectionTracker; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/DataConnectionTracker$State;>; )
+@dalvik.annotation.InnerClass (accessFlags =16408 name =State )
+final class com.android.internal.telephony.gsm.DataConnectionTracker$State extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.DataConnectionTracker$State[] $VALUES
+
+public static final com.android.internal.telephony.gsm.DataConnectionTracker$State CONNECTED
+
+public static final com.android.internal.telephony.gsm.DataConnectionTracker$State CONNECTING
+
+public static final com.android.internal.telephony.gsm.DataConnectionTracker$State FAILED
+
+public static final com.android.internal.telephony.gsm.DataConnectionTracker$State IDLE
+
+public static final com.android.internal.telephony.gsm.DataConnectionTracker$State INITING
+
+public static final com.android.internal.telephony.gsm.DataConnectionTracker$State SCANNING
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.gsm.DataConnectionTracker$State valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.DataConnectionTracker$State[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/DataConnectionTracker$ApnChangeObserver;Lcom/android/internal/telephony/gsm/DataConnectionTracker$Activity;Lcom/android/internal/telephony/gsm/DataConnectionTracker$State; )
+final class com.android.internal.telephony.gsm.DataConnectionTracker extends android.os.Handler
+
+----------------FIELDS----------------
+
+private static int APN_DEFAULT_ID
+
+private static int APN_MMS_ID
+
+private static int APN_NUM_TYPES
+
+private static final java.lang.String APN_RESTORE_DELAY_PROP_NAME
+
+private static final boolean DBG
+
+static final int EVENT_DATA_SETUP_COMPLETE
+
+static final int EVENT_DISCONNECT_DONE
+
+static final int EVENT_ENABLE_NEW_APN
+
+static final int EVENT_GET_PDP_LIST_COMPLETE
+
+static final int EVENT_GPRS_DETACHED
+
+static final int EVENT_LINK_STATE_CHANGED
+
+static final int EVENT_PDP_STATE_CHANGED
+
+static final int EVENT_POLL_PDP
+
+static final int EVENT_RADIO_AVAILABLE
+
+static final int EVENT_RADIO_OFF_OR_NOT_AVAILABLE
+
+static final int EVENT_RECORDS_LOADED
+
+static final int EVENT_RESTORE_DEFAULT_APN
+
+static final int EVENT_ROAMING_OFF
+
+static final int EVENT_ROAMING_ON
+
+static final int EVENT_TRY_SETUP_DATA
+
+static final int EVENT_VOICE_CALL_ENDED
+
+static final int EVENT_VOICE_CALL_STARTED
+
+static final java.lang.String INTENT_RECONNECT_ALARM
+
+private static final java.lang.String LOG_TAG
+
+private static final int NO_RECV_POLL_LIMIT
+
+private static final int NUMBER_SENT_PACKETS_OF_HANG
+
+private static final int PDP_CONNECTION_POOL_SIZE
+
+private static final int POLL_LONGEST_RTT
+
+private static final int POLL_NETSTAT_MILLIS
+
+private static final int POLL_NETSTAT_SLOW_MILLIS
+
+private static final int POLL_PDP_MILLIS
+
+private static final int RECONNECT_DELAY_INITIAL_MILLIS
+
+private static final int RESTORE_DEFAULT_APN_DELAY
+
+ com.android.internal.telephony.gsm.DataConnectionTracker$Activity activity
+
+ android.content.BroadcastReceiver alarmReceiver
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/ApnSetting;>; )
+private java.util.ArrayList allApns
+
+private com.android.internal.telephony.gsm.DataConnectionTracker$ApnChangeObserver apnObserver
+
+ int cidActive
+
+private boolean[] dataEnabled
+
+ boolean failNextConnect
+
+private com.android.internal.telephony.gsm.ApnSetting mActiveApn
+
+private com.android.internal.telephony.gsm.PdpConnection mActivePdp
+
+ android.os.Handler mDataConnectionTracker
+
+private int mNoRecvPollCount
+
+ java.lang.Runnable mPollNetStat
+
+private java.lang.String mRequestedApnType
+
+ boolean netStatPollEnabled
+
+ int netStatPollPeriod
+
+ android.os.INetStatService netstat
+
+ long nextReconnectDelay
+
+private boolean noAutoAttach
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/PdpConnection;>; )
+private java.util.ArrayList pdpList
+
+ com.android.internal.telephony.gsm.GSMPhone phone
+
+ int rxPkts
+
+ android.content.BroadcastReceiver screenOnOffReceiver
+
+ int sentSinceLastRecv
+
+ com.android.internal.telephony.gsm.DataConnectionTracker$State state
+
+ int txPkts
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/ApnSetting;>; )
+private java.util.ArrayList waitingApns
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+com.android.internal.telephony.gsm.GSMPhone)
+
+static void access$000(
+com.android.internal.telephony.gsm.DataConnectionTracker
+boolean
+java.lang.String)
+
+static void access$100(
+com.android.internal.telephony.gsm.DataConnectionTracker)
+
+static void access$200(
+com.android.internal.telephony.gsm.DataConnectionTracker)
+
+static void access$300(
+com.android.internal.telephony.gsm.DataConnectionTracker)
+
+static boolean access$400(
+com.android.internal.telephony.gsm.DataConnectionTracker
+java.lang.String)
+
+static int access$500(
+com.android.internal.telephony.gsm.DataConnectionTracker)
+
+static int access$502(
+com.android.internal.telephony.gsm.DataConnectionTracker
+int)
+
+static int access$508(
+com.android.internal.telephony.gsm.DataConnectionTracker)
+
+static void access$600(
+com.android.internal.telephony.gsm.DataConnectionTracker
+java.lang.String)
+
+static void access$700(
+com.android.internal.telephony.gsm.DataConnectionTracker)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/ApnSetting;>;)Ljava/lang/String; )
+private java.lang.String apnListToString(
+java.util.ArrayList)
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/ApnSetting;>; )
+private java.util.ArrayList buildWaitingApns()
+
+private void cleanUpConnection(
+boolean
+java.lang.String)
+
+private void createAllApnList()
+
+private void createAllPdpList()
+@dalvik.annotation.Signature (value =(Landroid/database/Cursor;)Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/ApnSetting;>; )
+private java.util.ArrayList createApnList(
+android.database.Cursor)
+
+private com.android.internal.telephony.gsm.PdpConnection findFreePdp()
+
+private com.android.internal.telephony.gsm.ApnSetting getNextApn()
+
+private int getRestoreDefaultApnDelay()
+
+private boolean isApnTypeActive(
+java.lang.String)
+
+private boolean isApnTypeAvailable(
+java.lang.String)
+
+private boolean isDataAllowed()
+
+private boolean isEnabled(
+java.lang.String)
+
+private void log(
+java.lang.String)
+
+private void notifyDefaultData()
+
+private void notifyNoData(
+com.android.internal.telephony.gsm.PdpConnection$PdpFailCause)
+
+private void onGprsDetached()
+
+private void onPdpStateChanged(
+android.os.AsyncResult
+boolean)
+
+private java.lang.String[] parseTypes(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/PDPContextState;>;I)Z )
+private boolean pdpStatesHasActiveCID(
+java.util.ArrayList
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/PDPContextState;>;I)Z )
+private boolean pdpStatesHasCID(
+java.util.ArrayList
+int)
+
+private void reconnectAfterFail(
+com.android.internal.telephony.gsm.PdpConnection$PdpFailCause)
+
+private void resetPollStats()
+
+private void restartRadio()
+
+private void setEnabled(
+java.lang.String
+boolean)
+
+private boolean setupData(
+java.lang.String)
+
+private void setupDnsProperties()
+
+private boolean shouldPostNotification(
+com.android.internal.telephony.gsm.PdpConnection$PdpFailCause)
+
+private void startNetStatPoll()
+
+private void startPeriodicPdpPoll()
+
+private void stopNetStatPoll()
+
+private boolean tryNextApn(
+com.android.internal.telephony.gsm.PdpConnection$PdpFailCause)
+
+private boolean trySetupData(
+java.lang.String)
+
+ int disableApnType(
+java.lang.String)
+
+ int enableApnType(
+java.lang.String)
+
+ java.lang.String getActiveApnString()
+
+ java.lang.String[] getActiveApnTypes()
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/PdpConnection;>; )
+public java.util.ArrayList getAllPdps()
+
+public boolean getAnyDataEnabled()
+
+public boolean getDataEnabled()
+
+public boolean getDataOnRoamingEnabled()
+
+ java.lang.String[] getDnsServers(
+java.lang.String)
+
+ java.lang.String getGateway(
+java.lang.String)
+
+ java.lang.String getInterfaceName(
+java.lang.String)
+
+ java.lang.String getIpAddress(
+java.lang.String)
+
+public void handleMessage(
+android.os.Message)
+
+public boolean setDataEnabled(
+boolean)
+
+public void setDataOnRoamingEnabled(
+boolean)
+
+ void setState(
+com.android.internal.telephony.gsm.DataConnectionTracker$State)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/DataLinkInterface$LinkState; )
+abstract interface class com.android.internal.telephony.gsm.DataLinkInterface extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int EXIT_OK
+
+public static final int EXIT_OPEN_FAILED
+----------------METHODS----------------
+
+public abstract void connect()
+
+public abstract void disconnect()
+
+public abstract int getLastLinkExitCode()
+
+public abstract void setOnLinkChange(
+android.os.Handler
+int
+java.lang.Object)
+
+public abstract void setPasswordInfo(
+android.database.Cursor)
+
+________________CLASS________________
+
+
+abstract class com.android.internal.telephony.gsm.DataLink extends android.os.Handler implements com.android.internal.telephony.gsm.DataLinkInterface
+
+----------------FIELDS----------------
+
+protected com.android.internal.telephony.gsm.DataConnectionTracker dataConnection
+
+ android.os.Registrant mLinkChangeRegistrant
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.DataConnectionTracker)
+
+public void setOnLinkChange(
+android.os.Handler
+int
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/DataLinkInterface$LinkState;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =LinkState )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/DataLinkInterface; )
+public final class com.android.internal.telephony.gsm.DataLinkInterface$LinkState extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.DataLinkInterface$LinkState[] $VALUES
+
+public static final com.android.internal.telephony.gsm.DataLinkInterface$LinkState LINK_DOWN
+
+public static final com.android.internal.telephony.gsm.DataLinkInterface$LinkState LINK_EXITED
+
+public static final com.android.internal.telephony.gsm.DataLinkInterface$LinkState LINK_UNKNOWN
+
+public static final com.android.internal.telephony.gsm.DataLinkInterface$LinkState LINK_UP
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.gsm.DataLinkInterface$LinkState valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.DataLinkInterface$LinkState[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/DriverCall; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =State )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/DriverCall$State;>; )
+public final class com.android.internal.telephony.gsm.DriverCall$State extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.DriverCall$State[] $VALUES
+
+public static final com.android.internal.telephony.gsm.DriverCall$State ACTIVE
+
+public static final com.android.internal.telephony.gsm.DriverCall$State ALERTING
+
+public static final com.android.internal.telephony.gsm.DriverCall$State DIALING
+
+public static final com.android.internal.telephony.gsm.DriverCall$State HOLDING
+
+public static final com.android.internal.telephony.gsm.DriverCall$State INCOMING
+
+public static final com.android.internal.telephony.gsm.DriverCall$State WAITING
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.gsm.DriverCall$State valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.DriverCall$State[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/DriverCall$State; )
+public class com.android.internal.telephony.gsm.DriverCall extends java.lang.Object implements java.lang.Comparable
+
+----------------FIELDS----------------
+
+static final java.lang.String LOG_TAG
+
+public int TOA
+
+public int als
+
+public int index
+
+public boolean isMT
+
+public boolean isMpty
+
+public boolean isVoice
+
+public java.lang.String number
+
+public com.android.internal.telephony.gsm.DriverCall$State state
+----------------METHODS----------------
+
+public void <init>()
+
+static com.android.internal.telephony.gsm.DriverCall fromCLCCLine(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/ATParseEx; )
+public static com.android.internal.telephony.gsm.DriverCall$State stateFromCLCC(
+int)
+
+public int compareTo(
+java.lang.Object)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.EncodeException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+char)
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/GSMCall; )
+ class com.android.internal.telephony.gsm.GSMCall$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$com$android$internal$telephony$gsm$DriverCall$State
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/GSMCall$1; )
+ class com.android.internal.telephony.gsm.GSMCall extends com.android.internal.telephony.Call
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/android/internal/telephony/Connection;>; )
+ java.util.ArrayList connections
+
+ com.android.internal.telephony.gsm.CallTracker owner
+
+ com.android.internal.telephony.Call$State state
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.CallTracker)
+
+static com.android.internal.telephony.Call$State stateFromDCState(
+com.android.internal.telephony.gsm.DriverCall$State)
+
+ void attach(
+com.android.internal.telephony.gsm.GSMConnection
+com.android.internal.telephony.gsm.DriverCall)
+
+ void attachFake(
+com.android.internal.telephony.gsm.GSMConnection
+com.android.internal.telephony.Call$State)
+
+ void clearDisconnected()
+
+ void connectionDisconnected(
+com.android.internal.telephony.gsm.GSMConnection)
+
+ void detach(
+com.android.internal.telephony.gsm.GSMConnection)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Lcom/android/internal/telephony/Connection;>; )
+public java.util.List getConnections()
+
+public com.android.internal.telephony.Phone getPhone()
+
+public com.android.internal.telephony.Call$State getState()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public void hangup()
+
+ boolean isFull()
+
+public boolean isMultiparty()
+
+ void onHangupLocal()
+
+public java.lang.String toString()
+
+ boolean update(
+com.android.internal.telephony.gsm.GSMConnection
+com.android.internal.telephony.gsm.DriverCall)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/GSMConnection; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class com.android.internal.telephony.gsm.GSMConnection$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$com$android$internal$telephony$gsm$DriverCall$State
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =MyHandler )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/GSMConnection; )
+ class com.android.internal.telephony.gsm.GSMConnection$MyHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+final com.android.internal.telephony.gsm.GSMConnection this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.GSMConnection
+android.os.Looper)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/GSMConnection$1;Lcom/android/internal/telephony/gsm/GSMConnection$MyHandler; )
+public class com.android.internal.telephony.gsm.GSMConnection extends com.android.internal.telephony.Connection
+
+----------------FIELDS----------------
+
+static final int EVENT_DTMF_DONE
+
+static final int EVENT_NEXT_POST_DIAL
+
+static final int EVENT_PAUSE_DONE
+
+static final java.lang.String LOG_TAG
+
+static final int PAUSE_DELAY_FIRST_MILLIS
+
+static final int PAUSE_DELAY_MILLIS
+
+ java.lang.String address
+
+ com.android.internal.telephony.Connection$DisconnectCause cause
+
+ long connectTime
+
+ long connectTimeReal
+
+ long createTime
+
+ java.lang.String dialString
+
+ long disconnectTime
+
+ boolean disconnected
+
+ long duration
+
+ android.os.Handler h
+
+ long holdingStartTime
+
+ int index
+
+ boolean isIncoming
+
+ int nextPostDialChar
+
+ com.android.internal.telephony.gsm.CallTracker owner
+
+ com.android.internal.telephony.gsm.GSMCall parent
+
+ com.android.internal.telephony.Connection$PostDialState postDialState
+
+ java.lang.String postDialString
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.DriverCall
+com.android.internal.telephony.gsm.CallTracker
+int)
+
+ void <init>(
+java.lang.String
+com.android.internal.telephony.gsm.CallTracker
+com.android.internal.telephony.gsm.GSMCall)
+
+static void access$000(
+com.android.internal.telephony.gsm.GSMConnection)
+
+static boolean equalsHandlesNulls(
+java.lang.Object
+java.lang.Object)
+
+private boolean isConnectingInOrOut()
+
+private void log(
+java.lang.String)
+
+private void onStartedHolding()
+
+private com.android.internal.telephony.gsm.GSMCall parentFromDCState(
+com.android.internal.telephony.gsm.DriverCall$State)
+
+private void processNextPostDialChar()
+
+private boolean processPostDialChar(
+char)
+
+public void cancelPostDial()
+
+ boolean compareTo(
+com.android.internal.telephony.gsm.DriverCall)
+
+ com.android.internal.telephony.Connection$DisconnectCause disconnectCauseFromCode(
+int)
+
+ void fakeHoldBeforeDial()
+
+public java.lang.String getAddress()
+
+public com.android.internal.telephony.Call getCall()
+
+public long getConnectTime()
+
+public long getCreateTime()
+
+public com.android.internal.telephony.Connection$DisconnectCause getDisconnectCause()
+
+public long getDisconnectTime()
+
+public long getDurationMillis()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+ int getGSMIndex()
+
+public long getHoldDurationMillis()
+
+public com.android.internal.telephony.Connection$PostDialState getPostDialState()
+
+public java.lang.String getRemainingPostDialString()
+
+public com.android.internal.telephony.Call$State getState()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public void hangup()
+
+public boolean isIncoming()
+
+ void onConnectedInOrOut()
+
+ void onDisconnect(
+com.android.internal.telephony.Connection$DisconnectCause)
+
+ void onHangupLocal()
+
+ void onRemoteDisconnect(
+int)
+
+public void proceedAfterWaitChar()
+
+public void proceedAfterWildChar(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public void separate()
+
+public java.lang.String toString()
+
+ boolean update(
+com.android.internal.telephony.gsm.DriverCall)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/GSMPhone; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class com.android.internal.telephony.gsm.GSMPhone$2 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$com$android$internal$telephony$Phone$DataState
+
+static final int[] $SwitchMap$com$android$internal$telephony$gsm$DataConnectionTracker$Activity
+
+static final int[] $SwitchMap$com$android$internal$telephony$gsm$DataConnectionTracker$State
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =MyHandler )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/GSMPhone; )
+ class com.android.internal.telephony.gsm.GSMPhone$MyHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+final com.android.internal.telephony.gsm.GSMPhone this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.GSMPhone)
+
+ void <init>(
+com.android.internal.telephony.gsm.GSMPhone
+android.os.Looper)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =NetworkSelectMessage )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/GSMPhone; )
+ class com.android.internal.telephony.gsm.GSMPhone$NetworkSelectMessage extends java.lang.Object
+
+----------------FIELDS----------------
+
+public android.os.Message message
+
+public java.lang.String operatorNumeric
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+com.android.internal.telephony.gsm.GSMPhone$1)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/GSMPhone$2;Lcom/android/internal/telephony/gsm/GSMPhone$MyHandler;Lcom/android/internal/telephony/gsm/GSMPhone$NetworkSelectMessage; )
+public class com.android.internal.telephony.gsm.GSMPhone extends com.android.internal.telephony.PhoneBase
+
+----------------FIELDS----------------
+
+public static final java.lang.String CIPHERING_KEY
+
+public static final java.lang.String CLIR_KEY
+
+public static final java.lang.String DATA_DISABLED_ON_BOOT_KEY
+
+static final int EVENT_CALL_RING
+
+static final int EVENT_GET_BASEBAND_VERSION_DONE
+
+static final int EVENT_GET_CALL_FORWARD_DONE
+
+static final int EVENT_GET_IMEISV_DONE
+
+static final int EVENT_GET_IMEI_DONE
+
+static final int EVENT_GET_SIM_STATUS_DONE
+
+static final int EVENT_MMI_DONE
+
+static final int EVENT_RADIO_AVAILABLE
+
+static final int EVENT_RADIO_OFF_OR_NOT_AVAILABLE
+
+static final int EVENT_RADIO_ON
+
+static final int EVENT_REGISTERED_TO_NETWORK
+
+static final int EVENT_SET_CALL_FORWARD_DONE
+
+static final int EVENT_SET_CLIR_COMPLETE
+
+static final int EVENT_SET_NETWORK_AUTOMATIC_COMPLETE
+
+static final int EVENT_SET_NETWORK_MANUAL_COMPLETE
+
+static final int EVENT_SIM_RECORDS_LOADED
+
+static final int EVENT_SSN
+
+static final int EVENT_USSD
+
+private static final boolean LOCAL_DEBUG
+
+static final java.lang.String LOG_TAG
+
+public static final java.lang.String NETWORK_SELECTION_KEY
+
+ java.lang.Thread debugPortThread
+
+ java.net.ServerSocket debugSocket
+
+ com.android.internal.telephony.gsm.GSMPhone$MyHandler h
+
+ com.android.internal.telephony.gsm.CommandsInterface mCM
+
+ com.android.internal.telephony.gsm.CallTracker mCT
+
+ com.android.internal.telephony.gsm.DataConnectionTracker mDataConnection
+
+private java.lang.String mImei
+
+private java.lang.String mImeiSv
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/GsmMmiCode;>; )
+ java.util.ArrayList mPendingMMIs
+
+ android.os.Registrant mPostDialHandler
+
+private int mReportedAttemptedConnects
+
+private int mReportedRadioResets
+
+private int mReportedSuccessfulConnects
+
+ com.android.internal.telephony.gsm.SIMFileHandler mSIMFileHandler
+
+ com.android.internal.telephony.gsm.SIMRecords mSIMRecords
+
+ com.android.internal.telephony.gsm.SMSDispatcher mSMS
+
+ com.android.internal.telephony.gsm.ServiceStateTracker mSST
+
+ com.android.internal.telephony.gsm.GsmSimCard mSimCard
+
+ com.android.internal.telephony.gsm.SimPhoneBookInterfaceManager mSimPhoneBookIntManager
+
+ com.android.internal.telephony.gsm.SimSmsInterfaceManager mSimSmsIntManager
+
+ android.os.RegistrantList mSsnRegistrants
+
+ com.android.internal.telephony.gsm.stk.Service mStkService
+
+ com.android.internal.telephony.PhoneSubInfo mSubInfo
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+com.android.internal.telephony.gsm.CommandsInterface
+com.android.internal.telephony.PhoneNotifier)
+
+public void <init>(
+android.content.Context
+com.android.internal.telephony.gsm.CommandsInterface
+com.android.internal.telephony.PhoneNotifier
+boolean)
+
+static void access$100(
+com.android.internal.telephony.gsm.GSMPhone)
+
+static android.content.Context access$200(
+com.android.internal.telephony.gsm.GSMPhone)
+
+static java.lang.String access$302(
+com.android.internal.telephony.gsm.GSMPhone
+java.lang.String)
+
+static java.lang.String access$402(
+com.android.internal.telephony.gsm.GSMPhone
+java.lang.String)
+
+static void access$500(
+com.android.internal.telephony.gsm.GSMPhone
+int
+java.lang.String)
+
+static void access$600(
+com.android.internal.telephony.gsm.GSMPhone
+com.android.internal.telephony.gsm.CallForwardInfo[])
+
+static void access$700(
+com.android.internal.telephony.gsm.GSMPhone
+android.os.AsyncResult)
+
+private java.lang.String getSavedNetworkSelection()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+private boolean handleCallDeflectionIncallSupplementaryService(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+private boolean handleCallHoldIncallSupplementaryService(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+private boolean handleCallWaitingIncallSupplementaryService(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+private boolean handleCcbsIncallSupplementaryService(
+java.lang.String)
+
+private void handleCfuQueryResult(
+com.android.internal.telephony.gsm.CallForwardInfo[])
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+private boolean handleEctIncallSupplementaryService(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+private boolean handleMultipartyIncallSupplementaryService(
+java.lang.String)
+
+private void handleSetSelectNetwork(
+android.os.AsyncResult)
+
+private boolean isCfEnable(
+int)
+
+private boolean isValidCommandInterfaceCFAction(
+int)
+
+private boolean isValidCommandInterfaceCFReason(
+int)
+
+private void onIncomingUSSD(
+int
+java.lang.String)
+
+private void onNetworkInitiatedUssd(
+com.android.internal.telephony.gsm.GsmMmiCode)
+
+private void syncClirSetting()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public void acceptCall()
+
+public boolean canConference()
+
+public boolean canDial()
+
+public boolean canTransfer()
+
+public void clearDisconnected()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public void conference()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public com.android.internal.telephony.Connection dial(
+java.lang.String)
+
+public int disableApnType(
+java.lang.String)
+
+public boolean disableDataConnectivity()
+
+public void disableLocationUpdates()
+
+public int enableApnType(
+java.lang.String)
+
+public boolean enableDataConnectivity()
+
+public void enableLocationUpdates()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public void explicitCallTransfer()
+
+public java.lang.String getActiveApn()
+
+public java.lang.String[] getActiveApnTypes()
+
+public void getAvailableNetworks(
+android.os.Message)
+
+public com.android.internal.telephony.Call getBackgroundCall()
+
+public boolean getCallForwardingIndicator()
+
+public void getCallForwardingOption(
+int
+android.os.Message)
+
+public void getCallWaiting(
+android.os.Message)
+
+public android.telephony.CellLocation getCellLocation()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Lcom/android/internal/telephony/gsm/PdpConnection;>; )
+public java.util.List getCurrentPdpList()
+
+public com.android.internal.telephony.Phone$DataActivityState getDataActivityState()
+
+public com.android.internal.telephony.Phone$DataState getDataConnectionState()
+
+public boolean getDataRoamingEnabled()
+
+public java.lang.String getDeviceId()
+
+public java.lang.String getDeviceSvn()
+
+public java.lang.String[] getDnsServers(
+java.lang.String)
+
+public com.android.internal.telephony.Call getForegroundCall()
+
+public java.lang.String getGateway(
+java.lang.String)
+
+public java.lang.String getInterfaceName(
+java.lang.String)
+
+public java.lang.String getIpAddress(
+java.lang.String)
+
+public java.lang.String getLine1AlphaTag()
+
+public java.lang.String getLine1Number()
+
+public boolean getMessageWaitingIndicator()
+
+public boolean getMute()
+
+public void getNeighboringCids(
+android.os.Message)
+
+public void getOutgoingCallerIdDisplay(
+android.os.Message)
+
+public void getPdpContextList(
+android.os.Message)
+@dalvik.annotation.Signature (value =()Ljava/util/List<+Lcom/android/internal/telephony/MmiCode;>; )
+public java.util.List getPendingMmiCodes()
+
+public java.lang.String getPhoneName()
+
+public void getPreferredNetworkType(
+android.os.Message)
+
+public com.android.internal.telephony.Call getRingingCall()
+
+public android.telephony.ServiceState getServiceState()
+
+public int getSignalStrengthASU()
+
+public com.android.internal.telephony.SimCard getSimCard()
+
+public boolean getSimRecordsLoaded()
+
+public java.lang.String getSimSerialNumber()
+
+public com.android.internal.telephony.Phone$State getState()
+
+public java.lang.String getSubscriberId()
+
+public java.lang.String getVoiceMailAlphaTag()
+
+public java.lang.String getVoiceMailNumber()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public boolean handleInCallMmiCommands(
+java.lang.String)
+
+public boolean handlePinMmi(
+java.lang.String)
+
+public void invokeOemRilRequestRaw(
+byte[]
+android.os.Message)
+
+public void invokeOemRilRequestStrings(
+java.lang.String[]
+android.os.Message)
+
+public boolean isDataConnectivityPossible()
+
+ boolean isInCall()
+
+ void notifyCallForwardingIndicator()
+
+ void notifyCallStateChanged()
+
+ void notifyDataActivity()
+
+ void notifyDataConnection(
+java.lang.String)
+
+ void notifyDataConnectionFailed(
+java.lang.String)
+
+ void notifyDisconnect(
+com.android.internal.telephony.Connection)
+
+ void notifyIncomingRing()
+
+ void notifyLocationChanged()
+
+ void notifyMessageWaitingIndicator()
+
+ void notifyNewRingingConnection(
+com.android.internal.telephony.Connection)
+
+ void notifyPhoneStateChanged()
+
+ void notifyServiceStateChanged(
+android.telephony.ServiceState)
+
+ void notifySignalStrength()
+
+ void notifySuppServiceFailed(
+com.android.internal.telephony.Phone$SuppService)
+
+ void notifyUnknownConnection()
+
+ void onMMIDone(
+com.android.internal.telephony.gsm.GsmMmiCode)
+
+public void queryAvailableBandMode(
+android.os.Message)
+
+public void registerForSuppServiceNotification(
+android.os.Handler
+int
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public void rejectCall()
+
+ void restoreSavedNetworkSelection(
+android.os.Message)
+
+ void saveClirSetting(
+int)
+
+public void selectNetworkManually(
+com.android.internal.telephony.gsm.NetworkInfo
+android.os.Message)
+
+public void sendDtmf(
+char)
+
+public void sendUssdResponse(
+java.lang.String)
+
+public void setBandMode(
+int
+android.os.Message)
+
+public void setCallForwardingOption(
+int
+int
+java.lang.String
+int
+android.os.Message)
+
+public void setCallWaiting(
+boolean
+android.os.Message)
+
+public void setDataRoamingEnabled(
+boolean)
+
+public void setLine1Number(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void setMute(
+boolean)
+
+public void setNetworkSelectionModeAutomatic(
+android.os.Message)
+
+public void setOnPostDialCharacter(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setOutgoingCallerIdDisplay(
+int
+android.os.Message)
+
+public void setPreferredNetworkType(
+int
+android.os.Message)
+
+public void setRadioPower(
+boolean)
+
+ void setSystemProperty(
+java.lang.String
+java.lang.String)
+
+public void setVoiceMailNumber(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void simulateDataConnection(
+com.android.internal.telephony.Phone$DataState)
+
+public void startDtmf(
+char)
+
+public void stopDtmf()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/CallStateException; )
+public void switchHoldingAndActive()
+
+public void unregisterForSuppServiceNotification(
+android.os.Handler)
+
+ void updateMessageWaitingIndicator(
+boolean)
+
+public void updateServiceLocation(
+android.os.Message)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.GsmAlphabet extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final byte GSM_EXTENDED_ESCAPE
+
+static final java.lang.String LOG_TAG
+
+private static final android.util.SparseIntArray charToGsm
+
+private static final android.util.SparseIntArray charToGsmExtended
+
+private static final android.util.SparseIntArray gsmExtendedToChar
+
+private static final android.util.SparseIntArray gsmToChar
+
+private static int sGsmSpaceChar
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static int charToGsm(
+char)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/EncodeException; )
+public static int charToGsm(
+char
+boolean)
+
+public static int charToGsmExtended(
+char)
+
+public static int countGsmSeptets(
+char)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/EncodeException; )
+public static int countGsmSeptets(
+char
+boolean)
+
+public static int countGsmSeptets(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/EncodeException; )
+public static int countGsmSeptets(
+java.lang.String
+boolean)
+
+public static int findGsmSeptetLimitIndex(
+java.lang.String
+int
+int)
+
+public static java.lang.String gsm7BitPackedToString(
+byte[]
+int
+int)
+
+public static java.lang.String gsm7BitPackedToString(
+byte[]
+int
+int
+int)
+
+public static java.lang.String gsm8BitUnpackedToString(
+byte[]
+int
+int)
+
+public static char gsmExtendedToChar(
+int)
+
+public static char gsmToChar(
+int)
+
+private static void packSmsChar(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/EncodeException; )
+public static byte[] stringToGsm7BitPacked(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/EncodeException; )
+public static byte[] stringToGsm7BitPacked(
+java.lang.String
+int
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/EncodeException; )
+public static byte[] stringToGsm7BitPackedWithHeader(
+java.lang.String
+byte[])
+
+public static byte[] stringToGsm8BitPacked(
+java.lang.String)
+
+public static void stringToGsm8BitUnpackedField(
+java.lang.String
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public final class com.android.internal.telephony.gsm.GsmMmiCode extends android.os.Handler implements com.android.internal.telephony.MmiCode
+
+----------------FIELDS----------------
+
+static final java.lang.String ACTION_ACTIVATE
+
+static final java.lang.String ACTION_DEACTIVATE
+
+static final java.lang.String ACTION_ERASURE
+
+static final java.lang.String ACTION_INTERROGATE
+
+static final java.lang.String ACTION_REGISTER
+
+static final int EVENT_GET_CLIR_COMPLETE
+
+static final int EVENT_QUERY_CF_COMPLETE
+
+static final int EVENT_QUERY_COMPLETE
+
+static final int EVENT_SET_CFF_COMPLETE
+
+static final int EVENT_SET_COMPLETE
+
+static final int EVENT_USSD_CANCEL_COMPLETE
+
+static final int EVENT_USSD_COMPLETE
+
+static final java.lang.String LOG_TAG
+
+static final int MATCH_GROUP_ACTION
+
+static final int MATCH_GROUP_DIALING_NUMBER
+
+static final int MATCH_GROUP_POUND_STRING
+
+static final int MATCH_GROUP_PWD_CONFIRM
+
+static final int MATCH_GROUP_SERVICE_CODE
+
+static final int MATCH_GROUP_SIA
+
+static final int MATCH_GROUP_SIB
+
+static final int MATCH_GROUP_SIC
+
+static final java.lang.String SC_BAIC
+
+static final java.lang.String SC_BAICr
+
+static final java.lang.String SC_BAOC
+
+static final java.lang.String SC_BAOIC
+
+static final java.lang.String SC_BAOICxH
+
+static final java.lang.String SC_BA_ALL
+
+static final java.lang.String SC_BA_MO
+
+static final java.lang.String SC_BA_MT
+
+static final java.lang.String SC_CFB
+
+static final java.lang.String SC_CFNR
+
+static final java.lang.String SC_CFNRy
+
+static final java.lang.String SC_CFU
+
+static final java.lang.String SC_CF_All
+
+static final java.lang.String SC_CF_All_Conditional
+
+static final java.lang.String SC_CLIP
+
+static final java.lang.String SC_CLIR
+
+static final java.lang.String SC_PIN
+
+static final java.lang.String SC_PIN2
+
+static final java.lang.String SC_PUK
+
+static final java.lang.String SC_PUK2
+
+static final java.lang.String SC_PWD
+
+static final java.lang.String SC_WAIT
+
+static java.util.regex.Pattern sPatternSuppService
+
+ java.lang.String action
+
+ android.content.Context context
+
+ java.lang.String dialingNumber
+
+private boolean isPendingUSSD
+
+private boolean isUssdRequest
+
+ java.lang.CharSequence message
+
+ com.android.internal.telephony.gsm.GSMPhone phone
+
+ java.lang.String poundString
+
+ java.lang.String pwd
+
+ java.lang.String sc
+
+ java.lang.String sia
+
+ java.lang.String sib
+
+ java.lang.String sic
+
+ com.android.internal.telephony.MmiCode$State state
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+com.android.internal.telephony.gsm.GSMPhone)
+
+private java.lang.CharSequence createQueryCallWaitingResultMessage(
+int)
+
+private java.lang.CharSequence getScString()
+
+private void handlePasswordError(
+int)
+
+private static boolean isEmptyOrNull(
+java.lang.CharSequence)
+
+static boolean isServiceCodeCallBarring(
+java.lang.String)
+
+static boolean isServiceCodeCallForwarding(
+java.lang.String)
+
+private static boolean isShortCode(
+java.lang.String
+com.android.internal.telephony.gsm.GSMPhone)
+
+private java.lang.CharSequence makeCFQueryResultMessage(
+com.android.internal.telephony.gsm.CallForwardInfo
+int)
+
+private static java.lang.String makeEmptyNull(
+java.lang.String)
+
+static com.android.internal.telephony.gsm.GsmMmiCode newFromDialString(
+java.lang.String
+com.android.internal.telephony.gsm.GSMPhone)
+
+static com.android.internal.telephony.gsm.GsmMmiCode newFromUssdUserInput(
+java.lang.String
+com.android.internal.telephony.gsm.GSMPhone)
+
+static com.android.internal.telephony.gsm.GsmMmiCode newNetworkInitiatedUssd(
+java.lang.String
+boolean
+com.android.internal.telephony.gsm.GSMPhone)
+
+private void onGetClirComplete(
+android.os.AsyncResult)
+
+private void onQueryCfComplete(
+android.os.AsyncResult)
+
+private void onQueryComplete(
+android.os.AsyncResult)
+
+private void onSetComplete(
+android.os.AsyncResult)
+
+static java.lang.String scToBarringFacility(
+java.lang.String)
+
+private static int scToCallForwardReason(
+java.lang.String)
+
+private java.lang.CharSequence serviceClassToCFString(
+int)
+
+private static int siToServiceClass(
+java.lang.String)
+
+private static int siToTime(
+java.lang.String)
+
+public void cancel()
+
+ int getCLIRMode()
+
+public java.lang.CharSequence getMessage()
+
+public com.android.internal.telephony.MmiCode$State getState()
+
+public void handleMessage(
+android.os.Message)
+
+ boolean isActivate()
+
+public boolean isCancelable()
+
+ boolean isDeactivate()
+
+ boolean isErasure()
+
+ boolean isInterrogate()
+
+ boolean isMMI()
+
+public boolean isPendingUSSD()
+
+ boolean isPinCommand()
+
+ boolean isRegister()
+
+ boolean isShortCode()
+
+ boolean isTemporaryModeCLIR()
+
+public boolean isUssdRequest()
+
+ void onUssdFinished(
+java.lang.String
+boolean)
+
+ void onUssdFinishedError()
+
+ void processCode()
+
+ void sendUssd(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/GsmSimCard; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class com.android.internal.telephony.gsm.GsmSimCard$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$com$android$internal$telephony$gsm$CommandsInterface$RadioState
+
+static final int[] $SwitchMap$com$android$internal$telephony$gsm$CommandsInterface$SimStatus
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/GsmSimCard$1; )
+public final class com.android.internal.telephony.gsm.GsmSimCard extends android.os.Handler implements com.android.internal.telephony.SimCard
+
+----------------FIELDS----------------
+
+private static final boolean DBG
+
+static final int EVENT_CHANGE_FACILITY_FDN_DONE
+
+static final int EVENT_CHANGE_FACILITY_LOCK_DONE
+
+static final int EVENT_CHANGE_SIM_PASSWORD_DONE
+
+static final int EVENT_GET_SIM_STATUS_DONE
+
+static final int EVENT_PINPUK_DONE
+
+static final int EVENT_QUERY_FACILITY_FDN_DONE
+
+static final int EVENT_QUERY_FACILITY_LOCK_DONE
+
+static final int EVENT_RADIO_OFF_OR_NOT_AVAILABLE
+
+static final int EVENT_REPOLL_STATUS_DONE
+
+static final int EVENT_SIM_LOCKED_OR_ABSENT
+
+static final int EVENT_SIM_READY
+
+static final java.lang.String LOG_TAG
+
+static final int NOTIFICATION_ID_SIM_STATUS
+
+private android.os.RegistrantList absentRegistrants
+
+private boolean mDesiredFdnEnabled
+
+private boolean mDesiredPinLocked
+
+private boolean mSimFdnEnabled
+
+private boolean mSimPinLocked
+
+private android.os.RegistrantList networkLockedRegistrants
+
+private com.android.internal.telephony.gsm.GSMPhone phone
+
+private android.os.RegistrantList pinLockedRegistrants
+
+private com.android.internal.telephony.gsm.CommandsInterface$SimStatus status
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.GSMPhone)
+
+private void getSimStatusDone(
+android.os.AsyncResult)
+
+private void handleSimStatus(
+com.android.internal.telephony.gsm.CommandsInterface$SimStatus)
+
+private void log(
+java.lang.String)
+
+private void onQueryFacilityLock(
+android.os.AsyncResult)
+
+private void onQueryFdnEnabled(
+android.os.AsyncResult)
+
+private void updateStateProperty()
+
+public void broadcastSimStateChangedIntent(
+java.lang.String
+java.lang.String)
+
+public void changeSimFdnPassword(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void changeSimLockPassword(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public java.lang.String getServiceProviderName()
+
+public boolean getSimFdnEnabled()
+
+public boolean getSimLockEnabled()
+
+public com.android.internal.telephony.SimCard$State getState()
+
+public void handleMessage(
+android.os.Message)
+
+public void registerForAbsent(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForLocked(
+android.os.Handler
+int
+java.lang.Object)
+
+public void registerForNetworkLocked(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setSimFdnEnabled(
+boolean
+java.lang.String
+android.os.Message)
+
+public void setSimLockEnabled(
+boolean
+java.lang.String
+android.os.Message)
+
+public void supplyNetworkDepersonalization(
+java.lang.String
+android.os.Message)
+
+public void supplyPin(
+java.lang.String
+android.os.Message)
+
+public void supplyPin2(
+java.lang.String
+android.os.Message)
+
+public void supplyPuk(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void supplyPuk2(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void unregisterForAbsent(
+android.os.Handler)
+
+public void unregisterForLocked(
+android.os.Handler)
+
+public void unregisterForNetworkLocked(
+android.os.Handler)
+
+public void updateImsiConfiguration(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/ISimPhoneBook$Stub; )
+public abstract interface class com.android.internal.telephony.gsm.ISimPhoneBook extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Lcom/android/internal/telephony/gsm/AdnRecord;>; )
+public abstract java.util.List getAdnRecordsInEf(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract int[] getAdnRecordsSize(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean updateAdnRecordsInEfByIndex(
+int
+java.lang.String
+java.lang.String
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean updateAdnRecordsInEfBySearch(
+int
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/ISimPhoneBook$Stub; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+ class com.android.internal.telephony.gsm.ISimPhoneBook$Stub$Proxy extends java.lang.Object implements com.android.internal.telephony.gsm.ISimPhoneBook
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Lcom/android/internal/telephony/gsm/AdnRecord;>; )
+public java.util.List getAdnRecordsInEf(
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public int[] getAdnRecordsSize(
+int)
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean updateAdnRecordsInEfByIndex(
+int
+java.lang.String
+java.lang.String
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean updateAdnRecordsInEfBySearch(
+int
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/ISimPhoneBook; )
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/ISimPhoneBook$Stub$Proxy; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class com.android.internal.telephony.gsm.ISimPhoneBook$Stub extends android.os.Binder implements com.android.internal.telephony.gsm.ISimPhoneBook
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_getAdnRecordsInEf
+
+static final int TRANSACTION_getAdnRecordsSize
+
+static final int TRANSACTION_updateAdnRecordsInEfByIndex
+
+static final int TRANSACTION_updateAdnRecordsInEfBySearch
+----------------METHODS----------------
+
+public void <init>()
+
+public static com.android.internal.telephony.gsm.ISimPhoneBook asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/ISms$Stub; )
+public abstract interface class com.android.internal.telephony.gsm.ISms extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean copyMessageToSimEf(
+int
+byte[]
+byte[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =()Ljava/util/List<Lcom/android/internal/telephony/gsm/SmsRawData;>; )
+public abstract java.util.List getAllMessagesFromSimEf()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;Ljava/util/List<Landroid/app/PendingIntent;>;Ljava/util/List<Landroid/app/PendingIntent;>;)V )
+public abstract void sendMultipartText(
+java.lang.String
+java.lang.String
+java.util.List
+java.util.List
+java.util.List)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void sendRawPdu(
+byte[]
+byte[]
+android.app.PendingIntent
+android.app.PendingIntent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean updateMessageOnSimEf(
+int
+int
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/ISms$Stub; )
+ class com.android.internal.telephony.gsm.ISms$Stub$Proxy extends java.lang.Object implements com.android.internal.telephony.gsm.ISms
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean copyMessageToSimEf(
+int
+byte[]
+byte[])
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+@dalvik.annotation.Signature (value =()Ljava/util/List<Lcom/android/internal/telephony/gsm/SmsRawData;>; )
+public java.util.List getAllMessagesFromSimEf()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;Ljava/util/List<Landroid/app/PendingIntent;>;Ljava/util/List<Landroid/app/PendingIntent;>;)V )
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void sendMultipartText(
+java.lang.String
+java.lang.String
+java.util.List
+java.util.List
+java.util.List)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void sendRawPdu(
+byte[]
+byte[]
+android.app.PendingIntent
+android.app.PendingIntent)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean updateMessageOnSimEf(
+int
+int
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/ISms$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/ISms; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class com.android.internal.telephony.gsm.ISms$Stub extends android.os.Binder implements com.android.internal.telephony.gsm.ISms
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_copyMessageToSimEf
+
+static final int TRANSACTION_getAllMessagesFromSimEf
+
+static final int TRANSACTION_sendMultipartText
+
+static final int TRANSACTION_sendRawPdu
+
+static final int TRANSACTION_updateMessageOnSimEf
+----------------METHODS----------------
+
+public void <init>()
+
+public static com.android.internal.telephony.gsm.ISms asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/lang/Comparable<Lcom/android/internal/telephony/gsm/MccTable$MccEntry;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =MccEntry )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/MccTable; )
+ class com.android.internal.telephony.gsm.MccTable$MccEntry extends java.lang.Object implements java.lang.Comparable
+
+----------------FIELDS----------------
+
+ java.lang.String iso
+
+ int mcc
+
+ int smallestDigitsMnc
+----------------METHODS----------------
+
+ void <init>(
+int
+java.lang.String
+int)
+
+public int compareTo(
+com.android.internal.telephony.gsm.MccTable$MccEntry)
+
+public volatile int compareTo(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/MccTable$MccEntry; )
+public final class com.android.internal.telephony.gsm.MccTable extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/MccTable$MccEntry;>; )
+static java.util.ArrayList table
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.lang.String countryCodeForMcc(
+int)
+
+private static com.android.internal.telephony.gsm.MccTable$MccEntry entryForMcc(
+int)
+
+public static int smallestDigitsMccForMnc(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/NetworkInfo; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Lcom/android/internal/telephony/gsm/NetworkInfo;>; )
+final class com.android.internal.telephony.gsm.NetworkInfo$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public com.android.internal.telephony.gsm.NetworkInfo createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public com.android.internal.telephony.gsm.NetworkInfo[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/NetworkInfo; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/NetworkInfo$State;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =State )
+public final class com.android.internal.telephony.gsm.NetworkInfo$State extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.NetworkInfo$State[] $VALUES
+
+public static final com.android.internal.telephony.gsm.NetworkInfo$State AVAILABLE
+
+public static final com.android.internal.telephony.gsm.NetworkInfo$State CURRENT
+
+public static final com.android.internal.telephony.gsm.NetworkInfo$State FORBIDDEN
+
+public static final com.android.internal.telephony.gsm.NetworkInfo$State UNKNOWN
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.gsm.NetworkInfo$State valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.NetworkInfo$State[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/NetworkInfo$State; )
+public class com.android.internal.telephony.gsm.NetworkInfo extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Lcom/android/internal/telephony/gsm/NetworkInfo;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+ java.lang.String operatorAlphaLong
+
+ java.lang.String operatorAlphaShort
+
+ java.lang.String operatorNumeric
+
+ com.android.internal.telephony.gsm.NetworkInfo$State state
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+com.android.internal.telephony.gsm.NetworkInfo$State)
+
+ void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private static com.android.internal.telephony.gsm.NetworkInfo$State rilStateToState(
+java.lang.String)
+
+public int describeContents()
+
+public java.lang.String getOperatorAlphaLong()
+
+public java.lang.String getOperatorAlphaShort()
+
+public java.lang.String getOperatorNumeric()
+
+public com.android.internal.telephony.gsm.NetworkInfo$State getState()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.PDPContextState extends java.lang.Object
+
+----------------FIELDS----------------
+
+public boolean active
+
+public java.lang.String address
+
+public java.lang.String apn
+
+public int cid
+
+public java.lang.String type
+----------------METHODS----------------
+
+public void <init>()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/PdpConnection; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class com.android.internal.telephony.gsm.PdpConnection$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$com$android$internal$telephony$gsm$DataLinkInterface$LinkState
+
+static final int[] $SwitchMap$com$android$internal$telephony$gsm$PdpConnection$PdpFailCause
+
+static final int[] $SwitchMap$com$android$internal$telephony$gsm$PdpConnection$PdpState
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/PdpConnection$PdpFailCause;>; )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/PdpConnection; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =PdpFailCause )
+public final class com.android.internal.telephony.gsm.PdpConnection$PdpFailCause extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.PdpConnection$PdpFailCause[] $VALUES
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpFailCause BAD_APN
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpFailCause BAD_PAP_SECRET
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpFailCause BARRED
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpFailCause NONE
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpFailCause NO_DATA_PLAN
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpFailCause NO_SIGNAL
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpFailCause RADIO_ERROR_RETRY
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpFailCause RADIO_NOT_AVIALABLE
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpFailCause RADIO_OFF
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpFailCause SERVICE_OPTION_NOT_SUBSCRIBED
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpFailCause SERVICE_OPTION_NOT_SUPPORTED
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpFailCause SIM_LOCKED
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpFailCause SUSPENED_TEMPORARY
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpFailCause UNKNOWN
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpFailCause USER_AUTHENTICATION
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.gsm.PdpConnection$PdpFailCause valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.PdpConnection$PdpFailCause[] values()
+
+public boolean isPermanentFail()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/PdpConnection$PdpState;>; )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/PdpConnection; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =PdpState )
+public final class com.android.internal.telephony.gsm.PdpConnection$PdpState extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.PdpConnection$PdpState[] $VALUES
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpState ACTIVATING
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpState ACTIVE
+
+public static final com.android.internal.telephony.gsm.PdpConnection$PdpState INACTIVE
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.gsm.PdpConnection$PdpState valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.PdpConnection$PdpState[] values()
+
+public boolean isActive()
+
+public boolean isInactive()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/PdpConnection$1;Lcom/android/internal/telephony/gsm/PdpConnection$PdpFailCause;Lcom/android/internal/telephony/gsm/PdpConnection$PdpState; )
+public class com.android.internal.telephony.gsm.PdpConnection extends android.os.Handler
+
+----------------FIELDS----------------
+
+private static final boolean DBG
+
+private static final int EVENT_DEACTIVATE_DONE
+
+private static final int EVENT_FORCE_RETRY
+
+private static final int EVENT_GET_LAST_FAIL_DONE
+
+private static final int EVENT_LINK_STATE_CHANGED
+
+private static final int EVENT_LOG_BAD_DNS_ADDRESS
+
+private static final int EVENT_SETUP_PDP_DONE
+
+private static final boolean FAKE_FAIL
+
+private static final java.lang.String LOG_TAG
+
+private static final java.lang.String NULL_IP
+
+private static final int PDP_FAIL_RIL_BAD_APN
+
+private static final int PDP_FAIL_RIL_BARRED
+
+private static final int PDP_FAIL_RIL_ERROR_UNSPECIFIED
+
+private static final int PDP_FAIL_RIL_SERVICE_OPTION_NOT_SUBSCRIBED
+
+private static final int PDP_FAIL_RIL_SERVICE_OPTION_NOT_SUPPORTED
+
+private static final int PDP_FAIL_RIL_USER_AUTHENTICATION
+
+private com.android.internal.telephony.gsm.ApnSetting apn
+
+private int cid
+
+private long createTime
+
+ com.android.internal.telephony.gsm.DataLink dataLink
+
+private java.lang.String[] dnsServers
+
+private java.lang.String gatewayAddress
+
+private java.lang.String interfaceName
+
+private java.lang.String ipAddress
+
+private com.android.internal.telephony.gsm.PdpConnection$PdpFailCause lastFailCause
+
+private long lastFailTime
+
+private android.os.Message onConnectCompleted
+
+private android.os.Message onDisconnect
+
+private java.lang.String pdp_name
+
+private com.android.internal.telephony.gsm.GSMPhone phone
+
+private boolean receivedDisconnectReq
+
+private com.android.internal.telephony.gsm.PdpConnection$PdpState state
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.GSMPhone)
+
+private com.android.internal.telephony.gsm.PdpConnection$PdpFailCause getFailCauseFromRequest(
+int)
+
+private void log(
+java.lang.String)
+
+private void notifyDisconnect(
+android.os.Message)
+
+private void notifyFail(
+com.android.internal.telephony.gsm.PdpConnection$PdpFailCause
+android.os.Message)
+
+private void notifySuccess(
+android.os.Message)
+
+private void onLinkStateChanged(
+com.android.internal.telephony.gsm.DataLinkInterface$LinkState)
+
+private void setHttpProxy(
+java.lang.String
+java.lang.String)
+
+ void clearSettings()
+
+ void connect(
+com.android.internal.telephony.gsm.ApnSetting
+android.os.Message)
+
+ void disconnect(
+android.os.Message)
+
+public com.android.internal.telephony.gsm.ApnSetting getApn()
+
+public long getConnectionTime()
+
+ java.lang.String[] getDnsServers()
+
+ java.lang.String getGatewayAddress()
+
+ java.lang.String getInterface()
+
+ java.lang.String getIpAddress()
+
+public com.android.internal.telephony.gsm.PdpConnection$PdpFailCause getLastFailCause()
+
+public long getLastFailTime()
+
+public com.android.internal.telephony.gsm.PdpConnection$PdpState getState()
+
+public void handleMessage(
+android.os.Message)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+final class com.android.internal.telephony.gsm.PppLink extends com.android.internal.telephony.gsm.DataLink implements com.android.internal.telephony.gsm.DataLinkInterface
+
+----------------FIELDS----------------
+
+static final byte[] DOWN_ASCII_STRING
+
+static final int EVENT_POLL_DATA_CONNECTION
+
+static final int EVENT_PPP_OPERSTATE_CHANGED
+
+static final int EVENT_PPP_PIDFILE_CHANGED
+
+private static final java.lang.String LOG_TAG
+
+static final java.lang.String PATH_PPP_OPERSTATE
+
+static final int POLL_SYSFS_MILLIS
+
+static final java.lang.String PROPERTY_PPPD_EXIT_CODE
+
+static final java.lang.String SERVICE_PPPD_GPRS
+
+static final byte[] UNKNOWN_ASCII_STRING
+
+static final byte[] UP_ASCII_STRING
+
+ int lastPppdExitCode
+
+private final byte[] mCheckPPPBuffer
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+com.android.internal.telephony.gsm.DataConnectionTracker)
+
+private void checkPPP()
+
+public void connect()
+
+public void disconnect()
+
+public int getLastLinkExitCode()
+
+public void handleMessage(
+android.os.Message)
+
+public void setPasswordInfo(
+android.database.Cursor)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/RIL; )
+ class com.android.internal.telephony.gsm.RIL$1 extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+final com.android.internal.telephony.gsm.RIL this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.RIL)
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =RILReceiver )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/RIL; )
+ class com.android.internal.telephony.gsm.RIL$RILReceiver extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+ byte[] buffer
+
+final com.android.internal.telephony.gsm.RIL this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.RIL)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =RILSender )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/RIL; )
+ class com.android.internal.telephony.gsm.RIL$RILSender extends java.lang.Object implements android.os.HandlerInterface, java.lang.Runnable
+
+----------------FIELDS----------------
+
+ byte[] dataLength
+
+final com.android.internal.telephony.gsm.RIL this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.RIL)
+
+public void handleMessage(
+android.os.Message)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/RIL$RILReceiver;Lcom/android/internal/telephony/gsm/RIL$RILSender; )
+public final class com.android.internal.telephony.gsm.RIL extends com.android.internal.telephony.gsm.BaseCommands implements com.android.internal.telephony.gsm.CommandsInterface
+
+----------------FIELDS----------------
+
+private static final boolean DBG
+
+static final int EVENT_SEND
+
+static final int EVENT_WAKE_LOCK_TIMEOUT
+
+static final java.lang.String LOG_TAG
+
+static final int RESPONSE_SOLICITED
+
+static final int RESPONSE_UNSOLICITED
+
+static final boolean RILJ_LOG
+
+static final int RIL_MAX_COMMAND_BYTES
+
+static final java.lang.String SOCKET_NAME_RIL
+
+static final int SOCKET_OPEN_RETRY_MILLIS
+
+static int WAKE_LOCK_TIMEOUT
+
+private android.content.Context mContext
+
+private boolean mInitialRadioStateChange
+
+ android.content.BroadcastReceiver mIntentReceiver
+
+ java.lang.Object mLastNITZTimeInfo
+
+ com.android.internal.telephony.gsm.RIL$RILReceiver mReceiver
+
+ java.lang.Thread mReceiverThread
+
+ int mRequestMessagesPending
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/RILRequest;>; )
+ java.util.ArrayList mRequestsList
+
+ com.android.internal.telephony.gsm.RIL$RILSender mSender
+
+ android.os.Handler mSenderH
+
+ com.android.internal.os.HandlerThread mSenderThread
+
+ android.net.LocalSocket mSocket
+
+ android.os.PowerManager$WakeLock mWakeLock
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+static void access$000(
+com.android.internal.telephony.gsm.RIL
+boolean)
+
+static com.android.internal.telephony.gsm.RILRequest access$100(
+com.android.internal.telephony.gsm.RIL
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static int access$200(
+java.io.InputStream
+byte[])
+
+static void access$300(
+com.android.internal.telephony.gsm.RIL
+android.os.Parcel)
+
+private void acquireWakeLock()
+
+private com.android.internal.telephony.gsm.RILRequest findAndRemoveRequestFromList(
+int)
+
+private void processResponse(
+android.os.Parcel)
+
+private void processSolicited(
+android.os.Parcel)
+
+private void processUnsolicited(
+android.os.Parcel)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static int readRilMessage(
+java.io.InputStream
+byte[])
+
+private void releaseWakeLockIfDone()
+
+static java.lang.String requestToString(
+int)
+
+private java.lang.Object responseCallForward(
+android.os.Parcel)
+
+private java.lang.Object responseCallList(
+android.os.Parcel)
+
+private java.lang.Object responseContextList(
+android.os.Parcel)
+
+private java.lang.Object responseInts(
+android.os.Parcel)
+
+private java.lang.Object responseNetworkInfos(
+android.os.Parcel)
+
+private java.lang.Object responseRaw(
+android.os.Parcel)
+
+private java.lang.Object responseSIM_IO(
+android.os.Parcel)
+
+private java.lang.Object responseSMS(
+android.os.Parcel)
+
+private java.lang.Object responseSimStatus(
+android.os.Parcel)
+
+private java.lang.Object responseString(
+android.os.Parcel)
+
+private java.lang.Object responseStrings(
+android.os.Parcel)
+
+private java.lang.Object responseSuppServiceNotification(
+android.os.Parcel)
+
+private java.lang.Object responseVoid(
+android.os.Parcel)
+
+private java.lang.String retToString(
+int
+java.lang.Object)
+
+private void riljLog(
+java.lang.String)
+
+private void send(
+com.android.internal.telephony.gsm.RILRequest)
+
+private void sendScreenState(
+boolean)
+
+private void setRadioStateFromRILInt(
+int)
+
+private int translateStatus(
+int)
+
+public void acceptCall(
+android.os.Message)
+
+public void acknowledgeLastIncomingSMS(
+boolean
+android.os.Message)
+
+public void cancelPendingUssd(
+android.os.Message)
+
+public void changeBarringPassword(
+java.lang.String
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void changeSimPin(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void changeSimPin2(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void conference(
+android.os.Message)
+
+public void deactivateDefaultPDP(
+int
+android.os.Message)
+
+public void deleteSmsOnSim(
+int
+android.os.Message)
+
+public void dial(
+java.lang.String
+int
+android.os.Message)
+
+public void explicitCallTransfer(
+android.os.Message)
+
+public void getAvailableNetworks(
+android.os.Message)
+
+public void getBasebandVersion(
+android.os.Message)
+
+public void getCLIR(
+android.os.Message)
+
+public void getCurrentCalls(
+android.os.Message)
+
+public void getGPRSRegistrationState(
+android.os.Message)
+
+public void getIMEI(
+android.os.Message)
+
+public void getIMEISV(
+android.os.Message)
+
+public void getIMSI(
+android.os.Message)
+
+public void getLastCallFailCause(
+android.os.Message)
+
+public void getLastPdpFailCause(
+android.os.Message)
+
+public void getMute(
+android.os.Message)
+
+public void getNeighboringCids(
+android.os.Message)
+
+public void getNetworkSelectionMode(
+android.os.Message)
+
+public void getOperator(
+android.os.Message)
+
+public void getPDPContextList(
+android.os.Message)
+
+public void getPreferredNetworkType(
+android.os.Message)
+
+public void getRegistrationState(
+android.os.Message)
+
+public void getSignalStrength(
+android.os.Message)
+
+public void getSimStatus(
+android.os.Message)
+
+public void handleCallSetupRequestFromSim(
+boolean
+android.os.Message)
+
+public void hangupConnection(
+int
+android.os.Message)
+
+public void hangupForegroundResumeBackground(
+android.os.Message)
+
+public void hangupWaitingOrBackground(
+android.os.Message)
+
+public void invokeOemRilRequestRaw(
+byte[]
+android.os.Message)
+
+public void invokeOemRilRequestStrings(
+java.lang.String[]
+android.os.Message)
+
+protected void onRadioAvailable()
+
+public void queryAvailableBandMode(
+android.os.Message)
+
+public void queryCLIP(
+android.os.Message)
+
+public void queryCallForwardStatus(
+int
+int
+java.lang.String
+android.os.Message)
+
+public void queryCallWaiting(
+int
+android.os.Message)
+
+public void queryFacilityLock(
+java.lang.String
+java.lang.String
+int
+android.os.Message)
+
+public void rejectCall(
+android.os.Message)
+
+public void resetRadio(
+android.os.Message)
+
+public void sendDtmf(
+char
+android.os.Message)
+
+public void sendEnvelope(
+java.lang.String
+android.os.Message)
+
+public void sendSMS(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void sendTerminalResponse(
+java.lang.String
+android.os.Message)
+
+public void sendUSSD(
+java.lang.String
+android.os.Message)
+
+public void separateConnection(
+int
+android.os.Message)
+
+public void setBandMode(
+int
+android.os.Message)
+
+public void setCLIR(
+int
+android.os.Message)
+
+public void setCallForward(
+int
+int
+int
+java.lang.String
+int
+android.os.Message)
+
+public void setCallWaiting(
+boolean
+int
+android.os.Message)
+
+public void setFacilityLock(
+java.lang.String
+boolean
+java.lang.String
+int
+android.os.Message)
+
+public void setLocationUpdates(
+boolean
+android.os.Message)
+
+public void setMute(
+boolean
+android.os.Message)
+
+public void setNetworkSelectionModeAutomatic(
+android.os.Message)
+
+public void setNetworkSelectionModeManual(
+java.lang.String
+android.os.Message)
+
+public void setOnNITZTime(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setPreferredNetworkType(
+int
+android.os.Message)
+
+public void setRadioPower(
+boolean
+android.os.Message)
+
+public void setSuppServiceNotifications(
+boolean
+android.os.Message)
+
+public void setupDefaultPDP(
+java.lang.String
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void simIO(
+int
+int
+java.lang.String
+int
+int
+int
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void startDtmf(
+char
+android.os.Message)
+
+public void stopDtmf(
+android.os.Message)
+
+public void supplyNetworkDepersonalization(
+java.lang.String
+android.os.Message)
+
+public void supplySimPin(
+java.lang.String
+android.os.Message)
+
+public void supplySimPin2(
+java.lang.String
+android.os.Message)
+
+public void supplySimPuk(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void supplySimPuk2(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void switchWaitingOrHoldingAndActive(
+android.os.Message)
+
+public void writeSmsToSim(
+int
+java.lang.String
+java.lang.String
+android.os.Message)
+
+________________CLASS________________
+
+
+abstract interface class com.android.internal.telephony.gsm.RILConstants extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int GENERIC_FAILURE
+
+public static final int OP_NOT_ALLOWED_BEFORE_REG_NW
+
+public static final int OP_NOT_ALLOWED_DURING_VOICE_CALL
+
+public static final int PASSWORD_INCORRECT
+
+public static final int RADIO_NOT_AVAILABLE
+
+public static final int REQUEST_CANCELLED
+
+public static final int REQUEST_NOT_SUPPORTED
+
+public static final int RIL_ERRNO_INVALID_RESPONSE
+
+public static final int RIL_REQUEST_ANSWER
+
+public static final int RIL_REQUEST_BASEBAND_VERSION
+
+public static final int RIL_REQUEST_CANCEL_USSD
+
+public static final int RIL_REQUEST_CHANGE_BARRING_PASSWORD
+
+public static final int RIL_REQUEST_CHANGE_SIM_PIN
+
+public static final int RIL_REQUEST_CHANGE_SIM_PIN2
+
+public static final int RIL_REQUEST_CONFERENCE
+
+public static final int RIL_REQUEST_DEACTIVATE_DEFAULT_PDP
+
+public static final int RIL_REQUEST_DELETE_SMS_ON_SIM
+
+public static final int RIL_REQUEST_DIAL
+
+public static final int RIL_REQUEST_DTMF
+
+public static final int RIL_REQUEST_DTMF_START
+
+public static final int RIL_REQUEST_DTMF_STOP
+
+public static final int RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION
+
+public static final int RIL_REQUEST_ENTER_SIM_PIN
+
+public static final int RIL_REQUEST_ENTER_SIM_PIN2
+
+public static final int RIL_REQUEST_ENTER_SIM_PUK
+
+public static final int RIL_REQUEST_ENTER_SIM_PUK2
+
+public static final int RIL_REQUEST_EXPLICIT_CALL_TRANSFER
+
+public static final int RIL_REQUEST_GET_CLIR
+
+public static final int RIL_REQUEST_GET_CURRENT_CALLS
+
+public static final int RIL_REQUEST_GET_IMEI
+
+public static final int RIL_REQUEST_GET_IMEISV
+
+public static final int RIL_REQUEST_GET_IMSI
+
+public static final int RIL_REQUEST_GET_MUTE
+
+public static final int RIL_REQUEST_GET_NEIGHBORING_CELL_IDS
+
+public static final int RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE
+
+public static final int RIL_REQUEST_GET_SIM_STATUS
+
+public static final int RIL_REQUEST_GPRS_REGISTRATION_STATE
+
+public static final int RIL_REQUEST_HANGUP
+
+public static final int RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND
+
+public static final int RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND
+
+public static final int RIL_REQUEST_LAST_CALL_FAIL_CAUSE
+
+public static final int RIL_REQUEST_LAST_PDP_FAIL_CAUSE
+
+public static final int RIL_REQUEST_OEM_HOOK_RAW
+
+public static final int RIL_REQUEST_OEM_HOOK_STRINGS
+
+public static final int RIL_REQUEST_OPERATOR
+
+public static final int RIL_REQUEST_PDP_CONTEXT_LIST
+
+public static final int RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE
+
+public static final int RIL_REQUEST_QUERY_AVAILABLE_NETWORKS
+
+public static final int RIL_REQUEST_QUERY_CALL_FORWARD_STATUS
+
+public static final int RIL_REQUEST_QUERY_CALL_WAITING
+
+public static final int RIL_REQUEST_QUERY_CLIP
+
+public static final int RIL_REQUEST_QUERY_FACILITY_LOCK
+
+public static final int RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE
+
+public static final int RIL_REQUEST_RADIO_POWER
+
+public static final int RIL_REQUEST_REGISTRATION_STATE
+
+public static final int RIL_REQUEST_RESET_RADIO
+
+public static final int RIL_REQUEST_SCREEN_STATE
+
+public static final int RIL_REQUEST_SEND_SMS
+
+public static final int RIL_REQUEST_SEND_SMS_EXPECT_MORE
+
+public static final int RIL_REQUEST_SEND_USSD
+
+public static final int RIL_REQUEST_SEPARATE_CONNECTION
+
+public static final int RIL_REQUEST_SETUP_DEFAULT_PDP
+
+public static final int RIL_REQUEST_SET_BAND_MODE
+
+public static final int RIL_REQUEST_SET_CALL_FORWARD
+
+public static final int RIL_REQUEST_SET_CALL_WAITING
+
+public static final int RIL_REQUEST_SET_CLIR
+
+public static final int RIL_REQUEST_SET_FACILITY_LOCK
+
+public static final int RIL_REQUEST_SET_LOCATION_UPDATES
+
+public static final int RIL_REQUEST_SET_MUTE
+
+public static final int RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC
+
+public static final int RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL
+
+public static final int RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE
+
+public static final int RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION
+
+public static final int RIL_REQUEST_SIGNAL_STRENGTH
+
+public static final int RIL_REQUEST_SIM_IO
+
+public static final int RIL_REQUEST_SMS_ACKNOWLEDGE
+
+public static final int RIL_REQUEST_STK_GET_PROFILE
+
+public static final int RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM
+
+public static final int RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND
+
+public static final int RIL_REQUEST_STK_SEND_TERMINAL_RESPONSE
+
+public static final int RIL_REQUEST_STK_SET_PROFILE
+
+public static final int RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE
+
+public static final int RIL_REQUEST_UDUB
+
+public static final int RIL_REQUEST_WRITE_SMS_TO_SIM
+
+public static final int RIL_SIM_ABSENT
+
+public static final int RIL_SIM_NETWORK_PERSONALIZATION
+
+public static final int RIL_SIM_NOT_READY
+
+public static final int RIL_SIM_PIN
+
+public static final int RIL_SIM_PUK
+
+public static final int RIL_SIM_READY
+
+public static final int RIL_UNSOL_CALL_RING
+
+public static final int RIL_UNSOL_NITZ_TIME_RECEIVED
+
+public static final int RIL_UNSOL_ON_USSD
+
+public static final int RIL_UNSOL_ON_USSD_REQUEST
+
+public static final int RIL_UNSOL_PDP_CONTEXT_LIST_CHANGED
+
+public static final int RIL_UNSOL_RESPONSE_BASE
+
+public static final int RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED
+
+public static final int RIL_UNSOL_RESPONSE_NETWORK_STATE_CHANGED
+
+public static final int RIL_UNSOL_RESPONSE_NEW_SMS
+
+public static final int RIL_UNSOL_RESPONSE_NEW_SMS_ON_SIM
+
+public static final int RIL_UNSOL_RESPONSE_NEW_SMS_STATUS_REPORT
+
+public static final int RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED
+
+public static final int RIL_UNSOL_SIGNAL_STRENGTH
+
+public static final int RIL_UNSOL_SIM_REFRESH
+
+public static final int RIL_UNSOL_SIM_SMS_STORAGE_FULL
+
+public static final int RIL_UNSOL_STK_CALL_SETUP
+
+public static final int RIL_UNSOL_STK_EVENT_NOTIFY
+
+public static final int RIL_UNSOL_STK_PROACTIVE_COMMAND
+
+public static final int RIL_UNSOL_STK_SESSION_END
+
+public static final int RIL_UNSOL_SUPP_SVC_NOTIFICATION
+
+public static final int SIM_PIN2
+
+public static final int SIM_PUK2
+
+public static final int SMS_SEND_FAIL_RETRY
+
+public static final int SUCCESS
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+ class com.android.internal.telephony.gsm.RILRequest extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final java.lang.String LOG_TAG
+
+private static final int MAX_POOL_SIZE
+
+static int sNextSerial
+
+private static com.android.internal.telephony.gsm.RILRequest sPool
+
+private static int sPoolSize
+
+private static java.lang.Object sPoolSync
+
+static java.lang.Object sSerialMonitor
+
+ com.android.internal.telephony.gsm.RILRequest mNext
+
+ int mRequest
+
+ android.os.Message mResult
+
+ int mSerial
+
+ android.os.Parcel mp
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+static com.android.internal.telephony.gsm.RILRequest obtain(
+int
+android.os.Message)
+
+static void resetSerial()
+
+ void onError(
+int)
+
+ void release()
+
+ java.lang.String serialString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/SIMFileHandler; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =LoadLinearFixedContext )
+ class com.android.internal.telephony.gsm.SIMFileHandler$LoadLinearFixedContext extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int countRecords
+
+ int efid
+
+ boolean loadAll
+
+ android.os.Message onLoaded
+
+ int recordNum
+
+ int recordSize
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<[B>; )
+ java.util.ArrayList results
+----------------METHODS----------------
+
+ void <init>(
+int
+int
+android.os.Message)
+
+ void <init>(
+int
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/SIMFileHandler$LoadLinearFixedContext; )
+public final class com.android.internal.telephony.gsm.SIMFileHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+private static final int COMMAND_GET_RESPONSE
+
+private static final int COMMAND_READ_BINARY
+
+private static final int COMMAND_READ_RECORD
+
+private static final int COMMAND_SEEK
+
+private static final int COMMAND_UPDATE_BINARY
+
+private static final int COMMAND_UPDATE_RECORD
+
+private static final int EF_TYPE_CYCLIC
+
+private static final int EF_TYPE_LINEAR_FIXED
+
+private static final int EF_TYPE_TRANSPARENT
+
+private static final int EVENT_GET_BINARY_SIZE_DONE
+
+private static final int EVENT_GET_EF_LINEAR_RECORD_SIZE_DONE
+
+private static final int EVENT_GET_RECORD_SIZE_DONE
+
+private static final int EVENT_READ_BINARY_DONE
+
+private static final int EVENT_READ_ICON_DONE
+
+private static final int EVENT_READ_IMG_DONE
+
+private static final int EVENT_READ_RECORD_DONE
+
+private static final int GET_RESPONSE_EF_IMG_SIZE_BYTES
+
+private static final int GET_RESPONSE_EF_SIZE_BYTES
+
+static final java.lang.String LOG_TAG
+
+private static final int READ_RECORD_MODE_ABSOLUTE
+
+private static final int RESPONSE_DATA_ACCESS_CONDITION_1
+
+private static final int RESPONSE_DATA_ACCESS_CONDITION_2
+
+private static final int RESPONSE_DATA_ACCESS_CONDITION_3
+
+private static final int RESPONSE_DATA_FILE_ID_1
+
+private static final int RESPONSE_DATA_FILE_ID_2
+
+private static final int RESPONSE_DATA_FILE_SIZE_1
+
+private static final int RESPONSE_DATA_FILE_SIZE_2
+
+private static final int RESPONSE_DATA_FILE_STATUS
+
+private static final int RESPONSE_DATA_FILE_TYPE
+
+private static final int RESPONSE_DATA_LENGTH
+
+private static final int RESPONSE_DATA_RECORD_LENGTH
+
+private static final int RESPONSE_DATA_RFU_1
+
+private static final int RESPONSE_DATA_RFU_2
+
+private static final int RESPONSE_DATA_RFU_3
+
+private static final int RESPONSE_DATA_STRUCTURE
+
+private static final int TYPE_DF
+
+private static final int TYPE_EF
+
+private static final int TYPE_MF
+
+private static final int TYPE_RFU
+
+ com.android.internal.telephony.gsm.GSMPhone phone
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.GSMPhone)
+
+private void sendResult(
+android.os.Message
+java.lang.Object
+java.lang.Throwable)
+
+ void getEFLinearRecordSize(
+int
+android.os.Message)
+
+public void handleMessage(
+android.os.Message)
+
+public void loadEFImgLinearFixed(
+int
+android.os.Message)
+
+public void loadEFImgTransparent(
+int
+android.os.Message)
+
+ void loadEFLinearFixed(
+int
+int
+android.os.Message)
+
+ void loadEFLinearFixedAll(
+int
+android.os.Message)
+
+ void loadEFTransparent(
+int
+android.os.Message)
+
+ void updateEFLinearFixed(
+int
+int
+byte[]
+java.lang.String
+android.os.Message)
+
+ void updateEFTransparent(
+int
+byte[]
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/SIMRecords; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class com.android.internal.telephony.gsm.SIMRecords$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$com$android$internal$telephony$gsm$SIMRecords$Get_Spn_Fsm_State
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/SIMRecords; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/SIMRecords$Get_Spn_Fsm_State;>; )
+@dalvik.annotation.InnerClass (accessFlags =16410 name =Get_Spn_Fsm_State )
+final class com.android.internal.telephony.gsm.SIMRecords$Get_Spn_Fsm_State extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.SIMRecords$Get_Spn_Fsm_State[] $VALUES
+
+public static final com.android.internal.telephony.gsm.SIMRecords$Get_Spn_Fsm_State IDLE
+
+public static final com.android.internal.telephony.gsm.SIMRecords$Get_Spn_Fsm_State INIT
+
+public static final com.android.internal.telephony.gsm.SIMRecords$Get_Spn_Fsm_State READ_SPN_3GPP
+
+public static final com.android.internal.telephony.gsm.SIMRecords$Get_Spn_Fsm_State READ_SPN_CPHS
+
+public static final com.android.internal.telephony.gsm.SIMRecords$Get_Spn_Fsm_State READ_SPN_SHORT_CPHS
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.gsm.SIMRecords$Get_Spn_Fsm_State valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.SIMRecords$Get_Spn_Fsm_State[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/SIMRecords$1;Lcom/android/internal/telephony/gsm/SIMRecords$Get_Spn_Fsm_State; )
+public final class com.android.internal.telephony.gsm.SIMRecords extends android.os.Handler implements com.android.internal.telephony.gsm.SimConstants
+
+----------------FIELDS----------------
+
+static final int CFF_LINE1_MASK
+
+static final int CFF_LINE1_RESET
+
+static final int CFF_UNCONDITIONAL_ACTIVE
+
+static final int CFF_UNCONDITIONAL_DEACTIVE
+
+private static final int CPHS_SST_MBN_ENABLED
+
+private static final int CPHS_SST_MBN_MASK
+
+private static final boolean CRASH_RIL
+
+private static final boolean DBG
+
+private static final int EVENT_GET_AD_DONE
+
+private static final int EVENT_GET_ALL_SMS_DONE
+
+private static final int EVENT_GET_CFF_DONE
+
+private static final int EVENT_GET_CFIS_DONE
+
+private static final int EVENT_GET_CPHS_MAILBOX_DONE
+
+private static final int EVENT_GET_ICCID_DONE
+
+private static final int EVENT_GET_IMSI_DONE
+
+private static final int EVENT_GET_INFO_CPHS_DONE
+
+private static final int EVENT_GET_MBDN_DONE
+
+private static final int EVENT_GET_MBI_DONE
+
+private static final int EVENT_GET_MSISDN_DONE
+
+private static final int EVENT_GET_MWIS_DONE
+
+private static final int EVENT_GET_PNN_DONE
+
+private static final int EVENT_GET_SMS_DONE
+
+private static final int EVENT_GET_SPDI_DONE
+
+private static final int EVENT_GET_SPN_DONE
+
+private static final int EVENT_GET_SST_DONE
+
+private static final int EVENT_GET_VOICE_MAIL_INDICATOR_CPHS_DONE
+
+private static final int EVENT_MARK_SMS_READ_DONE
+
+private static final int EVENT_RADIO_OFF_OR_NOT_AVAILABLE
+
+private static final int EVENT_SET_CPHS_MAILBOX_DONE
+
+private static final int EVENT_SET_MBDN_DONE
+
+private static final int EVENT_SET_MSISDN_DONE
+
+private static final int EVENT_SIM_READY
+
+private static final int EVENT_SIM_REFRESH
+
+private static final int EVENT_SMS_ON_SIM
+
+private static final int EVENT_UPDATE_DONE
+
+static final java.lang.String LOG_TAG
+
+static final int SPN_RULE_SHOW_PLMN
+
+static final int SPN_RULE_SHOW_SPN
+
+static final int TAG_FULL_NETWORK_NAME
+
+static final int TAG_SHORT_NETWORK_NAME
+
+static final int TAG_SPDI_PLMN_LIST
+
+ com.android.internal.telephony.gsm.AdnRecordCache adnCache
+
+ boolean callForwardingEnabled
+
+ int countVoiceMessages
+
+ byte[] efCPHS_MWI
+
+ byte[] efMWIS
+
+ java.lang.String iccid
+
+ java.lang.String imsi
+
+ boolean isVoiceMailFixed
+
+private byte[] mCphsInfo
+
+ byte[] mEfCff
+
+ byte[] mEfCfis
+
+ com.android.internal.telephony.gsm.VoiceMailConstants mVmConfig
+
+ int mailboxIndex
+
+ int mncLength
+
+ java.lang.String msisdn
+
+ java.lang.String msisdnTag
+
+ java.lang.String newVoiceMailNum
+
+ java.lang.String newVoiceMailTag
+
+ com.android.internal.telephony.gsm.GSMPhone phone
+
+ java.lang.String pnnHomeName
+
+ android.os.RegistrantList recordsLoadedRegistrants
+
+ boolean recordsRequested
+
+ int recordsToLoad
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+ java.util.ArrayList spdiNetworks
+
+ java.lang.String spn
+
+ int spnDisplayCondition
+
+private com.android.internal.telephony.gsm.SIMRecords$Get_Spn_Fsm_State spnState
+
+ java.lang.String voiceMailNum
+
+ java.lang.String voiceMailTag
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.GSMPhone)
+
+private void fetchSimRecords()
+
+private void getSpnFsm(
+boolean
+android.os.AsyncResult)
+
+private void handleFileUpdate(
+int)
+
+private void handleSimRefresh(
+int[])
+
+private void handleSms(
+byte[])
+
+private void handleSmses(
+java.util.ArrayList)
+
+private boolean isCphsMailboxEnabled()
+
+private boolean isOnMatchingPlmn(
+java.lang.String)
+
+private void log(
+java.lang.String)
+
+private void onAllRecordsLoaded()
+
+private void onRadioOffOrNotAvailable()
+
+private void onRecordLoaded()
+
+private void onSimReady()
+
+private void parseEfSpdi(
+byte[])
+
+private void setVoiceMailByCountry(
+java.lang.String)
+
+ com.android.internal.telephony.gsm.AdnRecordCache getAdnCache()
+
+public int getCountVoiceMessages()
+
+ int getDisplayRule(
+java.lang.String)
+
+public java.lang.String getIMSI()
+
+public java.lang.String getMsisdnAlphaTag()
+
+public java.lang.String getMsisdnNumber()
+
+ boolean getRecordsLoaded()
+
+ java.lang.String getSIMOperatorNumeric()
+
+public java.lang.String getServiceProvideName()
+
+public boolean getVoiceCallForwardingFlag()
+
+public java.lang.String getVoiceMailAlphaTag()
+
+public java.lang.String getVoiceMailNumber()
+
+public boolean getVoiceMessageWaiting()
+
+public void handleMessage(
+android.os.Message)
+
+public void onRefresh(
+boolean
+int[])
+
+public void registerForRecordsLoaded(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setMsisdnNumber(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void setVoiceCallForwardingFlag(
+int
+boolean)
+
+public void setVoiceMailNumber(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void setVoiceMessageWaiting(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/SMSDispatcher; )
+ class com.android.internal.telephony.gsm.SMSDispatcher$1 extends java.lang.Object implements android.content.DialogInterface$OnClickListener
+
+----------------FIELDS----------------
+
+final com.android.internal.telephony.gsm.SMSDispatcher this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.SMSDispatcher)
+
+public void onClick(
+android.content.DialogInterface
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/SMSDispatcher; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =SmsCounter )
+ class com.android.internal.telephony.gsm.SMSDispatcher$SmsCounter extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int mCheckPeriod
+
+private int mMaxAllowed
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/util/ArrayList<Ljava/lang/Long;>;>; )
+private java.util.HashMap mSmsStamp
+
+final com.android.internal.telephony.gsm.SMSDispatcher this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.SMSDispatcher
+int
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Ljava/lang/Long;>;)Z )
+private boolean isUnderLimit(
+java.util.ArrayList)
+
+ boolean check(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =SmsTracker )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/SMSDispatcher; )
+ class com.android.internal.telephony.gsm.SMSDispatcher$SmsTracker extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.util.HashMap mData
+
+ android.app.PendingIntent mDeliveryIntent
+
+ int mMessageRef
+
+ int mRetryCount
+
+ android.app.PendingIntent mSentIntent
+----------------METHODS----------------
+
+ void <init>(
+java.util.HashMap
+android.app.PendingIntent
+android.app.PendingIntent)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/SMSDispatcher$SmsTracker;Lcom/android/internal/telephony/gsm/SMSDispatcher$SmsCounter; )
+final class com.android.internal.telephony.gsm.SMSDispatcher extends android.os.Handler
+
+----------------FIELDS----------------
+
+private static final int DEFAULT_SMS_CHECK_PERIOD
+
+private static final int DEFAULT_SMS_MAX_ALLOWED
+
+private static final int DEFAULT_SMS_TIMOUEOUT
+
+private static final byte DRM_RIGHTS_WBXML
+
+private static final java.lang.String DRM_RIGHTS_WBXML_MIME_TYPE
+
+private static final byte DRM_RIGHTS_XML
+
+private static final java.lang.String DRM_RIGHTS_XML_MIME_TYPE
+
+static final int EVENT_ALERT_TIMEOUT
+
+static final int EVENT_NEW_SMS
+
+static final int EVENT_NEW_SMS_STATUS_REPORT
+
+static final int EVENT_POST_ALERT
+
+static final int EVENT_SEND_CONFIRMED_SMS
+
+static final int EVENT_SEND_RETRY
+
+static final int EVENT_SEND_SMS_COMPLETE
+
+static final int EVENT_SIM_FULL
+
+static final int MAIL_SEND_SMS
+
+private static final int MAX_SEND_RETRIES
+
+private static final java.lang.String MMS_MIME_TYPE
+
+private static final java.lang.String[] RAW_PROJECTION
+
+private static final int SEND_RETRY_DELAY
+
+private static final java.lang.String TAG
+
+private static final byte WAP_CO_MIME_PORT
+
+private static final java.lang.String WAP_CO_MIME_TYPE
+
+private static final int WAP_PDU_LENGTH_QUOTE
+
+private static final int WAP_PDU_SHORT_LENGTH_MAX
+
+private static final int WAP_PDU_TYPE_CONFIRMED_PUSH
+
+private static final int WAP_PDU_TYPE_PUSH
+
+private static final byte WAP_SI_MIME_PORT
+
+private static final java.lang.String WAP_SI_MIME_TYPE
+
+private static final byte WAP_SL_MIME_PORT
+
+private static final java.lang.String WAP_SL_MIME_TYPE
+
+private static int sConcatenatedRef
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/SMSDispatcher$SmsTracker;>; )
+private final java.util.ArrayList deliveryPendingList
+
+private final com.android.internal.telephony.gsm.CommandsInterface mCm
+
+private final android.content.Context mContext
+
+private com.android.internal.telephony.gsm.SMSDispatcher$SmsCounter mCounter
+
+private android.content.DialogInterface$OnClickListener mListener
+
+private final com.android.internal.telephony.gsm.GSMPhone mPhone
+
+private final android.net.Uri mRawUri
+
+private final android.content.ContentResolver mResolver
+
+private com.android.internal.telephony.gsm.SMSDispatcher$SmsTracker mSTracker
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+com.android.internal.telephony.gsm.GSMPhone)
+
+private void dispatchPdus(
+byte[][])
+
+private void dispatchPortAddressedPdus(
+byte[][]
+int)
+
+private void dispatchWapPdu(
+byte[])
+
+private java.lang.String getAppNameByIntent(
+android.app.PendingIntent)
+
+private void handleNotInService(
+int
+com.android.internal.telephony.gsm.SMSDispatcher$SmsTracker)
+
+private void handleReachSentLimit(
+com.android.internal.telephony.gsm.SMSDispatcher$SmsTracker)
+
+private void handleSendComplete(
+android.os.AsyncResult)
+
+private void handleSimFull()
+
+private void handleStatusReport(
+android.os.AsyncResult)
+
+private void processMessagePart(
+android.telephony.gsm.SmsMessage
+int
+int
+int
+int)
+
+private void sendSms(
+com.android.internal.telephony.gsm.SMSDispatcher$SmsTracker)
+
+ void dispatchMessage(
+android.telephony.gsm.SmsMessage)
+
+public void handleMessage(
+android.os.Message)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList<Ljava/lang/String;>;Ljava/util/ArrayList<Landroid/app/PendingIntent;>;Ljava/util/ArrayList<Landroid/app/PendingIntent;>;)V )
+ void sendMultipartText(
+java.lang.String
+java.lang.String
+java.util.ArrayList
+java.util.ArrayList
+java.util.ArrayList)
+
+ void sendRawPdu(
+byte[]
+byte[]
+android.app.PendingIntent
+android.app.PendingIntent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/ServiceStateTracker; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class com.android.internal.telephony.gsm.ServiceStateTracker$1 extends android.database.ContentObserver
+
+----------------FIELDS----------------
+
+final com.android.internal.telephony.gsm.ServiceStateTracker this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.ServiceStateTracker
+android.os.Handler)
+
+public void onChange(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/ServiceStateTracker; )
+ class com.android.internal.telephony.gsm.ServiceStateTracker$2 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$com$android$internal$telephony$gsm$CommandsInterface$RadioState
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/ServiceStateTracker$2; )
+final class com.android.internal.telephony.gsm.ServiceStateTracker extends android.os.Handler
+
+----------------FIELDS----------------
+
+static final int DATA_ACCESS_EDGE
+
+static final int DATA_ACCESS_GPRS
+
+static final int DATA_ACCESS_UMTS
+
+static final int DATA_ACCESS_UNKNOWN
+
+static final boolean DBG
+
+static final int EVENT_GET_LOC_DONE
+
+static final int EVENT_GET_SIGNAL_STRENGTH
+
+static final int EVENT_LOCATION_UPDATES_ENABLED
+
+static final int EVENT_NETWORK_STATE_CHANGED
+
+static final int EVENT_NITZ_TIME
+
+static final int EVENT_POLL_SIGNAL_STRENGTH
+
+static final int EVENT_POLL_STATE_GPRS
+
+static final int EVENT_POLL_STATE_NETWORK_SELECTION_MODE
+
+static final int EVENT_POLL_STATE_OPERATOR
+
+static final int EVENT_POLL_STATE_REGISTRATION
+
+static final int EVENT_RADIO_AVAILABLE
+
+static final int EVENT_RADIO_STATE_CHANGED
+
+static final int EVENT_SIGNAL_STRENGTH_UPDATE
+
+static final int EVENT_SIM_READY
+
+static final int EVENT_SIM_RECORDS_LOADED
+
+private static final java.lang.String[] GMT_COUNTRY_CODES
+
+static final java.lang.String LOG_TAG
+
+static final int POLL_PERIOD_MILLIS
+
+private static final java.lang.String TIMEZONE_PROPERTY
+
+static final java.lang.String TMUK
+
+ android.telephony.gsm.GsmCellLocation cellLoc
+
+ com.android.internal.telephony.gsm.CommandsInterface cm
+
+private java.lang.String curPlmn
+
+private java.lang.String curSpn
+
+private int curSpnRule
+
+ boolean dontPollSignalStrength
+
+private android.os.RegistrantList gprsAttachedRegistrants
+
+private android.os.RegistrantList gprsDetachedRegistrants
+
+private int gprsState
+
+private android.database.ContentObserver mAutoTimeObserver
+
+ boolean mDesiredPowerState
+
+private boolean mGotCountryCode
+
+private boolean mGsmRoaming
+
+private boolean mNeedFixZone
+
+private boolean mNeedToRegForSimLoaded
+
+ long mSavedAtTime
+
+ long mSavedTime
+
+ java.lang.String mSavedTimeZone
+
+private boolean mZoneDst
+
+private int mZoneOffset
+
+private long mZoneTime
+
+private android.os.RegistrantList networkAttachedRegistrants
+
+private int networkType
+
+ android.telephony.gsm.GsmCellLocation newCellLoc
+
+private int newGPRSState
+
+private int newNetworkType
+
+ android.telephony.ServiceState newSS
+
+ com.android.internal.telephony.gsm.GSMPhone phone
+
+ int[] pollingContext
+
+private android.os.RegistrantList roamingOffRegistrants
+
+private android.os.RegistrantList roamingOnRegistrants
+
+ int rssi
+
+ android.telephony.ServiceState ss
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+com.android.internal.telephony.gsm.GSMPhone)
+
+static void access$000(
+com.android.internal.telephony.gsm.ServiceStateTracker)
+
+private void cancelPollState()
+
+private static java.lang.String displayNameFor(
+int)
+
+private java.util.TimeZone findTimeZone(
+int
+boolean
+long)
+
+private boolean getAutoTime()
+
+private java.util.TimeZone getNitzTimeZone(
+int
+boolean
+long)
+
+private void handlePollStateResult(
+int
+android.os.AsyncResult)
+
+private boolean isRoamingBetweenOperators(
+boolean
+android.telephony.ServiceState)
+
+private boolean isTmobileUkRoamingEmergency()
+
+private static java.lang.String networkTypeToString(
+int)
+
+private void onSignalStrengthResult(
+android.os.AsyncResult)
+
+private void pollState()
+
+private void pollStateDone()
+
+private void queueNextSignalStrengthPoll()
+
+private boolean regCodeIsRoaming(
+int)
+
+private int regCodeToServiceState(
+int)
+
+private void revertToNitz()
+
+private void saveNitzTime(
+long)
+
+private void saveNitzTimeZone(
+java.lang.String)
+
+private void setPowerStateToDesired()
+
+private void setRssiDefaultValues()
+
+private void setTimeFromNITZString(
+java.lang.String
+int)
+
+private static int twoDigitsAt(
+java.lang.String
+int)
+
+private void updateSpnDisplay()
+
+ void disableLocationUpdates()
+
+ void enableLocationUpdates()
+
+ int getCurrentGprsState()
+
+public void getLacAndCid(
+android.os.Message)
+
+public void handleMessage(
+android.os.Message)
+
+ boolean isConcurrentVoiceAndData()
+
+ void registerForGprsAttached(
+android.os.Handler
+int
+java.lang.Object)
+
+ void registerForGprsDetached(
+android.os.Handler
+int
+java.lang.Object)
+
+ void registerForNetworkAttach(
+android.os.Handler
+int
+java.lang.Object)
+
+ void registerForRoamingOff(
+android.os.Handler
+int
+java.lang.Object)
+
+ void registerForRoamingOn(
+android.os.Handler
+int
+java.lang.Object)
+
+public void setRadioPower(
+boolean)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.SimException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+ void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.SimFileNotFound extends com.android.internal.telephony.gsm.SimException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+ void <init>(
+int)
+
+ void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.SimFileTypeMismatch extends com.android.internal.telephony.gsm.SimException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+ void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.SimIoResult extends java.lang.Object
+
+----------------FIELDS----------------
+
+ byte[] payload
+
+ int sw1
+
+ int sw2
+----------------METHODS----------------
+
+public void <init>(
+int
+int
+java.lang.String)
+
+public void <init>(
+int
+int
+byte[])
+
+public com.android.internal.telephony.gsm.SimException getException()
+
+public boolean success()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/SimPhoneBookInterfaceManager; )
+ class com.android.internal.telephony.gsm.SimPhoneBookInterfaceManager$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final com.android.internal.telephony.gsm.SimPhoneBookInterfaceManager this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.SimPhoneBookInterfaceManager)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.SimPhoneBookInterfaceManager extends com.android.internal.telephony.gsm.ISimPhoneBook$Stub
+
+----------------FIELDS----------------
+
+private static final boolean ALLOW_SIM_OP_IN_UI_THREAD
+
+static final boolean DBG
+
+private static final int EVENT_GET_SIZE_DONE
+
+private static final int EVENT_LOAD_DONE
+
+private static final int EVENT_UPDATE_DONE
+
+static final java.lang.String LOG_TAG
+
+private com.android.internal.telephony.gsm.AdnRecordCache adnCache
+
+ android.os.Handler mHandler
+
+private final java.lang.Object mLock
+
+private com.android.internal.telephony.gsm.GSMPhone phone
+
+private int[] recordSize
+@dalvik.annotation.Signature (value =Ljava/util/List<Lcom/android/internal/telephony/gsm/AdnRecord;>; )
+private java.util.List records
+
+private boolean success
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.telephony.gsm.GSMPhone)
+
+static java.lang.Object access$000(
+com.android.internal.telephony.gsm.SimPhoneBookInterfaceManager)
+
+static int[] access$100(
+com.android.internal.telephony.gsm.SimPhoneBookInterfaceManager)
+
+static int[] access$102(
+com.android.internal.telephony.gsm.SimPhoneBookInterfaceManager
+int[])
+
+static void access$200(
+com.android.internal.telephony.gsm.SimPhoneBookInterfaceManager
+java.lang.String)
+
+static boolean access$302(
+com.android.internal.telephony.gsm.SimPhoneBookInterfaceManager
+boolean)
+
+static java.util.List access$400(
+com.android.internal.telephony.gsm.SimPhoneBookInterfaceManager)
+
+static java.util.List access$402(
+com.android.internal.telephony.gsm.SimPhoneBookInterfaceManager
+java.util.List)
+
+private void checkThread()
+
+private void log(
+java.lang.String)
+
+private void publish()
+@dalvik.annotation.Signature (value =(I)Ljava/util/List<Lcom/android/internal/telephony/gsm/AdnRecord;>; )
+public java.util.List getAdnRecordsInEf(
+int)
+
+public int[] getAdnRecordsSize(
+int)
+
+public boolean updateAdnRecordsInEfByIndex(
+int
+java.lang.String
+java.lang.String
+int
+java.lang.String)
+
+public boolean updateAdnRecordsInEfBySearch(
+int
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.SimProvider extends android.content.ContentProvider
+
+----------------FIELDS----------------
+
+private static final java.lang.String[] ADDRESS_BOOK_COLUMN_NAMES
+
+private static final int ADN
+
+private static final boolean DBG
+
+private static final int FDN
+
+private static final int SDN
+
+private static final java.lang.String STR_NUMBER
+
+private static final java.lang.String STR_PIN2
+
+private static final java.lang.String STR_TAG
+
+private static final java.lang.String TAG
+
+private static final android.content.UriMatcher URL_MATCHER
+
+private boolean mSimulator
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private boolean addSimRecordToEf(
+int
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private boolean deleteSimRecordFromEf(
+int
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Signature (value =(I)Ljava/util/ArrayList<Ljava/util/ArrayList;>; )
+private java.util.ArrayList loadFromEf(
+int)
+@dalvik.annotation.Signature (value =(Lcom/android/internal/telephony/gsm/AdnRecord;Ljava/util/ArrayList<Ljava/util/ArrayList;>;)V )
+private void loadRecord(
+com.android.internal.telephony.gsm.AdnRecord
+java.util.ArrayList)
+
+private void log(
+java.lang.String)
+
+private java.lang.String normalizeValue(
+java.lang.String)
+
+private boolean updateSimRecordInEf(
+int
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public int delete(
+android.net.Uri
+java.lang.String
+java.lang.String[])
+
+public java.lang.String getType(
+android.net.Uri)
+
+public android.net.Uri insert(
+android.net.Uri
+android.content.ContentValues)
+
+public boolean onCreate()
+
+public android.database.Cursor query(
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+public int update(
+android.net.Uri
+android.content.ContentValues
+java.lang.String
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/SimSmsInterfaceManager; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class com.android.internal.telephony.gsm.SimSmsInterfaceManager$1 extends android.os.Handler
+
+----------------FIELDS----------------
+
+final com.android.internal.telephony.gsm.SimSmsInterfaceManager this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.SimSmsInterfaceManager)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.SimSmsInterfaceManager extends com.android.internal.telephony.gsm.ISms$Stub
+
+----------------FIELDS----------------
+
+static final boolean DBG
+
+private static final int EVENT_LOAD_DONE
+
+private static final int EVENT_UPDATE_DONE
+
+static final java.lang.String LOG_TAG
+
+ android.os.Handler mHandler
+
+private final java.lang.Object mLock
+
+private com.android.internal.telephony.gsm.GSMPhone mPhone
+@dalvik.annotation.Signature (value =Ljava/util/List<Lcom/android/internal/telephony/gsm/SmsRawData;>; )
+private java.util.List mSms
+
+private boolean mSuccess
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.telephony.gsm.GSMPhone)
+
+static java.lang.Object access$000(
+com.android.internal.telephony.gsm.SimSmsInterfaceManager)
+
+static boolean access$102(
+com.android.internal.telephony.gsm.SimSmsInterfaceManager
+boolean)
+
+static java.util.List access$200(
+com.android.internal.telephony.gsm.SimSmsInterfaceManager)
+
+static java.util.List access$202(
+com.android.internal.telephony.gsm.SimSmsInterfaceManager
+java.util.List)
+
+static java.util.ArrayList access$300(
+com.android.internal.telephony.gsm.SimSmsInterfaceManager
+java.util.ArrayList)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<[B>;)Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/SmsRawData;>; )
+private java.util.ArrayList buildValidRawData(
+java.util.ArrayList)
+
+private void enforceReceiveAndSend(
+java.lang.String)
+
+private void log(
+java.lang.String)
+
+private byte[] makeSmsRecordData(
+int
+byte[])
+
+public boolean copyMessageToSimEf(
+int
+byte[]
+byte[])
+@dalvik.annotation.Signature (value =()Ljava/util/List<Lcom/android/internal/telephony/gsm/SmsRawData;>; )
+public java.util.List getAllMessagesFromSimEf()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;Ljava/util/List<Landroid/app/PendingIntent;>;Ljava/util/List<Landroid/app/PendingIntent;>;)V )
+public void sendMultipartText(
+java.lang.String
+java.lang.String
+java.util.List
+java.util.List
+java.util.List)
+
+public void sendRawPdu(
+byte[]
+byte[]
+android.app.PendingIntent
+android.app.PendingIntent)
+
+public boolean updateMessageOnSimEf(
+int
+int
+byte[])
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.SimTlv extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int curDataLength
+
+ int curDataOffset
+
+ int curOffset
+
+ boolean hasValidTlvObject
+
+ byte[] record
+
+ int tlvLength
+
+ int tlvOffset
+----------------METHODS----------------
+
+public void <init>(
+byte[]
+int
+int)
+
+private boolean parseCurrentTlvObject()
+
+public byte[] getData()
+
+public int getTag()
+
+public boolean isValidObject()
+
+public boolean nextObject()
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.SimUtils extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final java.lang.String LOG_TAG
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String adnStringFieldToString(
+byte[]
+int
+int)
+
+public static int bcdByteToInt(
+byte)
+
+public static java.lang.String bcdToString(
+byte[]
+int
+int)
+
+private static int bitToRGB(
+int)
+
+public static java.lang.String bytesToHexString(
+byte[])
+
+private static int[] getCLUT(
+byte[]
+int
+int)
+
+static int hexCharToInt(
+char)
+
+public static byte[] hexStringToBytes(
+java.lang.String)
+
+private static int[] mapTo2OrderBitColor(
+byte[]
+int
+int
+int[]
+int)
+
+private static int[] mapToNon2OrderBitColor(
+byte[]
+int
+int
+int[]
+int)
+
+public static java.lang.String networkNameToString(
+byte[]
+int
+int)
+
+public static android.graphics.Bitmap parseToBnW(
+byte[]
+int)
+
+public static android.graphics.Bitmap parseToRGB(
+byte[]
+int
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Element )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/SmsHeader; )
+public class com.android.internal.telephony.gsm.SmsHeader$Element extends java.lang.Object
+
+----------------FIELDS----------------
+
+private byte[] m_data
+
+private int m_id
+----------------METHODS----------------
+
+public void <init>(
+int
+byte[])
+
+public byte[] getData()
+
+public int getID()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/SmsHeader$Element; )
+public class com.android.internal.telephony.gsm.SmsHeader extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int APPLICATION_PORT_ADDRESSING_16_BIT
+
+public static final int APPLICATION_PORT_ADDRESSING_8_BIT
+
+public static final int CONCATENATED_16_BIT_REFERENCE
+
+public static final int CONCATENATED_8_BIT_REFERENCE
+
+public static final int PORT_WAP_PUSH
+
+public static final int PORT_WAP_WSP
+
+public static final int SPECIAL_SMS_MESSAGE_INDICATION
+
+private byte[] m_data
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/SmsHeader$Element;>; )
+private java.util.ArrayList m_elements
+----------------METHODS----------------
+
+public void <init>()
+
+private int calcSize()
+
+public static com.android.internal.telephony.gsm.SmsHeader parse(
+byte[])
+
+public void add(
+com.android.internal.telephony.gsm.SmsHeader$Element)
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Lcom/android/internal/telephony/gsm/SmsHeader$Element;>; )
+public java.util.ArrayList getElements()
+
+public byte[] toByteArray()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Lcom/android/internal/telephony/gsm/SmsRawData;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/SmsRawData; )
+final class com.android.internal.telephony.gsm.SmsRawData$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public com.android.internal.telephony.gsm.SmsRawData createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public com.android.internal.telephony.gsm.SmsRawData[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.SmsRawData extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Lcom/android/internal/telephony/gsm/SmsRawData;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+ byte[] data
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+byte[])
+
+public int describeContents()
+
+public byte[] getBytes()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+ class com.android.internal.telephony.gsm.SmsResponse extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.lang.String ackPdu
+
+ int messageRef
+----------------METHODS----------------
+
+ void <init>(
+int
+java.lang.String)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.SuppServiceNotification extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int MO_CODE_CALL_DEFLECTED
+
+public static final int MO_CODE_CALL_FORWARDED
+
+public static final int MO_CODE_CALL_IS_WAITING
+
+public static final int MO_CODE_CLIR_SUPPRESSION_REJECTED
+
+public static final int MO_CODE_CUG_CALL
+
+public static final int MO_CODE_INCOMING_CALLS_BARRED
+
+public static final int MO_CODE_OUTGOING_CALLS_BARRED
+
+public static final int MO_CODE_SOME_CF_ACTIVE
+
+public static final int MO_CODE_UNCONDITIONAL_CF_ACTIVE
+
+public static final int MT_CODE_ADDITIONAL_CALL_FORWARDED
+
+public static final int MT_CODE_CALL_CONNECTED_ECT
+
+public static final int MT_CODE_CALL_CONNECTING_ECT
+
+public static final int MT_CODE_CALL_ON_HOLD
+
+public static final int MT_CODE_CALL_RETRIEVED
+
+public static final int MT_CODE_CUG_CALL
+
+public static final int MT_CODE_DEFLECTED_CALL
+
+public static final int MT_CODE_FORWARDED_CALL
+
+public static final int MT_CODE_FORWARD_CHECK_RECEIVED
+
+public static final int MT_CODE_MULTI_PARTY_CALL
+
+public static final int MT_CODE_ON_HOLD_CALL_RELEASED
+
+public int code
+
+public int index
+
+public int notificationType
+
+public java.lang.String number
+
+public int type
+----------------METHODS----------------
+
+public void <init>()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+ class com.android.internal.telephony.gsm.VoiceMailConstants extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final java.lang.String LOG_TAG
+
+static final int NAME
+
+static final int NUMBER
+
+static final java.lang.String PARTNER_VOICEMAIL_PATH
+
+static final int SIZE
+
+static final int TAG
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;[Ljava/lang/String;>; )
+private java.util.HashMap CarrierVmMap
+----------------METHODS----------------
+
+ void <init>()
+
+private void loadVoiceMail()
+
+ boolean containsCarrier(
+java.lang.String)
+
+ java.lang.String getCarrierName(
+java.lang.String)
+
+ java.lang.String getVoiceMailNumber(
+java.lang.String)
+
+ java.lang.String getVoiceMailTag(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/stk/AppInterface$State;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =State )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/stk/AppInterface; )
+public final class com.android.internal.telephony.gsm.stk.AppInterface$State extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.stk.AppInterface$State[] $VALUES
+
+public static final com.android.internal.telephony.gsm.stk.AppInterface$State CALL_SETUP
+
+public static final com.android.internal.telephony.gsm.stk.AppInterface$State DISPLAY_TEXT
+
+public static final com.android.internal.telephony.gsm.stk.AppInterface$State GET_INKEY
+
+public static final com.android.internal.telephony.gsm.stk.AppInterface$State GET_INPUT
+
+public static final com.android.internal.telephony.gsm.stk.AppInterface$State IDLE
+
+public static final com.android.internal.telephony.gsm.stk.AppInterface$State LAUNCH_BROWSER
+
+public static final com.android.internal.telephony.gsm.stk.AppInterface$State MAIN_MENU
+
+public static final com.android.internal.telephony.gsm.stk.AppInterface$State PLAY_TONE
+
+public static final com.android.internal.telephony.gsm.stk.AppInterface$State SELECT_ITEM
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.gsm.stk.AppInterface$State valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.stk.AppInterface$State[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/stk/AppInterface$State; )
+public abstract interface class com.android.internal.telephony.gsm.stk.AppInterface extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void acceptOrRejectCall(
+boolean)
+
+public abstract boolean backwardMove()
+
+public abstract com.android.internal.telephony.gsm.stk.Menu getCurrentMenu()
+
+public abstract com.android.internal.telephony.gsm.stk.AppInterface$State getState()
+
+public abstract void notifyBrowserTermination(
+boolean)
+
+public abstract void notifyDisplayTextEnded(
+boolean)
+
+public abstract void notifyIdleScreenAvailable()
+
+public abstract void notifyInkey(
+char
+boolean)
+
+public abstract void notifyInkey(
+boolean
+boolean)
+
+public abstract void notifyInput(
+java.lang.String
+boolean)
+
+public abstract void notifyLanguageSelection(
+java.lang.String)
+
+public abstract void notifyLaunchBrowser(
+boolean)
+
+public abstract void notifyMenuSelection(
+int
+boolean)
+
+public abstract void notifyNoResponse()
+
+public abstract void notifySelectedItem(
+int
+boolean)
+
+public abstract void notifyToneEnded()
+
+public abstract void notifyUserActivity()
+
+public abstract void setCommandListener(
+com.android.internal.telephony.gsm.stk.CommandListener)
+
+public abstract boolean terminateSession()
+
+________________CLASS________________
+
+
+ class com.android.internal.telephony.gsm.stk.BerTlv extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int BER_EVENT_DOWNLOAD_TAG
+
+public static final int BER_MENU_SELECTION_TAG
+
+public static final int BER_PROACTIVE_COMMAND_TAG
+
+public static final int BER_UNKNOWN_TAG
+@dalvik.annotation.Signature (value =Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>; )
+private java.util.List mCompTlvs
+
+private int mTag
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(ILjava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>;)V )
+private void <init>(
+int
+java.util.List)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+public static com.android.internal.telephony.gsm.stk.BerTlv decode(
+byte[])
+@dalvik.annotation.Signature (value =()Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>; )
+public java.util.List getComprehensionTlvs()
+
+public int getTag()
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.telephony.gsm.stk.CommandListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/TextAttribute;>;Ljava/lang/String;)V )
+public abstract void onCallSetup(
+java.lang.String
+java.util.List
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/TextAttribute;>;ZZZ)V )
+public abstract void onDisplayText(
+java.lang.String
+java.util.List
+boolean
+boolean
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/TextAttribute;>;ZZZZZ)V )
+public abstract void onGetInkey(
+java.lang.String
+java.util.List
+boolean
+boolean
+boolean
+boolean
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/String;IIZLjava/util/List<Lcom/android/internal/telephony/gsm/stk/TextAttribute;>;ZZZZ)V )
+public abstract void onGetInput(
+java.lang.String
+java.lang.String
+int
+int
+boolean
+java.util.List
+boolean
+boolean
+boolean
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/String;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/TextAttribute;>;Lcom/android/internal/telephony/gsm/stk/LaunchBrowserMode;)V )
+public abstract void onLaunchBrowser(
+java.lang.String
+java.lang.String
+java.util.List
+com.android.internal.telephony.gsm.stk.LaunchBrowserMode)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+@dalvik.annotation.Signature (value =(Lcom/android/internal/telephony/gsm/stk/Tone;Ljava/lang/String;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/TextAttribute;>;Lcom/android/internal/telephony/gsm/stk/Duration;)V )
+public abstract void onPlayTone(
+com.android.internal.telephony.gsm.stk.Tone
+java.lang.String
+java.util.List
+com.android.internal.telephony.gsm.stk.Duration)
+
+public abstract void onSelectItem(
+com.android.internal.telephony.gsm.stk.Menu
+com.android.internal.telephony.gsm.stk.PresentationType)
+
+public abstract void onSessionEnd()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+public abstract void onSetUpEventList(
+java.util.BitSet)
+
+public abstract void onSetUpMenu(
+com.android.internal.telephony.gsm.stk.Menu)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/stk/CommandType;>; )
+final class com.android.internal.telephony.gsm.stk.CommandType extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.stk.CommandType[] $VALUES
+
+public static final com.android.internal.telephony.gsm.stk.CommandType DISPLAY_TEXT
+
+public static final com.android.internal.telephony.gsm.stk.CommandType GET_INKEY
+
+public static final com.android.internal.telephony.gsm.stk.CommandType GET_INPUT
+
+public static final com.android.internal.telephony.gsm.stk.CommandType LAUNCH_BROWSER
+
+public static final com.android.internal.telephony.gsm.stk.CommandType PLAY_TONE
+
+public static final com.android.internal.telephony.gsm.stk.CommandType REFRESH
+
+public static final com.android.internal.telephony.gsm.stk.CommandType SELECT_ITEM
+
+public static final com.android.internal.telephony.gsm.stk.CommandType SEND_DTMF
+
+public static final com.android.internal.telephony.gsm.stk.CommandType SEND_SMS
+
+public static final com.android.internal.telephony.gsm.stk.CommandType SEND_SS
+
+public static final com.android.internal.telephony.gsm.stk.CommandType SEND_USSD
+
+public static final com.android.internal.telephony.gsm.stk.CommandType SET_UP_CALL
+
+public static final com.android.internal.telephony.gsm.stk.CommandType SET_UP_EVENT_LIST
+
+public static final com.android.internal.telephony.gsm.stk.CommandType SET_UP_IDLE_MODE_TEXT
+
+public static final com.android.internal.telephony.gsm.stk.CommandType SET_UP_MENU
+
+private int mValue
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static com.android.internal.telephony.gsm.stk.CommandType fromInt(
+int)
+
+public static com.android.internal.telephony.gsm.stk.CommandType valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.stk.CommandType[] values()
+
+________________CLASS________________
+
+
+ class com.android.internal.telephony.gsm.stk.ComprehensionTlv extends java.lang.Object
+
+----------------FIELDS----------------
+
+private boolean mCr
+
+private int mLength
+
+private byte[] mRawValue
+
+private int mTag
+
+private int mValueIndex
+----------------METHODS----------------
+
+private void <init>(
+int
+boolean
+int
+byte[]
+int)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+public static com.android.internal.telephony.gsm.stk.ComprehensionTlv decode(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+@dalvik.annotation.Signature (value =([BI)Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>; )
+public static java.util.List decodeMany(
+byte[]
+int)
+
+public int getLength()
+
+public byte[] getRawValue()
+
+public int getTag()
+
+public int getValueIndex()
+
+public boolean isComprehensionRequired()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlvTag;>; )
+final class com.android.internal.telephony.gsm.stk.ComprehensionTlvTag extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag[] $VALUES
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag ALPHA_ID
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag BROWSER_TERMINATION_CAUSE
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag COMMAND_DETAILS
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag DEFAULT_TEXT
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag DEVICE_IDENTITIES
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag DURATION
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag EVENT_LIST
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag FILE_LIST
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag HELP_REQUEST
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag ICON_ID
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag IMMEDIATE_RESPONSE
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag ITEM
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag ITEM_ICON_ID_LIST
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag ITEM_ID
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag LANGUAGE
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag RESPONSE_LENGTH
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag RESULT
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag TEXT_ATTRIBUTE
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag TEXT_STRING
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag TONE
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag URL
+
+public static final com.android.internal.telephony.gsm.stk.ComprehensionTlvTag USSD_STRING
+
+private int mValue
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static com.android.internal.telephony.gsm.stk.ComprehensionTlvTag valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.stk.ComprehensionTlvTag[] values()
+
+public int value()
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.stk.CtlvCommandDetails extends java.lang.Object
+
+----------------FIELDS----------------
+
+public int commandNumber
+
+public int commandQualifier
+
+public boolean compRequired
+
+public int typeOfCommand
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/stk/Duration; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =TimeUnit )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/stk/Duration$TimeUnit;>; )
+public final class com.android.internal.telephony.gsm.stk.Duration$TimeUnit extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.stk.Duration$TimeUnit[] $VALUES
+
+public static final com.android.internal.telephony.gsm.stk.Duration$TimeUnit MINUTE
+
+public static final com.android.internal.telephony.gsm.stk.Duration$TimeUnit SECOND
+
+public static final com.android.internal.telephony.gsm.stk.Duration$TimeUnit TENTH_SECOND
+
+private int mValue
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static com.android.internal.telephony.gsm.stk.Duration$TimeUnit valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.stk.Duration$TimeUnit[] values()
+
+public int value()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/stk/Duration$TimeUnit; )
+public class com.android.internal.telephony.gsm.stk.Duration extends java.lang.Object
+
+----------------FIELDS----------------
+
+public int timeInterval
+
+public com.android.internal.telephony.gsm.stk.Duration$TimeUnit timeUnit
+----------------METHODS----------------
+
+public void <init>(
+int
+com.android.internal.telephony.gsm.stk.Duration$TimeUnit)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/stk/FontSize;>; )
+public final class com.android.internal.telephony.gsm.stk.FontSize extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.stk.FontSize[] $VALUES
+
+public static final com.android.internal.telephony.gsm.stk.FontSize LARGE
+
+public static final com.android.internal.telephony.gsm.stk.FontSize NORMAL
+
+public static final com.android.internal.telephony.gsm.stk.FontSize SMALL
+
+private int mValue
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static com.android.internal.telephony.gsm.stk.FontSize fromInt(
+int)
+
+public static com.android.internal.telephony.gsm.stk.FontSize valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.stk.FontSize[] values()
+
+________________CLASS________________
+
+
+ class com.android.internal.telephony.gsm.stk.ImageDescriptor extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int CODING_SCHEME_BASIC
+
+static final int CODING_SCHEME_COLOUR
+
+private static final java.lang.String TAG
+
+ int codingScheme
+
+ int height
+
+ int imageId
+
+ int length
+
+ int offset
+
+ int width
+----------------METHODS----------------
+
+ void <init>()
+
+static com.android.internal.telephony.gsm.stk.ImageDescriptor parse(
+byte[]
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/stk/Item; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Lcom/android/internal/telephony/gsm/stk/Item;>; )
+final class com.android.internal.telephony.gsm.stk.Item$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public com.android.internal.telephony.gsm.stk.Item createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public com.android.internal.telephony.gsm.stk.Item[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.stk.Item extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Lcom/android/internal/telephony/gsm/stk/Item;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public android.graphics.Bitmap icon
+
+public int id
+
+public java.lang.String text
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+java.lang.String)
+
+public void <init>(
+android.os.Parcel)
+
+public int describeContents()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/stk/LaunchBrowserMode;>; )
+public final class com.android.internal.telephony.gsm.stk.LaunchBrowserMode extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.stk.LaunchBrowserMode[] $VALUES
+
+public static final com.android.internal.telephony.gsm.stk.LaunchBrowserMode LAUNCH_IF_NOT_ALREADY_LAUNCHED
+
+public static final com.android.internal.telephony.gsm.stk.LaunchBrowserMode LAUNCH_NEW_BROWSER
+
+public static final com.android.internal.telephony.gsm.stk.LaunchBrowserMode USE_EXISTING_BROWSER
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.gsm.stk.LaunchBrowserMode valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.stk.LaunchBrowserMode[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/stk/Menu; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Lcom/android/internal/telephony/gsm/stk/Menu;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class com.android.internal.telephony.gsm.stk.Menu$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public com.android.internal.telephony.gsm.stk.Menu createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public com.android.internal.telephony.gsm.stk.Menu[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.stk.Menu extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Lcom/android/internal/telephony/gsm/stk/Menu;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public int defaultItem
+
+public boolean helpAvailable
+@dalvik.annotation.Signature (value =Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/Item;>; )
+public java.util.List items
+
+public boolean itemsIconSelfExplanatory
+
+public boolean softKeyPreferred
+
+public java.lang.String title
+@dalvik.annotation.Signature (value =Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/TextAttribute;>; )
+public java.util.List titleAttrs
+
+public android.graphics.Bitmap titleIcon
+
+public boolean titleIconSelfExplanatory
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+com.android.internal.telephony.gsm.stk.Menu$1)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/Item;>;Ljava/lang/String;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/TextAttribute;>;ZZI)V )
+public void <init>(
+java.util.List
+java.lang.String
+java.util.List
+boolean
+boolean
+int)
+
+public int describeContents()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/stk/PresentationType;>; )
+public final class com.android.internal.telephony.gsm.stk.PresentationType extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.stk.PresentationType[] $VALUES
+
+public static final com.android.internal.telephony.gsm.stk.PresentationType DATA_VALUES
+
+public static final com.android.internal.telephony.gsm.stk.PresentationType NAVIGATION_OPTIONS
+
+public static final com.android.internal.telephony.gsm.stk.PresentationType NOT_SPECIFIED
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.gsm.stk.PresentationType valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.stk.PresentationType[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/stk/ResultCode;>; )
+public final class com.android.internal.telephony.gsm.stk.ResultCode extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.stk.ResultCode[] $VALUES
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode ACCESS_TECH_UNABLE_TO_PROCESS
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode BACKWARD_MOVE_BY_USER
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode BEYOND_TERMINAL_CAPABILITY
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode BIP_ERROR
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode CMD_DATA_NOT_UNDERSTOOD
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode CMD_NUM_NOT_KNOWN
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode CMD_TYPE_NOT_UNDERSTOOD
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode CONTRADICTION_WITH_TIMER
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode FRAMES_ERROR
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode HELP_INFO_REQUIRED
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode LAUNCH_BROWSER_ERROR
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode MMS_ERROR
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode MMS_TEMPORARY
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode MULTI_CARDS_CMD_ERROR
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode NAA_CALL_CONTROL_TEMPORARY
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode NETWORK_CRNTLY_UNABLE_TO_PROCESS
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode NO_RESPONSE_FROM_USER
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode OK
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode PRFRMD_ICON_NOT_DISPLAYED
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode PRFRMD_LIMITED_SERVICE
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode PRFRMD_MODIFIED_BY_NAA
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode PRFRMD_NAA_NOT_ACTIVE
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode PRFRMD_TONE_NOT_PLAYED
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode PRFRMD_WITH_ADDITIONAL_EFS_READ
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode PRFRMD_WITH_MISSING_INFO
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode PRFRMD_WITH_MODIFICATION
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode PRFRMD_WITH_PARTIAL_COMPREHENSION
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode REQUIRED_VALUES_MISSING
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode SMS_RP_ERROR
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode SS_RETURN_ERROR
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode TERMINAL_CRNTLY_UNABLE_TO_PROCESS
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode UICC_SESSION_TERM_BY_USER
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode USER_CLEAR_DOWN_CALL
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode USER_NOT_ACCEPT
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode USIM_CALL_CONTROL_PERMANENT
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode USSD_RETURN_ERROR
+
+public static final com.android.internal.telephony.gsm.stk.ResultCode USSD_SS_SESSION_TERM_BY_USER
+
+private int mCode
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static com.android.internal.telephony.gsm.stk.ResultCode valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.stk.ResultCode[] values()
+
+public int code()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class com.android.internal.telephony.gsm.stk.ResultException$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$com$android$internal$telephony$gsm$stk$ResultCode
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+ class com.android.internal.telephony.gsm.stk.StkException extends android.util.AndroidException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/stk/ResultException$1; )
+public class com.android.internal.telephony.gsm.stk.ResultException extends com.android.internal.telephony.gsm.stk.StkException
+
+----------------FIELDS----------------
+
+private int mAdditionalInfo
+
+private com.android.internal.telephony.gsm.stk.ResultCode mResult
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.telephony.gsm.stk.ResultCode)
+
+public void <init>(
+com.android.internal.telephony.gsm.stk.ResultCode
+int)
+
+public int additionalInfo()
+
+public boolean hasAdditionalInfo()
+
+public com.android.internal.telephony.gsm.stk.ResultCode result()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/stk/Service; )
+ class com.android.internal.telephony.gsm.stk.Service$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$com$android$internal$telephony$gsm$stk$AppInterface$State
+
+static final int[] $SwitchMap$com$android$internal$telephony$gsm$stk$CommandType
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =CtlvDeviceIdentities )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/stk/Service; )
+ class com.android.internal.telephony.gsm.stk.Service$CtlvDeviceIdentities extends java.lang.Object
+
+----------------FIELDS----------------
+
+public int destinationId
+
+public int sourceId
+
+final com.android.internal.telephony.gsm.stk.Service this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.stk.Service)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =RequestData )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/stk/Service; )
+ class com.android.internal.telephony.gsm.stk.Service$RequestData extends java.lang.Object
+
+----------------FIELDS----------------
+
+public com.android.internal.telephony.gsm.stk.CtlvCommandDetails cmdDet
+
+final com.android.internal.telephony.gsm.stk.Service this$0
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.telephony.gsm.stk.Service
+com.android.internal.telephony.gsm.stk.CtlvCommandDetails)
+
+ boolean loadNextIcon()
+
+ void setIcon(
+byte[])
+
+ void setIconImg(
+com.android.internal.telephony.gsm.stk.ImageDescriptor)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =GetInkeyData )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/stk/Service; )
+ class com.android.internal.telephony.gsm.stk.Service$GetInkeyData extends com.android.internal.telephony.gsm.stk.Service$RequestData
+
+----------------FIELDS----------------
+
+public boolean isUcs2
+
+public boolean isYesNo
+
+final com.android.internal.telephony.gsm.stk.Service this$0
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.telephony.gsm.stk.Service
+com.android.internal.telephony.gsm.stk.CtlvCommandDetails
+boolean
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/stk/Service; )
+@dalvik.annotation.InnerClass (accessFlags =1024 name =ResponseData )
+abstract class com.android.internal.telephony.gsm.stk.Service$ResponseData extends java.lang.Object
+
+----------------FIELDS----------------
+
+final com.android.internal.telephony.gsm.stk.Service this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.stk.Service)
+
+public abstract void format(
+java.io.ByteArrayOutputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =GetInkeyInputResponseData )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/stk/Service; )
+ class com.android.internal.telephony.gsm.stk.Service$GetInkeyInputResponseData extends com.android.internal.telephony.gsm.stk.Service$ResponseData
+
+----------------FIELDS----------------
+
+public java.lang.String mInData
+
+private boolean mIsPacked
+
+private boolean mIsUcs2
+
+private boolean mIsYesNo
+
+private boolean mYesNoResponse
+
+final com.android.internal.telephony.gsm.stk.Service this$0
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.telephony.gsm.stk.Service
+java.lang.String
+boolean
+boolean)
+
+public void <init>(
+com.android.internal.telephony.gsm.stk.Service
+boolean)
+
+public void format(
+java.io.ByteArrayOutputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =GetInputData )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/stk/Service; )
+ class com.android.internal.telephony.gsm.stk.Service$GetInputData extends com.android.internal.telephony.gsm.stk.Service$RequestData
+
+----------------FIELDS----------------
+
+public boolean isPacked
+
+public boolean isUcs2
+
+final com.android.internal.telephony.gsm.stk.Service this$0
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.telephony.gsm.stk.Service
+com.android.internal.telephony.gsm.stk.CtlvCommandDetails
+boolean
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/stk/Service; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =IconId )
+ class com.android.internal.telephony.gsm.stk.Service$IconId extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int recordNumber
+
+ boolean selfExplanatory
+
+final com.android.internal.telephony.gsm.stk.Service this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.stk.Service)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/stk/Service; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =ItemsIconId )
+ class com.android.internal.telephony.gsm.stk.Service$ItemsIconId extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int[] recordNumbers
+
+ boolean selfExplanatory
+
+final com.android.internal.telephony.gsm.stk.Service this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.gsm.stk.Service)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =SelectItemData )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/stk/Service; )
+ class com.android.internal.telephony.gsm.stk.Service$SelectItemData extends com.android.internal.telephony.gsm.stk.Service$RequestData
+
+----------------FIELDS----------------
+
+private static final int LOAD_ICON_DONE
+
+private static final int LOAD_ICON_ITEM
+
+private static final int LOAD_ICON_OFF
+
+private static final int LOAD_ICON_TITLE
+
+private static final int NO_ICON_TO_LOAD
+
+private com.android.internal.telephony.gsm.stk.ImageDescriptor currentImgDes
+
+private int currentItemsIconLoaded
+
+private int iconLoadState
+
+ com.android.internal.telephony.gsm.stk.Service$ItemsIconId mItemsIconId
+
+ com.android.internal.telephony.gsm.stk.Menu mMenu
+
+ com.android.internal.telephony.gsm.stk.PresentationType mPresentationType
+
+ com.android.internal.telephony.gsm.stk.Service$IconId mTitleIconId
+
+final com.android.internal.telephony.gsm.stk.Service this$0
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.telephony.gsm.stk.Service
+com.android.internal.telephony.gsm.stk.CtlvCommandDetails
+com.android.internal.telephony.gsm.stk.Menu
+com.android.internal.telephony.gsm.stk.PresentationType
+com.android.internal.telephony.gsm.stk.Service$IconId
+com.android.internal.telephony.gsm.stk.Service$ItemsIconId)
+
+private int getNextRecordNumber()
+
+ boolean loadNextIcon()
+
+ void setIcon(
+byte[])
+
+ void setIconImg(
+com.android.internal.telephony.gsm.stk.ImageDescriptor)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =SelectItemResponseData )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/gsm/stk/Service; )
+ class com.android.internal.telephony.gsm.stk.Service$SelectItemResponseData extends com.android.internal.telephony.gsm.stk.Service$ResponseData
+
+----------------FIELDS----------------
+
+private int id
+
+final com.android.internal.telephony.gsm.stk.Service this$0
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.telephony.gsm.stk.Service
+int)
+
+public void format(
+java.io.ByteArrayOutputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/gsm/stk/Service$1;Lcom/android/internal/telephony/gsm/stk/Service$SelectItemResponseData;Lcom/android/internal/telephony/gsm/stk/Service$GetInkeyInputResponseData;Lcom/android/internal/telephony/gsm/stk/Service$ResponseData;Lcom/android/internal/telephony/gsm/stk/Service$CtlvDeviceIdentities;Lcom/android/internal/telephony/gsm/stk/Service$SelectItemData;Lcom/android/internal/telephony/gsm/stk/Service$GetInputData;Lcom/android/internal/telephony/gsm/stk/Service$GetInkeyData;Lcom/android/internal/telephony/gsm/stk/Service$RequestData;Lcom/android/internal/telephony/gsm/stk/Service$ItemsIconId;Lcom/android/internal/telephony/gsm/stk/Service$IconId; )
+public class com.android.internal.telephony.gsm.stk.Service extends android.os.Handler implements com.android.internal.telephony.gsm.stk.AppInterface
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private static java.lang.String APP_FULL_NAME
+
+static final int APP_INDICATOR_INSTALLED_NORMAL
+
+static final int APP_INDICATOR_INSTALLED_SPECIAL
+
+private static final int APP_INDICATOR_LAUNCHED
+
+static final int APP_INDICATOR_PRE_BOOT
+
+static final int APP_INDICATOR_UNINSTALLED
+
+private static final int APP_INSTALL_INDICATOR
+
+private static java.lang.String APP_PACKAGE_NAME
+
+private static final int DEV_ID_DISPLAY
+
+private static final int DEV_ID_EARPIECE
+
+private static final int DEV_ID_KEYPAD
+
+private static final int DEV_ID_NETWORK
+
+private static final int DEV_ID_TERMINAL
+
+private static final int DEV_ID_UICC
+
+private static final int EVENT_CALL_SETUP
+
+private static final int EVENT_EVENT_NOTIFY
+
+private static final int EVENT_PROACTIVE_COMMAND
+
+private static final int EVENT_READ_EF_IMG_RECOED_DONE
+
+private static final int EVENT_READ_ICON_DONE
+
+private static final int EVENT_SESSION_END
+
+private static final int EVENT_SIM_ABSENT
+
+private static final int EVENT_SIM_LOADED
+
+private static final byte GET_INKEY_NO
+
+private static final byte GET_INKEY_YES
+
+static final int STK_NOTIFICATION_ID
+
+private static final java.lang.String TAG
+
+public static final int UICC_EVENT_ACCESS_TECH_CHANGE
+
+public static final int UICC_EVENT_BROWSER_TERMINATION
+
+public static final int UICC_EVENT_BROWSING_STATUS
+
+public static final int UICC_EVENT_CALL_CONNECTED
+
+public static final int UICC_EVENT_CALL_DISCONNECTED
+
+public static final int UICC_EVENT_CARD_READER_STATUS
+
+public static final int UICC_EVENT_CHANNEL_STATUS
+
+public static final int UICC_EVENT_DATA_AVAILABLE
+
+public static final int UICC_EVENT_DISPLAY_PARAMS_CHANGE
+
+public static final int UICC_EVENT_FRAMES_INFO_CHANGE
+
+public static final int UICC_EVENT_IDLE_SCREEN_AVAILABLE
+
+public static final int UICC_EVENT_I_WLAN_ACESS_STATUS
+
+public static final int UICC_EVENT_LANGUAGE_SELECTION
+
+public static final int UICC_EVENT_LOCAL_CONNECTION
+
+public static final int UICC_EVENT_LOCATION_STATUS
+
+public static final int UICC_EVENT_MT_CALL
+
+public static final int UICC_EVENT_NETWORK_SEARCH_MODE_CHANGE
+
+public static final int UICC_EVENT_USER_ACTIVITY
+
+private static com.android.internal.telephony.gsm.stk.Service sInstance
+
+private int mAppIndicator
+
+private com.android.internal.telephony.gsm.CommandsInterface mCmdIf
+
+private com.android.internal.telephony.gsm.stk.CommandListener mCmdListener
+
+private java.lang.Object mCmdListenerLock
+
+private android.content.Context mContext
+
+private com.android.internal.telephony.gsm.stk.Service$RequestData mCurrentRequest
+
+private int mInstallIndicator
+
+private com.android.internal.telephony.gsm.stk.Menu mMainMenu
+
+private com.android.internal.telephony.gsm.stk.Service$RequestData mNextRequest
+
+private android.app.NotificationManager mNm
+
+private java.lang.String mServiceName
+
+private com.android.internal.telephony.gsm.GsmSimCard mSimCard
+
+private com.android.internal.telephony.gsm.SIMFileHandler mSimFH
+
+private com.android.internal.telephony.gsm.SIMRecords mSimRecords
+
+private com.android.internal.telephony.gsm.stk.AppInterface$State mState
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+com.android.internal.telephony.gsm.CommandsInterface
+com.android.internal.telephony.gsm.SIMRecords
+android.content.Context
+com.android.internal.telephony.gsm.SIMFileHandler
+com.android.internal.telephony.gsm.GsmSimCard)
+
+static com.android.internal.telephony.gsm.SIMFileHandler access$000(
+com.android.internal.telephony.gsm.stk.Service)
+
+private void eventDownload(
+int
+int
+int
+byte[]
+boolean)
+
+private com.android.internal.telephony.gsm.stk.CtlvCommandDetails getCurrentCmdDet()
+
+public static com.android.internal.telephony.gsm.stk.Service getInstance()
+
+public static com.android.internal.telephony.gsm.stk.Service getInstance(
+com.android.internal.telephony.gsm.CommandsInterface
+com.android.internal.telephony.gsm.SIMRecords
+android.content.Context
+com.android.internal.telephony.gsm.SIMFileHandler
+com.android.internal.telephony.gsm.GsmSimCard)
+
+private void handleEventNotify(
+java.lang.String)
+
+private void handleIconData(
+byte[])
+
+private void handleImageDescriptor(
+byte[])
+
+private void handleProactiveCommand(
+java.lang.String)
+
+private void handleSessionEnd(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+private int[] parseFileList(
+com.android.internal.telephony.gsm.stk.ComprehensionTlv)
+@dalvik.annotation.Signature (value =(Lcom/android/internal/telephony/gsm/stk/CtlvCommandDetails;Lcom/android/internal/telephony/gsm/stk/Service$CtlvDeviceIdentities;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>;)Z )
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+private boolean processDisplayText(
+com.android.internal.telephony.gsm.stk.CtlvCommandDetails
+com.android.internal.telephony.gsm.stk.Service$CtlvDeviceIdentities
+java.util.List)
+@dalvik.annotation.Signature (value =(Lcom/android/internal/telephony/gsm/stk/CtlvCommandDetails;Lcom/android/internal/telephony/gsm/stk/Service$CtlvDeviceIdentities;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>;)V )
+private void processEventNotify(
+com.android.internal.telephony.gsm.stk.CtlvCommandDetails
+com.android.internal.telephony.gsm.stk.Service$CtlvDeviceIdentities
+java.util.List)
+@dalvik.annotation.Signature (value =(Lcom/android/internal/telephony/gsm/stk/CtlvCommandDetails;Lcom/android/internal/telephony/gsm/stk/Service$CtlvDeviceIdentities;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>;)Z )
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+private boolean processGetInkey(
+com.android.internal.telephony.gsm.stk.CtlvCommandDetails
+com.android.internal.telephony.gsm.stk.Service$CtlvDeviceIdentities
+java.util.List)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+@dalvik.annotation.Signature (value =(Lcom/android/internal/telephony/gsm/stk/CtlvCommandDetails;Lcom/android/internal/telephony/gsm/stk/Service$CtlvDeviceIdentities;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>;)Z )
+private boolean processGetInput(
+com.android.internal.telephony.gsm.stk.CtlvCommandDetails
+com.android.internal.telephony.gsm.stk.Service$CtlvDeviceIdentities
+java.util.List)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+@dalvik.annotation.Signature (value =(Lcom/android/internal/telephony/gsm/stk/CtlvCommandDetails;Lcom/android/internal/telephony/gsm/stk/Service$CtlvDeviceIdentities;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>;)Z )
+private boolean processLaunchBrowser(
+com.android.internal.telephony.gsm.stk.CtlvCommandDetails
+com.android.internal.telephony.gsm.stk.Service$CtlvDeviceIdentities
+java.util.List)
+@dalvik.annotation.Signature (value =(Lcom/android/internal/telephony/gsm/stk/CtlvCommandDetails;Lcom/android/internal/telephony/gsm/stk/Service$CtlvDeviceIdentities;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>;)Z )
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+private boolean processPlayTone(
+com.android.internal.telephony.gsm.stk.CtlvCommandDetails
+com.android.internal.telephony.gsm.stk.Service$CtlvDeviceIdentities
+java.util.List)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+@dalvik.annotation.Signature (value =(Lcom/android/internal/telephony/gsm/stk/CtlvCommandDetails;Lcom/android/internal/telephony/gsm/stk/Service$CtlvDeviceIdentities;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>;)Z )
+private boolean processRefresh(
+com.android.internal.telephony.gsm.stk.CtlvCommandDetails
+com.android.internal.telephony.gsm.stk.Service$CtlvDeviceIdentities
+java.util.List)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+private boolean processSelectItem()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+@dalvik.annotation.Signature (value =(Lcom/android/internal/telephony/gsm/stk/CtlvCommandDetails;Lcom/android/internal/telephony/gsm/stk/Service$CtlvDeviceIdentities;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>;)Z )
+private boolean processSelectItem(
+com.android.internal.telephony.gsm.stk.CtlvCommandDetails
+com.android.internal.telephony.gsm.stk.Service$CtlvDeviceIdentities
+java.util.List)
+@dalvik.annotation.Signature (value =(Lcom/android/internal/telephony/gsm/stk/CtlvCommandDetails;Lcom/android/internal/telephony/gsm/stk/Service$CtlvDeviceIdentities;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>;)V )
+private void processSetUpEventList(
+com.android.internal.telephony.gsm.stk.CtlvCommandDetails
+com.android.internal.telephony.gsm.stk.Service$CtlvDeviceIdentities
+java.util.List)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+@dalvik.annotation.Signature (value =(Lcom/android/internal/telephony/gsm/stk/CtlvCommandDetails;Lcom/android/internal/telephony/gsm/stk/Service$CtlvDeviceIdentities;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>;)Z )
+private boolean processSetUpIdleModeText(
+com.android.internal.telephony.gsm.stk.CtlvCommandDetails
+com.android.internal.telephony.gsm.stk.Service$CtlvDeviceIdentities
+java.util.List)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+@dalvik.annotation.Signature (value =(Lcom/android/internal/telephony/gsm/stk/CtlvCommandDetails;Lcom/android/internal/telephony/gsm/stk/Service$CtlvDeviceIdentities;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>;)Z )
+private boolean processSetUpMenu(
+com.android.internal.telephony.gsm.stk.CtlvCommandDetails
+com.android.internal.telephony.gsm.stk.Service$CtlvDeviceIdentities
+java.util.List)
+@dalvik.annotation.Signature (value =(Lcom/android/internal/telephony/gsm/stk/CtlvCommandDetails;Lcom/android/internal/telephony/gsm/stk/Service$CtlvDeviceIdentities;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>;)V )
+private void processSetupCall(
+com.android.internal.telephony.gsm.stk.CtlvCommandDetails
+com.android.internal.telephony.gsm.stk.Service$CtlvDeviceIdentities
+java.util.List)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+private java.lang.String retrieveAlphaId(
+com.android.internal.telephony.gsm.stk.ComprehensionTlv)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>;)Lcom/android/internal/telephony/gsm/stk/CtlvCommandDetails; )
+private com.android.internal.telephony.gsm.stk.CtlvCommandDetails retrieveCommandDetails(
+java.util.List)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>;)Lcom/android/internal/telephony/gsm/stk/Service$CtlvDeviceIdentities; )
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+private com.android.internal.telephony.gsm.stk.Service$CtlvDeviceIdentities retrieveDeviceIdentities(
+java.util.List)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+private com.android.internal.telephony.gsm.stk.Duration retrieveDuration(
+com.android.internal.telephony.gsm.stk.ComprehensionTlv)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+private com.android.internal.telephony.gsm.stk.Service$IconId retrieveIconId(
+com.android.internal.telephony.gsm.stk.ComprehensionTlv)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+private com.android.internal.telephony.gsm.stk.Item retrieveItem(
+com.android.internal.telephony.gsm.stk.ComprehensionTlv)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+private int retrieveItemId(
+com.android.internal.telephony.gsm.stk.ComprehensionTlv)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+private com.android.internal.telephony.gsm.stk.Service$ItemsIconId retrieveItemsIconId(
+com.android.internal.telephony.gsm.stk.ComprehensionTlv)
+@dalvik.annotation.Signature (value =(Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;)Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/TextAttribute;>; )
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+private java.util.List retrieveTextAttribute(
+com.android.internal.telephony.gsm.stk.ComprehensionTlv)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/gsm/stk/ResultException; )
+private java.lang.String retrieveTextString(
+com.android.internal.telephony.gsm.stk.ComprehensionTlv)
+@dalvik.annotation.Signature (value =(Lcom/android/internal/telephony/gsm/stk/ComprehensionTlvTag;Ljava/util/Iterator<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>;)Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv; )
+private com.android.internal.telephony.gsm.stk.ComprehensionTlv searchForNextTag(
+com.android.internal.telephony.gsm.stk.ComprehensionTlvTag
+java.util.Iterator)
+@dalvik.annotation.Signature (value =(Lcom/android/internal/telephony/gsm/stk/ComprehensionTlvTag;Ljava/util/List<Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv;>;)Lcom/android/internal/telephony/gsm/stk/ComprehensionTlv; )
+private com.android.internal.telephony.gsm.stk.ComprehensionTlv searchForTag(
+com.android.internal.telephony.gsm.stk.ComprehensionTlvTag
+java.util.List)
+
+private void sendTerminalResponse(
+com.android.internal.telephony.gsm.stk.CtlvCommandDetails
+com.android.internal.telephony.gsm.stk.ResultCode
+boolean
+int
+com.android.internal.telephony.gsm.stk.Service$ResponseData)
+
+private void setAppState(
+boolean)
+
+public void acceptOrRejectCall(
+boolean)
+
+public boolean backwardMove()
+
+public int getAppIndication()
+
+public com.android.internal.telephony.gsm.stk.Menu getCurrentMenu()
+
+public java.lang.String getServiceName()
+
+public com.android.internal.telephony.gsm.stk.AppInterface$State getState()
+
+public void handleMessage(
+android.os.Message)
+
+public boolean isStkSupported()
+
+public void notifyBrowserTermination(
+boolean)
+
+public void notifyDisplayTextEnded(
+boolean)
+
+public void notifyIdleScreenAvailable()
+
+public void notifyInkey(
+char
+boolean)
+
+public void notifyInkey(
+boolean
+boolean)
+
+public void notifyInput(
+java.lang.String
+boolean)
+
+public void notifyLanguageSelection(
+java.lang.String)
+
+public void notifyLaunchBrowser(
+boolean)
+
+public void notifyMenuSelection(
+int
+boolean)
+
+public void notifyNoResponse()
+
+public void notifySelectedItem(
+int
+boolean)
+
+public void notifyToneEnded()
+
+public void notifyUserActivity()
+
+ void setAppIndication(
+int)
+
+public void setCommandListener(
+com.android.internal.telephony.gsm.stk.CommandListener)
+
+public boolean terminateSession()
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.stk.StkAppInstaller extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final java.lang.String STK_APP_INSTALL_ACTION
+
+static final java.lang.String STK_APP_UNINSTALL_ACTION
+----------------METHODS----------------
+
+public void <init>()
+
+public static void installApp(
+android.content.Context)
+
+private static void setAppState(
+android.content.Context
+int)
+
+public static void unInstallApp(
+android.content.Context)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.stk.StkAppStateReceiver extends android.content.BroadcastReceiver
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+public void <init>()
+
+public void onReceive(
+android.content.Context
+android.content.Intent)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/stk/TextAlignment;>; )
+public final class com.android.internal.telephony.gsm.stk.TextAlignment extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.stk.TextAlignment[] $VALUES
+
+public static final com.android.internal.telephony.gsm.stk.TextAlignment CENTER
+
+public static final com.android.internal.telephony.gsm.stk.TextAlignment DEFAULT
+
+public static final com.android.internal.telephony.gsm.stk.TextAlignment LEFT
+
+public static final com.android.internal.telephony.gsm.stk.TextAlignment RIGHT
+
+private int mValue
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static com.android.internal.telephony.gsm.stk.TextAlignment fromInt(
+int)
+
+public static com.android.internal.telephony.gsm.stk.TextAlignment valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.stk.TextAlignment[] values()
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.gsm.stk.TextAttribute extends java.lang.Object
+
+----------------FIELDS----------------
+
+public com.android.internal.telephony.gsm.stk.TextAlignment align
+
+public boolean bold
+
+public com.android.internal.telephony.gsm.stk.TextColor color
+
+public boolean italic
+
+public int length
+
+public com.android.internal.telephony.gsm.stk.FontSize size
+
+public int start
+
+public boolean strikeThrough
+
+public boolean underlined
+----------------METHODS----------------
+
+public void <init>(
+int
+int
+com.android.internal.telephony.gsm.stk.TextAlignment
+com.android.internal.telephony.gsm.stk.FontSize
+boolean
+boolean
+boolean
+boolean
+com.android.internal.telephony.gsm.stk.TextColor)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/stk/TextColor;>; )
+public final class com.android.internal.telephony.gsm.stk.TextColor extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.stk.TextColor[] $VALUES
+
+public static final com.android.internal.telephony.gsm.stk.TextColor BLACK
+
+public static final com.android.internal.telephony.gsm.stk.TextColor BRIGHT_BLUE
+
+public static final com.android.internal.telephony.gsm.stk.TextColor BRIGHT_CYAN
+
+public static final com.android.internal.telephony.gsm.stk.TextColor BRIGHT_GREEN
+
+public static final com.android.internal.telephony.gsm.stk.TextColor BRIGHT_MAGENTA
+
+public static final com.android.internal.telephony.gsm.stk.TextColor BRIGHT_RED
+
+public static final com.android.internal.telephony.gsm.stk.TextColor BRIGHT_YELLOW
+
+public static final com.android.internal.telephony.gsm.stk.TextColor DARK_BLUE
+
+public static final com.android.internal.telephony.gsm.stk.TextColor DARK_CYAN
+
+public static final com.android.internal.telephony.gsm.stk.TextColor DARK_GRAY
+
+public static final com.android.internal.telephony.gsm.stk.TextColor DARK_GREEN
+
+public static final com.android.internal.telephony.gsm.stk.TextColor DARK_MAGENTA
+
+public static final com.android.internal.telephony.gsm.stk.TextColor DARK_RED
+
+public static final com.android.internal.telephony.gsm.stk.TextColor DARK_YELLOW
+
+public static final com.android.internal.telephony.gsm.stk.TextColor GRAY
+
+public static final com.android.internal.telephony.gsm.stk.TextColor WHITE
+
+private int mValue
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static com.android.internal.telephony.gsm.stk.TextColor fromInt(
+int)
+
+public static com.android.internal.telephony.gsm.stk.TextColor valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.stk.TextColor[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/gsm/stk/Tone;>; )
+public final class com.android.internal.telephony.gsm.stk.Tone extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.gsm.stk.Tone[] $VALUES
+
+public static final com.android.internal.telephony.gsm.stk.Tone BUSY
+
+public static final com.android.internal.telephony.gsm.stk.Tone CALL_WAITING
+
+public static final com.android.internal.telephony.gsm.stk.Tone CONGESTION
+
+public static final com.android.internal.telephony.gsm.stk.Tone CRITICAL_ALERT
+
+public static final com.android.internal.telephony.gsm.stk.Tone DIAL
+
+public static final com.android.internal.telephony.gsm.stk.Tone ERROR_SPECIAL_INFO
+
+public static final com.android.internal.telephony.gsm.stk.Tone GENERAL_BEEP
+
+public static final com.android.internal.telephony.gsm.stk.Tone HAPPY
+
+public static final com.android.internal.telephony.gsm.stk.Tone INCOMING_SMS
+
+public static final com.android.internal.telephony.gsm.stk.Tone INCOMING_SPEECH_CALL
+
+public static final com.android.internal.telephony.gsm.stk.Tone MELODY_1
+
+public static final com.android.internal.telephony.gsm.stk.Tone MELODY_2
+
+public static final com.android.internal.telephony.gsm.stk.Tone MELODY_3
+
+public static final com.android.internal.telephony.gsm.stk.Tone MELODY_4
+
+public static final com.android.internal.telephony.gsm.stk.Tone MELODY_5
+
+public static final com.android.internal.telephony.gsm.stk.Tone MELODY_6
+
+public static final com.android.internal.telephony.gsm.stk.Tone MELODY_7
+
+public static final com.android.internal.telephony.gsm.stk.Tone MELODY_8
+
+public static final com.android.internal.telephony.gsm.stk.Tone MESSAGE_RECEIVED
+
+public static final com.android.internal.telephony.gsm.stk.Tone NEGATIVE_ACK
+
+public static final com.android.internal.telephony.gsm.stk.Tone POSITIVE_ACK
+
+public static final com.android.internal.telephony.gsm.stk.Tone QUESTION
+
+public static final com.android.internal.telephony.gsm.stk.Tone RADIO_PATH_ACK
+
+public static final com.android.internal.telephony.gsm.stk.Tone RADIO_PATH_NOT_AVAILABLE
+
+public static final com.android.internal.telephony.gsm.stk.Tone RINGING
+
+public static final com.android.internal.telephony.gsm.stk.Tone SAD
+
+public static final com.android.internal.telephony.gsm.stk.Tone URGENT
+
+public static final com.android.internal.telephony.gsm.stk.Tone VIBRATE_ONLY
+
+private int mValue
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static com.android.internal.telephony.gsm.stk.Tone fromInt(
+int)
+
+public static com.android.internal.telephony.gsm.stk.Tone valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.gsm.stk.Tone[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16408 name =State )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/test/CallInfo; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/test/CallInfo$State;>; )
+final class com.android.internal.telephony.test.CallInfo$State extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.test.CallInfo$State[] $VALUES
+
+public static final com.android.internal.telephony.test.CallInfo$State ACTIVE
+
+public static final com.android.internal.telephony.test.CallInfo$State ALERTING
+
+public static final com.android.internal.telephony.test.CallInfo$State DIALING
+
+public static final com.android.internal.telephony.test.CallInfo$State HOLDING
+
+public static final com.android.internal.telephony.test.CallInfo$State INCOMING
+
+public static final com.android.internal.telephony.test.CallInfo$State WAITING
+
+private final int value
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static com.android.internal.telephony.test.CallInfo$State valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.test.CallInfo$State[] values()
+
+public int value()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/test/CallInfo$State; )
+ class com.android.internal.telephony.test.CallInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int TOA
+
+ boolean isMT
+
+ boolean isMpty
+
+ java.lang.String number
+
+ com.android.internal.telephony.test.CallInfo$State state
+----------------METHODS----------------
+
+ void <init>(
+boolean
+com.android.internal.telephony.test.CallInfo$State
+boolean
+java.lang.String)
+
+static com.android.internal.telephony.test.CallInfo createIncomingCall(
+java.lang.String)
+
+static com.android.internal.telephony.test.CallInfo createOutgoingCall(
+java.lang.String)
+
+ boolean isActiveOrHeld()
+
+ boolean isConnecting()
+
+ boolean isRinging()
+
+ java.lang.String toCLCCLine(
+int)
+
+ com.android.internal.telephony.gsm.DriverCall toDriverCall(
+int)
+
+________________CLASS________________
+
+
+ class com.android.internal.telephony.test.InterpreterEx extends java.lang.Exception
+
+----------------FIELDS----------------
+
+ java.lang.String result
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+ class com.android.internal.telephony.test.InvalidStateEx extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+________________CLASS________________
+
+
+ class com.android.internal.telephony.test.LineReader extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int BUFFER_SIZE
+
+ byte[] buffer
+
+ java.io.InputStream inStream
+----------------METHODS----------------
+
+ void <init>(
+java.io.InputStream)
+
+ java.lang.String getNextLine()
+
+ java.lang.String getNextLine(
+boolean)
+
+ java.lang.String getNextLineCtrlZ()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class com.android.internal.telephony.test.ModelInterpreter$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final com.android.internal.telephony.test.ModelInterpreter this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.test.ModelInterpreter)
+
+public void run()
+
+________________CLASS________________
+
+
+public abstract interface class com.android.internal.telephony.test.SimulatedRadioControl extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void pauseResponses()
+
+public abstract void progressConnectingCallState()
+
+public abstract void progressConnectingToActive()
+
+public abstract void resumeResponses()
+
+public abstract void setAutoProgressConnectingCall(
+boolean)
+
+public abstract void setNextCallFailCause(
+int)
+
+public abstract void setNextDialFailImmediately(
+boolean)
+
+public abstract void shutdown()
+
+public abstract void triggerHangupAll()
+
+public abstract void triggerHangupBackground()
+
+public abstract void triggerHangupForeground()
+
+public abstract void triggerIncomingSMS(
+java.lang.String)
+
+public abstract void triggerIncomingUssd(
+java.lang.String
+java.lang.String)
+
+public abstract void triggerRing(
+java.lang.String)
+
+public abstract void triggerSsn(
+int
+int)
+
+________________CLASS________________
+
+
+public class com.android.internal.telephony.test.ModelInterpreter extends java.lang.Object implements java.lang.Runnable, android.os.HandlerInterface, com.android.internal.telephony.test.SimulatedRadioControl
+
+----------------FIELDS----------------
+
+static final int CONNECTING_PAUSE_MSEC
+
+static final java.lang.String LOG_TAG
+
+static final int MAX_CALLS
+
+static final int PROGRESS_CALL_STATE
+
+static final java.lang.String[][] sDefaultResponses
+
+private java.lang.String finalResponse
+
+ com.android.internal.os.HandlerThread handlerThread
+
+ java.io.InputStream in
+
+ com.android.internal.telephony.test.LineReader lineReader
+
+ java.io.OutputStream out
+
+ int pausedResponseCount
+
+ java.lang.Object pausedResponseMonitor
+
+ com.android.internal.telephony.test.SimulatedGsmCallState simulatedCallState
+
+ java.net.ServerSocket ss
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.io.InputStream
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.net.InetSocketAddress)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/test/InterpreterEx; )
+private void conference()
+
+private void init()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/test/InterpreterEx; )
+private void onAnswer()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/test/InterpreterEx; )
+private void onCHLD(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/test/InterpreterEx; )
+private void onCLCC()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/test/InterpreterEx; )
+private void onDial(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/test/InterpreterEx; )
+private void onHangup()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/test/InterpreterEx; )
+private void onSMSSend(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/test/InterpreterEx; )
+private void releaseActiveAcceptHeldOrWaiting()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/test/InterpreterEx; )
+private void releaseHeldOrUDUB()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/test/InterpreterEx; )
+private void separateCall(
+int)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/test/InterpreterEx; )
+private void switchActiveAndHeldOrWaiting()
+
+public void handleMessage(
+android.os.Message)
+
+public void pauseResponses()
+
+ void print(
+java.lang.String)
+
+ void println(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/test/InterpreterEx; )
+ void processLine(
+java.lang.String)
+
+public void progressConnectingCallState()
+
+public void progressConnectingToActive()
+
+public void resumeResponses()
+
+public void run()
+
+public void sendUnsolicited(
+java.lang.String)
+
+public void setAutoProgressConnectingCall(
+boolean)
+
+public void setNextCallFailCause(
+int)
+
+public void setNextDialFailImmediately(
+boolean)
+
+public void shutdown()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/test/InterpreterEx; )
+ java.lang.String[] splitCommands(
+java.lang.String)
+
+public void triggerHangupAll()
+
+public void triggerHangupBackground()
+
+public void triggerHangupForeground()
+
+public void triggerIncomingSMS(
+java.lang.String)
+
+public void triggerIncomingUssd(
+java.lang.String
+java.lang.String)
+
+public void triggerRing(
+java.lang.String)
+
+public void triggerSsn(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class com.android.internal.telephony.test.SimulatedCommands$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final com.android.internal.telephony.test.SimulatedCommands this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.telephony.test.SimulatedCommands)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/test/SimulatedCommands; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class com.android.internal.telephony.test.SimulatedCommands$2 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$com$android$internal$telephony$gsm$CommandsInterface$RadioState
+
+static final int[] $SwitchMap$com$android$internal$telephony$test$SimulatedCommands$SimLockState
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16410 name =SimFdnState )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/test/SimulatedCommands$SimFdnState;>; )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/test/SimulatedCommands; )
+final class com.android.internal.telephony.test.SimulatedCommands$SimFdnState extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.test.SimulatedCommands$SimFdnState[] $VALUES
+
+public static final com.android.internal.telephony.test.SimulatedCommands$SimFdnState NONE
+
+public static final com.android.internal.telephony.test.SimulatedCommands$SimFdnState REQUIRE_PIN2
+
+public static final com.android.internal.telephony.test.SimulatedCommands$SimFdnState REQUIRE_PUK2
+
+public static final com.android.internal.telephony.test.SimulatedCommands$SimFdnState SIM_PERM_LOCKED
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.test.SimulatedCommands$SimFdnState valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.test.SimulatedCommands$SimFdnState[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16410 name =SimLockState )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/telephony/test/SimulatedCommands$SimLockState;>; )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/telephony/test/SimulatedCommands; )
+final class com.android.internal.telephony.test.SimulatedCommands$SimLockState extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.telephony.test.SimulatedCommands$SimLockState[] $VALUES
+
+public static final com.android.internal.telephony.test.SimulatedCommands$SimLockState NONE
+
+public static final com.android.internal.telephony.test.SimulatedCommands$SimLockState REQUIRE_PIN
+
+public static final com.android.internal.telephony.test.SimulatedCommands$SimLockState REQUIRE_PUK
+
+public static final com.android.internal.telephony.test.SimulatedCommands$SimLockState SIM_PERM_LOCKED
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.telephony.test.SimulatedCommands$SimLockState valueOf(
+java.lang.String)
+
+public static com.android.internal.telephony.test.SimulatedCommands$SimLockState[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/telephony/test/SimulatedCommands$2;Lcom/android/internal/telephony/test/SimulatedCommands$SimFdnState;Lcom/android/internal/telephony/test/SimulatedCommands$SimLockState; )
+public final class com.android.internal.telephony.test.SimulatedCommands extends com.android.internal.telephony.gsm.BaseCommands implements com.android.internal.telephony.gsm.CommandsInterface, android.os.HandlerInterface, com.android.internal.telephony.test.SimulatedRadioControl
+
+----------------FIELDS----------------
+
+private static final java.lang.String DEFAULT_SIM_PIN2_CODE
+
+private static final java.lang.String DEFAULT_SIM_PIN_CODE
+
+private static final com.android.internal.telephony.test.SimulatedCommands$SimFdnState INITIAL_FDN_STATE
+
+private static final com.android.internal.telephony.test.SimulatedCommands$SimLockState INITIAL_LOCK_STATE
+
+private static final java.lang.String LOG_TAG
+
+private static final java.lang.String SIM_PUK2_CODE
+
+private static final java.lang.String SIM_PUK_CODE
+
+ com.android.internal.os.HandlerThread handlerThread
+
+ int mNetworkType
+
+ java.lang.String mPin2Code
+
+ int mPin2UnlockAttempts
+
+ java.lang.String mPinCode
+
+ int mPinUnlockAttempts
+
+ int mPuk2UnlockAttempts
+
+ int mPukUnlockAttempts
+
+ boolean mSimFdnEnabled
+
+ com.android.internal.telephony.test.SimulatedCommands$SimFdnState mSimFdnEnabledState
+
+ boolean mSimLockEnabled
+
+ com.android.internal.telephony.test.SimulatedCommands$SimLockState mSimLockedState
+
+ boolean mSsnNotifyOn
+
+ int nextCallFailCause
+
+ int pausedResponseCount
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/os/Message;>; )
+ java.util.ArrayList pausedResponses
+
+ com.android.internal.telephony.test.SimulatedGsmCallState simulatedCallState
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private boolean isSimLocked()
+
+private void resultFail(
+android.os.Message
+java.lang.Throwable)
+
+private void resultSuccess(
+android.os.Message
+java.lang.Object)
+
+private void returnSimLockedStatus(
+android.os.Message)
+
+private void unimplemented(
+android.os.Message)
+
+public void acceptCall(
+android.os.Message)
+
+public void acknowledgeLastIncomingSMS(
+boolean
+android.os.Message)
+
+public void cancelPendingUssd(
+android.os.Message)
+
+public void changeBarringPassword(
+java.lang.String
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void changeSimPin(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void changeSimPin2(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void conference(
+android.os.Message)
+
+public void deactivateDefaultPDP(
+int
+android.os.Message)
+
+public void deleteSmsOnSim(
+int
+android.os.Message)
+
+public void dial(
+java.lang.String
+int
+android.os.Message)
+
+public void explicitCallTransfer(
+android.os.Message)
+
+public void getAvailableNetworks(
+android.os.Message)
+
+public void getBasebandVersion(
+android.os.Message)
+
+public void getCLIR(
+android.os.Message)
+
+public void getCurrentCalls(
+android.os.Message)
+
+public void getGPRSRegistrationState(
+android.os.Message)
+
+public void getIMEI(
+android.os.Message)
+
+public void getIMEISV(
+android.os.Message)
+
+public void getIMSI(
+android.os.Message)
+
+public void getLastCallFailCause(
+android.os.Message)
+
+public void getLastPdpFailCause(
+android.os.Message)
+
+public void getMute(
+android.os.Message)
+
+public void getNeighboringCids(
+android.os.Message)
+
+public void getNetworkSelectionMode(
+android.os.Message)
+
+public void getOperator(
+android.os.Message)
+
+public void getPDPContextList(
+android.os.Message)
+
+public void getPreferredNetworkType(
+android.os.Message)
+
+public void getRegistrationState(
+android.os.Message)
+
+public void getSignalStrength(
+android.os.Message)
+
+public void getSimStatus(
+android.os.Message)
+
+public void handleCallSetupRequestFromSim(
+boolean
+android.os.Message)
+
+public void handleMessage(
+android.os.Message)
+
+public void hangupConnection(
+int
+android.os.Message)
+
+public void hangupForegroundResumeBackground(
+android.os.Message)
+
+public void hangupWaitingOrBackground(
+android.os.Message)
+
+public void invokeOemRilRequestRaw(
+byte[]
+android.os.Message)
+
+public void invokeOemRilRequestStrings(
+java.lang.String[]
+android.os.Message)
+
+public void pauseResponses()
+
+public void progressConnectingCallState()
+
+public void progressConnectingToActive()
+
+public void queryAvailableBandMode(
+android.os.Message)
+
+public void queryCLIP(
+android.os.Message)
+
+public void queryCallForwardStatus(
+int
+int
+java.lang.String
+android.os.Message)
+
+public void queryCallWaiting(
+int
+android.os.Message)
+
+public void queryFacilityLock(
+java.lang.String
+java.lang.String
+int
+android.os.Message)
+
+public void rejectCall(
+android.os.Message)
+
+public void resetRadio(
+android.os.Message)
+
+public void resumeResponses()
+
+public void sendDtmf(
+char
+android.os.Message)
+
+public void sendEnvelope(
+java.lang.String
+android.os.Message)
+
+public void sendSMS(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void sendTerminalResponse(
+java.lang.String
+android.os.Message)
+
+public void sendUSSD(
+java.lang.String
+android.os.Message)
+
+public void separateConnection(
+int
+android.os.Message)
+
+public void setAutoProgressConnectingCall(
+boolean)
+
+public void setBandMode(
+int
+android.os.Message)
+
+public void setCLIR(
+int
+android.os.Message)
+
+public void setCallForward(
+int
+int
+int
+java.lang.String
+int
+android.os.Message)
+
+public void setCallWaiting(
+boolean
+int
+android.os.Message)
+
+public void setFacilityLock(
+java.lang.String
+boolean
+java.lang.String
+int
+android.os.Message)
+
+public void setLocationUpdates(
+boolean
+android.os.Message)
+
+public void setMute(
+boolean
+android.os.Message)
+
+public void setNetworkSelectionModeAutomatic(
+android.os.Message)
+
+public void setNetworkSelectionModeManual(
+java.lang.String
+android.os.Message)
+
+public void setNextCallFailCause(
+int)
+
+public void setNextDialFailImmediately(
+boolean)
+
+public void setPreferredNetworkType(
+int
+android.os.Message)
+
+public void setRadioPower(
+boolean
+android.os.Message)
+
+public void setSuppServiceNotifications(
+boolean
+android.os.Message)
+
+public void setupDefaultPDP(
+java.lang.String
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void shutdown()
+
+public void simIO(
+int
+int
+java.lang.String
+int
+int
+int
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void startDtmf(
+char
+android.os.Message)
+
+public void stopDtmf(
+android.os.Message)
+
+public void supplyNetworkDepersonalization(
+java.lang.String
+android.os.Message)
+
+public void supplySimPin(
+java.lang.String
+android.os.Message)
+
+public void supplySimPin2(
+java.lang.String
+android.os.Message)
+
+public void supplySimPuk(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void supplySimPuk2(
+java.lang.String
+java.lang.String
+android.os.Message)
+
+public void switchWaitingOrHoldingAndActive(
+android.os.Message)
+
+public void triggerHangupAll()
+
+public void triggerHangupBackground()
+
+public void triggerHangupForeground()
+
+public void triggerIncomingSMS(
+java.lang.String)
+
+public void triggerIncomingUssd(
+java.lang.String
+java.lang.String)
+
+public void triggerRing(
+java.lang.String)
+
+public void triggerSsn(
+int
+int)
+
+public void writeSmsToSim(
+int
+java.lang.String
+java.lang.String
+android.os.Message)
+
+________________CLASS________________
+
+
+ class com.android.internal.telephony.test.SimulatedGsmCallState extends android.os.Handler
+
+----------------FIELDS----------------
+
+static final int CONNECTING_PAUSE_MSEC
+
+static final int EVENT_PROGRESS_CALL_STATE
+
+static final int MAX_CALLS
+
+private boolean autoProgressConnecting
+
+ com.android.internal.telephony.test.CallInfo[] calls
+
+private boolean nextDialFailImmediately
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Lcom/android/internal/telephony/test/InvalidStateEx; )
+private int countActiveLines()
+
+public boolean conference()
+
+public boolean explicitCallTransfer()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getClccLines()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Lcom/android/internal/telephony/gsm/DriverCall;>; )
+public java.util.List getDriverCalls()
+
+public void handleMessage(
+android.os.Message)
+
+public boolean onAnswer()
+
+public boolean onChld(
+char
+char)
+
+public boolean onDial(
+java.lang.String)
+
+public boolean onHangup()
+
+public void progressConnectingCallState()
+
+public void progressConnectingToActive()
+
+public boolean releaseActiveAcceptHeldOrWaiting()
+
+public boolean releaseHeldOrUDUB()
+
+public boolean separateCall(
+int)
+
+public void setAutoProgressConnectingCall(
+boolean)
+
+public void setNextDialFailImmediately(
+boolean)
+
+public boolean switchActiveAndHeldOrWaiting()
+
+public boolean triggerHangupAll()
+
+public boolean triggerHangupBackground()
+
+public boolean triggerHangupForeground()
+
+public boolean triggerRing(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class com.android.internal.util.ArrayUtils extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int CACHE_SIZE
+
+private static java.lang.Object[] EMPTY
+
+private static java.lang.Object[] sCache
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;TT;)Z )
+public static boolean contains(
+java.lang.Object[]
+java.lang.Object)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)[TT; )
+public static java.lang.Object[] emptyArray(
+java.lang.Class)
+
+public static boolean equals(
+byte[]
+byte[]
+int)
+
+public static int idealBooleanArraySize(
+int)
+
+public static int idealByteArraySize(
+int)
+
+public static int idealCharArraySize(
+int)
+
+public static int idealFloatArraySize(
+int)
+
+public static int idealIntArraySize(
+int)
+
+public static int idealLongArraySize(
+int)
+
+public static int idealObjectArraySize(
+int)
+
+public static int idealShortArraySize(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class com.android.internal.util.CharSequences$1 extends java.lang.Object implements java.lang.CharSequence
+
+----------------FIELDS----------------
+
+final byte[] val$bytes
+----------------METHODS----------------
+
+ void <init>(
+byte[])
+
+public char charAt(
+int)
+
+public int length()
+
+public java.lang.CharSequence subSequence(
+int
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class com.android.internal.util.CharSequences$2 extends java.lang.Object implements java.lang.CharSequence
+
+----------------FIELDS----------------
+
+final byte[] val$bytes
+
+final int val$end
+
+final int val$start
+----------------METHODS----------------
+
+ void <init>(
+byte[]
+int
+int)
+
+public char charAt(
+int)
+
+public int length()
+
+public java.lang.CharSequence subSequence(
+int
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class com.android.internal.util.CharSequences extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static int compareToIgnoreCase(
+java.lang.CharSequence
+java.lang.CharSequence)
+
+public static boolean equals(
+java.lang.CharSequence
+java.lang.CharSequence)
+
+public static java.lang.CharSequence forAsciiBytes(
+byte[])
+
+public static java.lang.CharSequence forAsciiBytes(
+byte[]
+int
+int)
+
+static void validate(
+int
+int
+int)
+
+________________CLASS________________
+
+
+public class com.android.internal.util.FastMath extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static int round(
+float)
+
+________________CLASS________________
+
+
+public class com.android.internal.util.FastXmlSerializer extends java.lang.Object implements org.xmlpull.v1.XmlSerializer
+
+----------------FIELDS----------------
+
+private static final int BUFFER_LEN
+
+private static final java.lang.String[] ESCAPE_TABLE
+
+private java.nio.ByteBuffer mBytes
+
+private java.nio.charset.CharsetEncoder mCharset
+
+private boolean mInTag
+
+private java.io.OutputStream mOutputStream
+
+private int mPos
+
+private final char[] mText
+
+private java.io.Writer mWriter
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void append(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void append(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void append(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void append(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void escapeAndAppendString(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void escapeAndAppendString(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void flushBytes()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public org.xmlpull.v1.XmlSerializer attribute(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public void cdsect(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public void comment(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public void docdecl(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public void endDocument()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public org.xmlpull.v1.XmlSerializer endTag(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public void entityRef(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+
+public int getDepth()
+
+public boolean getFeature(
+java.lang.String)
+
+public java.lang.String getName()
+
+public java.lang.String getNamespace()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public java.lang.String getPrefix(
+java.lang.String
+boolean)
+
+public java.lang.Object getProperty(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public void ignorableWhitespace(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public void processingInstruction(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public void setFeature(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public void setOutput(
+java.io.OutputStream
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public void setOutput(
+java.io.Writer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public void setPrefix(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public void setProperty(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public void startDocument(
+java.lang.String
+java.lang.Boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public org.xmlpull.v1.XmlSerializer startTag(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public org.xmlpull.v1.XmlSerializer text(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public org.xmlpull.v1.XmlSerializer text(
+char[]
+int
+int)
+
+________________CLASS________________
+
+
+public class com.android.internal.util.HexDump extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final char[] HEX_DIGITS
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.lang.String dumpHexString(
+byte[])
+
+public static java.lang.String dumpHexString(
+byte[]
+int
+int)
+
+public static byte[] hexStringToByteArray(
+java.lang.String)
+
+private static int toByte(
+char)
+
+public static byte[] toByteArray(
+byte)
+
+public static byte[] toByteArray(
+int)
+
+public static java.lang.String toHexString(
+byte)
+
+public static java.lang.String toHexString(
+int)
+
+public static java.lang.String toHexString(
+byte[])
+
+public static java.lang.String toHexString(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class com.android.internal.util.Objects extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(TT;)TT; )
+public static java.lang.Object nonNull(
+java.lang.Object)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(TT;Ljava/lang/String;)TT; )
+public static java.lang.Object nonNull(
+java.lang.Object
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract interface class com.android.internal.util.Predicate extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TT;)Z )
+public abstract boolean apply(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/util/Predicates; )
+ class com.android.internal.util.Predicates$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =AndPredicate )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/util/Predicates; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object;Lcom/android/internal/util/Predicate<TT;>; )
+ class com.android.internal.util.Predicates$AndPredicate extends java.lang.Object implements com.android.internal.util.Predicate
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/lang/Iterable<+Lcom/android/internal/util/Predicate<-TT;>;>; )
+private final java.lang.Iterable components
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/Iterable<+Lcom/android/internal/util/Predicate<-TT;>;>;)V )
+private void <init>(
+java.lang.Iterable)
+
+ void <init>(
+java.lang.Iterable
+com.android.internal.util.Predicates$1)
+@dalvik.annotation.Signature (value =(TT;)Z )
+public boolean apply(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/util/Predicates; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object;Lcom/android/internal/util/Predicate<TT;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =NotPredicate )
+ class com.android.internal.util.Predicates$NotPredicate extends java.lang.Object implements com.android.internal.util.Predicate
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Lcom/android/internal/util/Predicate<-TT;>; )
+private final com.android.internal.util.Predicate predicate
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Lcom/android/internal/util/Predicate<-TT;>;)V )
+private void <init>(
+com.android.internal.util.Predicate)
+
+ void <init>(
+com.android.internal.util.Predicate
+com.android.internal.util.Predicates$1)
+@dalvik.annotation.Signature (value =(TT;)Z )
+public boolean apply(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/util/Predicates; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =OrPredicate )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object;Lcom/android/internal/util/Predicate<TT;>; )
+ class com.android.internal.util.Predicates$OrPredicate extends java.lang.Object implements com.android.internal.util.Predicate
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/lang/Iterable<+Lcom/android/internal/util/Predicate<-TT;>;>; )
+private final java.lang.Iterable components
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/Iterable<+Lcom/android/internal/util/Predicate<-TT;>;>;)V )
+private void <init>(
+java.lang.Iterable)
+
+ void <init>(
+java.lang.Iterable
+com.android.internal.util.Predicates$1)
+@dalvik.annotation.Signature (value =(TT;)Z )
+public boolean apply(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/util/Predicates$1;Lcom/android/internal/util/Predicates$NotPredicate;Lcom/android/internal/util/Predicates$OrPredicate;Lcom/android/internal/util/Predicates$AndPredicate; )
+public class com.android.internal.util.Predicates extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/lang/Iterable<+Lcom/android/internal/util/Predicate<-TT;>;>;)Lcom/android/internal/util/Predicate<TT;>; )
+public static com.android.internal.util.Predicate and(
+java.lang.Iterable)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([Lcom/android/internal/util/Predicate<-TT;>;)Lcom/android/internal/util/Predicate<TT;>; )
+public static transient com.android.internal.util.Predicate and(
+com.android.internal.util.Predicate[])
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Lcom/android/internal/util/Predicate<-TT;>;)Lcom/android/internal/util/Predicate<TT;>; )
+public static com.android.internal.util.Predicate not(
+com.android.internal.util.Predicate)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/lang/Iterable<+Lcom/android/internal/util/Predicate<-TT;>;>;)Lcom/android/internal/util/Predicate<TT;>; )
+public static com.android.internal.util.Predicate or(
+java.lang.Iterable)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([Lcom/android/internal/util/Predicate<-TT;>;)Lcom/android/internal/util/Predicate<TT;>; )
+public static transient com.android.internal.util.Predicate or(
+com.android.internal.util.Predicate[])
+
+________________CLASS________________
+
+
+ class com.android.internal.util.WithFramework extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public static void main(
+java.lang.String[])
+
+private static void printUsage()
+
+static native int registerNatives()
+
+________________CLASS________________
+
+
+public class com.android.internal.util.XmlUtils extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static final void beginDocument(
+org.xmlpull.v1.XmlPullParser
+java.lang.String)
+
+public static final boolean convertValueToBoolean(
+java.lang.CharSequence
+boolean)
+
+public static final int convertValueToInt(
+java.lang.CharSequence
+int)
+
+public static final int convertValueToList(
+java.lang.CharSequence
+java.lang.String[]
+int)
+
+public static final int convertValueToUnsignedInt(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static final void nextElement(
+org.xmlpull.v1.XmlPullParser)
+
+public static final int parseUnsignedIntAttribute(
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static final java.util.ArrayList readListXml(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static final java.util.HashMap readMapXml(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static final int[] readThisIntArrayXml(
+org.xmlpull.v1.XmlPullParser
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static final java.util.ArrayList readThisListXml(
+org.xmlpull.v1.XmlPullParser
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static final java.util.HashMap readThisMapXml(
+org.xmlpull.v1.XmlPullParser
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private static final java.lang.Object readThisValueXml(
+org.xmlpull.v1.XmlPullParser
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static final java.lang.Object readValueXml(
+org.xmlpull.v1.XmlPullParser
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static void skipCurrentTag(
+org.xmlpull.v1.XmlPullParser)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static final void writeByteArrayXml(
+byte[]
+java.lang.String
+org.xmlpull.v1.XmlSerializer)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static final void writeIntArrayXml(
+int[]
+java.lang.String
+org.xmlpull.v1.XmlSerializer)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static final void writeListXml(
+java.util.List
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static final void writeListXml(
+java.util.List
+java.lang.String
+org.xmlpull.v1.XmlSerializer)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static final void writeMapXml(
+java.util.Map
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static final void writeMapXml(
+java.util.Map
+java.lang.String
+org.xmlpull.v1.XmlSerializer)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public static final void writeValueXml(
+java.lang.Object
+java.lang.String
+org.xmlpull.v1.XmlSerializer)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/view/menu/MenuBuilder$MenuAdapter;Lcom/android/internal/view/menu/MenuBuilder$ItemInvoker;Lcom/android/internal/view/menu/MenuBuilder$Callback;Lcom/android/internal/view/menu/MenuBuilder$MenuType; )
+public class com.android.internal.view.menu.MenuBuilder extends java.lang.Object implements android.view.Menu
+
+----------------FIELDS----------------
+
+static final int[] ITEM_LAYOUT_RES_FOR_TYPE
+
+static final int[] LAYOUT_RES_FOR_TYPE
+
+private static final java.lang.String LOGTAG
+
+public static final int NUM_TYPES
+
+static final int[] THEME_RES_FOR_TYPE
+
+public static final int TYPE_DIALOG
+
+public static final int TYPE_EXPANDED
+
+public static final int TYPE_ICON
+
+private static final java.lang.String VIEWS_TAG
+
+private static final int[] sCategoryToOrder
+
+private com.android.internal.view.menu.MenuBuilder$Callback mCallback
+
+private final android.content.Context mContext
+
+private android.view.ContextMenu$ContextMenuInfo mCurrentMenuInfo
+@dalvik.annotation.Signature (value =Landroid/util/SparseArray<Landroid/os/Parcelable;>; )
+private android.util.SparseArray mFrozenViewStates
+
+ android.graphics.drawable.Drawable mHeaderIcon
+
+ java.lang.CharSequence mHeaderTitle
+
+ android.view.View mHeaderView
+
+private boolean mIsVisibleItemsStale
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/android/internal/view/menu/MenuItemImpl;>; )
+private java.util.ArrayList mItems
+
+private com.android.internal.view.menu.MenuBuilder$MenuType[] mMenuTypes
+
+private boolean mOptionalIconsVisible
+
+private boolean mPreventDispatchingItemsChanged
+
+private boolean mQwertyMode
+
+private final android.content.res.Resources mResources
+
+private boolean mShortcutsVisible
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/android/internal/view/menu/MenuItemImpl;>; )
+private java.util.ArrayList mVisibleItems
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+static android.content.Context access$000(
+com.android.internal.view.menu.MenuBuilder)
+
+static android.util.SparseArray access$100(
+com.android.internal.view.menu.MenuBuilder)
+
+static int access$300(
+com.android.internal.view.menu.MenuBuilder)
+
+private android.view.MenuItem addInternal(
+int
+int
+int
+java.lang.CharSequence)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Lcom/android/internal/view/menu/MenuItemImpl;>;I)I )
+private static int findInsertIndex(
+java.util.ArrayList
+int)
+
+private int getNumIconMenuItemsShown()
+
+private static int getOrdering(
+int)
+
+private void onItemsChanged(
+boolean)
+
+private void refreshShortcuts(
+boolean
+boolean)
+
+private void removeItemAtInt(
+int
+boolean)
+
+private void setHeaderInternal(
+int
+java.lang.CharSequence
+int
+android.graphics.drawable.Drawable
+android.view.View)
+
+public android.view.MenuItem add(
+int)
+
+public android.view.MenuItem add(
+int
+int
+int
+int)
+
+public android.view.MenuItem add(
+int
+int
+int
+java.lang.CharSequence)
+
+public android.view.MenuItem add(
+java.lang.CharSequence)
+
+public int addIntentOptions(
+int
+int
+int
+android.content.ComponentName
+android.content.Intent[]
+android.content.Intent
+int
+android.view.MenuItem[])
+
+public android.view.SubMenu addSubMenu(
+int)
+
+public android.view.SubMenu addSubMenu(
+int
+int
+int
+int)
+
+public android.view.SubMenu addSubMenu(
+int
+int
+int
+java.lang.CharSequence)
+
+public android.view.SubMenu addSubMenu(
+java.lang.CharSequence)
+
+public void clear()
+
+public void clearAll()
+
+public void clearHeader()
+
+public void clearMenuViews()
+
+public final void close(
+boolean)
+
+public int findGroupIndex(
+int)
+
+public int findGroupIndex(
+int
+int)
+
+public android.view.MenuItem findItem(
+int)
+
+public int findItemIndex(
+int)
+
+ com.android.internal.view.menu.MenuItemImpl findItemWithShortcutForKey(
+int
+android.view.KeyEvent)
+
+public android.view.MenuItem get(
+int)
+
+public com.android.internal.view.menu.MenuBuilder$Callback getCallback()
+
+public android.content.Context getContext()
+
+public android.graphics.drawable.Drawable getHeaderIcon()
+
+public java.lang.CharSequence getHeaderTitle()
+
+public android.view.View getHeaderView()
+
+public com.android.internal.view.menu.MenuBuilder$MenuAdapter getMenuAdapter(
+int)
+
+ com.android.internal.view.menu.MenuBuilder$MenuType getMenuType(
+int)
+
+public android.view.View getMenuView(
+int
+android.view.ViewGroup)
+
+ boolean getOptionalIconsVisible()
+
+ android.content.res.Resources getResources()
+
+public com.android.internal.view.menu.MenuBuilder getRootMenu()
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Lcom/android/internal/view/menu/MenuItemImpl;>; )
+ java.util.ArrayList getVisibleItems()
+
+public boolean hasVisibleItems()
+
+ boolean isQwertyMode()
+
+public boolean isShortcutKey(
+int
+android.view.KeyEvent)
+
+public boolean isShortcutsVisible()
+
+ void onItemVisibleChanged(
+com.android.internal.view.menu.MenuItemImpl)
+
+public boolean performIdentifierAction(
+int
+int)
+
+public boolean performItemAction(
+android.view.MenuItem
+int)
+
+public boolean performShortcut(
+int
+android.view.KeyEvent
+int)
+
+public void removeGroup(
+int)
+
+public void removeItem(
+int)
+
+public void removeItemAt(
+int)
+
+public void restoreHierarchyState(
+android.os.Bundle)
+
+public void saveHierarchyState(
+android.os.Bundle)
+
+public void setCallback(
+com.android.internal.view.menu.MenuBuilder$Callback)
+
+public void setCurrentMenuInfo(
+android.view.ContextMenu$ContextMenuInfo)
+
+ void setExclusiveItemChecked(
+android.view.MenuItem)
+
+public void setGroupCheckable(
+int
+boolean
+boolean)
+
+public void setGroupEnabled(
+int
+boolean)
+
+public void setGroupVisible(
+int
+boolean)
+
+protected com.android.internal.view.menu.MenuBuilder setHeaderIconInt(
+int)
+
+protected com.android.internal.view.menu.MenuBuilder setHeaderIconInt(
+android.graphics.drawable.Drawable)
+
+protected com.android.internal.view.menu.MenuBuilder setHeaderTitleInt(
+int)
+
+protected com.android.internal.view.menu.MenuBuilder setHeaderTitleInt(
+java.lang.CharSequence)
+
+protected com.android.internal.view.menu.MenuBuilder setHeaderViewInt(
+android.view.View)
+
+ void setOptionalIconsVisible(
+boolean)
+
+public void setQwertyMode(
+boolean)
+
+public void setShortcutsVisible(
+boolean)
+
+public int size()
+
+________________CLASS________________
+
+
+public class com.android.internal.view.menu.ContextMenuBuilder extends com.android.internal.view.menu.MenuBuilder implements android.view.ContextMenu
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public android.view.ContextMenu setHeaderIcon(
+int)
+
+public android.view.ContextMenu setHeaderIcon(
+android.graphics.drawable.Drawable)
+
+public android.view.ContextMenu setHeaderTitle(
+int)
+
+public android.view.ContextMenu setHeaderTitle(
+java.lang.CharSequence)
+
+public android.view.ContextMenu setHeaderView(
+android.view.View)
+
+public com.android.internal.view.menu.MenuDialogHelper show(
+android.view.View
+android.os.IBinder)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ItemInvoker )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/view/menu/MenuBuilder; )
+public abstract interface class com.android.internal.view.menu.MenuBuilder$ItemInvoker extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean invokeItem(
+com.android.internal.view.menu.MenuItemImpl)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/view/menu/MenuView$ItemView; )
+public abstract interface class com.android.internal.view.menu.MenuView extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int getWindowAnimations()
+
+public abstract void initialize(
+com.android.internal.view.menu.MenuBuilder
+int)
+
+public abstract void updateChildren(
+boolean)
+
+________________CLASS________________
+
+
+public final class com.android.internal.view.menu.ExpandedMenuView extends android.widget.ListView implements com.android.internal.view.menu.MenuBuilder$ItemInvoker, com.android.internal.view.menu.MenuView, android.widget.AdapterView$OnItemClickListener
+
+----------------FIELDS----------------
+
+private int mAnimations
+
+private com.android.internal.view.menu.MenuBuilder mMenu
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public int getWindowAnimations()
+
+public void initialize(
+com.android.internal.view.menu.MenuBuilder
+int)
+
+public boolean invokeItem(
+com.android.internal.view.menu.MenuItemImpl)
+
+protected void onDetachedFromWindow()
+
+public void onItemClick(
+android.widget.AdapterView
+android.view.View
+int
+long)
+
+public void updateChildren(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/view/menu/MenuView; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ItemView )
+public abstract interface class com.android.internal.view.menu.MenuView$ItemView extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract com.android.internal.view.menu.MenuItemImpl getItemData()
+
+public abstract void initialize(
+com.android.internal.view.menu.MenuItemImpl
+int)
+
+public abstract boolean prefersCondensedTitle()
+
+public abstract void setCheckable(
+boolean)
+
+public abstract void setChecked(
+boolean)
+
+public abstract void setEnabled(
+boolean)
+
+public abstract void setIcon(
+android.graphics.drawable.Drawable)
+
+public abstract void setShortcut(
+boolean
+char)
+
+public abstract void setTitle(
+java.lang.CharSequence)
+
+public abstract boolean showsIcon()
+
+________________CLASS________________
+
+
+public final class com.android.internal.view.menu.IconMenuItemView extends android.widget.TextView implements com.android.internal.view.menu.MenuView$ItemView
+
+----------------FIELDS----------------
+
+private static final int NO_ALPHA
+
+private static java.lang.String sPrependShortcutLabel
+
+private float mDisabledAlpha
+
+private android.graphics.drawable.Drawable mIcon
+
+private com.android.internal.view.menu.IconMenuView mIconMenuView
+
+private com.android.internal.view.menu.MenuItemImpl mItemData
+
+private com.android.internal.view.menu.MenuBuilder$ItemInvoker mItemInvoker
+
+private android.graphics.Rect mPositionIconAvailable
+
+private android.graphics.Rect mPositionIconOutput
+
+private java.lang.String mShortcutCaption
+
+private boolean mShortcutCaptionMode
+
+private int mTextAppearance
+
+private android.content.Context mTextAppearanceContext
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+private void positionIcon()
+
+protected void drawableStateChanged()
+@android.view.ViewDebug$CapturedViewProperty (retrieveReturn =true )
+public com.android.internal.view.menu.MenuItemImpl getItemData()
+
+public void initialize(
+com.android.internal.view.menu.MenuItemImpl
+int)
+
+ void initialize(
+java.lang.CharSequence
+android.graphics.drawable.Drawable)
+
+protected void onLayout(
+boolean
+int
+int
+int
+int)
+
+public boolean performClick()
+
+public boolean prefersCondensedTitle()
+
+ void setCaptionMode(
+boolean)
+
+public void setCheckable(
+boolean)
+
+public void setChecked(
+boolean)
+
+public void setIcon(
+android.graphics.drawable.Drawable)
+
+ void setIconMenuView(
+com.android.internal.view.menu.IconMenuView)
+
+public void setItemInvoker(
+com.android.internal.view.menu.MenuBuilder$ItemInvoker)
+
+public void setShortcut(
+boolean
+char)
+
+public void setTitle(
+java.lang.CharSequence)
+
+public void setVisibility(
+int)
+
+public boolean showsIcon()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class com.android.internal.view.menu.IconMenuView$1 extends java.lang.Object implements android.view.View$OnClickListener
+
+----------------FIELDS----------------
+
+final com.android.internal.view.menu.IconMenuView this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.view.menu.IconMenuView)
+
+public void onClick(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =LayoutParams )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/view/menu/IconMenuView; )
+public class com.android.internal.view.menu.IconMenuView$LayoutParams extends android.view.ViewGroup$MarginLayoutParams
+
+----------------FIELDS----------------
+
+ int bottom
+
+ int left
+
+ int right
+
+ int top
+----------------METHODS----------------
+
+public void <init>(
+int
+int)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/view/menu/IconMenuView$SavedState; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Lcom/android/internal/view/menu/IconMenuView$SavedState;>; )
+final class com.android.internal.view.menu.IconMenuView$SavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public com.android.internal.view.menu.IconMenuView$SavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public com.android.internal.view.menu.IconMenuView$SavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =SavedState )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/view/menu/IconMenuView; )
+ class com.android.internal.view.menu.IconMenuView$SavedState extends android.view.View$BaseSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Lcom/android/internal/view/menu/IconMenuView$SavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+ int focusedPosition
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+com.android.internal.view.menu.IconMenuView$1)
+
+public void <init>(
+android.os.Parcelable
+int)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/view/menu/IconMenuView$LayoutParams;Lcom/android/internal/view/menu/IconMenuView$SavedState; )
+public final class com.android.internal.view.menu.IconMenuView extends android.view.ViewGroup implements com.android.internal.view.menu.MenuBuilder$ItemInvoker, com.android.internal.view.menu.MenuView, java.lang.Runnable
+
+----------------FIELDS----------------
+
+private static final int ITEM_CAPTION_CYCLE_DELAY
+
+private int mAnimations
+
+private boolean mHasStaleChildren
+
+private android.graphics.drawable.Drawable mHorizontalDivider
+
+private int mHorizontalDividerHeight
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/graphics/Rect;>; )
+private java.util.ArrayList mHorizontalDividerRects
+
+private android.graphics.drawable.Drawable mItemBackground
+
+private boolean mLastChildrenCaptionMode
+
+private int mMaxItemsPerRow
+
+private int mMaxRows
+
+private com.android.internal.view.menu.MenuBuilder mMenu
+
+private boolean mMenuBeingLongpressed
+
+private android.graphics.drawable.Drawable mMoreIcon
+
+private com.android.internal.view.menu.IconMenuItemView mMoreItemView
+
+private int mNumActualItemsShown
+
+private int mRowHeight
+
+private android.graphics.drawable.Drawable mVerticalDivider
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Landroid/graphics/Rect;>; )
+private java.util.ArrayList mVerticalDividerRects
+
+private int mVerticalDividerWidth
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+static com.android.internal.view.menu.MenuBuilder access$000(
+com.android.internal.view.menu.IconMenuView)
+
+private void addItemView(
+com.android.internal.view.menu.IconMenuItemView)
+
+private int[] calculateNumberOfItemsPerRow(
+int
+int)
+
+private int calculateNumberOfRows()
+
+private com.android.internal.view.menu.IconMenuItemView createMoreItemView()
+
+private void positionChildren(
+int
+int)
+
+private void setChildrenCaptionMode(
+boolean)
+
+private void setCycleShortcutCaptionMode(
+boolean)
+
+protected boolean checkLayoutParams(
+android.view.ViewGroup$LayoutParams)
+
+public boolean dispatchKeyEvent(
+android.view.KeyEvent)
+
+public volatile android.view.ViewGroup$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+public com.android.internal.view.menu.IconMenuView$LayoutParams generateLayoutParams(
+android.util.AttributeSet)
+
+ int getNumActualItemsShown()
+
+public int getWindowAnimations()
+
+public void initialize(
+com.android.internal.view.menu.MenuBuilder
+int)
+
+public boolean invokeItem(
+com.android.internal.view.menu.MenuItemImpl)
+
+ void markStaleChildren()
+
+protected void onDetachedFromWindow()
+
+protected void onDraw(
+android.graphics.Canvas)
+
+protected void onLayout(
+boolean
+int
+int
+int
+int)
+
+protected void onMeasure(
+int
+int)
+
+protected void onRestoreInstanceState(
+android.os.Parcelable)
+
+protected android.os.Parcelable onSaveInstanceState()
+
+public void onWindowFocusChanged(
+boolean)
+
+public void run()
+
+public void updateChildren(
+boolean)
+
+________________CLASS________________
+
+
+public class com.android.internal.view.menu.ListMenuItemView extends android.widget.LinearLayout implements com.android.internal.view.menu.MenuView$ItemView
+
+----------------FIELDS----------------
+
+private android.graphics.drawable.Drawable mBackground
+
+private android.widget.CheckBox mCheckBox
+
+private android.widget.ImageView mIconView
+
+private com.android.internal.view.menu.MenuItemImpl mItemData
+
+private int mMenuType
+
+private android.widget.RadioButton mRadioButton
+
+private android.widget.TextView mShortcutView
+
+private int mTextAppearance
+
+private android.content.Context mTextAppearanceContext
+
+private android.widget.TextView mTitleView
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+private void insertCheckBox()
+
+private void insertIconView()
+
+private void insertRadioButton()
+
+public com.android.internal.view.menu.MenuItemImpl getItemData()
+
+public void initialize(
+com.android.internal.view.menu.MenuItemImpl
+int)
+
+protected void onFinishInflate()
+
+public boolean prefersCondensedTitle()
+
+public void setCheckable(
+boolean)
+
+public void setChecked(
+boolean)
+
+public void setIcon(
+android.graphics.drawable.Drawable)
+
+public void setShortcut(
+boolean
+char)
+
+public void setTitle(
+java.lang.CharSequence)
+
+public boolean showsIcon()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Callback )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/view/menu/MenuBuilder; )
+public abstract interface class com.android.internal.view.menu.MenuBuilder$Callback extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onCloseMenu(
+com.android.internal.view.menu.MenuBuilder
+boolean)
+
+public abstract void onCloseSubMenu(
+com.android.internal.view.menu.SubMenuBuilder)
+
+public abstract boolean onMenuItemSelected(
+com.android.internal.view.menu.MenuBuilder
+android.view.MenuItem)
+
+public abstract void onMenuModeChange(
+com.android.internal.view.menu.MenuBuilder)
+
+public abstract boolean onSubMenuSelected(
+com.android.internal.view.menu.SubMenuBuilder)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1 name =MenuAdapter )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/view/menu/MenuBuilder; )
+public class com.android.internal.view.menu.MenuBuilder$MenuAdapter extends android.widget.BaseAdapter
+
+----------------FIELDS----------------
+
+private int mMenuType
+
+final com.android.internal.view.menu.MenuBuilder this$0
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.view.menu.MenuBuilder
+int)
+
+public int getCount()
+
+public com.android.internal.view.menu.MenuItemImpl getItem(
+int)
+
+public volatile java.lang.Object getItem(
+int)
+
+public long getItemId(
+int)
+
+public int getOffset()
+
+public android.view.View getView(
+int
+android.view.View
+android.view.ViewGroup)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/view/menu/MenuBuilder; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =MenuType )
+ class com.android.internal.view.menu.MenuBuilder$MenuType extends java.lang.Object
+
+----------------FIELDS----------------
+
+private android.view.LayoutInflater mInflater
+
+private int mMenuType
+@dalvik.annotation.Signature (value =Ljava/lang/ref/WeakReference<Lcom/android/internal/view/menu/MenuView;>; )
+private java.lang.ref.WeakReference mMenuView
+
+final com.android.internal.view.menu.MenuBuilder this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.view.menu.MenuBuilder
+int)
+
+static java.lang.ref.WeakReference access$200(
+com.android.internal.view.menu.MenuBuilder$MenuType)
+
+static java.lang.ref.WeakReference access$202(
+com.android.internal.view.menu.MenuBuilder$MenuType
+java.lang.ref.WeakReference)
+
+ android.view.LayoutInflater getInflater()
+
+ com.android.internal.view.menu.MenuView getMenuView(
+android.view.ViewGroup)
+
+ boolean hasMenuView()
+
+________________CLASS________________
+
+
+public class com.android.internal.view.menu.MenuDialogHelper extends java.lang.Object implements android.content.DialogInterface$OnKeyListener, android.content.DialogInterface$OnClickListener
+
+----------------FIELDS----------------
+
+private android.widget.ListAdapter mAdapter
+
+private android.app.AlertDialog mDialog
+
+private com.android.internal.view.menu.MenuBuilder mMenu
+----------------METHODS----------------
+
+public void <init>(
+com.android.internal.view.menu.MenuBuilder)
+
+public void dismiss()
+
+public void onClick(
+android.content.DialogInterface
+int)
+
+public boolean onKey(
+android.content.DialogInterface
+int
+android.view.KeyEvent)
+
+public void show(
+android.os.IBinder)
+
+________________CLASS________________
+
+
+public final class com.android.internal.view.menu.MenuItemImpl extends java.lang.Object implements android.view.MenuItem
+
+----------------FIELDS----------------
+
+private static final int CHECKABLE
+
+private static final int CHECKED
+
+private static final int ENABLED
+
+private static final int EXCLUSIVE
+
+private static final int HIDDEN
+
+static final int NO_ICON
+
+private static java.lang.String sDeleteShortcutLabel
+
+private static java.lang.String sEnterShortcutLabel
+
+private static java.lang.String sPrependShortcutLabel
+
+private static java.lang.String sSpaceShortcutLabel
+
+private final int mCategoryOrder
+
+private android.view.MenuItem$OnMenuItemClickListener mClickListener
+
+private int mFlags
+
+private final int mGroup
+
+private android.graphics.drawable.Drawable mIconDrawable
+
+private int mIconResId
+
+private final int mId
+
+private android.content.Intent mIntent
+
+private java.lang.Runnable mItemCallback
+@dalvik.annotation.Signature (value =[Ljava/lang/ref/WeakReference<Lcom/android/internal/view/menu/MenuView$ItemView;>; )
+private java.lang.ref.WeakReference[] mItemViews
+
+private com.android.internal.view.menu.MenuBuilder mMenu
+
+private android.view.ContextMenu$ContextMenuInfo mMenuInfo
+
+private final int mOrdering
+
+private char mShortcutAlphabeticChar
+
+private char mShortcutNumericChar
+
+private com.android.internal.view.menu.SubMenuBuilder mSubMenu
+
+private java.lang.CharSequence mTitle
+
+private java.lang.CharSequence mTitleCondensed
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.view.menu.MenuBuilder
+int
+int
+int
+int
+java.lang.CharSequence)
+
+private com.android.internal.view.menu.MenuView$ItemView createItemView(
+int
+android.view.ViewGroup)
+
+private boolean hasItemView(
+int)
+
+private boolean haveAnyOpenedIconCapableItemViews()
+
+private void refreshShortcutOnItemViews()
+
+private void setIconOnViews(
+android.graphics.drawable.Drawable)
+
+ void clearItemViews()
+
+public char getAlphabeticShortcut()
+
+ java.lang.Runnable getCallback()
+
+public int getGroupId()
+
+public android.graphics.drawable.Drawable getIcon()
+
+public android.content.Intent getIntent()
+@android.view.ViewDebug$CapturedViewProperty
+public int getItemId()
+
+ android.view.View getItemView(
+int
+android.view.ViewGroup)
+
+public android.view.LayoutInflater getLayoutInflater(
+int)
+
+public android.view.ContextMenu$ContextMenuInfo getMenuInfo()
+
+public char getNumericShortcut()
+
+public int getOrder()
+
+public int getOrdering()
+
+ char getShortcut()
+
+ java.lang.String getShortcutLabel()
+
+public android.view.SubMenu getSubMenu()
+@android.view.ViewDebug$CapturedViewProperty
+public java.lang.CharSequence getTitle()
+
+public java.lang.CharSequence getTitleCondensed()
+
+ java.lang.CharSequence getTitleForItemView(
+com.android.internal.view.menu.MenuView$ItemView)
+
+public boolean hasSubMenu()
+
+public boolean invoke()
+
+public boolean isCheckable()
+
+public boolean isChecked()
+
+public boolean isEnabled()
+
+public boolean isExclusiveCheckable()
+
+public boolean isVisible()
+
+ void refreshShortcutOnItemViews(
+boolean
+boolean)
+
+public android.view.MenuItem setAlphabeticShortcut(
+char)
+
+public android.view.MenuItem setCallback(
+java.lang.Runnable)
+
+public android.view.MenuItem setCheckable(
+boolean)
+
+public android.view.MenuItem setChecked(
+boolean)
+
+ void setCheckedInt(
+boolean)
+
+public android.view.MenuItem setEnabled(
+boolean)
+
+public void setExclusiveCheckable(
+boolean)
+
+public android.view.MenuItem setIcon(
+int)
+
+public android.view.MenuItem setIcon(
+android.graphics.drawable.Drawable)
+
+public android.view.MenuItem setIntent(
+android.content.Intent)
+
+ void setMenuInfo(
+android.view.ContextMenu$ContextMenuInfo)
+
+public android.view.MenuItem setNumericShortcut(
+char)
+
+public android.view.MenuItem setOnMenuItemClickListener(
+android.view.MenuItem$OnMenuItemClickListener)
+
+public android.view.MenuItem setShortcut(
+char
+char)
+
+ void setSubMenu(
+com.android.internal.view.menu.SubMenuBuilder)
+
+public android.view.MenuItem setTitle(
+int)
+
+public android.view.MenuItem setTitle(
+java.lang.CharSequence)
+
+public android.view.MenuItem setTitleCondensed(
+java.lang.CharSequence)
+
+public android.view.MenuItem setVisible(
+boolean)
+
+ boolean setVisibleInt(
+boolean)
+
+public boolean shouldShowIcon(
+int)
+
+ boolean shouldShowShortcut()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class com.android.internal.view.menu.SubMenuBuilder extends com.android.internal.view.menu.MenuBuilder implements android.view.SubMenu
+
+----------------FIELDS----------------
+
+private com.android.internal.view.menu.MenuItemImpl mItem
+
+private com.android.internal.view.menu.MenuBuilder mParentMenu
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+com.android.internal.view.menu.MenuBuilder
+com.android.internal.view.menu.MenuItemImpl)
+
+public com.android.internal.view.menu.MenuBuilder$Callback getCallback()
+
+public android.view.MenuItem getItem()
+
+public android.view.Menu getParentMenu()
+
+public com.android.internal.view.menu.MenuBuilder getRootMenu()
+
+public boolean isQwertyMode()
+
+public boolean isShortcutsVisible()
+
+public void setCallback(
+com.android.internal.view.menu.MenuBuilder$Callback)
+
+public android.view.SubMenu setHeaderIcon(
+int)
+
+public android.view.SubMenu setHeaderIcon(
+android.graphics.drawable.Drawable)
+
+public android.view.SubMenu setHeaderTitle(
+int)
+
+public android.view.SubMenu setHeaderTitle(
+java.lang.CharSequence)
+
+public android.view.SubMenu setHeaderView(
+android.view.View)
+
+public android.view.SubMenu setIcon(
+int)
+
+public android.view.SubMenu setIcon(
+android.graphics.drawable.Drawable)
+
+public void setQwertyMode(
+boolean)
+
+public void setShortcutsVisible(
+boolean)
+
+________________CLASS________________
+
+
+public class com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient extends android.widget.LinearLayout
+
+----------------FIELDS----------------
+
+private android.view.View mDefaultTouchRecepient
+
+private final android.graphics.Rect mTempRect
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public boolean dispatchTouchEvent(
+android.view.MotionEvent)
+
+public void setDefaultTouchRecepient(
+android.view.View)
+
+________________CLASS________________
+
+
+public class com.android.internal.widget.LockPatternUtils extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int FAILED_ATTEMPTS_BEFORE_RESET
+
+public static final int FAILED_ATTEMPTS_BEFORE_TIMEOUT
+
+public static final long FAILED_ATTEMPT_COUNTDOWN_INTERVAL_MS
+
+public static final long FAILED_ATTEMPT_TIMEOUT_MS
+
+private static final java.lang.String LOCKOUT_PERMANENT_KEY
+
+private static final java.lang.String LOCK_PATTERN_FILE
+
+public static final int MIN_LOCK_PATTERN_SIZE
+
+public static final int MIN_PATTERN_REGISTER_FAIL
+
+private static final java.lang.String TAG
+
+private static java.lang.String sLockPatternFilename
+
+private final android.content.ContentResolver mContentResolver
+
+private long mLockoutDeadline
+----------------METHODS----------------
+
+public void <init>(
+android.content.ContentResolver)
+
+private boolean getBoolean(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lcom/android/internal/widget/LockPatternView$Cell;>;)[B )
+static byte[] patternToHash(
+java.util.List)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lcom/android/internal/widget/LockPatternView$Cell;>;)Ljava/lang/String; )
+public static java.lang.String patternToString(
+java.util.List)
+
+private void setBoolean(
+java.lang.String
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/List<Lcom/android/internal/widget/LockPatternView$Cell;>; )
+public static java.util.List stringToPattern(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lcom/android/internal/widget/LockPatternView$Cell;>;)Z )
+public boolean checkPattern(
+java.util.List)
+
+public long getLockoutAttemptDeadline()
+
+public java.lang.String getNextAlarm()
+
+public boolean isLockPatternEnabled()
+
+public boolean isPermanentlyLocked()
+
+public boolean isVisiblePatternEnabled()
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lcom/android/internal/widget/LockPatternView$Cell;>;)V )
+public void saveLockPattern(
+java.util.List)
+
+public boolean savedPatternExists()
+
+public void setLockPatternEnabled(
+boolean)
+
+public void setLockoutAttemptDeadline(
+long)
+
+public void setPermanentlyLocked(
+boolean)
+
+public void setVisiblePatternEnabled(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/LockPatternView; )
+ class com.android.internal.widget.LockPatternView$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/LockPatternView; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Cell )
+public class com.android.internal.widget.LockPatternView$Cell extends java.lang.Object
+
+----------------FIELDS----------------
+
+static com.android.internal.widget.LockPatternView$Cell[][] sCells
+
+ int column
+
+ int row
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+int
+int)
+
+private static void checkRange(
+int
+int)
+
+public static com.android.internal.widget.LockPatternView$Cell of(
+int
+int)
+
+public int getColumn()
+
+public int getRow()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =DisplayMode )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/LockPatternView; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/android/internal/widget/LockPatternView$DisplayMode;>; )
+public final class com.android.internal.widget.LockPatternView$DisplayMode extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.android.internal.widget.LockPatternView$DisplayMode[] $VALUES
+
+public static final com.android.internal.widget.LockPatternView$DisplayMode Animate
+
+public static final com.android.internal.widget.LockPatternView$DisplayMode Correct
+
+public static final com.android.internal.widget.LockPatternView$DisplayMode Wrong
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.android.internal.widget.LockPatternView$DisplayMode valueOf(
+java.lang.String)
+
+public static com.android.internal.widget.LockPatternView$DisplayMode[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/LockPatternView; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnPatternListener )
+public abstract interface class com.android.internal.widget.LockPatternView$OnPatternListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onPatternCleared()
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lcom/android/internal/widget/LockPatternView$Cell;>;)V )
+public abstract void onPatternDetected(
+java.util.List)
+
+public abstract void onPatternStart()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Lcom/android/internal/widget/LockPatternView$SavedState;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/LockPatternView$SavedState; )
+final class com.android.internal.widget.LockPatternView$SavedState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public com.android.internal.widget.LockPatternView$SavedState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public com.android.internal.widget.LockPatternView$SavedState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =SavedState )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/LockPatternView; )
+ class com.android.internal.widget.LockPatternView$SavedState extends android.view.View$BaseSavedState
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Lcom/android/internal/widget/LockPatternView$SavedState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+private final int mDisplayMode
+
+private final boolean mInStealthMode
+
+private final boolean mInputEnabled
+
+private final java.lang.String mSerializedPattern
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+com.android.internal.widget.LockPatternView$1)
+
+private void <init>(
+android.os.Parcelable
+java.lang.String
+int
+boolean
+boolean)
+
+ void <init>(
+android.os.Parcelable
+java.lang.String
+int
+boolean
+boolean
+com.android.internal.widget.LockPatternView$1)
+
+public int getDisplayMode()
+
+public java.lang.String getSerializedPattern()
+
+public boolean isInStealthMode()
+
+public boolean isInputEnabled()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/widget/LockPatternView$1;Lcom/android/internal/widget/LockPatternView$SavedState;Lcom/android/internal/widget/LockPatternView$OnPatternListener;Lcom/android/internal/widget/LockPatternView$DisplayMode;Lcom/android/internal/widget/LockPatternView$Cell; )
+public class com.android.internal.widget.LockPatternView extends android.view.View
+
+----------------FIELDS----------------
+
+private static final int MILLIS_PER_CIRCLE_ANIMATING
+
+private static final boolean PROFILE_DRAWING
+
+static final int STATUS_BAR_HEIGHT
+
+private long mAnimatingPeriodStart
+
+private android.graphics.Bitmap mBitmapArrowGreenUp
+
+private android.graphics.Bitmap mBitmapArrowRedUp
+
+private android.graphics.Bitmap mBitmapBtnDefault
+
+private android.graphics.Bitmap mBitmapBtnTouched
+
+private android.graphics.Bitmap mBitmapCircleDefault
+
+private android.graphics.Bitmap mBitmapCircleGreen
+
+private android.graphics.Bitmap mBitmapCircleRed
+
+private int mBitmapHeight
+
+private int mBitmapWidth
+
+private final android.graphics.Path mCurrentPath
+
+private float mDiameterFactor
+
+private boolean mDrawingProfilingStarted
+
+private float mHitFactor
+
+private float mInProgressX
+
+private float mInProgressY
+
+private boolean mInStealthMode
+
+private boolean mInputEnabled
+
+private final android.graphics.Rect mInvalidate
+
+private com.android.internal.widget.LockPatternView$OnPatternListener mOnPatternListener
+
+private android.graphics.Paint mPaint
+
+private android.graphics.Paint mPathPaint
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/android/internal/widget/LockPatternView$Cell;>; )
+private java.util.ArrayList mPattern
+
+private com.android.internal.widget.LockPatternView$DisplayMode mPatternDisplayMode
+
+private boolean[][] mPatternDrawLookup
+
+private boolean mPatternInProgress
+
+private float mSquareHeight
+
+private float mSquareWidth
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+private void addCellToPattern(
+com.android.internal.widget.LockPatternView$Cell)
+
+private com.android.internal.widget.LockPatternView$Cell checkForNewHit(
+float
+float)
+
+private void clearPatternDrawLookup()
+
+private com.android.internal.widget.LockPatternView$Cell detectAndAddHit(
+float
+float)
+
+private void drawArrow(
+android.graphics.Canvas
+float
+float
+com.android.internal.widget.LockPatternView$Cell
+com.android.internal.widget.LockPatternView$Cell)
+
+private void drawCircle(
+android.graphics.Canvas
+int
+int
+boolean)
+
+private android.graphics.Bitmap getBitmapFor(
+int)
+
+private float getCenterXForColumn(
+int)
+
+private float getCenterYForRow(
+int)
+
+private int getColumnHit(
+float)
+
+private int getRowHit(
+float)
+
+private void resetPattern()
+
+public void clearPattern()
+
+public void disableInput()
+
+public void enableInput()
+
+public boolean isInStealthMode()
+
+protected void onDraw(
+android.graphics.Canvas)
+
+protected void onMeasure(
+int
+int)
+
+protected void onRestoreInstanceState(
+android.os.Parcelable)
+
+protected android.os.Parcelable onSaveInstanceState()
+
+protected void onSizeChanged(
+int
+int
+int
+int)
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+public void setDisplayMode(
+com.android.internal.widget.LockPatternView$DisplayMode)
+
+public void setInStealthMode(
+boolean)
+
+public void setOnPatternListener(
+com.android.internal.widget.LockPatternView$OnPatternListener)
+@dalvik.annotation.Signature (value =(Lcom/android/internal/widget/LockPatternView$DisplayMode;Ljava/util/List<Lcom/android/internal/widget/LockPatternView$Cell;>;)V )
+public void setPattern(
+com.android.internal.widget.LockPatternView$DisplayMode
+java.util.List)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Formatter )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/NumberPicker; )
+public abstract interface class com.android.internal.widget.NumberPicker$Formatter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String toString(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/NumberPicker; )
+final class com.android.internal.widget.NumberPicker$1 extends java.lang.Object implements com.android.internal.widget.NumberPicker$Formatter
+
+----------------FIELDS----------------
+
+final java.lang.Object[] mArgs
+
+final java.lang.StringBuilder mBuilder
+
+final java.util.Formatter mFmt
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.String toString(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/NumberPicker; )
+ class com.android.internal.widget.NumberPicker$2 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final com.android.internal.widget.NumberPicker this$0
+----------------METHODS----------------
+
+ void <init>(
+com.android.internal.widget.NumberPicker)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =NumberPickerInputFilter )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/NumberPicker; )
+ class com.android.internal.widget.NumberPicker$NumberPickerInputFilter extends java.lang.Object implements android.text.InputFilter
+
+----------------FIELDS----------------
+
+final com.android.internal.widget.NumberPicker this$0
+----------------METHODS----------------
+
+private void <init>(
+com.android.internal.widget.NumberPicker)
+
+ void <init>(
+com.android.internal.widget.NumberPicker
+com.android.internal.widget.NumberPicker$1)
+
+public java.lang.CharSequence filter(
+java.lang.CharSequence
+int
+int
+android.text.Spanned
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =NumberRangeKeyListener )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/NumberPicker; )
+ class com.android.internal.widget.NumberPicker$NumberRangeKeyListener extends android.text.method.NumberKeyListener
+
+----------------FIELDS----------------
+
+final com.android.internal.widget.NumberPicker this$0
+----------------METHODS----------------
+
+private void <init>(
+com.android.internal.widget.NumberPicker)
+
+ void <init>(
+com.android.internal.widget.NumberPicker
+com.android.internal.widget.NumberPicker$1)
+
+public java.lang.CharSequence filter(
+java.lang.CharSequence
+int
+int
+android.text.Spanned
+int
+int)
+
+protected char[] getAcceptedChars()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/widget/NumberPicker$NumberRangeKeyListener;Lcom/android/internal/widget/NumberPicker$NumberPickerInputFilter;Lcom/android/internal/widget/NumberPicker$Formatter;Lcom/android/internal/widget/NumberPicker$OnChangedListener; )
+public class com.android.internal.widget.NumberPicker extends android.widget.LinearLayout implements android.view.View$OnClickListener, android.view.View$OnFocusChangeListener, android.view.View$OnLongClickListener
+
+----------------FIELDS----------------
+
+private static final char[] DIGIT_CHARACTERS
+
+public static final com.android.internal.widget.NumberPicker$Formatter TWO_DIGIT_FORMATTER
+
+private int mCurrent
+
+private boolean mDecrement
+
+private com.android.internal.widget.NumberPickerButton mDecrementButton
+
+private java.lang.String[] mDisplayedValues
+
+private int mEnd
+
+private com.android.internal.widget.NumberPicker$Formatter mFormatter
+
+private final android.os.Handler mHandler
+
+private boolean mIncrement
+
+private com.android.internal.widget.NumberPickerButton mIncrementButton
+
+private final android.view.LayoutInflater mInflater
+
+private final android.text.InputFilter mInputFilter
+
+private com.android.internal.widget.NumberPicker$OnChangedListener mListener
+
+private final android.text.InputFilter mNumberInputFilter
+
+private int mPrevious
+
+private final java.lang.Runnable mRunnable
+
+private final android.view.animation.Animation mSlideDownInAnimation
+
+private final android.view.animation.Animation mSlideDownOutAnimation
+
+private final android.view.animation.Animation mSlideUpInAnimation
+
+private final android.view.animation.Animation mSlideUpOutAnimation
+
+private long mSpeed
+
+private int mStart
+
+private final android.widget.TextView mText
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static boolean access$000(
+com.android.internal.widget.NumberPicker)
+
+static int access$100(
+com.android.internal.widget.NumberPicker)
+
+static java.lang.String[] access$1200(
+com.android.internal.widget.NumberPicker)
+
+static android.text.InputFilter access$1300(
+com.android.internal.widget.NumberPicker)
+
+static char[] access$1400()
+
+static int access$1500(
+com.android.internal.widget.NumberPicker
+java.lang.String)
+
+static int access$1600(
+com.android.internal.widget.NumberPicker)
+
+static android.view.animation.Animation access$200(
+com.android.internal.widget.NumberPicker)
+
+static android.view.animation.Animation access$300(
+com.android.internal.widget.NumberPicker)
+
+static void access$400(
+com.android.internal.widget.NumberPicker
+int
+android.view.animation.Animation
+android.view.animation.Animation)
+
+static long access$500(
+com.android.internal.widget.NumberPicker)
+
+static android.os.Handler access$600(
+com.android.internal.widget.NumberPicker)
+
+static boolean access$700(
+com.android.internal.widget.NumberPicker)
+
+static android.view.animation.Animation access$800(
+com.android.internal.widget.NumberPicker)
+
+static android.view.animation.Animation access$900(
+com.android.internal.widget.NumberPicker)
+
+private void changeCurrent(
+int
+android.view.animation.Animation
+android.view.animation.Animation)
+
+private java.lang.String formatNumber(
+int)
+
+private int getSelectedPos(
+java.lang.String)
+
+private void notifyChange()
+
+private void updateView()
+
+private void validateCurrentView(
+java.lang.CharSequence)
+
+public void cancelDecrement()
+
+public void cancelIncrement()
+
+public void onClick(
+android.view.View)
+
+public void onFocusChange(
+android.view.View
+boolean)
+
+public boolean onLongClick(
+android.view.View)
+
+public void setCurrent(
+int)
+
+public void setEnabled(
+boolean)
+
+public void setFormatter(
+com.android.internal.widget.NumberPicker$Formatter)
+
+public void setOnChangeListener(
+com.android.internal.widget.NumberPicker$OnChangedListener)
+
+public void setRange(
+int
+int)
+
+public void setRange(
+int
+int
+java.lang.String[])
+
+public void setSpeed(
+long)
+
+________________CLASS________________
+
+
+public class com.android.internal.widget.NumberPickerButton extends android.widget.ImageButton
+
+----------------FIELDS----------------
+
+private com.android.internal.widget.NumberPicker mNumberPicker
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+private void cancelLongpress()
+
+private void cancelLongpressIfRequired(
+android.view.MotionEvent)
+
+public boolean onKeyUp(
+int
+android.view.KeyEvent)
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+public boolean onTrackballEvent(
+android.view.MotionEvent)
+
+public void setNumberPicker(
+com.android.internal.widget.NumberPicker)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/SlidingDrawer; )
+ class com.android.internal.widget.SlidingDrawer$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/SlidingDrawer; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =DrawerToggler )
+ class com.android.internal.widget.SlidingDrawer$DrawerToggler extends java.lang.Object implements android.view.View$OnClickListener
+
+----------------FIELDS----------------
+
+final com.android.internal.widget.SlidingDrawer this$0
+----------------METHODS----------------
+
+private void <init>(
+com.android.internal.widget.SlidingDrawer)
+
+ void <init>(
+com.android.internal.widget.SlidingDrawer
+com.android.internal.widget.SlidingDrawer$1)
+
+public void onClick(
+android.view.View)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnDrawerCloseListener )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/SlidingDrawer; )
+public abstract interface class com.android.internal.widget.SlidingDrawer$OnDrawerCloseListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onDrawerClosed()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnDrawerOpenListener )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/SlidingDrawer; )
+public abstract interface class com.android.internal.widget.SlidingDrawer$OnDrawerOpenListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onDrawerOpened()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnDrawerScrollListener )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/SlidingDrawer; )
+public abstract interface class com.android.internal.widget.SlidingDrawer$OnDrawerScrollListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onScrollEnded()
+
+public abstract void onScrollStarted()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =SlidingHandler )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/SlidingDrawer; )
+ class com.android.internal.widget.SlidingDrawer$SlidingHandler extends android.os.Handler
+
+----------------FIELDS----------------
+
+final com.android.internal.widget.SlidingDrawer this$0
+----------------METHODS----------------
+
+private void <init>(
+com.android.internal.widget.SlidingDrawer)
+
+ void <init>(
+com.android.internal.widget.SlidingDrawer
+com.android.internal.widget.SlidingDrawer$1)
+
+public void handleMessage(
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/widget/SlidingDrawer$1;Lcom/android/internal/widget/SlidingDrawer$SlidingHandler;Lcom/android/internal/widget/SlidingDrawer$DrawerToggler;Lcom/android/internal/widget/SlidingDrawer$OnDrawerScrollListener;Lcom/android/internal/widget/SlidingDrawer$OnDrawerCloseListener;Lcom/android/internal/widget/SlidingDrawer$OnDrawerOpenListener; )
+public class com.android.internal.widget.SlidingDrawer extends android.view.ViewGroup
+
+----------------FIELDS----------------
+
+private static final int ANIMATION_FRAME_DURATION
+
+private static final int COLLAPSED_FULL_CLOSED
+
+private static final int EXPANDED_FULL_OPEN
+
+private static final float MAXIMUM_ACCELERATION
+
+private static final float MAXIMUM_MAJOR_VELOCITY
+
+private static final float MAXIMUM_MINOR_VELOCITY
+
+private static final float MAXIMUM_TAP_VELOCITY
+
+private static final int MSG_ANIMATE
+
+public static final int ORIENTATION_HORIZONTAL
+
+public static final int ORIENTATION_VERTICAL
+
+private static final int TAP_THRESHOLD
+
+private static final int VELOCITY_UNITS
+
+private boolean mAnimateOnClick
+
+private float mAnimatedAcceleration
+
+private float mAnimatedVelocity
+
+private boolean mAnimating
+
+private long mAnimationLastTime
+
+private float mAnimationPosition
+
+private int mBottomOffset
+
+private android.view.View mContent
+
+private final int mContentId
+
+private long mCurrentAnimationTime
+
+private boolean mExpanded
+
+private final android.graphics.Rect mFrame
+
+private android.view.View mHandle
+
+private int mHandleHeight
+
+private final int mHandleId
+
+private int mHandleWidth
+
+private final android.os.Handler mHandler
+
+private final android.graphics.Rect mInvalidate
+
+private boolean mLocked
+
+private com.android.internal.widget.SlidingDrawer$OnDrawerCloseListener mOnDrawerCloseListener
+
+private com.android.internal.widget.SlidingDrawer$OnDrawerOpenListener mOnDrawerOpenListener
+
+private com.android.internal.widget.SlidingDrawer$OnDrawerScrollListener mOnDrawerScrollListener
+
+private int mTopOffset
+
+private int mTouchDelta
+
+private boolean mTracking
+
+private android.view.VelocityTracker mVelocityTracker
+
+private boolean mVertical
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+static boolean access$200(
+com.android.internal.widget.SlidingDrawer)
+
+static boolean access$300(
+com.android.internal.widget.SlidingDrawer)
+
+static void access$400(
+com.android.internal.widget.SlidingDrawer)
+
+private void animateClose(
+int)
+
+private void animateOpen(
+int)
+
+private void closeDrawer()
+
+private void doAnimation()
+
+private void incrementAnimation()
+
+private void moveHandle(
+int)
+
+private void openDrawer()
+
+private void performFling(
+int
+float
+boolean)
+
+private void prepareContent()
+
+private void prepareTracking(
+int)
+
+private void stopTracking()
+
+public void animateClose()
+
+public void animateOpen()
+
+public void animateToggle()
+
+public void close()
+
+protected void dispatchDraw(
+android.graphics.Canvas)
+
+public android.view.View getContent()
+
+public android.view.View getHandle()
+
+public boolean isMoving()
+
+public boolean isOpened()
+
+public void lock()
+
+protected void onFinishInflate()
+
+public boolean onInterceptTouchEvent(
+android.view.MotionEvent)
+
+protected void onLayout(
+boolean
+int
+int
+int
+int)
+
+protected void onMeasure(
+int
+int)
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+public void open()
+
+public void setOnDrawerCloseListener(
+com.android.internal.widget.SlidingDrawer$OnDrawerCloseListener)
+
+public void setOnDrawerOpenListener(
+com.android.internal.widget.SlidingDrawer$OnDrawerOpenListener)
+
+public void setOnDrawerScrollListener(
+com.android.internal.widget.SlidingDrawer$OnDrawerScrollListener)
+
+public void toggle()
+
+public void unlock()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/android/internal/widget/VerticalTextSpinner; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =OnChangedListener )
+public abstract interface class com.android.internal.widget.VerticalTextSpinner$OnChangedListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onChanged(
+com.android.internal.widget.VerticalTextSpinner
+int
+int
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/internal/widget/VerticalTextSpinner$OnChangedListener; )
+public class com.android.internal.widget.VerticalTextSpinner extends android.view.View
+
+----------------FIELDS----------------
+
+private static final long DEFAULT_SCROLL_INTERVAL_MS
+
+private static final int MIN_ANIMATIONS
+
+private static final int SCROLL_DISTANCE
+
+private static final int SCROLL_MODE_DOWN
+
+private static final int SCROLL_MODE_NONE
+
+private static final int SCROLL_MODE_UP
+
+private static final int SELECTOR_ARROW_HEIGHT
+
+private static final int TEXT1_Y
+
+private static final int TEXT2_Y
+
+private static final int TEXT3_Y
+
+private static final int TEXT4_Y
+
+private static final int TEXT5_Y
+
+private static final int TEXT_MARGIN_RIGHT
+
+private static final int TEXT_SIZE
+
+private static final int TEXT_SPACING
+
+private boolean isDraggingSelector
+
+private final android.graphics.drawable.Drawable mBackgroundFocused
+
+private int mCurrentSelectedPos
+
+private long mDelayBetweenAnimations
+
+private int mDistanceOfEachAnimation
+
+private int mDownY
+
+private boolean mIsAnimationRunning
+
+private com.android.internal.widget.VerticalTextSpinner$OnChangedListener mListener
+
+private int mNumberOfAnimations
+
+private long mScrollInterval
+
+private int mScrollMode
+
+private android.graphics.drawable.Drawable mSelector
+
+private final int mSelectorDefaultY
+
+private final android.graphics.drawable.Drawable mSelectorFocused
+
+private final int mSelectorHeight
+
+private final int mSelectorMaxY
+
+private final int mSelectorMinY
+
+private final android.graphics.drawable.Drawable mSelectorNormal
+
+private int mSelectorY
+
+private boolean mStopAnimation
+
+private java.lang.String mText1
+
+private java.lang.String mText2
+
+private java.lang.String mText3
+
+private java.lang.String mText4
+
+private java.lang.String mText5
+
+private java.lang.String[] mTextList
+
+private final android.text.TextPaint mTextPaintDark
+
+private final android.text.TextPaint mTextPaintLight
+
+private int mTotalAnimatedDistance
+
+private boolean mWrapAround
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet)
+
+public void <init>(
+android.content.Context
+android.util.AttributeSet
+int)
+
+private void calculateAnimationValues()
+
+private void calculateTextPositions()
+
+private boolean canScrollDown()
+
+private boolean canScrollUp()
+
+private void drawText(
+android.graphics.Canvas
+java.lang.String
+int
+android.text.TextPaint)
+
+private int getNewIndex(
+int)
+
+private java.lang.String getTextToDraw(
+int)
+
+private void scroll()
+
+public int getCurrentSelectedPos()
+
+protected void onDraw(
+android.graphics.Canvas)
+
+protected void onFocusChanged(
+boolean
+int
+android.graphics.Rect)
+
+public boolean onKeyDown(
+int
+android.view.KeyEvent)
+
+public boolean onTouchEvent(
+android.view.MotionEvent)
+
+public void setItems(
+java.lang.String[])
+
+public void setOnChangeListener(
+com.android.internal.widget.VerticalTextSpinner$OnChangedListener)
+
+public void setScrollInterval(
+long)
+
+public void setSelectedPos(
+int)
+
+public void setWrapAround(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/server/ResettableTimeout; )
+ class com.android.server.ResettableTimeout$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =T )
+@dalvik.annotation.EnclosingClass (value =Lcom/android/server/ResettableTimeout; )
+ class com.android.server.ResettableTimeout$T extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final com.android.server.ResettableTimeout this$0
+----------------METHODS----------------
+
+private void <init>(
+com.android.server.ResettableTimeout)
+
+ void <init>(
+com.android.server.ResettableTimeout
+com.android.server.ResettableTimeout$1)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/android/server/ResettableTimeout$1;Lcom/android/server/ResettableTimeout$T; )
+abstract class com.android.server.ResettableTimeout extends java.lang.Object
+
+----------------FIELDS----------------
+
+private android.os.ConditionVariable mLock
+
+private volatile long mOffAt
+
+private volatile boolean mOffCalled
+
+private java.lang.Thread mThread
+----------------METHODS----------------
+
+ void <init>()
+
+static android.os.ConditionVariable access$100(
+com.android.server.ResettableTimeout)
+
+static long access$200(
+com.android.server.ResettableTimeout)
+
+static boolean access$302(
+com.android.server.ResettableTimeout
+boolean)
+
+static java.lang.Thread access$402(
+com.android.server.ResettableTimeout
+java.lang.Thread)
+
+public void cancel()
+
+public void go(
+long)
+
+public abstract void off()
+
+public abstract void on(
+boolean)
+
+________________CLASS________________
+
+
+public class com.google.android.collect.Lists extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>()Ljava/util/ArrayList<TE;>; )
+public static java.util.ArrayList newArrayList()
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>([TE;)Ljava/util/ArrayList<TE;>; )
+public static transient java.util.ArrayList newArrayList(
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class com.google.android.collect.Maps extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>()Ljava/util/HashMap<TK;TV;>; )
+public static java.util.HashMap newHashMap()
+
+________________CLASS________________
+
+
+public class com.google.android.collect.Sets extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;>()Ljava/util/HashSet<TK;>; )
+public static java.util.HashSet newHashSet()
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>([TE;)Ljava/util/HashSet<TE;>; )
+public static transient java.util.HashSet newHashSet(
+java.lang.Object[])
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>([TE;)Ljava/util/SortedSet<TE;>; )
+public static transient java.util.SortedSet newSortedSet(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/gdata/client/AndroidGDataClient; )
+@dalvik.annotation.InnerClass (accessFlags =1546 name =HttpRequestCreator )
+abstract interface class com.google.android.gdata.client.AndroidGDataClient$HttpRequestCreator extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.apache.http.client.methods.HttpUriRequest createRequest(
+java.net.URI)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =GetRequestCreator )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/gdata/client/AndroidGDataClient; )
+ class com.google.android.gdata.client.AndroidGDataClient$GetRequestCreator extends java.lang.Object implements com.google.android.gdata.client.AndroidGDataClient$HttpRequestCreator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public org.apache.http.client.methods.HttpUriRequest createRequest(
+java.net.URI)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =MediaPutRequestCreator )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/gdata/client/AndroidGDataClient; )
+ class com.google.android.gdata.client.AndroidGDataClient$MediaPutRequestCreator extends java.lang.Object implements com.google.android.gdata.client.AndroidGDataClient$HttpRequestCreator
+
+----------------FIELDS----------------
+
+private final java.lang.String mContentType
+
+private final java.io.InputStream mMediaInputStream
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream
+java.lang.String)
+
+public org.apache.http.client.methods.HttpUriRequest createRequest(
+java.net.URI)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =PostRequestCreator )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/gdata/client/AndroidGDataClient; )
+ class com.google.android.gdata.client.AndroidGDataClient$PostRequestCreator extends java.lang.Object implements com.google.android.gdata.client.AndroidGDataClient$HttpRequestCreator
+
+----------------FIELDS----------------
+
+private final org.apache.http.HttpEntity mEntity
+
+private final java.lang.String mMethodOverride
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+org.apache.http.HttpEntity)
+
+public org.apache.http.client.methods.HttpUriRequest createRequest(
+java.net.URI)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/google/android/gdata/client/AndroidGDataClient$MediaPutRequestCreator;Lcom/google/android/gdata/client/AndroidGDataClient$PostRequestCreator;Lcom/google/android/gdata/client/AndroidGDataClient$GetRequestCreator;Lcom/google/android/gdata/client/AndroidGDataClient$HttpRequestCreator; )
+public class com.google.android.gdata.client.AndroidGDataClient extends java.lang.Object implements com.google.wireless.gdata.client.GDataClient
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG
+
+private static final boolean LOCAL_LOGV
+
+private static final int MAX_REDIRECTS
+
+private static final java.lang.String TAG
+
+private static final java.lang.String USER_AGENT_GZIP
+
+private static final java.lang.String X_HTTP_METHOD_OVERRIDE
+
+private final com.google.android.net.GoogleHttpClient mHttpClient
+
+private android.content.ContentResolver mResolver
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.ContentResolver)
+@dalvik.annotation.Throws (value =Lcom/google/wireless/gdata/client/HttpException;Ljava/io/IOException; )
+private java.io.InputStream createAndExecuteMethod(
+com.google.android.gdata.client.AndroidGDataClient$HttpRequestCreator
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private org.apache.http.HttpEntity createEntityForEntry(
+com.google.wireless.gdata.serializer.GDataSerializer
+int)
+
+public void close()
+@dalvik.annotation.Throws (value =Lcom/google/wireless/gdata/client/HttpException;Ljava/io/IOException; )
+public java.io.InputStream createEntry(
+java.lang.String
+java.lang.String
+com.google.wireless.gdata.serializer.GDataSerializer)
+
+public com.google.wireless.gdata.client.QueryParams createQueryParams()
+@dalvik.annotation.Throws (value =Lcom/google/wireless/gdata/client/HttpException;Ljava/io/IOException; )
+public void deleteEntry(
+java.lang.String
+java.lang.String)
+
+public java.lang.String encodeUri(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/google/wireless/gdata/client/HttpException;Ljava/io/IOException; )
+public java.io.InputStream getFeedAsStream(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/google/wireless/gdata/client/HttpException;Ljava/io/IOException; )
+public java.io.InputStream getMediaEntryAsStream(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/google/wireless/gdata/client/HttpException;Ljava/io/IOException; )
+public java.io.InputStream updateEntry(
+java.lang.String
+java.lang.String
+com.google.wireless.gdata.serializer.GDataSerializer)
+@dalvik.annotation.Throws (value =Lcom/google/wireless/gdata/client/HttpException;Ljava/io/IOException; )
+public java.io.InputStream updateMediaEntry(
+java.lang.String
+java.lang.String
+java.io.InputStream
+java.lang.String)
+
+________________CLASS________________
+
+
+public class com.google.android.gdata.client.AndroidXmlParserFactory extends java.lang.Object implements com.google.wireless.gdata.parser.xml.XmlParserFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public org.xmlpull.v1.XmlPullParser createParser()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public org.xmlpull.v1.XmlSerializer createSerializer()
+
+________________CLASS________________
+
+
+public class com.google.android.gdata.client.QueryParamsImpl extends com.google.wireless.gdata.client.QueryParams
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+private final java.util.Map mParams
+----------------METHODS----------------
+
+public void <init>()
+
+public void clear()
+
+public java.lang.String generateQueryUrl(
+java.lang.String)
+
+public java.lang.String getParamValue(
+java.lang.String)
+
+public void setParamValue(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Lcom/google/android/googleapps/GoogleLoginCredentialsResult;>; )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/googleapps/GoogleLoginCredentialsResult; )
+final class com.google.android.googleapps.GoogleLoginCredentialsResult$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public com.google.android.googleapps.GoogleLoginCredentialsResult createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public com.google.android.googleapps.GoogleLoginCredentialsResult[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class com.google.android.googleapps.GoogleLoginCredentialsResult extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Lcom/google/android/googleapps/GoogleLoginCredentialsResult;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+private java.lang.String mAccount
+
+private android.content.Intent mCredentialsIntent
+
+private java.lang.String mCredentialsString
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+com.google.android.googleapps.GoogleLoginCredentialsResult$1)
+
+public int describeContents()
+
+public java.lang.String getAccount()
+
+public android.content.Intent getCredentialsIntent()
+
+public java.lang.String getCredentialsString()
+
+public void readFromParcel(
+android.os.Parcel)
+
+public void setAccount(
+java.lang.String)
+
+public void setCredentialsIntent(
+android.content.Intent)
+
+public void setCredentialsString(
+java.lang.String)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class com.google.android.googleapps.GoogleLoginServiceBlockingHelper$1 extends java.lang.Object implements android.content.ServiceConnection
+
+----------------FIELDS----------------
+
+final com.google.android.googleapps.GoogleLoginServiceBlockingHelper this$0
+----------------METHODS----------------
+
+ void <init>(
+com.google.android.googleapps.GoogleLoginServiceBlockingHelper)
+
+public void onServiceConnected(
+android.content.ComponentName
+android.os.IBinder)
+
+public void onServiceDisconnected(
+android.content.ComponentName)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1 name =AuthenticationException )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/googleapps/GoogleLoginServiceBlockingHelper; )
+public class com.google.android.googleapps.GoogleLoginServiceBlockingHelper$AuthenticationException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+final com.google.android.googleapps.GoogleLoginServiceBlockingHelper this$0
+----------------METHODS----------------
+
+public void <init>(
+com.google.android.googleapps.GoogleLoginServiceBlockingHelper)
+
+public void <init>(
+com.google.android.googleapps.GoogleLoginServiceBlockingHelper
+java.lang.String)
+
+public void <init>(
+com.google.android.googleapps.GoogleLoginServiceBlockingHelper
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+com.google.android.googleapps.GoogleLoginServiceBlockingHelper
+java.lang.Throwable)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/google/android/googleapps/GoogleLoginServiceBlockingHelper$AuthenticationException; )
+public class com.google.android.googleapps.GoogleLoginServiceBlockingHelper extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private final double mBackoffFactor
+
+private java.util.concurrent.locks.Condition mBindWaitCondition
+
+private final android.content.Context mContext
+
+private int mDelay
+
+private volatile com.google.android.googleapps.IGoogleLoginService mGoogleLoginService
+
+private java.util.concurrent.locks.Lock mGoogleLoginServiceLock
+
+private final int mMaxDelaySecs
+
+private final int mMinDelaySecs
+
+private android.content.ServiceConnection mServiceConnection
+
+private java.lang.Thread mServiceThread
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+static java.util.concurrent.locks.Lock access$000(
+com.google.android.googleapps.GoogleLoginServiceBlockingHelper)
+
+static java.lang.Thread access$102(
+com.google.android.googleapps.GoogleLoginServiceBlockingHelper
+java.lang.Thread)
+
+static com.google.android.googleapps.IGoogleLoginService access$202(
+com.google.android.googleapps.GoogleLoginServiceBlockingHelper
+com.google.android.googleapps.IGoogleLoginService)
+
+static java.util.concurrent.locks.Condition access$300(
+com.google.android.googleapps.GoogleLoginServiceBlockingHelper)
+
+private void delay()
+
+public static java.lang.String getAccount(
+android.content.Context
+boolean)
+
+public static java.lang.String[] getAccounts(
+android.content.Context)
+
+public static long getAndroidId(
+android.content.Context)
+@dalvik.annotation.Throws (value =Lcom/google/android/googleapps/GoogleLoginServiceBlockingHelper$AuthenticationException; )
+public static java.lang.String getAuthToken(
+android.content.Context
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/google/android/googleapps/GoogleLoginServiceBlockingHelper$AuthenticationException; )
+public static java.lang.String getOneAuthToken(
+android.content.Context
+java.lang.String
+java.lang.String)
+
+public static void invalidateAuthToken(
+android.content.Context
+java.lang.String)
+
+private void resetDelay()
+
+public void close()
+
+public java.lang.String getAccount(
+boolean)
+
+public java.lang.String[] getAccounts()
+
+public long getAndroidId()
+@dalvik.annotation.Throws (value =Lcom/google/android/googleapps/GoogleLoginServiceBlockingHelper$AuthenticationException; )
+public java.lang.String getAuthToken(
+java.lang.String
+java.lang.String)
+
+public com.google.android.googleapps.GoogleLoginCredentialsResult getCredentials(
+java.lang.String
+java.lang.String
+boolean)
+
+public com.google.android.googleapps.IGoogleLoginService getLoginService()
+
+public void invalidateAuthToken(
+java.lang.String)
+
+public java.lang.String peekCredentials(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class com.google.android.googleapps.GoogleLoginServiceConstants extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ACCOUNTS_KEY
+
+public static final java.lang.String AUTHTOKEN_KEY
+
+public static final java.lang.String AUTH_ACCOUNT_KEY
+
+public static final int FLAG_GOOGLE_ACCOUNT
+
+public static final int FLAG_HOSTED_ACCOUNT
+
+public static final boolean PREFER_HOSTED
+
+public static final java.lang.String REQUEST_EXTRAS
+
+public static final boolean REQUIRE_GOOGLE
+
+public static final android.content.Intent SERVICE_INTENT
+
+public static final java.lang.String YOUTUBE_USER_KEY
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class com.google.android.googleapps.GoogleLoginServiceHelper$1 extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final android.app.Activity val$activity
+
+final android.os.Handler val$handler
+
+final int val$requestCode
+
+final boolean val$requireGoogle
+----------------METHODS----------------
+
+ void <init>(
+android.app.Activity
+boolean
+android.os.Handler
+int)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class com.google.android.googleapps.GoogleLoginServiceHelper$2$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final com.google.android.googleapps.GoogleLoginServiceHelper$2 this$0
+
+final com.google.android.googleapps.GoogleLoginCredentialsResult val$credentialsResult
+----------------METHODS----------------
+
+ void <init>(
+com.google.android.googleapps.GoogleLoginServiceHelper$2
+com.google.android.googleapps.GoogleLoginCredentialsResult)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class com.google.android.googleapps.GoogleLoginServiceHelper$2 extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final android.app.Activity val$activity
+
+final android.os.Handler val$handler
+
+final boolean val$promptUser
+
+final int val$requestCode
+
+final android.os.Bundle val$requestExtras
+
+final boolean val$requireGoogle
+
+final java.lang.String val$service
+----------------METHODS----------------
+
+ void <init>(
+android.app.Activity
+boolean
+java.lang.String
+boolean
+android.os.Bundle
+android.os.Handler
+int)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class com.google.android.googleapps.GoogleLoginServiceHelper$3 extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final android.app.Activity val$activity
+
+final java.lang.String val$authToken
+
+final android.os.Handler val$handler
+
+final int val$requestCode
+----------------METHODS----------------
+
+ void <init>(
+android.app.Activity
+java.lang.String
+android.os.Handler
+int)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class com.google.android.googleapps.GoogleLoginServiceHelper$4 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final android.app.Activity val$activity
+
+final android.os.Bundle val$bundle
+
+final int val$requestCode
+----------------METHODS----------------
+
+ void <init>(
+android.app.Activity
+int
+android.os.Bundle)
+
+public void run()
+
+________________CLASS________________
+
+
+public class com.google.android.googleapps.GoogleLoginServiceHelper extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG
+
+private static final boolean LOCAL_LOGV
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+private void <init>()
+
+static void access$000(
+android.os.Handler
+android.app.Activity
+int
+android.os.Bundle)
+
+static void access$100(
+android.app.Activity
+int
+android.os.Bundle)
+
+public static void getAccount(
+android.app.Activity
+int
+boolean)
+
+public static void getCredentials(
+android.app.Activity
+int
+android.os.Bundle
+boolean
+java.lang.String
+boolean)
+
+public static void invalidateAuthToken(
+android.app.Activity
+int
+java.lang.String)
+
+private static void postActivityResult(
+android.os.Handler
+android.app.Activity
+int
+android.os.Bundle)
+
+private static void sendActivityResult(
+android.app.Activity
+int
+android.os.Bundle)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/google/android/googleapps/IGoogleLoginService$Stub; )
+public abstract interface class com.google.android.googleapps.IGoogleLoginService extends java.lang.Object implements android.os.IInterface
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract com.google.android.googleapps.GoogleLoginCredentialsResult blockingGetCredentials(
+java.lang.String
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void deleteAllAccounts()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void deleteOneAccount(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getAccount(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String[] getAccounts()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract long getAndroidId()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String getPrimaryAccount()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void invalidateAuthToken(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract java.lang.String peekCredentials(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void saveAuthToken(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void saveNewAccount(
+com.google.android.googleapps.LoginData)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void saveUsernameAndPassword(
+java.lang.String
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void tryNewAccount(
+com.google.android.googleapps.LoginData)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract void updatePassword(
+com.google.android.googleapps.LoginData)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public abstract boolean verifyStoredPassword(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Proxy )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/googleapps/IGoogleLoginService$Stub; )
+ class com.google.android.googleapps.IGoogleLoginService$Stub$Proxy extends java.lang.Object implements com.google.android.googleapps.IGoogleLoginService
+
+----------------FIELDS----------------
+
+private android.os.IBinder mRemote
+----------------METHODS----------------
+
+ void <init>(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public com.google.android.googleapps.GoogleLoginCredentialsResult blockingGetCredentials(
+java.lang.String
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void deleteAllAccounts()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void deleteOneAccount(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getAccount(
+boolean)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String[] getAccounts()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public long getAndroidId()
+
+public java.lang.String getInterfaceDescriptor()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String getPrimaryAccount()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void invalidateAuthToken(
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public java.lang.String peekCredentials(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void saveAuthToken(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void saveNewAccount(
+com.google.android.googleapps.LoginData)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void saveUsernameAndPassword(
+java.lang.String
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void tryNewAccount(
+com.google.android.googleapps.LoginData)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public void updatePassword(
+com.google.android.googleapps.LoginData)
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean verifyStoredPassword(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/google/android/googleapps/IGoogleLoginService$Stub$Proxy; )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/googleapps/IGoogleLoginService; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Stub )
+public abstract class com.google.android.googleapps.IGoogleLoginService$Stub extends android.os.Binder implements com.google.android.googleapps.IGoogleLoginService
+
+----------------FIELDS----------------
+
+private static final java.lang.String DESCRIPTOR
+
+static final int TRANSACTION_blockingGetCredentials
+
+static final int TRANSACTION_deleteAllAccounts
+
+static final int TRANSACTION_deleteOneAccount
+
+static final int TRANSACTION_getAccount
+
+static final int TRANSACTION_getAccounts
+
+static final int TRANSACTION_getAndroidId
+
+static final int TRANSACTION_getPrimaryAccount
+
+static final int TRANSACTION_invalidateAuthToken
+
+static final int TRANSACTION_peekCredentials
+
+static final int TRANSACTION_saveAuthToken
+
+static final int TRANSACTION_saveNewAccount
+
+static final int TRANSACTION_saveUsernameAndPassword
+
+static final int TRANSACTION_tryNewAccount
+
+static final int TRANSACTION_updatePassword
+
+static final int TRANSACTION_verifyStoredPassword
+----------------METHODS----------------
+
+public void <init>()
+
+public static com.google.android.googleapps.IGoogleLoginService asInterface(
+android.os.IBinder)
+
+public android.os.IBinder asBinder()
+@dalvik.annotation.Throws (value =Landroid/os/RemoteException; )
+public boolean onTransact(
+int
+android.os.Parcel
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Lcom/google/android/googleapps/LoginData;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/googleapps/LoginData; )
+final class com.google.android.googleapps.LoginData$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public com.google.android.googleapps.LoginData createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public com.google.android.googleapps.LoginData[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/googleapps/LoginData; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Status )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/google/android/googleapps/LoginData$Status;>; )
+public final class com.google.android.googleapps.LoginData$Status extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.google.android.googleapps.LoginData$Status[] $VALUES
+
+public static final com.google.android.googleapps.LoginData$Status ACCOUNT_DISABLED
+
+public static final com.google.android.googleapps.LoginData$Status BAD_REQUEST
+
+public static final com.google.android.googleapps.LoginData$Status BAD_USERNAME
+
+public static final com.google.android.googleapps.LoginData$Status CANCELLED
+
+public static final com.google.android.googleapps.LoginData$Status CAPTCHA
+
+public static final com.google.android.googleapps.LoginData$Status LOGIN_FAIL
+
+public static final com.google.android.googleapps.LoginData$Status MISSING_APPS
+
+public static final com.google.android.googleapps.LoginData$Status NETWORK_ERROR
+
+public static final com.google.android.googleapps.LoginData$Status NO_GMAIL
+
+public static final com.google.android.googleapps.LoginData$Status SERVER_ERROR
+
+public static final com.google.android.googleapps.LoginData$Status SUCCESS
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.google.android.googleapps.LoginData$Status valueOf(
+java.lang.String)
+
+public static com.google.android.googleapps.LoginData$Status[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/google/android/googleapps/LoginData$Status; )
+public class com.google.android.googleapps.LoginData extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Lcom/google/android/googleapps/LoginData;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public java.lang.String mAuthtoken
+
+public java.lang.String mCaptchaAnswer
+
+public byte[] mCaptchaData
+
+public java.lang.String mCaptchaMimeType
+
+public java.lang.String mCaptchaToken
+
+public java.lang.String mEncryptedPassword
+
+public int mFlags
+
+public java.lang.String mJsonString
+
+public java.lang.String mPassword
+
+public java.lang.String mService
+
+public java.lang.String mSid
+
+public com.google.android.googleapps.LoginData$Status mStatus
+
+public java.lang.String mUsername
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void <init>(
+android.os.Parcel)
+
+ void <init>(
+android.os.Parcel
+com.google.android.googleapps.LoginData$1)
+
+public void <init>(
+com.google.android.googleapps.LoginData)
+
+public int describeContents()
+
+public java.lang.String dump()
+
+public void readFromParcel(
+android.os.Parcel)
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+
+public class com.google.android.googleapps.MsisdnTokenFetcher extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int MAX_TOKEN_LENGTH
+
+private static final java.lang.String MSISDN_URL
+
+private static final java.lang.String PURPOSE_PARAM
+
+private final android.content.ContentResolver mContentResolver
+
+private final org.apache.http.client.HttpClient mHttpClient
+----------------METHODS----------------
+
+public void <init>(
+android.content.ContentResolver
+org.apache.http.client.HttpClient)
+
+private org.apache.http.HttpHost createProxy()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/HttpException; )
+public byte[] getToken(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class javax.microedition.khronos.egl.EGLConfig extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class com.google.android.jsr239.EGLConfigImpl extends javax.microedition.khronos.egl.EGLConfig
+
+----------------FIELDS----------------
+
+private int mEGLConfig
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ int get()
+
+________________CLASS________________
+
+
+public abstract class javax.microedition.khronos.egl.EGLContext extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final javax.microedition.khronos.egl.EGL EGL_INSTANCE
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static javax.microedition.khronos.egl.EGL getEGL()
+
+public abstract javax.microedition.khronos.opengles.GL getGL()
+
+________________CLASS________________
+
+
+public class com.google.android.jsr239.EGLContextImpl extends javax.microedition.khronos.egl.EGLContext
+
+----------------FIELDS----------------
+
+ int mEGLContext
+
+private com.google.android.jsr239.GLImpl mGLContext
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public javax.microedition.khronos.opengles.GL getGL()
+
+________________CLASS________________
+
+
+public abstract class javax.microedition.khronos.egl.EGLDisplay extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class com.google.android.jsr239.EGLDisplayImpl extends javax.microedition.khronos.egl.EGLDisplay
+
+----------------FIELDS----------------
+
+ int mEGLDisplay
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+________________CLASS________________
+
+
+public class com.google.android.jsr239.EGLImpl extends java.lang.Object implements javax.microedition.khronos.egl.EGL10
+
+----------------FIELDS----------------
+
+private com.google.android.jsr239.EGLContextImpl mContext
+
+private com.google.android.jsr239.EGLDisplayImpl mDisplay
+
+private com.google.android.jsr239.EGLSurfaceImpl mSurface
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private native int _eglCreateContext(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+javax.microedition.khronos.egl.EGLContext
+int[])
+
+private native int _eglCreatePbufferSurface(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+int[])
+
+private native void _eglCreatePixmapSurface(
+javax.microedition.khronos.egl.EGLSurface
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+java.lang.Object
+int[])
+
+private native int _eglCreateWindowSurface(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+java.lang.Object
+int[])
+
+private native int _eglGetCurrentContext()
+
+private native int _eglGetCurrentDisplay()
+
+private native int _eglGetCurrentSurface(
+int)
+
+private native int _eglGetDisplay(
+java.lang.Object)
+
+private static native void _nativeClassInit()
+
+public native boolean eglChooseConfig(
+javax.microedition.khronos.egl.EGLDisplay
+int[]
+javax.microedition.khronos.egl.EGLConfig[]
+int
+int[])
+
+public native boolean eglCopyBuffers(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLSurface
+java.lang.Object)
+
+public javax.microedition.khronos.egl.EGLContext eglCreateContext(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+javax.microedition.khronos.egl.EGLContext
+int[])
+
+public javax.microedition.khronos.egl.EGLSurface eglCreatePbufferSurface(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+int[])
+
+public javax.microedition.khronos.egl.EGLSurface eglCreatePixmapSurface(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+java.lang.Object
+int[])
+
+public javax.microedition.khronos.egl.EGLSurface eglCreateWindowSurface(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+java.lang.Object
+int[])
+
+public native boolean eglDestroyContext(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLContext)
+
+public native boolean eglDestroySurface(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLSurface)
+
+public native boolean eglGetConfigAttrib(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig
+int
+int[])
+
+public native boolean eglGetConfigs(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLConfig[]
+int
+int[])
+
+public javax.microedition.khronos.egl.EGLContext eglGetCurrentContext()
+
+public javax.microedition.khronos.egl.EGLDisplay eglGetCurrentDisplay()
+
+public javax.microedition.khronos.egl.EGLSurface eglGetCurrentSurface(
+int)
+
+public javax.microedition.khronos.egl.EGLDisplay eglGetDisplay(
+java.lang.Object)
+
+public native int eglGetError()
+
+public native boolean eglInitialize(
+javax.microedition.khronos.egl.EGLDisplay
+int[])
+
+public native boolean eglMakeCurrent(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLSurface
+javax.microedition.khronos.egl.EGLSurface
+javax.microedition.khronos.egl.EGLContext)
+
+public native boolean eglQueryContext(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLContext
+int
+int[])
+
+public native java.lang.String eglQueryString(
+javax.microedition.khronos.egl.EGLDisplay
+int)
+
+public native boolean eglQuerySurface(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLSurface
+int
+int[])
+
+public native boolean eglSwapBuffers(
+javax.microedition.khronos.egl.EGLDisplay
+javax.microedition.khronos.egl.EGLSurface)
+
+public native boolean eglTerminate(
+javax.microedition.khronos.egl.EGLDisplay)
+
+public native boolean eglWaitGL()
+
+public native boolean eglWaitNative(
+int
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract class javax.microedition.khronos.egl.EGLSurface extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class com.google.android.jsr239.EGLSurfaceImpl extends javax.microedition.khronos.egl.EGLSurface
+
+----------------FIELDS----------------
+
+ int mEGLSurface
+
+private int mNativePixelRef
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class javax.microedition.khronos.opengles.GL11ExtensionPack extends java.lang.Object implements javax.microedition.khronos.opengles.GL
+
+----------------FIELDS----------------
+
+public static final int GL_BLEND_DST_ALPHA
+
+public static final int GL_BLEND_DST_RGB
+
+public static final int GL_BLEND_EQUATION
+
+public static final int GL_BLEND_EQUATION_ALPHA
+
+public static final int GL_BLEND_EQUATION_RGB
+
+public static final int GL_BLEND_SRC_ALPHA
+
+public static final int GL_BLEND_SRC_RGB
+
+public static final int GL_COLOR_ATTACHMENT0_OES
+
+public static final int GL_COLOR_ATTACHMENT10_OES
+
+public static final int GL_COLOR_ATTACHMENT11_OES
+
+public static final int GL_COLOR_ATTACHMENT12_OES
+
+public static final int GL_COLOR_ATTACHMENT13_OES
+
+public static final int GL_COLOR_ATTACHMENT14_OES
+
+public static final int GL_COLOR_ATTACHMENT15_OES
+
+public static final int GL_COLOR_ATTACHMENT1_OES
+
+public static final int GL_COLOR_ATTACHMENT2_OES
+
+public static final int GL_COLOR_ATTACHMENT3_OES
+
+public static final int GL_COLOR_ATTACHMENT4_OES
+
+public static final int GL_COLOR_ATTACHMENT5_OES
+
+public static final int GL_COLOR_ATTACHMENT6_OES
+
+public static final int GL_COLOR_ATTACHMENT7_OES
+
+public static final int GL_COLOR_ATTACHMENT8_OES
+
+public static final int GL_COLOR_ATTACHMENT9_OES
+
+public static final int GL_DECR_WRAP
+
+public static final int GL_DEPTH_ATTACHMENT_OES
+
+public static final int GL_DEPTH_COMPONENT
+
+public static final int GL_DEPTH_COMPONENT16
+
+public static final int GL_DEPTH_COMPONENT24
+
+public static final int GL_DEPTH_COMPONENT32
+
+public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES
+
+public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES
+
+public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES
+
+public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES
+
+public static final int GL_FRAMEBUFFER_BINDING_OES
+
+public static final int GL_FRAMEBUFFER_COMPLETE_OES
+
+public static final int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES
+
+public static final int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES
+
+public static final int GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES
+
+public static final int GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES
+
+public static final int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES
+
+public static final int GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES
+
+public static final int GL_FRAMEBUFFER_OES
+
+public static final int GL_FRAMEBUFFER_UNSUPPORTED_OES
+
+public static final int GL_FUNC_ADD
+
+public static final int GL_FUNC_REVERSE_SUBTRACT
+
+public static final int GL_FUNC_SUBTRACT
+
+public static final int GL_INCR_WRAP
+
+public static final int GL_INVALID_FRAMEBUFFER_OPERATION_OES
+
+public static final int GL_MAX_COLOR_ATTACHMENTS_OES
+
+public static final int GL_MAX_CUBE_MAP_TEXTURE_SIZE
+
+public static final int GL_MAX_RENDERBUFFER_SIZE_OES
+
+public static final int GL_MIRRORED_REPEAT
+
+public static final int GL_NORMAL_MAP
+
+public static final int GL_REFLECTION_MAP
+
+public static final int GL_RENDERBUFFER_ALPHA_SIZE_OES
+
+public static final int GL_RENDERBUFFER_BINDING_OES
+
+public static final int GL_RENDERBUFFER_BLUE_SIZE_OES
+
+public static final int GL_RENDERBUFFER_DEPTH_SIZE_OES
+
+public static final int GL_RENDERBUFFER_GREEN_SIZE_OES
+
+public static final int GL_RENDERBUFFER_HEIGHT_OES
+
+public static final int GL_RENDERBUFFER_INTERNAL_FORMAT_OES
+
+public static final int GL_RENDERBUFFER_OES
+
+public static final int GL_RENDERBUFFER_RED_SIZE_OES
+
+public static final int GL_RENDERBUFFER_STENCIL_SIZE_OES
+
+public static final int GL_RENDERBUFFER_WIDTH_OES
+
+public static final int GL_RGB565_OES
+
+public static final int GL_RGB5_A1
+
+public static final int GL_RGB8
+
+public static final int GL_RGBA4
+
+public static final int GL_RGBA8
+
+public static final int GL_STENCIL_ATTACHMENT_OES
+
+public static final int GL_STENCIL_INDEX
+
+public static final int GL_STENCIL_INDEX1_OES
+
+public static final int GL_STENCIL_INDEX4_OES
+
+public static final int GL_STENCIL_INDEX8_OES
+
+public static final int GL_STR
+
+public static final int GL_TEXTURE_BINDING_CUBE_MAP
+
+public static final int GL_TEXTURE_CUBE_MAP
+
+public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_X
+
+public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y
+
+public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
+
+public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_X
+
+public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Y
+
+public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Z
+
+public static final int GL_TEXTURE_GEN_MODE
+
+public static final int GL_TEXTURE_GEN_STR
+----------------METHODS----------------
+
+public abstract void glBindFramebufferOES(
+int
+int)
+
+public abstract void glBindRenderbufferOES(
+int
+int)
+
+public abstract void glBindTexture(
+int
+int)
+
+public abstract void glBlendEquation(
+int)
+
+public abstract void glBlendEquationSeparate(
+int
+int)
+
+public abstract void glBlendFuncSeparate(
+int
+int
+int
+int)
+
+public abstract int glCheckFramebufferStatusOES(
+int)
+
+public abstract void glCompressedTexImage2D(
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public abstract void glCopyTexImage2D(
+int
+int
+int
+int
+int
+int
+int
+int)
+
+public abstract void glDeleteFramebuffersOES(
+int
+java.nio.IntBuffer)
+
+public abstract void glDeleteFramebuffersOES(
+int
+int[]
+int)
+
+public abstract void glDeleteRenderbuffersOES(
+int
+java.nio.IntBuffer)
+
+public abstract void glDeleteRenderbuffersOES(
+int
+int[]
+int)
+
+public abstract void glEnable(
+int)
+
+public abstract void glFramebufferRenderbufferOES(
+int
+int
+int
+int)
+
+public abstract void glFramebufferTexture2DOES(
+int
+int
+int
+int
+int)
+
+public abstract void glGenFramebuffersOES(
+int
+java.nio.IntBuffer)
+
+public abstract void glGenFramebuffersOES(
+int
+int[]
+int)
+
+public abstract void glGenRenderbuffersOES(
+int
+java.nio.IntBuffer)
+
+public abstract void glGenRenderbuffersOES(
+int
+int[]
+int)
+
+public abstract void glGenerateMipmapOES(
+int)
+
+public abstract void glGetFramebufferAttachmentParameterivOES(
+int
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glGetFramebufferAttachmentParameterivOES(
+int
+int
+int
+int[]
+int)
+
+public abstract void glGetIntegerv(
+int
+java.nio.IntBuffer)
+
+public abstract void glGetIntegerv(
+int
+int[]
+int)
+
+public abstract void glGetRenderbufferParameterivOES(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glGetRenderbufferParameterivOES(
+int
+int
+int[]
+int)
+
+public abstract void glGetTexGenfv(
+int
+int
+java.nio.FloatBuffer)
+
+public abstract void glGetTexGenfv(
+int
+int
+float[]
+int)
+
+public abstract void glGetTexGeniv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glGetTexGeniv(
+int
+int
+int[]
+int)
+
+public abstract void glGetTexGenxv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glGetTexGenxv(
+int
+int
+int[]
+int)
+
+public abstract boolean glIsFramebufferOES(
+int)
+
+public abstract boolean glIsRenderbufferOES(
+int)
+
+public abstract void glRenderbufferStorageOES(
+int
+int
+int
+int)
+
+public abstract void glStencilOp(
+int
+int
+int)
+
+public abstract void glTexEnvf(
+int
+int
+float)
+
+public abstract void glTexEnvfv(
+int
+int
+java.nio.FloatBuffer)
+
+public abstract void glTexEnvfv(
+int
+int
+float[]
+int)
+
+public abstract void glTexEnvx(
+int
+int
+int)
+
+public abstract void glTexEnvxv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glTexEnvxv(
+int
+int
+int[]
+int)
+
+public abstract void glTexGenf(
+int
+int
+float)
+
+public abstract void glTexGenfv(
+int
+int
+java.nio.FloatBuffer)
+
+public abstract void glTexGenfv(
+int
+int
+float[]
+int)
+
+public abstract void glTexGeni(
+int
+int
+int)
+
+public abstract void glTexGeniv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glTexGeniv(
+int
+int
+int[]
+int)
+
+public abstract void glTexGenx(
+int
+int
+int)
+
+public abstract void glTexGenxv(
+int
+int
+java.nio.IntBuffer)
+
+public abstract void glTexGenxv(
+int
+int
+int[]
+int)
+
+public abstract void glTexParameterf(
+int
+int
+float)
+
+________________CLASS________________
+
+
+public class com.google.android.jsr239.GLImpl extends java.lang.Object implements javax.microedition.khronos.opengles.GL10, javax.microedition.khronos.opengles.GL10Ext, javax.microedition.khronos.opengles.GL11, javax.microedition.khronos.opengles.GL11Ext, javax.microedition.khronos.opengles.GL11ExtensionPack
+
+----------------FIELDS----------------
+
+ java.nio.Buffer _colorPointer
+
+ java.nio.Buffer _normalPointer
+
+ java.nio.Buffer _texCoordPointer
+
+ java.nio.Buffer _vertexPointer
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static native void _nativeClassInit()
+
+private native void glColorPointerBounds(
+int
+int
+int
+java.nio.Buffer
+int)
+
+private native void glNormalPointerBounds(
+int
+int
+java.nio.Buffer
+int)
+
+private native void glTexCoordPointerBounds(
+int
+int
+int
+java.nio.Buffer
+int)
+
+private native void glVertexPointerBounds(
+int
+int
+int
+java.nio.Buffer
+int)
+
+public native java.lang.String _glGetString(
+int)
+
+public native void glActiveTexture(
+int)
+
+public native void glAlphaFunc(
+int
+float)
+
+public native void glAlphaFuncx(
+int
+int)
+
+public native void glBindBuffer(
+int
+int)
+
+public native void glBindFramebufferOES(
+int
+int)
+
+public native void glBindRenderbufferOES(
+int
+int)
+
+public native void glBindTexture(
+int
+int)
+
+public native void glBlendEquation(
+int)
+
+public native void glBlendEquationSeparate(
+int
+int)
+
+public native void glBlendFunc(
+int
+int)
+
+public native void glBlendFuncSeparate(
+int
+int
+int
+int)
+
+public native void glBufferData(
+int
+int
+java.nio.Buffer
+int)
+
+public native void glBufferSubData(
+int
+int
+int
+java.nio.Buffer)
+
+public native int glCheckFramebufferStatusOES(
+int)
+
+public native void glClear(
+int)
+
+public native void glClearColor(
+float
+float
+float
+float)
+
+public native void glClearColorx(
+int
+int
+int
+int)
+
+public native void glClearDepthf(
+float)
+
+public native void glClearDepthx(
+int)
+
+public native void glClearStencil(
+int)
+
+public native void glClientActiveTexture(
+int)
+
+public native void glClipPlanef(
+int
+java.nio.FloatBuffer)
+
+public native void glClipPlanef(
+int
+float[]
+int)
+
+public native void glClipPlanex(
+int
+java.nio.IntBuffer)
+
+public native void glClipPlanex(
+int
+int[]
+int)
+
+public native void glColor4f(
+float
+float
+float
+float)
+
+public native void glColor4ub(
+byte
+byte
+byte
+byte)
+
+public native void glColor4x(
+int
+int
+int
+int)
+
+public native void glColorMask(
+boolean
+boolean
+boolean
+boolean)
+
+public native void glColorPointer(
+int
+int
+int
+int)
+
+public void glColorPointer(
+int
+int
+int
+java.nio.Buffer)
+
+public native void glCompressedTexImage2D(
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public native void glCompressedTexSubImage2D(
+int
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public native void glCopyTexImage2D(
+int
+int
+int
+int
+int
+int
+int
+int)
+
+public native void glCopyTexSubImage2D(
+int
+int
+int
+int
+int
+int
+int
+int)
+
+public native void glCullFace(
+int)
+
+public native void glCurrentPaletteMatrixOES(
+int)
+
+public native void glDeleteBuffers(
+int
+java.nio.IntBuffer)
+
+public native void glDeleteBuffers(
+int
+int[]
+int)
+
+public native void glDeleteFramebuffersOES(
+int
+java.nio.IntBuffer)
+
+public native void glDeleteFramebuffersOES(
+int
+int[]
+int)
+
+public native void glDeleteRenderbuffersOES(
+int
+java.nio.IntBuffer)
+
+public native void glDeleteRenderbuffersOES(
+int
+int[]
+int)
+
+public native void glDeleteTextures(
+int
+java.nio.IntBuffer)
+
+public native void glDeleteTextures(
+int
+int[]
+int)
+
+public native void glDepthFunc(
+int)
+
+public native void glDepthMask(
+boolean)
+
+public native void glDepthRangef(
+float
+float)
+
+public native void glDepthRangex(
+int
+int)
+
+public native void glDisable(
+int)
+
+public native void glDisableClientState(
+int)
+
+public native void glDrawArrays(
+int
+int
+int)
+
+public native void glDrawElements(
+int
+int
+int
+int)
+
+public native void glDrawElements(
+int
+int
+int
+java.nio.Buffer)
+
+public native void glDrawTexfOES(
+float
+float
+float
+float
+float)
+
+public native void glDrawTexfvOES(
+java.nio.FloatBuffer)
+
+public native void glDrawTexfvOES(
+float[]
+int)
+
+public native void glDrawTexiOES(
+int
+int
+int
+int
+int)
+
+public native void glDrawTexivOES(
+java.nio.IntBuffer)
+
+public native void glDrawTexivOES(
+int[]
+int)
+
+public native void glDrawTexsOES(
+short
+short
+short
+short
+short)
+
+public native void glDrawTexsvOES(
+java.nio.ShortBuffer)
+
+public native void glDrawTexsvOES(
+short[]
+int)
+
+public native void glDrawTexxOES(
+int
+int
+int
+int
+int)
+
+public native void glDrawTexxvOES(
+java.nio.IntBuffer)
+
+public native void glDrawTexxvOES(
+int[]
+int)
+
+public native void glEnable(
+int)
+
+public native void glEnableClientState(
+int)
+
+public native void glFinish()
+
+public native void glFlush()
+
+public native void glFogf(
+int
+float)
+
+public native void glFogfv(
+int
+java.nio.FloatBuffer)
+
+public native void glFogfv(
+int
+float[]
+int)
+
+public native void glFogx(
+int
+int)
+
+public native void glFogxv(
+int
+java.nio.IntBuffer)
+
+public native void glFogxv(
+int
+int[]
+int)
+
+public native void glFramebufferRenderbufferOES(
+int
+int
+int
+int)
+
+public native void glFramebufferTexture2DOES(
+int
+int
+int
+int
+int)
+
+public native void glFrontFace(
+int)
+
+public native void glFrustumf(
+float
+float
+float
+float
+float
+float)
+
+public native void glFrustumx(
+int
+int
+int
+int
+int
+int)
+
+public native void glGenBuffers(
+int
+java.nio.IntBuffer)
+
+public native void glGenBuffers(
+int
+int[]
+int)
+
+public native void glGenFramebuffersOES(
+int
+java.nio.IntBuffer)
+
+public native void glGenFramebuffersOES(
+int
+int[]
+int)
+
+public native void glGenRenderbuffersOES(
+int
+java.nio.IntBuffer)
+
+public native void glGenRenderbuffersOES(
+int
+int[]
+int)
+
+public native void glGenTextures(
+int
+java.nio.IntBuffer)
+
+public native void glGenTextures(
+int
+int[]
+int)
+
+public native void glGenerateMipmapOES(
+int)
+
+public native void glGetBooleanv(
+int
+java.nio.IntBuffer)
+
+public native void glGetBooleanv(
+int
+boolean[]
+int)
+
+public native void glGetBufferParameteriv(
+int
+int
+java.nio.IntBuffer)
+
+public native void glGetBufferParameteriv(
+int
+int
+int[]
+int)
+
+public native void glGetClipPlanef(
+int
+java.nio.FloatBuffer)
+
+public native void glGetClipPlanef(
+int
+float[]
+int)
+
+public native void glGetClipPlanex(
+int
+java.nio.IntBuffer)
+
+public native void glGetClipPlanex(
+int
+int[]
+int)
+
+public native int glGetError()
+
+public native void glGetFixedv(
+int
+java.nio.IntBuffer)
+
+public native void glGetFixedv(
+int
+int[]
+int)
+
+public native void glGetFloatv(
+int
+java.nio.FloatBuffer)
+
+public native void glGetFloatv(
+int
+float[]
+int)
+
+public native void glGetFramebufferAttachmentParameterivOES(
+int
+int
+int
+java.nio.IntBuffer)
+
+public native void glGetFramebufferAttachmentParameterivOES(
+int
+int
+int
+int[]
+int)
+
+public native void glGetIntegerv(
+int
+java.nio.IntBuffer)
+
+public native void glGetIntegerv(
+int
+int[]
+int)
+
+public native void glGetLightfv(
+int
+int
+java.nio.FloatBuffer)
+
+public native void glGetLightfv(
+int
+int
+float[]
+int)
+
+public native void glGetLightxv(
+int
+int
+java.nio.IntBuffer)
+
+public native void glGetLightxv(
+int
+int
+int[]
+int)
+
+public native void glGetMaterialfv(
+int
+int
+java.nio.FloatBuffer)
+
+public native void glGetMaterialfv(
+int
+int
+float[]
+int)
+
+public native void glGetMaterialxv(
+int
+int
+java.nio.IntBuffer)
+
+public native void glGetMaterialxv(
+int
+int
+int[]
+int)
+
+public void glGetPointerv(
+int
+java.nio.Buffer[])
+
+public native void glGetRenderbufferParameterivOES(
+int
+int
+java.nio.IntBuffer)
+
+public native void glGetRenderbufferParameterivOES(
+int
+int
+int[]
+int)
+
+public java.lang.String glGetString(
+int)
+
+public native void glGetTexEnviv(
+int
+int
+java.nio.IntBuffer)
+
+public native void glGetTexEnviv(
+int
+int
+int[]
+int)
+
+public native void glGetTexEnvxv(
+int
+int
+java.nio.IntBuffer)
+
+public native void glGetTexEnvxv(
+int
+int
+int[]
+int)
+
+public native void glGetTexGenfv(
+int
+int
+java.nio.FloatBuffer)
+
+public native void glGetTexGenfv(
+int
+int
+float[]
+int)
+
+public native void glGetTexGeniv(
+int
+int
+java.nio.IntBuffer)
+
+public native void glGetTexGeniv(
+int
+int
+int[]
+int)
+
+public native void glGetTexGenxv(
+int
+int
+java.nio.IntBuffer)
+
+public native void glGetTexGenxv(
+int
+int
+int[]
+int)
+
+public native void glGetTexParameterfv(
+int
+int
+java.nio.FloatBuffer)
+
+public native void glGetTexParameterfv(
+int
+int
+float[]
+int)
+
+public native void glGetTexParameteriv(
+int
+int
+java.nio.IntBuffer)
+
+public native void glGetTexParameteriv(
+int
+int
+int[]
+int)
+
+public native void glGetTexParameterxv(
+int
+int
+java.nio.IntBuffer)
+
+public native void glGetTexParameterxv(
+int
+int
+int[]
+int)
+
+public native void glHint(
+int
+int)
+
+public native boolean glIsBuffer(
+int)
+
+public native boolean glIsEnabled(
+int)
+
+public native boolean glIsFramebufferOES(
+int)
+
+public native boolean glIsRenderbufferOES(
+int)
+
+public native boolean glIsTexture(
+int)
+
+public native void glLightModelf(
+int
+float)
+
+public native void glLightModelfv(
+int
+java.nio.FloatBuffer)
+
+public native void glLightModelfv(
+int
+float[]
+int)
+
+public native void glLightModelx(
+int
+int)
+
+public native void glLightModelxv(
+int
+java.nio.IntBuffer)
+
+public native void glLightModelxv(
+int
+int[]
+int)
+
+public native void glLightf(
+int
+int
+float)
+
+public native void glLightfv(
+int
+int
+java.nio.FloatBuffer)
+
+public native void glLightfv(
+int
+int
+float[]
+int)
+
+public native void glLightx(
+int
+int
+int)
+
+public native void glLightxv(
+int
+int
+java.nio.IntBuffer)
+
+public native void glLightxv(
+int
+int
+int[]
+int)
+
+public native void glLineWidth(
+float)
+
+public native void glLineWidthx(
+int)
+
+public native void glLoadIdentity()
+
+public native void glLoadMatrixf(
+java.nio.FloatBuffer)
+
+public native void glLoadMatrixf(
+float[]
+int)
+
+public native void glLoadMatrixx(
+java.nio.IntBuffer)
+
+public native void glLoadMatrixx(
+int[]
+int)
+
+public native void glLoadPaletteFromModelViewMatrixOES()
+
+public native void glLogicOp(
+int)
+
+public native void glMaterialf(
+int
+int
+float)
+
+public native void glMaterialfv(
+int
+int
+java.nio.FloatBuffer)
+
+public native void glMaterialfv(
+int
+int
+float[]
+int)
+
+public native void glMaterialx(
+int
+int
+int)
+
+public native void glMaterialxv(
+int
+int
+java.nio.IntBuffer)
+
+public native void glMaterialxv(
+int
+int
+int[]
+int)
+
+public native void glMatrixIndexPointerOES(
+int
+int
+int
+int)
+
+public native void glMatrixIndexPointerOES(
+int
+int
+int
+java.nio.Buffer)
+
+public native void glMatrixMode(
+int)
+
+public native void glMultMatrixf(
+java.nio.FloatBuffer)
+
+public native void glMultMatrixf(
+float[]
+int)
+
+public native void glMultMatrixx(
+java.nio.IntBuffer)
+
+public native void glMultMatrixx(
+int[]
+int)
+
+public native void glMultiTexCoord4f(
+int
+float
+float
+float
+float)
+
+public native void glMultiTexCoord4x(
+int
+int
+int
+int
+int)
+
+public native void glNormal3f(
+float
+float
+float)
+
+public native void glNormal3x(
+int
+int
+int)
+
+public native void glNormalPointer(
+int
+int
+int)
+
+public void glNormalPointer(
+int
+int
+java.nio.Buffer)
+
+public native void glOrthof(
+float
+float
+float
+float
+float
+float)
+
+public native void glOrthox(
+int
+int
+int
+int
+int
+int)
+
+public native void glPixelStorei(
+int
+int)
+
+public native void glPointParameterf(
+int
+float)
+
+public native void glPointParameterfv(
+int
+java.nio.FloatBuffer)
+
+public native void glPointParameterfv(
+int
+float[]
+int)
+
+public native void glPointParameterx(
+int
+int)
+
+public native void glPointParameterxv(
+int
+java.nio.IntBuffer)
+
+public native void glPointParameterxv(
+int
+int[]
+int)
+
+public native void glPointSize(
+float)
+
+public native void glPointSizePointerOES(
+int
+int
+java.nio.Buffer)
+
+public native void glPointSizex(
+int)
+
+public native void glPolygonOffset(
+float
+float)
+
+public native void glPolygonOffsetx(
+int
+int)
+
+public native void glPopMatrix()
+
+public native void glPushMatrix()
+
+public native int glQueryMatrixxOES(
+java.nio.IntBuffer
+java.nio.IntBuffer)
+
+public native int glQueryMatrixxOES(
+int[]
+int
+int[]
+int)
+
+public native void glReadPixels(
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public native void glRenderbufferStorageOES(
+int
+int
+int
+int)
+
+public native void glRotatef(
+float
+float
+float
+float)
+
+public native void glRotatex(
+int
+int
+int
+int)
+
+public native void glSampleCoverage(
+float
+boolean)
+
+public native void glSampleCoveragex(
+int
+boolean)
+
+public native void glScalef(
+float
+float
+float)
+
+public native void glScalex(
+int
+int
+int)
+
+public native void glScissor(
+int
+int
+int
+int)
+
+public native void glShadeModel(
+int)
+
+public native void glStencilFunc(
+int
+int
+int)
+
+public native void glStencilMask(
+int)
+
+public native void glStencilOp(
+int
+int
+int)
+
+public native void glTexCoordPointer(
+int
+int
+int
+int)
+
+public void glTexCoordPointer(
+int
+int
+int
+java.nio.Buffer)
+
+public native void glTexEnvf(
+int
+int
+float)
+
+public native void glTexEnvfv(
+int
+int
+java.nio.FloatBuffer)
+
+public native void glTexEnvfv(
+int
+int
+float[]
+int)
+
+public native void glTexEnvi(
+int
+int
+int)
+
+public native void glTexEnviv(
+int
+int
+java.nio.IntBuffer)
+
+public native void glTexEnviv(
+int
+int
+int[]
+int)
+
+public native void glTexEnvx(
+int
+int
+int)
+
+public native void glTexEnvxv(
+int
+int
+java.nio.IntBuffer)
+
+public native void glTexEnvxv(
+int
+int
+int[]
+int)
+
+public native void glTexGenf(
+int
+int
+float)
+
+public native void glTexGenfv(
+int
+int
+java.nio.FloatBuffer)
+
+public native void glTexGenfv(
+int
+int
+float[]
+int)
+
+public native void glTexGeni(
+int
+int
+int)
+
+public native void glTexGeniv(
+int
+int
+java.nio.IntBuffer)
+
+public native void glTexGeniv(
+int
+int
+int[]
+int)
+
+public native void glTexGenx(
+int
+int
+int)
+
+public native void glTexGenxv(
+int
+int
+java.nio.IntBuffer)
+
+public native void glTexGenxv(
+int
+int
+int[]
+int)
+
+public native void glTexImage2D(
+int
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public native void glTexParameterf(
+int
+int
+float)
+
+public native void glTexParameterfv(
+int
+int
+java.nio.FloatBuffer)
+
+public native void glTexParameterfv(
+int
+int
+float[]
+int)
+
+public native void glTexParameteri(
+int
+int
+int)
+
+public native void glTexParameteriv(
+int
+int
+java.nio.IntBuffer)
+
+public native void glTexParameteriv(
+int
+int
+int[]
+int)
+
+public native void glTexParameterx(
+int
+int
+int)
+
+public native void glTexParameterxv(
+int
+int
+java.nio.IntBuffer)
+
+public native void glTexParameterxv(
+int
+int
+int[]
+int)
+
+public native void glTexSubImage2D(
+int
+int
+int
+int
+int
+int
+int
+int
+java.nio.Buffer)
+
+public native void glTranslatef(
+float
+float
+float)
+
+public native void glTranslatex(
+int
+int
+int)
+
+public native void glVertexPointer(
+int
+int
+int
+int)
+
+public void glVertexPointer(
+int
+int
+int
+java.nio.Buffer)
+
+public native void glViewport(
+int
+int
+int
+int)
+
+public native void glWeightPointerOES(
+int
+int
+int
+int)
+
+public native void glWeightPointerOES(
+int
+int
+int
+java.nio.Buffer)
+
+________________CLASS________________
+
+
+public class com.google.android.mms.ContentType extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String APP_DRM_CONTENT
+
+public static final java.lang.String APP_DRM_MESSAGE
+
+public static final java.lang.String APP_SMIL
+
+public static final java.lang.String APP_WAP_XHTML
+
+public static final java.lang.String APP_XHTML
+
+public static final java.lang.String AUDIO_3GPP
+
+public static final java.lang.String AUDIO_AAC
+
+public static final java.lang.String AUDIO_AMR
+
+public static final java.lang.String AUDIO_IMELODY
+
+public static final java.lang.String AUDIO_MID
+
+public static final java.lang.String AUDIO_MIDI
+
+public static final java.lang.String AUDIO_MP3
+
+public static final java.lang.String AUDIO_MP4
+
+public static final java.lang.String AUDIO_MPEG
+
+public static final java.lang.String AUDIO_MPEG3
+
+public static final java.lang.String AUDIO_MPG
+
+public static final java.lang.String AUDIO_OGG
+
+public static final java.lang.String AUDIO_UNSPECIFIED
+
+public static final java.lang.String AUDIO_X_MID
+
+public static final java.lang.String AUDIO_X_MIDI
+
+public static final java.lang.String AUDIO_X_MP3
+
+public static final java.lang.String AUDIO_X_MPEG
+
+public static final java.lang.String AUDIO_X_MPEG3
+
+public static final java.lang.String AUDIO_X_MPG
+
+public static final java.lang.String IMAGE_GIF
+
+public static final java.lang.String IMAGE_JPEG
+
+public static final java.lang.String IMAGE_JPG
+
+public static final java.lang.String IMAGE_PNG
+
+public static final java.lang.String IMAGE_UNSPECIFIED
+
+public static final java.lang.String IMAGE_WBMP
+
+public static final java.lang.String MMS_GENERIC
+
+public static final java.lang.String MMS_MESSAGE
+
+public static final java.lang.String MULTIPART_MIXED
+
+public static final java.lang.String MULTIPART_RELATED
+
+public static final java.lang.String TEXT_HTML
+
+public static final java.lang.String TEXT_PLAIN
+
+public static final java.lang.String TEXT_VCALENDAR
+
+public static final java.lang.String TEXT_VCARD
+
+public static final java.lang.String VIDEO_3G2
+
+public static final java.lang.String VIDEO_3GPP
+
+public static final java.lang.String VIDEO_H263
+
+public static final java.lang.String VIDEO_MP4
+
+public static final java.lang.String VIDEO_UNSPECIFIED
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+private static final java.util.ArrayList sSupportedAudioTypes
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+private static final java.util.ArrayList sSupportedContentTypes
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+private static final java.util.ArrayList sSupportedImageTypes
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+private static final java.util.ArrayList sSupportedVideoTypes
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Ljava/lang/String;>; )
+public static java.util.ArrayList getAudioTypes()
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Ljava/lang/String;>; )
+public static java.util.ArrayList getImageTypes()
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Ljava/lang/String;>; )
+public static java.util.ArrayList getSupportedTypes()
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Ljava/lang/String;>; )
+public static java.util.ArrayList getVideoTypes()
+
+public static boolean isAudioType(
+java.lang.String)
+
+public static boolean isDrmType(
+java.lang.String)
+
+public static boolean isImageType(
+java.lang.String)
+
+public static boolean isSupportedAudioType(
+java.lang.String)
+
+public static boolean isSupportedImageType(
+java.lang.String)
+
+public static boolean isSupportedType(
+java.lang.String)
+
+public static boolean isSupportedVideoType(
+java.lang.String)
+
+public static boolean isTextType(
+java.lang.String)
+
+public static boolean isUnspecified(
+java.lang.String)
+
+public static boolean isVideoType(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class com.google.android.mms.MmsException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class com.google.android.mms.InvalidHeaderValueException extends com.google.android.mms.MmsException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.GenericPdu extends java.lang.Object
+
+----------------FIELDS----------------
+
+ com.google.android.mms.pdu.PduHeaders mPduHeaders
+----------------METHODS----------------
+
+public void <init>()
+
+ void <init>(
+com.google.android.mms.pdu.PduHeaders)
+
+public int getMessageType()
+
+public int getMmsVersion()
+
+ com.google.android.mms.pdu.PduHeaders getPduHeaders()
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void setMessageType(
+int)
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void setMmsVersion(
+int)
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.AcknowledgeInd extends com.google.android.mms.pdu.GenericPdu
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void <init>(
+int
+byte[])
+
+ void <init>(
+com.google.android.mms.pdu.PduHeaders)
+
+public int getReportAllowed()
+
+public byte[] getTransactionId()
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void setReportAllowed(
+int)
+
+public void setTransactionId(
+byte[])
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.Base64 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int BASELENGTH
+
+static final int FOURBYTE
+
+static final byte PAD
+
+private static byte[] base64Alphabet
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static byte[] decodeBase64(
+byte[])
+
+static byte[] discardNonBase64(
+byte[])
+
+private static boolean isBase64(
+byte)
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.CharacterSets extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+public static final int ANY_CHARSET
+
+public static final int BIG5
+
+public static final int DEFAULT_CHARSET
+
+public static final java.lang.String DEFAULT_CHARSET_NAME
+
+public static final int ISO_8859_1
+
+public static final int ISO_8859_2
+
+public static final int ISO_8859_3
+
+public static final int ISO_8859_4
+
+public static final int ISO_8859_5
+
+public static final int ISO_8859_6
+
+public static final int ISO_8859_7
+
+public static final int ISO_8859_8
+
+public static final int ISO_8859_9
+
+private static final int[] MIBENUM_NUMBERS
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/String;>; )
+private static final java.util.HashMap MIBENUM_TO_NAME_MAP
+
+public static final java.lang.String MIMENAME_ANY_CHARSET
+
+public static final java.lang.String MIMENAME_BIG5
+
+public static final java.lang.String MIMENAME_ISO_8859_1
+
+public static final java.lang.String MIMENAME_ISO_8859_2
+
+public static final java.lang.String MIMENAME_ISO_8859_3
+
+public static final java.lang.String MIMENAME_ISO_8859_4
+
+public static final java.lang.String MIMENAME_ISO_8859_5
+
+public static final java.lang.String MIMENAME_ISO_8859_6
+
+public static final java.lang.String MIMENAME_ISO_8859_7
+
+public static final java.lang.String MIMENAME_ISO_8859_8
+
+public static final java.lang.String MIMENAME_ISO_8859_9
+
+public static final java.lang.String MIMENAME_SHIFT_JIS
+
+public static final java.lang.String MIMENAME_UCS2
+
+public static final java.lang.String MIMENAME_US_ASCII
+
+public static final java.lang.String MIMENAME_UTF_16
+
+public static final java.lang.String MIMENAME_UTF_8
+
+private static final java.lang.String[] MIME_NAMES
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Integer;>; )
+private static final java.util.HashMap NAME_TO_MIBENUM_MAP
+
+public static final int SHIFT_JIS
+
+public static final int UCS2
+
+public static final int US_ASCII
+
+public static final int UTF_16
+
+public static final int UTF_8
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public static int getMibEnumValue(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public static java.lang.String getMimeName(
+int)
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.DeliveryInd extends com.google.android.mms.pdu.GenericPdu
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void <init>()
+
+ void <init>(
+com.google.android.mms.pdu.PduHeaders)
+
+public long getDate()
+
+public byte[] getMessageId()
+
+public int getStatus()
+
+public com.google.android.mms.pdu.EncodedStringValue[] getTo()
+
+public void setDate(
+long)
+
+public void setMessageId(
+byte[])
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void setStatus(
+int)
+
+public void setTo(
+com.google.android.mms.pdu.EncodedStringValue[])
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.EncodedStringValue extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG
+
+private static final boolean LOCAL_LOGV
+
+private static final java.lang.String TAG
+
+private int mCharacterSet
+
+private byte[] mData
+----------------METHODS----------------
+
+public void <init>(
+int
+byte[])
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+byte[])
+
+public static java.lang.String concat(
+com.google.android.mms.pdu.EncodedStringValue[])
+
+public static com.google.android.mms.pdu.EncodedStringValue copy(
+com.google.android.mms.pdu.EncodedStringValue)
+
+public static com.google.android.mms.pdu.EncodedStringValue[] extract(
+java.lang.String)
+
+public void appendTextString(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public int getCharacterSet()
+
+public java.lang.String getString()
+
+public byte[] getTextString()
+
+public void setCharacterSet(
+int)
+
+public void setTextString(
+byte[])
+
+public com.google.android.mms.pdu.EncodedStringValue[] split(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.MultimediaMessagePdu extends com.google.android.mms.pdu.GenericPdu
+
+----------------FIELDS----------------
+
+private com.google.android.mms.pdu.PduBody mMessageBody
+----------------METHODS----------------
+
+public void <init>()
+
+ void <init>(
+com.google.android.mms.pdu.PduHeaders)
+
+public void <init>(
+com.google.android.mms.pdu.PduHeaders
+com.google.android.mms.pdu.PduBody)
+
+public void addTo(
+com.google.android.mms.pdu.EncodedStringValue)
+
+public com.google.android.mms.pdu.PduBody getBody()
+
+public long getDate()
+
+public int getPriority()
+
+public com.google.android.mms.pdu.EncodedStringValue getSubject()
+
+public com.google.android.mms.pdu.EncodedStringValue[] getTo()
+
+public void setBody(
+com.google.android.mms.pdu.PduBody)
+
+public void setDate(
+long)
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void setPriority(
+int)
+
+public void setSubject(
+com.google.android.mms.pdu.EncodedStringValue)
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.NotificationInd extends com.google.android.mms.pdu.GenericPdu
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void <init>()
+
+ void <init>(
+com.google.android.mms.pdu.PduHeaders)
+
+public int getContentClass()
+
+public byte[] getContentLocation()
+
+public int getDeliveryReport()
+
+public long getExpiry()
+
+public com.google.android.mms.pdu.EncodedStringValue getFrom()
+
+public byte[] getMessageClass()
+
+public long getMessageSize()
+
+public com.google.android.mms.pdu.EncodedStringValue getSubject()
+
+public byte[] getTransactionId()
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void setContentClass(
+int)
+
+public void setContentLocation(
+byte[])
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void setDeliveryReport(
+int)
+
+public void setExpiry(
+long)
+
+public void setFrom(
+com.google.android.mms.pdu.EncodedStringValue)
+
+public void setMessageClass(
+byte[])
+
+public void setMessageSize(
+long)
+
+public void setSubject(
+com.google.android.mms.pdu.EncodedStringValue)
+
+public void setTransactionId(
+byte[])
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.NotifyRespInd extends com.google.android.mms.pdu.GenericPdu
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void <init>(
+int
+byte[]
+int)
+
+ void <init>(
+com.google.android.mms.pdu.PduHeaders)
+
+public int getReportAllowed()
+
+public int getStatus()
+
+public byte[] getTransactionId()
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void setReportAllowed(
+int)
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void setStatus(
+int)
+
+public void setTransactionId(
+byte[])
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.PduBody extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Lcom/google/android/mms/pdu/PduPart;>; )
+private java.util.Map mPartMapByContentId
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Lcom/google/android/mms/pdu/PduPart;>; )
+private java.util.Map mPartMapByContentLocation
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Lcom/google/android/mms/pdu/PduPart;>; )
+private java.util.Map mPartMapByFileName
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Lcom/google/android/mms/pdu/PduPart;>; )
+private java.util.Map mPartMapByName
+@dalvik.annotation.Signature (value =Ljava/util/Vector<Lcom/google/android/mms/pdu/PduPart;>; )
+private java.util.Vector mParts
+----------------METHODS----------------
+
+public void <init>()
+
+private void putPartToMaps(
+com.google.android.mms.pdu.PduPart)
+
+public void addPart(
+int
+com.google.android.mms.pdu.PduPart)
+
+public boolean addPart(
+com.google.android.mms.pdu.PduPart)
+
+public com.google.android.mms.pdu.PduPart getPart(
+int)
+
+public com.google.android.mms.pdu.PduPart getPartByContentId(
+java.lang.String)
+
+public com.google.android.mms.pdu.PduPart getPartByContentLocation(
+java.lang.String)
+
+public com.google.android.mms.pdu.PduPart getPartByFileName(
+java.lang.String)
+
+public com.google.android.mms.pdu.PduPart getPartByName(
+java.lang.String)
+
+public int getPartIndex(
+com.google.android.mms.pdu.PduPart)
+
+public int getPartsNum()
+
+public void removeAll()
+
+public com.google.android.mms.pdu.PduPart removePart(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/mms/pdu/PduComposer; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class com.google.android.mms.pdu.PduComposer$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/mms/pdu/PduComposer; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =BufferStack )
+ class com.google.android.mms.pdu.PduComposer$BufferStack extends java.lang.Object
+
+----------------FIELDS----------------
+
+private com.google.android.mms.pdu.PduComposer$LengthRecordNode stack
+
+ int stackSize
+
+final com.google.android.mms.pdu.PduComposer this$0
+
+private com.google.android.mms.pdu.PduComposer$LengthRecordNode toCopy
+----------------METHODS----------------
+
+private void <init>(
+com.google.android.mms.pdu.PduComposer)
+
+ void <init>(
+com.google.android.mms.pdu.PduComposer
+com.google.android.mms.pdu.PduComposer$1)
+
+ void copy()
+
+ com.google.android.mms.pdu.PduComposer$PositionMarker mark()
+
+ void newbuf()
+
+ void pop()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =LengthRecordNode )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/mms/pdu/PduComposer; )
+ class com.google.android.mms.pdu.PduComposer$LengthRecordNode extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.io.ByteArrayOutputStream currentMessage
+
+public int currentPosition
+
+public com.google.android.mms.pdu.PduComposer$LengthRecordNode next
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+com.google.android.mms.pdu.PduComposer$1)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =PositionMarker )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/mms/pdu/PduComposer; )
+ class com.google.android.mms.pdu.PduComposer$PositionMarker extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int c_pos
+
+private int currentStackSize
+
+final com.google.android.mms.pdu.PduComposer this$0
+----------------METHODS----------------
+
+private void <init>(
+com.google.android.mms.pdu.PduComposer)
+
+ void <init>(
+com.google.android.mms.pdu.PduComposer
+com.google.android.mms.pdu.PduComposer$1)
+
+static int access$402(
+com.google.android.mms.pdu.PduComposer$PositionMarker
+int)
+
+static int access$502(
+com.google.android.mms.pdu.PduComposer$PositionMarker
+int)
+
+ int getLength()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/google/android/mms/pdu/PduComposer$1;Lcom/google/android/mms/pdu/PduComposer$BufferStack;Lcom/google/android/mms/pdu/PduComposer$PositionMarker;Lcom/google/android/mms/pdu/PduComposer$LengthRecordNode; )
+public class com.google.android.mms.pdu.PduComposer extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private static final int END_STRING_FLAG
+
+private static final int LENGTH_QUOTE
+
+private static final int LONG_INTEGER_LENGTH_MAX
+
+private static final int PDU_COMPOSER_BLOCK_SIZE
+
+private static final int PDU_COMPOSE_CONTENT_ERROR
+
+private static final int PDU_COMPOSE_FIELD_NOT_SET
+
+private static final int PDU_COMPOSE_FIELD_NOT_SUPPORTED
+
+private static final int PDU_COMPOSE_SUCCESS
+
+private static final int PDU_EMAIL_ADDRESS_TYPE
+
+private static final int PDU_IPV4_ADDRESS_TYPE
+
+private static final int PDU_IPV6_ADDRESS_TYPE
+
+private static final int PDU_PHONE_NUMBER_ADDRESS_TYPE
+
+private static final int PDU_UNKNOWN_ADDRESS_TYPE
+
+private static final int QUOTED_STRING_FLAG
+
+static final java.lang.String REGEXP_EMAIL_ADDRESS_TYPE
+
+static final java.lang.String REGEXP_IPV4_ADDRESS_TYPE
+
+static final java.lang.String REGEXP_IPV6_ADDRESS_TYPE
+
+static final java.lang.String REGEXP_PHONE_NUMBER_ADDRESS_TYPE
+
+private static final int SHORT_INTEGER_MAX
+
+static final java.lang.String STRING_IPV4_ADDRESS_TYPE
+
+static final java.lang.String STRING_IPV6_ADDRESS_TYPE
+
+static final java.lang.String STRING_PHONE_NUMBER_ADDRESS_TYPE
+
+private static final int TEXT_MAX
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Integer;>; )
+private static java.util.HashMap mContentTypeMap
+
+protected java.io.ByteArrayOutputStream mMessage
+
+private com.google.android.mms.pdu.GenericPdu mPdu
+
+private com.google.android.mms.pdu.PduHeaders mPduHeader
+
+protected int mPosition
+
+private final android.content.ContentResolver mResolver
+
+private com.google.android.mms.pdu.PduComposer$BufferStack mStack
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+android.content.Context
+com.google.android.mms.pdu.GenericPdu)
+
+static com.google.android.mms.pdu.PduComposer$BufferStack access$100(
+com.google.android.mms.pdu.PduComposer)
+
+private int appendHeader(
+int)
+
+protected static int checkAddressType(
+java.lang.String)
+
+private int makeAckInd()
+
+private int makeMessageBody()
+
+private int makeNotifyResp()
+
+private int makeReadRecInd()
+
+private int makeSendReqPdu()
+
+protected void append(
+int)
+
+protected void appendDateValue(
+long)
+
+protected void appendEncodedString(
+com.google.android.mms.pdu.EncodedStringValue)
+
+protected void appendLongInteger(
+long)
+
+protected void appendOctet(
+int)
+
+protected void appendQuotedString(
+java.lang.String)
+
+protected void appendQuotedString(
+byte[])
+
+protected void appendShortInteger(
+int)
+
+protected void appendShortLength(
+int)
+
+protected void appendTextString(
+java.lang.String)
+
+protected void appendTextString(
+byte[])
+
+protected void appendUintvarInteger(
+long)
+
+protected void appendValueLength(
+long)
+
+protected void arraycopy(
+byte[]
+int
+int)
+
+public byte[] make()
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.PduContentTypes extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final java.lang.String[] contentTypes
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.PduHeaders extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ADAPTATION_ALLOWED
+
+public static final int ADDITIONAL_HEADERS
+
+public static final int APPLIC_ID
+
+public static final int ATTRIBUTES
+
+public static final int AUX_APPLIC_ID
+
+public static final int BCC
+
+public static final int CANCEL_ID
+
+public static final int CANCEL_STATUS
+
+public static final int CANCEL_STATUS_REQUEST_CORRUPTED
+
+public static final int CANCEL_STATUS_REQUEST_SUCCESSFULLY_RECEIVED
+
+public static final int CC
+
+public static final int CONTENT
+
+public static final int CONTENT_CLASS
+
+public static final int CONTENT_CLASS_CONTENT_BASIC
+
+public static final int CONTENT_CLASS_CONTENT_RICH
+
+public static final int CONTENT_CLASS_IMAGE_BASIC
+
+public static final int CONTENT_CLASS_IMAGE_RICH
+
+public static final int CONTENT_CLASS_MEGAPIXEL
+
+public static final int CONTENT_CLASS_TEXT
+
+public static final int CONTENT_CLASS_VIDEO_BASIC
+
+public static final int CONTENT_CLASS_VIDEO_RICH
+
+public static final int CONTENT_LOCATION
+
+public static final int CONTENT_TYPE
+
+public static final int DATE
+
+public static final int DELIVERY_REPORT
+
+public static final int DELIVERY_TIME
+
+public static final int DISTRIBUTION_INDICATOR
+
+public static final int DRM_CONTENT
+
+public static final int ELEMENT_DESCRIPTOR
+
+public static final int EXPIRY
+
+public static final int FROM
+
+public static final int FROM_ADDRESS_PRESENT_TOKEN
+
+public static final java.lang.String FROM_ADDRESS_PRESENT_TOKEN_STR
+
+public static final int FROM_INSERT_ADDRESS_TOKEN
+
+public static final java.lang.String FROM_INSERT_ADDRESS_TOKEN_STR
+
+public static final int LIMIT
+
+public static final int MBOX_QUOTAS
+
+public static final int MBOX_TOTALS
+
+public static final int MESSAGE_CLASS
+
+public static final int MESSAGE_CLASS_ADVERTISEMENT
+
+public static final java.lang.String MESSAGE_CLASS_ADVERTISEMENT_STR
+
+public static final int MESSAGE_CLASS_AUTO
+
+public static final java.lang.String MESSAGE_CLASS_AUTO_STR
+
+public static final int MESSAGE_CLASS_INFORMATIONAL
+
+public static final java.lang.String MESSAGE_CLASS_INFORMATIONAL_STR
+
+public static final int MESSAGE_CLASS_PERSONAL
+
+public static final java.lang.String MESSAGE_CLASS_PERSONAL_STR
+
+public static final int MESSAGE_COUNT
+
+public static final int MESSAGE_ID
+
+public static final int MESSAGE_SIZE
+
+public static final int MESSAGE_TYPE
+
+public static final int MESSAGE_TYPE_ACKNOWLEDGE_IND
+
+public static final int MESSAGE_TYPE_CANCEL_CONF
+
+public static final int MESSAGE_TYPE_CANCEL_REQ
+
+public static final int MESSAGE_TYPE_DELETE_CONF
+
+public static final int MESSAGE_TYPE_DELETE_REQ
+
+public static final int MESSAGE_TYPE_DELIVERY_IND
+
+public static final int MESSAGE_TYPE_FORWARD_CONF
+
+public static final int MESSAGE_TYPE_FORWARD_REQ
+
+public static final int MESSAGE_TYPE_MBOX_DELETE_CONF
+
+public static final int MESSAGE_TYPE_MBOX_DELETE_REQ
+
+public static final int MESSAGE_TYPE_MBOX_DESCR
+
+public static final int MESSAGE_TYPE_MBOX_STORE_CONF
+
+public static final int MESSAGE_TYPE_MBOX_STORE_REQ
+
+public static final int MESSAGE_TYPE_MBOX_UPLOAD_CONF
+
+public static final int MESSAGE_TYPE_MBOX_UPLOAD_REQ
+
+public static final int MESSAGE_TYPE_MBOX_VIEW_CONF
+
+public static final int MESSAGE_TYPE_MBOX_VIEW_REQ
+
+public static final int MESSAGE_TYPE_NOTIFICATION_IND
+
+public static final int MESSAGE_TYPE_NOTIFYRESP_IND
+
+public static final int MESSAGE_TYPE_READ_ORIG_IND
+
+public static final int MESSAGE_TYPE_READ_REC_IND
+
+public static final int MESSAGE_TYPE_RETRIEVE_CONF
+
+public static final int MESSAGE_TYPE_SEND_CONF
+
+public static final int MESSAGE_TYPE_SEND_REQ
+
+public static final int MMS_VERSION
+
+public static final int MMS_VERSION_1_0
+
+public static final int MMS_VERSION_1_1
+
+public static final int MMS_VERSION_1_2
+
+public static final int MMS_VERSION_1_3
+
+public static final int MM_FLAGS
+
+public static final int MM_FLAGS_ADD_TOKEN
+
+public static final int MM_FLAGS_FILTER_TOKEN
+
+public static final int MM_FLAGS_REMOVE_TOKEN
+
+public static final int MM_STATE
+
+public static final int MM_STATE_DRAFT
+
+public static final int MM_STATE_FORWARDED
+
+public static final int MM_STATE_NEW
+
+public static final int MM_STATE_RETRIEVED
+
+public static final int MM_STATE_SENT
+
+public static final int PREVIOUSLY_SENT_BY
+
+public static final int PREVIOUSLY_SENT_DATE
+
+public static final int PRIORITY
+
+public static final int PRIORITY_HIGH
+
+public static final int PRIORITY_LOW
+
+public static final int PRIORITY_NORMAL
+
+public static final int QUOTAS
+
+public static final int READ_REPLY
+
+public static final int READ_REPORT
+
+public static final int READ_STATUS
+
+public static final int READ_STATUS_READ
+
+public static final int READ_STATUS__DELETED_WITHOUT_BEING_READ
+
+public static final int RECOMMENDED_RETRIEVAL_MODE
+
+public static final int RECOMMENDED_RETRIEVAL_MODE_MANUAL
+
+public static final int RECOMMENDED_RETRIEVAL_MODE_TEXT
+
+public static final int REPLACE_ID
+
+public static final int REPLY_APPLIC_ID
+
+public static final int REPLY_CHARGING
+
+public static final int REPLY_CHARGING_ACCEPTED
+
+public static final int REPLY_CHARGING_ACCEPTED_TEXT_ONLY
+
+public static final int REPLY_CHARGING_DEADLINE
+
+public static final int REPLY_CHARGING_ID
+
+public static final int REPLY_CHARGING_REQUESTED
+
+public static final int REPLY_CHARGING_REQUESTED_TEXT_ONLY
+
+public static final int REPLY_CHARGING_SIZE
+
+public static final int REPORT_ALLOWED
+
+public static final int RESPONSE_STATUS
+
+public static final int RESPONSE_STATUS_ERROR_CONTENT_NOT_ACCEPTED
+
+public static final int RESPONSE_STATUS_ERROR_MESSAGE_FORMAT_CORRUPT
+
+public static final int RESPONSE_STATUS_ERROR_MESSAGE_NOT_FOUND
+
+public static final int RESPONSE_STATUS_ERROR_NETWORK_PROBLEM
+
+public static final int RESPONSE_STATUS_ERROR_PERMANENT_ADDRESS_HIDING_NOT_SUPPORTED
+
+public static final int RESPONSE_STATUS_ERROR_PERMANENT_CONTENT_NOT_ACCEPTED
+
+public static final int RESPONSE_STATUS_ERROR_PERMANENT_END
+
+public static final int RESPONSE_STATUS_ERROR_PERMANENT_FAILURE
+
+public static final int RESPONSE_STATUS_ERROR_PERMANENT_LACK_OF_PREPAID
+
+public static final int RESPONSE_STATUS_ERROR_PERMANENT_MESSAGE_FORMAT_CORRUPT
+
+public static final int RESPONSE_STATUS_ERROR_PERMANENT_MESSAGE_NOT_FOUND
+
+public static final int RESPONSE_STATUS_ERROR_PERMANENT_REPLY_CHARGING_FORWARDING_DENIED
+
+public static final int RESPONSE_STATUS_ERROR_PERMANENT_REPLY_CHARGING_LIMITATIONS_NOT_MET
+
+public static final int RESPONSE_STATUS_ERROR_PERMANENT_REPLY_CHARGING_NOT_SUPPORTED
+
+public static final int RESPONSE_STATUS_ERROR_PERMANENT_REPLY_CHARGING_REQUEST_NOT_ACCEPTED
+
+public static final int RESPONSE_STATUS_ERROR_PERMANENT_SENDING_ADDRESS_UNRESOLVED
+
+public static final int RESPONSE_STATUS_ERROR_PERMANENT_SERVICE_DENIED
+
+public static final int RESPONSE_STATUS_ERROR_SENDING_ADDRESS_UNRESOLVED
+
+public static final int RESPONSE_STATUS_ERROR_SERVICE_DENIED
+
+public static final int RESPONSE_STATUS_ERROR_TRANSIENT_FAILURE
+
+public static final int RESPONSE_STATUS_ERROR_TRANSIENT_MESSAGE_NOT_FOUND
+
+public static final int RESPONSE_STATUS_ERROR_TRANSIENT_NETWORK_PROBLEM
+
+public static final int RESPONSE_STATUS_ERROR_TRANSIENT_PARTIAL_SUCCESS
+
+public static final int RESPONSE_STATUS_ERROR_TRANSIENT_SENDNG_ADDRESS_UNRESOLVED
+
+public static final int RESPONSE_STATUS_ERROR_UNSPECIFIED
+
+public static final int RESPONSE_STATUS_ERROR_UNSUPPORTED_MESSAGE
+
+public static final int RESPONSE_STATUS_OK
+
+public static final int RESPONSE_TEXT
+
+public static final int RETRIEVE_STATUS
+
+public static final int RETRIEVE_STATUS_ERROR_END
+
+public static final int RETRIEVE_STATUS_ERROR_PERMANENT_CONTENT_UNSUPPORTED
+
+public static final int RETRIEVE_STATUS_ERROR_PERMANENT_FAILURE
+
+public static final int RETRIEVE_STATUS_ERROR_PERMANENT_MESSAGE_NOT_FOUND
+
+public static final int RETRIEVE_STATUS_ERROR_PERMANENT_SERVICE_DENIED
+
+public static final int RETRIEVE_STATUS_ERROR_TRANSIENT_FAILURE
+
+public static final int RETRIEVE_STATUS_ERROR_TRANSIENT_MESSAGE_NOT_FOUND
+
+public static final int RETRIEVE_STATUS_ERROR_TRANSIENT_NETWORK_PROBLEM
+
+public static final int RETRIEVE_STATUS_OK
+
+public static final int RETRIEVE_TEXT
+
+public static final int SENDER_VISIBILITY
+
+public static final int SENDER_VISIBILITY_HIDE
+
+public static final int SENDER_VISIBILITY_SHOW
+
+public static final int START
+
+public static final int STATUS
+
+public static final int STATUS_DEFERRED
+
+public static final int STATUS_EXPIRED
+
+public static final int STATUS_FORWARDED
+
+public static final int STATUS_INDETERMINATE
+
+public static final int STATUS_REJECTED
+
+public static final int STATUS_RETRIEVED
+
+public static final int STATUS_TEXT
+
+public static final int STATUS_UNREACHABLE
+
+public static final int STATUS_UNRECOGNIZED
+
+public static final int STORE
+
+public static final int STORED
+
+public static final int STORE_STATUS
+
+public static final int STORE_STATUS_ERROR_END
+
+public static final int STORE_STATUS_ERROR_PERMANENT_FAILURE
+
+public static final int STORE_STATUS_ERROR_PERMANENT_MESSAGE_FORMAT_CORRUPT
+
+public static final int STORE_STATUS_ERROR_PERMANENT_MESSAGE_NOT_FOUND
+
+public static final int STORE_STATUS_ERROR_PERMANENT_MMBOX_FULL
+
+public static final int STORE_STATUS_ERROR_PERMANENT_SERVICE_DENIED
+
+public static final int STORE_STATUS_ERROR_TRANSIENT_FAILURE
+
+public static final int STORE_STATUS_ERROR_TRANSIENT_NETWORK_PROBLEM
+
+public static final int STORE_STATUS_SUCCESS
+
+public static final int STORE_STATUS_TEXT
+
+public static final int SUBJECT
+
+public static final int TO
+
+public static final int TOTALS
+
+public static final int TRANSACTION_ID
+
+public static final int VALUE_ABSOLUTE_TOKEN
+
+public static final int VALUE_NO
+
+public static final int VALUE_RELATIVE_TOKEN
+
+public static final int VALUE_YES
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/Object;>; )
+private java.util.HashMap mHeaderMap
+----------------METHODS----------------
+
+public void <init>()
+
+protected void appendEncodedStringValue(
+com.google.android.mms.pdu.EncodedStringValue
+int)
+
+protected com.google.android.mms.pdu.EncodedStringValue getEncodedStringValue(
+int)
+
+protected com.google.android.mms.pdu.EncodedStringValue[] getEncodedStringValues(
+int)
+
+protected long getLongInteger(
+int)
+
+protected int getOctet(
+int)
+
+protected byte[] getTextString(
+int)
+
+protected void setEncodedStringValue(
+com.google.android.mms.pdu.EncodedStringValue
+int)
+
+protected void setEncodedStringValues(
+com.google.android.mms.pdu.EncodedStringValue[]
+int)
+
+protected void setLongInteger(
+long
+int)
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+protected void setOctet(
+int
+int)
+
+protected void setTextString(
+byte[]
+int)
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.PduParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private static final boolean DEBUG
+
+private static final int END_STRING_FLAG
+
+private static final int LENGTH_QUOTE
+
+private static final boolean LOCAL_LOGV
+
+private static final java.lang.String LOG_TAG
+
+private static final int LONG_INTEGER_LENGTH_MAX
+
+private static final int QUOTE
+
+private static final int QUOTED_STRING_FLAG
+
+private static final int SHORT_INTEGER_MAX
+
+private static final int SHORT_LENGTH_MAX
+
+private static final int TEXT_MAX
+
+private static final int TEXT_MIN
+
+private static final int THE_FIRST_PART
+
+private static final int THE_LAST_PART
+
+private static final int TYPE_QUOTED_STRING
+
+private static final int TYPE_TEXT_STRING
+
+private static final int TYPE_TOKEN_STRING
+
+private static byte[] mStartParam
+
+private static byte[] mTypeParam
+
+private com.google.android.mms.pdu.PduBody mBody
+
+private com.google.android.mms.pdu.PduHeaders mHeaders
+
+private java.io.ByteArrayInputStream mPduDataStream
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+byte[])
+
+protected static boolean checkMandatoryHeader(
+com.google.android.mms.pdu.PduHeaders)
+
+private static int checkPartPosition(
+com.google.android.mms.pdu.PduPart)
+
+protected static int extractByteValue(
+java.io.ByteArrayInputStream)
+
+protected static byte[] getWapString(
+java.io.ByteArrayInputStream
+int)
+
+protected static boolean isText(
+int)
+
+protected static boolean isTokenCharacter(
+int)
+
+private static void log(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/io/ByteArrayInputStream;Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/Object;>;)[B )
+protected static byte[] parseContentType(
+java.io.ByteArrayInputStream
+java.util.HashMap)
+@dalvik.annotation.Signature (value =(Ljava/io/ByteArrayInputStream;Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/Object;>;Ljava/lang/Integer;)V )
+protected static void parseContentTypeParams(
+java.io.ByteArrayInputStream
+java.util.HashMap
+java.lang.Integer)
+
+protected static com.google.android.mms.pdu.EncodedStringValue parseEncodedStringValue(
+java.io.ByteArrayInputStream)
+
+protected static long parseIntegerValue(
+java.io.ByteArrayInputStream)
+
+protected static long parseLongInteger(
+java.io.ByteArrayInputStream)
+
+protected static boolean parsePartHeaders(
+java.io.ByteArrayInputStream
+com.google.android.mms.pdu.PduPart
+int)
+
+protected static com.google.android.mms.pdu.PduBody parseParts(
+java.io.ByteArrayInputStream)
+
+protected static int parseShortInteger(
+java.io.ByteArrayInputStream)
+
+protected static int parseUnsignedInt(
+java.io.ByteArrayInputStream)
+
+protected static int parseValueLength(
+java.io.ByteArrayInputStream)
+
+protected static byte[] parseWapString(
+java.io.ByteArrayInputStream
+int)
+
+protected static int skipWapValue(
+java.io.ByteArrayInputStream
+int)
+
+public com.google.android.mms.pdu.GenericPdu parse()
+
+protected com.google.android.mms.pdu.PduHeaders parseHeaders(
+java.io.ByteArrayInputStream)
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.PduPart extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_TRANSFER_ENCODING
+
+static final byte[] DISPOSITION_ATTACHMENT
+
+static final byte[] DISPOSITION_FROM_DATA
+
+static final byte[] DISPOSITION_INLINE
+
+public static final java.lang.String P_7BIT
+
+public static final java.lang.String P_8BIT
+
+public static final java.lang.String P_BASE64
+
+public static final java.lang.String P_BINARY
+
+public static final int P_CHARSET
+
+public static final int P_COMMENT
+
+public static final int P_CONTENT_DISPOSITION
+
+public static final int P_CONTENT_ID
+
+public static final int P_CONTENT_LOCATION
+
+public static final int P_CONTENT_TRANSFER_ENCODING
+
+public static final int P_CONTENT_TYPE
+
+public static final int P_CREATION_DATE
+
+public static final int P_CT_MR_TYPE
+
+public static final int P_DEP_COMMENT
+
+public static final int P_DEP_CONTENT_DISPOSITION
+
+public static final int P_DEP_DOMAIN
+
+public static final int P_DEP_FILENAME
+
+public static final int P_DEP_NAME
+
+public static final int P_DEP_PATH
+
+public static final int P_DEP_START
+
+public static final int P_DEP_START_INFO
+
+public static final int P_DIFFERENCES
+
+public static final int P_DISPOSITION_ATTACHMENT
+
+public static final int P_DISPOSITION_FROM_DATA
+
+public static final int P_DISPOSITION_INLINE
+
+public static final int P_DOMAIN
+
+public static final int P_FILENAME
+
+public static final int P_LEVEL
+
+public static final int P_MAC
+
+public static final int P_MAX_AGE
+
+public static final int P_MODIFICATION_DATE
+
+public static final int P_NAME
+
+public static final int P_PADDING
+
+public static final int P_PATH
+
+public static final int P_Q
+
+public static final java.lang.String P_QUOTED_PRINTABLE
+
+public static final int P_READ_DATE
+
+public static final int P_SEC
+
+public static final int P_SECURE
+
+public static final int P_SIZE
+
+public static final int P_START
+
+public static final int P_START_INFO
+
+public static final int P_TYPE
+
+private static final java.lang.String TAG
+
+private byte[] mPartData
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/Integer;Ljava/lang/Object;>; )
+private java.util.Map mPartHeader
+
+private android.net.Uri mUri
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public java.lang.String generateLocation()
+
+public int getCharset()
+
+public byte[] getContentDisposition()
+
+public byte[] getContentId()
+
+public byte[] getContentLocation()
+
+public byte[] getContentTransferEncoding()
+
+public byte[] getContentType()
+
+public byte[] getData()
+
+public android.net.Uri getDataUri()
+
+public byte[] getFilename()
+
+public byte[] getName()
+
+public void setCharset(
+int)
+
+public void setContentDisposition(
+byte[])
+
+public void setContentId(
+byte[])
+
+public void setContentLocation(
+byte[])
+
+public void setContentTransferEncoding(
+byte[])
+
+public void setContentType(
+byte[])
+
+public void setData(
+byte[])
+
+public void setDataUri(
+android.net.Uri)
+
+public void setFilename(
+byte[])
+
+public void setName(
+byte[])
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.PduPersister extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int[] ADDRESS_FIELDS
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/Integer;>; )
+private static final java.util.HashMap CHARSET_COLUMN_INDEX_MAP
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/String;>; )
+private static final java.util.HashMap CHARSET_COLUMN_NAME_MAP
+
+private static final boolean DEBUG
+
+private static final long DUMMY_THREAD_ID
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/Integer;>; )
+private static final java.util.HashMap ENCODED_STRING_COLUMN_INDEX_MAP
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/String;>; )
+private static final java.util.HashMap ENCODED_STRING_COLUMN_NAME_MAP
+
+private static final boolean LOCAL_LOGV
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/Integer;>; )
+private static final java.util.HashMap LONG_COLUMN_INDEX_MAP
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/String;>; )
+private static final java.util.HashMap LONG_COLUMN_NAME_MAP
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Landroid/net/Uri;Ljava/lang/Integer;>; )
+private static final java.util.HashMap MESSAGE_BOX_MAP
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/Integer;>; )
+private static final java.util.HashMap OCTET_COLUMN_INDEX_MAP
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/String;>; )
+private static final java.util.HashMap OCTET_COLUMN_NAME_MAP
+
+private static final int PART_COLUMN_CHARSET
+
+private static final int PART_COLUMN_CONTENT_DISPOSITION
+
+private static final int PART_COLUMN_CONTENT_ID
+
+private static final int PART_COLUMN_CONTENT_LOCATION
+
+private static final int PART_COLUMN_CONTENT_TYPE
+
+private static final int PART_COLUMN_FILENAME
+
+private static final int PART_COLUMN_ID
+
+private static final int PART_COLUMN_NAME
+
+private static final java.lang.String[] PART_PROJECTION
+
+private static final com.google.android.mms.util.PduCache PDU_CACHE_INSTANCE
+
+private static final int PDU_COLUMN_CONTENT_CLASS
+
+private static final int PDU_COLUMN_CONTENT_LOCATION
+
+private static final int PDU_COLUMN_CONTENT_TYPE
+
+private static final int PDU_COLUMN_DATE
+
+private static final int PDU_COLUMN_DELIVERY_REPORT
+
+private static final int PDU_COLUMN_DELIVERY_TIME
+
+private static final int PDU_COLUMN_EXPIRY
+
+private static final int PDU_COLUMN_ID
+
+private static final int PDU_COLUMN_MESSAGE_BOX
+
+private static final int PDU_COLUMN_MESSAGE_CLASS
+
+private static final int PDU_COLUMN_MESSAGE_ID
+
+private static final int PDU_COLUMN_MESSAGE_SIZE
+
+private static final int PDU_COLUMN_MESSAGE_TYPE
+
+private static final int PDU_COLUMN_MMS_VERSION
+
+private static final int PDU_COLUMN_PRIORITY
+
+private static final int PDU_COLUMN_READ_REPORT
+
+private static final int PDU_COLUMN_READ_STATUS
+
+private static final int PDU_COLUMN_REPORT_ALLOWED
+
+private static final int PDU_COLUMN_RESPONSE_TEXT
+
+private static final int PDU_COLUMN_RETRIEVE_STATUS
+
+private static final int PDU_COLUMN_RETRIEVE_TEXT
+
+private static final int PDU_COLUMN_RETRIEVE_TEXT_CHARSET
+
+private static final int PDU_COLUMN_STATUS
+
+private static final int PDU_COLUMN_SUBJECT
+
+private static final int PDU_COLUMN_SUBJECT_CHARSET
+
+private static final int PDU_COLUMN_THREAD_ID
+
+private static final int PDU_COLUMN_TRANSACTION_ID
+
+private static final java.lang.String[] PDU_PROJECTION
+
+public static final int PROC_STATUS_COMPLETED
+
+public static final int PROC_STATUS_PERMANENTLY_FAILURE
+
+public static final int PROC_STATUS_TRANSIENT_FAILURE
+
+private static final java.lang.String TAG
+
+public static final java.lang.String TEMPORARY_DRM_OBJECT_URI
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/Integer;>; )
+private static final java.util.HashMap TEXT_STRING_COLUMN_INDEX_MAP
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/String;>; )
+private static final java.util.HashMap TEXT_STRING_COLUMN_NAME_MAP
+
+private static com.google.android.mms.pdu.PduPersister sPersister
+
+private final android.content.ContentResolver mContentResolver
+
+private final android.content.Context mContext
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+android.content.Context)
+
+private byte[] getByteArrayFromPartColumn(
+android.database.Cursor
+int)
+
+public static byte[] getBytes(
+java.lang.String)
+
+private java.lang.Integer getIntegerFromPartColumn(
+android.database.Cursor
+int)
+
+public static com.google.android.mms.pdu.PduPersister getPduPersister(
+android.content.Context)
+
+private void loadAddress(
+long
+com.google.android.mms.pdu.PduHeaders)
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/MmsException; )
+private com.google.android.mms.pdu.PduPart[] loadParts(
+long)
+
+private void persistAddress(
+long
+int
+com.google.android.mms.pdu.EncodedStringValue[])
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/MmsException; )
+private void persistData(
+com.google.android.mms.pdu.PduPart
+android.net.Uri
+java.lang.String)
+
+private void setEncodedStringValueToHeaders(
+android.database.Cursor
+int
+com.google.android.mms.pdu.PduHeaders
+int)
+
+private void setLongToHeaders(
+android.database.Cursor
+int
+com.google.android.mms.pdu.PduHeaders
+int)
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+private void setOctetToHeaders(
+android.database.Cursor
+int
+com.google.android.mms.pdu.PduHeaders
+int)
+
+private void setTextStringToHeaders(
+android.database.Cursor
+int
+com.google.android.mms.pdu.PduHeaders
+int)
+
+public static java.lang.String toIsoString(
+byte[])
+
+private void updateAddress(
+long
+int
+com.google.android.mms.pdu.EncodedStringValue[])
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/MmsException; )
+private void updatePart(
+android.net.Uri
+com.google.android.mms.pdu.PduPart)
+
+public android.database.Cursor getPendingMessages(
+long)
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/MmsException; )
+public com.google.android.mms.pdu.GenericPdu load(
+android.net.Uri)
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/MmsException; )
+public android.net.Uri move(
+android.net.Uri
+android.net.Uri)
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/MmsException; )
+public android.net.Uri persist(
+com.google.android.mms.pdu.GenericPdu
+android.net.Uri)
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/MmsException; )
+public android.net.Uri persistPart(
+com.google.android.mms.pdu.PduPart
+long)
+
+public void release()
+
+public void updateHeaders(
+android.net.Uri
+com.google.android.mms.pdu.SendReq)
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/MmsException; )
+public void updateParts(
+android.net.Uri
+com.google.android.mms.pdu.PduBody)
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.QuotedPrintable extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static byte ESCAPE_CHAR
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static final byte[] decodeQuotedPrintable(
+byte[])
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.ReadOrigInd extends com.google.android.mms.pdu.GenericPdu
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void <init>()
+
+ void <init>(
+com.google.android.mms.pdu.PduHeaders)
+
+public long getDate()
+
+public com.google.android.mms.pdu.EncodedStringValue getFrom()
+
+public byte[] getMessageId()
+
+public int getReadStatus()
+
+public com.google.android.mms.pdu.EncodedStringValue[] getTo()
+
+public void setDate(
+long)
+
+public void setFrom(
+com.google.android.mms.pdu.EncodedStringValue)
+
+public void setMessageId(
+byte[])
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void setReadStatus(
+int)
+
+public void setTo(
+com.google.android.mms.pdu.EncodedStringValue[])
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.ReadRecInd extends com.google.android.mms.pdu.GenericPdu
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void <init>(
+com.google.android.mms.pdu.EncodedStringValue
+byte[]
+int
+int
+com.google.android.mms.pdu.EncodedStringValue[])
+
+ void <init>(
+com.google.android.mms.pdu.PduHeaders)
+
+public long getDate()
+
+public com.google.android.mms.pdu.EncodedStringValue getFrom()
+
+public byte[] getMessageId()
+
+public int getReadStatus()
+
+public com.google.android.mms.pdu.EncodedStringValue[] getTo()
+
+public void setDate(
+long)
+
+public void setFrom(
+com.google.android.mms.pdu.EncodedStringValue)
+
+public void setMessageId(
+byte[])
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void setReadStatus(
+int)
+
+public void setTo(
+com.google.android.mms.pdu.EncodedStringValue[])
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.RetrieveConf extends com.google.android.mms.pdu.MultimediaMessagePdu
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void <init>()
+
+ void <init>(
+com.google.android.mms.pdu.PduHeaders)
+
+ void <init>(
+com.google.android.mms.pdu.PduHeaders
+com.google.android.mms.pdu.PduBody)
+
+public void addCc(
+com.google.android.mms.pdu.EncodedStringValue)
+
+public com.google.android.mms.pdu.EncodedStringValue[] getCc()
+
+public byte[] getContentType()
+
+public int getDeliveryReport()
+
+public com.google.android.mms.pdu.EncodedStringValue getFrom()
+
+public byte[] getMessageClass()
+
+public byte[] getMessageId()
+
+public int getReadReport()
+
+public int getRetrieveStatus()
+
+public com.google.android.mms.pdu.EncodedStringValue getRetrieveText()
+
+public byte[] getTransactionId()
+
+public void setContentType(
+byte[])
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void setDeliveryReport(
+int)
+
+public void setFrom(
+com.google.android.mms.pdu.EncodedStringValue)
+
+public void setMessageClass(
+byte[])
+
+public void setMessageId(
+byte[])
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void setReadReport(
+int)
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void setRetrieveStatus(
+int)
+
+public void setRetrieveText(
+com.google.android.mms.pdu.EncodedStringValue)
+
+public void setTransactionId(
+byte[])
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.SendConf extends com.google.android.mms.pdu.GenericPdu
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void <init>()
+
+ void <init>(
+com.google.android.mms.pdu.PduHeaders)
+
+public byte[] getMessageId()
+
+public int getResponseStatus()
+
+public byte[] getTransactionId()
+
+public void setMessageId(
+byte[])
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void setResponseStatus(
+int)
+
+public void setTransactionId(
+byte[])
+
+________________CLASS________________
+
+
+public class com.google.android.mms.pdu.SendReq extends com.google.android.mms.pdu.MultimediaMessagePdu
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+public void <init>()
+
+ void <init>(
+com.google.android.mms.pdu.PduHeaders)
+
+ void <init>(
+com.google.android.mms.pdu.PduHeaders
+com.google.android.mms.pdu.PduBody)
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void <init>(
+byte[]
+com.google.android.mms.pdu.EncodedStringValue
+int
+byte[])
+
+private byte[] generateTransactionId()
+
+public void addBcc(
+com.google.android.mms.pdu.EncodedStringValue)
+
+public void addCc(
+com.google.android.mms.pdu.EncodedStringValue)
+
+public com.google.android.mms.pdu.EncodedStringValue[] getBcc()
+
+public com.google.android.mms.pdu.EncodedStringValue[] getCc()
+
+public byte[] getContentType()
+
+public int getDeliveryReport()
+
+public long getExpiry()
+
+public com.google.android.mms.pdu.EncodedStringValue getFrom()
+
+public byte[] getMessageClass()
+
+public int getReadReport()
+
+public byte[] getTransactionId()
+
+public void setBcc(
+com.google.android.mms.pdu.EncodedStringValue[])
+
+public void setCc(
+com.google.android.mms.pdu.EncodedStringValue[])
+
+public void setContentType(
+byte[])
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void setDeliveryReport(
+int)
+
+public void setExpiry(
+long)
+
+public void setFrom(
+com.google.android.mms.pdu.EncodedStringValue)
+
+public void setMessageClass(
+byte[])
+@dalvik.annotation.Throws (value =Lcom/google/android/mms/InvalidHeaderValueException; )
+public void setReadReport(
+int)
+
+public void setTo(
+com.google.android.mms.pdu.EncodedStringValue[])
+
+public void setTransactionId(
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/mms/util/AbstractCache; )
+ class com.google.android.mms.util.AbstractCache$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =CacheEntry )
+@dalvik.annotation.Signature (value =<V:Ljava/lang/Object;>Ljava/lang/Object; )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/mms/util/AbstractCache; )
+ class com.google.android.mms.util.AbstractCache$CacheEntry extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int hit
+@dalvik.annotation.Signature (value =TV; )
+ java.lang.Object value
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+com.google.android.mms.util.AbstractCache$1)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object; )
+@dalvik.annotation.MemberClasses (value =Lcom/google/android/mms/util/AbstractCache$1;Lcom/google/android/mms/util/AbstractCache$CacheEntry; )
+public abstract class com.google.android.mms.util.AbstractCache extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG
+
+private static final boolean LOCAL_LOGV
+
+private static final int MAX_CACHED_ITEMS
+
+private static final java.lang.String TAG
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<TK;Lcom/google/android/mms/util/AbstractCache$CacheEntry<TV;>;>; )
+private final java.util.HashMap mCacheMap
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Signature (value =(TK;)TV; )
+public java.lang.Object get(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;)TV; )
+public java.lang.Object purge(
+java.lang.Object)
+
+public void purgeAll()
+@dalvik.annotation.Signature (value =(TK;TV;)Z )
+public boolean put(
+java.lang.Object
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Lcom/google/android/mms/util/AbstractCache<Landroid/net/Uri;Lcom/google/android/mms/util/PduCacheEntry;>; )
+public final class com.google.android.mms.util.PduCache extends com.google.android.mms.util.AbstractCache
+
+----------------FIELDS----------------
+
+private static final boolean DEBUG
+
+private static final boolean LOCAL_LOGV
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/Integer;>; )
+private static final java.util.HashMap MATCH_TO_MSGBOX_ID_MAP
+
+private static final int MMS_ALL
+
+private static final int MMS_ALL_ID
+
+private static final int MMS_CONVERSATION
+
+private static final int MMS_CONVERSATION_ID
+
+private static final int MMS_DRAFTS
+
+private static final int MMS_DRAFTS_ID
+
+private static final int MMS_INBOX
+
+private static final int MMS_INBOX_ID
+
+private static final int MMS_OUTBOX
+
+private static final int MMS_OUTBOX_ID
+
+private static final int MMS_SENT
+
+private static final int MMS_SENT_ID
+
+private static final java.lang.String TAG
+
+private static final android.content.UriMatcher URI_MATCHER
+
+private static com.google.android.mms.util.PduCache sInstance
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Ljava/util/HashSet<Landroid/net/Uri;>;>; )
+private final java.util.HashMap mMessageBoxes
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Long;Ljava/util/HashSet<Landroid/net/Uri;>;>; )
+private final java.util.HashMap mThreads
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static final com.google.android.mms.util.PduCache getInstance()
+
+private android.net.Uri normalizeKey(
+android.net.Uri)
+
+private void purgeByMessageBox(
+java.lang.Integer)
+
+private void purgeByThreadId(
+long)
+
+private com.google.android.mms.util.PduCacheEntry purgeSingleEntry(
+android.net.Uri)
+
+private void removeFromMessageBoxes(
+android.net.Uri
+com.google.android.mms.util.PduCacheEntry)
+
+private void removeFromThreads(
+android.net.Uri
+com.google.android.mms.util.PduCacheEntry)
+
+public com.google.android.mms.util.PduCacheEntry purge(
+android.net.Uri)
+
+public volatile java.lang.Object purge(
+java.lang.Object)
+
+public void purgeAll()
+
+public boolean put(
+android.net.Uri
+com.google.android.mms.util.PduCacheEntry)
+
+public volatile boolean put(
+java.lang.Object
+java.lang.Object)
+
+________________CLASS________________
+
+
+public final class com.google.android.mms.util.PduCacheEntry extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int mMessageBox
+
+private final com.google.android.mms.pdu.GenericPdu mPdu
+
+private final long mThreadId
+----------------METHODS----------------
+
+public void <init>(
+com.google.android.mms.pdu.GenericPdu
+int
+long)
+
+public int getMessageBox()
+
+public com.google.android.mms.pdu.GenericPdu getPdu()
+
+public long getThreadId()
+
+________________CLASS________________
+
+
+public final class com.google.android.mms.util.SqliteWrapper extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String SQLITE_EXCEPTION_DETAIL_MESSAGE
+
+private static final java.lang.String TAG
+----------------METHODS----------------
+
+private void <init>()
+
+public static void checkSQLiteException(
+android.content.Context
+android.database.sqlite.SQLiteException)
+
+public static int delete(
+android.content.Context
+android.content.ContentResolver
+android.net.Uri
+java.lang.String
+java.lang.String[])
+
+public static android.net.Uri insert(
+android.content.Context
+android.content.ContentResolver
+android.net.Uri
+android.content.ContentValues)
+
+private static boolean isLowMemory(
+android.content.Context)
+
+private static boolean isLowMemory(
+android.database.sqlite.SQLiteException)
+
+public static android.database.Cursor query(
+android.content.Context
+android.content.ContentResolver
+android.net.Uri
+java.lang.String[]
+java.lang.String
+java.lang.String[]
+java.lang.String)
+
+public static boolean requery(
+android.content.Context
+android.database.Cursor)
+
+public static int update(
+android.content.Context
+android.content.ContentResolver
+android.net.Uri
+android.content.ContentValues
+java.lang.String
+java.lang.String[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =BlockedRequestException )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/net/GoogleHttpClient; )
+public class com.google.android.net.GoogleHttpClient$BlockedRequestException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private final com.google.android.net.UrlRules$Rule mRule
+----------------METHODS----------------
+
+ void <init>(
+com.google.android.net.UrlRules$Rule)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/google/android/net/GoogleHttpClient$BlockedRequestException; )
+public class com.google.android.net.GoogleHttpClient extends java.lang.Object implements org.apache.http.client.HttpClient
+
+----------------FIELDS----------------
+
+private static final java.lang.String TAG
+
+private final android.net.http.AndroidHttpClient mClient
+
+private final android.content.ContentResolver mResolver
+
+private final java.lang.String mUserAgent
+----------------METHODS----------------
+
+public void <init>(
+android.content.ContentResolver
+java.lang.String)
+
+public static java.lang.String getGzipCapableUserAgent(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static org.apache.http.impl.client.RequestWrapper wrapRequest(
+org.apache.http.client.methods.HttpUriRequest)
+
+public void close()
+
+public void disableCurlLogging()
+
+public void enableCurlLogging(
+java.lang.String
+int)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler<+TT;>;)TT; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+public java.lang.Object execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.client.ResponseHandler)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler<+TT;>;Lorg/apache/http/protocol/HttpContext;)TT; )
+public java.lang.Object execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.client.ResponseHandler
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler<+TT;>;)TT; )
+public java.lang.Object execute(
+org.apache.http.client.methods.HttpUriRequest
+org.apache.http.client.ResponseHandler)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/client/ClientProtocolException; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler<+TT;>;Lorg/apache/http/protocol/HttpContext;)TT; )
+public java.lang.Object execute(
+org.apache.http.client.methods.HttpUriRequest
+org.apache.http.client.ResponseHandler
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.apache.http.HttpResponse execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.apache.http.HttpResponse execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.apache.http.HttpResponse execute(
+org.apache.http.client.methods.HttpUriRequest)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.apache.http.HttpResponse execute(
+org.apache.http.client.methods.HttpUriRequest
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.apache.http.HttpResponse executeWithoutRewriting(
+org.apache.http.client.methods.HttpUriRequest
+org.apache.http.protocol.HttpContext)
+
+public org.apache.http.conn.ClientConnectionManager getConnectionManager()
+
+public org.apache.http.params.HttpParams getParams()
+
+________________CLASS________________
+
+
+public class com.google.android.net.NetStats extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.lang.String TAG
+
+private static java.lang.String statsFile
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static long[] getStats()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Callback )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/net/ParentalControl; )
+public abstract interface class com.google.android.net.ParentalControl$Callback extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void onResult(
+com.google.android.net.ParentalControlState)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/net/ParentalControl; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =RemoteCallback )
+ class com.google.android.net.ParentalControl$RemoteCallback extends android.os.IParentalControlCallback$Stub
+
+----------------FIELDS----------------
+
+private com.google.android.net.ParentalControl$Callback mCallback
+----------------METHODS----------------
+
+public void <init>(
+com.google.android.net.ParentalControl$Callback)
+
+public void onResult(
+com.google.android.net.ParentalControlState)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/google/android/net/ParentalControl$RemoteCallback;Lcom/google/android/net/ParentalControl$Callback; )
+public class com.google.android.net.ParentalControl extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static void getParentalControlState(
+com.google.android.net.ParentalControl$Callback)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Lcom/google/android/net/ParentalControlState;>; )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/net/ParentalControlState; )
+final class com.google.android.net.ParentalControlState$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public com.google.android.net.ParentalControlState createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public com.google.android.net.ParentalControlState[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+
+public class com.google.android.net.ParentalControlState extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Lcom/google/android/net/ParentalControlState;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public boolean isEnabled
+
+public java.lang.String redirectUrl
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public int describeContents()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/net/UrlRules; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Rule )
+public class com.google.android.net.UrlRules$Rule extends java.lang.Object implements java.lang.Comparable
+
+----------------FIELDS----------------
+
+public static final com.google.android.net.UrlRules$Rule DEFAULT
+
+public final boolean mBlock
+
+public final java.lang.String mName
+
+public final java.lang.String mPrefix
+
+public final java.lang.String mRewrite
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Throws (value =Lcom/google/android/net/UrlRules$RuleFormatException; )
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public java.lang.String apply(
+java.lang.String)
+
+public int compareTo(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/net/UrlRules; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =RuleFormatException )
+public class com.google.android.net.UrlRules$RuleFormatException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/google/android/net/UrlRules$Rule;Lcom/google/android/net/UrlRules$RuleFormatException; )
+public class com.google.android.net.UrlRules extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.util.regex.Pattern PATTERN_SPACE_PLUS
+
+private static final java.util.regex.Pattern RULE_PATTERN
+
+private static java.lang.String sCachedDigest
+
+private static com.google.android.net.UrlRules sCachedRules
+
+private final java.util.regex.Pattern mPattern
+
+private final com.google.android.net.UrlRules$Rule[] mRules
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+com.google.android.net.UrlRules$Rule[])
+
+static java.util.regex.Pattern access$000()
+
+public static com.google.android.net.UrlRules getRules(
+android.content.ContentResolver)
+
+public com.google.android.net.UrlRules$Rule matchRule(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/providers/AbstractGDataSyncAdapter$GDataSyncData; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Lcom/google/android/providers/AbstractGDataSyncAdapter$GDataSyncData;>; )
+final class com.google.android.providers.AbstractGDataSyncAdapter$GDataSyncData$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public com.google.android.providers.AbstractGDataSyncAdapter$GDataSyncData createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public com.google.android.providers.AbstractGDataSyncAdapter$GDataSyncData[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Landroid/os/Parcelable$Creator<Lcom/google/android/providers/AbstractGDataSyncAdapter$GDataSyncData$FeedData;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/providers/AbstractGDataSyncAdapter$GDataSyncData$FeedData; )
+final class com.google.android.providers.AbstractGDataSyncAdapter$GDataSyncData$FeedData$1 extends java.lang.Object implements android.os.Parcelable$Creator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public com.google.android.providers.AbstractGDataSyncAdapter$GDataSyncData$FeedData createFromParcel(
+android.os.Parcel)
+
+public volatile java.lang.Object createFromParcel(
+android.os.Parcel)
+
+public com.google.android.providers.AbstractGDataSyncAdapter$GDataSyncData$FeedData[] newArray(
+int)
+
+public volatile java.lang.Object[] newArray(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/providers/AbstractGDataSyncAdapter$GDataSyncData; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =FeedData )
+public class com.google.android.providers.AbstractGDataSyncAdapter$GDataSyncData$FeedData extends java.lang.Object implements android.os.Parcelable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Lcom/google/android/providers/AbstractGDataSyncAdapter$GDataSyncData$FeedData;>; )
+public static final android.os.Parcelable$Creator CREATOR
+
+public int endIndex
+
+public boolean hasMoreEntriesToFetch
+
+public java.lang.String lastId
+
+public long lastUpdatedTime
+
+public long numEntriesFetched
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+long
+long
+boolean
+java.lang.String
+int)
+
+public int describeContents()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =GDataSyncData )
+@dalvik.annotation.MemberClasses (value =Lcom/google/android/providers/AbstractGDataSyncAdapter$GDataSyncData$FeedData; )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/providers/AbstractGDataSyncAdapter; )
+public class com.google.android.providers.AbstractGDataSyncAdapter$GDataSyncData extends android.content.TempProviderSyncAdapter$SyncData
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Landroid/os/Parcelable$Creator<Lcom/google/android/providers/AbstractGDataSyncAdapter$GDataSyncData;>; )
+public static final android.os.Parcelable$Creator CREATOR
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Lcom/google/android/providers/AbstractGDataSyncAdapter$GDataSyncData$FeedData;>; )
+public final java.util.Map feedData
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public int describeContents()
+
+public java.lang.String toString()
+
+public void writeToParcel(
+android.os.Parcel
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/google/android/providers/AbstractGDataSyncAdapter$GDataSyncData; )
+public abstract class com.google.android.providers.AbstractGDataSyncAdapter extends android.content.TempProviderSyncAdapter
+
+----------------FIELDS----------------
+
+public static final int ENTRY_DELETED
+
+public static final int ENTRY_INVALID
+
+public static final int ENTRY_OK
+
+private static final java.lang.String SCHEMA_HTTP
+
+private static final java.lang.String SCHEMA_HTTPS
+
+private static final android.net.Uri SYNC_STATE_CONTENT_URI
+
+protected static final java.lang.String TAG
+
+private java.lang.String mAccount
+
+private java.lang.String mAuthToken
+
+protected int mServerEntries
+
+protected int mServerQueries
+
+protected volatile boolean mSyncCanceled
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+android.content.Context
+android.content.SyncableContentProvider)
+
+public static byte[] newBytesFromGDataSyncData(
+com.google.android.providers.AbstractGDataSyncAdapter$GDataSyncData)
+
+public static com.google.android.providers.AbstractGDataSyncAdapter$GDataSyncData newGDataSyncDataFromBytes(
+byte[])
+
+public static java.lang.String rewriteUrlforAccount(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/google/wireless/gdata/parser/ParseException; )
+protected abstract java.lang.String cursorToEntry(
+android.content.SyncContext
+android.database.Cursor
+com.google.wireless.gdata.data.Entry
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lcom/google/wireless/gdata/parser/ParseException; )
+protected abstract void deletedCursorToEntry(
+android.content.SyncContext
+android.database.Cursor
+com.google.wireless.gdata.data.Entry)
+
+protected java.lang.String getAccount()
+
+protected java.lang.String getAuthToken()
+
+protected abstract android.database.Cursor getCursorForDeletedTable(
+android.content.ContentProvider
+java.lang.Class)
+
+protected abstract android.database.Cursor getCursorForTable(
+android.content.ContentProvider
+java.lang.Class)
+
+protected abstract java.lang.Class getFeedEntryClass()
+
+protected abstract java.lang.String getFeedUrl(
+java.lang.String)
+
+protected abstract com.google.wireless.gdata.client.GDataServiceClient getGDataServiceClient()
+
+public int getMaxEntriesPerSync()
+
+public void getServerDiffs(
+android.content.SyncContext
+android.content.TempProviderSyncAdapter$SyncData
+android.content.SyncableContentProvider
+android.os.Bundle
+java.lang.Object
+android.content.SyncResult)
+
+protected void getServerDiffsImpl(
+android.content.SyncContext
+android.content.SyncableContentProvider
+java.lang.Class
+java.lang.String
+java.lang.Object
+int
+com.google.android.providers.AbstractGDataSyncAdapter$GDataSyncData
+android.content.SyncResult)
+
+protected void getStatsString(
+java.lang.StringBuffer
+android.content.SyncResult)
+
+protected abstract boolean handleAllDeletedUnavailable(
+com.google.android.providers.AbstractGDataSyncAdapter$GDataSyncData
+java.lang.String)
+
+public boolean isReadOnly()
+
+protected void logSyncDetails(
+long
+long
+android.content.SyncResult)
+
+protected abstract com.google.wireless.gdata.data.Entry newEntry()
+
+public volatile android.content.TempProviderSyncAdapter$SyncData newSyncData()
+
+public com.google.android.providers.AbstractGDataSyncAdapter$GDataSyncData newSyncData()
+
+public void onSyncCanceled()
+
+public void onSyncEnding(
+android.content.SyncContext
+boolean)
+
+public void onSyncStarting(
+android.content.SyncContext
+java.lang.String
+boolean
+android.content.SyncResult)
+
+public volatile android.content.TempProviderSyncAdapter$SyncData readSyncData(
+android.content.SyncableContentProvider)
+
+public com.google.android.providers.AbstractGDataSyncAdapter$GDataSyncData readSyncData(
+android.content.SyncableContentProvider)
+
+public void sendClientDiffs(
+android.content.SyncContext
+android.content.SyncableContentProvider
+android.content.SyncableContentProvider
+android.content.SyncResult
+boolean)
+
+protected void sendClientDiffsImpl(
+android.content.SyncContext
+android.content.SyncableContentProvider
+com.google.wireless.gdata.data.Entry
+java.lang.Object
+android.content.SyncableContentProvider
+android.content.SyncResult
+boolean)
+
+protected void setAuthToken(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/google/wireless/gdata/parser/ParseException; )
+protected abstract void updateProvider(
+com.google.wireless.gdata.data.Feed
+long
+boolean
+com.google.wireless.gdata.data.Entry
+android.content.ContentProvider
+java.lang.Object)
+
+protected void updateQueryParameters(
+com.google.wireless.gdata.client.QueryParams)
+
+public void writeSyncData(
+android.content.TempProviderSyncAdapter$SyncData
+android.content.SyncableContentProvider)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/AbstractMessageParser; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class com.google.android.util.AbstractMessageParser$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$com$google$android$util$AbstractMessageParser$Token$Type
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/google/android/util/AbstractMessageParser$Token$Type; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Token )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/AbstractMessageParser; )
+public abstract class com.google.android.util.AbstractMessageParser$Token extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected java.lang.String text
+
+protected com.google.android.util.AbstractMessageParser$Token$Type type
+----------------METHODS----------------
+
+protected void <init>(
+com.google.android.util.AbstractMessageParser$Token$Type
+java.lang.String)
+
+public boolean controlCaps()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getInfo()
+
+public java.lang.String getRawText()
+
+public com.google.android.util.AbstractMessageParser$Token$Type getType()
+
+public boolean isArray()
+
+public abstract boolean isHtml()
+
+public boolean isMedia()
+
+public boolean setCaps()
+
+public java.lang.String toHtml(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Acronym )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/AbstractMessageParser; )
+public class com.google.android.util.AbstractMessageParser$Acronym extends com.google.android.util.AbstractMessageParser$Token
+
+----------------FIELDS----------------
+
+private java.lang.String value
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getInfo()
+
+public java.lang.String getValue()
+
+public boolean isHtml()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/AbstractMessageParser; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =FlickrPhoto )
+public class com.google.android.util.AbstractMessageParser$FlickrPhoto extends com.google.android.util.AbstractMessageParser$Token
+
+----------------FIELDS----------------
+
+private static final java.util.regex.Pattern GROUPING_PATTERN
+
+private static final java.lang.String SETS
+
+private static final java.lang.String TAGS
+
+private static final java.util.regex.Pattern URL_PATTERN
+
+private java.lang.String grouping
+
+private java.lang.String groupingId
+
+private java.lang.String photo
+
+private java.lang.String user
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public static java.lang.String getPhotoURL(
+java.lang.String
+java.lang.String)
+
+public static java.lang.String getRssUrl(
+java.lang.String)
+
+public static java.lang.String getTagsURL(
+java.lang.String)
+
+public static java.lang.String getUserSetsURL(
+java.lang.String
+java.lang.String)
+
+public static java.lang.String getUserTagsURL(
+java.lang.String
+java.lang.String)
+
+public static java.lang.String getUserURL(
+java.lang.String)
+
+public static com.google.android.util.AbstractMessageParser$FlickrPhoto matchURL(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getGrouping()
+
+public java.lang.String getGroupingId()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getInfo()
+
+public java.lang.String getPhoto()
+
+public java.lang.String getUrl()
+
+public java.lang.String getUser()
+
+public boolean isHtml()
+
+public boolean isMedia()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Format )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/AbstractMessageParser; )
+public class com.google.android.util.AbstractMessageParser$Format extends com.google.android.util.AbstractMessageParser$Token
+
+----------------FIELDS----------------
+
+private char ch
+
+private boolean matched
+
+private boolean start
+----------------METHODS----------------
+
+public void <init>(
+char
+boolean)
+
+private java.lang.String getFormatEnd(
+char)
+
+private java.lang.String getFormatStart(
+char)
+
+public boolean controlCaps()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getInfo()
+
+public boolean isHtml()
+
+public boolean setCaps()
+
+public void setMatched(
+boolean)
+
+public java.lang.String toHtml(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Html )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/AbstractMessageParser; )
+public class com.google.android.util.AbstractMessageParser$Html extends com.google.android.util.AbstractMessageParser$Token
+
+----------------FIELDS----------------
+
+private java.lang.String html
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+private static java.lang.String trimLeadingWhitespace(
+java.lang.String)
+
+public static java.lang.String trimTrailingWhitespace(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getInfo()
+
+public boolean isHtml()
+
+public java.lang.String toHtml(
+boolean)
+
+public void trimLeadingWhitespace()
+
+public void trimTrailingWhitespace()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Link )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/AbstractMessageParser; )
+public class com.google.android.util.AbstractMessageParser$Link extends com.google.android.util.AbstractMessageParser$Token
+
+----------------FIELDS----------------
+
+private java.lang.String url
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getInfo()
+
+public java.lang.String getURL()
+
+public boolean isHtml()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/AbstractMessageParser; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =MusicTrack )
+public class com.google.android.util.AbstractMessageParser$MusicTrack extends com.google.android.util.AbstractMessageParser$Token
+
+----------------FIELDS----------------
+
+private java.lang.String track
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getInfo()
+
+public java.lang.String getTrack()
+
+public boolean isHtml()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Part )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/AbstractMessageParser; )
+public class com.google.android.util.AbstractMessageParser$Part extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.String meText
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/google/android/util/AbstractMessageParser$Token;>; )
+private java.util.ArrayList tokens
+----------------METHODS----------------
+
+public void <init>()
+
+private java.lang.String getPartType()
+
+public void add(
+com.google.android.util.AbstractMessageParser$Token)
+
+public com.google.android.util.AbstractMessageParser$Token getMediaToken()
+
+public java.lang.String getRawText()
+@dalvik.annotation.Signature (value =()Ljava/util/ArrayList<Lcom/google/android/util/AbstractMessageParser$Token;>; )
+public java.util.ArrayList getTokens()
+
+public java.lang.String getType(
+boolean)
+
+public boolean isMedia()
+
+public void setMeText(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Photo )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/AbstractMessageParser; )
+public class com.google.android.util.AbstractMessageParser$Photo extends com.google.android.util.AbstractMessageParser$Token
+
+----------------FIELDS----------------
+
+private static final java.util.regex.Pattern URL_PATTERN
+
+private java.lang.String album
+
+private java.lang.String photo
+
+private java.lang.String user
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public static java.lang.String getAlbumURL(
+java.lang.String
+java.lang.String)
+
+public static java.lang.String getPhotoURL(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public static java.lang.String getRssUrl(
+java.lang.String)
+
+public static com.google.android.util.AbstractMessageParser$Photo matchURL(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getAlbum()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getInfo()
+
+public java.lang.String getPhoto()
+
+public java.lang.String getUser()
+
+public boolean isHtml()
+
+public boolean isMedia()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/AbstractMessageParser; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Resources )
+public abstract interface class com.google.android.util.AbstractMessageParser$Resources extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract com.google.android.util.AbstractMessageParser$TrieNode getAcronyms()
+
+public abstract com.google.android.util.AbstractMessageParser$TrieNode getDomainSuffixes()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public abstract java.util.Set getSchemes()
+
+public abstract com.google.android.util.AbstractMessageParser$TrieNode getSmileys()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Smiley )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/AbstractMessageParser; )
+public class com.google.android.util.AbstractMessageParser$Smiley extends com.google.android.util.AbstractMessageParser$Token
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getInfo()
+
+public boolean isHtml()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/AbstractMessageParser$Token; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Type )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/google/android/util/AbstractMessageParser$Token$Type;>; )
+public final class com.google.android.util.AbstractMessageParser$Token$Type extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.google.android.util.AbstractMessageParser$Token$Type[] $VALUES
+
+public static final com.google.android.util.AbstractMessageParser$Token$Type ACRONYM
+
+public static final com.google.android.util.AbstractMessageParser$Token$Type FLICKR
+
+public static final com.google.android.util.AbstractMessageParser$Token$Type FORMAT
+
+public static final com.google.android.util.AbstractMessageParser$Token$Type GOOGLE_VIDEO
+
+public static final com.google.android.util.AbstractMessageParser$Token$Type HTML
+
+public static final com.google.android.util.AbstractMessageParser$Token$Type LINK
+
+public static final com.google.android.util.AbstractMessageParser$Token$Type MUSIC
+
+public static final com.google.android.util.AbstractMessageParser$Token$Type PHOTO
+
+public static final com.google.android.util.AbstractMessageParser$Token$Type SMILEY
+
+public static final com.google.android.util.AbstractMessageParser$Token$Type YOUTUBE_VIDEO
+
+private java.lang.String stringRep
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)V )
+private void <init>(
+java.lang.String
+int
+java.lang.String)
+
+public static com.google.android.util.AbstractMessageParser$Token$Type valueOf(
+java.lang.String)
+
+public static com.google.android.util.AbstractMessageParser$Token$Type[] values()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/AbstractMessageParser; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =TrieNode )
+public class com.google.android.util.AbstractMessageParser$TrieNode extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Character;Lcom/google/android/util/AbstractMessageParser$TrieNode;>; )
+private final java.util.HashMap children
+
+private java.lang.String text
+
+private java.lang.String value
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public static void addToTrie(
+com.google.android.util.AbstractMessageParser$TrieNode
+java.lang.String
+java.lang.String)
+
+public final boolean exists()
+
+public com.google.android.util.AbstractMessageParser$TrieNode getChild(
+char)
+
+public com.google.android.util.AbstractMessageParser$TrieNode getOrCreateChild(
+char)
+
+public final java.lang.String getText()
+
+public final java.lang.String getValue()
+
+public void setValue(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/AbstractMessageParser; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Video )
+public class com.google.android.util.AbstractMessageParser$Video extends com.google.android.util.AbstractMessageParser$Token
+
+----------------FIELDS----------------
+
+private static final java.util.regex.Pattern URL_PATTERN
+
+private java.lang.String docid
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public static java.lang.String getRssUrl(
+java.lang.String)
+
+public static java.lang.String getURL(
+java.lang.String)
+
+public static java.lang.String getURL(
+java.lang.String
+java.lang.String)
+
+public static com.google.android.util.AbstractMessageParser$Video matchURL(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getDocID()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getInfo()
+
+public boolean isHtml()
+
+public boolean isMedia()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =YouTubeVideo )
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/AbstractMessageParser; )
+public class com.google.android.util.AbstractMessageParser$YouTubeVideo extends com.google.android.util.AbstractMessageParser$Token
+
+----------------FIELDS----------------
+
+private static final java.util.regex.Pattern URL_PATTERN
+
+private java.lang.String docid
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public static java.lang.String getPrefixedURL(
+boolean
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public static java.lang.String getRssUrl(
+java.lang.String)
+
+public static java.lang.String getURL(
+java.lang.String)
+
+public static java.lang.String getURL(
+java.lang.String
+java.lang.String)
+
+public static com.google.android.util.AbstractMessageParser$YouTubeVideo matchURL(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getDocID()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getInfo()
+
+public boolean isHtml()
+
+public boolean isMedia()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/google/android/util/AbstractMessageParser$1;Lcom/google/android/util/AbstractMessageParser$Part;Lcom/google/android/util/AbstractMessageParser$TrieNode;Lcom/google/android/util/AbstractMessageParser$Format;Lcom/google/android/util/AbstractMessageParser$Acronym;Lcom/google/android/util/AbstractMessageParser$Smiley;Lcom/google/android/util/AbstractMessageParser$FlickrPhoto;Lcom/google/android/util/AbstractMessageParser$Photo;Lcom/google/android/util/AbstractMessageParser$YouTubeVideo;Lcom/google/android/util/AbstractMessageParser$Video;Lcom/google/android/util/AbstractMessageParser$Link;Lcom/google/android/util/AbstractMessageParser$MusicTrack;Lcom/google/android/util/AbstractMessageParser$Html;Lcom/google/android/util/AbstractMessageParser$Token;Lcom/google/android/util/AbstractMessageParser$Resources; )
+public abstract class com.google.android.util.AbstractMessageParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String musicNote
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Character;Lcom/google/android/util/AbstractMessageParser$Format;>; )
+private java.util.HashMap formatStart
+
+private int nextChar
+
+private int nextClass
+
+private boolean parseAcronyms
+
+private boolean parseFormatting
+
+private boolean parseMeText
+
+private boolean parseMusic
+
+private boolean parseSmilies
+
+private boolean parseUrls
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/google/android/util/AbstractMessageParser$Part;>; )
+private java.util.ArrayList parts
+
+private java.lang.String text
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lcom/google/android/util/AbstractMessageParser$Token;>; )
+private java.util.ArrayList tokens
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+boolean
+boolean
+boolean
+boolean
+boolean
+boolean)
+
+private void addToken(
+com.google.android.util.AbstractMessageParser$Token)
+
+private void addURLToken(
+java.lang.String
+java.lang.String)
+
+private void buildParts(
+java.lang.String)
+
+private int getCharClass(
+int)
+
+private boolean isDomainChar(
+char)
+
+private static boolean isFormatChar(
+char)
+
+private static boolean isPunctuation(
+char)
+
+private static boolean isSmileyBreak(
+char
+char)
+
+private boolean isSmileyBreak(
+int)
+
+private boolean isURLBreak(
+int)
+
+private boolean isValidDomain(
+java.lang.String)
+
+private boolean isWordBreak(
+int)
+
+private com.google.android.util.AbstractMessageParser$Part lastPart()
+
+private static com.google.android.util.AbstractMessageParser$TrieNode longestMatch(
+com.google.android.util.AbstractMessageParser$TrieNode
+com.google.android.util.AbstractMessageParser
+int)
+
+private static com.google.android.util.AbstractMessageParser$TrieNode longestMatch(
+com.google.android.util.AbstractMessageParser$TrieNode
+com.google.android.util.AbstractMessageParser
+int
+boolean)
+
+private static boolean matches(
+com.google.android.util.AbstractMessageParser$TrieNode
+java.lang.String)
+
+private boolean parseAcronym()
+
+private boolean parseFormatting()
+
+private boolean parseMusicTrack()
+
+private boolean parseSmiley()
+
+private void parseText()
+
+private boolean parseURL()
+
+protected static java.lang.String reverse(
+java.lang.String)
+
+public static com.google.android.util.AbstractMessageParser$Token tokenForUrl(
+java.lang.String
+java.lang.String)
+
+public final com.google.android.util.AbstractMessageParser$Part getPart(
+int)
+
+public final int getPartCount()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Lcom/google/android/util/AbstractMessageParser$Part;>; )
+public final java.util.List getParts()
+
+public final java.lang.String getRawText()
+
+protected abstract com.google.android.util.AbstractMessageParser$Resources getResources()
+
+public void parse()
+
+public java.lang.String toHtml()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/GoogleWebContentHelper; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class com.google.android.util.GoogleWebContentHelper$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/GoogleWebContentHelper; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =MyWebViewClient )
+ class com.google.android.util.GoogleWebContentHelper$MyWebViewClient extends android.webkit.WebViewClient
+
+----------------FIELDS----------------
+
+final com.google.android.util.GoogleWebContentHelper this$0
+----------------METHODS----------------
+
+private void <init>(
+com.google.android.util.GoogleWebContentHelper)
+
+ void <init>(
+com.google.android.util.GoogleWebContentHelper
+com.google.android.util.GoogleWebContentHelper$1)
+
+public void onPageFinished(
+android.webkit.WebView
+java.lang.String)
+
+public void onReceivedError(
+android.webkit.WebView
+int
+java.lang.String
+java.lang.String)
+
+public void onReceivedHttpAuthRequest(
+android.webkit.WebView
+android.webkit.HttpAuthHandler
+java.lang.String
+java.lang.String)
+
+public void onReceivedSslError(
+android.webkit.WebView
+android.webkit.SslErrorHandler
+android.net.http.SslError)
+
+public void onTooManyRedirects(
+android.webkit.WebView
+android.os.Message
+android.os.Message)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/google/android/util/GoogleWebContentHelper$1;Lcom/google/android/util/GoogleWebContentHelper$MyWebViewClient; )
+public class com.google.android.util.GoogleWebContentHelper extends java.lang.Object
+
+----------------FIELDS----------------
+
+private android.content.Context mContext
+
+private android.view.ViewGroup mLayout
+
+private java.lang.String mPrettyUrl
+
+private android.view.View mProgressBar
+
+private boolean mReceivedResponse
+
+private java.lang.String mSecureUrl
+
+private android.widget.TextView mTextView
+
+private java.lang.String mUnsuccessfulMessage
+
+private android.webkit.WebView mWebView
+----------------METHODS----------------
+
+public void <init>(
+android.content.Context)
+
+static void access$100(
+com.google.android.util.GoogleWebContentHelper
+boolean)
+
+private void ensureViews()
+
+private static java.lang.String fillUrl(
+java.lang.String)
+
+private void handleWebViewCompletion(
+boolean)
+
+private void initializeViews()
+
+public android.view.ViewGroup getLayout()
+
+public com.google.android.util.GoogleWebContentHelper loadUrl()
+
+public com.google.android.util.GoogleWebContentHelper setUnsuccessfulMessage(
+java.lang.String)
+
+public com.google.android.util.GoogleWebContentHelper setUrlsFromGservices(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract interface class com.google.android.util.Procedure extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TT;)V )
+public abstract void apply(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/google/android/util/SimplePullParser; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =ParseException )
+public final class com.google.android.util.SimplePullParser$ParseException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/google/android/util/SimplePullParser$ParseException; )
+public class com.google.android.util.SimplePullParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String TEXT_TAG
+
+private java.lang.String mCurrentStartTag
+
+private java.lang.String mLogTag
+
+private final org.xmlpull.v1.XmlPullParser mParser
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lcom/google/android/util/SimplePullParser$ParseException;Ljava/io/IOException; )
+public void <init>(
+java.io.InputStream
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lcom/google/android/util/SimplePullParser$ParseException; )
+public void <init>(
+java.io.Reader)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lcom/google/android/util/SimplePullParser$ParseException; )
+public void <init>(
+java.lang.String)
+
+public void <init>(
+org.xmlpull.v1.XmlPullParser)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private static void moveToStartDocument(
+org.xmlpull.v1.XmlPullParser)
+
+public java.lang.String getAttributeName(
+int)
+
+public java.lang.String getAttributeNamespace(
+int)
+
+public int getDepth()
+@dalvik.annotation.Throws (value =Lcom/google/android/util/SimplePullParser$ParseException; )
+public int getIntAttribute(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/google/android/util/SimplePullParser$ParseException; )
+public int getIntAttribute(
+java.lang.String
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Lcom/google/android/util/SimplePullParser$ParseException; )
+public long getLongAttribute(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lcom/google/android/util/SimplePullParser$ParseException; )
+public long getLongAttribute(
+java.lang.String
+java.lang.String
+long)
+@dalvik.annotation.Throws (value =Lcom/google/android/util/SimplePullParser$ParseException; )
+public java.lang.String getStringAttribute(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getStringAttribute(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lcom/google/android/util/SimplePullParser$ParseException; )
+public java.lang.String nextTag(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lcom/google/android/util/SimplePullParser$ParseException; )
+public java.lang.String nextTagOrText(
+int
+java.lang.StringBuilder)
+
+public int numAttributes()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lcom/google/android/util/SimplePullParser$ParseException; )
+public void readRemainingText(
+int
+java.lang.StringBuilder)
+
+public void setLogTag(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class com.google.android.util.SmileyParser extends com.google.android.util.AbstractMessageParser
+
+----------------FIELDS----------------
+
+private com.google.android.util.SmileyResources mRes
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+com.google.android.util.SmileyResources)
+
+protected com.google.android.util.AbstractMessageParser$Resources getResources()
+
+public java.lang.CharSequence getSpannableString(
+android.content.Context)
+
+________________CLASS________________
+
+
+public class com.google.android.util.SmileyResources extends java.lang.Object implements com.google.android.util.AbstractMessageParser$Resources
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Integer;>; )
+private java.util.HashMap mSmileyToRes
+
+private final com.google.android.util.AbstractMessageParser$TrieNode smileys
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String[]
+int[])
+
+public com.google.android.util.AbstractMessageParser$TrieNode getAcronyms()
+
+public com.google.android.util.AbstractMessageParser$TrieNode getDomainSuffixes()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public java.util.Set getSchemes()
+
+public int getSmileyRes(
+java.lang.String)
+
+public com.google.android.util.AbstractMessageParser$TrieNode getSmileys()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.commons.codec.Decoder extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public abstract java.lang.Object decode(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.commons.codec.BinaryDecoder extends java.lang.Object implements org.apache.commons.codec.Decoder
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public abstract byte[] decode(
+byte[])
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.commons.codec.Encoder extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public abstract java.lang.Object encode(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.commons.codec.BinaryEncoder extends java.lang.Object implements org.apache.commons.codec.Encoder
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public abstract byte[] encode(
+byte[])
+
+________________CLASS________________
+
+
+public class org.apache.commons.codec.DecoderException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.commons.codec.EncoderException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.commons.codec.StringDecoder extends java.lang.Object implements org.apache.commons.codec.Decoder
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public abstract java.lang.String decode(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.commons.codec.StringEncoder extends java.lang.Object implements org.apache.commons.codec.Encoder
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public abstract java.lang.String encode(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.commons.codec.StringEncoderComparator extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+
+private org.apache.commons.codec.StringEncoder stringEncoder
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.apache.commons.codec.StringEncoder)
+
+public int compare(
+java.lang.Object
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.commons.codec.binary.Base64 extends java.lang.Object implements org.apache.commons.codec.BinaryEncoder, org.apache.commons.codec.BinaryDecoder
+
+----------------FIELDS----------------
+
+static final int BASELENGTH
+
+static final byte[] CHUNK_SEPARATOR
+
+static final int CHUNK_SIZE
+
+static final int EIGHTBIT
+
+static final int FOURBYTE
+
+static final int LOOKUPLENGTH
+
+static final byte PAD
+
+static final int SIGN
+
+static final int SIXTEENBIT
+
+static final int TWENTYFOURBITGROUP
+
+private static byte[] base64Alphabet
+
+private static byte[] lookUpBase64Alphabet
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static byte[] decodeBase64(
+byte[])
+
+static byte[] discardNonBase64(
+byte[])
+
+static byte[] discardWhitespace(
+byte[])
+
+public static byte[] encodeBase64(
+byte[])
+
+public static byte[] encodeBase64(
+byte[]
+boolean)
+
+public static byte[] encodeBase64Chunked(
+byte[])
+
+public static boolean isArrayByteBase64(
+byte[])
+
+private static boolean isBase64(
+byte)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public java.lang.Object decode(
+java.lang.Object)
+
+public byte[] decode(
+byte[])
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public java.lang.Object encode(
+java.lang.Object)
+
+public byte[] encode(
+byte[])
+
+________________CLASS________________
+
+
+public class org.apache.commons.codec.binary.BinaryCodec extends java.lang.Object implements org.apache.commons.codec.BinaryDecoder, org.apache.commons.codec.BinaryEncoder
+
+----------------FIELDS----------------
+
+private static final int[] BITS
+
+private static final int BIT_0
+
+private static final int BIT_1
+
+private static final int BIT_2
+
+private static final int BIT_3
+
+private static final int BIT_4
+
+private static final int BIT_5
+
+private static final int BIT_6
+
+private static final int BIT_7
+
+private static final byte[] EMPTY_BYTE_ARRAY
+
+private static final char[] EMPTY_CHAR_ARRAY
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static byte[] fromAscii(
+byte[])
+
+public static byte[] fromAscii(
+char[])
+
+public static byte[] toAsciiBytes(
+byte[])
+
+public static char[] toAsciiChars(
+byte[])
+
+public static java.lang.String toAsciiString(
+byte[])
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public java.lang.Object decode(
+java.lang.Object)
+
+public byte[] decode(
+byte[])
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public java.lang.Object encode(
+java.lang.Object)
+
+public byte[] encode(
+byte[])
+
+public byte[] toByteArray(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.commons.codec.binary.Hex extends java.lang.Object implements org.apache.commons.codec.BinaryEncoder, org.apache.commons.codec.BinaryDecoder
+
+----------------FIELDS----------------
+
+private static final char[] DIGITS
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public static byte[] decodeHex(
+char[])
+
+public static char[] encodeHex(
+byte[])
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+protected static int toDigit(
+char
+int)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public java.lang.Object decode(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public byte[] decode(
+byte[])
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public java.lang.Object encode(
+java.lang.Object)
+
+public byte[] encode(
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1 name =DoubleMetaphoneResult )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/commons/codec/language/DoubleMetaphone; )
+public class org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.StringBuffer alternate
+
+private int maxLength
+
+private java.lang.StringBuffer primary
+
+final org.apache.commons.codec.language.DoubleMetaphone this$0
+----------------METHODS----------------
+
+public void <init>(
+org.apache.commons.codec.language.DoubleMetaphone
+int)
+
+public void append(
+char)
+
+public void append(
+char
+char)
+
+public void append(
+java.lang.String)
+
+public void append(
+java.lang.String
+java.lang.String)
+
+public void appendAlternate(
+char)
+
+public void appendAlternate(
+java.lang.String)
+
+public void appendPrimary(
+char)
+
+public void appendPrimary(
+java.lang.String)
+
+public java.lang.String getAlternate()
+
+public java.lang.String getPrimary()
+
+public boolean isComplete()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/commons/codec/language/DoubleMetaphone$DoubleMetaphoneResult; )
+public class org.apache.commons.codec.language.DoubleMetaphone extends java.lang.Object implements org.apache.commons.codec.StringEncoder
+
+----------------FIELDS----------------
+
+private static final java.lang.String[] ES_EP_EB_EL_EY_IB_IL_IN_IE_EI_ER
+
+private static final java.lang.String[] L_R_N_M_B_H_F_V_W_SPACE
+
+private static final java.lang.String[] L_T_K_S_N_M_B_Z
+
+private static final java.lang.String[] SILENT_START
+
+private static final java.lang.String VOWELS
+
+protected int maxCodeLen
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private java.lang.String cleanInput(
+java.lang.String)
+
+private boolean conditionC0(
+java.lang.String
+int)
+
+private boolean conditionCH0(
+java.lang.String
+int)
+
+private boolean conditionCH1(
+java.lang.String
+int)
+
+private boolean conditionL0(
+java.lang.String
+int)
+
+private boolean conditionM0(
+java.lang.String
+int)
+
+private static boolean contains(
+java.lang.String
+int
+int
+java.lang.String)
+
+private static boolean contains(
+java.lang.String
+int
+int
+java.lang.String
+java.lang.String)
+
+private static boolean contains(
+java.lang.String
+int
+int
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private static boolean contains(
+java.lang.String
+int
+int
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private static boolean contains(
+java.lang.String
+int
+int
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private static boolean contains(
+java.lang.String
+int
+int
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+protected static boolean contains(
+java.lang.String
+int
+int
+java.lang.String[])
+
+private int handleAEIOUY(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int)
+
+private int handleC(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int)
+
+private int handleCC(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int)
+
+private int handleCH(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int)
+
+private int handleD(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int)
+
+private int handleG(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int
+boolean)
+
+private int handleGH(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int)
+
+private int handleH(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int)
+
+private int handleJ(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int
+boolean)
+
+private int handleL(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int)
+
+private int handleP(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int)
+
+private int handleR(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int
+boolean)
+
+private int handleS(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int
+boolean)
+
+private int handleSC(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int)
+
+private int handleT(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int)
+
+private int handleW(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int)
+
+private int handleX(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int)
+
+private int handleZ(
+java.lang.String
+org.apache.commons.codec.language.DoubleMetaphone$DoubleMetaphoneResult
+int
+boolean)
+
+private boolean isSilentStart(
+java.lang.String)
+
+private boolean isSlavoGermanic(
+java.lang.String)
+
+private boolean isVowel(
+char)
+
+protected char charAt(
+java.lang.String
+int)
+
+public java.lang.String doubleMetaphone(
+java.lang.String)
+
+public java.lang.String doubleMetaphone(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public java.lang.Object encode(
+java.lang.Object)
+
+public java.lang.String encode(
+java.lang.String)
+
+public int getMaxCodeLen()
+
+public boolean isDoubleMetaphoneEqual(
+java.lang.String
+java.lang.String)
+
+public boolean isDoubleMetaphoneEqual(
+java.lang.String
+java.lang.String
+boolean)
+
+public void setMaxCodeLen(
+int)
+
+________________CLASS________________
+
+
+public class org.apache.commons.codec.language.Metaphone extends java.lang.Object implements org.apache.commons.codec.StringEncoder
+
+----------------FIELDS----------------
+
+private java.lang.String frontv
+
+private int maxCodeLen
+
+private java.lang.String varson
+
+private java.lang.String vowels
+----------------METHODS----------------
+
+public void <init>()
+
+private boolean isLastChar(
+int
+int)
+
+private boolean isNextChar(
+java.lang.StringBuffer
+int
+char)
+
+private boolean isPreviousChar(
+java.lang.StringBuffer
+int
+char)
+
+private boolean isVowel(
+java.lang.StringBuffer
+int)
+
+private boolean regionMatch(
+java.lang.StringBuffer
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public java.lang.Object encode(
+java.lang.Object)
+
+public java.lang.String encode(
+java.lang.String)
+
+public int getMaxCodeLen()
+
+public boolean isMetaphoneEqual(
+java.lang.String
+java.lang.String)
+
+public java.lang.String metaphone(
+java.lang.String)
+
+public void setMaxCodeLen(
+int)
+
+________________CLASS________________
+
+
+public class org.apache.commons.codec.language.RefinedSoundex extends java.lang.Object implements org.apache.commons.codec.StringEncoder
+
+----------------FIELDS----------------
+
+public static final org.apache.commons.codec.language.RefinedSoundex US_ENGLISH
+
+public static final char[] US_ENGLISH_MAPPING
+
+private char[] soundexMapping
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+char[])
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public int difference(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public java.lang.Object encode(
+java.lang.Object)
+
+public java.lang.String encode(
+java.lang.String)
+
+ char getMappingCode(
+char)
+
+public java.lang.String soundex(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.commons.codec.language.Soundex extends java.lang.Object implements org.apache.commons.codec.StringEncoder
+
+----------------FIELDS----------------
+
+public static final org.apache.commons.codec.language.Soundex US_ENGLISH
+
+public static final char[] US_ENGLISH_MAPPING
+
+public static final java.lang.String US_ENGLISH_MAPPING_STRING
+
+private int maxLength
+
+private char[] soundexMapping
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+char[])
+
+private char getMappingCode(
+java.lang.String
+int)
+
+private char[] getSoundexMapping()
+
+private char map(
+char)
+
+private void setSoundexMapping(
+char[])
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public int difference(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public java.lang.Object encode(
+java.lang.Object)
+
+public java.lang.String encode(
+java.lang.String)
+
+public int getMaxLength()
+
+public void setMaxLength(
+int)
+
+public java.lang.String soundex(
+java.lang.String)
+
+________________CLASS________________
+
+
+final class org.apache.commons.codec.language.SoundexUtils extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+static java.lang.String clean(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+static int difference(
+org.apache.commons.codec.StringEncoder
+java.lang.String
+java.lang.String)
+
+static int differenceEncoded(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+abstract class org.apache.commons.codec.net.RFC1522Codec extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException;Ljava/io/UnsupportedEncodingException; )
+protected java.lang.String decodeText(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+protected abstract byte[] doDecoding(
+byte[])
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+protected abstract byte[] doEncoding(
+byte[])
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException;Ljava/io/UnsupportedEncodingException; )
+protected java.lang.String encodeText(
+java.lang.String
+java.lang.String)
+
+protected abstract java.lang.String getEncoding()
+
+________________CLASS________________
+
+
+public class org.apache.commons.codec.net.BCodec extends org.apache.commons.codec.net.RFC1522Codec implements org.apache.commons.codec.StringEncoder, org.apache.commons.codec.StringDecoder
+
+----------------FIELDS----------------
+
+private java.lang.String charset
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public java.lang.Object decode(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public java.lang.String decode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+protected byte[] doDecoding(
+byte[])
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+protected byte[] doEncoding(
+byte[])
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public java.lang.Object encode(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public java.lang.String encode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public java.lang.String encode(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getDefaultCharset()
+
+protected java.lang.String getEncoding()
+
+________________CLASS________________
+
+
+public class org.apache.commons.codec.net.QCodec extends org.apache.commons.codec.net.RFC1522Codec implements org.apache.commons.codec.StringEncoder, org.apache.commons.codec.StringDecoder
+
+----------------FIELDS----------------
+
+private static byte BLANK
+
+private static final java.util.BitSet PRINTABLE_CHARS
+
+private static byte UNDERSCORE
+
+private java.lang.String charset
+
+private boolean encodeBlanks
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public java.lang.Object decode(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public java.lang.String decode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+protected byte[] doDecoding(
+byte[])
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+protected byte[] doEncoding(
+byte[])
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public java.lang.Object encode(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public java.lang.String encode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public java.lang.String encode(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getDefaultCharset()
+
+protected java.lang.String getEncoding()
+
+public boolean isEncodeBlanks()
+
+public void setEncodeBlanks(
+boolean)
+
+________________CLASS________________
+
+
+public class org.apache.commons.codec.net.QuotedPrintableCodec extends java.lang.Object implements org.apache.commons.codec.BinaryEncoder, org.apache.commons.codec.BinaryDecoder, org.apache.commons.codec.StringEncoder, org.apache.commons.codec.StringDecoder
+
+----------------FIELDS----------------
+
+private static byte ESCAPE_CHAR
+
+private static final java.util.BitSet PRINTABLE_CHARS
+
+private static byte SPACE
+
+private static byte TAB
+
+private java.lang.String charset
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public static final byte[] decodeQuotedPrintable(
+byte[])
+
+private static final void encodeQuotedPrintable(
+int
+java.io.ByteArrayOutputStream)
+
+public static final byte[] encodeQuotedPrintable(
+java.util.BitSet
+byte[])
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public java.lang.Object decode(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public java.lang.String decode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException;Ljava/io/UnsupportedEncodingException; )
+public java.lang.String decode(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public byte[] decode(
+byte[])
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public java.lang.Object encode(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public java.lang.String encode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public java.lang.String encode(
+java.lang.String
+java.lang.String)
+
+public byte[] encode(
+byte[])
+
+public java.lang.String getDefaultCharset()
+
+________________CLASS________________
+
+
+abstract interface class org.apache.commons.codec.net.StringEncodings extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String US_ASCII
+
+public static final java.lang.String UTF8
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class org.apache.commons.codec.net.URLCodec extends java.lang.Object implements org.apache.commons.codec.BinaryEncoder, org.apache.commons.codec.BinaryDecoder, org.apache.commons.codec.StringEncoder, org.apache.commons.codec.StringDecoder
+
+----------------FIELDS----------------
+
+protected static byte ESCAPE_CHAR
+
+protected static final java.util.BitSet WWW_FORM_URL
+
+protected java.lang.String charset
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public static final byte[] decodeUrl(
+byte[])
+
+public static final byte[] encodeUrl(
+java.util.BitSet
+byte[])
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public java.lang.Object decode(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public java.lang.String decode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException;Ljava/io/UnsupportedEncodingException; )
+public java.lang.String decode(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/DecoderException; )
+public byte[] decode(
+byte[])
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public java.lang.Object encode(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/codec/EncoderException; )
+public java.lang.String encode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public java.lang.String encode(
+java.lang.String
+java.lang.String)
+
+public byte[] encode(
+byte[])
+
+public java.lang.String getDefaultCharset()
+
+public java.lang.String getEncoding()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.commons.logging.Log extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void debug(
+java.lang.Object)
+
+public abstract void debug(
+java.lang.Object
+java.lang.Throwable)
+
+public abstract void error(
+java.lang.Object)
+
+public abstract void error(
+java.lang.Object
+java.lang.Throwable)
+
+public abstract void fatal(
+java.lang.Object)
+
+public abstract void fatal(
+java.lang.Object
+java.lang.Throwable)
+
+public abstract void info(
+java.lang.Object)
+
+public abstract void info(
+java.lang.Object
+java.lang.Throwable)
+
+public abstract boolean isDebugEnabled()
+
+public abstract boolean isErrorEnabled()
+
+public abstract boolean isFatalEnabled()
+
+public abstract boolean isInfoEnabled()
+
+public abstract boolean isTraceEnabled()
+
+public abstract boolean isWarnEnabled()
+
+public abstract void trace(
+java.lang.Object)
+
+public abstract void trace(
+java.lang.Object
+java.lang.Throwable)
+
+public abstract void warn(
+java.lang.Object)
+
+public abstract void warn(
+java.lang.Object
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class org.apache.commons.logging.LogConfigurationException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+protected java.lang.Throwable cause
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+public java.lang.Throwable getCause()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class org.apache.commons.logging.LogFactory$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class org.apache.commons.logging.LogFactory$2 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.lang.ClassLoader val$classLoader
+
+final java.lang.String val$factoryClass
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+java.lang.ClassLoader)
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class org.apache.commons.logging.LogFactory$3 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.lang.ClassLoader val$loader
+
+final java.lang.String val$name
+----------------METHODS----------------
+
+ void <init>(
+java.lang.ClassLoader
+java.lang.String)
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.commons.logging.LogFactory$4 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.lang.ClassLoader val$loader
+
+final java.lang.String val$name
+----------------METHODS----------------
+
+ void <init>(
+java.lang.ClassLoader
+java.lang.String)
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class org.apache.commons.logging.LogFactory$5 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.net.URL val$url
+----------------METHODS----------------
+
+ void <init>(
+java.net.URL)
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+
+public abstract class org.apache.commons.logging.LogFactory extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String DIAGNOSTICS_DEST_PROPERTY
+
+public static final java.lang.String FACTORY_DEFAULT
+
+public static final java.lang.String FACTORY_PROPERTIES
+
+public static final java.lang.String FACTORY_PROPERTY
+
+public static final java.lang.String HASHTABLE_IMPLEMENTATION_PROPERTY
+
+public static final java.lang.String PRIORITY_KEY
+
+protected static final java.lang.String SERVICE_ID
+
+public static final java.lang.String TCCL_KEY
+
+private static final java.lang.String WEAK_HASHTABLE_CLASSNAME
+
+private static java.lang.String diagnosticPrefix
+
+private static java.io.PrintStream diagnosticsStream
+
+protected static java.util.Hashtable factories
+
+protected static org.apache.commons.logging.LogFactory nullClassLoaderFactory
+
+private static java.lang.ClassLoader thisClassLoader
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>()
+
+static void access$000(
+java.lang.String)
+
+private static void cacheFactory(
+java.lang.ClassLoader
+org.apache.commons.logging.LogFactory)
+
+protected static java.lang.Object createFactory(
+java.lang.String
+java.lang.ClassLoader)
+
+private static final java.util.Hashtable createFactoryStore()
+@dalvik.annotation.Throws (value =Lorg/apache/commons/logging/LogConfigurationException; )
+protected static java.lang.ClassLoader directGetContextClassLoader()
+
+private static org.apache.commons.logging.LogFactory getCachedFactory(
+java.lang.ClassLoader)
+
+protected static java.lang.ClassLoader getClassLoader(
+java.lang.Class)
+
+private static final java.util.Properties getConfigurationFile(
+java.lang.ClassLoader
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/logging/LogConfigurationException; )
+protected static java.lang.ClassLoader getContextClassLoader()
+@dalvik.annotation.Throws (value =Lorg/apache/commons/logging/LogConfigurationException; )
+public static org.apache.commons.logging.LogFactory getFactory()
+@dalvik.annotation.Throws (value =Lorg/apache/commons/logging/LogConfigurationException; )
+public static org.apache.commons.logging.Log getLog(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/logging/LogConfigurationException; )
+public static org.apache.commons.logging.Log getLog(
+java.lang.String)
+
+private static java.util.Properties getProperties(
+java.net.URL)
+
+private static java.io.InputStream getResourceAsStream(
+java.lang.ClassLoader
+java.lang.String)
+
+private static java.util.Enumeration getResources(
+java.lang.ClassLoader
+java.lang.String)
+
+private static boolean implementsLogFactory(
+java.lang.Class)
+
+private static void initDiagnostics()
+
+protected static boolean isDiagnosticsEnabled()
+
+private static void logClassLoaderEnvironment(
+java.lang.Class)
+
+private static final void logDiagnostic(
+java.lang.String)
+
+private static void logHierarchy(
+java.lang.String
+java.lang.ClassLoader)
+
+protected static final void logRawDiagnostic(
+java.lang.String)
+
+protected static org.apache.commons.logging.LogFactory newFactory(
+java.lang.String
+java.lang.ClassLoader)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/logging/LogConfigurationException; )
+protected static org.apache.commons.logging.LogFactory newFactory(
+java.lang.String
+java.lang.ClassLoader
+java.lang.ClassLoader)
+
+public static java.lang.String objectId(
+java.lang.Object)
+
+public static void release(
+java.lang.ClassLoader)
+
+public static void releaseAll()
+
+public abstract java.lang.Object getAttribute(
+java.lang.String)
+
+public abstract java.lang.String[] getAttributeNames()
+@dalvik.annotation.Throws (value =Lorg/apache/commons/logging/LogConfigurationException; )
+public abstract org.apache.commons.logging.Log getInstance(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/logging/LogConfigurationException; )
+public abstract org.apache.commons.logging.Log getInstance(
+java.lang.String)
+
+public abstract void release()
+
+public abstract void removeAttribute(
+java.lang.String)
+
+public abstract void setAttribute(
+java.lang.String
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.commons.logging.LogSource extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected static boolean jdk14IsAvailable
+
+protected static boolean log4jIsAvailable
+
+protected static java.lang.reflect.Constructor logImplctor
+
+protected static java.util.Hashtable logs
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static org.apache.commons.logging.Log getInstance(
+java.lang.Class)
+
+public static org.apache.commons.logging.Log getInstance(
+java.lang.String)
+
+public static java.lang.String[] getLogNames()
+
+public static org.apache.commons.logging.Log makeNewLogInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/LinkageError;Ljava/lang/ExceptionInInitializerError;Ljava/lang/NoSuchMethodException;Ljava/lang/SecurityException; )
+public static void setLogImplementation(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/lang/LinkageError;Ljava/lang/ExceptionInInitializerError;Ljava/lang/NoSuchMethodException;Ljava/lang/SecurityException;Ljava/lang/ClassNotFoundException; )
+public static void setLogImplementation(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.commons.logging.impl.Jdk14Logger extends java.lang.Object implements org.apache.commons.logging.Log, java.io.Serializable
+
+----------------FIELDS----------------
+
+protected static final java.util.logging.Level dummyLevel
+
+protected transient java.util.logging.Logger logger
+
+protected java.lang.String name
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String)
+
+private void log(
+java.util.logging.Level
+java.lang.String
+java.lang.Throwable)
+
+public void debug(
+java.lang.Object)
+
+public void debug(
+java.lang.Object
+java.lang.Throwable)
+
+public void error(
+java.lang.Object)
+
+public void error(
+java.lang.Object
+java.lang.Throwable)
+
+public void fatal(
+java.lang.Object)
+
+public void fatal(
+java.lang.Object
+java.lang.Throwable)
+
+public java.util.logging.Logger getLogger()
+
+public void info(
+java.lang.Object)
+
+public void info(
+java.lang.Object
+java.lang.Throwable)
+
+public boolean isDebugEnabled()
+
+public boolean isErrorEnabled()
+
+public boolean isFatalEnabled()
+
+public boolean isInfoEnabled()
+
+public boolean isTraceEnabled()
+
+public boolean isWarnEnabled()
+
+public void trace(
+java.lang.Object)
+
+public void trace(
+java.lang.Object
+java.lang.Throwable)
+
+public void warn(
+java.lang.Object)
+
+public void warn(
+java.lang.Object
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class org.apache.commons.logging.impl.LogFactoryImpl extends org.apache.commons.logging.LogFactory
+
+----------------FIELDS----------------
+
+public static final java.lang.String ALLOW_FLAWED_CONTEXT_PROPERTY
+
+public static final java.lang.String ALLOW_FLAWED_DISCOVERY_PROPERTY
+
+public static final java.lang.String ALLOW_FLAWED_HIERARCHY_PROPERTY
+
+private static final java.lang.String LOGGING_IMPL_JDK14_LOGGER
+
+private static final java.lang.String LOGGING_IMPL_LOG4J_LOGGER
+
+private static final java.lang.String LOGGING_IMPL_LUMBERJACK_LOGGER
+
+private static final java.lang.String LOGGING_IMPL_SIMPLE_LOGGER
+
+public static final java.lang.String LOG_PROPERTY
+
+protected static final java.lang.String LOG_PROPERTY_OLD
+
+private static final java.lang.String PKG_IMPL
+
+private static final int PKG_LEN
+
+private static final java.lang.String[] classesToDiscover
+
+private boolean allowFlawedContext
+
+private boolean allowFlawedDiscovery
+
+private boolean allowFlawedHierarchy
+
+protected java.util.Hashtable attributes
+
+private java.lang.String diagnosticPrefix
+
+protected java.util.Hashtable instances
+
+private java.lang.String logClassName
+
+protected java.lang.reflect.Constructor logConstructor
+
+protected java.lang.Class[] logConstructorSignature
+
+protected java.lang.reflect.Method logMethod
+
+protected java.lang.Class[] logMethodSignature
+
+private boolean useTCCL
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/commons/logging/LogConfigurationException; )
+private org.apache.commons.logging.Log createLogFromClass(
+java.lang.String
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/logging/LogConfigurationException; )
+private org.apache.commons.logging.Log discoverLogImplementation(
+java.lang.String)
+
+private java.lang.String findUserSpecifiedLogClassName()
+@dalvik.annotation.Throws (value =Lorg/apache/commons/logging/LogConfigurationException; )
+private java.lang.ClassLoader getBaseClassLoader()
+
+private boolean getBooleanConfiguration(
+java.lang.String
+boolean)
+
+protected static java.lang.ClassLoader getClassLoader(
+java.lang.Class)
+
+private java.lang.String getConfigurationValue(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/logging/LogConfigurationException; )
+protected static java.lang.ClassLoader getContextClassLoader()
+
+private java.lang.ClassLoader getLowestClassLoader(
+java.lang.ClassLoader
+java.lang.ClassLoader)
+
+private void handleFlawedDiscovery(
+java.lang.String
+java.lang.ClassLoader
+java.lang.Throwable)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/logging/LogConfigurationException; )
+private void handleFlawedHierarchy(
+java.lang.ClassLoader
+java.lang.Class)
+
+private void informUponSimilarName(
+java.lang.StringBuffer
+java.lang.String
+java.lang.String)
+
+private void initConfiguration()
+
+private void initDiagnostics()
+
+protected static boolean isDiagnosticsEnabled()
+
+private boolean isLogLibraryAvailable(
+java.lang.String
+java.lang.String)
+
+public java.lang.Object getAttribute(
+java.lang.String)
+
+public java.lang.String[] getAttributeNames()
+@dalvik.annotation.Throws (value =Lorg/apache/commons/logging/LogConfigurationException; )
+public org.apache.commons.logging.Log getInstance(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/logging/LogConfigurationException; )
+public org.apache.commons.logging.Log getInstance(
+java.lang.String)
+
+protected java.lang.String getLogClassName()
+@dalvik.annotation.Throws (value =Lorg/apache/commons/logging/LogConfigurationException; )
+protected java.lang.reflect.Constructor getLogConstructor()
+
+protected boolean isJdk13LumberjackAvailable()
+
+protected boolean isJdk14Available()
+
+protected boolean isLog4JAvailable()
+
+protected void logDiagnostic(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/commons/logging/LogConfigurationException; )
+protected org.apache.commons.logging.Log newInstance(
+java.lang.String)
+
+public void release()
+
+public void removeAttribute(
+java.lang.String)
+
+public void setAttribute(
+java.lang.String
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.commons.logging.impl.NoOpLog extends java.lang.Object implements org.apache.commons.logging.Log, java.io.Serializable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void debug(
+java.lang.Object)
+
+public void debug(
+java.lang.Object
+java.lang.Throwable)
+
+public void error(
+java.lang.Object)
+
+public void error(
+java.lang.Object
+java.lang.Throwable)
+
+public void fatal(
+java.lang.Object)
+
+public void fatal(
+java.lang.Object
+java.lang.Throwable)
+
+public void info(
+java.lang.Object)
+
+public void info(
+java.lang.Object
+java.lang.Throwable)
+
+public final boolean isDebugEnabled()
+
+public final boolean isErrorEnabled()
+
+public final boolean isFatalEnabled()
+
+public final boolean isInfoEnabled()
+
+public final boolean isTraceEnabled()
+
+public final boolean isWarnEnabled()
+
+public void trace(
+java.lang.Object)
+
+public void trace(
+java.lang.Object
+java.lang.Throwable)
+
+public void warn(
+java.lang.Object)
+
+public void warn(
+java.lang.Object
+java.lang.Throwable)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.commons.logging.impl.SimpleLog$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.lang.String val$name
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+
+public class org.apache.commons.logging.impl.SimpleLog extends java.lang.Object implements org.apache.commons.logging.Log, java.io.Serializable
+
+----------------FIELDS----------------
+
+protected static final java.lang.String DEFAULT_DATE_TIME_FORMAT
+
+public static final int LOG_LEVEL_ALL
+
+public static final int LOG_LEVEL_DEBUG
+
+public static final int LOG_LEVEL_ERROR
+
+public static final int LOG_LEVEL_FATAL
+
+public static final int LOG_LEVEL_INFO
+
+public static final int LOG_LEVEL_OFF
+
+public static final int LOG_LEVEL_TRACE
+
+public static final int LOG_LEVEL_WARN
+
+protected static java.text.DateFormat dateFormatter
+
+protected static java.lang.String dateTimeFormat
+
+protected static boolean showDateTime
+
+protected static boolean showLogName
+
+protected static boolean showShortName
+
+protected static final java.util.Properties simpleLogProps
+
+protected static final java.lang.String systemPrefix
+
+protected int currentLogLevel
+
+protected java.lang.String logName
+
+private java.lang.String shortLogName
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String)
+
+static java.lang.ClassLoader access$000()
+
+private static boolean getBooleanProperty(
+java.lang.String
+boolean)
+
+private static java.lang.ClassLoader getContextClassLoader()
+
+private static java.io.InputStream getResourceAsStream(
+java.lang.String)
+
+private static java.lang.String getStringProperty(
+java.lang.String)
+
+private static java.lang.String getStringProperty(
+java.lang.String
+java.lang.String)
+
+public final void debug(
+java.lang.Object)
+
+public final void debug(
+java.lang.Object
+java.lang.Throwable)
+
+public final void error(
+java.lang.Object)
+
+public final void error(
+java.lang.Object
+java.lang.Throwable)
+
+public final void fatal(
+java.lang.Object)
+
+public final void fatal(
+java.lang.Object
+java.lang.Throwable)
+
+public int getLevel()
+
+public final void info(
+java.lang.Object)
+
+public final void info(
+java.lang.Object
+java.lang.Throwable)
+
+public final boolean isDebugEnabled()
+
+public final boolean isErrorEnabled()
+
+public final boolean isFatalEnabled()
+
+public final boolean isInfoEnabled()
+
+protected boolean isLevelEnabled(
+int)
+
+public final boolean isTraceEnabled()
+
+public final boolean isWarnEnabled()
+
+protected void log(
+int
+java.lang.Object
+java.lang.Throwable)
+
+public void setLevel(
+int)
+
+public final void trace(
+java.lang.Object)
+
+public final void trace(
+java.lang.Object
+java.lang.Throwable)
+
+public final void warn(
+java.lang.Object)
+
+public final void warn(
+java.lang.Object
+java.lang.Throwable)
+
+protected void write(
+java.lang.StringBuffer)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class org.apache.commons.logging.impl.WeakHashtable$1 extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+
+final org.apache.commons.logging.impl.WeakHashtable this$0
+
+final java.util.Enumeration val$enumer
+----------------METHODS----------------
+
+ void <init>(
+org.apache.commons.logging.impl.WeakHashtable
+java.util.Enumeration)
+
+public boolean hasMoreElements()
+
+public java.lang.Object nextElement()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =Entry )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/commons/logging/impl/WeakHashtable; )
+final class org.apache.commons.logging.impl.WeakHashtable$Entry extends java.lang.Object implements java.util.Map$Entry
+
+----------------FIELDS----------------
+
+private final java.lang.Object key
+
+private final java.lang.Object value
+----------------METHODS----------------
+
+private void <init>(
+java.lang.Object
+java.lang.Object)
+
+ void <init>(
+java.lang.Object
+java.lang.Object
+org.apache.commons.logging.impl.WeakHashtable$1)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.Object getKey()
+
+public java.lang.Object getValue()
+
+public int hashCode()
+
+public java.lang.Object setValue(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =Referenced )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/commons/logging/impl/WeakHashtable; )
+final class org.apache.commons.logging.impl.WeakHashtable$Referenced extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int hashCode
+
+private final java.lang.ref.WeakReference reference
+----------------METHODS----------------
+
+private void <init>(
+java.lang.Object)
+
+private void <init>(
+java.lang.Object
+java.lang.ref.ReferenceQueue)
+
+ void <init>(
+java.lang.Object
+java.lang.ref.ReferenceQueue
+org.apache.commons.logging.impl.WeakHashtable$1)
+
+ void <init>(
+java.lang.Object
+org.apache.commons.logging.impl.WeakHashtable$1)
+
+static java.lang.Object access$100(
+org.apache.commons.logging.impl.WeakHashtable$Referenced)
+
+private java.lang.Object getValue()
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =WeakKey )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/commons/logging/impl/WeakHashtable; )
+final class org.apache.commons.logging.impl.WeakHashtable$WeakKey extends java.lang.ref.WeakReference
+
+----------------FIELDS----------------
+
+private final org.apache.commons.logging.impl.WeakHashtable$Referenced referenced
+----------------METHODS----------------
+
+private void <init>(
+java.lang.Object
+java.lang.ref.ReferenceQueue
+org.apache.commons.logging.impl.WeakHashtable$Referenced)
+
+ void <init>(
+java.lang.Object
+java.lang.ref.ReferenceQueue
+org.apache.commons.logging.impl.WeakHashtable$Referenced
+org.apache.commons.logging.impl.WeakHashtable$1)
+
+static org.apache.commons.logging.impl.WeakHashtable$Referenced access$400(
+org.apache.commons.logging.impl.WeakHashtable$WeakKey)
+
+private org.apache.commons.logging.impl.WeakHashtable$Referenced getReferenced()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/commons/logging/impl/WeakHashtable$WeakKey;Lorg/apache/commons/logging/impl/WeakHashtable$Referenced;Lorg/apache/commons/logging/impl/WeakHashtable$Entry; )
+public final class org.apache.commons.logging.impl.WeakHashtable extends java.util.Hashtable
+
+----------------FIELDS----------------
+
+private static final int MAX_CHANGES_BEFORE_PURGE
+
+private static final int PARTIAL_PURGE_COUNT
+
+private int changeCount
+
+private java.lang.ref.ReferenceQueue queue
+----------------METHODS----------------
+
+public void <init>()
+
+private void purge()
+
+private void purgeOne()
+
+public boolean containsKey(
+java.lang.Object)
+
+public java.util.Enumeration elements()
+
+public java.util.Set entrySet()
+
+public java.lang.Object get(
+java.lang.Object)
+
+public boolean isEmpty()
+
+public java.util.Set keySet()
+
+public java.util.Enumeration keys()
+
+public java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+
+public void putAll(
+java.util.Map)
+
+protected void rehash()
+
+public java.lang.Object remove(
+java.lang.Object)
+
+public int size()
+
+public java.lang.String toString()
+
+public java.util.Collection values()
+
+________________CLASS________________
+
+
+public class org.apache.http.ConnectionClosedException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.ConnectionReuseStrategy extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean keepAlive(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.Header extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public abstract org.apache.http.HeaderElement[] getElements()
+
+public abstract java.lang.String getName()
+
+public abstract java.lang.String getValue()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.FormattedHeader extends java.lang.Object implements org.apache.http.Header
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.apache.http.util.CharArrayBuffer getBuffer()
+
+public abstract int getValuePos()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HeaderElement extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getName()
+
+public abstract org.apache.http.NameValuePair getParameter(
+int)
+
+public abstract org.apache.http.NameValuePair getParameterByName(
+java.lang.String)
+
+public abstract int getParameterCount()
+
+public abstract org.apache.http.NameValuePair[] getParameters()
+
+public abstract java.lang.String getValue()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HeaderElementIterator extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean hasNext()
+
+public abstract org.apache.http.HeaderElement nextElement()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HeaderIterator extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean hasNext()
+
+public abstract org.apache.http.Header nextHeader()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HttpClientConnection extends java.lang.Object implements org.apache.http.HttpConnection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract boolean isResponseAvailable(
+int)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public abstract void receiveResponseEntity(
+org.apache.http.HttpResponse)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public abstract org.apache.http.HttpResponse receiveResponseHeader()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public abstract void sendRequestEntity(
+org.apache.http.HttpEntityEnclosingRequest)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public abstract void sendRequestHeader(
+org.apache.http.HttpRequest)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HttpConnectionMetrics extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.Object getMetric(
+java.lang.String)
+
+public abstract long getReceivedBytesCount()
+
+public abstract long getRequestCount()
+
+public abstract long getResponseCount()
+
+public abstract long getSentBytesCount()
+
+public abstract void reset()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HttpMessage extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void addHeader(
+java.lang.String
+java.lang.String)
+
+public abstract void addHeader(
+org.apache.http.Header)
+
+public abstract boolean containsHeader(
+java.lang.String)
+
+public abstract org.apache.http.Header[] getAllHeaders()
+
+public abstract org.apache.http.Header getFirstHeader(
+java.lang.String)
+
+public abstract org.apache.http.Header[] getHeaders(
+java.lang.String)
+
+public abstract org.apache.http.Header getLastHeader(
+java.lang.String)
+
+public abstract org.apache.http.params.HttpParams getParams()
+
+public abstract org.apache.http.ProtocolVersion getProtocolVersion()
+
+public abstract org.apache.http.HeaderIterator headerIterator()
+
+public abstract org.apache.http.HeaderIterator headerIterator(
+java.lang.String)
+
+public abstract void removeHeader(
+org.apache.http.Header)
+
+public abstract void removeHeaders(
+java.lang.String)
+
+public abstract void setHeader(
+java.lang.String
+java.lang.String)
+
+public abstract void setHeader(
+org.apache.http.Header)
+
+public abstract void setHeaders(
+org.apache.http.Header[])
+
+public abstract void setParams(
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HttpRequest extends java.lang.Object implements org.apache.http.HttpMessage
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.apache.http.RequestLine getRequestLine()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HttpEntityEnclosingRequest extends java.lang.Object implements org.apache.http.HttpRequest
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean expectContinue()
+
+public abstract org.apache.http.HttpEntity getEntity()
+
+public abstract void setEntity(
+org.apache.http.HttpEntity)
+
+________________CLASS________________
+
+
+public class org.apache.http.HttpException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public final class org.apache.http.HttpHost extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+
+public static final java.lang.String DEFAULT_SCHEME_NAME
+
+protected final java.lang.String hostname
+
+protected final java.lang.String lcHostname
+
+protected final int port
+
+protected final java.lang.String schemeName
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+int)
+
+public void <init>(
+java.lang.String
+int
+java.lang.String)
+
+public void <init>(
+org.apache.http.HttpHost)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getHostName()
+
+public int getPort()
+
+public java.lang.String getSchemeName()
+
+public int hashCode()
+
+public java.lang.String toHostString()
+
+public java.lang.String toString()
+
+public java.lang.String toURI()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HttpRequestFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/http/MethodNotSupportedException; )
+public abstract org.apache.http.HttpRequest newHttpRequest(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/MethodNotSupportedException; )
+public abstract org.apache.http.HttpRequest newHttpRequest(
+org.apache.http.RequestLine)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HttpResponse extends java.lang.Object implements org.apache.http.HttpMessage
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.apache.http.HttpEntity getEntity()
+
+public abstract java.util.Locale getLocale()
+
+public abstract org.apache.http.StatusLine getStatusLine()
+
+public abstract void setEntity(
+org.apache.http.HttpEntity)
+
+public abstract void setLocale(
+java.util.Locale)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public abstract void setReasonPhrase(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public abstract void setStatusCode(
+int)
+
+public abstract void setStatusLine(
+org.apache.http.ProtocolVersion
+int)
+
+public abstract void setStatusLine(
+org.apache.http.ProtocolVersion
+int
+java.lang.String)
+
+public abstract void setStatusLine(
+org.apache.http.StatusLine)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HttpResponseFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.apache.http.HttpResponse newHttpResponse(
+org.apache.http.ProtocolVersion
+int
+org.apache.http.protocol.HttpContext)
+
+public abstract org.apache.http.HttpResponse newHttpResponse(
+org.apache.http.StatusLine
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HttpResponseInterceptor extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public abstract void process(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HttpServerConnection extends java.lang.Object implements org.apache.http.HttpConnection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void flush()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public abstract void receiveRequestEntity(
+org.apache.http.HttpEntityEnclosingRequest)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public abstract org.apache.http.HttpRequest receiveRequestHeader()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public abstract void sendResponseEntity(
+org.apache.http.HttpResponse)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public abstract void sendResponseHeader(
+org.apache.http.HttpResponse)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.HttpStatus extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int SC_ACCEPTED
+
+public static final int SC_BAD_GATEWAY
+
+public static final int SC_BAD_REQUEST
+
+public static final int SC_CONFLICT
+
+public static final int SC_CONTINUE
+
+public static final int SC_CREATED
+
+public static final int SC_EXPECTATION_FAILED
+
+public static final int SC_FAILED_DEPENDENCY
+
+public static final int SC_FORBIDDEN
+
+public static final int SC_GATEWAY_TIMEOUT
+
+public static final int SC_GONE
+
+public static final int SC_HTTP_VERSION_NOT_SUPPORTED
+
+public static final int SC_INSUFFICIENT_SPACE_ON_RESOURCE
+
+public static final int SC_INSUFFICIENT_STORAGE
+
+public static final int SC_INTERNAL_SERVER_ERROR
+
+public static final int SC_LENGTH_REQUIRED
+
+public static final int SC_LOCKED
+
+public static final int SC_METHOD_FAILURE
+
+public static final int SC_METHOD_NOT_ALLOWED
+
+public static final int SC_MOVED_PERMANENTLY
+
+public static final int SC_MOVED_TEMPORARILY
+
+public static final int SC_MULTIPLE_CHOICES
+
+public static final int SC_MULTI_STATUS
+
+public static final int SC_NON_AUTHORITATIVE_INFORMATION
+
+public static final int SC_NOT_ACCEPTABLE
+
+public static final int SC_NOT_FOUND
+
+public static final int SC_NOT_IMPLEMENTED
+
+public static final int SC_NOT_MODIFIED
+
+public static final int SC_NO_CONTENT
+
+public static final int SC_OK
+
+public static final int SC_PARTIAL_CONTENT
+
+public static final int SC_PAYMENT_REQUIRED
+
+public static final int SC_PRECONDITION_FAILED
+
+public static final int SC_PROCESSING
+
+public static final int SC_PROXY_AUTHENTICATION_REQUIRED
+
+public static final int SC_REQUESTED_RANGE_NOT_SATISFIABLE
+
+public static final int SC_REQUEST_TIMEOUT
+
+public static final int SC_REQUEST_TOO_LONG
+
+public static final int SC_REQUEST_URI_TOO_LONG
+
+public static final int SC_RESET_CONTENT
+
+public static final int SC_SEE_OTHER
+
+public static final int SC_SERVICE_UNAVAILABLE
+
+public static final int SC_SWITCHING_PROTOCOLS
+
+public static final int SC_TEMPORARY_REDIRECT
+
+public static final int SC_UNAUTHORIZED
+
+public static final int SC_UNPROCESSABLE_ENTITY
+
+public static final int SC_UNSUPPORTED_MEDIA_TYPE
+
+public static final int SC_USE_PROXY
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class org.apache.http.ProtocolVersion extends java.lang.Object implements java.io.Serializable, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+protected final int major
+
+protected final int minor
+
+protected final java.lang.String protocol
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public int compareToVersion(
+org.apache.http.ProtocolVersion)
+
+public final boolean equals(
+java.lang.Object)
+
+public org.apache.http.ProtocolVersion forVersion(
+int
+int)
+
+public final int getMajor()
+
+public final int getMinor()
+
+public final java.lang.String getProtocol()
+
+public final boolean greaterEquals(
+org.apache.http.ProtocolVersion)
+
+public final int hashCode()
+
+public boolean isComparable(
+org.apache.http.ProtocolVersion)
+
+public final boolean lessEquals(
+org.apache.http.ProtocolVersion)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public final class org.apache.http.HttpVersion extends org.apache.http.ProtocolVersion implements java.io.Serializable
+
+----------------FIELDS----------------
+
+public static final java.lang.String HTTP
+
+public static final org.apache.http.HttpVersion HTTP_0_9
+
+public static final org.apache.http.HttpVersion HTTP_1_0
+
+public static final org.apache.http.HttpVersion HTTP_1_1
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+int)
+
+public org.apache.http.ProtocolVersion forVersion(
+int
+int)
+
+________________CLASS________________
+
+
+public class org.apache.http.MalformedChunkCodingException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.http.MethodNotSupportedException extends org.apache.http.HttpException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.NameValuePair extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getName()
+
+public abstract java.lang.String getValue()
+
+________________CLASS________________
+
+
+public class org.apache.http.NoHttpResponseException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.http.ParseException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.http.ProtocolException extends org.apache.http.HttpException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.ReasonPhraseCatalog extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getReason(
+int
+java.util.Locale)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.RequestLine extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getMethod()
+
+public abstract org.apache.http.ProtocolVersion getProtocolVersion()
+
+public abstract java.lang.String getUri()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.StatusLine extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.apache.http.ProtocolVersion getProtocolVersion()
+
+public abstract java.lang.String getReasonPhrase()
+
+public abstract int getStatusCode()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.TokenIterator extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean hasNext()
+
+public abstract java.lang.String nextToken()
+
+________________CLASS________________
+
+
+public class org.apache.http.UnsupportedHttpVersionException extends org.apache.http.ProtocolException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class org.apache.http.auth.AUTH extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String PROXY_AUTH
+
+public static final java.lang.String PROXY_AUTH_RESP
+
+public static final java.lang.String WWW_AUTH
+
+public static final java.lang.String WWW_AUTH_RESP
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.auth.AuthScheme extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/AuthenticationException; )
+public abstract org.apache.http.Header authenticate(
+org.apache.http.auth.Credentials
+org.apache.http.HttpRequest)
+
+public abstract java.lang.String getParameter(
+java.lang.String)
+
+public abstract java.lang.String getRealm()
+
+public abstract java.lang.String getSchemeName()
+
+public abstract boolean isComplete()
+
+public abstract boolean isConnectionBased()
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/MalformedChallengeException; )
+public abstract void processChallenge(
+org.apache.http.Header)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.auth.AuthSchemeFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.apache.http.auth.AuthScheme newInstance(
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public final class org.apache.http.auth.AuthSchemeRegistry extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Lorg/apache/http/auth/AuthSchemeFactory;>; )
+private final java.util.Map registeredSchemes
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public org.apache.http.auth.AuthScheme getAuthScheme(
+java.lang.String
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getSchemeNames()
+
+public void register(
+java.lang.String
+org.apache.http.auth.AuthSchemeFactory)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Lorg/apache/http/auth/AuthSchemeFactory;>;)V )
+public void setItems(
+java.util.Map)
+
+public void unregister(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.http.auth.AuthScope extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.http.auth.AuthScope ANY
+
+public static final java.lang.String ANY_HOST
+
+public static final int ANY_PORT
+
+public static final java.lang.String ANY_REALM
+
+public static final java.lang.String ANY_SCHEME
+
+private final java.lang.String host
+
+private final int port
+
+private final java.lang.String realm
+
+private final java.lang.String scheme
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+int)
+
+public void <init>(
+java.lang.String
+int
+java.lang.String)
+
+public void <init>(
+java.lang.String
+int
+java.lang.String
+java.lang.String)
+
+public void <init>(
+org.apache.http.auth.AuthScope)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getHost()
+
+public int getPort()
+
+public java.lang.String getRealm()
+
+public java.lang.String getScheme()
+
+public int hashCode()
+
+public int match(
+org.apache.http.auth.AuthScope)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.http.auth.AuthState extends java.lang.Object
+
+----------------FIELDS----------------
+
+private org.apache.http.auth.AuthScheme authScheme
+
+private org.apache.http.auth.AuthScope authScope
+
+private org.apache.http.auth.Credentials credentials
+----------------METHODS----------------
+
+public void <init>()
+
+public org.apache.http.auth.AuthScheme getAuthScheme()
+
+public org.apache.http.auth.AuthScope getAuthScope()
+
+public org.apache.http.auth.Credentials getCredentials()
+
+public void invalidate()
+
+public boolean isValid()
+
+public void setAuthScheme(
+org.apache.http.auth.AuthScheme)
+
+public void setAuthScope(
+org.apache.http.auth.AuthScope)
+
+public void setCredentials(
+org.apache.http.auth.Credentials)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.http.auth.AuthenticationException extends org.apache.http.ProtocolException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public final class org.apache.http.auth.BasicUserPrincipal extends java.lang.Object implements java.security.Principal
+
+----------------FIELDS----------------
+
+private final java.lang.String username
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getName()
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.auth.Credentials extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getPassword()
+
+public abstract java.security.Principal getUserPrincipal()
+
+________________CLASS________________
+
+
+public class org.apache.http.auth.InvalidCredentialsException extends org.apache.http.auth.AuthenticationException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class org.apache.http.auth.MalformedChallengeException extends org.apache.http.ProtocolException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class org.apache.http.auth.NTCredentials extends java.lang.Object implements org.apache.http.auth.Credentials
+
+----------------FIELDS----------------
+
+private final java.lang.String password
+
+private final org.apache.http.auth.NTUserPrincipal principal
+
+private final java.lang.String workstation
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getDomain()
+
+public java.lang.String getPassword()
+
+public java.lang.String getUserName()
+
+public java.security.Principal getUserPrincipal()
+
+public java.lang.String getWorkstation()
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.http.auth.NTUserPrincipal extends java.lang.Object implements java.security.Principal
+
+----------------FIELDS----------------
+
+private final java.lang.String domain
+
+private final java.lang.String ntname
+
+private final java.lang.String username
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getDomain()
+
+public java.lang.String getName()
+
+public java.lang.String getUsername()
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.http.auth.UsernamePasswordCredentials extends java.lang.Object implements org.apache.http.auth.Credentials
+
+----------------FIELDS----------------
+
+private final java.lang.String password
+
+private final org.apache.http.auth.BasicUserPrincipal principal
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getPassword()
+
+public java.lang.String getUserName()
+
+public java.security.Principal getUserPrincipal()
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.auth.params.AuthPNames extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String CREDENTIAL_CHARSET
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.params.HttpAbstractParamBean extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected final org.apache.http.params.HttpParams params
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public class org.apache.http.auth.params.AuthParamBean extends org.apache.http.params.HttpAbstractParamBean
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.params.HttpParams)
+
+public void setCredentialCharset(
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class org.apache.http.auth.params.AuthParams extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static java.lang.String getCredentialCharset(
+org.apache.http.params.HttpParams)
+
+public static void setCredentialCharset(
+org.apache.http.params.HttpParams
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.client.AuthenticationHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/MalformedChallengeException; )
+@dalvik.annotation.Signature (value =(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Ljava/util/Map<Ljava/lang/String;Lorg/apache/http/Header;>; )
+public abstract java.util.Map getChallenges(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+public abstract boolean isAuthenticationRequested(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/AuthenticationException; )
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Lorg/apache/http/Header;>;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/auth/AuthScheme; )
+public abstract org.apache.http.auth.AuthScheme selectScheme(
+java.util.Map
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.client.RedirectException extends org.apache.http.ProtocolException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class org.apache.http.client.CircularRedirectException extends org.apache.http.client.RedirectException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class org.apache.http.client.ClientProtocolException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.client.CookieStore extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void addCookie(
+org.apache.http.cookie.Cookie)
+
+public abstract void clear()
+
+public abstract boolean clearExpired(
+java.util.Date)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Lorg/apache/http/cookie/Cookie;>; )
+public abstract java.util.List getCookies()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.client.CredentialsProvider extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void clear()
+
+public abstract org.apache.http.auth.Credentials getCredentials(
+org.apache.http.auth.AuthScope)
+
+public abstract void setCredentials(
+org.apache.http.auth.AuthScope
+org.apache.http.auth.Credentials)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.client.HttpRequestRetryHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean retryRequest(
+java.io.IOException
+int
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.client.HttpResponseException extends org.apache.http.client.ClientProtocolException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final int statusCode
+----------------METHODS----------------
+
+public void <init>(
+int
+java.lang.String)
+
+public int getStatusCode()
+
+________________CLASS________________
+
+
+public class org.apache.http.client.NonRepeatableRequestException extends org.apache.http.ProtocolException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.client.RedirectHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/http/ProtocolException; )
+public abstract java.net.URI getLocationURI(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+public abstract boolean isRedirectRequested(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.client.RequestDirector extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public abstract org.apache.http.HttpResponse execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract interface class org.apache.http.client.ResponseHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Lorg/apache/http/HttpResponse;)TT; )
+@dalvik.annotation.Throws (value =Lorg/apache/http/client/ClientProtocolException;Ljava/io/IOException; )
+public abstract java.lang.Object handleResponse(
+org.apache.http.HttpResponse)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.client.UserTokenHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.Object getUserToken(
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.entity.StringEntity extends org.apache.http.entity.AbstractHttpEntity implements java.lang.Cloneable
+
+----------------FIELDS----------------
+
+protected final byte[] content
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getContent()
+
+public long getContentLength()
+
+public boolean isRepeatable()
+
+public boolean isStreaming()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeTo(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.http.client.entity.UrlEncodedFormEntity extends org.apache.http.entity.StringEntity
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+@dalvik.annotation.Signature (value =(Ljava/util/List<+Lorg/apache/http/NameValuePair;>;)V )
+public void <init>(
+java.util.List)
+@dalvik.annotation.Signature (value =(Ljava/util/List<+Lorg/apache/http/NameValuePair;>;Ljava/lang/String;)V )
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+java.util.List
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.client.methods.AbortableHttpRequest extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void abort()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void setConnectionRequest(
+org.apache.http.conn.ClientConnectionRequest)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void setReleaseTrigger(
+org.apache.http.conn.ConnectionReleaseTrigger)
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.message.AbstractHttpMessage extends java.lang.Object implements org.apache.http.HttpMessage
+
+----------------FIELDS----------------
+
+protected org.apache.http.message.HeaderGroup headergroup
+
+protected org.apache.http.params.HttpParams params
+----------------METHODS----------------
+
+protected void <init>()
+
+protected void <init>(
+org.apache.http.params.HttpParams)
+
+public void addHeader(
+java.lang.String
+java.lang.String)
+
+public void addHeader(
+org.apache.http.Header)
+
+public boolean containsHeader(
+java.lang.String)
+
+public org.apache.http.Header[] getAllHeaders()
+
+public org.apache.http.Header getFirstHeader(
+java.lang.String)
+
+public org.apache.http.Header[] getHeaders(
+java.lang.String)
+
+public org.apache.http.Header getLastHeader(
+java.lang.String)
+
+public org.apache.http.params.HttpParams getParams()
+
+public org.apache.http.HeaderIterator headerIterator()
+
+public org.apache.http.HeaderIterator headerIterator(
+java.lang.String)
+
+public void removeHeader(
+org.apache.http.Header)
+
+public void removeHeaders(
+java.lang.String)
+
+public void setHeader(
+java.lang.String
+java.lang.String)
+
+public void setHeader(
+org.apache.http.Header)
+
+public void setHeaders(
+org.apache.http.Header[])
+
+public void setParams(
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.client.methods.HttpUriRequest extends java.lang.Object implements org.apache.http.HttpRequest
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/UnsupportedOperationException; )
+public abstract void abort()
+
+public abstract java.lang.String getMethod()
+
+public abstract java.net.URI getURI()
+
+public abstract boolean isAborted()
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.client.methods.HttpRequestBase extends org.apache.http.message.AbstractHttpMessage implements org.apache.http.client.methods.HttpUriRequest, org.apache.http.client.methods.AbortableHttpRequest, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private java.util.concurrent.locks.Lock abortLock
+
+private boolean aborted
+
+private org.apache.http.conn.ClientConnectionRequest connRequest
+
+private org.apache.http.conn.ConnectionReleaseTrigger releaseTrigger
+
+private java.net.URI uri
+----------------METHODS----------------
+
+public void <init>()
+
+public void abort()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public abstract java.lang.String getMethod()
+
+public org.apache.http.ProtocolVersion getProtocolVersion()
+
+public org.apache.http.RequestLine getRequestLine()
+
+public java.net.URI getURI()
+
+public boolean isAborted()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setConnectionRequest(
+org.apache.http.conn.ClientConnectionRequest)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setReleaseTrigger(
+org.apache.http.conn.ConnectionReleaseTrigger)
+
+public void setURI(
+java.net.URI)
+
+________________CLASS________________
+
+
+public class org.apache.http.client.methods.HttpDelete extends org.apache.http.client.methods.HttpRequestBase
+
+----------------FIELDS----------------
+
+public static final java.lang.String METHOD_NAME
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.net.URI)
+
+public java.lang.String getMethod()
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.client.methods.HttpEntityEnclosingRequestBase extends org.apache.http.client.methods.HttpRequestBase implements org.apache.http.HttpEntityEnclosingRequest
+
+----------------FIELDS----------------
+
+private org.apache.http.HttpEntity entity
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public boolean expectContinue()
+
+public org.apache.http.HttpEntity getEntity()
+
+public void setEntity(
+org.apache.http.HttpEntity)
+
+________________CLASS________________
+
+
+public class org.apache.http.client.methods.HttpGet extends org.apache.http.client.methods.HttpRequestBase
+
+----------------FIELDS----------------
+
+public static final java.lang.String METHOD_NAME
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.net.URI)
+
+public java.lang.String getMethod()
+
+________________CLASS________________
+
+
+public class org.apache.http.client.methods.HttpHead extends org.apache.http.client.methods.HttpRequestBase
+
+----------------FIELDS----------------
+
+public static final java.lang.String METHOD_NAME
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.net.URI)
+
+public java.lang.String getMethod()
+
+________________CLASS________________
+
+
+public class org.apache.http.client.methods.HttpOptions extends org.apache.http.client.methods.HttpRequestBase
+
+----------------FIELDS----------------
+
+public static final java.lang.String METHOD_NAME
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.net.URI)
+@dalvik.annotation.Signature (value =(Lorg/apache/http/HttpResponse;)Ljava/util/Set<Ljava/lang/String;>; )
+public java.util.Set getAllowedMethods(
+org.apache.http.HttpResponse)
+
+public java.lang.String getMethod()
+
+________________CLASS________________
+
+
+public class org.apache.http.client.methods.HttpPost extends org.apache.http.client.methods.HttpEntityEnclosingRequestBase
+
+----------------FIELDS----------------
+
+public static final java.lang.String METHOD_NAME
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.net.URI)
+
+public java.lang.String getMethod()
+
+________________CLASS________________
+
+
+public class org.apache.http.client.methods.HttpPut extends org.apache.http.client.methods.HttpEntityEnclosingRequestBase
+
+----------------FIELDS----------------
+
+public static final java.lang.String METHOD_NAME
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.net.URI)
+
+public java.lang.String getMethod()
+
+________________CLASS________________
+
+
+public class org.apache.http.client.methods.HttpTrace extends org.apache.http.client.methods.HttpRequestBase
+
+----------------FIELDS----------------
+
+public static final java.lang.String METHOD_NAME
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.net.URI)
+
+public java.lang.String getMethod()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.params.CoreConnectionPNames extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONNECTION_TIMEOUT
+
+public static final java.lang.String MAX_HEADER_COUNT
+
+public static final java.lang.String MAX_LINE_LENGTH
+
+public static final java.lang.String SOCKET_BUFFER_SIZE
+
+public static final java.lang.String SO_LINGER
+
+public static final java.lang.String SO_TIMEOUT
+
+public static final java.lang.String STALE_CONNECTION_CHECK
+
+public static final java.lang.String TCP_NODELAY
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.params.CoreProtocolPNames extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String HTTP_CONTENT_CHARSET
+
+public static final java.lang.String HTTP_ELEMENT_CHARSET
+
+public static final java.lang.String ORIGIN_SERVER
+
+public static final java.lang.String PROTOCOL_VERSION
+
+public static final java.lang.String STRICT_TRANSFER_ENCODING
+
+public static final java.lang.String USER_AGENT
+
+public static final java.lang.String USE_EXPECT_CONTINUE
+
+public static final java.lang.String WAIT_FOR_CONTINUE
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.client.params.ClientPNames extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ALLOW_CIRCULAR_REDIRECTS
+
+public static final java.lang.String CONNECTION_MANAGER_FACTORY
+
+public static final java.lang.String CONNECTION_MANAGER_FACTORY_CLASS_NAME
+
+public static final java.lang.String COOKIE_POLICY
+
+public static final java.lang.String DEFAULT_HEADERS
+
+public static final java.lang.String DEFAULT_HOST
+
+public static final java.lang.String HANDLE_AUTHENTICATION
+
+public static final java.lang.String HANDLE_REDIRECTS
+
+public static final java.lang.String MAX_REDIRECTS
+
+public static final java.lang.String REJECT_RELATIVE_REDIRECT
+
+public static final java.lang.String VIRTUAL_HOST
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.cookie.params.CookieSpecPNames extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String DATE_PATTERNS
+
+public static final java.lang.String SINGLE_COOKIE_HEADER
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.params.ConnConnectionPNames extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String MAX_STATUS_LINE_GARBAGE
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.params.ConnManagerPNames extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String MAX_CONNECTIONS_PER_ROUTE
+
+public static final java.lang.String MAX_TOTAL_CONNECTIONS
+
+public static final java.lang.String TIMEOUT
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.params.ConnRoutePNames extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String DEFAULT_PROXY
+
+public static final java.lang.String FORCED_ROUTE
+
+public static final java.lang.String LOCAL_ADDRESS
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.client.params.AllClientPNames extends java.lang.Object implements org.apache.http.params.CoreConnectionPNames, org.apache.http.params.CoreProtocolPNames, org.apache.http.client.params.ClientPNames, org.apache.http.auth.params.AuthPNames, org.apache.http.cookie.params.CookieSpecPNames, org.apache.http.conn.params.ConnConnectionPNames, org.apache.http.conn.params.ConnManagerPNames, org.apache.http.conn.params.ConnRoutePNames
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public final class org.apache.http.client.params.AuthPolicy extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String BASIC
+
+public static final java.lang.String DIGEST
+
+public static final java.lang.String NTLM
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+
+public class org.apache.http.client.params.ClientParamBean extends org.apache.http.params.HttpAbstractParamBean
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.params.HttpParams)
+
+public void setAllowCircularRedirects(
+boolean)
+
+public void setConnectionManagerFactory(
+org.apache.http.conn.ClientConnectionManagerFactory)
+
+public void setConnectionManagerFactoryClassName(
+java.lang.String)
+
+public void setCookiePolicy(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<Lorg/apache/http/Header;>;)V )
+public void setDefaultHeaders(
+java.util.Collection)
+
+public void setDefaultHost(
+org.apache.http.HttpHost)
+
+public void setHandleAuthentication(
+boolean)
+
+public void setHandleRedirects(
+boolean)
+
+public void setMaxRedirects(
+int)
+
+public void setRejectRelativeRedirect(
+boolean)
+
+public void setVirtualHost(
+org.apache.http.HttpHost)
+
+________________CLASS________________
+
+
+public final class org.apache.http.client.params.CookiePolicy extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String BEST_MATCH
+
+public static final java.lang.String BROWSER_COMPATIBILITY
+
+public static final java.lang.String NETSCAPE
+
+public static final java.lang.String RFC_2109
+
+public static final java.lang.String RFC_2965
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+
+public class org.apache.http.client.params.HttpClientParams extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static java.lang.String getCookiePolicy(
+org.apache.http.params.HttpParams)
+
+public static boolean isAuthenticating(
+org.apache.http.params.HttpParams)
+
+public static boolean isRedirecting(
+org.apache.http.params.HttpParams)
+
+public static void setAuthenticating(
+org.apache.http.params.HttpParams
+boolean)
+
+public static void setCookiePolicy(
+org.apache.http.params.HttpParams
+java.lang.String)
+
+public static void setRedirecting(
+org.apache.http.params.HttpParams
+boolean)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.client.protocol.ClientContext extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String AUTHSCHEME_REGISTRY
+
+public static final java.lang.String AUTH_SCHEME_PREF
+
+public static final java.lang.String COOKIESPEC_REGISTRY
+
+public static final java.lang.String COOKIE_ORIGIN
+
+public static final java.lang.String COOKIE_SPEC
+
+public static final java.lang.String COOKIE_STORE
+
+public static final java.lang.String CREDS_PROVIDER
+
+public static final java.lang.String PROXY_AUTH_STATE
+
+public static final java.lang.String TARGET_AUTH_STATE
+
+public static final java.lang.String USER_TOKEN
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class org.apache.http.client.protocol.ClientContextConfigurer extends java.lang.Object implements org.apache.http.client.protocol.ClientContext
+
+----------------FIELDS----------------
+
+private final org.apache.http.protocol.HttpContext context
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Ljava/lang/String;>;)V )
+public void setAuthSchemePref(
+java.util.List)
+
+public void setAuthSchemeRegistry(
+org.apache.http.auth.AuthSchemeRegistry)
+
+public void setCookieSpecRegistry(
+org.apache.http.cookie.CookieSpecRegistry)
+
+public void setCookieStore(
+org.apache.http.client.CookieStore)
+
+public void setCredentialsProvider(
+org.apache.http.client.CredentialsProvider)
+
+________________CLASS________________
+
+
+public class org.apache.http.client.protocol.RequestAddCookies extends java.lang.Object implements org.apache.http.HttpRequestInterceptor
+
+----------------FIELDS----------------
+
+private final org.apache.commons.logging.Log log
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void process(
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.client.protocol.RequestDefaultHeaders extends java.lang.Object implements org.apache.http.HttpRequestInterceptor
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void process(
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.client.protocol.RequestProxyAuthentication extends java.lang.Object implements org.apache.http.HttpRequestInterceptor
+
+----------------FIELDS----------------
+
+private final org.apache.commons.logging.Log log
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void process(
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.client.protocol.RequestTargetAuthentication extends java.lang.Object implements org.apache.http.HttpRequestInterceptor
+
+----------------FIELDS----------------
+
+private final org.apache.commons.logging.Log log
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void process(
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.client.protocol.ResponseProcessCookies extends java.lang.Object implements org.apache.http.HttpResponseInterceptor
+
+----------------FIELDS----------------
+
+private final org.apache.commons.logging.Log log
+----------------METHODS----------------
+
+public void <init>()
+
+private void processCookies(
+org.apache.http.HeaderIterator
+org.apache.http.cookie.CookieSpec
+org.apache.http.cookie.CookieOrigin
+org.apache.http.client.CookieStore)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void process(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.client.utils.CloneUtils extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public static java.lang.Object clone(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.http.client.utils.URIUtils extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+public static java.net.URI createURI(
+java.lang.String
+java.lang.String
+int
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public static java.net.URI resolve(
+java.net.URI
+java.lang.String)
+
+public static java.net.URI resolve(
+java.net.URI
+java.net.URI)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+public static java.net.URI rewriteURI(
+java.net.URI
+org.apache.http.HttpHost)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+public static java.net.URI rewriteURI(
+java.net.URI
+org.apache.http.HttpHost
+boolean)
+
+________________CLASS________________
+
+
+public class org.apache.http.client.utils.URLEncodedUtils extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String CONTENT_TYPE
+
+private static final java.lang.String NAME_VALUE_SEPARATOR
+
+private static final java.lang.String PARAMETER_SEPARATOR
+----------------METHODS----------------
+
+public void <init>()
+
+private static java.lang.String decode(
+java.lang.String
+java.lang.String)
+
+private static java.lang.String encode(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/List<+Lorg/apache/http/NameValuePair;>;Ljava/lang/String;)Ljava/lang/String; )
+public static java.lang.String format(
+java.util.List
+java.lang.String)
+
+public static boolean isEncoded(
+org.apache.http.HttpEntity)
+@dalvik.annotation.Signature (value =(Ljava/net/URI;Ljava/lang/String;)Ljava/util/List<Lorg/apache/http/NameValuePair;>; )
+public static java.util.List parse(
+java.net.URI
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Lorg/apache/http/HttpEntity;)Ljava/util/List<Lorg/apache/http/NameValuePair;>; )
+public static java.util.List parse(
+org.apache.http.HttpEntity)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lorg/apache/http/NameValuePair;>;Ljava/util/Scanner;Ljava/lang/String;)V )
+public static void parse(
+java.util.List
+java.util.Scanner
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.EofSensorWatcher extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract boolean eofDetected(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract boolean streamAbort(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract boolean streamClosed(
+java.io.InputStream)
+
+________________CLASS________________
+
+
+public class org.apache.http.conn.BasicEofSensorWatcher extends java.lang.Object implements org.apache.http.conn.EofSensorWatcher
+
+----------------FIELDS----------------
+
+protected boolean attemptReuse
+
+protected org.apache.http.conn.ManagedClientConnection managedConn
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.conn.ManagedClientConnection
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean eofDetected(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean streamAbort(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean streamClosed(
+java.io.InputStream)
+
+________________CLASS________________
+
+
+public class org.apache.http.entity.HttpEntityWrapper extends java.lang.Object implements org.apache.http.HttpEntity
+
+----------------FIELDS----------------
+
+protected org.apache.http.HttpEntity wrappedEntity
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.HttpEntity)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void consumeContent()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getContent()
+
+public org.apache.http.Header getContentEncoding()
+
+public long getContentLength()
+
+public org.apache.http.Header getContentType()
+
+public boolean isChunked()
+
+public boolean isRepeatable()
+
+public boolean isStreaming()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeTo(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.ConnectionReleaseTrigger extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void abortConnection()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void releaseConnection()
+
+________________CLASS________________
+
+
+public class org.apache.http.conn.BasicManagedEntity extends org.apache.http.entity.HttpEntityWrapper implements org.apache.http.conn.ConnectionReleaseTrigger, org.apache.http.conn.EofSensorWatcher
+
+----------------FIELDS----------------
+
+protected final boolean attemptReuse
+
+protected org.apache.http.conn.ManagedClientConnection managedConn
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.HttpEntity
+org.apache.http.conn.ManagedClientConnection
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void abortConnection()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void consumeContent()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean eofDetected(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getContent()
+
+public boolean isRepeatable()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void releaseConnection()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void releaseManagedConnection()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean streamAbort(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean streamClosed(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeTo(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.ClientConnectionManager extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void closeExpiredConnections()
+
+public abstract void closeIdleConnections(
+long
+java.util.concurrent.TimeUnit)
+
+public abstract org.apache.http.conn.scheme.SchemeRegistry getSchemeRegistry()
+
+public abstract void releaseConnection(
+org.apache.http.conn.ManagedClientConnection
+long
+java.util.concurrent.TimeUnit)
+
+public abstract org.apache.http.conn.ClientConnectionRequest requestConnection(
+org.apache.http.conn.routing.HttpRoute
+java.lang.Object)
+
+public abstract void shutdown()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.ClientConnectionManagerFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.apache.http.conn.ClientConnectionManager newInstance(
+org.apache.http.params.HttpParams
+org.apache.http.conn.scheme.SchemeRegistry)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.ClientConnectionOperator extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.apache.http.conn.OperatedClientConnection createConnection()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void openConnection(
+org.apache.http.conn.OperatedClientConnection
+org.apache.http.HttpHost
+java.net.InetAddress
+org.apache.http.protocol.HttpContext
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void updateSecureConnection(
+org.apache.http.conn.OperatedClientConnection
+org.apache.http.HttpHost
+org.apache.http.protocol.HttpContext
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.ClientConnectionRequest extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void abortRequest()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Lorg/apache/http/conn/ConnectionPoolTimeoutException; )
+public abstract org.apache.http.conn.ManagedClientConnection getConnection(
+long
+java.util.concurrent.TimeUnit)
+
+________________CLASS________________
+
+
+public class org.apache.http.conn.ConnectTimeoutException extends java.io.InterruptedIOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.ConnectionKeepAliveStrategy extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract long getKeepAliveDuration(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.conn.ConnectionPoolTimeoutException extends org.apache.http.conn.ConnectTimeoutException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.http.conn.EofSensorInputStream extends java.io.InputStream implements org.apache.http.conn.ConnectionReleaseTrigger
+
+----------------FIELDS----------------
+
+private org.apache.http.conn.EofSensorWatcher eofWatcher
+
+private boolean selfClosed
+
+protected java.io.InputStream wrappedStream
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream
+org.apache.http.conn.EofSensorWatcher)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void abortConnection()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void checkAbort()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void checkClose()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void checkEOF(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected boolean isReadAllowed()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void releaseConnection()
+
+________________CLASS________________
+
+
+public class org.apache.http.conn.HttpHostConnectException extends java.net.ConnectException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final org.apache.http.HttpHost host
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.HttpHost
+java.net.ConnectException)
+
+public org.apache.http.HttpHost getHost()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.ManagedClientConnection extends java.lang.Object implements org.apache.http.HttpClientConnection, org.apache.http.HttpInetConnection, org.apache.http.conn.ConnectionReleaseTrigger
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.apache.http.conn.routing.HttpRoute getRoute()
+
+public abstract javax.net.ssl.SSLSession getSSLSession()
+
+public abstract java.lang.Object getState()
+
+public abstract boolean isMarkedReusable()
+
+public abstract boolean isSecure()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void layerProtocol(
+org.apache.http.protocol.HttpContext
+org.apache.http.params.HttpParams)
+
+public abstract void markReusable()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void open(
+org.apache.http.conn.routing.HttpRoute
+org.apache.http.protocol.HttpContext
+org.apache.http.params.HttpParams)
+
+public abstract void setIdleDuration(
+long
+java.util.concurrent.TimeUnit)
+
+public abstract void setState(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void tunnelProxy(
+org.apache.http.HttpHost
+boolean
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void tunnelTarget(
+boolean
+org.apache.http.params.HttpParams)
+
+public abstract void unmarkReusable()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.scheme.SocketFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/net/UnknownHostException;Lorg/apache/http/conn/ConnectTimeoutException; )
+public abstract java.net.Socket connectSocket(
+java.net.Socket
+java.lang.String
+int
+java.net.InetAddress
+int
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.net.Socket createSocket()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public abstract boolean isSecure(
+java.net.Socket)
+
+________________CLASS________________
+
+
+public final class org.apache.http.conn.MultihomePlainSocketFactory extends java.lang.Object implements org.apache.http.conn.scheme.SocketFactory
+
+----------------FIELDS----------------
+
+private static final org.apache.http.conn.MultihomePlainSocketFactory DEFAULT_FACTORY
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static org.apache.http.conn.MultihomePlainSocketFactory getSocketFactory()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket connectSocket(
+java.net.Socket
+java.lang.String
+int
+java.net.InetAddress
+int
+org.apache.http.params.HttpParams)
+
+public java.net.Socket createSocket()
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public final boolean isSecure(
+java.net.Socket)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.OperatedClientConnection extends java.lang.Object implements org.apache.http.HttpClientConnection, org.apache.http.HttpInetConnection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.net.Socket getSocket()
+
+public abstract org.apache.http.HttpHost getTargetHost()
+
+public abstract boolean isSecure()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void openCompleted(
+boolean
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void opening(
+java.net.Socket
+org.apache.http.HttpHost)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void update(
+java.net.Socket
+org.apache.http.HttpHost
+boolean
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public class org.apache.http.conn.params.ConnConnectionParamBean extends org.apache.http.params.HttpAbstractParamBean
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.params.HttpParams)
+
+public void setMaxStatusLineGarbage(
+int)
+
+________________CLASS________________
+
+
+public class org.apache.http.conn.params.ConnManagerParamBean extends org.apache.http.params.HttpAbstractParamBean
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.params.HttpParams)
+
+public void setConnectionsPerRoute(
+org.apache.http.conn.params.ConnPerRouteBean)
+
+public void setMaxTotalConnections(
+int)
+
+public void setTimeout(
+long)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.params.ConnPerRoute extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int getMaxForRoute(
+org.apache.http.conn.routing.HttpRoute)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/http/conn/params/ConnManagerParams; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.http.conn.params.ConnManagerParams$1 extends java.lang.Object implements org.apache.http.conn.params.ConnPerRoute
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public int getMaxForRoute(
+org.apache.http.conn.routing.HttpRoute)
+
+________________CLASS________________
+
+
+public final class org.apache.http.conn.params.ConnManagerParams extends java.lang.Object implements org.apache.http.conn.params.ConnManagerPNames
+
+----------------FIELDS----------------
+
+private static final org.apache.http.conn.params.ConnPerRoute DEFAULT_CONN_PER_ROUTE
+
+public static final int DEFAULT_MAX_TOTAL_CONNECTIONS
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static org.apache.http.conn.params.ConnPerRoute getMaxConnectionsPerRoute(
+org.apache.http.params.HttpParams)
+
+public static int getMaxTotalConnections(
+org.apache.http.params.HttpParams)
+
+public static long getTimeout(
+org.apache.http.params.HttpParams)
+
+public static void setMaxConnectionsPerRoute(
+org.apache.http.params.HttpParams
+org.apache.http.conn.params.ConnPerRoute)
+
+public static void setMaxTotalConnections(
+org.apache.http.params.HttpParams
+int)
+
+public static void setTimeout(
+org.apache.http.params.HttpParams
+long)
+
+________________CLASS________________
+
+
+public final class org.apache.http.conn.params.ConnPerRouteBean extends java.lang.Object implements org.apache.http.conn.params.ConnPerRoute
+
+----------------FIELDS----------------
+
+public static final int DEFAULT_MAX_CONNECTIONS_PER_ROUTE
+
+private int defaultMax
+@dalvik.annotation.Signature (value =Ljava/util/Map<Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Integer;>; )
+private final java.util.Map maxPerHostMap
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+public int getDefaultMax()
+
+public int getMaxForRoute(
+org.apache.http.conn.routing.HttpRoute)
+
+public void setDefaultMaxPerRoute(
+int)
+
+public void setMaxForRoute(
+org.apache.http.conn.routing.HttpRoute
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Integer;>;)V )
+public void setMaxForRoutes(
+java.util.Map)
+
+________________CLASS________________
+
+
+public class org.apache.http.conn.params.ConnRouteParamBean extends org.apache.http.params.HttpAbstractParamBean
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.params.HttpParams)
+
+public void setDefaultProxy(
+org.apache.http.HttpHost)
+
+public void setForcedRoute(
+org.apache.http.conn.routing.HttpRoute)
+
+public void setLocalAddress(
+java.net.InetAddress)
+
+________________CLASS________________
+
+
+public class org.apache.http.conn.params.ConnRouteParams extends java.lang.Object implements org.apache.http.conn.params.ConnRoutePNames
+
+----------------FIELDS----------------
+
+public static final org.apache.http.HttpHost NO_HOST
+
+public static final org.apache.http.conn.routing.HttpRoute NO_ROUTE
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static org.apache.http.HttpHost getDefaultProxy(
+org.apache.http.params.HttpParams)
+
+public static org.apache.http.conn.routing.HttpRoute getForcedRoute(
+org.apache.http.params.HttpParams)
+
+public static java.net.InetAddress getLocalAddress(
+org.apache.http.params.HttpParams)
+
+public static void setDefaultProxy(
+org.apache.http.params.HttpParams
+org.apache.http.HttpHost)
+
+public static void setForcedRoute(
+org.apache.http.params.HttpParams
+org.apache.http.conn.routing.HttpRoute)
+
+public static void setLocalAddress(
+org.apache.http.params.HttpParams
+java.net.InetAddress)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.routing.HttpRouteDirector extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int COMPLETE
+
+public static final int CONNECT_PROXY
+
+public static final int CONNECT_TARGET
+
+public static final int LAYER_PROTOCOL
+
+public static final int TUNNEL_PROXY
+
+public static final int TUNNEL_TARGET
+
+public static final int UNREACHABLE
+----------------METHODS----------------
+
+public abstract int nextStep(
+org.apache.http.conn.routing.RouteInfo
+org.apache.http.conn.routing.RouteInfo)
+
+________________CLASS________________
+
+
+public class org.apache.http.conn.routing.BasicRouteDirector extends java.lang.Object implements org.apache.http.conn.routing.HttpRouteDirector
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected int directStep(
+org.apache.http.conn.routing.RouteInfo
+org.apache.http.conn.routing.RouteInfo)
+
+protected int firstStep(
+org.apache.http.conn.routing.RouteInfo)
+
+public int nextStep(
+org.apache.http.conn.routing.RouteInfo
+org.apache.http.conn.routing.RouteInfo)
+
+protected int proxiedStep(
+org.apache.http.conn.routing.RouteInfo
+org.apache.http.conn.routing.RouteInfo)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/http/conn/routing/RouteInfo$LayerType;Lorg/apache/http/conn/routing/RouteInfo$TunnelType; )
+public abstract interface class org.apache.http.conn.routing.RouteInfo extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int getHopCount()
+
+public abstract org.apache.http.HttpHost getHopTarget(
+int)
+
+public abstract org.apache.http.conn.routing.RouteInfo$LayerType getLayerType()
+
+public abstract java.net.InetAddress getLocalAddress()
+
+public abstract org.apache.http.HttpHost getProxyHost()
+
+public abstract org.apache.http.HttpHost getTargetHost()
+
+public abstract org.apache.http.conn.routing.RouteInfo$TunnelType getTunnelType()
+
+public abstract boolean isLayered()
+
+public abstract boolean isSecure()
+
+public abstract boolean isTunnelled()
+
+________________CLASS________________
+
+
+public final class org.apache.http.conn.routing.HttpRoute extends java.lang.Object implements org.apache.http.conn.routing.RouteInfo, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private final org.apache.http.conn.routing.RouteInfo$LayerType layered
+
+private final java.net.InetAddress localAddress
+
+private final org.apache.http.HttpHost[] proxyChain
+
+private final boolean secure
+
+private final org.apache.http.HttpHost targetHost
+
+private final org.apache.http.conn.routing.RouteInfo$TunnelType tunnelled
+----------------METHODS----------------
+
+private void <init>(
+java.net.InetAddress
+org.apache.http.HttpHost
+org.apache.http.HttpHost[]
+boolean
+org.apache.http.conn.routing.RouteInfo$TunnelType
+org.apache.http.conn.routing.RouteInfo$LayerType)
+
+public void <init>(
+org.apache.http.HttpHost)
+
+public void <init>(
+org.apache.http.HttpHost
+java.net.InetAddress
+org.apache.http.HttpHost
+boolean)
+
+public void <init>(
+org.apache.http.HttpHost
+java.net.InetAddress
+org.apache.http.HttpHost
+boolean
+org.apache.http.conn.routing.RouteInfo$TunnelType
+org.apache.http.conn.routing.RouteInfo$LayerType)
+
+public void <init>(
+org.apache.http.HttpHost
+java.net.InetAddress
+boolean)
+
+public void <init>(
+org.apache.http.HttpHost
+java.net.InetAddress
+org.apache.http.HttpHost[]
+boolean
+org.apache.http.conn.routing.RouteInfo$TunnelType
+org.apache.http.conn.routing.RouteInfo$LayerType)
+
+private static org.apache.http.HttpHost[] toChain(
+org.apache.http.HttpHost)
+
+private static org.apache.http.HttpHost[] toChain(
+org.apache.http.HttpHost[])
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public final boolean equals(
+java.lang.Object)
+
+public final int getHopCount()
+
+public final org.apache.http.HttpHost getHopTarget(
+int)
+
+public final org.apache.http.conn.routing.RouteInfo$LayerType getLayerType()
+
+public final java.net.InetAddress getLocalAddress()
+
+public final org.apache.http.HttpHost getProxyHost()
+
+public final org.apache.http.HttpHost getTargetHost()
+
+public final org.apache.http.conn.routing.RouteInfo$TunnelType getTunnelType()
+
+public final int hashCode()
+
+public final boolean isLayered()
+
+public final boolean isSecure()
+
+public final boolean isTunnelled()
+
+public final java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.routing.HttpRoutePlanner extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException; )
+public abstract org.apache.http.conn.routing.HttpRoute determineRoute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =LayerType )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/http/conn/routing/RouteInfo; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lorg/apache/http/conn/routing/RouteInfo$LayerType;>; )
+public final class org.apache.http.conn.routing.RouteInfo$LayerType extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final org.apache.http.conn.routing.RouteInfo$LayerType[] $VALUES
+
+public static final org.apache.http.conn.routing.RouteInfo$LayerType LAYERED
+
+public static final org.apache.http.conn.routing.RouteInfo$LayerType PLAIN
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static org.apache.http.conn.routing.RouteInfo$LayerType valueOf(
+java.lang.String)
+
+public static org.apache.http.conn.routing.RouteInfo$LayerType[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =TunnelType )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lorg/apache/http/conn/routing/RouteInfo$TunnelType;>; )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/http/conn/routing/RouteInfo; )
+public final class org.apache.http.conn.routing.RouteInfo$TunnelType extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final org.apache.http.conn.routing.RouteInfo$TunnelType[] $VALUES
+
+public static final org.apache.http.conn.routing.RouteInfo$TunnelType PLAIN
+
+public static final org.apache.http.conn.routing.RouteInfo$TunnelType TUNNELLED
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static org.apache.http.conn.routing.RouteInfo$TunnelType valueOf(
+java.lang.String)
+
+public static org.apache.http.conn.routing.RouteInfo$TunnelType[] values()
+
+________________CLASS________________
+
+
+public final class org.apache.http.conn.routing.RouteTracker extends java.lang.Object implements org.apache.http.conn.routing.RouteInfo, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private boolean connected
+
+private org.apache.http.conn.routing.RouteInfo$LayerType layered
+
+private final java.net.InetAddress localAddress
+
+private org.apache.http.HttpHost[] proxyChain
+
+private boolean secure
+
+private final org.apache.http.HttpHost targetHost
+
+private org.apache.http.conn.routing.RouteInfo$TunnelType tunnelled
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.HttpHost
+java.net.InetAddress)
+
+public void <init>(
+org.apache.http.conn.routing.HttpRoute)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public final void connectProxy(
+org.apache.http.HttpHost
+boolean)
+
+public final void connectTarget(
+boolean)
+
+public final boolean equals(
+java.lang.Object)
+
+public final int getHopCount()
+
+public final org.apache.http.HttpHost getHopTarget(
+int)
+
+public final org.apache.http.conn.routing.RouteInfo$LayerType getLayerType()
+
+public final java.net.InetAddress getLocalAddress()
+
+public final org.apache.http.HttpHost getProxyHost()
+
+public final org.apache.http.HttpHost getTargetHost()
+
+public final org.apache.http.conn.routing.RouteInfo$TunnelType getTunnelType()
+
+public final int hashCode()
+
+public final boolean isConnected()
+
+public final boolean isLayered()
+
+public final boolean isSecure()
+
+public final boolean isTunnelled()
+
+public final void layerProtocol(
+boolean)
+
+public final org.apache.http.conn.routing.HttpRoute toRoute()
+
+public final java.lang.String toString()
+
+public final void tunnelProxy(
+org.apache.http.HttpHost
+boolean)
+
+public final void tunnelTarget(
+boolean)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.scheme.HostNameResolver extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.net.InetAddress resolve(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.scheme.LayeredSocketFactory extends java.lang.Object implements org.apache.http.conn.scheme.SocketFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/net/UnknownHostException; )
+public abstract java.net.Socket createSocket(
+java.net.Socket
+java.lang.String
+int
+boolean)
+
+________________CLASS________________
+
+
+public final class org.apache.http.conn.scheme.PlainSocketFactory extends java.lang.Object implements org.apache.http.conn.scheme.SocketFactory
+
+----------------FIELDS----------------
+
+private static final org.apache.http.conn.scheme.PlainSocketFactory DEFAULT_FACTORY
+
+private final org.apache.http.conn.scheme.HostNameResolver nameResolver
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+org.apache.http.conn.scheme.HostNameResolver)
+
+public static org.apache.http.conn.scheme.PlainSocketFactory getSocketFactory()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket connectSocket(
+java.net.Socket
+java.lang.String
+int
+java.net.InetAddress
+int
+org.apache.http.params.HttpParams)
+
+public java.net.Socket createSocket()
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public final boolean isSecure(
+java.net.Socket)
+
+________________CLASS________________
+
+
+public final class org.apache.http.conn.scheme.Scheme extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int defaultPort
+
+private final boolean layered
+
+private final java.lang.String name
+
+private final org.apache.http.conn.scheme.SocketFactory socketFactory
+
+private java.lang.String stringRep
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+org.apache.http.conn.scheme.SocketFactory
+int)
+
+public final boolean equals(
+java.lang.Object)
+
+public final int getDefaultPort()
+
+public final java.lang.String getName()
+
+public final org.apache.http.conn.scheme.SocketFactory getSocketFactory()
+
+public int hashCode()
+
+public final boolean isLayered()
+
+public final int resolvePort(
+int)
+
+public final java.lang.String toString()
+
+________________CLASS________________
+
+
+public final class org.apache.http.conn.scheme.SchemeRegistry extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Lorg/apache/http/conn/scheme/Scheme;>; )
+private final java.util.Map registeredSchemes
+----------------METHODS----------------
+
+public void <init>()
+
+public final org.apache.http.conn.scheme.Scheme get(
+java.lang.String)
+
+public final org.apache.http.conn.scheme.Scheme getScheme(
+java.lang.String)
+
+public final org.apache.http.conn.scheme.Scheme getScheme(
+org.apache.http.HttpHost)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public final java.util.List getSchemeNames()
+
+public final org.apache.http.conn.scheme.Scheme register(
+org.apache.http.conn.scheme.Scheme)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Lorg/apache/http/conn/scheme/Scheme;>;)V )
+public void setItems(
+java.util.Map)
+
+public final org.apache.http.conn.scheme.Scheme unregister(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.conn.ssl.X509HostnameVerifier extends java.lang.Object implements javax.net.ssl.HostnameVerifier
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public abstract void verify(
+java.lang.String
+java.security.cert.X509Certificate)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void verify(
+java.lang.String
+javax.net.ssl.SSLSocket)
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public abstract void verify(
+java.lang.String
+java.lang.String[]
+java.lang.String[])
+
+public abstract boolean verify(
+java.lang.String
+javax.net.ssl.SSLSession)
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.conn.ssl.AbstractVerifier extends java.lang.Object implements org.apache.http.conn.ssl.X509HostnameVerifier
+
+----------------FIELDS----------------
+
+private static final java.lang.String[] BAD_COUNTRY_2LDS
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static boolean acceptableCountryWildcard(
+java.lang.String)
+
+public static int countDots(
+java.lang.String)
+
+public static java.lang.String[] getCNs(
+java.security.cert.X509Certificate)
+
+public static java.lang.String[] getDNSSubjectAlts(
+java.security.cert.X509Certificate)
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public final void verify(
+java.lang.String
+java.security.cert.X509Certificate)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void verify(
+java.lang.String
+javax.net.ssl.SSLSocket)
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public final void verify(
+java.lang.String
+java.lang.String[]
+java.lang.String[]
+boolean)
+
+public final boolean verify(
+java.lang.String
+javax.net.ssl.SSLSession)
+
+________________CLASS________________
+
+
+public class org.apache.http.conn.ssl.AllowAllHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public final java.lang.String toString()
+
+public final void verify(
+java.lang.String
+java.lang.String[]
+java.lang.String[])
+
+________________CLASS________________
+
+
+public class org.apache.http.conn.ssl.BrowserCompatHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public final java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public final void verify(
+java.lang.String
+java.lang.String[]
+java.lang.String[])
+
+________________CLASS________________
+
+
+public class org.apache.http.conn.ssl.SSLSocketFactory extends java.lang.Object implements org.apache.http.conn.scheme.LayeredSocketFactory
+
+----------------FIELDS----------------
+
+public static final org.apache.http.conn.ssl.X509HostnameVerifier ALLOW_ALL_HOSTNAME_VERIFIER
+
+public static final org.apache.http.conn.ssl.X509HostnameVerifier BROWSER_COMPATIBLE_HOSTNAME_VERIFIER
+
+private static final org.apache.http.conn.ssl.SSLSocketFactory DEFAULT_FACTORY
+
+public static final java.lang.String SSL
+
+public static final java.lang.String SSLV2
+
+public static final org.apache.http.conn.ssl.X509HostnameVerifier STRICT_HOSTNAME_VERIFIER
+
+public static final java.lang.String TLS
+
+private org.apache.http.conn.ssl.X509HostnameVerifier hostnameVerifier
+
+private final org.apache.http.conn.scheme.HostNameResolver nameResolver
+
+private final javax.net.ssl.SSLSocketFactory socketfactory
+
+private final javax.net.ssl.SSLContext sslcontext
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/KeyManagementException;Ljava/security/KeyStoreException;Ljava/security/UnrecoverableKeyException; )
+public void <init>(
+java.lang.String
+java.security.KeyStore
+java.lang.String
+java.security.KeyStore
+java.security.SecureRandom
+org.apache.http.conn.scheme.HostNameResolver)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/KeyManagementException;Ljava/security/KeyStoreException;Ljava/security/UnrecoverableKeyException; )
+public void <init>(
+java.security.KeyStore)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/KeyManagementException;Ljava/security/KeyStoreException;Ljava/security/UnrecoverableKeyException; )
+public void <init>(
+java.security.KeyStore
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/KeyManagementException;Ljava/security/KeyStoreException;Ljava/security/UnrecoverableKeyException; )
+public void <init>(
+java.security.KeyStore
+java.lang.String
+java.security.KeyStore)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException;Ljava/security/NoSuchAlgorithmException;Ljava/security/UnrecoverableKeyException; )
+private static javax.net.ssl.KeyManager[] createKeyManagers(
+java.security.KeyStore
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException;Ljava/security/NoSuchAlgorithmException; )
+private static javax.net.ssl.TrustManager[] createTrustManagers(
+java.security.KeyStore)
+
+public static org.apache.http.conn.ssl.SSLSocketFactory getSocketFactory()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket connectSocket(
+java.net.Socket
+java.lang.String
+int
+java.net.InetAddress
+int
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket createSocket()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/net/UnknownHostException; )
+public java.net.Socket createSocket(
+java.net.Socket
+java.lang.String
+int
+boolean)
+
+public org.apache.http.conn.ssl.X509HostnameVerifier getHostnameVerifier()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public boolean isSecure(
+java.net.Socket)
+
+public void setHostnameVerifier(
+org.apache.http.conn.ssl.X509HostnameVerifier)
+
+________________CLASS________________
+
+
+public class org.apache.http.conn.ssl.StrictHostnameVerifier extends org.apache.http.conn.ssl.AbstractVerifier
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public final java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public final void verify(
+java.lang.String
+java.lang.String[]
+java.lang.String[])
+
+________________CLASS________________
+
+
+public class org.apache.http.conn.util.InetAddressUtils extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.util.regex.Pattern IPV4_PATTERN
+
+private static final java.util.regex.Pattern IPV6_HEX_COMPRESSED_PATTERN
+
+private static final java.util.regex.Pattern IPV6_STD_PATTERN
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static boolean isIPv4Address(
+java.lang.String)
+
+public static boolean isIPv6Address(
+java.lang.String)
+
+public static boolean isIPv6HexCompressedAddress(
+java.lang.String)
+
+public static boolean isIPv6StdAddress(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.cookie.Cookie extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getComment()
+
+public abstract java.lang.String getCommentURL()
+
+public abstract java.lang.String getDomain()
+
+public abstract java.util.Date getExpiryDate()
+
+public abstract java.lang.String getName()
+
+public abstract java.lang.String getPath()
+
+public abstract int[] getPorts()
+
+public abstract java.lang.String getValue()
+
+public abstract int getVersion()
+
+public abstract boolean isExpired(
+java.util.Date)
+
+public abstract boolean isPersistent()
+
+public abstract boolean isSecure()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.cookie.ClientCookie extends java.lang.Object implements org.apache.http.cookie.Cookie
+
+----------------FIELDS----------------
+
+public static final java.lang.String COMMENTURL_ATTR
+
+public static final java.lang.String COMMENT_ATTR
+
+public static final java.lang.String DISCARD_ATTR
+
+public static final java.lang.String DOMAIN_ATTR
+
+public static final java.lang.String EXPIRES_ATTR
+
+public static final java.lang.String MAX_AGE_ATTR
+
+public static final java.lang.String PATH_ATTR
+
+public static final java.lang.String PORT_ATTR
+
+public static final java.lang.String SECURE_ATTR
+
+public static final java.lang.String VERSION_ATTR
+----------------METHODS----------------
+
+public abstract boolean containsAttribute(
+java.lang.String)
+
+public abstract java.lang.String getAttribute(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.cookie.CookieAttributeHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean match(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public abstract void parse(
+org.apache.http.cookie.SetCookie
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public abstract void validate(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/io/Serializable;Ljava/util/Comparator<Lorg/apache/http/cookie/Cookie;>; )
+public class org.apache.http.cookie.CookieIdentityComparator extends java.lang.Object implements java.io.Serializable, java.util.Comparator
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+public int compare(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.Cookie)
+
+________________CLASS________________
+
+
+public final class org.apache.http.cookie.CookieOrigin extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final java.lang.String host
+
+private final java.lang.String path
+
+private final int port
+
+private final boolean secure
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+int
+java.lang.String
+boolean)
+
+public java.lang.String getHost()
+
+public java.lang.String getPath()
+
+public int getPort()
+
+public boolean isSecure()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/io/Serializable;Ljava/util/Comparator<Lorg/apache/http/cookie/Cookie;>; )
+public class org.apache.http.cookie.CookiePathComparator extends java.lang.Object implements java.io.Serializable, java.util.Comparator
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+private java.lang.String normalizePath(
+org.apache.http.cookie.Cookie)
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+public int compare(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.Cookie)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.cookie.CookieSpec extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lorg/apache/http/cookie/Cookie;>;)Ljava/util/List<Lorg/apache/http/Header;>; )
+public abstract java.util.List formatCookies(
+java.util.List)
+
+public abstract int getVersion()
+
+public abstract org.apache.http.Header getVersionHeader()
+
+public abstract boolean match(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Signature (value =(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List<Lorg/apache/http/cookie/Cookie;>; )
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public abstract java.util.List parse(
+org.apache.http.Header
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public abstract void validate(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.cookie.CookieSpecFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.apache.http.cookie.CookieSpec newInstance(
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public final class org.apache.http.cookie.CookieSpecRegistry extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Lorg/apache/http/cookie/CookieSpecFactory;>; )
+private final java.util.Map registeredSpecs
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public org.apache.http.cookie.CookieSpec getCookieSpec(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public org.apache.http.cookie.CookieSpec getCookieSpec(
+java.lang.String
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getSpecNames()
+
+public void register(
+java.lang.String
+org.apache.http.cookie.CookieSpecFactory)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Lorg/apache/http/cookie/CookieSpecFactory;>;)V )
+public void setItems(
+java.util.Map)
+
+public void unregister(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.http.cookie.MalformedCookieException extends org.apache.http.ProtocolException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.cookie.SM extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String COOKIE
+
+public static final java.lang.String COOKIE2
+
+public static final java.lang.String SET_COOKIE
+
+public static final java.lang.String SET_COOKIE2
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.cookie.SetCookie extends java.lang.Object implements org.apache.http.cookie.Cookie
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void setComment(
+java.lang.String)
+
+public abstract void setDomain(
+java.lang.String)
+
+public abstract void setExpiryDate(
+java.util.Date)
+
+public abstract void setPath(
+java.lang.String)
+
+public abstract void setSecure(
+boolean)
+
+public abstract void setValue(
+java.lang.String)
+
+public abstract void setVersion(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.cookie.SetCookie2 extends java.lang.Object implements org.apache.http.cookie.SetCookie
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void setCommentURL(
+java.lang.String)
+
+public abstract void setDiscard(
+boolean)
+
+public abstract void setPorts(
+int[])
+
+________________CLASS________________
+
+
+public class org.apache.http.cookie.params.CookieSpecParamBean extends org.apache.http.params.HttpAbstractParamBean
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<Ljava/lang/String;>;)V )
+public void setDatePatterns(
+java.util.Collection)
+
+public void setSingleHeader(
+boolean)
+
+________________CLASS________________
+
+
+public class org.apache.http.entity.BasicHttpEntity extends org.apache.http.entity.AbstractHttpEntity
+
+----------------FIELDS----------------
+
+private java.io.InputStream content
+
+private boolean contentObtained
+
+private long length
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void consumeContent()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public java.io.InputStream getContent()
+
+public long getContentLength()
+
+public boolean isRepeatable()
+
+public boolean isStreaming()
+
+public void setContent(
+java.io.InputStream)
+
+public void setContentLength(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeTo(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.http.entity.BufferedHttpEntity extends org.apache.http.entity.HttpEntityWrapper
+
+----------------FIELDS----------------
+
+private final byte[] buffer
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+org.apache.http.HttpEntity)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getContent()
+
+public long getContentLength()
+
+public boolean isChunked()
+
+public boolean isRepeatable()
+
+public boolean isStreaming()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeTo(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.http.entity.ByteArrayEntity extends org.apache.http.entity.AbstractHttpEntity implements java.lang.Cloneable
+
+----------------FIELDS----------------
+
+protected final byte[] content
+----------------METHODS----------------
+
+public void <init>(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public java.io.InputStream getContent()
+
+public long getContentLength()
+
+public boolean isRepeatable()
+
+public boolean isStreaming()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeTo(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.entity.ContentLengthStrategy extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CHUNKED
+
+public static final int IDENTITY
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException; )
+public abstract long determineLength(
+org.apache.http.HttpMessage)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.entity.ContentProducer extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void writeTo(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.http.entity.EntityTemplate extends org.apache.http.entity.AbstractHttpEntity
+
+----------------FIELDS----------------
+
+private final org.apache.http.entity.ContentProducer contentproducer
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.entity.ContentProducer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void consumeContent()
+
+public java.io.InputStream getContent()
+
+public long getContentLength()
+
+public boolean isRepeatable()
+
+public boolean isStreaming()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeTo(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.http.entity.FileEntity extends org.apache.http.entity.AbstractHttpEntity implements java.lang.Cloneable
+
+----------------FIELDS----------------
+
+protected final java.io.File file
+----------------METHODS----------------
+
+public void <init>(
+java.io.File
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getContent()
+
+public long getContentLength()
+
+public boolean isRepeatable()
+
+public boolean isStreaming()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeTo(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.http.entity.InputStreamEntity extends org.apache.http.entity.AbstractHttpEntity
+
+----------------FIELDS----------------
+
+private static final int BUFFER_SIZE
+
+private boolean consumed
+
+private final java.io.InputStream content
+
+private final long length
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void consumeContent()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getContent()
+
+public long getContentLength()
+
+public boolean isRepeatable()
+
+public boolean isStreaming()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeTo(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.http.entity.SerializableEntity extends org.apache.http.entity.AbstractHttpEntity
+
+----------------FIELDS----------------
+
+private java.io.Serializable objRef
+
+private byte[] objSer
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.Serializable
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void createBytes(
+java.io.Serializable)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalStateException; )
+public java.io.InputStream getContent()
+
+public long getContentLength()
+
+public boolean isRepeatable()
+
+public boolean isStreaming()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeTo(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.impl.AbstractHttpClientConnection extends java.lang.Object implements org.apache.http.HttpClientConnection
+
+----------------FIELDS----------------
+
+private final org.apache.http.impl.entity.EntityDeserializer entitydeserializer
+
+private final org.apache.http.impl.entity.EntitySerializer entityserializer
+
+private org.apache.http.io.SessionInputBuffer inbuffer
+
+private org.apache.http.impl.HttpConnectionMetricsImpl metrics
+
+private org.apache.http.io.SessionOutputBuffer outbuffer
+
+private org.apache.http.io.HttpMessageWriter requestWriter
+
+private org.apache.http.io.HttpMessageParser responseParser
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+protected abstract void assertOpen()
+
+protected org.apache.http.impl.entity.EntityDeserializer createEntityDeserializer()
+
+protected org.apache.http.impl.entity.EntitySerializer createEntitySerializer()
+
+protected org.apache.http.HttpResponseFactory createHttpResponseFactory()
+
+protected org.apache.http.io.HttpMessageWriter createRequestWriter(
+org.apache.http.io.SessionOutputBuffer
+org.apache.http.params.HttpParams)
+
+protected org.apache.http.io.HttpMessageParser createResponseParser(
+org.apache.http.io.SessionInputBuffer
+org.apache.http.HttpResponseFactory
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void doFlush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+
+public org.apache.http.HttpConnectionMetrics getMetrics()
+
+protected void init(
+org.apache.http.io.SessionInputBuffer
+org.apache.http.io.SessionOutputBuffer
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean isResponseAvailable(
+int)
+
+public boolean isStale()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void receiveResponseEntity(
+org.apache.http.HttpResponse)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public org.apache.http.HttpResponse receiveResponseHeader()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void sendRequestEntity(
+org.apache.http.HttpEntityEnclosingRequest)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void sendRequestHeader(
+org.apache.http.HttpRequest)
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.impl.AbstractHttpServerConnection extends java.lang.Object implements org.apache.http.HttpServerConnection
+
+----------------FIELDS----------------
+
+private final org.apache.http.impl.entity.EntityDeserializer entitydeserializer
+
+private final org.apache.http.impl.entity.EntitySerializer entityserializer
+
+private org.apache.http.io.SessionInputBuffer inbuffer
+
+private org.apache.http.impl.HttpConnectionMetricsImpl metrics
+
+private org.apache.http.io.SessionOutputBuffer outbuffer
+
+private org.apache.http.io.HttpMessageParser requestParser
+
+private org.apache.http.io.HttpMessageWriter responseWriter
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+protected abstract void assertOpen()
+
+protected org.apache.http.impl.entity.EntityDeserializer createEntityDeserializer()
+
+protected org.apache.http.impl.entity.EntitySerializer createEntitySerializer()
+
+protected org.apache.http.HttpRequestFactory createHttpRequestFactory()
+
+protected org.apache.http.io.HttpMessageParser createRequestParser(
+org.apache.http.io.SessionInputBuffer
+org.apache.http.HttpRequestFactory
+org.apache.http.params.HttpParams)
+
+protected org.apache.http.io.HttpMessageWriter createResponseWriter(
+org.apache.http.io.SessionOutputBuffer
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void doFlush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+
+public org.apache.http.HttpConnectionMetrics getMetrics()
+
+protected void init(
+org.apache.http.io.SessionInputBuffer
+org.apache.http.io.SessionOutputBuffer
+org.apache.http.params.HttpParams)
+
+public boolean isStale()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void receiveRequestEntity(
+org.apache.http.HttpEntityEnclosingRequest)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public org.apache.http.HttpRequest receiveRequestHeader()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void sendResponseEntity(
+org.apache.http.HttpResponse)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void sendResponseHeader(
+org.apache.http.HttpResponse)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.DefaultConnectionReuseStrategy extends java.lang.Object implements org.apache.http.ConnectionReuseStrategy
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected org.apache.http.TokenIterator createTokenIterator(
+org.apache.http.HeaderIterator)
+
+public boolean keepAlive(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.SocketHttpClientConnection extends org.apache.http.impl.AbstractHttpClientConnection implements org.apache.http.HttpInetConnection
+
+----------------FIELDS----------------
+
+private volatile boolean open
+
+private java.net.Socket socket
+----------------METHODS----------------
+
+public void <init>()
+
+protected void assertNotOpen()
+
+protected void assertOpen()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void bind(
+java.net.Socket
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected org.apache.http.io.SessionInputBuffer createSessionInputBuffer(
+java.net.Socket
+int
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected org.apache.http.io.SessionOutputBuffer createSessionOutputBuffer(
+java.net.Socket
+int
+org.apache.http.params.HttpParams)
+
+public java.net.InetAddress getLocalAddress()
+
+public int getLocalPort()
+
+public java.net.InetAddress getRemoteAddress()
+
+public int getRemotePort()
+
+protected java.net.Socket getSocket()
+
+public int getSocketTimeout()
+
+public boolean isOpen()
+
+public void setSocketTimeout(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void shutdown()
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.DefaultHttpClientConnection extends org.apache.http.impl.SocketHttpClientConnection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void bind(
+java.net.Socket
+org.apache.http.params.HttpParams)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.DefaultHttpRequestFactory extends java.lang.Object implements org.apache.http.HttpRequestFactory
+
+----------------FIELDS----------------
+
+private static final java.lang.String[] RFC2616_COMMON_METHODS
+
+private static final java.lang.String[] RFC2616_ENTITY_ENC_METHODS
+
+private static final java.lang.String[] RFC2616_SPECIAL_METHODS
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static boolean isOneOf(
+java.lang.String[]
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/MethodNotSupportedException; )
+public org.apache.http.HttpRequest newHttpRequest(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/MethodNotSupportedException; )
+public org.apache.http.HttpRequest newHttpRequest(
+org.apache.http.RequestLine)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.DefaultHttpResponseFactory extends java.lang.Object implements org.apache.http.HttpResponseFactory
+
+----------------FIELDS----------------
+
+protected final org.apache.http.ReasonPhraseCatalog reasonCatalog
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.apache.http.ReasonPhraseCatalog)
+
+protected java.util.Locale determineLocale(
+org.apache.http.protocol.HttpContext)
+
+public org.apache.http.HttpResponse newHttpResponse(
+org.apache.http.ProtocolVersion
+int
+org.apache.http.protocol.HttpContext)
+
+public org.apache.http.HttpResponse newHttpResponse(
+org.apache.http.StatusLine
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.SocketHttpServerConnection extends org.apache.http.impl.AbstractHttpServerConnection implements org.apache.http.HttpInetConnection
+
+----------------FIELDS----------------
+
+private volatile boolean open
+
+private java.net.Socket socket
+----------------METHODS----------------
+
+public void <init>()
+
+protected void assertNotOpen()
+
+protected void assertOpen()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void bind(
+java.net.Socket
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected org.apache.http.io.SessionInputBuffer createHttpDataReceiver(
+java.net.Socket
+int
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected org.apache.http.io.SessionOutputBuffer createHttpDataTransmitter(
+java.net.Socket
+int
+org.apache.http.params.HttpParams)
+
+public java.net.InetAddress getLocalAddress()
+
+public int getLocalPort()
+
+public java.net.InetAddress getRemoteAddress()
+
+public int getRemotePort()
+
+protected java.net.Socket getSocket()
+
+public int getSocketTimeout()
+
+public boolean isOpen()
+
+public void setSocketTimeout(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void shutdown()
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.DefaultHttpServerConnection extends org.apache.http.impl.SocketHttpServerConnection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void bind(
+java.net.Socket
+org.apache.http.params.HttpParams)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.EnglishReasonPhraseCatalog extends java.lang.Object implements org.apache.http.ReasonPhraseCatalog
+
+----------------FIELDS----------------
+
+public static final org.apache.http.impl.EnglishReasonPhraseCatalog INSTANCE
+
+private static final java.lang.String[][] REASON_PHRASES
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>()
+
+private static void setReason(
+int
+java.lang.String)
+
+public java.lang.String getReason(
+int
+java.util.Locale)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.HttpConnectionMetricsImpl extends java.lang.Object implements org.apache.http.HttpConnectionMetrics
+
+----------------FIELDS----------------
+
+public static final java.lang.String RECEIVED_BYTES_COUNT
+
+public static final java.lang.String REQUEST_COUNT
+
+public static final java.lang.String RESPONSE_COUNT
+
+public static final java.lang.String SENT_BYTES_COUNT
+
+private final org.apache.http.io.HttpTransportMetrics inTransportMetric
+
+private java.util.HashMap metricsCache
+
+private final org.apache.http.io.HttpTransportMetrics outTransportMetric
+
+private long requestCount
+
+private long responseCount
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.io.HttpTransportMetrics
+org.apache.http.io.HttpTransportMetrics)
+
+public java.lang.Object getMetric(
+java.lang.String)
+
+public long getReceivedBytesCount()
+
+public long getRequestCount()
+
+public long getResponseCount()
+
+public long getSentBytesCount()
+
+public void incrementRequestCount()
+
+public void incrementResponseCount()
+
+public void reset()
+
+public void setMetric(
+java.lang.String
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.NoConnectionReuseStrategy extends java.lang.Object implements org.apache.http.ConnectionReuseStrategy
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean keepAlive(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.impl.auth.AuthSchemeBase extends java.lang.Object implements org.apache.http.auth.AuthScheme
+
+----------------FIELDS----------------
+
+private boolean proxy
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean isProxy()
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/MalformedChallengeException; )
+protected abstract void parseChallenge(
+org.apache.http.util.CharArrayBuffer
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/MalformedChallengeException; )
+public void processChallenge(
+org.apache.http.Header)
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.impl.auth.RFC2617Scheme extends org.apache.http.impl.auth.AuthSchemeBase
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+private java.util.Map params
+----------------METHODS----------------
+
+public void <init>()
+
+public java.lang.String getParameter(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+protected java.util.Map getParameters()
+
+public java.lang.String getRealm()
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/MalformedChallengeException; )
+protected void parseChallenge(
+org.apache.http.util.CharArrayBuffer
+int
+int)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.auth.BasicScheme extends org.apache.http.impl.auth.RFC2617Scheme
+
+----------------FIELDS----------------
+
+private boolean complete
+----------------METHODS----------------
+
+public void <init>()
+
+public static org.apache.http.Header authenticate(
+org.apache.http.auth.Credentials
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/AuthenticationException; )
+public org.apache.http.Header authenticate(
+org.apache.http.auth.Credentials
+org.apache.http.HttpRequest)
+
+public java.lang.String getSchemeName()
+
+public boolean isComplete()
+
+public boolean isConnectionBased()
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/MalformedChallengeException; )
+public void processChallenge(
+org.apache.http.Header)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.auth.BasicSchemeFactory extends java.lang.Object implements org.apache.http.auth.AuthSchemeFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public org.apache.http.auth.AuthScheme newInstance(
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.auth.DigestScheme extends org.apache.http.impl.auth.RFC2617Scheme
+
+----------------FIELDS----------------
+
+private static final char[] HEXADECIMAL
+
+private static final java.lang.String NC
+
+private static final int QOP_AUTH
+
+private static final int QOP_AUTH_INT
+
+private static final int QOP_MISSING
+
+private java.lang.String cnonce
+
+private boolean complete
+
+private int qopVariant
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.lang.String createCnonce()
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/AuthenticationException; )
+private java.lang.String createDigest(
+org.apache.http.auth.Credentials)
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/AuthenticationException; )
+private org.apache.http.Header createDigestHeader(
+org.apache.http.auth.Credentials
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/impl/auth/UnsupportedDigestAlgorithmException; )
+private static java.security.MessageDigest createMessageDigest(
+java.lang.String)
+
+private static java.lang.String encode(
+byte[])
+
+private java.lang.String getCnonce()
+
+private java.lang.String getQopVariantString()
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/AuthenticationException; )
+public org.apache.http.Header authenticate(
+org.apache.http.auth.Credentials
+org.apache.http.HttpRequest)
+
+public java.lang.String getSchemeName()
+
+public boolean isComplete()
+
+public boolean isConnectionBased()
+
+public void overrideParamter(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/MalformedChallengeException; )
+public void processChallenge(
+org.apache.http.Header)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.auth.DigestSchemeFactory extends java.lang.Object implements org.apache.http.auth.AuthSchemeFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public org.apache.http.auth.AuthScheme newInstance(
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.impl.auth.NTLMEngine extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/http/impl/auth/NTLMEngineException; )
+public abstract java.lang.String generateType1Msg(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/impl/auth/NTLMEngineException; )
+public abstract java.lang.String generateType3Msg(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.auth.NTLMEngineException extends org.apache.http.auth.AuthenticationException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/http/impl/auth/NTLMScheme; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lorg/apache/http/impl/auth/NTLMScheme$State;>; )
+@dalvik.annotation.InnerClass (accessFlags =16408 name =State )
+final class org.apache.http.impl.auth.NTLMScheme$State extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final org.apache.http.impl.auth.NTLMScheme$State[] $VALUES
+
+public static final org.apache.http.impl.auth.NTLMScheme$State CHALLENGE_RECEIVED
+
+public static final org.apache.http.impl.auth.NTLMScheme$State FAILED
+
+public static final org.apache.http.impl.auth.NTLMScheme$State MSG_TYPE1_GENERATED
+
+public static final org.apache.http.impl.auth.NTLMScheme$State MSG_TYPE2_RECEVIED
+
+public static final org.apache.http.impl.auth.NTLMScheme$State MSG_TYPE3_GENERATED
+
+public static final org.apache.http.impl.auth.NTLMScheme$State UNINITIATED
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static org.apache.http.impl.auth.NTLMScheme$State valueOf(
+java.lang.String)
+
+public static org.apache.http.impl.auth.NTLMScheme$State[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/http/impl/auth/NTLMScheme$State; )
+public class org.apache.http.impl.auth.NTLMScheme extends org.apache.http.impl.auth.AuthSchemeBase
+
+----------------FIELDS----------------
+
+private java.lang.String challenge
+
+private final org.apache.http.impl.auth.NTLMEngine engine
+
+private org.apache.http.impl.auth.NTLMScheme$State state
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.impl.auth.NTLMEngine)
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/AuthenticationException; )
+public org.apache.http.Header authenticate(
+org.apache.http.auth.Credentials
+org.apache.http.HttpRequest)
+
+public java.lang.String getParameter(
+java.lang.String)
+
+public java.lang.String getRealm()
+
+public java.lang.String getSchemeName()
+
+public boolean isComplete()
+
+public boolean isConnectionBased()
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/MalformedChallengeException; )
+protected void parseChallenge(
+org.apache.http.util.CharArrayBuffer
+int
+int)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.auth.UnsupportedDigestAlgorithmException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.impl.client.AbstractAuthenticationHandler extends java.lang.Object implements org.apache.http.client.AuthenticationHandler
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/lang/String;>; )
+private static final java.util.List DEFAULT_SCHEME_PRIORITY
+
+private final org.apache.commons.logging.Log log
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+protected java.util.List getAuthPreferences()
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/MalformedChallengeException; )
+@dalvik.annotation.Signature (value =([Lorg/apache/http/Header;)Ljava/util/Map<Ljava/lang/String;Lorg/apache/http/Header;>; )
+protected java.util.Map parseChallenges(
+org.apache.http.Header[])
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/AuthenticationException; )
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Lorg/apache/http/Header;>;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/auth/AuthScheme; )
+public org.apache.http.auth.AuthScheme selectScheme(
+java.util.Map
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.client.BasicCookieStore extends java.lang.Object implements org.apache.http.client.CookieStore
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Comparator<Lorg/apache/http/cookie/Cookie;>; )
+private final java.util.Comparator cookieComparator
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lorg/apache/http/cookie/Cookie;>; )
+private final java.util.ArrayList cookies
+----------------METHODS----------------
+
+public void <init>()
+
+public void addCookie(
+org.apache.http.cookie.Cookie)
+
+public void addCookies(
+org.apache.http.cookie.Cookie[])
+
+public void clear()
+
+public boolean clearExpired(
+java.util.Date)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Lorg/apache/http/cookie/Cookie;>; )
+public java.util.List getCookies()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.client.BasicCredentialsProvider extends java.lang.Object implements org.apache.http.client.CredentialsProvider
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Lorg/apache/http/auth/AuthScope;Lorg/apache/http/auth/Credentials;>; )
+private final java.util.HashMap credMap
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Ljava/util/HashMap<Lorg/apache/http/auth/AuthScope;Lorg/apache/http/auth/Credentials;>;Lorg/apache/http/auth/AuthScope;)Lorg/apache/http/auth/Credentials; )
+private static org.apache.http.auth.Credentials matchCredentials(
+java.util.HashMap
+org.apache.http.auth.AuthScope)
+
+public void clear()
+
+public org.apache.http.auth.Credentials getCredentials(
+org.apache.http.auth.AuthScope)
+
+public void setCredentials(
+org.apache.http.auth.AuthScope
+org.apache.http.auth.Credentials)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Lorg/apache/http/client/ResponseHandler<Ljava/lang/String;>; )
+public class org.apache.http.impl.client.BasicResponseHandler extends java.lang.Object implements org.apache.http.client.ResponseHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/client/ClientProtocolException;Ljava/io/IOException; )
+public volatile java.lang.Object handleResponse(
+org.apache.http.HttpResponse)
+@dalvik.annotation.Throws (value =Lorg/apache/http/client/HttpResponseException;Ljava/io/IOException; )
+public java.lang.String handleResponse(
+org.apache.http.HttpResponse)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.params.HttpParams extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.apache.http.params.HttpParams copy()
+
+public abstract boolean getBooleanParameter(
+java.lang.String
+boolean)
+
+public abstract double getDoubleParameter(
+java.lang.String
+double)
+
+public abstract int getIntParameter(
+java.lang.String
+int)
+
+public abstract long getLongParameter(
+java.lang.String
+long)
+
+public abstract java.lang.Object getParameter(
+java.lang.String)
+
+public abstract boolean isParameterFalse(
+java.lang.String)
+
+public abstract boolean isParameterTrue(
+java.lang.String)
+
+public abstract boolean removeParameter(
+java.lang.String)
+
+public abstract org.apache.http.params.HttpParams setBooleanParameter(
+java.lang.String
+boolean)
+
+public abstract org.apache.http.params.HttpParams setDoubleParameter(
+java.lang.String
+double)
+
+public abstract org.apache.http.params.HttpParams setIntParameter(
+java.lang.String
+int)
+
+public abstract org.apache.http.params.HttpParams setLongParameter(
+java.lang.String
+long)
+
+public abstract org.apache.http.params.HttpParams setParameter(
+java.lang.String
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.params.AbstractHttpParams extends java.lang.Object implements org.apache.http.params.HttpParams
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+
+public boolean getBooleanParameter(
+java.lang.String
+boolean)
+
+public double getDoubleParameter(
+java.lang.String
+double)
+
+public int getIntParameter(
+java.lang.String
+int)
+
+public long getLongParameter(
+java.lang.String
+long)
+
+public boolean isParameterFalse(
+java.lang.String)
+
+public boolean isParameterTrue(
+java.lang.String)
+
+public org.apache.http.params.HttpParams setBooleanParameter(
+java.lang.String
+boolean)
+
+public org.apache.http.params.HttpParams setDoubleParameter(
+java.lang.String
+double)
+
+public org.apache.http.params.HttpParams setIntParameter(
+java.lang.String
+int)
+
+public org.apache.http.params.HttpParams setLongParameter(
+java.lang.String
+long)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.client.ClientParamsStack extends org.apache.http.params.AbstractHttpParams
+
+----------------FIELDS----------------
+
+protected final org.apache.http.params.HttpParams applicationParams
+
+protected final org.apache.http.params.HttpParams clientParams
+
+private final org.apache.commons.logging.Log log
+
+protected final org.apache.http.params.HttpParams overrideParams
+
+protected final org.apache.http.params.HttpParams requestParams
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.impl.client.ClientParamsStack)
+
+public void <init>(
+org.apache.http.impl.client.ClientParamsStack
+org.apache.http.params.HttpParams
+org.apache.http.params.HttpParams
+org.apache.http.params.HttpParams
+org.apache.http.params.HttpParams)
+
+public void <init>(
+org.apache.http.params.HttpParams
+org.apache.http.params.HttpParams
+org.apache.http.params.HttpParams
+org.apache.http.params.HttpParams)
+
+public org.apache.http.params.HttpParams copy()
+
+public final org.apache.http.params.HttpParams getApplicationParams()
+
+public final org.apache.http.params.HttpParams getClientParams()
+
+public final org.apache.http.params.HttpParams getOverrideParams()
+
+public java.lang.Object getParameter(
+java.lang.String)
+
+public final org.apache.http.params.HttpParams getRequestParams()
+
+public boolean removeParameter(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/UnsupportedOperationException; )
+public org.apache.http.params.HttpParams setParameter(
+java.lang.String
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy extends java.lang.Object implements org.apache.http.conn.ConnectionKeepAliveStrategy
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public long getKeepAliveDuration(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.client.DefaultHttpRequestRetryHandler extends java.lang.Object implements org.apache.http.client.HttpRequestRetryHandler
+
+----------------FIELDS----------------
+
+private final boolean requestSentRetryEnabled
+
+private final int retryCount
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int
+boolean)
+
+public int getRetryCount()
+
+public boolean isRequestSentRetryEnabled()
+
+public boolean retryRequest(
+java.io.IOException
+int
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.client.DefaultProxyAuthenticationHandler extends org.apache.http.impl.client.AbstractAuthenticationHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/MalformedChallengeException; )
+@dalvik.annotation.Signature (value =(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Ljava/util/Map<Ljava/lang/String;Lorg/apache/http/Header;>; )
+public java.util.Map getChallenges(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+public boolean isAuthenticationRequested(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.client.DefaultRedirectHandler extends java.lang.Object implements org.apache.http.client.RedirectHandler
+
+----------------FIELDS----------------
+
+private static final java.lang.String REDIRECT_LOCATIONS
+
+private final org.apache.commons.logging.Log log
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/ProtocolException; )
+public java.net.URI getLocationURI(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+public boolean isRedirectRequested(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.client.DefaultRequestDirector extends java.lang.Object implements org.apache.http.client.RequestDirector
+
+----------------FIELDS----------------
+
+protected final org.apache.http.conn.ClientConnectionManager connManager
+
+protected final org.apache.http.protocol.HttpProcessor httpProcessor
+
+protected final org.apache.http.conn.ConnectionKeepAliveStrategy keepAliveStrategy
+
+private final org.apache.commons.logging.Log log
+
+protected org.apache.http.conn.ManagedClientConnection managedConn
+
+private int maxRedirects
+
+protected final org.apache.http.params.HttpParams params
+
+private final org.apache.http.client.AuthenticationHandler proxyAuthHandler
+
+private final org.apache.http.auth.AuthState proxyAuthState
+
+private int redirectCount
+
+protected final org.apache.http.client.RedirectHandler redirectHandler
+
+protected final org.apache.http.protocol.HttpRequestExecutor requestExec
+
+protected final org.apache.http.client.HttpRequestRetryHandler retryHandler
+
+protected final org.apache.http.ConnectionReuseStrategy reuseStrategy
+
+protected final org.apache.http.conn.routing.HttpRoutePlanner routePlanner
+
+private final org.apache.http.client.AuthenticationHandler targetAuthHandler
+
+private final org.apache.http.auth.AuthState targetAuthState
+
+private final org.apache.http.client.UserTokenHandler userTokenHandler
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.protocol.HttpRequestExecutor
+org.apache.http.conn.ClientConnectionManager
+org.apache.http.ConnectionReuseStrategy
+org.apache.http.conn.ConnectionKeepAliveStrategy
+org.apache.http.conn.routing.HttpRoutePlanner
+org.apache.http.protocol.HttpProcessor
+org.apache.http.client.HttpRequestRetryHandler
+org.apache.http.client.RedirectHandler
+org.apache.http.client.AuthenticationHandler
+org.apache.http.client.AuthenticationHandler
+org.apache.http.client.UserTokenHandler
+org.apache.http.params.HttpParams)
+
+private void abortConnection()
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Lorg/apache/http/Header;>;Lorg/apache/http/auth/AuthState;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V )
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/MalformedChallengeException;Lorg/apache/http/auth/AuthenticationException; )
+private void processChallenges(
+java.util.Map
+org.apache.http.auth.AuthState
+org.apache.http.client.AuthenticationHandler
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+private void updateAuthState(
+org.apache.http.auth.AuthState
+org.apache.http.HttpHost
+org.apache.http.client.CredentialsProvider)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ProtocolException; )
+private org.apache.http.impl.client.RequestWrapper wrapRequest(
+org.apache.http.HttpRequest)
+
+protected org.apache.http.HttpRequest createConnectRequest(
+org.apache.http.conn.routing.HttpRoute
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+protected boolean createTunnelToProxy(
+org.apache.http.conn.routing.HttpRoute
+int
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+protected boolean createTunnelToTarget(
+org.apache.http.conn.routing.HttpRoute
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException; )
+protected org.apache.http.conn.routing.HttpRoute determineRoute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+protected void establishRoute(
+org.apache.http.conn.routing.HttpRoute
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public org.apache.http.HttpResponse execute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+protected org.apache.http.impl.client.RoutedRequest handleResponse(
+org.apache.http.impl.client.RoutedRequest
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+protected void releaseConnection()
+@dalvik.annotation.Throws (value =Lorg/apache/http/ProtocolException; )
+protected void rewriteRequestURI(
+org.apache.http.impl.client.RequestWrapper
+org.apache.http.conn.routing.HttpRoute)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.client.DefaultTargetAuthenticationHandler extends org.apache.http.impl.client.AbstractAuthenticationHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Ljava/util/Map<Ljava/lang/String;Lorg/apache/http/Header;>; )
+@dalvik.annotation.Throws (value =Lorg/apache/http/auth/MalformedChallengeException; )
+public java.util.Map getChallenges(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+public boolean isAuthenticationRequested(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.client.DefaultUserTokenHandler extends java.lang.Object implements org.apache.http.client.UserTokenHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+private static java.security.Principal getAuthPrincipal(
+org.apache.http.auth.AuthState)
+
+public java.lang.Object getUserToken(
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.client.RequestWrapper extends org.apache.http.message.AbstractHttpMessage implements org.apache.http.client.methods.HttpUriRequest
+
+----------------FIELDS----------------
+
+private int execCount
+
+private java.lang.String method
+
+private final org.apache.http.HttpRequest original
+
+private java.net.URI uri
+
+private org.apache.http.ProtocolVersion version
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/http/ProtocolException; )
+public void <init>(
+org.apache.http.HttpRequest)
+@dalvik.annotation.Throws (value =Ljava/lang/UnsupportedOperationException; )
+public void abort()
+
+public int getExecCount()
+
+public java.lang.String getMethod()
+
+public org.apache.http.HttpRequest getOriginal()
+
+public org.apache.http.ProtocolVersion getProtocolVersion()
+
+public org.apache.http.RequestLine getRequestLine()
+
+public java.net.URI getURI()
+
+public void incrementExecCount()
+
+public boolean isAborted()
+
+public boolean isRepeatable()
+
+public void resetHeaders()
+
+public void setMethod(
+java.lang.String)
+
+public void setProtocolVersion(
+org.apache.http.ProtocolVersion)
+
+public void setURI(
+java.net.URI)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.client.EntityEnclosingRequestWrapper extends org.apache.http.impl.client.RequestWrapper implements org.apache.http.HttpEntityEnclosingRequest
+
+----------------FIELDS----------------
+
+private org.apache.http.HttpEntity entity
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/http/ProtocolException; )
+public void <init>(
+org.apache.http.HttpEntityEnclosingRequest)
+
+public boolean expectContinue()
+
+public org.apache.http.HttpEntity getEntity()
+
+public boolean isRepeatable()
+
+public void setEntity(
+org.apache.http.HttpEntity)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.client.RedirectLocations extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/net/URI;>; )
+private final java.util.Set uris
+----------------METHODS----------------
+
+public void <init>()
+
+public void add(
+java.net.URI)
+
+public boolean contains(
+java.net.URI)
+
+public boolean remove(
+java.net.URI)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.client.RoutedRequest extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected final org.apache.http.impl.client.RequestWrapper request
+
+protected final org.apache.http.conn.routing.HttpRoute route
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.impl.client.RequestWrapper
+org.apache.http.conn.routing.HttpRoute)
+
+public final org.apache.http.impl.client.RequestWrapper getRequest()
+
+public final org.apache.http.conn.routing.HttpRoute getRoute()
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.client.TunnelRefusedException extends org.apache.http.HttpException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final org.apache.http.HttpResponse response
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+org.apache.http.HttpResponse)
+
+public org.apache.http.HttpResponse getResponse()
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.impl.conn.AbstractClientConnAdapter extends java.lang.Object implements org.apache.http.conn.ManagedClientConnection
+
+----------------FIELDS----------------
+
+private volatile boolean aborted
+
+private volatile org.apache.http.conn.ClientConnectionManager connManager
+
+private volatile long duration
+
+private final java.lang.Thread executionThread
+
+private volatile boolean markedReusable
+
+private volatile org.apache.http.conn.OperatedClientConnection wrappedConnection
+----------------METHODS----------------
+
+protected void <init>(
+org.apache.http.conn.ClientConnectionManager
+org.apache.http.conn.OperatedClientConnection)
+
+public void abortConnection()
+@dalvik.annotation.Throws (value =Ljava/io/InterruptedIOException; )
+protected final void assertNotAborted()
+
+protected final void assertValid(
+org.apache.http.conn.OperatedClientConnection)
+
+protected void detach()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+
+public java.net.InetAddress getLocalAddress()
+
+public int getLocalPort()
+
+protected org.apache.http.conn.ClientConnectionManager getManager()
+
+public org.apache.http.HttpConnectionMetrics getMetrics()
+
+public java.net.InetAddress getRemoteAddress()
+
+public int getRemotePort()
+
+public javax.net.ssl.SSLSession getSSLSession()
+
+public int getSocketTimeout()
+
+protected org.apache.http.conn.OperatedClientConnection getWrappedConnection()
+
+public boolean isMarkedReusable()
+
+public boolean isOpen()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean isResponseAvailable(
+int)
+
+public boolean isSecure()
+
+public boolean isStale()
+
+public void markReusable()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void receiveResponseEntity(
+org.apache.http.HttpResponse)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public org.apache.http.HttpResponse receiveResponseHeader()
+
+public void releaseConnection()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void sendRequestEntity(
+org.apache.http.HttpEntityEnclosingRequest)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void sendRequestHeader(
+org.apache.http.HttpRequest)
+
+public void setIdleDuration(
+long
+java.util.concurrent.TimeUnit)
+
+public void setSocketTimeout(
+int)
+
+public void unmarkReusable()
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.impl.conn.AbstractPoolEntry extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected final org.apache.http.conn.ClientConnectionOperator connOperator
+
+protected final org.apache.http.conn.OperatedClientConnection connection
+
+protected volatile org.apache.http.conn.routing.HttpRoute route
+
+protected volatile java.lang.Object state
+
+protected volatile org.apache.http.conn.routing.RouteTracker tracker
+----------------METHODS----------------
+
+protected void <init>(
+org.apache.http.conn.ClientConnectionOperator
+org.apache.http.conn.routing.HttpRoute)
+
+public java.lang.Object getState()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void layerProtocol(
+org.apache.http.protocol.HttpContext
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void open(
+org.apache.http.conn.routing.HttpRoute
+org.apache.http.protocol.HttpContext
+org.apache.http.params.HttpParams)
+
+public void setState(
+java.lang.Object)
+
+protected void shutdownEntry()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void tunnelProxy(
+org.apache.http.HttpHost
+boolean
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void tunnelTarget(
+boolean
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.impl.conn.AbstractPooledConnAdapter extends org.apache.http.impl.conn.AbstractClientConnAdapter
+
+----------------FIELDS----------------
+
+protected volatile org.apache.http.impl.conn.AbstractPoolEntry poolEntry
+----------------METHODS----------------
+
+protected void <init>(
+org.apache.http.conn.ClientConnectionManager
+org.apache.http.impl.conn.AbstractPoolEntry)
+
+protected final void assertAttached()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+protected void detach()
+
+public org.apache.http.conn.routing.HttpRoute getRoute()
+
+public java.lang.Object getState()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void layerProtocol(
+org.apache.http.protocol.HttpContext
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void open(
+org.apache.http.conn.routing.HttpRoute
+org.apache.http.protocol.HttpContext
+org.apache.http.params.HttpParams)
+
+public void setState(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void shutdown()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void tunnelProxy(
+org.apache.http.HttpHost
+boolean
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void tunnelTarget(
+boolean
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.conn.DefaultClientConnection extends org.apache.http.impl.SocketHttpClientConnection implements org.apache.http.conn.OperatedClientConnection
+
+----------------FIELDS----------------
+
+private boolean connSecure
+
+private final org.apache.commons.logging.Log headerLog
+
+private final org.apache.commons.logging.Log log
+
+private volatile boolean shutdown
+
+private volatile java.net.Socket socket
+
+private org.apache.http.HttpHost targetHost
+
+private final org.apache.commons.logging.Log wireLog
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+protected org.apache.http.io.HttpMessageParser createResponseParser(
+org.apache.http.io.SessionInputBuffer
+org.apache.http.HttpResponseFactory
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected org.apache.http.io.SessionInputBuffer createSessionInputBuffer(
+java.net.Socket
+int
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected org.apache.http.io.SessionOutputBuffer createSessionOutputBuffer(
+java.net.Socket
+int
+org.apache.http.params.HttpParams)
+
+public final java.net.Socket getSocket()
+
+public final org.apache.http.HttpHost getTargetHost()
+
+public final boolean isSecure()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void openCompleted(
+boolean
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void opening(
+java.net.Socket
+org.apache.http.HttpHost)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public org.apache.http.HttpResponse receiveResponseHeader()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void sendRequestHeader(
+org.apache.http.HttpRequest)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void shutdown()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void update(
+java.net.Socket
+org.apache.http.HttpHost
+boolean
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.conn.DefaultClientConnectionOperator extends java.lang.Object implements org.apache.http.conn.ClientConnectionOperator
+
+----------------FIELDS----------------
+
+protected org.apache.http.conn.scheme.SchemeRegistry schemeRegistry
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.conn.scheme.SchemeRegistry)
+
+public org.apache.http.conn.OperatedClientConnection createConnection()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void openConnection(
+org.apache.http.conn.OperatedClientConnection
+org.apache.http.HttpHost
+java.net.InetAddress
+org.apache.http.protocol.HttpContext
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void prepareSocket(
+java.net.Socket
+org.apache.http.protocol.HttpContext
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void updateSecureConnection(
+org.apache.http.conn.OperatedClientConnection
+org.apache.http.HttpHost
+org.apache.http.protocol.HttpContext
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.conn.DefaultHttpRoutePlanner extends java.lang.Object implements org.apache.http.conn.routing.HttpRoutePlanner
+
+----------------FIELDS----------------
+
+protected org.apache.http.conn.scheme.SchemeRegistry schemeRegistry
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.conn.scheme.SchemeRegistry)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException; )
+public org.apache.http.conn.routing.HttpRoute determineRoute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.io.HttpMessageParser extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/HttpException; )
+public abstract org.apache.http.HttpMessage parse()
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.impl.io.AbstractMessageParser extends java.lang.Object implements org.apache.http.io.HttpMessageParser
+
+----------------FIELDS----------------
+
+protected final org.apache.http.message.LineParser lineParser
+
+private final int maxHeaderCount
+
+private final int maxLineLen
+
+private final org.apache.http.io.SessionInputBuffer sessionBuffer
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.io.SessionInputBuffer
+org.apache.http.message.LineParser
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public static org.apache.http.Header[] parseHeaders(
+org.apache.http.io.SessionInputBuffer
+int
+int
+org.apache.http.message.LineParser)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/HttpException; )
+public org.apache.http.HttpMessage parse()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/HttpException;Lorg/apache/http/ParseException; )
+protected abstract org.apache.http.HttpMessage parseHead(
+org.apache.http.io.SessionInputBuffer)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.conn.DefaultResponseParser extends org.apache.http.impl.io.AbstractMessageParser
+
+----------------FIELDS----------------
+
+private final org.apache.http.util.CharArrayBuffer lineBuf
+
+private final int maxGarbageLines
+
+private final org.apache.http.HttpResponseFactory responseFactory
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.io.SessionInputBuffer
+org.apache.http.message.LineParser
+org.apache.http.HttpResponseFactory
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/HttpException; )
+protected org.apache.http.HttpMessage parseHead(
+org.apache.http.io.SessionInputBuffer)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/http/impl/conn/IdleConnectionHandler; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =TimeValues )
+ class org.apache.http.impl.conn.IdleConnectionHandler$TimeValues extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final long timeAdded
+
+private final long timeExpires
+----------------METHODS----------------
+
+ void <init>(
+long
+long
+java.util.concurrent.TimeUnit)
+
+static long access$000(
+org.apache.http.impl.conn.IdleConnectionHandler$TimeValues)
+
+static long access$100(
+org.apache.http.impl.conn.IdleConnectionHandler$TimeValues)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/http/impl/conn/IdleConnectionHandler$TimeValues; )
+public class org.apache.http.impl.conn.IdleConnectionHandler extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Lorg/apache/http/HttpConnection;Lorg/apache/http/impl/conn/IdleConnectionHandler$TimeValues;>; )
+private final java.util.Map connectionToTimes
+
+private final org.apache.commons.logging.Log log
+----------------METHODS----------------
+
+public void <init>()
+
+public void add(
+org.apache.http.HttpConnection
+long
+java.util.concurrent.TimeUnit)
+
+public void closeExpiredConnections()
+
+public void closeIdleConnections(
+long)
+
+public boolean remove(
+org.apache.http.HttpConnection)
+
+public void removeAll()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.io.SessionInputBuffer extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.apache.http.io.HttpTransportMetrics getMetrics()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract boolean isDataAvailable(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int readLine(
+org.apache.http.util.CharArrayBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.lang.String readLine()
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.conn.LoggingSessionInputBuffer extends java.lang.Object implements org.apache.http.io.SessionInputBuffer
+
+----------------FIELDS----------------
+
+private final org.apache.http.io.SessionInputBuffer in
+
+private final org.apache.http.impl.conn.Wire wire
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.io.SessionInputBuffer
+org.apache.http.impl.conn.Wire)
+
+public org.apache.http.io.HttpTransportMetrics getMetrics()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean isDataAvailable(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int readLine(
+org.apache.http.util.CharArrayBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.String readLine()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.io.SessionOutputBuffer extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void flush()
+
+public abstract org.apache.http.io.HttpTransportMetrics getMetrics()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void write(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void writeLine(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void writeLine(
+org.apache.http.util.CharArrayBuffer)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.conn.LoggingSessionOutputBuffer extends java.lang.Object implements org.apache.http.io.SessionOutputBuffer
+
+----------------FIELDS----------------
+
+private final org.apache.http.io.SessionOutputBuffer out
+
+private final org.apache.http.impl.conn.Wire wire
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.io.SessionOutputBuffer
+org.apache.http.impl.conn.Wire)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+
+public org.apache.http.io.HttpTransportMetrics getMetrics()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeLine(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeLine(
+org.apache.http.util.CharArrayBuffer)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/http/impl/conn/ProxySelectorRoutePlanner; )
+ class org.apache.http.impl.conn.ProxySelectorRoutePlanner$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$java$net$Proxy$Type
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/http/impl/conn/ProxySelectorRoutePlanner$1; )
+public class org.apache.http.impl.conn.ProxySelectorRoutePlanner extends java.lang.Object implements org.apache.http.conn.routing.HttpRoutePlanner
+
+----------------FIELDS----------------
+
+protected java.net.ProxySelector proxySelector
+
+protected org.apache.http.conn.scheme.SchemeRegistry schemeRegistry
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.conn.scheme.SchemeRegistry
+java.net.ProxySelector)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Ljava/net/Proxy;>;Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Ljava/net/Proxy; )
+protected java.net.Proxy chooseProxy(
+java.util.List
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException; )
+protected org.apache.http.HttpHost determineProxy(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException; )
+public org.apache.http.conn.routing.HttpRoute determineRoute(
+org.apache.http.HttpHost
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+
+protected java.lang.String getHost(
+java.net.InetSocketAddress)
+
+public java.net.ProxySelector getProxySelector()
+
+public void setProxySelector(
+java.net.ProxySelector)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class org.apache.http.impl.conn.SingleClientConnManager$1 extends java.lang.Object implements org.apache.http.conn.ClientConnectionRequest
+
+----------------FIELDS----------------
+
+final org.apache.http.impl.conn.SingleClientConnManager this$0
+
+final org.apache.http.conn.routing.HttpRoute val$route
+
+final java.lang.Object val$state
+----------------METHODS----------------
+
+ void <init>(
+org.apache.http.impl.conn.SingleClientConnManager
+org.apache.http.conn.routing.HttpRoute
+java.lang.Object)
+
+public void abortRequest()
+
+public org.apache.http.conn.ManagedClientConnection getConnection(
+long
+java.util.concurrent.TimeUnit)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4 name =ConnAdapter )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/http/impl/conn/SingleClientConnManager; )
+public class org.apache.http.impl.conn.SingleClientConnManager$ConnAdapter extends org.apache.http.impl.conn.AbstractPooledConnAdapter
+
+----------------FIELDS----------------
+
+final org.apache.http.impl.conn.SingleClientConnManager this$0
+----------------METHODS----------------
+
+protected void <init>(
+org.apache.http.impl.conn.SingleClientConnManager
+org.apache.http.impl.conn.SingleClientConnManager$PoolEntry
+org.apache.http.conn.routing.HttpRoute)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/http/impl/conn/SingleClientConnManager; )
+@dalvik.annotation.InnerClass (accessFlags =4 name =PoolEntry )
+public class org.apache.http.impl.conn.SingleClientConnManager$PoolEntry extends org.apache.http.impl.conn.AbstractPoolEntry
+
+----------------FIELDS----------------
+
+final org.apache.http.impl.conn.SingleClientConnManager this$0
+----------------METHODS----------------
+
+protected void <init>(
+org.apache.http.impl.conn.SingleClientConnManager)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void shutdown()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/http/impl/conn/SingleClientConnManager$ConnAdapter;Lorg/apache/http/impl/conn/SingleClientConnManager$PoolEntry; )
+public class org.apache.http.impl.conn.SingleClientConnManager extends java.lang.Object implements org.apache.http.conn.ClientConnectionManager
+
+----------------FIELDS----------------
+
+public static final java.lang.String MISUSE_MESSAGE
+
+protected boolean alwaysShutDown
+
+protected org.apache.http.conn.ClientConnectionOperator connOperator
+
+protected long connectionExpiresTime
+
+protected volatile boolean isShutDown
+
+protected long lastReleaseTime
+
+private final org.apache.commons.logging.Log log
+
+protected org.apache.http.impl.conn.SingleClientConnManager$ConnAdapter managedConn
+
+protected org.apache.http.conn.scheme.SchemeRegistry schemeRegistry
+
+protected org.apache.http.impl.conn.SingleClientConnManager$PoolEntry uniquePoolEntry
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.params.HttpParams
+org.apache.http.conn.scheme.SchemeRegistry)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+protected final void assertStillUp()
+
+public void closeExpiredConnections()
+
+public void closeIdleConnections(
+long
+java.util.concurrent.TimeUnit)
+
+protected org.apache.http.conn.ClientConnectionOperator createConnectionOperator(
+org.apache.http.conn.scheme.SchemeRegistry)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public org.apache.http.conn.ManagedClientConnection getConnection(
+org.apache.http.conn.routing.HttpRoute
+java.lang.Object)
+
+public org.apache.http.conn.scheme.SchemeRegistry getSchemeRegistry()
+
+public void releaseConnection(
+org.apache.http.conn.ManagedClientConnection
+long
+java.util.concurrent.TimeUnit)
+
+public final org.apache.http.conn.ClientConnectionRequest requestConnection(
+org.apache.http.conn.routing.HttpRoute
+java.lang.Object)
+
+protected void revokeConnection()
+
+public void shutdown()
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.conn.Wire extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final org.apache.commons.logging.Log log
+----------------METHODS----------------
+
+public void <init>(
+org.apache.commons.logging.Log)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void wire(
+java.lang.String
+java.io.InputStream)
+
+public boolean enabled()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void input(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void input(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void input(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void input(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void input(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void output(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void output(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void output(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void output(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void output(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.impl.conn.tsccm.RefQueueHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/ref/Reference<*>;)V )
+public abstract void handleReference(
+java.lang.ref.Reference)
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.impl.conn.tsccm.AbstractConnPool extends java.lang.Object implements org.apache.http.impl.conn.tsccm.RefQueueHandler
+
+----------------FIELDS----------------
+
+protected org.apache.http.impl.conn.IdleConnectionHandler idleConnHandler
+
+protected volatile boolean isShutDown
+@dalvik.annotation.Signature (value =Ljava/util/Set<Lorg/apache/http/impl/conn/tsccm/BasicPoolEntryRef;>; )
+protected java.util.Set issuedConnections
+
+private final org.apache.commons.logging.Log log
+
+protected int numConnections
+
+protected final java.util.concurrent.locks.Lock poolLock
+@dalvik.annotation.Signature (value =Ljava/lang/ref/ReferenceQueue<Ljava/lang/Object;>; )
+protected java.lang.ref.ReferenceQueue refQueue
+
+private org.apache.http.impl.conn.tsccm.RefQueueWorker refWorker
+----------------METHODS----------------
+
+protected void <init>()
+
+protected void closeConnection(
+org.apache.http.conn.OperatedClientConnection)
+
+public void closeExpiredConnections()
+
+public void closeIdleConnections(
+long
+java.util.concurrent.TimeUnit)
+
+public abstract void deleteClosedConnections()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public void enableConnectionGC()
+
+public abstract void freeEntry(
+org.apache.http.impl.conn.tsccm.BasicPoolEntry
+boolean
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Throws (value =Lorg/apache/http/conn/ConnectionPoolTimeoutException;Ljava/lang/InterruptedException; )
+public final org.apache.http.impl.conn.tsccm.BasicPoolEntry getEntry(
+org.apache.http.conn.routing.HttpRoute
+java.lang.Object
+long
+java.util.concurrent.TimeUnit)
+
+protected abstract void handleLostEntry(
+org.apache.http.conn.routing.HttpRoute)
+
+public void handleReference(
+java.lang.ref.Reference)
+
+public abstract org.apache.http.impl.conn.tsccm.PoolEntryRequest requestPoolEntry(
+org.apache.http.conn.routing.HttpRoute
+java.lang.Object)
+
+public void shutdown()
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.conn.tsccm.BasicPoolEntry extends org.apache.http.impl.conn.AbstractPoolEntry
+
+----------------FIELDS----------------
+
+private final org.apache.http.impl.conn.tsccm.BasicPoolEntryRef reference
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Lorg/apache/http/conn/ClientConnectionOperator;Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/ref/ReferenceQueue<Ljava/lang/Object;>;)V )
+public void <init>(
+org.apache.http.conn.ClientConnectionOperator
+org.apache.http.conn.routing.HttpRoute
+java.lang.ref.ReferenceQueue)
+
+protected final org.apache.http.conn.OperatedClientConnection getConnection()
+
+protected final org.apache.http.conn.routing.HttpRoute getPlannedRoute()
+
+protected final org.apache.http.impl.conn.tsccm.BasicPoolEntryRef getWeakRef()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/ref/WeakReference<Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;>; )
+public class org.apache.http.impl.conn.tsccm.BasicPoolEntryRef extends java.lang.ref.WeakReference
+
+----------------FIELDS----------------
+
+private final org.apache.http.conn.routing.HttpRoute route
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;Ljava/lang/ref/ReferenceQueue<Ljava/lang/Object;>;)V )
+public void <init>(
+org.apache.http.impl.conn.tsccm.BasicPoolEntry
+java.lang.ref.ReferenceQueue)
+
+public final org.apache.http.conn.routing.HttpRoute getRoute()
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.conn.tsccm.BasicPooledConnAdapter extends org.apache.http.impl.conn.AbstractPooledConnAdapter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>(
+org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager
+org.apache.http.impl.conn.AbstractPoolEntry)
+
+protected void detach()
+
+protected org.apache.http.conn.ClientConnectionManager getManager()
+
+protected org.apache.http.impl.conn.AbstractPoolEntry getPoolEntry()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.impl.conn.tsccm.PoolEntryRequest extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void abortRequest()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Lorg/apache/http/conn/ConnectionPoolTimeoutException; )
+public abstract org.apache.http.impl.conn.tsccm.BasicPoolEntry getPoolEntry(
+long
+java.util.concurrent.TimeUnit)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class org.apache.http.impl.conn.tsccm.ConnPoolByRoute$1 extends java.lang.Object implements org.apache.http.impl.conn.tsccm.PoolEntryRequest
+
+----------------FIELDS----------------
+
+final org.apache.http.impl.conn.tsccm.ConnPoolByRoute this$0
+
+final org.apache.http.impl.conn.tsccm.WaitingThreadAborter val$aborter
+
+final org.apache.http.conn.routing.HttpRoute val$route
+
+final java.lang.Object val$state
+----------------METHODS----------------
+
+ void <init>(
+org.apache.http.impl.conn.tsccm.ConnPoolByRoute
+org.apache.http.impl.conn.tsccm.WaitingThreadAborter
+org.apache.http.conn.routing.HttpRoute
+java.lang.Object)
+
+public void abortRequest()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Lorg/apache/http/conn/ConnectionPoolTimeoutException; )
+public org.apache.http.impl.conn.tsccm.BasicPoolEntry getPoolEntry(
+long
+java.util.concurrent.TimeUnit)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.conn.tsccm.ConnPoolByRoute extends org.apache.http.impl.conn.tsccm.AbstractConnPool
+
+----------------FIELDS----------------
+
+private final org.apache.http.conn.params.ConnPerRoute connPerRoute
+@dalvik.annotation.Signature (value =Ljava/util/Queue<Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;>; )
+protected java.util.Queue freeConnections
+
+private final org.apache.commons.logging.Log log
+
+protected final int maxTotalConnections
+
+protected final org.apache.http.conn.ClientConnectionOperator operator
+@dalvik.annotation.Signature (value =Ljava/util/Map<Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;>; )
+protected final java.util.Map routeToPool
+@dalvik.annotation.Signature (value =Ljava/util/Queue<Lorg/apache/http/impl/conn/tsccm/WaitingThread;>; )
+protected java.util.Queue waitingThreads
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.conn.ClientConnectionOperator
+org.apache.http.params.HttpParams)
+
+protected org.apache.http.impl.conn.tsccm.BasicPoolEntry createEntry(
+org.apache.http.impl.conn.tsccm.RouteSpecificPool
+org.apache.http.conn.ClientConnectionOperator)
+@dalvik.annotation.Signature (value =()Ljava/util/Queue<Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;>; )
+protected java.util.Queue createFreeConnQueue()
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;>; )
+protected java.util.Map createRouteToPoolMap()
+@dalvik.annotation.Signature (value =()Ljava/util/Queue<Lorg/apache/http/impl/conn/tsccm/WaitingThread;>; )
+protected java.util.Queue createWaitingThreadQueue()
+
+public void deleteClosedConnections()
+
+protected void deleteEntry(
+org.apache.http.impl.conn.tsccm.BasicPoolEntry)
+
+protected void deleteLeastUsedEntry()
+
+public void freeEntry(
+org.apache.http.impl.conn.tsccm.BasicPoolEntry
+boolean
+long
+java.util.concurrent.TimeUnit)
+
+public int getConnectionsInPool(
+org.apache.http.conn.routing.HttpRoute)
+@dalvik.annotation.Throws (value =Lorg/apache/http/conn/ConnectionPoolTimeoutException;Ljava/lang/InterruptedException; )
+protected org.apache.http.impl.conn.tsccm.BasicPoolEntry getEntryBlocking(
+org.apache.http.conn.routing.HttpRoute
+java.lang.Object
+long
+java.util.concurrent.TimeUnit
+org.apache.http.impl.conn.tsccm.WaitingThreadAborter)
+
+protected org.apache.http.impl.conn.tsccm.BasicPoolEntry getFreeEntry(
+org.apache.http.impl.conn.tsccm.RouteSpecificPool
+java.lang.Object)
+
+protected org.apache.http.impl.conn.tsccm.RouteSpecificPool getRoutePool(
+org.apache.http.conn.routing.HttpRoute
+boolean)
+
+protected void handleLostEntry(
+org.apache.http.conn.routing.HttpRoute)
+
+protected org.apache.http.impl.conn.tsccm.RouteSpecificPool newRouteSpecificPool(
+org.apache.http.conn.routing.HttpRoute)
+
+protected org.apache.http.impl.conn.tsccm.WaitingThread newWaitingThread(
+java.util.concurrent.locks.Condition
+org.apache.http.impl.conn.tsccm.RouteSpecificPool)
+
+protected void notifyWaitingThread(
+org.apache.http.impl.conn.tsccm.RouteSpecificPool)
+
+public org.apache.http.impl.conn.tsccm.PoolEntryRequest requestPoolEntry(
+org.apache.http.conn.routing.HttpRoute
+java.lang.Object)
+
+public void shutdown()
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.conn.tsccm.RefQueueWorker extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private final org.apache.commons.logging.Log log
+
+protected final org.apache.http.impl.conn.tsccm.RefQueueHandler refHandler
+@dalvik.annotation.Signature (value =Ljava/lang/ref/ReferenceQueue<*>; )
+protected final java.lang.ref.ReferenceQueue refQueue
+
+protected volatile java.lang.Thread workerThread
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/ref/ReferenceQueue<*>;Lorg/apache/http/impl/conn/tsccm/RefQueueHandler;)V )
+public void <init>(
+java.lang.ref.ReferenceQueue
+org.apache.http.impl.conn.tsccm.RefQueueHandler)
+
+public void run()
+
+public void shutdown()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.conn.tsccm.RouteSpecificPool extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/LinkedList<Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;>; )
+protected final java.util.LinkedList freeEntries
+
+private final org.apache.commons.logging.Log log
+
+protected final int maxEntries
+
+protected int numEntries
+
+protected final org.apache.http.conn.routing.HttpRoute route
+@dalvik.annotation.Signature (value =Ljava/util/Queue<Lorg/apache/http/impl/conn/tsccm/WaitingThread;>; )
+protected final java.util.Queue waitingThreads
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.conn.routing.HttpRoute
+int)
+
+public org.apache.http.impl.conn.tsccm.BasicPoolEntry allocEntry(
+java.lang.Object)
+
+public void createdEntry(
+org.apache.http.impl.conn.tsccm.BasicPoolEntry)
+
+public boolean deleteEntry(
+org.apache.http.impl.conn.tsccm.BasicPoolEntry)
+
+public void dropEntry()
+
+public void freeEntry(
+org.apache.http.impl.conn.tsccm.BasicPoolEntry)
+
+public int getCapacity()
+
+public final int getEntryCount()
+
+public final int getMaxEntries()
+
+public final org.apache.http.conn.routing.HttpRoute getRoute()
+
+public boolean hasThread()
+
+public boolean isUnused()
+
+public org.apache.http.impl.conn.tsccm.WaitingThread nextThread()
+
+public void queueThread(
+org.apache.http.impl.conn.tsccm.WaitingThread)
+
+public void removeThread(
+org.apache.http.impl.conn.tsccm.WaitingThread)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager$1 extends java.lang.Object implements org.apache.http.conn.ClientConnectionRequest
+
+----------------FIELDS----------------
+
+final org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager this$0
+
+final org.apache.http.impl.conn.tsccm.PoolEntryRequest val$poolRequest
+
+final org.apache.http.conn.routing.HttpRoute val$route
+----------------METHODS----------------
+
+ void <init>(
+org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager
+org.apache.http.impl.conn.tsccm.PoolEntryRequest
+org.apache.http.conn.routing.HttpRoute)
+
+public void abortRequest()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Lorg/apache/http/conn/ConnectionPoolTimeoutException; )
+public org.apache.http.conn.ManagedClientConnection getConnection(
+long
+java.util.concurrent.TimeUnit)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager extends java.lang.Object implements org.apache.http.conn.ClientConnectionManager
+
+----------------FIELDS----------------
+
+protected org.apache.http.conn.ClientConnectionOperator connOperator
+
+protected final org.apache.http.impl.conn.tsccm.AbstractConnPool connectionPool
+
+private final org.apache.commons.logging.Log log
+
+protected org.apache.http.conn.scheme.SchemeRegistry schemeRegistry
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.params.HttpParams
+org.apache.http.conn.scheme.SchemeRegistry)
+
+static org.apache.commons.logging.Log access$000(
+org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager)
+
+public void closeExpiredConnections()
+
+public void closeIdleConnections(
+long
+java.util.concurrent.TimeUnit)
+
+protected org.apache.http.conn.ClientConnectionOperator createConnectionOperator(
+org.apache.http.conn.scheme.SchemeRegistry)
+
+protected org.apache.http.impl.conn.tsccm.AbstractConnPool createConnectionPool(
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public int getConnectionsInPool()
+
+public int getConnectionsInPool(
+org.apache.http.conn.routing.HttpRoute)
+
+public org.apache.http.conn.scheme.SchemeRegistry getSchemeRegistry()
+
+public void releaseConnection(
+org.apache.http.conn.ManagedClientConnection
+long
+java.util.concurrent.TimeUnit)
+
+public org.apache.http.conn.ClientConnectionRequest requestConnection(
+org.apache.http.conn.routing.HttpRoute
+java.lang.Object)
+
+public void shutdown()
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.conn.tsccm.WaitingThread extends java.lang.Object
+
+----------------FIELDS----------------
+
+private boolean aborted
+
+private final java.util.concurrent.locks.Condition cond
+
+private final org.apache.http.impl.conn.tsccm.RouteSpecificPool pool
+
+private java.lang.Thread waiter
+----------------METHODS----------------
+
+public void <init>(
+java.util.concurrent.locks.Condition
+org.apache.http.impl.conn.tsccm.RouteSpecificPool)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public boolean await(
+java.util.Date)
+
+public final java.util.concurrent.locks.Condition getCondition()
+
+public final org.apache.http.impl.conn.tsccm.RouteSpecificPool getPool()
+
+public final java.lang.Thread getThread()
+
+public void interrupt()
+
+public void wakeup()
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.conn.tsccm.WaitingThreadAborter extends java.lang.Object
+
+----------------FIELDS----------------
+
+private boolean aborted
+
+private org.apache.http.impl.conn.tsccm.WaitingThread waitingThread
+----------------METHODS----------------
+
+public void <init>()
+
+public void abort()
+
+public void setWaitingThread(
+org.apache.http.impl.conn.tsccm.WaitingThread)
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.impl.cookie.AbstractCookieAttributeHandler extends java.lang.Object implements org.apache.http.cookie.CookieAttributeHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean match(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void validate(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.impl.cookie.AbstractCookieSpec extends java.lang.Object implements org.apache.http.cookie.CookieSpec
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Lorg/apache/http/cookie/CookieAttributeHandler;>; )
+private final java.util.Map attribHandlerMap
+----------------METHODS----------------
+
+public void <init>()
+
+protected org.apache.http.cookie.CookieAttributeHandler findAttribHandler(
+java.lang.String)
+
+protected org.apache.http.cookie.CookieAttributeHandler getAttribHandler(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Lorg/apache/http/cookie/CookieAttributeHandler;>; )
+protected java.util.Collection getAttribHandlers()
+
+public void registerAttribHandler(
+java.lang.String
+org.apache.http.cookie.CookieAttributeHandler)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.BasicClientCookie extends java.lang.Object implements org.apache.http.cookie.SetCookie, org.apache.http.cookie.ClientCookie, java.lang.Cloneable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+private java.util.Map attribs
+
+private java.lang.String cookieComment
+
+private java.lang.String cookieDomain
+
+private java.util.Date cookieExpiryDate
+
+private java.lang.String cookiePath
+
+private int cookieVersion
+
+private boolean isSecure
+
+private final java.lang.String name
+
+private java.lang.String value
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public boolean containsAttribute(
+java.lang.String)
+
+public java.lang.String getAttribute(
+java.lang.String)
+
+public java.lang.String getComment()
+
+public java.lang.String getCommentURL()
+
+public java.lang.String getDomain()
+
+public java.util.Date getExpiryDate()
+
+public java.lang.String getName()
+
+public java.lang.String getPath()
+
+public int[] getPorts()
+
+public java.lang.String getValue()
+
+public int getVersion()
+
+public boolean isExpired(
+java.util.Date)
+
+public boolean isPersistent()
+
+public boolean isSecure()
+
+public void setAttribute(
+java.lang.String
+java.lang.String)
+
+public void setComment(
+java.lang.String)
+
+public void setDomain(
+java.lang.String)
+
+public void setExpiryDate(
+java.util.Date)
+
+public void setPath(
+java.lang.String)
+
+public void setSecure(
+boolean)
+
+public void setValue(
+java.lang.String)
+
+public void setVersion(
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.BasicClientCookie2 extends org.apache.http.impl.cookie.BasicClientCookie implements org.apache.http.cookie.SetCookie2
+
+----------------FIELDS----------------
+
+private java.lang.String commentURL
+
+private boolean discard
+
+private int[] ports
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public java.lang.String getCommentURL()
+
+public int[] getPorts()
+
+public boolean isExpired(
+java.util.Date)
+
+public boolean isPersistent()
+
+public void setCommentURL(
+java.lang.String)
+
+public void setDiscard(
+boolean)
+
+public void setPorts(
+int[])
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.BasicCommentHandler extends org.apache.http.impl.cookie.AbstractCookieAttributeHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void parse(
+org.apache.http.cookie.SetCookie
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.BasicDomainHandler extends java.lang.Object implements org.apache.http.cookie.CookieAttributeHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean match(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void parse(
+org.apache.http.cookie.SetCookie
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void validate(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.BasicExpiresHandler extends org.apache.http.impl.cookie.AbstractCookieAttributeHandler
+
+----------------FIELDS----------------
+
+private final java.lang.String[] datepatterns
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void parse(
+org.apache.http.cookie.SetCookie
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.BasicMaxAgeHandler extends org.apache.http.impl.cookie.AbstractCookieAttributeHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void parse(
+org.apache.http.cookie.SetCookie
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.BasicPathHandler extends java.lang.Object implements org.apache.http.cookie.CookieAttributeHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean match(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void parse(
+org.apache.http.cookie.SetCookie
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void validate(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.BasicSecureHandler extends org.apache.http.impl.cookie.AbstractCookieAttributeHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean match(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void parse(
+org.apache.http.cookie.SetCookie
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.BestMatchSpec extends java.lang.Object implements org.apache.http.cookie.CookieSpec
+
+----------------FIELDS----------------
+
+private org.apache.http.impl.cookie.BrowserCompatSpec compat
+
+private final java.lang.String[] datepatterns
+
+private org.apache.http.impl.cookie.NetscapeDraftSpec netscape
+
+private final boolean oneHeader
+
+private org.apache.http.impl.cookie.RFC2965Spec strict
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String[]
+boolean)
+
+private org.apache.http.impl.cookie.BrowserCompatSpec getCompat()
+
+private org.apache.http.impl.cookie.NetscapeDraftSpec getNetscape()
+
+private org.apache.http.impl.cookie.RFC2965Spec getStrict()
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lorg/apache/http/cookie/Cookie;>;)Ljava/util/List<Lorg/apache/http/Header;>; )
+public java.util.List formatCookies(
+java.util.List)
+
+public int getVersion()
+
+public org.apache.http.Header getVersionHeader()
+
+public boolean match(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+@dalvik.annotation.Signature (value =(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List<Lorg/apache/http/cookie/Cookie;>; )
+public java.util.List parse(
+org.apache.http.Header
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void validate(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.BestMatchSpecFactory extends java.lang.Object implements org.apache.http.cookie.CookieSpecFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public org.apache.http.cookie.CookieSpec newInstance(
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.impl.cookie.CookieSpecBase extends org.apache.http.impl.cookie.AbstractCookieSpec
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected static java.lang.String getDefaultDomain(
+org.apache.http.cookie.CookieOrigin)
+
+protected static java.lang.String getDefaultPath(
+org.apache.http.cookie.CookieOrigin)
+
+public boolean match(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Signature (value =([Lorg/apache/http/HeaderElement;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List<Lorg/apache/http/cookie/Cookie;>; )
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+protected java.util.List parse(
+org.apache.http.HeaderElement[]
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void validate(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.BrowserCompatSpec extends org.apache.http.impl.cookie.CookieSpecBase
+
+----------------FIELDS----------------
+
+protected static final java.lang.String[] DATE_PATTERNS
+
+private final java.lang.String[] datepatterns
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+java.lang.String[])
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lorg/apache/http/cookie/Cookie;>;)Ljava/util/List<Lorg/apache/http/Header;>; )
+public java.util.List formatCookies(
+java.util.List)
+
+public int getVersion()
+
+public org.apache.http.Header getVersionHeader()
+@dalvik.annotation.Signature (value =(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List<Lorg/apache/http/cookie/Cookie;>; )
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public java.util.List parse(
+org.apache.http.Header
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.BrowserCompatSpecFactory extends java.lang.Object implements org.apache.http.cookie.CookieSpecFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public org.apache.http.cookie.CookieSpec newInstance(
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.DateParseException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/ThreadLocal<Ljava/lang/ref/SoftReference<Ljava/util/Map<Ljava/lang/String;Ljava/text/SimpleDateFormat;>;>;>; )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/http/impl/cookie/DateUtils$DateFormatHolder; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.http.impl.cookie.DateUtils$DateFormatHolder$1 extends java.lang.ThreadLocal
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+protected volatile java.lang.Object initialValue()
+@dalvik.annotation.Signature (value =()Ljava/lang/ref/SoftReference<Ljava/util/Map<Ljava/lang/String;Ljava/text/SimpleDateFormat;>;>; )
+protected java.lang.ref.SoftReference initialValue()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =DateFormatHolder )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/http/impl/cookie/DateUtils; )
+final class org.apache.http.impl.cookie.DateUtils$DateFormatHolder extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/lang/ThreadLocal<Ljava/lang/ref/SoftReference<Ljava/util/Map<Ljava/lang/String;Ljava/text/SimpleDateFormat;>;>;>; )
+private static final java.lang.ThreadLocal THREADLOCAL_FORMATS
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+public static java.text.SimpleDateFormat formatFor(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/http/impl/cookie/DateUtils$DateFormatHolder; )
+public final class org.apache.http.impl.cookie.DateUtils extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String[] DEFAULT_PATTERNS
+
+private static final java.util.Date DEFAULT_TWO_DIGIT_YEAR_START
+
+public static final java.util.TimeZone GMT
+
+public static final java.lang.String PATTERN_ASCTIME
+
+public static final java.lang.String PATTERN_RFC1036
+
+public static final java.lang.String PATTERN_RFC1123
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static java.lang.String formatDate(
+java.util.Date)
+
+public static java.lang.String formatDate(
+java.util.Date
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/impl/cookie/DateParseException; )
+public static java.util.Date parseDate(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/impl/cookie/DateParseException; )
+public static java.util.Date parseDate(
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/apache/http/impl/cookie/DateParseException; )
+public static java.util.Date parseDate(
+java.lang.String
+java.lang.String[]
+java.util.Date)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.NetscapeDomainHandler extends org.apache.http.impl.cookie.BasicDomainHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+private static boolean isSpecialDomain(
+java.lang.String)
+
+public boolean match(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void validate(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.NetscapeDraftHeaderParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.http.impl.cookie.NetscapeDraftHeaderParser DEFAULT
+
+private static final char[] DELIMITERS
+
+private final org.apache.http.message.BasicHeaderValueParser nvpParser
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public org.apache.http.HeaderElement parseHeader(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.NetscapeDraftSpec extends org.apache.http.impl.cookie.CookieSpecBase
+
+----------------FIELDS----------------
+
+protected static final java.lang.String EXPIRES_PATTERN
+
+private final java.lang.String[] datepatterns
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String[])
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lorg/apache/http/cookie/Cookie;>;)Ljava/util/List<Lorg/apache/http/Header;>; )
+public java.util.List formatCookies(
+java.util.List)
+
+public int getVersion()
+
+public org.apache.http.Header getVersionHeader()
+@dalvik.annotation.Signature (value =(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List<Lorg/apache/http/cookie/Cookie;>; )
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public java.util.List parse(
+org.apache.http.Header
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.NetscapeDraftSpecFactory extends java.lang.Object implements org.apache.http.cookie.CookieSpecFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public org.apache.http.cookie.CookieSpec newInstance(
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.RFC2109DomainHandler extends java.lang.Object implements org.apache.http.cookie.CookieAttributeHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean match(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void parse(
+org.apache.http.cookie.SetCookie
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void validate(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.RFC2109Spec extends org.apache.http.impl.cookie.CookieSpecBase
+
+----------------FIELDS----------------
+
+private static final java.lang.String[] DATE_PATTERNS
+
+private static final org.apache.http.cookie.CookiePathComparator PATH_COMPARATOR
+
+private final java.lang.String[] datepatterns
+
+private final boolean oneHeader
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+java.lang.String[]
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lorg/apache/http/cookie/Cookie;>;)Ljava/util/List<Lorg/apache/http/Header;>; )
+private java.util.List doFormatManyHeaders(
+java.util.List)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lorg/apache/http/cookie/Cookie;>;)Ljava/util/List<Lorg/apache/http/Header;>; )
+private java.util.List doFormatOneHeader(
+java.util.List)
+
+protected void formatCookieAsVer(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.cookie.Cookie
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lorg/apache/http/cookie/Cookie;>;)Ljava/util/List<Lorg/apache/http/Header;>; )
+public java.util.List formatCookies(
+java.util.List)
+
+protected void formatParamAsVer(
+org.apache.http.util.CharArrayBuffer
+java.lang.String
+java.lang.String
+int)
+
+public int getVersion()
+
+public org.apache.http.Header getVersionHeader()
+@dalvik.annotation.Signature (value =(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List<Lorg/apache/http/cookie/Cookie;>; )
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public java.util.List parse(
+org.apache.http.Header
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void validate(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.RFC2109SpecFactory extends java.lang.Object implements org.apache.http.cookie.CookieSpecFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public org.apache.http.cookie.CookieSpec newInstance(
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.RFC2109VersionHandler extends org.apache.http.impl.cookie.AbstractCookieAttributeHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void parse(
+org.apache.http.cookie.SetCookie
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void validate(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.RFC2965CommentUrlAttributeHandler extends java.lang.Object implements org.apache.http.cookie.CookieAttributeHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean match(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void parse(
+org.apache.http.cookie.SetCookie
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void validate(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.RFC2965DiscardAttributeHandler extends java.lang.Object implements org.apache.http.cookie.CookieAttributeHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean match(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void parse(
+org.apache.http.cookie.SetCookie
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void validate(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.RFC2965DomainAttributeHandler extends java.lang.Object implements org.apache.http.cookie.CookieAttributeHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean domainMatch(
+java.lang.String
+java.lang.String)
+
+public boolean match(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void parse(
+org.apache.http.cookie.SetCookie
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void validate(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.RFC2965PortAttributeHandler extends java.lang.Object implements org.apache.http.cookie.CookieAttributeHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+private static int[] parsePortAttribute(
+java.lang.String)
+
+private static boolean portMatch(
+int
+int[])
+
+public boolean match(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void parse(
+org.apache.http.cookie.SetCookie
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void validate(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.RFC2965Spec extends org.apache.http.impl.cookie.RFC2109Spec
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String[]
+boolean)
+
+private static org.apache.http.cookie.CookieOrigin adjustEffectiveHost(
+org.apache.http.cookie.CookieOrigin)
+
+private org.apache.http.impl.cookie.BasicClientCookie createCookie(
+java.lang.String
+java.lang.String
+org.apache.http.cookie.CookieOrigin)
+
+private org.apache.http.impl.cookie.BasicClientCookie createCookie2(
+java.lang.String
+java.lang.String
+org.apache.http.cookie.CookieOrigin)
+
+protected void formatCookieAsVer(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.cookie.Cookie
+int)
+
+public int getVersion()
+
+public org.apache.http.Header getVersionHeader()
+
+public boolean match(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+@dalvik.annotation.Signature (value =(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List<Lorg/apache/http/cookie/Cookie;>; )
+public java.util.List parse(
+org.apache.http.Header
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void validate(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.RFC2965SpecFactory extends java.lang.Object implements org.apache.http.cookie.CookieSpecFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public org.apache.http.cookie.CookieSpec newInstance(
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.cookie.RFC2965VersionAttributeHandler extends java.lang.Object implements org.apache.http.cookie.CookieAttributeHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean match(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void parse(
+org.apache.http.cookie.SetCookie
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/apache/http/cookie/MalformedCookieException; )
+public void validate(
+org.apache.http.cookie.Cookie
+org.apache.http.cookie.CookieOrigin)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.entity.EntityDeserializer extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final org.apache.http.entity.ContentLengthStrategy lenStrategy
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.entity.ContentLengthStrategy)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public org.apache.http.HttpEntity deserialize(
+org.apache.http.io.SessionInputBuffer
+org.apache.http.HttpMessage)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+protected org.apache.http.entity.BasicHttpEntity doDeserialize(
+org.apache.http.io.SessionInputBuffer
+org.apache.http.HttpMessage)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.entity.EntitySerializer extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final org.apache.http.entity.ContentLengthStrategy lenStrategy
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.entity.ContentLengthStrategy)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+protected java.io.OutputStream doSerialize(
+org.apache.http.io.SessionOutputBuffer
+org.apache.http.HttpMessage)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void serialize(
+org.apache.http.io.SessionOutputBuffer
+org.apache.http.HttpMessage
+org.apache.http.HttpEntity)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.entity.LaxContentLengthStrategy extends java.lang.Object implements org.apache.http.entity.ContentLengthStrategy
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException; )
+public long determineLength(
+org.apache.http.HttpMessage)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.entity.StrictContentLengthStrategy extends java.lang.Object implements org.apache.http.entity.ContentLengthStrategy
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException; )
+public long determineLength(
+org.apache.http.HttpMessage)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.io.HttpMessageWriter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/HttpException; )
+public abstract void write(
+org.apache.http.HttpMessage)
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.impl.io.AbstractMessageWriter extends java.lang.Object implements org.apache.http.io.HttpMessageWriter
+
+----------------FIELDS----------------
+
+protected final org.apache.http.util.CharArrayBuffer lineBuf
+
+protected final org.apache.http.message.LineFormatter lineFormatter
+
+protected final org.apache.http.io.SessionOutputBuffer sessionBuffer
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.io.SessionOutputBuffer
+org.apache.http.message.LineFormatter
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/HttpException; )
+public void write(
+org.apache.http.HttpMessage)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void writeHeadLine(
+org.apache.http.HttpMessage)
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.impl.io.AbstractSessionInputBuffer extends java.lang.Object implements org.apache.http.io.SessionInputBuffer
+
+----------------FIELDS----------------
+
+private boolean ascii
+
+private byte[] buffer
+
+private int bufferlen
+
+private int bufferpos
+
+private java.lang.String charset
+
+private java.io.InputStream instream
+
+private org.apache.http.util.ByteArrayBuffer linebuffer
+
+private int maxLineLen
+
+private org.apache.http.impl.io.HttpTransportMetricsImpl metrics
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int lineFromLineBuffer(
+org.apache.http.util.CharArrayBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int lineFromReadBuffer(
+org.apache.http.util.CharArrayBuffer
+int)
+
+private int locateLF()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected int fillBuffer()
+
+public org.apache.http.io.HttpTransportMetrics getMetrics()
+
+protected boolean hasBufferedData()
+
+protected void init(
+java.io.InputStream
+int
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int readLine(
+org.apache.http.util.CharArrayBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.String readLine()
+
+________________CLASS________________
+
+
+public abstract class org.apache.http.impl.io.AbstractSessionOutputBuffer extends java.lang.Object implements org.apache.http.io.SessionOutputBuffer
+
+----------------FIELDS----------------
+
+private static final byte[] CRLF
+
+private static final int MAX_CHUNK
+
+private boolean ascii
+
+private org.apache.http.util.ByteArrayBuffer buffer
+
+private java.lang.String charset
+
+private org.apache.http.impl.io.HttpTransportMetricsImpl metrics
+
+private java.io.OutputStream outstream
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void flushBuffer()
+
+public org.apache.http.io.HttpTransportMetrics getMetrics()
+
+protected void init(
+java.io.OutputStream
+int
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeLine(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeLine(
+org.apache.http.util.CharArrayBuffer)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.io.ChunkedInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+private boolean bof
+
+private final org.apache.http.util.CharArrayBuffer buffer
+
+private int chunkSize
+
+private boolean closed
+
+private boolean eof
+
+private org.apache.http.Header[] footers
+
+private org.apache.http.io.SessionInputBuffer in
+
+private int pos
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.io.SessionInputBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static void exhaustInputStream(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int getChunkSize()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void nextChunk()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void parseTrailerHeaders()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public org.apache.http.Header[] getFooters()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.io.ChunkedOutputStream extends java.io.OutputStream
+
+----------------FIELDS----------------
+
+private byte[] cache
+
+private int cachePosition
+
+private boolean closed
+
+private final org.apache.http.io.SessionOutputBuffer out
+
+private boolean wroteLastChunk
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+org.apache.http.io.SessionOutputBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+org.apache.http.io.SessionOutputBuffer
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void finish()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void flushCache()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void flushCacheWithAppend(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void writeClosingChunk()
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.io.ContentLengthInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+private static final int BUFFER_SIZE
+
+private boolean closed
+
+private long contentLength
+
+private org.apache.http.io.SessionInputBuffer in
+
+private long pos
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.io.SessionInputBuffer
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.io.ContentLengthOutputStream extends java.io.OutputStream
+
+----------------FIELDS----------------
+
+private boolean closed
+
+private final long contentLength
+
+private final org.apache.http.io.SessionOutputBuffer out
+
+private long total
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.io.SessionOutputBuffer
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.io.HttpRequestParser extends org.apache.http.impl.io.AbstractMessageParser
+
+----------------FIELDS----------------
+
+private final org.apache.http.util.CharArrayBuffer lineBuf
+
+private final org.apache.http.HttpRequestFactory requestFactory
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.io.SessionInputBuffer
+org.apache.http.message.LineParser
+org.apache.http.HttpRequestFactory
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/HttpException;Lorg/apache/http/ParseException; )
+protected org.apache.http.HttpMessage parseHead(
+org.apache.http.io.SessionInputBuffer)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.io.HttpRequestWriter extends org.apache.http.impl.io.AbstractMessageWriter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.io.SessionOutputBuffer
+org.apache.http.message.LineFormatter
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void writeHeadLine(
+org.apache.http.HttpMessage)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.io.HttpResponseParser extends org.apache.http.impl.io.AbstractMessageParser
+
+----------------FIELDS----------------
+
+private final org.apache.http.util.CharArrayBuffer lineBuf
+
+private final org.apache.http.HttpResponseFactory responseFactory
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.io.SessionInputBuffer
+org.apache.http.message.LineParser
+org.apache.http.HttpResponseFactory
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/HttpException;Lorg/apache/http/ParseException; )
+protected org.apache.http.HttpMessage parseHead(
+org.apache.http.io.SessionInputBuffer)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.io.HttpResponseWriter extends org.apache.http.impl.io.AbstractMessageWriter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.io.SessionOutputBuffer
+org.apache.http.message.LineFormatter
+org.apache.http.params.HttpParams)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void writeHeadLine(
+org.apache.http.HttpMessage)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.io.HttpTransportMetrics extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract long getBytesTransferred()
+
+public abstract void reset()
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.io.HttpTransportMetricsImpl extends java.lang.Object implements org.apache.http.io.HttpTransportMetrics
+
+----------------FIELDS----------------
+
+private long bytesTransferred
+----------------METHODS----------------
+
+public void <init>()
+
+public long getBytesTransferred()
+
+public void incrementBytesTransferred(
+long)
+
+public void reset()
+
+public void setBytesTransferred(
+long)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.io.IdentityInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+private boolean closed
+
+private final org.apache.http.io.SessionInputBuffer in
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.io.SessionInputBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.io.IdentityOutputStream extends java.io.OutputStream
+
+----------------FIELDS----------------
+
+private boolean closed
+
+private final org.apache.http.io.SessionOutputBuffer out
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.io.SessionOutputBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.io.SocketInputBuffer extends org.apache.http.impl.io.AbstractSessionInputBuffer
+
+----------------FIELDS----------------
+
+private static final java.lang.Class SOCKET_TIMEOUT_CLASS
+
+private final java.net.Socket socket
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.net.Socket
+int
+org.apache.http.params.HttpParams)
+
+private static java.lang.Class SocketTimeoutExceptionClass()
+
+private static boolean isSocketTimeoutException(
+java.io.InterruptedIOException)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean isDataAvailable(
+int)
+
+________________CLASS________________
+
+
+public class org.apache.http.impl.io.SocketOutputBuffer extends org.apache.http.impl.io.AbstractSessionOutputBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.net.Socket
+int
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public class org.apache.http.message.BasicHeader extends java.lang.Object implements org.apache.http.Header, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private final java.lang.String name
+
+private final java.lang.String value
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public org.apache.http.HeaderElement[] getElements()
+
+public java.lang.String getName()
+
+public java.lang.String getValue()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.http.message.BasicHeaderElement extends java.lang.Object implements org.apache.http.HeaderElement, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private final java.lang.String name
+
+private final org.apache.http.NameValuePair[] parameters
+
+private final java.lang.String value
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String
+org.apache.http.NameValuePair[])
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getName()
+
+public org.apache.http.NameValuePair getParameter(
+int)
+
+public org.apache.http.NameValuePair getParameterByName(
+java.lang.String)
+
+public int getParameterCount()
+
+public org.apache.http.NameValuePair[] getParameters()
+
+public java.lang.String getValue()
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.http.message.BasicHeaderElementIterator extends java.lang.Object implements org.apache.http.HeaderElementIterator
+
+----------------FIELDS----------------
+
+private org.apache.http.util.CharArrayBuffer buffer
+
+private org.apache.http.HeaderElement currentElement
+
+private org.apache.http.message.ParserCursor cursor
+
+private final org.apache.http.HeaderIterator headerIt
+
+private final org.apache.http.message.HeaderValueParser parser
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.HeaderIterator)
+
+public void <init>(
+org.apache.http.HeaderIterator
+org.apache.http.message.HeaderValueParser)
+
+private void bufferHeaderValue()
+
+private void parseNextElement()
+
+public boolean hasNext()
+@dalvik.annotation.Throws (value =Ljava/util/NoSuchElementException; )
+public final java.lang.Object next()
+@dalvik.annotation.Throws (value =Ljava/util/NoSuchElementException; )
+public org.apache.http.HeaderElement nextElement()
+@dalvik.annotation.Throws (value =Ljava/lang/UnsupportedOperationException; )
+public void remove()
+
+________________CLASS________________
+
+
+public class org.apache.http.message.BasicHeaderIterator extends java.lang.Object implements org.apache.http.HeaderIterator
+
+----------------FIELDS----------------
+
+protected final org.apache.http.Header[] allHeaders
+
+protected int currentIndex
+
+protected java.lang.String headerName
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.Header[]
+java.lang.String)
+
+protected boolean filterHeader(
+int)
+
+protected int findNext(
+int)
+
+public boolean hasNext()
+@dalvik.annotation.Throws (value =Ljava/util/NoSuchElementException; )
+public final java.lang.Object next()
+@dalvik.annotation.Throws (value =Ljava/util/NoSuchElementException; )
+public org.apache.http.Header nextHeader()
+@dalvik.annotation.Throws (value =Ljava/lang/UnsupportedOperationException; )
+public void remove()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.message.HeaderValueFormatter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.apache.http.util.CharArrayBuffer formatElements(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.HeaderElement[]
+boolean)
+
+public abstract org.apache.http.util.CharArrayBuffer formatHeaderElement(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.HeaderElement
+boolean)
+
+public abstract org.apache.http.util.CharArrayBuffer formatNameValuePair(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.NameValuePair
+boolean)
+
+public abstract org.apache.http.util.CharArrayBuffer formatParameters(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.NameValuePair[]
+boolean)
+
+________________CLASS________________
+
+
+public class org.apache.http.message.BasicHeaderValueFormatter extends java.lang.Object implements org.apache.http.message.HeaderValueFormatter
+
+----------------FIELDS----------------
+
+public static final org.apache.http.message.BasicHeaderValueFormatter DEFAULT
+
+public static final java.lang.String SEPARATORS
+
+public static final java.lang.String UNSAFE_CHARS
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static final java.lang.String formatElements(
+org.apache.http.HeaderElement[]
+boolean
+org.apache.http.message.HeaderValueFormatter)
+
+public static final java.lang.String formatHeaderElement(
+org.apache.http.HeaderElement
+boolean
+org.apache.http.message.HeaderValueFormatter)
+
+public static final java.lang.String formatNameValuePair(
+org.apache.http.NameValuePair
+boolean
+org.apache.http.message.HeaderValueFormatter)
+
+public static final java.lang.String formatParameters(
+org.apache.http.NameValuePair[]
+boolean
+org.apache.http.message.HeaderValueFormatter)
+
+protected void doFormatValue(
+org.apache.http.util.CharArrayBuffer
+java.lang.String
+boolean)
+
+protected int estimateElementsLen(
+org.apache.http.HeaderElement[])
+
+protected int estimateHeaderElementLen(
+org.apache.http.HeaderElement)
+
+protected int estimateNameValuePairLen(
+org.apache.http.NameValuePair)
+
+protected int estimateParametersLen(
+org.apache.http.NameValuePair[])
+
+public org.apache.http.util.CharArrayBuffer formatElements(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.HeaderElement[]
+boolean)
+
+public org.apache.http.util.CharArrayBuffer formatHeaderElement(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.HeaderElement
+boolean)
+
+public org.apache.http.util.CharArrayBuffer formatNameValuePair(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.NameValuePair
+boolean)
+
+public org.apache.http.util.CharArrayBuffer formatParameters(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.NameValuePair[]
+boolean)
+
+protected boolean isSeparator(
+char)
+
+protected boolean isUnsafe(
+char)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.message.HeaderValueParser extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public abstract org.apache.http.HeaderElement[] parseElements(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public abstract org.apache.http.HeaderElement parseHeaderElement(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public abstract org.apache.http.NameValuePair parseNameValuePair(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public abstract org.apache.http.NameValuePair[] parseParameters(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+
+________________CLASS________________
+
+
+public class org.apache.http.message.BasicHeaderValueParser extends java.lang.Object implements org.apache.http.message.HeaderValueParser
+
+----------------FIELDS----------------
+
+private static final char[] ALL_DELIMITERS
+
+public static final org.apache.http.message.BasicHeaderValueParser DEFAULT
+
+private static final char ELEM_DELIMITER
+
+private static final char PARAM_DELIMITER
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static boolean isOneOf(
+char
+char[])
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public static final org.apache.http.HeaderElement[] parseElements(
+java.lang.String
+org.apache.http.message.HeaderValueParser)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public static final org.apache.http.HeaderElement parseHeaderElement(
+java.lang.String
+org.apache.http.message.HeaderValueParser)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public static final org.apache.http.NameValuePair parseNameValuePair(
+java.lang.String
+org.apache.http.message.HeaderValueParser)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public static final org.apache.http.NameValuePair[] parseParameters(
+java.lang.String
+org.apache.http.message.HeaderValueParser)
+
+protected org.apache.http.HeaderElement createHeaderElement(
+java.lang.String
+java.lang.String
+org.apache.http.NameValuePair[])
+
+protected org.apache.http.NameValuePair createNameValuePair(
+java.lang.String
+java.lang.String)
+
+public org.apache.http.HeaderElement[] parseElements(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+
+public org.apache.http.HeaderElement parseHeaderElement(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+
+public org.apache.http.NameValuePair parseNameValuePair(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+
+public org.apache.http.NameValuePair parseNameValuePair(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor
+char[])
+
+public org.apache.http.NameValuePair[] parseParameters(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+
+________________CLASS________________
+
+
+public class org.apache.http.message.BasicHttpRequest extends org.apache.http.message.AbstractHttpMessage implements org.apache.http.HttpRequest
+
+----------------FIELDS----------------
+
+private final java.lang.String method
+
+private final org.apache.http.RequestLine requestline
+
+private final java.lang.String uri
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String
+org.apache.http.ProtocolVersion)
+
+public void <init>(
+org.apache.http.RequestLine)
+
+public org.apache.http.ProtocolVersion getProtocolVersion()
+
+public org.apache.http.RequestLine getRequestLine()
+
+________________CLASS________________
+
+
+public class org.apache.http.message.BasicHttpEntityEnclosingRequest extends org.apache.http.message.BasicHttpRequest implements org.apache.http.HttpEntityEnclosingRequest
+
+----------------FIELDS----------------
+
+private org.apache.http.HttpEntity entity
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String
+org.apache.http.ProtocolVersion)
+
+public void <init>(
+org.apache.http.RequestLine)
+
+public boolean expectContinue()
+
+public org.apache.http.HttpEntity getEntity()
+
+public void setEntity(
+org.apache.http.HttpEntity)
+
+________________CLASS________________
+
+
+public class org.apache.http.message.BasicHttpResponse extends org.apache.http.message.AbstractHttpMessage implements org.apache.http.HttpResponse
+
+----------------FIELDS----------------
+
+private org.apache.http.HttpEntity entity
+
+private java.util.Locale locale
+
+private org.apache.http.ReasonPhraseCatalog reasonCatalog
+
+private org.apache.http.StatusLine statusline
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.ProtocolVersion
+int
+java.lang.String)
+
+public void <init>(
+org.apache.http.StatusLine)
+
+public void <init>(
+org.apache.http.StatusLine
+org.apache.http.ReasonPhraseCatalog
+java.util.Locale)
+
+public org.apache.http.HttpEntity getEntity()
+
+public java.util.Locale getLocale()
+
+public org.apache.http.ProtocolVersion getProtocolVersion()
+
+protected java.lang.String getReason(
+int)
+
+public org.apache.http.StatusLine getStatusLine()
+
+public void setEntity(
+org.apache.http.HttpEntity)
+
+public void setLocale(
+java.util.Locale)
+
+public void setReasonPhrase(
+java.lang.String)
+
+public void setStatusCode(
+int)
+
+public void setStatusLine(
+org.apache.http.ProtocolVersion
+int)
+
+public void setStatusLine(
+org.apache.http.ProtocolVersion
+int
+java.lang.String)
+
+public void setStatusLine(
+org.apache.http.StatusLine)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.message.LineFormatter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.apache.http.util.CharArrayBuffer appendProtocolVersion(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.ProtocolVersion)
+
+public abstract org.apache.http.util.CharArrayBuffer formatHeader(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.Header)
+
+public abstract org.apache.http.util.CharArrayBuffer formatRequestLine(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.RequestLine)
+
+public abstract org.apache.http.util.CharArrayBuffer formatStatusLine(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.StatusLine)
+
+________________CLASS________________
+
+
+public class org.apache.http.message.BasicLineFormatter extends java.lang.Object implements org.apache.http.message.LineFormatter
+
+----------------FIELDS----------------
+
+public static final org.apache.http.message.BasicLineFormatter DEFAULT
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static final java.lang.String formatHeader(
+org.apache.http.Header
+org.apache.http.message.LineFormatter)
+
+public static final java.lang.String formatProtocolVersion(
+org.apache.http.ProtocolVersion
+org.apache.http.message.LineFormatter)
+
+public static final java.lang.String formatRequestLine(
+org.apache.http.RequestLine
+org.apache.http.message.LineFormatter)
+
+public static final java.lang.String formatStatusLine(
+org.apache.http.StatusLine
+org.apache.http.message.LineFormatter)
+
+public org.apache.http.util.CharArrayBuffer appendProtocolVersion(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.ProtocolVersion)
+
+protected void doFormatHeader(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.Header)
+
+protected void doFormatRequestLine(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.RequestLine)
+
+protected void doFormatStatusLine(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.StatusLine)
+
+protected int estimateProtocolVersionLen(
+org.apache.http.ProtocolVersion)
+
+public org.apache.http.util.CharArrayBuffer formatHeader(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.Header)
+
+public org.apache.http.util.CharArrayBuffer formatRequestLine(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.RequestLine)
+
+public org.apache.http.util.CharArrayBuffer formatStatusLine(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.StatusLine)
+
+protected org.apache.http.util.CharArrayBuffer initBuffer(
+org.apache.http.util.CharArrayBuffer)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.message.LineParser extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean hasProtocolVersion(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public abstract org.apache.http.Header parseHeader(
+org.apache.http.util.CharArrayBuffer)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public abstract org.apache.http.ProtocolVersion parseProtocolVersion(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public abstract org.apache.http.RequestLine parseRequestLine(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public abstract org.apache.http.StatusLine parseStatusLine(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+
+________________CLASS________________
+
+
+public class org.apache.http.message.BasicLineParser extends java.lang.Object implements org.apache.http.message.LineParser
+
+----------------FIELDS----------------
+
+public static final org.apache.http.message.BasicLineParser DEFAULT
+
+protected final org.apache.http.ProtocolVersion protocol
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+org.apache.http.ProtocolVersion)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public static final org.apache.http.Header parseHeader(
+java.lang.String
+org.apache.http.message.LineParser)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public static final org.apache.http.ProtocolVersion parseProtocolVersion(
+java.lang.String
+org.apache.http.message.LineParser)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public static final org.apache.http.RequestLine parseRequestLine(
+java.lang.String
+org.apache.http.message.LineParser)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public static final org.apache.http.StatusLine parseStatusLine(
+java.lang.String
+org.apache.http.message.LineParser)
+
+protected org.apache.http.ProtocolVersion createProtocolVersion(
+int
+int)
+
+protected org.apache.http.RequestLine createRequestLine(
+java.lang.String
+java.lang.String
+org.apache.http.ProtocolVersion)
+
+protected org.apache.http.StatusLine createStatusLine(
+org.apache.http.ProtocolVersion
+int
+java.lang.String)
+
+public boolean hasProtocolVersion(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public org.apache.http.Header parseHeader(
+org.apache.http.util.CharArrayBuffer)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public org.apache.http.ProtocolVersion parseProtocolVersion(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public org.apache.http.RequestLine parseRequestLine(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public org.apache.http.StatusLine parseStatusLine(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+
+protected void skipWhitespace(
+org.apache.http.util.CharArrayBuffer
+org.apache.http.message.ParserCursor)
+
+________________CLASS________________
+
+
+public class org.apache.http.message.BasicListHeaderIterator extends java.lang.Object implements org.apache.http.HeaderIterator
+
+----------------FIELDS----------------
+
+protected final java.util.List allHeaders
+
+protected int currentIndex
+
+protected java.lang.String headerName
+
+protected int lastIndex
+----------------METHODS----------------
+
+public void <init>(
+java.util.List
+java.lang.String)
+
+protected boolean filterHeader(
+int)
+
+protected int findNext(
+int)
+
+public boolean hasNext()
+@dalvik.annotation.Throws (value =Ljava/util/NoSuchElementException; )
+public final java.lang.Object next()
+@dalvik.annotation.Throws (value =Ljava/util/NoSuchElementException; )
+public org.apache.http.Header nextHeader()
+@dalvik.annotation.Throws (value =Ljava/lang/UnsupportedOperationException; )
+public void remove()
+
+________________CLASS________________
+
+
+public class org.apache.http.message.BasicNameValuePair extends java.lang.Object implements org.apache.http.NameValuePair, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private final java.lang.String name
+
+private final java.lang.String value
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getName()
+
+public java.lang.String getValue()
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.http.message.BasicRequestLine extends java.lang.Object implements org.apache.http.RequestLine, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private final java.lang.String method
+
+private final org.apache.http.ProtocolVersion protoversion
+
+private final java.lang.String uri
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String
+org.apache.http.ProtocolVersion)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public java.lang.String getMethod()
+
+public org.apache.http.ProtocolVersion getProtocolVersion()
+
+public java.lang.String getUri()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.http.message.BasicStatusLine extends java.lang.Object implements org.apache.http.StatusLine, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private final org.apache.http.ProtocolVersion protoVersion
+
+private final java.lang.String reasonPhrase
+
+private final int statusCode
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.ProtocolVersion
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public org.apache.http.ProtocolVersion getProtocolVersion()
+
+public java.lang.String getReasonPhrase()
+
+public int getStatusCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.http.message.BasicTokenIterator extends java.lang.Object implements org.apache.http.TokenIterator
+
+----------------FIELDS----------------
+
+public static final java.lang.String HTTP_SEPARATORS
+
+protected java.lang.String currentHeader
+
+protected java.lang.String currentToken
+
+protected final org.apache.http.HeaderIterator headerIt
+
+protected int searchPos
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.HeaderIterator)
+
+protected java.lang.String createToken(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+protected int findNext(
+int)
+
+protected int findTokenEnd(
+int)
+
+protected int findTokenSeparator(
+int)
+
+protected int findTokenStart(
+int)
+
+public boolean hasNext()
+
+protected boolean isHttpSeparator(
+char)
+
+protected boolean isTokenChar(
+char)
+
+protected boolean isTokenSeparator(
+char)
+
+protected boolean isWhitespace(
+char)
+@dalvik.annotation.Throws (value =Ljava/util/NoSuchElementException;Lorg/apache/http/ParseException; )
+public final java.lang.Object next()
+@dalvik.annotation.Throws (value =Ljava/util/NoSuchElementException;Lorg/apache/http/ParseException; )
+public java.lang.String nextToken()
+@dalvik.annotation.Throws (value =Ljava/lang/UnsupportedOperationException; )
+public final void remove()
+
+________________CLASS________________
+
+
+public class org.apache.http.message.BufferedHeader extends java.lang.Object implements org.apache.http.FormattedHeader, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private final org.apache.http.util.CharArrayBuffer buffer
+
+private final java.lang.String name
+
+private final int valuePos
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public void <init>(
+org.apache.http.util.CharArrayBuffer)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public org.apache.http.util.CharArrayBuffer getBuffer()
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public org.apache.http.HeaderElement[] getElements()
+
+public java.lang.String getName()
+
+public java.lang.String getValue()
+
+public int getValuePos()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.http.message.HeaderGroup extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private java.util.List headers
+----------------METHODS----------------
+
+public void <init>()
+
+public void addHeader(
+org.apache.http.Header)
+
+public void clear()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public boolean containsHeader(
+java.lang.String)
+
+public org.apache.http.message.HeaderGroup copy()
+
+public org.apache.http.Header[] getAllHeaders()
+
+public org.apache.http.Header getCondensedHeader(
+java.lang.String)
+
+public org.apache.http.Header getFirstHeader(
+java.lang.String)
+
+public org.apache.http.Header[] getHeaders(
+java.lang.String)
+
+public org.apache.http.Header getLastHeader(
+java.lang.String)
+
+public org.apache.http.HeaderIterator iterator()
+
+public org.apache.http.HeaderIterator iterator(
+java.lang.String)
+
+public void removeHeader(
+org.apache.http.Header)
+
+public void setHeaders(
+org.apache.http.Header[])
+
+public void updateHeader(
+org.apache.http.Header)
+
+________________CLASS________________
+
+
+public class org.apache.http.message.ParserCursor extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int lowerBound
+
+private int pos
+
+private final int upperBound
+----------------METHODS----------------
+
+public void <init>(
+int
+int)
+
+public boolean atEnd()
+
+public int getLowerBound()
+
+public int getPos()
+
+public int getUpperBound()
+
+public java.lang.String toString()
+
+public void updatePos(
+int)
+
+________________CLASS________________
+
+
+public final class org.apache.http.params.BasicHttpParams extends org.apache.http.params.AbstractHttpParams implements java.io.Serializable, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.util.HashMap parameters
+----------------METHODS----------------
+
+public void <init>()
+
+public void clear()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public org.apache.http.params.HttpParams copy()
+
+protected void copyParams(
+org.apache.http.params.HttpParams)
+
+public java.lang.Object getParameter(
+java.lang.String)
+
+public boolean isParameterSet(
+java.lang.String)
+
+public boolean isParameterSetLocally(
+java.lang.String)
+
+public boolean removeParameter(
+java.lang.String)
+
+public org.apache.http.params.HttpParams setParameter(
+java.lang.String
+java.lang.Object)
+
+public void setParameters(
+java.lang.String[]
+java.lang.Object)
+
+________________CLASS________________
+
+
+public final class org.apache.http.params.DefaultedHttpParams extends org.apache.http.params.AbstractHttpParams
+
+----------------FIELDS----------------
+
+private final org.apache.http.params.HttpParams defaults
+
+private final org.apache.http.params.HttpParams local
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.params.HttpParams
+org.apache.http.params.HttpParams)
+
+public org.apache.http.params.HttpParams copy()
+
+public org.apache.http.params.HttpParams getDefaults()
+
+public java.lang.Object getParameter(
+java.lang.String)
+
+public boolean removeParameter(
+java.lang.String)
+
+public org.apache.http.params.HttpParams setParameter(
+java.lang.String
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.http.params.HttpConnectionParamBean extends org.apache.http.params.HttpAbstractParamBean
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.params.HttpParams)
+
+public void setConnectionTimeout(
+int)
+
+public void setLinger(
+int)
+
+public void setSoTimeout(
+int)
+
+public void setSocketBufferSize(
+int)
+
+public void setStaleCheckingEnabled(
+boolean)
+
+public void setTcpNoDelay(
+boolean)
+
+________________CLASS________________
+
+
+public final class org.apache.http.params.HttpConnectionParams extends java.lang.Object implements org.apache.http.params.CoreConnectionPNames
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static int getConnectionTimeout(
+org.apache.http.params.HttpParams)
+
+public static int getLinger(
+org.apache.http.params.HttpParams)
+
+public static int getSoTimeout(
+org.apache.http.params.HttpParams)
+
+public static int getSocketBufferSize(
+org.apache.http.params.HttpParams)
+
+public static boolean getTcpNoDelay(
+org.apache.http.params.HttpParams)
+
+public static boolean isStaleCheckingEnabled(
+org.apache.http.params.HttpParams)
+
+public static void setConnectionTimeout(
+org.apache.http.params.HttpParams
+int)
+
+public static void setLinger(
+org.apache.http.params.HttpParams
+int)
+
+public static void setSoTimeout(
+org.apache.http.params.HttpParams
+int)
+
+public static void setSocketBufferSize(
+org.apache.http.params.HttpParams
+int)
+
+public static void setStaleCheckingEnabled(
+org.apache.http.params.HttpParams
+boolean)
+
+public static void setTcpNoDelay(
+org.apache.http.params.HttpParams
+boolean)
+
+________________CLASS________________
+
+
+public class org.apache.http.params.HttpProtocolParamBean extends org.apache.http.params.HttpAbstractParamBean
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.params.HttpParams)
+
+public void setContentCharset(
+java.lang.String)
+
+public void setHttpElementCharset(
+java.lang.String)
+
+public void setUseExpectContinue(
+boolean)
+
+public void setUserAgent(
+java.lang.String)
+
+public void setVersion(
+org.apache.http.HttpVersion)
+
+________________CLASS________________
+
+
+public final class org.apache.http.params.HttpProtocolParams extends java.lang.Object implements org.apache.http.params.CoreProtocolPNames
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static java.lang.String getContentCharset(
+org.apache.http.params.HttpParams)
+
+public static java.lang.String getHttpElementCharset(
+org.apache.http.params.HttpParams)
+
+public static java.lang.String getUserAgent(
+org.apache.http.params.HttpParams)
+
+public static org.apache.http.ProtocolVersion getVersion(
+org.apache.http.params.HttpParams)
+
+public static void setContentCharset(
+org.apache.http.params.HttpParams
+java.lang.String)
+
+public static void setHttpElementCharset(
+org.apache.http.params.HttpParams
+java.lang.String)
+
+public static void setUseExpectContinue(
+org.apache.http.params.HttpParams
+boolean)
+
+public static void setUserAgent(
+org.apache.http.params.HttpParams
+java.lang.String)
+
+public static void setVersion(
+org.apache.http.params.HttpParams
+org.apache.http.ProtocolVersion)
+
+public static boolean useExpectContinue(
+org.apache.http.params.HttpParams)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.protocol.HttpContext extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String RESERVED_PREFIX
+----------------METHODS----------------
+
+public abstract java.lang.Object getAttribute(
+java.lang.String)
+
+public abstract java.lang.Object removeAttribute(
+java.lang.String)
+
+public abstract void setAttribute(
+java.lang.String
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.http.protocol.BasicHttpContext extends java.lang.Object implements org.apache.http.protocol.HttpContext
+
+----------------FIELDS----------------
+
+private java.util.Map map
+
+private final org.apache.http.protocol.HttpContext parentContext
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.apache.http.protocol.HttpContext)
+
+public java.lang.Object getAttribute(
+java.lang.String)
+
+public java.lang.Object removeAttribute(
+java.lang.String)
+
+public void setAttribute(
+java.lang.String
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.protocol.HttpProcessor extends java.lang.Object implements org.apache.http.HttpRequestInterceptor, org.apache.http.HttpResponseInterceptor
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.protocol.HttpRequestInterceptorList extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void addRequestInterceptor(
+org.apache.http.HttpRequestInterceptor)
+
+public abstract void addRequestInterceptor(
+org.apache.http.HttpRequestInterceptor
+int)
+
+public abstract void clearRequestInterceptors()
+
+public abstract org.apache.http.HttpRequestInterceptor getRequestInterceptor(
+int)
+
+public abstract int getRequestInterceptorCount()
+
+public abstract void removeRequestInterceptorByClass(
+java.lang.Class)
+
+public abstract void setInterceptors(
+java.util.List)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.protocol.HttpResponseInterceptorList extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void addResponseInterceptor(
+org.apache.http.HttpResponseInterceptor)
+
+public abstract void addResponseInterceptor(
+org.apache.http.HttpResponseInterceptor
+int)
+
+public abstract void clearResponseInterceptors()
+
+public abstract org.apache.http.HttpResponseInterceptor getResponseInterceptor(
+int)
+
+public abstract int getResponseInterceptorCount()
+
+public abstract void removeResponseInterceptorByClass(
+java.lang.Class)
+
+public abstract void setInterceptors(
+java.util.List)
+
+________________CLASS________________
+
+
+public final class org.apache.http.protocol.BasicHttpProcessor extends java.lang.Object implements org.apache.http.protocol.HttpProcessor, org.apache.http.protocol.HttpRequestInterceptorList, org.apache.http.protocol.HttpResponseInterceptorList, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+protected java.util.List requestInterceptors
+
+protected java.util.List responseInterceptors
+----------------METHODS----------------
+
+public void <init>()
+
+public final void addInterceptor(
+org.apache.http.HttpRequestInterceptor)
+
+public final void addInterceptor(
+org.apache.http.HttpRequestInterceptor
+int)
+
+public final void addInterceptor(
+org.apache.http.HttpResponseInterceptor)
+
+public final void addInterceptor(
+org.apache.http.HttpResponseInterceptor
+int)
+
+public void addRequestInterceptor(
+org.apache.http.HttpRequestInterceptor)
+
+public void addRequestInterceptor(
+org.apache.http.HttpRequestInterceptor
+int)
+
+public void addResponseInterceptor(
+org.apache.http.HttpResponseInterceptor)
+
+public void addResponseInterceptor(
+org.apache.http.HttpResponseInterceptor
+int)
+
+public void clearInterceptors()
+
+public void clearRequestInterceptors()
+
+public void clearResponseInterceptors()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public org.apache.http.protocol.BasicHttpProcessor copy()
+
+protected void copyInterceptors(
+org.apache.http.protocol.BasicHttpProcessor)
+
+public org.apache.http.HttpRequestInterceptor getRequestInterceptor(
+int)
+
+public int getRequestInterceptorCount()
+
+public org.apache.http.HttpResponseInterceptor getResponseInterceptor(
+int)
+
+public int getResponseInterceptorCount()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/HttpException; )
+public void process(
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/HttpException; )
+public void process(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+public void removeRequestInterceptorByClass(
+java.lang.Class)
+
+public void removeResponseInterceptorByClass(
+java.lang.Class)
+
+public void setInterceptors(
+java.util.List)
+
+________________CLASS________________
+
+
+public final class org.apache.http.protocol.DefaultedHttpContext extends java.lang.Object implements org.apache.http.protocol.HttpContext
+
+----------------FIELDS----------------
+
+private final org.apache.http.protocol.HttpContext defaults
+
+private final org.apache.http.protocol.HttpContext local
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.protocol.HttpContext
+org.apache.http.protocol.HttpContext)
+
+public java.lang.Object getAttribute(
+java.lang.String)
+
+public org.apache.http.protocol.HttpContext getDefaults()
+
+public java.lang.Object removeAttribute(
+java.lang.String)
+
+public void setAttribute(
+java.lang.String
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.protocol.ExecutionContext extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String HTTP_CONNECTION
+
+public static final java.lang.String HTTP_PROXY_HOST
+
+public static final java.lang.String HTTP_REQUEST
+
+public static final java.lang.String HTTP_REQ_SENT
+
+public static final java.lang.String HTTP_RESPONSE
+
+public static final java.lang.String HTTP_TARGET_HOST
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public final class org.apache.http.protocol.HTTP extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ASCII
+
+public static final java.lang.String CHARSET_PARAM
+
+public static final java.lang.String CHUNK_CODING
+
+public static final java.lang.String CONN_CLOSE
+
+public static final java.lang.String CONN_DIRECTIVE
+
+public static final java.lang.String CONN_KEEP_ALIVE
+
+public static final java.lang.String CONTENT_ENCODING
+
+public static final java.lang.String CONTENT_LEN
+
+public static final java.lang.String CONTENT_TYPE
+
+public static final int CR
+
+public static final java.lang.String DATE_HEADER
+
+public static final java.lang.String DEFAULT_CONTENT_CHARSET
+
+public static final java.lang.String DEFAULT_CONTENT_TYPE
+
+public static final java.lang.String DEFAULT_PROTOCOL_CHARSET
+
+public static final java.lang.String EXPECT_CONTINUE
+
+public static final java.lang.String EXPECT_DIRECTIVE
+
+public static final int HT
+
+public static final java.lang.String IDENTITY_CODING
+
+public static final java.lang.String ISO_8859_1
+
+public static final int LF
+
+public static final java.lang.String OCTET_STREAM_TYPE
+
+public static final java.lang.String PLAIN_TEXT_TYPE
+
+public static final java.lang.String SERVER_HEADER
+
+public static final int SP
+
+public static final java.lang.String TARGET_HOST
+
+public static final java.lang.String TRANSFER_ENCODING
+
+public static final java.lang.String USER_AGENT
+
+public static final java.lang.String US_ASCII
+
+public static final java.lang.String UTF_16
+
+public static final java.lang.String UTF_8
+----------------METHODS----------------
+
+private void <init>()
+
+public static boolean isWhitespace(
+char)
+
+________________CLASS________________
+
+
+public class org.apache.http.protocol.HttpDateGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.util.TimeZone GMT
+
+public static final java.lang.String PATTERN_RFC1123
+
+private long dateAsLong
+
+private java.lang.String dateAsText
+
+private final java.text.DateFormat dateformat
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public java.lang.String getCurrentDate()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.protocol.HttpExpectationVerifier extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException; )
+public abstract void verify(
+org.apache.http.HttpRequest
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.protocol.HttpRequestExecutor extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected boolean canResponseHaveBody(
+org.apache.http.HttpRequest
+org.apache.http.HttpResponse)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+protected org.apache.http.HttpResponse doReceiveResponse(
+org.apache.http.HttpRequest
+org.apache.http.HttpClientConnection
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/HttpException; )
+protected org.apache.http.HttpResponse doSendRequest(
+org.apache.http.HttpRequest
+org.apache.http.HttpClientConnection
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/HttpException; )
+public org.apache.http.HttpResponse execute(
+org.apache.http.HttpRequest
+org.apache.http.HttpClientConnection
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void postProcess(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpProcessor
+org.apache.http.protocol.HttpContext)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void preProcess(
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpProcessor
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.protocol.HttpRequestHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public abstract void handle(
+org.apache.http.HttpRequest
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.http.protocol.HttpRequestHandlerResolver extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.apache.http.protocol.HttpRequestHandler lookup(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.http.protocol.HttpRequestHandlerRegistry extends java.lang.Object implements org.apache.http.protocol.HttpRequestHandlerResolver
+
+----------------FIELDS----------------
+
+private final org.apache.http.protocol.UriPatternMatcher matcher
+----------------METHODS----------------
+
+public void <init>()
+
+public org.apache.http.protocol.HttpRequestHandler lookup(
+java.lang.String)
+
+protected boolean matchUriRequestPattern(
+java.lang.String
+java.lang.String)
+
+public void register(
+java.lang.String
+org.apache.http.protocol.HttpRequestHandler)
+
+public void setHandlers(
+java.util.Map)
+
+public void unregister(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.http.protocol.HttpService extends java.lang.Object
+
+----------------FIELDS----------------
+
+private org.apache.http.ConnectionReuseStrategy connStrategy
+
+private org.apache.http.protocol.HttpExpectationVerifier expectationVerifier
+
+private org.apache.http.protocol.HttpRequestHandlerResolver handlerResolver
+
+private org.apache.http.params.HttpParams params
+
+private org.apache.http.protocol.HttpProcessor processor
+
+private org.apache.http.HttpResponseFactory responseFactory
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.protocol.HttpProcessor
+org.apache.http.ConnectionReuseStrategy
+org.apache.http.HttpResponseFactory)
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+protected void doService(
+org.apache.http.HttpRequest
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+public org.apache.http.params.HttpParams getParams()
+
+protected void handleException(
+org.apache.http.HttpException
+org.apache.http.HttpResponse)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/HttpException; )
+public void handleRequest(
+org.apache.http.HttpServerConnection
+org.apache.http.protocol.HttpContext)
+
+public void setConnReuseStrategy(
+org.apache.http.ConnectionReuseStrategy)
+
+public void setExpectationVerifier(
+org.apache.http.protocol.HttpExpectationVerifier)
+
+public void setHandlerResolver(
+org.apache.http.protocol.HttpRequestHandlerResolver)
+
+public void setHttpProcessor(
+org.apache.http.protocol.HttpProcessor)
+
+public void setParams(
+org.apache.http.params.HttpParams)
+
+public void setResponseFactory(
+org.apache.http.HttpResponseFactory)
+
+________________CLASS________________
+
+
+public class org.apache.http.protocol.RequestConnControl extends java.lang.Object implements org.apache.http.HttpRequestInterceptor
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void process(
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.protocol.RequestContent extends java.lang.Object implements org.apache.http.HttpRequestInterceptor
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void process(
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.protocol.RequestDate extends java.lang.Object implements org.apache.http.HttpRequestInterceptor
+
+----------------FIELDS----------------
+
+private static final org.apache.http.protocol.HttpDateGenerator DATE_GENERATOR
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void process(
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.protocol.RequestExpectContinue extends java.lang.Object implements org.apache.http.HttpRequestInterceptor
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void process(
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.protocol.RequestTargetHost extends java.lang.Object implements org.apache.http.HttpRequestInterceptor
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void process(
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.protocol.RequestUserAgent extends java.lang.Object implements org.apache.http.HttpRequestInterceptor
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void process(
+org.apache.http.HttpRequest
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.protocol.ResponseConnControl extends java.lang.Object implements org.apache.http.HttpResponseInterceptor
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void process(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.protocol.ResponseContent extends java.lang.Object implements org.apache.http.HttpResponseInterceptor
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void process(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.protocol.ResponseDate extends java.lang.Object implements org.apache.http.HttpResponseInterceptor
+
+----------------FIELDS----------------
+
+private static final org.apache.http.protocol.HttpDateGenerator DATE_GENERATOR
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void process(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.protocol.ResponseServer extends java.lang.Object implements org.apache.http.HttpResponseInterceptor
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/HttpException;Ljava/io/IOException; )
+public void process(
+org.apache.http.HttpResponse
+org.apache.http.protocol.HttpContext)
+
+________________CLASS________________
+
+
+public class org.apache.http.protocol.SyncBasicHttpContext extends org.apache.http.protocol.BasicHttpContext
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.apache.http.protocol.HttpContext)
+
+public java.lang.Object getAttribute(
+java.lang.String)
+
+public java.lang.Object removeAttribute(
+java.lang.String)
+
+public void setAttribute(
+java.lang.String
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.http.protocol.UriPatternMatcher extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final java.util.Map handlerMap
+----------------METHODS----------------
+
+public void <init>()
+
+public java.lang.Object lookup(
+java.lang.String)
+
+protected boolean matchUriRequestPattern(
+java.lang.String
+java.lang.String)
+
+public void register(
+java.lang.String
+java.lang.Object)
+
+public void setHandlers(
+java.util.Map)
+
+public void unregister(
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class org.apache.http.util.ByteArrayBuffer extends java.lang.Object
+
+----------------FIELDS----------------
+
+private byte[] buffer
+
+private int len
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+private void expand(
+int)
+
+public void append(
+int)
+
+public void append(
+org.apache.http.util.CharArrayBuffer
+int
+int)
+
+public void append(
+byte[]
+int
+int)
+
+public void append(
+char[]
+int
+int)
+
+public byte[] buffer()
+
+public int byteAt(
+int)
+
+public int capacity()
+
+public void clear()
+
+public boolean isEmpty()
+
+public boolean isFull()
+
+public int length()
+
+public void setLength(
+int)
+
+public byte[] toByteArray()
+
+________________CLASS________________
+
+
+public final class org.apache.http.util.CharArrayBuffer extends java.lang.Object
+
+----------------FIELDS----------------
+
+private char[] buffer
+
+private int len
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+private void expand(
+int)
+
+public void append(
+char)
+
+public void append(
+java.lang.Object)
+
+public void append(
+java.lang.String)
+
+public void append(
+org.apache.http.util.ByteArrayBuffer
+int
+int)
+
+public void append(
+org.apache.http.util.CharArrayBuffer)
+
+public void append(
+org.apache.http.util.CharArrayBuffer
+int
+int)
+
+public void append(
+byte[]
+int
+int)
+
+public void append(
+char[]
+int
+int)
+
+public char[] buffer()
+
+public int capacity()
+
+public char charAt(
+int)
+
+public void clear()
+
+public void ensureCapacity(
+int)
+
+public int indexOf(
+int)
+
+public int indexOf(
+int
+int
+int)
+
+public boolean isEmpty()
+
+public boolean isFull()
+
+public int length()
+
+public void setLength(
+int)
+
+public java.lang.String substring(
+int
+int)
+
+public java.lang.String substringTrimmed(
+int
+int)
+
+public char[] toCharArray()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public final class org.apache.http.util.EncodingUtils extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static byte[] getAsciiBytes(
+java.lang.String)
+
+public static java.lang.String getAsciiString(
+byte[])
+
+public static java.lang.String getAsciiString(
+byte[]
+int
+int)
+
+public static byte[] getBytes(
+java.lang.String
+java.lang.String)
+
+public static java.lang.String getString(
+byte[]
+int
+int
+java.lang.String)
+
+public static java.lang.String getString(
+byte[]
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class org.apache.http.util.EntityUtils extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+@dalvik.annotation.Throws (value =Lorg/apache/http/ParseException; )
+public static java.lang.String getContentCharSet(
+org.apache.http.HttpEntity)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static byte[] toByteArray(
+org.apache.http.HttpEntity)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/ParseException; )
+public static java.lang.String toString(
+org.apache.http.HttpEntity)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/http/ParseException; )
+public static java.lang.String toString(
+org.apache.http.HttpEntity
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class org.apache.http.util.ExceptionUtils extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.reflect.Method INIT_CAUSE_METHOD
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+private static java.lang.reflect.Method getInitCauseMethod()
+
+public static void initCause(
+java.lang.Throwable
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public final class org.apache.http.util.LangUtils extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int HASH_OFFSET
+
+public static final int HASH_SEED
+----------------METHODS----------------
+
+private void <init>()
+
+public static boolean equals(
+java.lang.Object
+java.lang.Object)
+
+public static boolean equals(
+java.lang.Object[]
+java.lang.Object[])
+
+public static int hashCode(
+int
+int)
+
+public static int hashCode(
+int
+java.lang.Object)
+
+public static int hashCode(
+int
+boolean)
+
+________________CLASS________________
+
+
+public class org.apache.http.util.VersionInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String PROPERTY_MODULE
+
+public static final java.lang.String PROPERTY_RELEASE
+
+public static final java.lang.String PROPERTY_TIMESTAMP
+
+public static final java.lang.String UNAVAILABLE
+
+public static final java.lang.String VERSION_PROPERTY_FILE
+
+private final java.lang.String infoClassloader
+
+private final java.lang.String infoModule
+
+private final java.lang.String infoPackage
+
+private final java.lang.String infoRelease
+
+private final java.lang.String infoTimestamp
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+protected static final org.apache.http.util.VersionInfo fromMap(
+java.lang.String
+java.util.Map
+java.lang.ClassLoader)
+
+public static final org.apache.http.util.VersionInfo loadVersionInfo(
+java.lang.String
+java.lang.ClassLoader)
+
+public static final org.apache.http.util.VersionInfo[] loadVersionInfo(
+java.lang.String[]
+java.lang.ClassLoader)
+
+public final java.lang.String getClassloader()
+
+public final java.lang.String getModule()
+
+public final java.lang.String getPackage()
+
+public final java.lang.String getRelease()
+
+public final java.lang.String getTimestamp()
+
+public java.lang.String toString()
diff --git a/tools/dex-tools/dex/classes0.dex b/tools/dex-tools/dex/classes0.dex
new file mode 100644
index 0000000..2f12d2d
--- /dev/null
+++ b/tools/dex-tools/dex/classes0.dex
Binary files differ
diff --git a/tools/dex-tools/dex/classes0.out.dex b/tools/dex-tools/dex/classes0.out.dex
new file mode 100644
index 0000000..501e054
--- /dev/null
+++ b/tools/dex-tools/dex/classes0.out.dex
@@ -0,0 +1,111219 @@
+----------------DEX_FILE--------------
+
+Filename: DexFile
+-----------DEFINED_CLASSES------------
+
+
+________________CLASS________________
+
+
+public class java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+private native java.lang.Object internalClone(
+java.lang.Cloneable)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+protected java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<+Ljava/lang/Object;>; )
+public final native java.lang.Class getClass()
+
+public native int hashCode()
+
+public final native void notify()
+
+public final native void notifyAll()
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public final void wait()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public final void wait(
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public final native void wait(
+long
+int)
+
+________________CLASS________________
+
+
+public abstract interface class SQLite.Authorizer extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int authorize(
+int
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class SQLite.Blob extends java.lang.Object
+
+----------------FIELDS----------------
+
+private long handle
+
+protected int size
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static native void internal_init()
+
+public native void close()
+
+protected native void finalize()
+
+public java.io.InputStream getInputStream()
+
+public java.io.OutputStream getOutputStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+native int read(
+byte[]
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+native int write(
+byte[]
+int
+int
+int)
+
+________________CLASS________________
+
+
+public abstract interface class java.io.Closeable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void close()
+
+________________CLASS________________
+
+
+public abstract class java.io.InputStream extends java.lang.Object implements java.io.Closeable
+
+----------------FIELDS----------------
+
+private static byte[] skipBuf
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public void mark(
+int)
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+ class SQLite.BlobR extends java.io.InputStream
+
+----------------FIELDS----------------
+
+private SQLite.Blob blob
+
+private int pos
+----------------METHODS----------------
+
+ void <init>(
+SQLite.Blob)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public void mark(
+int)
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public abstract interface class java.io.Flushable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void flush()
+
+________________CLASS________________
+
+
+public abstract class java.io.OutputStream extends java.lang.Object implements java.io.Closeable, java.io.Flushable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+ class SQLite.BlobW extends java.io.OutputStream
+
+----------------FIELDS----------------
+
+private SQLite.Blob blob
+
+private int pos
+----------------METHODS----------------
+
+ void <init>(
+SQLite.Blob)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public abstract interface class SQLite.BusyHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean busy(
+java.lang.String
+int)
+
+________________CLASS________________
+
+
+public abstract interface class SQLite.Callback extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void columns(
+java.lang.String[])
+
+public abstract boolean newrow(
+java.lang.String[])
+
+public abstract void types(
+java.lang.String[])
+
+________________CLASS________________
+
+
+public final class SQLite.Constants extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int SQLITE2_TEXT
+
+public static final int SQLITE3_TEXT
+
+public static final int SQLITE_ABORT
+
+public static final int SQLITE_ARGS
+
+public static final int SQLITE_ATTACH
+
+public static final int SQLITE_AUTH
+
+public static final int SQLITE_BLOB
+
+public static final int SQLITE_BUSY
+
+public static final int SQLITE_CANTOPEN
+
+public static final int SQLITE_CONSTRAINT
+
+public static final int SQLITE_COPY
+
+public static final int SQLITE_CORRUPT
+
+public static final int SQLITE_CREATE_INDEX
+
+public static final int SQLITE_CREATE_TABLE
+
+public static final int SQLITE_CREATE_TEMP_INDEX
+
+public static final int SQLITE_CREATE_TEMP_TABLE
+
+public static final int SQLITE_CREATE_TEMP_TRIGGER
+
+public static final int SQLITE_CREATE_TEMP_VIEW
+
+public static final int SQLITE_CREATE_TRIGGER
+
+public static final int SQLITE_CREATE_VIEW
+
+public static final int SQLITE_DELETE
+
+public static final int SQLITE_DENY
+
+public static final int SQLITE_DETACH
+
+public static final int SQLITE_DONE
+
+public static final int SQLITE_DROP_INDEX
+
+public static final int SQLITE_DROP_TABLE
+
+public static final int SQLITE_DROP_TEMP_INDEX
+
+public static final int SQLITE_DROP_TEMP_TABLE
+
+public static final int SQLITE_DROP_TEMP_TRIGGER
+
+public static final int SQLITE_DROP_TEMP_VIEW
+
+public static final int SQLITE_DROP_TRIGGER
+
+public static final int SQLITE_DROP_VIEW
+
+public static final int SQLITE_EMPTY
+
+public static final int SQLITE_ERROR
+
+public static final int SQLITE_FLOAT
+
+public static final int SQLITE_FORMAT
+
+public static final int SQLITE_FULL
+
+public static final int SQLITE_IGNORE
+
+public static final int SQLITE_INSERT
+
+public static final int SQLITE_INTEGER
+
+public static final int SQLITE_INTERNAL
+
+public static final int SQLITE_INTERRUPT
+
+public static final int SQLITE_IOERR
+
+public static final int SQLITE_LOCKED
+
+public static final int SQLITE_MISMATCH
+
+public static final int SQLITE_MISUSE
+
+public static final int SQLITE_NOLFS
+
+public static final int SQLITE_NOMEM
+
+public static final int SQLITE_NOTADB
+
+public static final int SQLITE_NOTFOUND
+
+public static final int SQLITE_NULL
+
+public static final int SQLITE_NUMERIC
+
+public static final int SQLITE_OK
+
+public static final int SQLITE_PERM
+
+public static final int SQLITE_PRAGMA
+
+public static final int SQLITE_PROTOCOL
+
+public static final int SQLITE_RANGE
+
+public static final int SQLITE_READ
+
+public static final int SQLITE_READONLY
+
+public static final int SQLITE_ROW
+
+public static final int SQLITE_SCHEMA
+
+public static final int SQLITE_SELECT
+
+public static final int SQLITE_TEXT
+
+public static final int SQLITE_TOOBIG
+
+public static final int SQLITE_TRANSACTION
+
+public static final int SQLITE_UPDATE
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+ class SQLite.DBDump extends java.lang.Object implements SQLite.Callback
+
+----------------FIELDS----------------
+
+ SQLite.Shell s
+----------------METHODS----------------
+
+ void <init>(
+SQLite.Shell
+java.lang.String[])
+
+public void columns(
+java.lang.String[])
+
+public boolean newrow(
+java.lang.String[])
+
+public void types(
+java.lang.String[])
+
+________________CLASS________________
+
+
+public class SQLite.Database extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected int error_code
+
+protected long handle
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private native void _busy_handler(
+SQLite.BusyHandler)
+
+private native void _busy_timeout(
+int)
+
+private native long _changes()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+private native void _close()
+
+private static native boolean _complete(
+java.lang.String)
+
+private native void _create_aggregate(
+java.lang.String
+int
+SQLite.Function)
+
+private native void _create_function(
+java.lang.String
+int
+SQLite.Function)
+
+private native java.lang.String _errmsg()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+private native void _exec(
+java.lang.String
+SQLite.Callback)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+private native void _exec(
+java.lang.String
+SQLite.Callback
+java.lang.String[])
+
+private native void _finalize()
+
+private native void _function_type(
+java.lang.String
+int)
+
+private native void _interrupt()
+
+private native long _last_insert_rowid()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+private native void _open(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+private native void _open_aux_file(
+java.lang.String)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+private native void _open_blob(
+java.lang.String
+java.lang.String
+java.lang.String
+long
+boolean
+SQLite.Blob)
+
+private native void _progress_handler(
+int
+SQLite.ProgressHandler)
+
+private native void _set_authorizer(
+SQLite.Authorizer)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+private native void _set_encoding(
+java.lang.String)
+
+private native void _trace(
+SQLite.Trace)
+
+public static boolean complete(
+java.lang.String)
+
+public static native java.lang.String error_string(
+int)
+
+private static native void internal_init()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+private native void stmt_prepare(
+java.lang.String
+SQLite.Stmt)
+
+public static native java.lang.String version()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+private native void vm_compile(
+java.lang.String
+SQLite.Vm)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+private native void vm_compile_args(
+java.lang.String
+SQLite.Vm
+java.lang.String[])
+
+public void busy_handler(
+SQLite.BusyHandler)
+
+public void busy_timeout(
+int)
+
+public long changes()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public void close()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public SQLite.Vm compile(
+java.lang.String)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public SQLite.Vm compile(
+java.lang.String
+java.lang.String[])
+
+public void create_aggregate(
+java.lang.String
+int
+SQLite.Function)
+
+public void create_function(
+java.lang.String
+int
+SQLite.Function)
+
+public native java.lang.String dbversion()
+
+public java.lang.String error_message()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public void exec(
+java.lang.String
+SQLite.Callback)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public void exec(
+java.lang.String
+SQLite.Callback
+java.lang.String[])
+
+protected void finalize()
+
+public void function_type(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public SQLite.TableResult get_table(
+java.lang.String)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public SQLite.TableResult get_table(
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public void get_table(
+java.lang.String
+java.lang.String[]
+SQLite.TableResult)
+
+public void interrupt()
+
+public native boolean is3()
+
+public int last_error()
+
+public long last_insert_rowid()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public void open(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public void open_aux_file(
+java.lang.String)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public SQLite.Blob open_blob(
+java.lang.String
+java.lang.String
+java.lang.String
+long
+boolean)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public SQLite.Stmt prepare(
+java.lang.String)
+
+public void progress_handler(
+int
+SQLite.ProgressHandler)
+
+public void set_authorizer(
+SQLite.Authorizer)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public void set_encoding(
+java.lang.String)
+
+protected void set_last_error(
+int)
+
+public void trace(
+SQLite.Trace)
+
+________________CLASS________________
+
+
+public abstract interface class java.io.Serializable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class java.lang.Throwable extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.Throwable cause
+
+private java.lang.String detailMessage
+
+private volatile java.lang.Object stackState
+
+private java.lang.StackTraceElement[] stackTrace
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+private static int countDuplicates(
+java.lang.StackTraceElement[]
+java.lang.StackTraceElement[])
+
+private java.lang.StackTraceElement[] getInternalStackTrace()
+
+private static native java.lang.Object nativeFillInStackTrace()
+
+private static native java.lang.StackTraceElement[] nativeGetStackTrace(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public java.lang.Throwable fillInStackTrace()
+
+public java.lang.Throwable getCause()
+
+public java.lang.String getLocalizedMessage()
+
+public java.lang.String getMessage()
+
+public java.lang.StackTraceElement[] getStackTrace()
+
+public java.lang.Throwable initCause(
+java.lang.Throwable)
+
+public void printStackTrace()
+
+public void printStackTrace(
+java.io.PrintStream)
+
+public void printStackTrace(
+java.io.PrintWriter)
+
+public void setStackTrace(
+java.lang.StackTraceElement[])
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.lang.Exception extends java.lang.Throwable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class SQLite.Exception extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class SQLite.Function extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void function(
+SQLite.FunctionContext
+java.lang.String[])
+
+public abstract void last_step(
+SQLite.FunctionContext)
+
+public abstract void step(
+SQLite.FunctionContext
+java.lang.String[])
+
+________________CLASS________________
+
+
+public class SQLite.FunctionContext extends java.lang.Object
+
+----------------FIELDS----------------
+
+private long handle
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static native void internal_init()
+
+public native int count()
+
+public native void set_error(
+java.lang.String)
+
+public native void set_result(
+double)
+
+public native void set_result(
+int)
+
+public native void set_result(
+java.lang.String)
+
+public native void set_result(
+byte[])
+
+public native void set_result_zeroblob(
+int)
+
+________________CLASS________________
+
+
+ class SQLite.JDBC2y.BatchArg extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.lang.String arg
+
+ boolean blob
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+boolean)
+
+________________CLASS________________
+
+
+ class SQLite.JDBC2y.DatabaseX extends SQLite.Database
+
+----------------FIELDS----------------
+
+static java.lang.Object lock
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public void exec(
+java.lang.String
+SQLite.Callback)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public void exec(
+java.lang.String
+SQLite.Callback
+java.lang.String[])
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public SQLite.TableResult get_table(
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public void get_table(
+java.lang.String
+java.lang.String[]
+SQLite.TableResult)
+
+ void wait(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.Connection extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int TRANSACTION_NONE
+
+public static final int TRANSACTION_READ_COMMITTED
+
+public static final int TRANSACTION_READ_UNCOMMITTED
+
+public static final int TRANSACTION_REPEATABLE_READ
+
+public static final int TRANSACTION_SERIALIZABLE
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void clearWarnings()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void close()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void commit()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Statement createStatement()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Statement createStatement(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Statement createStatement(
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean getAutoCommit()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getCatalog()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getHoldability()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.DatabaseMetaData getMetaData()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getTransactionIsolation()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>; )
+public abstract java.util.Map getTypeMap()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.SQLWarning getWarnings()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean isClosed()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean isReadOnly()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String nativeSQL(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.CallableStatement prepareCall(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.CallableStatement prepareCall(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.CallableStatement prepareCall(
+java.lang.String
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.PreparedStatement prepareStatement(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.PreparedStatement prepareStatement(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.PreparedStatement prepareStatement(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.PreparedStatement prepareStatement(
+java.lang.String
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.PreparedStatement prepareStatement(
+java.lang.String
+int[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.PreparedStatement prepareStatement(
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void releaseSavepoint(
+java.sql.Savepoint)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void rollback()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void rollback(
+java.sql.Savepoint)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setAutoCommit(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setCatalog(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setHoldability(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setReadOnly(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Savepoint setSavepoint()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Savepoint setSavepoint(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setTransactionIsolation(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;)V )
+public abstract void setTypeMap(
+java.util.Map)
+
+________________CLASS________________
+
+
+public class SQLite.JDBC2y.JDBCConnection extends java.lang.Object implements java.sql.Connection, SQLite.BusyHandler
+
+----------------FIELDS----------------
+
+protected boolean autocommit
+
+protected SQLite.JDBC2y.DatabaseX db
+
+private java.lang.String dbfile
+
+protected java.lang.String enc
+
+protected boolean intrans
+
+private SQLite.JDBC2y.JDBCDatabaseMetaData meta
+
+private boolean readonly
+
+private long t0
+
+protected int timeout
+
+protected java.lang.String url
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void <init>(
+java.lang.String
+java.lang.String)
+
+private boolean busy0(
+SQLite.JDBC2y.DatabaseX
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+private SQLite.JDBC2y.DatabaseX open(
+boolean)
+
+public boolean busy(
+java.lang.String
+int)
+
+protected boolean busy3(
+SQLite.JDBC2y.DatabaseX
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void clearWarnings()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void commit()
+
+public java.sql.Statement createStatement()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Statement createStatement(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Statement createStatement(
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean getAutoCommit()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getCatalog()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getHoldability()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.DatabaseMetaData getMetaData()
+
+public SQLite.Database getSQLiteDatabase()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getTransactionIsolation()
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>; )
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.util.Map getTypeMap()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.SQLWarning getWarnings()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean isClosed()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean isReadOnly()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String nativeSQL(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.CallableStatement prepareCall(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.CallableStatement prepareCall(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.CallableStatement prepareCall(
+java.lang.String
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.PreparedStatement prepareStatement(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.PreparedStatement prepareStatement(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.PreparedStatement prepareStatement(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.PreparedStatement prepareStatement(
+java.lang.String
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.PreparedStatement prepareStatement(
+java.lang.String
+int[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.PreparedStatement prepareStatement(
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void releaseSavepoint(
+java.sql.Savepoint)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void rollback()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void rollback(
+java.sql.Savepoint)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setAutoCommit(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setCatalog(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setHoldability(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setReadOnly(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Savepoint setSavepoint()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Savepoint setSavepoint(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setTransactionIsolation(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setTypeMap(
+java.util.Map)
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.DatabaseMetaData extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final short attributeNoNulls
+
+public static final short attributeNullable
+
+public static final short attributeNullableUnknown
+
+public static final int bestRowNotPseudo
+
+public static final int bestRowPseudo
+
+public static final int bestRowSession
+
+public static final int bestRowTemporary
+
+public static final int bestRowTransaction
+
+public static final int bestRowUnknown
+
+public static final int columnNoNulls
+
+public static final int columnNullable
+
+public static final int columnNullableUnknown
+
+public static final int importedKeyCascade
+
+public static final int importedKeyInitiallyDeferred
+
+public static final int importedKeyInitiallyImmediate
+
+public static final int importedKeyNoAction
+
+public static final int importedKeyNotDeferrable
+
+public static final int importedKeyRestrict
+
+public static final int importedKeySetDefault
+
+public static final int importedKeySetNull
+
+public static final int procedureColumnIn
+
+public static final int procedureColumnInOut
+
+public static final int procedureColumnOut
+
+public static final int procedureColumnResult
+
+public static final int procedureColumnReturn
+
+public static final int procedureColumnUnknown
+
+public static final int procedureNoNulls
+
+public static final int procedureNoResult
+
+public static final int procedureNullable
+
+public static final int procedureNullableUnknown
+
+public static final int procedureResultUnknown
+
+public static final int procedureReturnsResult
+
+public static final int sqlStateSQL99
+
+public static final int sqlStateXOpen
+
+public static final short tableIndexClustered
+
+public static final short tableIndexHashed
+
+public static final short tableIndexOther
+
+public static final short tableIndexStatistic
+
+public static final int typeNoNulls
+
+public static final int typeNullable
+
+public static final int typeNullableUnknown
+
+public static final int typePredBasic
+
+public static final int typePredChar
+
+public static final int typePredNone
+
+public static final int typeSearchable
+
+public static final int versionColumnNotPseudo
+
+public static final int versionColumnPseudo
+
+public static final int versionColumnUnknown
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean allProceduresAreCallable()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean allTablesAreSelectable()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean dataDefinitionCausesTransactionCommit()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean dataDefinitionIgnoredInTransactions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean deletesAreDetected(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean doesMaxRowSizeIncludeBlobs()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getAttributes(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getBestRowIdentifier(
+java.lang.String
+java.lang.String
+java.lang.String
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getCatalogSeparator()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getCatalogTerm()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getCatalogs()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getColumnPrivileges(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getColumns(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Connection getConnection()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getCrossReference(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getDatabaseMajorVersion()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getDatabaseMinorVersion()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getDatabaseProductName()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getDatabaseProductVersion()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getDefaultTransactionIsolation()
+
+public abstract int getDriverMajorVersion()
+
+public abstract int getDriverMinorVersion()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getDriverName()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getDriverVersion()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getExportedKeys(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getExtraNameCharacters()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getIdentifierQuoteString()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getImportedKeys(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getIndexInfo(
+java.lang.String
+java.lang.String
+java.lang.String
+boolean
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getJDBCMajorVersion()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getJDBCMinorVersion()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxBinaryLiteralLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxCatalogNameLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxCharLiteralLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxColumnNameLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxColumnsInGroupBy()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxColumnsInIndex()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxColumnsInOrderBy()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxColumnsInSelect()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxColumnsInTable()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxConnections()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxCursorNameLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxIndexLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxProcedureNameLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxRowSize()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxSchemaNameLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxStatementLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxStatements()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxTableNameLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxTablesInSelect()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxUserNameLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getNumericFunctions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getPrimaryKeys(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getProcedureColumns(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getProcedureTerm()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getProcedures(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getResultSetHoldability()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getSQLKeywords()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getSQLStateType()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getSchemaTerm()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getSchemas()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getSearchStringEscape()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getStringFunctions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getSuperTables(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getSuperTypes(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getSystemFunctions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getTablePrivileges(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getTableTypes()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getTables(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getTimeDateFunctions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getTypeInfo()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getUDTs(
+java.lang.String
+java.lang.String
+java.lang.String
+int[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getURL()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getUserName()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getVersionColumns(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean insertsAreDetected(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean isCatalogAtStart()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean isReadOnly()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean locatorsUpdateCopy()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean nullPlusNonNullIsNull()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean nullsAreSortedAtEnd()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean nullsAreSortedAtStart()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean nullsAreSortedHigh()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean nullsAreSortedLow()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean othersDeletesAreVisible(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean othersInsertsAreVisible(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean othersUpdatesAreVisible(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean ownDeletesAreVisible(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean ownInsertsAreVisible(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean ownUpdatesAreVisible(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean storesLowerCaseIdentifiers()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean storesLowerCaseQuotedIdentifiers()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean storesMixedCaseIdentifiers()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean storesMixedCaseQuotedIdentifiers()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean storesUpperCaseIdentifiers()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean storesUpperCaseQuotedIdentifiers()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsANSI92EntryLevelSQL()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsANSI92FullSQL()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsANSI92IntermediateSQL()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsAlterTableWithAddColumn()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsAlterTableWithDropColumn()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsBatchUpdates()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsCatalogsInDataManipulation()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsCatalogsInIndexDefinitions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsCatalogsInPrivilegeDefinitions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsCatalogsInProcedureCalls()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsCatalogsInTableDefinitions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsColumnAliasing()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsConvert()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsConvert(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsCoreSQLGrammar()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsCorrelatedSubqueries()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsDataDefinitionAndDataManipulationTransactions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsDataManipulationTransactionsOnly()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsDifferentTableCorrelationNames()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsExpressionsInOrderBy()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsExtendedSQLGrammar()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsFullOuterJoins()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsGetGeneratedKeys()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsGroupBy()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsGroupByBeyondSelect()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsGroupByUnrelated()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsIntegrityEnhancementFacility()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsLikeEscapeClause()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsLimitedOuterJoins()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsMinimumSQLGrammar()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsMixedCaseIdentifiers()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsMixedCaseQuotedIdentifiers()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsMultipleOpenResults()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsMultipleResultSets()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsMultipleTransactions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsNamedParameters()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsNonNullableColumns()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsOpenCursorsAcrossCommit()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsOpenCursorsAcrossRollback()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsOpenStatementsAcrossCommit()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsOpenStatementsAcrossRollback()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsOrderByUnrelated()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsOuterJoins()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsPositionedDelete()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsPositionedUpdate()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsResultSetConcurrency(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsResultSetHoldability(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsResultSetType(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsSavepoints()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsSchemasInDataManipulation()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsSchemasInIndexDefinitions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsSchemasInPrivilegeDefinitions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsSchemasInProcedureCalls()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsSchemasInTableDefinitions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsSelectForUpdate()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsStatementPooling()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsStoredProcedures()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsSubqueriesInComparisons()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsSubqueriesInExists()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsSubqueriesInIns()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsSubqueriesInQuantifieds()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsTableCorrelationNames()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsTransactionIsolationLevel(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsTransactions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsUnion()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean supportsUnionAll()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean updatesAreDetected(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean usesLocalFilePerTable()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean usesLocalFiles()
+
+________________CLASS________________
+
+
+public class SQLite.JDBC2y.JDBCDatabaseMetaData extends java.lang.Object implements java.sql.DatabaseMetaData
+
+----------------FIELDS----------------
+
+private SQLite.JDBC2y.JDBCConnection conn
+----------------METHODS----------------
+
+public void <init>(
+SQLite.JDBC2y.JDBCConnection)
+
+static int getD(
+java.lang.String
+int)
+
+static int getM(
+java.lang.String
+int)
+
+private void internalImportedKeys(
+java.lang.String
+java.lang.String
+SQLite.JDBC2y.JDBCResultSet
+SQLite.JDBC2y.TableResultX)
+
+static int mapSqlType(
+java.lang.String)
+
+static java.lang.String mapTypeName(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean allProceduresAreCallable()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean allTablesAreSelectable()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean dataDefinitionCausesTransactionCommit()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean dataDefinitionIgnoredInTransactions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean deletesAreDetected(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean doesMaxRowSizeIncludeBlobs()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getAttributes(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getBestRowIdentifier(
+java.lang.String
+java.lang.String
+java.lang.String
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getCatalogSeparator()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getCatalogTerm()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getCatalogs()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getColumnPrivileges(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getColumns(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Connection getConnection()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getCrossReference(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public int getDatabaseMajorVersion()
+
+public int getDatabaseMinorVersion()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getDatabaseProductName()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getDatabaseProductVersion()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getDefaultTransactionIsolation()
+
+public int getDriverMajorVersion()
+
+public int getDriverMinorVersion()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getDriverName()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getDriverVersion()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getExportedKeys(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getExtraNameCharacters()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getIdentifierQuoteString()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getImportedKeys(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getIndexInfo(
+java.lang.String
+java.lang.String
+java.lang.String
+boolean
+boolean)
+
+public int getJDBCMajorVersion()
+
+public int getJDBCMinorVersion()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxBinaryLiteralLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxCatalogNameLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxCharLiteralLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxColumnNameLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxColumnsInGroupBy()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxColumnsInIndex()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxColumnsInOrderBy()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxColumnsInSelect()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxColumnsInTable()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxConnections()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxCursorNameLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxIndexLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxProcedureNameLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxRowSize()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxSchemaNameLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxStatementLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxStatements()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxTableNameLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxTablesInSelect()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxUserNameLength()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getNumericFunctions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getPrimaryKeys(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getProcedureColumns(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getProcedureTerm()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getProcedures(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getResultSetHoldability()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getSQLKeywords()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getSQLStateType()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getSchemaTerm()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getSchemas()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getSearchStringEscape()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getStringFunctions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getSuperTables(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getSuperTypes(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getSystemFunctions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getTablePrivileges(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getTableTypes()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getTables(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getTimeDateFunctions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getTypeInfo()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getUDTs(
+java.lang.String
+java.lang.String
+java.lang.String
+int[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getURL()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getUserName()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getVersionColumns(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean insertsAreDetected(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean isCatalogAtStart()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean isReadOnly()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean locatorsUpdateCopy()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean nullPlusNonNullIsNull()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean nullsAreSortedAtEnd()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean nullsAreSortedAtStart()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean nullsAreSortedHigh()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean nullsAreSortedLow()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean othersDeletesAreVisible(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean othersInsertsAreVisible(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean othersUpdatesAreVisible(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean ownDeletesAreVisible(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean ownInsertsAreVisible(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean ownUpdatesAreVisible(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean storesLowerCaseIdentifiers()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean storesLowerCaseQuotedIdentifiers()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean storesMixedCaseIdentifiers()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean storesMixedCaseQuotedIdentifiers()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean storesUpperCaseIdentifiers()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean storesUpperCaseQuotedIdentifiers()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsANSI92EntryLevelSQL()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsANSI92FullSQL()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsANSI92IntermediateSQL()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsAlterTableWithAddColumn()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsAlterTableWithDropColumn()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsBatchUpdates()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsCatalogsInDataManipulation()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsCatalogsInIndexDefinitions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsCatalogsInPrivilegeDefinitions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsCatalogsInProcedureCalls()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsCatalogsInTableDefinitions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsColumnAliasing()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsConvert()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsConvert(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsCoreSQLGrammar()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsCorrelatedSubqueries()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsDataDefinitionAndDataManipulationTransactions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsDataManipulationTransactionsOnly()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsDifferentTableCorrelationNames()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsExpressionsInOrderBy()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsExtendedSQLGrammar()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsFullOuterJoins()
+
+public boolean supportsGetGeneratedKeys()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsGroupBy()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsGroupByBeyondSelect()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsGroupByUnrelated()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsIntegrityEnhancementFacility()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsLikeEscapeClause()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsLimitedOuterJoins()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsMinimumSQLGrammar()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsMixedCaseIdentifiers()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsMixedCaseQuotedIdentifiers()
+
+public boolean supportsMultipleOpenResults()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsMultipleResultSets()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsMultipleTransactions()
+
+public boolean supportsNamedParameters()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsNonNullableColumns()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsOpenCursorsAcrossCommit()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsOpenCursorsAcrossRollback()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsOpenStatementsAcrossCommit()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsOpenStatementsAcrossRollback()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsOrderByUnrelated()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsOuterJoins()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsPositionedDelete()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsPositionedUpdate()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsResultSetConcurrency(
+int
+int)
+
+public boolean supportsResultSetHoldability(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsResultSetType(
+int)
+
+public boolean supportsSavepoints()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsSchemasInDataManipulation()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsSchemasInIndexDefinitions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsSchemasInPrivilegeDefinitions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsSchemasInProcedureCalls()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsSchemasInTableDefinitions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsSelectForUpdate()
+
+public boolean supportsStatementPooling()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsStoredProcedures()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsSubqueriesInComparisons()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsSubqueriesInExists()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsSubqueriesInIns()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsSubqueriesInQuantifieds()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsTableCorrelationNames()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsTransactionIsolationLevel(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsTransactions()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsUnion()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean supportsUnionAll()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean updatesAreDetected(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean usesLocalFilePerTable()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean usesLocalFiles()
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.Statement extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CLOSE_ALL_RESULTS
+
+public static final int CLOSE_CURRENT_RESULT
+
+public static final int EXECUTE_FAILED
+
+public static final int KEEP_CURRENT_RESULT
+
+public static final int NO_GENERATED_KEYS
+
+public static final int RETURN_GENERATED_KEYS
+
+public static final int SUCCESS_NO_INFO
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void addBatch(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void cancel()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void clearBatch()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void clearWarnings()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void close()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean execute(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean execute(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean execute(
+java.lang.String
+int[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean execute(
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int[] executeBatch()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet executeQuery(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int executeUpdate(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int executeUpdate(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int executeUpdate(
+java.lang.String
+int[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int executeUpdate(
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Connection getConnection()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getFetchDirection()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getFetchSize()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getGeneratedKeys()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxFieldSize()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxRows()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean getMoreResults()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean getMoreResults(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getQueryTimeout()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getResultSet()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getResultSetConcurrency()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getResultSetHoldability()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getResultSetType()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getUpdateCount()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.SQLWarning getWarnings()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setCursorName(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setEscapeProcessing(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setFetchDirection(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setFetchSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setMaxFieldSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setMaxRows(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setQueryTimeout(
+int)
+
+________________CLASS________________
+
+
+public class SQLite.JDBC2y.JDBCStatement extends java.lang.Object implements java.sql.Statement
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+private java.util.ArrayList batch
+
+protected SQLite.JDBC2y.JDBCConnection conn
+
+protected SQLite.JDBC2y.JDBCResultSet rs
+
+protected int updcnt
+----------------METHODS----------------
+
+public void <init>(
+SQLite.JDBC2y.JDBCConnection)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void addBatch(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void cancel()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void clearBatch()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void clearWarnings()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean execute(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean execute(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean execute(
+java.lang.String
+int[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean execute(
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int[] executeBatch()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet executeQuery(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+ java.sql.ResultSet executeQuery(
+java.lang.String
+java.lang.String[]
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int executeUpdate(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int executeUpdate(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int executeUpdate(
+java.lang.String
+int[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int executeUpdate(
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Connection getConnection()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getFetchDirection()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getFetchSize()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getGeneratedKeys()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxFieldSize()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getMaxRows()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean getMoreResults()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean getMoreResults(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getQueryTimeout()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet getResultSet()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getResultSetConcurrency()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getResultSetHoldability()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getResultSetType()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getUpdateCount()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.SQLWarning getWarnings()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setCursorName(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setEscapeProcessing(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setFetchDirection(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setFetchSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setMaxFieldSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setMaxRows(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setQueryTimeout(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.PreparedStatement extends java.lang.Object implements java.sql.Statement
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void addBatch()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void clearParameters()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean execute()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet executeQuery()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int executeUpdate()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSetMetaData getMetaData()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ParameterMetaData getParameterMetaData()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setArray(
+int
+java.sql.Array)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setAsciiStream(
+int
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setBigDecimal(
+int
+java.math.BigDecimal)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setBinaryStream(
+int
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setBlob(
+int
+java.sql.Blob)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setBoolean(
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setByte(
+int
+byte)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setBytes(
+int
+byte[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setCharacterStream(
+int
+java.io.Reader
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setClob(
+int
+java.sql.Clob)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setDate(
+int
+java.sql.Date)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setDate(
+int
+java.sql.Date
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setDouble(
+int
+double)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setFloat(
+int
+float)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setInt(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setLong(
+int
+long)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setNull(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setNull(
+int
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setObject(
+int
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setObject(
+int
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setObject(
+int
+java.lang.Object
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setRef(
+int
+java.sql.Ref)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setShort(
+int
+short)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setString(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setTime(
+int
+java.sql.Time)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setTime(
+int
+java.sql.Time
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setTimestamp(
+int
+java.sql.Timestamp)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setTimestamp(
+int
+java.sql.Timestamp
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setURL(
+int
+java.net.URL)
+@java.lang.Deprecated
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setUnicodeStream(
+int
+java.io.InputStream
+int)
+
+________________CLASS________________
+
+
+public class SQLite.JDBC2y.JDBCPreparedStatement extends SQLite.JDBC2y.JDBCStatement implements java.sql.PreparedStatement
+
+----------------FIELDS----------------
+
+private static final boolean nullrepl
+
+private java.lang.String[] args
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<LSQLite/JDBC2y/BatchArg;>; )
+private java.util.ArrayList batch
+
+private boolean[] blobs
+
+private java.lang.String sql
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+SQLite.JDBC2y.JDBCConnection
+java.lang.String)
+
+private java.lang.String fixup(
+java.lang.String)
+
+private java.lang.String fixup2(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void addBatch()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void clearBatch()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void clearParameters()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean execute()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int[] executeBatch()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSet executeQuery()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int executeUpdate()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Array getArray(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Array getArray(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.math.BigDecimal getBigDecimal(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Blob getBlob(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Blob getBlob(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean getBoolean(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public byte getByte(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public byte[] getBytes(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Clob getClob(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Clob getClob(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Date getDate(
+int
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Date getDate(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Date getDate(
+java.lang.String
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public double getDouble(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public float getFloat(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getInt(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public long getLong(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSetMetaData getMetaData()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.Object getObject(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.Object getObject(
+int
+java.util.Map)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.Object getObject(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.Object getObject(
+java.lang.String
+java.util.Map)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ParameterMetaData getParameterMetaData()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Ref getRef(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Ref getRef(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public short getShort(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getString(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Time getTime(
+int
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Time getTime(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Time getTime(
+java.lang.String
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Timestamp getTimestamp(
+int
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Timestamp getTimestamp(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Timestamp getTimestamp(
+java.lang.String
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.net.URL getURL(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.net.URL getURL(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void registerOutputParameter(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void registerOutputParameter(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void registerOutputParameter(
+java.lang.String
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setArray(
+int
+java.sql.Array)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setAsciiStream(
+int
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setAsciiStream(
+java.lang.String
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setBigDecimal(
+int
+java.math.BigDecimal)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setBigDecimal(
+java.lang.String
+java.math.BigDecimal)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setBinaryStream(
+int
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setBinaryStream(
+java.lang.String
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setBlob(
+int
+java.sql.Blob)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setBoolean(
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setBoolean(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setByte(
+int
+byte)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setByte(
+java.lang.String
+byte)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setBytes(
+int
+byte[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setBytes(
+java.lang.String
+byte[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setCharacterStream(
+int
+java.io.Reader
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setCharacterStream(
+java.lang.String
+java.io.Reader
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setClob(
+int
+java.sql.Clob)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setDate(
+int
+java.sql.Date)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setDate(
+int
+java.sql.Date
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setDate(
+java.lang.String
+java.sql.Date)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setDate(
+java.lang.String
+java.sql.Date
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setDouble(
+int
+double)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setDouble(
+java.lang.String
+double)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setFloat(
+int
+float)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setFloat(
+java.lang.String
+float)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setInt(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setInt(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setLong(
+int
+long)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setLong(
+java.lang.String
+long)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setNull(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setNull(
+int
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setNull(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setNull(
+java.lang.String
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setObject(
+int
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setObject(
+int
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setObject(
+int
+java.lang.Object
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setObject(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setObject(
+java.lang.String
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setObject(
+java.lang.String
+java.lang.Object
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setRef(
+int
+java.sql.Ref)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setShort(
+int
+short)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setShort(
+java.lang.String
+short)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setString(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setString(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setTime(
+int
+java.sql.Time)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setTime(
+int
+java.sql.Time
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setTime(
+java.lang.String
+java.sql.Time)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setTime(
+java.lang.String
+java.sql.Time
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setTimestamp(
+int
+java.sql.Timestamp)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setTimestamp(
+int
+java.sql.Timestamp
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setTimestamp(
+java.lang.String
+java.sql.Timestamp)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setTimestamp(
+java.lang.String
+java.sql.Timestamp
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setURL(
+int
+java.net.URL)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+@java.lang.Deprecated
+public void setUnicodeStream(
+int
+java.io.InputStream
+int)
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.ResultSet extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CLOSE_CURSORS_AT_COMMIT
+
+public static final int CONCUR_READ_ONLY
+
+public static final int CONCUR_UPDATABLE
+
+public static final int FETCH_FORWARD
+
+public static final int FETCH_REVERSE
+
+public static final int FETCH_UNKNOWN
+
+public static final int HOLD_CURSORS_OVER_COMMIT
+
+public static final int TYPE_FORWARD_ONLY
+
+public static final int TYPE_SCROLL_INSENSITIVE
+
+public static final int TYPE_SCROLL_SENSITIVE
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean absolute(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void afterLast()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void beforeFirst()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void cancelRowUpdates()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void clearWarnings()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void close()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void deleteRow()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int findColumn(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean first()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Array getArray(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Array getArray(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.InputStream getAsciiStream(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.InputStream getAsciiStream(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.math.BigDecimal getBigDecimal(
+int)
+@java.lang.Deprecated
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.math.BigDecimal getBigDecimal(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.math.BigDecimal getBigDecimal(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+@java.lang.Deprecated
+public abstract java.math.BigDecimal getBigDecimal(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.InputStream getBinaryStream(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.InputStream getBinaryStream(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Blob getBlob(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Blob getBlob(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean getBoolean(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean getBoolean(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract byte getByte(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract byte getByte(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract byte[] getBytes(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract byte[] getBytes(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.Reader getCharacterStream(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.Reader getCharacterStream(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Clob getClob(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Clob getClob(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getConcurrency()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getCursorName()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Date getDate(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Date getDate(
+int
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Date getDate(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Date getDate(
+java.lang.String
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract double getDouble(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract double getDouble(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getFetchDirection()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getFetchSize()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract float getFloat(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract float getFloat(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getInt(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getInt(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract long getLong(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract long getLong(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSetMetaData getMetaData()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.Object getObject(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+@dalvik.annotation.Signature (value =(ILjava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;)Ljava/lang/Object; )
+public abstract java.lang.Object getObject(
+int
+java.util.Map)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.Object getObject(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;)Ljava/lang/Object; )
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.Object getObject(
+java.lang.String
+java.util.Map)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Ref getRef(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Ref getRef(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getRow()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract short getShort(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract short getShort(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Statement getStatement()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getString(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getString(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Time getTime(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Time getTime(
+int
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Time getTime(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Time getTime(
+java.lang.String
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Timestamp getTimestamp(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Timestamp getTimestamp(
+int
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Timestamp getTimestamp(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Timestamp getTimestamp(
+java.lang.String
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getType()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.net.URL getURL(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.net.URL getURL(
+java.lang.String)
+@java.lang.Deprecated
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.InputStream getUnicodeStream(
+int)
+@java.lang.Deprecated
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.InputStream getUnicodeStream(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.SQLWarning getWarnings()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void insertRow()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean isAfterLast()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean isBeforeFirst()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean isFirst()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean isLast()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean last()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void moveToCurrentRow()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void moveToInsertRow()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean next()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean previous()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void refreshRow()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean relative(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean rowDeleted()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean rowInserted()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean rowUpdated()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setFetchDirection(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setFetchSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateArray(
+int
+java.sql.Array)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateArray(
+java.lang.String
+java.sql.Array)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateAsciiStream(
+int
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateAsciiStream(
+java.lang.String
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateBigDecimal(
+int
+java.math.BigDecimal)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateBigDecimal(
+java.lang.String
+java.math.BigDecimal)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateBinaryStream(
+int
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateBinaryStream(
+java.lang.String
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateBlob(
+int
+java.sql.Blob)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateBlob(
+java.lang.String
+java.sql.Blob)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateBoolean(
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateBoolean(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateByte(
+int
+byte)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateByte(
+java.lang.String
+byte)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateBytes(
+int
+byte[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateBytes(
+java.lang.String
+byte[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateCharacterStream(
+int
+java.io.Reader
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateCharacterStream(
+java.lang.String
+java.io.Reader
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateClob(
+int
+java.sql.Clob)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateClob(
+java.lang.String
+java.sql.Clob)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateDate(
+int
+java.sql.Date)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateDate(
+java.lang.String
+java.sql.Date)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateDouble(
+int
+double)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateDouble(
+java.lang.String
+double)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateFloat(
+int
+float)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateFloat(
+java.lang.String
+float)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateInt(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateInt(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateLong(
+int
+long)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateLong(
+java.lang.String
+long)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateNull(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateNull(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateObject(
+int
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateObject(
+int
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateObject(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateObject(
+java.lang.String
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateRef(
+int
+java.sql.Ref)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateRef(
+java.lang.String
+java.sql.Ref)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateRow()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateShort(
+int
+short)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateShort(
+java.lang.String
+short)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateString(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateString(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateTime(
+int
+java.sql.Time)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateTime(
+java.lang.String
+java.sql.Time)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateTimestamp(
+int
+java.sql.Timestamp)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void updateTimestamp(
+java.lang.String
+java.sql.Timestamp)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean wasNull()
+
+________________CLASS________________
+
+
+public class SQLite.JDBC2y.JDBCResultSet extends java.lang.Object implements java.sql.ResultSet
+
+----------------FIELDS----------------
+
+private java.lang.String lastg
+
+private SQLite.JDBC2y.JDBCResultSetMetaData m
+
+private int row
+
+private SQLite.JDBC2y.JDBCStatement s
+
+protected SQLite.TableResult tr
+----------------METHODS----------------
+
+public void <init>(
+SQLite.TableResult
+SQLite.JDBC2y.JDBCStatement)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+private java.sql.Date internalGetDate(
+int
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+private java.lang.Double internalGetDouble(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+private java.lang.Float internalGetFloat(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+private java.lang.Integer internalGetInt(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+private java.lang.Long internalGetLong(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+private java.lang.Short internalGetShort(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+private java.sql.Time internalGetTime(
+int
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+private java.sql.Timestamp internalGetTimestamp(
+int
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean absolute(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void afterLast()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void beforeFirst()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void cancelRowUpdates()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void clearWarnings()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void deleteRow()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int findColumn(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean first()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Array getArray(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Array getArray(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.io.InputStream getAsciiStream(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.io.InputStream getAsciiStream(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.math.BigDecimal getBigDecimal(
+int)
+@java.lang.Deprecated
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.math.BigDecimal getBigDecimal(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.math.BigDecimal getBigDecimal(
+java.lang.String)
+@java.lang.Deprecated
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.math.BigDecimal getBigDecimal(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.io.InputStream getBinaryStream(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.io.InputStream getBinaryStream(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Blob getBlob(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Blob getBlob(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean getBoolean(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean getBoolean(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public byte getByte(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public byte getByte(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public byte[] getBytes(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public byte[] getBytes(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.io.Reader getCharacterStream(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.io.Reader getCharacterStream(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Clob getClob(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Clob getClob(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getConcurrency()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getCursorName()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Date getDate(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Date getDate(
+int
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Date getDate(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Date getDate(
+java.lang.String
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public double getDouble(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public double getDouble(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getFetchDirection()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getFetchSize()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public float getFloat(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public float getFloat(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getInt(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getInt(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public long getLong(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public long getLong(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.ResultSetMetaData getMetaData()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.Object getObject(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.Object getObject(
+int
+java.util.Map)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.Object getObject(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.Object getObject(
+java.lang.String
+java.util.Map)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Ref getRef(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Ref getRef(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getRow()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public short getShort(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public short getShort(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Statement getStatement()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getString(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getString(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Time getTime(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Time getTime(
+int
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Time getTime(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Time getTime(
+java.lang.String
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Timestamp getTimestamp(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Timestamp getTimestamp(
+int
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Timestamp getTimestamp(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Timestamp getTimestamp(
+java.lang.String
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getType()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.net.URL getURL(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.net.URL getURL(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+@java.lang.Deprecated
+public java.io.InputStream getUnicodeStream(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+@java.lang.Deprecated
+public java.io.InputStream getUnicodeStream(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.SQLWarning getWarnings()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void insertRow()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean isAfterLast()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean isBeforeFirst()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean isFirst()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean isLast()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean last()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void moveToCurrentRow()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void moveToInsertRow()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean next()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean previous()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void refreshRow()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean relative(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean rowDeleted()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean rowInserted()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean rowUpdated()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setFetchDirection(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void setFetchSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateArray(
+int
+java.sql.Array)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateArray(
+java.lang.String
+java.sql.Array)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateAsciiStream(
+int
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateAsciiStream(
+java.lang.String
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateBigDecimal(
+int
+java.math.BigDecimal)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateBigDecimal(
+java.lang.String
+java.math.BigDecimal)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateBinaryStream(
+int
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateBinaryStream(
+java.lang.String
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateBlob(
+int
+java.sql.Blob)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateBlob(
+java.lang.String
+java.sql.Blob)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateBoolean(
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateBoolean(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateByte(
+int
+byte)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateByte(
+java.lang.String
+byte)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateBytes(
+int
+byte[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateBytes(
+java.lang.String
+byte[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateCharacterStream(
+int
+java.io.Reader
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateCharacterStream(
+java.lang.String
+java.io.Reader
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateClob(
+int
+java.sql.Clob)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateClob(
+java.lang.String
+java.sql.Clob)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateDate(
+int
+java.sql.Date)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateDate(
+java.lang.String
+java.sql.Date)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateDouble(
+int
+double)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateDouble(
+java.lang.String
+double)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateFloat(
+int
+float)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateFloat(
+java.lang.String
+float)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateInt(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateInt(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateLong(
+int
+long)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateLong(
+java.lang.String
+long)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateNull(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateNull(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateObject(
+int
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateObject(
+int
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateObject(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateObject(
+java.lang.String
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateRef(
+int
+java.sql.Ref)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateRef(
+java.lang.String
+java.sql.Ref)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateRow()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateShort(
+int
+short)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateShort(
+java.lang.String
+short)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateString(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateString(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateTime(
+int
+java.sql.Time)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateTime(
+java.lang.String
+java.sql.Time)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateTimestamp(
+int
+java.sql.Timestamp)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public void updateTimestamp(
+java.lang.String
+java.sql.Timestamp)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean wasNull()
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.ResultSetMetaData extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int columnNoNulls
+
+public static final int columnNullable
+
+public static final int columnNullableUnknown
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getCatalogName(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getColumnClassName(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getColumnCount()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getColumnDisplaySize(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getColumnLabel(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getColumnName(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getColumnType(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getColumnTypeName(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getPrecision(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getScale(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getSchemaName(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getTableName(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean isAutoIncrement(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean isCaseSensitive(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean isCurrency(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean isDefinitelyWritable(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int isNullable(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean isReadOnly(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean isSearchable(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean isSigned(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean isWritable(
+int)
+
+________________CLASS________________
+
+
+public class SQLite.JDBC2y.JDBCResultSetMetaData extends java.lang.Object implements java.sql.ResultSetMetaData
+
+----------------FIELDS----------------
+
+private SQLite.JDBC2y.JDBCResultSet r
+----------------METHODS----------------
+
+public void <init>(
+SQLite.JDBC2y.JDBCResultSet)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+ int findColByName(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getCatalogName(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getColumnClassName(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getColumnCount()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getColumnDisplaySize(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getColumnLabel(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getColumnName(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getColumnType(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getColumnTypeName(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getPrecision(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int getScale(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getSchemaName(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.lang.String getTableName(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean isAutoIncrement(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean isCaseSensitive(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean isCurrency(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean isDefinitelyWritable(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public int isNullable(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean isReadOnly(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean isSearchable(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean isSigned(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean isWritable(
+int)
+
+________________CLASS________________
+
+
+public class SQLite.TableResult extends java.lang.Object implements SQLite.Callback
+
+----------------FIELDS----------------
+
+public java.lang.String[] column
+
+public int ncolumns
+
+public int nrows
+
+public java.util.Vector rows
+
+public java.lang.String[] types
+----------------METHODS----------------
+
+public void <init>()
+
+public void clear()
+
+public void columns(
+java.lang.String[])
+
+public boolean newrow(
+java.lang.String[])
+
+public java.lang.String toString()
+
+public void types(
+java.lang.String[])
+
+________________CLASS________________
+
+
+public class SQLite.JDBC2y.TableResultX extends SQLite.TableResult
+
+----------------FIELDS----------------
+
+public int[] sql_type
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+SQLite.TableResult)
+
+ void sql_types(
+int[])
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.Driver extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean acceptsURL(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Connection connect(
+java.lang.String
+java.util.Properties)
+
+public abstract int getMajorVersion()
+
+public abstract int getMinorVersion()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.DriverPropertyInfo[] getPropertyInfo(
+java.lang.String
+java.util.Properties)
+
+public abstract boolean jdbcCompliant()
+
+________________CLASS________________
+
+
+public class SQLite.JDBCDriver extends java.lang.Object implements java.sql.Driver
+
+----------------FIELDS----------------
+
+public static final int MAJORVERSION
+
+public static final int MINORVERSION
+
+private static java.lang.reflect.Constructor makeConn
+
+protected java.sql.Connection conn
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public boolean acceptsURL(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.Connection connect(
+java.lang.String
+java.util.Properties)
+
+public int getMajorVersion()
+
+public int getMinorVersion()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public java.sql.DriverPropertyInfo[] getPropertyInfo(
+java.lang.String
+java.util.Properties)
+
+public boolean jdbcCompliant()
+
+________________CLASS________________
+
+
+public abstract interface class SQLite.ProgressHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean progress()
+
+________________CLASS________________
+
+
+public class SQLite.Shell extends java.lang.Object implements SQLite.Callback
+
+----------------FIELDS----------------
+
+static final int MODE_Column
+
+static final int MODE_Html
+
+static final int MODE_Insert
+
+static final int MODE_Insert2
+
+static final int MODE_Line
+
+static final int MODE_List
+
+static final int MODE_Semi
+
+ java.lang.String[] cols
+
+ int[] colwidth
+
+ int count
+
+ SQLite.Database db
+
+ java.lang.String destTable
+
+ boolean echo
+
+ java.io.PrintWriter err
+
+ int mode
+
+ java.io.PrintWriter pw
+
+ java.lang.String sep
+
+ boolean showHeader
+
+ java.lang.String tableName
+----------------METHODS----------------
+
+public void <init>(
+java.io.PrintStream
+java.io.PrintStream)
+
+public void <init>(
+java.io.PrintWriter
+java.io.PrintWriter)
+
+static java.lang.String html_quote(
+java.lang.String)
+
+static boolean is_numeric(
+java.lang.String)
+
+public static void main(
+java.lang.String[])
+
+public static java.lang.String sql_quote(
+java.lang.String)
+
+public static java.lang.String sql_quote_dbl(
+java.lang.String)
+
+protected java.lang.Object clone()
+
+public void columns(
+java.lang.String[])
+
+ void do_cmd(
+java.lang.String)
+
+ void do_input(
+java.io.BufferedReader)
+
+ void do_meta(
+java.lang.String)
+
+public boolean newrow(
+java.lang.String[])
+
+ java.lang.String read_line(
+java.io.BufferedReader
+java.lang.String)
+
+ void set_table_name(
+java.lang.String)
+
+public void types(
+java.lang.String[])
+
+________________CLASS________________
+
+
+public class SQLite.Stmt extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected int error_code
+
+private long handle
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static native void internal_init()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native void bind(
+int)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native void bind(
+int
+double)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native void bind(
+int
+int)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native void bind(
+int
+long)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native void bind(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native void bind(
+int
+byte[])
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native int bind_parameter_count()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native int bind_parameter_index(
+java.lang.String)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native java.lang.String bind_parameter_name(
+int)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native void bind_zeroblob(
+int
+int)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native void clear_bindings()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native void close()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public java.lang.Object column(
+int)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native byte[] column_bytes(
+int)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native int column_count()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native java.lang.String column_database_name(
+int)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native java.lang.String column_decltype(
+int)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native double column_double(
+int)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native int column_int(
+int)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native long column_long(
+int)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native java.lang.String column_origin_name(
+int)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native java.lang.String column_string(
+int)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native java.lang.String column_table_name(
+int)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native int column_type(
+int)
+
+protected native void finalize()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native boolean prepare()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native void reset()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native boolean step()
+
+________________CLASS________________
+
+
+public class SQLite.StringEncoder extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final char[] xdigits
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static byte[] byteCopy(
+byte[]
+int
+int
+byte[])
+
+public static byte[] decode(
+java.lang.String)
+
+public static java.lang.String encode(
+byte[])
+
+public static java.lang.String encodeX(
+byte[])
+
+________________CLASS________________
+
+
+public abstract interface class SQLite.Trace extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void trace(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class SQLite.Vm extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected int error_code
+
+private long handle
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static native void internal_init()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native boolean compile()
+
+protected native void finalize()
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native boolean step(
+SQLite.Callback)
+@dalvik.annotation.Throws (value =LSQLite/Exception; )
+public native void stop()
+
+________________CLASS________________
+
+
+public abstract class java.nio.charset.CharsetDecoder extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int END
+
+private static final int FLUSH
+
+private static final int INIT
+
+private static final int ONGOING
+
+private float averChars
+
+private java.nio.charset.Charset cs
+
+private java.nio.charset.CodingErrorAction malformAction
+
+private float maxChars
+
+private java.lang.String replace
+
+private int status
+
+private java.nio.charset.CodingErrorAction unmapAction
+----------------METHODS----------------
+
+protected void <init>(
+java.nio.charset.Charset
+float
+float)
+
+private java.nio.CharBuffer allocateMore(
+java.nio.CharBuffer)
+@dalvik.annotation.Throws (value =Ljava/nio/charset/CharacterCodingException; )
+private void checkCoderResult(
+java.nio.charset.CoderResult)
+
+public final float averageCharsPerByte()
+
+public final java.nio.charset.Charset charset()
+@dalvik.annotation.Throws (value =Ljava/nio/charset/CharacterCodingException; )
+public final java.nio.CharBuffer decode(
+java.nio.ByteBuffer)
+
+public final java.nio.charset.CoderResult decode(
+java.nio.ByteBuffer
+java.nio.CharBuffer
+boolean)
+
+protected abstract java.nio.charset.CoderResult decodeLoop(
+java.nio.ByteBuffer
+java.nio.CharBuffer)
+
+public java.nio.charset.Charset detectedCharset()
+
+public final java.nio.charset.CoderResult flush(
+java.nio.CharBuffer)
+
+protected java.nio.charset.CoderResult implFlush(
+java.nio.CharBuffer)
+
+protected void implOnMalformedInput(
+java.nio.charset.CodingErrorAction)
+
+protected void implOnUnmappableCharacter(
+java.nio.charset.CodingErrorAction)
+
+protected void implReplaceWith(
+java.lang.String)
+
+protected void implReset()
+
+public boolean isAutoDetecting()
+
+public boolean isCharsetDetected()
+
+public java.nio.charset.CodingErrorAction malformedInputAction()
+
+public final float maxCharsPerByte()
+
+public final java.nio.charset.CharsetDecoder onMalformedInput(
+java.nio.charset.CodingErrorAction)
+
+public final java.nio.charset.CharsetDecoder onUnmappableCharacter(
+java.nio.charset.CodingErrorAction)
+
+public final java.nio.charset.CharsetDecoder replaceWith(
+java.lang.String)
+
+public final java.lang.String replacement()
+
+public final java.nio.charset.CharsetDecoder reset()
+
+public java.nio.charset.CodingErrorAction unmappableCharacterAction()
+
+________________CLASS________________
+
+
+public final class com.ibm.icu4jni.charset.CharsetDecoderICU extends java.nio.charset.CharsetDecoder
+
+----------------FIELDS----------------
+
+private static final int INPUT_HELD
+
+private static final int INPUT_OFFSET
+
+private static final int INVALID_BYTES
+
+private static final int LIMIT
+
+private static final int OUTPUT_OFFSET
+
+private long converterHandle
+
+private int[] data
+
+private int ec
+
+private int inEnd
+
+private byte[] input
+
+private int onMalformedInput
+
+private int onUnmappableInput
+
+private int outEnd
+
+private char[] output
+
+private int savedInputHeldLen
+----------------METHODS----------------
+
+public void <init>(
+java.nio.charset.Charset
+long)
+
+private final int getArray(
+java.nio.ByteBuffer)
+
+private final int getArray(
+java.nio.CharBuffer)
+
+private final void setPosition(
+java.nio.ByteBuffer)
+
+private final void setPosition(
+java.nio.CharBuffer)
+
+protected java.nio.charset.CoderResult decodeLoop(
+java.nio.ByteBuffer
+java.nio.CharBuffer)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+protected final java.nio.charset.CoderResult implFlush(
+java.nio.CharBuffer)
+
+protected final void implOnMalformedInput(
+java.nio.charset.CodingErrorAction)
+
+protected final void implOnUnmappableCharacter(
+java.nio.charset.CodingErrorAction)
+
+protected void implReplaceWith(
+java.lang.String)
+
+protected void implReset()
+
+________________CLASS________________
+
+
+public abstract class java.nio.charset.CharsetEncoder extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int END
+
+private static final int FLUSH
+
+private static final int INIT
+
+private static final int ONGOING
+
+private float averBytes
+
+private java.nio.charset.Charset cs
+
+private java.nio.charset.CharsetDecoder decoder
+
+private java.nio.charset.CodingErrorAction malformAction
+
+private float maxBytes
+
+private byte[] replace
+
+private int status
+
+private java.nio.charset.CodingErrorAction unmapAction
+----------------METHODS----------------
+
+protected void <init>(
+java.nio.charset.Charset
+float
+float)
+
+protected void <init>(
+java.nio.charset.Charset
+float
+float
+byte[])
+
+private java.nio.ByteBuffer allocateMore(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/nio/charset/CharacterCodingException; )
+private void checkCoderResult(
+java.nio.charset.CoderResult)
+
+private boolean implCanEncode(
+java.nio.CharBuffer)
+
+public final float averageBytesPerChar()
+
+public boolean canEncode(
+char)
+
+public boolean canEncode(
+java.lang.CharSequence)
+
+public final java.nio.charset.Charset charset()
+@dalvik.annotation.Throws (value =Ljava/nio/charset/CharacterCodingException; )
+public final java.nio.ByteBuffer encode(
+java.nio.CharBuffer)
+
+public final java.nio.charset.CoderResult encode(
+java.nio.CharBuffer
+java.nio.ByteBuffer
+boolean)
+
+protected abstract java.nio.charset.CoderResult encodeLoop(
+java.nio.CharBuffer
+java.nio.ByteBuffer)
+
+public final java.nio.charset.CoderResult flush(
+java.nio.ByteBuffer)
+
+protected java.nio.charset.CoderResult implFlush(
+java.nio.ByteBuffer)
+
+protected void implOnMalformedInput(
+java.nio.charset.CodingErrorAction)
+
+protected void implOnUnmappableCharacter(
+java.nio.charset.CodingErrorAction)
+
+protected void implReplaceWith(
+byte[])
+
+protected void implReset()
+
+public boolean isLegalReplacement(
+byte[])
+
+public java.nio.charset.CodingErrorAction malformedInputAction()
+
+public final float maxBytesPerChar()
+
+public final java.nio.charset.CharsetEncoder onMalformedInput(
+java.nio.charset.CodingErrorAction)
+
+public final java.nio.charset.CharsetEncoder onUnmappableCharacter(
+java.nio.charset.CodingErrorAction)
+
+public final java.nio.charset.CharsetEncoder replaceWith(
+byte[])
+
+public final byte[] replacement()
+
+public final java.nio.charset.CharsetEncoder reset()
+
+public java.nio.charset.CodingErrorAction unmappableCharacterAction()
+
+________________CLASS________________
+
+
+public final class com.ibm.icu4jni.charset.CharsetEncoderICU extends java.nio.charset.CharsetEncoder
+
+----------------FIELDS----------------
+
+private static final int INPUT_HELD
+
+private static final int INPUT_OFFSET
+
+private static final int INVALID_CHARS
+
+private static final int LIMIT
+
+private static final int OUTPUT_OFFSET
+
+private long converterHandle
+
+private int[] data
+
+private int ec
+
+private int inEnd
+
+private char[] input
+
+private int onMalformedInput
+
+private int onUnmappableInput
+
+private int outEnd
+
+private byte[] output
+
+private int savedInputHeldLen
+----------------METHODS----------------
+
+public void <init>(
+java.nio.charset.Charset
+long
+byte[])
+
+private final int getArray(
+java.nio.ByteBuffer)
+
+private final int getArray(
+java.nio.CharBuffer)
+
+private final void setPosition(
+java.nio.ByteBuffer)
+
+private final void setPosition(
+java.nio.CharBuffer)
+
+public boolean canEncode(
+char)
+
+public boolean canEncode(
+int)
+
+protected java.nio.charset.CoderResult encodeLoop(
+java.nio.CharBuffer
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+protected java.nio.charset.CoderResult implFlush(
+java.nio.ByteBuffer)
+
+protected void implOnMalformedInput(
+java.nio.charset.CodingErrorAction)
+
+protected void implOnUnmappableCharacter(
+java.nio.charset.CodingErrorAction)
+
+protected void implReplaceWith(
+byte[])
+
+protected void implReset()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract interface class java.lang.Comparable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TT;)I )
+public abstract int compareTo(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/lang/Comparable<Ljava/nio/charset/Charset;>; )
+@dalvik.annotation.MemberClasses (value =Ljava/nio/charset/Charset$IgnoreCaseComparator; )
+public abstract class java.nio.charset.Charset extends java.lang.Object implements java.lang.Comparable
+
+----------------FIELDS----------------
+
+private static final java.lang.String PROVIDER_CONFIGURATION_FILE_COMMENT
+
+private static final java.lang.String PROVIDER_CONFIGURATION_FILE_ENCODING
+
+private static final java.lang.String PROVIDER_CONFIGURATION_FILE_NAME
+@dalvik.annotation.Signature (value =Ljava/util/TreeMap<Ljava/lang/String;Ljava/nio/charset/Charset;>; )
+private static java.util.TreeMap _builtInCharsets
+
+private static com.ibm.icu4jni.charset.CharsetProviderICU _builtInProvider
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/nio/charset/CharsetDecoder;>; )
+private static java.util.HashMap cachedCharsetDecoderTable
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/nio/charset/CharsetEncoder;>; )
+private static java.util.HashMap cachedCharsetEncoderTable
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/nio/charset/Charset;>; )
+private static java.util.HashMap cachedCharsetTable
+
+private static java.lang.ClassLoader systemClassLoader
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/lang/String;>; )
+private final java.util.HashSet aliasesSet
+
+private final java.lang.String canonicalName
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/nio/charset/IllegalCharsetNameException; )
+protected void <init>(
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Signature (value =(Ljava/nio/charset/spi/CharsetProvider;Ljava/util/TreeMap<Ljava/lang/String;Ljava/nio/charset/Charset;>;)V )
+private static void addCharsets(
+java.nio.charset.spi.CharsetProvider
+java.util.TreeMap)
+@dalvik.annotation.Signature (value =()Ljava/util/SortedMap<Ljava/lang/String;Ljava/nio/charset/Charset;>; )
+public static java.util.SortedMap availableCharsets()
+
+private static void cacheCharset(
+java.nio.charset.Charset)
+
+private static void checkCharsetName(
+java.lang.String)
+
+public static java.nio.charset.Charset defaultCharset()
+@dalvik.annotation.Throws (value =Ljava/nio/charset/IllegalCharsetNameException;Ljava/nio/charset/UnsupportedCharsetException; )
+public static java.nio.charset.Charset forName(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/nio/charset/IllegalCharsetNameException; )
+private static java.nio.charset.Charset forNameInternal(
+java.lang.String)
+
+private static java.nio.charset.Charset getCachedCharset(
+java.lang.String)
+
+private java.nio.charset.CharsetDecoder getCachedCharsetDecoder(
+java.lang.String)
+
+private java.nio.charset.CharsetEncoder getCachedCharsetEncoder(
+java.lang.String)
+
+private static java.lang.ClassLoader getContextClassLoader()
+
+private static void getSystemClassLoader()
+
+private static boolean isDigit(
+char)
+
+private static boolean isLetter(
+char)
+
+private static boolean isSpecial(
+char)
+@dalvik.annotation.Throws (value =Ljava/nio/charset/IllegalCharsetNameException; )
+public static boolean isSupported(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/net/URL;Ljava/lang/ClassLoader;Ljava/util/TreeMap<Ljava/lang/String;Ljava/nio/charset/Charset;>;)V )
+private static void loadConfiguredCharsets(
+java.net.URL
+java.lang.ClassLoader
+java.util.TreeMap)
+
+private static java.nio.charset.Charset searchConfiguredCharsets(
+java.lang.String
+java.lang.ClassLoader
+java.net.URL)
+
+private static java.lang.String trimClassName(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public final java.util.Set aliases()
+
+public boolean canEncode()
+
+public volatile int compareTo(
+java.lang.Object)
+
+public final int compareTo(
+java.nio.charset.Charset)
+
+public abstract boolean contains(
+java.nio.charset.Charset)
+
+public final java.nio.CharBuffer decode(
+java.nio.ByteBuffer)
+
+public java.lang.String displayName()
+
+public java.lang.String displayName(
+java.util.Locale)
+
+public final java.nio.ByteBuffer encode(
+java.lang.String)
+
+public final java.nio.ByteBuffer encode(
+java.nio.CharBuffer)
+
+public final boolean equals(
+java.lang.Object)
+
+public final int hashCode()
+
+public final boolean isRegistered()
+
+public final java.lang.String name()
+
+public abstract java.nio.charset.CharsetDecoder newDecoder()
+
+public abstract java.nio.charset.CharsetEncoder newEncoder()
+
+public final java.lang.String toString()
+
+________________CLASS________________
+
+
+public final class com.ibm.icu4jni.charset.CharsetICU extends java.nio.charset.Charset
+
+----------------FIELDS----------------
+
+private static final java.util.Map subByteMap
+
+private java.lang.String icuCanonicalName
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.lang.String
+java.lang.String
+java.lang.String[])
+
+public boolean contains(
+java.nio.charset.Charset)
+
+public java.nio.charset.CharsetDecoder newDecoder()
+
+public java.nio.charset.CharsetEncoder newEncoder()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract interface class java.util.Iterator extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public abstract java.lang.Object next()
+
+public abstract void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/ibm/icu4jni/charset/CharsetProviderICU; )
+@dalvik.annotation.InnerClass (accessFlags =20 name =CharsetIterator )
+public final class com.ibm.icu4jni.charset.CharsetProviderICU$CharsetIterator extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+
+private int currentIndex
+
+private java.lang.String[] names
+
+final com.ibm.icu4jni.charset.CharsetProviderICU this$0
+----------------METHODS----------------
+
+protected void <init>(
+com.ibm.icu4jni.charset.CharsetProviderICU
+java.lang.String[])
+
+public boolean hasNext()
+
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+
+public abstract class java.nio.charset.spi.CharsetProvider extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.RuntimePermission CONSTRUCT_PERM
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>()
+
+public abstract java.nio.charset.Charset charsetForName(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/nio/charset/Charset;>; )
+public abstract java.util.Iterator charsets()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/ibm/icu4jni/charset/CharsetProviderICU$CharsetIterator; )
+public final class com.ibm.icu4jni.charset.CharsetProviderICU extends java.nio.charset.spi.CharsetProvider
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+private final java.nio.charset.Charset getCharset(
+java.lang.String)
+
+public final java.nio.charset.Charset charsetForName(
+java.lang.String)
+
+public final java.util.Iterator charsets()
+
+public final void putCharsets(
+java.util.Map)
+
+________________CLASS________________
+
+
+public final class com.ibm.icu4jni.common.ErrorCode extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final java.lang.String[] ERROR_NAMES_
+
+public static boolean LIBRARY_LOADED
+
+public static final int U_BUFFER_OVERFLOW_ERROR
+
+public static final int U_ERROR_INFO_LIMIT
+
+public static final int U_ERROR_INFO_START
+
+public static final int U_ERROR_LIMIT
+
+public static final int U_FILE_ACCESS_ERROR
+
+public static final int U_ILLEGAL_ARGUMENT_ERROR
+
+public static final int U_ILLEGAL_CHAR_FOUND
+
+public static final int U_ILLEGAL_ESCAPE_SEQUENCE
+
+public static final int U_INDEX_OUTOFBOUNDS_ERROR
+
+public static final int U_INTERNAL_PROGRAM_ERROR
+
+public static final int U_INVALID_CHAR_FOUND
+
+public static final int U_INVALID_FORMAT_ERROR
+
+public static final int U_INVALID_TABLE_FILE
+
+public static final int U_INVALID_TABLE_FORMAT
+
+public static final int U_MEMORY_ALLOCATION_ERROR
+
+public static final int U_MESSAGE_PARSE_ERROR
+
+public static final int U_MISSING_RESOURCE_ERROR
+
+public static final int U_NO_SPACE_AVAILABLE
+
+public static final int U_PARSE_ERROR
+
+public static final int U_RESOURCE_TYPE_MISMATCH
+
+public static final int U_SAFECLONE_ALLOCATED_ERROR
+
+public static final int U_TRUNCATED_CHAR_FOUND
+
+public static final int U_UNSUPPORTED_ERROR
+
+public static final int U_UNSUPPORTED_ESCAPE_SEQUENCE
+
+public static final int U_USING_DEFAULT_ERROR
+
+public static final int U_USING_FALLBACK_ERROR
+
+public static final int U_ZERO_ERROR
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.lang.String getErrorName(
+int)
+
+public static final java.lang.RuntimeException getException(
+int)
+
+public static boolean isFailure(
+int)
+
+public static boolean isSuccess(
+int)
+
+________________CLASS________________
+
+
+public final class com.ibm.icu4jni.converters.NativeConverter extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int SKIP_CALLBACK
+
+public static final int STOP_CALLBACK
+
+public static final int SUBSTITUTE_CALLBACK
+----------------METHODS----------------
+
+public void <init>()
+
+public static final native boolean canDecode(
+long
+byte[])
+
+public static final native boolean canEncode(
+long
+int)
+
+public static final native void closeConverter(
+long)
+
+public static final native boolean contains(
+long
+long)
+
+public static final native int convertByteToChar(
+long
+byte[]
+int
+char[]
+int
+int[]
+boolean)
+
+public static final native int convertCharToByte(
+long
+char[]
+int
+byte[]
+int
+int[]
+boolean)
+
+public static final native int countAliases(
+java.lang.String)
+
+public static final native int countAvailable()
+
+public static final native int countInvalidBytes(
+long
+int[])
+
+public static final native int countInvalidChars(
+long
+int[])
+
+public static final native int decode(
+long
+byte[]
+int
+char[]
+int
+int[]
+boolean)
+
+public static final native int encode(
+long
+char[]
+int
+byte[]
+int
+int[]
+boolean)
+
+public static final native int flushByteToChar(
+long
+char[]
+int
+int[])
+
+public static final native int flushCharToByte(
+long
+byte[]
+int
+int[])
+
+public static final native java.lang.String[] getAliases(
+java.lang.String)
+
+public static final native java.lang.String[] getAvailable()
+
+public static final native float getAveBytesPerChar(
+long)
+
+public static final native float getAveCharsPerByte(
+long)
+
+public static final native java.lang.String getCanonicalName(
+java.lang.String)
+
+public static final native java.lang.String getICUCanonicalName(
+java.lang.String)
+
+public static final native java.lang.String getJavaCanonicalName(
+java.lang.String)
+
+public static final native int getMaxBytesPerChar(
+long)
+
+public static final native int getMaxCharsPerByte(
+long)
+
+public static final native int getMinBytesPerChar(
+long)
+
+public static final native byte[] getSubstitutionBytes(
+long)
+
+public static final native long openConverter(
+java.lang.String)
+
+public static final native void resetByteToChar(
+long)
+
+public static final native void resetCharToByte(
+long)
+
+public static final native long safeClone(
+long)
+
+public static final native int setCallbackDecode(
+long
+int
+int
+char[]
+int)
+
+public static final native int setCallbackEncode(
+long
+int
+int
+byte[]
+int)
+
+public static final native int setSubstitutionBytes(
+long
+byte[]
+int)
+
+public static final native int setSubstitutionChars(
+long
+char[]
+int)
+
+public static final native int setSubstitutionModeByteToChar(
+long
+boolean)
+
+public static final native int setSubstitutionModeCharToByte(
+long
+boolean)
+
+________________CLASS________________
+
+
+public class com.ibm.icu4jni.lang.UCharacter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+private static native int codeblock(
+int)
+
+public static int digit(
+int
+int)
+
+private static native int digitImpl(
+int
+int)
+
+public static int forName(
+java.lang.String)
+
+private static native int forname(
+java.lang.String)
+
+public static java.lang.Character$UnicodeBlock[] getBlockTable()
+
+public static byte getDirectionality(
+int)
+
+private static native byte getDirectionalityImpl(
+int)
+
+public static int getNumericValue(
+int)
+
+private static native int getNumericValueImpl(
+int)
+
+public static int getType(
+int)
+
+private static native int getTypeImpl(
+int)
+
+public static boolean isDefined(
+int)
+
+private static native boolean isDefinedValueImpl(
+int)
+
+public static boolean isDigit(
+int)
+
+private static native boolean isDigitImpl(
+int)
+
+public static boolean isIdentifierIgnorable(
+int)
+
+private static native boolean isIdentifierIgnorableImpl(
+int)
+
+public static boolean isLetter(
+int)
+
+private static native boolean isLetterImpl(
+int)
+
+public static boolean isLetterOrDigit(
+int)
+
+private static native boolean isLetterOrDigitImpl(
+int)
+
+public static boolean isLowerCase(
+int)
+
+private static native boolean isLowerCaseImpl(
+int)
+
+public static boolean isMirrored(
+int)
+
+private static native boolean isMirroredImpl(
+int)
+
+public static boolean isSpaceChar(
+int)
+
+private static native boolean isSpaceCharImpl(
+int)
+
+public static boolean isTitleCase(
+int)
+
+private static native boolean isTitleCaseImpl(
+int)
+
+public static boolean isUnicodeIdentifierPart(
+int)
+
+private static native boolean isUnicodeIdentifierPartImpl(
+int)
+
+public static boolean isUnicodeIdentifierStart(
+int)
+
+private static native boolean isUnicodeIdentifierStartImpl(
+int)
+
+public static boolean isUpperCase(
+int)
+
+private static native boolean isUpperCaseImpl(
+int)
+
+public static boolean isWhitespace(
+int)
+
+private static native boolean isWhitespaceImpl(
+int)
+
+public static int of(
+int)
+
+public static int toLowerCase(
+int)
+
+private static native int toLowerCaseImpl(
+int)
+
+public static int toTitleCase(
+int)
+
+private static native int toTitleCaseImpl(
+int)
+
+public static int toUpperCase(
+int)
+
+private static native int toUpperCaseImpl(
+int)
+
+________________CLASS________________
+
+
+public abstract class java.lang.Number extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public byte byteValue()
+
+public abstract double doubleValue()
+
+public abstract float floatValue()
+
+public abstract int intValue()
+
+public abstract long longValue()
+
+public short shortValue()
+
+________________CLASS________________
+
+
+public class com.ibm.icu4jni.math.BigDecimal extends java.lang.Number
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public double doubleValue()
+
+public float floatValue()
+
+public int intValue()
+
+public long longValue()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class com.ibm.icu4jni.regex.NativeRegEx extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static native int clone(
+int)
+
+public static native void close(
+int)
+
+public static native boolean find(
+int
+int)
+
+public static native boolean findNext(
+int)
+
+public static native int groupCount(
+int)
+
+public static native boolean hasAnchoringBounds(
+int)
+
+public static native boolean hasTransparentBounds(
+int)
+
+public static native boolean hitEnd(
+int)
+
+public static native boolean lookingAt(
+int
+int)
+
+public static native boolean matches(
+int
+int)
+
+public static native int open(
+java.lang.String
+int)
+
+public static native int regionEnd(
+int)
+
+public static native int regionStart(
+int)
+
+public static native boolean requireEnd(
+int)
+
+public static native void reset(
+int
+int)
+
+public static native void setRegion(
+int
+int
+int)
+
+public static native void setText(
+int
+java.lang.String)
+
+public static native void startEnd(
+int
+int[])
+
+public static native void useAnchoringBounds(
+int
+boolean)
+
+public static native void useTransparentBounds(
+int
+boolean)
+
+________________CLASS________________
+
+
+public abstract interface class java.lang.Cloneable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract class com.ibm.icu4jni.text.BreakIterator extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+
+protected static int BI_CHAR_INSTANCE
+
+protected static int BI_LINE_INSTANCE
+
+protected static int BI_SENT_INSTANCE
+
+protected static int BI_WORD_INSTANCE
+
+protected int type
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.util.Locale[] getAvailableLocales()
+
+public static com.ibm.icu4jni.text.BreakIterator getCharacterInstance()
+
+public static com.ibm.icu4jni.text.BreakIterator getCharacterInstance(
+java.util.Locale)
+
+public static com.ibm.icu4jni.text.BreakIterator getLineInstance()
+
+public static com.ibm.icu4jni.text.BreakIterator getLineInstance(
+java.util.Locale)
+
+public static com.ibm.icu4jni.text.BreakIterator getSentenceInstance()
+
+public static com.ibm.icu4jni.text.BreakIterator getSentenceInstance(
+java.util.Locale)
+
+public static com.ibm.icu4jni.text.BreakIterator getWordInstance()
+
+public static com.ibm.icu4jni.text.BreakIterator getWordInstance(
+java.util.Locale)
+
+public abstract java.lang.Object clone()
+
+public abstract int current()
+
+public abstract int first()
+
+public abstract int following(
+int)
+
+public abstract java.text.CharacterIterator getText()
+
+public abstract boolean isBoundary(
+int)
+
+public abstract int last()
+
+public abstract int next()
+
+public abstract int next(
+int)
+
+public abstract int preceding(
+int)
+
+public abstract int previous()
+
+public void setText(
+java.lang.String)
+
+public abstract void setText(
+java.text.CharacterIterator)
+
+________________CLASS________________
+
+
+public final class com.ibm.icu4jni.text.CollationAttribute extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ALTERNATE_HANDLING
+
+public static final int ATTRIBUTE_COUNT
+
+public static final int CASE_FIRST
+
+public static final int CASE_LEVEL
+
+public static final int FRENCH_COLLATION
+
+public static final int NORMALIZATION_MODE
+
+public static final int STRENGTH
+
+public static final int VALUE_ATTRIBUTE_VALUE_COUNT
+
+public static final int VALUE_DEFAULT
+
+public static final int VALUE_DEFAULT_STRENGTH
+
+public static final int VALUE_IDENTICAL
+
+public static final int VALUE_LOWER_FIRST
+
+public static final int VALUE_NON_IGNORABLE
+
+public static final int VALUE_OFF
+
+public static final int VALUE_ON
+
+public static final int VALUE_ON_WITHOUT_HANGUL
+
+public static final int VALUE_PRIMARY
+
+public static final int VALUE_QUATERNARY
+
+public static final int VALUE_SECONDARY
+
+public static final int VALUE_SHIFTED
+
+public static final int VALUE_TERTIARY
+
+public static final int VALUE_UPPER_FIRST
+----------------METHODS----------------
+
+public void <init>()
+
+static boolean checkAttribute(
+int
+int)
+
+static boolean checkNormalization(
+int)
+
+static boolean checkStrength(
+int)
+
+static boolean checkType(
+int)
+
+________________CLASS________________
+
+
+public final class com.ibm.icu4jni.text.CollationElementIterator extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int NULLORDER
+
+private static final int PRIMARY_ORDER_MASK_
+
+private static final int PRIMARY_ORDER_SHIFT_
+
+private static final int SECONDARY_ORDER_MASK_
+
+private static final int SECONDARY_ORDER_SHIFT_
+
+private static final int TERTIARY_ORDER_MASK_
+
+private static final int UNSIGNED_16_BIT_MASK_
+
+private int m_collelemiterator_
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+public static int primaryOrder(
+int)
+
+public static int secondaryOrder(
+int)
+
+public static int tertiaryOrder(
+int)
+
+protected void finalize()
+
+public int getMaxExpansion(
+int)
+
+public int getOffset()
+
+public int next()
+
+public int previous()
+
+public void reset()
+
+public void setOffset(
+int)
+
+public void setText(
+java.lang.String)
+
+public void setText(
+java.text.CharacterIterator)
+
+________________CLASS________________
+
+
+public final class com.ibm.icu4jni.text.CollationKey extends java.lang.Object implements java.lang.Comparable
+
+----------------FIELDS----------------
+
+private static final int UNSIGNED_BYTE_MASK_
+
+private byte[] m_bytes_
+
+private int m_hash_
+----------------METHODS----------------
+
+ void <init>()
+
+ void <init>(
+byte[])
+
+public int compareTo(
+com.ibm.icu4jni.text.CollationKey)
+
+public int compareTo(
+java.lang.Object)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+public byte[] toByteArray()
+
+________________CLASS________________
+
+
+public abstract class com.ibm.icu4jni.text.Collator extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+
+public static final int CANONICAL_DECOMPOSITION
+
+public static final int IDENTICAL
+
+public static final int NO_DECOMPOSITION
+
+public static final int PRIMARY
+
+public static final int QUATERNARY
+
+public static final int RESULT_DEFAULT
+
+public static final int RESULT_EQUAL
+
+public static final int RESULT_GREATER
+
+public static final int RESULT_LESS
+
+public static final int SECONDARY
+
+public static final int TERTIARY
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.util.Locale[] getAvailableLocales()
+
+public static com.ibm.icu4jni.text.Collator getInstance()
+
+public static com.ibm.icu4jni.text.Collator getInstance(
+java.util.Locale)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public abstract java.lang.Object clone()
+
+public abstract int compare(
+java.lang.String
+java.lang.String)
+
+public abstract boolean equals(
+java.lang.Object)
+
+public boolean equals(
+java.lang.String
+java.lang.String)
+
+public abstract int getAttribute(
+int)
+
+public abstract com.ibm.icu4jni.text.CollationKey getCollationKey(
+java.lang.String)
+
+public abstract int getDecomposition()
+
+public abstract int getStrength()
+
+public abstract int hashCode()
+
+public abstract void setAttribute(
+int
+int)
+
+public abstract void setDecomposition(
+int)
+
+public abstract void setStrength(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/text/Format$Field; )
+public abstract class java.text.Format extends java.lang.Object implements java.io.Serializable, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+static java.util.ResourceBundle getBundle(
+java.util.Locale)
+
+static boolean upTo(
+java.lang.String
+java.text.ParsePosition
+java.lang.StringBuffer
+char)
+
+static boolean upToWithQuotes(
+java.lang.String
+java.text.ParsePosition
+java.lang.StringBuffer
+char
+char)
+
+public java.lang.Object clone()
+
+ java.lang.String convertPattern(
+java.lang.String
+java.lang.String
+java.lang.String
+boolean)
+
+public final java.lang.String format(
+java.lang.Object)
+
+public abstract java.lang.StringBuffer format(
+java.lang.Object
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public java.text.AttributedCharacterIterator formatToCharacterIterator(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/text/ParseException; )
+public java.lang.Object parseObject(
+java.lang.String)
+
+public abstract java.lang.Object parseObject(
+java.lang.String
+java.text.ParsePosition)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/text/NumberFormat$Field; )
+public abstract class java.text.NumberFormat extends java.text.Format
+
+----------------FIELDS----------------
+
+public static final int FRACTION_FIELD
+
+public static final int INTEGER_FIELD
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+private boolean groupingUsed
+
+private int maximumFractionDigits
+
+private int maximumIntegerDigits
+
+private int minimumFractionDigits
+
+private int minimumIntegerDigits
+
+private boolean parseIntegerOnly
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.util.Locale[] getAvailableLocales()
+
+public static final java.text.NumberFormat getCurrencyInstance()
+
+public static java.text.NumberFormat getCurrencyInstance(
+java.util.Locale)
+
+public static final java.text.NumberFormat getInstance()
+
+public static java.text.NumberFormat getInstance(
+java.util.Locale)
+
+static java.text.NumberFormat getInstance(
+java.util.Locale
+java.lang.String)
+
+public static final java.text.NumberFormat getIntegerInstance()
+
+public static java.text.NumberFormat getIntegerInstance(
+java.util.Locale)
+
+public static final java.text.NumberFormat getNumberInstance()
+
+public static java.text.NumberFormat getNumberInstance(
+java.util.Locale)
+
+static java.lang.String getPattern(
+java.util.Locale
+java.lang.String)
+
+public static final java.text.NumberFormat getPercentInstance()
+
+public static java.text.NumberFormat getPercentInstance(
+java.util.Locale)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public final java.lang.String format(
+double)
+
+public final java.lang.String format(
+long)
+
+public abstract java.lang.StringBuffer format(
+double
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public abstract java.lang.StringBuffer format(
+long
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public java.lang.StringBuffer format(
+java.lang.Object
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public java.util.Currency getCurrency()
+
+public int getMaximumFractionDigits()
+
+public int getMaximumIntegerDigits()
+
+public int getMinimumFractionDigits()
+
+public int getMinimumIntegerDigits()
+
+public int hashCode()
+
+public boolean isGroupingUsed()
+
+public boolean isParseIntegerOnly()
+@dalvik.annotation.Throws (value =Ljava/text/ParseException; )
+public java.lang.Number parse(
+java.lang.String)
+
+public abstract java.lang.Number parse(
+java.lang.String
+java.text.ParsePosition)
+
+public final java.lang.Object parseObject(
+java.lang.String
+java.text.ParsePosition)
+
+public void setCurrency(
+java.util.Currency)
+
+public void setGroupingUsed(
+boolean)
+
+public void setMaximumFractionDigits(
+int)
+
+public void setMaximumIntegerDigits(
+int)
+
+public void setMinimumFractionDigits(
+int)
+
+public void setMinimumIntegerDigits(
+int)
+
+public void setParseIntegerOnly(
+boolean)
+
+________________CLASS________________
+
+
+public class com.ibm.icu4jni.text.DecimalFormat extends java.text.NumberFormat
+
+----------------FIELDS----------------
+
+private int addr
+
+private byte minExponentDigits
+
+private com.ibm.icu4jni.text.DecimalFormatSymbols symbols
+
+private boolean useExponentialNotation
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+com.ibm.icu4jni.text.DecimalFormatSymbols)
+
+protected static java.lang.String getFieldType(
+java.text.Format$Field)
+
+public void applyLocalizedPattern(
+java.lang.String)
+
+public void applyPattern(
+java.lang.String)
+
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.StringBuffer format(
+double
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public java.lang.StringBuffer format(
+long
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public java.lang.StringBuffer format(
+java.lang.Object
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public java.text.AttributedCharacterIterator formatToCharacterIterator(
+java.lang.Object)
+
+public java.util.Currency getCurrency()
+
+public com.ibm.icu4jni.text.DecimalFormatSymbols getDecimalFormatSymbols()
+
+protected java.text.Format$Field getField(
+java.lang.String)
+
+public int getGroupingSize()
+
+public int getMaximumFractionDigits()
+
+public int getMaximumIntegerDigits()
+
+public int getMinimumFractionDigits()
+
+public int getMinimumIntegerDigits()
+
+public int getMultiplier()
+
+public java.lang.String getNegativePrefix()
+
+public java.lang.String getNegativeSuffix()
+
+public java.lang.String getPositivePrefix()
+
+public java.lang.String getPositiveSuffix()
+
+public int hashCode()
+
+public boolean isDecimalSeparatorAlwaysShown()
+
+public boolean isGroupingUsed()
+
+public boolean isParseIntegerOnly()
+
+public java.lang.Number parse(
+java.lang.String
+java.text.ParsePosition)
+
+public void setCurrency(
+java.util.Currency)
+
+public void setDecimalFormatSymbols(
+com.ibm.icu4jni.text.DecimalFormatSymbols)
+
+public void setDecimalSeparatorAlwaysShown(
+boolean)
+
+public void setGroupingSize(
+int)
+
+public void setGroupingUsed(
+boolean)
+
+public void setMaximumFractionDigits(
+int)
+
+public void setMaximumIntegerDigits(
+int)
+
+public void setMinimumFractionDigits(
+int)
+
+public void setMinimumIntegerDigits(
+int)
+
+public void setMultiplier(
+int)
+
+public void setNegativePrefix(
+java.lang.String)
+
+public void setNegativeSuffix(
+java.lang.String)
+
+public void setParseIntegerOnly(
+boolean)
+
+public void setPositivePrefix(
+java.lang.String)
+
+public void setPositiveSuffix(
+java.lang.String)
+
+public java.lang.String toLocalizedPattern()
+
+public java.lang.String toPattern()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract interface class java.security.PrivilegedAction extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =()TT; )
+public abstract java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/util/ResourceBundle;>; )
+ class com.ibm.icu4jni.text.DecimalFormatSymbols$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final com.ibm.icu4jni.text.DecimalFormatSymbols this$0
+----------------METHODS----------------
+
+ void <init>(
+com.ibm.icu4jni.text.DecimalFormatSymbols)
+
+public volatile java.lang.Object run()
+
+public java.util.ResourceBundle run()
+
+________________CLASS________________
+
+
+public class com.ibm.icu4jni.text.DecimalFormatSymbols extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int addr
+
+private java.util.Locale loc
+----------------METHODS----------------
+
+private void <init>(
+int
+java.util.Locale)
+
+public void <init>(
+java.util.Locale)
+
+static java.util.Locale access$000(
+com.ibm.icu4jni.text.DecimalFormatSymbols)
+
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+protected void finalize()
+
+ int getAddr()
+
+public java.util.Currency getCurrency()
+
+public java.lang.String getCurrencySymbol()
+
+public char getDecimalSeparator()
+
+public char getDigit()
+
+public char getGroupingSeparator()
+
+public java.lang.String getInfinity()
+
+public java.lang.String getInternationalCurrencySymbol()
+
+ java.util.Locale getLocale()
+
+public char getMinusSign()
+
+public char getMonetaryDecimalSeparator()
+
+public java.lang.String getNaN()
+
+public char getPatternSeparator()
+
+public char getPerMill()
+
+public char getPercent()
+
+public char getZeroDigit()
+
+public void setCurrency(
+java.util.Currency)
+
+public void setCurrencySymbol(
+java.lang.String)
+
+public void setDecimalSeparator(
+char)
+
+public void setDigit(
+char)
+
+public void setGroupingSeparator(
+char)
+
+public void setInfinity(
+java.lang.String)
+
+public void setInternationalCurrencySymbol(
+java.lang.String)
+
+public void setMinusSign(
+char)
+
+public void setMonetaryDecimalSeparator(
+char)
+
+public void setNaN(
+java.lang.String)
+
+public void setPatternSeparator(
+char)
+
+public void setPerMill(
+char)
+
+public void setPercent(
+char)
+
+public void setZeroDigit(
+char)
+
+________________CLASS________________
+
+
+public final class com.ibm.icu4jni.text.NativeBreakIterator extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+static native int cloneImpl(
+int)
+
+static native void closeBreakIteratorImpl(
+int)
+
+static native int currentImpl(
+int)
+
+static native int firstImpl(
+int)
+
+static native int followingImpl(
+int
+int)
+
+private static native int getAvailableLocalesCountImpl()
+
+private static native java.lang.String getAvailableLocalesImpl(
+int)
+
+static java.lang.String[] getAvailableLocalesImpl()
+
+static native int getCharacterInstanceImpl(
+java.lang.String)
+
+static native int getLineInstanceImpl(
+java.lang.String)
+
+static native int getSentenceInstanceImpl(
+java.lang.String)
+
+static native int getWordInstanceImpl(
+java.lang.String)
+
+static native boolean isBoundaryImpl(
+int
+int)
+
+static native int lastImpl(
+int)
+
+static native int nextImpl(
+int
+int)
+
+static native int precedingImpl(
+int
+int)
+
+static native int previousImpl(
+int)
+
+static native void setTextImpl(
+int
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class com.ibm.icu4jni.text.NativeCollation extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+static native void closeCollator(
+int)
+
+static native void closeElements(
+int)
+
+static native int compare(
+int
+java.lang.String
+java.lang.String)
+
+static native int getAttribute(
+int
+int)
+
+private static native int getAvailableLocalesCountImpl()
+
+private static native java.lang.String getAvailableLocalesImpl(
+int)
+
+static java.lang.String[] getAvailableLocalesImpl()
+
+static native int getCollationElementIterator(
+int
+java.lang.String)
+
+static native int getMaxExpansion(
+int
+int)
+
+static native int getNormalization(
+int)
+
+static native int getOffset(
+int)
+
+static native java.lang.String getRules(
+int)
+
+static native byte[] getSortKey(
+int
+java.lang.String)
+
+static native int hashCode(
+int)
+
+static native int next(
+int)
+
+static native int openCollator()
+
+static native int openCollator(
+java.lang.String)
+
+static native int openCollatorFromRules(
+java.lang.String
+int
+int)
+
+static native int previous(
+int)
+
+static native void reset(
+int)
+
+static native int safeClone(
+int)
+
+static native void setAttribute(
+int
+int
+int)
+
+static native void setNormalization(
+int
+int)
+
+static native void setOffset(
+int
+int)
+
+static native void setText(
+int
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Enum<TE;>;>Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Comparable<TE;>; )
+public abstract class java.lang.Enum extends java.lang.Object implements java.io.Serializable, java.lang.Comparable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final java.lang.String name
+
+private final int ordinal
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.String
+int)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Enum<TT;>;>(Ljava/lang/Class<TT;>;)[TT; )
+static java.lang.Enum[] getValues(
+java.lang.Class)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Enum<TT;>;>(Ljava/lang/Class<TT;>;Ljava/lang/String;)TT; )
+public static java.lang.Enum valueOf(
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+protected final java.lang.Object clone()
+@dalvik.annotation.Signature (value =(TE;)I )
+public final int compareTo(
+java.lang.Enum)
+
+public volatile int compareTo(
+java.lang.Object)
+
+public final boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<TE;>; )
+public final java.lang.Class getDeclaringClass()
+
+public final int hashCode()
+
+public final java.lang.String name()
+
+public final int ordinal()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/ibm/icu4jni/text/NativeDecimalFormat$UNumberFormatAttribute;>; )
+@dalvik.annotation.InnerClass (accessFlags =16408 name =UNumberFormatAttribute )
+@dalvik.annotation.EnclosingClass (value =Lcom/ibm/icu4jni/text/NativeDecimalFormat; )
+final class com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute[] $VALUES
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_DECIMAL_ALWAYS_SHOWN
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_FORMAT_WIDTH
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_FRACTION_DIGITS
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_GROUPING_SIZE
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_GROUPING_USED
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_INTEGER_DIGITS
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_LENIENT_PARSE
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_MAX_FRACTION_DIGITS
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_MAX_INTEGER_DIGITS
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_MAX_SIGNIFICANT_DIGITS
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_MIN_FRACTION_DIGITS
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_MIN_INTEGER_DIGITS
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_MIN_SIGNIFICANT_DIGITS
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_MULTIPLIER
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_PADDING_POSITION
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_PARSE_INT_ONLY
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_ROUNDING_INCREMENT
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_ROUNDING_MODE
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_SECONDARY_GROUPING_SIZE
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute UNUM_SIGNIFICANT_DIGITS_USED
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute valueOf(
+java.lang.String)
+
+public static com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16408 name =UNumberFormatSymbol )
+@dalvik.annotation.EnclosingClass (value =Lcom/ibm/icu4jni/text/NativeDecimalFormat; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/ibm/icu4jni/text/NativeDecimalFormat$UNumberFormatSymbol;>; )
+final class com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol[] $VALUES
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_CURRENCY_SYMBOL
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_DECIMAL_SEPARATOR_SYMBOL
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_DIGIT_SYMBOL
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_EXPONENTIAL_SYMBOL
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_FORMAT_SYMBOL_COUNT
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_GROUPING_SEPARATOR_SYMBOL
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_INFINITY_SYMBOL
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_INTL_CURRENCY_SYMBOL
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_MINUS_SIGN_SYMBOL
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_MONETARY_GROUPING_SEPARATOR_SYMBOL
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_MONETARY_SEPARATOR_SYMBOL
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_NAN_SYMBOL
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_PAD_ESCAPE_SYMBOL
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_PATTERN_SEPARATOR_SYMBOL
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_PERCENT_SYMBOL
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_PERMILL_SYMBOL
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_PLUS_SIGN_SYMBOL
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_SIGNIFICANT_DIGIT_SYMBOL
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol UNUM_ZERO_DIGIT_SYMBOL
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol valueOf(
+java.lang.String)
+
+public static com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16408 name =UNumberFormatTextAttribute )
+@dalvik.annotation.EnclosingClass (value =Lcom/ibm/icu4jni/text/NativeDecimalFormat; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/ibm/icu4jni/text/NativeDecimalFormat$UNumberFormatTextAttribute;>; )
+final class com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatTextAttribute extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatTextAttribute[] $VALUES
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatTextAttribute UNUM_CURRENCY_CODE
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatTextAttribute UNUM_DEFAULT_RULESET
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatTextAttribute UNUM_NEGATIVE_PREFIX
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatTextAttribute UNUM_NEGATIVE_SUFFIX
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatTextAttribute UNUM_PADDING_CHARACTER
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatTextAttribute UNUM_POSITIVE_PREFIX
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatTextAttribute UNUM_POSITIVE_SUFFIX
+
+public static final com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatTextAttribute UNUM_PUBLIC_RULESETS
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatTextAttribute valueOf(
+java.lang.String)
+
+public static com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatTextAttribute[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/ibm/icu4jni/text/NativeDecimalFormat$UNumberFormatTextAttribute;Lcom/ibm/icu4jni/text/NativeDecimalFormat$UNumberFormatAttribute;Lcom/ibm/icu4jni/text/NativeDecimalFormat$UNumberFormatSymbol; )
+public final class com.ibm.icu4jni.text.NativeDecimalFormat extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+static native void applyPatternImpl(
+int
+boolean
+java.lang.String)
+
+static native int cloneImpl(
+int)
+
+static native void closeDecimalFormatImpl(
+int)
+
+static native java.lang.String format(
+int
+double
+java.text.FieldPosition
+java.lang.String
+java.lang.StringBuffer)
+
+static native java.lang.String format(
+int
+long
+java.text.FieldPosition
+java.lang.String
+java.lang.StringBuffer)
+
+static native java.lang.String format(
+int
+java.lang.String
+java.text.FieldPosition
+java.lang.String
+java.lang.StringBuffer
+int)
+
+static native int getAttribute(
+int
+int)
+
+static native java.lang.String getSymbol(
+int
+int)
+
+static native java.lang.String getTextAttribute(
+int
+int)
+
+static native int openDecimalFormatImpl(
+java.lang.String
+java.lang.String)
+
+static native java.lang.Number parse(
+int
+java.lang.String
+java.text.ParsePosition)
+
+static native void setAttribute(
+int
+int
+int)
+
+static native void setSymbol(
+int
+int
+java.lang.String)
+
+static native void setTextAttribute(
+int
+int
+java.lang.String)
+
+static native java.lang.String toPatternImpl(
+int
+boolean)
+
+________________CLASS________________
+
+
+public class com.ibm.icu4jni.text.RuleBasedBreakIterator extends com.ibm.icu4jni.text.BreakIterator
+
+----------------FIELDS----------------
+
+private int addr
+
+private java.text.CharacterIterator charIter
+----------------METHODS----------------
+
+ void <init>(
+int
+int)
+
+public java.lang.Object clone()
+
+public int current()
+
+public boolean equals(
+java.lang.Object)
+
+protected void finalize()
+
+public int first()
+
+public int following(
+int)
+
+public java.text.CharacterIterator getText()
+
+public boolean isBoundary(
+int)
+
+public int last()
+
+public int next()
+
+public int next(
+int)
+
+public int preceding(
+int)
+
+public int previous()
+
+public void setText(
+java.text.CharacterIterator)
+
+________________CLASS________________
+
+
+public final class com.ibm.icu4jni.text.RuleBasedCollator extends com.ibm.icu4jni.text.Collator
+
+----------------FIELDS----------------
+
+private int m_collator_
+
+private int m_hashcode_
+----------------METHODS----------------
+
+ void <init>()
+
+private void <init>(
+int)
+@dalvik.annotation.Throws (value =Ljava/text/ParseException; )
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/text/ParseException; )
+public void <init>(
+java.lang.String
+int)
+
+public void <init>(
+java.lang.String
+int
+int)
+
+ void <init>(
+java.util.Locale)
+
+public java.lang.Object clone()
+
+public int compare(
+java.lang.String
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+
+protected void finalize()
+
+public int getAttribute(
+int)
+
+public com.ibm.icu4jni.text.CollationElementIterator getCollationElementIterator(
+java.lang.String)
+
+public com.ibm.icu4jni.text.CollationElementIterator getCollationElementIterator(
+java.text.CharacterIterator)
+
+public com.ibm.icu4jni.text.CollationKey getCollationKey(
+java.lang.String)
+
+public int getDecomposition()
+
+public java.lang.String getRules()
+
+public byte[] getSortKey(
+java.lang.String)
+
+public int getStrength()
+
+public int hashCode()
+
+public void setAttribute(
+int
+int)
+
+public void setDecomposition(
+int)
+
+public void setStrength(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lcom/ibm/icu4jni/text/RuleBasedNumberFormat$RBNFType;>; )
+@dalvik.annotation.EnclosingClass (value =Lcom/ibm/icu4jni/text/RuleBasedNumberFormat; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =RBNFType )
+public final class com.ibm.icu4jni.text.RuleBasedNumberFormat$RBNFType extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final com.ibm.icu4jni.text.RuleBasedNumberFormat$RBNFType[] $VALUES
+
+public static final com.ibm.icu4jni.text.RuleBasedNumberFormat$RBNFType DURATION
+
+public static final com.ibm.icu4jni.text.RuleBasedNumberFormat$RBNFType ORDINAL
+
+public static final com.ibm.icu4jni.text.RuleBasedNumberFormat$RBNFType SPELLOUT
+
+ int type
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static com.ibm.icu4jni.text.RuleBasedNumberFormat$RBNFType valueOf(
+java.lang.String)
+
+public static com.ibm.icu4jni.text.RuleBasedNumberFormat$RBNFType[] values()
+
+ int getType()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/ibm/icu4jni/text/RuleBasedNumberFormat$RBNFType; )
+public class com.ibm.icu4jni.text.RuleBasedNumberFormat extends java.text.NumberFormat
+
+----------------FIELDS----------------
+
+private int addr
+----------------METHODS----------------
+
+public void <init>()
+
+private static native void closeRBNFImpl(
+int)
+
+private static native java.lang.String formatRBNFImpl(
+int
+double
+java.text.FieldPosition
+java.lang.String
+java.lang.StringBuffer)
+
+private static native java.lang.String formatRBNFImpl(
+int
+long
+java.text.FieldPosition
+java.lang.String
+java.lang.StringBuffer)
+
+private static java.lang.String getFieldType(
+java.text.Format$Field)
+
+private static native int openRBNFImpl(
+int
+java.lang.String)
+
+private static native int openRBNFImpl(
+java.lang.String
+java.lang.String)
+
+static native java.lang.Number parseRBNFImpl(
+int
+java.lang.String
+java.text.ParsePosition
+boolean)
+
+public void close()
+
+protected void finalize()
+
+public java.lang.StringBuffer format(
+double
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public java.lang.StringBuffer format(
+long
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public void open(
+com.ibm.icu4jni.text.RuleBasedNumberFormat$RBNFType)
+
+public void open(
+com.ibm.icu4jni.text.RuleBasedNumberFormat$RBNFType
+java.util.Locale)
+
+public void open(
+java.lang.String)
+
+public void open(
+java.lang.String
+java.util.Locale)
+
+public java.lang.Number parse(
+java.lang.String
+java.text.ParsePosition)
+
+public java.lang.Number parseLenient(
+java.lang.String
+java.text.ParsePosition)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Lcom/ibm/icu4jni/util/Resources; )
+ class com.ibm.icu4jni.util.Resources$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/ResourceBundle$MissingBundle; )
+public abstract class java.util.ResourceBundle extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.util.ResourceBundle MISSING
+
+private static final java.util.ResourceBundle MISSINGBASE
+@dalvik.annotation.Signature (value =Ljava/util/WeakHashMap<Ljava/lang/Object;Ljava/util/Hashtable<Ljava/lang/String;Ljava/util/ResourceBundle;>;>; )
+private static final java.util.WeakHashMap cache
+
+private java.util.Locale locale
+
+protected java.util.ResourceBundle parent
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/util/MissingResourceException; )
+public static final java.util.ResourceBundle getBundle(
+java.lang.String)
+
+public static final java.util.ResourceBundle getBundle(
+java.lang.String
+java.util.Locale)
+@dalvik.annotation.Throws (value =Ljava/util/MissingResourceException; )
+public static java.util.ResourceBundle getBundle(
+java.lang.String
+java.util.Locale
+java.lang.ClassLoader)
+@dalvik.annotation.Throws (value =Ljava/util/MissingResourceException; )
+private static java.util.ResourceBundle getBundleImpl(
+java.lang.String
+java.util.Locale
+java.lang.ClassLoader)
+
+private static java.util.ResourceBundle handleGetBundle(
+java.lang.String
+java.lang.String
+boolean
+java.lang.ClassLoader)
+
+private void setLocale(
+java.lang.String)
+
+private static java.lang.String strip(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/lang/String;>; )
+public abstract java.util.Enumeration getKeys()
+
+public java.util.Locale getLocale()
+
+public final java.lang.Object getObject(
+java.lang.String)
+
+public final java.lang.String getString(
+java.lang.String)
+
+public final java.lang.String[] getStringArray(
+java.lang.String)
+
+protected abstract java.lang.Object handleGetObject(
+java.lang.String)
+
+protected void setParent(
+java.util.ResourceBundle)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =Country )
+@dalvik.annotation.EnclosingClass (value =Lcom/ibm/icu4jni/util/Resources; )
+final class com.ibm.icu4jni.util.Resources$Country extends java.util.ResourceBundle
+
+----------------FIELDS----------------
+
+private java.lang.String locale
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/lang/String;>; )
+public java.util.Enumeration getKeys()
+
+protected java.lang.Object handleGetObject(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =Currency )
+@dalvik.annotation.EnclosingClass (value =Lcom/ibm/icu4jni/util/Resources; )
+final class com.ibm.icu4jni.util.Resources$Currency extends java.util.ResourceBundle
+
+----------------FIELDS----------------
+
+private java.lang.String locale
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/lang/String;>; )
+public java.util.Enumeration getKeys()
+
+protected java.lang.Object handleGetObject(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/ibm/icu4jni/util/Resources; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =ISO3Countries )
+final class com.ibm.icu4jni.util.Resources$ISO3Countries extends java.util.ResourceBundle
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+com.ibm.icu4jni.util.Resources$1)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/lang/String;>; )
+public java.util.Enumeration getKeys()
+
+protected java.lang.Object handleGetObject(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/ibm/icu4jni/util/Resources; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =ISO3Languages )
+final class com.ibm.icu4jni.util.Resources$ISO3Languages extends java.util.ResourceBundle
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+com.ibm.icu4jni.util.Resources$1)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/lang/String;>; )
+public java.util.Enumeration getKeys()
+
+protected java.lang.Object handleGetObject(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/ibm/icu4jni/util/Resources; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =ISO4Currencies )
+final class com.ibm.icu4jni.util.Resources$ISO4Currencies extends java.util.ResourceBundle
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+com.ibm.icu4jni.util.Resources$1)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/lang/String;>; )
+public java.util.Enumeration getKeys()
+
+protected java.lang.Object handleGetObject(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/ibm/icu4jni/util/Resources; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =ISO4CurrenciesToDigits )
+final class com.ibm.icu4jni.util.Resources$ISO4CurrenciesToDigits extends java.util.ResourceBundle
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+com.ibm.icu4jni.util.Resources$1)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/lang/String;>; )
+public java.util.Enumeration getKeys()
+
+protected java.lang.Object handleGetObject(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =Language )
+@dalvik.annotation.EnclosingClass (value =Lcom/ibm/icu4jni/util/Resources; )
+final class com.ibm.icu4jni.util.Resources$Language extends java.util.ResourceBundle
+
+----------------FIELDS----------------
+
+private java.lang.String locale
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/lang/String;>; )
+public java.util.Enumeration getKeys()
+
+protected java.lang.Object handleGetObject(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class java.util.ListResourceBundle extends java.util.ResourceBundle
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/Object;>; )
+ java.util.Hashtable table
+----------------METHODS----------------
+
+public void <init>()
+
+private void initializeTable()
+
+protected abstract java.lang.Object[][] getContents()
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/lang/String;>; )
+public java.util.Enumeration getKeys()
+
+public final java.lang.Object handleGetObject(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =Locale )
+@dalvik.annotation.EnclosingClass (value =Lcom/ibm/icu4jni/util/Resources; )
+final class com.ibm.icu4jni.util.Resources$Locale extends java.util.ListResourceBundle
+
+----------------FIELDS----------------
+
+private java.lang.String locale
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+protected java.lang.Object[][] getContents()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lcom/ibm/icu4jni/util/Resources; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =Variant )
+final class com.ibm.icu4jni.util.Resources$Variant extends java.util.ResourceBundle
+
+----------------FIELDS----------------
+
+private java.lang.String locale
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/lang/String;>; )
+public java.util.Enumeration getKeys()
+
+protected java.lang.Object handleGetObject(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lcom/ibm/icu4jni/util/Resources$1;Lcom/ibm/icu4jni/util/Resources$Locale;Lcom/ibm/icu4jni/util/Resources$Variant;Lcom/ibm/icu4jni/util/Resources$Language;Lcom/ibm/icu4jni/util/Resources$Currency;Lcom/ibm/icu4jni/util/Resources$Country;Lcom/ibm/icu4jni/util/Resources$ISO4CurrenciesToDigits;Lcom/ibm/icu4jni/util/Resources$ISO4Currencies;Lcom/ibm/icu4jni/util/Resources$ISO3Languages;Lcom/ibm/icu4jni/util/Resources$ISO3Countries; )
+public class com.ibm.icu4jni.util.Resources extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.lang.String[] availableLocales
+
+private static java.lang.String[] availableTimezones
+
+private static java.lang.String[][] defaultTimezoneNames
+
+private static final java.lang.String initialLocale
+
+private static java.lang.String[] isoCountries
+
+private static java.lang.String[] isoLanguages
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static java.lang.String access$1000(
+java.lang.String
+java.lang.String)
+
+static java.lang.String access$1100(
+java.lang.String
+java.lang.String)
+
+static java.lang.Object[][] access$1200(
+java.lang.String
+boolean)
+
+static java.lang.String access$400(
+java.lang.String)
+
+static java.lang.String access$500(
+java.lang.String)
+
+static java.lang.String access$600(
+java.lang.String)
+
+static int access$700(
+java.lang.String)
+
+static java.lang.String access$800(
+java.lang.String
+java.lang.String)
+
+static java.lang.String access$900(
+java.lang.String
+java.lang.String)
+
+private static java.lang.String[][] createTimeZoneNamesFor(
+java.lang.String)
+
+public static java.lang.String[] getAvailableLocales()
+
+private static native java.lang.String[] getAvailableLocalesNative()
+
+private static native java.lang.Object[][] getContentImpl(
+java.lang.String
+boolean)
+
+private static native java.lang.String getCurrencyCodeNative(
+java.lang.String)
+
+private static native java.lang.String getCurrencySymbolNative(
+java.lang.String
+java.lang.String)
+
+private static java.lang.String getDefaultLocaleName()
+
+private static native java.lang.String getDisplayCountryNative(
+java.lang.String
+java.lang.String)
+
+private static native java.lang.String getDisplayLanguageNative(
+java.lang.String
+java.lang.String)
+
+public static java.lang.String getDisplayTimeZone(
+java.lang.String
+boolean
+int
+java.lang.String)
+
+private static native java.lang.String getDisplayTimeZoneNative(
+java.lang.String
+boolean
+int
+java.lang.String)
+
+public static java.lang.String[][] getDisplayTimeZones(
+java.lang.String)
+
+private static native java.lang.String getDisplayVariantNative(
+java.lang.String
+java.lang.String)
+
+private static native int getFractionDigitsNative(
+java.lang.String)
+
+private static native java.lang.String getISO3CountryNative(
+java.lang.String)
+
+private static native java.lang.String getISO3LanguageNative(
+java.lang.String)
+
+public static java.lang.String[] getISOCountries()
+
+private static native java.lang.String[] getISOCountriesNative()
+
+public static java.lang.String[] getISOLanguages()
+
+private static native java.lang.String[] getISOLanguagesNative()
+
+public static java.util.ResourceBundle getInstance(
+java.lang.String
+java.lang.String)
+
+public static java.lang.String[] getKnownTimezones()
+
+private static native void getTimeZonesNative(
+java.lang.String[][]
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class java.lang.annotation.Annotation extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>; )
+public abstract java.lang.Class annotationType()
+
+public abstract boolean equals(
+java.lang.Object)
+
+public abstract int hashCode()
+
+public abstract java.lang.String toString()
+
+________________CLASS________________
+
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!ANNOTATION_TYPE )
+abstract interface class dalvik.annotation.AnnotationDefault extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!ANNOTATION_TYPE )
+abstract interface class dalvik.annotation.EnclosingClass extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!ANNOTATION_TYPE )
+abstract interface class dalvik.annotation.EnclosingMethod extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!ANNOTATION_TYPE )
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+abstract interface class dalvik.annotation.InnerClass extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!ANNOTATION_TYPE )
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+abstract interface class dalvik.annotation.MemberClasses extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!ANNOTATION_TYPE )
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+abstract interface class dalvik.annotation.Signature extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.AnnotationDefault (value =Ldalvik/annotation/TestInfo;:[level =Ldalvik/annotation/TestLevel;!PARTIAL, purpose =] )
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!METHOD )
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+public abstract interface class dalvik.annotation.TestInfo extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract dalvik.annotation.TestLevel level()
+
+public abstract java.lang.String purpose()
+
+public abstract dalvik.annotation.TestTarget[] targets()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Ldalvik/annotation/TestLevel;>; )
+public final class dalvik.annotation.TestLevel extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final dalvik.annotation.TestLevel[] $VALUES
+
+public static final dalvik.annotation.TestLevel COMPLETE
+
+public static final dalvik.annotation.TestLevel PARTIAL
+
+public static final dalvik.annotation.TestLevel PARTIAL_OK
+
+public static final dalvik.annotation.TestLevel TODO
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static dalvik.annotation.TestLevel valueOf(
+java.lang.String)
+
+public static dalvik.annotation.TestLevel[] values()
+
+________________CLASS________________
+
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!ANNOTATION_TYPE )
+@dalvik.annotation.AnnotationDefault (value =Ldalvik/annotation/TestTarget;:[conceptName =, methodArgs =, methodName =] )
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+public abstract interface class dalvik.annotation.TestTarget extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String conceptName()
+@dalvik.annotation.Signature (value =()[Ljava/lang/Class<*>; )
+public abstract java.lang.Class[] methodArgs()
+
+public abstract java.lang.String methodName()
+
+________________CLASS________________
+
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!TYPE )
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+public abstract interface class dalvik.annotation.TestTargetClass extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<*>; )
+public abstract java.lang.Class value()
+
+________________CLASS________________
+
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!ANNOTATION_TYPE )
+abstract interface class dalvik.annotation.Throws extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class dalvik.bytecode.Opcodes extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int OP_ADD_DOUBLE
+
+public static final int OP_ADD_DOUBLE_2ADDR
+
+public static final int OP_ADD_FLOAT
+
+public static final int OP_ADD_FLOAT_2ADDR
+
+public static final int OP_ADD_INT
+
+public static final int OP_ADD_INT_2ADDR
+
+public static final int OP_ADD_INT_LIT16
+
+public static final int OP_ADD_INT_LIT8
+
+public static final int OP_ADD_LONG
+
+public static final int OP_ADD_LONG_2ADDR
+
+public static final int OP_AGET
+
+public static final int OP_AGET_BOOLEAN
+
+public static final int OP_AGET_BYTE
+
+public static final int OP_AGET_CHAR
+
+public static final int OP_AGET_OBJECT
+
+public static final int OP_AGET_SHORT
+
+public static final int OP_AGET_WIDE
+
+public static final int OP_AND_INT
+
+public static final int OP_AND_INT_2ADDR
+
+public static final int OP_AND_INT_LIT16
+
+public static final int OP_AND_INT_LIT8
+
+public static final int OP_AND_LONG
+
+public static final int OP_AND_LONG_2ADDR
+
+public static final int OP_APUT
+
+public static final int OP_APUT_BOOLEAN
+
+public static final int OP_APUT_BYTE
+
+public static final int OP_APUT_CHAR
+
+public static final int OP_APUT_OBJECT
+
+public static final int OP_APUT_SHORT
+
+public static final int OP_APUT_WIDE
+
+public static final int OP_ARRAY_LENGTH
+
+public static final int OP_CHECK_CAST
+
+public static final int OP_CMPG_DOUBLE
+
+public static final int OP_CMPG_FLOAT
+
+public static final int OP_CMPL_DOUBLE
+
+public static final int OP_CMPL_FLOAT
+
+public static final int OP_CMP_LONG
+
+public static final int OP_CONST
+
+public static final int OP_CONST_16
+
+public static final int OP_CONST_4
+
+public static final int OP_CONST_CLASS
+
+public static final int OP_CONST_HIGH16
+
+public static final int OP_CONST_STRING
+
+public static final int OP_CONST_STRING_JUMBO
+
+public static final int OP_CONST_WIDE
+
+public static final int OP_CONST_WIDE_16
+
+public static final int OP_CONST_WIDE_32
+
+public static final int OP_CONST_WIDE_HIGH16
+
+public static final int OP_DIV_DOUBLE
+
+public static final int OP_DIV_DOUBLE_2ADDR
+
+public static final int OP_DIV_FLOAT
+
+public static final int OP_DIV_FLOAT_2ADDR
+
+public static final int OP_DIV_INT
+
+public static final int OP_DIV_INT_2ADDR
+
+public static final int OP_DIV_INT_LIT16
+
+public static final int OP_DIV_INT_LIT8
+
+public static final int OP_DIV_LONG
+
+public static final int OP_DIV_LONG_2ADDR
+
+public static final int OP_DOUBLE_TO_FLOAT
+
+public static final int OP_DOUBLE_TO_INT
+
+public static final int OP_DOUBLE_TO_LONG
+
+public static final int OP_EXECUTE_INLINE
+
+public static final int OP_FILLED_NEW_ARRAY
+
+public static final int OP_FILLED_NEW_ARRAY_RANGE
+
+public static final int OP_FILL_ARRAY_DATA
+
+public static final int OP_FLOAT_TO_DOUBLE
+
+public static final int OP_FLOAT_TO_INT
+
+public static final int OP_FLOAT_TO_LONG
+
+public static final int OP_GOTO
+
+public static final int OP_GOTO_16
+
+public static final int OP_GOTO_32
+
+public static final int OP_IF_EQ
+
+public static final int OP_IF_EQZ
+
+public static final int OP_IF_GE
+
+public static final int OP_IF_GEZ
+
+public static final int OP_IF_GT
+
+public static final int OP_IF_GTZ
+
+public static final int OP_IF_LE
+
+public static final int OP_IF_LEZ
+
+public static final int OP_IF_LT
+
+public static final int OP_IF_LTZ
+
+public static final int OP_IF_NE
+
+public static final int OP_IF_NEZ
+
+public static final int OP_IGET
+
+public static final int OP_IGET_BOOLEAN
+
+public static final int OP_IGET_BYTE
+
+public static final int OP_IGET_CHAR
+
+public static final int OP_IGET_OBJECT
+
+public static final int OP_IGET_OBJECT_QUICK
+
+public static final int OP_IGET_QUICK
+
+public static final int OP_IGET_SHORT
+
+public static final int OP_IGET_WIDE
+
+public static final int OP_IGET_WIDE_QUICK
+
+public static final int OP_INSTANCE_OF
+
+public static final int OP_INT_TO_BYTE
+
+public static final int OP_INT_TO_CHAR
+
+public static final int OP_INT_TO_DOUBLE
+
+public static final int OP_INT_TO_FLOAT
+
+public static final int OP_INT_TO_LONG
+
+public static final int OP_INT_TO_SHORT
+
+public static final int OP_INVOKE_DIRECT
+
+public static final int OP_INVOKE_DIRECT_EMPTY
+
+public static final int OP_INVOKE_DIRECT_RANGE
+
+public static final int OP_INVOKE_INTERFACE
+
+public static final int OP_INVOKE_INTERFACE_RANGE
+
+public static final int OP_INVOKE_STATIC
+
+public static final int OP_INVOKE_STATIC_RANGE
+
+public static final int OP_INVOKE_SUPER
+
+public static final int OP_INVOKE_SUPER_QUICK
+
+public static final int OP_INVOKE_SUPER_QUICK_RANGE
+
+public static final int OP_INVOKE_SUPER_RANGE
+
+public static final int OP_INVOKE_VIRTUAL
+
+public static final int OP_INVOKE_VIRTUAL_QUICK
+
+public static final int OP_INVOKE_VIRTUAL_QUICK_RANGE
+
+public static final int OP_INVOKE_VIRTUAL_RANGE
+
+public static final int OP_IPUT
+
+public static final int OP_IPUT_BOOLEAN
+
+public static final int OP_IPUT_BYTE
+
+public static final int OP_IPUT_CHAR
+
+public static final int OP_IPUT_OBJECT
+
+public static final int OP_IPUT_OBJECT_QUICK
+
+public static final int OP_IPUT_QUICK
+
+public static final int OP_IPUT_SHORT
+
+public static final int OP_IPUT_WIDE
+
+public static final int OP_IPUT_WIDE_QUICK
+
+public static final int OP_LONG_TO_DOUBLE
+
+public static final int OP_LONG_TO_FLOAT
+
+public static final int OP_LONG_TO_INT
+
+public static final int OP_MONITOR_ENTER
+
+public static final int OP_MONITOR_EXIT
+
+public static final int OP_MOVE
+
+public static final int OP_MOVE_16
+
+public static final int OP_MOVE_EXCEPTION
+
+public static final int OP_MOVE_FROM16
+
+public static final int OP_MOVE_OBJECT
+
+public static final int OP_MOVE_OBJECT_16
+
+public static final int OP_MOVE_OBJECT_FROM16
+
+public static final int OP_MOVE_RESULT
+
+public static final int OP_MOVE_RESULT_OBJECT
+
+public static final int OP_MOVE_RESULT_WIDE
+
+public static final int OP_MOVE_WIDE
+
+public static final int OP_MOVE_WIDE_16
+
+public static final int OP_MOVE_WIDE_FROM16
+
+public static final int OP_MUL_DOUBLE
+
+public static final int OP_MUL_DOUBLE_2ADDR
+
+public static final int OP_MUL_FLOAT
+
+public static final int OP_MUL_FLOAT_2ADDR
+
+public static final int OP_MUL_INT
+
+public static final int OP_MUL_INT_2ADDR
+
+public static final int OP_MUL_INT_LIT16
+
+public static final int OP_MUL_INT_LIT8
+
+public static final int OP_MUL_LONG
+
+public static final int OP_MUL_LONG_2ADDR
+
+public static final int OP_NEG_DOUBLE
+
+public static final int OP_NEG_FLOAT
+
+public static final int OP_NEG_INT
+
+public static final int OP_NEG_LONG
+
+public static final int OP_NEW_ARRAY
+
+public static final int OP_NEW_INSTANCE
+
+public static final int OP_NOP
+
+public static final int OP_NOT_INT
+
+public static final int OP_NOT_LONG
+
+public static final int OP_OR_INT
+
+public static final int OP_OR_INT_2ADDR
+
+public static final int OP_OR_INT_LIT16
+
+public static final int OP_OR_INT_LIT8
+
+public static final int OP_OR_LONG
+
+public static final int OP_OR_LONG_2ADDR
+
+public static final int OP_PACKED_SWITCH
+
+public static final int OP_REM_DOUBLE
+
+public static final int OP_REM_DOUBLE_2ADDR
+
+public static final int OP_REM_FLOAT
+
+public static final int OP_REM_FLOAT_2ADDR
+
+public static final int OP_REM_INT
+
+public static final int OP_REM_INT_2ADDR
+
+public static final int OP_REM_INT_LIT16
+
+public static final int OP_REM_INT_LIT8
+
+public static final int OP_REM_LONG
+
+public static final int OP_REM_LONG_2ADDR
+
+public static final int OP_RETURN
+
+public static final int OP_RETURN_OBJECT
+
+public static final int OP_RETURN_VOID
+
+public static final int OP_RETURN_WIDE
+
+public static final int OP_RSUB_INT
+
+public static final int OP_RSUB_INT_LIT8
+
+public static final int OP_SGET
+
+public static final int OP_SGET_BOOLEAN
+
+public static final int OP_SGET_BYTE
+
+public static final int OP_SGET_CHAR
+
+public static final int OP_SGET_OBJECT
+
+public static final int OP_SGET_SHORT
+
+public static final int OP_SGET_WIDE
+
+public static final int OP_SHL_INT
+
+public static final int OP_SHL_INT_2ADDR
+
+public static final int OP_SHL_INT_LIT8
+
+public static final int OP_SHL_LONG
+
+public static final int OP_SHL_LONG_2ADDR
+
+public static final int OP_SHR_INT
+
+public static final int OP_SHR_INT_2ADDR
+
+public static final int OP_SHR_INT_LIT8
+
+public static final int OP_SHR_LONG
+
+public static final int OP_SHR_LONG_2ADDR
+
+public static final int OP_SPARSE_SWITCH
+
+public static final int OP_SPUT
+
+public static final int OP_SPUT_BOOLEAN
+
+public static final int OP_SPUT_BYTE
+
+public static final int OP_SPUT_CHAR
+
+public static final int OP_SPUT_OBJECT
+
+public static final int OP_SPUT_SHORT
+
+public static final int OP_SPUT_WIDE
+
+public static final int OP_SUB_DOUBLE
+
+public static final int OP_SUB_DOUBLE_2ADDR
+
+public static final int OP_SUB_FLOAT
+
+public static final int OP_SUB_FLOAT_2ADDR
+
+public static final int OP_SUB_INT
+
+public static final int OP_SUB_INT_2ADDR
+
+public static final int OP_SUB_LONG
+
+public static final int OP_SUB_LONG_2ADDR
+
+public static final int OP_THROW
+
+public static final int OP_UNUSED_3e
+
+public static final int OP_UNUSED_3f
+
+public static final int OP_UNUSED_40
+
+public static final int OP_UNUSED_41
+
+public static final int OP_UNUSED_42
+
+public static final int OP_UNUSED_43
+
+public static final int OP_UNUSED_73
+
+public static final int OP_UNUSED_79
+
+public static final int OP_UNUSED_7A
+
+public static final int OP_UNUSED_E3
+
+public static final int OP_UNUSED_E4
+
+public static final int OP_UNUSED_E5
+
+public static final int OP_UNUSED_E6
+
+public static final int OP_UNUSED_E7
+
+public static final int OP_UNUSED_E8
+
+public static final int OP_UNUSED_E9
+
+public static final int OP_UNUSED_EA
+
+public static final int OP_UNUSED_EB
+
+public static final int OP_UNUSED_EC
+
+public static final int OP_UNUSED_ED
+
+public static final int OP_UNUSED_EF
+
+public static final int OP_UNUSED_F1
+
+public static final int OP_UNUSED_FC
+
+public static final int OP_UNUSED_FD
+
+public static final int OP_UNUSED_FE
+
+public static final int OP_UNUSED_FF
+
+public static final int OP_USHR_INT
+
+public static final int OP_USHR_INT_2ADDR
+
+public static final int OP_USHR_INT_LIT8
+
+public static final int OP_USHR_LONG
+
+public static final int OP_USHR_LONG_2ADDR
+
+public static final int OP_XOR_INT
+
+public static final int OP_XOR_INT_2ADDR
+
+public static final int OP_XOR_INT_LIT16
+
+public static final int OP_XOR_INT_LIT8
+
+public static final int OP_XOR_LONG
+
+public static final int OP_XOR_LONG_2ADDR
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class java.lang.Error extends java.lang.Throwable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public abstract class java.lang.VirtualMachineError extends java.lang.Error
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class dalvik.system.AllocationLimitError extends java.lang.VirtualMachineError
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract interface class java.util.Enumeration extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean hasMoreElements()
+@dalvik.annotation.Signature (value =()TE; )
+public abstract java.lang.Object nextElement()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ldalvik/system/DexFile; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Enumeration<Ljava/lang/String;>; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =DFEnum )
+ class dalvik.system.DexFile$DFEnum extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+
+private int mIndex
+
+private java.lang.String[] mNameList
+
+final dalvik.system.DexFile this$0
+----------------METHODS----------------
+
+ void <init>(
+dalvik.system.DexFile
+dalvik.system.DexFile)
+
+public boolean hasMoreElements()
+
+public volatile java.lang.Object nextElement()
+
+public java.lang.String nextElement()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ldalvik/system/DexFile$DFEnum; )
+public final class dalvik.system.DexFile extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int mCookie
+
+private java.lang.String mFileName
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.File)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.lang.String)
+
+static int access$000(
+dalvik.system.DexFile)
+
+static java.lang.String[] access$100(
+int)
+
+private static native void closeDexFile(
+int)
+
+private static native java.lang.Class defineClass(
+java.lang.String
+java.lang.ClassLoader
+int
+java.security.ProtectionDomain)
+
+private static native java.lang.String[] getClassNameList(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException;Ljava/io/IOException; )
+public static native boolean isDexOptNeeded(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static native int openDexFile(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/lang/String;>; )
+public java.util.Enumeration entries()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void finalize()
+
+public java.lang.String getName()
+
+public java.lang.Class loadClass(
+java.lang.String
+java.lang.ClassLoader)
+
+________________CLASS________________
+
+
+public abstract interface class java.lang.Runnable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void run()
+
+________________CLASS________________
+
+
+ class dalvik.system.NativeStart extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+private static native void main(
+java.lang.String[])
+
+public native void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/lang/ClassLoader$SystemClassLoader; )
+public abstract class java.lang.ClassLoader extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/Package;>; )
+private java.util.Map packages
+
+private java.lang.ClassLoader parent
+----------------METHODS----------------
+
+protected void <init>()
+
+protected void <init>(
+java.lang.ClassLoader)
+
+static java.lang.ClassLoader access$000()
+
+static java.lang.ClassLoader callerClassLoader()
+
+private static java.lang.ClassLoader createSystemClassLoader()
+
+static java.lang.Package getPackage(
+java.lang.ClassLoader
+java.lang.String)
+
+static final java.lang.ClassLoader getStackClassLoader(
+int)
+
+public static java.lang.ClassLoader getSystemClassLoader()
+
+public static java.net.URL getSystemResource(
+java.lang.String)
+
+public static java.io.InputStream getSystemResourceAsStream(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/Enumeration<Ljava/net/URL;>; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static java.util.Enumeration getSystemResources(
+java.lang.String)
+
+static void loadLibraryWithClassLoader(
+java.lang.String
+java.lang.ClassLoader)
+
+static void loadLibraryWithPath(
+java.lang.String
+java.lang.ClassLoader
+java.lang.String)
+
+public void clearAssertionStatus()
+@dalvik.annotation.Throws (value =Ljava/lang/ClassFormatError; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/ProtectionDomain;)Ljava/lang/Class<*>; )
+protected final java.lang.Class defineClass(
+java.lang.String
+java.nio.ByteBuffer
+java.security.ProtectionDomain)
+@dalvik.annotation.Throws (value =Ljava/lang/ClassFormatError; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;[BII)Ljava/lang/Class<*>; )
+protected final java.lang.Class defineClass(
+java.lang.String
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/ClassFormatError; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class<*>; )
+protected final java.lang.Class defineClass(
+java.lang.String
+byte[]
+int
+int
+java.security.ProtectionDomain)
+@dalvik.annotation.Throws (value =Ljava/lang/ClassFormatError; )
+@dalvik.annotation.Signature (value =([BII)Ljava/lang/Class<*>; )
+@java.lang.Deprecated
+protected final java.lang.Class defineClass(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+protected java.lang.Package definePackage(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.net.URL)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/lang/Class<*>; )
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException; )
+protected java.lang.Class findClass(
+java.lang.String)
+
+protected java.lang.String findLibrary(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/lang/Class<*>; )
+protected final java.lang.Class findLoadedClass(
+java.lang.String)
+
+protected java.net.URL findResource(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/Enumeration<Ljava/net/URL;>; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.util.Enumeration findResources(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/lang/Class<*>; )
+protected final java.lang.Class findSystemClass(
+java.lang.String)
+
+ boolean getClassAssertionStatus(
+java.lang.String)
+
+ boolean getDefaultAssertionStatus()
+
+protected java.lang.Package getPackage(
+java.lang.String)
+
+ boolean getPackageAssertionStatus(
+java.lang.String)
+
+protected java.lang.Package[] getPackages()
+
+public final java.lang.ClassLoader getParent()
+
+public java.net.URL getResource(
+java.lang.String)
+
+public java.io.InputStream getResourceAsStream(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/Enumeration<Ljava/net/URL;>; )
+public java.util.Enumeration getResources(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)[Ljava/lang/Object; )
+final java.lang.Object[] getSigners(
+java.lang.Class)
+
+final boolean isAncestorOf(
+java.lang.ClassLoader)
+
+final boolean isSystemClassLoader()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/lang/Class<*>; )
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException; )
+public java.lang.Class loadClass(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Z)Ljava/lang/Class<*>; )
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException; )
+protected java.lang.Class loadClass(
+java.lang.String
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)V )
+protected final void resolveClass(
+java.lang.Class)
+
+public void setClassAssertionStatus(
+java.lang.String
+boolean)
+
+public void setDefaultAssertionStatus(
+boolean)
+
+public void setPackageAssertionStatus(
+java.lang.String
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;[Ljava/lang/Object;)V )
+protected final void setSigners(
+java.lang.Class
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class dalvik.system.PathClassLoader extends java.lang.ClassLoader
+
+----------------FIELDS----------------
+
+private boolean initialized
+
+private final java.lang.String libPath
+
+private dalvik.system.DexFile[] mDexs
+
+private java.io.File[] mFiles
+
+private java.lang.String[] mLibPaths
+
+private java.lang.String[] mPaths
+
+private java.util.zip.ZipFile[] mZips
+
+private final java.lang.String path
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.ClassLoader)
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.ClassLoader)
+
+private void ensureInit()
+
+private boolean isInArchive(
+java.util.zip.ZipFile
+java.lang.String)
+
+private byte[] loadFromArchive(
+java.util.zip.ZipFile
+java.lang.String)
+
+private byte[] loadFromDirectory(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/lang/Class<*>; )
+protected java.lang.Class findClass(
+java.lang.String)
+
+protected java.lang.String findLibrary(
+java.lang.String)
+
+protected java.net.URL findResource(
+java.lang.String)
+
+protected java.lang.Package getPackage(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class dalvik.system.PotentialDeadlockError extends java.lang.VirtualMachineError
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class dalvik.system.StaleDexCacheError extends java.lang.VirtualMachineError
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class dalvik.system.TemporaryDirectory extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String PATH_NAME
+
+private static final java.lang.String PROPERTY
+
+private static boolean configured
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static void setUpDirectory(
+java.io.File)
+
+public static void setUpDirectory(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class java.io.FilenameFilter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean accept(
+java.io.File
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class dalvik.system.TouchDex$1 extends java.lang.Object implements java.io.FilenameFilter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public boolean accept(
+java.io.File
+java.lang.String)
+
+________________CLASS________________
+
+
+public class dalvik.system.TouchDex extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+private static java.lang.String expandDirectories(
+java.lang.String)
+
+public static void main(
+java.lang.String[])
+
+private static void prepFiles(
+java.lang.String)
+
+public static int start(
+java.lang.String)
+
+private static native int trampoline(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+ class dalvik.system.TouchDexLoader extends java.lang.ClassLoader
+
+----------------FIELDS----------------
+
+private boolean initialized
+
+private dalvik.system.DexFile[] mDexs
+
+private java.io.File[] mFiles
+
+private java.lang.String[] mLibPaths
+
+private java.lang.String[] mPaths
+
+private java.util.zip.ZipFile[] mZips
+
+private java.lang.String path
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.ClassLoader)
+
+private void ensureInit()
+
+private boolean isInArchive(
+java.util.zip.ZipFile
+java.lang.String)
+
+private byte[] loadFromArchive(
+java.util.zip.ZipFile
+java.lang.String)
+
+private byte[] loadFromDirectory(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/lang/Class<*>; )
+protected java.lang.Class findClass(
+java.lang.String)
+
+protected java.lang.String findLibrary(
+java.lang.String)
+
+protected java.net.URL findResource(
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class dalvik.system.VMDebug extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String DEFAULT_METHOD_TRACE_FILE_NAME
+
+private static final int KIND_ALLOCATED_BYTES
+
+private static final int KIND_ALLOCATED_OBJECTS
+
+public static final int KIND_ALL_COUNTS
+
+private static final int KIND_EXT_ALLOCATED_BYTES
+
+private static final int KIND_EXT_ALLOCATED_OBJECTS
+
+private static final int KIND_EXT_FREED_BYTES
+
+private static final int KIND_EXT_FREED_OBJECTS
+
+private static final int KIND_FREED_BYTES
+
+private static final int KIND_FREED_OBJECTS
+
+private static final int KIND_GC_INVOCATIONS
+
+public static final int KIND_GLOBAL_ALLOCATED_BYTES
+
+public static final int KIND_GLOBAL_ALLOCATED_OBJECTS
+
+public static final int KIND_GLOBAL_EXT_ALLOCATED_BYTES
+
+public static final int KIND_GLOBAL_EXT_ALLOCATED_OBJECTS
+
+public static final int KIND_GLOBAL_EXT_FREED_BYTES
+
+public static final int KIND_GLOBAL_EXT_FREED_OBJECTS
+
+public static final int KIND_GLOBAL_FREED_BYTES
+
+public static final int KIND_GLOBAL_FREED_OBJECTS
+
+public static final int KIND_GLOBAL_GC_INVOCATIONS
+
+public static final int KIND_THREAD_ALLOCATED_BYTES
+
+public static final int KIND_THREAD_ALLOCATED_OBJECTS
+
+public static final int KIND_THREAD_EXT_ALLOCATED_BYTES
+
+public static final int KIND_THREAD_EXT_ALLOCATED_OBJECTS
+
+public static final int KIND_THREAD_EXT_FREED_BYTES
+
+public static final int KIND_THREAD_EXT_FREED_OBJECTS
+
+public static final int KIND_THREAD_FREED_BYTES
+
+public static final int KIND_THREAD_FREED_OBJECTS
+
+public static final int KIND_THREAD_GC_INVOCATIONS
+
+public static final int TRACE_COUNT_ALLOCS
+----------------METHODS----------------
+
+private void <init>()
+
+public static native int getAllocCount(
+int)
+
+public static native void getInstructionCount(
+int[])
+
+public static native int getLoadedClassCount()
+
+public static native boolean isDebuggerConnected()
+
+public static native long lastDebuggerActivity()
+
+public static native void printLoadedClasses(
+int)
+
+static native void printThis(
+java.lang.Object
+int
+int)
+
+public static native void resetAllocCount(
+int)
+
+public static native void resetInstructionCount()
+
+public static native int setAllocationLimit(
+int)
+
+public static native int setGlobalAllocationLimit(
+int)
+
+public static native void startAllocCounting()
+
+private static void startClassPrep()
+
+public static native void startEmulatorTracing()
+
+private static void startGC()
+
+public static native void startInstructionCounting()
+
+public static void startMethodTracing()
+
+public static native void startMethodTracing(
+java.lang.String
+int
+int)
+
+public static native void stopAllocCounting()
+
+public static native void stopEmulatorTracing()
+
+public static native void stopInstructionCounting()
+
+public static native void stopMethodTracing()
+
+public static native long threadCpuTimeNanos()
+
+________________CLASS________________
+
+
+public final class dalvik.system.VMRuntime extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final dalvik.system.VMRuntime THE_ONE
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static dalvik.system.VMRuntime getRuntime()
+
+private native long nativeMinimumHeapSize(
+long
+boolean)
+
+private native void nativeSetTargetHeapUtilization(
+float)
+
+public native void gcSoftReferences()
+
+public native long getExternalBytesAllocated()
+
+public long getMinimumHeapSize()
+
+public native float getTargetHeapUtilization()
+
+public native void runFinalizationSync()
+
+public long setMinimumHeapSize(
+long)
+
+public float setTargetHeapUtilization(
+float)
+
+public native boolean trackExternalAllocation(
+long)
+
+public native void trackExternalFree(
+long)
+
+________________CLASS________________
+
+
+public final class dalvik.system.VMStack extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static native java.lang.ClassLoader getCallingClassLoader()
+
+public static native java.lang.ClassLoader getCallingClassLoader2()
+@dalvik.annotation.Signature (value =(IZ)[Ljava/lang/Class<*>; )
+public static native java.lang.Class[] getClasses(
+int
+boolean)
+
+public static native java.lang.StackTraceElement[] getThreadStackTrace(
+java.lang.Thread)
+
+________________CLASS________________
+
+
+public class dalvik.system.Zygote extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static native int fork()
+
+public static native int forkAndSpecialize(
+int
+int
+int[]
+boolean
+int[][])
+
+public static native int forkSystemServer(
+int
+int
+int[]
+boolean
+int[][])
+
+________________CLASS________________
+
+
+public final class java.awt.font.NumericShaper extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+public static final int ALL_RANGES
+
+public static final int ARABIC
+
+public static final int BENGALI
+
+public static final int DEVANAGARI
+
+public static final int EASTERN_ARABIC
+
+public static final int ETHIOPIC
+
+public static final int EUROPEAN
+
+public static final int GUJARATI
+
+public static final int GURMUKHI
+
+private static final int INDEX_ARABIC
+
+private static final int INDEX_BENGALI
+
+private static final int INDEX_DEVANAGARI
+
+private static final int INDEX_EASTERN_ARABIC
+
+private static final int INDEX_ETHIOPIC
+
+private static final int INDEX_EUROPEAN
+
+private static final int INDEX_GUJARATI
+
+private static final int INDEX_GURMUKHI
+
+private static final int INDEX_KANNADA
+
+private static final int INDEX_KHMER
+
+private static final int INDEX_LAO
+
+private static final int INDEX_MALAYALAM
+
+private static final int INDEX_MONGOLIAN
+
+private static final int INDEX_MYANMAR
+
+private static final int INDEX_ORIYA
+
+private static final int INDEX_TAMIL
+
+private static final int INDEX_TELUGU
+
+private static final int INDEX_THAI
+
+private static final int INDEX_TIBETAN
+
+public static final int KANNADA
+
+public static final int KHMER
+
+public static final int LAO
+
+public static final int MALAYALAM
+
+private static final int MAX_INDEX
+
+public static final int MONGOLIAN
+
+public static final int MYANMAR
+
+public static final int ORIYA
+
+private static final int[] STRONG_TEXT_FLAGS
+
+public static final int TAMIL
+
+public static final int TELUGU
+
+public static final int THAI
+
+public static final int TIBETAN
+
+private static final long serialVersionUID
+
+private final java.lang.String[] contexts
+
+private final int[] digitsLowRanges
+
+private boolean fContextual
+
+private int fDefaultContextIndex
+
+private int fRanges
+
+private int fSingleRangeIndex
+
+private int key
+
+private int mask
+
+private final int[] scriptsRanges
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+int
+int
+boolean)
+
+private void contextualShape(
+char[]
+int
+int
+int)
+
+private int getCharIndex(
+char)
+
+public static java.awt.font.NumericShaper getContextualShaper(
+int)
+
+public static java.awt.font.NumericShaper getContextualShaper(
+int
+int)
+
+private int getIndexFromRange(
+int)
+
+private int getRangeFromIndex(
+int)
+
+public static java.awt.font.NumericShaper getShaper(
+int)
+
+private boolean isCharStrong(
+int)
+
+private void nonContextualShape(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+private static void throwRange(
+int)
+
+private void updateKeyMaskFields()
+
+private void updateRangesFields()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public int getRanges()
+
+public int hashCode()
+
+public boolean isContextual()
+
+public void shape(
+char[]
+int
+int)
+
+public void shape(
+char[]
+int
+int
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/text/AttributedCharacterIterator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Attribute )
+public class java.text.AttributedCharacterIterator$Attribute extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+public static final java.text.AttributedCharacterIterator$Attribute INPUT_METHOD_SEGMENT
+
+public static final java.text.AttributedCharacterIterator$Attribute LANGUAGE
+
+public static final java.text.AttributedCharacterIterator$Attribute READING
+
+private static final long serialVersionUID
+
+private java.lang.String name
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.lang.String)
+
+public final boolean equals(
+java.lang.Object)
+
+protected java.lang.String getName()
+
+public final int hashCode()
+@dalvik.annotation.Throws (value =Ljava/io/InvalidObjectException; )
+protected java.lang.Object readResolve()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public final class java.awt.font.TextAttribute extends java.text.AttributedCharacterIterator$Attribute
+
+----------------FIELDS----------------
+
+public static final java.awt.font.TextAttribute BACKGROUND
+
+public static final java.awt.font.TextAttribute BIDI_EMBEDDING
+
+public static final java.awt.font.TextAttribute CHAR_REPLACEMENT
+
+public static final java.awt.font.TextAttribute FAMILY
+
+public static final java.awt.font.TextAttribute FONT
+
+public static final java.awt.font.TextAttribute FOREGROUND
+
+public static final java.awt.font.TextAttribute INPUT_METHOD_HIGHLIGHT
+
+public static final java.awt.font.TextAttribute INPUT_METHOD_UNDERLINE
+
+public static final java.awt.font.TextAttribute JUSTIFICATION
+
+public static final java.lang.Float JUSTIFICATION_FULL
+
+public static final java.lang.Float JUSTIFICATION_NONE
+
+public static final java.awt.font.TextAttribute NUMERIC_SHAPING
+
+public static final java.awt.font.TextAttribute POSTURE
+
+public static final java.lang.Float POSTURE_OBLIQUE
+
+public static final java.lang.Float POSTURE_REGULAR
+
+public static final java.awt.font.TextAttribute RUN_DIRECTION
+
+public static final java.lang.Boolean RUN_DIRECTION_LTR
+
+public static final java.lang.Boolean RUN_DIRECTION_RTL
+
+public static final java.awt.font.TextAttribute SIZE
+
+public static final java.awt.font.TextAttribute STRIKETHROUGH
+
+public static final java.lang.Boolean STRIKETHROUGH_ON
+
+public static final java.awt.font.TextAttribute SUPERSCRIPT
+
+public static final java.lang.Integer SUPERSCRIPT_SUB
+
+public static final java.lang.Integer SUPERSCRIPT_SUPER
+
+public static final java.awt.font.TextAttribute SWAP_COLORS
+
+public static final java.lang.Boolean SWAP_COLORS_ON
+
+public static final java.awt.font.TextAttribute TRANSFORM
+
+public static final java.awt.font.TextAttribute UNDERLINE
+
+public static final java.lang.Integer UNDERLINE_LOW_DASHED
+
+public static final java.lang.Integer UNDERLINE_LOW_DOTTED
+
+public static final java.lang.Integer UNDERLINE_LOW_GRAY
+
+public static final java.lang.Integer UNDERLINE_LOW_ONE_PIXEL
+
+public static final java.lang.Integer UNDERLINE_LOW_TWO_PIXEL
+
+public static final java.lang.Integer UNDERLINE_ON
+
+public static final java.awt.font.TextAttribute WEIGHT
+
+public static final java.lang.Float WEIGHT_BOLD
+
+public static final java.lang.Float WEIGHT_DEMIBOLD
+
+public static final java.lang.Float WEIGHT_DEMILIGHT
+
+public static final java.lang.Float WEIGHT_EXTRABOLD
+
+public static final java.lang.Float WEIGHT_EXTRA_LIGHT
+
+public static final java.lang.Float WEIGHT_HEAVY
+
+public static final java.lang.Float WEIGHT_LIGHT
+
+public static final java.lang.Float WEIGHT_MEDIUM
+
+public static final java.lang.Float WEIGHT_REGULAR
+
+public static final java.lang.Float WEIGHT_SEMIBOLD
+
+public static final java.lang.Float WEIGHT_ULTRABOLD
+
+public static final java.awt.font.TextAttribute WIDTH
+
+public static final java.lang.Float WIDTH_CONDENSED
+
+public static final java.lang.Float WIDTH_EXTENDED
+
+public static final java.lang.Float WIDTH_REGULAR
+
+public static final java.lang.Float WIDTH_SEMI_CONDENSED
+
+public static final java.lang.Float WIDTH_SEMI_EXTENDED
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/awt/font/TextAttribute;>; )
+private static final java.util.Map attrMap
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/InvalidObjectException; )
+protected java.lang.Object readResolve()
+
+________________CLASS________________
+
+
+public class java.io.FilterInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+protected volatile java.io.InputStream in
+----------------METHODS----------------
+
+protected void <init>(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public void mark(
+int)
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class java.io.BufferedInputStream extends java.io.FilterInputStream
+
+----------------FIELDS----------------
+
+protected volatile byte[] buf
+
+private boolean closed
+
+protected int count
+
+protected int marklimit
+
+protected int markpos
+
+protected int pos
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream)
+
+public void <init>(
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int fillbuf()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public void mark(
+int)
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class java.io.FilterOutputStream extends java.io.OutputStream
+
+----------------FIELDS----------------
+
+protected java.io.OutputStream out
+----------------METHODS----------------
+
+public void <init>(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.io.BufferedOutputStream extends java.io.FilterOutputStream
+
+----------------FIELDS----------------
+
+protected byte[] buf
+
+protected int count
+----------------METHODS----------------
+
+public void <init>(
+java.io.OutputStream)
+
+public void <init>(
+java.io.OutputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public abstract interface class java.lang.Readable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int read(
+java.nio.CharBuffer)
+
+________________CLASS________________
+
+
+public abstract class java.io.Reader extends java.lang.Object implements java.lang.Readable, java.io.Closeable
+
+----------------FIELDS----------------
+
+protected java.lang.Object lock
+----------------METHODS----------------
+
+protected void <init>()
+
+protected void <init>(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void mark(
+int)
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+java.nio.CharBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+char[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int read(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean ready()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class java.io.BufferedReader extends java.io.Reader
+
+----------------FIELDS----------------
+
+private char[] buf
+
+private int count
+
+private java.io.Reader in
+
+private int marklimit
+
+private int markpos
+
+private int pos
+----------------METHODS----------------
+
+public void <init>(
+java.io.Reader)
+
+public void <init>(
+java.io.Reader
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int fillbuf()
+
+private boolean isClosed()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void mark(
+int)
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.String readLine()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean ready()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public abstract interface class java.lang.Appendable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.lang.Appendable append(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.lang.Appendable append(
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.lang.Appendable append(
+java.lang.CharSequence
+int
+int)
+
+________________CLASS________________
+
+
+public abstract class java.io.Writer extends java.lang.Object implements java.lang.Appendable, java.io.Closeable, java.io.Flushable
+
+----------------FIELDS----------------
+
+static final java.lang.String TOKEN_NULL
+
+protected java.lang.Object lock
+----------------METHODS----------------
+
+protected void <init>()
+
+protected void <init>(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.Writer append(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.Writer append(
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.Writer append(
+java.lang.CharSequence
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+char[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void write(
+char[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.io.BufferedWriter extends java.io.Writer
+
+----------------FIELDS----------------
+
+private char[] buf
+
+private final java.lang.String lineSeparator
+
+private java.io.Writer out
+
+private int pos
+----------------METHODS----------------
+
+public void <init>(
+java.io.Writer)
+
+public void <init>(
+java.io.Writer
+int)
+
+private boolean isClosed()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void newLine()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+char[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.io.ByteArrayInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+protected byte[] buf
+
+protected int count
+
+protected int mark
+
+protected int pos
+----------------METHODS----------------
+
+public void <init>(
+byte[])
+
+public void <init>(
+byte[]
+int
+int)
+
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public void mark(
+int)
+
+public boolean markSupported()
+
+public int read()
+
+public int read(
+byte[]
+int
+int)
+
+public void reset()
+
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class java.io.ByteArrayOutputStream extends java.io.OutputStream
+
+----------------FIELDS----------------
+
+protected byte[] buf
+
+protected int count
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+private void expand(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public void reset()
+
+public int size()
+
+public byte[] toByteArray()
+
+public java.lang.String toString()
+@java.lang.Deprecated
+public java.lang.String toString(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public java.lang.String toString(
+java.lang.String)
+
+public void write(
+int)
+
+public void write(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeTo(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public class java.io.CharArrayReader extends java.io.Reader
+
+----------------FIELDS----------------
+
+protected char[] buf
+
+protected int count
+
+protected int markedPos
+
+protected int pos
+----------------METHODS----------------
+
+public void <init>(
+char[])
+
+public void <init>(
+char[]
+int
+int)
+
+private boolean isClosed()
+
+private boolean isOpen()
+
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void mark(
+int)
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean ready()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class java.io.CharArrayWriter extends java.io.Writer
+
+----------------FIELDS----------------
+
+protected char[] buf
+
+protected int count
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+private void expand(
+int)
+
+public java.io.CharArrayWriter append(
+char)
+
+public java.io.CharArrayWriter append(
+java.lang.CharSequence)
+
+public java.io.CharArrayWriter append(
+java.lang.CharSequence
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.io.Writer append(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.io.Writer append(
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.io.Writer append(
+java.lang.CharSequence
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence
+int
+int)
+
+public void close()
+
+public void flush()
+
+public void reset()
+
+public int size()
+
+public char[] toCharArray()
+
+public java.lang.String toString()
+
+public void write(
+int)
+
+public void write(
+java.lang.String
+int
+int)
+
+public void write(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeTo(
+java.io.Writer)
+
+________________CLASS________________
+
+
+public class java.io.IOException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.io.CharConversionException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class java.io.DataInput extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract boolean readBoolean()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract byte readByte()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract char readChar()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract double readDouble()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract float readFloat()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void readFully(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void readFully(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int readInt()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.lang.String readLine()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long readLong()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract short readShort()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.lang.String readUTF()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int readUnsignedByte()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int readUnsignedShort()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int skipBytes(
+int)
+
+________________CLASS________________
+
+
+public class java.io.DataInputStream extends java.io.FilterInputStream implements java.io.DataInput
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static final java.lang.String readUTF(
+java.io.DataInput)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ java.lang.String decodeUTF(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final boolean readBoolean()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final byte readByte()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final char readChar()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final double readDouble()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final float readFloat()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void readFully(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void readFully(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final int readInt()
+@java.lang.Deprecated
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.lang.String readLine()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final long readLong()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final short readShort()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.lang.String readUTF()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final int readUnsignedByte()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final int readUnsignedShort()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final int skipBytes(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class java.io.DataOutput extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void write(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void writeBoolean(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void writeByte(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void writeBytes(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void writeChar(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void writeChars(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void writeDouble(
+double)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void writeFloat(
+float)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void writeInt(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void writeLong(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void writeShort(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void writeUTF(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.io.DataOutputStream extends java.io.FilterOutputStream implements java.io.DataOutput
+
+----------------FIELDS----------------
+
+static final int MAX_BUF_SIZE
+
+protected int written
+----------------METHODS----------------
+
+public void <init>(
+java.io.OutputStream)
+
+ long countUTFBytes(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+
+public final int size()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeBoolean(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeByte(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeBytes(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeChar(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeChars(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeDouble(
+double)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeFloat(
+float)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeInt(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeLong(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeShort(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeUTF(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void writeUTFBytes(
+java.lang.String
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/lang/Thread$UncaughtExceptionHandler;Ljava/lang/Thread$State;Ljava/lang/Thread$ParkState; )
+public class java.lang.Thread extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+public static final int MAX_PRIORITY
+
+public static final int MIN_PRIORITY
+
+public static final int NORM_PRIORITY
+
+private static int count
+
+private static java.lang.Thread$UncaughtExceptionHandler defaultUncaughtHandler
+
+private java.lang.ClassLoader contextClassLoader
+
+volatile boolean daemon
+
+volatile java.lang.ThreadGroup group
+
+ boolean hasBeenStarted
+
+private long id
+
+ java.lang.ThreadLocal$Values inheritableValues
+
+private java.lang.Runnable interruptAction
+
+ java.lang.ThreadLocal$Values localValues
+
+volatile java.lang.String name
+
+private int parkState
+
+volatile int priority
+
+volatile long stackSize
+
+ java.lang.Runnable target
+
+private java.lang.Thread$UncaughtExceptionHandler uncaughtHandler
+
+volatile java.lang.VMThread vmThread
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+java.lang.Runnable)
+
+public void <init>(
+java.lang.Runnable
+java.lang.String)
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.ThreadGroup
+java.lang.Runnable)
+
+public void <init>(
+java.lang.ThreadGroup
+java.lang.Runnable
+java.lang.String)
+
+public void <init>(
+java.lang.ThreadGroup
+java.lang.Runnable
+java.lang.String
+long)
+
+public void <init>(
+java.lang.ThreadGroup
+java.lang.String)
+
+ void <init>(
+java.lang.ThreadGroup
+java.lang.String
+int
+boolean)
+
+public static int activeCount()
+
+private void create(
+java.lang.ThreadGroup
+java.lang.Runnable
+java.lang.String
+long)
+
+public static java.lang.Thread currentThread()
+
+public static void dumpStack()
+
+public static int enumerate(
+java.lang.Thread[])
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/Thread;[Ljava/lang/StackTraceElement;>; )
+public static java.util.Map getAllStackTraces()
+
+public static java.lang.Thread$UncaughtExceptionHandler getDefaultUncaughtExceptionHandler()
+
+public static boolean holdsLock(
+java.lang.Object)
+
+public static boolean interrupted()
+
+public static void setDefaultUncaughtExceptionHandler(
+java.lang.Thread$UncaughtExceptionHandler)
+
+private void setInterruptAction(
+java.lang.Runnable)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public static void sleep(
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public static void sleep(
+long
+int)
+
+public static void yield()
+
+public final void checkAccess()
+@java.lang.Deprecated
+public int countStackFrames()
+@java.lang.Deprecated
+public void destroy()
+
+public java.lang.ClassLoader getContextClassLoader()
+
+public long getId()
+
+public final java.lang.String getName()
+
+public final int getPriority()
+
+public java.lang.StackTraceElement[] getStackTrace()
+
+public java.lang.Thread$State getState()
+
+public final java.lang.ThreadGroup getThreadGroup()
+
+public java.lang.Thread$UncaughtExceptionHandler getUncaughtExceptionHandler()
+
+public void interrupt()
+
+public final boolean isAlive()
+
+public final boolean isDaemon()
+
+public boolean isInterrupted()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public final void join()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public final void join(
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public final void join(
+long
+int)
+
+ void parkFor(
+long)
+
+ void parkUntil(
+long)
+@java.lang.Deprecated
+public final void resume()
+
+public void run()
+
+public void setContextClassLoader(
+java.lang.ClassLoader)
+
+public final void setDaemon(
+boolean)
+
+public final void setName(
+java.lang.String)
+
+public final void setPriority(
+int)
+
+public void setUncaughtExceptionHandler(
+java.lang.Thread$UncaughtExceptionHandler)
+
+public void start()
+@java.lang.Deprecated
+public final void stop()
+@java.lang.Deprecated
+public final void stop(
+java.lang.Throwable)
+@java.lang.Deprecated
+public final void suspend()
+
+public java.lang.String toString()
+
+ void unpark()
+
+________________CLASS________________
+
+
+ class java.io.DeleteOnExit extends java.lang.Thread
+
+----------------FIELDS----------------
+
+private static java.io.DeleteOnExit instance
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+private java.util.ArrayList files
+----------------METHODS----------------
+
+ void <init>()
+
+public static java.io.DeleteOnExit getInstance()
+
+public void addFile(
+java.lang.String)
+
+public void run()
+
+________________CLASS________________
+
+
+public class java.io.EOFException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/io/EmulatedFields; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =ObjectSlot )
+ class java.io.EmulatedFields$ObjectSlot extends java.lang.Object
+
+----------------FIELDS----------------
+
+ boolean defaulted
+
+ java.io.ObjectStreamField field
+
+ java.lang.Object fieldValue
+----------------METHODS----------------
+
+ void <init>()
+
+public java.io.ObjectStreamField getField()
+
+public java.lang.Object getFieldValue()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/io/EmulatedFields$ObjectSlot; )
+ class java.io.EmulatedFields extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.io.ObjectStreamField[] declaredFields
+
+private java.io.EmulatedFields$ObjectSlot[] slotsToSerialize
+----------------METHODS----------------
+
+public void <init>(
+java.io.ObjectStreamField[]
+java.io.ObjectStreamField[])
+
+private void buildSlots(
+java.io.ObjectStreamField[])
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/Class<*>;)Ljava/io/EmulatedFields$ObjectSlot; )
+private java.io.EmulatedFields$ObjectSlot findSlot(
+java.lang.String
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public boolean defaulted(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public byte get(
+java.lang.String
+byte)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public char get(
+java.lang.String
+char)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public double get(
+java.lang.String
+double)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public float get(
+java.lang.String
+float)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public int get(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public long get(
+java.lang.String
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public java.lang.Object get(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public short get(
+java.lang.String
+short)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public boolean get(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void put(
+java.lang.String
+byte)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void put(
+java.lang.String
+char)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void put(
+java.lang.String
+double)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void put(
+java.lang.String
+float)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void put(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void put(
+java.lang.String
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void put(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void put(
+java.lang.String
+short)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void put(
+java.lang.String
+boolean)
+
+public java.io.EmulatedFields$ObjectSlot[] slots()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =PutField )
+@dalvik.annotation.EnclosingClass (value =Ljava/io/ObjectOutputStream; )
+public abstract class java.io.ObjectOutputStream$PutField extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public abstract void put(
+java.lang.String
+byte)
+
+public abstract void put(
+java.lang.String
+char)
+
+public abstract void put(
+java.lang.String
+double)
+
+public abstract void put(
+java.lang.String
+float)
+
+public abstract void put(
+java.lang.String
+int)
+
+public abstract void put(
+java.lang.String
+long)
+
+public abstract void put(
+java.lang.String
+java.lang.Object)
+
+public abstract void put(
+java.lang.String
+short)
+
+public abstract void put(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@java.lang.Deprecated
+public abstract void write(
+java.io.ObjectOutput)
+
+________________CLASS________________
+
+
+ class java.io.EmulatedFieldsForDumping extends java.io.ObjectOutputStream$PutField
+
+----------------FIELDS----------------
+
+private java.io.EmulatedFields emulatedFields
+----------------METHODS----------------
+
+ void <init>(
+java.io.ObjectStreamClass)
+
+ java.io.EmulatedFields emulatedFields()
+
+public void put(
+java.lang.String
+byte)
+
+public void put(
+java.lang.String
+char)
+
+public void put(
+java.lang.String
+double)
+
+public void put(
+java.lang.String
+float)
+
+public void put(
+java.lang.String
+int)
+
+public void put(
+java.lang.String
+long)
+
+public void put(
+java.lang.String
+java.lang.Object)
+
+public void put(
+java.lang.String
+short)
+
+public void put(
+java.lang.String
+boolean)
+@java.lang.Deprecated
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+java.io.ObjectOutput)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1033 name =GetField )
+@dalvik.annotation.EnclosingClass (value =Ljava/io/ObjectInputStream; )
+public abstract class java.io.ObjectInputStream$GetField extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public abstract boolean defaulted(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public abstract byte get(
+java.lang.String
+byte)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public abstract char get(
+java.lang.String
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public abstract double get(
+java.lang.String
+double)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public abstract float get(
+java.lang.String
+float)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public abstract int get(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public abstract long get(
+java.lang.String
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public abstract java.lang.Object get(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public abstract short get(
+java.lang.String
+short)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public abstract boolean get(
+java.lang.String
+boolean)
+
+public abstract java.io.ObjectStreamClass getObjectStreamClass()
+
+________________CLASS________________
+
+
+ class java.io.EmulatedFieldsForLoading extends java.io.ObjectInputStream$GetField
+
+----------------FIELDS----------------
+
+private java.io.EmulatedFields emulatedFields
+
+private java.io.ObjectStreamClass streamClass
+----------------METHODS----------------
+
+ void <init>(
+java.io.ObjectStreamClass)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public boolean defaulted(
+java.lang.String)
+
+ java.io.EmulatedFields emulatedFields()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public byte get(
+java.lang.String
+byte)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public char get(
+java.lang.String
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public double get(
+java.lang.String
+double)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public float get(
+java.lang.String
+float)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public int get(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public long get(
+java.lang.String
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public java.lang.Object get(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public short get(
+java.lang.String
+short)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException; )
+public boolean get(
+java.lang.String
+boolean)
+
+public java.io.ObjectStreamClass getObjectStreamClass()
+
+________________CLASS________________
+
+
+public abstract interface class java.io.Externalizable extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+public abstract void readExternal(
+java.io.ObjectInput)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void writeExternal(
+java.io.ObjectOutput)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Comparable<Ljava/io/File;>; )
+public class java.io.File extends java.lang.Object implements java.io.Serializable, java.lang.Comparable
+
+----------------FIELDS----------------
+
+private static boolean caseSensitive
+
+private static int counter
+
+public static final java.lang.String pathSeparator
+
+public static final char pathSeparatorChar
+
+public static final java.lang.String separator
+
+public static final char separatorChar
+
+private static final long serialVersionUID
+
+private java.lang.String path
+
+transient byte[] properPath
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.io.File
+java.lang.String)
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public void <init>(
+java.net.URI)
+
+private java.lang.String calculatePath(
+java.lang.String
+java.lang.String)
+
+private void checkURI(
+java.net.URI)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static java.io.File createTempFile(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static java.io.File createTempFile(
+java.lang.String
+java.lang.String
+java.io.File)
+
+private native boolean deleteDirImpl(
+byte[])
+
+private native boolean deleteFileImpl(
+byte[])
+
+private native boolean existsImpl(
+byte[])
+
+private java.lang.String fixSlashes(
+java.lang.String)
+
+private static java.io.File genTempFile(
+java.lang.String
+java.lang.String
+java.io.File)
+
+private java.lang.String getAbsoluteName()
+
+private native byte[] getCanonImpl(
+byte[])
+
+private native byte[] getLinkImpl(
+byte[])
+
+private static native boolean isCaseSensitiveImpl()
+
+private native boolean isDirectoryImpl(
+byte[])
+
+private native boolean isFileImpl(
+byte[])
+
+private native boolean isHiddenImpl(
+byte[])
+
+private native boolean isReadOnlyImpl(
+byte[])
+
+private native boolean isWriteOnlyImpl(
+byte[])
+
+private native long lastModifiedImpl(
+byte[])
+
+private native long lengthImpl(
+byte[])
+
+private static synchronized native byte[][] listImpl(
+byte[])
+
+public static java.io.File[] listRoots()
+
+private native boolean mkdirImpl(
+byte[])
+
+private native int newFileImpl(
+byte[])
+
+private static native void oneTimeInitialization()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+private native boolean renameToImpl(
+byte[]
+byte[])
+
+private static native byte[][] rootsImpl()
+
+private native boolean setLastModifiedImpl(
+byte[]
+long)
+
+private native boolean setReadOnlyImpl(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public boolean canRead()
+
+public boolean canWrite()
+
+public int compareTo(
+java.io.File)
+
+public volatile int compareTo(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean createNewFile()
+
+public boolean delete()
+
+public void deleteOnExit()
+
+public boolean equals(
+java.lang.Object)
+
+public boolean exists()
+
+public java.io.File getAbsoluteFile()
+
+public java.lang.String getAbsolutePath()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.File getCanonicalFile()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.String getCanonicalPath()
+
+public java.lang.String getName()
+
+public java.lang.String getParent()
+
+public java.io.File getParentFile()
+
+public java.lang.String getPath()
+
+public int hashCode()
+
+public boolean isAbsolute()
+
+public boolean isDirectory()
+
+public boolean isFile()
+
+public boolean isHidden()
+
+public long lastModified()
+
+public long length()
+
+public java.lang.String[] list()
+
+public java.lang.String[] list(
+java.io.FilenameFilter)
+
+public java.io.File[] listFiles()
+
+public java.io.File[] listFiles(
+java.io.FileFilter)
+
+public java.io.File[] listFiles(
+java.io.FilenameFilter)
+
+public boolean mkdir()
+
+public boolean mkdirs()
+
+ byte[] properPath(
+boolean)
+
+public boolean renameTo(
+java.io.File)
+
+public boolean setLastModified(
+long)
+
+public boolean setReadOnly()
+
+public java.lang.String toString()
+
+public java.net.URI toURI()
+@dalvik.annotation.Throws (value =Ljava/net/MalformedURLException; )
+public java.net.URL toURL()
+
+________________CLASS________________
+
+
+public final class java.io.FileDescriptor extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.io.FileDescriptor err
+
+public static final java.io.FileDescriptor in
+
+public static final java.io.FileDescriptor out
+
+ int descriptor
+
+ boolean readOnly
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static native void oneTimeInitialization()
+@dalvik.annotation.Throws (value =Ljava/io/SyncFailedException; )
+private native void syncImpl()
+@dalvik.annotation.Throws (value =Ljava/io/SyncFailedException; )
+public void sync()
+
+public native boolean valid()
+
+________________CLASS________________
+
+
+public abstract interface class java.io.FileFilter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean accept(
+java.io.File)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/io/FileInputStream; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class java.io.FileInputStream$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =RepositioningLock )
+@dalvik.annotation.EnclosingClass (value =Ljava/io/FileInputStream; )
+ class java.io.FileInputStream$RepositioningLock extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+java.io.FileInputStream$1)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/io/FileInputStream$1;Ljava/io/FileInputStream$RepositioningLock; )
+public class java.io.FileInputStream extends java.io.InputStream implements java.io.Closeable
+
+----------------FIELDS----------------
+
+private java.nio.channels.FileChannel channel
+
+ java.io.FileDescriptor fd
+
+private org.apache.harmony.luni.platform.IFileSystem fileSystem
+
+ boolean innerFD
+
+private java.lang.Object repositioningLock
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.io.File)
+
+public void <init>(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void openCheck()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void finalize()
+
+public java.nio.channels.FileChannel getChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.io.FileDescriptor getFD()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class java.io.FileNotFoundException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.io.FileOutputStream extends java.io.OutputStream implements java.io.Closeable
+
+----------------FIELDS----------------
+
+private java.nio.channels.FileChannel channel
+
+ java.io.FileDescriptor fd
+
+private org.apache.harmony.luni.platform.IFileSystem fileSystem
+
+ boolean innerFD
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.io.File)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.io.File
+boolean)
+
+public void <init>(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void openCheck()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void finalize()
+
+public java.nio.channels.FileChannel getChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.io.FileDescriptor getFD()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.io.FilePermission$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.io.FilePermission this$0
+
+final java.lang.String val$path
+----------------METHODS----------------
+
+ void <init>(
+java.io.FilePermission
+java.lang.String)
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.Guard extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+public abstract void checkGuard(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract class java.security.Permission extends java.lang.Object implements java.security.Guard, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final java.lang.String name
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+public void checkGuard(
+java.lang.Object)
+
+public abstract boolean equals(
+java.lang.Object)
+
+public abstract java.lang.String getActions()
+
+public final java.lang.String getName()
+
+public abstract int hashCode()
+
+public abstract boolean implies(
+java.security.Permission)
+
+public java.security.PermissionCollection newPermissionCollection()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public final class java.io.FilePermission extends java.security.Permission implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final java.lang.String[] actionList
+
+private static final long serialVersionUID
+
+private java.lang.String actions
+
+private transient boolean allDir
+
+private transient boolean allSubdir
+
+private transient java.lang.String canonPath
+
+private transient boolean includeAll
+
+transient int mask
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+private int getMask(
+java.lang.String)
+
+private void init(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+private java.lang.String toCanonicalActionString(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getActions()
+
+public int hashCode()
+
+public boolean implies(
+java.security.Permission)
+
+ int impliesMask(
+java.security.Permission)
+
+public java.security.PermissionCollection newPermissionCollection()
+
+________________CLASS________________
+
+
+public abstract class java.security.PermissionCollection extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private boolean readOnly
+----------------METHODS----------------
+
+public void <init>()
+
+public abstract void add(
+java.security.Permission)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/security/Permission;>; )
+public abstract java.util.Enumeration elements()
+
+public abstract boolean implies(
+java.security.Permission)
+
+public boolean isReadOnly()
+
+public void setReadOnly()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+final class java.io.FilePermissionCollection extends java.security.PermissionCollection implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/Vector<Ljava/security/Permission;>; )
+ java.util.Vector permissions
+----------------METHODS----------------
+
+public void <init>()
+
+public void add(
+java.security.Permission)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/security/Permission;>; )
+public java.util.Enumeration elements()
+
+public boolean implies(
+java.security.Permission)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/io/InputStreamReader$HistoricalNamesUtil; )
+public class java.io.InputStreamReader extends java.io.Reader
+
+----------------FIELDS----------------
+
+private static final int BUFFER_SIZE
+
+ java.nio.ByteBuffer bytes
+
+ java.nio.charset.CharsetDecoder decoder
+
+private boolean endOfInput
+
+private java.io.InputStream in
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+java.io.InputStream
+java.lang.String)
+
+public void <init>(
+java.io.InputStream
+java.nio.charset.Charset)
+
+public void <init>(
+java.io.InputStream
+java.nio.charset.CharsetDecoder)
+
+private boolean isOpen()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public java.lang.String getEncoding()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean ready()
+
+________________CLASS________________
+
+
+public class java.io.FileReader extends java.io.InputStreamReader
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.io.File)
+
+public void <init>(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.io.OutputStreamWriter extends java.io.Writer
+
+----------------FIELDS----------------
+
+private java.nio.ByteBuffer bytes
+
+private java.nio.charset.CharsetEncoder encoder
+
+private java.io.OutputStream out
+----------------METHODS----------------
+
+public void <init>(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+java.io.OutputStream
+java.lang.String)
+
+public void <init>(
+java.io.OutputStream
+java.nio.charset.Charset)
+
+public void <init>(
+java.io.OutputStream
+java.nio.charset.CharsetEncoder)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void checkStatus()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void convert(
+java.nio.CharBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+
+public java.lang.String getEncoding()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+char[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.io.FileWriter extends java.io.OutputStreamWriter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.File)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.File
+boolean)
+
+public void <init>(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.lang.String
+boolean)
+
+________________CLASS________________
+
+
+public abstract class java.io.FilterReader extends java.io.Reader
+
+----------------FIELDS----------------
+
+protected java.io.Reader in
+----------------METHODS----------------
+
+protected void <init>(
+java.io.Reader)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void mark(
+int)
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean ready()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public abstract class java.io.FilterWriter extends java.io.Writer
+
+----------------FIELDS----------------
+
+protected java.io.Writer out
+----------------METHODS----------------
+
+protected void <init>(
+java.io.Writer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+char[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =HistoricalNamesUtil )
+@dalvik.annotation.EnclosingClass (value =Ljava/io/InputStreamReader; )
+ class java.io.InputStreamReader$HistoricalNamesUtil extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>; )
+private static java.util.HashMap historicalNames
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+public static java.lang.String getHistoricalName(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.io.InterruptedIOException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+public int bytesTransferred
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class java.io.ObjectStreamException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+protected void <init>()
+
+protected void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.io.InvalidClassException extends java.io.ObjectStreamException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+public java.lang.String classname
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getMessage()
+
+________________CLASS________________
+
+
+public class java.io.InvalidObjectException extends java.io.ObjectStreamException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@java.lang.Deprecated
+public class java.io.LineNumberInputStream extends java.io.FilterInputStream
+
+----------------FIELDS----------------
+
+private int lastChar
+
+private int lineNumber
+
+private int markedLastChar
+
+private int markedLineNumber
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+
+public int getLineNumber()
+
+public void mark(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+
+public void setLineNumber(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class java.io.LineNumberReader extends java.io.BufferedReader
+
+----------------FIELDS----------------
+
+private boolean lastWasCR
+
+private int lineNumber
+
+private boolean markedLastWasCR
+
+private int markedLineNumber
+----------------METHODS----------------
+
+public void <init>(
+java.io.Reader)
+
+public void <init>(
+java.io.Reader
+int)
+
+public int getLineNumber()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void mark(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.String readLine()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+
+public void setLineNumber(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class java.io.NotActiveException extends java.io.ObjectStreamException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.io.NotSerializableException extends java.io.ObjectStreamException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class java.io.ObjectInput extends java.lang.Object implements java.io.DataInput
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException;Ljava/io/IOException; )
+public abstract java.lang.Object readObject()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long skip(
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Boolean;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.io.ObjectInputStream$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.io.ObjectInputStream this$0
+
+final java.lang.Class val$implementationClass
+
+final java.lang.Class val$thisClass
+----------------METHODS----------------
+
+ void <init>(
+java.io.ObjectInputStream
+java.lang.Class
+java.lang.Class)
+
+public java.lang.Boolean run()
+
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =InputValidationDesc )
+@dalvik.annotation.EnclosingClass (value =Ljava/io/ObjectInputStream; )
+ class java.io.ObjectInputStream$InputValidationDesc extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int priority
+
+ java.io.ObjectInputValidation validator
+----------------METHODS----------------
+
+ void <init>()
+
+________________CLASS________________
+
+
+public abstract interface class java.io.ObjectStreamConstants extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int PROTOCOL_VERSION_1
+
+public static final int PROTOCOL_VERSION_2
+
+public static final byte SC_BLOCK_DATA
+
+public static final byte SC_ENUM
+
+public static final byte SC_EXTERNALIZABLE
+
+public static final byte SC_SERIALIZABLE
+
+public static final byte SC_WRITE_METHOD
+
+public static final short STREAM_MAGIC
+
+public static final short STREAM_VERSION
+
+public static final java.io.SerializablePermission SUBCLASS_IMPLEMENTATION_PERMISSION
+
+public static final java.io.SerializablePermission SUBSTITUTION_PERMISSION
+
+public static final byte TC_ARRAY
+
+public static final byte TC_BASE
+
+public static final byte TC_BLOCKDATA
+
+public static final byte TC_BLOCKDATALONG
+
+public static final byte TC_CLASS
+
+public static final byte TC_CLASSDESC
+
+public static final byte TC_ENDBLOCKDATA
+
+public static final byte TC_ENUM
+
+public static final byte TC_EXCEPTION
+
+public static final byte TC_LONGSTRING
+
+public static final byte TC_MAX
+
+public static final byte TC_NULL
+
+public static final byte TC_OBJECT
+
+public static final byte TC_PROXYCLASSDESC
+
+public static final byte TC_REFERENCE
+
+public static final byte TC_RESET
+
+public static final byte TC_STRING
+
+public static final int baseWireHandle
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/io/ObjectInputStream$GetField;Ljava/io/ObjectInputStream$InputValidationDesc; )
+public class java.io.ObjectInputStream extends java.io.InputStream implements java.io.ObjectInput, java.io.ObjectStreamConstants
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/Class<*>;>; )
+private static final java.util.Hashtable PRIMITIVE_CLASSES
+
+private static final java.lang.Object UNSHARED_OBJ
+
+private static final java.lang.ClassLoader bootstrapLoader
+
+private static java.io.InputStream emptyStream
+
+private static final java.lang.ClassLoader systemLoader
+
+private java.lang.ClassLoader callerClassLoader
+
+private java.io.ObjectStreamClass currentClass
+
+private int currentHandle
+
+private java.lang.Object currentObject
+
+private java.lang.Integer descriptorHandle
+
+private boolean enableResolve
+
+private boolean hasPushbackTC
+
+private java.io.DataInputStream input
+
+private boolean mustResolve
+
+private int nestedLevels
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable<Ljava/lang/Integer;Ljava/lang/Object;>; )
+private java.util.Hashtable objectsRead
+
+private java.io.InputStream primitiveData
+
+private java.io.DataInputStream primitiveTypes
+
+private byte pushbackTC
+@dalvik.annotation.Signature (value =Ljava/util/IdentityHashMap<Ljava/lang/Class<*>;Ljava/lang/Object;>; )
+private java.util.IdentityHashMap readResolveCache
+
+private boolean subclassOverridingImplementation
+
+private java.io.ObjectInputStream$InputValidationDesc[] validations
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/SecurityException; )
+protected void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/StreamCorruptedException;Ljava/io/IOException; )
+public void <init>(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void checkReadPrimitiveTypes()
+@dalvik.annotation.Throws (value =Ljava/io/StreamCorruptedException; )
+private static void checkedSetSuperClassDesc(
+java.io.ObjectStreamClass
+java.io.ObjectStreamClass)
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException;Ljava/io/IOException; )
+private void discardData()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Ljava/util/ArrayList<Ljava/io/ObjectStreamClass;>;I)I )
+private int findStreamSuperclass(
+java.lang.Class
+java.util.ArrayList
+int)
+
+private static java.lang.String getBaseName(
+java.lang.String)
+
+private static java.lang.ClassLoader getClosestUserClassLoader()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Z )
+private boolean inSamePackage(
+java.lang.Class
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Ljava/lang/Object; )
+private static native java.lang.Object newInstance(
+java.lang.Class
+java.lang.Class)
+
+private int nextHandle()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private byte nextTC()
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchFieldError; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V )
+private static native void objSetField(
+java.lang.Object
+java.lang.Class
+java.lang.String
+java.lang.String
+java.lang.Object)
+
+private void pushbackTC()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private byte[] readBlockData()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private byte[] readBlockDataLong()
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException;Ljava/io/IOException; )
+private java.io.ObjectStreamClass readClassDesc()
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException;Ljava/io/IOException; )
+private java.lang.Object readContent(
+byte)
+@dalvik.annotation.Throws (value =Ljava/io/InvalidObjectException;Ljava/io/IOException; )
+private java.lang.Object readCyclicReference()
+@dalvik.annotation.Throws (value =Ljava/io/OptionalDataException;Ljava/lang/ClassNotFoundException;Ljava/io/IOException; )
+private java.lang.Object readEnum(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private java.io.ObjectStreamClass readEnumDesc()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private java.io.ObjectStreamClass readEnumDescInternal()
+@dalvik.annotation.Throws (value =Ljava/io/WriteAbortedException;Ljava/io/OptionalDataException;Ljava/lang/ClassNotFoundException;Ljava/io/IOException; )
+private java.lang.Exception readException()
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException;Ljava/io/IOException; )
+private void readFieldDescriptors(
+java.io.ObjectStreamClass)
+@dalvik.annotation.Throws (value =Ljava/io/OptionalDataException;Ljava/io/InvalidClassException;Ljava/io/IOException; )
+private void readFieldValues(
+java.io.EmulatedFieldsForLoading)
+@dalvik.annotation.Throws (value =Ljava/io/OptionalDataException;Ljava/lang/ClassNotFoundException;Ljava/io/IOException; )
+private void readFieldValues(
+java.lang.Object
+java.io.ObjectStreamClass)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException;Ljava/io/NotActiveException; )
+private void readHierarchy(
+java.lang.Object
+java.io.ObjectStreamClass)
+@dalvik.annotation.Throws (value =Ljava/io/OptionalDataException;Ljava/lang/ClassNotFoundException;Ljava/io/IOException; )
+private java.lang.Object readNewArray(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException;Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Z)Ljava/lang/Class<*>; )
+private java.lang.Class readNewClass(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException;Ljava/io/IOException; )
+private java.io.ObjectStreamClass readNewClassDesc(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.lang.Integer readNewHandle()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.lang.Object readNewLongString(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/OptionalDataException;Ljava/lang/ClassNotFoundException;Ljava/io/IOException; )
+private java.lang.Object readNewObject(
+boolean)
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<*>; )
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException;Ljava/io/IOException; )
+private java.lang.Class readNewProxyClassDesc()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.lang.Object readNewString(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException;Ljava/io/IOException; )
+private java.lang.Object readNonPrimitiveContent(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/OptionalDataException;Ljava/lang/ClassNotFoundException;Ljava/io/IOException; )
+private java.lang.Object readObject(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException;Ljava/io/NotActiveException; )
+private void readObjectForClass(
+java.lang.Object
+java.io.ObjectStreamClass)
+@dalvik.annotation.Throws (value =Ljava/io/ObjectStreamException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;)V )
+private void readObjectNoData(
+java.lang.Object
+java.lang.Class)
+
+private void registerObjectRead(
+java.lang.Object
+java.lang.Integer
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/InvalidObjectException; )
+private java.lang.Object registeredObjectRead(
+java.lang.Integer)
+
+private void resetSeenObjects()
+
+private void resetState()
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchFieldError; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;B)V )
+private static native void setField(
+java.lang.Object
+java.lang.Class
+java.lang.String
+byte)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;C)V )
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchFieldError; )
+private static native void setField(
+java.lang.Object
+java.lang.Class
+java.lang.String
+char)
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchFieldError; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;D)V )
+private static native void setField(
+java.lang.Object
+java.lang.Class
+java.lang.String
+double)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;F)V )
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchFieldError; )
+private static native void setField(
+java.lang.Object
+java.lang.Class
+java.lang.String
+float)
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchFieldError; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;I)V )
+private static native void setField(
+java.lang.Object
+java.lang.Class
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchFieldError; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;J)V )
+private static native void setField(
+java.lang.Object
+java.lang.Class
+java.lang.String
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchFieldError; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;S)V )
+private static native void setField(
+java.lang.Object
+java.lang.Class
+java.lang.String
+short)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;Z)V )
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchFieldError; )
+private static native void setField(
+java.lang.Object
+java.lang.Class
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/InvalidClassException; )
+private void verifyBaseName(
+java.io.ObjectStreamClass)
+@dalvik.annotation.Throws (value =Ljava/io/InvalidClassException; )
+private void verifySUID(
+java.io.ObjectStreamClass)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException;Ljava/io/NotActiveException; )
+public void defaultReadObject()
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+protected boolean enableResolveObject(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean readBoolean()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public byte readByte()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public char readChar()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+protected java.io.ObjectStreamClass readClassDescriptor()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public double readDouble()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException;Ljava/io/NotActiveException; )
+public java.io.ObjectInputStream$GetField readFields()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public float readFloat()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readFully(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readFully(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int readInt()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@java.lang.Deprecated
+public java.lang.String readLine()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long readLong()
+@dalvik.annotation.Throws (value =Ljava/io/OptionalDataException;Ljava/lang/ClassNotFoundException;Ljava/io/IOException; )
+public final java.lang.Object readObject()
+@dalvik.annotation.Throws (value =Ljava/io/OptionalDataException;Ljava/lang/ClassNotFoundException;Ljava/io/IOException; )
+protected java.lang.Object readObjectOverride()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public short readShort()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/io/StreamCorruptedException; )
+protected void readStreamHeader()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.String readUTF()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+public java.lang.Object readUnshared()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int readUnsignedByte()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int readUnsignedShort()
+@dalvik.annotation.Throws (value =Ljava/io/NotActiveException;Ljava/io/InvalidObjectException; )
+public void registerValidation(
+java.io.ObjectInputValidation
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+@dalvik.annotation.Signature (value =(Ljava/io/ObjectStreamClass;)Ljava/lang/Class<*>; )
+protected java.lang.Class resolveClass(
+java.io.ObjectStreamClass)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.lang.Object resolveObject(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+@dalvik.annotation.Signature (value =([Ljava/lang/String;)Ljava/lang/Class<*>; )
+protected java.lang.Class resolveProxyClass(
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int skipBytes(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class java.io.ObjectInputValidation extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/InvalidObjectException; )
+public abstract void validateObject()
+
+________________CLASS________________
+
+
+public abstract interface class java.io.ObjectOutput extends java.lang.Object implements java.io.DataOutput
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void write(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void writeObject(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/io/ObjectOutputStream$PutField; )
+public class java.io.ObjectOutputStream extends java.io.OutputStream implements java.io.ObjectOutput, java.io.ObjectStreamConstants
+
+----------------FIELDS----------------
+
+private java.io.ObjectStreamClass currentClass
+
+private int currentHandle
+
+private java.lang.Object currentObject
+
+private java.io.EmulatedFieldsForDumping currentPutField
+
+private boolean enableReplace
+
+private java.io.StreamCorruptedException nestedException
+
+private int nestedLevels
+@dalvik.annotation.Signature (value =Ljava/util/IdentityHashMap<Ljava/lang/Object;Ljava/lang/Integer;>; )
+private java.util.IdentityHashMap objectsWritten
+
+private java.io.DataOutputStream output
+
+private java.io.DataOutputStream primitiveTypes
+
+private java.io.ByteArrayOutputStream primitiveTypesBuffer
+
+private int protocolVersion
+
+private boolean subclassOverridingImplementation
+@dalvik.annotation.Signature (value =Ljava/util/IdentityHashMap<Ljava/lang/Class<*>;Ljava/lang/Object;>; )
+private java.util.IdentityHashMap writeReplaceCache
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/SecurityException; )
+protected void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.OutputStream)
+
+private void checkWritePrimitiveTypes()
+
+private void computePutField()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.lang.Integer dumpCycle(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;)Z )
+private static native boolean getFieldBool(
+java.lang.Object
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;)B )
+private static native byte getFieldByte(
+java.lang.Object
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;)C )
+private static native char getFieldChar(
+java.lang.Object
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;)D )
+private static native double getFieldDouble(
+java.lang.Object
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;)F )
+private static native float getFieldFloat(
+java.lang.Object
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;)I )
+private static native int getFieldInt(
+java.lang.Object
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;)J )
+private static native long getFieldLong(
+java.lang.Object
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object; )
+private static native java.lang.Object getFieldObj(
+java.lang.Object
+java.lang.Class
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/String;)S )
+private static native short getFieldShort(
+java.lang.Object
+java.lang.Class
+java.lang.String)
+
+private int nextHandle()
+
+private java.lang.Integer registerObjectWritten(
+java.lang.Object)
+
+private void registerObjectWritten(
+java.lang.Object
+java.lang.Integer)
+
+private java.lang.Integer registeredObjectHandleFor(
+java.lang.Object)
+
+private void removeUnsharedReference(
+java.lang.Object
+java.lang.Integer)
+
+private void resetSeenObjects()
+
+private void resetState()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.lang.Integer writeClassDesc(
+java.io.ObjectStreamClass
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/lang/Integer; )
+private java.lang.Integer writeClassDescForClass(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeCyclicReference(
+java.lang.Integer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Z)Ljava/io/ObjectStreamClass; )
+private java.io.ObjectStreamClass writeEnumDesc(
+java.lang.Class
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeFieldDescriptors(
+java.io.ObjectStreamClass
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeFieldValues(
+java.io.EmulatedFieldsForDumping)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeFieldValues(
+java.lang.Object
+java.io.ObjectStreamClass)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/io/NotActiveException; )
+private void writeHierarchy(
+java.lang.Object
+java.io.ObjectStreamClass)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;Z)Ljava/lang/Integer; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.lang.Integer writeNewArray(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Z)Ljava/lang/Integer; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.lang.Integer writeNewClass(
+java.lang.Class
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeNewClassDesc(
+java.io.ObjectStreamClass)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Z)Ljava/lang/Integer; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.lang.Integer writeNewEnum(
+java.lang.Object
+java.lang.Class
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeNewException(
+java.lang.Exception)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Z)Ljava/lang/Integer; )
+private java.lang.Integer writeNewObject(
+java.lang.Object
+java.lang.Class
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.lang.Integer writeNewString(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeNull()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.lang.Object
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.lang.Integer writeObjectInternal(
+java.lang.Object
+boolean
+boolean
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)V )
+protected void annotateClass(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)V )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void annotateProxyClass(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void defaultWriteObject()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void drain()
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+protected boolean enableReplaceObject(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.ObjectOutputStream$PutField putFields()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.lang.Object replaceObject(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void useProtocolVersion(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeBoolean(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeByte(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeBytes(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeChar(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeChars(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void writeClassDescriptor(
+java.io.ObjectStreamClass)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeDouble(
+double)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeFields()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeFloat(
+float)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeInt(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeLong(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeObject(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void writeObjectOverride(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeShort(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void writeStreamHeader()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeUTF(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeUnshared(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract interface class java.util.Comparator extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TT;TT;)I )
+public abstract int compare(
+java.lang.Object
+java.lang.Object)
+
+public abstract boolean equals(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Comparator<Ljava/lang/Class<*>;>; )
+final class java.io.ObjectStreamClass$1 extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Ljava/lang/Class<*>;)I )
+public int compare(
+java.lang.Class
+java.lang.Class)
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Comparator<Ljava/lang/reflect/Field;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class java.io.ObjectStreamClass$2 extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+public int compare(
+java.lang.reflect.Field
+java.lang.reflect.Field)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Comparator<Ljava/lang/reflect/Constructor<*>;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class java.io.ObjectStreamClass$3 extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/reflect/Constructor<*>;Ljava/lang/reflect/Constructor<*>;)I )
+public int compare(
+java.lang.reflect.Constructor
+java.lang.reflect.Constructor)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Comparator<Ljava/lang/reflect/Method;>; )
+final class java.io.ObjectStreamClass$4 extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+public int compare(
+java.lang.reflect.Method
+java.lang.reflect.Method)
+
+________________CLASS________________
+
+
+public class java.io.ObjectStreamClass extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/lang/Class<*>; )
+static final java.lang.Class ARRAY_OF_FIELDS
+@dalvik.annotation.Signature (value =Ljava/lang/Class<*>; )
+static final java.lang.Class CLASSCLASS
+
+private static final int CLASS_MODIFIERS_MASK
+
+private static final int CLINIT_MODIFIERS
+
+private static final java.lang.String CLINIT_NAME
+
+private static final java.lang.String CLINIT_SIGNATURE
+@dalvik.annotation.Signature (value =[Ljava/lang/Class<*>; )
+static final java.lang.Class[] EMPTY_CONSTRUCTOR_PARAM_TYPES
+@dalvik.annotation.Signature (value =Ljava/lang/Class<Ljava/io/Externalizable;>; )
+private static final java.lang.Class EXTERNALIZABLE
+
+private static final int FIELD_MODIFIERS_MASK
+
+private static final int METHOD_MODIFIERS_MASK
+
+public static final java.io.ObjectStreamField[] NO_FIELDS
+@dalvik.annotation.Signature (value =Ljava/lang/Class<Ljava/io/ObjectStreamClass;>; )
+static final java.lang.Class OBJECTSTREAMCLASSCLASS
+@dalvik.annotation.Signature (value =[Ljava/lang/Class<*>; )
+private static final java.lang.Class[] READ_PARAM_TYPES
+@dalvik.annotation.Signature (value =Ljava/lang/Class<Ljava/io/Serializable;>; )
+private static final java.lang.Class SERIALIZABLE
+@dalvik.annotation.Signature (value =Ljava/lang/Class<Ljava/lang/String;>; )
+static final java.lang.Class STRINGCLASS
+
+private static final java.lang.String UID_FIELD_NAME
+@dalvik.annotation.Signature (value =[Ljava/lang/Class<*>; )
+static final java.lang.Class[] UNSHARED_PARAM_TYPES
+@dalvik.annotation.Signature (value =Ljava/lang/Class<Ljava/lang/Void;>; )
+private static final java.lang.Class VOID_CLASS
+@dalvik.annotation.Signature (value =[Ljava/lang/Class<*>; )
+private static final java.lang.Class[] WRITE_PARAM_TYPES
+@dalvik.annotation.Signature (value =Ljava/util/WeakHashMap<Ljava/lang/Class<*>;Ljava/io/ObjectStreamClass;>; )
+private static final java.util.WeakHashMap classesAndDescriptors
+
+private static final long serialVersionUID
+
+private transient java.lang.String className
+
+private transient java.io.ObjectStreamField[] fields
+
+private transient byte flags
+
+private transient java.io.ObjectStreamField[] loadFields
+@dalvik.annotation.Signature (value =Ljava/lang/ref/WeakReference<Ljava/lang/Class<*>;>; )
+private transient java.lang.ref.WeakReference resolvedClass
+
+private transient java.io.ObjectStreamClass superclass
+
+private transient long svUID
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Z)Ljava/io/ObjectStreamClass; )
+private static java.io.ObjectStreamClass addToCache(
+java.lang.Class
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;[Ljava/lang/reflect/Field;)J )
+private static long computeSerialVersionUID(
+java.lang.Class
+java.lang.reflect.Field[])
+
+private void copyFieldAttributes()
+
+private static java.lang.String descriptorForFieldSignature(
+java.lang.String)
+
+private static java.lang.String descriptorForSignature(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/lang/reflect/Field; )
+static java.lang.reflect.Field fieldSerialPersistentFields(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/reflect/Constructor<*>;)Ljava/lang/String; )
+static native java.lang.String getConstructorSignature(
+java.lang.reflect.Constructor)
+
+private static native java.lang.String getFieldSignature(
+java.lang.reflect.Field)
+
+static native java.lang.String getMethodSignature(
+java.lang.reflect.Method)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/lang/reflect/Method; )
+static java.lang.reflect.Method getPrivateReadObjectMethod(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/lang/reflect/Method; )
+static java.lang.reflect.Method getPrivateReadObjectNoDataMethod(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/lang/reflect/Method; )
+static java.lang.reflect.Method getPrivateWriteObjectMethod(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Z )
+private static native boolean hasClinit(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Z )
+static boolean isExternalizable(
+java.lang.Class)
+
+static boolean isPrimitiveType(
+char)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Z )
+static boolean isSerializable(
+java.lang.Class)
+
+private static long littleEndianLongAt(
+byte[]
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/io/ObjectStreamClass; )
+public static java.io.ObjectStreamClass lookup(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/io/ObjectStreamClass; )
+static java.io.ObjectStreamClass lookupStreamClass(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Z)Ljava/io/ObjectStreamClass; )
+private static java.io.ObjectStreamClass lookupStreamClass(
+java.lang.Class
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/lang/reflect/Method; )
+static java.lang.reflect.Method methodReadResolve(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/lang/reflect/Method; )
+static java.lang.reflect.Method methodWriteReplace(
+java.lang.Class)
+
+private static native void oneTimeInitialization()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)I )
+private int primitiveSize(
+java.lang.Class)
+
+ void buildFieldDescriptors(
+java.lang.reflect.Field[])
+
+ java.io.ObjectStreamField[] fields()
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<*>; )
+public java.lang.Class forClass()
+
+public java.io.ObjectStreamField getField(
+java.lang.String)
+
+public java.io.ObjectStreamField[] getFields()
+
+ byte getFlags()
+
+ java.io.ObjectStreamField[] getLoadFields()
+
+public java.lang.String getName()
+
+public long getSerialVersionUID()
+
+ java.io.ObjectStreamClass getSuperclass()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)V )
+ void setClass(
+java.lang.Class)
+
+ void setFields(
+java.io.ObjectStreamField[])
+
+ void setFlags(
+byte)
+
+ void setLoadFields(
+java.io.ObjectStreamField[])
+
+ void setName(
+java.lang.String)
+
+ void setSerialVersionUID(
+long)
+
+ void setSuperclass(
+java.io.ObjectStreamClass)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Comparator<Ljava/io/ObjectStreamField;>; )
+final class java.io.ObjectStreamField$1 extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public int compare(
+java.io.ObjectStreamField
+java.io.ObjectStreamField)
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/lang/Comparable<Ljava/lang/Object;>; )
+public class java.io.ObjectStreamField extends java.lang.Object implements java.lang.Comparable
+
+----------------FIELDS----------------
+
+private boolean isDeserialized
+
+private java.lang.String name
+
+ int offset
+
+private java.lang.Object type
+
+private java.lang.String typeString
+
+private boolean unshared
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/Class<*>;)V )
+public void <init>(
+java.lang.String
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/Class<*>;Z)V )
+public void <init>(
+java.lang.String
+java.lang.Class
+boolean)
+
+ void <init>(
+java.lang.String
+java.lang.String)
+
+static void sortFields(
+java.io.ObjectStreamField[])
+
+public int compareTo(
+java.lang.Object)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getName()
+
+public int getOffset()
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<*>; )
+public java.lang.Class getType()
+
+public char getTypeCode()
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<*>; )
+ java.lang.Class getTypeInternal()
+
+public java.lang.String getTypeString()
+
+public int hashCode()
+
+public boolean isPrimitive()
+
+public boolean isUnshared()
+
+ void resolve(
+java.lang.ClassLoader)
+
+protected void setOffset(
+int)
+
+ void setUnshared(
+boolean)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.io.OptionalDataException extends java.io.ObjectStreamException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+public boolean eof
+
+public int length
+----------------METHODS----------------
+
+ void <init>()
+
+ void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.io.PipedInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+protected static final int PIPE_SIZE
+
+protected byte[] buffer
+
+protected int in
+
+private boolean isClosed
+
+ boolean isConnected
+
+private java.lang.Thread lastReader
+
+private java.lang.Thread lastWriter
+
+protected int out
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.PipedOutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connect(
+java.io.PipedOutputStream)
+
+ void done()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void receive(
+int)
+
+________________CLASS________________
+
+
+public class java.io.PipedOutputStream extends java.io.OutputStream
+
+----------------FIELDS----------------
+
+private java.io.PipedInputStream dest
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.PipedInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connect(
+java.io.PipedInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.io.PipedReader extends java.io.Reader
+
+----------------FIELDS----------------
+
+private static final int PIPE_SIZE
+
+private char[] data
+
+private int in
+
+private boolean isClosed
+
+private boolean isConnected
+
+private java.lang.Thread lastReader
+
+private java.lang.Thread lastWriter
+
+private int out
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.PipedWriter)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connect(
+java.io.PipedWriter)
+
+ void done()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void establishConnection()
+
+ void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean ready()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void receive(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void receive(
+char[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.io.PipedWriter extends java.io.Writer
+
+----------------FIELDS----------------
+
+private boolean closed
+
+private java.io.PipedReader dest
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.PipedReader)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connect(
+java.io.PipedReader)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+char[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.io.PrintStream extends java.io.FilterOutputStream implements java.lang.Appendable, java.io.Closeable
+
+----------------FIELDS----------------
+
+private static final java.lang.String TOKEN_NULL
+
+private boolean autoflush
+
+private java.lang.String encoding
+
+private boolean ioError
+
+private final java.lang.String lineSeparator
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.io.File)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException;Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+java.io.File
+java.lang.String)
+
+public void <init>(
+java.io.OutputStream)
+
+public void <init>(
+java.io.OutputStream
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+java.io.OutputStream
+boolean
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException;Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+java.lang.String
+java.lang.String)
+
+private void newline()
+
+public java.io.PrintStream append(
+char)
+
+public java.io.PrintStream append(
+java.lang.CharSequence)
+
+public java.io.PrintStream append(
+java.lang.CharSequence
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence
+int
+int)
+
+public boolean checkError()
+
+public void close()
+
+public void flush()
+
+public transient java.io.PrintStream format(
+java.lang.String
+java.lang.Object[])
+
+public transient java.io.PrintStream format(
+java.util.Locale
+java.lang.String
+java.lang.Object[])
+
+public void print(
+char)
+
+public void print(
+double)
+
+public void print(
+float)
+
+public void print(
+int)
+
+public void print(
+long)
+
+public void print(
+java.lang.Object)
+
+public void print(
+java.lang.String)
+
+public void print(
+boolean)
+
+public void print(
+char[])
+
+public transient java.io.PrintStream printf(
+java.lang.String
+java.lang.Object[])
+
+public transient java.io.PrintStream printf(
+java.util.Locale
+java.lang.String
+java.lang.Object[])
+
+public void println()
+
+public void println(
+char)
+
+public void println(
+double)
+
+public void println(
+float)
+
+public void println(
+int)
+
+public void println(
+long)
+
+public void println(
+java.lang.Object)
+
+public void println(
+java.lang.String)
+
+public void println(
+boolean)
+
+public void println(
+char[])
+
+protected void setError()
+
+public void write(
+int)
+
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.io.PrintWriter extends java.io.Writer
+
+----------------FIELDS----------------
+
+private boolean autoflush
+
+private boolean ioError
+
+private final java.lang.String lineSeparator
+
+protected java.io.Writer out
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.io.File)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException;Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+java.io.File
+java.lang.String)
+
+public void <init>(
+java.io.OutputStream)
+
+public void <init>(
+java.io.OutputStream
+boolean)
+
+public void <init>(
+java.io.Writer)
+
+public void <init>(
+java.io.Writer
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException;Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+java.lang.String
+java.lang.String)
+
+private final void doWrite(
+char[]
+int
+int)
+
+private void newline()
+
+public java.io.PrintWriter append(
+char)
+
+public java.io.PrintWriter append(
+java.lang.CharSequence)
+
+public java.io.PrintWriter append(
+java.lang.CharSequence
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.io.Writer append(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.io.Writer append(
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.io.Writer append(
+java.lang.CharSequence
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence
+int
+int)
+
+public boolean checkError()
+
+public void close()
+
+public void flush()
+
+public transient java.io.PrintWriter format(
+java.lang.String
+java.lang.Object[])
+
+public transient java.io.PrintWriter format(
+java.util.Locale
+java.lang.String
+java.lang.Object[])
+
+public void print(
+char)
+
+public void print(
+double)
+
+public void print(
+float)
+
+public void print(
+int)
+
+public void print(
+long)
+
+public void print(
+java.lang.Object)
+
+public void print(
+java.lang.String)
+
+public void print(
+boolean)
+
+public void print(
+char[])
+
+public transient java.io.PrintWriter printf(
+java.lang.String
+java.lang.Object[])
+
+public transient java.io.PrintWriter printf(
+java.util.Locale
+java.lang.String
+java.lang.Object[])
+
+public void println()
+
+public void println(
+char)
+
+public void println(
+double)
+
+public void println(
+float)
+
+public void println(
+int)
+
+public void println(
+long)
+
+public void println(
+java.lang.Object)
+
+public void println(
+java.lang.String)
+
+public void println(
+boolean)
+
+public void println(
+char[])
+
+protected void setError()
+
+public void write(
+int)
+
+public void write(
+java.lang.String)
+
+public void write(
+java.lang.String
+int
+int)
+
+public void write(
+char[])
+
+public void write(
+char[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.io.PushbackInputStream extends java.io.FilterInputStream
+
+----------------FIELDS----------------
+
+protected byte[] buf
+
+protected int pos
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream)
+
+public void <init>(
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public void mark(
+int)
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void unread(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void unread(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void unread(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.io.PushbackReader extends java.io.FilterReader
+
+----------------FIELDS----------------
+
+ char[] buf
+
+ int pos
+----------------METHODS----------------
+
+public void <init>(
+java.io.Reader)
+
+public void <init>(
+java.io.Reader
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void mark(
+int)
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean ready()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void unread(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void unread(
+char[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void unread(
+char[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/io/RandomAccessFile; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class java.io.RandomAccessFile$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/io/RandomAccessFile; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =RepositionLock )
+ class java.io.RandomAccessFile$RepositionLock extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+java.io.RandomAccessFile$1)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/io/RandomAccessFile$1;Ljava/io/RandomAccessFile$RepositionLock; )
+public class java.io.RandomAccessFile extends java.lang.Object implements java.io.DataInput, java.io.DataOutput, java.io.Closeable
+
+----------------FIELDS----------------
+
+private java.nio.channels.FileChannel channel
+
+private java.io.FileDescriptor fd
+
+private org.apache.harmony.luni.platform.IFileSystem fileSystem
+
+private boolean isReadOnly
+
+private java.lang.Object repositionLock
+
+private boolean syncMetadata
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.io.File
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void openCheck()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public final java.nio.channels.FileChannel getChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.io.FileDescriptor getFD()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long getFilePointer()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long length()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final boolean readBoolean()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final byte readByte()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final char readChar()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final double readDouble()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final float readFloat()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void readFully(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void readFully(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final int readInt()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.lang.String readLine()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final long readLong()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final short readShort()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.lang.String readUTF()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final int readUnsignedByte()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final int readUnsignedShort()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void seek(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setLength(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int skipBytes(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeBoolean(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeByte(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeBytes(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeChar(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeChars(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeDouble(
+double)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeFloat(
+float)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeInt(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeLong(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeShort(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void writeUTF(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.io.SequenceInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Enumeration<+Ljava/io/InputStream;>; )
+private java.util.Enumeration e
+
+private java.io.InputStream in
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream
+java.io.InputStream)
+@dalvik.annotation.Signature (value =(Ljava/util/Enumeration<+Ljava/io/InputStream;>;)V )
+public void <init>(
+java.util.Enumeration)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void nextStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public abstract class java.security.BasicPermission extends java.security.Permission implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+private final void checkName(
+java.lang.String)
+
+static boolean nameImplies(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getActions()
+
+public int hashCode()
+
+public boolean implies(
+java.security.Permission)
+
+public java.security.PermissionCollection newPermissionCollection()
+
+________________CLASS________________
+
+
+public final class java.io.SerializablePermission extends java.security.BasicPermission
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.String actions
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.io.StreamCorruptedException extends java.io.ObjectStreamException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.io.StreamTokenizer extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final byte TOKEN_COMMENT
+
+private static final byte TOKEN_DIGIT
+
+private static final byte TOKEN_QUOTE
+
+private static final byte TOKEN_WHITE
+
+private static final byte TOKEN_WORD
+
+public static final int TT_EOF
+
+public static final int TT_EOL
+
+public static final int TT_NUMBER
+
+private static final int TT_UNKNOWN
+
+public static final int TT_WORD
+
+private boolean forceLowercase
+
+private java.io.Reader inReader
+
+private java.io.InputStream inStream
+
+private boolean isEOLSignificant
+
+private boolean lastCr
+
+private int lineNumber
+
+public double nval
+
+private int peekChar
+
+private boolean pushBackToken
+
+private boolean slashSlashComments
+
+private boolean slashStarComments
+
+public java.lang.String sval
+
+private byte[] tokenTypes
+
+public int ttype
+----------------METHODS----------------
+
+private void <init>()
+@java.lang.Deprecated
+public void <init>(
+java.io.InputStream)
+
+public void <init>(
+java.io.Reader)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int read()
+
+public void commentChar(
+int)
+
+public void eolIsSignificant(
+boolean)
+
+public int lineno()
+
+public void lowerCaseMode(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int nextToken()
+
+public void ordinaryChar(
+int)
+
+public void ordinaryChars(
+int
+int)
+
+public void parseNumbers()
+
+public void pushBack()
+
+public void quoteChar(
+int)
+
+public void resetSyntax()
+
+public void slashSlashComments(
+boolean)
+
+public void slashStarComments(
+boolean)
+
+public java.lang.String toString()
+
+public void whitespaceChars(
+int
+int)
+
+public void wordChars(
+int
+int)
+
+________________CLASS________________
+
+@java.lang.Deprecated
+public class java.io.StringBufferInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+protected java.lang.String buffer
+
+protected int count
+
+protected int pos
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public int available()
+
+public int read()
+
+public int read(
+byte[]
+int
+int)
+
+public void reset()
+
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class java.io.StringReader extends java.io.Reader
+
+----------------FIELDS----------------
+
+private int count
+
+private int markpos
+
+private int pos
+
+private java.lang.String str
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+private boolean isClosed()
+
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void mark(
+int)
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean ready()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class java.io.StringWriter extends java.io.Writer
+
+----------------FIELDS----------------
+
+private java.lang.StringBuffer buf
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+public java.io.StringWriter append(
+char)
+
+public java.io.StringWriter append(
+java.lang.CharSequence)
+
+public java.io.StringWriter append(
+java.lang.CharSequence
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.io.Writer append(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.io.Writer append(
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.io.Writer append(
+java.lang.CharSequence
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public void flush()
+
+public java.lang.StringBuffer getBuffer()
+
+public java.lang.String toString()
+
+public void write(
+int)
+
+public void write(
+java.lang.String)
+
+public void write(
+java.lang.String
+int
+int)
+
+public void write(
+char[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.io.SyncFailedException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.io.UTFDataFormatException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.io.UnsupportedEncodingException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.io.WriteAbortedException extends java.io.ObjectStreamException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+public java.lang.Exception detail
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.Exception)
+
+public java.lang.Throwable getCause()
+
+public java.lang.String getMessage()
+
+________________CLASS________________
+
+
+public class java.lang.LinkageError extends java.lang.Error
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.IncompatibleClassChangeError extends java.lang.LinkageError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.AbstractMethodError extends java.lang.IncompatibleClassChangeError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+abstract class java.lang.AbstractStringBuilder extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int INITIAL_CAPACITY
+
+private int count
+
+private boolean shared
+
+private char[] value
+----------------METHODS----------------
+
+ void <init>()
+
+ void <init>(
+int)
+
+ void <init>(
+java.lang.String)
+
+private void enlargeBuffer(
+int)
+
+private void move(
+int
+int)
+
+final void append0(
+char)
+
+final void append0(
+java.lang.CharSequence
+int
+int)
+
+final void append0(
+java.lang.String)
+
+final void append0(
+char[])
+
+final void append0(
+char[]
+int
+int)
+
+final void appendNull()
+
+public int capacity()
+
+public char charAt(
+int)
+
+public int codePointAt(
+int)
+
+public int codePointBefore(
+int)
+
+public int codePointCount(
+int
+int)
+
+final void delete0(
+int
+int)
+
+final void deleteCharAt0(
+int)
+
+public void ensureCapacity(
+int)
+
+public void getChars(
+int
+int
+char[]
+int)
+
+final char[] getValue()
+
+public int indexOf(
+java.lang.String)
+
+public int indexOf(
+java.lang.String
+int)
+
+final void insert0(
+int
+char)
+
+final void insert0(
+int
+java.lang.CharSequence
+int
+int)
+
+final void insert0(
+int
+java.lang.String)
+
+final void insert0(
+int
+char[])
+
+final void insert0(
+int
+char[]
+int
+int)
+
+public int lastIndexOf(
+java.lang.String)
+
+public int lastIndexOf(
+java.lang.String
+int)
+
+public int length()
+
+public int offsetByCodePoints(
+int
+int)
+
+final void replace0(
+int
+int
+java.lang.String)
+
+final void reverse0()
+@dalvik.annotation.Throws (value =Ljava/io/InvalidObjectException; )
+final void set(
+char[]
+int)
+
+public void setCharAt(
+int
+char)
+
+public void setLength(
+int)
+
+final char[] shareValue()
+
+public java.lang.CharSequence subSequence(
+int
+int)
+
+public java.lang.String substring(
+int)
+
+public java.lang.String substring(
+int
+int)
+
+public java.lang.String toString()
+
+public void trimToSize()
+
+________________CLASS________________
+
+
+public class java.lang.RuntimeException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class java.lang.ArithmeticException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.IndexOutOfBoundsException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.ArrayIndexOutOfBoundsException extends java.lang.IndexOutOfBoundsException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.ArrayStoreException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.AssertionError extends java.lang.Error
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+char)
+
+public void <init>(
+double)
+
+public void <init>(
+float)
+
+public void <init>(
+int)
+
+public void <init>(
+long)
+
+public void <init>(
+java.lang.Object)
+
+public void <init>(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Comparable<Ljava/lang/Boolean;>; )
+public final class java.lang.Boolean extends java.lang.Object implements java.io.Serializable, java.lang.Comparable
+
+----------------FIELDS----------------
+
+public static final java.lang.Boolean FALSE
+
+public static final java.lang.Boolean TRUE
+@dalvik.annotation.Signature (value =Ljava/lang/Class<Ljava/lang/Boolean;>; )
+public static final java.lang.Class TYPE
+
+private static final long serialVersionUID
+
+private final boolean value
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+boolean)
+
+public static boolean getBoolean(
+java.lang.String)
+
+public static boolean parseBoolean(
+java.lang.String)
+
+public static java.lang.String toString(
+boolean)
+
+public static java.lang.Boolean valueOf(
+java.lang.String)
+
+public static java.lang.Boolean valueOf(
+boolean)
+
+public boolean booleanValue()
+
+public int compareTo(
+java.lang.Boolean)
+
+public volatile int compareTo(
+java.lang.Object)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+ class java.lang.BootClassLoader extends java.lang.ClassLoader
+
+----------------FIELDS----------------
+
+static java.lang.BootClassLoader instance
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.BootClassLoader getInstance()
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/lang/Class<*>; )
+protected java.lang.Class findClass(
+java.lang.String)
+
+protected java.net.URL findResource(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/Enumeration<Ljava/net/URL;>; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.util.Enumeration findResources(
+java.lang.String)
+
+protected java.lang.Package getPackage(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Byte;>; )
+public final class java.lang.Byte extends java.lang.Number implements java.lang.Comparable
+
+----------------FIELDS----------------
+
+private static final java.lang.Byte[] CACHE
+
+public static final byte MAX_VALUE
+
+public static final byte MIN_VALUE
+
+public static final int SIZE
+@dalvik.annotation.Signature (value =Ljava/lang/Class<Ljava/lang/Byte;>; )
+public static final java.lang.Class TYPE
+
+private static final long serialVersionUID
+
+private final byte value
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+byte)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static java.lang.Byte decode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static byte parseByte(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static byte parseByte(
+java.lang.String
+int)
+
+public static java.lang.String toString(
+byte)
+
+public static java.lang.Byte valueOf(
+byte)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static java.lang.Byte valueOf(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static java.lang.Byte valueOf(
+java.lang.String
+int)
+
+public byte byteValue()
+
+public int compareTo(
+java.lang.Byte)
+
+public volatile int compareTo(
+java.lang.Object)
+
+public double doubleValue()
+
+public boolean equals(
+java.lang.Object)
+
+public float floatValue()
+
+public int hashCode()
+
+public int intValue()
+
+public long longValue()
+
+public short shortValue()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class java.lang.CharSequence extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract char charAt(
+int)
+
+public abstract int length()
+
+public abstract java.lang.CharSequence subSequence(
+int
+int)
+
+public abstract java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Subset )
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/Character; )
+public class java.lang.Character$Subset extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.lang.String name
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.String)
+
+public final boolean equals(
+java.lang.Object)
+
+public final int hashCode()
+
+public final java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/Character; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =UnicodeBlock )
+public final class java.lang.Character$UnicodeBlock extends java.lang.Character$Subset
+
+----------------FIELDS----------------
+
+public static final java.lang.Character$UnicodeBlock AEGEAN_NUMBERS
+
+public static final java.lang.Character$UnicodeBlock ALPHABETIC_PRESENTATION_FORMS
+
+public static final java.lang.Character$UnicodeBlock ARABIC
+
+public static final java.lang.Character$UnicodeBlock ARABIC_PRESENTATION_FORMS_A
+
+public static final java.lang.Character$UnicodeBlock ARABIC_PRESENTATION_FORMS_B
+
+public static final java.lang.Character$UnicodeBlock ARMENIAN
+
+public static final java.lang.Character$UnicodeBlock ARROWS
+
+public static final java.lang.Character$UnicodeBlock BASIC_LATIN
+
+public static final java.lang.Character$UnicodeBlock BENGALI
+
+private static java.lang.Character$UnicodeBlock[] BLOCKS
+
+public static final java.lang.Character$UnicodeBlock BLOCK_ELEMENTS
+
+public static final java.lang.Character$UnicodeBlock BOPOMOFO
+
+public static final java.lang.Character$UnicodeBlock BOPOMOFO_EXTENDED
+
+public static final java.lang.Character$UnicodeBlock BOX_DRAWING
+
+public static final java.lang.Character$UnicodeBlock BRAILLE_PATTERNS
+
+public static final java.lang.Character$UnicodeBlock BUHID
+
+public static final java.lang.Character$UnicodeBlock BYZANTINE_MUSICAL_SYMBOLS
+
+public static final java.lang.Character$UnicodeBlock CHEROKEE
+
+public static final java.lang.Character$UnicodeBlock CJK_COMPATIBILITY
+
+public static final java.lang.Character$UnicodeBlock CJK_COMPATIBILITY_FORMS
+
+public static final java.lang.Character$UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS
+
+public static final java.lang.Character$UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT
+
+public static final java.lang.Character$UnicodeBlock CJK_RADICALS_SUPPLEMENT
+
+public static final java.lang.Character$UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION
+
+public static final java.lang.Character$UnicodeBlock CJK_UNIFIED_IDEOGRAPHS
+
+public static final java.lang.Character$UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
+
+public static final java.lang.Character$UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
+
+public static final java.lang.Character$UnicodeBlock COMBINING_DIACRITICAL_MARKS
+
+public static final java.lang.Character$UnicodeBlock COMBINING_HALF_MARKS
+
+public static final java.lang.Character$UnicodeBlock COMBINING_MARKS_FOR_SYMBOLS
+
+public static final java.lang.Character$UnicodeBlock CONTROL_PICTURES
+
+public static final java.lang.Character$UnicodeBlock CURRENCY_SYMBOLS
+
+public static final java.lang.Character$UnicodeBlock CYPRIOT_SYLLABARY
+
+public static final java.lang.Character$UnicodeBlock CYRILLIC
+
+public static final java.lang.Character$UnicodeBlock CYRILLIC_SUPPLEMENTARY
+
+public static final java.lang.Character$UnicodeBlock DESERET
+
+public static final java.lang.Character$UnicodeBlock DEVANAGARI
+
+public static final java.lang.Character$UnicodeBlock DINGBATS
+
+public static final java.lang.Character$UnicodeBlock ENCLOSED_ALPHANUMERICS
+
+public static final java.lang.Character$UnicodeBlock ENCLOSED_CJK_LETTERS_AND_MONTHS
+
+public static final java.lang.Character$UnicodeBlock ETHIOPIC
+
+public static final java.lang.Character$UnicodeBlock GENERAL_PUNCTUATION
+
+public static final java.lang.Character$UnicodeBlock GEOMETRIC_SHAPES
+
+public static final java.lang.Character$UnicodeBlock GEORGIAN
+
+public static final java.lang.Character$UnicodeBlock GOTHIC
+
+public static final java.lang.Character$UnicodeBlock GREEK
+
+public static final java.lang.Character$UnicodeBlock GREEK_EXTENDED
+
+public static final java.lang.Character$UnicodeBlock GUJARATI
+
+public static final java.lang.Character$UnicodeBlock GURMUKHI
+
+public static final java.lang.Character$UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS
+
+public static final java.lang.Character$UnicodeBlock HANGUL_COMPATIBILITY_JAMO
+
+public static final java.lang.Character$UnicodeBlock HANGUL_JAMO
+
+public static final java.lang.Character$UnicodeBlock HANGUL_SYLLABLES
+
+public static final java.lang.Character$UnicodeBlock HANUNOO
+
+public static final java.lang.Character$UnicodeBlock HEBREW
+
+public static final java.lang.Character$UnicodeBlock HIGH_PRIVATE_USE_SURROGATES
+
+public static final java.lang.Character$UnicodeBlock HIGH_SURROGATES
+
+public static final java.lang.Character$UnicodeBlock HIRAGANA
+
+public static final java.lang.Character$UnicodeBlock IDEOGRAPHIC_DESCRIPTION_CHARACTERS
+
+public static final java.lang.Character$UnicodeBlock IPA_EXTENSIONS
+
+public static final java.lang.Character$UnicodeBlock KANBUN
+
+public static final java.lang.Character$UnicodeBlock KANGXI_RADICALS
+
+public static final java.lang.Character$UnicodeBlock KANNADA
+
+public static final java.lang.Character$UnicodeBlock KATAKANA
+
+public static final java.lang.Character$UnicodeBlock KATAKANA_PHONETIC_EXTENSIONS
+
+public static final java.lang.Character$UnicodeBlock KHMER
+
+public static final java.lang.Character$UnicodeBlock KHMER_SYMBOLS
+
+public static final java.lang.Character$UnicodeBlock LAO
+
+public static final java.lang.Character$UnicodeBlock LATIN_1_SUPPLEMENT
+
+public static final java.lang.Character$UnicodeBlock LATIN_EXTENDED_A
+
+public static final java.lang.Character$UnicodeBlock LATIN_EXTENDED_ADDITIONAL
+
+public static final java.lang.Character$UnicodeBlock LATIN_EXTENDED_B
+
+public static final java.lang.Character$UnicodeBlock LETTERLIKE_SYMBOLS
+
+public static final java.lang.Character$UnicodeBlock LIMBU
+
+public static final java.lang.Character$UnicodeBlock LINEAR_B_IDEOGRAMS
+
+public static final java.lang.Character$UnicodeBlock LINEAR_B_SYLLABARY
+
+public static final java.lang.Character$UnicodeBlock LOW_SURROGATES
+
+public static final java.lang.Character$UnicodeBlock MALAYALAM
+
+public static final java.lang.Character$UnicodeBlock MATHEMATICAL_ALPHANUMERIC_SYMBOLS
+
+public static final java.lang.Character$UnicodeBlock MATHEMATICAL_OPERATORS
+
+public static final java.lang.Character$UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A
+
+public static final java.lang.Character$UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B
+
+public static final java.lang.Character$UnicodeBlock MISCELLANEOUS_SYMBOLS
+
+public static final java.lang.Character$UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_ARROWS
+
+public static final java.lang.Character$UnicodeBlock MISCELLANEOUS_TECHNICAL
+
+public static final java.lang.Character$UnicodeBlock MONGOLIAN
+
+public static final java.lang.Character$UnicodeBlock MUSICAL_SYMBOLS
+
+public static final java.lang.Character$UnicodeBlock MYANMAR
+
+public static final java.lang.Character$UnicodeBlock NUMBER_FORMS
+
+public static final java.lang.Character$UnicodeBlock OGHAM
+
+public static final java.lang.Character$UnicodeBlock OLD_ITALIC
+
+public static final java.lang.Character$UnicodeBlock OPTICAL_CHARACTER_RECOGNITION
+
+public static final java.lang.Character$UnicodeBlock ORIYA
+
+public static final java.lang.Character$UnicodeBlock OSMANYA
+
+public static final java.lang.Character$UnicodeBlock PHONETIC_EXTENSIONS
+
+public static final java.lang.Character$UnicodeBlock PRIVATE_USE_AREA
+
+public static final java.lang.Character$UnicodeBlock RUNIC
+
+public static final java.lang.Character$UnicodeBlock SHAVIAN
+
+public static final java.lang.Character$UnicodeBlock SINHALA
+
+public static final java.lang.Character$UnicodeBlock SMALL_FORM_VARIANTS
+
+public static final java.lang.Character$UnicodeBlock SPACING_MODIFIER_LETTERS
+
+public static final java.lang.Character$UnicodeBlock SPECIALS
+
+public static final java.lang.Character$UnicodeBlock SUPERSCRIPTS_AND_SUBSCRIPTS
+
+public static final java.lang.Character$UnicodeBlock SUPPLEMENTAL_ARROWS_A
+
+public static final java.lang.Character$UnicodeBlock SUPPLEMENTAL_ARROWS_B
+
+public static final java.lang.Character$UnicodeBlock SUPPLEMENTAL_MATHEMATICAL_OPERATORS
+
+public static final java.lang.Character$UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A
+
+public static final java.lang.Character$UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B
+@java.lang.Deprecated
+public static final java.lang.Character$UnicodeBlock SURROGATES_AREA
+
+public static final java.lang.Character$UnicodeBlock SYRIAC
+
+public static final java.lang.Character$UnicodeBlock TAGALOG
+
+public static final java.lang.Character$UnicodeBlock TAGBANWA
+
+public static final java.lang.Character$UnicodeBlock TAGS
+
+public static final java.lang.Character$UnicodeBlock TAI_LE
+
+public static final java.lang.Character$UnicodeBlock TAI_XUAN_JING_SYMBOLS
+
+public static final java.lang.Character$UnicodeBlock TAMIL
+
+public static final java.lang.Character$UnicodeBlock TELUGU
+
+public static final java.lang.Character$UnicodeBlock THAANA
+
+public static final java.lang.Character$UnicodeBlock THAI
+
+public static final java.lang.Character$UnicodeBlock TIBETAN
+
+public static final java.lang.Character$UnicodeBlock UGARITIC
+
+public static final java.lang.Character$UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS
+
+public static final java.lang.Character$UnicodeBlock VARIATION_SELECTORS
+
+public static final java.lang.Character$UnicodeBlock VARIATION_SELECTORS_SUPPLEMENT
+
+public static final java.lang.Character$UnicodeBlock YIJING_HEXAGRAM_SYMBOLS
+
+public static final java.lang.Character$UnicodeBlock YI_RADICALS
+
+public static final java.lang.Character$UnicodeBlock YI_SYLLABLES
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+java.lang.String)
+
+public static java.lang.Character$UnicodeBlock forName(
+java.lang.String)
+
+public static java.lang.Character$UnicodeBlock of(
+char)
+
+public static java.lang.Character$UnicodeBlock of(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =valueOfCache )
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/Character; )
+ class java.lang.Character$valueOfCache extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.Character[] CACHE
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+static java.lang.Character[] access$000()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Comparable<Ljava/lang/Character;>; )
+@dalvik.annotation.MemberClasses (value =Ljava/lang/Character$valueOfCache;Ljava/lang/Character$UnicodeBlock;Ljava/lang/Character$Subset; )
+public final class java.lang.Character extends java.lang.Object implements java.io.Serializable, java.lang.Comparable
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private static final int CACHE_LEN
+
+public static final byte COMBINING_SPACING_MARK
+
+public static final byte CONNECTOR_PUNCTUATION
+
+public static final byte CONTROL
+
+public static final byte CURRENCY_SYMBOL
+
+public static final byte DASH_PUNCTUATION
+
+public static final byte DECIMAL_DIGIT_NUMBER
+
+private static final byte[] DIRECTIONALITY
+
+public static final byte DIRECTIONALITY_ARABIC_NUMBER
+
+public static final byte DIRECTIONALITY_BOUNDARY_NEUTRAL
+
+public static final byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR
+
+public static final byte DIRECTIONALITY_EUROPEAN_NUMBER
+
+public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR
+
+public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR
+
+public static final byte DIRECTIONALITY_LEFT_TO_RIGHT
+
+public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING
+
+public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE
+
+public static final byte DIRECTIONALITY_NONSPACING_MARK
+
+public static final byte DIRECTIONALITY_OTHER_NEUTRALS
+
+public static final byte DIRECTIONALITY_PARAGRAPH_SEPARATOR
+
+public static final byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT
+
+public static final byte DIRECTIONALITY_RIGHT_TO_LEFT
+
+public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC
+
+public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING
+
+public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE
+
+public static final byte DIRECTIONALITY_SEGMENT_SEPARATOR
+
+public static final byte DIRECTIONALITY_UNDEFINED
+
+public static final byte DIRECTIONALITY_WHITESPACE
+
+public static final byte ENCLOSING_MARK
+
+public static final byte END_PUNCTUATION
+
+public static final byte FINAL_QUOTE_PUNCTUATION
+
+public static final byte FORMAT
+
+public static final byte INITIAL_QUOTE_PUNCTUATION
+
+private static final int ISJAVAPART
+
+private static final int ISJAVASTART
+
+public static final byte LETTER_NUMBER
+
+public static final byte LINE_SEPARATOR
+
+public static final byte LOWERCASE_LETTER
+
+public static final byte MATH_SYMBOL
+
+public static final int MAX_CODE_POINT
+
+public static final char MAX_HIGH_SURROGATE
+
+public static final char MAX_LOW_SURROGATE
+
+public static final int MAX_RADIX
+
+public static final char MAX_SURROGATE
+
+public static final char MAX_VALUE
+
+public static final int MIN_CODE_POINT
+
+public static final char MIN_HIGH_SURROGATE
+
+public static final char MIN_LOW_SURROGATE
+
+public static final int MIN_RADIX
+
+public static final int MIN_SUPPLEMENTARY_CODE_POINT
+
+public static final char MIN_SURROGATE
+
+public static final char MIN_VALUE
+
+public static final byte MODIFIER_LETTER
+
+public static final byte MODIFIER_SYMBOL
+
+public static final byte NON_SPACING_MARK
+
+public static final byte OTHER_LETTER
+
+public static final byte OTHER_NUMBER
+
+public static final byte OTHER_PUNCTUATION
+
+public static final byte OTHER_SYMBOL
+
+public static final byte PARAGRAPH_SEPARATOR
+
+public static final byte PRIVATE_USE
+
+public static final int SIZE
+
+public static final byte SPACE_SEPARATOR
+
+public static final byte START_PUNCTUATION
+
+public static final byte SURROGATE
+
+public static final byte TITLECASE_LETTER
+@dalvik.annotation.Signature (value =Ljava/lang/Class<Ljava/lang/Character;>; )
+public static final java.lang.Class TYPE
+
+public static final byte UNASSIGNED
+
+public static final byte UPPERCASE_LETTER
+
+private static final long serialVersionUID
+
+private static final char[] typeTags
+
+private final char value
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+char)
+
+public static int charCount(
+int)
+
+public static int codePointAt(
+java.lang.CharSequence
+int)
+
+public static int codePointAt(
+char[]
+int)
+
+public static int codePointAt(
+char[]
+int
+int)
+
+public static int codePointBefore(
+java.lang.CharSequence
+int)
+
+public static int codePointBefore(
+char[]
+int)
+
+public static int codePointBefore(
+char[]
+int
+int)
+
+public static int codePointCount(
+java.lang.CharSequence
+int
+int)
+
+public static int codePointCount(
+char[]
+int
+int)
+
+public static int digit(
+char
+int)
+
+public static int digit(
+int
+int)
+
+public static char forDigit(
+int
+int)
+
+public static byte getDirectionality(
+char)
+
+public static byte getDirectionality(
+int)
+
+public static int getNumericValue(
+char)
+
+public static int getNumericValue(
+int)
+
+public static int getType(
+char)
+
+public static int getType(
+int)
+
+public static boolean isDefined(
+char)
+
+public static boolean isDefined(
+int)
+
+public static boolean isDigit(
+char)
+
+public static boolean isDigit(
+int)
+
+public static boolean isHighSurrogate(
+char)
+
+public static boolean isISOControl(
+char)
+
+public static boolean isISOControl(
+int)
+
+public static boolean isIdentifierIgnorable(
+char)
+
+public static boolean isIdentifierIgnorable(
+int)
+
+public static boolean isJavaIdentifierPart(
+char)
+
+public static boolean isJavaIdentifierPart(
+int)
+
+public static boolean isJavaIdentifierStart(
+char)
+
+public static boolean isJavaIdentifierStart(
+int)
+@java.lang.Deprecated
+public static boolean isJavaLetter(
+char)
+@java.lang.Deprecated
+public static boolean isJavaLetterOrDigit(
+char)
+
+public static boolean isLetter(
+char)
+
+public static boolean isLetter(
+int)
+
+public static boolean isLetterOrDigit(
+char)
+
+public static boolean isLetterOrDigit(
+int)
+
+public static boolean isLowSurrogate(
+char)
+
+public static boolean isLowerCase(
+char)
+
+public static boolean isLowerCase(
+int)
+
+public static boolean isMirrored(
+char)
+
+public static boolean isMirrored(
+int)
+@java.lang.Deprecated
+public static boolean isSpace(
+char)
+
+public static boolean isSpaceChar(
+char)
+
+public static boolean isSpaceChar(
+int)
+
+public static boolean isSupplementaryCodePoint(
+int)
+
+public static boolean isSurrogatePair(
+char
+char)
+
+public static boolean isTitleCase(
+char)
+
+public static boolean isTitleCase(
+int)
+
+public static boolean isUnicodeIdentifierPart(
+char)
+
+public static boolean isUnicodeIdentifierPart(
+int)
+
+public static boolean isUnicodeIdentifierStart(
+char)
+
+public static boolean isUnicodeIdentifierStart(
+int)
+
+public static boolean isUpperCase(
+char)
+
+public static boolean isUpperCase(
+int)
+
+public static boolean isValidCodePoint(
+int)
+
+public static boolean isWhitespace(
+char)
+
+public static boolean isWhitespace(
+int)
+
+public static int offsetByCodePoints(
+java.lang.CharSequence
+int
+int)
+
+public static int offsetByCodePoints(
+char[]
+int
+int
+int
+int)
+
+public static char reverseBytes(
+char)
+
+public static int toChars(
+int
+char[]
+int)
+
+public static char[] toChars(
+int)
+
+public static int toCodePoint(
+char
+char)
+
+public static char toLowerCase(
+char)
+
+public static int toLowerCase(
+int)
+
+public static java.lang.String toString(
+char)
+
+public static char toTitleCase(
+char)
+
+public static int toTitleCase(
+int)
+
+public static char toUpperCase(
+char)
+
+public static int toUpperCase(
+int)
+
+public static java.lang.Character valueOf(
+char)
+
+public char charValue()
+
+public int compareTo(
+java.lang.Character)
+
+public volatile int compareTo(
+java.lang.Object)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class java.lang.reflect.AnnotatedElement extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =<T::Ljava/lang/annotation/Annotation;>(Ljava/lang/Class<TT;>;)TT; )
+public abstract java.lang.annotation.Annotation getAnnotation(
+java.lang.Class)
+
+public abstract java.lang.annotation.Annotation[] getAnnotations()
+
+public abstract java.lang.annotation.Annotation[] getDeclaredAnnotations()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Z )
+public abstract boolean isAnnotationPresent(
+java.lang.Class)
+
+________________CLASS________________
+
+
+public abstract interface class java.lang.reflect.GenericDeclaration extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =()[Ljava/lang/reflect/TypeVariable<*>; )
+public abstract java.lang.reflect.TypeVariable[] getTypeParameters()
+
+________________CLASS________________
+
+
+public abstract interface class java.lang.reflect.Type extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/reflect/AnnotatedElement;Ljava/lang/reflect/GenericDeclaration;Ljava/lang/reflect/Type; )
+public final class java.lang.Class extends java.lang.Object implements java.io.Serializable, java.lang.reflect.AnnotatedElement, java.lang.reflect.GenericDeclaration, java.lang.reflect.Type
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/lang/ref/SoftReference<Ljava/lang/ClassCache<TT;>;>; )
+private volatile java.lang.ref.SoftReference cacheRef
+
+private java.security.ProtectionDomain pd
+----------------METHODS----------------
+
+private void <init>()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;[TT;[TT;)[TT; )
+private static java.lang.Object[] arraycopy(
+java.lang.Object[]
+java.lang.Object[]
+java.lang.Object[])
+
+private void checkDeclaredMemberAccess()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class<*>; )
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException; )
+static native java.lang.Class classForName(
+java.lang.String
+boolean
+java.lang.ClassLoader)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/lang/Class<*>; )
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException; )
+public static java.lang.Class forName(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class<*>; )
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException; )
+public static java.lang.Class forName(
+java.lang.String
+boolean
+java.lang.ClassLoader)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/lang/ClassLoader; )
+private static native java.lang.ClassLoader getClassLoader(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Z)[Ljava/lang/Class<*>; )
+private static native java.lang.Class[] getDeclaredClasses(
+java.lang.Class
+boolean)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Z)[Ljava/lang/reflect/Constructor<TT;>; )
+private static native java.lang.reflect.Constructor[] getDeclaredConstructors(
+java.lang.Class
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Z)[Ljava/lang/reflect/Field; )
+static native java.lang.reflect.Field[] getDeclaredFields(
+java.lang.Class
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Z)[Ljava/lang/reflect/Method; )
+static native java.lang.reflect.Method[] getDeclaredMethods(
+java.lang.Class
+boolean)
+@dalvik.annotation.Signature (value =(Z)[Ljava/lang/Class<*>; )
+private java.lang.Class[] getFullListOfClasses(
+boolean)
+
+private java.lang.reflect.Field[] getFullListOfFields(
+boolean)
+
+private native java.lang.String getInnerClassName()
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchMethodException; )
+@dalvik.annotation.Signature (value =([Ljava/lang/reflect/Constructor<TT;>;[Ljava/lang/Class<*>;)Ljava/lang/reflect/Constructor<TT;>; )
+private java.lang.reflect.Constructor getMatchingConstructor(
+java.lang.reflect.Constructor[]
+java.lang.Class[])
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchFieldException; )
+private static java.lang.reflect.Field getMatchingField(
+java.lang.reflect.Field[]
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Z)I )
+private static native int getModifiers(
+java.lang.Class
+boolean)
+
+private native java.lang.Object[] getSignatureAnnotation()
+
+private java.lang.String getSignatureAttribute()
+@dalvik.annotation.Signature (value =(IZ)[Ljava/lang/Class<*>; )
+static final java.lang.Class[] getStackClasses(
+int
+boolean)
+
+static native void setAccessibleNoCheck(
+java.lang.reflect.AccessibleObject
+boolean)
+@dalvik.annotation.Signature (value =<U:Ljava/lang/Object;>(Ljava/lang/Class<TU;>;)Ljava/lang/Class<+TU;>; )
+public java.lang.Class asSubclass(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TT; )
+public java.lang.Object cast(
+java.lang.Object)
+
+ void checkPublicMemberAccess()
+
+public native boolean desiredAssertionStatus()
+@dalvik.annotation.Signature (value =<A::Ljava/lang/annotation/Annotation;>(Ljava/lang/Class<TA;>;)TA; )
+public java.lang.annotation.Annotation getAnnotation(
+java.lang.Class)
+
+public java.lang.annotation.Annotation[] getAnnotations()
+
+public java.lang.String getCanonicalName()
+@dalvik.annotation.Signature (value =()Ljava/lang/ClassCache<TT;>; )
+ java.lang.ClassCache getClassCache()
+
+public java.lang.ClassLoader getClassLoader()
+
+ java.lang.ClassLoader getClassLoaderImpl()
+@dalvik.annotation.Signature (value =()[Ljava/lang/Class<*>; )
+public java.lang.Class[] getClasses()
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<*>; )
+public native java.lang.Class getComponentType()
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchMethodException;Ljava/lang/SecurityException; )
+@dalvik.annotation.Signature (value =([Ljava/lang/Class;)Ljava/lang/reflect/Constructor<TT;>; )
+public transient java.lang.reflect.Constructor getConstructor(
+java.lang.Class[])
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+@dalvik.annotation.Signature (value =()[Ljava/lang/reflect/Constructor<TT;>; )
+public java.lang.reflect.Constructor[] getConstructors()
+
+public native java.lang.annotation.Annotation[] getDeclaredAnnotations()
+@dalvik.annotation.Signature (value =()[Ljava/lang/Class<*>; )
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+public java.lang.Class[] getDeclaredClasses()
+@dalvik.annotation.Signature (value =([Ljava/lang/Class;)Ljava/lang/reflect/Constructor<TT;>; )
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchMethodException;Ljava/lang/SecurityException; )
+public transient java.lang.reflect.Constructor getDeclaredConstructor(
+java.lang.Class[])
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+@dalvik.annotation.Signature (value =()[Ljava/lang/reflect/Constructor<TT;>; )
+public java.lang.reflect.Constructor[] getDeclaredConstructors()
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchFieldException;Ljava/lang/SecurityException; )
+public java.lang.reflect.Field getDeclaredField(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+public java.lang.reflect.Field[] getDeclaredFields()
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchMethodException;Ljava/lang/SecurityException; )
+public transient java.lang.reflect.Method getDeclaredMethod(
+java.lang.String
+java.lang.Class[])
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+public java.lang.reflect.Method[] getDeclaredMethods()
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<*>; )
+public native java.lang.Class getDeclaringClass()
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<*>; )
+public native java.lang.Class getEnclosingClass()
+@dalvik.annotation.Signature (value =()Ljava/lang/reflect/Constructor<*>; )
+public native java.lang.reflect.Constructor getEnclosingConstructor()
+
+public native java.lang.reflect.Method getEnclosingMethod()
+@dalvik.annotation.Signature (value =()[TT; )
+public java.lang.Object[] getEnumConstants()
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchFieldException;Ljava/lang/SecurityException; )
+public java.lang.reflect.Field getField(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+public java.lang.reflect.Field[] getFields()
+
+public java.lang.reflect.Type[] getGenericInterfaces()
+
+public java.lang.reflect.Type getGenericSuperclass()
+@dalvik.annotation.Signature (value =()[Ljava/lang/Class<*>; )
+public native java.lang.Class[] getInterfaces()
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchMethodException;Ljava/lang/SecurityException; )
+public transient java.lang.reflect.Method getMethod(
+java.lang.String
+java.lang.Class[])
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+public java.lang.reflect.Method[] getMethods()
+
+public int getModifiers()
+
+public native java.lang.String getName()
+
+public java.lang.Package getPackage()
+
+public java.security.ProtectionDomain getProtectionDomain()
+
+public java.net.URL getResource(
+java.lang.String)
+
+public java.io.InputStream getResourceAsStream(
+java.lang.String)
+
+public java.lang.Object[] getSigners()
+
+public java.lang.String getSimpleName()
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<-TT;>; )
+public native java.lang.Class getSuperclass()
+@dalvik.annotation.Signature (value =()[Ljava/lang/reflect/TypeVariable<Ljava/lang/Class<TT;>;>; )
+public java.lang.reflect.TypeVariable[] getTypeParameters()
+
+public boolean isAnnotation()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Z )
+public boolean isAnnotationPresent(
+java.lang.Class)
+
+public native boolean isAnonymousClass()
+
+public boolean isArray()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Z )
+public native boolean isAssignableFrom(
+java.lang.Class)
+
+public boolean isEnum()
+
+public native boolean isInstance(
+java.lang.Object)
+
+public native boolean isInterface()
+
+public boolean isLocalClass()
+
+public boolean isMemberClass()
+
+public native boolean isPrimitive()
+
+public boolean isSynthetic()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/InstantiationException; )
+@dalvik.annotation.Signature (value =()TT; )
+public native java.lang.Object newInstance()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/ClassCache; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class java.lang.ClassCache$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Comparator<Ljava/lang/Enum<*>;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =EnumComparator )
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/ClassCache; )
+ class java.lang.ClassCache$EnumComparator extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+java.lang.ClassCache$1)
+@dalvik.annotation.Signature (value =(Ljava/lang/Enum<*>;Ljava/lang/Enum<*>;)I )
+public int compare(
+java.lang.Enum
+java.lang.Enum)
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/lang/ClassCache$1;Ljava/lang/ClassCache$EnumComparator; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+ class java.lang.ClassCache extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.ClassCache$EnumComparator ENUM_COMPARATOR
+
+static final org.apache.harmony.kernel.vm.ReflectionAccess REFLECT
+
+private volatile java.lang.reflect.Method[] allMethods
+
+private volatile java.lang.reflect.Method[] allPublicMethods
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TT;>; )
+private final java.lang.Class clazz
+
+private volatile java.lang.reflect.Method[] declaredMethods
+
+private volatile java.lang.reflect.Method[] declaredPublicMethods
+@dalvik.annotation.Signature (value =[TT; )
+private volatile java.lang.Object[] enumValuesByName
+@dalvik.annotation.Signature (value =[TT; )
+private volatile java.lang.Object[] enumValuesInOrder
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<TT;>;)V )
+ void <init>(
+java.lang.Class)
+@dalvik.annotation.Signature (value =()[TT; )
+private java.lang.Object[] callEnumValues()
+@dalvik.annotation.Signature (value =([Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Z )
+public static boolean compareClassLists(
+java.lang.Class[]
+java.lang.Class[])
+
+public static java.lang.reflect.Method[] deepCopy(
+java.lang.reflect.Method[])
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Ljava/util/ArrayList<Ljava/lang/reflect/Method;>;Ljava/util/HashSet<Ljava/lang/String;>;Z)V )
+private static void getFullListOfMethods(
+java.lang.Class
+java.util.ArrayList
+java.util.HashSet
+boolean)
+
+private java.lang.reflect.Method[] getFullListOfMethods(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchMethodException; )
+@dalvik.annotation.Signature (value =([Ljava/lang/reflect/Method;Ljava/lang/String;[Ljava/lang/Class<*>;)Ljava/lang/reflect/Method; )
+public static java.lang.reflect.Method getMatchingMethod(
+java.lang.reflect.Method[]
+java.lang.String
+java.lang.Class[])
+
+private static org.apache.harmony.kernel.vm.ReflectionAccess getReflectionAccess()
+
+public java.lang.reflect.Method[] getAllMethods()
+
+public java.lang.reflect.Method[] getAllPublicMethods()
+
+public java.lang.reflect.Method[] getDeclaredMethods()
+
+public java.lang.reflect.Method[] getDeclaredMethods(
+boolean)
+
+public java.lang.reflect.Method[] getDeclaredPublicMethods()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)TT; )
+public java.lang.Object getEnumValue(
+java.lang.String)
+@dalvik.annotation.Signature (value =()[TT; )
+public java.lang.Object[] getEnumValuesByName()
+@dalvik.annotation.Signature (value =()[TT; )
+public java.lang.Object[] getEnumValuesInOrder()
+
+________________CLASS________________
+
+
+public class java.lang.ClassCastException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Ljava/lang/Class<*>;)V )
+ void <init>(
+java.lang.Class
+java.lang.Class)
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.ClassCircularityError extends java.lang.LinkageError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.ClassFormatError extends java.lang.LinkageError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/ClassLoader; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =SystemClassLoader )
+ class java.lang.ClassLoader$SystemClassLoader extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static java.lang.ClassLoader loader
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+
+public class java.lang.ClassNotFoundException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.Throwable ex
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public java.lang.Throwable getCause()
+
+public java.lang.Throwable getException()
+
+________________CLASS________________
+
+
+public class java.lang.CloneNotSupportedException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class java.lang.Compiler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static java.lang.Object command(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Z )
+public static boolean compileClass(
+java.lang.Class)
+
+public static boolean compileClasses(
+java.lang.String)
+
+public static void disable()
+
+public static void enable()
+
+________________CLASS________________
+
+@java.lang.annotation.Documented
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+public abstract interface class java.lang.Deprecated extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Double;>; )
+public final class java.lang.Double extends java.lang.Number implements java.lang.Comparable
+
+----------------FIELDS----------------
+
+public static final double MAX_VALUE
+
+public static final double MIN_VALUE
+
+public static final double NEGATIVE_INFINITY
+
+public static final double NaN
+
+public static final double POSITIVE_INFINITY
+
+public static final int SIZE
+@dalvik.annotation.Signature (value =Ljava/lang/Class<Ljava/lang/Double;>; )
+public static final java.lang.Class TYPE
+
+private static final long serialVersionUID
+
+private final double value
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+double)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public void <init>(
+java.lang.String)
+
+public static int compare(
+double
+double)
+
+public static native long doubleToLongBits(
+double)
+
+public static native long doubleToRawLongBits(
+double)
+
+public static boolean isInfinite(
+double)
+
+public static boolean isNaN(
+double)
+
+public static native double longBitsToDouble(
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static double parseDouble(
+java.lang.String)
+
+public static java.lang.String toHexString(
+double)
+
+public static java.lang.String toString(
+double)
+
+public static java.lang.Double valueOf(
+double)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static java.lang.Double valueOf(
+java.lang.String)
+
+public byte byteValue()
+
+public int compareTo(
+java.lang.Double)
+
+public volatile int compareTo(
+java.lang.Object)
+
+public double doubleValue()
+
+public boolean equals(
+java.lang.Object)
+
+public float floatValue()
+
+public int hashCode()
+
+public int intValue()
+
+public boolean isInfinite()
+
+public boolean isNaN()
+
+public long longValue()
+
+public short shortValue()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Enumeration<Ljava/net/URL;>;Ljava/io/Serializable; )
+final class java.lang.EmptyEnumeration extends java.lang.Object implements java.util.Enumeration, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final java.lang.EmptyEnumeration mInst
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static java.lang.EmptyEnumeration getInstance()
+
+public boolean hasMoreElements()
+
+public volatile java.lang.Object nextElement()
+
+public java.net.URL nextElement()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract interface class java.security.PrivilegedExceptionAction extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =()TT; )
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public abstract java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Ljava/lang/reflect/Method;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class java.lang.Enum$1 extends java.lang.Object implements java.security.PrivilegedExceptionAction
+
+----------------FIELDS----------------
+
+final java.lang.Class val$enumType
+----------------METHODS----------------
+
+ void <init>(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public volatile java.lang.Object run()
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public java.lang.reflect.Method run()
+
+________________CLASS________________
+
+
+public class java.lang.EnumConstantNotPresentException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final java.lang.String constantName
+@dalvik.annotation.Signature (value =Ljava/lang/Class<+Ljava/lang/Enum;>; )
+private final java.lang.Class enumType
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<+Ljava/lang/Enum;>;Ljava/lang/String;)V )
+public void <init>(
+java.lang.Class
+java.lang.String)
+
+public java.lang.String constantName()
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<+Ljava/lang/Enum;>; )
+public java.lang.Class enumType()
+
+________________CLASS________________
+
+
+public class java.lang.ExceptionInInitializerError extends java.lang.LinkageError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.Throwable exception
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.Throwable)
+
+public java.lang.Throwable getCause()
+
+public java.lang.Throwable getException()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Float;>; )
+public final class java.lang.Float extends java.lang.Number implements java.lang.Comparable
+
+----------------FIELDS----------------
+
+public static final float MAX_VALUE
+
+public static final float MIN_VALUE
+
+public static final float NEGATIVE_INFINITY
+
+public static final float NaN
+
+public static final float POSITIVE_INFINITY
+
+public static final int SIZE
+@dalvik.annotation.Signature (value =Ljava/lang/Class<Ljava/lang/Float;>; )
+public static final java.lang.Class TYPE
+
+private static final long serialVersionUID
+
+private final float value
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+double)
+
+public void <init>(
+float)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public void <init>(
+java.lang.String)
+
+public static int compare(
+float
+float)
+
+public static native int floatToIntBits(
+float)
+
+public static native int floatToRawIntBits(
+float)
+
+public static native float intBitsToFloat(
+int)
+
+public static boolean isInfinite(
+float)
+
+public static boolean isNaN(
+float)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static float parseFloat(
+java.lang.String)
+
+public static java.lang.String toHexString(
+float)
+
+public static java.lang.String toString(
+float)
+
+public static java.lang.Float valueOf(
+float)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static java.lang.Float valueOf(
+java.lang.String)
+
+public byte byteValue()
+
+public int compareTo(
+java.lang.Float)
+
+public volatile int compareTo(
+java.lang.Object)
+
+public double doubleValue()
+
+public boolean equals(
+java.lang.Object)
+
+public float floatValue()
+
+public int hashCode()
+
+public int intValue()
+
+public boolean isInfinite()
+
+public boolean isNaN()
+
+public long longValue()
+
+public short shortValue()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.lang.IllegalAccessError extends java.lang.IncompatibleClassChangeError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.IllegalAccessException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.IllegalArgumentException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class java.lang.IllegalMonitorStateException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.IllegalStateException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class java.lang.IllegalThreadStateException extends java.lang.IllegalArgumentException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+@dalvik.annotation.MemberClasses (value =Ljava/lang/ThreadLocal$Values; )
+public class java.lang.ThreadLocal extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.util.concurrent.atomic.AtomicInteger hashCounter
+
+private final int hash
+@dalvik.annotation.Signature (value =Ljava/lang/ref/Reference<Ljava/lang/ThreadLocal<TT;>;>; )
+private final java.lang.ref.Reference reference
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static int access$200(
+java.lang.ThreadLocal)
+
+static java.lang.ref.Reference access$300(
+java.lang.ThreadLocal)
+@dalvik.annotation.Signature (value =()TT; )
+public java.lang.Object get()
+@dalvik.annotation.Signature (value =()TT; )
+protected java.lang.Object initialValue()
+
+ java.lang.ThreadLocal$Values initializeValues(
+java.lang.Thread)
+
+public void remove()
+@dalvik.annotation.Signature (value =(TT;)V )
+public void set(
+java.lang.Object)
+
+ java.lang.ThreadLocal$Values values(
+java.lang.Thread)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/ThreadLocal<TT;>; )
+public class java.lang.InheritableThreadLocal extends java.lang.ThreadLocal
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =(TT;)TT; )
+protected java.lang.Object childValue(
+java.lang.Object)
+
+ java.lang.ThreadLocal$Values initializeValues(
+java.lang.Thread)
+
+ java.lang.ThreadLocal$Values values(
+java.lang.Thread)
+
+________________CLASS________________
+
+
+public class java.lang.InstantiationError extends java.lang.IncompatibleClassChangeError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)V )
+ void <init>(
+java.lang.Class)
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.InstantiationException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)V )
+ void <init>(
+java.lang.Class)
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =valueOfCache )
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/Integer; )
+ class java.lang.Integer$valueOfCache extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final java.lang.Integer[] CACHE
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Integer;>; )
+@dalvik.annotation.MemberClasses (value =Ljava/lang/Integer$valueOfCache; )
+public final class java.lang.Integer extends java.lang.Number implements java.lang.Comparable
+
+----------------FIELDS----------------
+
+public static final int MAX_VALUE
+
+public static final int MIN_VALUE
+
+public static final int SIZE
+@dalvik.annotation.Signature (value =Ljava/lang/Class<Ljava/lang/Integer;>; )
+public static final java.lang.Class TYPE
+
+private static final long serialVersionUID
+
+private final int value
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public void <init>(
+java.lang.String)
+
+public static int bitCount(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static java.lang.Integer decode(
+java.lang.String)
+
+public static java.lang.Integer getInteger(
+java.lang.String)
+
+public static java.lang.Integer getInteger(
+java.lang.String
+int)
+
+public static java.lang.Integer getInteger(
+java.lang.String
+java.lang.Integer)
+
+public static int highestOneBit(
+int)
+
+public static int lowestOneBit(
+int)
+
+public static int numberOfLeadingZeros(
+int)
+
+public static int numberOfTrailingZeros(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+private static int parse(
+java.lang.String
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static int parseInt(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static int parseInt(
+java.lang.String
+int)
+
+public static int reverse(
+int)
+
+public static int reverseBytes(
+int)
+
+public static int rotateLeft(
+int
+int)
+
+public static int rotateRight(
+int
+int)
+
+public static int signum(
+int)
+
+public static java.lang.String toBinaryString(
+int)
+
+public static java.lang.String toHexString(
+int)
+
+public static java.lang.String toOctalString(
+int)
+
+public static java.lang.String toString(
+int)
+
+public static java.lang.String toString(
+int
+int)
+
+public static java.lang.Integer valueOf(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static java.lang.Integer valueOf(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static java.lang.Integer valueOf(
+java.lang.String
+int)
+
+public byte byteValue()
+
+public int compareTo(
+java.lang.Integer)
+
+public volatile int compareTo(
+java.lang.Object)
+
+public double doubleValue()
+
+public boolean equals(
+java.lang.Object)
+
+public float floatValue()
+
+public int hashCode()
+
+public int intValue()
+
+public long longValue()
+
+public short shortValue()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.lang.InternalError extends java.lang.VirtualMachineError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.InterruptedException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract interface class java.lang.Iterable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TT;>; )
+public abstract java.util.Iterator iterator()
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.kernel.vm.LangAccess extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static org.apache.harmony.kernel.vm.LangAccess theInstance
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static org.apache.harmony.kernel.vm.LangAccess getInstance()
+
+public static void setInstance(
+org.apache.harmony.kernel.vm.LangAccess)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)[TT; )
+public abstract java.lang.Object[] getEnumValuesInOrder(
+java.lang.Class)
+
+public abstract void parkFor(
+long)
+
+public abstract void parkUntil(
+long)
+
+public abstract void unpark(
+java.lang.Thread)
+
+________________CLASS________________
+
+
+final class java.lang.LangAccessImpl extends org.apache.harmony.kernel.vm.LangAccess
+
+----------------FIELDS----------------
+
+static final java.lang.LangAccessImpl THE_ONE
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)[TT; )
+public java.lang.Object[] getEnumValuesInOrder(
+java.lang.Class)
+
+public void parkFor(
+long)
+
+public void parkUntil(
+long)
+
+public void unpark(
+java.lang.Thread)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =valueOfCache )
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/Long; )
+ class java.lang.Long$valueOfCache extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final java.lang.Long[] CACHE
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Long;>; )
+@dalvik.annotation.MemberClasses (value =Ljava/lang/Long$valueOfCache; )
+public final class java.lang.Long extends java.lang.Number implements java.lang.Comparable
+
+----------------FIELDS----------------
+
+public static final long MAX_VALUE
+
+public static final long MIN_VALUE
+
+public static final int SIZE
+@dalvik.annotation.Signature (value =Ljava/lang/Class<Ljava/lang/Long;>; )
+public static final java.lang.Class TYPE
+
+private static final long serialVersionUID
+
+private final long value
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public void <init>(
+java.lang.String)
+
+public static int bitCount(
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static java.lang.Long decode(
+java.lang.String)
+
+public static java.lang.Long getLong(
+java.lang.String)
+
+public static java.lang.Long getLong(
+java.lang.String
+long)
+
+public static java.lang.Long getLong(
+java.lang.String
+java.lang.Long)
+
+public static long highestOneBit(
+long)
+
+public static long lowestOneBit(
+long)
+
+public static int numberOfLeadingZeros(
+long)
+
+public static int numberOfTrailingZeros(
+long)
+
+private static long parse(
+java.lang.String
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static long parseLong(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static long parseLong(
+java.lang.String
+int)
+
+public static long reverse(
+long)
+
+public static long reverseBytes(
+long)
+
+public static long rotateLeft(
+long
+int)
+
+public static long rotateRight(
+long
+int)
+
+public static int signum(
+long)
+
+public static java.lang.String toBinaryString(
+long)
+
+public static java.lang.String toHexString(
+long)
+
+public static java.lang.String toOctalString(
+long)
+
+public static java.lang.String toString(
+long)
+
+public static java.lang.String toString(
+long
+int)
+
+public static java.lang.Long valueOf(
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static java.lang.Long valueOf(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static java.lang.Long valueOf(
+java.lang.String
+int)
+
+public byte byteValue()
+
+public int compareTo(
+java.lang.Long)
+
+public volatile int compareTo(
+java.lang.Object)
+
+public double doubleValue()
+
+public boolean equals(
+java.lang.Object)
+
+public float floatValue()
+
+public int hashCode()
+
+public int intValue()
+
+public long longValue()
+
+public short shortValue()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public final class java.lang.Math extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final double E
+
+public static final double PI
+
+private static java.util.Random random
+----------------METHODS----------------
+
+private void <init>()
+
+public static native double IEEEremainder(
+double
+double)
+
+public static double abs(
+double)
+
+public static float abs(
+float)
+
+public static int abs(
+int)
+
+public static long abs(
+long)
+
+public static native double acos(
+double)
+
+public static native double asin(
+double)
+
+public static native double atan(
+double)
+
+public static native double atan2(
+double
+double)
+
+public static native double cbrt(
+double)
+
+public static native double ceil(
+double)
+
+public static native double cos(
+double)
+
+public static native double cosh(
+double)
+
+public static native double exp(
+double)
+
+public static native double expm1(
+double)
+
+public static native double floor(
+double)
+
+public static native double hypot(
+double
+double)
+
+public static native double log(
+double)
+
+public static native double log10(
+double)
+
+public static native double log1p(
+double)
+
+public static double max(
+double
+double)
+
+public static float max(
+float
+float)
+
+public static int max(
+int
+int)
+
+public static long max(
+long
+long)
+
+public static double min(
+double
+double)
+
+public static float min(
+float
+float)
+
+public static int min(
+int
+int)
+
+public static long min(
+long
+long)
+
+private static native double nextafter(
+double
+double)
+
+private static native float nextafterf(
+float
+float)
+
+public static native double pow(
+double
+double)
+
+public static double random()
+
+public static native double rint(
+double)
+
+public static int round(
+float)
+
+public static long round(
+double)
+
+public static double signum(
+double)
+
+public static float signum(
+float)
+
+public static native double sin(
+double)
+
+public static native double sinh(
+double)
+
+public static native double sqrt(
+double)
+
+public static native double tan(
+double)
+
+public static native double tanh(
+double)
+
+public static double toDegrees(
+double)
+
+public static double toRadians(
+double)
+
+public static double ulp(
+double)
+
+public static float ulp(
+float)
+
+________________CLASS________________
+
+
+public class java.lang.NegativeArraySizeException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.NoClassDefFoundError extends java.lang.LinkageError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.NoSuchFieldError extends java.lang.IncompatibleClassChangeError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.NoSuchFieldException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.NoSuchMethodError extends java.lang.IncompatibleClassChangeError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.NoSuchMethodException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.NullPointerException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.NumberFormatException extends java.lang.IllegalArgumentException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.OutOfMemoryError extends java.lang.VirtualMachineError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!SOURCE )
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!METHOD )
+public abstract interface class java.lang.Override extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class java.lang.Package extends java.lang.Object implements java.lang.reflect.AnnotatedElement
+
+----------------FIELDS----------------
+
+private final java.lang.String implTitle
+
+private final java.lang.String implVendor
+
+private final java.lang.String implVersion
+
+private final java.lang.String name
+
+private final java.net.URL sealBase
+
+private final java.lang.String specTitle
+
+private final java.lang.String specVendor
+
+private final java.lang.String specVersion
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.net.URL)
+
+private static native java.lang.annotation.Annotation[] getDeclaredAnnotations(
+java.lang.Package
+boolean)
+
+public static java.lang.Package getPackage(
+java.lang.String)
+
+public static java.lang.Package[] getPackages()
+@dalvik.annotation.Signature (value =<T::Ljava/lang/annotation/Annotation;>(Ljava/lang/Class<TT;>;)TT; )
+public java.lang.annotation.Annotation getAnnotation(
+java.lang.Class)
+
+public java.lang.annotation.Annotation[] getAnnotations()
+
+public java.lang.annotation.Annotation[] getDeclaredAnnotations()
+
+public java.lang.String getImplementationTitle()
+
+public java.lang.String getImplementationVendor()
+
+public java.lang.String getImplementationVersion()
+
+public java.lang.String getName()
+
+public java.lang.String getSpecificationTitle()
+
+public java.lang.String getSpecificationVendor()
+
+public java.lang.String getSpecificationVersion()
+
+public int hashCode()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Z )
+public boolean isAnnotationPresent(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public boolean isCompatibleWith(
+java.lang.String)
+
+public boolean isSealed()
+
+public boolean isSealed(
+java.net.URL)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract class java.lang.Process extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public abstract void destroy()
+
+public abstract int exitValue()
+
+public abstract java.io.InputStream getErrorStream()
+
+public abstract java.io.InputStream getInputStream()
+
+public abstract java.io.OutputStream getOutputStream()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public abstract int waitFor()
+
+________________CLASS________________
+
+
+public final class java.lang.ProcessBuilder extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/lang/String;>; )
+private java.util.List command
+
+private java.io.File directory
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+private java.util.Map environment
+
+private boolean redirectErrorStream
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/List<Ljava/lang/String;>;)V )
+public void <init>(
+java.util.List)
+
+public transient void <init>(
+java.lang.String[])
+@dalvik.annotation.Signature (value =([Ljava/lang/String;)Ljava/util/List<Ljava/lang/String;>; )
+private static java.util.List toList(
+java.lang.String[])
+@dalvik.annotation.Signature (value =(Ljava/util/List<Ljava/lang/String;>;)Ljava/lang/ProcessBuilder; )
+public java.lang.ProcessBuilder command(
+java.util.List)
+
+public transient java.lang.ProcessBuilder command(
+java.lang.String[])
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List command()
+
+public java.io.File directory()
+
+public java.lang.ProcessBuilder directory(
+java.io.File)
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+public java.util.Map environment()
+
+public java.lang.ProcessBuilder redirectErrorStream(
+boolean)
+
+public boolean redirectErrorStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Process start()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.lang.ProcessManager$1 extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final java.lang.ProcessManager this$0
+----------------METHODS----------------
+
+ void <init>(
+java.lang.ProcessManager
+java.lang.String)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =ProcessImpl )
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/ProcessManager; )
+ class java.lang.ProcessManager$ProcessImpl extends java.lang.Process
+
+----------------FIELDS----------------
+
+final java.io.InputStream errorStream
+
+ java.lang.Integer exitValue
+
+final java.lang.Object exitValueMutex
+
+final int id
+
+final java.io.InputStream inputStream
+
+final java.io.OutputStream outputStream
+----------------METHODS----------------
+
+ void <init>(
+int
+java.io.FileDescriptor
+java.io.FileDescriptor
+java.io.FileDescriptor)
+
+public void destroy()
+
+public int exitValue()
+
+public java.io.InputStream getErrorStream()
+
+public java.io.InputStream getInputStream()
+
+public java.io.OutputStream getOutputStream()
+
+ void setExitValue(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public int waitFor()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =ProcessInputStream )
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/ProcessManager; )
+ class java.lang.ProcessManager$ProcessInputStream extends java.io.FileInputStream
+
+----------------FIELDS----------------
+
+private java.io.FileDescriptor fd
+----------------METHODS----------------
+
+private void <init>(
+java.io.FileDescriptor)
+
+ void <init>(
+java.io.FileDescriptor
+java.lang.ProcessManager$1)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/ProcessManager; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =ProcessOutputStream )
+ class java.lang.ProcessManager$ProcessOutputStream extends java.io.FileOutputStream
+
+----------------FIELDS----------------
+
+private java.io.FileDescriptor fd
+----------------METHODS----------------
+
+private void <init>(
+java.io.FileDescriptor)
+
+ void <init>(
+java.io.FileDescriptor
+java.lang.ProcessManager$1)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract class java.lang.ref.Reference extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.lang.ref.ReferenceQueue queue
+
+ java.lang.ref.Reference queueNext
+@dalvik.annotation.Signature (value =TT; )
+ java.lang.Object referent
+
+private int vmData
+----------------METHODS----------------
+
+ void <init>()
+
+private boolean enqueueInternal()
+
+public void clear()
+
+public boolean enqueue()
+@dalvik.annotation.Signature (value =()TT; )
+public java.lang.Object get()
+
+public boolean isEnqueued()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/ref/Reference<TT;>; )
+public class java.lang.ref.WeakReference extends java.lang.ref.Reference
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TT;)V )
+public void <init>(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;Ljava/lang/ref/ReferenceQueue<-TT;>;)V )
+public void <init>(
+java.lang.Object
+java.lang.ref.ReferenceQueue)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/ref/WeakReference<Ljava/lang/ProcessManager$ProcessImpl;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =ProcessReference )
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/ProcessManager; )
+ class java.lang.ProcessManager$ProcessReference extends java.lang.ref.WeakReference
+
+----------------FIELDS----------------
+
+final int processId
+----------------METHODS----------------
+
+public void <init>(
+java.lang.ProcessManager$ProcessImpl
+java.lang.ProcessManager$ProcessReferenceQueue)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+public class java.lang.ref.ReferenceQueue extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/lang/ref/Reference<+TT;>; )
+private java.lang.ref.Reference head
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Ljava/lang/ref/Reference<+TT;>;)V )
+ void enqueue(
+java.lang.ref.Reference)
+@dalvik.annotation.Signature (value =()Ljava/lang/ref/Reference<+TT;>; )
+public java.lang.ref.Reference poll()
+@dalvik.annotation.Signature (value =()Ljava/lang/ref/Reference<+TT;>; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public java.lang.ref.Reference remove()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/InterruptedException; )
+@dalvik.annotation.Signature (value =(J)Ljava/lang/ref/Reference<+TT;>; )
+public java.lang.ref.Reference remove(
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/ref/ReferenceQueue<Ljava/lang/ProcessManager$ProcessImpl;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =ProcessReferenceQueue )
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/ProcessManager; )
+ class java.lang.ProcessManager$ProcessReferenceQueue extends java.lang.ref.ReferenceQueue
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.ProcessManager$ProcessReference poll()
+
+public volatile java.lang.ref.Reference poll()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/lang/ProcessManager$ProcessOutputStream;Ljava/lang/ProcessManager$ProcessInputStream;Ljava/lang/ProcessManager$ProcessReferenceQueue;Ljava/lang/ProcessManager$ProcessReference;Ljava/lang/ProcessManager$ProcessImpl; )
+final class java.lang.ProcessManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int WAIT_STATUS_NO_CHILDREN
+
+private static final int WAIT_STATUS_STRANGE_ERRNO
+
+private static final int WAIT_STATUS_UNKNOWN
+
+static final java.lang.ProcessManager instance
+
+private int childCount
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/Integer;Ljava/lang/ProcessManager$ProcessReference;>; )
+private final java.util.Map processReferences
+
+private final java.lang.ProcessManager$ProcessReferenceQueue referenceQueue
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+static void access$200(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static void access$300(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static native void close(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int exec(
+java.lang.String[]
+java.lang.String[]
+java.lang.String
+java.io.FileDescriptor
+java.io.FileDescriptor
+java.io.FileDescriptor)
+
+static java.lang.ProcessManager getInstance()
+
+private static native void kill(
+int)
+
+static native void staticInitialize()
+
+ void cleanUp()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ java.lang.Process exec(
+java.lang.String[]
+java.lang.String[]
+java.io.File)
+
+ void onExit(
+int
+int)
+
+native void watchChildren()
+
+________________CLASS________________
+
+
+ class java.lang.ReaderInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+private byte[] bytes
+
+private int nextByte
+
+private int numBytes
+
+private java.io.Reader reader
+----------------METHODS----------------
+
+public void <init>(
+java.io.Reader)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void readBuffer()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+
+________________CLASS________________
+
+
+public class java.lang.Runtime extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static boolean finalizeOnExit
+
+private static final java.lang.Runtime mRuntime
+
+private final java.lang.String[] mLibPaths
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/lang/Thread;>; )
+private java.util.List shutdownHooks
+
+private boolean shuttingDown
+
+private boolean tracingMethods
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static java.lang.Runtime getRuntime()
+
+private static native void nativeExit(
+int
+boolean)
+
+private static native boolean nativeLoad(
+java.lang.String
+java.lang.ClassLoader)
+
+private native void runFinalization(
+boolean)
+@java.lang.Deprecated
+public static void runFinalizersOnExit(
+boolean)
+
+public void addShutdownHook(
+java.lang.Thread)
+
+public int availableProcessors()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Process exec(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Process exec(
+java.lang.String
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Process exec(
+java.lang.String
+java.lang.String[]
+java.io.File)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Process exec(
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Process exec(
+java.lang.String[]
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Process exec(
+java.lang.String[]
+java.lang.String[]
+java.io.File)
+
+public void exit(
+int)
+
+public native long freeMemory()
+
+public native void gc()
+@java.lang.Deprecated
+public java.io.InputStream getLocalizedInputStream(
+java.io.InputStream)
+@java.lang.Deprecated
+public java.io.OutputStream getLocalizedOutputStream(
+java.io.OutputStream)
+
+public void halt(
+int)
+
+public void load(
+java.lang.String)
+
+ void load(
+java.lang.String
+java.lang.ClassLoader)
+
+public void loadLibrary(
+java.lang.String)
+
+ void loadLibrary(
+java.lang.String
+java.lang.ClassLoader)
+
+public native long maxMemory()
+
+public boolean removeShutdownHook(
+java.lang.Thread)
+
+public void runFinalization()
+
+public native long totalMemory()
+
+public void traceInstructions(
+boolean)
+
+public void traceMethodCalls(
+boolean)
+
+________________CLASS________________
+
+
+public final class java.lang.RuntimePermission extends java.security.BasicPermission
+
+----------------FIELDS----------------
+
+static final java.lang.RuntimePermission permissionToCreateClassLoader
+
+static final java.lang.RuntimePermission permissionToCreateSecurityManager
+
+static final java.lang.RuntimePermission permissionToExitVM
+
+static final java.lang.RuntimePermission permissionToGetClassLoader
+
+static final java.lang.RuntimePermission permissionToGetProtectionDomain
+
+static final java.lang.RuntimePermission permissionToModifyThread
+
+static final java.lang.RuntimePermission permissionToModifyThreadGroup
+
+static final java.lang.RuntimePermission permissionToQueuePrintJob
+
+static final java.lang.RuntimePermission permissionToReadFileDescriptor
+
+static final java.lang.RuntimePermission permissionToSetContextClassLoader
+
+static final java.lang.RuntimePermission permissionToSetFactory
+
+static final java.lang.RuntimePermission permissionToSetIO
+
+static final java.lang.RuntimePermission permissionToSetSecurityManager
+
+static final java.lang.RuntimePermission permissionToStopThread
+
+static final java.lang.RuntimePermission permissionToWriteFileDescriptor
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.SecurityException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class java.lang.SecurityManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String PKG_ACC_KEY
+
+private static final java.lang.String PKG_DEF_KEY
+
+private static final java.util.PropertyPermission READ_WRITE_ALL_PROPERTIES_PERMISSION
+@java.lang.Deprecated
+protected boolean inCheck
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static boolean checkPackageProperty(
+java.lang.String
+java.lang.String)
+
+public void checkAccept(
+java.lang.String
+int)
+
+public void checkAccess(
+java.lang.Thread)
+
+public void checkAccess(
+java.lang.ThreadGroup)
+
+public void checkAwtEventQueueAccess()
+
+public void checkConnect(
+java.lang.String
+int)
+
+public void checkConnect(
+java.lang.String
+int
+java.lang.Object)
+
+public void checkCreateClassLoader()
+
+public void checkDelete(
+java.lang.String)
+
+public void checkExec(
+java.lang.String)
+
+public void checkExit(
+int)
+
+public void checkLink(
+java.lang.String)
+
+public void checkListen(
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;I)V )
+public void checkMemberAccess(
+java.lang.Class
+int)
+
+public void checkMulticast(
+java.net.InetAddress)
+@java.lang.Deprecated
+public void checkMulticast(
+java.net.InetAddress
+byte)
+
+public void checkPackageAccess(
+java.lang.String)
+
+public void checkPackageDefinition(
+java.lang.String)
+
+public void checkPermission(
+java.security.Permission)
+
+public void checkPermission(
+java.security.Permission
+java.lang.Object)
+
+public void checkPrintJobAccess()
+
+public void checkPropertiesAccess()
+
+public void checkPropertyAccess(
+java.lang.String)
+
+public void checkRead(
+java.io.FileDescriptor)
+
+public void checkRead(
+java.lang.String)
+
+public void checkRead(
+java.lang.String
+java.lang.Object)
+
+public void checkSecurityAccess(
+java.lang.String)
+
+public void checkSetFactory()
+
+public void checkSystemClipboardAccess()
+
+public boolean checkTopLevelWindow(
+java.lang.Object)
+
+public void checkWrite(
+java.io.FileDescriptor)
+
+public void checkWrite(
+java.lang.String)
+@java.lang.Deprecated
+protected int classDepth(
+java.lang.String)
+@java.lang.Deprecated
+protected int classLoaderDepth()
+@java.lang.Deprecated
+protected java.lang.ClassLoader currentClassLoader()
+@java.lang.Deprecated
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<*>; )
+protected java.lang.Class currentLoadedClass()
+
+protected java.lang.Class[] getClassContext()
+@java.lang.Deprecated
+public boolean getInCheck()
+
+public java.lang.Object getSecurityContext()
+
+public java.lang.ThreadGroup getThreadGroup()
+@java.lang.Deprecated
+protected boolean inClass(
+java.lang.String)
+@java.lang.Deprecated
+protected boolean inClassLoader()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/Short; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =valueOfCache )
+ class java.lang.Short$valueOfCache extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.Short[] CACHE
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+static java.lang.Short[] access$000()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Number;Ljava/lang/Comparable<Ljava/lang/Short;>; )
+@dalvik.annotation.MemberClasses (value =Ljava/lang/Short$valueOfCache; )
+public final class java.lang.Short extends java.lang.Number implements java.lang.Comparable
+
+----------------FIELDS----------------
+
+public static final short MAX_VALUE
+
+public static final short MIN_VALUE
+
+public static final int SIZE
+@dalvik.annotation.Signature (value =Ljava/lang/Class<Ljava/lang/Short;>; )
+public static final java.lang.Class TYPE
+
+private static final long serialVersionUID
+
+private final short value
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public void <init>(
+java.lang.String)
+
+public void <init>(
+short)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static java.lang.Short decode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static short parseShort(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static short parseShort(
+java.lang.String
+int)
+
+public static short reverseBytes(
+short)
+
+public static java.lang.String toString(
+short)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static java.lang.Short valueOf(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/NumberFormatException; )
+public static java.lang.Short valueOf(
+java.lang.String
+int)
+
+public static java.lang.Short valueOf(
+short)
+
+public byte byteValue()
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.lang.Short)
+
+public double doubleValue()
+
+public boolean equals(
+java.lang.Object)
+
+public float floatValue()
+
+public int hashCode()
+
+public int intValue()
+
+public long longValue()
+
+public short shortValue()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.lang.StackOverflowError extends java.lang.VirtualMachineError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class java.lang.StackTraceElement extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final int NATIVE_LINE_NUMBER
+
+private static final long serialVersionUID
+
+ java.lang.String declaringClass
+
+ java.lang.String fileName
+
+ int lineNumber
+
+ java.lang.String methodName
+----------------METHODS----------------
+
+private void <init>()
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+int)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getClassName()
+
+public java.lang.String getFileName()
+
+public int getLineNumber()
+
+public java.lang.String getMethodName()
+
+public int hashCode()
+
+public boolean isNativeMethod()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public final class java.lang.StrictMath extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final double E
+
+public static final double PI
+
+private static java.util.Random random
+----------------METHODS----------------
+
+private void <init>()
+
+public static native double IEEEremainder(
+double
+double)
+
+public static double abs(
+double)
+
+public static float abs(
+float)
+
+public static int abs(
+int)
+
+public static long abs(
+long)
+
+public static native double acos(
+double)
+
+public static native double asin(
+double)
+
+public static native double atan(
+double)
+
+public static native double atan2(
+double
+double)
+
+public static native double cbrt(
+double)
+
+public static native double ceil(
+double)
+
+public static native double cos(
+double)
+
+public static native double cosh(
+double)
+
+public static native double exp(
+double)
+
+public static native double expm1(
+double)
+
+public static native double floor(
+double)
+
+public static native double hypot(
+double
+double)
+
+public static native double log(
+double)
+
+public static native double log10(
+double)
+
+public static native double log1p(
+double)
+
+public static double max(
+double
+double)
+
+public static float max(
+float
+float)
+
+public static int max(
+int
+int)
+
+public static long max(
+long
+long)
+
+public static double min(
+double
+double)
+
+public static float min(
+float
+float)
+
+public static int min(
+int
+int)
+
+public static long min(
+long
+long)
+
+private static native double nextafter(
+double
+double)
+
+private static native float nextafterf(
+float
+float)
+
+public static native double pow(
+double
+double)
+
+public static double random()
+
+public static native double rint(
+double)
+
+public static int round(
+float)
+
+public static long round(
+double)
+
+public static double signum(
+double)
+
+public static float signum(
+float)
+
+public static native double sin(
+double)
+
+public static native double sinh(
+double)
+
+public static native double sqrt(
+double)
+
+public static native double tan(
+double)
+
+public static native double tanh(
+double)
+
+public static double toDegrees(
+double)
+
+public static double toRadians(
+double)
+
+public static double ulp(
+double)
+
+public static float ulp(
+float)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/String; )
+ class java.lang.String$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/String; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =CaseInsensitiveComparator )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Comparator<Ljava/lang/String;>;Ljava/io/Serializable; )
+final class java.lang.String$CaseInsensitiveComparator extends java.lang.Object implements java.util.Comparator, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+java.lang.String$1)
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+public int compare(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/String; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =ConsolePrintStream )
+ class java.lang.String$ConsolePrintStream extends java.io.PrintStream
+
+----------------FIELDS----------------
+
+private static java.lang.String charset
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.io.OutputStream)
+
+public void print(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Comparable<Ljava/lang/String;>;Ljava/lang/CharSequence; )
+@dalvik.annotation.MemberClasses (value =Ljava/lang/String$1;Ljava/lang/String$CaseInsensitiveComparator;Ljava/lang/String$ConsolePrintStream; )
+public final class java.lang.String extends java.lang.Object implements java.io.Serializable, java.lang.Comparable, java.lang.CharSequence
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Comparator<Ljava/lang/String;>; )
+public static final java.util.Comparator CASE_INSENSITIVE_ORDER
+
+private static java.nio.charset.Charset DefaultCharset
+
+private static final char REPLACEMENT_CHAR
+
+private static final char[] ascii
+
+private static java.nio.charset.Charset lastCharset
+
+private static final long serialVersionUID
+
+private static final char[] upperValues
+
+private final int count
+
+private int hashCode
+
+private final int offset
+
+private final char[] value
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+ void <init>(
+int
+int
+char[])
+
+public void <init>(
+java.lang.String)
+
+private void <init>(
+java.lang.String
+char)
+
+private void <init>(
+java.lang.String
+int)
+
+public void <init>(
+java.lang.StringBuffer)
+
+public void <init>(
+java.lang.StringBuilder)
+
+public void <init>(
+byte[])
+@java.lang.Deprecated
+public void <init>(
+byte[]
+int)
+
+public void <init>(
+byte[]
+int
+int)
+@java.lang.Deprecated
+public void <init>(
+byte[]
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+byte[]
+int
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+byte[]
+java.lang.String)
+
+public void <init>(
+char[])
+
+public void <init>(
+char[]
+int
+int)
+
+public void <init>(
+int[]
+int
+int)
+
+public static java.lang.String copyValueOf(
+char[])
+
+public static java.lang.String copyValueOf(
+char[]
+int
+int)
+
+private java.nio.charset.Charset defaultCharset()
+
+public static transient java.lang.String format(
+java.lang.String
+java.lang.Object[])
+
+public static transient java.lang.String format(
+java.util.Locale
+java.lang.String
+java.lang.Object[])
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+private java.nio.charset.Charset getCharset(
+java.lang.String)
+
+private static int indexOf(
+java.lang.String
+java.lang.String
+int
+int
+char)
+
+private int upperIndex(
+int)
+
+public static java.lang.String valueOf(
+char)
+
+public static java.lang.String valueOf(
+double)
+
+public static java.lang.String valueOf(
+float)
+
+public static java.lang.String valueOf(
+int)
+
+public static java.lang.String valueOf(
+long)
+
+public static java.lang.String valueOf(
+java.lang.Object)
+
+public static java.lang.String valueOf(
+boolean)
+
+public static java.lang.String valueOf(
+char[])
+
+public static java.lang.String valueOf(
+char[]
+int
+int)
+
+ void _getChars(
+int
+int
+char[]
+int)
+
+public char charAt(
+int)
+
+public int codePointAt(
+int)
+
+public int codePointBefore(
+int)
+
+public int codePointCount(
+int
+int)
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.lang.String)
+
+public int compareToIgnoreCase(
+java.lang.String)
+
+public java.lang.String concat(
+java.lang.String)
+
+public boolean contains(
+java.lang.CharSequence)
+
+public boolean contentEquals(
+java.lang.CharSequence)
+
+public boolean contentEquals(
+java.lang.StringBuffer)
+
+public boolean endsWith(
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+
+public boolean equalsIgnoreCase(
+java.lang.String)
+@java.lang.Deprecated
+public void getBytes(
+int
+int
+byte[]
+int)
+
+public byte[] getBytes()
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public byte[] getBytes(
+java.lang.String)
+
+public void getChars(
+int
+int
+char[]
+int)
+
+ char[] getValue()
+
+public int hashCode()
+
+public int indexOf(
+int)
+
+public int indexOf(
+int
+int)
+
+public int indexOf(
+java.lang.String)
+
+public int indexOf(
+java.lang.String
+int)
+
+public native java.lang.String intern()
+
+public int lastIndexOf(
+int)
+
+public int lastIndexOf(
+int
+int)
+
+public int lastIndexOf(
+java.lang.String)
+
+public int lastIndexOf(
+java.lang.String
+int)
+
+public int length()
+
+public boolean matches(
+java.lang.String)
+
+public int offsetByCodePoints(
+int
+int)
+
+public boolean regionMatches(
+int
+java.lang.String
+int
+int)
+
+public boolean regionMatches(
+boolean
+int
+java.lang.String
+int
+int)
+
+public java.lang.String replace(
+char
+char)
+
+public java.lang.String replace(
+java.lang.CharSequence
+java.lang.CharSequence)
+
+public java.lang.String replaceAll(
+java.lang.String
+java.lang.String)
+
+public java.lang.String replaceFirst(
+java.lang.String
+java.lang.String)
+
+public java.lang.String[] split(
+java.lang.String)
+
+public java.lang.String[] split(
+java.lang.String
+int)
+
+public boolean startsWith(
+java.lang.String)
+
+public boolean startsWith(
+java.lang.String
+int)
+
+public java.lang.CharSequence subSequence(
+int
+int)
+
+public java.lang.String substring(
+int)
+
+public java.lang.String substring(
+int
+int)
+
+public char[] toCharArray()
+
+public java.lang.String toLowerCase()
+
+public java.lang.String toLowerCase(
+java.util.Locale)
+
+public java.lang.String toString()
+
+public java.lang.String toUpperCase()
+
+public java.lang.String toUpperCase(
+java.util.Locale)
+
+public java.lang.String trim()
+
+________________CLASS________________
+
+
+public final class java.lang.StringBuffer extends java.lang.AbstractStringBuilder implements java.lang.Appendable, java.io.Serializable, java.lang.CharSequence
+
+----------------FIELDS----------------
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+java.lang.CharSequence)
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence
+int
+int)
+
+public java.lang.StringBuffer append(
+char)
+
+public java.lang.StringBuffer append(
+double)
+
+public java.lang.StringBuffer append(
+float)
+
+public java.lang.StringBuffer append(
+int)
+
+public java.lang.StringBuffer append(
+long)
+
+public java.lang.StringBuffer append(
+java.lang.CharSequence)
+
+public java.lang.StringBuffer append(
+java.lang.CharSequence
+int
+int)
+
+public java.lang.StringBuffer append(
+java.lang.Object)
+
+public java.lang.StringBuffer append(
+java.lang.String)
+
+public java.lang.StringBuffer append(
+java.lang.StringBuffer)
+
+public java.lang.StringBuffer append(
+boolean)
+
+public java.lang.StringBuffer append(
+char[])
+
+public java.lang.StringBuffer append(
+char[]
+int
+int)
+
+public java.lang.StringBuffer appendCodePoint(
+int)
+
+public volatile int capacity()
+
+public char charAt(
+int)
+
+public int codePointAt(
+int)
+
+public int codePointBefore(
+int)
+
+public int codePointCount(
+int
+int)
+
+public java.lang.StringBuffer delete(
+int
+int)
+
+public java.lang.StringBuffer deleteCharAt(
+int)
+
+public void ensureCapacity(
+int)
+
+public void getChars(
+int
+int
+char[]
+int)
+
+public volatile int indexOf(
+java.lang.String)
+
+public int indexOf(
+java.lang.String
+int)
+
+public java.lang.StringBuffer insert(
+int
+char)
+
+public java.lang.StringBuffer insert(
+int
+double)
+
+public java.lang.StringBuffer insert(
+int
+float)
+
+public java.lang.StringBuffer insert(
+int
+int)
+
+public java.lang.StringBuffer insert(
+int
+long)
+
+public java.lang.StringBuffer insert(
+int
+java.lang.CharSequence)
+
+public java.lang.StringBuffer insert(
+int
+java.lang.CharSequence
+int
+int)
+
+public java.lang.StringBuffer insert(
+int
+java.lang.Object)
+
+public java.lang.StringBuffer insert(
+int
+java.lang.String)
+
+public java.lang.StringBuffer insert(
+int
+boolean)
+
+public java.lang.StringBuffer insert(
+int
+char[])
+
+public java.lang.StringBuffer insert(
+int
+char[]
+int
+int)
+
+public volatile int lastIndexOf(
+java.lang.String)
+
+public int lastIndexOf(
+java.lang.String
+int)
+
+public volatile int length()
+
+public int offsetByCodePoints(
+int
+int)
+
+public java.lang.StringBuffer replace(
+int
+int
+java.lang.String)
+
+public java.lang.StringBuffer reverse()
+
+public void setCharAt(
+int
+char)
+
+public void setLength(
+int)
+
+public java.lang.CharSequence subSequence(
+int
+int)
+
+public java.lang.String substring(
+int)
+
+public java.lang.String substring(
+int
+int)
+
+public java.lang.String toString()
+
+public void trimToSize()
+
+________________CLASS________________
+
+
+public final class java.lang.StringBuilder extends java.lang.AbstractStringBuilder implements java.lang.Appendable, java.lang.CharSequence, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+java.lang.CharSequence)
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence
+int
+int)
+
+public java.lang.StringBuilder append(
+char)
+
+public java.lang.StringBuilder append(
+double)
+
+public java.lang.StringBuilder append(
+float)
+
+public java.lang.StringBuilder append(
+int)
+
+public java.lang.StringBuilder append(
+long)
+
+public java.lang.StringBuilder append(
+java.lang.CharSequence)
+
+public java.lang.StringBuilder append(
+java.lang.CharSequence
+int
+int)
+
+public java.lang.StringBuilder append(
+java.lang.Object)
+
+public java.lang.StringBuilder append(
+java.lang.String)
+
+public java.lang.StringBuilder append(
+java.lang.StringBuffer)
+
+public java.lang.StringBuilder append(
+boolean)
+
+public java.lang.StringBuilder append(
+char[])
+
+public java.lang.StringBuilder append(
+char[]
+int
+int)
+
+public java.lang.StringBuilder appendCodePoint(
+int)
+
+public volatile int capacity()
+
+public volatile char charAt(
+int)
+
+public volatile int codePointAt(
+int)
+
+public volatile int codePointBefore(
+int)
+
+public volatile int codePointCount(
+int
+int)
+
+public java.lang.StringBuilder delete(
+int
+int)
+
+public java.lang.StringBuilder deleteCharAt(
+int)
+
+public volatile void ensureCapacity(
+int)
+
+public volatile void getChars(
+int
+int
+char[]
+int)
+
+public volatile int indexOf(
+java.lang.String)
+
+public volatile int indexOf(
+java.lang.String
+int)
+
+public java.lang.StringBuilder insert(
+int
+char)
+
+public java.lang.StringBuilder insert(
+int
+double)
+
+public java.lang.StringBuilder insert(
+int
+float)
+
+public java.lang.StringBuilder insert(
+int
+int)
+
+public java.lang.StringBuilder insert(
+int
+long)
+
+public java.lang.StringBuilder insert(
+int
+java.lang.CharSequence)
+
+public java.lang.StringBuilder insert(
+int
+java.lang.CharSequence
+int
+int)
+
+public java.lang.StringBuilder insert(
+int
+java.lang.Object)
+
+public java.lang.StringBuilder insert(
+int
+java.lang.String)
+
+public java.lang.StringBuilder insert(
+int
+boolean)
+
+public java.lang.StringBuilder insert(
+int
+char[])
+
+public java.lang.StringBuilder insert(
+int
+char[]
+int
+int)
+
+public volatile int lastIndexOf(
+java.lang.String)
+
+public volatile int lastIndexOf(
+java.lang.String
+int)
+
+public volatile int length()
+
+public volatile int offsetByCodePoints(
+int
+int)
+
+public java.lang.StringBuilder replace(
+int
+int
+java.lang.String)
+
+public java.lang.StringBuilder reverse()
+
+public volatile void setCharAt(
+int
+char)
+
+public volatile void setLength(
+int)
+
+public volatile java.lang.CharSequence subSequence(
+int
+int)
+
+public volatile java.lang.String substring(
+int)
+
+public volatile java.lang.String substring(
+int
+int)
+
+public java.lang.String toString()
+
+public volatile void trimToSize()
+
+________________CLASS________________
+
+
+public class java.lang.StringIndexOutOfBoundsException extends java.lang.IndexOutOfBoundsException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!TYPELjava/lang/annotation/ElementType;!FIELDLjava/lang/annotation/ElementType;!METHODLjava/lang/annotation/ElementType;!PARAMETERLjava/lang/annotation/ElementType;!CONSTRUCTORLjava/lang/annotation/ElementType;!LOCAL_VARIABLE )
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!SOURCE )
+public abstract interface class java.lang.SuppressWarnings extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String[] value()
+
+________________CLASS________________
+
+
+public final class java.lang.System extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.io.PrintStream err
+
+public static final java.io.InputStream in
+
+public static final java.io.PrintStream out
+
+private static java.lang.SecurityManager securityManager
+
+private static java.util.Properties systemProperties
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static native void arraycopy(
+java.lang.Object
+int
+java.lang.Object
+int
+int)
+
+public static java.lang.String clearProperty(
+java.lang.String)
+
+public static native long currentTimeMillis()
+
+public static void exit(
+int)
+
+public static void gc()
+
+private static native java.lang.String getEnvByIndex(
+int)
+
+private static native java.lang.String getEnvByName(
+java.lang.String)
+
+public static java.util.Properties getProperties()
+
+public static java.lang.String getProperty(
+java.lang.String)
+
+public static java.lang.String getProperty(
+java.lang.String
+java.lang.String)
+
+public static java.lang.SecurityManager getSecurityManager()
+
+public static java.lang.String getenv(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+public static java.util.Map getenv()
+
+public static native int identityHashCode(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static java.nio.channels.Channel inheritedChannel()
+
+static java.util.Properties internalGetProperties()
+
+public static void load(
+java.lang.String)
+
+public static void loadLibrary(
+java.lang.String)
+
+public static native java.lang.String mapLibraryName(
+java.lang.String)
+
+public static native long nanoTime()
+
+public static void runFinalization()
+@java.lang.Deprecated
+public static void runFinalizersOnExit(
+boolean)
+
+public static void setErr(
+java.io.PrintStream)
+
+private static native void setFieldImpl(
+java.lang.String
+java.lang.String
+java.lang.Object)
+
+public static void setIn(
+java.io.InputStream)
+
+public static void setOut(
+java.io.PrintStream)
+
+public static void setProperties(
+java.util.Properties)
+
+public static java.lang.String setProperty(
+java.lang.String
+java.lang.String)
+
+public static void setSecurityManager(
+java.lang.SecurityManager)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/Map$Entry; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract interface class java.util.Map extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void clear()
+
+public abstract boolean containsKey(
+java.lang.Object)
+
+public abstract boolean containsValue(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+public abstract java.util.Set entrySet()
+
+public abstract boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public abstract java.lang.Object get(
+java.lang.Object)
+
+public abstract int hashCode()
+
+public abstract boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<TK;>; )
+public abstract java.util.Set keySet()
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public abstract java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public abstract void putAll(
+java.util.Map)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public abstract java.lang.Object remove(
+java.lang.Object)
+
+public abstract int size()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<TV;>; )
+public abstract java.util.Collection values()
+
+________________CLASS________________
+
+
+ class java.lang.SystemEnvironment extends java.lang.Object implements java.util.Map
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+private java.util.Map map
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)V )
+public void <init>(
+java.util.Map)
+
+public void clear()
+
+public boolean containsKey(
+java.lang.Object)
+
+public boolean containsValue(
+java.lang.Object)
+
+public java.util.Set entrySet()
+
+public volatile java.lang.Object get(
+java.lang.Object)
+
+public java.lang.String get(
+java.lang.Object)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public java.util.Set keySet()
+
+public volatile java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+
+public java.lang.String put(
+java.lang.Object
+java.lang.Object)
+
+public void putAll(
+java.util.Map)
+
+public volatile java.lang.Object remove(
+java.lang.Object)
+
+public java.lang.String remove(
+java.lang.Object)
+
+public int size()
+
+public java.util.Collection values()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract class java.util.Dictionary extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<TV;>; )
+public abstract java.util.Enumeration elements()
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public abstract java.lang.Object get(
+java.lang.Object)
+
+public abstract boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<TK;>; )
+public abstract java.util.Enumeration keys()
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public abstract java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public abstract java.lang.Object remove(
+java.lang.Object)
+
+public abstract int size()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/Hashtable$HashEnumerator;Ljava/util/Hashtable$HashIterator;Ljava/util/Hashtable$Entry; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/Dictionary<TK;TV;>;Ljava/util/Map<TK;TV;>;Ljava/lang/Cloneable;Ljava/io/Serializable; )
+public class java.util.Hashtable extends java.util.Dictionary implements java.util.Map, java.lang.Cloneable, java.io.Serializable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Enumeration<*>; )
+private static final java.util.Enumeration EMPTY_ENUMERATION
+
+private static final long serialVersionUID
+
+transient int elementCount
+@dalvik.annotation.Signature (value =[Ljava/util/Hashtable$Entry<TK;TV;>; )
+transient java.util.Hashtable$Entry[] elementData
+
+transient int firstSlot
+
+transient int lastSlot
+
+private float loadFactor
+
+transient int modCount
+
+private int threshold
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+int
+float)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void <init>(
+java.util.Map)
+
+private void computeMaxSize()
+@dalvik.annotation.Signature (value =(I)[Ljava/util/Hashtable$Entry<TK;TV;>; )
+private java.util.Hashtable$Entry[] newElementArray(
+int)
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>(TK;TV;I)Ljava/util/Hashtable$Entry<TK;TV;>; )
+private static java.util.Hashtable$Entry newEntry(
+java.lang.Object
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public void clear()
+
+public java.lang.Object clone()
+
+public boolean contains(
+java.lang.Object)
+
+public boolean containsKey(
+java.lang.Object)
+
+public boolean containsValue(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<TV;>; )
+public java.util.Enumeration elements()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Set entrySet()
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object get(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)Ljava/util/Hashtable$Entry<TK;TV;>; )
+ java.util.Hashtable$Entry getEntry(
+java.lang.Object)
+
+public int hashCode()
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<TK;>; )
+public java.util.Set keySet()
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<TK;>; )
+public java.util.Enumeration keys()
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void putAll(
+java.util.Map)
+
+protected void rehash()
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object remove(
+java.lang.Object)
+
+public int size()
+
+public java.lang.String toString()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<TV;>; )
+public java.util.Collection values()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable<Ljava/lang/Object;Ljava/lang/Object;>; )
+public class java.util.Properties extends java.util.Hashtable
+
+----------------FIELDS----------------
+
+private static final int CONTINUE
+
+private static final int IGNORE
+
+private static final int KEY_DONE
+
+private static final int NONE
+
+private static final java.lang.String PROP_DTD
+
+private static final java.lang.String PROP_DTD_NAME
+
+private static final int SLASH
+
+private static final int UNICODE
+
+private static java.lang.String lineSeparator
+
+private static final long serialVersionUID
+
+private transient javax.xml.parsers.DocumentBuilder builder
+
+protected java.util.Properties defaults
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.util.Properties)
+
+private void dumpString(
+java.lang.StringBuilder
+java.lang.String
+boolean)
+
+private java.lang.String getTextContent(
+org.w3c.dom.Node)
+
+private java.lang.String substitutePredefinedEntries(
+java.lang.String)
+
+public java.lang.String getProperty(
+java.lang.String)
+
+public java.lang.String getProperty(
+java.lang.String
+java.lang.String)
+
+public void list(
+java.io.PrintStream)
+
+public void list(
+java.io.PrintWriter)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void load(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/util/InvalidPropertiesFormatException; )
+public void loadFromXML(
+java.io.InputStream)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<*>; )
+public java.util.Enumeration propertyNames()
+@java.lang.Deprecated
+public void save(
+java.io.OutputStream
+java.lang.String)
+
+public java.lang.Object setProperty(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void store(
+java.io.OutputStream
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void storeToXML(
+java.io.OutputStream
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void storeToXML(
+java.io.OutputStream
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+ class java.lang.SystemProperties extends java.util.Properties
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+native void postInit()
+
+native void preInit()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =ParkState )
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/Thread; )
+ class java.lang.Thread$ParkState extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int PARKED
+
+private static final int PREEMPTIVELY_UNPARKED
+
+private static final int UNPARKED
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Ljava/lang/Thread$State;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/Thread; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =State )
+public final class java.lang.Thread$State extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final java.lang.Thread$State[] $VALUES
+
+public static final java.lang.Thread$State BLOCKED
+
+public static final java.lang.Thread$State NEW
+
+public static final java.lang.Thread$State RUNNABLE
+
+public static final java.lang.Thread$State TERMINATED
+
+public static final java.lang.Thread$State TIMED_WAITING
+
+public static final java.lang.Thread$State WAITING
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static java.lang.Thread$State valueOf(
+java.lang.String)
+
+public static java.lang.Thread$State[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =UncaughtExceptionHandler )
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/Thread; )
+public abstract interface class java.lang.Thread$UncaughtExceptionHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void uncaughtException(
+java.lang.Thread
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class java.lang.ThreadDeath extends java.lang.Error
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/ThreadGroup; )
+ class java.lang.ThreadGroup$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/ThreadGroup; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =ChildrenGroupsLock )
+ class java.lang.ThreadGroup$ChildrenGroupsLock extends java.lang.Object
+
+----------------FIELDS----------------
+
+final java.lang.ThreadGroup this$0
+----------------METHODS----------------
+
+private void <init>(
+java.lang.ThreadGroup)
+
+ void <init>(
+java.lang.ThreadGroup
+java.lang.ThreadGroup$1)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =ChildrenThreadsLock )
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/ThreadGroup; )
+ class java.lang.ThreadGroup$ChildrenThreadsLock extends java.lang.Object
+
+----------------FIELDS----------------
+
+final java.lang.ThreadGroup this$0
+----------------METHODS----------------
+
+private void <init>(
+java.lang.ThreadGroup)
+
+ void <init>(
+java.lang.ThreadGroup
+java.lang.ThreadGroup$1)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/lang/ThreadGroup$1;Ljava/lang/ThreadGroup$ChildrenThreadsLock;Ljava/lang/ThreadGroup$ChildrenGroupsLock; )
+public class java.lang.ThreadGroup extends java.lang.Object implements java.lang.Thread$UncaughtExceptionHandler
+
+----------------FIELDS----------------
+
+static java.lang.ThreadGroup mMain
+
+static java.lang.ThreadGroup mSystem
+
+private java.lang.ThreadGroup[] childrenGroups
+
+private java.lang.Object childrenGroupsLock
+
+private java.lang.Thread[] childrenThreads
+
+private java.lang.Object childrenThreadsLock
+
+private boolean isDaemon
+
+private boolean isDestroyed
+
+private int maxPriority
+
+private java.lang.String name
+
+ int numGroups
+
+ int numThreads
+
+ java.lang.ThreadGroup parent
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.ThreadGroup
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalThreadStateException; )
+private void add(
+java.lang.ThreadGroup)
+
+private void destroyIfEmptyDaemon()
+
+private int enumerateGeneric(
+java.lang.Object[]
+boolean
+int
+boolean)
+
+private void list(
+int)
+
+private void remove(
+java.lang.ThreadGroup)
+
+private void setParent(
+java.lang.ThreadGroup)
+@java.lang.Deprecated
+private final boolean stopHelper()
+@java.lang.Deprecated
+private final boolean suspendHelper()
+
+public int activeCount()
+
+public int activeGroupCount()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalThreadStateException; )
+final void add(
+java.lang.Thread)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalThreadStateException; )
+ void addThread(
+java.lang.Thread)
+@java.lang.Deprecated
+public boolean allowThreadSuspension(
+boolean)
+
+public final void checkAccess()
+
+public final void destroy()
+
+public int enumerate(
+java.lang.Thread[])
+
+public int enumerate(
+java.lang.Thread[]
+boolean)
+
+public int enumerate(
+java.lang.ThreadGroup[])
+
+public int enumerate(
+java.lang.ThreadGroup[]
+boolean)
+
+public final int getMaxPriority()
+
+public final java.lang.String getName()
+
+public final java.lang.ThreadGroup getParent()
+
+public final void interrupt()
+
+public final boolean isDaemon()
+
+public boolean isDestroyed()
+
+public void list()
+
+public final boolean parentOf(
+java.lang.ThreadGroup)
+
+final void remove(
+java.lang.Thread)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalThreadStateException; )
+ void removeThread(
+java.lang.Thread)
+@java.lang.Deprecated
+public final void resume()
+
+public final void setDaemon(
+boolean)
+
+public final void setMaxPriority(
+int)
+@java.lang.Deprecated
+public final void stop()
+@java.lang.Deprecated
+public final void suspend()
+
+public java.lang.String toString()
+
+public void uncaughtException(
+java.lang.Thread
+java.lang.Throwable)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =Values )
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/ThreadLocal; )
+ class java.lang.ThreadLocal$Values extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int INITIAL_SIZE
+
+private static final java.lang.Object TOMBSTONE
+
+private int clean
+
+private int mask
+
+private int maximumLoad
+
+private int size
+
+private java.lang.Object[] table
+
+private int tombstones
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+ void <init>(
+java.lang.ThreadLocal$Values)
+
+static java.lang.Object[] access$000(
+java.lang.ThreadLocal$Values)
+
+static int access$100(
+java.lang.ThreadLocal$Values)
+
+private void cleanUp()
+
+private void inheritValues(
+java.lang.ThreadLocal$Values)
+
+private void initializeTable(
+int)
+
+private int next(
+int)
+
+private boolean rehash()
+@dalvik.annotation.Signature (value =(Ljava/lang/ThreadLocal<*>;Ljava/lang/Object;)V )
+ void add(
+java.lang.ThreadLocal
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/ThreadLocal<*>;)Ljava/lang/Object; )
+ java.lang.Object getAfterMiss(
+java.lang.ThreadLocal)
+@dalvik.annotation.Signature (value =(Ljava/lang/ThreadLocal<*>;Ljava/lang/Object;)V )
+ void put(
+java.lang.ThreadLocal
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/ThreadLocal<*>;)V )
+ void remove(
+java.lang.ThreadLocal)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Enumeration<Ljava/net/URL;>; )
+ class java.lang.TwoEnumerationsInOne extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Enumeration<Ljava/net/URL;>; )
+private java.util.Enumeration first
+@dalvik.annotation.Signature (value =Ljava/util/Enumeration<Ljava/net/URL;>; )
+private java.util.Enumeration second
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Enumeration<Ljava/net/URL;>;Ljava/util/Enumeration<Ljava/net/URL;>;)V )
+public void <init>(
+java.util.Enumeration
+java.util.Enumeration)
+
+public boolean hasMoreElements()
+
+public volatile java.lang.Object nextElement()
+
+public java.net.URL nextElement()
+
+________________CLASS________________
+
+
+public class java.lang.TypeNotPresentException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.String typeName
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public java.lang.String typeName()
+
+________________CLASS________________
+
+
+public class java.lang.UnknownError extends java.lang.VirtualMachineError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.UnsatisfiedLinkError extends java.lang.LinkageError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.UnsupportedClassVersionError extends java.lang.ClassFormatError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.lang.UnsupportedOperationException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Enumeration<TT;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/lang/VMClassLoader; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =EnumerateListArray )
+ class java.lang.VMClassLoader$EnumerateListArray extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+
+private int i
+
+private final java.util.ArrayList mList
+----------------METHODS----------------
+
+ void <init>(
+java.util.ArrayList)
+
+public boolean hasMoreElements()
+@dalvik.annotation.Signature (value =()TT; )
+public java.lang.Object nextElement()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/lang/VMClassLoader$EnumerateListArray; )
+ class java.lang.VMClassLoader extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/ClassFormatError; )
+static native java.lang.Class defineClass(
+java.lang.ClassLoader
+java.lang.String
+byte[]
+int
+int
+java.security.ProtectionDomain)
+@dalvik.annotation.Throws (value =Ljava/lang/ClassFormatError; )
+static native java.lang.Class defineClass(
+java.lang.ClassLoader
+byte[]
+int
+int
+java.security.ProtectionDomain)
+
+static native java.lang.Class findLoadedClass(
+java.lang.ClassLoader
+java.lang.String)
+
+private static native java.lang.String getBootClassPathResource(
+java.lang.String
+int)
+
+private static native int getBootClassPathSize()
+
+static native java.lang.Class getPrimitiveClass(
+char)
+
+static java.net.URL getResource(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/Enumeration<Ljava/net/URL;>; )
+static java.util.Enumeration getResources(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException; )
+static native java.lang.Class loadClass(
+java.lang.String
+boolean)
+
+________________CLASS________________
+
+
+ class java.lang.VMThread extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final java.lang.Thread$State[] STATE_MAP
+
+ java.lang.Thread thread
+
+ int vmData
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+java.lang.Thread)
+
+static native void create(
+java.lang.Thread
+long)
+
+static native java.lang.Thread currentThread()
+
+static native boolean interrupted()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+static native void sleep(
+long
+int)
+
+static native void yield()
+
+native int getStatus()
+
+native boolean holdsLock(
+java.lang.Object)
+
+native void interrupt()
+
+native boolean isInterrupted()
+
+native void nameChanged(
+java.lang.String)
+
+ void resume()
+
+native void setPriority(
+int)
+
+ void start(
+long)
+
+ void stop(
+java.lang.Throwable)
+
+ void suspend()
+
+________________CLASS________________
+
+
+public class java.lang.VerifyError extends java.lang.LinkageError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class java.lang.Void extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/lang/Class<Ljava/lang/Void;>; )
+public static final java.lang.Class TYPE
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<Ljava/lang/Void;>; )
+private static java.lang.Class lookupType()
+
+________________CLASS________________
+
+
+ class java.lang.WriterOutputStream extends java.io.OutputStream
+
+----------------FIELDS----------------
+
+private byte[] bytes
+
+private int numBytes
+
+private java.io.Writer writer
+----------------METHODS----------------
+
+public void <init>(
+java.io.Writer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeBuffer()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+
+________________CLASS________________
+
+
+public class java.lang.annotation.AnnotationFormatError extends java.lang.Error
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class java.lang.annotation.AnnotationTypeMismatchException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.reflect.Method element
+
+private java.lang.String foundType
+----------------METHODS----------------
+
+public void <init>(
+java.lang.reflect.Method
+java.lang.String)
+
+public java.lang.reflect.Method element()
+
+public java.lang.String foundType()
+
+________________CLASS________________
+
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!ANNOTATION_TYPE )
+@java.lang.annotation.Documented
+public abstract interface class java.lang.annotation.Documented extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Ljava/lang/annotation/ElementType;>; )
+public final class java.lang.annotation.ElementType extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final java.lang.annotation.ElementType[] $VALUES
+
+public static final java.lang.annotation.ElementType ANNOTATION_TYPE
+
+public static final java.lang.annotation.ElementType CONSTRUCTOR
+
+public static final java.lang.annotation.ElementType FIELD
+
+public static final java.lang.annotation.ElementType LOCAL_VARIABLE
+
+public static final java.lang.annotation.ElementType METHOD
+
+public static final java.lang.annotation.ElementType PACKAGE
+
+public static final java.lang.annotation.ElementType PARAMETER
+
+public static final java.lang.annotation.ElementType TYPE
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static java.lang.annotation.ElementType valueOf(
+java.lang.String)
+
+public static java.lang.annotation.ElementType[] values()
+
+________________CLASS________________
+
+
+public class java.lang.annotation.IncompleteAnnotationException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>; )
+private java.lang.Class annotationType
+
+private java.lang.String elementName
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/lang/String;)V )
+public void <init>(
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>; )
+public java.lang.Class annotationType()
+
+public java.lang.String elementName()
+
+________________CLASS________________
+
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!ANNOTATION_TYPE )
+@java.lang.annotation.Documented
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+public abstract interface class java.lang.annotation.Inherited extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+@dalvik.annotation.AnnotationDefault (value =Ljava/lang/annotation/Retention;:[value =Ljava/lang/annotation/RetentionPolicy;!CLASS] )
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!ANNOTATION_TYPE )
+@java.lang.annotation.Documented
+public abstract interface class java.lang.annotation.Retention extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.annotation.RetentionPolicy value()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Ljava/lang/annotation/RetentionPolicy;>; )
+public final class java.lang.annotation.RetentionPolicy extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final java.lang.annotation.RetentionPolicy[] $VALUES
+
+public static final java.lang.annotation.RetentionPolicy CLASS
+
+public static final java.lang.annotation.RetentionPolicy RUNTIME
+
+public static final java.lang.annotation.RetentionPolicy SOURCE
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static java.lang.annotation.RetentionPolicy valueOf(
+java.lang.String)
+
+public static java.lang.annotation.RetentionPolicy[] values()
+
+________________CLASS________________
+
+@java.lang.annotation.Documented
+@java.lang.annotation.Target (value =Ljava/lang/annotation/ElementType;!ANNOTATION_TYPE )
+@java.lang.annotation.Retention (value =Ljava/lang/annotation/RetentionPolicy;!RUNTIME )
+public abstract interface class java.lang.annotation.Target extends java.lang.Object implements java.lang.annotation.Annotation
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.annotation.ElementType[] value()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/ref/Reference<TT;>; )
+public class java.lang.ref.PhantomReference extends java.lang.ref.Reference
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TT;Ljava/lang/ref/ReferenceQueue<-TT;>;)V )
+public void <init>(
+java.lang.Object
+java.lang.ref.ReferenceQueue)
+@dalvik.annotation.Signature (value =()TT; )
+public java.lang.Object get()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/ref/Reference<TT;>; )
+public class java.lang.ref.SoftReference extends java.lang.ref.Reference
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TT;)V )
+public void <init>(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;Ljava/lang/ref/ReferenceQueue<-TT;>;)V )
+public void <init>(
+java.lang.Object
+java.lang.ref.ReferenceQueue)
+
+________________CLASS________________
+
+
+public class java.lang.reflect.AccessibleObject extends java.lang.Object implements java.lang.reflect.AnnotatedElement
+
+----------------FIELDS----------------
+
+private static final java.lang.String DIMENSION_1
+
+private static final java.lang.String DIMENSION_2
+
+private static final java.lang.String DIMENSION_3
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/String;>; )
+static java.util.Hashtable trans
+
+ boolean flag
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>()
+
+private static native java.lang.Object[] getClassSignatureAnnotation(
+java.lang.Class)
+
+static java.lang.String getClassSignatureAttribute(
+java.lang.Class)
+
+static org.apache.harmony.kernel.vm.ReflectionAccess getReflectionAccess()
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+public static void setAccessible(
+java.lang.reflect.AccessibleObject[]
+boolean)
+
+ void appendArrayGenericType(
+java.lang.StringBuilder
+java.lang.reflect.Type[])
+@dalvik.annotation.Signature (value =(Ljava/lang/StringBuilder;Ljava/lang/Class<*>;)V )
+ void appendArrayType(
+java.lang.StringBuilder
+java.lang.Class)
+
+ void appendArrayType(
+java.lang.StringBuilder
+java.lang.Class[])
+
+ void appendGenericType(
+java.lang.StringBuilder
+java.lang.reflect.Type)
+@dalvik.annotation.Signature (value =(Ljava/lang/StringBuilder;[Ljava/lang/Class<*>;)V )
+ void appendSimpleType(
+java.lang.StringBuilder
+java.lang.Class[])
+@dalvik.annotation.Signature (value =<T::Ljava/lang/annotation/Annotation;>(Ljava/lang/Class<TT;>;)TT; )
+public java.lang.annotation.Annotation getAnnotation(
+java.lang.Class)
+
+public java.lang.annotation.Annotation[] getAnnotations()
+
+public java.lang.annotation.Annotation[] getDeclaredAnnotations()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/lang/String; )
+ java.lang.String getSignature(
+java.lang.Class)
+
+ java.lang.String getSignatureAttribute()
+
+public boolean isAccessible()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Z )
+public boolean isAnnotationPresent(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+public void setAccessible(
+boolean)
+
+ void setAccessibleNoCheck(
+boolean)
+@dalvik.annotation.Signature (value =([Ljava/lang/Class<*>;)Ljava/lang/String; )
+ java.lang.String toString(
+java.lang.Class[])
+
+________________CLASS________________
+
+
+public final class java.lang.reflect.Array extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/NegativeArraySizeException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;[I)Ljava/lang/Object; )
+private static native java.lang.Object createMultiArray(
+java.lang.Class
+int[])
+@dalvik.annotation.Throws (value =Ljava/lang/NegativeArraySizeException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;I)Ljava/lang/Object; )
+private static native java.lang.Object createObjectArray(
+java.lang.Class
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/ArrayIndexOutOfBoundsException; )
+public static java.lang.Object get(
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/ArrayIndexOutOfBoundsException; )
+public static boolean getBoolean(
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/ArrayIndexOutOfBoundsException; )
+public static byte getByte(
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/ArrayIndexOutOfBoundsException; )
+public static char getChar(
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/ArrayIndexOutOfBoundsException; )
+public static double getDouble(
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/ArrayIndexOutOfBoundsException; )
+public static float getFloat(
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/ArrayIndexOutOfBoundsException; )
+public static int getInt(
+java.lang.Object
+int)
+
+public static int getLength(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/ArrayIndexOutOfBoundsException; )
+public static long getLong(
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/ArrayIndexOutOfBoundsException; )
+public static short getShort(
+java.lang.Object
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;I)Ljava/lang/Object; )
+@dalvik.annotation.Throws (value =Ljava/lang/NegativeArraySizeException; )
+public static java.lang.Object newInstance(
+java.lang.Class
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/NegativeArraySizeException;Ljava/lang/IllegalArgumentException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;[I)Ljava/lang/Object; )
+public static java.lang.Object newInstance(
+java.lang.Class
+int[])
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/ArrayIndexOutOfBoundsException; )
+public static void set(
+java.lang.Object
+int
+java.lang.Object)
+
+public static void setBoolean(
+java.lang.Object
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/ArrayIndexOutOfBoundsException; )
+public static void setByte(
+java.lang.Object
+int
+byte)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/ArrayIndexOutOfBoundsException; )
+public static void setChar(
+java.lang.Object
+int
+char)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/ArrayIndexOutOfBoundsException; )
+public static void setDouble(
+java.lang.Object
+int
+double)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/ArrayIndexOutOfBoundsException; )
+public static void setFloat(
+java.lang.Object
+int
+float)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/ArrayIndexOutOfBoundsException; )
+public static void setInt(
+java.lang.Object
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/ArrayIndexOutOfBoundsException; )
+public static void setLong(
+java.lang.Object
+int
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/ArrayIndexOutOfBoundsException; )
+public static void setShort(
+java.lang.Object
+int
+short)
+
+________________CLASS________________
+
+
+public abstract interface class java.lang.reflect.Member extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int DECLARED
+
+public static final int PUBLIC
+----------------METHODS----------------
+
+public abstract java.lang.Class getDeclaringClass()
+
+public abstract int getModifiers()
+
+public abstract java.lang.String getName()
+
+public abstract boolean isSynthetic()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/reflect/AccessibleObject;Ljava/lang/reflect/GenericDeclaration;Ljava/lang/reflect/Member; )
+public final class java.lang.reflect.Constructor extends java.lang.reflect.AccessibleObject implements java.lang.reflect.GenericDeclaration, java.lang.reflect.Member
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TT;>; )
+ java.lang.Class declaringClass
+@dalvik.annotation.Signature (value =[Ljava/lang/Class<*>; )
+ java.lang.Class[] exceptionTypes
+@dalvik.annotation.Signature (value =[Ljava/lang/reflect/TypeVariable<Ljava/lang/reflect/Constructor<TT;>;>; )
+ java.lang.reflect.TypeVariable[] formalTypeParameters
+
+ org.apache.harmony.luni.lang.reflect.ListOfTypes genericExceptionTypes
+
+ org.apache.harmony.luni.lang.reflect.ListOfTypes genericParameterTypes
+
+private volatile boolean genericTypesAreInitialized
+@dalvik.annotation.Signature (value =[Ljava/lang/Class<*>; )
+ java.lang.Class[] parameterTypes
+
+ int slot
+----------------METHODS----------------
+
+private void <init>()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<TT;>;[Ljava/lang/Class<*>;[Ljava/lang/Class<*>;I)V )
+private void <init>(
+java.lang.Class
+java.lang.Class[]
+java.lang.Class[]
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/InstantiationException;Ljava/lang/IllegalAccessException;Ljava/lang/reflect/InvocationTargetException; )
+@dalvik.annotation.Signature (value =([Ljava/lang/Object;Ljava/lang/Class<TT;>;[Ljava/lang/Class<*>;IZ)TT; )
+private native java.lang.Object constructNative(
+java.lang.Object[]
+java.lang.Class
+java.lang.Class[]
+int
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<TT;>;I)I )
+private native int getConstructorModifiers(
+java.lang.Class
+int)
+
+private native java.lang.annotation.Annotation[] getDeclaredAnnotations(
+java.lang.Class
+int)
+
+private native java.lang.annotation.Annotation[][] getParameterAnnotations(
+java.lang.Class
+int)
+
+private java.lang.String getSignature()
+
+private native java.lang.Object[] getSignatureAnnotation(
+java.lang.Class
+int)
+
+private void initGenericTypes()
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.annotation.Annotation[] getDeclaredAnnotations()
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<TT;>; )
+public java.lang.Class getDeclaringClass()
+@dalvik.annotation.Signature (value =()[Ljava/lang/Class<*>; )
+public java.lang.Class[] getExceptionTypes()
+
+public java.lang.reflect.Type[] getGenericExceptionTypes()
+
+public java.lang.reflect.Type[] getGenericParameterTypes()
+
+public int getModifiers()
+
+public java.lang.String getName()
+
+public java.lang.annotation.Annotation[][] getParameterAnnotations()
+@dalvik.annotation.Signature (value =()[Ljava/lang/Class<*>; )
+public java.lang.Class[] getParameterTypes()
+
+ java.lang.String getSignatureAttribute()
+@dalvik.annotation.Signature (value =()[Ljava/lang/reflect/TypeVariable<Ljava/lang/reflect/Constructor<TT;>;>; )
+public java.lang.reflect.TypeVariable[] getTypeParameters()
+
+public int hashCode()
+
+public boolean isSynthetic()
+
+public boolean isVarArgs()
+@dalvik.annotation.Throws (value =Ljava/lang/InstantiationException;Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException;Ljava/lang/reflect/InvocationTargetException; )
+@dalvik.annotation.Signature (value =([Ljava/lang/Object;)TT; )
+public transient java.lang.Object newInstance(
+java.lang.Object[])
+
+public java.lang.String toGenericString()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public final class java.lang.reflect.Field extends java.lang.reflect.AccessibleObject implements java.lang.reflect.Member
+
+----------------FIELDS----------------
+
+private static final int TYPE_BOOLEAN
+
+private static final int TYPE_BYTE
+
+private static final int TYPE_CHAR
+
+private static final int TYPE_DOUBLE
+
+private static final int TYPE_FLOAT
+
+private static final int TYPE_INTEGER
+
+private static final int TYPE_LONG
+
+private static final int TYPE_SHORT
+@dalvik.annotation.Signature (value =Ljava/lang/Class<*>; )
+private java.lang.Class declaringClass
+
+private java.lang.reflect.Type genericType
+
+private volatile boolean genericTypesAreInitialized
+
+private java.lang.String name
+
+private int slot
+@dalvik.annotation.Signature (value =Ljava/lang/Class<*>; )
+private java.lang.Class type
+----------------METHODS----------------
+
+private void <init>()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Ljava/lang/Class<*>;Ljava/lang/String;I)V )
+private void <init>(
+java.lang.Class
+java.lang.Class
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZI)B )
+private native byte getBField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZI)C )
+private native char getCField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZI)D )
+private native double getDField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean
+int)
+
+private native java.lang.annotation.Annotation[] getDeclaredAnnotations(
+java.lang.Class
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZI)F )
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+private native float getFField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZ)Ljava/lang/Object; )
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+private native java.lang.Object getField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;I)I )
+private native int getFieldModifiers(
+java.lang.Class
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZI)I )
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+private native int getIField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZI)J )
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+private native long getJField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZI)S )
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+private native short getSField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean
+int)
+
+private java.lang.String getSignature()
+
+private native java.lang.Object[] getSignatureAnnotation(
+java.lang.Class
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZI)Z )
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+private native boolean getZField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean
+int)
+
+private void initGenericType()
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZIB)V )
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+private native void setBField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean
+int
+byte)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZIC)V )
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+private native void setCField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean
+int
+char)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZID)V )
+private native void setDField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean
+int
+double)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZIF)V )
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+private native void setFField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean
+int
+float)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZLjava/lang/Object;)V )
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+private native void setField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZII)V )
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+private native void setIField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean
+int
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZIJ)V )
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+private native void setJField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean
+int
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZIS)V )
+private native void setSField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean
+int
+short)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZIZ)V )
+private native void setZField(
+java.lang.Object
+java.lang.Class
+java.lang.Class
+int
+boolean
+int
+boolean)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public java.lang.Object get(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public boolean getBoolean(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public byte getByte(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public char getChar(
+java.lang.Object)
+
+public java.lang.annotation.Annotation[] getDeclaredAnnotations()
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<*>; )
+public java.lang.Class getDeclaringClass()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public double getDouble(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public float getFloat(
+java.lang.Object)
+
+public java.lang.reflect.Type getGenericType()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public int getInt(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public long getLong(
+java.lang.Object)
+
+public int getModifiers()
+
+public java.lang.String getName()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public short getShort(
+java.lang.Object)
+
+ java.lang.String getSignatureAttribute()
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<*>; )
+public java.lang.Class getType()
+
+public int hashCode()
+
+public boolean isEnumConstant()
+
+public boolean isSynthetic()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public void set(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public void setBoolean(
+java.lang.Object
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public void setByte(
+java.lang.Object
+byte)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public void setChar(
+java.lang.Object
+char)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public void setDouble(
+java.lang.Object
+double)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public void setFloat(
+java.lang.Object
+float)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public void setInt(
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public void setLong(
+java.lang.Object
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException; )
+public void setShort(
+java.lang.Object
+short)
+
+public java.lang.String toGenericString()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class java.lang.reflect.GenericArrayType extends java.lang.Object implements java.lang.reflect.Type
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.reflect.Type getGenericComponentType()
+
+________________CLASS________________
+
+
+public class java.lang.reflect.GenericSignatureFormatError extends java.lang.ClassFormatError
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public abstract interface class java.lang.reflect.InvocationHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+public abstract java.lang.Object invoke(
+java.lang.Object
+java.lang.reflect.Method
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class java.lang.reflect.InvocationTargetException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.Throwable target
+----------------METHODS----------------
+
+protected void <init>()
+
+public void <init>(
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable
+java.lang.String)
+
+public java.lang.Throwable getCause()
+
+public java.lang.Throwable getTargetException()
+
+________________CLASS________________
+
+
+public class java.lang.reflect.MalformedParameterizedTypeException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public final class java.lang.reflect.Method extends java.lang.reflect.AccessibleObject implements java.lang.reflect.GenericDeclaration, java.lang.reflect.Member
+
+----------------FIELDS----------------
+
+private static final java.lang.annotation.Annotation[] NO_ANNOTATIONS
+@dalvik.annotation.Signature (value =Ljava/lang/Class<*>; )
+private java.lang.Class declaringClass
+@dalvik.annotation.Signature (value =[Ljava/lang/Class<*>; )
+private java.lang.Class[] exceptionTypes
+@dalvik.annotation.Signature (value =[Ljava/lang/reflect/TypeVariable<Ljava/lang/reflect/Method;>; )
+private java.lang.reflect.TypeVariable[] formalTypeParameters
+
+private org.apache.harmony.luni.lang.reflect.ListOfTypes genericExceptionTypes
+
+private org.apache.harmony.luni.lang.reflect.ListOfTypes genericParameterTypes
+
+private java.lang.reflect.Type genericReturnType
+
+private volatile boolean genericTypesAreInitialized
+
+private java.lang.String name
+@dalvik.annotation.Signature (value =[Ljava/lang/Class<*>; )
+private java.lang.Class[] parameterTypes
+@dalvik.annotation.Signature (value =Ljava/lang/Class<*>; )
+private java.lang.Class returnType
+
+private int slot
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;[Ljava/lang/Class<*>;[Ljava/lang/Class<*>;Ljava/lang/Class<*>;Ljava/lang/String;I)V )
+private void <init>(
+java.lang.Class
+java.lang.Class[]
+java.lang.Class[]
+java.lang.Class
+java.lang.String
+int)
+
+ void <init>(
+java.lang.reflect.Method)
+
+private native java.lang.annotation.Annotation[] getDeclaredAnnotations(
+java.lang.Class
+int)
+
+private native java.lang.Object getDefaultValue(
+java.lang.Class
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;I)I )
+private native int getMethodModifiers(
+java.lang.Class
+int)
+
+private native java.lang.annotation.Annotation[][] getParameterAnnotations(
+java.lang.Class
+int)
+
+private java.lang.String getSignature()
+
+private native java.lang.Object[] getSignatureAnnotation(
+java.lang.Class
+int)
+
+private void initGenericTypes()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException;Ljava/lang/reflect/InvocationTargetException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;[Ljava/lang/Object;Ljava/lang/Class<*>;[Ljava/lang/Class<*>;Ljava/lang/Class<*>;IZ)Ljava/lang/Object; )
+private native java.lang.Object invokeNative(
+java.lang.Object
+java.lang.Object[]
+java.lang.Class
+java.lang.Class[]
+java.lang.Class
+int
+boolean)
+
+static java.lang.annotation.Annotation[][] noAnnotations(
+int)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.annotation.Annotation[] getDeclaredAnnotations()
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<*>; )
+public java.lang.Class getDeclaringClass()
+
+public java.lang.Object getDefaultValue()
+@dalvik.annotation.Signature (value =()[Ljava/lang/Class<*>; )
+public java.lang.Class[] getExceptionTypes()
+
+public java.lang.reflect.Type[] getGenericExceptionTypes()
+
+public java.lang.reflect.Type[] getGenericParameterTypes()
+
+public java.lang.reflect.Type getGenericReturnType()
+
+public int getModifiers()
+
+public java.lang.String getName()
+
+public java.lang.annotation.Annotation[][] getParameterAnnotations()
+@dalvik.annotation.Signature (value =()[Ljava/lang/Class<*>; )
+public java.lang.Class[] getParameterTypes()
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<*>; )
+public java.lang.Class getReturnType()
+
+ java.lang.String getSignatureAttribute()
+@dalvik.annotation.Signature (value =()[Ljava/lang/reflect/TypeVariable<Ljava/lang/reflect/Method;>; )
+public java.lang.reflect.TypeVariable[] getTypeParameters()
+
+public int hashCode()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalAccessException;Ljava/lang/IllegalArgumentException;Ljava/lang/reflect/InvocationTargetException; )
+public transient java.lang.Object invoke(
+java.lang.Object
+java.lang.Object[])
+
+public boolean isBridge()
+
+public boolean isSynthetic()
+
+public boolean isVarArgs()
+
+public java.lang.String toGenericString()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.lang.reflect.Modifier extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ABSTRACT
+
+static final int ANNOTATION
+
+static final int BRIDGE
+
+static final int ENUM
+
+public static final int FINAL
+
+public static final int INTERFACE
+
+public static final int NATIVE
+
+public static final int PRIVATE
+
+public static final int PROTECTED
+
+public static final int PUBLIC
+
+public static final int STATIC
+
+public static final int STRICT
+
+public static final int SYNCHRONIZED
+
+static final int SYNTHETIC
+
+public static final int TRANSIENT
+
+static final int VARARGS
+
+public static final int VOLATILE
+----------------METHODS----------------
+
+public void <init>()
+
+public static boolean isAbstract(
+int)
+
+public static boolean isFinal(
+int)
+
+public static boolean isInterface(
+int)
+
+public static boolean isNative(
+int)
+
+public static boolean isPrivate(
+int)
+
+public static boolean isProtected(
+int)
+
+public static boolean isPublic(
+int)
+
+public static boolean isStatic(
+int)
+
+public static boolean isStrict(
+int)
+
+public static boolean isSynchronized(
+int)
+
+public static boolean isTransient(
+int)
+
+public static boolean isVolatile(
+int)
+
+public static java.lang.String toString(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class java.lang.reflect.ParameterizedType extends java.lang.Object implements java.lang.reflect.Type
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.reflect.Type[] getActualTypeArguments()
+
+public abstract java.lang.reflect.Type getOwnerType()
+
+public abstract java.lang.reflect.Type getRawType()
+
+________________CLASS________________
+
+
+public class java.lang.reflect.Proxy extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static int NextClassNameIndex
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/ClassLoader;Ljava/util/Map<Ljava/lang/String;Ljava/lang/ref/WeakReference<Ljava/lang/Class<*>;>;>;>; )
+private static final java.util.Map loaderCache
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/Class<*>;Ljava/lang/String;>; )
+private static final java.util.Map proxyCache
+
+private static final long serialVersionUID
+
+protected java.lang.reflect.InvocationHandler h
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+protected void <init>(
+java.lang.reflect.InvocationHandler)
+
+private static native void constructorPrototype(
+java.lang.reflect.InvocationHandler)
+
+private static native java.lang.Class generateProxy(
+java.lang.String
+java.lang.Class[]
+java.lang.ClassLoader)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public static java.lang.reflect.InvocationHandler getInvocationHandler(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;)Ljava/lang/Class<*>; )
+public static transient java.lang.Class getProxyClass(
+java.lang.ClassLoader
+java.lang.Class[])
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Z )
+public static boolean isProxyClass(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/ClassLoader;[Ljava/lang/Class<*>;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object; )
+public static java.lang.Object newProxyInstance(
+java.lang.ClassLoader
+java.lang.Class[]
+java.lang.reflect.InvocationHandler)
+
+________________CLASS________________
+
+
+public final class java.lang.reflect.ReflectPermission extends java.security.BasicPermission
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.harmony.kernel.vm.ReflectionAccess extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.reflect.Method accessibleClone(
+java.lang.reflect.Method)
+
+public abstract java.lang.reflect.Method clone(
+java.lang.reflect.Method)
+
+public abstract void setAccessibleNoCheck(
+java.lang.reflect.AccessibleObject
+boolean)
+
+________________CLASS________________
+
+
+final class java.lang.reflect.ReflectionAccessImpl extends java.lang.Object implements org.apache.harmony.kernel.vm.ReflectionAccess
+
+----------------FIELDS----------------
+
+static final java.lang.reflect.ReflectionAccessImpl THE_ONE
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public java.lang.reflect.Method accessibleClone(
+java.lang.reflect.Method)
+
+public java.lang.reflect.Method clone(
+java.lang.reflect.Method)
+
+public void setAccessibleNoCheck(
+java.lang.reflect.AccessibleObject
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<D::Ljava/lang/reflect/GenericDeclaration;>Ljava/lang/Object;Ljava/lang/reflect/Type; )
+public abstract interface class java.lang.reflect.TypeVariable extends java.lang.Object implements java.lang.reflect.Type
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.reflect.Type[] getBounds()
+@dalvik.annotation.Signature (value =()TD; )
+public abstract java.lang.reflect.GenericDeclaration getGenericDeclaration()
+
+public abstract java.lang.String getName()
+
+________________CLASS________________
+
+
+public class java.lang.reflect.UndeclaredThrowableException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.Throwable undeclaredThrowable
+----------------METHODS----------------
+
+public void <init>(
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable
+java.lang.String)
+
+public java.lang.Throwable getCause()
+
+public java.lang.Throwable getUndeclaredThrowable()
+
+________________CLASS________________
+
+
+public abstract interface class java.lang.reflect.WildcardType extends java.lang.Object implements java.lang.reflect.Type
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.reflect.Type[] getLowerBounds()
+
+public abstract java.lang.reflect.Type[] getUpperBounds()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Ljava/math/BigDecimal; )
+ class java.math.BigDecimal$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$java$math$RoundingMode
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Number;Ljava/lang/Comparable<Ljava/math/BigDecimal;>;Ljava/io/Serializable; )
+@dalvik.annotation.MemberClasses (value =Ljava/math/BigDecimal$1; )
+public class java.math.BigDecimal extends java.lang.Number implements java.lang.Comparable, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final java.math.BigDecimal[] BI_SCALED_BY_ZERO
+
+private static final int BI_SCALED_BY_ZERO_LENGTH
+
+private static final char[] CH_ZEROS
+
+private static final java.math.BigInteger[] FIVE_POW
+
+private static final double LOG10_2
+
+private static final long[] LONG_FIVE_POW
+
+private static final int[] LONG_FIVE_POW_BIT_LENGTH
+
+private static final long[] LONG_TEN_POW
+
+private static final int[] LONG_TEN_POW_BIT_LENGTH
+
+public static final java.math.BigDecimal ONE
+
+public static final int ROUND_CEILING
+
+public static final int ROUND_DOWN
+
+public static final int ROUND_FLOOR
+
+public static final int ROUND_HALF_DOWN
+
+public static final int ROUND_HALF_EVEN
+
+public static final int ROUND_HALF_UP
+
+public static final int ROUND_UNNECESSARY
+
+public static final int ROUND_UP
+
+public static final java.math.BigDecimal TEN
+
+private static final java.math.BigInteger[] TEN_POW
+
+public static final java.math.BigDecimal ZERO
+
+private static final java.math.BigDecimal[] ZERO_SCALED_BY
+
+private static final long serialVersionUID
+
+private transient int bitLength
+
+private transient int hashCode
+
+private java.math.BigInteger intVal
+
+private transient int precision
+
+private int scale
+
+private transient long smallValue
+
+private transient java.lang.String toStringImage
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+double)
+
+public void <init>(
+double
+java.math.MathContext)
+
+public void <init>(
+int)
+
+private void <init>(
+int
+int)
+
+public void <init>(
+int
+java.math.MathContext)
+
+public void <init>(
+long)
+
+private void <init>(
+long
+int)
+
+public void <init>(
+long
+java.math.MathContext)
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.math.MathContext)
+
+public void <init>(
+java.math.BigInteger)
+
+public void <init>(
+java.math.BigInteger
+int)
+
+public void <init>(
+java.math.BigInteger
+int
+java.math.MathContext)
+
+public void <init>(
+java.math.BigInteger
+java.math.MathContext)
+
+public void <init>(
+char[])
+
+public void <init>(
+char[]
+int
+int)
+
+public void <init>(
+char[]
+int
+int
+java.math.MathContext)
+
+public void <init>(
+char[]
+java.math.MathContext)
+
+private static java.math.BigDecimal addAndMult10(
+java.math.BigDecimal
+java.math.BigDecimal
+int)
+
+private int aproxPrecision()
+
+private static int bitLength(
+int)
+
+private static int bitLength(
+long)
+
+private static java.math.BigDecimal divideBigIntegers(
+java.math.BigInteger
+java.math.BigInteger
+int
+java.math.RoundingMode)
+
+private static java.math.BigDecimal dividePrimitiveLongs(
+long
+long
+int
+java.math.RoundingMode)
+
+private java.math.BigInteger getUnscaledValue()
+
+private void inplaceRound(
+java.math.MathContext)
+
+private boolean isZero()
+
+private static int longCompareTo(
+long
+long)
+
+private java.math.BigDecimal movePoint(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+private static int roundingBehavior(
+int
+int
+java.math.RoundingMode)
+
+private void setUnscaledValue(
+java.math.BigInteger)
+
+private void smallRound(
+java.math.MathContext
+int)
+
+private static int toIntScale(
+long)
+
+private long valueExact(
+int)
+
+public static java.math.BigDecimal valueOf(
+double)
+
+public static java.math.BigDecimal valueOf(
+long)
+
+public static java.math.BigDecimal valueOf(
+long
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+private static java.math.BigDecimal zeroScaledBy(
+long)
+
+public java.math.BigDecimal abs()
+
+public java.math.BigDecimal abs(
+java.math.MathContext)
+
+public java.math.BigDecimal add(
+java.math.BigDecimal)
+
+public java.math.BigDecimal add(
+java.math.BigDecimal
+java.math.MathContext)
+
+public byte byteValueExact()
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.math.BigDecimal)
+
+public java.math.BigDecimal divide(
+java.math.BigDecimal)
+
+public java.math.BigDecimal divide(
+java.math.BigDecimal
+int)
+
+public java.math.BigDecimal divide(
+java.math.BigDecimal
+int
+int)
+
+public java.math.BigDecimal divide(
+java.math.BigDecimal
+int
+java.math.RoundingMode)
+
+public java.math.BigDecimal divide(
+java.math.BigDecimal
+java.math.MathContext)
+
+public java.math.BigDecimal divide(
+java.math.BigDecimal
+java.math.RoundingMode)
+
+public java.math.BigDecimal[] divideAndRemainder(
+java.math.BigDecimal)
+
+public java.math.BigDecimal[] divideAndRemainder(
+java.math.BigDecimal
+java.math.MathContext)
+
+public java.math.BigDecimal divideToIntegralValue(
+java.math.BigDecimal)
+
+public java.math.BigDecimal divideToIntegralValue(
+java.math.BigDecimal
+java.math.MathContext)
+
+public double doubleValue()
+
+public boolean equals(
+java.lang.Object)
+
+public float floatValue()
+
+public int hashCode()
+
+public int intValue()
+
+public int intValueExact()
+
+public long longValue()
+
+public long longValueExact()
+
+public java.math.BigDecimal max(
+java.math.BigDecimal)
+
+public java.math.BigDecimal min(
+java.math.BigDecimal)
+
+public java.math.BigDecimal movePointLeft(
+int)
+
+public java.math.BigDecimal movePointRight(
+int)
+
+public java.math.BigDecimal multiply(
+java.math.BigDecimal)
+
+public java.math.BigDecimal multiply(
+java.math.BigDecimal
+java.math.MathContext)
+
+public java.math.BigDecimal negate()
+
+public java.math.BigDecimal negate(
+java.math.MathContext)
+
+public java.math.BigDecimal plus()
+
+public java.math.BigDecimal plus(
+java.math.MathContext)
+
+public java.math.BigDecimal pow(
+int)
+
+public java.math.BigDecimal pow(
+int
+java.math.MathContext)
+
+public int precision()
+
+public java.math.BigDecimal remainder(
+java.math.BigDecimal)
+
+public java.math.BigDecimal remainder(
+java.math.BigDecimal
+java.math.MathContext)
+
+public java.math.BigDecimal round(
+java.math.MathContext)
+
+public int scale()
+
+public java.math.BigDecimal scaleByPowerOfTen(
+int)
+
+public java.math.BigDecimal setScale(
+int)
+
+public java.math.BigDecimal setScale(
+int
+int)
+
+public java.math.BigDecimal setScale(
+int
+java.math.RoundingMode)
+
+public short shortValueExact()
+
+public int signum()
+
+public java.math.BigDecimal stripTrailingZeros()
+
+public java.math.BigDecimal subtract(
+java.math.BigDecimal)
+
+public java.math.BigDecimal subtract(
+java.math.BigDecimal
+java.math.MathContext)
+
+public java.math.BigInteger toBigInteger()
+
+public java.math.BigInteger toBigIntegerExact()
+
+public java.lang.String toEngineeringString()
+
+public java.lang.String toPlainString()
+
+public java.lang.String toString()
+
+public java.math.BigDecimal ulp()
+
+public java.math.BigInteger unscaledValue()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/math/BigInt; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =Context )
+ class java.math.BigInt$Context extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int bnctx
+
+final java.math.BigInt this$0
+----------------METHODS----------------
+
+ void <init>(
+java.math.BigInt)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/math/BigInt$Context; )
+ class java.math.BigInt extends java.lang.Object
+
+----------------FIELDS----------------
+
+static java.math.BigInt$Context defaultContext
+
+static java.math.BigInt dummy
+
+private static final long serialVersionUID
+
+transient int bignum
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+private static void Check(
+boolean)
+
+public static java.math.BigInt addition(
+java.math.BigInt
+java.math.BigInt)
+
+public static java.math.BigInt bigExp(
+java.math.BigInt
+java.math.BigInt
+java.math.BigInt$Context)
+
+public static int cmp(
+java.math.BigInt
+java.math.BigInt)
+
+public static int consumeErrors(
+java.lang.StringBuilder)
+
+public static void division(
+java.math.BigInt
+java.math.BigInt
+java.math.BigInt$Context
+java.math.BigInt
+java.math.BigInt)
+
+public static java.math.BigInt exp(
+java.math.BigInt
+int
+java.math.BigInt$Context)
+
+public static java.math.BigInt gcd(
+java.math.BigInt
+java.math.BigInt
+java.math.BigInt$Context)
+
+public static java.math.BigInt generatePrimeDefault(
+int
+java.util.Random
+java.math.BigInt$Context)
+
+static int getCtx(
+java.math.BigInt$Context)
+
+private void makeValid()
+
+public static java.math.BigInt modExp(
+java.math.BigInt
+java.math.BigInt
+java.math.BigInt
+java.math.BigInt$Context)
+
+public static java.math.BigInt modInverse(
+java.math.BigInt
+java.math.BigInt
+java.math.BigInt$Context)
+
+public static java.math.BigInt modulus(
+java.math.BigInt
+java.math.BigInt
+java.math.BigInt$Context)
+
+private static java.math.BigInt newBigInt()
+
+public static java.math.BigInt product(
+java.math.BigInt
+java.math.BigInt
+java.math.BigInt$Context)
+
+public static int remainderByPositiveInt(
+java.math.BigInt
+int)
+
+public static java.math.BigInt shift(
+java.math.BigInt
+int)
+
+public static java.math.BigInt subtraction(
+java.math.BigInt
+java.math.BigInt)
+
+public void add(
+java.math.BigInt)
+
+public void addPositiveInt(
+int)
+
+public byte[] bigEndianMagnitude()
+
+public byte[] bigEndianTwosComplement()
+
+public int bitLength()
+
+public java.math.BigInt copy()
+
+public java.lang.String decString()
+
+public void dispose()
+
+public int divideByPositiveInt(
+int)
+
+protected void finalize()
+
+public int getNativeBIGNUM()
+
+public java.lang.String hexString()
+
+public boolean isBitSet(
+int)
+
+public boolean isPrime(
+int
+java.util.Random
+java.math.BigInt$Context)
+
+public int[] littleEndianIntsMagnitude()
+
+public long longInt()
+
+public void modifyBit(
+int
+int)
+
+public void multiplyBy(
+java.math.BigInt
+java.math.BigInt$Context)
+
+public void multiplyByPositiveInt(
+int)
+
+public void putBigEndian(
+byte[]
+boolean)
+
+public void putBigEndianTwosComplement(
+byte[])
+
+public void putCopy(
+java.math.BigInt)
+
+public void putDecString(
+java.lang.String)
+
+public void putHexString(
+java.lang.String)
+
+public void putLittleEndianInts(
+int[]
+boolean)
+
+public void putLongInt(
+long)
+
+public void putULongInt(
+long
+boolean)
+
+public void setSign(
+int)
+
+public void shift(
+int)
+
+public int sign()
+
+public void subtractPositiveInt(
+int)
+
+public java.lang.String toString()
+
+public boolean twosCompFitsIntoBytes(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Number;Ljava/lang/Comparable<Ljava/math/BigInteger;>;Ljava/io/Serializable; )
+public class java.math.BigInteger extends java.lang.Number implements java.lang.Comparable, java.io.Serializable
+
+----------------FIELDS----------------
+
+static final int EQUALS
+
+static final int GREATER
+
+static final int LESS
+
+static final java.math.BigInteger MINUS_ONE
+
+public static final java.math.BigInteger ONE
+
+static final java.math.BigInteger[] SMALL_VALUES
+
+public static final java.math.BigInteger TEN
+
+public static final java.math.BigInteger ZERO
+
+private static final long serialVersionUID
+
+transient java.math.BigInt bigInt
+
+private transient boolean bigIntIsValid
+
+transient int[] digits
+
+private transient int firstNonzeroDigit
+
+private transient int hashCode
+
+private byte[] magnitude
+
+transient int numberLength
+
+private transient boolean oldReprIsValid
+
+transient int sign
+
+private int signum
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+int
+java.util.Random)
+
+ void <init>(
+int
+int
+int[])
+
+ void <init>(
+int
+long)
+
+public void <init>(
+int
+java.util.Random)
+
+public void <init>(
+int
+byte[])
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+int)
+
+ void <init>(
+java.math.BigInt)
+
+public void <init>(
+byte[])
+
+static int inplaceAdd(
+int[]
+int
+int)
+
+static int multiplyByInt(
+int[]
+int[]
+int
+int)
+
+public static java.math.BigInteger probablePrime(
+int
+java.util.Random)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+private static void setFromString(
+java.math.BigInteger
+java.lang.String
+int)
+
+private byte[] twosComplement()
+
+static void validate1(
+java.lang.String
+java.math.BigInteger)
+
+static void validate2(
+java.lang.String
+java.math.BigInteger
+java.math.BigInteger)
+
+static void validate3(
+java.lang.String
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger)
+
+static void validate4(
+java.lang.String
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger)
+
+public static java.math.BigInteger valueOf(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public java.math.BigInteger abs()
+
+public java.math.BigInteger add(
+java.math.BigInteger)
+
+public java.math.BigInteger and(
+java.math.BigInteger)
+
+public java.math.BigInteger andNot(
+java.math.BigInteger)
+
+public int bitCount()
+
+public int bitLength()
+
+public java.math.BigInteger clearBit(
+int)
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.math.BigInteger)
+
+ java.math.BigInteger copy()
+
+final void cutOffLeadingZeroes()
+
+public java.math.BigInteger divide(
+java.math.BigInteger)
+
+public java.math.BigInteger[] divideAndRemainder(
+java.math.BigInteger)
+
+public double doubleValue()
+
+public boolean equals(
+java.lang.Object)
+
+ void establishOldRepresentation(
+java.lang.String)
+
+public java.math.BigInteger flipBit(
+int)
+
+public float floatValue()
+
+public java.math.BigInteger gcd(
+java.math.BigInteger)
+
+ int getFirstNonzeroDigit()
+
+public int getLowestSetBit()
+
+public int hashCode()
+
+public int intValue()
+
+ boolean isOne()
+
+public boolean isProbablePrime(
+int)
+
+public long longValue()
+
+public java.math.BigInteger max(
+java.math.BigInteger)
+
+public java.math.BigInteger min(
+java.math.BigInteger)
+
+public java.math.BigInteger mod(
+java.math.BigInteger)
+
+public java.math.BigInteger modInverse(
+java.math.BigInteger)
+
+public java.math.BigInteger modPow(
+java.math.BigInteger
+java.math.BigInteger)
+
+public java.math.BigInteger multiply(
+java.math.BigInteger)
+
+public java.math.BigInteger negate()
+
+public java.math.BigInteger nextProbablePrime()
+
+public java.math.BigInteger not()
+
+public java.math.BigInteger or(
+java.math.BigInteger)
+
+public java.math.BigInteger pow(
+int)
+
+public java.math.BigInteger remainder(
+java.math.BigInteger)
+
+public java.math.BigInteger setBit(
+int)
+
+public java.math.BigInteger shiftLeft(
+int)
+
+public java.math.BigInteger shiftRight(
+int)
+
+public int signum()
+
+public java.math.BigInteger subtract(
+java.math.BigInteger)
+
+public boolean testBit(
+int)
+
+public byte[] toByteArray()
+
+public java.lang.String toString()
+
+public java.lang.String toString(
+int)
+
+ void unCache()
+
+ void validate(
+java.lang.String
+java.lang.String)
+
+ java.math.BigInteger withNewRepresentation(
+java.lang.String)
+
+public java.math.BigInteger xor(
+java.math.BigInteger)
+
+________________CLASS________________
+
+
+ class java.math.BitLevel extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+static int bitCount(
+java.math.BigInteger)
+
+static int bitLength(
+java.math.BigInteger)
+
+static java.math.BigInteger flipBit(
+java.math.BigInteger
+int)
+
+static void inplaceShiftRight(
+java.math.BigInteger
+int)
+
+static boolean nonZeroDroppedBits(
+int
+int[])
+
+static java.math.BigInteger shiftRight(
+java.math.BigInteger
+int)
+
+static boolean shiftRight(
+int[]
+int
+int[]
+int
+int)
+
+static boolean testBit(
+java.math.BigInteger
+int)
+
+________________CLASS________________
+
+
+ class java.math.Conversion extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] bigRadices
+
+static final int[] digitFitInInt
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+static double bigInteger2Double(
+java.math.BigInteger)
+
+static java.lang.String bigInteger2String(
+java.math.BigInteger
+int)
+
+static long divideLongByBillion(
+long)
+
+static java.lang.String toDecimalScaledString(
+long
+int)
+
+static java.lang.String toDecimalScaledString(
+java.math.BigInteger
+int)
+
+________________CLASS________________
+
+
+ class java.math.Division extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+static java.math.BigInteger[] divideAndRemainderByInteger(
+java.math.BigInteger
+int
+int)
+
+static int divideArrayByInt(
+int[]
+int[]
+int
+int)
+
+static long divideLongByInt(
+long
+int)
+
+static int remainder(
+java.math.BigInteger
+int)
+
+static int remainderArrayByInt(
+int[]
+int
+int)
+
+________________CLASS________________
+
+
+ class java.math.Logical extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+static java.math.BigInteger and(
+java.math.BigInteger
+java.math.BigInteger)
+
+static java.math.BigInteger andDiffSigns(
+java.math.BigInteger
+java.math.BigInteger)
+
+static java.math.BigInteger andNegative(
+java.math.BigInteger
+java.math.BigInteger)
+
+static java.math.BigInteger andNot(
+java.math.BigInteger
+java.math.BigInteger)
+
+static java.math.BigInteger andNotNegative(
+java.math.BigInteger
+java.math.BigInteger)
+
+static java.math.BigInteger andNotNegativePositive(
+java.math.BigInteger
+java.math.BigInteger)
+
+static java.math.BigInteger andNotPositive(
+java.math.BigInteger
+java.math.BigInteger)
+
+static java.math.BigInteger andNotPositiveNegative(
+java.math.BigInteger
+java.math.BigInteger)
+
+static java.math.BigInteger andPositive(
+java.math.BigInteger
+java.math.BigInteger)
+
+static java.math.BigInteger not(
+java.math.BigInteger)
+
+static java.math.BigInteger or(
+java.math.BigInteger
+java.math.BigInteger)
+
+static java.math.BigInteger orDiffSigns(
+java.math.BigInteger
+java.math.BigInteger)
+
+static java.math.BigInteger orNegative(
+java.math.BigInteger
+java.math.BigInteger)
+
+static java.math.BigInteger orPositive(
+java.math.BigInteger
+java.math.BigInteger)
+
+static java.math.BigInteger xor(
+java.math.BigInteger
+java.math.BigInteger)
+
+static java.math.BigInteger xorDiffSigns(
+java.math.BigInteger
+java.math.BigInteger)
+
+static java.math.BigInteger xorNegative(
+java.math.BigInteger
+java.math.BigInteger)
+
+static java.math.BigInteger xorPositive(
+java.math.BigInteger
+java.math.BigInteger)
+
+________________CLASS________________
+
+
+public final class java.math.MathContext extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+public static final java.math.MathContext DECIMAL128
+
+public static final java.math.MathContext DECIMAL32
+
+public static final java.math.MathContext DECIMAL64
+
+public static final java.math.MathContext UNLIMITED
+
+private static final char[] chPrecision
+
+private static final char[] chRoundingMode
+
+private static final long serialVersionUID
+
+private int precision
+
+private java.math.RoundingMode roundingMode
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int)
+
+public void <init>(
+int
+java.math.RoundingMode)
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public int getPrecision()
+
+public java.math.RoundingMode getRoundingMode()
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+ class java.math.Multiplication extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final java.math.BigInteger[] bigFivePows
+
+static final java.math.BigInteger[] bigTenPows
+
+static final int[] fivePows
+
+static final int[] tenPows
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+static java.math.BigInteger multiplyByFivePow(
+java.math.BigInteger
+int)
+
+static java.math.BigInteger multiplyByPositiveInt(
+java.math.BigInteger
+int)
+
+static java.math.BigInteger multiplyByTenPow(
+java.math.BigInteger
+long)
+
+static java.math.BigInteger powerOf10(
+long)
+
+________________CLASS________________
+
+
+ class java.math.Primality extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.math.BigInteger[] BIprimes
+
+private static final int[] primes
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+static java.math.BigInteger nextProbablePrime(
+java.math.BigInteger)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Ljava/math/RoundingMode;>; )
+public final class java.math.RoundingMode extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final java.math.RoundingMode[] $VALUES
+
+public static final java.math.RoundingMode CEILING
+
+public static final java.math.RoundingMode DOWN
+
+public static final java.math.RoundingMode FLOOR
+
+public static final java.math.RoundingMode HALF_DOWN
+
+public static final java.math.RoundingMode HALF_EVEN
+
+public static final java.math.RoundingMode HALF_UP
+
+public static final java.math.RoundingMode UNNECESSARY
+
+public static final java.math.RoundingMode UP
+
+private final int bigDecimalRM
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static java.math.RoundingMode valueOf(
+int)
+
+public static java.math.RoundingMode valueOf(
+java.lang.String)
+
+public static java.math.RoundingMode[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =RequestorType )
+@dalvik.annotation.EnclosingClass (value =Ljava/net/Authenticator; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Ljava/net/Authenticator$RequestorType;>; )
+public final class java.net.Authenticator$RequestorType extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final java.net.Authenticator$RequestorType[] $VALUES
+
+public static final java.net.Authenticator$RequestorType PROXY
+
+public static final java.net.Authenticator$RequestorType SERVER
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static java.net.Authenticator$RequestorType valueOf(
+java.lang.String)
+
+public static java.net.Authenticator$RequestorType[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/net/Authenticator$RequestorType; )
+public abstract class java.net.Authenticator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.net.NetPermission requestPasswordAuthenticationPermission
+
+private static final java.net.NetPermission setDefaultAuthenticatorPermission
+
+private static java.net.Authenticator thisAuthenticator
+
+private java.net.InetAddress addr
+
+private java.lang.String host
+
+private int port
+
+private java.lang.String prompt
+
+private java.lang.String protocol
+
+private java.net.Authenticator$RequestorType rt
+
+private java.lang.String scheme
+
+private java.net.URL url
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.net.PasswordAuthentication requestPasswordAuthentication(
+java.lang.String
+java.net.InetAddress
+int
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public static java.net.PasswordAuthentication requestPasswordAuthentication(
+java.lang.String
+java.net.InetAddress
+int
+java.lang.String
+java.lang.String
+java.lang.String
+java.net.URL
+java.net.Authenticator$RequestorType)
+
+public static java.net.PasswordAuthentication requestPasswordAuthentication(
+java.net.InetAddress
+int
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public static void setDefault(
+java.net.Authenticator)
+
+protected java.net.PasswordAuthentication getPasswordAuthentication()
+
+protected final java.lang.String getRequestingHost()
+
+protected final int getRequestingPort()
+
+protected final java.lang.String getRequestingPrompt()
+
+protected final java.lang.String getRequestingProtocol()
+
+protected final java.lang.String getRequestingScheme()
+
+protected final java.net.InetAddress getRequestingSite()
+
+protected java.net.URL getRequestingURL()
+
+protected java.net.Authenticator$RequestorType getRequestorType()
+
+________________CLASS________________
+
+
+public class java.net.SocketException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.net.BindException extends java.net.SocketException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class java.net.CacheRequest extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public abstract void abort()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.io.OutputStream getBody()
+
+________________CLASS________________
+
+
+public abstract class java.net.CacheResponse extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.io.InputStream getBody()
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.util.Map getHeaders()
+
+________________CLASS________________
+
+
+public class java.net.ConnectException extends java.net.SocketException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class java.net.ContentHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.lang.Object getContent(
+java.net.URLConnection)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getContent(
+java.net.URLConnection
+java.lang.Class[])
+
+________________CLASS________________
+
+
+public abstract interface class java.net.ContentHandlerFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.net.ContentHandler createContentHandler(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class java.net.CookieHandler extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.net.NetPermission getCookieHandlerPermission
+
+private static final java.net.NetPermission setCookieHandlerPermission
+
+private static java.net.CookieHandler systemWideCookieHandler
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.net.CookieHandler getDefault()
+
+public static void setDefault(
+java.net.CookieHandler)
+@dalvik.annotation.Signature (value =(Ljava/net/URI;Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;)Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.util.Map get(
+java.net.URI
+java.util.Map)
+@dalvik.annotation.Signature (value =(Ljava/net/URI;Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;)V )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void put(
+java.net.URI
+java.util.Map)
+
+________________CLASS________________
+
+
+public final class java.net.DatagramPacket extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.net.InetAddress address
+
+ byte[] data
+
+ int length
+
+ int offset
+
+ int port
+----------------METHODS----------------
+
+public void <init>(
+byte[]
+int)
+
+public void <init>(
+byte[]
+int
+int)
+
+public void <init>(
+byte[]
+int
+int
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void <init>(
+byte[]
+int
+int
+java.net.SocketAddress)
+
+public void <init>(
+byte[]
+int
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void <init>(
+byte[]
+int
+java.net.SocketAddress)
+
+public java.net.InetAddress getAddress()
+
+public byte[] getData()
+
+public int getLength()
+
+public int getOffset()
+
+public int getPort()
+
+public java.net.SocketAddress getSocketAddress()
+
+public void setAddress(
+java.net.InetAddress)
+
+public void setData(
+byte[])
+
+public void setData(
+byte[]
+int
+int)
+
+public void setLength(
+int)
+
+public void setPort(
+int)
+
+public void setSocketAddress(
+java.net.SocketAddress)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Ljava/net/DatagramSocket; )
+ class java.net.DatagramSocket$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Lock )
+@dalvik.annotation.EnclosingClass (value =Ljava/net/DatagramSocket; )
+ class java.net.DatagramSocket$Lock extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+java.net.DatagramSocket$1)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/net/DatagramSocket$1;Ljava/net/DatagramSocket$Lock; )
+public class java.net.DatagramSocket extends java.lang.Object
+
+----------------FIELDS----------------
+
+static java.net.DatagramSocketImplFactory factory
+
+ java.net.InetAddress address
+
+ java.net.DatagramSocketImpl impl
+
+ boolean isBound
+
+private boolean isClosed
+
+private boolean isConnected
+
+private java.lang.Object lock
+
+ int port
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void <init>(
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void <init>(
+int
+java.net.InetAddress)
+
+protected void <init>(
+java.net.DatagramSocketImpl)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void <init>(
+java.net.SocketAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static void setDatagramSocketImplFactory(
+java.net.DatagramSocketImplFactory)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void bind(
+java.net.SocketAddress)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+ void checkClosedAndBind(
+boolean)
+
+ void checkListen(
+int)
+
+public void close()
+
+public void connect(
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void connect(
+java.net.SocketAddress)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+ void createSocket(
+int
+java.net.InetAddress)
+
+public void disconnect()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public boolean getBroadcast()
+
+public java.nio.channels.DatagramChannel getChannel()
+
+public java.net.InetAddress getInetAddress()
+
+public java.net.InetAddress getLocalAddress()
+
+public int getLocalPort()
+
+public java.net.SocketAddress getLocalSocketAddress()
+
+public int getPort()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getReceiveBufferSize()
+
+public java.net.SocketAddress getRemoteSocketAddress()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public boolean getReuseAddress()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getSendBufferSize()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getSoTimeout()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getTrafficClass()
+
+public boolean isBound()
+
+public boolean isClosed()
+
+public boolean isConnected()
+
+ boolean isMulticastSocket()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void receive(
+java.net.DatagramPacket)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void send(
+java.net.DatagramPacket)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setBroadcast(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setReceiveBufferSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setReuseAddress(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setSendBufferSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setSoTimeout(
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setTrafficClass(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class java.net.SocketOptions extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int IP_MULTICAST_IF
+
+public static final int IP_MULTICAST_IF2
+
+public static final int IP_MULTICAST_LOOP
+
+public static final int IP_TOS
+
+public static final int SO_BINDADDR
+
+public static final int SO_BROADCAST
+
+public static final int SO_KEEPALIVE
+
+public static final int SO_LINGER
+
+public static final int SO_OOBINLINE
+
+public static final int SO_RCVBUF
+
+public static final int SO_REUSEADDR
+
+public static final int SO_SNDBUF
+
+public static final int SO_TIMEOUT
+
+public static final int TCP_NODELAY
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract java.lang.Object getOption(
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract void setOption(
+int
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract class java.net.DatagramSocketImpl extends java.lang.Object implements java.net.SocketOptions
+
+----------------FIELDS----------------
+
+protected java.io.FileDescriptor fd
+
+protected int localPort
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+protected abstract void bind(
+int
+java.net.InetAddress)
+
+protected abstract void close()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+protected void connect(
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+protected abstract void create()
+
+protected void disconnect()
+
+protected java.io.FileDescriptor getFileDescriptor()
+
+ java.net.InetAddress getLocalAddress()
+
+protected int getLocalPort()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract java.lang.Object getOption(
+int)
+@java.lang.Deprecated
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract byte getTTL()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract int getTimeToLive()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void join(
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void joinGroup(
+java.net.SocketAddress
+java.net.NetworkInterface)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void leave(
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void leaveGroup(
+java.net.SocketAddress
+java.net.NetworkInterface)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract int peek(
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract int peekData(
+java.net.DatagramPacket)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void receive(
+java.net.DatagramPacket)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void send(
+java.net.DatagramPacket)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract void setOption(
+int
+java.lang.Object)
+@java.lang.Deprecated
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void setTTL(
+byte)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void setTimeToLive(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class java.net.DatagramSocketImplFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.net.DatagramSocketImpl createDatagramSocketImpl()
+
+________________CLASS________________
+
+
+public abstract interface class java.net.FileNameMap extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getContentTypeFor(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.net.HttpRetryException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.String location
+
+private int responseCode
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+int)
+
+public void <init>(
+java.lang.String
+int
+java.lang.String)
+
+public java.lang.String getLocation()
+
+public java.lang.String getReason()
+
+public int responseCode()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/net/URLConnection$DefaultContentHandler; )
+public abstract class java.net.URLConnection extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.net.ContentHandlerFactory contentHandlerFactory
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/Object;>; )
+static java.util.Hashtable contentHandlers
+
+private static boolean defaultAllowUserInteraction
+
+private static boolean defaultUseCaches
+
+private static java.net.FileNameMap fileNameMap
+
+protected boolean allowUserInteraction
+
+private int connectTimeout
+
+protected boolean connected
+
+private java.lang.String contentType
+
+ java.net.ContentHandler defaultHandler
+
+protected boolean doInput
+
+protected boolean doOutput
+
+protected long ifModifiedSince
+
+private long lastModified
+
+private int readTimeout
+
+protected java.net.URL url
+
+protected boolean useCaches
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.net.URL)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.net.ContentHandler getContentHandler(
+java.lang.String)
+
+public static boolean getDefaultAllowUserInteraction()
+@java.lang.Deprecated
+public static java.lang.String getDefaultRequestProperty(
+java.lang.String)
+
+public static java.net.FileNameMap getFileNameMap()
+
+public static java.lang.String guessContentTypeFromName(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static java.lang.String guessContentTypeFromStream(
+java.io.InputStream)
+
+private java.lang.String parseTypeString(
+java.lang.String)
+
+public static void setContentHandlerFactory(
+java.net.ContentHandlerFactory)
+
+public static void setDefaultAllowUserInteraction(
+boolean)
+@java.lang.Deprecated
+public static void setDefaultRequestProperty(
+java.lang.String
+java.lang.String)
+
+public static void setFileNameMap(
+java.net.FileNameMap)
+
+public void addRequestProperty(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void connect()
+
+public boolean getAllowUserInteraction()
+
+public int getConnectTimeout()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getContent()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getContent(
+java.lang.Class[])
+
+public java.lang.String getContentEncoding()
+
+public int getContentLength()
+
+public java.lang.String getContentType()
+
+public long getDate()
+
+public boolean getDefaultUseCaches()
+
+public boolean getDoInput()
+
+public boolean getDoOutput()
+
+public long getExpiration()
+
+public java.lang.String getHeaderField(
+int)
+
+public java.lang.String getHeaderField(
+java.lang.String)
+
+public long getHeaderFieldDate(
+java.lang.String
+long)
+
+public int getHeaderFieldInt(
+java.lang.String
+int)
+
+public java.lang.String getHeaderFieldKey(
+int)
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>; )
+public java.util.Map getHeaderFields()
+
+public long getIfModifiedSince()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getInputStream()
+
+public long getLastModified()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.OutputStream getOutputStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.security.Permission getPermission()
+
+public int getReadTimeout()
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>; )
+public java.util.Map getRequestProperties()
+
+public java.lang.String getRequestProperty(
+java.lang.String)
+
+public java.net.URL getURL()
+
+public boolean getUseCaches()
+
+public void setAllowUserInteraction(
+boolean)
+
+public void setConnectTimeout(
+int)
+
+public void setDefaultUseCaches(
+boolean)
+
+public void setDoInput(
+boolean)
+
+public void setDoOutput(
+boolean)
+
+public void setIfModifiedSince(
+long)
+
+public void setReadTimeout(
+int)
+
+public void setRequestProperty(
+java.lang.String
+java.lang.String)
+
+public void setUseCaches(
+boolean)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract class java.net.HttpURLConnection extends java.net.URLConnection
+
+----------------FIELDS----------------
+
+private static final int DEFAULT_CHUNK_LENGTH
+
+public static final int HTTP_ACCEPTED
+
+public static final int HTTP_BAD_GATEWAY
+
+public static final int HTTP_BAD_METHOD
+
+public static final int HTTP_BAD_REQUEST
+
+public static final int HTTP_CLIENT_TIMEOUT
+
+public static final int HTTP_CONFLICT
+
+public static final int HTTP_CREATED
+
+public static final int HTTP_ENTITY_TOO_LARGE
+
+public static final int HTTP_FORBIDDEN
+
+public static final int HTTP_GATEWAY_TIMEOUT
+
+public static final int HTTP_GONE
+
+public static final int HTTP_INTERNAL_ERROR
+
+public static final int HTTP_LENGTH_REQUIRED
+
+public static final int HTTP_MOVED_PERM
+
+public static final int HTTP_MOVED_TEMP
+
+public static final int HTTP_MULT_CHOICE
+
+public static final int HTTP_NOT_ACCEPTABLE
+
+public static final int HTTP_NOT_AUTHORITATIVE
+
+public static final int HTTP_NOT_FOUND
+
+public static final int HTTP_NOT_IMPLEMENTED
+
+public static final int HTTP_NOT_MODIFIED
+
+public static final int HTTP_NO_CONTENT
+
+public static final int HTTP_OK
+
+public static final int HTTP_PARTIAL
+
+public static final int HTTP_PAYMENT_REQUIRED
+
+public static final int HTTP_PRECON_FAILED
+
+public static final int HTTP_PROXY_AUTH
+
+public static final int HTTP_REQ_TOO_LONG
+
+public static final int HTTP_RESET
+
+public static final int HTTP_SEE_OTHER
+@java.lang.Deprecated
+public static final int HTTP_SERVER_ERROR
+
+public static final int HTTP_UNAUTHORIZED
+
+public static final int HTTP_UNAVAILABLE
+
+public static final int HTTP_UNSUPPORTED_TYPE
+
+public static final int HTTP_USE_PROXY
+
+public static final int HTTP_VERSION
+
+private static boolean followRedirects
+
+protected int chunkLength
+
+protected int fixedContentLength
+
+protected boolean instanceFollowRedirects
+
+protected java.lang.String method
+
+private java.lang.String[] methodTokens
+
+protected int responseCode
+
+protected java.lang.String responseMessage
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.net.URL)
+
+public static boolean getFollowRedirects()
+
+public static void setFollowRedirects(
+boolean)
+
+public abstract void disconnect()
+
+public java.io.InputStream getErrorStream()
+
+public long getHeaderFieldDate(
+java.lang.String
+long)
+
+public boolean getInstanceFollowRedirects()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.security.Permission getPermission()
+
+public java.lang.String getRequestMethod()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int getResponseCode()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.String getResponseMessage()
+
+public void setChunkedStreamingMode(
+int)
+
+public void setFixedLengthStreamingMode(
+int)
+
+public void setInstanceFollowRedirects(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/ProtocolException; )
+public void setRequestMethod(
+java.lang.String)
+
+public abstract boolean usingProxy()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/net/InetAddress$Cache;Ljava/net/InetAddress$CacheElement;Ljava/net/InetAddress$WaitReachable; )
+public class java.net.InetAddress extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+static java.net.InetAddress ANY
+
+private static final java.lang.String ERRMSG_CONNECTION_REFUSED
+
+static final java.net.InetAddress LOOPBACK
+
+private static final org.apache.harmony.luni.platform.INetworkSystem NETIMPL
+
+static final byte[] any_bytes
+
+static final byte[] localhost_bytes
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+private int addrCount
+
+ int family
+
+ java.lang.String hostName
+
+ byte[] ipaddress
+
+private boolean reached
+
+private transient java.lang.Object waitReachable
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+ void <init>(
+byte[])
+
+ void <init>(
+byte[]
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static boolean access$100(
+java.net.InetAddress
+java.net.InetAddress
+java.net.InetAddress
+int)
+
+static java.lang.Object access$200(
+java.net.InetAddress)
+
+static boolean access$302(
+java.net.InetAddress
+boolean)
+
+static int access$400(
+java.net.InetAddress)
+
+static int access$410(
+java.net.InetAddress)
+
+static byte[] addressOf(
+int)
+
+static int bytesToInt(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+static java.net.InetAddress createHostNameFromIPAddress(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+static java.net.InetAddress[] getAliasesByNameImpl(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+public static java.net.InetAddress[] getAllByName(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+public static java.net.InetAddress getByAddress(
+java.lang.String
+byte[])
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+public static java.net.InetAddress getByAddress(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+static java.net.InetAddress getByAddress(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+static java.net.InetAddress getByAddressInternal(
+java.lang.String
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+public static java.net.InetAddress getByName(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+static java.net.InetAddress getHostByAddrImpl(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+static java.net.InetAddress getHostByNameImpl(
+java.lang.String
+boolean)
+
+static java.lang.String getHostNameImpl()
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+static java.lang.String getHostNameInternal(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+public static java.net.InetAddress getLocalHost()
+
+private static native java.lang.String[] getaliasesbyname(
+java.lang.String)
+
+private static native java.lang.String gethostbyaddr(
+java.lang.String)
+
+private static native boolean gethostbyname(
+java.lang.String
+byte[])
+
+private static native java.lang.String gethostname()
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+static int inetAddr(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+static int inetAddrImpl(
+java.lang.String)
+
+static java.lang.String inetNtoaImpl(
+int)
+
+static void intToBytes(
+int
+byte[]
+int)
+
+private static boolean isHostName(
+java.lang.String)
+
+private static boolean isIPv4MappedAddress(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private boolean isReachableByMultiThread(
+java.net.NetworkInterface
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private boolean isReachableByTCP(
+java.net.InetAddress
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+static java.net.InetAddress lookupHostByName(
+java.lang.String)
+
+static boolean preferIPv6Addresses()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/ObjectStreamException; )
+private java.lang.Object readResolve()
+
+private static int secondsToNanos(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+ java.net.InetAddress$CacheElement cacheElement()
+
+public boolean equals(
+java.lang.Object)
+
+public byte[] getAddress()
+
+public java.lang.String getCanonicalHostName()
+
+public java.lang.String getHostAddress()
+
+public java.lang.String getHostName()
+
+public int hashCode()
+
+public boolean isAnyLocalAddress()
+
+public boolean isLinkLocalAddress()
+
+public boolean isLoopbackAddress()
+
+public boolean isMCGlobal()
+
+public boolean isMCLinkLocal()
+
+public boolean isMCNodeLocal()
+
+public boolean isMCOrgLocal()
+
+public boolean isMCSiteLocal()
+
+public boolean isMulticastAddress()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean isReachable(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean isReachable(
+java.net.NetworkInterface
+int
+int)
+
+public boolean isSiteLocalAddress()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public final class java.net.Inet4Address extends java.net.InetAddress
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+ void <init>(
+byte[])
+
+ void <init>(
+byte[]
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/ObjectStreamException; )
+private java.lang.Object writeReplace()
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getHostAddress()
+
+public int hashCode()
+
+public boolean isAnyLocalAddress()
+
+public boolean isLinkLocalAddress()
+
+public boolean isLoopbackAddress()
+
+public boolean isMCGlobal()
+
+public boolean isMCLinkLocal()
+
+public boolean isMCNodeLocal()
+
+public boolean isMCOrgLocal()
+
+public boolean isMCSiteLocal()
+
+public boolean isMulticastAddress()
+
+public boolean isSiteLocalAddress()
+
+________________CLASS________________
+
+
+public final class java.net.Inet6Address extends java.net.InetAddress
+
+----------------FIELDS----------------
+
+static final java.net.InetAddress ANY
+
+static final java.net.InetAddress LOOPBACK
+
+static final byte[] any_bytes
+
+static final byte[] localhost_bytes
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+ java.lang.String ifname
+
+ int scope_id
+
+ boolean scope_id_set
+
+ boolean scope_ifname_set
+
+transient java.net.NetworkInterface scopedIf
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+byte[])
+
+ void <init>(
+byte[]
+int)
+
+ void <init>(
+byte[]
+java.lang.String)
+
+ void <init>(
+byte[]
+java.lang.String
+int)
+
+private boolean compareLocalType(
+java.net.Inet6Address)
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+public static java.net.Inet6Address getByAddress(
+java.lang.String
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+public static java.net.Inet6Address getByAddress(
+java.lang.String
+byte[]
+java.net.NetworkInterface)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getHostAddress()
+
+public int getScopeId()
+
+public java.net.NetworkInterface getScopedInterface()
+
+public int hashCode()
+
+public boolean isAnyLocalAddress()
+
+public boolean isIPv4CompatibleAddress()
+
+public boolean isLinkLocalAddress()
+
+public boolean isLoopbackAddress()
+
+public boolean isMCGlobal()
+
+public boolean isMCLinkLocal()
+
+public boolean isMCNodeLocal()
+
+public boolean isMCOrgLocal()
+
+public boolean isMCSiteLocal()
+
+public boolean isMulticastAddress()
+
+public boolean isSiteLocalAddress()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.net.InetAddress$1 extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final java.net.InetAddress this$0
+
+final java.net.InetAddress val$addr
+
+final int val$timeout
+----------------METHODS----------------
+
+ void <init>(
+java.net.InetAddress
+java.net.InetAddress
+int)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/net/InetAddress; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =Cache )
+ class java.net.InetAddress$Cache extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.net.InetAddress$CacheElement head
+
+static int maxSize
+
+private static int size
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+static void add(
+java.net.InetAddress)
+
+static void clear()
+
+private static void deleteTail()
+
+static java.net.InetAddress$CacheElement get(
+java.lang.String)
+
+private static void moveToHead(
+java.net.InetAddress$CacheElement
+java.net.InetAddress$CacheElement)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =CacheElement )
+@dalvik.annotation.EnclosingClass (value =Ljava/net/InetAddress; )
+ class java.net.InetAddress$CacheElement extends java.lang.Object
+
+----------------FIELDS----------------
+
+ long nanoTimeAdded
+
+ java.net.InetAddress$CacheElement next
+
+final java.net.InetAddress this$0
+----------------METHODS----------------
+
+public void <init>(
+java.net.InetAddress)
+
+ java.lang.String hostName()
+
+ java.net.InetAddress inetAddress()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/net/InetAddress; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =WaitReachable )
+ class java.net.InetAddress$WaitReachable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+java.net.InetAddress$1)
+
+________________CLASS________________
+
+
+public abstract class java.net.SocketAddress extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class java.net.InetSocketAddress extends java.net.SocketAddress
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.net.InetAddress addr
+
+private java.lang.String hostname
+
+private int port
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+java.lang.String
+int)
+
+ void <init>(
+java.lang.String
+int
+boolean)
+
+public void <init>(
+java.net.InetAddress
+int)
+
+public static java.net.InetSocketAddress createUnresolved(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+public final boolean equals(
+java.lang.Object)
+
+public final java.net.InetAddress getAddress()
+
+public final java.lang.String getHostName()
+
+public final int getPort()
+
+public final int hashCode()
+
+public final boolean isUnresolved()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract class java.net.JarURLConnection extends java.net.URLConnection
+
+----------------FIELDS----------------
+
+private java.lang.String entryName
+
+private java.lang.String file
+
+private java.net.URL fileURL
+
+protected java.net.URLConnection jarFileURLConnection
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/net/MalformedURLException; )
+protected void <init>(
+java.net.URL)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.jar.Attributes getAttributes()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.security.cert.Certificate[] getCertificates()
+
+public java.lang.String getEntryName()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.jar.JarEntry getJarEntry()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.util.jar.JarFile getJarFile()
+
+public java.net.URL getJarFileURL()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.jar.Attributes getMainAttributes()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.jar.Manifest getManifest()
+
+________________CLASS________________
+
+
+public class java.net.MalformedURLException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.net.MulticastSocket extends java.net.DatagramSocket
+
+----------------FIELDS----------------
+
+static final int SO_REUSEPORT
+
+private java.net.InetAddress interfaceSet
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.net.SocketAddress)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+ void createSocket(
+int
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public java.net.InetAddress getInterface()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public boolean getLoopbackMode()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public java.net.NetworkInterface getNetworkInterface()
+@java.lang.Deprecated
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public byte getTTL()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int getTimeToLive()
+
+ boolean isMulticastSocket()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void joinGroup(
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void joinGroup(
+java.net.SocketAddress
+java.net.NetworkInterface)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void leaveGroup(
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void leaveGroup(
+java.net.SocketAddress
+java.net.NetworkInterface)
+@java.lang.Deprecated
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void send(
+java.net.DatagramPacket
+byte)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setInterface(
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setLoopbackMode(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setNetworkInterface(
+java.net.NetworkInterface)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@java.lang.Deprecated
+public void setTTL(
+byte)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setTimeToLive(
+int)
+
+________________CLASS________________
+
+
+ class java.net.NegCacheElement extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.lang.String hostName
+
+ long nanoTimeAdded
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+ java.lang.String hostName()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Map<TK;TV;>; )
+public abstract class java.util.AbstractMap extends java.lang.Object implements java.util.Map
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Set<TK;>; )
+ java.util.Set keySet
+@dalvik.annotation.Signature (value =Ljava/util/Collection<TV;>; )
+ java.util.Collection valuesCollection
+----------------METHODS----------------
+
+protected void <init>()
+
+public void clear()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+protected java.lang.Object clone()
+
+public boolean containsKey(
+java.lang.Object)
+
+public boolean containsValue(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+public abstract java.util.Set entrySet()
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object get(
+java.lang.Object)
+
+public int hashCode()
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<TK;>; )
+public java.util.Set keySet()
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void putAll(
+java.util.Map)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object remove(
+java.lang.Object)
+
+public int size()
+
+public java.lang.String toString()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<TV;>; )
+public java.util.Collection values()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/util/Map<TK;TV;>;Ljava/lang/Cloneable;Ljava/io/Serializable; )
+@dalvik.annotation.MemberClasses (value =Ljava/util/HashMap$HashMapEntrySet;Ljava/util/HashMap$HashMapIterator;Ljava/util/HashMap$Entry; )
+public class java.util.HashMap extends java.util.AbstractMap implements java.util.Map, java.lang.Cloneable, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final int DEFAULT_SIZE
+
+private static final long serialVersionUID
+
+transient int elementCount
+@dalvik.annotation.Signature (value =[Ljava/util/HashMap$Entry<TK;TV;>; )
+transient java.util.HashMap$Entry[] elementData
+
+final float loadFactor
+
+transient int modCount
+
+ int threshold
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+int
+float)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void <init>(
+java.util.Map)
+
+private void computeMaxSize()
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+private void putAllImpl(
+java.util.Map)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public void clear()
+
+public java.lang.Object clone()
+
+public boolean containsKey(
+java.lang.Object)
+
+public boolean containsValue(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;ITV;)Ljava/util/HashMap$Entry<TK;TV;>; )
+ java.util.HashMap$Entry createEntry(
+java.lang.Object
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;II)Ljava/util/HashMap$Entry<TK;TV;>; )
+ java.util.HashMap$Entry createHashedEntry(
+java.lang.Object
+int
+int)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Set entrySet()
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;II)Ljava/util/HashMap$Entry<TK;TV;>; )
+final java.util.HashMap$Entry findNonNullKeyEntry(
+java.lang.Object
+int
+int)
+@dalvik.annotation.Signature (value =()Ljava/util/HashMap$Entry<TK;TV;>; )
+final java.util.HashMap$Entry findNullKeyEntry()
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object get(
+java.lang.Object)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<TK;>; )
+public java.util.Set keySet()
+@dalvik.annotation.Signature (value =(I)[Ljava/util/HashMap$Entry<TK;TV;>; )
+ java.util.HashMap$Entry[] newElementArray(
+int)
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void putAll(
+java.util.Map)
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+ java.lang.Object putImpl(
+java.lang.Object
+java.lang.Object)
+
+ void rehash()
+
+ void rehash(
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)Ljava/util/HashMap$Entry<TK;TV;>; )
+ java.util.HashMap$Entry removeEntry(
+java.lang.Object)
+
+public int size()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<TV;>; )
+public java.util.Collection values()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/HashMap<TK;TV;>; )
+@dalvik.annotation.MemberClasses (value =Ljava/util/LinkedHashMap$LinkedHashMapEntry;Ljava/util/LinkedHashMap$LinkedHashMapEntrySet;Ljava/util/LinkedHashMap$LinkedHashIterator; )
+public class java.util.LinkedHashMap extends java.util.HashMap
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final boolean accessOrder
+@dalvik.annotation.Signature (value =Ljava/util/LinkedHashMap$LinkedHashMapEntry<TK;TV;>; )
+private transient java.util.LinkedHashMap$LinkedHashMapEntry head
+@dalvik.annotation.Signature (value =Ljava/util/LinkedHashMap$LinkedHashMapEntry<TK;TV;>; )
+private transient java.util.LinkedHashMap$LinkedHashMapEntry tail
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+int
+float)
+
+public void <init>(
+int
+float
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void <init>(
+java.util.Map)
+
+static java.util.LinkedHashMap$LinkedHashMapEntry access$000(
+java.util.LinkedHashMap)
+
+static java.util.LinkedHashMap$LinkedHashMapEntry access$002(
+java.util.LinkedHashMap
+java.util.LinkedHashMap$LinkedHashMapEntry)
+
+static java.util.LinkedHashMap$LinkedHashMapEntry access$102(
+java.util.LinkedHashMap
+java.util.LinkedHashMap$LinkedHashMapEntry)
+
+public void clear()
+@dalvik.annotation.Signature (value =(TK;ITV;)Ljava/util/HashMap$Entry<TK;TV;>; )
+ java.util.HashMap$Entry createEntry(
+java.lang.Object
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;II)Ljava/util/HashMap$Entry<TK;TV;>; )
+ java.util.HashMap$Entry createHashedEntry(
+java.lang.Object
+int
+int)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Set entrySet()
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object get(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<TK;>; )
+public java.util.Set keySet()
+@dalvik.annotation.Signature (value =(Ljava/util/LinkedHashMap$LinkedHashMapEntry<TK;TV;>;)V )
+ void linkEntry(
+java.util.LinkedHashMap$LinkedHashMapEntry)
+@dalvik.annotation.Signature (value =(I)[Ljava/util/HashMap$Entry<TK;TV;>; )
+ java.util.HashMap$Entry[] newElementArray(
+int)
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+ java.lang.Object putImpl(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Map$Entry<TK;TV;>;)Z )
+protected boolean removeEldestEntry(
+java.util.Map$Entry)
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<TV;>; )
+public java.util.Collection values()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/LinkedHashMap<TK;TV;>; )
+ class java.net.NegativeCache extends java.util.LinkedHashMap
+
+----------------FIELDS----------------
+
+static final float LOADING
+
+static final int MAX_NEGATIVE_ENTRIES
+@dalvik.annotation.Signature (value =Ljava/net/NegativeCache<Ljava/lang/String;Ljava/net/NegCacheElement;>; )
+static java.net.NegativeCache negCache
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+ void <init>(
+int
+float
+boolean)
+
+static void checkCacheExists()
+
+static java.lang.String getFailedMessage(
+java.lang.String)
+
+static void put(
+java.lang.String
+java.lang.String)
+
+private static int secondsToNanos(
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/Map$Entry<TK;TV;>;)Z )
+protected boolean removeEldestEntry(
+java.util.Map$Entry)
+
+________________CLASS________________
+
+
+public final class java.net.NetPermission extends java.security.BasicPermission
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class java.net.NetworkInterface extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int CHECK_CONNECT_NO_PORT
+
+static final int NO_INTERFACE_INDEX
+
+static final int UNSET_INTERFACE_INDEX
+
+ java.net.InetAddress[] addresses
+
+private java.lang.String displayName
+
+private int hashCode
+
+private int interfaceIndex
+
+private java.lang.String name
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+java.lang.String
+java.net.InetAddress[]
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public static java.net.NetworkInterface getByInetAddress(
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public static java.net.NetworkInterface getByName(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/net/NetworkInterface;>; )
+public static java.util.Enumeration getNetworkInterfaces()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+private static native java.net.NetworkInterface[] getNetworkInterfacesImpl()
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getDisplayName()
+
+ java.net.InetAddress getFirstAddress()
+
+ int getIndex()
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/net/InetAddress;>; )
+public java.util.Enumeration getInetAddresses()
+
+public java.lang.String getName()
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.net.NoRouteToHostException extends java.net.SocketException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class java.net.PasswordAuthentication extends java.lang.Object
+
+----------------FIELDS----------------
+
+private char[] password
+
+private java.lang.String userName
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+char[])
+
+public char[] getPassword()
+
+public java.lang.String getUserName()
+
+________________CLASS________________
+
+
+public class java.net.PortUnreachableException extends java.net.SocketException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.net.ProtocolException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Type )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Ljava/net/Proxy$Type;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/net/Proxy; )
+public final class java.net.Proxy$Type extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final java.net.Proxy$Type[] $VALUES
+
+public static final java.net.Proxy$Type DIRECT
+
+public static final java.net.Proxy$Type HTTP
+
+public static final java.net.Proxy$Type SOCKS
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static java.net.Proxy$Type valueOf(
+java.lang.String)
+
+public static java.net.Proxy$Type[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/net/Proxy$Type; )
+public class java.net.Proxy extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.net.Proxy NO_PROXY
+
+private java.net.SocketAddress address
+
+private java.net.Proxy$Type type
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public void <init>(
+java.net.Proxy$Type
+java.net.SocketAddress)
+
+public java.net.SocketAddress address()
+
+public final boolean equals(
+java.lang.Object)
+
+public final int hashCode()
+
+public java.lang.String toString()
+
+public java.net.Proxy$Type type()
+
+________________CLASS________________
+
+
+public abstract class java.net.ProxySelector extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.net.ProxySelector defaultSelector
+
+private static final java.net.NetPermission getProxySelectorPermission
+
+private static final java.net.NetPermission setProxySelectorPermission
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.net.ProxySelector getDefault()
+
+public static void setDefault(
+java.net.ProxySelector)
+
+public abstract void connectFailed(
+java.net.URI
+java.net.SocketAddress
+java.io.IOException)
+@dalvik.annotation.Signature (value =(Ljava/net/URI;)Ljava/util/List<Ljava/net/Proxy;>; )
+public abstract java.util.List select(
+java.net.URI)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Ljava/net/ProxySelectorImpl; )
+final class java.net.ProxySelectorImpl$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+
+ class java.net.ProxySelectorImpl extends java.net.ProxySelector
+
+----------------FIELDS----------------
+
+private static final int FTP_PROXY_PORT
+
+private static final int HTTPS_PROXY_PORT
+
+private static final int HTTP_PROXY_PORT
+
+private static final int SOCKS_PROXY_PORT
+
+private static java.util.Properties netProps
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static java.util.Properties access$000()
+
+static java.util.Properties access$002(
+java.util.Properties)
+
+private java.net.Proxy createProxy(
+java.net.Proxy$Type
+java.lang.String
+java.lang.String
+int)
+
+private java.lang.String getSystemProperty(
+java.lang.String)
+
+private java.lang.String getSystemProperty(
+java.lang.String
+java.lang.String)
+
+private java.lang.String getSystemPropertyOrAlternative(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private boolean isNonProxyHost(
+java.lang.String
+java.lang.String)
+
+private java.net.Proxy selectFtpProxy(
+java.lang.String)
+
+private java.net.Proxy selectHttpProxy(
+java.lang.String)
+
+private java.net.Proxy selectHttpsProxy()
+
+private java.net.Proxy selectSocksProxy()
+
+public void connectFailed(
+java.net.URI
+java.net.SocketAddress
+java.io.IOException)
+@dalvik.annotation.Signature (value =(Ljava/net/URI;)Ljava/util/List<Ljava/net/Proxy;>; )
+public java.util.List select(
+java.net.URI)
+
+________________CLASS________________
+
+
+public abstract class java.net.ResponseCache extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.net.ResponseCache _defaultResponseCache
+
+private static java.net.NetPermission getResponseCachepermission
+
+private static java.net.NetPermission setResponseCachepermission
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static void checkGetResponseCachePermission()
+
+private static void checkSetResponseCachePermission()
+
+public static java.net.ResponseCache getDefault()
+
+public static void setDefault(
+java.net.ResponseCache)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/net/URI;Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;)Ljava/net/CacheResponse; )
+public abstract java.net.CacheResponse get(
+java.net.URI
+java.lang.String
+java.util.Map)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.net.CacheRequest put(
+java.net.URI
+java.net.URLConnection)
+
+________________CLASS________________
+
+
+public abstract class java.net.SecureCacheResponse extends java.net.CacheResponse
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public abstract java.lang.String getCipherSuite()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/security/cert/Certificate;>; )
+public abstract java.util.List getLocalCertificateChain()
+
+public abstract java.security.Principal getLocalPrincipal()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public abstract java.security.Principal getPeerPrincipal()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/security/cert/Certificate;>; )
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public abstract java.util.List getServerCertificateChain()
+
+________________CLASS________________
+
+
+public class java.net.ServerSocket extends java.lang.Object
+
+----------------FIELDS----------------
+
+static java.net.SocketImplFactory factory
+
+ java.net.SocketImpl impl
+
+private boolean isBound
+
+private boolean isClosed
+
+private volatile boolean isCreated
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+int
+int
+java.net.InetAddress)
+
+protected void <init>(
+java.net.SocketImpl)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+private void checkClosedAndCreate(
+boolean)
+
+static int defaultBacklog()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static void setSocketFactory(
+java.net.SocketImplFactory)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket accept()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void bind(
+java.net.SocketAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void bind(
+java.net.SocketAddress
+int)
+
+ void checkListen(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public java.nio.channels.ServerSocketChannel getChannel()
+
+public java.net.InetAddress getInetAddress()
+
+public int getLocalPort()
+
+public java.net.SocketAddress getLocalSocketAddress()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getReceiveBufferSize()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public boolean getReuseAddress()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int getSoTimeout()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected final void implAccept(
+java.net.Socket)
+
+public boolean isBound()
+
+public boolean isClosed()
+
+public void setPerformancePreferences(
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setReceiveBufferSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setReuseAddress(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setSoTimeout(
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Ljava/net/Socket; )
+ class java.net.Socket$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =ConnectLock )
+@dalvik.annotation.EnclosingClass (value =Ljava/net/Socket; )
+ class java.net.Socket$ConnectLock extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+java.net.Socket$1)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/net/Socket$1;Ljava/net/Socket$ConnectLock; )
+public class java.net.Socket extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int FLAG_SHUTDOWN
+
+static final int MULTICAST_IF
+
+static final int MULTICAST_TTL
+
+static final int TCP_NODELAY
+
+static java.net.SocketImplFactory factory
+
+private java.lang.Object connectLock
+
+ java.net.SocketImpl impl
+
+private boolean isBound
+
+private boolean isClosed
+
+private boolean isConnected
+
+private volatile boolean isCreated
+
+private boolean isInputShutdown
+
+private boolean isOutputShutdown
+
+private java.net.Proxy proxy
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException;Ljava/io/IOException; )
+public void <init>(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.lang.String
+int
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@java.lang.Deprecated
+public void <init>(
+java.lang.String
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.net.InetAddress
+int
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@java.lang.Deprecated
+public void <init>(
+java.net.InetAddress
+int
+boolean)
+
+public void <init>(
+java.net.Proxy)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+protected void <init>(
+java.net.SocketImpl)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+private void checkClosedAndCreate(
+boolean)
+
+private void checkConnectPermission(
+java.lang.String
+int)
+
+static boolean preferIPv4Stack()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static void setSocketImplFactory(
+java.net.SocketImplFactory)
+
+ void accepted()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void bind(
+java.net.SocketAddress)
+
+ void checkDestination(
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connect(
+java.net.SocketAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connect(
+java.net.SocketAddress
+int)
+
+public java.nio.channels.SocketChannel getChannel()
+
+public java.net.InetAddress getInetAddress()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getInputStream()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public boolean getKeepAlive()
+
+public java.net.InetAddress getLocalAddress()
+
+public int getLocalPort()
+
+public java.net.SocketAddress getLocalSocketAddress()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public boolean getOOBInline()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.OutputStream getOutputStream()
+
+public int getPort()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getReceiveBufferSize()
+
+public java.net.SocketAddress getRemoteSocketAddress()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public boolean getReuseAddress()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getSendBufferSize()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getSoLinger()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getSoTimeout()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public boolean getTcpNoDelay()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getTrafficClass()
+
+public boolean isBound()
+
+public boolean isClosed()
+
+public boolean isConnected()
+
+public boolean isInputShutdown()
+
+public boolean isOutputShutdown()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void sendUrgentData(
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setKeepAlive(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setOOBInline(
+boolean)
+
+public void setPerformancePreferences(
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setReceiveBufferSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setReuseAddress(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setSendBufferSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setSoLinger(
+boolean
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setSoTimeout(
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setTcpNoDelay(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setTrafficClass(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void shutdownInput()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void shutdownOutput()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void startupSocket(
+java.net.InetAddress
+int
+java.net.InetAddress
+int
+boolean)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract class java.net.SocketImpl extends java.lang.Object implements java.net.SocketOptions
+
+----------------FIELDS----------------
+
+protected java.net.InetAddress address
+
+protected java.io.FileDescriptor fd
+
+protected int localport
+
+ org.apache.harmony.luni.platform.INetworkSystem netImpl
+
+protected int port
+
+protected int receiveTimeout
+
+ boolean shutdownInput
+
+ boolean streaming
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void accept(
+java.net.SocketImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void bind(
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void connect(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void connect(
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void connect(
+java.net.SocketAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void create(
+boolean)
+
+protected java.io.FileDescriptor getFileDescriptor()
+
+protected java.net.InetAddress getInetAddress()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract java.io.InputStream getInputStream()
+
+protected int getLocalPort()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract java.lang.Object getOption(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract java.io.OutputStream getOutputStream()
+
+protected int getPort()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void listen(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void sendUrgentData(
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract void setOption(
+int
+java.lang.Object)
+
+protected void setPerformancePreferences(
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void shutdownInput()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void shutdownOutput()
+
+protected boolean supportsUrgentData()
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ int write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public abstract interface class java.net.SocketImplFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.net.SocketImpl createSocketImpl()
+
+________________CLASS________________
+
+
+public final class java.net.SocketPermission extends java.security.Permission implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final int HIGHEST_PORT
+
+private static final int LOWEST_PORT
+
+static final int SP_ACCEPT
+
+static final int SP_CONNECT
+
+static final int SP_LISTEN
+
+static final int SP_RESOLVE
+
+private static final java.lang.String[] actionNames
+
+private static final long serialVersionUID
+
+private java.lang.String actions
+
+transient int actionsMask
+
+transient java.lang.String hostName
+
+transient java.lang.String ipString
+
+private transient boolean isPartialWild
+
+private transient boolean isWild
+
+transient int portMax
+
+transient int portMin
+
+transient boolean resolved
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+private java.lang.String getHostString(
+java.lang.String)
+
+private java.lang.String getIPString()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+private void parsePort(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+private void setActions(
+java.lang.String)
+
+private java.lang.String toCanonicalActionString(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+ boolean checkHost(
+java.net.SocketPermission)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getActions()
+
+public int hashCode()
+
+public boolean implies(
+java.security.Permission)
+
+public java.security.PermissionCollection newPermissionCollection()
+
+________________CLASS________________
+
+
+final class java.net.SocketPermissionCollection extends java.security.PermissionCollection
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/Vector<Ljava/security/Permission;>; )
+private java.util.Vector permissions
+----------------METHODS----------------
+
+public void <init>()
+
+public void add(
+java.security.Permission)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/security/Permission;>; )
+public java.util.Enumeration elements()
+
+public boolean implies(
+java.security.Permission)
+
+________________CLASS________________
+
+
+public class java.net.SocketTimeoutException extends java.io.InterruptedIOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/net/URI; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class java.net.URI$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =Helper )
+@dalvik.annotation.EnclosingClass (value =Ljava/net/URI; )
+ class java.net.URI$Helper extends java.lang.Object
+
+----------------FIELDS----------------
+
+final java.net.URI this$0
+----------------METHODS----------------
+
+private void <init>(
+java.net.URI)
+
+ void <init>(
+java.net.URI
+java.net.URI$1)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+static void access$100(
+java.net.URI$Helper
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+static void access$1500(
+java.net.URI$Helper
+boolean)
+
+private boolean isValidDomainName(
+java.lang.String)
+
+private boolean isValidHexChar(
+char)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+private boolean isValidHost(
+boolean
+java.lang.String)
+
+private boolean isValidIP4Word(
+java.lang.String)
+
+private boolean isValidIP6Address(
+java.lang.String)
+
+private boolean isValidIPv4Address(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+private void parseAuthority(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+private void parseURI(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+private void validateAuthority(
+java.lang.String
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+private void validateFragment(
+java.lang.String
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+private void validatePath(
+java.lang.String
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+private void validateQuery(
+java.lang.String
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+private void validateScheme(
+java.lang.String
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+private void validateSsp(
+java.lang.String
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+private void validateUserinfo(
+java.lang.String
+java.lang.String
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/net/URI$1;Ljava/net/URI$Helper; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/lang/Comparable<Ljava/net/URI;>;Ljava/io/Serializable; )
+public final class java.net.URI extends java.lang.Object implements java.lang.Comparable, java.io.Serializable
+
+----------------FIELDS----------------
+
+static final java.lang.String allLegal
+
+static final java.lang.String punct
+
+static final java.lang.String reserved
+
+private static final long serialVersionUID
+
+static final java.lang.String someLegal
+
+static final java.lang.String unreserved
+
+private transient boolean absolute
+
+private transient java.lang.String authority
+
+private transient java.lang.String fragment
+
+private transient int hash
+
+private transient java.lang.String host
+
+private transient boolean opaque
+
+private transient java.lang.String path
+
+private transient int port
+
+private transient java.lang.String query
+
+private transient java.lang.String scheme
+
+private transient java.lang.String schemespecificpart
+
+private transient boolean serverAuthority
+
+private java.lang.String string
+
+private transient java.lang.String userinfo
+----------------METHODS----------------
+
+private void <init>()
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+int
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+static java.lang.String access$1000(
+java.net.URI)
+
+static java.lang.String access$1002(
+java.net.URI
+java.lang.String)
+
+static java.lang.String access$1102(
+java.net.URI
+java.lang.String)
+
+static java.lang.String access$1202(
+java.net.URI
+java.lang.String)
+
+static int access$1302(
+java.net.URI
+int)
+
+static boolean access$1402(
+java.net.URI
+boolean)
+
+static java.lang.String access$202(
+java.net.URI
+java.lang.String)
+
+static java.lang.String access$300(
+java.net.URI)
+
+static java.lang.String access$302(
+java.net.URI
+java.lang.String)
+
+static boolean access$402(
+java.net.URI
+boolean)
+
+static java.lang.String access$500(
+java.net.URI)
+
+static java.lang.String access$502(
+java.net.URI
+java.lang.String)
+
+static java.lang.String access$600(
+java.net.URI)
+
+static java.lang.String access$602(
+java.net.URI
+java.lang.String)
+
+static boolean access$702(
+java.net.URI
+boolean)
+
+static java.lang.String access$800(
+java.net.URI)
+
+static java.lang.String access$802(
+java.net.URI
+java.lang.String)
+
+static java.lang.String access$900(
+java.net.URI)
+
+static java.lang.String access$902(
+java.net.URI
+java.lang.String)
+
+private java.lang.String convertHexToLowerCase(
+java.lang.String)
+
+public static java.net.URI create(
+java.lang.String)
+
+private java.lang.String decode(
+java.lang.String)
+
+private java.net.URI duplicate()
+
+private java.lang.String encodeOthers(
+java.lang.String)
+
+private boolean equalsHexCaseInsensitive(
+java.lang.String
+java.lang.String)
+
+private java.lang.String getHashString()
+
+private java.lang.String normalize(
+java.lang.String)
+
+private java.lang.String quoteComponent(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+private void setSchemeSpecificPart()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.net.URI)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getAuthority()
+
+public java.lang.String getFragment()
+
+public java.lang.String getHost()
+
+public java.lang.String getPath()
+
+public int getPort()
+
+public java.lang.String getQuery()
+
+public java.lang.String getRawAuthority()
+
+public java.lang.String getRawFragment()
+
+public java.lang.String getRawPath()
+
+public java.lang.String getRawQuery()
+
+public java.lang.String getRawSchemeSpecificPart()
+
+public java.lang.String getRawUserInfo()
+
+public java.lang.String getScheme()
+
+public java.lang.String getSchemeSpecificPart()
+
+public java.lang.String getUserInfo()
+
+public int hashCode()
+
+public boolean isAbsolute()
+
+public boolean isOpaque()
+
+public java.net.URI normalize()
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+public java.net.URI parseServerAuthority()
+
+public java.net.URI relativize(
+java.net.URI)
+
+public java.net.URI resolve(
+java.lang.String)
+
+public java.net.URI resolve(
+java.net.URI)
+
+public java.lang.String toASCIIString()
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljava/net/MalformedURLException; )
+public java.net.URL toURL()
+
+________________CLASS________________
+
+
+ class java.net.URIEncoderDecoder extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final java.lang.String digits
+
+static final java.lang.String encoding
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+static java.lang.String decode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+static java.lang.String encodeOthers(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+static java.lang.String quoteIllegal(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+static void validate(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+static void validateSimple(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.net.URISyntaxException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private int index
+
+private java.lang.String input
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String
+int)
+
+public int getIndex()
+
+public java.lang.String getInput()
+
+public java.lang.String getMessage()
+
+public java.lang.String getReason()
+
+________________CLASS________________
+
+
+public final class java.net.URL extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private static final java.net.NetPermission specifyStreamHandlerPermission
+
+private static java.net.URLStreamHandlerFactory streamHandlerFactory
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable<Ljava/lang/String;Ljava/net/URLStreamHandler;>; )
+private static java.util.Hashtable streamHandlers
+
+private java.lang.String authority
+
+private java.lang.String file
+
+private int hashCode
+
+private java.lang.String host
+
+private transient java.lang.String path
+
+private int port
+
+private java.lang.String protocol
+
+private transient java.lang.String query
+
+private java.lang.String ref
+
+transient java.net.URLStreamHandler strmHandler
+
+private transient java.lang.String userInfo
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/net/MalformedURLException; )
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/MalformedURLException; )
+public void <init>(
+java.lang.String
+java.lang.String
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/MalformedURLException; )
+public void <init>(
+java.lang.String
+java.lang.String
+int
+java.lang.String
+java.net.URLStreamHandler)
+@dalvik.annotation.Throws (value =Ljava/net/MalformedURLException; )
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/MalformedURLException; )
+public void <init>(
+java.net.URL
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/net/MalformedURLException; )
+public void <init>(
+java.net.URL
+java.lang.String
+java.net.URLStreamHandler)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+public static void setURLStreamHandlerFactory(
+java.net.URLStreamHandlerFactory)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+ void fixURL(
+boolean)
+
+public java.lang.String getAuthority()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.lang.Object getContent()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.lang.Object getContent(
+java.lang.Class[])
+
+public int getDefaultPort()
+
+public java.lang.String getFile()
+
+public java.lang.String getHost()
+
+public java.lang.String getPath()
+
+public int getPort()
+
+public java.lang.String getProtocol()
+
+public java.lang.String getQuery()
+
+public java.lang.String getRef()
+
+ java.net.URLStreamHandler getStreamHandler()
+
+public java.lang.String getUserInfo()
+
+public int hashCode()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.URLConnection openConnection()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.URLConnection openConnection(
+java.net.Proxy)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.io.InputStream openStream()
+
+public boolean sameFile(
+java.net.URL)
+
+protected void set(
+java.lang.String
+java.lang.String
+int
+java.lang.String
+java.lang.String)
+
+protected void set(
+java.lang.String
+java.lang.String
+int
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+ void setupStreamHandler()
+
+public java.lang.String toExternalForm()
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljava/net/URISyntaxException; )
+public java.net.URI toURI()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/util/Vector<Ljava/net/URL;>;>; )
+ class java.net.URLClassLoader$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.net.URLClassLoader this$0
+
+final java.lang.String val$name
+----------------METHODS----------------
+
+ void <init>(
+java.net.URLClassLoader
+java.lang.String)
+
+public volatile java.lang.Object run()
+@dalvik.annotation.Signature (value =()Ljava/util/Vector<Ljava/net/URL;>; )
+public java.util.Vector run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/net/URLClassLoader;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class java.net.URLClassLoader$2 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.net.URL[] val$urls
+----------------METHODS----------------
+
+ void <init>(
+java.net.URL[])
+
+public volatile java.lang.Object run()
+
+public java.net.URLClassLoader run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/net/URLClassLoader;>; )
+final class java.net.URLClassLoader$3 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.lang.ClassLoader val$parentCl
+
+final java.net.URL[] val$urls
+----------------METHODS----------------
+
+ void <init>(
+java.net.URL[]
+java.lang.ClassLoader)
+
+public volatile java.lang.Object run()
+
+public java.net.URLClassLoader run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Class<*>;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.net.URLClassLoader$4 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.net.URLClassLoader this$0
+
+final java.lang.String val$clsName
+----------------METHODS----------------
+
+ void <init>(
+java.net.URLClassLoader
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<*>; )
+public java.lang.Class run()
+
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/net/URL;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.net.URLClassLoader$5 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.net.URLClassLoader this$0
+
+final java.lang.String val$name
+----------------METHODS----------------
+
+ void <init>(
+java.net.URLClassLoader
+java.lang.String)
+
+public volatile java.lang.Object run()
+
+public java.net.URL run()
+
+________________CLASS________________
+
+
+public class java.security.SecureClassLoader extends java.lang.ClassLoader
+
+----------------FIELDS----------------
+
+private java.util.HashMap pds
+----------------METHODS----------------
+
+protected void <init>()
+
+protected void <init>(
+java.lang.ClassLoader)
+
+private java.security.ProtectionDomain getPD(
+java.security.CodeSource)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/CodeSource;)Ljava/lang/Class<*>; )
+protected final java.lang.Class defineClass(
+java.lang.String
+java.nio.ByteBuffer
+java.security.CodeSource)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;[BIILjava/security/CodeSource;)Ljava/lang/Class<*>; )
+protected final java.lang.Class defineClass(
+java.lang.String
+byte[]
+int
+int
+java.security.CodeSource)
+
+protected java.security.PermissionCollection getPermissions(
+java.security.CodeSource)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/net/URLClassLoader$SubURLClassLoader; )
+public class java.net.URLClassLoader extends java.security.SecureClassLoader
+
+----------------FIELDS----------------
+
+private static java.net.URL[] NO_PATH
+
+private java.security.AccessControlContext currentContext
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/net/URL;[Ljava/net/URL;>; )
+ java.util.HashMap extensions
+
+private java.net.URLStreamHandlerFactory factory
+@dalvik.annotation.Signature (value =[Ljava/util/Hashtable<Ljava/lang/String;[Ljava/net/URL;>; )
+ java.util.Hashtable[] indexes
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/net/URL;>; )
+ java.util.Set invalidUrls
+
+private java.lang.Object lock
+
+ java.net.URL[] orgUrls
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/net/URL;Ljava/util/jar/JarFile;>; )
+private java.util.Map resCache
+
+ java.net.URL[] urls
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.net.URL[])
+
+public void <init>(
+java.net.URL[]
+java.lang.ClassLoader)
+
+public void <init>(
+java.net.URL[]
+java.lang.ClassLoader
+java.net.URLStreamHandlerFactory)
+@dalvik.annotation.Throws (value =Ljava/net/MalformedURLException; )
+private java.net.URL createSearchURL(
+java.net.URL)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static byte[] getBytes(
+java.io.InputStream
+boolean)
+
+private java.net.URL[] getInternalURLs(
+java.net.URL
+java.lang.String)
+
+private static boolean isDirectory(
+java.net.URL)
+
+private boolean isSealed(
+java.util.jar.Manifest
+java.lang.String)
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>(I)[Ljava/util/Hashtable<TK;TV;>; )
+private static java.util.Hashtable[] newHashtableArray(
+int)
+
+public static java.net.URLClassLoader newInstance(
+java.net.URL[])
+
+public static java.net.URLClassLoader newInstance(
+java.net.URL[]
+java.lang.ClassLoader)
+@dalvik.annotation.Signature (value =(Ljava/io/InputStream;)Ljava/util/List<Ljava/lang/String;>; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.util.List readLines(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/net/MalformedURLException; )
+private java.net.URL targetURL(
+java.net.URL
+java.lang.String)
+
+protected void addURL(
+java.net.URL)
+
+ java.net.URL[] addURL(
+java.net.URL[]
+java.net.URL)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+protected java.lang.Package definePackage(
+java.lang.String
+java.util.jar.Manifest
+java.net.URL)
+
+ java.net.URL[] explore(
+java.net.URL
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/lang/Class<*>; )
+protected java.lang.Class findClass(
+java.lang.String)
+@dalvik.annotation.Signature (value =([Ljava/net/URL;Ljava/lang/String;)Ljava/lang/Class<*>; )
+ java.lang.Class findClassImpl(
+java.net.URL[]
+java.lang.String)
+@dalvik.annotation.Signature (value =([Ljava/net/URL;Ljava/lang/String;ILjava/util/Vector<Ljava/net/URL;>;Z)Ljava/lang/Object; )
+ java.lang.Object findInExtensions(
+java.net.URL[]
+java.lang.String
+int
+java.util.Vector
+boolean)
+@dalvik.annotation.Signature (value =(ILjava/lang/String;Ljava/util/Vector<Ljava/net/URL;>;Z)Ljava/lang/Object; )
+ java.lang.Object findInIndex(
+int
+java.lang.String
+java.util.Vector
+boolean)
+
+public java.net.URL findResource(
+java.lang.String)
+
+ java.net.URL findResourceImpl(
+java.net.URL[]
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/Enumeration<Ljava/net/URL;>; )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.Enumeration findResources(
+java.lang.String)
+@dalvik.annotation.Signature (value =([Ljava/net/URL;Ljava/lang/String;Ljava/util/Vector<Ljava/net/URL;>;)Ljava/util/Vector<Ljava/net/URL;>; )
+ java.util.Vector findResources(
+java.net.URL[]
+java.lang.String
+java.util.Vector)
+
+protected java.security.PermissionCollection getPermissions(
+java.security.CodeSource)
+
+public java.net.URL[] getURLs()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =SubURLClassLoader )
+@dalvik.annotation.EnclosingClass (value =Ljava/net/URLClassLoader; )
+ class java.net.URLClassLoader$SubURLClassLoader extends java.net.URLClassLoader
+
+----------------FIELDS----------------
+
+private boolean checkingPackageAccess
+----------------METHODS----------------
+
+ void <init>(
+java.net.URL[])
+
+ void <init>(
+java.net.URL[]
+java.lang.ClassLoader)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Z)Ljava/lang/Class<*>; )
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException; )
+protected java.lang.Class loadClass(
+java.lang.String
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Object;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.net.URLConnection$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.net.URLConnection this$0
+
+final java.lang.String val$typeString
+----------------METHODS----------------
+
+ void <init>(
+java.net.URLConnection
+java.lang.String)
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/net/URLConnection; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =DefaultContentHandler )
+ class java.net.URLConnection$DefaultContentHandler extends java.net.ContentHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getContent(
+java.net.URLConnection)
+
+________________CLASS________________
+
+
+public class java.net.URLDecoder extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@java.lang.Deprecated
+public static java.lang.String decode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public static java.lang.String decode(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.net.URLEncoder extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final java.lang.String digits
+----------------METHODS----------------
+
+private void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+private static void convert(
+java.lang.String
+java.lang.StringBuffer
+java.lang.String)
+@java.lang.Deprecated
+public static java.lang.String encode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public static java.lang.String encode(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class java.net.URLStreamHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+private static java.lang.String getHost(
+java.net.URL)
+
+protected boolean equals(
+java.net.URL
+java.net.URL)
+
+protected int getDefaultPort()
+
+protected java.net.InetAddress getHostAddress(
+java.net.URL)
+
+protected int hashCode(
+java.net.URL)
+
+protected boolean hostsEqual(
+java.net.URL
+java.net.URL)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract java.net.URLConnection openConnection(
+java.net.URL)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.net.URLConnection openConnection(
+java.net.URL
+java.net.Proxy)
+
+protected void parseURL(
+java.net.URL
+java.lang.String
+int
+int)
+
+protected boolean sameFile(
+java.net.URL
+java.net.URL)
+@java.lang.Deprecated
+protected void setURL(
+java.net.URL
+java.lang.String
+java.lang.String
+int
+java.lang.String
+java.lang.String)
+
+protected void setURL(
+java.net.URL
+java.lang.String
+java.lang.String
+int
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+protected java.lang.String toExternalForm(
+java.net.URL)
+
+________________CLASS________________
+
+
+public abstract interface class java.net.URLStreamHandlerFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.net.URLStreamHandler createURLStreamHandler(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.net.UnknownHostException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.net.UnknownServiceException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class java.nio.Buffer extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int UNSET_MARK
+
+ int _elementSizeShift
+
+final int capacity
+
+ int limit
+
+ int mark
+
+ int position
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ java.lang.Object _array()
+
+ int _arrayOffset()
+
+public final int capacity()
+
+public final java.nio.Buffer clear()
+
+public final java.nio.Buffer flip()
+
+public final boolean hasRemaining()
+
+public abstract boolean isReadOnly()
+
+public final int limit()
+
+public final java.nio.Buffer limit(
+int)
+
+public final java.nio.Buffer mark()
+
+public final int position()
+
+public final java.nio.Buffer position(
+int)
+
+public final int remaining()
+
+public final java.nio.Buffer reset()
+
+public final java.nio.Buffer rewind()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/nio/Buffer;Ljava/lang/Comparable<Ljava/nio/ByteBuffer;>; )
+public abstract class java.nio.ByteBuffer extends java.nio.Buffer implements java.lang.Comparable
+
+----------------FIELDS----------------
+
+ org.apache.harmony.luni.platform.Endianness order
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+public static java.nio.ByteBuffer allocate(
+int)
+
+public static java.nio.ByteBuffer allocateDirect(
+int)
+
+public static java.nio.ByteBuffer wrap(
+byte[])
+
+public static java.nio.ByteBuffer wrap(
+byte[]
+int
+int)
+
+ java.lang.Object _array()
+
+ int _arrayOffset()
+
+public final byte[] array()
+
+public final int arrayOffset()
+
+public abstract java.nio.CharBuffer asCharBuffer()
+
+public abstract java.nio.DoubleBuffer asDoubleBuffer()
+
+public abstract java.nio.FloatBuffer asFloatBuffer()
+
+public abstract java.nio.IntBuffer asIntBuffer()
+
+public abstract java.nio.LongBuffer asLongBuffer()
+
+public abstract java.nio.ByteBuffer asReadOnlyBuffer()
+
+public abstract java.nio.ShortBuffer asShortBuffer()
+
+public abstract java.nio.ByteBuffer compact()
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.nio.ByteBuffer)
+
+public abstract java.nio.ByteBuffer duplicate()
+
+public boolean equals(
+java.lang.Object)
+
+public abstract byte get()
+
+public abstract byte get(
+int)
+
+public java.nio.ByteBuffer get(
+byte[])
+
+public java.nio.ByteBuffer get(
+byte[]
+int
+int)
+
+public abstract char getChar()
+
+public abstract char getChar(
+int)
+
+public abstract double getDouble()
+
+public abstract double getDouble(
+int)
+
+public abstract float getFloat()
+
+public abstract float getFloat(
+int)
+
+public abstract int getInt()
+
+public abstract int getInt(
+int)
+
+public abstract long getLong()
+
+public abstract long getLong(
+int)
+
+public abstract short getShort()
+
+public abstract short getShort(
+int)
+
+public final boolean hasArray()
+
+public int hashCode()
+
+public abstract boolean isDirect()
+
+public final java.nio.ByteBuffer order(
+java.nio.ByteOrder)
+
+public final java.nio.ByteOrder order()
+
+ java.nio.ByteBuffer orderImpl(
+java.nio.ByteOrder)
+
+abstract byte[] protectedArray()
+
+abstract int protectedArrayOffset()
+
+abstract boolean protectedHasArray()
+
+public abstract java.nio.ByteBuffer put(
+byte)
+
+public abstract java.nio.ByteBuffer put(
+int
+byte)
+
+public java.nio.ByteBuffer put(
+java.nio.ByteBuffer)
+
+public final java.nio.ByteBuffer put(
+byte[])
+
+public java.nio.ByteBuffer put(
+byte[]
+int
+int)
+
+public abstract java.nio.ByteBuffer putChar(
+char)
+
+public abstract java.nio.ByteBuffer putChar(
+int
+char)
+
+public abstract java.nio.ByteBuffer putDouble(
+double)
+
+public abstract java.nio.ByteBuffer putDouble(
+int
+double)
+
+public abstract java.nio.ByteBuffer putFloat(
+float)
+
+public abstract java.nio.ByteBuffer putFloat(
+int
+float)
+
+public abstract java.nio.ByteBuffer putInt(
+int)
+
+public abstract java.nio.ByteBuffer putInt(
+int
+int)
+
+public abstract java.nio.ByteBuffer putLong(
+int
+long)
+
+public abstract java.nio.ByteBuffer putLong(
+long)
+
+public abstract java.nio.ByteBuffer putShort(
+int
+short)
+
+public abstract java.nio.ByteBuffer putShort(
+short)
+
+public abstract java.nio.ByteBuffer slice()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+abstract class java.nio.BaseByteBuffer extends java.nio.ByteBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>(
+int)
+
+public final java.nio.CharBuffer asCharBuffer()
+
+public final java.nio.DoubleBuffer asDoubleBuffer()
+
+public final java.nio.FloatBuffer asFloatBuffer()
+
+public final java.nio.IntBuffer asIntBuffer()
+
+public final java.nio.LongBuffer asLongBuffer()
+
+public final java.nio.ShortBuffer asShortBuffer()
+
+public final char getChar()
+
+public final char getChar(
+int)
+
+public final java.nio.ByteBuffer putChar(
+char)
+
+public final java.nio.ByteBuffer putChar(
+int
+char)
+
+________________CLASS________________
+
+
+final class java.nio.BufferFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public static java.nio.ByteBuffer newByteBuffer(
+int)
+
+public static java.nio.ByteBuffer newByteBuffer(
+byte[])
+
+public static java.nio.CharBuffer newCharBuffer(
+int)
+
+public static java.nio.CharBuffer newCharBuffer(
+java.lang.CharSequence)
+
+public static java.nio.CharBuffer newCharBuffer(
+char[])
+
+public static java.nio.ByteBuffer newDirectByteBuffer(
+int)
+
+public static java.nio.DoubleBuffer newDoubleBuffer(
+int)
+
+public static java.nio.DoubleBuffer newDoubleBuffer(
+double[])
+
+public static java.nio.FloatBuffer newFloatBuffer(
+int)
+
+public static java.nio.FloatBuffer newFloatBuffer(
+float[])
+
+public static java.nio.IntBuffer newIntBuffer(
+int)
+
+public static java.nio.IntBuffer newIntBuffer(
+int[])
+
+public static java.nio.LongBuffer newLongBuffer(
+int)
+
+public static java.nio.LongBuffer newLongBuffer(
+long[])
+
+public static java.nio.ShortBuffer newShortBuffer(
+int)
+
+public static java.nio.ShortBuffer newShortBuffer(
+short[])
+
+________________CLASS________________
+
+
+public class java.nio.BufferOverflowException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class java.nio.BufferUnderflowException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public final class java.nio.ByteOrder extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.nio.ByteOrder BIG_ENDIAN
+
+public static final java.nio.ByteOrder LITTLE_ENDIAN
+
+private static final java.nio.ByteOrder NATIVE_ORDER
+
+private final java.lang.String name
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+java.lang.String)
+
+public static java.nio.ByteOrder nativeOrder()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/nio/Buffer;Ljava/lang/Comparable<Ljava/nio/CharBuffer;>;Ljava/lang/CharSequence;Ljava/lang/Appendable;Ljava/lang/Readable; )
+public abstract class java.nio.CharBuffer extends java.nio.Buffer implements java.lang.Comparable, java.lang.CharSequence, java.lang.Appendable, java.lang.Readable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+public static java.nio.CharBuffer allocate(
+int)
+
+public static java.nio.CharBuffer wrap(
+java.lang.CharSequence)
+
+public static java.nio.CharBuffer wrap(
+java.lang.CharSequence
+int
+int)
+
+public static java.nio.CharBuffer wrap(
+char[])
+
+public static java.nio.CharBuffer wrap(
+char[]
+int
+int)
+
+ java.lang.Object _array()
+
+ int _arrayOffset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public volatile java.lang.Appendable append(
+java.lang.CharSequence
+int
+int)
+
+public java.nio.CharBuffer append(
+char)
+
+public java.nio.CharBuffer append(
+java.lang.CharSequence)
+
+public java.nio.CharBuffer append(
+java.lang.CharSequence
+int
+int)
+
+public final char[] array()
+
+public final int arrayOffset()
+
+public abstract java.nio.CharBuffer asReadOnlyBuffer()
+
+public final char charAt(
+int)
+
+public abstract java.nio.CharBuffer compact()
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.nio.CharBuffer)
+
+public abstract java.nio.CharBuffer duplicate()
+
+public boolean equals(
+java.lang.Object)
+
+public abstract char get()
+
+public abstract char get(
+int)
+
+public java.nio.CharBuffer get(
+char[])
+
+public java.nio.CharBuffer get(
+char[]
+int
+int)
+
+public final boolean hasArray()
+
+public int hashCode()
+
+public abstract boolean isDirect()
+
+public final int length()
+
+public abstract java.nio.ByteOrder order()
+
+abstract char[] protectedArray()
+
+abstract int protectedArrayOffset()
+
+abstract boolean protectedHasArray()
+
+public abstract java.nio.CharBuffer put(
+char)
+
+public abstract java.nio.CharBuffer put(
+int
+char)
+
+public final java.nio.CharBuffer put(
+java.lang.String)
+
+public java.nio.CharBuffer put(
+java.lang.String
+int
+int)
+
+public java.nio.CharBuffer put(
+java.nio.CharBuffer)
+
+public final java.nio.CharBuffer put(
+char[])
+
+public java.nio.CharBuffer put(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+java.nio.CharBuffer)
+
+public abstract java.nio.CharBuffer slice()
+
+public abstract java.lang.CharSequence subSequence(
+int
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+abstract class java.nio.CharArrayBuffer extends java.nio.CharBuffer
+
+----------------FIELDS----------------
+
+protected final char[] backingArray
+
+protected final int offset
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ void <init>(
+int
+char[]
+int)
+
+ void <init>(
+char[])
+
+public final char get()
+
+public final char get(
+int)
+
+public final java.nio.CharBuffer get(
+char[]
+int
+int)
+
+public final boolean isDirect()
+
+public final java.nio.ByteOrder order()
+
+public final java.lang.CharSequence subSequence(
+int
+int)
+
+public final java.lang.String toString()
+
+________________CLASS________________
+
+
+final class java.nio.CharSequenceAdapter extends java.nio.CharBuffer
+
+----------------FIELDS----------------
+
+final java.lang.CharSequence sequence
+----------------METHODS----------------
+
+ void <init>(
+java.lang.CharSequence)
+
+static java.nio.CharSequenceAdapter copy(
+java.nio.CharSequenceAdapter)
+
+public java.nio.CharBuffer asReadOnlyBuffer()
+
+public java.nio.CharBuffer compact()
+
+public java.nio.CharBuffer duplicate()
+
+public char get()
+
+public char get(
+int)
+
+public final java.nio.CharBuffer get(
+char[]
+int
+int)
+
+public boolean isDirect()
+
+public boolean isReadOnly()
+
+public java.nio.ByteOrder order()
+
+protected char[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.CharBuffer put(
+char)
+
+public java.nio.CharBuffer put(
+int
+char)
+
+public java.nio.CharBuffer put(
+java.lang.String
+int
+int)
+
+public final java.nio.CharBuffer put(
+char[]
+int
+int)
+
+public java.nio.CharBuffer slice()
+
+public java.lang.CharSequence subSequence(
+int
+int)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.harmony.nio.internal.DirectBuffer extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void addressValidityCheck()
+
+public abstract void free()
+
+public abstract org.apache.harmony.luni.platform.PlatformAddress getBaseAddress()
+
+public abstract int getByteCapacity()
+
+public abstract org.apache.harmony.luni.platform.PlatformAddress getEffectiveAddress()
+
+public abstract boolean isAddressValid()
+
+________________CLASS________________
+
+
+final class java.nio.CharToByteBufferAdapter extends java.nio.CharBuffer implements org.apache.harmony.nio.internal.DirectBuffer
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private final java.nio.ByteBuffer byteBuffer
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+java.nio.ByteBuffer)
+
+static java.nio.CharBuffer wrap(
+java.nio.ByteBuffer)
+
+public void addressValidityCheck()
+
+public java.nio.CharBuffer asReadOnlyBuffer()
+
+public java.nio.CharBuffer compact()
+
+public java.nio.CharBuffer duplicate()
+
+public void free()
+
+public char get()
+
+public char get(
+int)
+
+public org.apache.harmony.luni.platform.PlatformAddress getBaseAddress()
+
+public int getByteCapacity()
+
+public org.apache.harmony.luni.platform.PlatformAddress getEffectiveAddress()
+
+public boolean isAddressValid()
+
+public boolean isDirect()
+
+public boolean isReadOnly()
+
+public java.nio.ByteOrder order()
+
+protected char[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.CharBuffer put(
+char)
+
+public java.nio.CharBuffer put(
+int
+char)
+
+public java.nio.CharBuffer slice()
+
+public java.lang.CharSequence subSequence(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =SafeAddress )
+@dalvik.annotation.EnclosingClass (value =Ljava/nio/DirectByteBuffer; )
+final class java.nio.DirectByteBuffer$SafeAddress extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected final org.apache.harmony.luni.platform.PlatformAddress address
+
+protected volatile boolean isValid
+----------------METHODS----------------
+
+protected void <init>(
+org.apache.harmony.luni.platform.PlatformAddress)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/nio/DirectByteBuffer$SafeAddress; )
+abstract class java.nio.DirectByteBuffer extends java.nio.BaseByteBuffer implements org.apache.harmony.nio.internal.DirectBuffer
+
+----------------FIELDS----------------
+
+protected final int offset
+
+protected final java.nio.DirectByteBuffer$SafeAddress safeAddress
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ void <init>(
+java.nio.DirectByteBuffer$SafeAddress
+int
+int)
+
+private void markAddressInvalid()
+
+public final void addressValidityCheck()
+
+public final void free()
+
+public final byte get()
+
+public final byte get(
+int)
+
+public final java.nio.ByteBuffer get(
+byte[]
+int
+int)
+
+public final org.apache.harmony.luni.platform.PlatformAddress getBaseAddress()
+
+public final int getByteCapacity()
+
+public final double getDouble()
+
+public final double getDouble(
+int)
+
+public final org.apache.harmony.luni.platform.PlatformAddress getEffectiveAddress()
+
+public final float getFloat()
+
+public final float getFloat(
+int)
+
+public final int getInt()
+
+public final int getInt(
+int)
+
+public final long getLong()
+
+public final long getLong(
+int)
+
+public final short getShort()
+
+public final short getShort(
+int)
+
+public final boolean isAddressValid()
+
+public final boolean isDirect()
+
+protected final byte[] protectedArray()
+
+protected final int protectedArrayOffset()
+
+protected final boolean protectedHasArray()
+
+________________CLASS________________
+
+
+ class java.nio.DirectByteBuffers extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public static void free(
+java.nio.ByteBuffer)
+
+public static org.apache.harmony.luni.platform.PlatformAddress getEffectiveAddress(
+java.nio.ByteBuffer)
+
+private static java.nio.DirectByteBuffer toDirectBuffer(
+java.nio.ByteBuffer)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/nio/Buffer;Ljava/lang/Comparable<Ljava/nio/DoubleBuffer;>; )
+public abstract class java.nio.DoubleBuffer extends java.nio.Buffer implements java.lang.Comparable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+public static java.nio.DoubleBuffer allocate(
+int)
+
+public static java.nio.DoubleBuffer wrap(
+double[])
+
+public static java.nio.DoubleBuffer wrap(
+double[]
+int
+int)
+
+ java.lang.Object _array()
+
+ int _arrayOffset()
+
+public final double[] array()
+
+public final int arrayOffset()
+
+public abstract java.nio.DoubleBuffer asReadOnlyBuffer()
+
+public abstract java.nio.DoubleBuffer compact()
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.nio.DoubleBuffer)
+
+public abstract java.nio.DoubleBuffer duplicate()
+
+public boolean equals(
+java.lang.Object)
+
+public abstract double get()
+
+public abstract double get(
+int)
+
+public java.nio.DoubleBuffer get(
+double[])
+
+public java.nio.DoubleBuffer get(
+double[]
+int
+int)
+
+public final boolean hasArray()
+
+public int hashCode()
+
+public abstract boolean isDirect()
+
+public abstract java.nio.ByteOrder order()
+
+abstract double[] protectedArray()
+
+abstract int protectedArrayOffset()
+
+abstract boolean protectedHasArray()
+
+public abstract java.nio.DoubleBuffer put(
+double)
+
+public abstract java.nio.DoubleBuffer put(
+int
+double)
+
+public java.nio.DoubleBuffer put(
+java.nio.DoubleBuffer)
+
+public final java.nio.DoubleBuffer put(
+double[])
+
+public java.nio.DoubleBuffer put(
+double[]
+int
+int)
+
+public abstract java.nio.DoubleBuffer slice()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+abstract class java.nio.DoubleArrayBuffer extends java.nio.DoubleBuffer
+
+----------------FIELDS----------------
+
+protected final double[] backingArray
+
+protected final int offset
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ void <init>(
+int
+double[]
+int)
+
+ void <init>(
+double[])
+
+public final double get()
+
+public final double get(
+int)
+
+public final java.nio.DoubleBuffer get(
+double[]
+int
+int)
+
+public final boolean isDirect()
+
+public final java.nio.ByteOrder order()
+
+________________CLASS________________
+
+
+final class java.nio.DoubleToByteBufferAdapter extends java.nio.DoubleBuffer implements org.apache.harmony.nio.internal.DirectBuffer
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private final java.nio.ByteBuffer byteBuffer
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+java.nio.ByteBuffer)
+
+static java.nio.DoubleBuffer wrap(
+java.nio.ByteBuffer)
+
+public void addressValidityCheck()
+
+public java.nio.DoubleBuffer asReadOnlyBuffer()
+
+public java.nio.DoubleBuffer compact()
+
+public java.nio.DoubleBuffer duplicate()
+
+public void free()
+
+public double get()
+
+public double get(
+int)
+
+public org.apache.harmony.luni.platform.PlatformAddress getBaseAddress()
+
+public int getByteCapacity()
+
+public org.apache.harmony.luni.platform.PlatformAddress getEffectiveAddress()
+
+public boolean isAddressValid()
+
+public boolean isDirect()
+
+public boolean isReadOnly()
+
+public java.nio.ByteOrder order()
+
+protected double[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.DoubleBuffer put(
+double)
+
+public java.nio.DoubleBuffer put(
+int
+double)
+
+public java.nio.DoubleBuffer slice()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/nio/Buffer;Ljava/lang/Comparable<Ljava/nio/FloatBuffer;>; )
+public abstract class java.nio.FloatBuffer extends java.nio.Buffer implements java.lang.Comparable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+public static java.nio.FloatBuffer allocate(
+int)
+
+public static java.nio.FloatBuffer wrap(
+float[])
+
+public static java.nio.FloatBuffer wrap(
+float[]
+int
+int)
+
+ java.lang.Object _array()
+
+ int _arrayOffset()
+
+public final float[] array()
+
+public final int arrayOffset()
+
+public abstract java.nio.FloatBuffer asReadOnlyBuffer()
+
+public abstract java.nio.FloatBuffer compact()
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.nio.FloatBuffer)
+
+public abstract java.nio.FloatBuffer duplicate()
+
+public boolean equals(
+java.lang.Object)
+
+public abstract float get()
+
+public abstract float get(
+int)
+
+public java.nio.FloatBuffer get(
+float[])
+
+public java.nio.FloatBuffer get(
+float[]
+int
+int)
+
+public final boolean hasArray()
+
+public int hashCode()
+
+public abstract boolean isDirect()
+
+public abstract java.nio.ByteOrder order()
+
+abstract float[] protectedArray()
+
+abstract int protectedArrayOffset()
+
+abstract boolean protectedHasArray()
+
+public abstract java.nio.FloatBuffer put(
+float)
+
+public abstract java.nio.FloatBuffer put(
+int
+float)
+
+public java.nio.FloatBuffer put(
+java.nio.FloatBuffer)
+
+public final java.nio.FloatBuffer put(
+float[])
+
+public java.nio.FloatBuffer put(
+float[]
+int
+int)
+
+public abstract java.nio.FloatBuffer slice()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+abstract class java.nio.FloatArrayBuffer extends java.nio.FloatBuffer
+
+----------------FIELDS----------------
+
+protected final float[] backingArray
+
+protected final int offset
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ void <init>(
+int
+float[]
+int)
+
+ void <init>(
+float[])
+
+public final float get()
+
+public final float get(
+int)
+
+public final java.nio.FloatBuffer get(
+float[]
+int
+int)
+
+public final boolean isDirect()
+
+public final java.nio.ByteOrder order()
+
+________________CLASS________________
+
+
+final class java.nio.FloatToByteBufferAdapter extends java.nio.FloatBuffer implements org.apache.harmony.nio.internal.DirectBuffer
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private final java.nio.ByteBuffer byteBuffer
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+java.nio.ByteBuffer)
+
+static java.nio.FloatBuffer wrap(
+java.nio.ByteBuffer)
+
+public void addressValidityCheck()
+
+public java.nio.FloatBuffer asReadOnlyBuffer()
+
+public java.nio.FloatBuffer compact()
+
+public java.nio.FloatBuffer duplicate()
+
+public void free()
+
+public float get()
+
+public float get(
+int)
+
+public org.apache.harmony.luni.platform.PlatformAddress getBaseAddress()
+
+public int getByteCapacity()
+
+public org.apache.harmony.luni.platform.PlatformAddress getEffectiveAddress()
+
+public boolean isAddressValid()
+
+public boolean isDirect()
+
+public boolean isReadOnly()
+
+public java.nio.ByteOrder order()
+
+protected float[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.FloatBuffer put(
+float)
+
+public java.nio.FloatBuffer put(
+int
+float)
+
+public java.nio.FloatBuffer slice()
+
+________________CLASS________________
+
+
+abstract class java.nio.HeapByteBuffer extends java.nio.BaseByteBuffer
+
+----------------FIELDS----------------
+
+protected final byte[] backingArray
+
+protected final int offset
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ void <init>(
+byte[])
+
+ void <init>(
+byte[]
+int
+int)
+
+public final byte get()
+
+public final byte get(
+int)
+
+public final java.nio.ByteBuffer get(
+byte[]
+int
+int)
+
+public final double getDouble()
+
+public final double getDouble(
+int)
+
+public final float getFloat()
+
+public final float getFloat(
+int)
+
+public final int getInt()
+
+public final int getInt(
+int)
+
+public final long getLong()
+
+public final long getLong(
+int)
+
+public final short getShort()
+
+public final short getShort(
+int)
+
+public final boolean isDirect()
+
+protected final int loadInt(
+int)
+
+protected final long loadLong(
+int)
+
+protected final short loadShort(
+int)
+
+protected final void store(
+int
+int)
+
+protected final void store(
+int
+long)
+
+protected final void store(
+int
+short)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/nio/Buffer;Ljava/lang/Comparable<Ljava/nio/IntBuffer;>; )
+public abstract class java.nio.IntBuffer extends java.nio.Buffer implements java.lang.Comparable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+public static java.nio.IntBuffer allocate(
+int)
+
+public static java.nio.IntBuffer wrap(
+int[])
+
+public static java.nio.IntBuffer wrap(
+int[]
+int
+int)
+
+ java.lang.Object _array()
+
+ int _arrayOffset()
+
+public final int[] array()
+
+public final int arrayOffset()
+
+public abstract java.nio.IntBuffer asReadOnlyBuffer()
+
+public abstract java.nio.IntBuffer compact()
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.nio.IntBuffer)
+
+public abstract java.nio.IntBuffer duplicate()
+
+public boolean equals(
+java.lang.Object)
+
+public abstract int get()
+
+public abstract int get(
+int)
+
+public java.nio.IntBuffer get(
+int[])
+
+public java.nio.IntBuffer get(
+int[]
+int
+int)
+
+public final boolean hasArray()
+
+public int hashCode()
+
+public abstract boolean isDirect()
+
+public abstract java.nio.ByteOrder order()
+
+abstract int[] protectedArray()
+
+abstract int protectedArrayOffset()
+
+abstract boolean protectedHasArray()
+
+public abstract java.nio.IntBuffer put(
+int)
+
+public abstract java.nio.IntBuffer put(
+int
+int)
+
+public java.nio.IntBuffer put(
+java.nio.IntBuffer)
+
+public final java.nio.IntBuffer put(
+int[])
+
+public java.nio.IntBuffer put(
+int[]
+int
+int)
+
+public abstract java.nio.IntBuffer slice()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+abstract class java.nio.IntArrayBuffer extends java.nio.IntBuffer
+
+----------------FIELDS----------------
+
+protected final int[] backingArray
+
+protected final int offset
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ void <init>(
+int
+int[]
+int)
+
+ void <init>(
+int[])
+
+public final int get()
+
+public final int get(
+int)
+
+public final java.nio.IntBuffer get(
+int[]
+int
+int)
+
+public final boolean isDirect()
+
+public final java.nio.ByteOrder order()
+
+________________CLASS________________
+
+
+final class java.nio.IntToByteBufferAdapter extends java.nio.IntBuffer implements org.apache.harmony.nio.internal.DirectBuffer
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private final java.nio.ByteBuffer byteBuffer
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+java.nio.ByteBuffer)
+
+static java.nio.IntBuffer wrap(
+java.nio.ByteBuffer)
+
+public void addressValidityCheck()
+
+public java.nio.IntBuffer asReadOnlyBuffer()
+
+public java.nio.IntBuffer compact()
+
+public java.nio.IntBuffer duplicate()
+
+public void free()
+
+public int get()
+
+public int get(
+int)
+
+public org.apache.harmony.luni.platform.PlatformAddress getBaseAddress()
+
+public int getByteCapacity()
+
+public org.apache.harmony.luni.platform.PlatformAddress getEffectiveAddress()
+
+public boolean isAddressValid()
+
+public boolean isDirect()
+
+public boolean isReadOnly()
+
+public java.nio.ByteOrder order()
+
+protected int[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.IntBuffer put(
+int)
+
+public java.nio.IntBuffer put(
+int
+int)
+
+public java.nio.IntBuffer put(
+int[]
+int
+int)
+
+public java.nio.IntBuffer slice()
+
+________________CLASS________________
+
+
+public class java.nio.InvalidMarkException extends java.lang.IllegalStateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/nio/Buffer;Ljava/lang/Comparable<Ljava/nio/LongBuffer;>; )
+public abstract class java.nio.LongBuffer extends java.nio.Buffer implements java.lang.Comparable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+public static java.nio.LongBuffer allocate(
+int)
+
+public static java.nio.LongBuffer wrap(
+long[])
+
+public static java.nio.LongBuffer wrap(
+long[]
+int
+int)
+
+ java.lang.Object _array()
+
+ int _arrayOffset()
+
+public final long[] array()
+
+public final int arrayOffset()
+
+public abstract java.nio.LongBuffer asReadOnlyBuffer()
+
+public abstract java.nio.LongBuffer compact()
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.nio.LongBuffer)
+
+public abstract java.nio.LongBuffer duplicate()
+
+public boolean equals(
+java.lang.Object)
+
+public abstract long get()
+
+public abstract long get(
+int)
+
+public java.nio.LongBuffer get(
+long[])
+
+public java.nio.LongBuffer get(
+long[]
+int
+int)
+
+public final boolean hasArray()
+
+public int hashCode()
+
+public abstract boolean isDirect()
+
+public abstract java.nio.ByteOrder order()
+
+abstract long[] protectedArray()
+
+abstract int protectedArrayOffset()
+
+abstract boolean protectedHasArray()
+
+public abstract java.nio.LongBuffer put(
+int
+long)
+
+public abstract java.nio.LongBuffer put(
+long)
+
+public java.nio.LongBuffer put(
+java.nio.LongBuffer)
+
+public final java.nio.LongBuffer put(
+long[])
+
+public java.nio.LongBuffer put(
+long[]
+int
+int)
+
+public abstract java.nio.LongBuffer slice()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+abstract class java.nio.LongArrayBuffer extends java.nio.LongBuffer
+
+----------------FIELDS----------------
+
+protected final long[] backingArray
+
+protected final int offset
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ void <init>(
+int
+long[]
+int)
+
+ void <init>(
+long[])
+
+public final long get()
+
+public final long get(
+int)
+
+public final java.nio.LongBuffer get(
+long[]
+int
+int)
+
+public final boolean isDirect()
+
+public final java.nio.ByteOrder order()
+
+________________CLASS________________
+
+
+final class java.nio.LongToByteBufferAdapter extends java.nio.LongBuffer implements org.apache.harmony.nio.internal.DirectBuffer
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private final java.nio.ByteBuffer byteBuffer
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+java.nio.ByteBuffer)
+
+static java.nio.LongBuffer wrap(
+java.nio.ByteBuffer)
+
+public void addressValidityCheck()
+
+public java.nio.LongBuffer asReadOnlyBuffer()
+
+public java.nio.LongBuffer compact()
+
+public java.nio.LongBuffer duplicate()
+
+public void free()
+
+public long get()
+
+public long get(
+int)
+
+public org.apache.harmony.luni.platform.PlatformAddress getBaseAddress()
+
+public int getByteCapacity()
+
+public org.apache.harmony.luni.platform.PlatformAddress getEffectiveAddress()
+
+public boolean isAddressValid()
+
+public boolean isDirect()
+
+public boolean isReadOnly()
+
+public java.nio.ByteOrder order()
+
+protected long[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.LongBuffer put(
+int
+long)
+
+public java.nio.LongBuffer put(
+long)
+
+public java.nio.LongBuffer slice()
+
+________________CLASS________________
+
+
+public abstract class java.nio.MappedByteBuffer extends java.nio.ByteBuffer
+
+----------------FIELDS----------------
+
+private int mapMode
+
+final java.nio.DirectByteBuffer wrapped
+----------------METHODS----------------
+
+ void <init>(
+java.nio.ByteBuffer)
+
+ void <init>(
+org.apache.harmony.luni.platform.PlatformAddress
+int
+int
+int)
+
+public final java.nio.MappedByteBuffer force()
+
+public final boolean isLoaded()
+
+public final java.nio.MappedByteBuffer load()
+
+________________CLASS________________
+
+
+ class java.nio.MappedByteBufferAdapter extends java.nio.MappedByteBuffer implements org.apache.harmony.nio.internal.DirectBuffer
+
+----------------FIELDS----------------
+
+private static final int CHAR_SIZE
+
+private static final int DOUBLE_SIZE
+
+private static final int FLOAT_SIZE
+
+private static final int INTEGER_SIZE
+
+private static final int LONG_SIZE
+
+private static final int SHORT_SIZE
+----------------METHODS----------------
+
+public void <init>(
+java.nio.ByteBuffer)
+
+public void <init>(
+org.apache.harmony.luni.platform.PlatformAddress
+int
+int
+int)
+
+public void addressValidityCheck()
+
+public java.nio.CharBuffer asCharBuffer()
+
+public java.nio.DoubleBuffer asDoubleBuffer()
+
+public java.nio.FloatBuffer asFloatBuffer()
+
+public java.nio.IntBuffer asIntBuffer()
+
+public java.nio.LongBuffer asLongBuffer()
+
+public java.nio.ByteBuffer asReadOnlyBuffer()
+
+public java.nio.ShortBuffer asShortBuffer()
+
+public java.nio.ByteBuffer compact()
+
+public java.nio.ByteBuffer duplicate()
+
+public void free()
+
+public byte get()
+
+public byte get(
+int)
+
+public org.apache.harmony.luni.platform.PlatformAddress getBaseAddress()
+
+public int getByteCapacity()
+
+public char getChar()
+
+public char getChar(
+int)
+
+public double getDouble()
+
+public double getDouble(
+int)
+
+public org.apache.harmony.luni.platform.PlatformAddress getEffectiveAddress()
+
+public float getFloat()
+
+public float getFloat(
+int)
+
+public int getInt()
+
+public int getInt(
+int)
+
+public long getLong()
+
+public long getLong(
+int)
+
+public short getShort()
+
+public short getShort(
+int)
+
+public boolean isAddressValid()
+
+public boolean isDirect()
+
+public boolean isReadOnly()
+
+ java.nio.ByteBuffer orderImpl(
+java.nio.ByteOrder)
+
+ byte[] protectedArray()
+
+ int protectedArrayOffset()
+
+ boolean protectedHasArray()
+
+public java.nio.ByteBuffer put(
+byte)
+
+public java.nio.ByteBuffer put(
+int
+byte)
+
+public java.nio.ByteBuffer put(
+byte[]
+int
+int)
+
+public java.nio.ByteBuffer putChar(
+char)
+
+public java.nio.ByteBuffer putChar(
+int
+char)
+
+public java.nio.ByteBuffer putDouble(
+double)
+
+public java.nio.ByteBuffer putDouble(
+int
+double)
+
+public java.nio.ByteBuffer putFloat(
+float)
+
+public java.nio.ByteBuffer putFloat(
+int
+float)
+
+public java.nio.ByteBuffer putInt(
+int)
+
+public java.nio.ByteBuffer putInt(
+int
+int)
+
+public java.nio.ByteBuffer putLong(
+int
+long)
+
+public java.nio.ByteBuffer putLong(
+long)
+
+public java.nio.ByteBuffer putShort(
+int
+short)
+
+public java.nio.ByteBuffer putShort(
+short)
+
+public java.nio.ByteBuffer slice()
+
+________________CLASS________________
+
+
+ class java.nio.NIOAccess extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+static java.lang.Object getBaseArray(
+java.nio.Buffer)
+
+static int getBaseArrayOffset(
+java.nio.Buffer)
+
+static long getBasePointer(
+java.nio.Buffer)
+
+static int getRemainingBytes(
+java.nio.Buffer)
+
+________________CLASS________________
+
+
+public class java.nio.ReadOnlyBufferException extends java.lang.UnsupportedOperationException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+final class java.nio.ReadOnlyCharArrayBuffer extends java.nio.CharArrayBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int
+char[]
+int)
+
+static java.nio.ReadOnlyCharArrayBuffer copy(
+java.nio.CharArrayBuffer
+int)
+
+public java.nio.CharBuffer asReadOnlyBuffer()
+
+public java.nio.CharBuffer compact()
+
+public java.nio.CharBuffer duplicate()
+
+public boolean isReadOnly()
+
+protected char[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.CharBuffer put(
+char)
+
+public java.nio.CharBuffer put(
+int
+char)
+
+public java.nio.CharBuffer put(
+java.lang.String
+int
+int)
+
+public final java.nio.CharBuffer put(
+java.nio.CharBuffer)
+
+public final java.nio.CharBuffer put(
+char[]
+int
+int)
+
+public java.nio.CharBuffer slice()
+
+________________CLASS________________
+
+
+final class java.nio.ReadOnlyDirectByteBuffer extends java.nio.DirectByteBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>(
+java.nio.DirectByteBuffer$SafeAddress
+int
+int)
+
+protected void <init>(
+org.apache.harmony.luni.platform.PlatformAddress
+int
+int)
+
+static java.nio.ReadOnlyDirectByteBuffer copy(
+java.nio.DirectByteBuffer
+int)
+
+public java.nio.ByteBuffer asReadOnlyBuffer()
+
+public java.nio.ByteBuffer compact()
+
+public java.nio.ByteBuffer duplicate()
+
+public boolean isReadOnly()
+
+public java.nio.ByteBuffer put(
+byte)
+
+public java.nio.ByteBuffer put(
+int
+byte)
+
+public java.nio.ByteBuffer put(
+java.nio.ByteBuffer)
+
+public java.nio.ByteBuffer put(
+byte[]
+int
+int)
+
+public java.nio.ByteBuffer putDouble(
+double)
+
+public java.nio.ByteBuffer putDouble(
+int
+double)
+
+public java.nio.ByteBuffer putFloat(
+float)
+
+public java.nio.ByteBuffer putFloat(
+int
+float)
+
+public java.nio.ByteBuffer putInt(
+int)
+
+public java.nio.ByteBuffer putInt(
+int
+int)
+
+public java.nio.ByteBuffer putLong(
+int
+long)
+
+public java.nio.ByteBuffer putLong(
+long)
+
+public java.nio.ByteBuffer putShort(
+int
+short)
+
+public java.nio.ByteBuffer putShort(
+short)
+
+public java.nio.ByteBuffer slice()
+
+________________CLASS________________
+
+
+final class java.nio.ReadOnlyDoubleArrayBuffer extends java.nio.DoubleArrayBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int
+double[]
+int)
+
+static java.nio.ReadOnlyDoubleArrayBuffer copy(
+java.nio.DoubleArrayBuffer
+int)
+
+public java.nio.DoubleBuffer asReadOnlyBuffer()
+
+public java.nio.DoubleBuffer compact()
+
+public java.nio.DoubleBuffer duplicate()
+
+public boolean isReadOnly()
+
+protected double[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.DoubleBuffer put(
+double)
+
+public java.nio.DoubleBuffer put(
+int
+double)
+
+public final java.nio.DoubleBuffer put(
+java.nio.DoubleBuffer)
+
+public final java.nio.DoubleBuffer put(
+double[]
+int
+int)
+
+public java.nio.DoubleBuffer slice()
+
+________________CLASS________________
+
+
+final class java.nio.ReadOnlyFloatArrayBuffer extends java.nio.FloatArrayBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int
+float[]
+int)
+
+static java.nio.ReadOnlyFloatArrayBuffer copy(
+java.nio.FloatArrayBuffer
+int)
+
+public java.nio.FloatBuffer asReadOnlyBuffer()
+
+public java.nio.FloatBuffer compact()
+
+public java.nio.FloatBuffer duplicate()
+
+public boolean isReadOnly()
+
+protected float[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.FloatBuffer put(
+float)
+
+public java.nio.FloatBuffer put(
+int
+float)
+
+public java.nio.FloatBuffer put(
+java.nio.FloatBuffer)
+
+public final java.nio.FloatBuffer put(
+float[]
+int
+int)
+
+public java.nio.FloatBuffer slice()
+
+________________CLASS________________
+
+
+final class java.nio.ReadOnlyHeapByteBuffer extends java.nio.HeapByteBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+byte[]
+int
+int)
+
+static java.nio.ReadOnlyHeapByteBuffer copy(
+java.nio.HeapByteBuffer
+int)
+
+public java.nio.ByteBuffer asReadOnlyBuffer()
+
+public java.nio.ByteBuffer compact()
+
+public java.nio.ByteBuffer duplicate()
+
+public boolean isReadOnly()
+
+protected byte[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.ByteBuffer put(
+byte)
+
+public java.nio.ByteBuffer put(
+int
+byte)
+
+public java.nio.ByteBuffer put(
+java.nio.ByteBuffer)
+
+public java.nio.ByteBuffer put(
+byte[]
+int
+int)
+
+public java.nio.ByteBuffer putDouble(
+double)
+
+public java.nio.ByteBuffer putDouble(
+int
+double)
+
+public java.nio.ByteBuffer putFloat(
+float)
+
+public java.nio.ByteBuffer putFloat(
+int
+float)
+
+public java.nio.ByteBuffer putInt(
+int)
+
+public java.nio.ByteBuffer putInt(
+int
+int)
+
+public java.nio.ByteBuffer putLong(
+int
+long)
+
+public java.nio.ByteBuffer putLong(
+long)
+
+public java.nio.ByteBuffer putShort(
+int
+short)
+
+public java.nio.ByteBuffer putShort(
+short)
+
+public java.nio.ByteBuffer slice()
+
+________________CLASS________________
+
+
+final class java.nio.ReadOnlyIntArrayBuffer extends java.nio.IntArrayBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int
+int[]
+int)
+
+static java.nio.ReadOnlyIntArrayBuffer copy(
+java.nio.IntArrayBuffer
+int)
+
+public java.nio.IntBuffer asReadOnlyBuffer()
+
+public java.nio.IntBuffer compact()
+
+public java.nio.IntBuffer duplicate()
+
+public boolean isReadOnly()
+
+protected int[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.IntBuffer put(
+int)
+
+public java.nio.IntBuffer put(
+int
+int)
+
+public java.nio.IntBuffer put(
+java.nio.IntBuffer)
+
+public final java.nio.IntBuffer put(
+int[]
+int
+int)
+
+public java.nio.IntBuffer slice()
+
+________________CLASS________________
+
+
+final class java.nio.ReadOnlyLongArrayBuffer extends java.nio.LongArrayBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int
+long[]
+int)
+
+static java.nio.ReadOnlyLongArrayBuffer copy(
+java.nio.LongArrayBuffer
+int)
+
+public java.nio.LongBuffer asReadOnlyBuffer()
+
+public java.nio.LongBuffer compact()
+
+public java.nio.LongBuffer duplicate()
+
+public boolean isReadOnly()
+
+protected long[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.LongBuffer put(
+int
+long)
+
+public java.nio.LongBuffer put(
+long)
+
+public java.nio.LongBuffer put(
+java.nio.LongBuffer)
+
+public final java.nio.LongBuffer put(
+long[]
+int
+int)
+
+public java.nio.LongBuffer slice()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/nio/Buffer;Ljava/lang/Comparable<Ljava/nio/ShortBuffer;>; )
+public abstract class java.nio.ShortBuffer extends java.nio.Buffer implements java.lang.Comparable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+public static java.nio.ShortBuffer allocate(
+int)
+
+public static java.nio.ShortBuffer wrap(
+short[])
+
+public static java.nio.ShortBuffer wrap(
+short[]
+int
+int)
+
+ java.lang.Object _array()
+
+ int _arrayOffset()
+
+public final short[] array()
+
+public final int arrayOffset()
+
+public abstract java.nio.ShortBuffer asReadOnlyBuffer()
+
+public abstract java.nio.ShortBuffer compact()
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.nio.ShortBuffer)
+
+public abstract java.nio.ShortBuffer duplicate()
+
+public boolean equals(
+java.lang.Object)
+
+public java.nio.ShortBuffer get(
+short[])
+
+public java.nio.ShortBuffer get(
+short[]
+int
+int)
+
+public abstract short get()
+
+public abstract short get(
+int)
+
+public final boolean hasArray()
+
+public int hashCode()
+
+public abstract boolean isDirect()
+
+public abstract java.nio.ByteOrder order()
+
+abstract short[] protectedArray()
+
+abstract int protectedArrayOffset()
+
+abstract boolean protectedHasArray()
+
+public abstract java.nio.ShortBuffer put(
+int
+short)
+
+public java.nio.ShortBuffer put(
+java.nio.ShortBuffer)
+
+public abstract java.nio.ShortBuffer put(
+short)
+
+public final java.nio.ShortBuffer put(
+short[])
+
+public java.nio.ShortBuffer put(
+short[]
+int
+int)
+
+public abstract java.nio.ShortBuffer slice()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+abstract class java.nio.ShortArrayBuffer extends java.nio.ShortBuffer
+
+----------------FIELDS----------------
+
+protected final short[] backingArray
+
+protected final int offset
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ void <init>(
+int
+short[]
+int)
+
+ void <init>(
+short[])
+
+public final java.nio.ShortBuffer get(
+short[]
+int
+int)
+
+public final short get()
+
+public final short get(
+int)
+
+public final boolean isDirect()
+
+public final java.nio.ByteOrder order()
+
+________________CLASS________________
+
+
+final class java.nio.ReadOnlyShortArrayBuffer extends java.nio.ShortArrayBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int
+short[]
+int)
+
+static java.nio.ReadOnlyShortArrayBuffer copy(
+java.nio.ShortArrayBuffer
+int)
+
+public java.nio.ShortBuffer asReadOnlyBuffer()
+
+public java.nio.ShortBuffer compact()
+
+public java.nio.ShortBuffer duplicate()
+
+public boolean isReadOnly()
+
+protected short[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.ShortBuffer put(
+int
+short)
+
+public java.nio.ShortBuffer put(
+java.nio.ShortBuffer)
+
+public java.nio.ShortBuffer put(
+short)
+
+public final java.nio.ShortBuffer put(
+short[]
+int
+int)
+
+public java.nio.ShortBuffer slice()
+
+________________CLASS________________
+
+
+final class java.nio.ReadWriteCharArrayBuffer extends java.nio.CharArrayBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ void <init>(
+int
+char[]
+int)
+
+ void <init>(
+char[])
+
+static java.nio.ReadWriteCharArrayBuffer copy(
+java.nio.CharArrayBuffer
+int)
+
+public java.nio.CharBuffer asReadOnlyBuffer()
+
+public java.nio.CharBuffer compact()
+
+public java.nio.CharBuffer duplicate()
+
+public boolean isReadOnly()
+
+protected char[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.CharBuffer put(
+char)
+
+public java.nio.CharBuffer put(
+int
+char)
+
+public java.nio.CharBuffer put(
+char[]
+int
+int)
+
+public java.nio.CharBuffer slice()
+
+________________CLASS________________
+
+
+final class java.nio.ReadWriteDirectByteBuffer extends java.nio.DirectByteBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ void <init>(
+int
+int)
+
+ void <init>(
+java.nio.DirectByteBuffer$SafeAddress
+int
+int)
+
+ void <init>(
+org.apache.harmony.luni.platform.PlatformAddress
+int
+int)
+
+static java.nio.ReadWriteDirectByteBuffer copy(
+java.nio.DirectByteBuffer
+int)
+
+public java.nio.ByteBuffer asReadOnlyBuffer()
+
+public java.nio.ByteBuffer compact()
+
+public java.nio.ByteBuffer duplicate()
+
+ int getAddress()
+
+public boolean isReadOnly()
+
+public java.nio.ByteBuffer put(
+byte)
+
+public java.nio.ByteBuffer put(
+int
+byte)
+
+public java.nio.ByteBuffer put(
+byte[]
+int
+int)
+
+ java.nio.ByteBuffer put(
+int[]
+int
+int)
+
+ java.nio.ByteBuffer put(
+short[]
+int
+int)
+
+public java.nio.ByteBuffer putDouble(
+double)
+
+public java.nio.ByteBuffer putDouble(
+int
+double)
+
+public java.nio.ByteBuffer putFloat(
+float)
+
+public java.nio.ByteBuffer putFloat(
+int
+float)
+
+public java.nio.ByteBuffer putInt(
+int)
+
+public java.nio.ByteBuffer putInt(
+int
+int)
+
+public java.nio.ByteBuffer putLong(
+int
+long)
+
+public java.nio.ByteBuffer putLong(
+long)
+
+public java.nio.ByteBuffer putShort(
+int
+short)
+
+public java.nio.ByteBuffer putShort(
+short)
+
+public java.nio.ByteBuffer slice()
+
+________________CLASS________________
+
+
+final class java.nio.ReadWriteDoubleArrayBuffer extends java.nio.DoubleArrayBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ void <init>(
+int
+double[]
+int)
+
+ void <init>(
+double[])
+
+static java.nio.ReadWriteDoubleArrayBuffer copy(
+java.nio.DoubleArrayBuffer
+int)
+
+public java.nio.DoubleBuffer asReadOnlyBuffer()
+
+public java.nio.DoubleBuffer compact()
+
+public java.nio.DoubleBuffer duplicate()
+
+public boolean isReadOnly()
+
+protected double[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.DoubleBuffer put(
+double)
+
+public java.nio.DoubleBuffer put(
+int
+double)
+
+public java.nio.DoubleBuffer put(
+double[]
+int
+int)
+
+public java.nio.DoubleBuffer slice()
+
+________________CLASS________________
+
+
+final class java.nio.ReadWriteFloatArrayBuffer extends java.nio.FloatArrayBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ void <init>(
+int
+float[]
+int)
+
+ void <init>(
+float[])
+
+static java.nio.ReadWriteFloatArrayBuffer copy(
+java.nio.FloatArrayBuffer
+int)
+
+public java.nio.FloatBuffer asReadOnlyBuffer()
+
+public java.nio.FloatBuffer compact()
+
+public java.nio.FloatBuffer duplicate()
+
+public boolean isReadOnly()
+
+protected float[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.FloatBuffer put(
+float)
+
+public java.nio.FloatBuffer put(
+int
+float)
+
+public java.nio.FloatBuffer put(
+float[]
+int
+int)
+
+public java.nio.FloatBuffer slice()
+
+________________CLASS________________
+
+
+final class java.nio.ReadWriteHeapByteBuffer extends java.nio.HeapByteBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ void <init>(
+byte[])
+
+ void <init>(
+byte[]
+int
+int)
+
+static java.nio.ReadWriteHeapByteBuffer copy(
+java.nio.HeapByteBuffer
+int)
+
+public java.nio.ByteBuffer asReadOnlyBuffer()
+
+public java.nio.ByteBuffer compact()
+
+public java.nio.ByteBuffer duplicate()
+
+public boolean isReadOnly()
+
+protected byte[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.ByteBuffer put(
+byte)
+
+public java.nio.ByteBuffer put(
+int
+byte)
+
+public java.nio.ByteBuffer put(
+byte[]
+int
+int)
+
+public java.nio.ByteBuffer putDouble(
+double)
+
+public java.nio.ByteBuffer putDouble(
+int
+double)
+
+public java.nio.ByteBuffer putFloat(
+float)
+
+public java.nio.ByteBuffer putFloat(
+int
+float)
+
+public java.nio.ByteBuffer putInt(
+int)
+
+public java.nio.ByteBuffer putInt(
+int
+int)
+
+public java.nio.ByteBuffer putLong(
+int
+long)
+
+public java.nio.ByteBuffer putLong(
+long)
+
+public java.nio.ByteBuffer putShort(
+int
+short)
+
+public java.nio.ByteBuffer putShort(
+short)
+
+public java.nio.ByteBuffer slice()
+
+________________CLASS________________
+
+
+final class java.nio.ReadWriteIntArrayBuffer extends java.nio.IntArrayBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ void <init>(
+int
+int[]
+int)
+
+ void <init>(
+int[])
+
+static java.nio.ReadWriteIntArrayBuffer copy(
+java.nio.IntArrayBuffer
+int)
+
+public java.nio.IntBuffer asReadOnlyBuffer()
+
+public java.nio.IntBuffer compact()
+
+public java.nio.IntBuffer duplicate()
+
+public boolean isReadOnly()
+
+protected int[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.IntBuffer put(
+int)
+
+public java.nio.IntBuffer put(
+int
+int)
+
+public java.nio.IntBuffer put(
+int[]
+int
+int)
+
+public java.nio.IntBuffer slice()
+
+________________CLASS________________
+
+
+final class java.nio.ReadWriteLongArrayBuffer extends java.nio.LongArrayBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ void <init>(
+int
+long[]
+int)
+
+ void <init>(
+long[])
+
+static java.nio.ReadWriteLongArrayBuffer copy(
+java.nio.LongArrayBuffer
+int)
+
+public java.nio.LongBuffer asReadOnlyBuffer()
+
+public java.nio.LongBuffer compact()
+
+public java.nio.LongBuffer duplicate()
+
+public boolean isReadOnly()
+
+protected long[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.LongBuffer put(
+int
+long)
+
+public java.nio.LongBuffer put(
+long)
+
+public java.nio.LongBuffer put(
+long[]
+int
+int)
+
+public java.nio.LongBuffer slice()
+
+________________CLASS________________
+
+
+final class java.nio.ReadWriteShortArrayBuffer extends java.nio.ShortArrayBuffer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ void <init>(
+int
+short[]
+int)
+
+ void <init>(
+short[])
+
+static java.nio.ReadWriteShortArrayBuffer copy(
+java.nio.ShortArrayBuffer
+int)
+
+public java.nio.ShortBuffer asReadOnlyBuffer()
+
+public java.nio.ShortBuffer compact()
+
+public java.nio.ShortBuffer duplicate()
+
+public boolean isReadOnly()
+
+protected short[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.ShortBuffer put(
+int
+short)
+
+public java.nio.ShortBuffer put(
+short)
+
+public java.nio.ShortBuffer put(
+short[]
+int
+int)
+
+public java.nio.ShortBuffer slice()
+
+________________CLASS________________
+
+
+final class java.nio.ShortToByteBufferAdapter extends java.nio.ShortBuffer implements org.apache.harmony.nio.internal.DirectBuffer
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private final java.nio.ByteBuffer byteBuffer
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+java.nio.ByteBuffer)
+
+static java.nio.ShortBuffer wrap(
+java.nio.ByteBuffer)
+
+public void addressValidityCheck()
+
+public java.nio.ShortBuffer asReadOnlyBuffer()
+
+public java.nio.ShortBuffer compact()
+
+public java.nio.ShortBuffer duplicate()
+
+public void free()
+
+public short get()
+
+public short get(
+int)
+
+public org.apache.harmony.luni.platform.PlatformAddress getBaseAddress()
+
+public int getByteCapacity()
+
+public org.apache.harmony.luni.platform.PlatformAddress getEffectiveAddress()
+
+public boolean isAddressValid()
+
+public boolean isDirect()
+
+public boolean isReadOnly()
+
+public java.nio.ByteOrder order()
+
+protected short[] protectedArray()
+
+protected int protectedArrayOffset()
+
+protected boolean protectedHasArray()
+
+public java.nio.ShortBuffer put(
+int
+short)
+
+public java.nio.ShortBuffer put(
+short)
+
+public java.nio.ShortBuffer put(
+short[]
+int
+int)
+
+public java.nio.ShortBuffer slice()
+
+________________CLASS________________
+
+
+public class java.nio.channels.AlreadyConnectedException extends java.lang.IllegalStateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class java.nio.channels.ClosedChannelException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class java.nio.channels.AsynchronousCloseException extends java.nio.channels.ClosedChannelException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public abstract interface class java.nio.channels.Channel extends java.lang.Object implements java.io.Closeable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void close()
+
+public abstract boolean isOpen()
+
+________________CLASS________________
+
+
+public abstract interface class java.nio.channels.ReadableByteChannel extends java.lang.Object implements java.nio.channels.Channel
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int read(
+java.nio.ByteBuffer)
+
+________________CLASS________________
+
+
+public abstract interface class java.nio.channels.WritableByteChannel extends java.lang.Object implements java.nio.channels.Channel
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int write(
+java.nio.ByteBuffer)
+
+________________CLASS________________
+
+
+public abstract interface class java.nio.channels.ByteChannel extends java.lang.Object implements java.nio.channels.ReadableByteChannel, java.nio.channels.WritableByteChannel
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class java.nio.channels.CancelledKeyException extends java.lang.IllegalStateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =ByteChannelReader )
+@dalvik.annotation.EnclosingClass (value =Ljava/nio/channels/Channels; )
+ class java.nio.channels.Channels$ByteChannelReader extends java.io.Reader
+
+----------------FIELDS----------------
+
+private static final int BUFFER_SIZE
+
+ java.nio.ByteBuffer bytes
+
+ java.nio.CharBuffer chars
+
+ java.nio.charset.CharsetDecoder decoder
+
+private java.io.InputStream inputStream
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream
+java.nio.charset.CharsetDecoder
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+char[]
+int
+int)
+
+public boolean ready()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =ByteChannelWriter )
+@dalvik.annotation.EnclosingClass (value =Ljava/nio/channels/Channels; )
+ class java.nio.channels.Channels$ByteChannelWriter extends java.io.Writer
+
+----------------FIELDS----------------
+
+private static final int BUFFER_SIZE
+
+private java.nio.ByteBuffer byteBuf
+
+private java.nio.charset.CharsetEncoder encoder
+
+private java.io.OutputStream outputStream
+----------------METHODS----------------
+
+public void <init>(
+java.io.OutputStream
+java.nio.charset.CharsetEncoder
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+char[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =ChannelInputStream )
+@dalvik.annotation.EnclosingClass (value =Ljava/nio/channels/Channels; )
+ class java.nio.channels.Channels$ChannelInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+protected java.nio.channels.ReadableByteChannel channel
+----------------METHODS----------------
+
+public void <init>(
+java.nio.channels.ReadableByteChannel)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+
+________________CLASS________________
+
+
+public abstract interface class java.nio.channels.InterruptibleChannel extends java.lang.Object implements java.nio.channels.Channel
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void close()
+
+________________CLASS________________
+
+
+public abstract class java.nio.channels.spi.AbstractInterruptibleChannel extends java.lang.Object implements java.nio.channels.Channel, java.nio.channels.InterruptibleChannel
+
+----------------FIELDS----------------
+
+static java.lang.reflect.Method setInterruptAction
+
+private volatile boolean closed
+
+volatile boolean interrupted
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>()
+
+protected final void begin()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void close()
+@dalvik.annotation.Throws (value =Ljava/nio/channels/AsynchronousCloseException; )
+protected final void end(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void implCloseChannel()
+
+public final boolean isOpen()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =ReadableByteChannelImpl )
+@dalvik.annotation.EnclosingClass (value =Ljava/nio/channels/Channels; )
+ class java.nio.channels.Channels$ReadableByteChannelImpl extends java.nio.channels.spi.AbstractInterruptibleChannel implements java.nio.channels.ReadableByteChannel
+
+----------------FIELDS----------------
+
+private java.io.InputStream inputStream
+----------------METHODS----------------
+
+ void <init>(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void implCloseChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+java.nio.ByteBuffer)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =ReadableByteChannelInputStream )
+@dalvik.annotation.EnclosingClass (value =Ljava/nio/channels/Channels; )
+ class java.nio.channels.Channels$ReadableByteChannelInputStream extends java.nio.channels.Channels$ChannelInputStream
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.nio.channels.ReadableByteChannel)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/nio/channels/Channels; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =ReaderInputStream )
+ class java.nio.channels.Channels$ReaderInputStream extends java.nio.channels.Channels$ChannelInputStream
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.nio.channels.ReadableByteChannel)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =WritableByteChannelImpl )
+@dalvik.annotation.EnclosingClass (value =Ljava/nio/channels/Channels; )
+ class java.nio.channels.Channels$WritableByteChannelImpl extends java.nio.channels.spi.AbstractInterruptibleChannel implements java.nio.channels.WritableByteChannel
+
+----------------FIELDS----------------
+
+private java.io.OutputStream outputStream
+----------------METHODS----------------
+
+ void <init>(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void implCloseChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int write(
+java.nio.ByteBuffer)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =WritableByteChannelOutputStream )
+@dalvik.annotation.EnclosingClass (value =Ljava/nio/channels/Channels; )
+ class java.nio.channels.Channels$WritableByteChannelOutputStream extends java.io.OutputStream
+
+----------------FIELDS----------------
+
+private java.nio.channels.WritableByteChannel channel
+----------------METHODS----------------
+
+public void <init>(
+java.nio.channels.WritableByteChannel)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/nio/channels/Channels$ByteChannelWriter;Ljava/nio/channels/Channels$ByteChannelReader;Ljava/nio/channels/Channels$WritableByteChannelImpl;Ljava/nio/channels/Channels$ReadableByteChannelImpl;Ljava/nio/channels/Channels$WritableByteChannelOutputStream;Ljava/nio/channels/Channels$ReaderInputStream;Ljava/nio/channels/Channels$ReadableByteChannelInputStream;Ljava/nio/channels/Channels$ChannelInputStream; )
+public final class java.nio.channels.Channels extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static java.nio.channels.ReadableByteChannel newChannel(
+java.io.InputStream)
+
+public static java.nio.channels.WritableByteChannel newChannel(
+java.io.OutputStream)
+
+public static java.io.InputStream newInputStream(
+java.nio.channels.ReadableByteChannel)
+
+public static java.io.OutputStream newOutputStream(
+java.nio.channels.WritableByteChannel)
+
+public static java.io.Reader newReader(
+java.nio.channels.ReadableByteChannel
+java.lang.String)
+
+public static java.io.Reader newReader(
+java.nio.channels.ReadableByteChannel
+java.nio.charset.CharsetDecoder
+int)
+
+public static java.io.Writer newWriter(
+java.nio.channels.WritableByteChannel
+java.lang.String)
+
+public static java.io.Writer newWriter(
+java.nio.channels.WritableByteChannel
+java.nio.charset.CharsetEncoder
+int)
+
+static java.nio.ByteBuffer wrapByteBuffer(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.nio.channels.ClosedByInterruptException extends java.nio.channels.AsynchronousCloseException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class java.nio.channels.ClosedSelectorException extends java.lang.IllegalStateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class java.nio.channels.ConnectionPendingException extends java.lang.IllegalStateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public abstract class java.nio.channels.SelectableChannel extends java.nio.channels.spi.AbstractInterruptibleChannel implements java.nio.channels.Channel
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+
+public abstract java.lang.Object blockingLock()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.nio.channels.SelectableChannel configureBlocking(
+boolean)
+
+public abstract boolean isBlocking()
+
+public abstract boolean isRegistered()
+
+public abstract java.nio.channels.SelectionKey keyFor(
+java.nio.channels.Selector)
+
+public abstract java.nio.channels.spi.SelectorProvider provider()
+@dalvik.annotation.Throws (value =Ljava/nio/channels/ClosedChannelException; )
+public final java.nio.channels.SelectionKey register(
+java.nio.channels.Selector
+int)
+@dalvik.annotation.Throws (value =Ljava/nio/channels/ClosedChannelException; )
+public abstract java.nio.channels.SelectionKey register(
+java.nio.channels.Selector
+int
+java.lang.Object)
+
+public abstract int validOps()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/nio/channels/spi/AbstractSelectableChannel$1;Ljava/nio/channels/spi/AbstractSelectableChannel$BlockingLock; )
+public abstract class java.nio.channels.spi.AbstractSelectableChannel extends java.nio.channels.SelectableChannel
+
+----------------FIELDS----------------
+
+private final java.lang.Object blockingLock
+
+ boolean isBlocking
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/nio/channels/SelectionKey;>; )
+private java.util.List keyList
+
+private final java.nio.channels.spi.SelectorProvider provider
+----------------METHODS----------------
+
+protected void <init>(
+java.nio.channels.spi.SelectorProvider)
+
+public final java.lang.Object blockingLock()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.nio.channels.SelectableChannel configureBlocking(
+boolean)
+
+ void deregister(
+java.nio.channels.SelectionKey)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected final void implCloseChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void implCloseSelectableChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void implConfigureBlocking(
+boolean)
+
+public final boolean isBlocking()
+
+public final boolean isRegistered()
+
+public final java.nio.channels.SelectionKey keyFor(
+java.nio.channels.Selector)
+
+public final java.nio.channels.spi.SelectorProvider provider()
+@dalvik.annotation.Throws (value =Ljava/nio/channels/ClosedChannelException; )
+public final java.nio.channels.SelectionKey register(
+java.nio.channels.Selector
+int
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract interface class java.nio.channels.ScatteringByteChannel extends java.lang.Object implements java.nio.channels.ReadableByteChannel
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long read(
+java.nio.ByteBuffer[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long read(
+java.nio.ByteBuffer[]
+int
+int)
+
+________________CLASS________________
+
+
+public abstract interface class java.nio.channels.GatheringByteChannel extends java.lang.Object implements java.nio.channels.WritableByteChannel
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long write(
+java.nio.ByteBuffer[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long write(
+java.nio.ByteBuffer[]
+int
+int)
+
+________________CLASS________________
+
+
+public abstract class java.nio.channels.DatagramChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.ByteChannel, java.nio.channels.ScatteringByteChannel, java.nio.channels.GatheringByteChannel
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.nio.channels.spi.SelectorProvider)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static java.nio.channels.DatagramChannel open()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.nio.channels.DatagramChannel connect(
+java.net.SocketAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.nio.channels.DatagramChannel disconnect()
+
+public abstract boolean isConnected()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int read(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final long read(
+java.nio.ByteBuffer[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long read(
+java.nio.ByteBuffer[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.net.SocketAddress receive(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int send(
+java.nio.ByteBuffer
+java.net.SocketAddress)
+
+public abstract java.net.DatagramSocket socket()
+
+public final int validOps()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int write(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final long write(
+java.nio.ByteBuffer[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long write(
+java.nio.ByteBuffer[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/nio/channels/FileChannel; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =MapMode )
+public class java.nio.channels.FileChannel$MapMode extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.nio.channels.FileChannel$MapMode PRIVATE
+
+public static final java.nio.channels.FileChannel$MapMode READ_ONLY
+
+public static final java.nio.channels.FileChannel$MapMode READ_WRITE
+
+private final java.lang.String displayName
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+java.lang.String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/nio/channels/FileChannel$MapMode; )
+public abstract class java.nio.channels.FileChannel extends java.nio.channels.spi.AbstractInterruptibleChannel implements java.nio.channels.GatheringByteChannel, java.nio.channels.ScatteringByteChannel, java.nio.channels.ByteChannel
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void force(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.nio.channels.FileLock lock()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.nio.channels.FileLock lock(
+long
+long
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.nio.MappedByteBuffer map(
+java.nio.channels.FileChannel$MapMode
+long
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long position()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.nio.channels.FileChannel position(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int read(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int read(
+java.nio.ByteBuffer
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final long read(
+java.nio.ByteBuffer[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long read(
+java.nio.ByteBuffer[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long size()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long transferFrom(
+java.nio.channels.ReadableByteChannel
+long
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long transferTo(
+long
+long
+java.nio.channels.WritableByteChannel)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.nio.channels.FileChannel truncate(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.nio.channels.FileLock tryLock()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.nio.channels.FileLock tryLock(
+long
+long
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int write(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int write(
+java.nio.ByteBuffer
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final long write(
+java.nio.ByteBuffer[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long write(
+java.nio.ByteBuffer[]
+int
+int)
+
+________________CLASS________________
+
+
+public abstract class java.nio.channels.FileLock extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final java.nio.channels.FileChannel channel
+
+private final long position
+
+private final boolean shared
+
+private final long size
+----------------METHODS----------------
+
+protected void <init>(
+java.nio.channels.FileChannel
+long
+long
+boolean)
+
+public final java.nio.channels.FileChannel channel()
+
+public final boolean isShared()
+
+public abstract boolean isValid()
+
+public final boolean overlaps(
+long
+long)
+
+public final long position()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void release()
+
+public final long size()
+
+public final java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.nio.channels.FileLockInterruptionException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class java.nio.channels.IllegalBlockingModeException extends java.lang.IllegalStateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class java.nio.channels.IllegalSelectorException extends java.lang.IllegalArgumentException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class java.nio.channels.NoConnectionPendingException extends java.lang.IllegalStateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class java.nio.channels.NonReadableChannelException extends java.lang.IllegalStateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class java.nio.channels.NonWritableChannelException extends java.lang.IllegalStateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class java.nio.channels.NotYetBoundException extends java.lang.IllegalStateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class java.nio.channels.NotYetConnectedException extends java.lang.IllegalStateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class java.nio.channels.OverlappingFileLockException extends java.lang.IllegalStateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/nio/channels/Pipe; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =SinkChannel )
+public abstract class java.nio.channels.Pipe$SinkChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.WritableByteChannel, java.nio.channels.GatheringByteChannel
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>(
+java.nio.channels.spi.SelectorProvider)
+
+public final int validOps()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/nio/channels/Pipe; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =SourceChannel )
+public abstract class java.nio.channels.Pipe$SourceChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.ReadableByteChannel, java.nio.channels.ScatteringByteChannel
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>(
+java.nio.channels.spi.SelectorProvider)
+
+public final int validOps()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/nio/channels/Pipe$SourceChannel;Ljava/nio/channels/Pipe$SinkChannel; )
+public abstract class java.nio.channels.Pipe extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static java.nio.channels.Pipe open()
+
+public abstract java.nio.channels.Pipe$SinkChannel sink()
+
+public abstract java.nio.channels.Pipe$SourceChannel source()
+
+________________CLASS________________
+
+
+public abstract class java.nio.channels.SelectionKey extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int OP_ACCEPT
+
+public static final int OP_CONNECT
+
+public static final int OP_READ
+
+public static final int OP_WRITE
+
+private volatile java.lang.Object attachment
+----------------METHODS----------------
+
+protected void <init>()
+
+public final java.lang.Object attach(
+java.lang.Object)
+
+public final java.lang.Object attachment()
+
+public abstract void cancel()
+
+public abstract java.nio.channels.SelectableChannel channel()
+
+public abstract int interestOps()
+
+public abstract java.nio.channels.SelectionKey interestOps(
+int)
+
+public final boolean isAcceptable()
+
+public final boolean isConnectable()
+
+public final boolean isReadable()
+
+public abstract boolean isValid()
+
+public final boolean isWritable()
+
+public abstract int readyOps()
+
+public abstract java.nio.channels.Selector selector()
+
+________________CLASS________________
+
+
+public abstract class java.nio.channels.Selector extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static java.nio.channels.Selector open()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void close()
+
+public abstract boolean isOpen()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/nio/channels/SelectionKey;>; )
+public abstract java.util.Set keys()
+
+public abstract java.nio.channels.spi.SelectorProvider provider()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int select()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int select(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int selectNow()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/nio/channels/SelectionKey;>; )
+public abstract java.util.Set selectedKeys()
+
+public abstract java.nio.channels.Selector wakeup()
+
+________________CLASS________________
+
+
+public abstract class java.nio.channels.ServerSocketChannel extends java.nio.channels.spi.AbstractSelectableChannel
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>(
+java.nio.channels.spi.SelectorProvider)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static java.nio.channels.ServerSocketChannel open()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.nio.channels.SocketChannel accept()
+
+public abstract java.net.ServerSocket socket()
+
+public final int validOps()
+
+________________CLASS________________
+
+
+public abstract class java.nio.channels.SocketChannel extends java.nio.channels.spi.AbstractSelectableChannel implements java.nio.channels.ByteChannel, java.nio.channels.ScatteringByteChannel, java.nio.channels.GatheringByteChannel
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.nio.channels.spi.SelectorProvider)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static java.nio.channels.SocketChannel open()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static java.nio.channels.SocketChannel open(
+java.net.SocketAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract boolean connect(
+java.net.SocketAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract boolean finishConnect()
+
+public abstract boolean isConnected()
+
+public abstract boolean isConnectionPending()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int read(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final long read(
+java.nio.ByteBuffer[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long read(
+java.nio.ByteBuffer[]
+int
+int)
+
+public abstract java.net.Socket socket()
+
+public final int validOps()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int write(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final long write(
+java.nio.ByteBuffer[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long write(
+java.nio.ByteBuffer[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.nio.channels.UnresolvedAddressException extends java.lang.IllegalArgumentException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class java.nio.channels.UnsupportedAddressTypeException extends java.lang.IllegalArgumentException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Ljava/lang/reflect/Method;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/nio/channels/spi/AbstractInterruptibleChannel; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class java.nio.channels.spi.AbstractInterruptibleChannel$1 extends java.lang.Object implements java.security.PrivilegedExceptionAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public volatile java.lang.Object run()
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public java.lang.reflect.Method run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.nio.channels.spi.AbstractInterruptibleChannel$2 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final java.nio.channels.spi.AbstractInterruptibleChannel this$0
+----------------METHODS----------------
+
+ void <init>(
+java.nio.channels.spi.AbstractInterruptibleChannel)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/nio/channels/spi/AbstractSelectableChannel; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class java.nio.channels.spi.AbstractSelectableChannel$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =BlockingLock )
+@dalvik.annotation.EnclosingClass (value =Ljava/nio/channels/spi/AbstractSelectableChannel; )
+ class java.nio.channels.spi.AbstractSelectableChannel$BlockingLock extends java.lang.Object
+
+----------------FIELDS----------------
+
+final java.nio.channels.spi.AbstractSelectableChannel this$0
+----------------METHODS----------------
+
+private void <init>(
+java.nio.channels.spi.AbstractSelectableChannel)
+
+ void <init>(
+java.nio.channels.spi.AbstractSelectableChannel
+java.nio.channels.spi.AbstractSelectableChannel$1)
+
+________________CLASS________________
+
+
+public abstract class java.nio.channels.spi.AbstractSelectionKey extends java.nio.channels.SelectionKey
+
+----------------FIELDS----------------
+
+ boolean isValid
+----------------METHODS----------------
+
+protected void <init>()
+
+public final void cancel()
+
+public final boolean isValid()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.nio.channels.spi.AbstractSelector$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final java.nio.channels.spi.AbstractSelector this$0
+----------------METHODS----------------
+
+ void <init>(
+java.nio.channels.spi.AbstractSelector)
+
+public void run()
+
+________________CLASS________________
+
+
+public abstract class java.nio.channels.spi.AbstractSelector extends java.nio.channels.Selector
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/nio/channels/SelectionKey;>; )
+private java.util.Set cancelledKeysSet
+
+private volatile boolean isOpen
+
+private java.nio.channels.spi.SelectorProvider provider
+----------------METHODS----------------
+
+protected void <init>(
+java.nio.channels.spi.SelectorProvider)
+
+protected final void begin()
+
+ void cancel(
+java.nio.channels.SelectionKey)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/nio/channels/SelectionKey;>; )
+protected final java.util.Set cancelledKeys()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void close()
+
+protected final void deregister(
+java.nio.channels.spi.AbstractSelectionKey)
+
+protected final void end()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void implCloseSelector()
+
+public final boolean isOpen()
+
+public final java.nio.channels.spi.SelectorProvider provider()
+
+protected abstract java.nio.channels.SelectionKey register(
+java.nio.channels.spi.AbstractSelectableChannel
+int
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/nio/channels/spi/SelectorProvider;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class java.nio.channels.spi.SelectorProvider$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object run()
+
+public java.nio.channels.spi.SelectorProvider run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/ClassLoader;>; )
+final class java.nio.channels.spi.SelectorProvider$2 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.ClassLoader run()
+
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/nio/channels/spi/SelectorProvider;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class java.nio.channels.spi.SelectorProvider$3 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object run()
+
+public java.nio.channels.spi.SelectorProvider run()
+
+________________CLASS________________
+
+
+public abstract class java.nio.channels.spi.SelectorProvider extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String PROVIDER_IN_JAR_RESOURCE
+
+private static final java.lang.String PROVIDER_IN_SYSTEM_PROPERTY
+
+private static final java.lang.String SYMBOL_COMMENT
+
+private static java.nio.channels.Channel inheritedChannel
+
+private static java.nio.channels.spi.SelectorProvider provider
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>()
+
+static java.nio.channels.spi.SelectorProvider loadProviderByJar()
+
+static java.nio.channels.spi.SelectorProvider loadProviderByProperty()
+
+public static java.nio.channels.spi.SelectorProvider provider()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.nio.channels.Channel inheritedChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.nio.channels.DatagramChannel openDatagramChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.nio.channels.Pipe openPipe()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.nio.channels.spi.AbstractSelector openSelector()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.nio.channels.ServerSocketChannel openServerSocketChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.nio.channels.SocketChannel openSocketChannel()
+
+________________CLASS________________
+
+
+public class java.nio.charset.CharacterCodingException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Lcom/ibm/icu4jni/charset/CharsetProviderICU;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Ljava/nio/charset/Charset; )
+final class java.nio.charset.Charset$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public com.ibm.icu4jni.charset.CharsetProviderICU run()
+
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/ClassLoader;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class java.nio.charset.Charset$2 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.lang.Thread val$t
+----------------METHODS----------------
+
+ void <init>(
+java.lang.Thread)
+
+public java.lang.ClassLoader run()
+
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/ClassLoader;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class java.nio.charset.Charset$3 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.ClassLoader run()
+
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class java.nio.charset.Charset$4 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =IgnoreCaseComparator )
+@dalvik.annotation.EnclosingClass (value =Ljava/nio/charset/Charset; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Comparator<Ljava/lang/String;>; )
+ class java.nio.charset.Charset$IgnoreCaseComparator extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Comparator<Ljava/lang/String;>; )
+private static java.util.Comparator c
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Signature (value =()Ljava/util/Comparator<Ljava/lang/String;>; )
+public static java.util.Comparator getInstance()
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+public int compare(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.nio.charset.CoderMalfunctionError extends java.lang.Error
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.Exception)
+
+________________CLASS________________
+
+
+public class java.nio.charset.CoderResult extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.nio.charset.CoderResult OVERFLOW
+
+private static final int TYPE_MALFORMED_INPUT
+
+private static final int TYPE_OVERFLOW
+
+private static final int TYPE_UNDERFLOW
+
+private static final int TYPE_UNMAPPABLE_CHAR
+
+public static final java.nio.charset.CoderResult UNDERFLOW
+@dalvik.annotation.Signature (value =Ljava/util/WeakHashMap<Ljava/lang/Integer;Ljava/nio/charset/CoderResult;>; )
+private static java.util.WeakHashMap _malformedErrors
+@dalvik.annotation.Signature (value =Ljava/util/WeakHashMap<Ljava/lang/Integer;Ljava/nio/charset/CoderResult;>; )
+private static java.util.WeakHashMap _unmappableErrors
+
+private final int length
+
+private final int type
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public static java.nio.charset.CoderResult malformedForLength(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public static java.nio.charset.CoderResult unmappableForLength(
+int)
+
+public boolean isError()
+
+public boolean isMalformed()
+
+public boolean isOverflow()
+
+public boolean isUnderflow()
+
+public boolean isUnmappable()
+@dalvik.annotation.Throws (value =Ljava/lang/UnsupportedOperationException; )
+public int length()
+@dalvik.annotation.Throws (value =Ljava/nio/BufferUnderflowException;Ljava/nio/BufferOverflowException;Ljava/nio/charset/UnmappableCharacterException;Ljava/nio/charset/MalformedInputException;Ljava/nio/charset/CharacterCodingException; )
+public void throwException()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.nio.charset.CodingErrorAction extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.nio.charset.CodingErrorAction IGNORE
+
+public static final java.nio.charset.CodingErrorAction REPLACE
+
+public static final java.nio.charset.CodingErrorAction REPORT
+
+private java.lang.String action
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+java.lang.String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.nio.charset.IllegalCharsetNameException extends java.lang.IllegalArgumentException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.String charsetName
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public java.lang.String getCharsetName()
+
+________________CLASS________________
+
+
+public class java.nio.charset.MalformedInputException extends java.nio.charset.CharacterCodingException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private int inputLength
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public int getInputLength()
+
+public java.lang.String getMessage()
+
+________________CLASS________________
+
+
+public class java.nio.charset.UnmappableCharacterException extends java.nio.charset.CharacterCodingException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private int inputLength
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public int getInputLength()
+
+public java.lang.String getMessage()
+
+________________CLASS________________
+
+
+public class java.nio.charset.UnsupportedCharsetException extends java.lang.IllegalArgumentException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.String charsetName
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public java.lang.String getCharsetName()
+
+________________CLASS________________
+
+
+public final class java.security.AccessControlContext extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.security.DomainCombiner combiner
+
+ java.security.ProtectionDomain[] context
+
+private java.security.AccessControlContext inherited
+----------------METHODS----------------
+
+public void <init>(
+java.security.AccessControlContext
+java.security.DomainCombiner)
+
+public void <init>(
+java.security.ProtectionDomain[])
+
+ void <init>(
+java.security.ProtectionDomain[]
+java.security.AccessControlContext)
+
+ void <init>(
+java.security.ProtectionDomain[]
+java.security.DomainCombiner)
+@dalvik.annotation.Throws (value =Ljava/security/AccessControlException; )
+public void checkPermission(
+java.security.Permission)
+
+public boolean equals(
+java.lang.Object)
+
+public java.security.DomainCombiner getDomainCombiner()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class java.security.AccessControlException extends java.lang.SecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.security.Permission perm
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.security.Permission)
+
+public java.security.Permission getPermission()
+
+________________CLASS________________
+
+
+public final class java.security.AccessController extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/WeakHashMap<Ljava/lang/Thread;Ljava/util/ArrayList<Ljava/security/AccessControlContext;>;>; )
+private static final java.util.WeakHashMap contexts
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/AccessControlException; )
+public static void checkPermission(
+java.security.Permission)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/security/PrivilegedAction<TT;>;)TT; )
+public static java.lang.Object doPrivileged(
+java.security.PrivilegedAction)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/security/PrivilegedAction<TT;>;Ljava/security/AccessControlContext;)TT; )
+public static java.lang.Object doPrivileged(
+java.security.PrivilegedAction
+java.security.AccessControlContext)
+@dalvik.annotation.Throws (value =Ljava/security/PrivilegedActionException; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/security/PrivilegedExceptionAction<TT;>;)TT; )
+public static java.lang.Object doPrivileged(
+java.security.PrivilegedExceptionAction)
+@dalvik.annotation.Throws (value =Ljava/security/PrivilegedActionException; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/security/PrivilegedExceptionAction<TT;>;Ljava/security/AccessControlContext;)TT; )
+public static java.lang.Object doPrivileged(
+java.security.PrivilegedExceptionAction
+java.security.AccessControlContext)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/security/PrivilegedAction<TT;>;Ljava/security/AccessControlContext;)TT; )
+private static java.lang.Object doPrivilegedImpl(
+java.security.PrivilegedAction
+java.security.AccessControlContext)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/security/PrivilegedExceptionAction<TT;>;Ljava/security/AccessControlContext;)TT; )
+@dalvik.annotation.Throws (value =Ljava/security/PrivilegedActionException; )
+private static java.lang.Object doPrivilegedImpl(
+java.security.PrivilegedExceptionAction
+java.security.AccessControlContext)
+
+public static java.security.AccessControlContext getContext()
+
+private static native java.security.ProtectionDomain[] getStackDomains()
+
+________________CLASS________________
+
+
+public class java.security.AlgorithmParameterGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String SERVICE
+
+private static org.apache.harmony.security.fortress.Engine engine
+
+private static java.security.SecureRandom randm
+
+private final java.lang.String algorithm
+
+private final java.security.Provider provider
+
+private final java.security.AlgorithmParameterGeneratorSpi spiImpl
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.security.AlgorithmParameterGeneratorSpi
+java.security.Provider
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.AlgorithmParameterGenerator getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static java.security.AlgorithmParameterGenerator getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.AlgorithmParameterGenerator getInstance(
+java.lang.String
+java.security.Provider)
+
+public final java.security.AlgorithmParameters generateParameters()
+
+public final java.lang.String getAlgorithm()
+
+public final java.security.Provider getProvider()
+
+public final void init(
+int)
+
+public final void init(
+int
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public final void init(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public final void init(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+
+public abstract class java.security.AlgorithmParameterGeneratorSpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected abstract java.security.AlgorithmParameters engineGenerateParameters()
+
+protected abstract void engineInit(
+int
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+protected abstract void engineInit(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+
+public class java.security.AlgorithmParameters extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String SEVICE
+
+private static org.apache.harmony.security.fortress.Engine engine
+
+private java.lang.String algorithm
+
+private boolean initialized
+
+private java.security.Provider provider
+
+private java.security.AlgorithmParametersSpi spiImpl
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.security.AlgorithmParametersSpi
+java.security.Provider
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.AlgorithmParameters getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static java.security.AlgorithmParameters getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.AlgorithmParameters getInstance(
+java.lang.String
+java.security.Provider)
+
+public final java.lang.String getAlgorithm()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final byte[] getEncoded()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final byte[] getEncoded(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+@dalvik.annotation.Signature (value =<T::Ljava/security/spec/AlgorithmParameterSpec;>(Ljava/lang/Class<TT;>;)TT; )
+public final java.security.spec.AlgorithmParameterSpec getParameterSpec(
+java.lang.Class)
+
+public final java.security.Provider getProvider()
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+public final void init(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void init(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void init(
+byte[]
+java.lang.String)
+
+public final java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract class java.security.AlgorithmParametersSpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract byte[] engineGetEncoded()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract byte[] engineGetEncoded(
+java.lang.String)
+@dalvik.annotation.Signature (value =<T::Ljava/security/spec/AlgorithmParameterSpec;>(Ljava/lang/Class<TT;>;)TT; )
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected abstract java.security.spec.AlgorithmParameterSpec engineGetParameterSpec(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected abstract void engineInit(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void engineInit(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected abstract void engineInit(
+byte[]
+java.lang.String)
+
+protected abstract java.lang.String engineToString()
+
+________________CLASS________________
+
+
+public final class java.security.AllPermission extends java.security.Permission
+
+----------------FIELDS----------------
+
+private static final java.lang.String ALL_ACTIONS
+
+private static final java.lang.String ALL_PERMISSIONS
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getActions()
+
+public int hashCode()
+
+public boolean implies(
+java.security.Permission)
+
+public java.security.PermissionCollection newPermissionCollection()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/security/AllPermissionCollection; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Enumeration<TE;>; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =SingletonEnumeration )
+final class java.security.AllPermissionCollection$SingletonEnumeration extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =TE; )
+private java.lang.Object element
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TE;)V )
+public void <init>(
+java.lang.Object)
+
+public boolean hasMoreElements()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object nextElement()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/security/AllPermissionCollection$SingletonEnumeration; )
+final class java.security.AllPermissionCollection extends java.security.PermissionCollection
+
+----------------FIELDS----------------
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+private transient java.security.Permission all
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public void add(
+java.security.Permission)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/security/Permission;>; )
+public java.util.Enumeration elements()
+
+public boolean implies(
+java.security.Permission)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/security/Provider$Service; )
+public abstract class java.security.Provider extends java.util.Properties
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Lorg/apache/harmony/luni/util/TwoKeyHashMap<Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider$Service;>; )
+private transient org.apache.harmony.luni.util.TwoKeyHashMap aliasTable
+
+private transient java.util.Properties changedProperties
+
+private java.lang.String info
+
+private transient java.lang.String lastAlgorithm
+
+private transient java.lang.String lastServiceName
+
+private transient java.security.Provider$Service lastServicesByType
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/security/Provider$Service;>; )
+private transient java.util.Set lastServicesSet
+
+private transient java.lang.String lastType
+
+private java.lang.String name
+@dalvik.annotation.Signature (value =Lorg/apache/harmony/luni/util/TwoKeyHashMap<Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider$Service;>; )
+private transient org.apache.harmony.luni.util.TwoKeyHashMap propertyAliasTable
+@dalvik.annotation.Signature (value =Lorg/apache/harmony/luni/util/TwoKeyHashMap<Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider$Service;>; )
+private transient org.apache.harmony.luni.util.TwoKeyHashMap propertyServiceTable
+
+private transient int providerNumber
+
+private transient java.security.Provider$Service returnedService
+@dalvik.annotation.Signature (value =Lorg/apache/harmony/luni/util/TwoKeyHashMap<Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider$Service;>; )
+private transient org.apache.harmony.luni.util.TwoKeyHashMap serviceTable
+
+private double version
+
+private transient java.lang.String versionString
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.String
+double
+java.lang.String)
+
+private boolean checkAttribute(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private java.lang.String getPropertyIgnoreCase(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<**>;)V )
+private void myPutAll(
+java.util.Map)
+
+private void putProviderInfo()
+
+private void removeFromPropertyServiceTable(
+java.lang.Object)
+
+private void serviceInfoFromProperties(
+java.security.Provider$Service)
+
+private void serviceInfoToProperties(
+java.security.Provider$Service)
+
+private void servicesChanged()
+
+private void updatePropertyServiceTable()
+
+public void clear()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<Ljava/lang/Object;Ljava/lang/Object;>;>; )
+public java.util.Set entrySet()
+
+public java.lang.String getInfo()
+
+public java.lang.String getName()
+
+ int getProviderNumber()
+
+ java.security.Provider$Service getService(
+java.lang.String)
+
+public java.security.Provider$Service getService(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/security/Provider$Service;>; )
+public java.util.Set getServices()
+
+public double getVersion()
+
+ boolean implementsAlg(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/Object;>; )
+public java.util.Set keySet()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void load(
+java.io.InputStream)
+
+public java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<**>;)V )
+public void putAll(
+java.util.Map)
+
+protected void putService(
+java.security.Provider$Service)
+
+public java.lang.Object remove(
+java.lang.Object)
+
+protected void removeService(
+java.security.Provider$Service)
+
+ void setProviderNumber(
+int)
+
+public java.lang.String toString()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljava/lang/Object;>; )
+public java.util.Collection values()
+
+________________CLASS________________
+
+
+public abstract class java.security.AuthProvider extends java.security.Provider
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.String
+double
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljavax/security/auth/login/LoginException; )
+public abstract void login(
+javax.security.auth.Subject
+javax.security.auth.callback.CallbackHandler)
+@dalvik.annotation.Throws (value =Ljavax/security/auth/login/LoginException; )
+public abstract void logout()
+
+public abstract void setCallbackHandler(
+javax.security.auth.callback.CallbackHandler)
+
+________________CLASS________________
+
+
+final class java.security.BasicPermissionCollection extends java.security.PermissionCollection
+
+----------------FIELDS----------------
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+private transient boolean allEnabled
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/security/Permission;>; )
+private transient java.util.Map items
+@dalvik.annotation.Signature (value =Ljava/lang/Class<+Ljava/security/Permission;>; )
+private java.lang.Class permClass
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public void add(
+java.security.Permission)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/security/Permission;>; )
+public java.util.Enumeration elements()
+
+public boolean implies(
+java.security.Permission)
+
+________________CLASS________________
+
+
+public abstract interface class java.security.Certificate extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/KeyException;Ljava/io/IOException; )
+public abstract void decode(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/KeyException;Ljava/io/IOException; )
+public abstract void encode(
+java.io.OutputStream)
+
+public abstract java.lang.String getFormat()
+
+public abstract java.security.Principal getGuarantor()
+
+public abstract java.security.Principal getPrincipal()
+
+public abstract java.security.PublicKey getPublicKey()
+
+public abstract java.lang.String toString(
+boolean)
+
+________________CLASS________________
+
+
+public final class java.security.CodeSigner extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private transient int hash
+
+private java.security.cert.CertPath signerCertPath
+
+private java.security.Timestamp timestamp
+----------------METHODS----------------
+
+public void <init>(
+java.security.cert.CertPath
+java.security.Timestamp)
+
+public boolean equals(
+java.lang.Object)
+
+public java.security.cert.CertPath getSignerCertPath()
+
+public java.security.Timestamp getTimestamp()
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.security.CodeSource extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private transient java.security.cert.Certificate[] certs
+
+private transient java.security.cert.CertificateFactory factory
+
+private java.net.URL location
+
+private transient java.security.CodeSigner[] signers
+
+private transient java.net.SocketPermission sp
+----------------METHODS----------------
+
+public void <init>(
+java.net.URL
+java.security.CodeSigner[])
+
+public void <init>(
+java.net.URL
+java.security.cert.Certificate[])
+
+private java.security.cert.Certificate[] getCertificatesNoClone()
+@dalvik.annotation.Signature (value =(Ljava/util/List<+Ljava/security/cert/Certificate;>;)Ljava/security/cert/CertPath; )
+private java.security.cert.CertPath makeCertPath(
+java.util.List)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public final java.security.cert.Certificate[] getCertificates()
+
+public final java.security.CodeSigner[] getCodeSigners()
+
+public final java.net.URL getLocation()
+
+public int hashCode()
+
+public boolean implies(
+java.security.CodeSource)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.security.GeneralSecurityException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class java.security.DigestException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class java.security.DigestInputStream extends java.io.FilterInputStream
+
+----------------FIELDS----------------
+
+protected java.security.MessageDigest digest
+
+private boolean isOn
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream
+java.security.MessageDigest)
+
+public java.security.MessageDigest getMessageDigest()
+
+public void on(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+
+public void setMessageDigest(
+java.security.MessageDigest)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.security.DigestOutputStream extends java.io.FilterOutputStream
+
+----------------FIELDS----------------
+
+protected java.security.MessageDigest digest
+
+private boolean isOn
+----------------METHODS----------------
+
+public void <init>(
+java.io.OutputStream
+java.security.MessageDigest)
+
+public java.security.MessageDigest getMessageDigest()
+
+public void on(
+boolean)
+
+public void setMessageDigest(
+java.security.MessageDigest)
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public abstract interface class java.security.DomainCombiner extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.security.ProtectionDomain[] combine(
+java.security.ProtectionDomain[]
+java.security.ProtectionDomain[])
+
+________________CLASS________________
+
+
+public class java.security.GuardedObject extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final java.security.Guard guard
+
+private final java.lang.Object object
+----------------METHODS----------------
+
+public void <init>(
+java.lang.Object
+java.security.Guard)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+public java.lang.Object getObject()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.Principal extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean equals(
+java.lang.Object)
+
+public abstract java.lang.String getName()
+
+public abstract int hashCode()
+
+public abstract java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract class java.security.Identity extends java.lang.Object implements java.security.Principal, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/Vector<Ljava/security/Certificate;>; )
+private java.util.Vector certificates
+
+private java.lang.String info
+
+private java.lang.String name
+
+private java.security.PublicKey publicKey
+
+private java.security.IdentityScope scope
+----------------METHODS----------------
+
+protected void <init>()
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/KeyManagementException; )
+public void <init>(
+java.lang.String
+java.security.IdentityScope)
+
+private static boolean checkKeysEqual(
+java.security.PublicKey
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/security/KeyManagementException; )
+public void addCertificate(
+java.security.Certificate)
+
+public java.security.Certificate[] certificates()
+
+public final boolean equals(
+java.lang.Object)
+
+public java.lang.String getInfo()
+
+public final java.lang.String getName()
+
+public java.security.PublicKey getPublicKey()
+
+public final java.security.IdentityScope getScope()
+
+public int hashCode()
+
+protected boolean identityEquals(
+java.security.Identity)
+@dalvik.annotation.Throws (value =Ljava/security/KeyManagementException; )
+public void removeCertificate(
+java.security.Certificate)
+
+public void setInfo(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/KeyManagementException; )
+public void setPublicKey(
+java.security.PublicKey)
+
+public java.lang.String toString()
+
+public java.lang.String toString(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class java.security.IdentityScope$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+
+public abstract class java.security.IdentityScope extends java.security.Identity
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private static java.security.IdentityScope systemScope
+----------------METHODS----------------
+
+protected void <init>()
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/KeyManagementException; )
+public void <init>(
+java.lang.String
+java.security.IdentityScope)
+
+public static java.security.IdentityScope getSystemScope()
+
+protected static void setSystemScope(
+java.security.IdentityScope)
+@dalvik.annotation.Throws (value =Ljava/security/KeyManagementException; )
+public abstract void addIdentity(
+java.security.Identity)
+
+public abstract java.security.Identity getIdentity(
+java.lang.String)
+
+public java.security.Identity getIdentity(
+java.security.Principal)
+
+public abstract java.security.Identity getIdentity(
+java.security.PublicKey)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/security/Identity;>; )
+public abstract java.util.Enumeration identities()
+@dalvik.annotation.Throws (value =Ljava/security/KeyManagementException; )
+public abstract void removeIdentity(
+java.security.Identity)
+
+public abstract int size()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.security.InvalidAlgorithmParameterException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class java.security.KeyException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class java.security.InvalidKeyException extends java.security.KeyException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class java.security.InvalidParameterException extends java.lang.IllegalArgumentException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class java.security.Key extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+public static final long serialVersionUID
+----------------METHODS----------------
+
+public abstract java.lang.String getAlgorithm()
+
+public abstract byte[] getEncoded()
+
+public abstract java.lang.String getFormat()
+
+________________CLASS________________
+
+
+public class java.security.KeyFactory extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String SERVICE
+
+private static org.apache.harmony.security.fortress.Engine engine
+
+private java.lang.String algorithm
+
+private java.security.Provider provider
+
+private java.security.KeyFactorySpi spiImpl
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.security.KeyFactorySpi
+java.security.Provider
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.KeyFactory getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static java.security.KeyFactory getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.KeyFactory getInstance(
+java.lang.String
+java.security.Provider)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+public final java.security.PrivateKey generatePrivate(
+java.security.spec.KeySpec)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+public final java.security.PublicKey generatePublic(
+java.security.spec.KeySpec)
+
+public final java.lang.String getAlgorithm()
+@dalvik.annotation.Signature (value =<T::Ljava/security/spec/KeySpec;>(Ljava/security/Key;Ljava/lang/Class<TT;>;)TT; )
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+public final java.security.spec.KeySpec getKeySpec(
+java.security.Key
+java.lang.Class)
+
+public final java.security.Provider getProvider()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public final java.security.Key translateKey(
+java.security.Key)
+
+________________CLASS________________
+
+
+public abstract class java.security.KeyFactorySpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected abstract java.security.PrivateKey engineGeneratePrivate(
+java.security.spec.KeySpec)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected abstract java.security.PublicKey engineGeneratePublic(
+java.security.spec.KeySpec)
+@dalvik.annotation.Signature (value =<T::Ljava/security/spec/KeySpec;>(Ljava/security/Key;Ljava/lang/Class<TT;>;)TT; )
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected abstract java.security.spec.KeySpec engineGetKeySpec(
+java.security.Key
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected abstract java.security.Key engineTranslateKey(
+java.security.Key)
+
+________________CLASS________________
+
+
+public class java.security.KeyManagementException extends java.security.KeyException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public final class java.security.KeyPair extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final java.security.PrivateKey privateKey
+
+private final java.security.PublicKey publicKey
+----------------METHODS----------------
+
+public void <init>(
+java.security.PublicKey
+java.security.PrivateKey)
+
+public java.security.PrivateKey getPrivate()
+
+public java.security.PublicKey getPublic()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/security/KeyPairGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class java.security.KeyPairGenerator$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract class java.security.KeyPairGeneratorSpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public abstract java.security.KeyPair generateKeyPair()
+
+public abstract void initialize(
+int
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public void initialize(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/security/KeyPairGenerator$1;Ljava/security/KeyPairGenerator$KeyPairGeneratorImpl; )
+public abstract class java.security.KeyPairGenerator extends java.security.KeyPairGeneratorSpi
+
+----------------FIELDS----------------
+
+private static final java.lang.String SERVICE
+
+private static org.apache.harmony.security.fortress.Engine engine
+
+private static java.security.SecureRandom random
+
+private java.lang.String algorithm
+
+private java.security.Provider provider
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.lang.String)
+
+static java.security.Provider access$102(
+java.security.KeyPairGenerator
+java.security.Provider)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.KeyPairGenerator getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static java.security.KeyPairGenerator getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.KeyPairGenerator getInstance(
+java.lang.String
+java.security.Provider)
+
+public final java.security.KeyPair genKeyPair()
+
+public java.security.KeyPair generateKeyPair()
+
+public java.lang.String getAlgorithm()
+
+public final java.security.Provider getProvider()
+
+public void initialize(
+int)
+
+public void initialize(
+int
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public void initialize(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public void initialize(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/security/KeyPairGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =KeyPairGeneratorImpl )
+ class java.security.KeyPairGenerator$KeyPairGeneratorImpl extends java.security.KeyPairGenerator
+
+----------------FIELDS----------------
+
+private java.security.KeyPairGeneratorSpi spiImpl
+----------------METHODS----------------
+
+private void <init>(
+java.security.KeyPairGeneratorSpi
+java.security.Provider
+java.lang.String)
+
+ void <init>(
+java.security.KeyPairGeneratorSpi
+java.security.Provider
+java.lang.String
+java.security.KeyPairGenerator$1)
+
+public java.security.KeyPair generateKeyPair()
+
+public void initialize(
+int
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public void initialize(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Ljava/security/KeyRep; )
+ class java.security.KeyRep$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int[] $SwitchMap$java$security$KeyRep$Type
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Type )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Ljava/security/KeyRep$Type;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/security/KeyRep; )
+public final class java.security.KeyRep$Type extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final java.security.KeyRep$Type[] $VALUES
+
+public static final java.security.KeyRep$Type PRIVATE
+
+public static final java.security.KeyRep$Type PUBLIC
+
+public static final java.security.KeyRep$Type SECRET
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static java.security.KeyRep$Type valueOf(
+java.lang.String)
+
+public static java.security.KeyRep$Type[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/security/KeyRep$1;Ljava/security/KeyRep$Type; )
+public class java.security.KeyRep extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final java.lang.String algorithm
+
+private byte[] encoded
+
+private final java.lang.String format
+
+private final java.security.KeyRep$Type type
+----------------METHODS----------------
+
+public void <init>(
+java.security.KeyRep$Type
+java.lang.String
+java.lang.String
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/ObjectStreamException; )
+protected java.lang.Object readResolve()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class java.security.KeyStore$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Ljava/lang/Object;>; )
+ class java.security.KeyStore$Builder$BuilderImpl$1 extends java.lang.Object implements java.security.PrivilegedExceptionAction
+
+----------------FIELDS----------------
+
+final java.security.KeyStore$Builder$BuilderImpl this$0
+
+final java.security.KeyStore val$ks
+
+final char[] val$passwd
+----------------METHODS----------------
+
+ void <init>(
+java.security.KeyStore$Builder$BuilderImpl
+java.security.KeyStore
+char[])
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/security/KeyStore$Builder$TmpLSParameter;Ljava/security/KeyStore$Builder$BuilderImpl; )
+@dalvik.annotation.EnclosingClass (value =Ljava/security/KeyStore; )
+@dalvik.annotation.InnerClass (accessFlags =1033 name =Builder )
+public abstract class java.security.KeyStore$Builder extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+
+public static java.security.KeyStore$Builder newInstance(
+java.lang.String
+java.security.Provider
+java.io.File
+java.security.KeyStore$ProtectionParameter)
+
+public static java.security.KeyStore$Builder newInstance(
+java.lang.String
+java.security.Provider
+java.security.KeyStore$ProtectionParameter)
+
+public static java.security.KeyStore$Builder newInstance(
+java.security.KeyStore
+java.security.KeyStore$ProtectionParameter)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public abstract java.security.KeyStore getKeyStore()
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public abstract java.security.KeyStore$ProtectionParameter getProtectionParameter(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/security/KeyStore$Builder; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =BuilderImpl )
+ class java.security.KeyStore$Builder$BuilderImpl extends java.security.KeyStore$Builder
+
+----------------FIELDS----------------
+
+private final java.security.AccessControlContext accControlContext
+
+private final java.io.File fileForLoad
+
+private boolean isGetKeyStore
+
+private java.security.KeyStore keyStore
+
+private java.security.KeyStoreException lastException
+
+private java.security.KeyStore$ProtectionParameter protParameter
+
+private final java.security.Provider providerForKeyStore
+
+private final java.lang.String typeForKeyStore
+----------------METHODS----------------
+
+ void <init>(
+java.security.KeyStore
+java.security.KeyStore$ProtectionParameter
+java.io.File
+java.lang.String
+java.security.Provider
+java.security.AccessControlContext)
+
+static java.io.File access$200(
+java.security.KeyStore$Builder$BuilderImpl)
+
+static java.security.KeyStore$ProtectionParameter access$300(
+java.security.KeyStore$Builder$BuilderImpl)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public java.security.KeyStore getKeyStore()
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public java.security.KeyStore$ProtectionParameter getProtectionParameter(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =LoadStoreParameter )
+@dalvik.annotation.EnclosingClass (value =Ljava/security/KeyStore; )
+public abstract interface class java.security.KeyStore$LoadStoreParameter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.security.KeyStore$ProtectionParameter getProtectionParameter()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =TmpLSParameter )
+@dalvik.annotation.EnclosingClass (value =Ljava/security/KeyStore$Builder; )
+ class java.security.KeyStore$Builder$TmpLSParameter extends java.lang.Object implements java.security.KeyStore$LoadStoreParameter
+
+----------------FIELDS----------------
+
+private final java.security.KeyStore$ProtectionParameter protPar
+----------------METHODS----------------
+
+public void <init>(
+java.security.KeyStore$ProtectionParameter)
+
+public java.security.KeyStore$ProtectionParameter getProtectionParameter()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =ProtectionParameter )
+@dalvik.annotation.EnclosingClass (value =Ljava/security/KeyStore; )
+public abstract interface class java.security.KeyStore$ProtectionParameter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =CallbackHandlerProtection )
+@dalvik.annotation.EnclosingClass (value =Ljava/security/KeyStore; )
+public class java.security.KeyStore$CallbackHandlerProtection extends java.lang.Object implements java.security.KeyStore$ProtectionParameter
+
+----------------FIELDS----------------
+
+private final javax.security.auth.callback.CallbackHandler callbackHandler
+----------------METHODS----------------
+
+public void <init>(
+javax.security.auth.callback.CallbackHandler)
+
+public javax.security.auth.callback.CallbackHandler getCallbackHandler()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Entry )
+@dalvik.annotation.EnclosingClass (value =Ljava/security/KeyStore; )
+public abstract interface class java.security.KeyStore$Entry extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class javax.security.auth.Destroyable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljavax/security/auth/DestroyFailedException; )
+public abstract void destroy()
+
+public abstract boolean isDestroyed()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PasswordProtection )
+@dalvik.annotation.EnclosingClass (value =Ljava/security/KeyStore; )
+public class java.security.KeyStore$PasswordProtection extends java.lang.Object implements java.security.KeyStore$ProtectionParameter, javax.security.auth.Destroyable
+
+----------------FIELDS----------------
+
+private boolean isDestroyed
+
+private char[] password
+----------------METHODS----------------
+
+public void <init>(
+char[])
+@dalvik.annotation.Throws (value =Ljavax/security/auth/DestroyFailedException; )
+public void destroy()
+
+public char[] getPassword()
+
+public boolean isDestroyed()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/security/KeyStore; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =PrivateKeyEntry )
+public final class java.security.KeyStore$PrivateKeyEntry extends java.lang.Object implements java.security.KeyStore$Entry
+
+----------------FIELDS----------------
+
+private java.security.cert.Certificate[] chain
+
+private java.security.PrivateKey privateKey
+----------------METHODS----------------
+
+public void <init>(
+java.security.PrivateKey
+java.security.cert.Certificate[])
+
+public java.security.cert.Certificate getCertificate()
+
+public java.security.cert.Certificate[] getCertificateChain()
+
+public java.security.PrivateKey getPrivateKey()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/security/KeyStore; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =SecretKeyEntry )
+public final class java.security.KeyStore$SecretKeyEntry extends java.lang.Object implements java.security.KeyStore$Entry
+
+----------------FIELDS----------------
+
+private final javax.crypto.SecretKey secretKey
+----------------METHODS----------------
+
+public void <init>(
+javax.crypto.SecretKey)
+
+public javax.crypto.SecretKey getSecretKey()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =25 name =TrustedCertificateEntry )
+@dalvik.annotation.EnclosingClass (value =Ljava/security/KeyStore; )
+public final class java.security.KeyStore$TrustedCertificateEntry extends java.lang.Object implements java.security.KeyStore$Entry
+
+----------------FIELDS----------------
+
+private final java.security.cert.Certificate trustCertificate
+----------------METHODS----------------
+
+public void <init>(
+java.security.cert.Certificate)
+
+public java.security.cert.Certificate getTrustedCertificate()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/security/KeyStore$TrustedCertificateEntry;Ljava/security/KeyStore$SecretKeyEntry;Ljava/security/KeyStore$PrivateKeyEntry;Ljava/security/KeyStore$ProtectionParameter;Ljava/security/KeyStore$PasswordProtection;Ljava/security/KeyStore$LoadStoreParameter;Ljava/security/KeyStore$Entry;Ljava/security/KeyStore$CallbackHandlerProtection;Ljava/security/KeyStore$Builder; )
+public class java.security.KeyStore extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String DEFAULT_KEYSTORE_TYPE
+
+private static java.lang.String NOTINITKEYSTORE
+
+private static final java.lang.String PROPERTYNAME
+
+private static final java.lang.String SERVICE
+
+private static org.apache.harmony.security.fortress.Engine engine
+
+private final java.security.KeyStoreSpi implSpi
+
+private boolean isInit
+
+private final java.security.Provider provider
+
+private final java.lang.String type
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.security.KeyStoreSpi
+java.security.Provider
+java.lang.String)
+
+static boolean access$000(
+java.security.KeyStore)
+
+static java.lang.String access$100()
+
+public static final java.lang.String getDefaultType()
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public static java.security.KeyStore getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException;Ljava/security/NoSuchProviderException; )
+public static java.security.KeyStore getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public static java.security.KeyStore getInstance(
+java.lang.String
+java.security.Provider)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+private static void throwNotInitialized()
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/lang/String;>; )
+public final java.util.Enumeration aliases()
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public final boolean containsAlias(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public final void deleteEntry(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/Class<+Ljava/security/KeyStore$Entry;>;)Z )
+public final boolean entryInstanceOf(
+java.lang.String
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public final java.security.cert.Certificate getCertificate(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public final java.lang.String getCertificateAlias(
+java.security.cert.Certificate)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public final java.security.cert.Certificate[] getCertificateChain(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public final java.util.Date getCreationDate(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/UnrecoverableEntryException;Ljava/security/KeyStoreException; )
+public final java.security.KeyStore$Entry getEntry(
+java.lang.String
+java.security.KeyStore$ProtectionParameter)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException;Ljava/security/NoSuchAlgorithmException;Ljava/security/UnrecoverableKeyException; )
+public final java.security.Key getKey(
+java.lang.String
+char[])
+
+public final java.security.Provider getProvider()
+
+public final java.lang.String getType()
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public final boolean isCertificateEntry(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public final boolean isKeyEntry(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/security/NoSuchAlgorithmException;Ljava/security/cert/CertificateException; )
+public final void load(
+java.io.InputStream
+char[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/security/NoSuchAlgorithmException;Ljava/security/cert/CertificateException; )
+public final void load(
+java.security.KeyStore$LoadStoreParameter)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public final void setCertificateEntry(
+java.lang.String
+java.security.cert.Certificate)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public final void setEntry(
+java.lang.String
+java.security.KeyStore$Entry
+java.security.KeyStore$ProtectionParameter)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public final void setKeyEntry(
+java.lang.String
+java.security.Key
+char[]
+java.security.cert.Certificate[])
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public final void setKeyEntry(
+java.lang.String
+byte[]
+java.security.cert.Certificate[])
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public final int size()
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException;Ljava/io/IOException;Ljava/security/NoSuchAlgorithmException;Ljava/security/cert/CertificateException; )
+public final void store(
+java.io.OutputStream
+char[])
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException;Ljava/io/IOException;Ljava/security/NoSuchAlgorithmException;Ljava/security/cert/CertificateException; )
+public final void store(
+java.security.KeyStore$LoadStoreParameter)
+
+________________CLASS________________
+
+
+public class java.security.KeyStoreException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public abstract class java.security.KeyStoreSpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/UnrecoverableEntryException; )
+static char[] getPasswordFromCallBack(
+java.security.KeyStore$ProtectionParameter)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/lang/String;>; )
+public abstract java.util.Enumeration engineAliases()
+
+public abstract boolean engineContainsAlias(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public abstract void engineDeleteEntry(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/Class<+Ljava/security/KeyStore$Entry;>;)Z )
+public boolean engineEntryInstanceOf(
+java.lang.String
+java.lang.Class)
+
+public abstract java.security.cert.Certificate engineGetCertificate(
+java.lang.String)
+
+public abstract java.lang.String engineGetCertificateAlias(
+java.security.cert.Certificate)
+
+public abstract java.security.cert.Certificate[] engineGetCertificateChain(
+java.lang.String)
+
+public abstract java.util.Date engineGetCreationDate(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException;Ljava/security/NoSuchAlgorithmException;Ljava/security/UnrecoverableEntryException; )
+public java.security.KeyStore$Entry engineGetEntry(
+java.lang.String
+java.security.KeyStore$ProtectionParameter)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/UnrecoverableKeyException; )
+public abstract java.security.Key engineGetKey(
+java.lang.String
+char[])
+
+public abstract boolean engineIsCertificateEntry(
+java.lang.String)
+
+public abstract boolean engineIsKeyEntry(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/security/NoSuchAlgorithmException;Ljava/security/cert/CertificateException; )
+public abstract void engineLoad(
+java.io.InputStream
+char[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/security/NoSuchAlgorithmException;Ljava/security/cert/CertificateException; )
+public void engineLoad(
+java.security.KeyStore$LoadStoreParameter)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public abstract void engineSetCertificateEntry(
+java.lang.String
+java.security.cert.Certificate)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public void engineSetEntry(
+java.lang.String
+java.security.KeyStore$Entry
+java.security.KeyStore$ProtectionParameter)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public abstract void engineSetKeyEntry(
+java.lang.String
+java.security.Key
+char[]
+java.security.cert.Certificate[])
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public abstract void engineSetKeyEntry(
+java.lang.String
+byte[]
+java.security.cert.Certificate[])
+
+public abstract int engineSize()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/security/NoSuchAlgorithmException;Ljava/security/cert/CertificateException; )
+public abstract void engineStore(
+java.io.OutputStream
+char[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/security/NoSuchAlgorithmException;Ljava/security/cert/CertificateException; )
+public void engineStore(
+java.security.KeyStore$LoadStoreParameter)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/security/MessageDigest; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class java.security.MessageDigest$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract class java.security.MessageDigestSpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+@dalvik.annotation.Throws (value =Ljava/security/DigestException; )
+protected int engineDigest(
+byte[]
+int
+int)
+
+protected abstract byte[] engineDigest()
+
+protected int engineGetDigestLength()
+
+protected abstract void engineReset()
+
+protected abstract void engineUpdate(
+byte)
+
+protected void engineUpdate(
+java.nio.ByteBuffer)
+
+protected abstract void engineUpdate(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/security/MessageDigest$1;Ljava/security/MessageDigest$MessageDigestImpl; )
+public abstract class java.security.MessageDigest extends java.security.MessageDigestSpi
+
+----------------FIELDS----------------
+
+private static final java.lang.String SERVICE
+
+private static org.apache.harmony.security.fortress.Engine engine
+
+private java.lang.String algorithm
+
+private java.security.Provider provider
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.lang.String)
+
+static java.security.Provider access$102(
+java.security.MessageDigest
+java.security.Provider)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.MessageDigest getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static java.security.MessageDigest getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.MessageDigest getInstance(
+java.lang.String
+java.security.Provider)
+
+public static boolean isEqual(
+byte[]
+byte[])
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+@dalvik.annotation.Throws (value =Ljava/security/DigestException; )
+public int digest(
+byte[]
+int
+int)
+
+public byte[] digest()
+
+public byte[] digest(
+byte[])
+
+public final java.lang.String getAlgorithm()
+
+public final int getDigestLength()
+
+public final java.security.Provider getProvider()
+
+public void reset()
+
+public java.lang.String toString()
+
+public void update(
+byte)
+
+public final void update(
+java.nio.ByteBuffer)
+
+public void update(
+byte[])
+
+public void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =MessageDigestImpl )
+@dalvik.annotation.EnclosingClass (value =Ljava/security/MessageDigest; )
+ class java.security.MessageDigest$MessageDigestImpl extends java.security.MessageDigest
+
+----------------FIELDS----------------
+
+private java.security.MessageDigestSpi spiImpl
+----------------METHODS----------------
+
+private void <init>(
+java.security.MessageDigestSpi
+java.security.Provider
+java.lang.String)
+
+ void <init>(
+java.security.MessageDigestSpi
+java.security.Provider
+java.lang.String
+java.security.MessageDigest$1)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+protected byte[] engineDigest()
+
+protected int engineGetDigestLength()
+
+protected void engineReset()
+
+protected void engineUpdate(
+byte)
+
+protected void engineUpdate(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.security.NoSuchAlgorithmException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class java.security.NoSuchProviderException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =MetaEnumeration )
+@dalvik.annotation.EnclosingClass (value =Ljava/security/Permissions; )
+final class java.security.Permissions$MetaEnumeration extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+
+private java.util.Enumeration current
+
+private java.util.Iterator pcIter
+----------------METHODS----------------
+
+public void <init>(
+java.util.Iterator)
+
+private java.util.Enumeration getNextEnumeration()
+
+public boolean hasMoreElements()
+
+public java.lang.Object nextElement()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/security/Permissions$MetaEnumeration; )
+public final class java.security.Permissions extends java.security.PermissionCollection implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+private boolean allEnabled
+
+private transient java.util.Map klasses
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public void add(
+java.security.Permission)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/security/Permission;>; )
+public java.util.Enumeration elements()
+
+public boolean implies(
+java.security.Permission)
+
+________________CLASS________________
+
+
+final class java.security.PermissionsHash extends java.security.PermissionCollection
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final java.util.Hashtable perms
+----------------METHODS----------------
+
+ void <init>()
+
+public void add(
+java.security.Permission)
+
+public java.util.Enumeration elements()
+
+public boolean implies(
+java.security.Permission)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/security/Policy;>; )
+final class java.security.Policy$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.lang.String val$defaultClass
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+public volatile java.lang.Object run()
+
+public java.security.Policy run()
+
+________________CLASS________________
+
+
+public abstract class java.security.Policy extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.security.SecurityPermission GET_POLICY
+
+private static final java.lang.String POLICY_PROVIDER
+
+private static final java.security.SecurityPermission SET_POLICY
+
+private static java.security.Policy activePolicy
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static java.security.Policy getAccessiblePolicy()
+
+private static java.security.Policy getDefaultProvider()
+
+public static java.security.Policy getPolicy()
+
+static boolean isSet()
+
+public static void setPolicy(
+java.security.Policy)
+
+public abstract java.security.PermissionCollection getPermissions(
+java.security.CodeSource)
+
+public java.security.PermissionCollection getPermissions(
+java.security.ProtectionDomain)
+
+public boolean implies(
+java.security.ProtectionDomain
+java.security.Permission)
+
+public abstract void refresh()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.PrivateKey extends java.lang.Object implements java.security.Key
+
+----------------FIELDS----------------
+
+public static final long serialVersionUID
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class java.security.PrivilegedActionException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.Exception exception
+----------------METHODS----------------
+
+public void <init>(
+java.lang.Exception)
+
+public java.lang.Throwable getCause()
+
+public java.lang.Exception getException()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.security.ProtectionDomain extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.ClassLoader classLoader
+
+private java.security.CodeSource codeSource
+
+private boolean dynamicPerms
+
+private java.security.PermissionCollection permissions
+
+private java.security.Principal[] principals
+----------------METHODS----------------
+
+public void <init>(
+java.security.CodeSource
+java.security.PermissionCollection)
+
+public void <init>(
+java.security.CodeSource
+java.security.PermissionCollection
+java.lang.ClassLoader
+java.security.Principal[])
+
+public final java.lang.ClassLoader getClassLoader()
+
+public final java.security.CodeSource getCodeSource()
+
+public final java.security.PermissionCollection getPermissions()
+
+public final java.security.Principal[] getPrincipals()
+
+public boolean implies(
+java.security.Permission)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/security/NoSuchAlgorithmException;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.security.Provider$Service$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.security.Provider$Service this$0
+----------------METHODS----------------
+
+ void <init>(
+java.security.Provider$Service)
+
+public volatile java.lang.Object run()
+
+public java.security.NoSuchAlgorithmException run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/security/Provider; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Service )
+public class java.security.Provider$Service extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.String algorithm
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/lang/String;>; )
+private java.util.List aliases
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+private java.util.Map attributes
+
+private java.lang.String className
+@dalvik.annotation.Signature (value =Ljava/lang/Class<*>; )
+private java.lang.Class implementation
+
+private java.lang.String lastClassName
+
+private java.security.Provider provider
+
+private java.lang.String type
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/security/Provider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)V )
+public void <init>(
+java.security.Provider
+java.lang.String
+java.lang.String
+java.lang.String
+java.util.List
+java.util.Map)
+
+static java.lang.String access$000(
+java.security.Provider$Service)
+
+static java.lang.String access$100(
+java.security.Provider$Service)
+
+static java.util.List access$200(
+java.security.Provider$Service)
+
+static java.lang.String access$300(
+java.security.Provider$Service)
+
+static java.lang.String access$302(
+java.security.Provider$Service
+java.lang.String)
+
+static java.util.Map access$400(
+java.security.Provider$Service)
+
+static java.security.Provider access$500(
+java.security.Provider$Service)
+
+static java.lang.Class access$602(
+java.security.Provider$Service
+java.lang.Class)
+
+static java.lang.String access$702(
+java.security.Provider$Service
+java.lang.String)
+
+ void addAlias(
+java.lang.String)
+
+public final java.lang.String getAlgorithm()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/lang/String;>; )
+ java.util.Iterator getAliases()
+
+public final java.lang.String getAttribute(
+java.lang.String)
+
+public final java.lang.String getClassName()
+
+public final java.security.Provider getProvider()
+
+public final java.lang.String getType()
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public java.lang.Object newInstance(
+java.lang.Object)
+
+ void putAttribute(
+java.lang.String
+java.lang.String)
+
+public boolean supportsParameter(
+java.lang.Object)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.security.ProviderException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public abstract interface class java.security.PublicKey extends java.lang.Object implements java.security.Key
+
+----------------FIELDS----------------
+
+public static final long serialVersionUID
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class java.util.Random extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+static final long multiplier
+
+private static final long serialVersionUID
+
+ boolean haveNextNextGaussian
+
+ double nextNextGaussian
+
+ long seed
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+long)
+
+protected int next(
+int)
+
+public boolean nextBoolean()
+
+public void nextBytes(
+byte[])
+
+public double nextDouble()
+
+public float nextFloat()
+
+public double nextGaussian()
+
+public int nextInt()
+
+public int nextInt(
+int)
+
+public long nextLong()
+
+public void setSeed(
+long)
+
+________________CLASS________________
+
+
+public class java.security.SecureRandom extends java.util.Random
+
+----------------FIELDS----------------
+
+private static final transient java.lang.String SERVICE
+
+private static transient org.apache.harmony.security.fortress.Engine engine
+
+private static transient java.security.SecureRandom internalSecureRandom
+
+private static final long serialVersionUID
+
+private java.lang.String algorithm
+
+private long counter
+
+private java.security.Provider provider
+
+private byte[] randomBytes
+
+private int randomBytesUsed
+
+private java.security.SecureRandomSpi secureRandomSpi
+
+private byte[] state
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+protected void <init>(
+java.security.SecureRandomSpi
+java.security.Provider)
+
+private void <init>(
+java.security.SecureRandomSpi
+java.security.Provider
+java.lang.String)
+
+public void <init>(
+byte[])
+
+private java.security.Provider$Service findService()
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.SecureRandom getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static java.security.SecureRandom getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.SecureRandom getInstance(
+java.lang.String
+java.security.Provider)
+
+public static byte[] getSeed(
+int)
+
+public byte[] generateSeed(
+int)
+
+public java.lang.String getAlgorithm()
+
+public final java.security.Provider getProvider()
+
+protected final int next(
+int)
+
+public void nextBytes(
+byte[])
+
+public void setSeed(
+long)
+
+public void setSeed(
+byte[])
+
+________________CLASS________________
+
+
+public abstract class java.security.SecureRandomSpi extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+protected abstract byte[] engineGenerateSeed(
+int)
+
+protected abstract void engineNextBytes(
+byte[])
+
+protected abstract void engineSetSeed(
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Void;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/security/Security; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class java.security.Security$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object run()
+
+public java.lang.Void run()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.harmony.security.fortress.SecurityAccess extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/security/Provider$Service;)Ljava/util/Iterator<Ljava/lang/String;>; )
+public abstract java.util.Iterator getAliases(
+java.security.Provider$Service)
+
+public abstract java.security.Provider$Service getService(
+java.security.Provider
+java.lang.String)
+
+public abstract void renumProviders()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/security/Security; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =SecurityDoor )
+ class java.security.Security$SecurityDoor extends java.lang.Object implements org.apache.harmony.security.fortress.SecurityAccess
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+java.security.Security$1)
+@dalvik.annotation.Signature (value =(Ljava/security/Provider$Service;)Ljava/util/Iterator<Ljava/lang/String;>; )
+public java.util.Iterator getAliases(
+java.security.Provider$Service)
+
+public java.security.Provider$Service getService(
+java.security.Provider
+java.lang.String)
+
+public void renumProviders()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/security/Security$SecurityDoor; )
+public final class java.security.Security extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.util.Properties secprops
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+static java.util.Properties access$000()
+
+static void access$100()
+
+static void access$300()
+
+public static int addProvider(
+java.security.Provider)
+
+public static java.lang.String getAlgorithmProperty(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/Set<Ljava/lang/String;>; )
+public static java.util.Set getAlgorithms(
+java.lang.String)
+
+public static java.lang.String getProperty(
+java.lang.String)
+
+public static java.security.Provider getProvider(
+java.lang.String)
+
+public static java.security.Provider[] getProviders()
+
+public static java.security.Provider[] getProviders(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)[Ljava/security/Provider; )
+public static java.security.Provider[] getProviders(
+java.util.Map)
+
+public static int insertProviderAt(
+java.security.Provider
+int)
+
+private static void registerDefaultProviders()
+
+public static void removeProvider(
+java.lang.String)
+
+private static void renumProviders()
+
+public static void setProperty(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class java.security.SecurityPermission extends java.security.BasicPermission
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class java.security.SignatureSpi extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected java.security.SecureRandom appRandom
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidParameterException; )
+protected abstract java.lang.Object engineGetParameter(
+java.lang.String)
+
+protected java.security.AlgorithmParameters engineGetParameters()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected abstract void engineInitSign(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInitSign(
+java.security.PrivateKey
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected abstract void engineInitVerify(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidParameterException; )
+protected abstract void engineSetParameter(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineSetParameter(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected int engineSign(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected abstract byte[] engineSign()
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected abstract void engineUpdate(
+byte)
+
+protected void engineUpdate(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected abstract void engineUpdate(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected abstract boolean engineVerify(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected boolean engineVerify(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/security/Signature$SignatureImpl; )
+public abstract class java.security.Signature extends java.security.SignatureSpi
+
+----------------FIELDS----------------
+
+private static final java.lang.String SERVICE
+
+protected static final int SIGN
+
+protected static final int UNINITIALIZED
+
+protected static final int VERIFY
+
+private static org.apache.harmony.security.fortress.Engine engine
+
+private java.lang.String algorithm
+
+private java.security.Provider provider
+
+protected int state
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.lang.String)
+
+static java.security.Provider access$002(
+java.security.Signature
+java.security.Provider)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.Signature getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static java.security.Signature getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.Signature getInstance(
+java.lang.String
+java.security.Provider)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+private static java.security.Signature getSignatureInstance(
+java.lang.String
+java.security.Provider)
+
+private java.lang.String stateToString(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public final java.lang.String getAlgorithm()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidParameterException; )
+public final java.lang.Object getParameter(
+java.lang.String)
+
+public final java.security.AlgorithmParameters getParameters()
+
+public final java.security.Provider getProvider()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public final void initSign(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public final void initSign(
+java.security.PrivateKey
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public final void initVerify(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public final void initVerify(
+java.security.cert.Certificate)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidParameterException; )
+public final void setParameter(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public final void setParameter(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+public final int sign(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+public final byte[] sign()
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+public final void update(
+byte)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+public final void update(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+public final void update(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+public final void update(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+public final boolean verify(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+public final boolean verify(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/security/Signature; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =SignatureImpl )
+ class java.security.Signature$SignatureImpl extends java.security.Signature
+
+----------------FIELDS----------------
+
+private java.security.SignatureSpi spiImpl
+----------------METHODS----------------
+
+public void <init>(
+java.security.SignatureSpi
+java.security.Provider
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidParameterException; )
+protected java.lang.Object engineGetParameter(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInitSign(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInitVerify(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidParameterException; )
+protected void engineSetParameter(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected byte[] engineSign()
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected void engineUpdate(
+byte)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected void engineUpdate(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected boolean engineVerify(
+byte[])
+
+________________CLASS________________
+
+
+public class java.security.SignatureException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public final class java.security.SignedObject extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private byte[] content
+
+private byte[] signature
+
+private java.lang.String thealgorithm
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/security/InvalidKeyException;Ljava/security/SignatureException; )
+public void <init>(
+java.io.Serializable
+java.security.PrivateKey
+java.security.Signature)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+public java.lang.String getAlgorithm()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+public java.lang.Object getObject()
+
+public byte[] getSignature()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/SignatureException; )
+public boolean verify(
+java.security.PublicKey
+java.security.Signature)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Ljava/lang/Void;>; )
+ class java.security.Signer$1 extends java.lang.Object implements java.security.PrivilegedExceptionAction
+
+----------------FIELDS----------------
+
+final java.security.Signer this$0
+
+final java.security.PublicKey val$pk
+----------------METHODS----------------
+
+ void <init>(
+java.security.Signer
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public volatile java.lang.Object run()
+@dalvik.annotation.Throws (value =Ljava/security/KeyManagementException; )
+public java.lang.Void run()
+
+________________CLASS________________
+
+
+public abstract class java.security.Signer extends java.security.Identity
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.security.PrivateKey privateKey
+----------------METHODS----------------
+
+protected void <init>()
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/KeyManagementException; )
+public void <init>(
+java.lang.String
+java.security.IdentityScope)
+
+public java.security.PrivateKey getPrivateKey()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidParameterException;Ljava/security/KeyException; )
+public final void setKeyPair(
+java.security.KeyPair)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public final class java.security.Timestamp extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private transient int hash
+
+private java.security.cert.CertPath signerCertPath
+
+private java.util.Date timestamp
+----------------METHODS----------------
+
+public void <init>(
+java.util.Date
+java.security.cert.CertPath)
+
+public boolean equals(
+java.lang.Object)
+
+public java.security.cert.CertPath getSignerCertPath()
+
+public java.util.Date getTimestamp()
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.security.UnrecoverableEntryException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.security.UnrecoverableKeyException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class java.security.UnresolvedPermission extends java.security.Permission implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+private transient int hash
+
+private transient java.lang.String targetActions
+
+private transient java.security.cert.Certificate[] targetCerts
+
+private transient java.lang.String targetName
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+java.security.cert.Certificate[])
+
+private final void checkType(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getActions()
+
+public java.lang.String getUnresolvedActions()
+
+public java.security.cert.Certificate[] getUnresolvedCerts()
+
+public java.lang.String getUnresolvedName()
+
+public java.lang.String getUnresolvedType()
+
+public int hashCode()
+
+public boolean implies(
+java.security.Permission)
+
+public java.security.PermissionCollection newPermissionCollection()
+
+ java.security.Permission resolve(
+java.lang.Class)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+final class java.security.UnresolvedPermissionCollection extends java.security.PermissionCollection
+
+----------------FIELDS----------------
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+private transient java.util.Map klasses
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public void add(
+java.security.Permission)
+
+public java.util.Enumeration elements()
+
+ boolean hasUnresolved(
+java.security.Permission)
+
+public boolean implies(
+java.security.Permission)
+
+ java.security.PermissionCollection resolveCollection(
+java.security.Permission
+java.security.PermissionCollection)
+
+________________CLASS________________
+
+
+public abstract interface class java.security.acl.Owner extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/acl/NotOwnerException; )
+public abstract boolean addOwner(
+java.security.Principal
+java.security.Principal)
+@dalvik.annotation.Throws (value =Ljava/security/acl/NotOwnerException;Ljava/security/acl/LastOwnerException; )
+public abstract boolean deleteOwner(
+java.security.Principal
+java.security.Principal)
+
+public abstract boolean isOwner(
+java.security.Principal)
+
+________________CLASS________________
+
+
+public abstract interface class java.security.acl.Acl extends java.lang.Object implements java.security.acl.Owner
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/acl/NotOwnerException; )
+public abstract boolean addEntry(
+java.security.Principal
+java.security.acl.AclEntry)
+
+public abstract boolean checkPermission(
+java.security.Principal
+java.security.acl.Permission)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/security/acl/AclEntry;>; )
+public abstract java.util.Enumeration entries()
+
+public abstract java.lang.String getName()
+@dalvik.annotation.Signature (value =(Ljava/security/Principal;)Ljava/util/Enumeration<Ljava/security/acl/Permission;>; )
+public abstract java.util.Enumeration getPermissions(
+java.security.Principal)
+@dalvik.annotation.Throws (value =Ljava/security/acl/NotOwnerException; )
+public abstract boolean removeEntry(
+java.security.Principal
+java.security.acl.AclEntry)
+@dalvik.annotation.Throws (value =Ljava/security/acl/NotOwnerException; )
+public abstract void setName(
+java.security.Principal
+java.lang.String)
+
+public abstract java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.acl.AclEntry extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean addPermission(
+java.security.acl.Permission)
+
+public abstract boolean checkPermission(
+java.security.acl.Permission)
+
+public abstract java.lang.Object clone()
+
+public abstract java.security.Principal getPrincipal()
+
+public abstract boolean isNegative()
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/security/acl/Permission;>; )
+public abstract java.util.Enumeration permissions()
+
+public abstract boolean removePermission(
+java.security.acl.Permission)
+
+public abstract void setNegativePermissions()
+
+public abstract boolean setPrincipal(
+java.security.Principal)
+
+public abstract java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.security.acl.AclNotFoundException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.acl.Group extends java.lang.Object implements java.security.Principal
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean addMember(
+java.security.Principal)
+
+public abstract boolean isMember(
+java.security.Principal)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<+Ljava/security/Principal;>; )
+public abstract java.util.Enumeration members()
+
+public abstract boolean removeMember(
+java.security.Principal)
+
+________________CLASS________________
+
+
+public class java.security.acl.LastOwnerException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class java.security.acl.NotOwnerException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.acl.Permission extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean equals(
+java.lang.Object)
+
+public abstract java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract class java.security.cert.CRL extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final java.lang.String type
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.String)
+
+public final java.lang.String getType()
+
+public abstract boolean isRevoked(
+java.security.cert.Certificate)
+
+public abstract java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.security.cert.CRLException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public abstract interface class java.security.cert.CRLSelector extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.Object clone()
+
+public abstract boolean match(
+java.security.cert.CRL)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/security/cert/CertPath; )
+@dalvik.annotation.InnerClass (accessFlags =12 name =CertPathRep )
+public class java.security.cert.CertPath$CertPathRep extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+private final byte[] data
+
+private final java.lang.String type
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.lang.String
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/ObjectStreamException; )
+protected java.lang.Object readResolve()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/security/cert/CertPath$CertPathRep; )
+public abstract class java.security.cert.CertPath extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final java.lang.String type
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/List<+Ljava/security/cert/Certificate;>; )
+public abstract java.util.List getCertificates()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateEncodingException; )
+public abstract byte[] getEncoded()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateEncodingException; )
+public abstract byte[] getEncoded(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/lang/String;>; )
+public abstract java.util.Iterator getEncodings()
+
+public java.lang.String getType()
+
+public int hashCode()
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljava/io/ObjectStreamException; )
+protected java.lang.Object writeReplace()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class java.security.cert.CertPathBuilder$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+
+public class java.security.cert.CertPathBuilder extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String DEFAULTPROPERTY
+
+private static final java.lang.String PROPERTYNAME
+
+private static final java.lang.String SERVICE
+
+private static org.apache.harmony.security.fortress.Engine engine
+
+private final java.lang.String algorithm
+
+private final java.security.Provider provider
+
+private java.security.cert.CertPathBuilderSpi spiImpl
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.security.cert.CertPathBuilderSpi
+java.security.Provider
+java.lang.String)
+
+public static final java.lang.String getDefaultType()
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.cert.CertPathBuilder getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static java.security.cert.CertPathBuilder getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.cert.CertPathBuilder getInstance(
+java.lang.String
+java.security.Provider)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathBuilderException;Ljava/security/InvalidAlgorithmParameterException; )
+public final java.security.cert.CertPathBuilderResult build(
+java.security.cert.CertPathParameters)
+
+public final java.lang.String getAlgorithm()
+
+public final java.security.Provider getProvider()
+
+________________CLASS________________
+
+
+public class java.security.cert.CertPathBuilderException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public abstract interface class java.security.cert.CertPathBuilderResult extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.Object clone()
+
+public abstract java.security.cert.CertPath getCertPath()
+
+________________CLASS________________
+
+
+public abstract class java.security.cert.CertPathBuilderSpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathBuilderException;Ljava/security/InvalidAlgorithmParameterException; )
+public abstract java.security.cert.CertPathBuilderResult engineBuild(
+java.security.cert.CertPathParameters)
+
+________________CLASS________________
+
+
+public abstract interface class java.security.cert.CertPathParameters extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.Object clone()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+final class java.security.cert.CertPathValidator$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+
+public class java.security.cert.CertPathValidator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String DEFAULTPROPERTY
+
+private static final java.lang.String PROPERTYNAME
+
+private static final java.lang.String SERVICE
+
+private static org.apache.harmony.security.fortress.Engine engine
+
+private final java.lang.String algorithm
+
+private final java.security.Provider provider
+
+private final java.security.cert.CertPathValidatorSpi spiImpl
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.security.cert.CertPathValidatorSpi
+java.security.Provider
+java.lang.String)
+
+public static final java.lang.String getDefaultType()
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.cert.CertPathValidator getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static java.security.cert.CertPathValidator getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static java.security.cert.CertPathValidator getInstance(
+java.lang.String
+java.security.Provider)
+
+public final java.lang.String getAlgorithm()
+
+public final java.security.Provider getProvider()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathValidatorException;Ljava/security/InvalidAlgorithmParameterException; )
+public final java.security.cert.CertPathValidatorResult validate(
+java.security.cert.CertPath
+java.security.cert.CertPathParameters)
+
+________________CLASS________________
+
+
+public class java.security.cert.CertPathValidatorException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.security.cert.CertPath certPath
+
+private int index
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable
+java.security.cert.CertPath
+int)
+
+public void <init>(
+java.lang.Throwable)
+
+public java.security.cert.CertPath getCertPath()
+
+public int getIndex()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.cert.CertPathValidatorResult extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.Object clone()
+
+________________CLASS________________
+
+
+public abstract class java.security.cert.CertPathValidatorSpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathValidatorException;Ljava/security/InvalidAlgorithmParameterException; )
+public abstract java.security.cert.CertPathValidatorResult engineValidate(
+java.security.cert.CertPath
+java.security.cert.CertPathParameters)
+
+________________CLASS________________
+
+
+public abstract interface class java.security.cert.CertSelector extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.Object clone()
+
+public abstract boolean match(
+java.security.cert.Certificate)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+final class java.security.cert.CertStore$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+
+public class java.security.cert.CertStore extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String DEFAULTPROPERTY
+
+private static final java.lang.String PROPERTYNAME
+
+private static final java.lang.String SERVICE
+
+private static org.apache.harmony.security.fortress.Engine engine
+
+private final java.security.cert.CertStoreParameters certStoreParams
+
+private final java.security.Provider provider
+
+private final java.security.cert.CertStoreSpi spiImpl
+
+private final java.lang.String type
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.security.cert.CertStoreSpi
+java.security.Provider
+java.lang.String
+java.security.cert.CertStoreParameters)
+
+public static final java.lang.String getDefaultType()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException;Ljava/security/NoSuchAlgorithmException; )
+public static java.security.cert.CertStore getInstance(
+java.lang.String
+java.security.cert.CertStoreParameters)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException;Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static java.security.cert.CertStore getInstance(
+java.lang.String
+java.security.cert.CertStoreParameters
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidAlgorithmParameterException; )
+public static java.security.cert.CertStore getInstance(
+java.lang.String
+java.security.cert.CertStoreParameters
+java.security.Provider)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertStoreException; )
+@dalvik.annotation.Signature (value =(Ljava/security/cert/CRLSelector;)Ljava/util/Collection<+Ljava/security/cert/CRL;>; )
+public final java.util.Collection getCRLs(
+java.security.cert.CRLSelector)
+
+public final java.security.cert.CertStoreParameters getCertStoreParameters()
+@dalvik.annotation.Signature (value =(Ljava/security/cert/CertSelector;)Ljava/util/Collection<+Ljava/security/cert/Certificate;>; )
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertStoreException; )
+public final java.util.Collection getCertificates(
+java.security.cert.CertSelector)
+
+public final java.security.Provider getProvider()
+
+public final java.lang.String getType()
+
+________________CLASS________________
+
+
+public class java.security.cert.CertStoreException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public abstract interface class java.security.cert.CertStoreParameters extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.Object clone()
+
+________________CLASS________________
+
+
+public abstract class java.security.cert.CertStoreSpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public void <init>(
+java.security.cert.CertStoreParameters)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertStoreException; )
+@dalvik.annotation.Signature (value =(Ljava/security/cert/CRLSelector;)Ljava/util/Collection<+Ljava/security/cert/CRL;>; )
+public abstract java.util.Collection engineGetCRLs(
+java.security.cert.CRLSelector)
+@dalvik.annotation.Signature (value =(Ljava/security/cert/CertSelector;)Ljava/util/Collection<+Ljava/security/cert/Certificate;>; )
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertStoreException; )
+public abstract java.util.Collection engineGetCertificates(
+java.security.cert.CertSelector)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =12 name =CertificateRep )
+@dalvik.annotation.EnclosingClass (value =Ljava/security/cert/Certificate; )
+public class java.security.cert.Certificate$CertificateRep extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+private final byte[] data
+
+private final java.lang.String type
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.lang.String
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/ObjectStreamException; )
+protected java.lang.Object readResolve()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/security/cert/Certificate$CertificateRep; )
+public abstract class java.security.cert.Certificate extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final java.lang.String type
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateEncodingException; )
+public abstract byte[] getEncoded()
+
+public abstract java.security.PublicKey getPublicKey()
+
+public final java.lang.String getType()
+
+public int hashCode()
+
+public abstract java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public abstract void verify(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public abstract void verify(
+java.security.PublicKey
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/ObjectStreamException; )
+protected java.lang.Object writeReplace()
+
+________________CLASS________________
+
+
+public class java.security.cert.CertificateException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class java.security.cert.CertificateEncodingException extends java.security.cert.CertificateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class java.security.cert.CertificateExpiredException extends java.security.cert.CertificateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.security.cert.CertificateFactory extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String SERVICE
+
+private static org.apache.harmony.security.fortress.Engine engine
+
+private final java.security.Provider provider
+
+private final java.security.cert.CertificateFactorySpi spiImpl
+
+private final java.lang.String type
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.security.cert.CertificateFactorySpi
+java.security.Provider
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public static final java.security.cert.CertificateFactory getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException;Ljava/security/NoSuchProviderException; )
+public static final java.security.cert.CertificateFactory getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public static final java.security.cert.CertificateFactory getInstance(
+java.lang.String
+java.security.Provider)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public final java.security.cert.CRL generateCRL(
+java.io.InputStream)
+@dalvik.annotation.Signature (value =(Ljava/io/InputStream;)Ljava/util/Collection<+Ljava/security/cert/CRL;>; )
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public final java.util.Collection generateCRLs(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public final java.security.cert.CertPath generateCertPath(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public final java.security.cert.CertPath generateCertPath(
+java.io.InputStream
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/List<+Ljava/security/cert/Certificate;>;)Ljava/security/cert/CertPath; )
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public final java.security.cert.CertPath generateCertPath(
+java.util.List)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public final java.security.cert.Certificate generateCertificate(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+@dalvik.annotation.Signature (value =(Ljava/io/InputStream;)Ljava/util/Collection<+Ljava/security/cert/Certificate;>; )
+public final java.util.Collection generateCertificates(
+java.io.InputStream)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/lang/String;>; )
+public final java.util.Iterator getCertPathEncodings()
+
+public final java.security.Provider getProvider()
+
+public final java.lang.String getType()
+
+________________CLASS________________
+
+
+public abstract class java.security.cert.CertificateFactorySpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public abstract java.security.cert.CRL engineGenerateCRL(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+@dalvik.annotation.Signature (value =(Ljava/io/InputStream;)Ljava/util/Collection<+Ljava/security/cert/CRL;>; )
+public abstract java.util.Collection engineGenerateCRLs(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public java.security.cert.CertPath engineGenerateCertPath(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public java.security.cert.CertPath engineGenerateCertPath(
+java.io.InputStream
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/List<+Ljava/security/cert/Certificate;>;)Ljava/security/cert/CertPath; )
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public java.security.cert.CertPath engineGenerateCertPath(
+java.util.List)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public abstract java.security.cert.Certificate engineGenerateCertificate(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+@dalvik.annotation.Signature (value =(Ljava/io/InputStream;)Ljava/util/Collection<+Ljava/security/cert/Certificate;>; )
+public abstract java.util.Collection engineGenerateCertificates(
+java.io.InputStream)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/lang/String;>; )
+public java.util.Iterator engineGetCertPathEncodings()
+
+________________CLASS________________
+
+
+public class java.security.cert.CertificateNotYetValidException extends java.security.cert.CertificateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.security.cert.CertificateParsingException extends java.security.cert.CertificateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class java.security.cert.CollectionCertStoreParameters extends java.lang.Object implements java.security.cert.CertStoreParameters
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Collection<*>; )
+private static final java.util.Collection defaultCollection
+@dalvik.annotation.Signature (value =Ljava/util/Collection<*>; )
+private final java.util.Collection collection
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)V )
+public void <init>(
+java.util.Collection)
+
+public java.lang.Object clone()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<*>; )
+public java.util.Collection getCollection()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.security.cert.LDAPCertStoreParameters extends java.lang.Object implements java.security.cert.CertStoreParameters
+
+----------------FIELDS----------------
+
+private static final int DEFAULT_LDAP_PORT
+
+private static final java.lang.String DEFAULT_LDAP_SERVER_NAME
+
+private final int port
+
+private final java.lang.String serverName
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+int)
+
+public java.lang.Object clone()
+
+public int getPort()
+
+public java.lang.String getServerName()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.security.cert.PKIXParameters extends java.lang.Object implements java.security.cert.CertPathParameters
+
+----------------FIELDS----------------
+
+private boolean anyPolicyInhibited
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/security/cert/PKIXCertPathChecker;>; )
+private java.util.List certPathCheckers
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/security/cert/CertStore;>; )
+private java.util.List certStores
+
+private java.util.Date date
+
+private boolean explicitPolicyRequired
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/lang/String;>; )
+private java.util.Set initialPolicies
+
+private boolean policyMappingInhibited
+
+private boolean policyQualifiersRejected
+
+private boolean revocationEnabled
+
+private java.lang.String sigProvider
+
+private java.security.cert.CertSelector targetCertConstraints
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/security/cert/TrustAnchor;>; )
+private java.util.Set trustAnchors
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException;Ljava/security/InvalidAlgorithmParameterException; )
+public void <init>(
+java.security.KeyStore)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+@dalvik.annotation.Signature (value =(Ljava/util/Set<Ljava/security/cert/TrustAnchor;>;)V )
+public void <init>(
+java.util.Set)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+private void checkTrustAnchors(
+java.util.Set)
+
+public void addCertPathChecker(
+java.security.cert.PKIXCertPathChecker)
+
+public void addCertStore(
+java.security.cert.CertStore)
+
+public java.lang.Object clone()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/security/cert/PKIXCertPathChecker;>; )
+public java.util.List getCertPathCheckers()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/security/cert/CertStore;>; )
+public java.util.List getCertStores()
+
+public java.util.Date getDate()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public java.util.Set getInitialPolicies()
+
+public boolean getPolicyQualifiersRejected()
+
+public java.lang.String getSigProvider()
+
+public java.security.cert.CertSelector getTargetCertConstraints()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/security/cert/TrustAnchor;>; )
+public java.util.Set getTrustAnchors()
+
+public boolean isAnyPolicyInhibited()
+
+public boolean isExplicitPolicyRequired()
+
+public boolean isPolicyMappingInhibited()
+
+public boolean isRevocationEnabled()
+
+public void setAnyPolicyInhibited(
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Ljava/security/cert/PKIXCertPathChecker;>;)V )
+public void setCertPathCheckers(
+java.util.List)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Ljava/security/cert/CertStore;>;)V )
+public void setCertStores(
+java.util.List)
+
+public void setDate(
+java.util.Date)
+
+public void setExplicitPolicyRequired(
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/util/Set<Ljava/lang/String;>;)V )
+public void setInitialPolicies(
+java.util.Set)
+
+public void setPolicyMappingInhibited(
+boolean)
+
+public void setPolicyQualifiersRejected(
+boolean)
+
+public void setRevocationEnabled(
+boolean)
+
+public void setSigProvider(
+java.lang.String)
+
+public void setTargetCertConstraints(
+java.security.cert.CertSelector)
+@dalvik.annotation.Signature (value =(Ljava/util/Set<Ljava/security/cert/TrustAnchor;>;)V )
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public void setTrustAnchors(
+java.util.Set)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.security.cert.PKIXBuilderParameters extends java.security.cert.PKIXParameters
+
+----------------FIELDS----------------
+
+private int maxPathLength
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException;Ljava/security/InvalidAlgorithmParameterException; )
+public void <init>(
+java.security.KeyStore
+java.security.cert.CertSelector)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+@dalvik.annotation.Signature (value =(Ljava/util/Set<Ljava/security/cert/TrustAnchor;>;Ljava/security/cert/CertSelector;)V )
+public void <init>(
+java.util.Set
+java.security.cert.CertSelector)
+
+public int getMaxPathLength()
+
+public void setMaxPathLength(
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.security.cert.PKIXCertPathValidatorResult extends java.lang.Object implements java.security.cert.CertPathValidatorResult
+
+----------------FIELDS----------------
+
+private final java.security.cert.PolicyNode policyTree
+
+private final java.security.PublicKey subjectPublicKey
+
+private final java.security.cert.TrustAnchor trustAnchor
+----------------METHODS----------------
+
+public void <init>(
+java.security.cert.TrustAnchor
+java.security.cert.PolicyNode
+java.security.PublicKey)
+
+public java.lang.Object clone()
+
+public java.security.cert.PolicyNode getPolicyTree()
+
+public java.security.PublicKey getPublicKey()
+
+public java.security.cert.TrustAnchor getTrustAnchor()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.security.cert.PKIXCertPathBuilderResult extends java.security.cert.PKIXCertPathValidatorResult implements java.security.cert.CertPathBuilderResult
+
+----------------FIELDS----------------
+
+private final java.security.cert.CertPath certPath
+----------------METHODS----------------
+
+public void <init>(
+java.security.cert.CertPath
+java.security.cert.TrustAnchor
+java.security.cert.PolicyNode
+java.security.PublicKey)
+
+public java.security.cert.CertPath getCertPath()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract class java.security.cert.PKIXCertPathChecker extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathValidatorException; )
+@dalvik.annotation.Signature (value =(Ljava/security/cert/Certificate;Ljava/util/Collection<Ljava/lang/String;>;)V )
+public abstract void check(
+java.security.cert.Certificate
+java.util.Collection)
+
+public java.lang.Object clone()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public abstract java.util.Set getSupportedExtensions()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathValidatorException; )
+public abstract void init(
+boolean)
+
+public abstract boolean isForwardCheckingSupported()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.cert.PolicyNode extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<+Ljava/security/cert/PolicyNode;>; )
+public abstract java.util.Iterator getChildren()
+
+public abstract int getDepth()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public abstract java.util.Set getExpectedPolicies()
+
+public abstract java.security.cert.PolicyNode getParent()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<+Ljava/security/cert/PolicyQualifierInfo;>; )
+public abstract java.util.Set getPolicyQualifiers()
+
+public abstract java.lang.String getValidPolicy()
+
+public abstract boolean isCritical()
+
+________________CLASS________________
+
+
+public class java.security.cert.PolicyQualifierInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final byte[] encoded
+
+private final byte[] policyQualifier
+
+private final java.lang.String policyQualifierId
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+
+public final byte[] getEncoded()
+
+public final byte[] getPolicyQualifier()
+
+public final java.lang.String getPolicyQualifierId()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.security.cert.TrustAnchor extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final java.lang.String caName
+
+private final javax.security.auth.x500.X500Principal caPrincipal
+
+private final java.security.PublicKey caPublicKey
+
+private final byte[] nameConstraints
+
+private final java.security.cert.X509Certificate trustedCert
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.security.PublicKey
+byte[])
+
+public void <init>(
+java.security.cert.X509Certificate
+byte[])
+
+public void <init>(
+javax.security.auth.x500.X500Principal
+java.security.PublicKey
+byte[])
+
+private void processNameConstraints()
+
+public final javax.security.auth.x500.X500Principal getCA()
+
+public final java.lang.String getCAName()
+
+public final java.security.PublicKey getCAPublicKey()
+
+public final byte[] getNameConstraints()
+
+public final java.security.cert.X509Certificate getTrustedCert()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.cert.X509Extension extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public abstract java.util.Set getCriticalExtensionOIDs()
+
+public abstract byte[] getExtensionValue(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public abstract java.util.Set getNonCriticalExtensionOIDs()
+
+public abstract boolean hasUnsupportedCriticalExtension()
+
+________________CLASS________________
+
+
+public abstract class java.security.cert.X509CRL extends java.security.cert.CRL implements java.security.cert.X509Extension
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public abstract byte[] getEncoded()
+
+public abstract java.security.Principal getIssuerDN()
+
+public javax.security.auth.x500.X500Principal getIssuerX500Principal()
+
+public abstract java.util.Date getNextUpdate()
+
+public abstract java.security.cert.X509CRLEntry getRevokedCertificate(
+java.math.BigInteger)
+
+public java.security.cert.X509CRLEntry getRevokedCertificate(
+java.security.cert.X509Certificate)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<+Ljava/security/cert/X509CRLEntry;>; )
+public abstract java.util.Set getRevokedCertificates()
+
+public abstract java.lang.String getSigAlgName()
+
+public abstract java.lang.String getSigAlgOID()
+
+public abstract byte[] getSigAlgParams()
+
+public abstract byte[] getSignature()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public abstract byte[] getTBSCertList()
+
+public abstract java.util.Date getThisUpdate()
+
+public abstract int getVersion()
+
+public int hashCode()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public abstract void verify(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public abstract void verify(
+java.security.PublicKey
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class java.security.cert.X509CRLEntry extends java.lang.Object implements java.security.cert.X509Extension
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean equals(
+java.lang.Object)
+
+public javax.security.auth.x500.X500Principal getCertificateIssuer()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public abstract byte[] getEncoded()
+
+public abstract java.util.Date getRevocationDate()
+
+public abstract java.math.BigInteger getSerialNumber()
+
+public abstract boolean hasExtensions()
+
+public int hashCode()
+
+public abstract java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.security.cert.X509CRLSelector extends java.lang.Object implements java.security.cert.CRLSelector
+
+----------------FIELDS----------------
+
+private java.security.cert.X509Certificate certificateChecking
+
+private long dateAndTime
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+private java.util.ArrayList issuerNames
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljavax/security/auth/x500/X500Principal;>; )
+private java.util.ArrayList issuerPrincipals
+
+private java.math.BigInteger maxCRL
+
+private java.math.BigInteger minCRL
+----------------METHODS----------------
+
+public void <init>()
+
+public void addIssuer(
+javax.security.auth.x500.X500Principal)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void addIssuerName(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void addIssuerName(
+byte[])
+
+public java.lang.Object clone()
+
+public java.security.cert.X509Certificate getCertificateChecking()
+
+public java.util.Date getDateAndTime()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljava/lang/Object;>; )
+public java.util.Collection getIssuerNames()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljavax/security/auth/x500/X500Principal;>; )
+public java.util.Collection getIssuers()
+
+public java.math.BigInteger getMaxCRL()
+
+public java.math.BigInteger getMinCRL()
+
+public boolean match(
+java.security.cert.CRL)
+
+public void setCertificateChecking(
+java.security.cert.X509Certificate)
+
+public void setDateAndTime(
+java.util.Date)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)V )
+public void setIssuerNames(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<Ljavax/security/auth/x500/X500Principal;>;)V )
+public void setIssuers(
+java.util.Collection)
+
+public void setMaxCRLNumber(
+java.math.BigInteger)
+
+public void setMinCRLNumber(
+java.math.BigInteger)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.security.cert.X509CertSelector extends java.lang.Object implements java.security.cert.CertSelector
+
+----------------FIELDS----------------
+
+private byte[] authorityKeyIdentifier
+
+private java.security.cert.X509Certificate certificateEquals
+
+private java.util.Date certificateValid
+
+private java.util.Set extendedKeyUsage
+
+private javax.security.auth.x500.X500Principal issuer
+
+private byte[] issuerBytes
+
+private java.lang.String issuerName
+
+private boolean[] keyUsage
+
+private boolean matchAllNames
+
+private org.apache.harmony.security.x509.NameConstraints nameConstraints
+
+private int pathLen
+
+private java.util.ArrayList pathToNames
+
+private java.util.Set policies
+
+private java.util.Date privateKeyValid
+
+private java.math.BigInteger serialNumber
+
+private javax.security.auth.x500.X500Principal subject
+
+private java.util.List[] subjectAltNames
+
+private byte[] subjectKeyIdentifier
+
+private byte[] subjectPublicKey
+
+private java.lang.String subjectPublicKeyAlgID
+
+private java.security.PublicKey subjectPublicKeyImpl
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void checkOID(
+java.lang.String)
+
+private java.lang.String getBytesAsString(
+byte[])
+
+private byte[] getExtensionValue(
+java.security.cert.X509Certificate
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void addPathToName(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void addPathToName(
+int
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void addSubjectAlternativeName(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void addSubjectAlternativeName(
+int
+byte[])
+
+public java.lang.Object clone()
+
+public byte[] getAuthorityKeyIdentifier()
+
+public int getBasicConstraints()
+
+public java.security.cert.X509Certificate getCertificate()
+
+public java.util.Date getCertificateValid()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public java.util.Set getExtendedKeyUsage()
+
+public javax.security.auth.x500.X500Principal getIssuer()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public byte[] getIssuerAsBytes()
+
+public java.lang.String getIssuerAsString()
+
+public boolean[] getKeyUsage()
+
+public boolean getMatchAllSubjectAltNames()
+
+public byte[] getNameConstraints()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljava/util/List<*>;>; )
+public java.util.Collection getPathToNames()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/String;>; )
+public java.util.Set getPolicy()
+
+public java.util.Date getPrivateKeyValid()
+
+public java.math.BigInteger getSerialNumber()
+
+public javax.security.auth.x500.X500Principal getSubject()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljava/util/List<*>;>; )
+public java.util.Collection getSubjectAlternativeNames()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public byte[] getSubjectAsBytes()
+
+public java.lang.String getSubjectAsString()
+
+public byte[] getSubjectKeyIdentifier()
+
+public java.security.PublicKey getSubjectPublicKey()
+
+public java.lang.String getSubjectPublicKeyAlgID()
+
+public boolean match(
+java.security.cert.Certificate)
+
+public void setAuthorityKeyIdentifier(
+byte[])
+
+public void setBasicConstraints(
+int)
+
+public void setCertificate(
+java.security.cert.X509Certificate)
+
+public void setCertificateValid(
+java.util.Date)
+@dalvik.annotation.Signature (value =(Ljava/util/Set<Ljava/lang/String;>;)V )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setExtendedKeyUsage(
+java.util.Set)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setIssuer(
+java.lang.String)
+
+public void setIssuer(
+javax.security.auth.x500.X500Principal)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setIssuer(
+byte[])
+
+public void setKeyUsage(
+boolean[])
+
+public void setMatchAllSubjectAltNames(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setNameConstraints(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<Ljava/util/List<*>;>;)V )
+public void setPathToNames(
+java.util.Collection)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/util/Set<Ljava/lang/String;>;)V )
+public void setPolicy(
+java.util.Set)
+
+public void setPrivateKeyValid(
+java.util.Date)
+
+public void setSerialNumber(
+java.math.BigInteger)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setSubject(
+java.lang.String)
+
+public void setSubject(
+javax.security.auth.x500.X500Principal)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setSubject(
+byte[])
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<Ljava/util/List<*>;>;)V )
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setSubjectAlternativeNames(
+java.util.Collection)
+
+public void setSubjectKeyIdentifier(
+byte[])
+
+public void setSubjectPublicKey(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setSubjectPublicKey(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setSubjectPublicKeyAlgID(
+java.lang.String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract class java.security.cert.X509Certificate extends java.security.cert.Certificate implements java.security.cert.X509Extension
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateExpiredException;Ljava/security/cert/CertificateNotYetValidException; )
+public abstract void checkValidity()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateExpiredException;Ljava/security/cert/CertificateNotYetValidException; )
+public abstract void checkValidity(
+java.util.Date)
+
+public abstract int getBasicConstraints()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateParsingException; )
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public java.util.List getExtendedKeyUsage()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateParsingException; )
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljava/util/List<*>;>; )
+public java.util.Collection getIssuerAlternativeNames()
+
+public abstract java.security.Principal getIssuerDN()
+
+public abstract boolean[] getIssuerUniqueID()
+
+public javax.security.auth.x500.X500Principal getIssuerX500Principal()
+
+public abstract boolean[] getKeyUsage()
+
+public abstract java.util.Date getNotAfter()
+
+public abstract java.util.Date getNotBefore()
+
+public abstract java.math.BigInteger getSerialNumber()
+
+public abstract java.lang.String getSigAlgName()
+
+public abstract java.lang.String getSigAlgOID()
+
+public abstract byte[] getSigAlgParams()
+
+public abstract byte[] getSignature()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljava/util/List<*>;>; )
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateParsingException; )
+public java.util.Collection getSubjectAlternativeNames()
+
+public abstract java.security.Principal getSubjectDN()
+
+public abstract boolean[] getSubjectUniqueID()
+
+public javax.security.auth.x500.X500Principal getSubjectX500Principal()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateEncodingException; )
+public abstract byte[] getTBSCertificate()
+
+public abstract int getVersion()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.interfaces.DSAKey extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.security.interfaces.DSAParams getParams()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.interfaces.DSAKeyPairGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/InvalidParameterException; )
+public abstract void initialize(
+int
+boolean
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidParameterException; )
+public abstract void initialize(
+java.security.interfaces.DSAParams
+java.security.SecureRandom)
+
+________________CLASS________________
+
+
+public abstract interface class java.security.interfaces.DSAParams extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.math.BigInteger getG()
+
+public abstract java.math.BigInteger getP()
+
+public abstract java.math.BigInteger getQ()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.interfaces.DSAPrivateKey extends java.lang.Object implements java.security.interfaces.DSAKey, java.security.PrivateKey
+
+----------------FIELDS----------------
+
+public static final long serialVersionUID
+----------------METHODS----------------
+
+public abstract java.math.BigInteger getX()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.interfaces.DSAPublicKey extends java.lang.Object implements java.security.interfaces.DSAKey, java.security.PublicKey
+
+----------------FIELDS----------------
+
+public static final long serialVersionUID
+----------------METHODS----------------
+
+public abstract java.math.BigInteger getY()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.interfaces.ECKey extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.security.spec.ECParameterSpec getParams()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.interfaces.ECPrivateKey extends java.lang.Object implements java.security.PrivateKey, java.security.interfaces.ECKey
+
+----------------FIELDS----------------
+
+public static final long serialVersionUID
+----------------METHODS----------------
+
+public abstract java.math.BigInteger getS()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.interfaces.ECPublicKey extends java.lang.Object implements java.security.PublicKey, java.security.interfaces.ECKey
+
+----------------FIELDS----------------
+
+public static final long serialVersionUID
+----------------METHODS----------------
+
+public abstract java.security.spec.ECPoint getW()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.interfaces.RSAKey extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.math.BigInteger getModulus()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.interfaces.RSAPrivateKey extends java.lang.Object implements java.security.PrivateKey, java.security.interfaces.RSAKey
+
+----------------FIELDS----------------
+
+public static final long serialVersionUID
+----------------METHODS----------------
+
+public abstract java.math.BigInteger getPrivateExponent()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.interfaces.RSAMultiPrimePrivateCrtKey extends java.lang.Object implements java.security.interfaces.RSAPrivateKey
+
+----------------FIELDS----------------
+
+public static final long serialVersionUID
+----------------METHODS----------------
+
+public abstract java.math.BigInteger getCrtCoefficient()
+
+public abstract java.security.spec.RSAOtherPrimeInfo[] getOtherPrimeInfo()
+
+public abstract java.math.BigInteger getPrimeExponentP()
+
+public abstract java.math.BigInteger getPrimeExponentQ()
+
+public abstract java.math.BigInteger getPrimeP()
+
+public abstract java.math.BigInteger getPrimeQ()
+
+public abstract java.math.BigInteger getPublicExponent()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.interfaces.RSAPrivateCrtKey extends java.lang.Object implements java.security.interfaces.RSAPrivateKey
+
+----------------FIELDS----------------
+
+public static final long serialVersionUID
+----------------METHODS----------------
+
+public abstract java.math.BigInteger getCrtCoefficient()
+
+public abstract java.math.BigInteger getPrimeExponentP()
+
+public abstract java.math.BigInteger getPrimeExponentQ()
+
+public abstract java.math.BigInteger getPrimeP()
+
+public abstract java.math.BigInteger getPrimeQ()
+
+public abstract java.math.BigInteger getPublicExponent()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.interfaces.RSAPublicKey extends java.lang.Object implements java.security.PublicKey, java.security.interfaces.RSAKey
+
+----------------FIELDS----------------
+
+public static final long serialVersionUID
+----------------METHODS----------------
+
+public abstract java.math.BigInteger getPublicExponent()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.spec.AlgorithmParameterSpec extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class java.security.spec.DSAParameterSpec extends java.lang.Object implements java.security.spec.AlgorithmParameterSpec, java.security.interfaces.DSAParams
+
+----------------FIELDS----------------
+
+private final java.math.BigInteger g
+
+private final java.math.BigInteger p
+
+private final java.math.BigInteger q
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger)
+
+public java.math.BigInteger getG()
+
+public java.math.BigInteger getP()
+
+public java.math.BigInteger getQ()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.spec.KeySpec extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class java.security.spec.DSAPrivateKeySpec extends java.lang.Object implements java.security.spec.KeySpec
+
+----------------FIELDS----------------
+
+private final java.math.BigInteger g
+
+private final java.math.BigInteger p
+
+private final java.math.BigInteger q
+
+private final java.math.BigInteger x
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger)
+
+public java.math.BigInteger getG()
+
+public java.math.BigInteger getP()
+
+public java.math.BigInteger getQ()
+
+public java.math.BigInteger getX()
+
+________________CLASS________________
+
+
+public class java.security.spec.DSAPublicKeySpec extends java.lang.Object implements java.security.spec.KeySpec
+
+----------------FIELDS----------------
+
+private final java.math.BigInteger g
+
+private final java.math.BigInteger p
+
+private final java.math.BigInteger q
+
+private final java.math.BigInteger y
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger)
+
+public java.math.BigInteger getG()
+
+public java.math.BigInteger getP()
+
+public java.math.BigInteger getQ()
+
+public java.math.BigInteger getY()
+
+________________CLASS________________
+
+
+public abstract interface class java.security.spec.ECField extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int getFieldSize()
+
+________________CLASS________________
+
+
+public class java.security.spec.ECFieldF2m extends java.lang.Object implements java.security.spec.ECField
+
+----------------FIELDS----------------
+
+private static final int PPB_LEN
+
+private static final int PPB_MID_LEN
+
+private static final int TPB_LEN
+
+private static final int TPB_MID_LEN
+
+private final int[] ks
+
+private final int m
+
+private final java.math.BigInteger rp
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+int
+java.math.BigInteger)
+
+public void <init>(
+int
+int[])
+
+public boolean equals(
+java.lang.Object)
+
+public int getFieldSize()
+
+public int getM()
+
+public int[] getMidTermsOfReductionPolynomial()
+
+public java.math.BigInteger getReductionPolynomial()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class java.security.spec.ECFieldFp extends java.lang.Object implements java.security.spec.ECField
+
+----------------FIELDS----------------
+
+private final java.math.BigInteger p
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger)
+
+public boolean equals(
+java.lang.Object)
+
+public int getFieldSize()
+
+public java.math.BigInteger getP()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class java.security.spec.ECGenParameterSpec extends java.lang.Object implements java.security.spec.AlgorithmParameterSpec
+
+----------------FIELDS----------------
+
+private final java.lang.String name
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public java.lang.String getName()
+
+________________CLASS________________
+
+
+public class java.security.spec.ECParameterSpec extends java.lang.Object implements java.security.spec.AlgorithmParameterSpec
+
+----------------FIELDS----------------
+
+private final int cofactor
+
+private final java.security.spec.EllipticCurve curve
+
+private final java.security.spec.ECPoint generator
+
+private final java.math.BigInteger order
+----------------METHODS----------------
+
+public void <init>(
+java.security.spec.EllipticCurve
+java.security.spec.ECPoint
+java.math.BigInteger
+int)
+
+public int getCofactor()
+
+public java.security.spec.EllipticCurve getCurve()
+
+public java.security.spec.ECPoint getGenerator()
+
+public java.math.BigInteger getOrder()
+
+________________CLASS________________
+
+
+public class java.security.spec.ECPoint extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.security.spec.ECPoint POINT_INFINITY
+
+private final java.math.BigInteger affineX
+
+private final java.math.BigInteger affineY
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger)
+
+public boolean equals(
+java.lang.Object)
+
+public java.math.BigInteger getAffineX()
+
+public java.math.BigInteger getAffineY()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class java.security.spec.ECPrivateKeySpec extends java.lang.Object implements java.security.spec.KeySpec
+
+----------------FIELDS----------------
+
+private final java.security.spec.ECParameterSpec params
+
+private final java.math.BigInteger s
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.security.spec.ECParameterSpec)
+
+public java.security.spec.ECParameterSpec getParams()
+
+public java.math.BigInteger getS()
+
+________________CLASS________________
+
+
+public class java.security.spec.ECPublicKeySpec extends java.lang.Object implements java.security.spec.KeySpec
+
+----------------FIELDS----------------
+
+private final java.security.spec.ECParameterSpec params
+
+private final java.security.spec.ECPoint w
+----------------METHODS----------------
+
+public void <init>(
+java.security.spec.ECPoint
+java.security.spec.ECParameterSpec)
+
+public java.security.spec.ECParameterSpec getParams()
+
+public java.security.spec.ECPoint getW()
+
+________________CLASS________________
+
+
+public class java.security.spec.EllipticCurve extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final java.math.BigInteger a
+
+private final java.math.BigInteger b
+
+private final java.security.spec.ECField field
+
+private volatile int hash
+
+private final byte[] seed
+----------------METHODS----------------
+
+public void <init>(
+java.security.spec.ECField
+java.math.BigInteger
+java.math.BigInteger)
+
+public void <init>(
+java.security.spec.ECField
+java.math.BigInteger
+java.math.BigInteger
+byte[])
+
+public boolean equals(
+java.lang.Object)
+
+public java.math.BigInteger getA()
+
+public java.math.BigInteger getB()
+
+public java.security.spec.ECField getField()
+
+public byte[] getSeed()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public abstract class java.security.spec.EncodedKeySpec extends java.lang.Object implements java.security.spec.KeySpec
+
+----------------FIELDS----------------
+
+private final byte[] encodedKey
+----------------METHODS----------------
+
+public void <init>(
+byte[])
+
+public byte[] getEncoded()
+
+public abstract java.lang.String getFormat()
+
+________________CLASS________________
+
+
+public class java.security.spec.InvalidKeySpecException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class java.security.spec.InvalidParameterSpecException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.security.spec.MGF1ParameterSpec extends java.lang.Object implements java.security.spec.AlgorithmParameterSpec
+
+----------------FIELDS----------------
+
+public static final java.security.spec.MGF1ParameterSpec SHA1
+
+public static final java.security.spec.MGF1ParameterSpec SHA256
+
+public static final java.security.spec.MGF1ParameterSpec SHA384
+
+public static final java.security.spec.MGF1ParameterSpec SHA512
+
+private final java.lang.String mdName
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String)
+
+public java.lang.String getDigestAlgorithm()
+
+________________CLASS________________
+
+
+public class java.security.spec.PKCS8EncodedKeySpec extends java.security.spec.EncodedKeySpec
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+byte[])
+
+public byte[] getEncoded()
+
+public final java.lang.String getFormat()
+
+________________CLASS________________
+
+
+public class java.security.spec.PSSParameterSpec extends java.lang.Object implements java.security.spec.AlgorithmParameterSpec
+
+----------------FIELDS----------------
+
+public static final java.security.spec.PSSParameterSpec DEFAULT
+
+private final java.lang.String mdName
+
+private final java.lang.String mgfName
+
+private final java.security.spec.AlgorithmParameterSpec mgfSpec
+
+private final int saltLen
+
+private final int trailerField
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int)
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.security.spec.AlgorithmParameterSpec
+int
+int)
+
+public java.lang.String getDigestAlgorithm()
+
+public java.lang.String getMGFAlgorithm()
+
+public java.security.spec.AlgorithmParameterSpec getMGFParameters()
+
+public int getSaltLength()
+
+public int getTrailerField()
+
+________________CLASS________________
+
+
+public class java.security.spec.RSAKeyGenParameterSpec extends java.lang.Object implements java.security.spec.AlgorithmParameterSpec
+
+----------------FIELDS----------------
+
+public static final java.math.BigInteger F0
+
+public static final java.math.BigInteger F4
+
+private final int keysize
+
+private final java.math.BigInteger publicExponent
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+java.math.BigInteger)
+
+public int getKeysize()
+
+public java.math.BigInteger getPublicExponent()
+
+________________CLASS________________
+
+
+public class java.security.spec.RSAPrivateKeySpec extends java.lang.Object implements java.security.spec.KeySpec
+
+----------------FIELDS----------------
+
+private final java.math.BigInteger modulus
+
+private final java.math.BigInteger privateExponent
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger)
+
+public java.math.BigInteger getModulus()
+
+public java.math.BigInteger getPrivateExponent()
+
+________________CLASS________________
+
+
+public class java.security.spec.RSAMultiPrimePrivateCrtKeySpec extends java.security.spec.RSAPrivateKeySpec
+
+----------------FIELDS----------------
+
+private final java.math.BigInteger crtCoefficient
+
+private final java.security.spec.RSAOtherPrimeInfo[] otherPrimeInfo
+
+private final java.math.BigInteger primeExponentP
+
+private final java.math.BigInteger primeExponentQ
+
+private final java.math.BigInteger primeP
+
+private final java.math.BigInteger primeQ
+
+private final java.math.BigInteger publicExponent
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.security.spec.RSAOtherPrimeInfo[])
+
+public java.math.BigInteger getCrtCoefficient()
+
+public java.security.spec.RSAOtherPrimeInfo[] getOtherPrimeInfo()
+
+public java.math.BigInteger getPrimeExponentP()
+
+public java.math.BigInteger getPrimeExponentQ()
+
+public java.math.BigInteger getPrimeP()
+
+public java.math.BigInteger getPrimeQ()
+
+public java.math.BigInteger getPublicExponent()
+
+________________CLASS________________
+
+
+public class java.security.spec.RSAOtherPrimeInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final java.math.BigInteger crtCoefficient
+
+private final java.math.BigInteger prime
+
+private final java.math.BigInteger primeExponent
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger)
+
+public final java.math.BigInteger getCrtCoefficient()
+
+public final java.math.BigInteger getExponent()
+
+public final java.math.BigInteger getPrime()
+
+________________CLASS________________
+
+
+public class java.security.spec.RSAPrivateCrtKeySpec extends java.security.spec.RSAPrivateKeySpec
+
+----------------FIELDS----------------
+
+private final java.math.BigInteger crtCoefficient
+
+private final java.math.BigInteger primeExponentP
+
+private final java.math.BigInteger primeExponentQ
+
+private final java.math.BigInteger primeP
+
+private final java.math.BigInteger primeQ
+
+private final java.math.BigInteger publicExponent
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger)
+
+public java.math.BigInteger getCrtCoefficient()
+
+public java.math.BigInteger getPrimeExponentP()
+
+public java.math.BigInteger getPrimeExponentQ()
+
+public java.math.BigInteger getPrimeP()
+
+public java.math.BigInteger getPrimeQ()
+
+public java.math.BigInteger getPublicExponent()
+
+________________CLASS________________
+
+
+public class java.security.spec.RSAPublicKeySpec extends java.lang.Object implements java.security.spec.KeySpec
+
+----------------FIELDS----------------
+
+private final java.math.BigInteger modulus
+
+private final java.math.BigInteger publicExponent
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger)
+
+public java.math.BigInteger getModulus()
+
+public java.math.BigInteger getPublicExponent()
+
+________________CLASS________________
+
+
+public class java.security.spec.X509EncodedKeySpec extends java.security.spec.EncodedKeySpec
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+byte[])
+
+public byte[] getEncoded()
+
+public final java.lang.String getFormat()
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.Array extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.Object getArray()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.Object getArray(
+long
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+@dalvik.annotation.Signature (value =(JILjava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;)Ljava/lang/Object; )
+public abstract java.lang.Object getArray(
+long
+int
+java.util.Map)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;)Ljava/lang/Object; )
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.Object getArray(
+java.util.Map)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getBaseType()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getBaseTypeName()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getResultSet()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getResultSet(
+long
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+@dalvik.annotation.Signature (value =(JILjava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;)Ljava/sql/ResultSet; )
+public abstract java.sql.ResultSet getResultSet(
+long
+int
+java.util.Map)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;)Ljava/sql/ResultSet; )
+public abstract java.sql.ResultSet getResultSet(
+java.util.Map)
+
+________________CLASS________________
+
+
+public class java.sql.SQLException extends java.lang.Exception implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.String SQLState
+
+private java.sql.SQLException next
+
+private int vendorCode
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String
+int)
+
+public int getErrorCode()
+
+public java.sql.SQLException getNextException()
+
+public java.lang.String getSQLState()
+
+public void setNextException(
+java.sql.SQLException)
+
+________________CLASS________________
+
+
+public class java.sql.BatchUpdateException extends java.sql.SQLException implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private int[] updateCounts
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String
+java.lang.String
+int
+int[])
+
+public void <init>(
+java.lang.String
+java.lang.String
+int[])
+
+public void <init>(
+java.lang.String
+int[])
+
+public void <init>(
+int[])
+
+public int[] getUpdateCounts()
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.Blob extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.InputStream getBinaryStream()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract byte[] getBytes(
+long
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract long length()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract long position(
+java.sql.Blob
+long)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract long position(
+byte[]
+long)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.OutputStream setBinaryStream(
+long)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int setBytes(
+long
+byte[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int setBytes(
+long
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void truncate(
+long)
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.CallableStatement extends java.lang.Object implements java.sql.PreparedStatement
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Array getArray(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Array getArray(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.math.BigDecimal getBigDecimal(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+@java.lang.Deprecated
+public abstract java.math.BigDecimal getBigDecimal(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.math.BigDecimal getBigDecimal(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Blob getBlob(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Blob getBlob(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean getBoolean(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean getBoolean(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract byte getByte(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract byte getByte(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract byte[] getBytes(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract byte[] getBytes(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Clob getClob(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Clob getClob(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Date getDate(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Date getDate(
+int
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Date getDate(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Date getDate(
+java.lang.String
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract double getDouble(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract double getDouble(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract float getFloat(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract float getFloat(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getInt(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getInt(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract long getLong(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract long getLong(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.Object getObject(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+@dalvik.annotation.Signature (value =(ILjava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;)Ljava/lang/Object; )
+public abstract java.lang.Object getObject(
+int
+java.util.Map)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.Object getObject(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;)Ljava/lang/Object; )
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.Object getObject(
+java.lang.String
+java.util.Map)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Ref getRef(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Ref getRef(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract short getShort(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract short getShort(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getString(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getString(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Time getTime(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Time getTime(
+int
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Time getTime(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Time getTime(
+java.lang.String
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Timestamp getTimestamp(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Timestamp getTimestamp(
+int
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Timestamp getTimestamp(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Timestamp getTimestamp(
+java.lang.String
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.net.URL getURL(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.net.URL getURL(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void registerOutParameter(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void registerOutParameter(
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void registerOutParameter(
+int
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void registerOutParameter(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void registerOutParameter(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void registerOutParameter(
+java.lang.String
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setAsciiStream(
+java.lang.String
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setBigDecimal(
+java.lang.String
+java.math.BigDecimal)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setBinaryStream(
+java.lang.String
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setBoolean(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setByte(
+java.lang.String
+byte)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setBytes(
+java.lang.String
+byte[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setCharacterStream(
+java.lang.String
+java.io.Reader
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setDate(
+java.lang.String
+java.sql.Date)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setDate(
+java.lang.String
+java.sql.Date
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setDouble(
+java.lang.String
+double)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setFloat(
+java.lang.String
+float)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setInt(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setLong(
+java.lang.String
+long)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setNull(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setNull(
+java.lang.String
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setObject(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setObject(
+java.lang.String
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setObject(
+java.lang.String
+java.lang.Object
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setShort(
+java.lang.String
+short)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setString(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setTime(
+java.lang.String
+java.sql.Time)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setTime(
+java.lang.String
+java.sql.Time
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setTimestamp(
+java.lang.String
+java.sql.Timestamp)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setTimestamp(
+java.lang.String
+java.sql.Timestamp
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setURL(
+java.lang.String
+java.net.URL)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean wasNull()
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.Clob extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.InputStream getAsciiStream()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.Reader getCharacterStream()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getSubString(
+long
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract long length()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract long position(
+java.lang.String
+long)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract long position(
+java.sql.Clob
+long)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.OutputStream setAsciiStream(
+long)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.Writer setCharacterStream(
+long)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int setString(
+long
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int setString(
+long
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void truncate(
+long)
+
+________________CLASS________________
+
+
+public class java.sql.SQLWarning extends java.sql.SQLException implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String
+int)
+
+public java.sql.SQLWarning getNextWarning()
+
+public void setNextWarning(
+java.sql.SQLWarning)
+
+________________CLASS________________
+
+
+public class java.sql.DataTruncation extends java.sql.SQLWarning implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final int THE_ERROR_CODE
+
+private static final java.lang.String THE_REASON
+
+private static final java.lang.String THE_SQLSTATE
+
+private static final long serialVersionUID
+
+private int dataSize
+
+private int index
+
+private boolean parameter
+
+private boolean read
+
+private int transferSize
+----------------METHODS----------------
+
+public void <init>(
+int
+boolean
+boolean
+int
+int)
+
+public int getDataSize()
+
+public int getIndex()
+
+public boolean getParameter()
+
+public boolean getRead()
+
+public int getTransferSize()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Cloneable;Ljava/lang/Comparable<Ljava/util/Date;>; )
+public class java.util.Date extends java.lang.Object implements java.io.Serializable, java.lang.Cloneable, java.lang.Comparable
+
+----------------FIELDS----------------
+
+private static int creationYear
+
+private static final long serialVersionUID
+
+private transient long milliseconds
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@java.lang.Deprecated
+public void <init>(
+int
+int
+int)
+@java.lang.Deprecated
+public void <init>(
+int
+int
+int
+int
+int)
+@java.lang.Deprecated
+public void <init>(
+int
+int
+int
+int
+int
+int)
+
+public void <init>(
+long)
+@java.lang.Deprecated
+public void <init>(
+java.lang.String)
+@java.lang.Deprecated
+public static long UTC(
+int
+int
+int
+int
+int
+int)
+
+private static int parse(
+java.lang.String
+java.lang.String[])
+@java.lang.Deprecated
+public static long parse(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+private static int zone(
+java.lang.String)
+
+public boolean after(
+java.util.Date)
+
+public boolean before(
+java.util.Date)
+
+public java.lang.Object clone()
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.util.Date)
+
+public boolean equals(
+java.lang.Object)
+@java.lang.Deprecated
+public int getDate()
+@java.lang.Deprecated
+public int getDay()
+@java.lang.Deprecated
+public int getHours()
+@java.lang.Deprecated
+public int getMinutes()
+@java.lang.Deprecated
+public int getMonth()
+@java.lang.Deprecated
+public int getSeconds()
+
+public long getTime()
+@java.lang.Deprecated
+public int getTimezoneOffset()
+@java.lang.Deprecated
+public int getYear()
+
+public int hashCode()
+@java.lang.Deprecated
+public void setDate(
+int)
+@java.lang.Deprecated
+public void setHours(
+int)
+@java.lang.Deprecated
+public void setMinutes(
+int)
+@java.lang.Deprecated
+public void setMonth(
+int)
+@java.lang.Deprecated
+public void setSeconds(
+int)
+
+public void setTime(
+long)
+@java.lang.Deprecated
+public void setYear(
+int)
+@java.lang.Deprecated
+public java.lang.String toGMTString()
+@java.lang.Deprecated
+public java.lang.String toLocaleString()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.sql.Date extends java.util.Date
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+@java.lang.Deprecated
+public void <init>(
+int
+int
+int)
+
+public void <init>(
+long)
+
+private static long normalizeTime(
+long)
+
+public static java.sql.Date valueOf(
+java.lang.String)
+@java.lang.Deprecated
+public int getHours()
+@java.lang.Deprecated
+public int getMinutes()
+@java.lang.Deprecated
+public int getSeconds()
+@java.lang.Deprecated
+public void setHours(
+int)
+@java.lang.Deprecated
+public void setMinutes(
+int)
+@java.lang.Deprecated
+public void setSeconds(
+int)
+
+public void setTime(
+long)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.sql.DriverManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.sql.SQLPermission logPermission
+
+private static int loginTimeout
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/sql/Driver;>; )
+private static final java.util.Set theDriverSet
+
+private static java.io.PrintStream thePrintStream
+
+private static java.io.PrintWriter thePrintWriter
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+private static void checkLogSecurity()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public static void deregisterDriver(
+java.sql.Driver)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public static java.sql.Connection getConnection(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public static java.sql.Connection getConnection(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public static java.sql.Connection getConnection(
+java.lang.String
+java.util.Properties)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public static java.sql.Driver getDriver(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/sql/Driver;>; )
+public static java.util.Enumeration getDrivers()
+@java.lang.Deprecated
+public static java.io.PrintStream getLogStream()
+
+public static java.io.PrintWriter getLogWriter()
+
+public static int getLoginTimeout()
+
+private static boolean isClassFromClassLoader(
+java.lang.Object
+java.lang.ClassLoader)
+
+private static void loadInitialDrivers()
+
+public static void println(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public static void registerDriver(
+java.sql.Driver)
+@java.lang.Deprecated
+public static void setLogStream(
+java.io.PrintStream)
+
+public static void setLogWriter(
+java.io.PrintWriter)
+
+public static void setLoginTimeout(
+int)
+
+________________CLASS________________
+
+
+public class java.sql.DriverPropertyInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String[] choices
+
+public java.lang.String description
+
+public java.lang.String name
+
+public boolean required
+
+public java.lang.String value
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.ParameterMetaData extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int parameterModeIn
+
+public static final int parameterModeInOut
+
+public static final int parameterModeOut
+
+public static final int parameterModeUnknown
+
+public static final int parameterNoNulls
+
+public static final int parameterNullable
+
+public static final int parameterNullableUnknown
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getParameterClassName(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getParameterCount()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getParameterMode(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getParameterType(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getParameterTypeName(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getPrecision(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getScale(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int isNullable(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean isSigned(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.Ref extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getBaseTypeName()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.Object getObject()
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;)Ljava/lang/Object; )
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.Object getObject(
+java.util.Map)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setObject(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.SQLData extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getSQLTypeName()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void readSQL(
+java.sql.SQLInput
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeSQL(
+java.sql.SQLOutput)
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.SQLInput extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Array readArray()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.InputStream readAsciiStream()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.math.BigDecimal readBigDecimal()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.InputStream readBinaryStream()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Blob readBlob()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean readBoolean()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract byte readByte()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract byte[] readBytes()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.Reader readCharacterStream()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Clob readClob()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Date readDate()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract double readDouble()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract float readFloat()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int readInt()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract long readLong()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.Object readObject()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Ref readRef()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract short readShort()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String readString()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Time readTime()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Timestamp readTimestamp()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.net.URL readURL()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean wasNull()
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.SQLOutput extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeArray(
+java.sql.Array)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeAsciiStream(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeBigDecimal(
+java.math.BigDecimal)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeBinaryStream(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeBlob(
+java.sql.Blob)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeBoolean(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeByte(
+byte)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeBytes(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeCharacterStream(
+java.io.Reader)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeClob(
+java.sql.Clob)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeDate(
+java.sql.Date)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeDouble(
+double)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeFloat(
+float)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeInt(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeLong(
+long)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeObject(
+java.sql.SQLData)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeRef(
+java.sql.Ref)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeShort(
+short)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeString(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeStruct(
+java.sql.Struct)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeTime(
+java.sql.Time)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeTimestamp(
+java.sql.Timestamp)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void writeURL(
+java.net.URL)
+
+________________CLASS________________
+
+
+public final class java.sql.SQLPermission extends java.security.BasicPermission implements java.security.Guard, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.Savepoint extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getSavepointId()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getSavepointName()
+
+________________CLASS________________
+
+
+public abstract interface class java.sql.Struct extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.Object[] getAttributes()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;)[Ljava/lang/Object; )
+public abstract java.lang.Object[] getAttributes(
+java.util.Map)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getSQLTypeName()
+
+________________CLASS________________
+
+
+public class java.sql.Time extends java.util.Date
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+@java.lang.Deprecated
+public void <init>(
+int
+int
+int)
+
+public void <init>(
+long)
+
+public static java.sql.Time valueOf(
+java.lang.String)
+@java.lang.Deprecated
+public int getDate()
+@java.lang.Deprecated
+public int getDay()
+@java.lang.Deprecated
+public int getMonth()
+@java.lang.Deprecated
+public int getYear()
+@java.lang.Deprecated
+public void setDate(
+int)
+@java.lang.Deprecated
+public void setMonth(
+int)
+
+public void setTime(
+long)
+@java.lang.Deprecated
+public void setYear(
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.sql.Timestamp extends java.util.Date
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private int nanos
+----------------METHODS----------------
+@java.lang.Deprecated
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void <init>(
+int
+int
+int
+int
+int
+int
+int)
+
+public void <init>(
+long)
+
+private java.lang.String format(
+int
+int)
+
+private java.lang.String stripTrailingZeros(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public static java.sql.Timestamp valueOf(
+java.lang.String)
+
+public boolean after(
+java.sql.Timestamp)
+
+public boolean before(
+java.sql.Timestamp)
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.sql.Timestamp)
+@dalvik.annotation.Throws (value =Ljava/lang/ClassCastException; )
+public int compareTo(
+java.util.Date)
+
+public boolean equals(
+java.lang.Object)
+
+public boolean equals(
+java.sql.Timestamp)
+
+public int getNanos()
+
+public long getTime()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void setNanos(
+int)
+
+public void setTime(
+long)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.sql.Types extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ARRAY
+
+public static final int BIGINT
+
+public static final int BINARY
+
+public static final int BIT
+
+public static final int BLOB
+
+public static final int BOOLEAN
+
+public static final int CHAR
+
+public static final int CLOB
+
+public static final int DATALINK
+
+public static final int DATE
+
+public static final int DECIMAL
+
+public static final int DISTINCT
+
+public static final int DOUBLE
+
+public static final int FLOAT
+
+public static final int INTEGER
+
+public static final int JAVA_OBJECT
+
+public static final int LONGVARBINARY
+
+public static final int LONGVARCHAR
+
+public static final int NULL
+
+public static final int NUMERIC
+
+public static final int OTHER
+
+public static final int REAL
+
+public static final int REF
+
+public static final int SMALLINT
+
+public static final int STRUCT
+
+public static final int TIME
+
+public static final int TIMESTAMP
+
+public static final int TINYINT
+
+public static final int VARBINARY
+
+public static final int VARCHAR
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+
+public class java.text.Annotation extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.Object value
+----------------METHODS----------------
+
+public void <init>(
+java.lang.Object)
+
+public java.lang.Object getValue()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class java.text.CharacterIterator extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+
+public static final char DONE
+----------------METHODS----------------
+
+public abstract java.lang.Object clone()
+
+public abstract char current()
+
+public abstract char first()
+
+public abstract int getBeginIndex()
+
+public abstract int getEndIndex()
+
+public abstract int getIndex()
+
+public abstract char last()
+
+public abstract char next()
+
+public abstract char previous()
+
+public abstract char setIndex(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/text/AttributedCharacterIterator$Attribute; )
+public abstract interface class java.text.AttributedCharacterIterator extends java.lang.Object implements java.text.CharacterIterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/text/AttributedCharacterIterator$Attribute;>; )
+public abstract java.util.Set getAllAttributeKeys()
+
+public abstract java.lang.Object getAttribute(
+java.text.AttributedCharacterIterator$Attribute)
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;>; )
+public abstract java.util.Map getAttributes()
+
+public abstract int getRunLimit()
+
+public abstract int getRunLimit(
+java.text.AttributedCharacterIterator$Attribute)
+@dalvik.annotation.Signature (value =(Ljava/util/Set<+Ljava/text/AttributedCharacterIterator$Attribute;>;)I )
+public abstract int getRunLimit(
+java.util.Set)
+
+public abstract int getRunStart()
+
+public abstract int getRunStart(
+java.text.AttributedCharacterIterator$Attribute)
+@dalvik.annotation.Signature (value =(Ljava/util/Set<+Ljava/text/AttributedCharacterIterator$Attribute;>;)I )
+public abstract int getRunStart(
+java.util.Set)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =AttributedIterator )
+@dalvik.annotation.EnclosingClass (value =Ljava/text/AttributedString; )
+ class java.text.AttributedString$AttributedIterator extends java.lang.Object implements java.text.AttributedCharacterIterator
+
+----------------FIELDS----------------
+
+private java.text.AttributedString attrString
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/text/AttributedCharacterIterator$Attribute;>; )
+private java.util.HashSet attributesAllowed
+
+private int begin
+
+private int end
+
+private int offset
+----------------METHODS----------------
+
+ void <init>(
+java.text.AttributedString)
+
+ void <init>(
+java.text.AttributedString
+java.text.AttributedCharacterIterator$Attribute[]
+int
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Ljava/text/AttributedString$Range;>;)Ljava/lang/Object; )
+private java.lang.Object currentValue(
+java.util.List)
+
+private boolean inRange(
+java.text.AttributedString$Range)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Ljava/text/AttributedString$Range;>;)Z )
+private boolean inRange(
+java.util.List)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Ljava/text/AttributedString$Range;>;)I )
+private int runLimit(
+java.util.List)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Ljava/text/AttributedString$Range;>;)I )
+private int runStart(
+java.util.List)
+
+public java.lang.Object clone()
+
+public char current()
+
+public char first()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/text/AttributedCharacterIterator$Attribute;>; )
+public java.util.Set getAllAttributeKeys()
+
+public java.lang.Object getAttribute(
+java.text.AttributedCharacterIterator$Attribute)
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;>; )
+public java.util.Map getAttributes()
+
+public int getBeginIndex()
+
+public int getEndIndex()
+
+public int getIndex()
+
+public int getRunLimit()
+
+public int getRunLimit(
+java.text.AttributedCharacterIterator$Attribute)
+@dalvik.annotation.Signature (value =(Ljava/util/Set<+Ljava/text/AttributedCharacterIterator$Attribute;>;)I )
+public int getRunLimit(
+java.util.Set)
+
+public int getRunStart()
+
+public int getRunStart(
+java.text.AttributedCharacterIterator$Attribute)
+@dalvik.annotation.Signature (value =(Ljava/util/Set<+Ljava/text/AttributedCharacterIterator$Attribute;>;)I )
+public int getRunStart(
+java.util.Set)
+
+public char last()
+
+public char next()
+
+public char previous()
+
+public char setIndex(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =Range )
+@dalvik.annotation.EnclosingClass (value =Ljava/text/AttributedString; )
+ class java.text.AttributedString$Range extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int end
+
+ int start
+
+ java.lang.Object value
+----------------METHODS----------------
+
+ void <init>(
+int
+int
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/text/AttributedString$AttributedIterator;Ljava/text/AttributedString$Range; )
+public class java.text.AttributedString extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/text/AttributedCharacterIterator$Attribute;Ljava/util/List<Ljava/text/AttributedString$Range;>;>; )
+ java.util.Map attributeMap
+
+ java.lang.String text
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/Map<+Ljava/text/AttributedCharacterIterator$Attribute;*>;)V )
+public void <init>(
+java.lang.String
+java.util.Map)
+
+public void <init>(
+java.text.AttributedCharacterIterator)
+
+public void <init>(
+java.text.AttributedCharacterIterator
+int
+int)
+@dalvik.annotation.Signature (value =(Ljava/text/AttributedCharacterIterator;IILjava/util/Set<Ljava/text/AttributedCharacterIterator$Attribute;>;)V )
+private void <init>(
+java.text.AttributedCharacterIterator
+int
+int
+java.util.Set)
+
+public void <init>(
+java.text.AttributedCharacterIterator
+int
+int
+java.text.AttributedCharacterIterator$Attribute[])
+
+public void addAttribute(
+java.text.AttributedCharacterIterator$Attribute
+java.lang.Object)
+
+public void addAttribute(
+java.text.AttributedCharacterIterator$Attribute
+java.lang.Object
+int
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+Ljava/text/AttributedCharacterIterator$Attribute;*>;II)V )
+public void addAttributes(
+java.util.Map
+int
+int)
+
+public java.text.AttributedCharacterIterator getIterator()
+
+public java.text.AttributedCharacterIterator getIterator(
+java.text.AttributedCharacterIterator$Attribute[])
+
+public java.text.AttributedCharacterIterator getIterator(
+java.text.AttributedCharacterIterator$Attribute[]
+int
+int)
+
+________________CLASS________________
+
+
+public final class java.text.Bidi extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int DIRECTION_DEFAULT_LEFT_TO_RIGHT
+
+public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT
+
+public static final int DIRECTION_LEFT_TO_RIGHT
+
+public static final int DIRECTION_RIGHT_TO_LEFT
+
+private int baseLevel
+
+private int direction
+
+private int length
+
+private byte[] offsetLevel
+
+private org.apache.harmony.text.BidiRun[] runs
+
+private boolean unidirectional
+----------------METHODS----------------
+
+private void <init>(
+long)
+
+public void <init>(
+java.lang.String
+int)
+
+public void <init>(
+java.text.AttributedCharacterIterator)
+
+public void <init>(
+char[]
+int
+byte[]
+int
+int
+int)
+
+private static long createUBiDi(
+char[]
+int
+byte[]
+int
+int
+int)
+
+private void readBidiInfo(
+long)
+
+public static void reorderVisually(
+byte[]
+int
+java.lang.Object[]
+int
+int)
+
+public static boolean requiresBidi(
+char[]
+int
+int)
+
+public boolean baseIsLeftToRight()
+
+public java.text.Bidi createLineBidi(
+int
+int)
+
+public int getBaseLevel()
+
+public int getLength()
+
+public int getLevelAt(
+int)
+
+public int getRunCount()
+
+public int getRunLevel(
+int)
+
+public int getRunLimit(
+int)
+
+public int getRunStart(
+int)
+
+public boolean isLeftToRight()
+
+public boolean isMixed()
+
+public boolean isRightToLeft()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract class java.text.BreakIterator extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+
+public static final int DONE
+
+private static final int INT_LENGTH
+
+private static final int LONG_LENGTH
+
+private static final int SHORT_LENGTH
+
+ com.ibm.icu4jni.text.BreakIterator wrapped
+----------------METHODS----------------
+
+protected void <init>()
+
+ void <init>(
+com.ibm.icu4jni.text.BreakIterator)
+
+public static java.util.Locale[] getAvailableLocales()
+
+public static java.text.BreakIterator getCharacterInstance()
+
+public static java.text.BreakIterator getCharacterInstance(
+java.util.Locale)
+
+protected static int getInt(
+byte[]
+int)
+
+public static java.text.BreakIterator getLineInstance()
+
+public static java.text.BreakIterator getLineInstance(
+java.util.Locale)
+
+protected static long getLong(
+byte[]
+int)
+
+public static java.text.BreakIterator getSentenceInstance()
+
+public static java.text.BreakIterator getSentenceInstance(
+java.util.Locale)
+
+protected static short getShort(
+byte[]
+int)
+
+public static java.text.BreakIterator getWordInstance()
+
+public static java.text.BreakIterator getWordInstance(
+java.util.Locale)
+
+public java.lang.Object clone()
+
+public abstract int current()
+
+public abstract int first()
+
+public abstract int following(
+int)
+
+public abstract java.text.CharacterIterator getText()
+
+public boolean isBoundary(
+int)
+
+public abstract int last()
+
+public abstract int next()
+
+public abstract int next(
+int)
+
+public int preceding(
+int)
+
+public abstract int previous()
+
+public void setText(
+java.lang.String)
+
+public abstract void setText(
+java.text.CharacterIterator)
+
+________________CLASS________________
+
+
+public class java.text.ChoiceFormat extends java.text.NumberFormat
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.String[] choiceFormats
+
+private double[] choiceLimits
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+double[]
+java.lang.String[])
+
+public static final double nextDouble(
+double)
+
+public static double nextDouble(
+double
+boolean)
+
+public static final double previousDouble(
+double)
+
+private int skipWhitespace(
+java.lang.String
+int)
+
+public void applyPattern(
+java.lang.String)
+
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.StringBuffer format(
+double
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public java.lang.StringBuffer format(
+long
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public java.lang.Object[] getFormats()
+
+public double[] getLimits()
+
+public int hashCode()
+
+public java.lang.Number parse(
+java.lang.String
+java.text.ParsePosition)
+
+public void setChoices(
+double[]
+java.lang.String[])
+
+public java.lang.String toPattern()
+
+________________CLASS________________
+
+
+public final class java.text.CollationElementIterator extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int NULLORDER
+
+private com.ibm.icu4jni.text.CollationElementIterator icuIterator
+----------------METHODS----------------
+
+ void <init>(
+com.ibm.icu4jni.text.CollationElementIterator)
+
+public static final int primaryOrder(
+int)
+
+public static final short secondaryOrder(
+int)
+
+public static final short tertiaryOrder(
+int)
+
+public int getMaxExpansion(
+int)
+
+public int getOffset()
+
+public int next()
+
+public int previous()
+
+public void reset()
+
+public void setOffset(
+int)
+
+public void setText(
+java.lang.String)
+
+public void setText(
+java.text.CharacterIterator)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/lang/Comparable<Ljava/text/CollationKey;>; )
+public final class java.text.CollationKey extends java.lang.Object implements java.lang.Comparable
+
+----------------FIELDS----------------
+
+private com.ibm.icu4jni.text.CollationKey icuKey
+
+private java.lang.String source
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+com.ibm.icu4jni.text.CollationKey)
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.text.CollationKey)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getSourceString()
+
+public int hashCode()
+
+public byte[] toByteArray()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Comparator<Ljava/lang/Object;>;Ljava/lang/Cloneable; )
+public abstract class java.text.Collator extends java.lang.Object implements java.util.Comparator, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private static int CACHE_SIZE
+
+public static final int CANONICAL_DECOMPOSITION
+
+static final int EQUAL
+
+public static final int FULL_DECOMPOSITION
+
+static final int GREATER
+
+public static final int IDENTICAL
+
+static final int LESS
+
+public static final int NO_DECOMPOSITION
+
+public static final int PRIMARY
+
+public static final int SECONDARY
+
+public static final int TERTIARY
+@dalvik.annotation.Signature (value =Ljava/util/Vector<Ljava/text/Collator;>; )
+private static java.util.Vector cache
+
+ com.ibm.icu4jni.text.Collator icuColl
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>()
+
+ void <init>(
+com.ibm.icu4jni.text.Collator)
+
+private int decompositionMode_ICU_Java(
+int)
+
+private int decompositionMode_Java_ICU(
+int)
+
+public static java.util.Locale[] getAvailableLocales()
+
+public static java.text.Collator getInstance()
+
+public static java.text.Collator getInstance(
+java.util.Locale)
+
+private int strength_ICU_Java(
+int)
+
+private int strength_Java_ICU(
+int)
+
+public java.lang.Object clone()
+
+public int compare(
+java.lang.Object
+java.lang.Object)
+
+public abstract int compare(
+java.lang.String
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+
+public boolean equals(
+java.lang.String
+java.lang.String)
+
+public abstract java.text.CollationKey getCollationKey(
+java.lang.String)
+
+public int getDecomposition()
+
+public int getStrength()
+
+public abstract int hashCode()
+
+public void setDecomposition(
+int)
+
+public void setStrength(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Field )
+@dalvik.annotation.EnclosingClass (value =Ljava/text/Format; )
+public class java.text.Format$Field extends java.text.AttributedCharacterIterator$Attribute
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/text/DateFormat; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Field )
+public class java.text.DateFormat$Field extends java.text.Format$Field
+
+----------------FIELDS----------------
+
+public static final java.text.DateFormat$Field AM_PM
+
+public static final java.text.DateFormat$Field DAY_OF_MONTH
+
+public static final java.text.DateFormat$Field DAY_OF_WEEK
+
+public static final java.text.DateFormat$Field DAY_OF_WEEK_IN_MONTH
+
+public static final java.text.DateFormat$Field DAY_OF_YEAR
+
+public static final java.text.DateFormat$Field ERA
+
+public static final java.text.DateFormat$Field HOUR0
+
+public static final java.text.DateFormat$Field HOUR1
+
+public static final java.text.DateFormat$Field HOUR_OF_DAY0
+
+public static final java.text.DateFormat$Field HOUR_OF_DAY1
+
+public static final java.text.DateFormat$Field MILLISECOND
+
+public static final java.text.DateFormat$Field MINUTE
+
+public static final java.text.DateFormat$Field MONTH
+
+public static final java.text.DateFormat$Field SECOND
+
+public static final java.text.DateFormat$Field TIME_ZONE
+
+public static final java.text.DateFormat$Field WEEK_OF_MONTH
+
+public static final java.text.DateFormat$Field WEEK_OF_YEAR
+
+public static final java.text.DateFormat$Field YEAR
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable<Ljava/lang/Integer;Ljava/text/DateFormat$Field;>; )
+private static java.util.Hashtable table
+
+private int calendarField
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.lang.String
+int)
+
+public static java.text.DateFormat$Field ofCalendarField(
+int)
+
+public int getCalendarField()
+@dalvik.annotation.Throws (value =Ljava/io/InvalidObjectException; )
+protected java.lang.Object readResolve()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/text/DateFormat$Field; )
+public abstract class java.text.DateFormat extends java.text.Format
+
+----------------FIELDS----------------
+
+public static final int AM_PM_FIELD
+
+public static final int DATE_FIELD
+
+public static final int DAY_OF_WEEK_FIELD
+
+public static final int DAY_OF_WEEK_IN_MONTH_FIELD
+
+public static final int DAY_OF_YEAR_FIELD
+
+public static final int DEFAULT
+
+public static final int ERA_FIELD
+
+public static final int FULL
+
+public static final int HOUR0_FIELD
+
+public static final int HOUR1_FIELD
+
+public static final int HOUR_OF_DAY0_FIELD
+
+public static final int HOUR_OF_DAY1_FIELD
+
+public static final int LONG
+
+public static final int MEDIUM
+
+public static final int MILLISECOND_FIELD
+
+public static final int MINUTE_FIELD
+
+public static final int MONTH_FIELD
+
+public static final int SECOND_FIELD
+
+public static final int SHORT
+
+public static final int TIMEZONE_FIELD
+
+public static final int WEEK_OF_MONTH_FIELD
+
+public static final int WEEK_OF_YEAR_FIELD
+
+public static final int YEAR_FIELD
+
+private static final long serialVersionUID
+
+protected java.util.Calendar calendar
+
+protected java.text.NumberFormat numberFormat
+----------------METHODS----------------
+
+protected void <init>()
+
+private static void checkDateStyle(
+int)
+
+private static void checkTimeStyle(
+int)
+
+public static java.util.Locale[] getAvailableLocales()
+
+public static final java.text.DateFormat getDateInstance()
+
+public static final java.text.DateFormat getDateInstance(
+int)
+
+public static final java.text.DateFormat getDateInstance(
+int
+java.util.Locale)
+
+public static final java.text.DateFormat getDateTimeInstance()
+
+public static final java.text.DateFormat getDateTimeInstance(
+int
+int)
+
+public static final java.text.DateFormat getDateTimeInstance(
+int
+int
+java.util.Locale)
+
+public static final java.text.DateFormat getInstance()
+
+static java.lang.String getStyleName(
+int)
+
+public static final java.text.DateFormat getTimeInstance()
+
+public static final java.text.DateFormat getTimeInstance(
+int)
+
+public static final java.text.DateFormat getTimeInstance(
+int
+java.util.Locale)
+
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public final java.lang.String format(
+java.util.Date)
+
+public final java.lang.StringBuffer format(
+java.lang.Object
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public abstract java.lang.StringBuffer format(
+java.util.Date
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public java.util.Calendar getCalendar()
+
+public java.text.NumberFormat getNumberFormat()
+
+public java.util.TimeZone getTimeZone()
+
+public int hashCode()
+
+public boolean isLenient()
+@dalvik.annotation.Throws (value =Ljava/text/ParseException; )
+public java.util.Date parse(
+java.lang.String)
+
+public abstract java.util.Date parse(
+java.lang.String
+java.text.ParsePosition)
+
+public java.lang.Object parseObject(
+java.lang.String
+java.text.ParsePosition)
+
+public void setCalendar(
+java.util.Calendar)
+
+public void setLenient(
+boolean)
+
+public void setNumberFormat(
+java.text.NumberFormat)
+
+public void setTimeZone(
+java.util.TimeZone)
+
+________________CLASS________________
+
+
+public class java.text.DateFormatSymbols extends java.lang.Object implements java.io.Serializable, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+ java.lang.String[] ampms
+
+ java.lang.String[] eras
+
+private java.lang.String localPatternChars
+
+final transient java.util.Locale locale
+
+ java.lang.String[] months
+
+ java.lang.String[] shortMonths
+
+ java.lang.String[] shortWeekdays
+
+ java.lang.String[] weekdays
+
+ java.lang.String[][] zoneStrings
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.util.Locale)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String[] getAmPmStrings()
+
+public java.lang.String[] getEras()
+
+public java.lang.String getLocalPatternChars()
+
+public java.lang.String[] getMonths()
+
+public java.lang.String[] getShortMonths()
+
+public java.lang.String[] getShortWeekdays()
+
+public java.lang.String[] getWeekdays()
+
+public java.lang.String[][] getZoneStrings()
+
+public int hashCode()
+
+ java.lang.String[][] internalZoneStrings()
+
+public void setAmPmStrings(
+java.lang.String[])
+
+public void setEras(
+java.lang.String[])
+
+public void setLocalPatternChars(
+java.lang.String)
+
+public void setMonths(
+java.lang.String[])
+
+public void setShortMonths(
+java.lang.String[])
+
+public void setShortWeekdays(
+java.lang.String[])
+
+public void setWeekdays(
+java.lang.String[])
+
+public void setZoneStrings(
+java.lang.String[][])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/reflect/Field;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.text.DecimalFormat$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.text.DecimalFormat this$0
+
+final java.lang.String val$fieldName
+
+final java.lang.Object val$target
+
+final java.lang.Object val$value
+----------------METHODS----------------
+
+ void <init>(
+java.text.DecimalFormat
+java.lang.Object
+java.lang.String
+java.lang.Object)
+
+public volatile java.lang.Object run()
+
+public java.lang.reflect.Field run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Object;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.text.DecimalFormat$2 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.text.DecimalFormat this$0
+
+final java.lang.String val$fieldName
+
+final java.lang.Object val$target
+----------------METHODS----------------
+
+ void <init>(
+java.text.DecimalFormat
+java.lang.Object
+java.lang.String)
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+
+public class java.text.DecimalFormat extends java.text.NumberFormat
+
+----------------FIELDS----------------
+
+private static final int CURRENT_SERIAL_VERTION
+
+private static final java.lang.Double NEGATIVE_ZERO_DOUBLE
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+private transient com.ibm.icu4jni.text.DecimalFormat dform
+
+private transient com.ibm.icu4jni.text.DecimalFormatSymbols icuSymbols
+
+private transient boolean parseBigDecimal
+
+private transient int serialVersionOnStream
+
+private transient java.text.DecimalFormatSymbols symbols
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.text.DecimalFormatSymbols)
+
+private void copySymbols(
+com.ibm.icu4jni.text.DecimalFormatSymbols
+java.text.DecimalFormatSymbols)
+
+private java.lang.Object getInternalField(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+private void setInternalField(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public void applyLocalizedPattern(
+java.lang.String)
+
+public void applyPattern(
+java.lang.String)
+
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.StringBuffer format(
+double
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public java.lang.StringBuffer format(
+long
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public final java.lang.StringBuffer format(
+java.lang.Object
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public java.text.AttributedCharacterIterator formatToCharacterIterator(
+java.lang.Object)
+
+public java.util.Currency getCurrency()
+
+public java.text.DecimalFormatSymbols getDecimalFormatSymbols()
+
+public int getGroupingSize()
+
+public int getMultiplier()
+
+public java.lang.String getNegativePrefix()
+
+public java.lang.String getNegativeSuffix()
+
+public java.lang.String getPositivePrefix()
+
+public java.lang.String getPositiveSuffix()
+
+public int hashCode()
+
+public boolean isDecimalSeparatorAlwaysShown()
+
+public boolean isGroupingUsed()
+
+public boolean isParseBigDecimal()
+
+public boolean isParseIntegerOnly()
+
+public java.lang.Number parse(
+java.lang.String
+java.text.ParsePosition)
+
+public void setCurrency(
+java.util.Currency)
+
+public void setDecimalFormatSymbols(
+java.text.DecimalFormatSymbols)
+
+public void setDecimalSeparatorAlwaysShown(
+boolean)
+
+public void setGroupingSize(
+int)
+
+public void setGroupingUsed(
+boolean)
+
+public void setMaximumFractionDigits(
+int)
+
+public void setMaximumIntegerDigits(
+int)
+
+public void setMinimumFractionDigits(
+int)
+
+public void setMinimumIntegerDigits(
+int)
+
+public void setMultiplier(
+int)
+
+public void setNegativePrefix(
+java.lang.String)
+
+public void setNegativeSuffix(
+java.lang.String)
+
+public void setParseBigDecimal(
+boolean)
+
+public void setParseIntegerOnly(
+boolean)
+
+public void setPositivePrefix(
+java.lang.String)
+
+public void setPositiveSuffix(
+java.lang.String)
+
+public java.lang.String toLocalizedPattern()
+
+public java.lang.String toPattern()
+
+________________CLASS________________
+
+
+public final class java.text.DecimalFormatSymbols extends java.lang.Object implements java.lang.Cloneable, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+private final int DecimalSeparator
+
+private final int Digit
+
+private final int Exponent
+
+private final int GroupingSeparator
+
+private final int MinusSign
+
+private final int MonetaryDecimalSeparator
+
+private java.lang.String NaN
+
+private final int PatternSeparator
+
+private final int PerMill
+
+private final int Percent
+
+private final int ZeroDigit
+
+private transient java.util.Currency currency
+
+private java.lang.String currencySymbol
+
+private java.lang.String infinity
+
+private java.lang.String intlCurrencySymbol
+
+private transient java.util.Locale locale
+
+transient char[] patternChars
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+java.util.Locale)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public java.util.Currency getCurrency()
+
+public java.lang.String getCurrencySymbol()
+
+public char getDecimalSeparator()
+
+public char getDigit()
+
+ char getExponential()
+
+public char getGroupingSeparator()
+
+public java.lang.String getInfinity()
+
+public java.lang.String getInternationalCurrencySymbol()
+
+ java.lang.String getLocalPatternChars()
+
+public char getMinusSign()
+
+public char getMonetaryDecimalSeparator()
+
+public java.lang.String getNaN()
+
+public char getPatternSeparator()
+
+public char getPerMill()
+
+public char getPercent()
+
+public char getZeroDigit()
+
+public int hashCode()
+
+public void setCurrency(
+java.util.Currency)
+
+public void setCurrencySymbol(
+java.lang.String)
+
+public void setDecimalSeparator(
+char)
+
+public void setDigit(
+char)
+
+ void setExponential(
+char)
+
+public void setGroupingSeparator(
+char)
+
+public void setInfinity(
+java.lang.String)
+
+public void setInternationalCurrencySymbol(
+java.lang.String)
+
+public void setMinusSign(
+char)
+
+public void setMonetaryDecimalSeparator(
+char)
+
+public void setNaN(
+java.lang.String)
+
+public void setPatternSeparator(
+char)
+
+public void setPerMill(
+char)
+
+public void setPercent(
+char)
+
+public void setZeroDigit(
+char)
+
+________________CLASS________________
+
+
+public class java.text.FieldPosition extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int beginIndex
+
+private int endIndex
+
+private java.text.Format$Field myAttribute
+
+private int myField
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+java.text.Format$Field)
+
+public void <init>(
+java.text.Format$Field
+int)
+
+ void clear()
+
+public boolean equals(
+java.lang.Object)
+
+public int getBeginIndex()
+
+public int getEndIndex()
+
+public int getField()
+
+public java.text.Format$Field getFieldAttribute()
+
+public int hashCode()
+
+public void setBeginIndex(
+int)
+
+public void setEndIndex(
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/util/ResourceBundle;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class java.text.Format$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.util.Locale val$locale
+----------------METHODS----------------
+
+ void <init>(
+java.util.Locale)
+
+public volatile java.lang.Object run()
+
+public java.util.ResourceBundle run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Field )
+@dalvik.annotation.EnclosingClass (value =Ljava/text/MessageFormat; )
+public class java.text.MessageFormat$Field extends java.text.Format$Field
+
+----------------FIELDS----------------
+
+public static final java.text.MessageFormat$Field ARGUMENT
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/InvalidObjectException; )
+protected java.lang.Object readResolve()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/text/MessageFormat; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =FieldContainer )
+ class java.text.MessageFormat$FieldContainer extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.text.AttributedCharacterIterator$Attribute attribute
+
+ int end
+
+ int start
+
+ java.lang.Object value
+----------------METHODS----------------
+
+public void <init>(
+int
+int
+java.text.AttributedCharacterIterator$Attribute
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/text/MessageFormat$Field;Ljava/text/MessageFormat$FieldContainer; )
+public class java.text.MessageFormat extends java.text.Format
+
+----------------FIELDS----------------
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+private int[] argumentNumbers
+
+private java.text.Format[] formats
+
+private java.util.Locale locale
+
+private transient int maxArgumentIndex
+
+private int maxOffset
+
+private transient java.lang.String[] strings
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.util.Locale)
+
+private void appendQuoted(
+java.lang.StringBuffer
+java.lang.String)
+
+private java.lang.String decodeDecimalFormat(
+java.lang.StringBuffer
+java.text.Format)
+
+private java.lang.String decodeSimpleDateFormat(
+java.lang.StringBuffer
+java.text.Format)
+
+public static transient java.lang.String format(
+java.lang.String
+java.lang.Object[])
+@dalvik.annotation.Signature (value =([Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/Vector<Ljava/text/MessageFormat$FieldContainer;>;)Ljava/lang/StringBuffer; )
+private java.lang.StringBuffer formatImpl(
+java.lang.Object[]
+java.lang.StringBuffer
+java.text.FieldPosition
+java.util.Vector)
+@dalvik.annotation.Signature (value =(IIILjava/text/FieldPosition;Ljava/util/Vector<Ljava/text/MessageFormat$FieldContainer;>;)V )
+private void handleArgumentField(
+int
+int
+int
+java.text.FieldPosition
+java.util.Vector)
+@dalvik.annotation.Signature (value =(Ljava/text/Format;Ljava/lang/Object;ILjava/util/Vector<Ljava/text/MessageFormat$FieldContainer;>;)V )
+private void handleformat(
+java.text.Format
+java.lang.Object
+int
+java.util.Vector)
+
+private int match(
+java.lang.String
+java.text.ParsePosition
+boolean
+java.lang.String[])
+
+private java.text.Format parseVariable(
+java.lang.String
+java.text.ParsePosition)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public void applyPattern(
+java.lang.String)
+
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public final java.lang.StringBuffer format(
+java.lang.Object
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public final java.lang.StringBuffer format(
+java.lang.Object[]
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public java.text.AttributedCharacterIterator formatToCharacterIterator(
+java.lang.Object)
+
+public java.text.Format[] getFormats()
+
+public java.text.Format[] getFormatsByArgumentIndex()
+
+public java.util.Locale getLocale()
+
+public int hashCode()
+@dalvik.annotation.Throws (value =Ljava/text/ParseException; )
+public java.lang.Object[] parse(
+java.lang.String)
+
+public java.lang.Object[] parse(
+java.lang.String
+java.text.ParsePosition)
+
+public java.lang.Object parseObject(
+java.lang.String
+java.text.ParsePosition)
+
+public void setFormat(
+int
+java.text.Format)
+
+public void setFormatByArgumentIndex(
+int
+java.text.Format)
+
+public void setFormats(
+java.text.Format[])
+
+public void setFormatsByArgumentIndex(
+java.text.Format[])
+
+public void setLocale(
+java.util.Locale)
+
+public java.lang.String toPattern()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Field )
+@dalvik.annotation.EnclosingClass (value =Ljava/text/NumberFormat; )
+public class java.text.NumberFormat$Field extends java.text.Format$Field
+
+----------------FIELDS----------------
+
+public static final java.text.NumberFormat$Field CURRENCY
+
+public static final java.text.NumberFormat$Field DECIMAL_SEPARATOR
+
+public static final java.text.NumberFormat$Field EXPONENT
+
+public static final java.text.NumberFormat$Field EXPONENT_SIGN
+
+public static final java.text.NumberFormat$Field EXPONENT_SYMBOL
+
+public static final java.text.NumberFormat$Field FRACTION
+
+public static final java.text.NumberFormat$Field GROUPING_SEPARATOR
+
+public static final java.text.NumberFormat$Field INTEGER
+
+public static final java.text.NumberFormat$Field PERCENT
+
+public static final java.text.NumberFormat$Field PERMILLE
+
+public static final java.text.NumberFormat$Field SIGN
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/InvalidObjectException; )
+protected java.lang.Object readResolve()
+
+________________CLASS________________
+
+
+public class java.text.ParseException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private int errorOffset
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+int)
+
+public int getErrorOffset()
+
+________________CLASS________________
+
+
+public class java.text.ParsePosition extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int currentPosition
+
+private int errorIndex
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public boolean equals(
+java.lang.Object)
+
+public int getErrorIndex()
+
+public int getIndex()
+
+public int hashCode()
+
+public void setErrorIndex(
+int)
+
+public void setIndex(
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+ class java.text.RuleBasedBreakIterator extends java.text.BreakIterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+com.ibm.icu4jni.text.BreakIterator)
+
+private void validateOffset(
+int)
+
+public java.lang.Object clone()
+
+public int current()
+
+public boolean equals(
+java.lang.Object)
+
+public int first()
+
+public int following(
+int)
+
+public java.text.CharacterIterator getText()
+
+public int hashCode()
+
+public boolean isBoundary(
+int)
+
+public int last()
+
+public int next()
+
+public int next(
+int)
+
+public int preceding(
+int)
+
+public int previous()
+
+public void setText(
+java.text.CharacterIterator)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.text.RuleBasedCollator extends java.text.Collator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+com.ibm.icu4jni.text.Collator)
+@dalvik.annotation.Throws (value =Ljava/text/ParseException; )
+public void <init>(
+java.lang.String)
+
+public java.lang.Object clone()
+
+public int compare(
+java.lang.String
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+
+public java.text.CollationElementIterator getCollationElementIterator(
+java.lang.String)
+
+public java.text.CollationElementIterator getCollationElementIterator(
+java.text.CharacterIterator)
+
+public java.text.CollationKey getCollationKey(
+java.lang.String)
+
+public java.lang.String getRules()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class java.text.SimpleDateFormat extends java.text.DateFormat
+
+----------------FIELDS----------------
+
+private static final java.lang.String patternChars
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+private transient int creationYear
+
+private java.util.Date defaultCenturyStart
+
+private java.text.DateFormatSymbols formatData
+
+private java.lang.String pattern
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.text.DateFormatSymbols)
+
+public void <init>(
+java.lang.String
+java.util.Locale)
+
+private void <init>(
+java.util.Locale)
+@dalvik.annotation.Signature (value =(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/Vector<Ljava/text/FieldPosition;>;CI)V )
+private void append(
+java.lang.StringBuffer
+java.text.FieldPosition
+java.util.Vector
+char
+int)
+
+private void appendNumber(
+java.lang.StringBuffer
+int
+int)
+
+private void appendTimeZone(
+java.lang.StringBuffer
+int
+boolean)
+
+private static java.lang.String defaultPattern()
+
+private java.util.Date error(
+java.text.ParsePosition
+int
+java.util.TimeZone)
+@dalvik.annotation.Signature (value =(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/Vector<Ljava/text/FieldPosition;>;)Ljava/lang/StringBuffer; )
+private java.lang.StringBuffer formatImpl(
+java.util.Date
+java.lang.StringBuffer
+java.text.FieldPosition
+java.util.Vector)
+
+private java.text.AttributedCharacterIterator formatToCharacterIteratorImpl(
+java.util.Date)
+
+private int parse(
+java.lang.String
+int
+char
+int)
+
+private int parseNumber(
+int
+java.lang.String
+int
+int
+int)
+
+private java.lang.Number parseNumber(
+int
+java.lang.String
+java.text.ParsePosition)
+
+private int parseText(
+java.lang.String
+int
+java.lang.String[]
+int)
+
+private int parseTimeZone(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+private void validateFormat(
+char)
+
+private void validatePattern(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public void applyLocalizedPattern(
+java.lang.String)
+
+public void applyPattern(
+java.lang.String)
+
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.StringBuffer format(
+java.util.Date
+java.lang.StringBuffer
+java.text.FieldPosition)
+
+public java.text.AttributedCharacterIterator formatToCharacterIterator(
+java.lang.Object)
+
+public java.util.Date get2DigitYearStart()
+
+public java.text.DateFormatSymbols getDateFormatSymbols()
+
+public int hashCode()
+
+public java.util.Date parse(
+java.lang.String
+java.text.ParsePosition)
+
+public void set2DigitYearStart(
+java.util.Date)
+
+public void setDateFormatSymbols(
+java.text.DateFormatSymbols)
+
+public java.lang.String toLocalizedPattern()
+
+public java.lang.String toPattern()
+
+________________CLASS________________
+
+
+public final class java.text.StringCharacterIterator extends java.lang.Object implements java.text.CharacterIterator
+
+----------------FIELDS----------------
+
+ int end
+
+ int offset
+
+ int start
+
+ java.lang.String string
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+int)
+
+public void <init>(
+java.lang.String
+int
+int
+int)
+
+public java.lang.Object clone()
+
+public char current()
+
+public boolean equals(
+java.lang.Object)
+
+public char first()
+
+public int getBeginIndex()
+
+public int getEndIndex()
+
+public int getIndex()
+
+public int hashCode()
+
+public char last()
+
+public char next()
+
+public char previous()
+
+public char setIndex(
+int)
+
+public void setText(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/lang/Iterable<TE;>; )
+public abstract interface class java.util.Collection extends java.lang.Object implements java.lang.Iterable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TE;)Z )
+public abstract boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public abstract boolean addAll(
+java.util.Collection)
+
+public abstract void clear()
+
+public abstract boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public abstract boolean containsAll(
+java.util.Collection)
+
+public abstract boolean equals(
+java.lang.Object)
+
+public abstract int hashCode()
+
+public abstract boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public abstract java.util.Iterator iterator()
+
+public abstract boolean remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public abstract boolean removeAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public abstract boolean retainAll(
+java.util.Collection)
+
+public abstract int size()
+
+public abstract java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public abstract java.lang.Object[] toArray(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Collection<TE;>; )
+public abstract class java.util.AbstractCollection extends java.lang.Object implements java.util.Collection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+java.util.Collection)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean containsAll(
+java.util.Collection)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public abstract java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean removeAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean retainAll(
+java.util.Collection)
+
+public abstract int size()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =SimpleListIterator )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<TE;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/AbstractList; )
+ class java.util.AbstractList$SimpleListIterator extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+
+ int expectedModCount
+
+ int lastPosition
+
+ int pos
+
+final java.util.AbstractList this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.AbstractList)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Iterator<TE;>; )
+public abstract interface class java.util.ListIterator extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TE;)V )
+public abstract void add(
+java.lang.Object)
+
+public abstract boolean hasNext()
+
+public abstract boolean hasPrevious()
+@dalvik.annotation.Signature (value =()TE; )
+public abstract java.lang.Object next()
+
+public abstract int nextIndex()
+@dalvik.annotation.Signature (value =()TE; )
+public abstract java.lang.Object previous()
+
+public abstract int previousIndex()
+
+public abstract void remove()
+@dalvik.annotation.Signature (value =(TE;)V )
+public abstract void set(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/AbstractList; )
+@dalvik.annotation.InnerClass (accessFlags =18 name =FullListIterator )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractList<TE;>.SimpleListIterator;Ljava/util/ListIterator<TE;>; )
+final class java.util.AbstractList$FullListIterator extends java.util.AbstractList$SimpleListIterator implements java.util.ListIterator
+
+----------------FIELDS----------------
+
+final java.util.AbstractList this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.AbstractList
+int)
+@dalvik.annotation.Signature (value =(TE;)V )
+public void add(
+java.lang.Object)
+
+public boolean hasPrevious()
+
+public int nextIndex()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object previous()
+
+public int previousIndex()
+@dalvik.annotation.Signature (value =(TE;)V )
+public void set(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/AbstractList$SubAbstractList; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =SubAbstractListIterator )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/ListIterator<TE;>; )
+final class java.util.AbstractList$SubAbstractList$SubAbstractListIterator extends java.lang.Object implements java.util.ListIterator
+
+----------------FIELDS----------------
+
+private int end
+@dalvik.annotation.Signature (value =Ljava/util/ListIterator<TE;>; )
+private final java.util.ListIterator iterator
+
+private int start
+@dalvik.annotation.Signature (value =Ljava/util/AbstractList$SubAbstractList<TE;>; )
+private final java.util.AbstractList$SubAbstractList subList
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/ListIterator<TE;>;Ljava/util/AbstractList$SubAbstractList<TE;>;II)V )
+ void <init>(
+java.util.ListIterator
+java.util.AbstractList$SubAbstractList
+int
+int)
+@dalvik.annotation.Signature (value =(TE;)V )
+public void add(
+java.lang.Object)
+
+public boolean hasNext()
+
+public boolean hasPrevious()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public int nextIndex()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object previous()
+
+public int previousIndex()
+
+public void remove()
+@dalvik.annotation.Signature (value =(TE;)V )
+public void set(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Collection<TE;>; )
+public abstract interface class java.util.List extends java.lang.Object implements java.util.Collection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(ITE;)V )
+public abstract void add(
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public abstract boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(ILjava/util/Collection<+TE;>;)Z )
+public abstract boolean addAll(
+int
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public abstract boolean addAll(
+java.util.Collection)
+
+public abstract void clear()
+
+public abstract boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public abstract boolean containsAll(
+java.util.Collection)
+
+public abstract boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(I)TE; )
+public abstract java.lang.Object get(
+int)
+
+public abstract int hashCode()
+
+public abstract int indexOf(
+java.lang.Object)
+
+public abstract boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public abstract java.util.Iterator iterator()
+
+public abstract int lastIndexOf(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/ListIterator<TE;>; )
+public abstract java.util.ListIterator listIterator()
+@dalvik.annotation.Signature (value =(I)Ljava/util/ListIterator<TE;>; )
+public abstract java.util.ListIterator listIterator(
+int)
+@dalvik.annotation.Signature (value =(I)TE; )
+public abstract java.lang.Object remove(
+int)
+
+public abstract boolean remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public abstract boolean removeAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public abstract boolean retainAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(ITE;)TE; )
+public abstract java.lang.Object set(
+int
+java.lang.Object)
+
+public abstract int size()
+@dalvik.annotation.Signature (value =(II)Ljava/util/List<TE;>; )
+public abstract java.util.List subList(
+int
+int)
+
+public abstract java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public abstract java.lang.Object[] toArray(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/AbstractList$SubAbstractList;Ljava/util/AbstractList$SubAbstractListRandomAccess;Ljava/util/AbstractList$FullListIterator;Ljava/util/AbstractList$SimpleListIterator; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractCollection<TE;>;Ljava/util/List<TE;>; )
+public abstract class java.util.AbstractList extends java.util.AbstractCollection implements java.util.List
+
+----------------FIELDS----------------
+
+protected transient int modCount
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Signature (value =(ITE;)V )
+public void add(
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(ILjava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+int
+java.util.Collection)
+
+public void clear()
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(I)TE; )
+public abstract java.lang.Object get(
+int)
+
+public int hashCode()
+
+public int indexOf(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+
+public int lastIndexOf(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/ListIterator<TE;>; )
+public java.util.ListIterator listIterator()
+@dalvik.annotation.Signature (value =(I)Ljava/util/ListIterator<TE;>; )
+public java.util.ListIterator listIterator(
+int)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object remove(
+int)
+
+protected void removeRange(
+int
+int)
+@dalvik.annotation.Signature (value =(ITE;)TE; )
+public java.lang.Object set(
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(II)Ljava/util/List<TE;>; )
+public java.util.List subList(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/AbstractList$SubAbstractList$SubAbstractListIterator; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractList<TE;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =SubAbstractList )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/AbstractList; )
+ class java.util.AbstractList$SubAbstractList extends java.util.AbstractList
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/AbstractList<TE;>; )
+private final java.util.AbstractList fullList
+
+private int offset
+
+private int size
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/AbstractList<TE;>;II)V )
+ void <init>(
+java.util.AbstractList
+int
+int)
+@dalvik.annotation.Signature (value =(ITE;)V )
+public void add(
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(ILjava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+int
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object get(
+int)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+@dalvik.annotation.Signature (value =(I)Ljava/util/ListIterator<TE;>; )
+public java.util.ListIterator listIterator(
+int)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object remove(
+int)
+
+protected void removeRange(
+int
+int)
+@dalvik.annotation.Signature (value =(ITE;)TE; )
+public java.lang.Object set(
+int
+java.lang.Object)
+
+public int size()
+
+ void sizeChanged(
+boolean)
+
+________________CLASS________________
+
+
+public abstract interface class java.util.RandomAccess extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =SubAbstractListRandomAccess )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/AbstractList; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractList$SubAbstractList<TE;>;Ljava/util/RandomAccess; )
+final class java.util.AbstractList$SubAbstractListRandomAccess extends java.util.AbstractList$SubAbstractList implements java.util.RandomAccess
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/AbstractList<TE;>;II)V )
+ void <init>(
+java.util.AbstractList
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<TK;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.AbstractMap$1$1 extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+ java.util.Iterator setIterator
+
+final java.util.AbstractMap$1 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.AbstractMap$1)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Collection<TE;>; )
+public abstract interface class java.util.Set extends java.lang.Object implements java.util.Collection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TE;)Z )
+public abstract boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public abstract boolean addAll(
+java.util.Collection)
+
+public abstract void clear()
+
+public abstract boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public abstract boolean containsAll(
+java.util.Collection)
+
+public abstract boolean equals(
+java.lang.Object)
+
+public abstract int hashCode()
+
+public abstract boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public abstract java.util.Iterator iterator()
+
+public abstract boolean remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public abstract boolean removeAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public abstract boolean retainAll(
+java.util.Collection)
+
+public abstract int size()
+
+public abstract java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public abstract java.lang.Object[] toArray(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractCollection<TE;>;Ljava/util/Set<TE;>; )
+public abstract class java.util.AbstractSet extends java.util.AbstractCollection implements java.util.Set
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean removeAll(
+java.util.Collection)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/util/AbstractSet<TK;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.AbstractMap$1 extends java.util.AbstractSet
+
+----------------FIELDS----------------
+
+final java.util.AbstractMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.AbstractMap)
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TK;>; )
+public java.util.Iterator iterator()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<TV;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.AbstractMap$2$1 extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+ java.util.Iterator setIterator
+
+final java.util.AbstractMap$2 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.AbstractMap$2)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TV; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractCollection<TV;>; )
+ class java.util.AbstractMap$2 extends java.util.AbstractCollection
+
+----------------FIELDS----------------
+
+final java.util.AbstractMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.AbstractMap)
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TV;>; )
+public java.util.Iterator iterator()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Collection<TE;>; )
+public abstract interface class java.util.Queue extends java.lang.Object implements java.util.Collection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =()TE; )
+public abstract java.lang.Object element()
+@dalvik.annotation.Signature (value =(TE;)Z )
+public abstract boolean offer(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TE; )
+public abstract java.lang.Object peek()
+@dalvik.annotation.Signature (value =()TE; )
+public abstract java.lang.Object poll()
+@dalvik.annotation.Signature (value =()TE; )
+public abstract java.lang.Object remove()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractCollection<TE;>;Ljava/util/Queue<TE;>; )
+public abstract class java.util.AbstractQueue extends java.util.AbstractCollection implements java.util.Queue
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+java.util.Collection)
+
+public void clear()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object element()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object remove()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractList<TE;>; )
+public abstract class java.util.AbstractSequentialList extends java.util.AbstractList
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Signature (value =(ITE;)V )
+public void add(
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(ILjava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+int
+java.util.Collection)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object get(
+int)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+@dalvik.annotation.Signature (value =(I)Ljava/util/ListIterator<TE;>; )
+public abstract java.util.ListIterator listIterator(
+int)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object remove(
+int)
+@dalvik.annotation.Signature (value =(ITE;)TE; )
+public java.lang.Object set(
+int
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractList<TE;>;Ljava/util/List<TE;>;Ljava/lang/Cloneable;Ljava/io/Serializable;Ljava/util/RandomAccess; )
+public class java.util.ArrayList extends java.util.AbstractList implements java.util.List, java.lang.Cloneable, java.io.Serializable, java.util.RandomAccess
+
+----------------FIELDS----------------
+
+private static final java.lang.Object[] emptyArray
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =[TE; )
+private transient java.lang.Object[] array
+
+private transient int firstIndex
+
+private transient int lastIndex
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)V )
+public void <init>(
+java.util.Collection)
+
+private void growAtEnd(
+int)
+
+private void growAtFront(
+int)
+
+private void growForInsert(
+int
+int)
+@dalvik.annotation.Signature (value =(I)[TE; )
+private java.lang.Object[] newElementArray(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Signature (value =(ITE;)V )
+public void add(
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(ILjava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+int
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+java.util.Collection)
+
+public void clear()
+
+public java.lang.Object clone()
+
+public boolean contains(
+java.lang.Object)
+
+public void ensureCapacity(
+int)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object get(
+int)
+
+public int indexOf(
+java.lang.Object)
+
+public boolean isEmpty()
+
+public int lastIndexOf(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object remove(
+int)
+
+public boolean remove(
+java.lang.Object)
+
+protected void removeRange(
+int
+int)
+@dalvik.annotation.Signature (value =(ITE;)TE; )
+public java.lang.Object set(
+int
+java.lang.Object)
+
+public int size()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+public void trimToSize()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Arrays; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractList<TE;>;Ljava/util/List<TE;>;Ljava/io/Serializable;Ljava/util/RandomAccess; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =ArrayList )
+ class java.util.Arrays$ArrayList extends java.util.AbstractList implements java.util.List, java.io.Serializable, java.util.RandomAccess
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =[TE; )
+private final java.lang.Object[] a
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =([TE;)V )
+ void <init>(
+java.lang.Object[])
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object get(
+int)
+
+public int indexOf(
+java.lang.Object)
+
+public int lastIndexOf(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(ITE;)TE; )
+public java.lang.Object set(
+int
+java.lang.Object)
+
+public int size()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/Arrays$ArrayList; )
+public class java.util.Arrays extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private static final int SIMPLE_LENGTH
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)Ljava/util/List<TT;>; )
+public static transient java.util.List asList(
+java.lang.Object[])
+
+public static int binarySearch(
+byte[]
+byte)
+
+public static int binarySearch(
+char[]
+char)
+
+public static int binarySearch(
+double[]
+double)
+
+public static int binarySearch(
+float[]
+float)
+
+public static int binarySearch(
+int[]
+int)
+
+public static int binarySearch(
+long[]
+long)
+
+public static int binarySearch(
+java.lang.Object[]
+java.lang.Object)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;TT;Ljava/util/Comparator<-TT;>;)I )
+public static int binarySearch(
+java.lang.Object[]
+java.lang.Object
+java.util.Comparator)
+
+public static int binarySearch(
+short[]
+short)
+
+private static int charAt(
+java.lang.String
+int)
+
+private static void checkBounds(
+int
+int
+int)
+
+private static void copySwap(
+java.lang.Object[]
+int
+java.lang.Object[]
+int
+int)
+
+public static boolean deepEquals(
+java.lang.Object[]
+java.lang.Object[])
+
+private static boolean deepEqualsElements(
+java.lang.Object
+java.lang.Object)
+
+public static int deepHashCode(
+java.lang.Object[])
+
+private static int deepHashCodeElement(
+java.lang.Object)
+
+public static java.lang.String deepToString(
+java.lang.Object[])
+
+private static java.lang.String deepToStringImpl(
+java.lang.Object[]
+java.lang.Object[]
+java.lang.StringBuilder)
+
+private static boolean deepToStringImplContains(
+java.lang.Object[]
+java.lang.Object)
+
+public static boolean equals(
+byte[]
+byte[])
+
+public static boolean equals(
+char[]
+char[])
+
+public static boolean equals(
+double[]
+double[])
+
+public static boolean equals(
+float[]
+float[])
+
+public static boolean equals(
+int[]
+int[])
+
+public static boolean equals(
+long[]
+long[])
+
+public static boolean equals(
+java.lang.Object[]
+java.lang.Object[])
+
+public static boolean equals(
+short[]
+short[])
+
+public static boolean equals(
+boolean[]
+boolean[])
+
+public static void fill(
+byte[]
+byte)
+
+public static void fill(
+byte[]
+int
+int
+byte)
+
+public static void fill(
+char[]
+char)
+
+public static void fill(
+char[]
+int
+int
+char)
+
+public static void fill(
+double[]
+double)
+
+public static void fill(
+double[]
+int
+int
+double)
+
+public static void fill(
+float[]
+float)
+
+public static void fill(
+float[]
+int
+int
+float)
+
+public static void fill(
+int[]
+int)
+
+public static void fill(
+int[]
+int
+int
+int)
+
+public static void fill(
+long[]
+int
+int
+long)
+
+public static void fill(
+long[]
+long)
+
+public static void fill(
+java.lang.Object[]
+int
+int
+java.lang.Object)
+
+public static void fill(
+java.lang.Object[]
+java.lang.Object)
+
+public static void fill(
+short[]
+int
+int
+short)
+
+public static void fill(
+short[]
+short)
+
+public static void fill(
+boolean[]
+int
+int
+boolean)
+
+public static void fill(
+boolean[]
+boolean)
+
+private static int find(
+java.lang.Object[]
+java.lang.Comparable
+int
+int
+int)
+
+private static int find(
+java.lang.Object[]
+java.lang.Object
+int
+int
+int
+java.util.Comparator)
+
+public static int hashCode(
+byte[])
+
+public static int hashCode(
+char[])
+
+public static int hashCode(
+double[])
+
+public static int hashCode(
+float[])
+
+public static int hashCode(
+int[])
+
+public static int hashCode(
+long[])
+
+public static int hashCode(
+java.lang.Object[])
+
+public static int hashCode(
+short[])
+
+public static int hashCode(
+boolean[])
+
+private static boolean lessThan(
+double
+double)
+
+private static boolean lessThan(
+float
+float)
+
+private static int med3(
+byte[]
+int
+int
+int)
+
+private static int med3(
+char[]
+int
+int
+int)
+
+private static int med3(
+double[]
+int
+int
+int)
+
+private static int med3(
+float[]
+int
+int
+int)
+
+private static int med3(
+int[]
+int
+int
+int)
+
+private static int med3(
+long[]
+int
+int
+int)
+
+private static int med3(
+short[]
+int
+int
+int)
+
+private static int medChar(
+int
+int
+int
+java.lang.String[]
+int)
+
+private static void mergeSort(
+java.lang.Object[]
+java.lang.Object[]
+int
+int)
+
+private static void mergeSort(
+java.lang.Object[]
+java.lang.Object[]
+int
+int
+java.util.Comparator)
+
+private static void sort(
+int
+int
+byte[])
+
+private static void sort(
+int
+int
+char[])
+
+private static void sort(
+int
+int
+double[])
+
+private static void sort(
+int
+int
+float[])
+
+private static void sort(
+int
+int
+int[])
+
+private static void sort(
+int
+int
+long[])
+
+private static void sort(
+int
+int
+java.lang.Object[])
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(II[TT;Ljava/util/Comparator<-TT;>;)V )
+private static void sort(
+int
+int
+java.lang.Object[]
+java.util.Comparator)
+
+private static void sort(
+int
+int
+short[])
+
+public static void sort(
+byte[])
+
+public static void sort(
+byte[]
+int
+int)
+
+public static void sort(
+char[])
+
+public static void sort(
+char[]
+int
+int)
+
+public static void sort(
+double[])
+
+public static void sort(
+double[]
+int
+int)
+
+public static void sort(
+float[])
+
+public static void sort(
+float[]
+int
+int)
+
+public static void sort(
+int[])
+
+public static void sort(
+int[]
+int
+int)
+
+public static void sort(
+long[])
+
+public static void sort(
+long[]
+int
+int)
+
+public static void sort(
+java.lang.Object[])
+
+public static void sort(
+java.lang.Object[]
+int
+int)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;IILjava/util/Comparator<-TT;>;)V )
+public static void sort(
+java.lang.Object[]
+int
+int
+java.util.Comparator)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;Ljava/util/Comparator<-TT;>;)V )
+public static void sort(
+java.lang.Object[]
+java.util.Comparator)
+
+public static void sort(
+short[])
+
+public static void sort(
+short[]
+int
+int)
+
+private static void stableStringSort(
+java.lang.String[]
+int
+int)
+
+private static void stableStringSort(
+java.lang.String[]
+java.lang.String[]
+java.lang.String[]
+int
+int
+int)
+
+private static void swap(
+int
+int
+java.lang.Object[])
+
+public static java.lang.String toString(
+byte[])
+
+public static java.lang.String toString(
+char[])
+
+public static java.lang.String toString(
+double[])
+
+public static java.lang.String toString(
+float[])
+
+public static java.lang.String toString(
+int[])
+
+public static java.lang.String toString(
+long[])
+
+public static java.lang.String toString(
+java.lang.Object[])
+
+public static java.lang.String toString(
+short[])
+
+public static java.lang.String toString(
+boolean[])
+
+________________CLASS________________
+
+
+public class java.util.BitSet extends java.lang.Object implements java.io.Serializable, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private static final int ELM_SIZE
+
+private static final long serialVersionUID
+
+private long[] bits
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+private void <init>(
+long[])
+
+private void growBits(
+int)
+
+public void and(
+java.util.BitSet)
+
+public void andNot(
+java.util.BitSet)
+
+public int cardinality()
+
+public void clear()
+
+public void clear(
+int)
+
+public void clear(
+int
+int)
+
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public void flip(
+int)
+
+public void flip(
+int
+int)
+
+public java.util.BitSet get(
+int
+int)
+
+public boolean get(
+int)
+
+public int hashCode()
+
+public boolean intersects(
+java.util.BitSet)
+
+public boolean isEmpty()
+
+public int length()
+
+public int nextClearBit(
+int)
+
+public int nextSetBit(
+int)
+
+public void or(
+java.util.BitSet)
+
+public void set(
+int)
+
+public void set(
+int
+int)
+
+public void set(
+int
+int
+boolean)
+
+public void set(
+int
+boolean)
+
+public int size()
+
+public java.lang.String toString()
+
+public void xor(
+java.util.BitSet)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Cloneable;Ljava/lang/Comparable<Ljava/util/Calendar;>; )
+public abstract class java.util.Calendar extends java.lang.Object implements java.io.Serializable, java.lang.Cloneable, java.lang.Comparable
+
+----------------FIELDS----------------
+
+public static final int AM
+
+public static final int AM_PM
+
+public static final int APRIL
+
+public static final int AUGUST
+
+public static final int DATE
+
+public static final int DAY_OF_MONTH
+
+public static final int DAY_OF_WEEK
+
+public static final int DAY_OF_WEEK_IN_MONTH
+
+public static final int DAY_OF_YEAR
+
+public static final int DECEMBER
+
+public static final int DST_OFFSET
+
+public static final int ERA
+
+public static final int FEBRUARY
+
+public static final int FIELD_COUNT
+
+public static final int FRIDAY
+
+public static final int HOUR
+
+public static final int HOUR_OF_DAY
+
+public static final int JANUARY
+
+public static final int JULY
+
+public static final int JUNE
+
+public static final int MARCH
+
+public static final int MAY
+
+public static final int MILLISECOND
+
+public static final int MINUTE
+
+public static final int MONDAY
+
+public static final int MONTH
+
+public static final int NOVEMBER
+
+public static final int OCTOBER
+
+public static final int PM
+
+public static final int SATURDAY
+
+public static final int SECOND
+
+public static final int SEPTEMBER
+
+public static final int SUNDAY
+
+public static final int THURSDAY
+
+public static final int TUESDAY
+
+public static final int UNDECIMBER
+
+public static final int WEDNESDAY
+
+public static final int WEEK_OF_MONTH
+
+public static final int WEEK_OF_YEAR
+
+public static final int YEAR
+
+public static final int ZONE_OFFSET
+
+private static java.lang.String[] fieldNames
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+protected boolean areFieldsSet
+
+protected int[] fields
+
+private int firstDayOfWeek
+
+protected boolean[] isSet
+
+protected boolean isTimeSet
+
+transient int lastDateFieldSet
+
+transient int lastTimeFieldSet
+
+private boolean lenient
+
+private int minimalDaysInFirstWeek
+
+protected long time
+
+private java.util.TimeZone zone
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>()
+
+ void <init>(
+java.util.TimeZone)
+
+protected void <init>(
+java.util.TimeZone
+java.util.Locale)
+
+public static java.util.Locale[] getAvailableLocales()
+
+public static java.util.Calendar getInstance()
+
+public static java.util.Calendar getInstance(
+java.util.Locale)
+
+public static java.util.Calendar getInstance(
+java.util.TimeZone)
+
+public static java.util.Calendar getInstance(
+java.util.TimeZone
+java.util.Locale)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public abstract void add(
+int
+int)
+
+public boolean after(
+java.lang.Object)
+
+public boolean before(
+java.lang.Object)
+
+public final void clear()
+
+public final void clear(
+int)
+
+public java.lang.Object clone()
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.util.Calendar)
+
+protected void complete()
+
+protected abstract void computeFields()
+
+protected abstract void computeTime()
+
+public boolean equals(
+java.lang.Object)
+
+public int get(
+int)
+
+public int getActualMaximum(
+int)
+
+public int getActualMinimum(
+int)
+
+public int getFirstDayOfWeek()
+
+public abstract int getGreatestMinimum(
+int)
+
+public abstract int getLeastMaximum(
+int)
+
+public abstract int getMaximum(
+int)
+
+public int getMinimalDaysInFirstWeek()
+
+public abstract int getMinimum(
+int)
+
+public final java.util.Date getTime()
+
+public long getTimeInMillis()
+
+public java.util.TimeZone getTimeZone()
+
+public int hashCode()
+
+protected final int internalGet(
+int)
+
+public boolean isLenient()
+
+public final boolean isSet(
+int)
+
+public void roll(
+int
+int)
+
+public abstract void roll(
+int
+boolean)
+
+public void set(
+int
+int)
+
+public final void set(
+int
+int
+int)
+
+public final void set(
+int
+int
+int
+int
+int)
+
+public final void set(
+int
+int
+int
+int
+int
+int)
+
+public void setFirstDayOfWeek(
+int)
+
+public void setLenient(
+boolean)
+
+public void setMinimalDaysInFirstWeek(
+int)
+
+public final void setTime(
+java.util.Date)
+
+public void setTimeInMillis(
+long)
+
+public void setTimeZone(
+java.util.TimeZone)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Enumeration<TT;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class java.util.Collections$1 extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Iterator<TT;>; )
+ java.util.Iterator it
+
+final java.util.Collection val$c
+----------------METHODS----------------
+
+ void <init>(
+java.util.Collection)
+
+public boolean hasMoreElements()
+@dalvik.annotation.Signature (value =()TT; )
+public java.lang.Object nextElement()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Collection<TE;>;Ljava/io/Serializable; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =CheckedCollection )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+ class java.util.Collections$CheckedCollection extends java.lang.Object implements java.util.Collection, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/Collection<TE;>; )
+ java.util.Collection c
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TE;>; )
+ java.lang.Class type
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<TE;>;Ljava/lang/Class<TE;>;)V )
+public void <init>(
+java.util.Collection
+java.lang.Class)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+java.util.Collection)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean containsAll(
+java.util.Collection)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean removeAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean retainAll(
+java.util.Collection)
+
+public int size()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =CheckedList )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/Collections$CheckedCollection<TE;>;Ljava/util/List<TE;>; )
+ class java.util.Collections$CheckedList extends java.util.Collections$CheckedCollection implements java.util.List
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/List<TE;>; )
+ java.util.List l
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/List<TE;>;Ljava/lang/Class<TE;>;)V )
+public void <init>(
+java.util.List
+java.lang.Class)
+@dalvik.annotation.Signature (value =(ITE;)V )
+public void add(
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(ILjava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+int
+java.util.Collection)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object get(
+int)
+
+public int hashCode()
+
+public int indexOf(
+java.lang.Object)
+
+public int lastIndexOf(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/ListIterator<TE;>; )
+public java.util.ListIterator listIterator()
+@dalvik.annotation.Signature (value =(I)Ljava/util/ListIterator<TE;>; )
+public java.util.ListIterator listIterator(
+int)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object remove(
+int)
+@dalvik.annotation.Signature (value =(ITE;)TE; )
+public java.lang.Object set(
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(II)Ljava/util/List<TE;>; )
+public java.util.List subList(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/ListIterator<TE;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =CheckedListIterator )
+ class java.util.Collections$CheckedListIterator extends java.lang.Object implements java.util.ListIterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/ListIterator<TE;>; )
+private java.util.ListIterator i
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TE;>; )
+private java.lang.Class type
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/ListIterator<TE;>;Ljava/lang/Class<TE;>;)V )
+public void <init>(
+java.util.ListIterator
+java.lang.Class)
+@dalvik.annotation.Signature (value =(TE;)V )
+public void add(
+java.lang.Object)
+
+public boolean hasNext()
+
+public boolean hasPrevious()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public int nextIndex()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object previous()
+
+public int previousIndex()
+
+public void remove()
+@dalvik.annotation.Signature (value =(TE;)V )
+public void set(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Map; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Entry )
+public abstract interface class java.util.Map$Entry extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TK; )
+public abstract java.lang.Object getKey()
+@dalvik.annotation.Signature (value =()TV; )
+public abstract java.lang.Object getValue()
+
+public abstract int hashCode()
+@dalvik.annotation.Signature (value =(TV;)TV; )
+public abstract java.lang.Object setValue(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections$CheckedMap; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Map$Entry<TK;TV;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =CheckedEntry )
+ class java.util.Collections$CheckedMap$CheckedEntry extends java.lang.Object implements java.util.Map$Entry
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map$Entry<TK;TV;>; )
+ java.util.Map$Entry e
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TV;>; )
+ java.lang.Class valueType
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Map$Entry<TK;TV;>;Ljava/lang/Class<TV;>;)V )
+public void <init>(
+java.util.Map$Entry
+java.lang.Class)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object getKey()
+@dalvik.annotation.Signature (value =()TV; )
+public java.lang.Object getValue()
+
+public int hashCode()
+@dalvik.annotation.Signature (value =(TV;)TV; )
+public java.lang.Object setValue(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections$CheckedMap$CheckedEntrySet; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =CheckedEntryIterator )
+ class java.util.Collections$CheckedMap$CheckedEntrySet$CheckedEntryIterator extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+ java.util.Iterator i
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TV;>; )
+ java.lang.Class valueType
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>;Ljava/lang/Class<TV;>;)V )
+public void <init>(
+java.util.Iterator
+java.lang.Class)
+
+public boolean hasNext()
+
+public volatile java.lang.Object next()
+@dalvik.annotation.Signature (value =()Ljava/util/Map$Entry<TK;TV;>; )
+public java.util.Map$Entry next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =CheckedEntrySet )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections$CheckedMap; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+@dalvik.annotation.MemberClasses (value =Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntryIterator; )
+ class java.util.Collections$CheckedMap$CheckedEntrySet extends java.lang.Object implements java.util.Set
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+ java.util.Set s
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TV;>; )
+ java.lang.Class valueType
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>;Ljava/lang/Class<TV;>;)V )
+public void <init>(
+java.util.Set
+java.lang.Class)
+
+public volatile boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Map$Entry<TK;TV;>;)Z )
+public boolean add(
+java.util.Map$Entry)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+Ljava/util/Map$Entry<TK;TV;>;>;)Z )
+public boolean addAll(
+java.util.Collection)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean containsAll(
+java.util.Collection)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean removeAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean retainAll(
+java.util.Collection)
+
+public int size()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =CheckedMap )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Map<TK;TV;>;Ljava/io/Serializable; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.MemberClasses (value =Ljava/util/Collections$CheckedMap$CheckedEntrySet;Ljava/util/Collections$CheckedMap$CheckedEntry; )
+ class java.util.Collections$CheckedMap extends java.lang.Object implements java.util.Map, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TK;>; )
+ java.lang.Class keyType
+@dalvik.annotation.Signature (value =Ljava/util/Map<TK;TV;>; )
+ java.util.Map m
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TV;>; )
+ java.lang.Class valueType
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Map<TK;TV;>;Ljava/lang/Class<TK;>;Ljava/lang/Class<TV;>;)V )
+private void <init>(
+java.util.Map
+java.lang.Class
+java.lang.Class)
+
+ void <init>(
+java.util.Map
+java.lang.Class
+java.lang.Class
+java.util.Collections$1)
+
+public void clear()
+
+public boolean containsKey(
+java.lang.Object)
+
+public boolean containsValue(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Set entrySet()
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object get(
+java.lang.Object)
+
+public int hashCode()
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<TK;>; )
+public java.util.Set keySet()
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void putAll(
+java.util.Map)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object remove(
+java.lang.Object)
+
+public int size()
+
+public java.lang.String toString()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<TV;>; )
+public java.util.Collection values()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/Collections$CheckedList<TE;>;Ljava/util/RandomAccess; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =CheckedRandomAccessList )
+ class java.util.Collections$CheckedRandomAccessList extends java.util.Collections$CheckedList implements java.util.RandomAccess
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/List<TE;>;Ljava/lang/Class<TE;>;)V )
+public void <init>(
+java.util.List
+java.lang.Class)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/Collections$CheckedCollection<TE;>;Ljava/util/Set<TE;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =CheckedSet )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+ class java.util.Collections$CheckedSet extends java.util.Collections$CheckedCollection implements java.util.Set
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Set<TE;>;Ljava/lang/Class<TE;>;)V )
+public void <init>(
+java.util.Set
+java.lang.Class)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Map<TK;TV;>; )
+public abstract interface class java.util.SortedMap extends java.lang.Object implements java.util.Map
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =()Ljava/util/Comparator<-TK;>; )
+public abstract java.util.Comparator comparator()
+@dalvik.annotation.Signature (value =()TK; )
+public abstract java.lang.Object firstKey()
+@dalvik.annotation.Signature (value =(TK;)Ljava/util/SortedMap<TK;TV;>; )
+public abstract java.util.SortedMap headMap(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TK; )
+public abstract java.lang.Object lastKey()
+@dalvik.annotation.Signature (value =(TK;TK;)Ljava/util/SortedMap<TK;TV;>; )
+public abstract java.util.SortedMap subMap(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;)Ljava/util/SortedMap<TK;TV;>; )
+public abstract java.util.SortedMap tailMap(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/Collections$CheckedMap<TK;TV;>;Ljava/util/SortedMap<TK;TV;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =CheckedSortedMap )
+ class java.util.Collections$CheckedSortedMap extends java.util.Collections$CheckedMap implements java.util.SortedMap
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/SortedMap<TK;TV;>; )
+ java.util.SortedMap sm
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/SortedMap<TK;TV;>;Ljava/lang/Class<TK;>;Ljava/lang/Class<TV;>;)V )
+ void <init>(
+java.util.SortedMap
+java.lang.Class
+java.lang.Class)
+@dalvik.annotation.Signature (value =()Ljava/util/Comparator<-TK;>; )
+public java.util.Comparator comparator()
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object firstKey()
+@dalvik.annotation.Signature (value =(TK;)Ljava/util/SortedMap<TK;TV;>; )
+public java.util.SortedMap headMap(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object lastKey()
+@dalvik.annotation.Signature (value =(TK;TK;)Ljava/util/SortedMap<TK;TV;>; )
+public java.util.SortedMap subMap(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;)Ljava/util/SortedMap<TK;TV;>; )
+public java.util.SortedMap tailMap(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Set<TE;>; )
+public abstract interface class java.util.SortedSet extends java.lang.Object implements java.util.Set
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =()Ljava/util/Comparator<-TE;>; )
+public abstract java.util.Comparator comparator()
+@dalvik.annotation.Signature (value =()TE; )
+public abstract java.lang.Object first()
+@dalvik.annotation.Signature (value =(TE;)Ljava/util/SortedSet<TE;>; )
+public abstract java.util.SortedSet headSet(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TE; )
+public abstract java.lang.Object last()
+@dalvik.annotation.Signature (value =(TE;TE;)Ljava/util/SortedSet<TE;>; )
+public abstract java.util.SortedSet subSet(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;)Ljava/util/SortedSet<TE;>; )
+public abstract java.util.SortedSet tailSet(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/Collections$CheckedSet<TE;>;Ljava/util/SortedSet<TE;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =CheckedSortedSet )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+ class java.util.Collections$CheckedSortedSet extends java.util.Collections$CheckedSet implements java.util.SortedSet
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/SortedSet<TE;>; )
+private java.util.SortedSet ss
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/SortedSet<TE;>;Ljava/lang/Class<TE;>;)V )
+public void <init>(
+java.util.SortedSet
+java.lang.Class)
+@dalvik.annotation.Signature (value =()Ljava/util/Comparator<-TE;>; )
+public java.util.Comparator comparator()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object first()
+@dalvik.annotation.Signature (value =(TE;)Ljava/util/SortedSet<TE;>; )
+public java.util.SortedSet headSet(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object last()
+@dalvik.annotation.Signature (value =(TE;TE;)Ljava/util/SortedSet<TE;>; )
+public java.util.SortedSet subSet(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;)Ljava/util/SortedSet<TE;>; )
+public java.util.SortedSet tailSet(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =CopiesList )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractList<TE;>;Ljava/io/Serializable; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+final class java.util.Collections$CopiesList extends java.util.AbstractList implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =TE; )
+private final java.lang.Object element
+
+private final int n
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(ITE;)V )
+ void <init>(
+int
+java.lang.Object)
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object get(
+int)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =EmptyList )
+final class java.util.Collections$EmptyList extends java.util.AbstractList implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+java.util.Collections$1)
+
+private java.lang.Object readResolve()
+
+public boolean contains(
+java.lang.Object)
+
+public java.lang.Object get(
+int)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =EmptyMap )
+final class java.util.Collections$EmptyMap extends java.util.AbstractMap implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+java.util.Collections$1)
+
+private java.lang.Object readResolve()
+
+public boolean containsKey(
+java.lang.Object)
+
+public boolean containsValue(
+java.lang.Object)
+
+public java.util.Set entrySet()
+
+public java.lang.Object get(
+java.lang.Object)
+
+public java.util.Set keySet()
+
+public java.util.Collection values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.Collections$EmptySet$1 extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+
+final java.util.Collections$EmptySet this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.Collections$EmptySet)
+
+public boolean hasNext()
+
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =EmptySet )
+final class java.util.Collections$EmptySet extends java.util.AbstractSet implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+java.util.Collections$1)
+
+private java.lang.Object readResolve()
+
+public boolean contains(
+java.lang.Object)
+
+public java.util.Iterator iterator()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =ReverseComparator )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Comparator<TT;>;Ljava/io/Serializable; )
+final class java.util.Collections$ReverseComparator extends java.lang.Object implements java.util.Comparator, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+java.util.Collections$1)
+@dalvik.annotation.Signature (value =(TT;TT;)I )
+public int compare(
+java.lang.Object
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =ReverseComparatorWithComparator )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Comparator<TT;>;Ljava/io/Serializable; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+final class java.util.Collections$ReverseComparatorWithComparator extends java.lang.Object implements java.util.Comparator, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/Comparator<TT;>; )
+private final java.util.Comparator comparator
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Comparator<TT;>;)V )
+ void <init>(
+java.util.Comparator)
+@dalvik.annotation.Signature (value =(TT;TT;)I )
+public int compare(
+java.lang.Object
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =SingletonList )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractList<TE;>;Ljava/io/Serializable; )
+final class java.util.Collections$SingletonList extends java.util.AbstractList implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =TE; )
+final java.lang.Object element
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TE;)V )
+ void <init>(
+java.lang.Object)
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object get(
+int)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Map$Entry<TK;TV;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.Collections$SingletonMap$1$1$1 extends java.lang.Object implements java.util.Map$Entry
+
+----------------FIELDS----------------
+
+final java.util.Collections$SingletonMap$1$1 this$2
+----------------METHODS----------------
+
+ void <init>(
+java.util.Collections$SingletonMap$1$1)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object getKey()
+@dalvik.annotation.Signature (value =()TV; )
+public java.lang.Object getValue()
+
+public int hashCode()
+@dalvik.annotation.Signature (value =(TV;)TV; )
+public java.lang.Object setValue(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.Collections$SingletonMap$1$1 extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+
+ boolean hasNext
+
+final java.util.Collections$SingletonMap$1 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.Collections$SingletonMap$1)
+
+public boolean hasNext()
+
+public volatile java.lang.Object next()
+@dalvik.annotation.Signature (value =()Ljava/util/Map$Entry<TK;TV;>; )
+public java.util.Map$Entry next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractSet<Ljava/util/Map$Entry<TK;TV;>;>; )
+ class java.util.Collections$SingletonMap$1 extends java.util.AbstractSet
+
+----------------FIELDS----------------
+
+final java.util.Collections$SingletonMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.Collections$SingletonMap)
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Iterator iterator()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/io/Serializable; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =SingletonMap )
+final class java.util.Collections$SingletonMap extends java.util.AbstractMap implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =TK; )
+final java.lang.Object k
+@dalvik.annotation.Signature (value =TV; )
+final java.lang.Object v
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TK;TV;)V )
+ void <init>(
+java.lang.Object
+java.lang.Object)
+
+public boolean containsKey(
+java.lang.Object)
+
+public boolean containsValue(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Set entrySet()
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object get(
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<TE;>; )
+ class java.util.Collections$SingletonSet$1 extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+
+ boolean hasNext
+
+final java.util.Collections$SingletonSet this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.Collections$SingletonSet)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractSet<TE;>;Ljava/io/Serializable; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =SingletonSet )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+final class java.util.Collections$SingletonSet extends java.util.AbstractSet implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =TE; )
+final java.lang.Object element
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TE;)V )
+ void <init>(
+java.lang.Object)
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =SynchronizedCollection )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Collection<TE;>;Ljava/io/Serializable; )
+ class java.util.Collections$SynchronizedCollection extends java.lang.Object implements java.util.Collection, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/Collection<TE;>; )
+final java.util.Collection c
+
+final java.lang.Object mutex
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<TE;>;)V )
+ void <init>(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<TE;>;Ljava/lang/Object;)V )
+ void <init>(
+java.util.Collection
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+java.util.Collection)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean containsAll(
+java.util.Collection)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean removeAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean retainAll(
+java.util.Collection)
+
+public int size()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =SynchronizedList )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/Collections$SynchronizedCollection<TE;>;Ljava/util/List<TE;>; )
+ class java.util.Collections$SynchronizedList extends java.util.Collections$SynchronizedCollection implements java.util.List
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/List<TE;>; )
+final java.util.List list
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/List<TE;>;)V )
+ void <init>(
+java.util.List)
+@dalvik.annotation.Signature (value =(Ljava/util/List<TE;>;Ljava/lang/Object;)V )
+ void <init>(
+java.util.List
+java.lang.Object)
+
+private java.lang.Object readResolve()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Signature (value =(ITE;)V )
+public void add(
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(ILjava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+int
+java.util.Collection)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object get(
+int)
+
+public int hashCode()
+
+public int indexOf(
+java.lang.Object)
+
+public int lastIndexOf(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/ListIterator<TE;>; )
+public java.util.ListIterator listIterator()
+@dalvik.annotation.Signature (value =(I)Ljava/util/ListIterator<TE;>; )
+public java.util.ListIterator listIterator(
+int)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object remove(
+int)
+@dalvik.annotation.Signature (value =(ITE;)TE; )
+public java.lang.Object set(
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(II)Ljava/util/List<TE;>; )
+public java.util.List subList(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Map<TK;TV;>;Ljava/io/Serializable; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =SynchronizedMap )
+ class java.util.Collections$SynchronizedMap extends java.lang.Object implements java.util.Map, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/Map<TK;TV;>; )
+private final java.util.Map m
+
+final java.lang.Object mutex
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Map<TK;TV;>;)V )
+ void <init>(
+java.util.Map)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<TK;TV;>;Ljava/lang/Object;)V )
+ void <init>(
+java.util.Map
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public void clear()
+
+public boolean containsKey(
+java.lang.Object)
+
+public boolean containsValue(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Set entrySet()
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object get(
+java.lang.Object)
+
+public int hashCode()
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<TK;>; )
+public java.util.Set keySet()
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void putAll(
+java.util.Map)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object remove(
+java.lang.Object)
+
+public int size()
+
+public java.lang.String toString()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<TV;>; )
+public java.util.Collection values()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/Collections$SynchronizedList<TE;>;Ljava/util/RandomAccess; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =SynchronizedRandomAccessList )
+ class java.util.Collections$SynchronizedRandomAccessList extends java.util.Collections$SynchronizedList implements java.util.RandomAccess
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/List<TE;>;)V )
+ void <init>(
+java.util.List)
+@dalvik.annotation.Signature (value =(Ljava/util/List<TE;>;Ljava/lang/Object;)V )
+ void <init>(
+java.util.List
+java.lang.Object)
+
+private java.lang.Object writeReplace()
+@dalvik.annotation.Signature (value =(II)Ljava/util/List<TE;>; )
+public java.util.List subList(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/Collections$SynchronizedCollection<TE;>;Ljava/util/Set<TE;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =SynchronizedSet )
+ class java.util.Collections$SynchronizedSet extends java.util.Collections$SynchronizedCollection implements java.util.Set
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Set<TE;>;)V )
+ void <init>(
+java.util.Set)
+@dalvik.annotation.Signature (value =(Ljava/util/Set<TE;>;Ljava/lang/Object;)V )
+ void <init>(
+java.util.Set
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =SynchronizedSortedMap )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/Collections$SynchronizedMap<TK;TV;>;Ljava/util/SortedMap<TK;TV;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+ class java.util.Collections$SynchronizedSortedMap extends java.util.Collections$SynchronizedMap implements java.util.SortedMap
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/SortedMap<TK;TV;>; )
+private final java.util.SortedMap sm
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/SortedMap<TK;TV;>;)V )
+ void <init>(
+java.util.SortedMap)
+@dalvik.annotation.Signature (value =(Ljava/util/SortedMap<TK;TV;>;Ljava/lang/Object;)V )
+ void <init>(
+java.util.SortedMap
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Signature (value =()Ljava/util/Comparator<-TK;>; )
+public java.util.Comparator comparator()
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object firstKey()
+@dalvik.annotation.Signature (value =(TK;)Ljava/util/SortedMap<TK;TV;>; )
+public java.util.SortedMap headMap(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object lastKey()
+@dalvik.annotation.Signature (value =(TK;TK;)Ljava/util/SortedMap<TK;TV;>; )
+public java.util.SortedMap subMap(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;)Ljava/util/SortedMap<TK;TV;>; )
+public java.util.SortedMap tailMap(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/Collections$SynchronizedSet<TE;>;Ljava/util/SortedSet<TE;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =SynchronizedSortedSet )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+ class java.util.Collections$SynchronizedSortedSet extends java.util.Collections$SynchronizedSet implements java.util.SortedSet
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/SortedSet<TE;>; )
+private final java.util.SortedSet ss
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/SortedSet<TE;>;)V )
+ void <init>(
+java.util.SortedSet)
+@dalvik.annotation.Signature (value =(Ljava/util/SortedSet<TE;>;Ljava/lang/Object;)V )
+ void <init>(
+java.util.SortedSet
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Signature (value =()Ljava/util/Comparator<-TE;>; )
+public java.util.Comparator comparator()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object first()
+@dalvik.annotation.Signature (value =(TE;)Ljava/util/SortedSet<TE;>; )
+public java.util.SortedSet headSet(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object last()
+@dalvik.annotation.Signature (value =(TE;TE;)Ljava/util/SortedSet<TE;>; )
+public java.util.SortedSet subSet(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;)Ljava/util/SortedSet<TE;>; )
+public java.util.SortedSet tailSet(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<TE;>; )
+ class java.util.Collections$UnmodifiableCollection$1 extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Iterator<TE;>; )
+ java.util.Iterator iterator
+
+final java.util.Collections$UnmodifiableCollection this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.Collections$UnmodifiableCollection)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =UnmodifiableCollection )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Collection<TE;>;Ljava/io/Serializable; )
+ class java.util.Collections$UnmodifiableCollection extends java.lang.Object implements java.util.Collection, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/Collection<TE;>; )
+final java.util.Collection c
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<TE;>;)V )
+ void <init>(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+java.util.Collection)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean containsAll(
+java.util.Collection)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean removeAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean retainAll(
+java.util.Collection)
+
+public int size()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/ListIterator<TE;>; )
+ class java.util.Collections$UnmodifiableList$1 extends java.lang.Object implements java.util.ListIterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/ListIterator<TE;>; )
+ java.util.ListIterator iterator
+
+final java.util.Collections$UnmodifiableList this$0
+
+final int val$location
+----------------METHODS----------------
+
+ void <init>(
+java.util.Collections$UnmodifiableList
+int)
+@dalvik.annotation.Signature (value =(TE;)V )
+public void add(
+java.lang.Object)
+
+public boolean hasNext()
+
+public boolean hasPrevious()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public int nextIndex()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object previous()
+
+public int previousIndex()
+
+public void remove()
+@dalvik.annotation.Signature (value =(TE;)V )
+public void set(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/Collections$UnmodifiableCollection<TE;>;Ljava/util/List<TE;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =UnmodifiableList )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+ class java.util.Collections$UnmodifiableList extends java.util.Collections$UnmodifiableCollection implements java.util.List
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/List<TE;>; )
+final java.util.List list
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/List<TE;>;)V )
+ void <init>(
+java.util.List)
+
+private java.lang.Object readResolve()
+@dalvik.annotation.Signature (value =(ITE;)V )
+public void add(
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(ILjava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+int
+java.util.Collection)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object get(
+int)
+
+public int hashCode()
+
+public int indexOf(
+java.lang.Object)
+
+public int lastIndexOf(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/ListIterator<TE;>; )
+public java.util.ListIterator listIterator()
+@dalvik.annotation.Signature (value =(I)Ljava/util/ListIterator<TE;>; )
+public java.util.ListIterator listIterator(
+int)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object remove(
+int)
+@dalvik.annotation.Signature (value =(ITE;)TE; )
+public java.lang.Object set(
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(II)Ljava/util/List<TE;>; )
+public java.util.List subList(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+ class java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$1 extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+ java.util.Iterator iterator
+
+final java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet)
+
+public boolean hasNext()
+
+public volatile java.lang.Object next()
+@dalvik.annotation.Signature (value =()Ljava/util/Map$Entry<TK;TV;>; )
+public java.util.Map$Entry next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =UnmodifiableMapEntry )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Map$Entry<TK;TV;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet; )
+ class java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableMapEntry extends java.lang.Object implements java.util.Map$Entry
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map$Entry<TK;TV;>; )
+ java.util.Map$Entry mapEntry
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Map$Entry<TK;TV;>;)V )
+ void <init>(
+java.util.Map$Entry)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object getKey()
+@dalvik.annotation.Signature (value =()TV; )
+public java.lang.Object getValue()
+
+public int hashCode()
+@dalvik.annotation.Signature (value =(TV;)TV; )
+public java.lang.Object setValue(
+java.lang.Object)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/Collections$UnmodifiableCollection<TE;>;Ljava/util/Set<TE;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =UnmodifiableSet )
+ class java.util.Collections$UnmodifiableSet extends java.util.Collections$UnmodifiableCollection implements java.util.Set
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Set<TE;>;)V )
+ void <init>(
+java.util.Set)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections$UnmodifiableMap; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =UnmodifiableEntrySet )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/Collections$UnmodifiableSet<Ljava/util/Map$Entry<TK;TV;>;>; )
+@dalvik.annotation.MemberClasses (value =Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableMapEntry; )
+ class java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet extends java.util.Collections$UnmodifiableSet
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>;)V )
+ void <init>(
+java.util.Set)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Iterator iterator()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =UnmodifiableMap )
+@dalvik.annotation.MemberClasses (value =Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Map<TK;TV;>;Ljava/io/Serializable; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+ class java.util.Collections$UnmodifiableMap extends java.lang.Object implements java.util.Map, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/Map<TK;TV;>; )
+private final java.util.Map m
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Map<TK;TV;>;)V )
+ void <init>(
+java.util.Map)
+
+public void clear()
+
+public boolean containsKey(
+java.lang.Object)
+
+public boolean containsValue(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Set entrySet()
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object get(
+java.lang.Object)
+
+public int hashCode()
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<TK;>; )
+public java.util.Set keySet()
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void putAll(
+java.util.Map)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object remove(
+java.lang.Object)
+
+public int size()
+
+public java.lang.String toString()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<TV;>; )
+public java.util.Collection values()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/Collections$UnmodifiableList<TE;>;Ljava/util/RandomAccess; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =UnmodifiableRandomAccessList )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+ class java.util.Collections$UnmodifiableRandomAccessList extends java.util.Collections$UnmodifiableList implements java.util.RandomAccess
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/List<TE;>;)V )
+ void <init>(
+java.util.List)
+
+private java.lang.Object writeReplace()
+@dalvik.annotation.Signature (value =(II)Ljava/util/List<TE;>; )
+public java.util.List subList(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/Collections$UnmodifiableMap<TK;TV;>;Ljava/util/SortedMap<TK;TV;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =UnmodifiableSortedMap )
+ class java.util.Collections$UnmodifiableSortedMap extends java.util.Collections$UnmodifiableMap implements java.util.SortedMap
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/SortedMap<TK;TV;>; )
+private final java.util.SortedMap sm
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/SortedMap<TK;TV;>;)V )
+ void <init>(
+java.util.SortedMap)
+@dalvik.annotation.Signature (value =()Ljava/util/Comparator<-TK;>; )
+public java.util.Comparator comparator()
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object firstKey()
+@dalvik.annotation.Signature (value =(TK;)Ljava/util/SortedMap<TK;TV;>; )
+public java.util.SortedMap headMap(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object lastKey()
+@dalvik.annotation.Signature (value =(TK;TK;)Ljava/util/SortedMap<TK;TV;>; )
+public java.util.SortedMap subMap(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;)Ljava/util/SortedMap<TK;TV;>; )
+public java.util.SortedMap tailMap(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/Collections$UnmodifiableSet<TE;>;Ljava/util/SortedSet<TE;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =UnmodifiableSortedSet )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Collections; )
+ class java.util.Collections$UnmodifiableSortedSet extends java.util.Collections$UnmodifiableSet implements java.util.SortedSet
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/SortedSet<TE;>; )
+private final java.util.SortedSet ss
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/SortedSet<TE;>;)V )
+ void <init>(
+java.util.SortedSet)
+@dalvik.annotation.Signature (value =()Ljava/util/Comparator<-TE;>; )
+public java.util.Comparator comparator()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object first()
+@dalvik.annotation.Signature (value =(TE;)Ljava/util/SortedSet<TE;>; )
+public java.util.SortedSet headSet(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object last()
+@dalvik.annotation.Signature (value =(TE;TE;)Ljava/util/SortedSet<TE;>; )
+public java.util.SortedSet subSet(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;)Ljava/util/SortedSet<TE;>; )
+public java.util.SortedSet tailSet(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/Collections$CheckedSortedMap;Ljava/util/Collections$CheckedSortedSet;Ljava/util/Collections$CheckedMap;Ljava/util/Collections$CheckedSet;Ljava/util/Collections$CheckedRandomAccessList;Ljava/util/Collections$CheckedList;Ljava/util/Collections$CheckedListIterator;Ljava/util/Collections$CheckedCollection;Ljava/util/Collections$UnmodifiableSortedSet;Ljava/util/Collections$UnmodifiableSortedMap;Ljava/util/Collections$UnmodifiableSet;Ljava/util/Collections$UnmodifiableMap;Ljava/util/Collections$UnmodifiableList;Ljava/util/Collections$UnmodifiableRandomAccessList;Ljava/util/Collections$UnmodifiableCollection;Ljava/util/Collections$SynchronizedSortedSet;Ljava/util/Collections$SynchronizedSortedMap;Ljava/util/Collections$SynchronizedSet;Ljava/util/Collections$SynchronizedMap;Ljava/util/Collections$SynchronizedList;Ljava/util/Collections$SynchronizedRandomAccessList;Ljava/util/Collections$SynchronizedCollection;Ljava/util/Collections$SingletonMap;Ljava/util/Collections$SingletonList;Ljava/util/Collections$SingletonSet;Ljava/util/Collections$ReverseComparatorWithComparator;Ljava/util/Collections$ReverseComparator;Ljava/util/Collections$EmptyMap;Ljava/util/Collections$EmptySet;Ljava/util/Collections$EmptyList;Ljava/util/Collections$CopiesList; )
+public class java.util.Collections extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.util.List EMPTY_LIST
+
+public static final java.util.Map EMPTY_MAP
+
+public static final java.util.Set EMPTY_SET
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<-TT;>;[TT;)Z )
+public static transient boolean addAll(
+java.util.Collection
+java.lang.Object[])
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/List<+Ljava/lang/Comparable<-TT;>;>;TT;)I )
+public static int binarySearch(
+java.util.List
+java.lang.Object)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/List<+TT;>;TT;Ljava/util/Comparator<-TT;>;)I )
+public static int binarySearch(
+java.util.List
+java.lang.Object
+java.util.Comparator)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>(TE;Ljava/lang/Class<TE;>;)TE; )
+static java.lang.Object checkType(
+java.lang.Object
+java.lang.Class)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>(Ljava/util/Collection<TE;>;Ljava/lang/Class<TE;>;)Ljava/util/Collection<TE;>; )
+public static java.util.Collection checkedCollection(
+java.util.Collection
+java.lang.Class)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>(Ljava/util/List<TE;>;Ljava/lang/Class<TE;>;)Ljava/util/List<TE;>; )
+public static java.util.List checkedList(
+java.util.List
+java.lang.Class)
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/Map<TK;TV;>;Ljava/lang/Class<TK;>;Ljava/lang/Class<TV;>;)Ljava/util/Map<TK;TV;>; )
+public static java.util.Map checkedMap(
+java.util.Map
+java.lang.Class
+java.lang.Class)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>(Ljava/util/Set<TE;>;Ljava/lang/Class<TE;>;)Ljava/util/Set<TE;>; )
+public static java.util.Set checkedSet(
+java.util.Set
+java.lang.Class)
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/SortedMap<TK;TV;>;Ljava/lang/Class<TK;>;Ljava/lang/Class<TV;>;)Ljava/util/SortedMap<TK;TV;>; )
+public static java.util.SortedMap checkedSortedMap(
+java.util.SortedMap
+java.lang.Class
+java.lang.Class)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>(Ljava/util/SortedSet<TE;>;Ljava/lang/Class<TE;>;)Ljava/util/SortedSet<TE;>; )
+public static java.util.SortedSet checkedSortedSet(
+java.util.SortedSet
+java.lang.Class)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/List<-TT;>;Ljava/util/List<+TT;>;)V )
+public static void copy(
+java.util.List
+java.util.List)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;Ljava/util/Collection<*>;)Z )
+public static boolean disjoint(
+java.util.Collection
+java.util.Collection)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>()Ljava/util/List<TT;>; )
+public static final java.util.List emptyList()
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>()Ljava/util/Map<TK;TV;>; )
+public static final java.util.Map emptyMap()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>()Ljava/util/Set<TT;>; )
+public static final java.util.Set emptySet()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<TT;>;)Ljava/util/Enumeration<TT;>; )
+public static java.util.Enumeration enumeration(
+java.util.Collection)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/List<-TT;>;TT;)V )
+public static void fill(
+java.util.List
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;Ljava/lang/Object;)I )
+public static int frequency(
+java.util.Collection
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/List<*>;Ljava/util/List<*>;)I )
+public static int indexOfSubList(
+java.util.List
+java.util.List)
+@dalvik.annotation.Signature (value =(Ljava/util/List<*>;Ljava/util/List<*>;)I )
+public static int lastIndexOfSubList(
+java.util.List
+java.util.List)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Enumeration<TT;>;)Ljava/util/ArrayList<TT;>; )
+public static java.util.ArrayList list(
+java.util.Enumeration)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;:Ljava/lang/Comparable<-TT;>;>(Ljava/util/Collection<+TT;>;)TT; )
+public static java.lang.Object max(
+java.util.Collection)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<+TT;>;Ljava/util/Comparator<-TT;>;)TT; )
+public static java.lang.Object max(
+java.util.Collection
+java.util.Comparator)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;:Ljava/lang/Comparable<-TT;>;>(Ljava/util/Collection<+TT;>;)TT; )
+public static java.lang.Object min(
+java.util.Collection)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<+TT;>;Ljava/util/Comparator<-TT;>;)TT; )
+public static java.lang.Object min(
+java.util.Collection
+java.util.Comparator)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(ITT;)Ljava/util/List<TT;>; )
+public static java.util.List nCopies(
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/List<TT;>;TT;TT;)Z )
+public static boolean replaceAll(
+java.util.List
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/List<*>;)V )
+public static void reverse(
+java.util.List)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>()Ljava/util/Comparator<TT;>; )
+public static java.util.Comparator reverseOrder()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Comparator<TT;>;)Ljava/util/Comparator<TT;>; )
+public static java.util.Comparator reverseOrder(
+java.util.Comparator)
+@dalvik.annotation.Signature (value =(Ljava/util/List<*>;I)V )
+public static void rotate(
+java.util.List
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/List<*>;)V )
+public static void shuffle(
+java.util.List)
+@dalvik.annotation.Signature (value =(Ljava/util/List<*>;Ljava/util/Random;)V )
+public static void shuffle(
+java.util.List
+java.util.Random)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>(TE;)Ljava/util/Set<TE;>; )
+public static java.util.Set singleton(
+java.lang.Object)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>(TE;)Ljava/util/List<TE;>; )
+public static java.util.List singletonList(
+java.lang.Object)
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>(TK;TV;)Ljava/util/Map<TK;TV;>; )
+public static java.util.Map singletonMap(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =<T::Ljava/lang/Comparable<-TT;>;>(Ljava/util/List<TT;>;)V )
+public static void sort(
+java.util.List)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/List<TT;>;Ljava/util/Comparator<-TT;>;)V )
+public static void sort(
+java.util.List
+java.util.Comparator)
+@dalvik.annotation.Signature (value =(Ljava/util/List<*>;II)V )
+public static void swap(
+java.util.List
+int
+int)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<TT;>;)Ljava/util/Collection<TT;>; )
+public static java.util.Collection synchronizedCollection(
+java.util.Collection)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/List<TT;>;)Ljava/util/List<TT;>; )
+public static java.util.List synchronizedList(
+java.util.List)
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/Map<TK;TV;>;)Ljava/util/Map<TK;TV;>; )
+public static java.util.Map synchronizedMap(
+java.util.Map)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>(Ljava/util/Set<TE;>;)Ljava/util/Set<TE;>; )
+public static java.util.Set synchronizedSet(
+java.util.Set)
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/SortedMap<TK;TV;>;)Ljava/util/SortedMap<TK;TV;>; )
+public static java.util.SortedMap synchronizedSortedMap(
+java.util.SortedMap)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>(Ljava/util/SortedSet<TE;>;)Ljava/util/SortedSet<TE;>; )
+public static java.util.SortedSet synchronizedSortedSet(
+java.util.SortedSet)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>(Ljava/util/Collection<+TE;>;)Ljava/util/Collection<TE;>; )
+public static java.util.Collection unmodifiableCollection(
+java.util.Collection)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>(Ljava/util/List<+TE;>;)Ljava/util/List<TE;>; )
+public static java.util.List unmodifiableList(
+java.util.List)
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/Map<+TK;+TV;>;)Ljava/util/Map<TK;TV;>; )
+public static java.util.Map unmodifiableMap(
+java.util.Map)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>(Ljava/util/Set<+TE;>;)Ljava/util/Set<TE;>; )
+public static java.util.Set unmodifiableSet(
+java.util.Set)
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/SortedMap<TK;+TV;>;)Ljava/util/SortedMap<TK;TV;>; )
+public static java.util.SortedMap unmodifiableSortedMap(
+java.util.SortedMap)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>(Ljava/util/SortedSet<TE;>;)Ljava/util/SortedSet<TE;>; )
+public static java.util.SortedSet unmodifiableSortedSet(
+java.util.SortedSet)
+
+________________CLASS________________
+
+
+public class java.util.ConcurrentModificationException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class java.util.Currency extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable<Ljava/lang/String;Ljava/util/Currency;>; )
+private static java.util.Hashtable codesToCurrencies
+
+private static java.lang.String currencyVars
+
+private static final long serialVersionUID
+
+private java.lang.String currencyCode
+
+private transient int defaultFractionDigits
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+java.lang.String)
+
+public static java.util.Currency getInstance(
+java.lang.String)
+
+public static java.util.Currency getInstance(
+java.util.Locale)
+
+private java.lang.Object readResolve()
+
+public java.lang.String getCurrencyCode()
+
+public int getDefaultFractionDigits()
+
+public java.lang.String getSymbol()
+
+public java.lang.String getSymbol(
+java.util.Locale)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.util.IllegalFormatException extends java.lang.IllegalArgumentException implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+ void <init>()
+
+________________CLASS________________
+
+
+public class java.util.DuplicateFormatFlagsException extends java.util.IllegalFormatException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.String flags
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public java.lang.String getFlags()
+
+public java.lang.String getMessage()
+
+________________CLASS________________
+
+
+public class java.util.EmptyStackException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/MapEntry$Type; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Map$Entry<TK;TV;>;Ljava/lang/Cloneable; )
+ class java.util.MapEntry extends java.lang.Object implements java.util.Map$Entry, java.lang.Cloneable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =TK; )
+ java.lang.Object key
+@dalvik.annotation.Signature (value =TV; )
+ java.lang.Object value
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TK;)V )
+ void <init>(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;TV;)V )
+ void <init>(
+java.lang.Object
+java.lang.Object)
+
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object getKey()
+@dalvik.annotation.Signature (value =()TV; )
+public java.lang.Object getValue()
+
+public int hashCode()
+@dalvik.annotation.Signature (value =(TV;)TV; )
+public java.lang.Object setValue(
+java.lang.Object)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/EnumMap; )
+@dalvik.annotation.Signature (value =<KT:Ljava/lang/Enum<TKT;>;VT:Ljava/lang/Object;>Ljava/util/MapEntry<TKT;TVT;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Entry )
+ class java.util.EnumMap$Entry extends java.util.MapEntry
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/EnumMap<TKT;TVT;>; )
+private final java.util.EnumMap enumMap
+
+private final int ordinal
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TKT;TVT;Ljava/util/EnumMap<TKT;TVT;>;)V )
+ void <init>(
+java.lang.Enum
+java.lang.Object
+java.util.EnumMap)
+
+private void checkEntryStatus()
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TKT; )
+public java.lang.Enum getKey()
+
+public volatile java.lang.Object getKey()
+@dalvik.annotation.Signature (value =()TVT; )
+public java.lang.Object getValue()
+
+public int hashCode()
+@dalvik.annotation.Signature (value =(TVT;)TVT; )
+public java.lang.Object setValue(
+java.lang.Object)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;KT:Ljava/lang/Enum<TKT;>;VT:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Iterator<TE;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/EnumMap; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =EnumMapIterator )
+ class java.util.EnumMap$EnumMapIterator extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/EnumMap<TKT;TVT;>; )
+final java.util.EnumMap enumMap
+
+ int position
+
+ int prePosition
+@dalvik.annotation.Signature (value =Ljava/util/MapEntry$Type<TE;TKT;TVT;>; )
+final java.util.MapEntry$Type type
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry$Type<TE;TKT;TVT;>;Ljava/util/EnumMap<TKT;TVT;>;)V )
+ void <init>(
+java.util.MapEntry$Type
+java.util.EnumMap)
+
+private void checkStatus()
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public void remove()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/EnumMap; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;KT:Ljava/lang/Enum<TKT;>;VT:Ljava/lang/Object;>Ljava/util/EnumMap$EnumMapIterator<TE;TKT;TVT;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =EnumMapEntryIterator )
+ class java.util.EnumMap$EnumMapEntryIterator extends java.util.EnumMap$EnumMapIterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry$Type<TE;TKT;TVT;>;Ljava/util/EnumMap<TKT;TVT;>;)V )
+ void <init>(
+java.util.MapEntry$Type
+java.util.EnumMap)
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1544 name =Type )
+@dalvik.annotation.Signature (value =<RT:Ljava/lang/Object;KT:Ljava/lang/Object;VT:Ljava/lang/Object;>Ljava/lang/Object; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/MapEntry; )
+abstract interface class java.util.MapEntry$Type extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry<TKT;TVT;>;)TRT; )
+public abstract java.lang.Object get(
+java.util.MapEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/MapEntry$Type<Ljava/util/Map$Entry<TKT;TVT;>;TKT;TVT;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.EnumMap$EnumMapEntrySet$1 extends java.lang.Object implements java.util.MapEntry$Type
+
+----------------FIELDS----------------
+
+final java.util.EnumMap$EnumMapEntrySet this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.EnumMap$EnumMapEntrySet)
+
+public volatile java.lang.Object get(
+java.util.MapEntry)
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry<TKT;TVT;>;)Ljava/util/Map$Entry<TKT;TVT;>; )
+public java.util.Map$Entry get(
+java.util.MapEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/EnumMap; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =EnumMapEntrySet )
+@dalvik.annotation.Signature (value =<KT:Ljava/lang/Enum<TKT;>;VT:Ljava/lang/Object;>Ljava/util/AbstractSet<Ljava/util/Map$Entry<TKT;TVT;>;>; )
+ class java.util.EnumMap$EnumMapEntrySet extends java.util.AbstractSet
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/EnumMap<TKT;TVT;>; )
+private final java.util.EnumMap enumMap
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/EnumMap<TKT;TVT;>;)V )
+ void <init>(
+java.util.EnumMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/util/Map$Entry<TKT;TVT;>;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+public java.lang.Object[] toArray()
+
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/MapEntry$Type<TKT;TKT;TVT;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.EnumMap$EnumMapKeySet$1 extends java.lang.Object implements java.util.MapEntry$Type
+
+----------------FIELDS----------------
+
+final java.util.EnumMap$EnumMapKeySet this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.EnumMap$EnumMapKeySet)
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry<TKT;TVT;>;)TKT; )
+public java.lang.Enum get(
+java.util.MapEntry)
+
+public volatile java.lang.Object get(
+java.util.MapEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/EnumMap; )
+@dalvik.annotation.Signature (value =<KT:Ljava/lang/Enum<TKT;>;VT:Ljava/lang/Object;>Ljava/util/AbstractSet<TKT;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =EnumMapKeySet )
+ class java.util.EnumMap$EnumMapKeySet extends java.util.AbstractSet
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/EnumMap<TKT;TVT;>; )
+private final java.util.EnumMap enumMap
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/EnumMap<TKT;TVT;>;)V )
+ void <init>(
+java.util.EnumMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/MapEntry$Type<TVT;TKT;TVT;>; )
+ class java.util.EnumMap$EnumMapValueCollection$1 extends java.lang.Object implements java.util.MapEntry$Type
+
+----------------FIELDS----------------
+
+final java.util.EnumMap$EnumMapValueCollection this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.EnumMap$EnumMapValueCollection)
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry<TKT;TVT;>;)TVT; )
+public java.lang.Object get(
+java.util.MapEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<KT:Ljava/lang/Enum<TKT;>;VT:Ljava/lang/Object;>Ljava/util/AbstractCollection<TVT;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/EnumMap; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =EnumMapValueCollection )
+ class java.util.EnumMap$EnumMapValueCollection extends java.util.AbstractCollection
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/EnumMap<TKT;TVT;>; )
+private final java.util.EnumMap enumMap
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/EnumMap<TKT;TVT;>;)V )
+ void <init>(
+java.util.EnumMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/EnumMap$EnumMapEntrySet;Ljava/util/EnumMap$EnumMapEntryIterator;Ljava/util/EnumMap$EnumMapValueCollection;Ljava/util/EnumMap$EnumMapKeySet;Ljava/util/EnumMap$EnumMapIterator;Ljava/util/EnumMap$Entry; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Enum<TK;>;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/util/Map<TK;TV;>;Ljava/io/Serializable;Ljava/lang/Cloneable; )
+public class java.util.EnumMap extends java.util.AbstractMap implements java.util.Map, java.io.Serializable, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/EnumMap$EnumMapEntrySet<TK;TV;>; )
+private transient java.util.EnumMap$EnumMapEntrySet entrySet
+
+transient int enumSize
+
+transient boolean[] hasMapping
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TK;>; )
+private java.lang.Class keyType
+
+transient java.lang.Enum[] keys
+
+private transient int mappingsCount
+
+transient java.lang.Object[] values
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<TK;>;)V )
+public void <init>(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/util/EnumMap<TK;+TV;>;)V )
+public void <init>(
+java.util.EnumMap)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<TK;+TV;>;)V )
+public void <init>(
+java.util.Map)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<TK;>;)V )
+private void initialization(
+java.lang.Class)
+
+private void initialization(
+java.util.EnumMap)
+
+private boolean isValidKeyType(
+java.lang.Object)
+
+private void putAllImpl(
+java.util.Map)
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+private java.lang.Object putImpl(
+java.lang.Enum
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public void clear()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public volatile java.lang.Object clone()
+@dalvik.annotation.Signature (value =()Ljava/util/EnumMap<TK;TV;>; )
+public java.util.EnumMap clone()
+
+public boolean containsKey(
+java.lang.Object)
+
+public boolean containsValue(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Set entrySet()
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object get(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<TK;>; )
+public java.util.Set keySet()
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public java.lang.Object put(
+java.lang.Enum
+java.lang.Object)
+
+public volatile java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void putAll(
+java.util.Map)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object remove(
+java.lang.Object)
+
+public int size()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<TV;>; )
+public java.util.Collection values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/EnumSet; )
+ class java.util.EnumSet$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/EnumSet; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Enum<TE;>;>Ljava/lang/Object;Ljava/io/Serializable; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =SerializationProxy )
+ class java.util.EnumSet$SerializationProxy extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TE;>; )
+private java.lang.Class elementType
+@dalvik.annotation.Signature (value =[TE; )
+private java.lang.Enum[] elements
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+java.util.EnumSet$1)
+
+static java.lang.Enum[] access$102(
+java.util.EnumSet$SerializationProxy
+java.lang.Enum[])
+
+static java.lang.Class access$202(
+java.util.EnumSet$SerializationProxy
+java.lang.Class)
+
+private java.lang.Object readResolve()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/EnumSet$1;Ljava/util/EnumSet$SerializationProxy; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Enum<TE;>;>Ljava/util/AbstractSet<TE;>;Ljava/lang/Cloneable;Ljava/io/Serializable; )
+public abstract class java.util.EnumSet extends java.util.AbstractSet implements java.lang.Cloneable, java.io.Serializable
+
+----------------FIELDS----------------
+
+static org.apache.harmony.kernel.vm.LangAccess LANG_BOOTSTRAP
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TE;>; )
+final java.lang.Class elementClass
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<TE;>;)V )
+ void <init>(
+java.lang.Class)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Enum<TE;>;>(Ljava/lang/Class<TE;>;)Ljava/util/EnumSet<TE;>; )
+public static java.util.EnumSet allOf(
+java.lang.Class)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Enum<TE;>;>(Ljava/util/EnumSet<TE;>;)Ljava/util/EnumSet<TE;>; )
+public static java.util.EnumSet complementOf(
+java.util.EnumSet)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Enum<TE;>;>(Ljava/util/Collection<TE;>;)Ljava/util/EnumSet<TE;>; )
+public static java.util.EnumSet copyOf(
+java.util.Collection)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Enum<TE;>;>(Ljava/util/EnumSet<TE;>;)Ljava/util/EnumSet<TE;>; )
+public static java.util.EnumSet copyOf(
+java.util.EnumSet)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Enum<TE;>;>(Ljava/lang/Class<TE;>;)Ljava/util/EnumSet<TE;>; )
+public static java.util.EnumSet noneOf(
+java.lang.Class)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Enum<TE;>;>(TE;)Ljava/util/EnumSet<TE;>; )
+public static java.util.EnumSet of(
+java.lang.Enum)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Enum<TE;>;>(TE;TE;)Ljava/util/EnumSet<TE;>; )
+public static java.util.EnumSet of(
+java.lang.Enum
+java.lang.Enum)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Enum<TE;>;>(TE;TE;TE;)Ljava/util/EnumSet<TE;>; )
+public static java.util.EnumSet of(
+java.lang.Enum
+java.lang.Enum
+java.lang.Enum)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Enum<TE;>;>(TE;TE;TE;TE;)Ljava/util/EnumSet<TE;>; )
+public static java.util.EnumSet of(
+java.lang.Enum
+java.lang.Enum
+java.lang.Enum
+java.lang.Enum)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Enum<TE;>;>(TE;TE;TE;TE;TE;)Ljava/util/EnumSet<TE;>; )
+public static java.util.EnumSet of(
+java.lang.Enum
+java.lang.Enum
+java.lang.Enum
+java.lang.Enum
+java.lang.Enum)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Enum<TE;>;>(TE;[TE;)Ljava/util/EnumSet<TE;>; )
+public static transient java.util.EnumSet of(
+java.lang.Enum
+java.lang.Enum[])
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Enum<TE;>;>(TE;TE;)Ljava/util/EnumSet<TE;>; )
+public static java.util.EnumSet range(
+java.lang.Enum
+java.lang.Enum)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public volatile java.lang.Object clone()
+@dalvik.annotation.Signature (value =()Ljava/util/EnumSet<TE;>; )
+public java.util.EnumSet clone()
+
+abstract void complement()
+
+ boolean isValidType(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(TE;TE;)V )
+abstract void setRange(
+java.lang.Enum
+java.lang.Enum)
+
+ java.lang.Object writeReplace()
+
+________________CLASS________________
+
+
+public abstract interface class java.util.EventListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract class java.util.EventListenerProxy extends java.lang.Object implements java.util.EventListener
+
+----------------FIELDS----------------
+
+private final java.util.EventListener listener
+----------------METHODS----------------
+
+public void <init>(
+java.util.EventListener)
+
+public java.util.EventListener getListener()
+
+________________CLASS________________
+
+
+public class java.util.EventObject extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+protected transient java.lang.Object source
+----------------METHODS----------------
+
+public void <init>(
+java.lang.Object)
+
+public java.lang.Object getSource()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.util.FormatFlagsConversionMismatchException extends java.util.IllegalFormatException implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private char c
+
+private java.lang.String f
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+char)
+
+public char getConversion()
+
+public java.lang.String getFlags()
+
+public java.lang.String getMessage()
+
+________________CLASS________________
+
+
+public abstract interface class java.util.Formattable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/util/IllegalFormatException; )
+public abstract void formatTo(
+java.util.Formatter
+int
+int
+int)
+
+________________CLASS________________
+
+
+public class java.util.FormattableFlags extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ALTERNATE
+
+public static final int LEFT_JUSTIFY
+
+public static final int UPPERCASE
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Formatter; )
+ class java.util.Formatter$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Formatter; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Ljava/util/Formatter$BigDecimalLayoutForm;>; )
+@dalvik.annotation.InnerClass (accessFlags =16409 name =BigDecimalLayoutForm )
+public final class java.util.Formatter$BigDecimalLayoutForm extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final java.util.Formatter$BigDecimalLayoutForm[] $VALUES
+
+public static final java.util.Formatter$BigDecimalLayoutForm DECIMAL_FLOAT
+
+public static final java.util.Formatter$BigDecimalLayoutForm SCIENTIFIC
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static java.util.Formatter$BigDecimalLayoutForm valueOf(
+java.lang.String)
+
+public static java.util.Formatter$BigDecimalLayoutForm[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =DateTimeUtil )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Formatter; )
+ class java.util.Formatter$DateTimeUtil extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.util.Calendar calendar
+
+private java.text.DateFormatSymbols dateFormatSymbols
+
+private java.util.Locale locale
+
+private java.lang.StringBuilder result
+----------------METHODS----------------
+
+ void <init>(
+java.util.Locale)
+
+private java.text.DateFormatSymbols getDateFormatSymbols()
+
+private static java.lang.String paddingZeros(
+long
+int)
+
+private void transform_A()
+
+private void transform_B()
+
+private void transform_C()
+
+private void transform_D()
+
+private void transform_F()
+
+private void transform_H()
+
+private void transform_I()
+
+private void transform_L()
+
+private void transform_M()
+
+private void transform_N()
+
+private void transform_Q()
+
+private void transform_R()
+
+private void transform_S()
+
+private void transform_T()
+
+private void transform_Y()
+
+private void transform_Z()
+
+private void transform_a()
+
+private void transform_b()
+
+private void transform_c()
+
+private void transform_d()
+
+private void transform_e()
+
+private void transform_j()
+
+private void transform_k()
+
+private void transform_l()
+
+private void transform_m()
+
+private void transform_p(
+boolean)
+
+private void transform_r()
+
+private void transform_s()
+
+private void transform_y()
+
+private void transform_z()
+
+ void transform(
+java.util.Formatter$FormatToken
+java.util.Calendar
+java.lang.StringBuilder)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =FloatUtil )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Formatter; )
+ class java.util.Formatter$FloatUtil extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.Object argument
+
+private java.text.DecimalFormat decimalFormat
+
+private java.util.Formatter$FormatToken formatToken
+
+private char minusSign
+
+private java.lang.StringBuilder result
+----------------METHODS----------------
+
+ void <init>(
+java.lang.StringBuilder
+java.util.Formatter$FormatToken
+java.text.DecimalFormat
+java.lang.Object)
+
+ char getAddSign()
+
+ char getMinusSign()
+
+ void transform(
+java.util.Formatter$FormatToken
+java.lang.StringBuilder)
+
+ void transform_a()
+
+ void transform_e()
+
+ void transform_f()
+
+ void transform_g()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =FormatToken )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Formatter; )
+ class java.util.Formatter$FormatToken extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int DEFAULT_PRECISION
+
+static final int FLAGS_UNSET
+
+private static final int FLAGT_TYPE_COUNT
+
+static final int FLAG_ADD
+
+static final int FLAG_COMMA
+
+static final int FLAG_MINUS
+
+static final int FLAG_PARENTHESIS
+
+static final int FLAG_SHARP
+
+static final int FLAG_SPACE
+
+static final int FLAG_ZERO
+
+static final int LAST_ARGUMENT_INDEX
+
+static final int UNSET
+
+private int argIndex
+
+private char conversionType
+
+private char dateSuffix
+
+private int flags
+
+private int formatStringStartIndex
+
+private java.lang.String plainText
+
+private int precision
+
+private java.lang.StringBuilder strFlags
+
+private int width
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+java.util.Formatter$1)
+
+ int getArgIndex()
+
+ char getConversionType()
+
+ char getDateSuffix()
+
+ int getFlags()
+
+ int getFormatStringStartIndex()
+
+ java.lang.String getPlainText()
+
+ int getPrecision()
+
+ java.lang.String getStrFlags()
+
+ int getWidth()
+
+ boolean isFlagSet(
+int)
+
+ boolean isPrecisionSet()
+
+ boolean isWidthSet()
+
+ boolean requireArgument()
+
+ void setArgIndex(
+int)
+
+ void setConversionType(
+char)
+
+ void setDateSuffix(
+char)
+
+ boolean setFlag(
+char)
+
+ void setFlags(
+int)
+
+ void setFormatStringStartIndex(
+int)
+
+ void setPlainText(
+java.lang.String)
+
+ void setPrecision(
+int)
+
+ void setWidth(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Formatter; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =ParserStateMachine )
+ class java.util.Formatter$ParserStateMachine extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int CONVERSION_TYPE_STATE
+
+private static final int ENTRY_STATE
+
+private static final char EOS
+
+private static final int EXIT_STATE
+
+private static final int FLAGS_STATE
+
+private static final int PRECISION_STATE
+
+private static final int START_CONVERSION_STATE
+
+private static final int SUFFIX_STATE
+
+private static final int WIDTH_STATE
+
+private char currentChar
+
+private java.nio.CharBuffer format
+
+private int state
+
+private java.util.Formatter$FormatToken token
+----------------METHODS----------------
+
+ void <init>(
+java.nio.CharBuffer)
+
+private java.lang.String getFormatString()
+
+private char getNextFormatChar()
+
+private int parseInt(
+java.nio.CharBuffer)
+
+private void process_CONVERSION_TYPE_STATE()
+
+private void process_ENTRY_STATE()
+
+private void process_EXIT_STATE()
+
+private void process_FlAGS_STATE()
+
+private void process_PRECISION_STATE()
+
+private void process_START_CONVERSION_STATE()
+
+private void process_SUFFIX_STATE()
+
+private void process_WIDTH_STATE()
+
+ java.util.Formatter$FormatToken getNextFormatToken()
+
+ void reset()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.Formatter$Transformer$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.util.Formatter$Transformer this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.Formatter$Transformer)
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Transformer )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Formatter; )
+ class java.util.Formatter$Transformer extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.lang.String lineSeparator
+
+private java.lang.Object arg
+
+private java.util.Formatter$DateTimeUtil dateTimeUtil
+
+private java.text.DecimalFormatSymbols decimalFormatSymbols
+
+private java.util.Formatter$FormatToken formatToken
+
+private java.util.Formatter formatter
+
+private java.util.Locale locale
+
+private java.text.NumberFormat numberFormat
+----------------METHODS----------------
+
+ void <init>(
+java.util.Formatter
+java.util.Locale)
+
+static java.util.Locale access$000(
+java.util.Formatter$Transformer)
+
+private java.text.DecimalFormatSymbols getDecimalFormatSymbols()
+
+private java.text.NumberFormat getNumberFormat()
+
+private java.lang.String padding(
+java.lang.StringBuilder
+int)
+
+private java.lang.String transformFromBigInteger()
+
+private java.lang.String transformFromBoolean()
+
+private java.lang.String transformFromCharacter()
+
+private java.lang.String transformFromDateTime()
+
+private java.lang.String transformFromFloat()
+
+private java.lang.String transformFromHashCode()
+
+private java.lang.String transformFromInteger()
+
+private java.lang.String transformFromNull()
+
+private java.lang.String transformFromPercent()
+
+private java.lang.String transformFromSpecialNumber()
+
+private java.lang.String transformFromString()
+
+private java.lang.String transfromFromLineSeparator()
+
+private java.lang.StringBuilder wrapParentheses(
+java.lang.StringBuilder)
+
+ java.lang.String transform(
+java.util.Formatter$FormatToken
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/Formatter$1;Ljava/util/Formatter$ParserStateMachine;Ljava/util/Formatter$DateTimeUtil;Ljava/util/Formatter$FloatUtil;Ljava/util/Formatter$Transformer;Ljava/util/Formatter$FormatToken;Ljava/util/Formatter$BigDecimalLayoutForm; )
+public final class java.util.Formatter extends java.lang.Object implements java.io.Closeable, java.io.Flushable
+
+----------------FIELDS----------------
+
+private boolean closed
+
+private java.io.IOException lastIOException
+
+private java.util.Locale locale
+
+private java.lang.Appendable out
+
+private java.util.Formatter$Transformer transformer
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.io.File)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException;Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+java.io.File
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException;Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+java.io.File
+java.lang.String
+java.util.Locale)
+
+public void <init>(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+java.io.OutputStream
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+java.io.OutputStream
+java.lang.String
+java.util.Locale)
+
+public void <init>(
+java.io.PrintStream)
+
+public void <init>(
+java.lang.Appendable)
+
+public void <init>(
+java.lang.Appendable
+java.util.Locale)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException;Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException;Ljava/io/UnsupportedEncodingException; )
+public void <init>(
+java.lang.String
+java.lang.String
+java.util.Locale)
+
+public void <init>(
+java.util.Locale)
+
+private void checkClosed()
+
+private static void closeOutputStream(
+java.io.OutputStream)
+
+private java.lang.Object getArgument(
+java.lang.Object[]
+int
+java.util.Formatter$FormatToken
+java.lang.Object
+boolean)
+
+public void close()
+
+public void flush()
+
+public transient java.util.Formatter format(
+java.lang.String
+java.lang.Object[])
+
+public transient java.util.Formatter format(
+java.util.Locale
+java.lang.String
+java.lang.Object[])
+
+public java.io.IOException ioException()
+
+public java.util.Locale locale()
+
+public java.lang.Appendable out()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.util.FormatterClosedException extends java.lang.IllegalStateException implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class java.util.GregorianCalendar extends java.util.Calendar
+
+----------------FIELDS----------------
+
+public static final int AD
+
+public static final int BC
+
+static byte[] DaysInMonth
+
+private static int[] DaysInYear
+
+private static final long defaultGregorianCutover
+
+private static int[] leastMaximums
+
+private static int[] maximums
+
+private static int[] minimums
+
+private static final long serialVersionUID
+
+private int[] cachedFields
+
+private transient int changeYear
+
+private int currentYearSkew
+
+private long gregorianCutover
+
+private boolean isCached
+
+private transient int julianSkew
+
+private long lastMidnightMillis
+
+private int lastYearSkew
+
+private long nextMidnightMillis
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int
+int
+int)
+
+public void <init>(
+int
+int
+int
+int
+int)
+
+public void <init>(
+int
+int
+int
+int
+int
+int)
+
+ void <init>(
+long)
+
+public void <init>(
+java.util.Locale)
+
+public void <init>(
+java.util.TimeZone)
+
+public void <init>(
+java.util.TimeZone
+java.util.Locale)
+
+ void <init>(
+boolean)
+
+private final void cachedFieldsCheckAndGet(
+long
+long
+long
+int
+int)
+
+private int computeYearAndDay(
+long
+long)
+
+private long daysFromBaseYear(
+int)
+
+private int daysInMonth()
+
+private int daysInMonth(
+boolean
+int)
+
+private int daysInYear(
+int)
+
+private int daysInYear(
+boolean
+int)
+
+private final void fullFieldsCalc(
+long
+int
+int)
+
+private int julianError()
+
+private int mod(
+int
+int)
+
+private int mod7(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public void add(
+int
+int)
+
+public java.lang.Object clone()
+
+protected void computeFields()
+
+protected void computeTime()
+
+public boolean equals(
+java.lang.Object)
+
+public int getActualMaximum(
+int)
+
+public int getActualMinimum(
+int)
+
+public int getGreatestMinimum(
+int)
+
+public final java.util.Date getGregorianChange()
+
+public int getLeastMaximum(
+int)
+
+public int getMaximum(
+int)
+
+public int getMinimum(
+int)
+
+ int getOffset(
+long)
+
+public int hashCode()
+
+public boolean isLeapYear(
+int)
+
+public void roll(
+int
+int)
+
+public void roll(
+int
+boolean)
+
+public void setFirstDayOfWeek(
+int)
+
+public void setGregorianChange(
+java.util.Date)
+
+public void setMinimalDaysInFirstWeek(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/MapEntry$Type<TK;TK;TV;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.HashMap$1$1 extends java.lang.Object implements java.util.MapEntry$Type
+
+----------------FIELDS----------------
+
+final java.util.HashMap$1 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.HashMap$1)
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry<TK;TV;>;)TK; )
+public java.lang.Object get(
+java.util.MapEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractSet<TK;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.HashMap$1 extends java.util.AbstractSet
+
+----------------FIELDS----------------
+
+final java.util.HashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.HashMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TK;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/MapEntry$Type<TV;TK;TV;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.HashMap$2$1 extends java.lang.Object implements java.util.MapEntry$Type
+
+----------------FIELDS----------------
+
+final java.util.HashMap$2 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.HashMap$2)
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry<TK;TV;>;)TV; )
+public java.lang.Object get(
+java.util.MapEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractCollection<TV;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.HashMap$2 extends java.util.AbstractCollection
+
+----------------FIELDS----------------
+
+final java.util.HashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.HashMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TV;>; )
+public java.util.Iterator iterator()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/HashMap; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/MapEntry<TK;TV;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =Entry )
+ class java.util.HashMap$Entry extends java.util.MapEntry
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/HashMap$Entry<TK;TV;>; )
+ java.util.HashMap$Entry next
+
+final int origKeyHash
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TK;I)V )
+ void <init>(
+java.lang.Object
+int)
+@dalvik.annotation.Signature (value =(TK;TV;)V )
+ void <init>(
+java.lang.Object
+java.lang.Object)
+
+public java.lang.Object clone()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/MapEntry$Type<Ljava/util/Map$Entry<TKT;TVT;>;TKT;TVT;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.HashMap$HashMapEntrySet$1 extends java.lang.Object implements java.util.MapEntry$Type
+
+----------------FIELDS----------------
+
+final java.util.HashMap$HashMapEntrySet this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.HashMap$HashMapEntrySet)
+
+public volatile java.lang.Object get(
+java.util.MapEntry)
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry<TKT;TVT;>;)Ljava/util/Map$Entry<TKT;TVT;>; )
+public java.util.Map$Entry get(
+java.util.MapEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<KT:Ljava/lang/Object;VT:Ljava/lang/Object;>Ljava/util/AbstractSet<Ljava/util/Map$Entry<TKT;TVT;>;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =HashMapEntrySet )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/HashMap; )
+ class java.util.HashMap$HashMapEntrySet extends java.util.AbstractSet
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<TKT;TVT;>; )
+private final java.util.HashMap associatedMap
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/HashMap<TKT;TVT;>;)V )
+public void <init>(
+java.util.HashMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/HashMap<TKT;TVT;>; )
+ java.util.HashMap hashMap()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/util/Map$Entry<TKT;TVT;>;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =HashMapIterator )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;KT:Ljava/lang/Object;VT:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Iterator<TE;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/HashMap; )
+ class java.util.HashMap$HashMapIterator extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<TKT;TVT;>; )
+final java.util.HashMap associatedMap
+
+ boolean canRemove
+@dalvik.annotation.Signature (value =Ljava/util/HashMap$Entry<TKT;TVT;>; )
+ java.util.HashMap$Entry entry
+
+ int expectedModCount
+@dalvik.annotation.Signature (value =Ljava/util/HashMap$Entry<TKT;TVT;>; )
+ java.util.HashMap$Entry lastEntry
+
+private int position
+@dalvik.annotation.Signature (value =Ljava/util/MapEntry$Type<TE;TKT;TVT;>; )
+final java.util.MapEntry$Type type
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry$Type<TE;TKT;TVT;>;Ljava/util/HashMap<TKT;TVT;>;)V )
+ void <init>(
+java.util.MapEntry$Type
+java.util.HashMap)
+@dalvik.annotation.Throws (value =Ljava/util/ConcurrentModificationException; )
+ void checkConcurrentMod()
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractSet<TE;>;Ljava/util/Set<TE;>;Ljava/lang/Cloneable;Ljava/io/Serializable; )
+public class java.util.HashSet extends java.util.AbstractSet implements java.util.Set, java.lang.Cloneable, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<TE;Ljava/util/HashSet<TE;>;>; )
+transient java.util.HashMap backingMap
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+int
+float)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)V )
+public void <init>(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/HashMap<TE;Ljava/util/HashSet<TE;>;>;)V )
+ void <init>(
+java.util.HashMap)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+
+public void clear()
+
+public java.lang.Object clone()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(IF)Ljava/util/HashMap<TE;Ljava/util/HashSet<TE;>;>; )
+ java.util.HashMap createBackingMap(
+int
+float)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Enumeration<Ljava/lang/Object;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Hashtable; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class java.util.Hashtable$1 extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public boolean hasMoreElements()
+
+public java.lang.Object nextElement()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/MapEntry$Type<Ljava/util/Map$Entry<TK;TV;>;TK;TV;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.Hashtable$2$1 extends java.lang.Object implements java.util.MapEntry$Type
+
+----------------FIELDS----------------
+
+final java.util.Hashtable$2 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.Hashtable$2)
+
+public volatile java.lang.Object get(
+java.util.MapEntry)
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry<TK;TV;>;)Ljava/util/Map$Entry<TK;TV;>; )
+public java.util.Map$Entry get(
+java.util.MapEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractSet<Ljava/util/Map$Entry<TK;TV;>;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.Hashtable$2 extends java.util.AbstractSet
+
+----------------FIELDS----------------
+
+final java.util.Hashtable this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.Hashtable)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/MapEntry$Type<TK;TK;TV;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.Hashtable$3$1 extends java.lang.Object implements java.util.MapEntry$Type
+
+----------------FIELDS----------------
+
+final java.util.Hashtable$3 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.Hashtable$3)
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry<TK;TV;>;)TK; )
+public java.lang.Object get(
+java.util.MapEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractSet<TK;>; )
+ class java.util.Hashtable$3 extends java.util.AbstractSet
+
+----------------FIELDS----------------
+
+final java.util.Hashtable this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.Hashtable)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TK;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/MapEntry$Type<TV;TK;TV;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.Hashtable$4$1 extends java.lang.Object implements java.util.MapEntry$Type
+
+----------------FIELDS----------------
+
+final java.util.Hashtable$4 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.Hashtable$4)
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry<TK;TV;>;)TV; )
+public java.lang.Object get(
+java.util.MapEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractCollection<TV;>; )
+ class java.util.Hashtable$4 extends java.util.AbstractCollection
+
+----------------FIELDS----------------
+
+final java.util.Hashtable this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.Hashtable)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TV;>; )
+public java.util.Iterator iterator()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Entry )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/MapEntry<TK;TV;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Hashtable; )
+ class java.util.Hashtable$Entry extends java.util.MapEntry
+
+----------------FIELDS----------------
+
+final int hashcode
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable$Entry<TK;TV;>; )
+ java.util.Hashtable$Entry next
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TK;TV;)V )
+ void <init>(
+java.lang.Object
+java.lang.Object)
+
+public java.lang.Object clone()
+
+public boolean equalsKey(
+java.lang.Object
+int)
+
+public int getKeyHash()
+@dalvik.annotation.Signature (value =(TV;)TV; )
+public java.lang.Object setValue(
+java.lang.Object)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Hashtable; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Enumeration<TE;>; )
+@dalvik.annotation.InnerClass (accessFlags =18 name =HashEnumerator )
+final class java.util.Hashtable$HashEnumerator extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable$Entry<TK;TV;>; )
+ java.util.Hashtable$Entry entry
+
+ boolean key
+
+ int start
+
+final java.util.Hashtable this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.Hashtable
+boolean)
+
+public boolean hasMoreElements()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object nextElement()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Iterator<TE;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Hashtable; )
+@dalvik.annotation.InnerClass (accessFlags =18 name =HashIterator )
+final class java.util.Hashtable$HashIterator extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+
+private boolean canRemove
+
+private int expectedModCount
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable$Entry<TK;TV;>; )
+private java.util.Hashtable$Entry lastEntry
+
+private int lastPosition
+
+private int position
+
+final java.util.Hashtable this$0
+@dalvik.annotation.Signature (value =Ljava/util/MapEntry$Type<TE;TK;TV;>; )
+private final java.util.MapEntry$Type type
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry$Type<TE;TK;TV;>;)V )
+ void <init>(
+java.util.Hashtable
+java.util.MapEntry$Type)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/HugeEnumSet; )
+ class java.util.HugeEnumSet$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<TE;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/HugeEnumSet; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =HugeEnumSetIterator )
+ class java.util.HugeEnumSet$HugeEnumSetIterator extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+
+private int bitsPosition
+
+ boolean canProcess
+
+private long currentElementMask
+
+final java.util.HugeEnumSet this$0
+
+private long[] unProcessedBits
+----------------METHODS----------------
+
+private void <init>(
+java.util.HugeEnumSet)
+
+ void <init>(
+java.util.HugeEnumSet
+java.util.HugeEnumSet$1)
+
+private void findNextNoneZeroPosition(
+int)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Enum next()
+
+public volatile java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/HugeEnumSet$1;Ljava/util/HugeEnumSet$HugeEnumSetIterator; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Enum<TE;>;>Ljava/util/EnumSet<TE;>; )
+final class java.util.HugeEnumSet extends java.util.EnumSet
+
+----------------FIELDS----------------
+
+private static final int BIT_IN_LONG
+
+private long[] bits
+
+private int bitsIndex
+
+private int elementInBits
+@dalvik.annotation.Signature (value =[TE; )
+private final java.lang.Enum[] enums
+
+private long oldBits
+
+private int size
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<TE;>;[TE;)V )
+ void <init>(
+java.lang.Class
+java.lang.Enum[])
+
+static long[] access$000(
+java.util.HugeEnumSet)
+
+static java.lang.Enum[] access$100(
+java.util.HugeEnumSet)
+
+static int access$210(
+java.util.HugeEnumSet)
+@dalvik.annotation.Signature (value =(TE;)V )
+private void calculateElementIndex(
+java.lang.Enum)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Enum)
+
+public volatile boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+java.util.Collection)
+
+public void clear()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public volatile java.lang.Object clone()
+
+public volatile java.util.EnumSet clone()
+@dalvik.annotation.Signature (value =()Ljava/util/HugeEnumSet<TE;>; )
+public java.util.HugeEnumSet clone()
+
+protected void complement()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean containsAll(
+java.util.Collection)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean removeAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean retainAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(TE;TE;)V )
+ void setRange(
+java.lang.Enum
+java.lang.Enum)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/MapEntry$Type<TK;TK;TV;>; )
+ class java.util.IdentityHashMap$1$1 extends java.lang.Object implements java.util.MapEntry$Type
+
+----------------FIELDS----------------
+
+final java.util.IdentityHashMap$1 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.IdentityHashMap$1)
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry<TK;TV;>;)TK; )
+public java.lang.Object get(
+java.util.MapEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractSet<TK;>; )
+ class java.util.IdentityHashMap$1 extends java.util.AbstractSet
+
+----------------FIELDS----------------
+
+final java.util.IdentityHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.IdentityHashMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TK;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/MapEntry$Type<TV;TK;TV;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.IdentityHashMap$2$1 extends java.lang.Object implements java.util.MapEntry$Type
+
+----------------FIELDS----------------
+
+final java.util.IdentityHashMap$2 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.IdentityHashMap$2)
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry<TK;TV;>;)TV; )
+public java.lang.Object get(
+java.util.MapEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/util/AbstractCollection<TV;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.IdentityHashMap$2 extends java.util.AbstractCollection
+
+----------------FIELDS----------------
+
+final java.util.IdentityHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.IdentityHashMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TV;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/MapEntry<TK;TV;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/IdentityHashMap; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =IdentityHashMapEntry )
+ class java.util.IdentityHashMap$IdentityHashMapEntry extends java.util.MapEntry
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TK;TV;)V )
+ void <init>(
+java.lang.Object
+java.lang.Object)
+
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/MapEntry$Type<Ljava/util/Map$Entry<TKT;TVT;>;TKT;TVT;>; )
+ class java.util.IdentityHashMap$IdentityHashMapEntrySet$1 extends java.lang.Object implements java.util.MapEntry$Type
+
+----------------FIELDS----------------
+
+final java.util.IdentityHashMap$IdentityHashMapEntrySet this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.IdentityHashMap$IdentityHashMapEntrySet)
+
+public volatile java.lang.Object get(
+java.util.MapEntry)
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry<TKT;TVT;>;)Ljava/util/Map$Entry<TKT;TVT;>; )
+public java.util.Map$Entry get(
+java.util.MapEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<KT:Ljava/lang/Object;VT:Ljava/lang/Object;>Ljava/util/AbstractSet<Ljava/util/Map$Entry<TKT;TVT;>;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =IdentityHashMapEntrySet )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/IdentityHashMap; )
+ class java.util.IdentityHashMap$IdentityHashMapEntrySet extends java.util.AbstractSet
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/IdentityHashMap<TKT;TVT;>; )
+private final java.util.IdentityHashMap associatedMap
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/IdentityHashMap<TKT;TVT;>;)V )
+public void <init>(
+java.util.IdentityHashMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/IdentityHashMap<TKT;TVT;>; )
+ java.util.IdentityHashMap hashMap()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/util/Map$Entry<TKT;TVT;>;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/IdentityHashMap; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;KT:Ljava/lang/Object;VT:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Iterator<TE;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =IdentityHashMapIterator )
+ class java.util.IdentityHashMap$IdentityHashMapIterator extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/IdentityHashMap<TKT;TVT;>; )
+final java.util.IdentityHashMap associatedMap
+
+ boolean canRemove
+
+ int expectedModCount
+
+private int lastPosition
+
+private int position
+@dalvik.annotation.Signature (value =Ljava/util/MapEntry$Type<TE;TKT;TVT;>; )
+final java.util.MapEntry$Type type
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry$Type<TE;TKT;TVT;>;Ljava/util/IdentityHashMap<TKT;TVT;>;)V )
+ void <init>(
+java.util.MapEntry$Type
+java.util.IdentityHashMap)
+@dalvik.annotation.Throws (value =Ljava/util/ConcurrentModificationException; )
+ void checkConcurrentMod()
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/IdentityHashMap$IdentityHashMapEntrySet;Ljava/util/IdentityHashMap$IdentityHashMapIterator;Ljava/util/IdentityHashMap$IdentityHashMapEntry; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/util/Map<TK;TV;>;Ljava/io/Serializable;Ljava/lang/Cloneable; )
+public class java.util.IdentityHashMap extends java.util.AbstractMap implements java.util.Map, java.io.Serializable, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private static final int DEFAULT_MAX_SIZE
+
+private static final java.lang.Object NULL_OBJECT
+
+private static final int loadFactor
+
+private static final long serialVersionUID
+
+transient java.lang.Object[] elementData
+
+transient int modCount
+
+ int size
+
+transient int threshold
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void <init>(
+java.util.Map)
+
+static java.util.IdentityHashMap$IdentityHashMapEntry access$000(
+java.util.IdentityHashMap
+int)
+
+static java.util.IdentityHashMap$IdentityHashMapEntry access$100(
+java.util.IdentityHashMap
+java.lang.Object)
+
+private int computeElementArraySize()
+
+private void computeMaxSize()
+
+private int findIndex(
+java.lang.Object
+java.lang.Object[])
+@dalvik.annotation.Signature (value =(I)Ljava/util/IdentityHashMap$IdentityHashMapEntry<TK;TV;>; )
+private java.util.IdentityHashMap$IdentityHashMapEntry getEntry(
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)Ljava/util/IdentityHashMap$IdentityHashMapEntry<TK;TV;>; )
+private java.util.IdentityHashMap$IdentityHashMapEntry getEntry(
+java.lang.Object)
+
+private int getModuloHash(
+java.lang.Object
+int)
+
+private int getThreshold(
+int)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+private java.lang.Object massageValue(
+java.lang.Object)
+
+private java.lang.Object[] newElementArray(
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+private void putAllImpl(
+java.util.Map)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+private void rehash()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public void clear()
+
+public java.lang.Object clone()
+
+public boolean containsKey(
+java.lang.Object)
+
+public boolean containsValue(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Set entrySet()
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object get(
+java.lang.Object)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<TK;>; )
+public java.util.Set keySet()
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void putAll(
+java.util.Map)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object remove(
+java.lang.Object)
+
+public int size()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<TV;>; )
+public java.util.Collection values()
+
+________________CLASS________________
+
+
+public class java.util.IllegalFormatCodePointException extends java.util.IllegalFormatException implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private int c
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public int getCodePoint()
+
+public java.lang.String getMessage()
+
+________________CLASS________________
+
+
+public class java.util.IllegalFormatConversionException extends java.util.IllegalFormatException implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/lang/Class<*>; )
+private java.lang.Class arg
+
+private char c
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(CLjava/lang/Class<*>;)V )
+public void <init>(
+char
+java.lang.Class)
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<*>; )
+public java.lang.Class getArgumentClass()
+
+public char getConversion()
+
+public java.lang.String getMessage()
+
+________________CLASS________________
+
+
+public class java.util.IllegalFormatFlagsException extends java.util.IllegalFormatException implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.String flags
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public java.lang.String getFlags()
+
+public java.lang.String getMessage()
+
+________________CLASS________________
+
+
+public class java.util.IllegalFormatPrecisionException extends java.util.IllegalFormatException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private int p
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public java.lang.String getMessage()
+
+public int getPrecision()
+
+________________CLASS________________
+
+
+public class java.util.IllegalFormatWidthException extends java.util.IllegalFormatException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private int w
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public java.lang.String getMessage()
+
+public int getWidth()
+
+________________CLASS________________
+
+
+public class java.util.NoSuchElementException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.util.InputMismatchException extends java.util.NoSuchElementException implements java.io.Serializable
+
+----------------FIELDS----------------
+
+static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.util.InvalidPropertiesFormatException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.Throwable)
+@dalvik.annotation.Throws (value =Ljava/io/NotSerializableException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/NotSerializableException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/MapEntry$Type<TK;TK;TV;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.LinkedHashMap$1$1 extends java.lang.Object implements java.util.MapEntry$Type
+
+----------------FIELDS----------------
+
+final java.util.LinkedHashMap$1 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.LinkedHashMap$1)
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry<TK;TV;>;)TK; )
+public java.lang.Object get(
+java.util.MapEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractSet<TK;>; )
+ class java.util.LinkedHashMap$1 extends java.util.AbstractSet
+
+----------------FIELDS----------------
+
+final java.util.LinkedHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.LinkedHashMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TK;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/MapEntry$Type<TV;TK;TV;>; )
+ class java.util.LinkedHashMap$2$1 extends java.lang.Object implements java.util.MapEntry$Type
+
+----------------FIELDS----------------
+
+final java.util.LinkedHashMap$2 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.LinkedHashMap$2)
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry<TK;TV;>;)TV; )
+public java.lang.Object get(
+java.util.MapEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/util/AbstractCollection<TV;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.LinkedHashMap$2 extends java.util.AbstractCollection
+
+----------------FIELDS----------------
+
+final java.util.LinkedHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.LinkedHashMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TV;>; )
+public java.util.Iterator iterator()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;KT:Ljava/lang/Object;VT:Ljava/lang/Object;>Ljava/util/HashMap$HashMapIterator<TE;TKT;TVT;>; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =LinkedHashIterator )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/LinkedHashMap; )
+final class java.util.LinkedHashMap$LinkedHashIterator extends java.util.HashMap$HashMapIterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry$Type<TE;TKT;TVT;>;Ljava/util/LinkedHashMap<TKT;TVT;>;)V )
+ void <init>(
+java.util.MapEntry$Type
+java.util.LinkedHashMap)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =LinkedHashMapEntry )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/LinkedHashMap; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/HashMap$Entry<TK;TV;>; )
+final class java.util.LinkedHashMap$LinkedHashMapEntry extends java.util.HashMap$Entry
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/LinkedHashMap$LinkedHashMapEntry<TK;TV;>; )
+ java.util.LinkedHashMap$LinkedHashMapEntry chainBackward
+@dalvik.annotation.Signature (value =Ljava/util/LinkedHashMap$LinkedHashMapEntry<TK;TV;>; )
+ java.util.LinkedHashMap$LinkedHashMapEntry chainForward
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TK;I)V )
+ void <init>(
+java.lang.Object
+int)
+@dalvik.annotation.Signature (value =(TK;TV;)V )
+ void <init>(
+java.lang.Object
+java.lang.Object)
+
+public java.lang.Object clone()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/MapEntry$Type<Ljava/util/Map$Entry<TKT;TVT;>;TKT;TVT;>; )
+ class java.util.LinkedHashMap$LinkedHashMapEntrySet$1 extends java.lang.Object implements java.util.MapEntry$Type
+
+----------------FIELDS----------------
+
+final java.util.LinkedHashMap$LinkedHashMapEntrySet this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.LinkedHashMap$LinkedHashMapEntrySet)
+
+public volatile java.lang.Object get(
+java.util.MapEntry)
+@dalvik.annotation.Signature (value =(Ljava/util/MapEntry<TKT;TVT;>;)Ljava/util/Map$Entry<TKT;TVT;>; )
+public java.util.Map$Entry get(
+java.util.MapEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<KT:Ljava/lang/Object;VT:Ljava/lang/Object;>Ljava/util/HashMap$HashMapEntrySet<TKT;TVT;>; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =LinkedHashMapEntrySet )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/LinkedHashMap; )
+final class java.util.LinkedHashMap$LinkedHashMapEntrySet extends java.util.HashMap$HashMapEntrySet
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/LinkedHashMap<TKT;TVT;>;)V )
+public void <init>(
+java.util.LinkedHashMap)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/util/Map$Entry<TKT;TVT;>;>; )
+public java.util.Iterator iterator()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/HashSet<TE;>;Ljava/util/Set<TE;>;Ljava/lang/Cloneable;Ljava/io/Serializable; )
+public class java.util.LinkedHashSet extends java.util.HashSet implements java.util.Set, java.lang.Cloneable, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+int
+float)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)V )
+public void <init>(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(IF)Ljava/util/HashMap<TE;Ljava/util/HashSet<TE;>;>; )
+ java.util.HashMap createBackingMap(
+int
+float)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =Link )
+@dalvik.annotation.Signature (value =<ET:Ljava/lang/Object;>Ljava/lang/Object; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/LinkedList; )
+final class java.util.LinkedList$Link extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =TET; )
+ java.lang.Object data
+@dalvik.annotation.Signature (value =Ljava/util/LinkedList$Link<TET;>; )
+ java.util.LinkedList$Link next
+@dalvik.annotation.Signature (value =Ljava/util/LinkedList$Link<TET;>; )
+ java.util.LinkedList$Link previous
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TET;Ljava/util/LinkedList$Link<TET;>;Ljava/util/LinkedList$Link<TET;>;)V )
+ void <init>(
+java.lang.Object
+java.util.LinkedList$Link
+java.util.LinkedList$Link)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<ET:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/ListIterator<TET;>; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =LinkIterator )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/LinkedList; )
+final class java.util.LinkedList$LinkIterator extends java.lang.Object implements java.util.ListIterator
+
+----------------FIELDS----------------
+
+ int expectedModCount
+@dalvik.annotation.Signature (value =Ljava/util/LinkedList$Link<TET;>; )
+ java.util.LinkedList$Link lastLink
+@dalvik.annotation.Signature (value =Ljava/util/LinkedList$Link<TET;>; )
+ java.util.LinkedList$Link link
+@dalvik.annotation.Signature (value =Ljava/util/LinkedList<TET;>; )
+final java.util.LinkedList list
+
+ int pos
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/LinkedList<TET;>;I)V )
+ void <init>(
+java.util.LinkedList
+int)
+@dalvik.annotation.Signature (value =(TET;)V )
+public void add(
+java.lang.Object)
+
+public boolean hasNext()
+
+public boolean hasPrevious()
+@dalvik.annotation.Signature (value =()TET; )
+public java.lang.Object next()
+
+public int nextIndex()
+@dalvik.annotation.Signature (value =()TET; )
+public java.lang.Object previous()
+
+public int previousIndex()
+
+public void remove()
+@dalvik.annotation.Signature (value =(TET;)V )
+public void set(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/LinkedList$LinkIterator;Ljava/util/LinkedList$Link; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractSequentialList<TE;>;Ljava/util/List<TE;>;Ljava/util/Queue<TE;>;Ljava/lang/Cloneable;Ljava/io/Serializable; )
+public class java.util.LinkedList extends java.util.AbstractSequentialList implements java.util.List, java.util.Queue, java.lang.Cloneable, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+transient int size
+@dalvik.annotation.Signature (value =Ljava/util/LinkedList$Link<TE;>; )
+transient java.util.LinkedList$Link voidLink
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)V )
+public void <init>(
+java.util.Collection)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Signature (value =(ITE;)V )
+public void add(
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(ILjava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+int
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(TE;)V )
+public void addFirst(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;)V )
+public void addLast(
+java.lang.Object)
+
+public void clear()
+
+public java.lang.Object clone()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object element()
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object get(
+int)
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object getFirst()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object getLast()
+
+public int indexOf(
+java.lang.Object)
+
+public int lastIndexOf(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(I)Ljava/util/ListIterator<TE;>; )
+public java.util.ListIterator listIterator(
+int)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean offer(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object peek()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object poll()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object remove()
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object remove(
+int)
+
+public boolean remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object removeFirst()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object removeLast()
+@dalvik.annotation.Signature (value =(ITE;)TE; )
+public java.lang.Object set(
+int
+java.lang.Object)
+
+public int size()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Enumeration<Ljava/lang/String;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.ListResourceBundle$1 extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Enumeration<Ljava/lang/String;>; )
+ java.util.Enumeration local
+
+ java.lang.String nextElement
+@dalvik.annotation.Signature (value =Ljava/util/Enumeration<Ljava/lang/String;>; )
+ java.util.Enumeration pEnum
+
+final java.util.ListResourceBundle this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.ListResourceBundle)
+
+private boolean findNext()
+
+public boolean hasMoreElements()
+
+public volatile java.lang.Object nextElement()
+
+public java.lang.String nextElement()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/util/ResourceBundle;>; )
+final class java.util.Locale$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.lang.String val$clName
+
+final java.util.Locale val$locale
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+java.util.Locale)
+
+public volatile java.lang.Object run()
+
+public java.util.ResourceBundle run()
+
+________________CLASS________________
+
+
+public final class java.util.Locale extends java.lang.Object implements java.lang.Cloneable, java.io.Serializable
+
+----------------FIELDS----------------
+
+public static final java.util.Locale CANADA
+
+public static final java.util.Locale CANADA_FRENCH
+
+public static final java.util.Locale CHINA
+
+public static final java.util.Locale CHINESE
+
+public static final java.util.Locale ENGLISH
+
+public static final java.util.Locale FRANCE
+
+public static final java.util.Locale FRENCH
+
+public static final java.util.Locale GERMAN
+
+public static final java.util.Locale GERMANY
+
+public static final java.util.Locale ITALIAN
+
+public static final java.util.Locale ITALY
+
+public static final java.util.Locale JAPAN
+
+public static final java.util.Locale JAPANESE
+
+public static final java.util.Locale KOREA
+
+public static final java.util.Locale KOREAN
+
+public static final java.util.Locale PRC
+
+public static final java.util.Locale SIMPLIFIED_CHINESE
+
+public static final java.util.Locale TAIWAN
+
+public static final java.util.Locale TRADITIONAL_CHINESE
+
+public static final java.util.Locale UK
+
+public static final java.util.Locale US
+
+private static java.util.Locale[] availableLocales
+
+private static java.util.Locale defaultLocale
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+private static final java.util.PropertyPermission setLocalePermission
+
+private transient java.lang.String countryCode
+
+private transient java.lang.String languageCode
+
+private transient java.lang.String variantCode
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+static java.util.Locale[] find()
+
+public static java.util.Locale[] getAvailableLocales()
+
+static java.util.ResourceBundle getBundle(
+java.lang.String
+java.util.Locale)
+
+public static java.util.Locale getDefault()
+
+public static java.lang.String[] getISOCountries()
+
+public static java.lang.String[] getISOLanguages()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+public static void setDefault(
+java.util.Locale)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getCountry()
+
+public final java.lang.String getDisplayCountry()
+
+public java.lang.String getDisplayCountry(
+java.util.Locale)
+
+public final java.lang.String getDisplayLanguage()
+
+public java.lang.String getDisplayLanguage(
+java.util.Locale)
+
+public final java.lang.String getDisplayName()
+
+public java.lang.String getDisplayName(
+java.util.Locale)
+
+public final java.lang.String getDisplayVariant()
+
+public java.lang.String getDisplayVariant(
+java.util.Locale)
+@dalvik.annotation.Throws (value =Ljava/util/MissingResourceException; )
+public java.lang.String getISO3Country()
+@dalvik.annotation.Throws (value =Ljava/util/MissingResourceException; )
+public java.lang.String getISO3Language()
+
+public java.lang.String getLanguage()
+
+public java.lang.String getVariant()
+
+public int hashCode()
+
+public final java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/MiniEnumSet; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class java.util.MiniEnumSet$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =MiniEnumSetIterator )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<TE;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/MiniEnumSet; )
+ class java.util.MiniEnumSet$MiniEnumSetIterator extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+
+private boolean canProcess
+
+private long currentElementMask
+
+final java.util.MiniEnumSet this$0
+
+private long unProcessedBits
+----------------METHODS----------------
+
+private void <init>(
+java.util.MiniEnumSet)
+
+ void <init>(
+java.util.MiniEnumSet
+java.util.MiniEnumSet$1)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Enum next()
+
+public volatile java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/MiniEnumSet$1;Ljava/util/MiniEnumSet$MiniEnumSetIterator; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Enum<TE;>;>Ljava/util/EnumSet<TE;>; )
+final class java.util.MiniEnumSet extends java.util.EnumSet
+
+----------------FIELDS----------------
+
+private static final int MAX_ELEMENTS
+
+private long bits
+@dalvik.annotation.Signature (value =[TE; )
+private final java.lang.Enum[] enums
+
+private int size
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<TE;>;[TE;)V )
+ void <init>(
+java.lang.Class
+java.lang.Enum[])
+
+static long access$000(
+java.util.MiniEnumSet)
+
+static long access$074(
+java.util.MiniEnumSet
+long)
+
+static java.lang.Enum[] access$100(
+java.util.MiniEnumSet)
+
+static int access$202(
+java.util.MiniEnumSet
+int)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Enum)
+
+public volatile boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+java.util.Collection)
+
+public void clear()
+
+ void complement()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean containsAll(
+java.util.Collection)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean removeAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean retainAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(TE;TE;)V )
+ void setRange(
+java.lang.Enum
+java.lang.Enum)
+
+public int size()
+
+________________CLASS________________
+
+
+public class java.util.MissingFormatArgumentException extends java.util.IllegalFormatException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.String s
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public java.lang.String getFormatSpecifier()
+
+public java.lang.String getMessage()
+
+________________CLASS________________
+
+
+public class java.util.MissingFormatWidthException extends java.util.IllegalFormatException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.String s
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public java.lang.String getFormatSpecifier()
+
+public java.lang.String getMessage()
+
+________________CLASS________________
+
+
+public class java.util.MissingResourceException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+ java.lang.String className
+
+ java.lang.String key
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public java.lang.String getClassName()
+
+public java.lang.String getKey()
+
+________________CLASS________________
+
+
+public class java.util.Observable extends java.lang.Object
+
+----------------FIELDS----------------
+
+ boolean changed
+@dalvik.annotation.Signature (value =Ljava/util/Vector<Ljava/util/Observer;>; )
+ java.util.Vector observers
+----------------METHODS----------------
+
+public void <init>()
+
+public void addObserver(
+java.util.Observer)
+
+protected void clearChanged()
+
+public int countObservers()
+
+public void deleteObserver(
+java.util.Observer)
+
+public void deleteObservers()
+
+public boolean hasChanged()
+
+public void notifyObservers()
+
+public void notifyObservers(
+java.lang.Object)
+
+protected void setChanged()
+
+________________CLASS________________
+
+
+public abstract interface class java.util.Observer extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void update(
+java.util.Observable
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/PriorityQueue; )
+ class java.util.PriorityQueue$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =PriorityIterator )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/PriorityQueue; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<TE;>; )
+ class java.util.PriorityQueue$PriorityIterator extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+
+private boolean allowRemove
+
+private int currentIndex
+
+final java.util.PriorityQueue this$0
+----------------METHODS----------------
+
+private void <init>(
+java.util.PriorityQueue)
+
+ void <init>(
+java.util.PriorityQueue
+java.util.PriorityQueue$1)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractQueue<TE;>;Ljava/io/Serializable; )
+@dalvik.annotation.MemberClasses (value =Ljava/util/PriorityQueue$1;Ljava/util/PriorityQueue$PriorityIterator; )
+public class java.util.PriorityQueue extends java.util.AbstractQueue implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final int DEFAULT_CAPACITY
+
+private static final int DEFAULT_CAPACITY_RATIO
+
+private static final double DEFAULT_INIT_CAPACITY_RATIO
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/Comparator<-TE;>; )
+private java.util.Comparator comparator
+@dalvik.annotation.Signature (value =[TE; )
+private transient java.lang.Object[] elements
+
+private int size
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+@dalvik.annotation.Signature (value =(ILjava/util/Comparator<-TE;>;)V )
+public void <init>(
+int
+java.util.Comparator)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)V )
+public void <init>(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/PriorityQueue<+TE;>;)V )
+public void <init>(
+java.util.PriorityQueue)
+@dalvik.annotation.Signature (value =(Ljava/util/SortedSet<+TE;>;)V )
+public void <init>(
+java.util.SortedSet)
+
+static int access$100(
+java.util.PriorityQueue)
+
+static java.lang.Object[] access$200(
+java.util.PriorityQueue)
+
+static void access$300(
+java.util.PriorityQueue
+int)
+@dalvik.annotation.Signature (value =(TE;TE;)I )
+private int compare(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/PriorityQueue<+TE;>;)V )
+private void getFromPriorityQueue(
+java.util.PriorityQueue)
+@dalvik.annotation.Signature (value =(Ljava/util/SortedSet<+TE;>;)V )
+private void getFromSortedSet(
+java.util.SortedSet)
+
+private void growToSize(
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)V )
+private void initSize(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(I)[TE; )
+private java.lang.Object[] newElementArray(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+private void removeAt(
+int)
+
+private void siftDown(
+int)
+
+private void siftUp(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+
+public void clear()
+@dalvik.annotation.Signature (value =()Ljava/util/Comparator<-TE;>; )
+public java.util.Comparator comparator()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean offer(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object peek()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object poll()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+
+public abstract interface class org.xml.sax.ErrorHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void error(
+org.xml.sax.SAXParseException)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void fatalError(
+org.xml.sax.SAXParseException)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void warning(
+org.xml.sax.SAXParseException)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.Properties$1 extends java.lang.Object implements org.xml.sax.ErrorHandler
+
+----------------FIELDS----------------
+
+final java.util.Properties this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.Properties)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void error(
+org.xml.sax.SAXParseException)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void fatalError(
+org.xml.sax.SAXParseException)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void warning(
+org.xml.sax.SAXParseException)
+
+________________CLASS________________
+
+
+public abstract interface class org.xml.sax.EntityResolver extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public abstract org.xml.sax.InputSource resolveEntity(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.Properties$2 extends java.lang.Object implements org.xml.sax.EntityResolver
+
+----------------FIELDS----------------
+
+final java.util.Properties this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.Properties)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public org.xml.sax.InputSource resolveEntity(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class java.util.PropertyPermission extends java.security.BasicPermission
+
+----------------FIELDS----------------
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+private transient boolean read
+
+private transient boolean write
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+private void decodeActions(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getActions()
+
+public int hashCode()
+
+public boolean implies(
+java.security.Permission)
+
+public java.security.PermissionCollection newPermissionCollection()
+
+________________CLASS________________
+
+
+ class java.util.PropertyPermissionCollection extends java.security.PermissionCollection
+
+----------------FIELDS----------------
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable<Ljava/lang/String;Ljava/security/Permission;>; )
+ java.util.Hashtable permissions
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public void add(
+java.security.Permission)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/security/Permission;>; )
+public java.util.Enumeration elements()
+
+public boolean implies(
+java.security.Permission)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Enumeration<Ljava/lang/String;>; )
+ class java.util.PropertyResourceBundle$1 extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Enumeration<Ljava/lang/String;>; )
+ java.util.Enumeration local
+
+ java.lang.String nextElement
+@dalvik.annotation.Signature (value =Ljava/util/Enumeration<Ljava/lang/String;>; )
+ java.util.Enumeration pEnum
+
+final java.util.PropertyResourceBundle this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.PropertyResourceBundle)
+
+private boolean findNext()
+
+public boolean hasMoreElements()
+
+public volatile java.lang.Object nextElement()
+
+public java.lang.String nextElement()
+
+________________CLASS________________
+
+
+public class java.util.PropertyResourceBundle extends java.util.ResourceBundle
+
+----------------FIELDS----------------
+
+ java.util.Properties resources
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.InputStream)
+
+static java.util.Enumeration access$000(
+java.util.PropertyResourceBundle)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/lang/String;>; )
+private java.util.Enumeration getLocalKeys()
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/lang/String;>; )
+public java.util.Enumeration getKeys()
+
+public java.lang.Object handleGetObject(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/io/InputStream;>; )
+final class java.util.ResourceBundle$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.lang.String val$fileName
+
+final java.lang.ClassLoader val$loader
+----------------METHODS----------------
+
+ void <init>(
+java.lang.ClassLoader
+java.lang.String)
+
+public java.io.InputStream run()
+
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/ResourceBundle; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =MissingBundle )
+ class java.util.ResourceBundle$MissingBundle extends java.util.ResourceBundle
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/lang/String;>; )
+public java.util.Enumeration getKeys()
+
+public java.lang.Object handleGetObject(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Ljava/util/Scanner$DataType;>; )
+@dalvik.annotation.InnerClass (accessFlags =16410 name =DataType )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Scanner; )
+final class java.util.Scanner$DataType extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final java.util.Scanner$DataType[] $VALUES
+
+public static final java.util.Scanner$DataType FLOAT
+
+public static final java.util.Scanner$DataType INT
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static java.util.Scanner$DataType valueOf(
+java.lang.String)
+
+public static java.util.Scanner$DataType[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/Scanner$DataType; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<Ljava/lang/String;>; )
+public final class java.util.Scanner extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+
+private static final java.util.regex.Pattern ANY_PATTERN
+
+private static final java.util.regex.Pattern BOOLEAN_PATTERN
+
+private static final java.util.regex.Pattern DEFAULT_DELIMITER
+
+private static final int DEFAULT_RADIX
+
+private static final int DEFAULT_TRUNK_SIZE
+
+private static final int DIPLOID
+
+private static final java.util.regex.Pattern LINE_PATTERN
+
+private static final java.util.regex.Pattern LINE_TERMINATOR
+
+private static final java.util.regex.Pattern MULTI_LINE_TERMINATOR
+
+private java.nio.CharBuffer buffer
+
+private int bufferLength
+
+private java.lang.Object cacheHasNextValue
+
+private int cachehasNextIndex
+
+private boolean closed
+
+private java.text.DecimalFormat decimalFormat
+
+private java.util.regex.Pattern delimiter
+
+private int findStartIndex
+
+private java.lang.Readable input
+
+private boolean inputExhausted
+
+private int integerRadix
+
+private java.io.IOException lastIOException
+
+private java.util.Locale locale
+
+private boolean matchSuccessful
+
+private java.util.regex.Matcher matcher
+
+private int preStartIndex
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.io.File)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public void <init>(
+java.io.File
+java.lang.String)
+
+public void <init>(
+java.io.InputStream)
+
+public void <init>(
+java.io.InputStream
+java.lang.String)
+
+public void <init>(
+java.lang.Readable)
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.nio.channels.ReadableByteChannel)
+
+public void <init>(
+java.nio.channels.ReadableByteChannel
+java.lang.String)
+
+private java.lang.StringBuilder addNegativeSign(
+java.lang.StringBuilder)
+
+private java.lang.StringBuilder addPositiveSign(
+java.lang.StringBuilder)
+
+private void checkClosed()
+
+private void checkNull(
+java.util.regex.Pattern)
+
+private void expandBuffer()
+
+private int findPostDelimiter()
+
+private int findPreDelimiter()
+
+private java.util.regex.Pattern getFloatPattern()
+
+private java.util.regex.Pattern getIntegerPattern(
+int)
+
+private java.lang.StringBuilder getNumeral(
+java.lang.StringBuilder
+java.lang.StringBuilder)
+
+private void initialization()
+
+private void readMore()
+
+private void recoverPreviousStatus()
+
+private java.lang.String removeLocaleInfo(
+java.lang.String
+java.util.Scanner$DataType)
+
+private java.lang.String removeLocaleInfoFromFloat(
+java.lang.String)
+
+private boolean removeLocaleSign(
+java.lang.StringBuilder)
+
+private void resetMatcher()
+
+private void saveCurrentStatus()
+
+private boolean setHeadTokenRegion(
+int)
+
+private boolean setTokenRegion()
+
+public void close()
+
+public java.util.regex.Pattern delimiter()
+
+public java.lang.String findInLine(
+java.lang.String)
+
+public java.lang.String findInLine(
+java.util.regex.Pattern)
+
+public java.lang.String findWithinHorizon(
+java.lang.String
+int)
+
+public java.lang.String findWithinHorizon(
+java.util.regex.Pattern
+int)
+
+public boolean hasNext()
+
+public boolean hasNext(
+java.lang.String)
+
+public boolean hasNext(
+java.util.regex.Pattern)
+
+public boolean hasNextBigDecimal()
+
+public boolean hasNextBigInteger()
+
+public boolean hasNextBigInteger(
+int)
+
+public boolean hasNextBoolean()
+
+public boolean hasNextByte()
+
+public boolean hasNextByte(
+int)
+
+public boolean hasNextDouble()
+
+public boolean hasNextFloat()
+
+public boolean hasNextInt()
+
+public boolean hasNextInt(
+int)
+
+public boolean hasNextLine()
+
+public boolean hasNextLong()
+
+public boolean hasNextLong(
+int)
+
+public boolean hasNextShort()
+
+public boolean hasNextShort(
+int)
+
+public java.io.IOException ioException()
+
+public java.util.Locale locale()
+
+public java.util.regex.MatchResult match()
+
+public volatile java.lang.Object next()
+
+public java.lang.String next()
+
+public java.lang.String next(
+java.lang.String)
+
+public java.lang.String next(
+java.util.regex.Pattern)
+
+public java.math.BigDecimal nextBigDecimal()
+
+public java.math.BigInteger nextBigInteger()
+
+public java.math.BigInteger nextBigInteger(
+int)
+
+public boolean nextBoolean()
+
+public byte nextByte()
+
+public byte nextByte(
+int)
+
+public double nextDouble()
+
+public float nextFloat()
+
+public int nextInt()
+
+public int nextInt(
+int)
+
+public java.lang.String nextLine()
+
+public long nextLong()
+
+public long nextLong(
+int)
+
+public short nextShort()
+
+public short nextShort(
+int)
+
+public int radix()
+
+public void remove()
+
+public java.util.Scanner skip(
+java.lang.String)
+
+public java.util.Scanner skip(
+java.util.regex.Pattern)
+
+public java.lang.String toString()
+
+public java.util.Scanner useDelimiter(
+java.lang.String)
+
+public java.util.Scanner useDelimiter(
+java.util.regex.Pattern)
+
+public java.util.Scanner useLocale(
+java.util.Locale)
+
+public java.util.Scanner useRadix(
+int)
+
+________________CLASS________________
+
+
+public abstract class java.util.TimeZone extends java.lang.Object implements java.io.Serializable, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private static java.util.TimeZone Default
+
+static java.util.TimeZone GMT
+
+public static final int LONG
+
+public static final int SHORT
+
+private static final long serialVersionUID
+
+private java.lang.String ID
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void appendNumber(
+java.lang.StringBuffer
+int
+int)
+
+private static java.lang.String formatTimeZoneName(
+java.lang.String
+int)
+
+public static java.lang.String[] getAvailableIDs()
+
+public static java.lang.String[] getAvailableIDs(
+int)
+
+public static java.util.TimeZone getDefault()
+
+public static java.util.TimeZone getTimeZone(
+java.lang.String)
+
+private static int parseNumber(
+java.lang.String
+int
+int[])
+
+public static void setDefault(
+java.util.TimeZone)
+
+public java.lang.Object clone()
+
+public int getDSTSavings()
+
+public final java.lang.String getDisplayName()
+
+public final java.lang.String getDisplayName(
+java.util.Locale)
+
+public final java.lang.String getDisplayName(
+boolean
+int)
+
+public java.lang.String getDisplayName(
+boolean
+int
+java.util.Locale)
+
+public java.lang.String getID()
+
+public abstract int getOffset(
+int
+int
+int
+int
+int
+int)
+
+public int getOffset(
+long)
+
+public abstract int getRawOffset()
+
+public boolean hasSameRules(
+java.util.TimeZone)
+
+public abstract boolean inDaylightTime(
+java.util.Date)
+
+public void setID(
+java.lang.String)
+
+public abstract void setRawOffset(
+int)
+
+public abstract boolean useDaylightTime()
+
+________________CLASS________________
+
+
+public class java.util.SimpleTimeZone extends java.util.TimeZone
+
+----------------FIELDS----------------
+
+private static final int DOM_MODE
+
+private static final int DOW_GE_DOM_MODE
+
+private static final int DOW_IN_MONTH_MODE
+
+private static final int DOW_LE_DOM_MODE
+
+public static final int STANDARD_TIME
+
+public static final int UTC_TIME
+
+public static final int WALL_TIME
+
+private static final java.io.ObjectStreamField[] serialPersistentFields
+
+private static final long serialVersionUID
+
+private java.util.GregorianCalendar daylightSavings
+
+private int dstSavings
+
+private int endDay
+
+private int endDayOfWeek
+
+private int endMode
+
+private int endMonth
+
+private int endTime
+
+private int rawOffset
+
+private int startDay
+
+private int startDayOfWeek
+
+private int startMode
+
+private int startMonth
+
+private int startTime
+
+private int startYear
+
+private boolean useDaylight
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+java.lang.String)
+
+public void <init>(
+int
+java.lang.String
+int
+int
+int
+int
+int
+int
+int
+int)
+
+public void <init>(
+int
+java.lang.String
+int
+int
+int
+int
+int
+int
+int
+int
+int)
+
+public void <init>(
+int
+java.lang.String
+int
+int
+int
+int
+int
+int
+int
+int
+int
+int
+int)
+
+private void checkDay(
+int
+int)
+
+private void checkRange(
+int
+int
+int)
+
+private boolean isLeapYear(
+int)
+
+private int mod7(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+private void setEndMode()
+
+private void setStartMode()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public int getDSTSavings()
+
+public int getOffset(
+int
+int
+int
+int
+int
+int)
+
+public int getOffset(
+long)
+
+public int getRawOffset()
+
+public boolean hasSameRules(
+java.util.TimeZone)
+
+public int hashCode()
+
+public boolean inDaylightTime(
+java.util.Date)
+
+public void setDSTSavings(
+int)
+
+public void setEndRule(
+int
+int
+int)
+
+public void setEndRule(
+int
+int
+int
+int)
+
+public void setEndRule(
+int
+int
+int
+int
+boolean)
+
+public void setRawOffset(
+int)
+
+public void setStartRule(
+int
+int
+int)
+
+public void setStartRule(
+int
+int
+int
+int)
+
+public void setStartRule(
+int
+int
+int
+int
+boolean)
+
+public void setStartYear(
+int)
+
+public java.lang.String toString()
+
+public boolean useDaylightTime()
+
+________________CLASS________________
+
+
+final class java.util.SpecialAccess extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final org.apache.harmony.kernel.vm.LangAccess LANG
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractList<TE;>;Ljava/util/List<TE;>;Ljava/util/RandomAccess;Ljava/lang/Cloneable;Ljava/io/Serializable; )
+public class java.util.Vector extends java.util.AbstractList implements java.util.List, java.util.RandomAccess, java.lang.Cloneable, java.io.Serializable
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private static final int DEFAULT_SIZE
+
+private static final long serialVersionUID
+
+protected int capacityIncrement
+
+protected int elementCount
+
+protected java.lang.Object[] elementData
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+int
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)V )
+public void <init>(
+java.util.Collection)
+
+private void grow(
+int)
+
+private void growBy(
+int)
+
+private void growByOne()
+@dalvik.annotation.Signature (value =(I)[TE; )
+private java.lang.Object[] newElementArray(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Signature (value =(ITE;)V )
+public void add(
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(ILjava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+int
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(TE;)V )
+public void addElement(
+java.lang.Object)
+
+public int capacity()
+
+public void clear()
+
+public java.lang.Object clone()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean containsAll(
+java.util.Collection)
+
+public void copyInto(
+java.lang.Object[])
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object elementAt(
+int)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<TE;>; )
+public java.util.Enumeration elements()
+
+public void ensureCapacity(
+int)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object firstElement()
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object get(
+int)
+
+public int hashCode()
+
+public int indexOf(
+java.lang.Object)
+
+public int indexOf(
+java.lang.Object
+int)
+@dalvik.annotation.Signature (value =(TE;I)V )
+public void insertElementAt(
+java.lang.Object
+int)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object lastElement()
+
+public int lastIndexOf(
+java.lang.Object)
+
+public int lastIndexOf(
+java.lang.Object
+int)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object remove(
+int)
+
+public boolean remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean removeAll(
+java.util.Collection)
+
+public void removeAllElements()
+
+public boolean removeElement(
+java.lang.Object)
+
+public void removeElementAt(
+int)
+
+protected void removeRange(
+int
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean retainAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(ITE;)TE; )
+public java.lang.Object set(
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;I)V )
+public void setElementAt(
+java.lang.Object
+int)
+
+public void setSize(
+int)
+
+public int size()
+@dalvik.annotation.Signature (value =(II)Ljava/util/List<TE;>; )
+public java.util.List subList(
+int
+int)
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+public java.lang.String toString()
+
+public void trimToSize()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/Vector<TE;>; )
+public class java.util.Stack extends java.util.Vector
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean empty()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object peek()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object pop()
+@dalvik.annotation.Signature (value =(TE;)TE; )
+public java.lang.Object push(
+java.lang.Object)
+
+public int search(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Enumeration<Ljava/lang/Object;>; )
+public class java.util.StringTokenizer extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+
+private java.lang.String delimiters
+
+private int position
+
+private boolean returnDelimiters
+
+private java.lang.String string
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String
+boolean)
+
+public int countTokens()
+
+public boolean hasMoreElements()
+
+public boolean hasMoreTokens()
+
+public java.lang.Object nextElement()
+
+public java.lang.String nextToken()
+
+public java.lang.String nextToken(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Timer; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.Timer$1 extends java.lang.Object
+
+----------------FIELDS----------------
+
+final java.util.Timer this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.Timer)
+
+protected void finalize()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =TimerNode )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Timer$TimerImpl; )
+final class java.util.Timer$TimerImpl$TimerNode extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.util.Timer$TimerImpl$TimerNode left
+
+ java.util.Timer$TimerImpl$TimerNode parent
+
+ java.util.Timer$TimerImpl$TimerNode right
+
+ java.util.TimerTask task
+----------------METHODS----------------
+
+public void <init>(
+java.util.TimerTask)
+
+public void deleteIfCancelled(
+java.util.Timer$TimerImpl$TimerTree)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =26 name =TimerTree )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Timer$TimerImpl; )
+final class java.util.Timer$TimerImpl$TimerTree extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int deletedCancelledNumber
+
+ java.util.Timer$TimerImpl$TimerNode root
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+java.util.Timer$1)
+
+private java.util.Timer$TimerImpl$TimerNode minimum(
+java.util.Timer$TimerImpl$TimerNode)
+
+private java.util.Timer$TimerImpl$TimerNode successor(
+java.util.Timer$TimerImpl$TimerNode)
+
+ void delete(
+java.util.Timer$TimerImpl$TimerNode)
+
+ void insert(
+java.util.Timer$TimerImpl$TimerNode)
+
+ boolean isEmpty()
+
+ java.util.Timer$TimerImpl$TimerNode minimum()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/Timer; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =TimerImpl )
+@dalvik.annotation.MemberClasses (value =Ljava/util/Timer$TimerImpl$TimerTree;Ljava/util/Timer$TimerImpl$TimerNode; )
+final class java.util.Timer$TimerImpl extends java.lang.Thread
+
+----------------FIELDS----------------
+
+private boolean cancelled
+
+private boolean finished
+
+private java.util.Timer$TimerImpl$TimerTree tasks
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+boolean)
+
+ void <init>(
+boolean)
+
+static boolean access$202(
+java.util.Timer$TimerImpl
+boolean)
+
+static boolean access$300(
+java.util.Timer$TimerImpl)
+
+static void access$400(
+java.util.Timer$TimerImpl
+java.util.TimerTask)
+
+private void insertTask(
+java.util.TimerTask)
+
+public void cancel()
+
+public int purge()
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/Timer$TimerImpl; )
+public class java.util.Timer extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.Object finalizer
+
+private java.util.Timer$TimerImpl impl
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+boolean)
+
+public void <init>(
+boolean)
+
+static java.util.Timer$TimerImpl access$100(
+java.util.Timer)
+
+private void scheduleImpl(
+java.util.TimerTask
+long
+long
+boolean)
+
+public void cancel()
+
+public int purge()
+
+public void schedule(
+java.util.TimerTask
+long)
+
+public void schedule(
+java.util.TimerTask
+long
+long)
+
+public void schedule(
+java.util.TimerTask
+java.util.Date)
+
+public void schedule(
+java.util.TimerTask
+java.util.Date
+long)
+
+public void scheduleAtFixedRate(
+java.util.TimerTask
+long
+long)
+
+public void scheduleAtFixedRate(
+java.util.TimerTask
+java.util.Date
+long)
+
+________________CLASS________________
+
+
+public abstract class java.util.TimerTask extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+ boolean cancelled
+
+ boolean fixedRate
+
+final java.lang.Object lock
+
+ long period
+
+private long scheduledTime
+
+ long when
+----------------METHODS----------------
+
+protected void <init>()
+
+public boolean cancel()
+
+ long getWhen()
+
+ boolean isScheduled()
+
+public abstract void run()
+
+public long scheduledExecutionTime()
+
+ void setScheduledTime(
+long)
+
+________________CLASS________________
+
+
+public class java.util.TooManyListenersException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractSet<Ljava/util/Map$Entry<TK;TV;>;>; )
+ class java.util.TreeMap$1 extends java.util.AbstractSet
+
+----------------FIELDS----------------
+
+final java.util.TreeMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.TreeMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Iterator iterator()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/util/AbstractSet<TK;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.TreeMap$2 extends java.util.AbstractSet
+
+----------------FIELDS----------------
+
+final java.util.TreeMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.TreeMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TK;>; )
+public java.util.Iterator iterator()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractCollection<TV;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.TreeMap$3 extends java.util.AbstractCollection
+
+----------------FIELDS----------------
+
+final java.util.TreeMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.TreeMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TV;>; )
+public java.util.Iterator iterator()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =AbstractMapIterator )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/TreeMap; )
+ class java.util.TreeMap$AbstractMapIterator extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/TreeMap<TK;TV;>; )
+ java.util.TreeMap backingMap
+
+ int expectedModCount
+@dalvik.annotation.Signature (value =Ljava/util/TreeMap$Entry<TK;TV;>; )
+ java.util.TreeMap$Entry lastNode
+@dalvik.annotation.Signature (value =Ljava/util/TreeMap$Entry<TK;TV;>; )
+ java.util.TreeMap$Entry node
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap<TK;TV;>;Ljava/util/TreeMap$Entry<TK;TV;>;)V )
+ void <init>(
+java.util.TreeMap
+java.util.TreeMap$Entry)
+
+public boolean hasNext()
+
+final void makeNext()
+
+public final void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =ComparableBoundedIterator )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/TreeMap$AbstractMapIterator<TK;TV;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/TreeMap; )
+ class java.util.TreeMap$ComparableBoundedIterator extends java.util.TreeMap$AbstractMapIterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/lang/Comparable<TK;>; )
+private final java.lang.Comparable endKey
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap<TK;TV;>;Ljava/util/TreeMap$Entry<TK;TV;>;Ljava/lang/Comparable<TK;>;)V )
+public void <init>(
+java.util.TreeMap
+java.util.TreeMap$Entry
+java.lang.Comparable)
+
+final void cleanNext()
+
+public boolean hasNext()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/TreeMap$ComparableBoundedIterator<TK;TV;>;Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =ComparableBoundedEntryIterator )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/TreeMap; )
+ class java.util.TreeMap$ComparableBoundedEntryIterator extends java.util.TreeMap$ComparableBoundedIterator implements java.util.Iterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap<TK;TV;>;Ljava/util/TreeMap$Entry<TK;TV;>;Ljava/lang/Comparable<TK;>;)V )
+ void <init>(
+java.util.TreeMap
+java.util.TreeMap$Entry
+java.lang.Comparable)
+
+public volatile java.lang.Object next()
+@dalvik.annotation.Signature (value =()Ljava/util/Map$Entry<TK;TV;>; )
+public java.util.Map$Entry next()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/TreeMap; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/TreeMap$ComparableBoundedIterator<TK;TV;>;Ljava/util/Iterator<TK;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =ComparableBoundedKeyIterator )
+ class java.util.TreeMap$ComparableBoundedKeyIterator extends java.util.TreeMap$ComparableBoundedIterator implements java.util.Iterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap<TK;TV;>;Ljava/util/TreeMap$Entry<TK;TV;>;Ljava/lang/Comparable<TK;>;)V )
+ void <init>(
+java.util.TreeMap
+java.util.TreeMap$Entry
+java.lang.Comparable)
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object next()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/TreeMap$ComparableBoundedIterator<TK;TV;>;Ljava/util/Iterator<TV;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =ComparableBoundedValueIterator )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/TreeMap; )
+ class java.util.TreeMap$ComparableBoundedValueIterator extends java.util.TreeMap$ComparableBoundedIterator implements java.util.Iterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap<TK;TV;>;Ljava/util/TreeMap$Entry<TK;TV;>;Ljava/lang/Comparable<TK;>;)V )
+ void <init>(
+java.util.TreeMap
+java.util.TreeMap$Entry
+java.lang.Comparable)
+@dalvik.annotation.Signature (value =()TV; )
+public java.lang.Object next()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =ComparatorBoundedIterator )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/TreeMap; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/TreeMap$AbstractMapIterator<TK;TV;>; )
+ class java.util.TreeMap$ComparatorBoundedIterator extends java.util.TreeMap$AbstractMapIterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Comparator<-TK;>; )
+private final java.util.Comparator cmp
+@dalvik.annotation.Signature (value =TK; )
+private final java.lang.Object endKey
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap<TK;TV;>;Ljava/util/TreeMap$Entry<TK;TV;>;TK;)V )
+ void <init>(
+java.util.TreeMap
+java.util.TreeMap$Entry
+java.lang.Object)
+
+final void cleanNext()
+
+public boolean hasNext()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/TreeMap$ComparatorBoundedIterator<TK;TV;>;Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/TreeMap; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =ComparatorBoundedEntryIterator )
+ class java.util.TreeMap$ComparatorBoundedEntryIterator extends java.util.TreeMap$ComparatorBoundedIterator implements java.util.Iterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap<TK;TV;>;Ljava/util/TreeMap$Entry<TK;TV;>;TK;)V )
+ void <init>(
+java.util.TreeMap
+java.util.TreeMap$Entry
+java.lang.Object)
+
+public volatile java.lang.Object next()
+@dalvik.annotation.Signature (value =()Ljava/util/Map$Entry<TK;TV;>; )
+public java.util.Map$Entry next()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/TreeMap$ComparatorBoundedIterator<TK;TV;>;Ljava/util/Iterator<TK;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =ComparatorBoundedKeyIterator )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/TreeMap; )
+ class java.util.TreeMap$ComparatorBoundedKeyIterator extends java.util.TreeMap$ComparatorBoundedIterator implements java.util.Iterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap<TK;TV;>;Ljava/util/TreeMap$Entry<TK;TV;>;TK;)V )
+ void <init>(
+java.util.TreeMap
+java.util.TreeMap$Entry
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object next()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =ComparatorBoundedValueIterator )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/TreeMap; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/TreeMap$ComparatorBoundedIterator<TK;TV;>;Ljava/util/Iterator<TV;>; )
+ class java.util.TreeMap$ComparatorBoundedValueIterator extends java.util.TreeMap$ComparatorBoundedIterator implements java.util.Iterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap<TK;TV;>;Ljava/util/TreeMap$Entry<TK;TV;>;TK;)V )
+ void <init>(
+java.util.TreeMap
+java.util.TreeMap$Entry
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TV; )
+public java.lang.Object next()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/MapEntry<TK;TV;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =Entry )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/TreeMap; )
+ class java.util.TreeMap$Entry extends java.util.MapEntry
+
+----------------FIELDS----------------
+
+ boolean color
+@dalvik.annotation.Signature (value =Ljava/util/TreeMap$Entry<TK;TV;>; )
+ java.util.TreeMap$Entry left
+@dalvik.annotation.Signature (value =Ljava/util/TreeMap$Entry<TK;TV;>; )
+ java.util.TreeMap$Entry parent
+@dalvik.annotation.Signature (value =Ljava/util/TreeMap$Entry<TK;TV;>; )
+ java.util.TreeMap$Entry right
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TK;)V )
+ void <init>(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;TV;)V )
+ void <init>(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap$Entry<TK;TV;>;)Ljava/util/TreeMap$Entry<TK;TV;>; )
+ java.util.TreeMap$Entry clone(
+java.util.TreeMap$Entry)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/util/SortedMap<TK;TV;>;Ljava/io/Serializable; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =SubMap )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/TreeMap; )
+final class java.util.TreeMap$SubMap extends java.util.AbstractMap implements java.util.SortedMap, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/TreeMap<TK;TV;>; )
+private java.util.TreeMap backingMap
+@dalvik.annotation.Signature (value =TK; )
+ java.lang.Object endKey
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+transient java.util.Set entrySet
+
+ boolean hasEnd
+
+ boolean hasStart
+@dalvik.annotation.Signature (value =TK; )
+ java.lang.Object startKey
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TK;Ljava/util/TreeMap<TK;TV;>;)V )
+ void <init>(
+java.lang.Object
+java.util.TreeMap)
+@dalvik.annotation.Signature (value =(TK;Ljava/util/TreeMap<TK;TV;>;TK;)V )
+ void <init>(
+java.lang.Object
+java.util.TreeMap
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap<TK;TV;>;TK;)V )
+ void <init>(
+java.util.TreeMap
+java.lang.Object)
+
+static java.util.TreeMap access$200(
+java.util.TreeMap$SubMap)
+
+static boolean access$300(
+java.util.TreeMap$SubMap
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;)Z )
+private boolean checkLowerBound(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;)V )
+private void checkRange(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;)Z )
+private boolean checkUpperBound(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;)Z )
+private boolean isInRange(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Comparator<-TK;>; )
+public java.util.Comparator comparator()
+
+public boolean containsKey(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Set entrySet()
+@dalvik.annotation.Signature (value =()Ljava/util/TreeMap$Entry<TK;TV;>; )
+ java.util.TreeMap$Entry firstEntry()
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object firstKey()
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object get(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;)Ljava/util/SortedMap<TK;TV;>; )
+public java.util.SortedMap headMap(
+java.lang.Object)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<TK;>; )
+public java.util.Set keySet()
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object lastKey()
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;TK;)Ljava/util/SortedMap<TK;TV;>; )
+public java.util.SortedMap subMap(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;)Ljava/util/SortedMap<TK;TV;>; )
+public java.util.SortedMap tailMap(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<TV;>; )
+public java.util.Collection values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =SubMapEntrySet )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/TreeMap; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractSet<Ljava/util/Map$Entry<TK;TV;>;>;Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+ class java.util.TreeMap$SubMapEntrySet extends java.util.AbstractSet implements java.util.Set
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/TreeMap$SubMap<TK;TV;>; )
+ java.util.TreeMap$SubMap subMap
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap$SubMap<TK;TV;>;)V )
+ void <init>(
+java.util.TreeMap$SubMap)
+
+public boolean contains(
+java.lang.Object)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Iterator iterator()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractSet<TK;>;Ljava/util/Set<TK;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =SubMapKeySet )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/TreeMap; )
+ class java.util.TreeMap$SubMapKeySet extends java.util.AbstractSet implements java.util.Set
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/TreeMap$SubMap<TK;TV;>; )
+ java.util.TreeMap$SubMap subMap
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap$SubMap<TK;TV;>;)V )
+ void <init>(
+java.util.TreeMap$SubMap)
+
+public boolean contains(
+java.lang.Object)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TK;>; )
+public java.util.Iterator iterator()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/TreeMap; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =SubMapValuesCollection )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractCollection<TV;>; )
+ class java.util.TreeMap$SubMapValuesCollection extends java.util.AbstractCollection
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/TreeMap$SubMap<TK;TV;>; )
+ java.util.TreeMap$SubMap subMap
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap$SubMap<TK;TV;>;)V )
+public void <init>(
+java.util.TreeMap$SubMap)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TV;>; )
+public java.util.Iterator iterator()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/TreeMap$AbstractMapIterator<TK;TV;>;Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/TreeMap; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =UnboundedEntryIterator )
+ class java.util.TreeMap$UnboundedEntryIterator extends java.util.TreeMap$AbstractMapIterator implements java.util.Iterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap<TK;TV;>;)V )
+ void <init>(
+java.util.TreeMap)
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap<TK;TV;>;Ljava/util/TreeMap$Entry<TK;TV;>;)V )
+ void <init>(
+java.util.TreeMap
+java.util.TreeMap$Entry)
+
+public volatile java.lang.Object next()
+@dalvik.annotation.Signature (value =()Ljava/util/Map$Entry<TK;TV;>; )
+public java.util.Map$Entry next()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/TreeMap; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =UnboundedKeyIterator )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/TreeMap$AbstractMapIterator<TK;TV;>;Ljava/util/Iterator<TK;>; )
+ class java.util.TreeMap$UnboundedKeyIterator extends java.util.TreeMap$AbstractMapIterator implements java.util.Iterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap<TK;TV;>;)V )
+public void <init>(
+java.util.TreeMap)
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap<TK;TV;>;Ljava/util/TreeMap$Entry<TK;TV;>;)V )
+public void <init>(
+java.util.TreeMap
+java.util.TreeMap$Entry)
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object next()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/TreeMap$AbstractMapIterator<TK;TV;>;Ljava/util/Iterator<TV;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =UnboundedValueIterator )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/TreeMap; )
+ class java.util.TreeMap$UnboundedValueIterator extends java.util.TreeMap$AbstractMapIterator implements java.util.Iterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap<TK;TV;>;)V )
+public void <init>(
+java.util.TreeMap)
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap<TK;TV;>;Ljava/util/TreeMap$Entry<TK;TV;>;)V )
+public void <init>(
+java.util.TreeMap
+java.util.TreeMap$Entry)
+@dalvik.annotation.Signature (value =()TV; )
+public java.lang.Object next()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/util/SortedMap<TK;TV;>;Ljava/lang/Cloneable;Ljava/io/Serializable; )
+@dalvik.annotation.MemberClasses (value =Ljava/util/TreeMap$SubMapValuesCollection;Ljava/util/TreeMap$SubMapKeySet;Ljava/util/TreeMap$SubMapEntrySet;Ljava/util/TreeMap$SubMap;Ljava/util/TreeMap$ComparableBoundedValueIterator;Ljava/util/TreeMap$ComparableBoundedKeyIterator;Ljava/util/TreeMap$ComparableBoundedEntryIterator;Ljava/util/TreeMap$ComparableBoundedIterator;Ljava/util/TreeMap$ComparatorBoundedValueIterator;Ljava/util/TreeMap$ComparatorBoundedKeyIterator;Ljava/util/TreeMap$ComparatorBoundedEntryIterator;Ljava/util/TreeMap$ComparatorBoundedIterator;Ljava/util/TreeMap$UnboundedValueIterator;Ljava/util/TreeMap$UnboundedKeyIterator;Ljava/util/TreeMap$UnboundedEntryIterator;Ljava/util/TreeMap$AbstractMapIterator;Ljava/util/TreeMap$Entry; )
+public class java.util.TreeMap extends java.util.AbstractMap implements java.util.SortedMap, java.lang.Cloneable, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/Comparator<-TK;>; )
+private java.util.Comparator comparator
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+transient java.util.Set entrySet
+
+transient int modCount
+@dalvik.annotation.Signature (value =Ljava/util/TreeMap$Entry<TK;TV;>; )
+transient java.util.TreeMap$Entry root
+
+transient int size
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Ljava/util/Comparator<-TK;>;)V )
+public void <init>(
+java.util.Comparator)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void <init>(
+java.util.Map)
+@dalvik.annotation.Signature (value =(Ljava/util/SortedMap<TK;+TV;>;)V )
+public void <init>(
+java.util.SortedMap)
+
+static java.util.Comparator access$000(
+java.util.TreeMap)
+
+static java.lang.Comparable access$100(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap$Entry<TK;TV;>;Ljava/lang/Object;)Z )
+private boolean containsValue(
+java.util.TreeMap$Entry
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)Ljava/util/TreeMap$Entry<TK;TV;>; )
+private java.util.TreeMap$Entry find(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap$Entry<TK;TV;>;)V )
+private void fixup(
+java.util.TreeMap$Entry)
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap$Entry<TK;TV;>;)V )
+private void leftRotate(
+java.util.TreeMap$Entry)
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/TreeMap$Entry<TK;TV;>;)Ljava/util/TreeMap$Entry<TK;TV;>; )
+static java.util.TreeMap$Entry maximum(
+java.util.TreeMap$Entry)
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/TreeMap$Entry<TK;TV;>;)Ljava/util/TreeMap$Entry<TK;TV;>; )
+static java.util.TreeMap$Entry minimum(
+java.util.TreeMap$Entry)
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/TreeMap$Entry<TK;TV;>;)Ljava/util/TreeMap$Entry<TK;TV;>; )
+static java.util.TreeMap$Entry predecessor(
+java.util.TreeMap$Entry)
+@dalvik.annotation.Signature (value =(TK;)Ljava/util/TreeMap$Entry<TK;TV;>; )
+private java.util.TreeMap$Entry rbInsert(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap$Entry<TK;TV;>;)V )
+private void rightRotate(
+java.util.TreeMap$Entry)
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>(Ljava/util/TreeMap$Entry<TK;TV;>;)Ljava/util/TreeMap$Entry<TK;TV;>; )
+static java.util.TreeMap$Entry successor(
+java.util.TreeMap$Entry)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(TT;)Ljava/lang/Comparable<TT;>; )
+private static java.lang.Comparable toComparable(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap$Entry<TK;TV;>;)V )
+ void balance(
+java.util.TreeMap$Entry)
+
+public void clear()
+
+public java.lang.Object clone()
+@dalvik.annotation.Signature (value =()Ljava/util/Comparator<-TK;>; )
+public java.util.Comparator comparator()
+
+public boolean containsKey(
+java.lang.Object)
+
+public boolean containsValue(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Set entrySet()
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)Ljava/util/TreeMap$Entry<TK;TV;>; )
+ java.util.TreeMap$Entry findAfter(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;)Ljava/util/TreeMap$Entry<TK;TV;>; )
+ java.util.TreeMap$Entry findBefore(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object firstKey()
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object get(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;)Ljava/util/SortedMap<TK;TV;>; )
+public java.util.SortedMap headMap(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<TK;>; )
+public java.util.Set keySet()
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object lastKey()
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void putAll(
+java.util.Map)
+@dalvik.annotation.Signature (value =(Ljava/util/TreeMap$Entry<TK;TV;>;)V )
+ void rbDelete(
+java.util.TreeMap$Entry)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object remove(
+java.lang.Object)
+
+public int size()
+@dalvik.annotation.Signature (value =(TK;TK;)Ljava/util/SortedMap<TK;TV;>; )
+public java.util.SortedMap subMap(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;)Ljava/util/SortedMap<TK;TV;>; )
+public java.util.SortedMap tailMap(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<TV;>; )
+public java.util.Collection values()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractSet<TE;>;Ljava/util/SortedSet<TE;>;Ljava/lang/Cloneable;Ljava/io/Serializable; )
+public class java.util.TreeSet extends java.util.AbstractSet implements java.util.SortedSet, java.lang.Cloneable, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/SortedMap<TE;TE;>; )
+private transient java.util.SortedMap backingMap
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)V )
+public void <init>(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Comparator<-TE;>;)V )
+public void <init>(
+java.util.Comparator)
+@dalvik.annotation.Signature (value =(Ljava/util/SortedMap<TE;TE;>;)V )
+private void <init>(
+java.util.SortedMap)
+@dalvik.annotation.Signature (value =(Ljava/util/SortedSet<TE;>;)V )
+public void <init>(
+java.util.SortedSet)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+java.util.Collection)
+
+public void clear()
+
+public java.lang.Object clone()
+@dalvik.annotation.Signature (value =()Ljava/util/Comparator<-TE;>; )
+public java.util.Comparator comparator()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object first()
+@dalvik.annotation.Signature (value =(TE;)Ljava/util/SortedSet<TE;>; )
+public java.util.SortedSet headSet(
+java.lang.Object)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object last()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+@dalvik.annotation.Signature (value =(TE;TE;)Ljava/util/SortedSet<TE;>; )
+public java.util.SortedSet subSet(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;)Ljava/util/SortedSet<TE;>; )
+public java.util.SortedSet tailSet(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Comparable<Ljava/util/UUID;>; )
+public final class java.util.UUID extends java.lang.Object implements java.io.Serializable, java.lang.Comparable
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private static java.security.SecureRandom rng
+
+private static final long serialVersionUID
+
+private transient int clockSequence
+
+private transient int hash
+
+private long leastSigBits
+
+private long mostSigBits
+
+private transient long node
+
+private transient long timestamp
+
+private transient int variant
+
+private transient int version
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+long
+long)
+
+public static java.util.UUID fromString(
+java.lang.String)
+
+private void init()
+
+public static java.util.UUID nameUUIDFromBytes(
+byte[])
+
+public static java.util.UUID randomUUID()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+public int clockSequence()
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.util.UUID)
+
+public boolean equals(
+java.lang.Object)
+
+public long getLeastSignificantBits()
+
+public long getMostSignificantBits()
+
+public int hashCode()
+
+public long node()
+
+public long timestamp()
+
+public java.lang.String toString()
+
+public int variant()
+
+public int version()
+
+________________CLASS________________
+
+
+public class java.util.UnknownFormatConversionException extends java.util.IllegalFormatException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.String s
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public java.lang.String getConversion()
+
+public java.lang.String getMessage()
+
+________________CLASS________________
+
+
+public class java.util.UnknownFormatFlagsException extends java.util.IllegalFormatException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.String flags
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public java.lang.String getFlags()
+
+public java.lang.String getMessage()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Enumeration<TE;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.Vector$1 extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+
+ int pos
+
+final java.util.Vector this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.Vector)
+
+public boolean hasMoreElements()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object nextElement()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1544 name =Type )
+@dalvik.annotation.Signature (value =<R:Ljava/lang/Object;K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/WeakHashMap$Entry; )
+abstract interface class java.util.WeakHashMap$Entry$Type extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Map$Entry<TK;TV;>;)TR; )
+public abstract java.lang.Object get(
+java.util.Map$Entry)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/WeakHashMap$Entry$Type<Ljava/util/Map$Entry<TK;TV;>;TK;TV;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.WeakHashMap$1$1 extends java.lang.Object implements java.util.WeakHashMap$Entry$Type
+
+----------------FIELDS----------------
+
+final java.util.WeakHashMap$1 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.WeakHashMap$1)
+
+public volatile java.lang.Object get(
+java.util.Map$Entry)
+@dalvik.annotation.Signature (value =(Ljava/util/Map$Entry<TK;TV;>;)Ljava/util/Map$Entry<TK;TV;>; )
+public java.util.Map$Entry get(
+java.util.Map$Entry)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractSet<Ljava/util/Map$Entry<TK;TV;>;>; )
+ class java.util.WeakHashMap$1 extends java.util.AbstractSet
+
+----------------FIELDS----------------
+
+final java.util.WeakHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.WeakHashMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/WeakHashMap$Entry$Type<TK;TK;TV;>; )
+ class java.util.WeakHashMap$2$1 extends java.lang.Object implements java.util.WeakHashMap$Entry$Type
+
+----------------FIELDS----------------
+
+final java.util.WeakHashMap$2 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.WeakHashMap$2)
+@dalvik.annotation.Signature (value =(Ljava/util/Map$Entry<TK;TV;>;)TK; )
+public java.lang.Object get(
+java.util.Map$Entry)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractSet<TK;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.WeakHashMap$2 extends java.util.AbstractSet
+
+----------------FIELDS----------------
+
+final java.util.WeakHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.WeakHashMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TK;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/WeakHashMap$Entry$Type<TV;TK;TV;>; )
+ class java.util.WeakHashMap$3$1 extends java.lang.Object implements java.util.WeakHashMap$Entry$Type
+
+----------------FIELDS----------------
+
+final java.util.WeakHashMap$3 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.WeakHashMap$3)
+@dalvik.annotation.Signature (value =(Ljava/util/Map$Entry<TK;TV;>;)TV; )
+public java.lang.Object get(
+java.util.Map$Entry)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractCollection<TV;>; )
+ class java.util.WeakHashMap$3 extends java.util.AbstractCollection
+
+----------------FIELDS----------------
+
+final java.util.WeakHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.WeakHashMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TV;>; )
+public java.util.Iterator iterator()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/ref/WeakReference<TK;>;Ljava/util/Map$Entry<TK;TV;>; )
+@dalvik.annotation.MemberClasses (value =Ljava/util/WeakHashMap$Entry$Type; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/WeakHashMap; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =Entry )
+final class java.util.WeakHashMap$Entry extends java.lang.ref.WeakReference implements java.util.Map$Entry
+
+----------------FIELDS----------------
+
+ int hash
+
+ boolean isNull
+@dalvik.annotation.Signature (value =Ljava/util/WeakHashMap$Entry<TK;TV;>; )
+ java.util.WeakHashMap$Entry next
+@dalvik.annotation.Signature (value =TV; )
+ java.lang.Object value
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TK;TV;Ljava/lang/ref/ReferenceQueue<TK;>;)V )
+ void <init>(
+java.lang.Object
+java.lang.Object
+java.lang.ref.ReferenceQueue)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object getKey()
+@dalvik.annotation.Signature (value =()TV; )
+public java.lang.Object getValue()
+
+public int hashCode()
+@dalvik.annotation.Signature (value =(TV;)TV; )
+public java.lang.Object setValue(
+java.lang.Object)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =HashIterator )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/WeakHashMap; )
+@dalvik.annotation.Signature (value =<R:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Iterator<TR;>; )
+ class java.util.WeakHashMap$HashIterator extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/WeakHashMap$Entry<TK;TV;>; )
+private java.util.WeakHashMap$Entry currentEntry
+
+private int expectedModCount
+@dalvik.annotation.Signature (value =Ljava/util/WeakHashMap$Entry<TK;TV;>; )
+private java.util.WeakHashMap$Entry nextEntry
+@dalvik.annotation.Signature (value =TK; )
+private java.lang.Object nextKey
+
+private int position
+
+final java.util.WeakHashMap this$0
+@dalvik.annotation.Signature (value =Ljava/util/WeakHashMap$Entry$Type<TR;TK;TV;>; )
+final java.util.WeakHashMap$Entry$Type type
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/WeakHashMap$Entry$Type<TR;TK;TV;>;)V )
+ void <init>(
+java.util.WeakHashMap
+java.util.WeakHashMap$Entry$Type)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TR; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/util/Map<TK;TV;>; )
+@dalvik.annotation.MemberClasses (value =Ljava/util/WeakHashMap$HashIterator;Ljava/util/WeakHashMap$Entry; )
+public class java.util.WeakHashMap extends java.util.AbstractMap implements java.util.Map
+
+----------------FIELDS----------------
+
+private static final int DEFAULT_SIZE
+
+ int elementCount
+@dalvik.annotation.Signature (value =[Ljava/util/WeakHashMap$Entry<TK;TV;>; )
+ java.util.WeakHashMap$Entry[] elementData
+
+private final int loadFactor
+
+volatile int modCount
+@dalvik.annotation.Signature (value =Ljava/lang/ref/ReferenceQueue<TK;>; )
+private final java.lang.ref.ReferenceQueue referenceQueue
+
+private int threshold
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+int
+float)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void <init>(
+java.util.Map)
+
+private void computeMaxSize()
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>(I)[Ljava/util/WeakHashMap$Entry<TK;TV;>; )
+private static java.util.WeakHashMap$Entry[] newEntryArray(
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+private void putAllImpl(
+java.util.Map)
+
+private void rehash()
+
+public void clear()
+
+public boolean containsKey(
+java.lang.Object)
+
+public boolean containsValue(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Set entrySet()
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object get(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)Ljava/util/WeakHashMap$Entry<TK;TV;>; )
+ java.util.WeakHashMap$Entry getEntry(
+java.lang.Object)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<TK;>; )
+public java.util.Set keySet()
+
+ void poll()
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void putAll(
+java.util.Map)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/WeakHashMap$Entry<TK;TV;>;)V )
+ void removeEntry(
+java.util.WeakHashMap$Entry)
+
+public int size()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<TV;>; )
+public java.util.Collection values()
+
+________________CLASS________________
+
+
+ class java.util.ZoneInfo extends java.util.TimeZone
+
+----------------FIELDS----------------
+
+private static final int[] LEAP
+
+private static final long MILLISECONDS_PER_400_YEARS
+
+private static final long MILLISECONDS_PER_DAY
+
+private static final int[] NORMAL
+
+private static final long UNIX_OFFSET
+
+private java.lang.String mDaylightName
+
+private int[] mGmtOffs
+
+private byte[] mIsDsts
+
+private int mRawOffset
+
+private java.lang.String mStandardName
+
+private int[] mTransitions
+
+private byte[] mTypes
+
+private boolean mUseDst
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+java.lang.String
+int[]
+byte[]
+int[]
+byte[]
+byte[]
+byte[]
+int)
+
+public static java.util.TimeZone getTimeZone(
+java.lang.String)
+
+private static java.lang.String nullName(
+byte[]
+int
+int)
+
+public int getOffset(
+int
+int
+int
+int
+int
+int)
+
+public int getOffset(
+long)
+
+public int getRawOffset()
+
+public boolean inDaylightTime(
+java.util.Date)
+
+public void setRawOffset(
+int)
+
+public boolean useDaylightTime()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/ZoneInfoDB; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =MinimalTimeZone )
+ class java.util.ZoneInfoDB$MinimalTimeZone extends java.util.TimeZone
+
+----------------FIELDS----------------
+
+private int rawOffset
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public int getOffset(
+int
+int
+int
+int
+int
+int)
+
+public int getRawOffset()
+
+public boolean inDaylightTime(
+java.util.Date)
+
+public void setRawOffset(
+int)
+
+public boolean useDaylightTime()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/ZoneInfoDB$MinimalTimeZone; )
+final class java.util.ZoneInfoDB extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String INDEX_FILE_NAME
+
+private static final int TZINT_LENGTH
+
+private static final int TZNAME_LENGTH
+
+private static final java.lang.String ZONE_DIRECTORY_NAME
+
+private static final java.lang.String ZONE_FILE_NAME
+
+private static java.util.TimeZone defaultZone
+
+private static int[] lengths
+
+private static java.lang.Object lock
+
+private static java.lang.String[] names
+
+private static int[] offsets
+
+private static int[] starts
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+private static java.lang.String[] _getAvailableIDs(
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static java.util.TimeZone _getTimeZone(
+java.lang.String)
+
+public static java.lang.String[] getAvailableIDs()
+
+public static java.lang.String[] getAvailableIDs(
+int)
+
+public static java.util.TimeZone getDefault()
+
+public static java.util.TimeZone getTimeZone(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void init()
+
+private static int parseNumericZone(
+java.lang.String)
+
+private static int read4(
+byte[]
+int)
+
+private static void scanForZones(
+java.io.File
+java.util.Set
+int)
+
+public static void setDefault(
+java.util.TimeZone)
+
+________________CLASS________________
+
+
+public abstract interface class java.util.concurrent.Executor extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void execute(
+java.lang.Runnable)
+
+________________CLASS________________
+
+
+public abstract interface class java.util.concurrent.ExecutorService extends java.lang.Object implements java.util.concurrent.Executor
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public abstract boolean awaitTermination(
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<Ljava/util/concurrent/Callable<TT;>;>;)Ljava/util/List<Ljava/util/concurrent/Future<TT;>;>; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public abstract java.util.List invokeAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<Ljava/util/concurrent/Callable<TT;>;>;JLjava/util/concurrent/TimeUnit;)Ljava/util/List<Ljava/util/concurrent/Future<TT;>;>; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public abstract java.util.List invokeAll(
+java.util.Collection
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/ExecutionException; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<Ljava/util/concurrent/Callable<TT;>;>;)TT; )
+public abstract java.lang.Object invokeAny(
+java.util.Collection)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/ExecutionException;Ljava/util/concurrent/TimeoutException; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<Ljava/util/concurrent/Callable<TT;>;>;JLjava/util/concurrent/TimeUnit;)TT; )
+public abstract java.lang.Object invokeAny(
+java.util.Collection
+long
+java.util.concurrent.TimeUnit)
+
+public abstract boolean isShutdown()
+
+public abstract boolean isTerminated()
+
+public abstract void shutdown()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/Runnable;>; )
+public abstract java.util.List shutdownNow()
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;)Ljava/util/concurrent/Future<*>; )
+public abstract java.util.concurrent.Future submit(
+java.lang.Runnable)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/lang/Runnable;TT;)Ljava/util/concurrent/Future<TT;>; )
+public abstract java.util.concurrent.Future submit(
+java.lang.Runnable
+java.lang.Object)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/concurrent/Callable<TT;>;)Ljava/util/concurrent/Future<TT;>; )
+public abstract java.util.concurrent.Future submit(
+java.util.concurrent.Callable)
+
+________________CLASS________________
+
+
+public abstract class java.util.concurrent.AbstractExecutorService extends java.lang.Object implements java.util.concurrent.ExecutorService
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/ExecutionException;Ljava/util/concurrent/TimeoutException; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<Ljava/util/concurrent/Callable<TT;>;>;ZJ)TT; )
+private java.lang.Object doInvokeAny(
+java.util.Collection
+boolean
+long)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<Ljava/util/concurrent/Callable<TT;>;>;)Ljava/util/List<Ljava/util/concurrent/Future<TT;>;>; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public java.util.List invokeAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<Ljava/util/concurrent/Callable<TT;>;>;JLjava/util/concurrent/TimeUnit;)Ljava/util/List<Ljava/util/concurrent/Future<TT;>;>; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public java.util.List invokeAll(
+java.util.Collection
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<Ljava/util/concurrent/Callable<TT;>;>;)TT; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/ExecutionException; )
+public java.lang.Object invokeAny(
+java.util.Collection)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<Ljava/util/concurrent/Callable<TT;>;>;JLjava/util/concurrent/TimeUnit;)TT; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/ExecutionException;Ljava/util/concurrent/TimeoutException; )
+public java.lang.Object invokeAny(
+java.util.Collection
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;)Ljava/util/concurrent/Future<*>; )
+public java.util.concurrent.Future submit(
+java.lang.Runnable)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/lang/Runnable;TT;)Ljava/util/concurrent/Future<TT;>; )
+public java.util.concurrent.Future submit(
+java.lang.Runnable
+java.lang.Object)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/concurrent/Callable<TT;>;)Ljava/util/concurrent/Future<TT;>; )
+public java.util.concurrent.Future submit(
+java.util.concurrent.Callable)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =Itr )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<TE;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ArrayBlockingQueue; )
+ class java.util.concurrent.ArrayBlockingQueue$Itr extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+
+private int lastRet
+
+private int nextIndex
+@dalvik.annotation.Signature (value =TE; )
+private java.lang.Object nextItem
+
+final java.util.concurrent.ArrayBlockingQueue this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.ArrayBlockingQueue)
+
+private void checkNext()
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Queue<TE;>; )
+public abstract interface class java.util.concurrent.BlockingQueue extends java.lang.Object implements java.util.Queue
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TE;)Z )
+public abstract boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<-TE;>;)I )
+public abstract int drainTo(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<-TE;>;I)I )
+public abstract int drainTo(
+java.util.Collection
+int)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public abstract boolean offer(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;JLjava/util/concurrent/TimeUnit;)Z )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public abstract boolean offer(
+java.lang.Object
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+@dalvik.annotation.Signature (value =(JLjava/util/concurrent/TimeUnit;)TE; )
+public abstract java.lang.Object poll(
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+@dalvik.annotation.Signature (value =(TE;)V )
+public abstract void put(
+java.lang.Object)
+
+public abstract int remainingCapacity()
+@dalvik.annotation.Signature (value =()TE; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public abstract java.lang.Object take()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/ArrayBlockingQueue$Itr; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractQueue<TE;>;Ljava/util/concurrent/BlockingQueue<TE;>;Ljava/io/Serializable; )
+public class java.util.concurrent.ArrayBlockingQueue extends java.util.AbstractQueue implements java.util.concurrent.BlockingQueue, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private int count
+@dalvik.annotation.Signature (value =[TE; )
+private final java.lang.Object[] items
+
+private final java.util.concurrent.locks.ReentrantLock lock
+
+private final java.util.concurrent.locks.Condition notEmpty
+
+private final java.util.concurrent.locks.Condition notFull
+
+private transient int putIndex
+
+private transient int takeIndex
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+int
+boolean)
+@dalvik.annotation.Signature (value =(IZLjava/util/Collection<+TE;>;)V )
+public void <init>(
+int
+boolean
+java.util.Collection)
+
+static int access$000(
+java.util.concurrent.ArrayBlockingQueue)
+
+static int access$100(
+java.util.concurrent.ArrayBlockingQueue)
+
+static java.lang.Object[] access$200(
+java.util.concurrent.ArrayBlockingQueue)
+
+static int access$300(
+java.util.concurrent.ArrayBlockingQueue)
+
+static java.util.concurrent.locks.ReentrantLock access$400(
+java.util.concurrent.ArrayBlockingQueue)
+@dalvik.annotation.Signature (value =()TE; )
+private java.lang.Object extract()
+@dalvik.annotation.Signature (value =(TE;)V )
+private void insert(
+java.lang.Object)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<-TE;>;)I )
+public int drainTo(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<-TE;>;I)I )
+public int drainTo(
+java.util.Collection
+int)
+
+final int inc(
+int)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean offer(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+@dalvik.annotation.Signature (value =(TE;JLjava/util/concurrent/TimeUnit;)Z )
+public boolean offer(
+java.lang.Object
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object peek()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object poll()
+@dalvik.annotation.Signature (value =(JLjava/util/concurrent/TimeUnit;)TE; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public java.lang.Object poll(
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+@dalvik.annotation.Signature (value =(TE;)V )
+public void put(
+java.lang.Object)
+
+public int remainingCapacity()
+
+public boolean remove(
+java.lang.Object)
+
+ void removeAt(
+int)
+
+public int size()
+@dalvik.annotation.Signature (value =()TE; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public java.lang.Object take()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.util.concurrent.BrokenBarrierException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<V:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract interface class java.util.concurrent.Callable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+@dalvik.annotation.Signature (value =()TV; )
+public abstract java.lang.Object call()
+
+________________CLASS________________
+
+
+public class java.util.concurrent.CancellationException extends java.lang.IllegalStateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<V:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract interface class java.util.concurrent.CompletionService extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =()Ljava/util/concurrent/Future<TV;>; )
+public abstract java.util.concurrent.Future poll()
+@dalvik.annotation.Signature (value =(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Future<TV;>; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public abstract java.util.concurrent.Future poll(
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;TV;)Ljava/util/concurrent/Future<TV;>; )
+public abstract java.util.concurrent.Future submit(
+java.lang.Runnable
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/concurrent/Callable<TV;>;)Ljava/util/concurrent/Future<TV;>; )
+public abstract java.util.concurrent.Future submit(
+java.util.concurrent.Callable)
+@dalvik.annotation.Signature (value =()Ljava/util/concurrent/Future<TV;>; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public abstract java.util.concurrent.Future take()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ConcurrentHashMap; )
+@dalvik.annotation.InnerClass (accessFlags =1024 name =HashIterator )
+abstract class java.util.concurrent.ConcurrentHashMap$HashIterator extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.util.concurrent.ConcurrentHashMap$HashEntry[] currentTable
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>; )
+ java.util.concurrent.ConcurrentHashMap$HashEntry lastReturned
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>; )
+ java.util.concurrent.ConcurrentHashMap$HashEntry nextEntry
+
+ int nextSegmentIndex
+
+ int nextTableIndex
+
+final java.util.concurrent.ConcurrentHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.ConcurrentHashMap)
+
+final void advance()
+
+public boolean hasMoreElements()
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>; )
+ java.util.concurrent.ConcurrentHashMap$HashEntry nextEntry()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ConcurrentHashMap; )
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/ConcurrentHashMap<TK;TV;>.HashIterator;Ljava/util/Map$Entry<TK;TV;>;Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+@dalvik.annotation.InnerClass (accessFlags =16 name =EntryIterator )
+final class java.util.concurrent.ConcurrentHashMap$EntryIterator extends java.util.concurrent.ConcurrentHashMap$HashIterator implements java.util.Map$Entry, java.util.Iterator
+
+----------------FIELDS----------------
+
+final java.util.concurrent.ConcurrentHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.ConcurrentHashMap)
+
+ boolean eq(
+java.lang.Object
+java.lang.Object)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object getKey()
+@dalvik.annotation.Signature (value =()TV; )
+public java.lang.Object getValue()
+
+public int hashCode()
+
+public volatile java.lang.Object next()
+@dalvik.annotation.Signature (value =()Ljava/util/Map$Entry<TK;TV;>; )
+public java.util.Map$Entry next()
+@dalvik.annotation.Signature (value =(TV;)TV; )
+public java.lang.Object setValue(
+java.lang.Object)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ConcurrentHashMap; )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractSet<Ljava/util/Map$Entry<TK;TV;>;>; )
+@dalvik.annotation.InnerClass (accessFlags =16 name =EntrySet )
+final class java.util.concurrent.ConcurrentHashMap$EntrySet extends java.util.AbstractSet
+
+----------------FIELDS----------------
+
+final java.util.concurrent.ConcurrentHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.ConcurrentHashMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =HashEntry )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ConcurrentHashMap; )
+final class java.util.concurrent.ConcurrentHashMap$HashEntry extends java.lang.Object
+
+----------------FIELDS----------------
+
+final int hash
+@dalvik.annotation.Signature (value =TK; )
+final java.lang.Object key
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>; )
+final java.util.concurrent.ConcurrentHashMap$HashEntry next
+@dalvik.annotation.Signature (value =TV; )
+ java.lang.Object value
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(ITK;TV;Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;)V )
+ void <init>(
+int
+java.lang.Object
+java.lang.Object
+java.util.concurrent.ConcurrentHashMap$HashEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16 name =KeyIterator )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ConcurrentHashMap; )
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/ConcurrentHashMap<TK;TV;>.HashIterator;Ljava/util/Iterator<TK;>;Ljava/util/Enumeration<TK;>; )
+final class java.util.concurrent.ConcurrentHashMap$KeyIterator extends java.util.concurrent.ConcurrentHashMap$HashIterator implements java.util.Iterator, java.util.Enumeration
+
+----------------FIELDS----------------
+
+final java.util.concurrent.ConcurrentHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.ConcurrentHashMap)
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object next()
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object nextElement()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ConcurrentHashMap; )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractSet<TK;>; )
+@dalvik.annotation.InnerClass (accessFlags =16 name =KeySet )
+final class java.util.concurrent.ConcurrentHashMap$KeySet extends java.util.AbstractSet
+
+----------------FIELDS----------------
+
+final java.util.concurrent.ConcurrentHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.ConcurrentHashMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TK;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+
+public abstract interface class java.util.concurrent.locks.Lock extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void lock()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public abstract void lockInterruptibly()
+
+public abstract java.util.concurrent.locks.Condition newCondition()
+
+public abstract boolean tryLock()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public abstract boolean tryLock(
+long
+java.util.concurrent.TimeUnit)
+
+public abstract void unlock()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/locks/ReentrantLock$FairSync;Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;Ljava/util/concurrent/locks/ReentrantLock$Sync; )
+public class java.util.concurrent.locks.ReentrantLock extends java.lang.Object implements java.util.concurrent.locks.Lock, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final java.util.concurrent.locks.ReentrantLock$Sync sync
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+boolean)
+
+public int getHoldCount()
+
+protected java.lang.Thread getOwner()
+
+public final int getQueueLength()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljava/lang/Thread;>; )
+protected java.util.Collection getQueuedThreads()
+
+public int getWaitQueueLength(
+java.util.concurrent.locks.Condition)
+@dalvik.annotation.Signature (value =(Ljava/util/concurrent/locks/Condition;)Ljava/util/Collection<Ljava/lang/Thread;>; )
+protected java.util.Collection getWaitingThreads(
+java.util.concurrent.locks.Condition)
+
+public final boolean hasQueuedThread(
+java.lang.Thread)
+
+public final boolean hasQueuedThreads()
+
+public boolean hasWaiters(
+java.util.concurrent.locks.Condition)
+
+public final boolean isFair()
+
+public boolean isHeldByCurrentThread()
+
+public boolean isLocked()
+
+public void lock()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public void lockInterruptibly()
+
+public java.util.concurrent.locks.Condition newCondition()
+
+public java.lang.String toString()
+
+public boolean tryLock()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public boolean tryLock(
+long
+java.util.concurrent.TimeUnit)
+
+public void unlock()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ConcurrentHashMap; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/concurrent/locks/ReentrantLock;Ljava/io/Serializable; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =Segment )
+final class java.util.concurrent.ConcurrentHashMap$Segment extends java.util.concurrent.locks.ReentrantLock implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+transient volatile int count
+
+final float loadFactor
+
+transient int modCount
+
+transient java.util.concurrent.ConcurrentHashMap$HashEntry[] table
+
+transient int threshold
+----------------METHODS----------------
+
+ void <init>(
+int
+float)
+
+ void clear()
+
+ boolean containsKey(
+java.lang.Object
+int)
+
+ boolean containsValue(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;I)TV; )
+ java.lang.Object get(
+java.lang.Object
+int)
+@dalvik.annotation.Signature (value =(TK;ITV;Z)TV; )
+ java.lang.Object put(
+java.lang.Object
+int
+java.lang.Object
+boolean)
+
+ java.util.concurrent.ConcurrentHashMap$HashEntry[] rehash(
+java.util.concurrent.ConcurrentHashMap$HashEntry[])
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;ILjava/lang/Object;)TV; )
+ java.lang.Object remove(
+java.lang.Object
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;ITV;)TV; )
+ java.lang.Object replace(
+java.lang.Object
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;ITV;TV;)Z )
+ boolean replace(
+java.lang.Object
+int
+java.lang.Object
+java.lang.Object)
+
+ void setTable(
+java.util.concurrent.ConcurrentHashMap$HashEntry[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =SimpleEntry )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ConcurrentHashMap; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Map$Entry<TK;TV;>; )
+final class java.util.concurrent.ConcurrentHashMap$SimpleEntry extends java.lang.Object implements java.util.Map$Entry
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =TK; )
+ java.lang.Object key
+@dalvik.annotation.Signature (value =TV; )
+ java.lang.Object value
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TK;TV;)V )
+public void <init>(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Map$Entry<TK;TV;>;)V )
+public void <init>(
+java.util.Map$Entry)
+
+static boolean eq(
+java.lang.Object
+java.lang.Object)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object getKey()
+@dalvik.annotation.Signature (value =()TV; )
+public java.lang.Object getValue()
+
+public int hashCode()
+@dalvik.annotation.Signature (value =(TV;)TV; )
+public java.lang.Object setValue(
+java.lang.Object)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ConcurrentHashMap; )
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/ConcurrentHashMap<TK;TV;>.HashIterator;Ljava/util/Iterator<TV;>;Ljava/util/Enumeration<TV;>; )
+@dalvik.annotation.InnerClass (accessFlags =16 name =ValueIterator )
+final class java.util.concurrent.ConcurrentHashMap$ValueIterator extends java.util.concurrent.ConcurrentHashMap$HashIterator implements java.util.Iterator, java.util.Enumeration
+
+----------------FIELDS----------------
+
+final java.util.concurrent.ConcurrentHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.ConcurrentHashMap)
+@dalvik.annotation.Signature (value =()TV; )
+public java.lang.Object next()
+@dalvik.annotation.Signature (value =()TV; )
+public java.lang.Object nextElement()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ConcurrentHashMap; )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractCollection<TV;>; )
+@dalvik.annotation.InnerClass (accessFlags =16 name =Values )
+final class java.util.concurrent.ConcurrentHashMap$Values extends java.util.AbstractCollection
+
+----------------FIELDS----------------
+
+final java.util.concurrent.ConcurrentHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.ConcurrentHashMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TV;>; )
+public java.util.Iterator iterator()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Map<TK;TV;>; )
+public abstract interface class java.util.concurrent.ConcurrentMap extends java.lang.Object implements java.util.Map
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public abstract java.lang.Object putIfAbsent(
+java.lang.Object
+java.lang.Object)
+
+public abstract boolean remove(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public abstract java.lang.Object replace(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;TV;TV;)Z )
+public abstract boolean replace(
+java.lang.Object
+java.lang.Object
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/ConcurrentHashMap$SimpleEntry;Ljava/util/concurrent/ConcurrentHashMap$EntrySet;Ljava/util/concurrent/ConcurrentHashMap$Values;Ljava/util/concurrent/ConcurrentHashMap$KeySet;Ljava/util/concurrent/ConcurrentHashMap$EntryIterator;Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;Ljava/util/concurrent/ConcurrentHashMap$KeyIterator;Ljava/util/concurrent/ConcurrentHashMap$HashIterator;Ljava/util/concurrent/ConcurrentHashMap$HashEntry;Ljava/util/concurrent/ConcurrentHashMap$Segment; )
+@dalvik.annotation.Signature (value =<K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<TK;TV;>;Ljava/util/concurrent/ConcurrentMap<TK;TV;>;Ljava/io/Serializable; )
+public class java.util.concurrent.ConcurrentHashMap extends java.util.AbstractMap implements java.util.concurrent.ConcurrentMap, java.io.Serializable
+
+----------------FIELDS----------------
+
+static int DEFAULT_INITIAL_CAPACITY
+
+static final float DEFAULT_LOAD_FACTOR
+
+static final int DEFAULT_SEGMENTS
+
+static final int MAXIMUM_CAPACITY
+
+static final int MAX_SEGMENTS
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+transient java.util.Set entrySet
+@dalvik.annotation.Signature (value =Ljava/util/Set<TK;>; )
+transient java.util.Set keySet
+
+final int segmentMask
+
+final int segmentShift
+
+final java.util.concurrent.ConcurrentHashMap$Segment[] segments
+@dalvik.annotation.Signature (value =Ljava/util/Collection<TV;>; )
+transient java.util.Collection values
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+int
+float
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void <init>(
+java.util.Map)
+
+static int hash(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+
+public boolean containsKey(
+java.lang.Object)
+
+public boolean containsValue(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<TV;>; )
+public java.util.Enumeration elements()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<TK;TV;>;>; )
+public java.util.Set entrySet()
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object get(
+java.lang.Object)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<TK;>; )
+public java.util.Set keySet()
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<TK;>; )
+public java.util.Enumeration keys()
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<+TK;+TV;>;)V )
+public void putAll(
+java.util.Map)
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public java.lang.Object putIfAbsent(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;)TV; )
+public java.lang.Object remove(
+java.lang.Object)
+
+public boolean remove(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;TV;)TV; )
+public java.lang.Object replace(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TK;TV;TV;)Z )
+public boolean replace(
+java.lang.Object
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(I)Ljava/util/concurrent/ConcurrentHashMap$Segment<TK;TV;>; )
+final java.util.concurrent.ConcurrentHashMap$Segment segmentFor(
+int)
+
+public int size()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<TV;>; )
+public java.util.Collection values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =Itr )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ConcurrentLinkedQueue; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<TE;>; )
+ class java.util.concurrent.ConcurrentLinkedQueue$Itr extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>; )
+private java.util.concurrent.ConcurrentLinkedQueue$Node lastRet
+@dalvik.annotation.Signature (value =TE; )
+private java.lang.Object nextItem
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>; )
+private java.util.concurrent.ConcurrentLinkedQueue$Node nextNode
+
+final java.util.concurrent.ConcurrentLinkedQueue this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.ConcurrentLinkedQueue)
+@dalvik.annotation.Signature (value =()TE; )
+private java.lang.Object advance()
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =Node )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ConcurrentLinkedQueue; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object; )
+ class java.util.concurrent.ConcurrentLinkedQueue$Node extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/lang/Object;>; )
+private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater itemUpdater
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;>; )
+private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater nextUpdater
+@dalvik.annotation.Signature (value =TE; )
+private volatile java.lang.Object item
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>; )
+private volatile java.util.concurrent.ConcurrentLinkedQueue$Node next
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(TE;)V )
+ void <init>(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>;)V )
+ void <init>(
+java.lang.Object
+java.util.concurrent.ConcurrentLinkedQueue$Node)
+@dalvik.annotation.Signature (value =(TE;TE;)Z )
+ boolean casItem(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>;Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>;)Z )
+ boolean casNext(
+java.util.concurrent.ConcurrentLinkedQueue$Node
+java.util.concurrent.ConcurrentLinkedQueue$Node)
+@dalvik.annotation.Signature (value =()TE; )
+ java.lang.Object getItem()
+@dalvik.annotation.Signature (value =()Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>; )
+ java.util.concurrent.ConcurrentLinkedQueue$Node getNext()
+@dalvik.annotation.Signature (value =(TE;)V )
+ void setItem(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>;)V )
+ void setNext(
+java.util.concurrent.ConcurrentLinkedQueue$Node)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;Ljava/util/concurrent/ConcurrentLinkedQueue$Node; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractQueue<TE;>;Ljava/util/Queue<TE;>;Ljava/io/Serializable; )
+public class java.util.concurrent.ConcurrentLinkedQueue extends java.util.AbstractQueue implements java.util.Queue, java.io.Serializable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<Ljava/util/concurrent/ConcurrentLinkedQueue;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;>; )
+private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater headUpdater
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<Ljava/util/concurrent/ConcurrentLinkedQueue;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;>; )
+private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater tailUpdater
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>; )
+private transient volatile java.util.concurrent.ConcurrentLinkedQueue$Node head
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>; )
+private transient volatile java.util.concurrent.ConcurrentLinkedQueue$Node tail
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)V )
+public void <init>(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>;Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>;)Z )
+private boolean casHead(
+java.util.concurrent.ConcurrentLinkedQueue$Node
+java.util.concurrent.ConcurrentLinkedQueue$Node)
+@dalvik.annotation.Signature (value =(Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>;Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>;)Z )
+private boolean casTail(
+java.util.concurrent.ConcurrentLinkedQueue$Node
+java.util.concurrent.ConcurrentLinkedQueue$Node)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/concurrent/ConcurrentLinkedQueue$Node<TE;>; )
+ java.util.concurrent.ConcurrentLinkedQueue$Node first()
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean offer(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object peek()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object poll()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/CopyOnWriteArrayList; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class java.util.concurrent.CopyOnWriteArrayList$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/CopyOnWriteArrayList; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =ListIteratorImpl )
+ class java.util.concurrent.CopyOnWriteArrayList$ListIteratorImpl extends java.lang.Object implements java.util.ListIterator
+
+----------------FIELDS----------------
+
+private final java.lang.Object[] arr
+
+private int current
+
+private final int size
+----------------METHODS----------------
+
+public void <init>(
+java.lang.Object[]
+int)
+
+public void add(
+java.lang.Object)
+
+public boolean hasNext()
+
+public boolean hasPrevious()
+
+public java.lang.Object next()
+
+public int nextIndex()
+
+public java.lang.Object previous()
+
+public int previousIndex()
+
+public void remove()
+
+public void set(
+java.lang.Object)
+
+final int size()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/CopyOnWriteArrayList$SubList; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =SubListIterator )
+ class java.util.concurrent.CopyOnWriteArrayList$SubList$SubListIterator extends java.util.concurrent.CopyOnWriteArrayList$ListIteratorImpl
+
+----------------FIELDS----------------
+
+private final java.util.concurrent.CopyOnWriteArrayList$SubListReadData dataR
+
+final java.util.concurrent.CopyOnWriteArrayList$SubList this$0
+----------------METHODS----------------
+
+private void <init>(
+java.util.concurrent.CopyOnWriteArrayList$SubList
+int
+java.util.concurrent.CopyOnWriteArrayList$SubListReadData)
+
+ void <init>(
+java.util.concurrent.CopyOnWriteArrayList$SubList
+int
+java.util.concurrent.CopyOnWriteArrayList$SubListReadData
+java.util.concurrent.CopyOnWriteArrayList$1)
+
+public boolean hasNext()
+
+public boolean hasPrevious()
+
+public int nextIndex()
+
+public int previousIndex()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =SubList )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/CopyOnWriteArrayList; )
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/CopyOnWriteArrayList$SubList$SubListIterator; )
+ class java.util.concurrent.CopyOnWriteArrayList$SubList extends java.lang.Object implements java.util.List
+
+----------------FIELDS----------------
+
+private final java.util.concurrent.CopyOnWriteArrayList list
+
+private volatile java.util.concurrent.CopyOnWriteArrayList$SubListReadData read
+
+private final int start
+----------------METHODS----------------
+
+public void <init>(
+java.util.concurrent.CopyOnWriteArrayList
+int
+int)
+
+static int access$200(
+java.util.concurrent.CopyOnWriteArrayList$SubList)
+
+private void checkModifications()
+
+public void add(
+int
+java.lang.Object)
+
+public boolean add(
+java.lang.Object)
+
+public boolean addAll(
+int
+java.util.Collection)
+
+public boolean addAll(
+java.util.Collection)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+
+public boolean containsAll(
+java.util.Collection)
+
+public java.lang.Object get(
+int)
+
+public int indexOf(
+java.lang.Object)
+
+public boolean isEmpty()
+
+public java.util.Iterator iterator()
+
+public int lastIndexOf(
+java.lang.Object)
+
+public java.util.ListIterator listIterator()
+
+public java.util.ListIterator listIterator(
+int)
+
+public java.lang.Object remove(
+int)
+
+public boolean remove(
+java.lang.Object)
+
+public boolean removeAll(
+java.util.Collection)
+
+public boolean retainAll(
+java.util.Collection)
+
+public java.lang.Object set(
+int
+java.lang.Object)
+
+public int size()
+
+public java.util.List subList(
+int
+int)
+
+public java.lang.Object[] toArray()
+
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =SubListReadData )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/CopyOnWriteArrayList; )
+final class java.util.concurrent.CopyOnWriteArrayList$SubListReadData extends java.lang.Object
+
+----------------FIELDS----------------
+
+final java.lang.Object[] data
+
+final int size
+----------------METHODS----------------
+
+ void <init>(
+int
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/CopyOnWriteArrayList$1;Ljava/util/concurrent/CopyOnWriteArrayList$SubList;Ljava/util/concurrent/CopyOnWriteArrayList$SubListReadData;Ljava/util/concurrent/CopyOnWriteArrayList$ListIteratorImpl; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/List<TE;>;Ljava/util/RandomAccess;Ljava/lang/Cloneable;Ljava/io/Serializable; )
+public class java.util.concurrent.CopyOnWriteArrayList extends java.lang.Object implements java.util.List, java.util.RandomAccess, java.lang.Cloneable, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =[TE; )
+private transient volatile java.lang.Object[] arr
+
+private final transient java.util.concurrent.locks.ReentrantLock lock
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)V )
+public void <init>(
+java.util.Collection)
+@dalvik.annotation.Signature (value =([TE;)V )
+public void <init>(
+java.lang.Object[])
+
+static java.util.concurrent.locks.ReentrantLock access$100(
+java.util.concurrent.CopyOnWriteArrayList)
+
+static final void checkIndexExlusive(
+int
+int)
+
+static final void checkIndexInclusive(
+int
+int)
+
+static final boolean containsAll(
+java.util.Collection
+java.lang.Object[]
+int
+int)
+
+static final int indexOf(
+java.lang.Object
+java.lang.Object[]
+int
+int)
+
+static final int lastIndexOf(
+java.lang.Object
+java.lang.Object[]
+int
+int)
+@dalvik.annotation.Signature (value =(I)[TE; )
+private final java.lang.Object[] newElementArray(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Signature (value =([TE;)V )
+private final void setData(
+java.lang.Object[])
+
+static java.lang.Object[] toArray(
+java.lang.Object[]
+int
+int)
+
+static java.lang.Object[] toArray(
+java.lang.Object[]
+java.lang.Object[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Signature (value =(ITE;)V )
+public void add(
+int
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(ILjava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+int
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)I )
+public int addAllAbsent(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean addIfAbsent(
+java.lang.Object)
+
+public void clear()
+
+public java.lang.Object clone()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean containsAll(
+java.util.Collection)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object get(
+int)
+@dalvik.annotation.Signature (value =()[TE; )
+final java.lang.Object[] getData()
+
+public int hashCode()
+
+public int indexOf(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;I)I )
+public int indexOf(
+java.lang.Object
+int)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+
+public int lastIndexOf(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;I)I )
+public int lastIndexOf(
+java.lang.Object
+int)
+@dalvik.annotation.Signature (value =()Ljava/util/ListIterator<TE;>; )
+public java.util.ListIterator listIterator()
+@dalvik.annotation.Signature (value =(I)Ljava/util/ListIterator<TE;>; )
+public java.util.ListIterator listIterator(
+int)
+@dalvik.annotation.Signature (value =(I)TE; )
+public java.lang.Object remove(
+int)
+
+public boolean remove(
+java.lang.Object)
+
+final int removeAll(
+java.util.Collection
+int
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean removeAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(II)TE; )
+ java.lang.Object removeRange(
+int
+int)
+
+ int retainAll(
+java.util.Collection
+int
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean retainAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(ITE;)TE; )
+public java.lang.Object set(
+int
+java.lang.Object)
+
+public int size()
+@dalvik.annotation.Signature (value =(II)Ljava/util/List<TE;>; )
+public java.util.List subList(
+int
+int)
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractSet<TE;>;Ljava/io/Serializable; )
+public class java.util.concurrent.CopyOnWriteArraySet extends java.util.AbstractSet implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/CopyOnWriteArrayList<TE;>; )
+private final java.util.concurrent.CopyOnWriteArrayList al
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)V )
+public void <init>(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+java.util.Collection)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean containsAll(
+java.util.Collection)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean removeAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean retainAll(
+java.util.Collection)
+
+public int size()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; )
+public abstract class java.util.concurrent.locks.AbstractQueuedSynchronizer extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long headOffset
+
+private static final long serialVersionUID
+
+private static final long stateOffset
+
+private static final long tailOffset
+
+private static final sun.misc.Unsafe unsafe
+
+private static final long waitStatusOffset
+
+private transient volatile java.util.concurrent.locks.AbstractQueuedSynchronizer$Node head
+
+private volatile int state
+
+private transient volatile java.util.concurrent.locks.AbstractQueuedSynchronizer$Node tail
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>()
+
+static void access$000()
+
+private java.util.concurrent.locks.AbstractQueuedSynchronizer$Node addWaiter(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node)
+
+private void cancelAcquire(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node)
+
+private final boolean compareAndSetHead(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node)
+
+private final boolean compareAndSetTail(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node)
+
+private static final boolean compareAndSetWaitStatus(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+private void doAcquireInterruptibly(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+private boolean doAcquireNanos(
+int
+long)
+
+private void doAcquireShared(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+private void doAcquireSharedInterruptibly(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+private boolean doAcquireSharedNanos(
+int
+long)
+
+private java.util.concurrent.locks.AbstractQueuedSynchronizer$Node enq(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node)
+
+private boolean findNodeFromTail(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node)
+
+private java.lang.Thread fullGetFirstQueuedThread()
+
+private static boolean parkAndCheckInterrupt()
+
+private static void selfInterrupt()
+
+private void setHead(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node)
+
+private void setHeadAndPropagate(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
+int)
+
+private static boolean shouldParkAfterFailedAcquire(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node)
+
+private void unparkSuccessor(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node)
+
+public final void acquire(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public final void acquireInterruptibly(
+int)
+
+final boolean acquireQueued(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
+int)
+
+public final void acquireShared(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public final void acquireSharedInterruptibly(
+int)
+
+protected final boolean compareAndSetState(
+int
+int)
+
+final int fullyRelease(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node)
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljava/lang/Thread;>; )
+public final java.util.Collection getExclusiveQueuedThreads()
+
+public final java.lang.Thread getFirstQueuedThread()
+
+public final int getQueueLength()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljava/lang/Thread;>; )
+public final java.util.Collection getQueuedThreads()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljava/lang/Thread;>; )
+public final java.util.Collection getSharedQueuedThreads()
+
+protected final int getState()
+
+public final int getWaitQueueLength(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
+@dalvik.annotation.Signature (value =(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Ljava/util/Collection<Ljava/lang/Thread;>; )
+public final java.util.Collection getWaitingThreads(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
+
+public final boolean hasContended()
+
+public final boolean hasQueuedThreads()
+
+public final boolean hasWaiters(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
+
+protected boolean isHeldExclusively()
+
+final boolean isOnSyncQueue(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node)
+
+public final boolean isQueued(
+java.lang.Thread)
+
+public final boolean owns(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
+
+public final boolean release(
+int)
+
+public final boolean releaseShared(
+int)
+
+protected final void setState(
+int)
+
+public java.lang.String toString()
+
+final boolean transferAfterCancelledWait(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node)
+
+final boolean transferForSignal(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node)
+
+protected boolean tryAcquire(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public final boolean tryAcquireNanos(
+int
+long)
+
+protected int tryAcquireShared(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public final boolean tryAcquireSharedNanos(
+int
+long)
+
+protected boolean tryRelease(
+int)
+
+protected boolean tryReleaseShared(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/CountDownLatch; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =Sync )
+final class java.util.concurrent.CountDownLatch$Sync extends java.util.concurrent.locks.AbstractQueuedSynchronizer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+ int getCount()
+
+public int tryAcquireShared(
+int)
+
+public boolean tryReleaseShared(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/CountDownLatch$Sync; )
+public class java.util.concurrent.CountDownLatch extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final java.util.concurrent.CountDownLatch$Sync sync
+----------------METHODS----------------
+
+public void <init>(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public void await()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public boolean await(
+long
+java.util.concurrent.TimeUnit)
+
+public void countDown()
+
+public long getCount()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.util.concurrent.CyclicBarrier extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final java.lang.Runnable barrierCommand
+
+private boolean broken
+
+private int count
+
+private long generation
+
+private final java.util.concurrent.locks.ReentrantLock lock
+
+private final int parties
+
+private final java.util.concurrent.locks.Condition trip
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+int
+java.lang.Runnable)
+
+private void breakBarrier()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/BrokenBarrierException;Ljava/util/concurrent/TimeoutException; )
+private int dowait(
+boolean
+long)
+
+private void nextGeneration()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/BrokenBarrierException; )
+public int await()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/BrokenBarrierException;Ljava/util/concurrent/TimeoutException; )
+public int await(
+long
+java.util.concurrent.TimeUnit)
+
+public int getNumberWaiting()
+
+public int getParties()
+
+public boolean isBroken()
+
+public void reset()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Iterator<TE;>; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =Itr )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/DelayQueue; )
+ class java.util.concurrent.DelayQueue$Itr extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Iterator<TE;>; )
+private final java.util.Iterator iter
+
+final java.util.concurrent.DelayQueue this$0
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Iterator<TE;>;)V )
+ void <init>(
+java.util.concurrent.DelayQueue
+java.util.Iterator)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/DelayQueue$Itr; )
+@dalvik.annotation.Signature (value =<E::Ljava/util/concurrent/Delayed;>Ljava/util/AbstractQueue<TE;>;Ljava/util/concurrent/BlockingQueue<TE;>; )
+public class java.util.concurrent.DelayQueue extends java.util.AbstractQueue implements java.util.concurrent.BlockingQueue
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private final transient java.util.concurrent.locks.Condition available
+
+private final transient java.util.concurrent.locks.ReentrantLock lock
+@dalvik.annotation.Signature (value =Ljava/util/PriorityQueue<TE;>; )
+private final java.util.PriorityQueue q
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)V )
+public void <init>(
+java.util.Collection)
+
+static java.util.concurrent.locks.ReentrantLock access$000(
+java.util.concurrent.DelayQueue)
+
+public volatile boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.util.concurrent.Delayed)
+
+public void clear()
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<-TE;>;)I )
+public int drainTo(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<-TE;>;I)I )
+public int drainTo(
+java.util.Collection
+int)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+
+public volatile boolean offer(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public volatile boolean offer(
+java.lang.Object
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean offer(
+java.util.concurrent.Delayed)
+@dalvik.annotation.Signature (value =(TE;JLjava/util/concurrent/TimeUnit;)Z )
+public boolean offer(
+java.util.concurrent.Delayed
+long
+java.util.concurrent.TimeUnit)
+
+public volatile java.lang.Object peek()
+@dalvik.annotation.Signature (value =()TE; )
+public java.util.concurrent.Delayed peek()
+
+public volatile java.lang.Object poll()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public volatile java.lang.Object poll(
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =()TE; )
+public java.util.concurrent.Delayed poll()
+@dalvik.annotation.Signature (value =(JLjava/util/concurrent/TimeUnit;)TE; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public java.util.concurrent.Delayed poll(
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public volatile void put(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;)V )
+public void put(
+java.util.concurrent.Delayed)
+
+public int remainingCapacity()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public volatile java.lang.Object take()
+@dalvik.annotation.Signature (value =()TE; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public java.util.concurrent.Delayed take()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/lang/Comparable<Ljava/util/concurrent/Delayed;>; )
+public abstract interface class java.util.concurrent.Delayed extends java.lang.Object implements java.lang.Comparable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract long getDelay(
+java.util.concurrent.TimeUnit)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<V:Ljava/lang/Object;>Ljava/lang/Object; )
+public class java.util.concurrent.Exchanger extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int arrivalCount
+@dalvik.annotation.Signature (value =TV; )
+private java.lang.Object item
+
+private final java.util.concurrent.locks.ReentrantLock lock
+
+private final java.util.concurrent.locks.Condition taken
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =(TV;ZJ)TV; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/TimeoutException; )
+private java.lang.Object doExchange(
+java.lang.Object
+boolean
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+@dalvik.annotation.Signature (value =(TV;)TV; )
+public java.lang.Object exchange(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/TimeoutException; )
+@dalvik.annotation.Signature (value =(TV;JLjava/util/concurrent/TimeUnit;)TV; )
+public java.lang.Object exchange(
+java.lang.Object
+long
+java.util.concurrent.TimeUnit)
+
+________________CLASS________________
+
+
+public class java.util.concurrent.ExecutionException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+protected void <init>()
+
+protected void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<V:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract interface class java.util.concurrent.Future extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean cancel(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/ExecutionException; )
+@dalvik.annotation.Signature (value =()TV; )
+public abstract java.lang.Object get()
+@dalvik.annotation.Signature (value =(JLjava/util/concurrent/TimeUnit;)TV; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/ExecutionException;Ljava/util/concurrent/TimeoutException; )
+public abstract java.lang.Object get(
+long
+java.util.concurrent.TimeUnit)
+
+public abstract boolean isCancelled()
+
+public abstract boolean isDone()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/concurrent/Future<TV;>;Ljava/lang/Runnable; )
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/FutureTask$Sync; )
+public class java.util.concurrent.FutureTask extends java.lang.Object implements java.util.concurrent.Future, java.lang.Runnable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/FutureTask<TV;>.Sync; )
+private final java.util.concurrent.FutureTask$Sync sync
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;TV;)V )
+public void <init>(
+java.lang.Runnable
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/concurrent/Callable<TV;>;)V )
+public void <init>(
+java.util.concurrent.Callable)
+
+public boolean cancel(
+boolean)
+
+protected void done()
+@dalvik.annotation.Signature (value =()TV; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/ExecutionException; )
+public java.lang.Object get()
+@dalvik.annotation.Signature (value =(JLjava/util/concurrent/TimeUnit;)TV; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/ExecutionException;Ljava/util/concurrent/TimeoutException; )
+public java.lang.Object get(
+long
+java.util.concurrent.TimeUnit)
+
+public boolean isCancelled()
+
+public boolean isDone()
+
+public void run()
+
+protected boolean runAndReset()
+@dalvik.annotation.Signature (value =(TV;)V )
+protected void set(
+java.lang.Object)
+
+protected void setException(
+java.lang.Throwable)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =QueueingFuture )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ExecutorCompletionService; )
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/FutureTask<TV;>; )
+ class java.util.concurrent.ExecutorCompletionService$QueueingFuture extends java.util.concurrent.FutureTask
+
+----------------FIELDS----------------
+
+final java.util.concurrent.ExecutorCompletionService this$0
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;TV;)V )
+ void <init>(
+java.util.concurrent.ExecutorCompletionService
+java.lang.Runnable
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/concurrent/Callable<TV;>;)V )
+ void <init>(
+java.util.concurrent.ExecutorCompletionService
+java.util.concurrent.Callable)
+
+protected void done()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/concurrent/CompletionService<TV;>; )
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/ExecutorCompletionService$QueueingFuture; )
+public class java.util.concurrent.ExecutorCompletionService extends java.lang.Object implements java.util.concurrent.CompletionService
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/BlockingQueue<Ljava/util/concurrent/Future<TV;>;>; )
+private final java.util.concurrent.BlockingQueue completionQueue
+
+private final java.util.concurrent.Executor executor
+----------------METHODS----------------
+
+public void <init>(
+java.util.concurrent.Executor)
+@dalvik.annotation.Signature (value =(Ljava/util/concurrent/Executor;Ljava/util/concurrent/BlockingQueue<Ljava/util/concurrent/Future<TV;>;>;)V )
+public void <init>(
+java.util.concurrent.Executor
+java.util.concurrent.BlockingQueue)
+
+static java.util.concurrent.BlockingQueue access$000(
+java.util.concurrent.ExecutorCompletionService)
+@dalvik.annotation.Signature (value =()Ljava/util/concurrent/Future<TV;>; )
+public java.util.concurrent.Future poll()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+@dalvik.annotation.Signature (value =(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Future<TV;>; )
+public java.util.concurrent.Future poll(
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;TV;)Ljava/util/concurrent/Future<TV;>; )
+public java.util.concurrent.Future submit(
+java.lang.Runnable
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/concurrent/Callable<TV;>;)Ljava/util/concurrent/Future<TV;>; )
+public java.util.concurrent.Future submit(
+java.util.concurrent.Callable)
+@dalvik.annotation.Signature (value =()Ljava/util/concurrent/Future<TV;>; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public java.util.concurrent.Future take()
+
+________________CLASS________________
+
+
+public abstract interface class java.util.concurrent.ThreadFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.Thread newThread(
+java.lang.Runnable)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/Executors; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =DefaultThreadFactory )
+ class java.util.concurrent.Executors$DefaultThreadFactory extends java.lang.Object implements java.util.concurrent.ThreadFactory
+
+----------------FIELDS----------------
+
+static final java.util.concurrent.atomic.AtomicInteger poolNumber
+
+final java.lang.ThreadGroup group
+
+final java.lang.String namePrefix
+
+final java.util.concurrent.atomic.AtomicInteger threadNumber
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+public java.lang.Thread newThread(
+java.lang.Runnable)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/Executors; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =DelegatedExecutorService )
+ class java.util.concurrent.Executors$DelegatedExecutorService extends java.util.concurrent.AbstractExecutorService
+
+----------------FIELDS----------------
+
+private final java.util.concurrent.ExecutorService e
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.ExecutorService)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public boolean awaitTermination(
+long
+java.util.concurrent.TimeUnit)
+
+public void execute(
+java.lang.Runnable)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<Ljava/util/concurrent/Callable<TT;>;>;)Ljava/util/List<Ljava/util/concurrent/Future<TT;>;>; )
+public java.util.List invokeAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<Ljava/util/concurrent/Callable<TT;>;>;JLjava/util/concurrent/TimeUnit;)Ljava/util/List<Ljava/util/concurrent/Future<TT;>;>; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public java.util.List invokeAll(
+java.util.Collection
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/ExecutionException; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<Ljava/util/concurrent/Callable<TT;>;>;)TT; )
+public java.lang.Object invokeAny(
+java.util.Collection)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/Collection<Ljava/util/concurrent/Callable<TT;>;>;JLjava/util/concurrent/TimeUnit;)TT; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/ExecutionException;Ljava/util/concurrent/TimeoutException; )
+public java.lang.Object invokeAny(
+java.util.Collection
+long
+java.util.concurrent.TimeUnit)
+
+public boolean isShutdown()
+
+public boolean isTerminated()
+
+public void shutdown()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/Runnable;>; )
+public java.util.List shutdownNow()
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;)Ljava/util/concurrent/Future<*>; )
+public java.util.concurrent.Future submit(
+java.lang.Runnable)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/lang/Runnable;TT;)Ljava/util/concurrent/Future<TT;>; )
+public java.util.concurrent.Future submit(
+java.lang.Runnable
+java.lang.Object)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/concurrent/Callable<TT;>;)Ljava/util/concurrent/Future<TT;>; )
+public java.util.concurrent.Future submit(
+java.util.concurrent.Callable)
+
+________________CLASS________________
+
+
+public abstract interface class java.util.concurrent.ScheduledExecutorService extends java.lang.Object implements java.util.concurrent.ExecutorService
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture<*>; )
+public abstract java.util.concurrent.ScheduledFuture schedule(
+java.lang.Runnable
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =<V:Ljava/lang/Object;>(Ljava/util/concurrent/Callable<TV;>;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture<TV;>; )
+public abstract java.util.concurrent.ScheduledFuture schedule(
+java.util.concurrent.Callable
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture<*>; )
+public abstract java.util.concurrent.ScheduledFuture scheduleAtFixedRate(
+java.lang.Runnable
+long
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture<*>; )
+public abstract java.util.concurrent.ScheduledFuture scheduleWithFixedDelay(
+java.lang.Runnable
+long
+long
+java.util.concurrent.TimeUnit)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/Executors; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =DelegatedScheduledExecutorService )
+ class java.util.concurrent.Executors$DelegatedScheduledExecutorService extends java.util.concurrent.Executors$DelegatedExecutorService implements java.util.concurrent.ScheduledExecutorService
+
+----------------FIELDS----------------
+
+private final java.util.concurrent.ScheduledExecutorService e
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.ScheduledExecutorService)
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture<*>; )
+public java.util.concurrent.ScheduledFuture schedule(
+java.lang.Runnable
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =<V:Ljava/lang/Object;>(Ljava/util/concurrent/Callable<TV;>;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture<TV;>; )
+public java.util.concurrent.ScheduledFuture schedule(
+java.util.concurrent.Callable
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture<*>; )
+public java.util.concurrent.ScheduledFuture scheduleAtFixedRate(
+java.lang.Runnable
+long
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture<*>; )
+public java.util.concurrent.ScheduledFuture scheduleWithFixedDelay(
+java.lang.Runnable
+long
+long
+java.util.concurrent.TimeUnit)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/concurrent/Callable<Ljava/lang/Object;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/Executors; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =PrivilegedActionAdapter )
+final class java.util.concurrent.Executors$PrivilegedActionAdapter extends java.lang.Object implements java.util.concurrent.Callable
+
+----------------FIELDS----------------
+
+private final java.security.PrivilegedAction action
+----------------METHODS----------------
+
+ void <init>(
+java.security.PrivilegedAction)
+
+public java.lang.Object call()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.concurrent.Executors$PrivilegedCallable$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.util.concurrent.Executors$PrivilegedCallable this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.Executors$PrivilegedCallable)
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/Executors; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =PrivilegedCallable )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/concurrent/Callable<TT;>; )
+final class java.util.concurrent.Executors$PrivilegedCallable extends java.lang.Object implements java.util.concurrent.Callable
+
+----------------FIELDS----------------
+
+private final java.security.AccessControlContext acc
+
+private java.lang.Exception exception
+@dalvik.annotation.Signature (value =TT; )
+private java.lang.Object result
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/Callable<TT;>; )
+private final java.util.concurrent.Callable task
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/concurrent/Callable<TT;>;)V )
+ void <init>(
+java.util.concurrent.Callable)
+
+static java.lang.Object access$002(
+java.util.concurrent.Executors$PrivilegedCallable
+java.lang.Object)
+
+static java.util.concurrent.Callable access$100(
+java.util.concurrent.Executors$PrivilegedCallable)
+
+static java.lang.Exception access$202(
+java.util.concurrent.Executors$PrivilegedCallable
+java.lang.Exception)
+@dalvik.annotation.Signature (value =()TT; )
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public java.lang.Object call()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.concurrent.Executors$PrivilegedCallableUsingCurrentClassLoader$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.util.concurrent.Executors$PrivilegedCallableUsingCurrentClassLoader this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.Executors$PrivilegedCallableUsingCurrentClassLoader)
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/Executors; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/concurrent/Callable<TT;>; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =PrivilegedCallableUsingCurrentClassLoader )
+final class java.util.concurrent.Executors$PrivilegedCallableUsingCurrentClassLoader extends java.lang.Object implements java.util.concurrent.Callable
+
+----------------FIELDS----------------
+
+private final java.security.AccessControlContext acc
+
+private final java.lang.ClassLoader ccl
+
+private java.lang.Exception exception
+@dalvik.annotation.Signature (value =TT; )
+private java.lang.Object result
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/Callable<TT;>; )
+private final java.util.concurrent.Callable task
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/concurrent/Callable<TT;>;)V )
+ void <init>(
+java.util.concurrent.Callable)
+
+static java.lang.ClassLoader access$300(
+java.util.concurrent.Executors$PrivilegedCallableUsingCurrentClassLoader)
+
+static java.lang.Object access$402(
+java.util.concurrent.Executors$PrivilegedCallableUsingCurrentClassLoader
+java.lang.Object)
+
+static java.util.concurrent.Callable access$500(
+java.util.concurrent.Executors$PrivilegedCallableUsingCurrentClassLoader)
+
+static java.lang.Exception access$602(
+java.util.concurrent.Executors$PrivilegedCallableUsingCurrentClassLoader
+java.lang.Exception)
+@dalvik.annotation.Signature (value =()TT; )
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public java.lang.Object call()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =PrivilegedExceptionActionAdapter )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/Executors; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/concurrent/Callable<Ljava/lang/Object;>; )
+final class java.util.concurrent.Executors$PrivilegedExceptionActionAdapter extends java.lang.Object implements java.util.concurrent.Callable
+
+----------------FIELDS----------------
+
+private final java.security.PrivilegedExceptionAction action
+----------------METHODS----------------
+
+ void <init>(
+java.security.PrivilegedExceptionAction)
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public java.lang.Object call()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.concurrent.Executors$PrivilegedThreadFactory$1$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.util.concurrent.Executors$PrivilegedThreadFactory$1 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.Executors$PrivilegedThreadFactory$1)
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.concurrent.Executors$PrivilegedThreadFactory$1 extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+final java.util.concurrent.Executors$PrivilegedThreadFactory this$0
+
+final java.lang.Runnable val$r
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.Executors$PrivilegedThreadFactory
+java.lang.Runnable)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/Executors; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =PrivilegedThreadFactory )
+ class java.util.concurrent.Executors$PrivilegedThreadFactory extends java.util.concurrent.Executors$DefaultThreadFactory
+
+----------------FIELDS----------------
+
+private final java.security.AccessControlContext acc
+
+private final java.lang.ClassLoader ccl
+----------------METHODS----------------
+
+ void <init>()
+
+static java.lang.ClassLoader access$700(
+java.util.concurrent.Executors$PrivilegedThreadFactory)
+
+static java.security.AccessControlContext access$800(
+java.util.concurrent.Executors$PrivilegedThreadFactory)
+
+public java.lang.Thread newThread(
+java.lang.Runnable)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/Executors; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =RunnableAdapter )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/concurrent/Callable<TT;>; )
+final class java.util.concurrent.Executors$RunnableAdapter extends java.lang.Object implements java.util.concurrent.Callable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =TT; )
+final java.lang.Object result
+
+final java.lang.Runnable task
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;TT;)V )
+ void <init>(
+java.lang.Runnable
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TT; )
+public java.lang.Object call()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;Ljava/util/concurrent/Executors$DelegatedExecutorService;Ljava/util/concurrent/Executors$PrivilegedThreadFactory;Ljava/util/concurrent/Executors$DefaultThreadFactory;Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;Ljava/util/concurrent/Executors$PrivilegedCallable;Ljava/util/concurrent/Executors$PrivilegedExceptionActionAdapter;Ljava/util/concurrent/Executors$PrivilegedActionAdapter;Ljava/util/concurrent/Executors$RunnableAdapter; )
+public class java.util.concurrent.Executors extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;)Ljava/util/concurrent/Callable<Ljava/lang/Object;>; )
+public static java.util.concurrent.Callable callable(
+java.lang.Runnable)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/lang/Runnable;TT;)Ljava/util/concurrent/Callable<TT;>; )
+public static java.util.concurrent.Callable callable(
+java.lang.Runnable
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/security/PrivilegedAction;)Ljava/util/concurrent/Callable<Ljava/lang/Object;>; )
+public static java.util.concurrent.Callable callable(
+java.security.PrivilegedAction)
+@dalvik.annotation.Signature (value =(Ljava/security/PrivilegedExceptionAction;)Ljava/util/concurrent/Callable<Ljava/lang/Object;>; )
+public static java.util.concurrent.Callable callable(
+java.security.PrivilegedExceptionAction)
+
+public static java.util.concurrent.ThreadFactory defaultThreadFactory()
+
+public static java.util.concurrent.ExecutorService newCachedThreadPool()
+
+public static java.util.concurrent.ExecutorService newCachedThreadPool(
+java.util.concurrent.ThreadFactory)
+
+public static java.util.concurrent.ExecutorService newFixedThreadPool(
+int)
+
+public static java.util.concurrent.ExecutorService newFixedThreadPool(
+int
+java.util.concurrent.ThreadFactory)
+
+public static java.util.concurrent.ScheduledExecutorService newScheduledThreadPool(
+int)
+
+public static java.util.concurrent.ScheduledExecutorService newScheduledThreadPool(
+int
+java.util.concurrent.ThreadFactory)
+
+public static java.util.concurrent.ExecutorService newSingleThreadExecutor()
+
+public static java.util.concurrent.ExecutorService newSingleThreadExecutor(
+java.util.concurrent.ThreadFactory)
+
+public static java.util.concurrent.ScheduledExecutorService newSingleThreadScheduledExecutor()
+
+public static java.util.concurrent.ScheduledExecutorService newSingleThreadScheduledExecutor(
+java.util.concurrent.ThreadFactory)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/concurrent/Callable<TT;>;)Ljava/util/concurrent/Callable<TT;>; )
+public static java.util.concurrent.Callable privilegedCallable(
+java.util.concurrent.Callable)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/concurrent/Callable<TT;>;)Ljava/util/concurrent/Callable<TT;>; )
+public static java.util.concurrent.Callable privilegedCallableUsingCurrentClassLoader(
+java.util.concurrent.Callable)
+
+public static java.util.concurrent.ThreadFactory privilegedThreadFactory()
+
+public static java.util.concurrent.ExecutorService unconfigurableExecutorService(
+java.util.concurrent.ExecutorService)
+
+public static java.util.concurrent.ScheduledExecutorService unconfigurableScheduledExecutorService(
+java.util.concurrent.ScheduledExecutorService)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/FutureTask; )
+@dalvik.annotation.InnerClass (accessFlags =18 name =Sync )
+final class java.util.concurrent.FutureTask$Sync extends java.util.concurrent.locks.AbstractQueuedSynchronizer
+
+----------------FIELDS----------------
+
+private static final int CANCELLED
+
+private static final int RAN
+
+private static final int RUNNING
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/Callable<TV;>; )
+private final java.util.concurrent.Callable callable
+
+private java.lang.Throwable exception
+@dalvik.annotation.Signature (value =TV; )
+private java.lang.Object result
+
+private volatile java.lang.Thread runner
+
+final java.util.concurrent.FutureTask this$0
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/concurrent/Callable<TV;>;)V )
+ void <init>(
+java.util.concurrent.FutureTask
+java.util.concurrent.Callable)
+
+private boolean ranOrCancelled(
+int)
+
+ boolean innerCancel(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/ExecutionException; )
+@dalvik.annotation.Signature (value =()TV; )
+ java.lang.Object innerGet()
+@dalvik.annotation.Signature (value =(J)TV; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException;Ljava/util/concurrent/ExecutionException;Ljava/util/concurrent/TimeoutException; )
+ java.lang.Object innerGet(
+long)
+
+ boolean innerIsCancelled()
+
+ boolean innerIsDone()
+
+ void innerRun()
+
+ boolean innerRunAndReset()
+@dalvik.annotation.Signature (value =(TV;)V )
+ void innerSet(
+java.lang.Object)
+
+ void innerSetException(
+java.lang.Throwable)
+
+protected int tryAcquireShared(
+int)
+
+protected boolean tryReleaseShared(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/LinkedBlockingQueue; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<TE;>; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =Itr )
+ class java.util.concurrent.LinkedBlockingQueue$Itr extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/LinkedBlockingQueue$Node<TE;>; )
+private java.util.concurrent.LinkedBlockingQueue$Node current
+@dalvik.annotation.Signature (value =TE; )
+private java.lang.Object currentElement
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/LinkedBlockingQueue$Node<TE;>; )
+private java.util.concurrent.LinkedBlockingQueue$Node lastRet
+
+final java.util.concurrent.LinkedBlockingQueue this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.LinkedBlockingQueue)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =Node )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/LinkedBlockingQueue; )
+ class java.util.concurrent.LinkedBlockingQueue$Node extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =TE; )
+volatile java.lang.Object item
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/LinkedBlockingQueue$Node<TE;>; )
+ java.util.concurrent.LinkedBlockingQueue$Node next
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TE;)V )
+ void <init>(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/LinkedBlockingQueue$Itr;Ljava/util/concurrent/LinkedBlockingQueue$Node; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractQueue<TE;>;Ljava/util/concurrent/BlockingQueue<TE;>;Ljava/io/Serializable; )
+public class java.util.concurrent.LinkedBlockingQueue extends java.util.AbstractQueue implements java.util.concurrent.BlockingQueue, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final int capacity
+
+private final java.util.concurrent.atomic.AtomicInteger count
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/LinkedBlockingQueue$Node<TE;>; )
+private transient java.util.concurrent.LinkedBlockingQueue$Node head
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/LinkedBlockingQueue$Node<TE;>; )
+private transient java.util.concurrent.LinkedBlockingQueue$Node last
+
+private final java.util.concurrent.locks.Condition notEmpty
+
+private final java.util.concurrent.locks.Condition notFull
+
+private final java.util.concurrent.locks.ReentrantLock putLock
+
+private final java.util.concurrent.locks.ReentrantLock takeLock
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)V )
+public void <init>(
+java.util.Collection)
+
+static java.util.concurrent.locks.ReentrantLock access$000(
+java.util.concurrent.LinkedBlockingQueue)
+
+static java.util.concurrent.locks.ReentrantLock access$100(
+java.util.concurrent.LinkedBlockingQueue)
+
+static java.util.concurrent.LinkedBlockingQueue$Node access$200(
+java.util.concurrent.LinkedBlockingQueue)
+
+static java.util.concurrent.atomic.AtomicInteger access$300(
+java.util.concurrent.LinkedBlockingQueue)
+
+static int access$400(
+java.util.concurrent.LinkedBlockingQueue)
+
+static java.util.concurrent.locks.Condition access$500(
+java.util.concurrent.LinkedBlockingQueue)
+@dalvik.annotation.Signature (value =()TE; )
+private java.lang.Object extract()
+
+private void fullyLock()
+
+private void fullyUnlock()
+@dalvik.annotation.Signature (value =(TE;)V )
+private void insert(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+private void signalNotEmpty()
+
+private void signalNotFull()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public void clear()
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<-TE;>;)I )
+public int drainTo(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<-TE;>;I)I )
+public int drainTo(
+java.util.Collection
+int)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean offer(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+@dalvik.annotation.Signature (value =(TE;JLjava/util/concurrent/TimeUnit;)Z )
+public boolean offer(
+java.lang.Object
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object peek()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object poll()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+@dalvik.annotation.Signature (value =(JLjava/util/concurrent/TimeUnit;)TE; )
+public java.lang.Object poll(
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+@dalvik.annotation.Signature (value =(TE;)V )
+public void put(
+java.lang.Object)
+
+public int remainingCapacity()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+@dalvik.annotation.Signature (value =()TE; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public java.lang.Object take()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =Itr )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/PriorityBlockingQueue; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Iterator<TE;>; )
+ class java.util.concurrent.PriorityBlockingQueue$Itr extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Iterator<TE;>; )
+private final java.util.Iterator iter
+
+final java.util.concurrent.PriorityBlockingQueue this$0
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Iterator<TE;>;)V )
+ void <init>(
+java.util.concurrent.PriorityBlockingQueue
+java.util.Iterator)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/PriorityBlockingQueue$Itr; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractQueue<TE;>;Ljava/util/concurrent/BlockingQueue<TE;>;Ljava/io/Serializable; )
+public class java.util.concurrent.PriorityBlockingQueue extends java.util.AbstractQueue implements java.util.concurrent.BlockingQueue, java.io.Serializable
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private static final long serialVersionUID
+
+private final java.util.concurrent.locks.ReentrantLock lock
+
+private final java.util.concurrent.locks.Condition notEmpty
+@dalvik.annotation.Signature (value =Ljava/util/PriorityQueue<TE;>; )
+private final java.util.PriorityQueue q
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int)
+@dalvik.annotation.Signature (value =(ILjava/util/Comparator<-TE;>;)V )
+public void <init>(
+int
+java.util.Comparator)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)V )
+public void <init>(
+java.util.Collection)
+
+static java.util.concurrent.locks.ReentrantLock access$000(
+java.util.concurrent.PriorityBlockingQueue)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+
+public void clear()
+@dalvik.annotation.Signature (value =()Ljava/util/Comparator<-TE;>; )
+public java.util.Comparator comparator()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<-TE;>;)I )
+public int drainTo(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<-TE;>;I)I )
+public int drainTo(
+java.util.Collection
+int)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean offer(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;JLjava/util/concurrent/TimeUnit;)Z )
+public boolean offer(
+java.lang.Object
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object peek()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object poll()
+@dalvik.annotation.Signature (value =(JLjava/util/concurrent/TimeUnit;)TE; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public java.lang.Object poll(
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =(TE;)V )
+public void put(
+java.lang.Object)
+
+public int remainingCapacity()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+@dalvik.annotation.Signature (value =()TE; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public java.lang.Object take()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.util.concurrent.RejectedExecutionException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public abstract interface class java.util.concurrent.RejectedExecutionHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void rejectedExecution(
+java.lang.Runnable
+java.util.concurrent.ThreadPoolExecutor)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/concurrent/Delayed;Ljava/util/concurrent/Future<TV;>; )
+public abstract interface class java.util.concurrent.ScheduledFuture extends java.lang.Object implements java.util.concurrent.Delayed, java.util.concurrent.Future
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ScheduledThreadPoolExecutor; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class java.util.concurrent.ScheduledThreadPoolExecutor$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<Ljava/lang/Runnable;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue$1 extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Iterator<Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;>; )
+private java.util.Iterator it
+
+final java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue)
+
+public boolean hasNext()
+
+public volatile java.lang.Object next()
+
+public java.lang.Runnable next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =DelayedWorkQueue )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractCollection<Ljava/lang/Runnable;>;Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ScheduledThreadPoolExecutor; )
+ class java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue extends java.util.AbstractCollection implements java.util.concurrent.BlockingQueue
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/DelayQueue<Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;>; )
+private final java.util.concurrent.DelayQueue dq
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+java.util.concurrent.ScheduledThreadPoolExecutor$1)
+
+static java.util.concurrent.DelayQueue access$500(
+java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue)
+
+public volatile boolean add(
+java.lang.Object)
+
+public boolean add(
+java.lang.Runnable)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<-Ljava/lang/Runnable;>;)I )
+public int drainTo(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<-Ljava/lang/Runnable;>;I)I )
+public int drainTo(
+java.util.Collection
+int)
+
+public volatile java.lang.Object element()
+
+public java.lang.Runnable element()
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/lang/Runnable;>; )
+public java.util.Iterator iterator()
+
+public volatile boolean offer(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public volatile boolean offer(
+java.lang.Object
+long
+java.util.concurrent.TimeUnit)
+
+public boolean offer(
+java.lang.Runnable)
+
+public boolean offer(
+java.lang.Runnable
+long
+java.util.concurrent.TimeUnit)
+
+public volatile java.lang.Object peek()
+
+public java.lang.Runnable peek()
+
+public volatile java.lang.Object poll()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public volatile java.lang.Object poll(
+long
+java.util.concurrent.TimeUnit)
+
+public java.lang.Runnable poll()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public java.lang.Runnable poll(
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public volatile void put(
+java.lang.Object)
+
+public void put(
+java.lang.Runnable)
+
+public int remainingCapacity()
+
+public volatile java.lang.Object remove()
+
+public java.lang.Runnable remove()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public volatile java.lang.Object take()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public java.lang.Runnable take()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<V:Ljava/lang/Object;>Ljava/util/concurrent/FutureTask<TV;>;Ljava/util/concurrent/ScheduledFuture<TV;>; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =ScheduledFutureTask )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ScheduledThreadPoolExecutor; )
+ class java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask extends java.util.concurrent.FutureTask implements java.util.concurrent.ScheduledFuture
+
+----------------FIELDS----------------
+
+private final long period
+
+private final long sequenceNumber
+
+final java.util.concurrent.ScheduledThreadPoolExecutor this$0
+
+private long time
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;TV;J)V )
+ void <init>(
+java.util.concurrent.ScheduledThreadPoolExecutor
+java.lang.Runnable
+java.lang.Object
+long)
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;TV;JJ)V )
+ void <init>(
+java.util.concurrent.ScheduledThreadPoolExecutor
+java.lang.Runnable
+java.lang.Object
+long
+long)
+@dalvik.annotation.Signature (value =(Ljava/util/concurrent/Callable<TV;>;J)V )
+ void <init>(
+java.util.concurrent.ScheduledThreadPoolExecutor
+java.util.concurrent.Callable
+long)
+
+static boolean access$101(
+java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask)
+
+static void access$301(
+java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask)
+
+private void runPeriodic()
+
+public volatile int compareTo(
+java.lang.Object)
+
+public int compareTo(
+java.util.concurrent.Delayed)
+
+public long getDelay(
+java.util.concurrent.TimeUnit)
+
+ boolean isPeriodic()
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/ThreadPoolExecutor$DiscardOldestPolicy;Ljava/util/concurrent/ThreadPoolExecutor$DiscardPolicy;Ljava/util/concurrent/ThreadPoolExecutor$AbortPolicy;Ljava/util/concurrent/ThreadPoolExecutor$CallerRunsPolicy;Ljava/util/concurrent/ThreadPoolExecutor$Worker; )
+public class java.util.concurrent.ThreadPoolExecutor extends java.util.concurrent.AbstractExecutorService
+
+----------------FIELDS----------------
+
+static final boolean $assertionsDisabled
+
+private static final java.lang.Runnable[] EMPTY_RUNNABLE_ARRAY
+
+static final int RUNNING
+
+static final int SHUTDOWN
+
+static final int STOP
+
+static final int TERMINATED
+
+private static final java.util.concurrent.RejectedExecutionHandler defaultHandler
+
+private static final java.lang.RuntimePermission shutdownPerm
+
+private long completedTaskCount
+
+private volatile int corePoolSize
+
+private volatile java.util.concurrent.RejectedExecutionHandler handler
+
+private volatile long keepAliveTime
+
+private int largestPoolSize
+
+private final java.util.concurrent.locks.ReentrantLock mainLock
+
+private volatile int maximumPoolSize
+
+private volatile int poolSize
+
+volatile int runState
+
+private final java.util.concurrent.locks.Condition termination
+
+private volatile java.util.concurrent.ThreadFactory threadFactory
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>; )
+private final java.util.concurrent.BlockingQueue workQueue
+@dalvik.annotation.Signature (value =Ljava/util/HashSet<Ljava/util/concurrent/ThreadPoolExecutor$Worker;>; )
+private final java.util.HashSet workers
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;)V )
+public void <init>(
+int
+int
+long
+java.util.concurrent.TimeUnit
+java.util.concurrent.BlockingQueue)
+@dalvik.annotation.Signature (value =(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;Ljava/util/concurrent/RejectedExecutionHandler;)V )
+public void <init>(
+int
+int
+long
+java.util.concurrent.TimeUnit
+java.util.concurrent.BlockingQueue
+java.util.concurrent.RejectedExecutionHandler)
+@dalvik.annotation.Signature (value =(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;Ljava/util/concurrent/ThreadFactory;)V )
+public void <init>(
+int
+int
+long
+java.util.concurrent.TimeUnit
+java.util.concurrent.BlockingQueue
+java.util.concurrent.ThreadFactory)
+@dalvik.annotation.Signature (value =(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V )
+public void <init>(
+int
+int
+long
+java.util.concurrent.TimeUnit
+java.util.concurrent.BlockingQueue
+java.util.concurrent.ThreadFactory
+java.util.concurrent.RejectedExecutionHandler)
+
+private boolean addIfUnderCorePoolSize(
+java.lang.Runnable)
+
+private java.lang.Runnable addIfUnderMaximumPoolSize(
+java.lang.Runnable)
+
+private java.lang.Thread addThread(
+java.lang.Runnable)
+
+protected void afterExecute(
+java.lang.Runnable
+java.lang.Throwable)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public boolean awaitTermination(
+long
+java.util.concurrent.TimeUnit)
+
+protected void beforeExecute(
+java.lang.Thread
+java.lang.Runnable)
+
+public void execute(
+java.lang.Runnable)
+
+protected void finalize()
+
+public int getActiveCount()
+
+public long getCompletedTaskCount()
+
+public int getCorePoolSize()
+
+public long getKeepAliveTime(
+java.util.concurrent.TimeUnit)
+
+public int getLargestPoolSize()
+
+public int getMaximumPoolSize()
+
+public int getPoolSize()
+@dalvik.annotation.Signature (value =()Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>; )
+public java.util.concurrent.BlockingQueue getQueue()
+
+public java.util.concurrent.RejectedExecutionHandler getRejectedExecutionHandler()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+ java.lang.Runnable getTask()
+
+public long getTaskCount()
+
+public java.util.concurrent.ThreadFactory getThreadFactory()
+
+ void interruptIdleWorkers()
+
+public boolean isShutdown()
+
+public boolean isTerminated()
+
+public boolean isTerminating()
+
+public int prestartAllCoreThreads()
+
+public boolean prestartCoreThread()
+
+public void purge()
+
+ void reject(
+java.lang.Runnable)
+
+public boolean remove(
+java.lang.Runnable)
+
+public void setCorePoolSize(
+int)
+
+public void setKeepAliveTime(
+long
+java.util.concurrent.TimeUnit)
+
+public void setMaximumPoolSize(
+int)
+
+public void setRejectedExecutionHandler(
+java.util.concurrent.RejectedExecutionHandler)
+
+public void setThreadFactory(
+java.util.concurrent.ThreadFactory)
+
+public void shutdown()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/Runnable;>; )
+public java.util.List shutdownNow()
+
+protected void terminated()
+
+ void workerDone(
+java.util.concurrent.ThreadPoolExecutor$Worker)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/ScheduledThreadPoolExecutor$1;Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask; )
+public class java.util.concurrent.ScheduledThreadPoolExecutor extends java.util.concurrent.ThreadPoolExecutor implements java.util.concurrent.ScheduledExecutorService
+
+----------------FIELDS----------------
+
+private static final long NANO_ORIGIN
+
+private static final java.util.concurrent.atomic.AtomicLong sequencer
+
+private volatile boolean continueExistingPeriodicTasksAfterShutdown
+
+private volatile boolean executeExistingDelayedTasksAfterShutdown
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int)
+
+public void <init>(
+int
+java.util.concurrent.RejectedExecutionHandler)
+
+public void <init>(
+int
+java.util.concurrent.ThreadFactory)
+
+public void <init>(
+int
+java.util.concurrent.ThreadFactory
+java.util.concurrent.RejectedExecutionHandler)
+
+static java.util.concurrent.atomic.AtomicLong access$000()
+
+static java.util.concurrent.BlockingQueue access$201(
+java.util.concurrent.ScheduledThreadPoolExecutor)
+
+private void cancelUnwantedTasks()
+
+private void delayedExecute(
+java.lang.Runnable)
+
+public void execute(
+java.lang.Runnable)
+
+public boolean getContinueExistingPeriodicTasksAfterShutdownPolicy()
+
+public boolean getExecuteExistingDelayedTasksAfterShutdownPolicy()
+@dalvik.annotation.Signature (value =()Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>; )
+public java.util.concurrent.BlockingQueue getQueue()
+
+final long now()
+
+public boolean remove(
+java.lang.Runnable)
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture<*>; )
+public java.util.concurrent.ScheduledFuture schedule(
+java.lang.Runnable
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =<V:Ljava/lang/Object;>(Ljava/util/concurrent/Callable<TV;>;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture<TV;>; )
+public java.util.concurrent.ScheduledFuture schedule(
+java.util.concurrent.Callable
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture<*>; )
+public java.util.concurrent.ScheduledFuture scheduleAtFixedRate(
+java.lang.Runnable
+long
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture<*>; )
+public java.util.concurrent.ScheduledFuture scheduleWithFixedDelay(
+java.lang.Runnable
+long
+long
+java.util.concurrent.TimeUnit)
+
+public void setContinueExistingPeriodicTasksAfterShutdownPolicy(
+boolean)
+
+public void setExecuteExistingDelayedTasksAfterShutdownPolicy(
+boolean)
+
+public void shutdown()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/Runnable;>; )
+public java.util.List shutdownNow()
+@dalvik.annotation.Signature (value =(Ljava/lang/Runnable;)Ljava/util/concurrent/Future<*>; )
+public java.util.concurrent.Future submit(
+java.lang.Runnable)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/lang/Runnable;TT;)Ljava/util/concurrent/Future<TT;>; )
+public java.util.concurrent.Future submit(
+java.lang.Runnable
+java.lang.Object)
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/util/concurrent/Callable<TT;>;)Ljava/util/concurrent/Future<TT;>; )
+public java.util.concurrent.Future submit(
+java.util.concurrent.Callable)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1032 name =Sync )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/Semaphore; )
+abstract class java.util.concurrent.Semaphore$Sync extends java.util.concurrent.locks.AbstractQueuedSynchronizer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+final int drainPermits()
+
+final int getPermits()
+
+final int nonfairTryAcquireShared(
+int)
+
+final void reducePermits(
+int)
+
+protected final boolean tryReleaseShared(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/Semaphore; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =FairSync )
+final class java.util.concurrent.Semaphore$FairSync extends java.util.concurrent.Semaphore$Sync
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+protected int tryAcquireShared(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =NonfairSync )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/Semaphore; )
+final class java.util.concurrent.Semaphore$NonfairSync extends java.util.concurrent.Semaphore$Sync
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+protected int tryAcquireShared(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/Semaphore$FairSync;Ljava/util/concurrent/Semaphore$NonfairSync;Ljava/util/concurrent/Semaphore$Sync; )
+public class java.util.concurrent.Semaphore extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final java.util.concurrent.Semaphore$Sync sync
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public void acquire()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public void acquire(
+int)
+
+public void acquireUninterruptibly()
+
+public void acquireUninterruptibly(
+int)
+
+public int availablePermits()
+
+public int drainPermits()
+
+public final int getQueueLength()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljava/lang/Thread;>; )
+protected java.util.Collection getQueuedThreads()
+
+public final boolean hasQueuedThreads()
+
+public boolean isFair()
+
+protected void reducePermits(
+int)
+
+public void release()
+
+public void release(
+int)
+
+public java.lang.String toString()
+
+public boolean tryAcquire()
+
+public boolean tryAcquire(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public boolean tryAcquire(
+int
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public boolean tryAcquire(
+long
+java.util.concurrent.TimeUnit)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =EmptyIterator )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/SynchronousQueue; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Iterator<TE;>; )
+ class java.util.concurrent.SynchronousQueue$EmptyIterator extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1032 name =WaitQueue )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/SynchronousQueue; )
+abstract class java.util.concurrent.SynchronousQueue$WaitQueue extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+abstract java.util.concurrent.SynchronousQueue$Node deq()
+
+abstract java.util.concurrent.SynchronousQueue$Node enq(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =FifoWaitQueue )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/SynchronousQueue; )
+final class java.util.concurrent.SynchronousQueue$FifoWaitQueue extends java.util.concurrent.SynchronousQueue$WaitQueue implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private transient java.util.concurrent.SynchronousQueue$Node head
+
+private transient java.util.concurrent.SynchronousQueue$Node last
+----------------METHODS----------------
+
+ void <init>()
+
+ java.util.concurrent.SynchronousQueue$Node deq()
+
+ java.util.concurrent.SynchronousQueue$Node enq(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =LifoWaitQueue )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/SynchronousQueue; )
+final class java.util.concurrent.SynchronousQueue$LifoWaitQueue extends java.util.concurrent.SynchronousQueue$WaitQueue implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private transient java.util.concurrent.SynchronousQueue$Node head
+----------------METHODS----------------
+
+ void <init>()
+
+ java.util.concurrent.SynchronousQueue$Node deq()
+
+ java.util.concurrent.SynchronousQueue$Node enq(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/SynchronousQueue; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =Node )
+final class java.util.concurrent.SynchronousQueue$Node extends java.util.concurrent.locks.AbstractQueuedSynchronizer
+
+----------------FIELDS----------------
+
+private static final int ACK
+
+private static final int CANCEL
+
+ java.lang.Object item
+
+ java.util.concurrent.SynchronousQueue$Node next
+----------------METHODS----------------
+
+ void <init>(
+java.lang.Object)
+
+ void <init>(
+java.lang.Object
+java.util.concurrent.SynchronousQueue$Node)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+private void checkCancellationOnInterrupt(
+java.lang.InterruptedException)
+
+private java.lang.Object extract()
+
+ java.lang.Object getItem()
+
+ boolean setItem(
+java.lang.Object)
+
+protected boolean tryAcquire(
+int)
+
+protected boolean tryRelease(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+ java.lang.Object waitForPut()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+ java.lang.Object waitForPut(
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+ void waitForTake()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+ boolean waitForTake(
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/util/AbstractQueue<TE;>;Ljava/util/concurrent/BlockingQueue<TE;>;Ljava/io/Serializable; )
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/SynchronousQueue$EmptyIterator;Ljava/util/concurrent/SynchronousQueue$Node;Ljava/util/concurrent/SynchronousQueue$LifoWaitQueue;Ljava/util/concurrent/SynchronousQueue$FifoWaitQueue;Ljava/util/concurrent/SynchronousQueue$WaitQueue; )
+public class java.util.concurrent.SynchronousQueue extends java.util.AbstractQueue implements java.util.concurrent.BlockingQueue, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final java.util.concurrent.locks.ReentrantLock qlock
+
+private final java.util.concurrent.SynchronousQueue$WaitQueue waitingConsumers
+
+private final java.util.concurrent.SynchronousQueue$WaitQueue waitingProducers
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+boolean)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean containsAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<-TE;>;)I )
+public int drainTo(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<-TE;>;I)I )
+public int drainTo(
+java.util.Collection
+int)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean offer(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TE;JLjava/util/concurrent/TimeUnit;)Z )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public boolean offer(
+java.lang.Object
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object peek()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object poll()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+@dalvik.annotation.Signature (value =(JLjava/util/concurrent/TimeUnit;)TE; )
+public java.lang.Object poll(
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+@dalvik.annotation.Signature (value =(TE;)V )
+public void put(
+java.lang.Object)
+
+public int remainingCapacity()
+
+public boolean remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean removeAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean retainAll(
+java.util.Collection)
+
+public int size()
+@dalvik.annotation.Signature (value =()TE; )
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public java.lang.Object take()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ThreadPoolExecutor; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =AbortPolicy )
+public class java.util.concurrent.ThreadPoolExecutor$AbortPolicy extends java.lang.Object implements java.util.concurrent.RejectedExecutionHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void rejectedExecution(
+java.lang.Runnable
+java.util.concurrent.ThreadPoolExecutor)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ThreadPoolExecutor; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =CallerRunsPolicy )
+public class java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy extends java.lang.Object implements java.util.concurrent.RejectedExecutionHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void rejectedExecution(
+java.lang.Runnable
+java.util.concurrent.ThreadPoolExecutor)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DiscardOldestPolicy )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ThreadPoolExecutor; )
+public class java.util.concurrent.ThreadPoolExecutor$DiscardOldestPolicy extends java.lang.Object implements java.util.concurrent.RejectedExecutionHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void rejectedExecution(
+java.lang.Runnable
+java.util.concurrent.ThreadPoolExecutor)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DiscardPolicy )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ThreadPoolExecutor; )
+public class java.util.concurrent.ThreadPoolExecutor$DiscardPolicy extends java.lang.Object implements java.util.concurrent.RejectedExecutionHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void rejectedExecution(
+java.lang.Runnable
+java.util.concurrent.ThreadPoolExecutor)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =Worker )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/ThreadPoolExecutor; )
+ class java.util.concurrent.ThreadPoolExecutor$Worker extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+volatile long completedTasks
+
+private java.lang.Runnable firstTask
+
+private final java.util.concurrent.locks.ReentrantLock runLock
+
+final java.util.concurrent.ThreadPoolExecutor this$0
+
+ java.lang.Thread thread
+----------------METHODS----------------
+
+ void <init>(
+java.util.concurrent.ThreadPoolExecutor
+java.lang.Runnable)
+
+private void runTask(
+java.lang.Runnable)
+
+ void interruptIfIdle()
+
+ void interruptNow()
+
+ boolean isActive()
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Ljava/util/concurrent/TimeUnit;>; )
+public final class java.util.concurrent.TimeUnit extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final java.util.concurrent.TimeUnit[] $VALUES
+
+public static final java.util.concurrent.TimeUnit MICROSECONDS
+
+public static final java.util.concurrent.TimeUnit MILLISECONDS
+
+public static final java.util.concurrent.TimeUnit NANOSECONDS
+
+public static final java.util.concurrent.TimeUnit SECONDS
+
+private static final int[] multipliers
+
+private static final long[] overflows
+
+private final int index
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+private static long doConvert(
+int
+long)
+
+private int excessNanos(
+long
+long)
+
+public static java.util.concurrent.TimeUnit valueOf(
+java.lang.String)
+
+public static java.util.concurrent.TimeUnit[] values()
+
+public long convert(
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public void sleep(
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public void timedJoin(
+java.lang.Thread
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public void timedWait(
+java.lang.Object
+long)
+
+public long toMicros(
+long)
+
+public long toMillis(
+long)
+
+public long toNanos(
+long)
+
+public long toSeconds(
+long)
+
+________________CLASS________________
+
+
+public class java.util.concurrent.TimeoutException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.util.concurrent.atomic.AtomicBoolean extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private static final sun.misc.Unsafe unsafe
+
+private static final long valueOffset
+
+private volatile int value
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+boolean)
+
+public final boolean compareAndSet(
+boolean
+boolean)
+
+public final boolean get()
+
+public final boolean getAndSet(
+boolean)
+
+public final void set(
+boolean)
+
+public java.lang.String toString()
+
+public boolean weakCompareAndSet(
+boolean
+boolean)
+
+________________CLASS________________
+
+
+public class java.util.concurrent.atomic.AtomicInteger extends java.lang.Number implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private static final sun.misc.Unsafe unsafe
+
+private static final long valueOffset
+
+private volatile int value
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int)
+
+public final int addAndGet(
+int)
+
+public final boolean compareAndSet(
+int
+int)
+
+public final int decrementAndGet()
+
+public double doubleValue()
+
+public float floatValue()
+
+public final int get()
+
+public final int getAndAdd(
+int)
+
+public final int getAndDecrement()
+
+public final int getAndIncrement()
+
+public final int getAndSet(
+int)
+
+public final int incrementAndGet()
+
+public int intValue()
+
+public long longValue()
+
+public final void set(
+int)
+
+public java.lang.String toString()
+
+public final boolean weakCompareAndSet(
+int
+int)
+
+________________CLASS________________
+
+
+public class java.util.concurrent.atomic.AtomicIntegerArray extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final int base
+
+private static final int scale
+
+private static final long serialVersionUID
+
+private static final sun.misc.Unsafe unsafe
+
+private final int[] array
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int)
+
+public void <init>(
+int[])
+
+private long rawIndex(
+int)
+
+public final int addAndGet(
+int
+int)
+
+public final boolean compareAndSet(
+int
+int
+int)
+
+public final int decrementAndGet(
+int)
+
+public final int get(
+int)
+
+public final int getAndAdd(
+int
+int)
+
+public final int getAndDecrement(
+int)
+
+public final int getAndIncrement(
+int)
+
+public final int getAndSet(
+int
+int)
+
+public final int incrementAndGet(
+int)
+
+public final int length()
+
+public final void set(
+int
+int)
+
+public java.lang.String toString()
+
+public final boolean weakCompareAndSet(
+int
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract class java.util.concurrent.atomic.AtomicIntegerFieldUpdater extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Signature (value =<U:Ljava/lang/Object;>(Ljava/lang/Class<TU;>;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater<TU;>; )
+public static java.util.concurrent.atomic.AtomicIntegerFieldUpdater newUpdater(
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Signature (value =(TT;I)I )
+public int addAndGet(
+java.lang.Object
+int)
+@dalvik.annotation.Signature (value =(TT;II)Z )
+public abstract boolean compareAndSet(
+java.lang.Object
+int
+int)
+@dalvik.annotation.Signature (value =(TT;)I )
+public int decrementAndGet(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;)I )
+public abstract int get(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;I)I )
+public int getAndAdd(
+java.lang.Object
+int)
+@dalvik.annotation.Signature (value =(TT;)I )
+public int getAndDecrement(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;)I )
+public int getAndIncrement(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;I)I )
+public int getAndSet(
+java.lang.Object
+int)
+@dalvik.annotation.Signature (value =(TT;)I )
+public int incrementAndGet(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;I)V )
+public abstract void set(
+java.lang.Object
+int)
+@dalvik.annotation.Signature (value =(TT;II)Z )
+public abstract boolean weakCompareAndSet(
+java.lang.Object
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =AtomicIntegerFieldUpdaterImpl )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater<TT;>; )
+ class java.util.concurrent.atomic.AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl extends java.util.concurrent.atomic.AtomicIntegerFieldUpdater
+
+----------------FIELDS----------------
+
+private static final sun.misc.Unsafe unsafe
+
+private final long offset
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TT;>; )
+private final java.lang.Class tclass
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<TT;>;Ljava/lang/String;)V )
+ void <init>(
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Signature (value =(TT;II)Z )
+public boolean compareAndSet(
+java.lang.Object
+int
+int)
+@dalvik.annotation.Signature (value =(TT;)I )
+public final int get(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;I)V )
+public void set(
+java.lang.Object
+int)
+@dalvik.annotation.Signature (value =(TT;II)Z )
+public boolean weakCompareAndSet(
+java.lang.Object
+int
+int)
+
+________________CLASS________________
+
+
+public class java.util.concurrent.atomic.AtomicLong extends java.lang.Number implements java.io.Serializable
+
+----------------FIELDS----------------
+
+static final boolean VM_SUPPORTS_LONG_CAS
+
+private static final long serialVersionUID
+
+private static final sun.misc.Unsafe unsafe
+
+private static final long valueOffset
+
+private volatile long value
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+long)
+
+private static native boolean VMSupportsCS8()
+
+public final long addAndGet(
+long)
+
+public final boolean compareAndSet(
+long
+long)
+
+public final long decrementAndGet()
+
+public double doubleValue()
+
+public float floatValue()
+
+public final long get()
+
+public final long getAndAdd(
+long)
+
+public final long getAndDecrement()
+
+public final long getAndIncrement()
+
+public final long getAndSet(
+long)
+
+public final long incrementAndGet()
+
+public int intValue()
+
+public long longValue()
+
+public final void set(
+long)
+
+public java.lang.String toString()
+
+public final boolean weakCompareAndSet(
+long
+long)
+
+________________CLASS________________
+
+
+public class java.util.concurrent.atomic.AtomicLongArray extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final int base
+
+private static final int scale
+
+private static final long serialVersionUID
+
+private static final sun.misc.Unsafe unsafe
+
+private final long[] array
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int)
+
+public void <init>(
+long[])
+
+private long rawIndex(
+int)
+
+public long addAndGet(
+int
+long)
+
+public final boolean compareAndSet(
+int
+long
+long)
+
+public final long decrementAndGet(
+int)
+
+public final long get(
+int)
+
+public final long getAndAdd(
+int
+long)
+
+public final long getAndDecrement(
+int)
+
+public final long getAndIncrement(
+int)
+
+public final long getAndSet(
+int
+long)
+
+public final long incrementAndGet(
+int)
+
+public final int length()
+
+public final void set(
+int
+long)
+
+public java.lang.String toString()
+
+public final boolean weakCompareAndSet(
+int
+long
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater; )
+public abstract class java.util.concurrent.atomic.AtomicLongFieldUpdater extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Signature (value =<U:Ljava/lang/Object;>(Ljava/lang/Class<TU;>;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicLongFieldUpdater<TU;>; )
+public static java.util.concurrent.atomic.AtomicLongFieldUpdater newUpdater(
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Signature (value =(TT;J)J )
+public long addAndGet(
+java.lang.Object
+long)
+@dalvik.annotation.Signature (value =(TT;JJ)Z )
+public abstract boolean compareAndSet(
+java.lang.Object
+long
+long)
+@dalvik.annotation.Signature (value =(TT;)J )
+public long decrementAndGet(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;)J )
+public abstract long get(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;J)J )
+public long getAndAdd(
+java.lang.Object
+long)
+@dalvik.annotation.Signature (value =(TT;)J )
+public long getAndDecrement(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;)J )
+public long getAndIncrement(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;J)J )
+public long getAndSet(
+java.lang.Object
+long)
+@dalvik.annotation.Signature (value =(TT;)J )
+public long incrementAndGet(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;J)V )
+public abstract void set(
+java.lang.Object
+long)
+@dalvik.annotation.Signature (value =(TT;JJ)Z )
+public abstract boolean weakCompareAndSet(
+java.lang.Object
+long
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/util/concurrent/atomic/AtomicLongFieldUpdater<TT;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =CASUpdater )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; )
+ class java.util.concurrent.atomic.AtomicLongFieldUpdater$CASUpdater extends java.util.concurrent.atomic.AtomicLongFieldUpdater
+
+----------------FIELDS----------------
+
+private static final sun.misc.Unsafe unsafe
+
+private final long offset
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TT;>; )
+private final java.lang.Class tclass
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<TT;>;Ljava/lang/String;)V )
+ void <init>(
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Signature (value =(TT;JJ)Z )
+public boolean compareAndSet(
+java.lang.Object
+long
+long)
+@dalvik.annotation.Signature (value =(TT;)J )
+public long get(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;J)V )
+public void set(
+java.lang.Object
+long)
+@dalvik.annotation.Signature (value =(TT;JJ)Z )
+public boolean weakCompareAndSet(
+java.lang.Object
+long
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =LockedUpdater )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/util/concurrent/atomic/AtomicLongFieldUpdater<TT;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; )
+ class java.util.concurrent.atomic.AtomicLongFieldUpdater$LockedUpdater extends java.util.concurrent.atomic.AtomicLongFieldUpdater
+
+----------------FIELDS----------------
+
+private static final sun.misc.Unsafe unsafe
+
+private final long offset
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TT;>; )
+private final java.lang.Class tclass
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<TT;>;Ljava/lang/String;)V )
+ void <init>(
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Signature (value =(TT;JJ)Z )
+public boolean compareAndSet(
+java.lang.Object
+long
+long)
+@dalvik.annotation.Signature (value =(TT;)J )
+public long get(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;J)V )
+public void set(
+java.lang.Object
+long)
+@dalvik.annotation.Signature (value =(TT;JJ)Z )
+public boolean weakCompareAndSet(
+java.lang.Object
+long
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =ReferenceBooleanPair )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/atomic/AtomicMarkableReference; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+ class java.util.concurrent.atomic.AtomicMarkableReference$ReferenceBooleanPair extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final boolean bit
+@dalvik.annotation.Signature (value =TT; )
+private final java.lang.Object reference
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TT;Z)V )
+ void <init>(
+java.lang.Object
+boolean)
+
+static java.lang.Object access$000(
+java.util.concurrent.atomic.AtomicMarkableReference$ReferenceBooleanPair)
+
+static boolean access$100(
+java.util.concurrent.atomic.AtomicMarkableReference$ReferenceBooleanPair)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<V:Ljava/lang/Object;>Ljava/lang/Object; )
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/atomic/AtomicMarkableReference$ReferenceBooleanPair; )
+public class java.util.concurrent.atomic.AtomicMarkableReference extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/atomic/AtomicReference<Ljava/util/concurrent/atomic/AtomicMarkableReference$ReferenceBooleanPair<TV;>;>; )
+private final java.util.concurrent.atomic.AtomicReference atomicRef
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TV;Z)V )
+public void <init>(
+java.lang.Object
+boolean)
+@dalvik.annotation.Signature (value =(TV;Z)Z )
+public boolean attemptMark(
+java.lang.Object
+boolean)
+@dalvik.annotation.Signature (value =(TV;TV;ZZ)Z )
+public boolean compareAndSet(
+java.lang.Object
+java.lang.Object
+boolean
+boolean)
+@dalvik.annotation.Signature (value =([Z)TV; )
+public java.lang.Object get(
+boolean[])
+@dalvik.annotation.Signature (value =()TV; )
+public java.lang.Object getReference()
+
+public boolean isMarked()
+@dalvik.annotation.Signature (value =(TV;Z)V )
+public void set(
+java.lang.Object
+boolean)
+@dalvik.annotation.Signature (value =(TV;TV;ZZ)Z )
+public boolean weakCompareAndSet(
+java.lang.Object
+java.lang.Object
+boolean
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/io/Serializable; )
+public class java.util.concurrent.atomic.AtomicReference extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private static final sun.misc.Unsafe unsafe
+
+private static final long valueOffset
+@dalvik.annotation.Signature (value =TV; )
+private volatile java.lang.Object value
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Signature (value =(TV;)V )
+public void <init>(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TV;TV;)Z )
+public final boolean compareAndSet(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =()TV; )
+public final java.lang.Object get()
+@dalvik.annotation.Signature (value =(TV;)TV; )
+public final java.lang.Object getAndSet(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TV;)V )
+public final void set(
+java.lang.Object)
+
+public java.lang.String toString()
+@dalvik.annotation.Signature (value =(TV;TV;)Z )
+public final boolean weakCompareAndSet(
+java.lang.Object
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/io/Serializable; )
+public class java.util.concurrent.atomic.AtomicReferenceArray extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final int base
+
+private static final int scale
+
+private static final long serialVersionUID
+
+private static final sun.misc.Unsafe unsafe
+
+private final java.lang.Object[] array
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int)
+@dalvik.annotation.Signature (value =([TE;)V )
+public void <init>(
+java.lang.Object[])
+
+private long rawIndex(
+int)
+@dalvik.annotation.Signature (value =(ITE;TE;)Z )
+public final boolean compareAndSet(
+int
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(I)TE; )
+public final java.lang.Object get(
+int)
+@dalvik.annotation.Signature (value =(ITE;)TE; )
+public final java.lang.Object getAndSet(
+int
+java.lang.Object)
+
+public final int length()
+@dalvik.annotation.Signature (value =(ITE;)V )
+public final void set(
+int
+java.lang.Object)
+
+public java.lang.String toString()
+@dalvik.annotation.Signature (value =(ITE;TE;)Z )
+public final boolean weakCompareAndSet(
+int
+java.lang.Object
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl; )
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object; )
+public abstract class java.util.concurrent.atomic.AtomicReferenceFieldUpdater extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Signature (value =<U:Ljava/lang/Object;W:Ljava/lang/Object;>(Ljava/lang/Class<TU;>;Ljava/lang/Class<TW;>;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<TU;TW;>; )
+public static java.util.concurrent.atomic.AtomicReferenceFieldUpdater newUpdater(
+java.lang.Class
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Signature (value =(TT;TV;TV;)Z )
+public abstract boolean compareAndSet(
+java.lang.Object
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;)TV; )
+public abstract java.lang.Object get(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;TV;)TV; )
+public java.lang.Object getAndSet(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;TV;)V )
+public abstract void set(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;TV;TV;)Z )
+public abstract boolean weakCompareAndSet(
+java.lang.Object
+java.lang.Object
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<TT;TV;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =AtomicReferenceFieldUpdaterImpl )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; )
+ class java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl extends java.util.concurrent.atomic.AtomicReferenceFieldUpdater
+
+----------------FIELDS----------------
+
+private static final sun.misc.Unsafe unsafe
+
+private final long offset
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TT;>; )
+private final java.lang.Class tclass
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TV;>; )
+private final java.lang.Class vclass
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<TT;>;Ljava/lang/Class<TV;>;Ljava/lang/String;)V )
+ void <init>(
+java.lang.Class
+java.lang.Class
+java.lang.String)
+@dalvik.annotation.Signature (value =(TT;TV;TV;)Z )
+public boolean compareAndSet(
+java.lang.Object
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;)TV; )
+public java.lang.Object get(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;TV;)V )
+public void set(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(TT;TV;TV;)Z )
+public boolean weakCompareAndSet(
+java.lang.Object
+java.lang.Object
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/atomic/AtomicStampedReference; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =ReferenceIntegerPair )
+ class java.util.concurrent.atomic.AtomicStampedReference$ReferenceIntegerPair extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int integer
+@dalvik.annotation.Signature (value =TT; )
+private final java.lang.Object reference
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TT;I)V )
+ void <init>(
+java.lang.Object
+int)
+
+static java.lang.Object access$000(
+java.util.concurrent.atomic.AtomicStampedReference$ReferenceIntegerPair)
+
+static int access$100(
+java.util.concurrent.atomic.AtomicStampedReference$ReferenceIntegerPair)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/atomic/AtomicStampedReference$ReferenceIntegerPair; )
+@dalvik.annotation.Signature (value =<V:Ljava/lang/Object;>Ljava/lang/Object; )
+public class java.util.concurrent.atomic.AtomicStampedReference extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/concurrent/atomic/AtomicReference<Ljava/util/concurrent/atomic/AtomicStampedReference$ReferenceIntegerPair<TV;>;>; )
+private final java.util.concurrent.atomic.AtomicReference atomicRef
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TV;I)V )
+public void <init>(
+java.lang.Object
+int)
+@dalvik.annotation.Signature (value =(TV;I)Z )
+public boolean attemptStamp(
+java.lang.Object
+int)
+@dalvik.annotation.Signature (value =(TV;TV;II)Z )
+public boolean compareAndSet(
+java.lang.Object
+java.lang.Object
+int
+int)
+@dalvik.annotation.Signature (value =([I)TV; )
+public java.lang.Object get(
+int[])
+@dalvik.annotation.Signature (value =()TV; )
+public java.lang.Object getReference()
+
+public int getStamp()
+@dalvik.annotation.Signature (value =(TV;I)V )
+public void set(
+java.lang.Object
+int)
+@dalvik.annotation.Signature (value =(TV;TV;II)Z )
+public boolean weakCompareAndSet(
+java.lang.Object
+java.lang.Object
+int
+int)
+
+________________CLASS________________
+
+
+final class java.util.concurrent.atomic.UnsafeAccess extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final sun.misc.Unsafe THE_ONE
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+
+public abstract interface class java.util.concurrent.locks.Condition extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public abstract void await()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public abstract boolean await(
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public abstract long awaitNanos(
+long)
+
+public abstract void awaitUninterruptibly()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public abstract boolean awaitUntil(
+java.util.Date)
+
+public abstract void signal()
+
+public abstract void signalAll()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/locks/AbstractQueuedSynchronizer; )
+@dalvik.annotation.InnerClass (accessFlags =1 name =ConditionObject )
+public class java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject extends java.lang.Object implements java.util.concurrent.locks.Condition, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final int REINTERRUPT
+
+private static final int THROW_IE
+
+private static final long serialVersionUID
+
+private transient java.util.concurrent.locks.AbstractQueuedSynchronizer$Node firstWaiter
+
+private transient java.util.concurrent.locks.AbstractQueuedSynchronizer$Node lastWaiter
+
+final java.util.concurrent.locks.AbstractQueuedSynchronizer this$0
+----------------METHODS----------------
+
+public void <init>(
+java.util.concurrent.locks.AbstractQueuedSynchronizer)
+
+private java.util.concurrent.locks.AbstractQueuedSynchronizer$Node addConditionWaiter()
+
+private int checkInterruptWhileWaiting(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node)
+
+private void doSignal(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node)
+
+private void doSignalAll(
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+private void reportInterruptAfterWait(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public final void await()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public final boolean await(
+long
+java.util.concurrent.TimeUnit)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public final long awaitNanos(
+long)
+
+public final void awaitUninterruptibly()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public final boolean awaitUntil(
+java.util.Date)
+
+protected final int getWaitQueueLength()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljava/lang/Thread;>; )
+protected final java.util.Collection getWaitingThreads()
+
+protected final boolean hasWaiters()
+
+final boolean isOwnedBy(
+java.util.concurrent.locks.AbstractQueuedSynchronizer)
+
+public final void signal()
+
+public final void signalAll()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =Node )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/locks/AbstractQueuedSynchronizer; )
+final class java.util.concurrent.locks.AbstractQueuedSynchronizer$Node extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int CANCELLED
+
+static final int CONDITION
+
+static final java.util.concurrent.locks.AbstractQueuedSynchronizer$Node EXCLUSIVE
+
+static final java.util.concurrent.locks.AbstractQueuedSynchronizer$Node SHARED
+
+static final int SIGNAL
+
+volatile java.util.concurrent.locks.AbstractQueuedSynchronizer$Node next
+
+ java.util.concurrent.locks.AbstractQueuedSynchronizer$Node nextWaiter
+
+volatile java.util.concurrent.locks.AbstractQueuedSynchronizer$Node prev
+
+volatile java.lang.Thread thread
+
+volatile int waitStatus
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+ void <init>(
+java.lang.Thread
+int)
+
+ void <init>(
+java.lang.Thread
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node)
+
+final boolean isShared()
+@dalvik.annotation.Throws (value =Ljava/lang/NullPointerException; )
+final java.util.concurrent.locks.AbstractQueuedSynchronizer$Node predecessor()
+
+________________CLASS________________
+
+
+public class java.util.concurrent.locks.LockSupport extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final sun.misc.Unsafe unsafe
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static void park()
+
+public static void parkNanos(
+long)
+
+public static void parkUntil(
+long)
+
+public static void unpark(
+java.lang.Thread)
+
+________________CLASS________________
+
+
+public abstract interface class java.util.concurrent.locks.ReadWriteLock extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.util.concurrent.locks.Lock readLock()
+
+public abstract java.util.concurrent.locks.Lock writeLock()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/locks/ReentrantLock; )
+@dalvik.annotation.InnerClass (accessFlags =1032 name =Sync )
+abstract class java.util.concurrent.locks.ReentrantLock$Sync extends java.util.concurrent.locks.AbstractQueuedSynchronizer
+
+----------------FIELDS----------------
+
+transient java.lang.Thread owner
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+final int getHoldCount()
+
+final java.lang.Thread getOwner()
+
+protected final boolean isHeldExclusively()
+
+final boolean isLocked()
+
+abstract void lock()
+
+final java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject newCondition()
+
+final boolean nonfairTryAcquire(
+int)
+
+protected final boolean tryRelease(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/locks/ReentrantLock; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =FairSync )
+final class java.util.concurrent.locks.ReentrantLock$FairSync extends java.util.concurrent.locks.ReentrantLock$Sync
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+final void lock()
+
+protected final boolean tryAcquire(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =NonfairSync )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/locks/ReentrantLock; )
+final class java.util.concurrent.locks.ReentrantLock$NonfairSync extends java.util.concurrent.locks.ReentrantLock$Sync
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+final void lock()
+
+protected final boolean tryAcquire(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1032 name =Sync )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/locks/ReentrantReadWriteLock; )
+abstract class java.util.concurrent.locks.ReentrantReadWriteLock$Sync extends java.util.concurrent.locks.AbstractQueuedSynchronizer
+
+----------------FIELDS----------------
+
+transient java.lang.Thread owner
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+final int getCount()
+
+final java.lang.Thread getOwner()
+
+final int getReadLockCount()
+
+final int getWriteHoldCount()
+
+protected final boolean isHeldExclusively()
+
+final boolean isWriteLocked()
+
+final java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject newCondition()
+
+final boolean nonfairTryAcquire(
+int)
+
+final int nonfairTryAcquireShared(
+int)
+
+protected final boolean tryRelease(
+int)
+
+protected final boolean tryReleaseShared(
+int)
+
+abstract void wlock()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =FairSync )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/locks/ReentrantReadWriteLock; )
+final class java.util.concurrent.locks.ReentrantReadWriteLock$FairSync extends java.util.concurrent.locks.ReentrantReadWriteLock$Sync
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+protected final boolean tryAcquire(
+int)
+
+protected final int tryAcquireShared(
+int)
+
+final void wlock()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/locks/ReentrantReadWriteLock; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =NonfairSync )
+final class java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync extends java.util.concurrent.locks.ReentrantReadWriteLock$Sync
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+protected final boolean tryAcquire(
+int)
+
+protected final int tryAcquireShared(
+int)
+
+final void wlock()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/locks/ReentrantReadWriteLock; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =ReadLock )
+public class java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock extends java.lang.Object implements java.util.concurrent.locks.Lock, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final java.util.concurrent.locks.ReentrantReadWriteLock$Sync sync
+----------------METHODS----------------
+
+protected void <init>(
+java.util.concurrent.locks.ReentrantReadWriteLock)
+
+public void lock()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public void lockInterruptibly()
+
+public java.util.concurrent.locks.Condition newCondition()
+
+public java.lang.String toString()
+
+public boolean tryLock()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public boolean tryLock(
+long
+java.util.concurrent.TimeUnit)
+
+public void unlock()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/concurrent/locks/ReentrantReadWriteLock; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =WriteLock )
+public class java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock extends java.lang.Object implements java.util.concurrent.locks.Lock, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final java.util.concurrent.locks.ReentrantReadWriteLock$Sync sync
+----------------METHODS----------------
+
+protected void <init>(
+java.util.concurrent.locks.ReentrantReadWriteLock)
+
+public void lock()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public void lockInterruptibly()
+
+public java.util.concurrent.locks.Condition newCondition()
+
+public java.lang.String toString()
+
+public boolean tryLock()
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+public boolean tryLock(
+long
+java.util.concurrent.TimeUnit)
+
+public void unlock()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync; )
+public class java.util.concurrent.locks.ReentrantReadWriteLock extends java.lang.Object implements java.util.concurrent.locks.ReadWriteLock, java.io.Serializable
+
+----------------FIELDS----------------
+
+static final int EXCLUSIVE_MASK
+
+static final int SHARED_SHIFT
+
+static final int SHARED_UNIT
+
+private static final long serialVersionUID
+
+private final java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock readerLock
+
+private final java.util.concurrent.locks.ReentrantReadWriteLock$Sync sync
+
+private final java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writerLock
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+boolean)
+
+static java.util.concurrent.locks.ReentrantReadWriteLock$Sync access$000(
+java.util.concurrent.locks.ReentrantReadWriteLock)
+
+static int exclusiveCount(
+int)
+
+static int sharedCount(
+int)
+
+protected java.lang.Thread getOwner()
+
+public final int getQueueLength()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljava/lang/Thread;>; )
+protected java.util.Collection getQueuedReaderThreads()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljava/lang/Thread;>; )
+protected java.util.Collection getQueuedThreads()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljava/lang/Thread;>; )
+protected java.util.Collection getQueuedWriterThreads()
+
+public int getReadLockCount()
+
+public int getWaitQueueLength(
+java.util.concurrent.locks.Condition)
+@dalvik.annotation.Signature (value =(Ljava/util/concurrent/locks/Condition;)Ljava/util/Collection<Ljava/lang/Thread;>; )
+protected java.util.Collection getWaitingThreads(
+java.util.concurrent.locks.Condition)
+
+public int getWriteHoldCount()
+
+public final boolean hasQueuedThread(
+java.lang.Thread)
+
+public final boolean hasQueuedThreads()
+
+public boolean hasWaiters(
+java.util.concurrent.locks.Condition)
+
+public final boolean isFair()
+
+public boolean isWriteLocked()
+
+public boolean isWriteLockedByCurrentThread()
+
+public volatile java.util.concurrent.locks.Lock readLock()
+
+public java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock readLock()
+
+public java.lang.String toString()
+
+public volatile java.util.concurrent.locks.Lock writeLock()
+
+public java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock writeLock()
+
+________________CLASS________________
+
+
+final class java.util.concurrent.locks.UnsafeAccess extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final sun.misc.Unsafe THE_ONE
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/jar/Attributes; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Name )
+public class java.util.jar.Attributes$Name extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.util.jar.Attributes$Name CLASS_PATH
+
+public static final java.util.jar.Attributes$Name CONTENT_TYPE
+
+public static final java.util.jar.Attributes$Name EXTENSION_INSTALLATION
+
+public static final java.util.jar.Attributes$Name EXTENSION_LIST
+
+public static final java.util.jar.Attributes$Name EXTENSION_NAME
+
+public static final java.util.jar.Attributes$Name IMPLEMENTATION_TITLE
+
+public static final java.util.jar.Attributes$Name IMPLEMENTATION_URL
+
+public static final java.util.jar.Attributes$Name IMPLEMENTATION_VENDOR
+
+public static final java.util.jar.Attributes$Name IMPLEMENTATION_VENDOR_ID
+
+public static final java.util.jar.Attributes$Name IMPLEMENTATION_VERSION
+
+public static final java.util.jar.Attributes$Name MAIN_CLASS
+
+public static final java.util.jar.Attributes$Name MANIFEST_VERSION
+
+public static final java.util.jar.Attributes$Name SEALED
+
+public static final java.util.jar.Attributes$Name SIGNATURE_VERSION
+
+public static final java.util.jar.Attributes$Name SPECIFICATION_TITLE
+
+public static final java.util.jar.Attributes$Name SPECIFICATION_VENDOR
+
+public static final java.util.jar.Attributes$Name SPECIFICATION_VERSION
+
+private int hashCode
+
+private final java.lang.String name
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/lang/Cloneable;Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>; )
+@dalvik.annotation.MemberClasses (value =Ljava/util/jar/Attributes$Name; )
+public class java.util.jar.Attributes extends java.lang.Object implements java.lang.Cloneable, java.util.Map
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>; )
+protected java.util.Map map
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+java.util.jar.Attributes)
+
+public void clear()
+
+public java.lang.Object clone()
+
+public boolean containsKey(
+java.lang.Object)
+
+public boolean containsValue(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<Ljava/lang/Object;Ljava/lang/Object;>;>; )
+public java.util.Set entrySet()
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.Object get(
+java.lang.Object)
+
+public java.lang.String getValue(
+java.lang.String)
+
+public java.lang.String getValue(
+java.util.jar.Attributes$Name)
+
+public int hashCode()
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/Object;>; )
+public java.util.Set keySet()
+
+public java.lang.Object put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<**>;)V )
+public void putAll(
+java.util.Map)
+
+public java.lang.String putValue(
+java.lang.String
+java.lang.String)
+
+public java.lang.Object remove(
+java.lang.Object)
+
+public int size()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljava/lang/Object;>; )
+public java.util.Collection values()
+
+________________CLASS________________
+
+
+ class java.util.jar.InitManifest extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/util/jar/Attributes$Name;>; )
+private final java.util.Map attributeNames
+
+private byte[] buffer
+
+private char[] charbuf
+
+private java.lang.String encoding
+
+private final byte[] inbuf
+
+private int inbufCount
+
+private int inbufPos
+
+private final byte[] mainAttributesChunk
+
+private final java.io.ByteArrayOutputStream out
+
+private boolean usingUTF8
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/io/InputStream;Ljava/util/jar/Attributes;Ljava/util/Map<Ljava/lang/String;Ljava/util/jar/Attributes;>;Ljava/util/Map<Ljava/lang/String;[B>;Ljava/lang/String;)V )
+ void <init>(
+java.io.InputStream
+java.util.jar.Attributes
+java.util.Map
+java.util.Map
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void addAttribute(
+java.lang.String
+java.util.jar.Attributes)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(ILjava/util/List<Ljava/lang/String;>;)V )
+private void addLine(
+int
+java.util.List)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/io/InputStream;Ljava/util/List<Ljava/lang/String;>;)[B )
+private byte[] nextChunk(
+java.io.InputStream
+java.util.List)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+@dalvik.annotation.Signature (value =(Ljava/io/InputStream;Ljava/util/List<Ljava/lang/String;>;)Z )
+private boolean readLines(
+java.io.InputStream
+java.util.List)
+
+ byte[] getMainAttributesChunk()
+
+________________CLASS________________
+
+
+abstract interface class java.util.zip.ZipConstants extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CENATT
+
+public static final int CENATX
+
+public static final int CENCOM
+
+public static final int CENCRC
+
+public static final int CENDSK
+
+public static final int CENEXT
+
+public static final int CENFLG
+
+public static final int CENHDR
+
+public static final int CENHOW
+
+public static final int CENLEN
+
+public static final int CENNAM
+
+public static final int CENOFF
+
+public static final long CENSIG
+
+public static final int CENSIZ
+
+public static final int CENTIM
+
+public static final int CENVEM
+
+public static final int CENVER
+
+public static final int ENDCOM
+
+public static final int ENDHDR
+
+public static final int ENDOFF
+
+public static final long ENDSIG
+
+public static final int ENDSIZ
+
+public static final int ENDSUB
+
+public static final int ENDTOT
+
+public static final int EXTCRC
+
+public static final int EXTHDR
+
+public static final int EXTLEN
+
+public static final long EXTSIG
+
+public static final int EXTSIZ
+
+public static final int LOCCRC
+
+public static final int LOCEXT
+
+public static final int LOCFLG
+
+public static final int LOCHDR
+
+public static final int LOCHOW
+
+public static final int LOCLEN
+
+public static final int LOCNAM
+
+public static final long LOCSIG
+
+public static final int LOCSIZ
+
+public static final int LOCTIM
+
+public static final int LOCVER
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/zip/ZipEntry$LittleEndianReader; )
+public class java.util.zip.ZipEntry extends java.lang.Object implements java.util.zip.ZipConstants, java.lang.Cloneable
+
+----------------FIELDS----------------
+
+public static final int DEFLATED
+
+public static final int STORED
+
+static final int USES_DATA_DESCR
+
+ java.lang.String comment
+
+ int commentLen
+
+ long compressedSize
+
+ int compressionMethod
+
+ long crc
+
+ byte[] extra
+
+ int extraLen
+
+private int mDiskNumberStart
+
+private long mExternalAttrs
+
+private int mGPBitFlag
+
+private int mInternalAttrs
+
+ long mLocalHeaderRelOffset
+
+private int mVersionMadeBy
+
+private int mVersionToExtract
+
+ int modDate
+
+ java.lang.String name
+
+ int nameLen
+
+ long size
+
+ int time
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void <init>(
+java.util.zip.ZipEntry$LittleEndianReader
+java.io.InputStream)
+
+public void <init>(
+java.util.zip.ZipEntry)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void myReadFully(
+java.io.InputStream
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static long readIntLE(
+java.io.RandomAccessFile)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static int readShortLE(
+java.io.RandomAccessFile)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static void writeIntLE(
+java.io.OutputStream
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static void writeShortLE(
+java.io.OutputStream
+int)
+
+public java.lang.Object clone()
+
+public java.lang.String getComment()
+
+public long getCompressedSize()
+
+public long getCrc()
+
+public byte[] getExtra()
+
+ int getGPBitFlag()
+
+ long getLocalHeaderRelOffset()
+
+public int getMethod()
+
+public java.lang.String getName()
+
+public long getSize()
+
+public long getTime()
+
+public int hashCode()
+
+public boolean isDirectory()
+
+public void setComment(
+java.lang.String)
+
+public void setCompressedSize(
+long)
+
+public void setCrc(
+long)
+
+ void setDateTime(
+int
+int)
+
+public void setExtra(
+byte[])
+
+ void setGPBitFlag(
+int)
+
+ void setLocalHeaderRelOffset(
+long)
+
+public void setMethod(
+int)
+
+public void setSize(
+long)
+
+public void setTime(
+long)
+
+ void setVersionToExtract(
+int)
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ int writeCDE(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ int writeDD(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ int writeLFH(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public class java.util.jar.JarEntry extends java.util.zip.ZipEntry
+
+----------------FIELDS----------------
+
+private java.util.jar.Attributes attributes
+
+private java.security.cert.CertificateFactory factory
+
+private boolean isFactoryChecked
+
+ java.util.jar.JarFile parentJar
+
+ java.security.CodeSigner[] signers
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.util.jar.JarEntry)
+
+public void <init>(
+java.util.zip.ZipEntry)
+@dalvik.annotation.Signature (value =(Ljava/util/ArrayList<Ljava/security/CodeSigner;>;Ljava/util/List<Ljava/security/cert/Certificate;>;)V )
+private void addCodeSigner(
+java.util.ArrayList
+java.util.List)
+
+private java.security.CodeSigner[] getCodeSigners(
+java.security.cert.Certificate[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.jar.Attributes getAttributes()
+
+public java.security.cert.Certificate[] getCertificates()
+
+public java.security.CodeSigner[] getCodeSigners()
+
+ void setAttributes(
+java.util.jar.Attributes)
+
+________________CLASS________________
+
+
+public class java.util.zip.ZipException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.util.jar.JarException extends java.util.zip.ZipException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Enumeration<Ljava/util/jar/JarEntry;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =JarFileEnumerator )
+ class java.util.jar.JarFile$1JarFileEnumerator extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+
+ java.util.jar.JarFile jf
+
+final java.util.jar.JarFile this$0
+@dalvik.annotation.Signature (value =Ljava/util/Enumeration<+Ljava/util/zip/ZipEntry;>; )
+ java.util.Enumeration ze
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Enumeration<+Ljava/util/zip/ZipEntry;>;Ljava/util/jar/JarFile;)V )
+ void <init>(
+java.util.jar.JarFile
+java.util.Enumeration
+java.util.jar.JarFile)
+
+public boolean hasMoreElements()
+
+public volatile java.lang.Object nextElement()
+
+public java.util.jar.JarEntry nextElement()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =JarFileInputStream )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/jar/JarFile; )
+final class java.util.jar.JarFile$JarFileInputStream extends java.io.FilterInputStream
+
+----------------FIELDS----------------
+
+private long count
+
+private java.security.MessageDigest digest
+
+private java.util.jar.JarVerifier$VerifierEntry entry
+
+private java.util.jar.JarVerifier verifier
+
+private java.util.zip.ZipEntry zipEntry
+----------------METHODS----------------
+
+ void <init>(
+java.io.InputStream
+java.util.zip.ZipEntry
+java.util.jar.JarVerifier)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/zip/ZipFile$RAFStream; )
+public class java.util.zip.ZipFile extends java.lang.Object implements java.util.zip.ZipConstants
+
+----------------FIELDS----------------
+
+public static final int OPEN_DELETE
+
+public static final int OPEN_READ
+
+ java.lang.String fileName
+
+ java.io.File fileToDeleteOnClose
+
+ java.util.zip.ZipEntry$LittleEndianReader ler
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/util/zip/ZipEntry;>; )
+private java.util.ArrayList mEntryList
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/util/zip/ZipEntry;>; )
+private java.util.HashMap mFastLookup
+
+private java.io.RandomAccessFile mRaf
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/util/zip/ZipException;Ljava/io/IOException; )
+public void <init>(
+java.io.File)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.File
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.lang.String)
+
+static java.io.RandomAccessFile access$000(
+java.util.zip.ZipFile)
+
+static java.util.ArrayList access$100(
+java.util.zip.ZipFile)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void readCentralDir()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<+Ljava/util/zip/ZipEntry;>; )
+public java.util.Enumeration entries()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void finalize()
+
+public java.util.zip.ZipEntry getEntry(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getInputStream(
+java.util.zip.ZipEntry)
+
+public java.lang.String getName()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/jar/JarFile$JarFileInputStream; )
+public class java.util.jar.JarFile extends java.util.zip.ZipFile
+
+----------------FIELDS----------------
+
+public static final java.lang.String MANIFEST_NAME
+
+static final java.lang.String META_DIR
+
+private boolean closed
+
+private java.util.jar.Manifest manifest
+
+private java.util.zip.ZipEntry manifestEntry
+
+ java.util.jar.JarVerifier verifier
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.File)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.File
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.File
+boolean
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private byte[] getAllBytesFromStreamAndClose(
+java.io.InputStream)
+
+private java.util.zip.ZipEntry[] getMetaEntriesImpl(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void readMetaEntries()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/util/jar/JarEntry;>; )
+public java.util.Enumeration entries()
+
+public java.util.zip.ZipEntry getEntry(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getInputStream(
+java.util.zip.ZipEntry)
+
+public java.util.jar.JarEntry getJarEntry(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.jar.Manifest getManifest()
+
+________________CLASS________________
+
+
+public class java.util.zip.InflaterInputStream extends java.io.FilterInputStream
+
+----------------FIELDS----------------
+
+static final int BUF_SIZE
+
+protected byte[] buf
+
+ boolean closed
+
+ boolean eof
+
+protected java.util.zip.Inflater inf
+
+protected int len
+
+ int nativeEndBufSize
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream)
+
+public void <init>(
+java.io.InputStream
+java.util.zip.Inflater)
+
+public void <init>(
+java.io.InputStream
+java.util.zip.Inflater
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void fill()
+
+public void mark(
+int)
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class java.util.zip.ZipInputStream extends java.util.zip.InflaterInputStream implements java.util.zip.ZipConstants
+
+----------------FIELDS----------------
+
+static final int DEFLATED
+
+static final int STORED
+
+static final int ZIPDataDescriptorFlag
+
+static final int ZIPLocalHeaderVersionNeeded
+
+private char[] charBuf
+
+private final java.util.zip.CRC32 crc
+
+ java.util.zip.ZipEntry currentEntry
+
+private boolean entriesEnd
+
+private int entryIn
+
+private boolean hasDD
+
+private final byte[] hdrBuf
+
+private int inRead
+
+private int lastRead
+
+private byte[] nameBuf
+
+private boolean zipClosed
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream)
+
+private long getLong(
+byte[]
+int)
+
+private int getShort(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void closeEntry()
+
+protected java.util.zip.ZipEntry createZipEntry(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.zip.ZipEntry getNextEntry()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class java.util.jar.JarInputStream extends java.util.zip.ZipInputStream
+
+----------------FIELDS----------------
+
+private boolean eos
+
+private boolean isMeta
+
+private java.util.jar.JarEntry jarEntry
+
+private java.util.jar.JarEntry mEntry
+
+private java.util.jar.Manifest manifest
+
+private java.io.OutputStream verStream
+
+private java.util.jar.JarVerifier verifier
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.InputStream
+boolean)
+
+protected java.util.zip.ZipEntry createZipEntry(
+java.lang.String)
+
+public java.util.jar.Manifest getManifest()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.zip.ZipEntry getNextEntry()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.jar.JarEntry getNextJarEntry()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.util.zip.DeflaterOutputStream extends java.io.FilterOutputStream
+
+----------------FIELDS----------------
+
+static final int BUF_SIZE
+
+protected byte[] buf
+
+protected java.util.zip.Deflater def
+
+ boolean done
+----------------METHODS----------------
+
+public void <init>(
+java.io.OutputStream)
+
+public void <init>(
+java.io.OutputStream
+java.util.zip.Deflater)
+
+public void <init>(
+java.io.OutputStream
+java.util.zip.Deflater
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void deflate()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void finish()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.util.zip.ZipOutputStream extends java.util.zip.DeflaterOutputStream implements java.util.zip.ZipConstants
+
+----------------FIELDS----------------
+
+public static final int DEFLATED
+
+public static final int STORED
+
+static final int ZIPDataDescriptorFlag
+
+static final int ZIPLocalHeaderVersionNeeded
+
+private java.io.ByteArrayOutputStream cDir
+
+private java.lang.String comment
+
+private int compressLevel
+
+private int compressMethod
+
+private final java.util.zip.CRC32 crc
+
+private int curOffset
+
+private java.util.zip.ZipEntry currentEntry
+@dalvik.annotation.Signature (value =Ljava/util/Vector<Ljava/lang/String;>; )
+private final java.util.Vector entries
+
+private byte[] nameBytes
+
+private int nameLength
+
+private int offset
+----------------METHODS----------------
+
+public void <init>(
+java.io.OutputStream)
+
+static byte[] toUTF8Bytes(
+java.lang.String
+int)
+
+static int utf8Count(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private long writeLong(
+java.io.OutputStream
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int writeShort(
+java.io.OutputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void closeEntry()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void finish()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void putNextEntry(
+java.util.zip.ZipEntry)
+
+public void setComment(
+java.lang.String)
+
+public void setLevel(
+int)
+
+public void setMethod(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.util.jar.JarOutputStream extends java.util.zip.ZipOutputStream
+
+----------------FIELDS----------------
+
+private java.util.jar.Manifest manifest
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.OutputStream
+java.util.jar.Manifest)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void putNextEntry(
+java.util.zip.ZipEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/jar/JarVerifier; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =VerifierEntry )
+ class java.util.jar.JarVerifier$VerifierEntry extends java.io.OutputStream
+
+----------------FIELDS----------------
+
+ java.security.cert.Certificate[] certificates
+
+ java.security.MessageDigest digest
+
+ byte[] hash
+----------------METHODS----------------
+
+ void <init>(
+java.security.MessageDigest
+byte[]
+java.security.cert.Certificate[])
+
+public void write(
+int)
+
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/jar/JarVerifier$VerifierEntry; )
+ class java.util.jar.JarVerifier extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static long averageTime
+
+private static long measureCount
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable<Ljava/lang/String;[Ljava/security/cert/Certificate;>; )
+private final java.util.Hashtable certificates
+
+private final java.lang.String jarName
+
+ byte[] mainAttributesChunk
+
+private java.util.jar.Manifest man
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;[B>; )
+private java.util.HashMap metaEntries
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable<Ljava/lang/String;Ljava/util/HashMap<Ljava/lang/String;Ljava/util/jar/Attributes;>;>; )
+private final java.util.Hashtable signatures
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable<Ljava/lang/String;[Ljava/security/cert/Certificate;>; )
+private final java.util.Hashtable verifiedEntries
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;[Ljava/security/cert/Certificate;>;)Ljava/util/Vector<Ljava/security/cert/Certificate;>; )
+public static java.util.Vector getSignerCertificates(
+java.lang.String
+java.util.Map)
+
+private static void log(
+java.lang.String
+java.lang.String)
+
+private boolean verify(
+java.util.jar.Attributes
+java.lang.String
+byte[]
+boolean
+boolean)
+
+private void verifyCertificate(
+java.lang.String)
+
+ void addMetaEntry(
+java.lang.String
+byte[])
+
+ java.security.cert.Certificate[] getCertificates(
+java.lang.String)
+
+ java.util.jar.JarVerifier$VerifierEntry initEntry(
+java.lang.String)
+
+ boolean isSignedJar()
+
+ boolean readCertificates()
+
+ void removeMetaEntries()
+
+ void setManifest(
+java.util.jar.Manifest)
+
+ void verifySignatures(
+java.util.jar.JarVerifier$VerifierEntry
+java.util.zip.ZipEntry)
+
+________________CLASS________________
+
+
+public class java.util.jar.Manifest extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private static final int LINE_LENGTH_LIMIT
+
+private static final byte[] LINE_SEPARATOR
+
+private static final java.util.jar.Attributes$Name NAME_ATTRIBUTE
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;[B>; )
+private java.util.HashMap chunks
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/util/jar/Attributes;>; )
+private java.util.HashMap entryAttributes
+
+private java.util.jar.Attributes mainAttributes
+
+private byte[] mainAttributesChunk
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void <init>(
+java.io.InputStream
+boolean)
+
+public void <init>(
+java.util.jar.Manifest)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static void write(
+java.util.jar.Manifest
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void writeEntry(
+java.io.OutputStream
+java.nio.charset.Charset
+java.util.jar.Attributes$Name
+java.lang.String)
+
+public void clear()
+
+public java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public java.util.jar.Attributes getAttributes(
+java.lang.String)
+
+ byte[] getChunk(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Ljava/util/jar/Attributes;>; )
+public java.util.Map getEntries()
+
+public java.util.jar.Attributes getMainAttributes()
+
+ byte[] getMainAttributesChunk()
+
+public int hashCode()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void read(
+java.io.InputStream)
+
+ void removeChunks()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+java.io.OutputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Object;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class java.util.jar.Pack200$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Object;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class java.util.jar.Pack200$2 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Packer )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/jar/Pack200; )
+public abstract interface class java.util.jar.Pack200$Packer extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String CLASS_ATTRIBUTE_PFX
+
+public static final java.lang.String CODE_ATTRIBUTE_PFX
+
+public static final java.lang.String DEFLATE_HINT
+
+public static final java.lang.String EFFORT
+
+public static final java.lang.String ERROR
+
+public static final java.lang.String FALSE
+
+public static final java.lang.String FIELD_ATTRIBUTE_PFX
+
+public static final java.lang.String KEEP
+
+public static final java.lang.String KEEP_FILE_ORDER
+
+public static final java.lang.String LATEST
+
+public static final java.lang.String METHOD_ATTRIBUTE_PFX
+
+public static final java.lang.String MODIFICATION_TIME
+
+public static final java.lang.String PASS
+
+public static final java.lang.String PASS_FILE_PFX
+
+public static final java.lang.String PROGRESS
+
+public static final java.lang.String SEGMENT_LIMIT
+
+public static final java.lang.String STRIP
+
+public static final java.lang.String TRUE
+
+public static final java.lang.String UNKNOWN_ATTRIBUTE
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void pack(
+java.util.jar.JarFile
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void pack(
+java.util.jar.JarInputStream
+java.io.OutputStream)
+@dalvik.annotation.Signature (value =()Ljava/util/SortedMap<Ljava/lang/String;Ljava/lang/String;>; )
+public abstract java.util.SortedMap properties()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/jar/Pack200; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Unpacker )
+public abstract interface class java.util.jar.Pack200$Unpacker extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String DEFLATE_HINT
+
+public static final java.lang.String FALSE
+
+public static final java.lang.String KEEP
+
+public static final java.lang.String PROGRESS
+
+public static final java.lang.String TRUE
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =()Ljava/util/SortedMap<Ljava/lang/String;Ljava/lang/String;>; )
+public abstract java.util.SortedMap properties()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void unpack(
+java.io.File
+java.util.jar.JarOutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void unpack(
+java.io.InputStream
+java.util.jar.JarOutputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/jar/Pack200$Unpacker;Ljava/util/jar/Pack200$Packer; )
+public abstract class java.util.jar.Pack200 extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String SYSTEM_PROPERTY_PACKER
+
+private static final java.lang.String SYSTEM_PROPERTY_UNPACKER
+----------------METHODS----------------
+
+private void <init>()
+
+public static java.util.jar.Pack200$Packer newPacker()
+
+public static java.util.jar.Pack200$Unpacker newUnpacker()
+
+________________CLASS________________
+
+
+public abstract class java.util.logging.Handler extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.util.logging.Level DEFAULT_LEVEL
+
+private java.lang.String encoding
+
+private java.util.logging.ErrorManager errorMan
+
+private java.util.logging.Filter filter
+
+private java.util.logging.Formatter formatter
+
+private java.util.logging.Level level
+
+private java.lang.String prefix
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+private java.lang.Object getCustomizeInstance(
+java.lang.String)
+
+private java.lang.Object getDefaultInstance(
+java.lang.String)
+
+public abstract void close()
+
+public abstract void flush()
+
+public java.lang.String getEncoding()
+
+public java.util.logging.ErrorManager getErrorManager()
+
+public java.util.logging.Filter getFilter()
+
+public java.util.logging.Formatter getFormatter()
+
+public java.util.logging.Level getLevel()
+
+ void initProperties(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+ void internalSetEncoding(
+java.lang.String)
+
+ void internalSetFormatter(
+java.util.logging.Formatter)
+
+public boolean isLoggable(
+java.util.logging.LogRecord)
+
+ void printInvalidPropMessage(
+java.lang.String
+java.lang.String
+java.lang.Exception)
+
+public abstract void publish(
+java.util.logging.LogRecord)
+
+protected void reportError(
+java.lang.String
+java.lang.Exception
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/io/UnsupportedEncodingException; )
+public void setEncoding(
+java.lang.String)
+
+public void setErrorManager(
+java.util.logging.ErrorManager)
+
+public void setFilter(
+java.util.logging.Filter)
+
+public void setFormatter(
+java.util.logging.Formatter)
+
+public void setLevel(
+java.util.logging.Level)
+
+________________CLASS________________
+
+
+public class java.util.logging.StreamHandler extends java.util.logging.Handler
+
+----------------FIELDS----------------
+
+private java.io.OutputStream os
+
+private java.io.Writer writer
+
+private boolean writerNotInitialized
+----------------METHODS----------------
+
+public void <init>()
+
+ void <init>(
+java.io.OutputStream)
+
+public void <init>(
+java.io.OutputStream
+java.util.logging.Formatter)
+
+ void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private void initializeWritter()
+
+private void write(
+java.lang.String)
+
+public void close()
+
+ void close(
+boolean)
+
+public void flush()
+
+ void internalSetOutputStream(
+java.io.OutputStream)
+
+public boolean isLoggable(
+java.util.logging.LogRecord)
+
+public void publish(
+java.util.logging.LogRecord)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/io/UnsupportedEncodingException; )
+public void setEncoding(
+java.lang.String)
+
+protected void setOutputStream(
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public class java.util.logging.ConsoleHandler extends java.util.logging.StreamHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void close()
+
+public void publish(
+java.util.logging.LogRecord)
+
+________________CLASS________________
+
+
+public class java.util.logging.ErrorManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CLOSE_FAILURE
+
+private static final java.lang.String[] FAILURES
+
+public static final int FLUSH_FAILURE
+
+public static final int FORMAT_FAILURE
+
+public static final int GENERIC_FAILURE
+
+public static final int OPEN_FAILURE
+
+public static final int WRITE_FAILURE
+
+private boolean called
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void error(
+java.lang.String
+java.lang.Exception
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Object;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.logging.FileHandler$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.util.logging.FileHandler this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.logging.FileHandler)
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =MeasureOutputStream )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/logging/FileHandler; )
+ class java.util.logging.FileHandler$MeasureOutputStream extends java.io.OutputStream
+
+----------------FIELDS----------------
+
+ long length
+
+ java.io.OutputStream wrapped
+----------------METHODS----------------
+
+public void <init>(
+java.io.OutputStream)
+
+public void <init>(
+java.io.OutputStream
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+
+public long getLength()
+
+public void setLength(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/logging/FileHandler$MeasureOutputStream; )
+public class java.util.logging.FileHandler extends java.util.logging.StreamHandler
+
+----------------FIELDS----------------
+
+private static final boolean DEFAULT_APPEND
+
+private static final int DEFAULT_COUNT
+
+private static final int DEFAULT_LIMIT
+
+private static final java.lang.String DEFAULT_PATTERN
+
+private static final java.lang.String LCK_EXT
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable<Ljava/lang/String;Ljava/nio/channels/FileLock;>; )
+private static final java.util.Hashtable allLocks
+
+private boolean append
+
+private int count
+
+ java.lang.String fileName
+
+private java.io.File[] files
+
+private int limit
+
+ java.nio.channels.FileLock lock
+
+private java.util.logging.LogManager manager
+
+private java.util.logging.FileHandler$MeasureOutputStream output
+
+private java.lang.String pattern
+
+ int uniqueID
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.lang.String
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.lang.String
+boolean)
+
+private boolean getBooleanProperty(
+java.lang.String
+boolean)
+
+private int getIntProperty(
+java.lang.String
+int)
+
+private java.lang.String getStringProperty(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void init(
+java.lang.String
+java.lang.Boolean
+java.lang.Integer
+java.lang.Integer)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException;Ljava/io/IOException; )
+private void initOutputFiles()
+
+private void initProperties(
+java.lang.String
+java.lang.Boolean
+java.lang.Integer
+java.lang.Integer)
+
+private java.lang.String parseFileName(
+int)
+
+public void close()
+
+ void findNextGeneration()
+
+public void publish(
+java.util.logging.LogRecord)
+
+________________CLASS________________
+
+
+public abstract interface class java.util.logging.Filter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean isLoggable(
+java.util.logging.LogRecord)
+
+________________CLASS________________
+
+
+public abstract class java.util.logging.Formatter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+
+public abstract java.lang.String format(
+java.util.logging.LogRecord)
+
+public java.lang.String formatMessage(
+java.util.logging.LogRecord)
+
+public java.lang.String getHead(
+java.util.logging.Handler)
+
+public java.lang.String getTail(
+java.util.logging.Handler)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Ljava/lang/Class<*>;>; )
+ class java.util.logging.Handler$1 extends java.lang.Object implements java.security.PrivilegedExceptionAction
+
+----------------FIELDS----------------
+
+final java.util.logging.Handler this$0
+
+final java.lang.String val$className
+----------------METHODS----------------
+
+ void <init>(
+java.util.logging.Handler
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<*>; )
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public java.lang.Class run()
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+
+public class java.util.logging.Level extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+public static final java.util.logging.Level ALL
+
+public static final java.util.logging.Level CONFIG
+
+public static final java.util.logging.Level FINE
+
+public static final java.util.logging.Level FINER
+
+public static final java.util.logging.Level FINEST
+
+public static final java.util.logging.Level INFO
+
+public static final java.util.logging.Level OFF
+
+public static final java.util.logging.Level SEVERE
+
+public static final java.util.logging.Level WARNING
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/util/logging/Level;>; )
+private static final java.util.List levels
+
+private static final long serialVersionUID
+
+private final java.lang.String name
+
+private transient java.util.ResourceBundle rb
+
+private final java.lang.String resourceBundleName
+
+private final int value
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.lang.String
+int)
+
+protected void <init>(
+java.lang.String
+int
+java.lang.String)
+
+public static final java.util.logging.Level parse(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+private java.lang.Object readResolve()
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getLocalizedName()
+
+public java.lang.String getName()
+
+public java.lang.String getResourceBundleName()
+
+public int hashCode()
+
+public final int intValue()
+
+public final java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Object;>; )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/logging/LogManager; )
+final class java.util.logging.LogManager$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.logging.LogManager$2$1 extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final java.util.logging.LogManager$2 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.logging.LogManager$2)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Void;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.logging.LogManager$2 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.util.logging.LogManager this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.logging.LogManager)
+
+public volatile java.lang.Object run()
+
+public java.lang.Void run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class java.util.logging.LogManager$3 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.lang.String val$key
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+
+public class java.util.logging.LogManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String LOGGING_MXBEAN_NAME
+
+private static final java.lang.String lineSeparator
+
+static java.util.logging.LogManager manager
+
+private static final java.util.logging.LoggingPermission perm
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable<Ljava/lang/String;Ljava/util/logging/Logger;>; )
+private java.util.Hashtable loggers
+
+private java.util.Properties props
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>()
+
+private void addToFamilyTree(
+java.util.logging.Logger
+java.lang.String)
+
+static java.lang.Object getInstanceByClass(
+java.lang.String)
+
+public static java.util.logging.LogManager getLogManager()
+
+static java.lang.String getPrivilegedSystemProperty(
+java.lang.String)
+
+static java.lang.String getSystemLineSeparator()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void readConfigurationImpl(
+java.io.InputStream)
+
+public boolean addLogger(
+java.util.logging.Logger)
+
+public void checkAccess()
+
+public java.util.logging.Logger getLogger(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<Ljava/lang/String;>; )
+public java.util.Enumeration getLoggerNames()
+
+public java.lang.String getProperty(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readConfiguration()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readConfiguration(
+java.io.InputStream)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class java.util.logging.LogRecord extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final int MAJOR
+
+private static final int MINOR
+
+private static long currentSequenceNumber
+@dalvik.annotation.Signature (value =Ljava/lang/ThreadLocal<Ljava/lang/Integer;>; )
+private static java.lang.ThreadLocal currentThreadId
+
+private static int initThreadId
+
+private static final long serialVersionUID
+
+private java.util.logging.Level level
+
+private java.lang.String loggerName
+
+private java.lang.String message
+
+private long millis
+
+private transient java.lang.Object[] parameters
+
+private transient java.util.ResourceBundle resourceBundle
+
+private java.lang.String resourceBundleName
+
+private long sequenceNumber
+
+private java.lang.String sourceClassName
+
+private transient boolean sourceInited
+
+private java.lang.String sourceMethodName
+
+private int threadID
+
+private java.lang.Throwable thrown
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.util.logging.Level
+java.lang.String)
+
+private void initSource()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public java.util.logging.Level getLevel()
+
+public java.lang.String getLoggerName()
+
+public java.lang.String getMessage()
+
+public long getMillis()
+
+public java.lang.Object[] getParameters()
+
+public java.util.ResourceBundle getResourceBundle()
+
+public java.lang.String getResourceBundleName()
+
+public long getSequenceNumber()
+
+public java.lang.String getSourceClassName()
+
+public java.lang.String getSourceMethodName()
+
+public int getThreadID()
+
+public java.lang.Throwable getThrown()
+
+public void setLevel(
+java.util.logging.Level)
+
+public void setLoggerName(
+java.lang.String)
+
+public void setMessage(
+java.lang.String)
+
+public void setMillis(
+long)
+
+public void setParameters(
+java.lang.Object[])
+
+public void setResourceBundle(
+java.util.ResourceBundle)
+
+public void setResourceBundleName(
+java.lang.String)
+
+public void setSequenceNumber(
+long)
+
+public void setSourceClassName(
+java.lang.String)
+
+public void setSourceMethodName(
+java.lang.String)
+
+public void setThreadID(
+int)
+
+public void setThrown(
+java.lang.Throwable)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/ClassLoader;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class java.util.logging.Logger$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.ClassLoader run()
+
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/ClassLoader;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class java.util.logging.Logger$2 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.ClassLoader run()
+
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<[Ljava/lang/Class<*>;>; )
+final class java.util.logging.Logger$3 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object run()
+@dalvik.annotation.Signature (value =()[Ljava/lang/Class<*>; )
+public java.lang.Class[] run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/ClassLoader;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class java.util.logging.Logger$4 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.lang.Class[] val$classes
+
+final int val$index
+----------------METHODS----------------
+
+ void <init>(
+java.lang.Class[]
+int)
+
+public java.lang.ClassLoader run()
+
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =PrivateSecurityManager )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/logging/Logger; )
+ class java.util.logging.Logger$PrivateSecurityManager extends java.lang.SecurityManager
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Signature (value =()[Ljava/lang/Class<*>; )
+public java.lang.Class[] privateGetClassContext()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/logging/Logger$PrivateSecurityManager; )
+public class java.util.logging.Logger extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.util.logging.Logger global
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/util/logging/Logger;>; )
+private java.util.List childs
+
+private java.util.logging.Filter filter
+
+private volatile boolean handlerInited
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/util/logging/Handler;>; )
+private java.util.List handlers
+
+private boolean isNamed
+
+private volatile int levelIntVal
+
+private volatile java.util.logging.Level levelObjVal
+
+private java.util.logging.LogManager manager
+
+private volatile java.lang.String name
+
+private boolean notifyParentHandlers
+
+private java.util.logging.Logger parent
+
+private java.util.ResourceBundle resBundle
+
+private java.lang.String resBundleName
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.lang.String
+java.lang.String)
+
+private void forceChildsToInherit()
+
+public static java.util.logging.Logger getAnonymousLogger()
+
+public static java.util.logging.Logger getAnonymousLogger(
+java.lang.String)
+
+public static java.util.logging.Logger getLogger(
+java.lang.String)
+
+public static java.util.logging.Logger getLogger(
+java.lang.String
+java.lang.String)
+
+private static java.util.logging.Logger getLoggerWithRes(
+java.lang.String
+java.lang.String
+boolean)
+
+private void initHandler()
+
+private boolean internalIsLoggable(
+java.util.logging.Level)
+
+static java.util.ResourceBundle loadResourceBundle(
+java.lang.String)
+
+private void setLevelImpl(
+java.util.logging.Level)
+
+private void setResourceBundle(
+java.util.logging.LogRecord)
+
+private static void updateResourceBundle(
+java.util.logging.Logger
+java.lang.String)
+
+final void addChild(
+java.util.logging.Logger)
+
+public void addHandler(
+java.util.logging.Handler)
+
+public void config(
+java.lang.String)
+
+public void entering(
+java.lang.String
+java.lang.String)
+
+public void entering(
+java.lang.String
+java.lang.String
+java.lang.Object)
+
+public void entering(
+java.lang.String
+java.lang.String
+java.lang.Object[])
+
+public void exiting(
+java.lang.String
+java.lang.String)
+
+public void exiting(
+java.lang.String
+java.lang.String
+java.lang.Object)
+
+public void fine(
+java.lang.String)
+
+public void finer(
+java.lang.String)
+
+public void finest(
+java.lang.String)
+
+public java.util.logging.Filter getFilter()
+
+public java.util.logging.Handler[] getHandlers()
+
+public java.util.logging.Level getLevel()
+
+public java.lang.String getName()
+
+public java.util.logging.Logger getParent()
+
+public java.util.ResourceBundle getResourceBundle()
+
+public java.lang.String getResourceBundleName()
+
+public boolean getUseParentHandlers()
+
+public void info(
+java.lang.String)
+
+ void internalSetParent(
+java.util.logging.Logger)
+
+public boolean isLoggable(
+java.util.logging.Level)
+
+public void log(
+java.util.logging.Level
+java.lang.String)
+
+public void log(
+java.util.logging.Level
+java.lang.String
+java.lang.Object)
+
+public void log(
+java.util.logging.Level
+java.lang.String
+java.lang.Throwable)
+
+public void log(
+java.util.logging.Level
+java.lang.String
+java.lang.Object[])
+
+public void log(
+java.util.logging.LogRecord)
+
+public void logp(
+java.util.logging.Level
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public void logp(
+java.util.logging.Level
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.Object)
+
+public void logp(
+java.util.logging.Level
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.Throwable)
+
+public void logp(
+java.util.logging.Level
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.Object[])
+
+public void logrb(
+java.util.logging.Level
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public void logrb(
+java.util.logging.Level
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.Object)
+
+public void logrb(
+java.util.logging.Level
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.Throwable)
+
+public void logrb(
+java.util.logging.Level
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.Object[])
+
+final void removeChild(
+java.util.logging.Logger)
+
+public void removeHandler(
+java.util.logging.Handler)
+
+ void reset()
+
+public void setFilter(
+java.util.logging.Filter)
+
+public void setLevel(
+java.util.logging.Level)
+
+ void setManager(
+java.util.logging.LogManager)
+
+public void setParent(
+java.util.logging.Logger)
+
+public void setUseParentHandlers(
+boolean)
+
+public void severe(
+java.lang.String)
+
+public void throwing(
+java.lang.String
+java.lang.String
+java.lang.Throwable)
+
+public void warning(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class java.util.logging.LoggingMXBean extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getLoggerLevel(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/lang/String;>; )
+public abstract java.util.List getLoggerNames()
+
+public abstract java.lang.String getParentLoggerName(
+java.lang.String)
+
+public abstract void setLoggerLevel(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class java.util.logging.LoggingPermission extends java.security.BasicPermission implements java.security.Guard, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Ljava/lang/Class<*>;>; )
+ class java.util.logging.MemoryHandler$1 extends java.lang.Object implements java.security.PrivilegedExceptionAction
+
+----------------FIELDS----------------
+
+final java.util.logging.MemoryHandler this$0
+
+final java.lang.String val$targetName
+----------------METHODS----------------
+
+ void <init>(
+java.util.logging.MemoryHandler
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/lang/Class<*>; )
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public java.lang.Class run()
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+
+public class java.util.logging.MemoryHandler extends java.util.logging.Handler
+
+----------------FIELDS----------------
+
+private static final int DEFAULT_SIZE
+
+private java.util.logging.LogRecord[] buffer
+
+private int cursor
+
+private final java.util.logging.LogManager manager
+
+private java.util.logging.Level push
+
+private int size
+
+private java.util.logging.Handler target
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.util.logging.Handler
+int
+java.util.logging.Level)
+
+public void close()
+
+public void flush()
+
+public java.util.logging.Level getPushLevel()
+
+public boolean isLoggable(
+java.util.logging.LogRecord)
+
+public void publish(
+java.util.logging.LogRecord)
+
+public void push()
+
+public void setPushLevel(
+java.util.logging.Level)
+
+________________CLASS________________
+
+
+public class java.util.logging.SimpleFormatter extends java.util.logging.Formatter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public java.lang.String format(
+java.util.logging.LogRecord)
+
+________________CLASS________________
+
+
+public class java.util.logging.SocketHandler extends java.util.logging.StreamHandler
+
+----------------FIELDS----------------
+
+private static final java.lang.String DEFAULT_FORMATTER
+
+private static final java.lang.String DEFAULT_LEVEL
+
+private java.net.Socket socket
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void initSocket(
+java.lang.String
+java.lang.String)
+
+public void close()
+
+public void publish(
+java.util.logging.LogRecord)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+final class java.util.logging.XMLFormatter$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.lang.String val$key
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+
+public class java.util.logging.XMLFormatter extends java.util.logging.Formatter
+
+----------------FIELDS----------------
+
+private static final java.lang.String indent
+
+private static final java.lang.String lineSeperator
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void formatMessages(
+java.util.logging.LogRecord
+java.lang.StringBuilder)
+
+private void formatThrowable(
+java.util.logging.LogRecord
+java.lang.StringBuilder)
+
+private static java.lang.String getSystemProperty(
+java.lang.String)
+
+public java.lang.String format(
+java.util.logging.LogRecord)
+
+public java.lang.String getHead(
+java.util.logging.Handler)
+
+public java.lang.String getTail(
+java.util.logging.Handler)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/prefs/AbstractPreferences; )
+final class java.util.prefs.AbstractPreferences$1 extends java.lang.Thread
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/prefs/AbstractPreferences; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =EventDispatcher )
+ class java.util.prefs.AbstractPreferences$EventDispatcher extends java.lang.Thread
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/prefs/NodeChangeEvent;Ljava/util/List<Ljava/util/EventListener;>;)V )
+private void dispatchNodeAdd(
+java.util.prefs.NodeChangeEvent
+java.util.List)
+@dalvik.annotation.Signature (value =(Ljava/util/prefs/NodeChangeEvent;Ljava/util/List<Ljava/util/EventListener;>;)V )
+private void dispatchNodeRemove(
+java.util.prefs.NodeChangeEvent
+java.util.List)
+@dalvik.annotation.Signature (value =(Ljava/util/prefs/PreferenceChangeEvent;Ljava/util/List<Ljava/util/EventListener;>;)V )
+private void dispatchPrefChange(
+java.util.prefs.PreferenceChangeEvent
+java.util.List)
+@dalvik.annotation.Throws (value =Ljava/lang/InterruptedException; )
+private java.util.EventObject getEventObject()
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/prefs/AbstractPreferences; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Lock )
+ class java.util.prefs.AbstractPreferences$Lock extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+java.util.prefs.AbstractPreferences$1)
+
+________________CLASS________________
+
+
+public class java.util.prefs.NodeChangeEvent extends java.util.EventObject implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final java.util.prefs.Preferences child
+
+private final java.util.prefs.Preferences parent
+----------------METHODS----------------
+
+public void <init>(
+java.util.prefs.Preferences
+java.util.prefs.Preferences)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public java.util.prefs.Preferences getChild()
+
+public java.util.prefs.Preferences getParent()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =NodeAddEvent )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/prefs/AbstractPreferences; )
+ class java.util.prefs.AbstractPreferences$NodeAddEvent extends java.util.prefs.NodeChangeEvent
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.util.prefs.Preferences
+java.util.prefs.Preferences)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =NodeRemoveEvent )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/prefs/AbstractPreferences; )
+ class java.util.prefs.AbstractPreferences$NodeRemoveEvent extends java.util.prefs.NodeChangeEvent
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.util.prefs.Preferences
+java.util.prefs.Preferences)
+
+________________CLASS________________
+
+
+public abstract class java.util.prefs.Preferences extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String CONFIGURATION_FILE_COMMENT
+
+private static final java.lang.String CONFIGURATION_FILE_ENCODING
+
+private static final java.lang.String FACTORY_CONFIGURATION_FILE_NAME
+
+public static final int MAX_KEY_LENGTH
+
+public static final int MAX_NAME_LENGTH
+
+public static final int MAX_VALUE_LENGTH
+
+private static final java.lang.RuntimePermission PREFS_PERM
+
+private static final java.util.prefs.PreferencesFactory factory
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>()
+
+private static void checkSecurity()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/lang/String; )
+private static java.lang.String getNodeName(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/InvalidPreferencesFormatException;Ljava/io/IOException; )
+public static void importPreferences(
+java.io.InputStream)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/util/prefs/Preferences; )
+public static java.util.prefs.Preferences systemNodeForPackage(
+java.lang.Class)
+
+public static java.util.prefs.Preferences systemRoot()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/util/prefs/Preferences; )
+public static java.util.prefs.Preferences userNodeForPackage(
+java.lang.Class)
+
+public static java.util.prefs.Preferences userRoot()
+
+public abstract java.lang.String absolutePath()
+
+public abstract void addNodeChangeListener(
+java.util.prefs.NodeChangeListener)
+
+public abstract void addPreferenceChangeListener(
+java.util.prefs.PreferenceChangeListener)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+public abstract java.lang.String[] childrenNames()
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+public abstract void clear()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/util/prefs/BackingStoreException; )
+public abstract void exportNode(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/util/prefs/BackingStoreException; )
+public abstract void exportSubtree(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+public abstract void flush()
+
+public abstract java.lang.String get(
+java.lang.String
+java.lang.String)
+
+public abstract boolean getBoolean(
+java.lang.String
+boolean)
+
+public abstract byte[] getByteArray(
+java.lang.String
+byte[])
+
+public abstract double getDouble(
+java.lang.String
+double)
+
+public abstract float getFloat(
+java.lang.String
+float)
+
+public abstract int getInt(
+java.lang.String
+int)
+
+public abstract long getLong(
+java.lang.String
+long)
+
+public abstract boolean isUserNode()
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+public abstract java.lang.String[] keys()
+
+public abstract java.lang.String name()
+
+public abstract java.util.prefs.Preferences node(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+public abstract boolean nodeExists(
+java.lang.String)
+
+public abstract java.util.prefs.Preferences parent()
+
+public abstract void put(
+java.lang.String
+java.lang.String)
+
+public abstract void putBoolean(
+java.lang.String
+boolean)
+
+public abstract void putByteArray(
+java.lang.String
+byte[])
+
+public abstract void putDouble(
+java.lang.String
+double)
+
+public abstract void putFloat(
+java.lang.String
+float)
+
+public abstract void putInt(
+java.lang.String
+int)
+
+public abstract void putLong(
+java.lang.String
+long)
+
+public abstract void remove(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+public abstract void removeNode()
+
+public abstract void removeNodeChangeListener(
+java.util.prefs.NodeChangeListener)
+
+public abstract void removePreferenceChangeListener(
+java.util.prefs.PreferenceChangeListener)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+public abstract void sync()
+
+public abstract java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljava/util/prefs/AbstractPreferences$NodeRemoveEvent;Ljava/util/prefs/AbstractPreferences$NodeAddEvent;Ljava/util/prefs/AbstractPreferences$EventDispatcher;Ljava/util/prefs/AbstractPreferences$Lock; )
+public abstract class java.util.prefs.AbstractPreferences extends java.util.prefs.Preferences
+
+----------------FIELDS----------------
+
+private static final java.util.prefs.AbstractPreferences$EventDispatcher dispatcher
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/util/EventObject;>; )
+private static final java.util.List events
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/util/prefs/AbstractPreferences;>; )
+private java.util.Map cachedNode
+
+private boolean isRemoved
+
+protected final java.lang.Object lock
+
+protected boolean newNode
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/util/EventListener;>; )
+private java.util.List nodeChangeListeners
+
+private java.lang.String nodeName
+
+private java.util.prefs.AbstractPreferences parentPref
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/util/EventListener;>; )
+private java.util.List preferenceChangeListeners
+
+private java.util.prefs.AbstractPreferences root
+
+ boolean userNode
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.util.prefs.AbstractPreferences
+java.lang.String)
+
+static java.util.List access$100(
+java.util.prefs.AbstractPreferences)
+
+static java.util.List access$200(
+java.util.prefs.AbstractPreferences)
+
+static java.util.List access$300()
+
+private void checkState()
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+private java.util.prefs.AbstractPreferences getNodeFromBackend(
+boolean
+java.util.prefs.AbstractPreferences
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+private java.util.prefs.AbstractPreferences nodeImpl(
+java.lang.String
+boolean)
+
+private void notifyChildAdded(
+java.util.prefs.Preferences)
+
+private void notifyChildRemoved(
+java.util.prefs.Preferences)
+
+private void notifyPreferenceChange(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+private void removeNodeImpl()
+
+private void validateName(
+java.lang.String)
+
+public java.lang.String absolutePath()
+
+public void addNodeChangeListener(
+java.util.prefs.NodeChangeListener)
+
+public void addPreferenceChangeListener(
+java.util.prefs.PreferenceChangeListener)
+
+protected final java.util.prefs.AbstractPreferences[] cachedChildren()
+
+protected abstract java.util.prefs.AbstractPreferences childSpi(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+public java.lang.String[] childrenNames()
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+protected abstract java.lang.String[] childrenNamesSpi()
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+public void clear()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/util/prefs/BackingStoreException; )
+public void exportNode(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/util/prefs/BackingStoreException; )
+public void exportSubtree(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+public void flush()
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+protected abstract void flushSpi()
+
+public java.lang.String get(
+java.lang.String
+java.lang.String)
+
+public boolean getBoolean(
+java.lang.String
+boolean)
+
+public byte[] getByteArray(
+java.lang.String
+byte[])
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+protected java.util.prefs.AbstractPreferences getChild(
+java.lang.String)
+
+public double getDouble(
+java.lang.String
+double)
+
+public float getFloat(
+java.lang.String
+float)
+
+public int getInt(
+java.lang.String
+int)
+
+public long getLong(
+java.lang.String
+long)
+
+protected abstract java.lang.String getSpi(
+java.lang.String)
+
+protected boolean isRemoved()
+
+public boolean isUserNode()
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+public java.lang.String[] keys()
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+protected abstract java.lang.String[] keysSpi()
+
+public java.lang.String name()
+
+public java.util.prefs.Preferences node(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+public boolean nodeExists(
+java.lang.String)
+
+public java.util.prefs.Preferences parent()
+
+public void put(
+java.lang.String
+java.lang.String)
+
+public void putBoolean(
+java.lang.String
+boolean)
+
+public void putByteArray(
+java.lang.String
+byte[])
+
+public void putDouble(
+java.lang.String
+double)
+
+public void putFloat(
+java.lang.String
+float)
+
+public void putInt(
+java.lang.String
+int)
+
+public void putLong(
+java.lang.String
+long)
+
+protected abstract void putSpi(
+java.lang.String
+java.lang.String)
+
+public void remove(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+public void removeNode()
+
+public void removeNodeChangeListener(
+java.util.prefs.NodeChangeListener)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+protected abstract void removeNodeSpi()
+
+public void removePreferenceChangeListener(
+java.util.prefs.PreferenceChangeListener)
+
+protected abstract void removeSpi(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+public void sync()
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+protected abstract void syncSpi()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.util.prefs.BackingStoreException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public abstract interface class java.util.prefs.PreferencesFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.util.prefs.Preferences systemRoot()
+
+public abstract java.util.prefs.Preferences userRoot()
+
+________________CLASS________________
+
+
+ class java.util.prefs.FilePreferencesFactoryImpl extends java.lang.Object implements java.util.prefs.PreferencesFactory
+
+----------------FIELDS----------------
+
+private static final java.util.prefs.Preferences SYSTEM_ROOT
+
+private static final java.util.prefs.Preferences USER_ROOT
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public java.util.prefs.Preferences systemRoot()
+
+public java.util.prefs.Preferences userRoot()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/prefs/FilePreferencesImpl; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Void;>; )
+final class java.util.prefs.FilePreferencesImpl$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object run()
+
+public java.lang.Void run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Boolean;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.prefs.FilePreferencesImpl$2 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.util.prefs.FilePreferencesImpl this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.prefs.FilePreferencesImpl)
+
+public java.lang.Boolean run()
+
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.prefs.FilePreferencesImpl$3$1 extends java.lang.Object implements java.io.FilenameFilter
+
+----------------FIELDS----------------
+
+final java.util.prefs.FilePreferencesImpl$3 this$1
+----------------METHODS----------------
+
+ void <init>(
+java.util.prefs.FilePreferencesImpl$3)
+
+public boolean accept(
+java.io.File
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<[Ljava/lang/String;>; )
+ class java.util.prefs.FilePreferencesImpl$3 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.util.prefs.FilePreferencesImpl this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.prefs.FilePreferencesImpl)
+
+public volatile java.lang.Object run()
+
+public java.lang.String[] run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Boolean;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.prefs.FilePreferencesImpl$4 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.util.prefs.FilePreferencesImpl this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.prefs.FilePreferencesImpl)
+
+public java.lang.Boolean run()
+
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+
+ class java.util.prefs.FilePreferencesImpl extends java.util.prefs.AbstractPreferences
+
+----------------FIELDS----------------
+
+private static final java.lang.String PREFS_FILE_NAME
+
+private static java.lang.String SYSTEM_HOME
+
+private static java.lang.String USER_HOME
+
+private java.io.File dir
+
+private java.lang.String path
+
+private java.util.Properties prefs
+
+private java.io.File prefsFile
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/lang/String;>; )
+private java.util.Set removed
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/lang/String;>; )
+private java.util.Set updated
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+java.util.prefs.AbstractPreferences
+java.lang.String)
+
+ void <init>(
+boolean)
+
+static java.lang.String access$002(
+java.lang.String)
+
+static java.lang.String access$102(
+java.lang.String)
+
+static java.io.File access$200(
+java.util.prefs.FilePreferencesImpl)
+
+static java.lang.String access$300(
+java.util.prefs.FilePreferencesImpl)
+
+static java.io.File access$400(
+java.util.prefs.FilePreferencesImpl)
+
+private void initPrefs()
+
+protected java.util.prefs.AbstractPreferences childSpi(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+protected java.lang.String[] childrenNamesSpi()
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+protected void flushSpi()
+
+protected java.lang.String getSpi(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+protected java.lang.String[] keysSpi()
+
+protected void putSpi(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+protected void removeNodeSpi()
+
+protected void removeSpi(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException; )
+protected void syncSpi()
+
+________________CLASS________________
+
+
+public class java.util.prefs.InvalidPreferencesFormatException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public abstract interface class java.util.prefs.NodeChangeListener extends java.lang.Object implements java.util.EventListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void childAdded(
+java.util.prefs.NodeChangeEvent)
+
+public abstract void childRemoved(
+java.util.prefs.NodeChangeEvent)
+
+________________CLASS________________
+
+
+public abstract interface class org.w3c.dom.NodeList extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int getLength()
+
+public abstract org.w3c.dom.Node item(
+int)
+
+________________CLASS________________
+
+
+ class java.util.prefs.NodeSet extends java.lang.Object implements org.w3c.dom.NodeList
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Lorg/w3c/dom/Node;>; )
+ java.util.ArrayList list
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Iterator<Lorg/w3c/dom/Node;>;)V )
+public void <init>(
+java.util.Iterator)
+
+public int getLength()
+
+public org.w3c.dom.Node item(
+int)
+
+________________CLASS________________
+
+
+public class java.util.prefs.PreferenceChangeEvent extends java.util.EventObject implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final java.lang.String key
+
+private final java.util.prefs.Preferences node
+
+private final java.lang.String value
+----------------METHODS----------------
+
+public void <init>(
+java.util.prefs.Preferences
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public java.lang.String getKey()
+
+public java.lang.String getNewValue()
+
+public java.util.prefs.Preferences getNode()
+
+________________CLASS________________
+
+
+public abstract interface class java.util.prefs.PreferenceChangeListener extends java.lang.Object implements java.util.EventListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void preferenceChange(
+java.util.prefs.PreferenceChangeEvent)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/prefs/Preferences; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+final class java.util.prefs.Preferences$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/prefs/XMLParser; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class java.util.prefs.XMLParser$1 extends java.lang.Object implements org.xml.sax.EntityResolver
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public org.xml.sax.InputSource resolveEntity(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/prefs/XMLParser; )
+final class java.util.prefs.XMLParser$2 extends java.lang.Object implements org.xml.sax.ErrorHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void error(
+org.xml.sax.SAXParseException)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void fatalError(
+org.xml.sax.SAXParseException)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void warning(
+org.xml.sax.SAXParseException)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/util/Properties;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class java.util.prefs.XMLParser$3 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.io.File val$file
+----------------METHODS----------------
+
+ void <init>(
+java.io.File)
+
+public volatile java.lang.Object run()
+
+public java.util.Properties run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Ljava/lang/Object;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class java.util.prefs.XMLParser$4 extends java.lang.Object implements java.security.PrivilegedExceptionAction
+
+----------------FIELDS----------------
+
+final java.io.File val$file
+
+final java.util.Properties val$prefs
+----------------METHODS----------------
+
+ void <init>(
+java.io.File
+java.util.Properties)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object run()
+
+________________CLASS________________
+
+
+ class java.util.prefs.XMLParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final java.lang.String DOCTYPE
+
+private static final java.lang.String[] EMPTY_SARRAY
+
+private static final java.lang.String FILE_PREFS
+
+static final java.lang.String HEADER
+
+static final java.lang.String PREFS_DTD
+
+static final java.lang.String PREFS_DTD_NAME
+
+private static final float XML_VERSION
+
+private static final javax.xml.parsers.DocumentBuilder builder
+
+private static int indent
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException;Ljava/io/IOException; )
+private static void exportEntries(
+java.util.prefs.Preferences
+java.io.BufferedWriter)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void exportEntries(
+java.lang.String[]
+java.lang.String[]
+java.io.BufferedWriter)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/util/prefs/BackingStoreException; )
+private static void exportNode(
+java.util.StringTokenizer
+java.util.prefs.Preferences
+boolean
+java.io.BufferedWriter)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/util/prefs/BackingStoreException; )
+static void exportPrefs(
+java.util.prefs.Preferences
+java.io.OutputStream
+boolean)
+@dalvik.annotation.Throws (value =Ljava/util/prefs/BackingStoreException;Ljava/io/IOException; )
+private static void exportSubTree(
+java.util.prefs.Preferences
+java.io.BufferedWriter)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void flushEmptyElement(
+java.lang.String
+java.io.BufferedWriter)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void flushEmptyElement(
+java.lang.String
+java.lang.String[]
+java.lang.String[]
+java.io.BufferedWriter)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void flushEndTag(
+java.lang.String
+java.io.BufferedWriter)
+@dalvik.annotation.Throws (value =Ljava/security/PrivilegedActionException; )
+static void flushFilePrefs(
+java.io.File
+java.util.Properties)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static void flushFilePrefsImpl(
+java.io.File
+java.util.Properties)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void flushIndent(
+int
+java.io.BufferedWriter)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void flushPairs(
+java.lang.String[]
+java.lang.String[]
+java.io.BufferedWriter)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void flushStartTag(
+java.lang.String
+java.io.BufferedWriter)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void flushStartTag(
+java.lang.String
+java.lang.String[]
+java.lang.String[]
+java.io.BufferedWriter)
+
+private static java.lang.String htmlEncode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/util/prefs/InvalidPreferencesFormatException; )
+static void importPrefs(
+java.io.InputStream)
+
+static java.util.Properties loadFilePrefs(
+java.io.File)
+
+static java.util.Properties loadFilePrefsImpl(
+java.io.File)
+
+private static void loadNode(
+java.util.prefs.Preferences
+org.w3c.dom.Element)
+
+private static org.w3c.dom.NodeList selectNodeList(
+org.w3c.dom.Element
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class java.util.regex.MatchResult extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int end()
+
+public abstract int end(
+int)
+
+public abstract java.lang.String group()
+
+public abstract java.lang.String group(
+int)
+
+public abstract int groupCount()
+
+public abstract int start()
+
+public abstract int start(
+int)
+
+________________CLASS________________
+
+
+ class java.util.regex.MatchResultImpl extends java.lang.Object implements java.util.regex.MatchResult
+
+----------------FIELDS----------------
+
+private int[] offsets
+
+private java.lang.String text
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+int[])
+
+public int end()
+
+public int end(
+int)
+
+public java.lang.String group()
+
+public java.lang.String group(
+int)
+
+public int groupCount()
+
+public int start()
+
+public int start(
+int)
+
+________________CLASS________________
+
+
+public final class java.util.regex.Matcher extends java.lang.Object implements java.util.regex.MatchResult
+
+----------------FIELDS----------------
+
+private boolean anchoringBounds
+
+private int appendPos
+
+private int findPos
+
+private java.lang.String input
+
+private boolean matchFound
+
+private int[] matchOffsets
+
+private int nativePattern
+
+private java.util.regex.Pattern pattern
+
+private int regionEnd
+
+private int regionStart
+
+private boolean searching
+
+private boolean transparentBounds
+----------------METHODS----------------
+
+ void <init>(
+java.util.regex.Pattern
+java.lang.CharSequence)
+
+private void appendEvaluated(
+java.lang.StringBuffer
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+private void ensureMatch()
+
+public static java.lang.String quoteReplacement(
+java.lang.String)
+
+private java.util.regex.Matcher reset(
+java.lang.CharSequence
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public java.util.regex.Matcher appendReplacement(
+java.lang.StringBuffer
+java.lang.String)
+
+public java.lang.StringBuffer appendTail(
+java.lang.StringBuffer)
+
+public int end()
+
+public int end(
+int)
+
+protected void finalize()
+
+public boolean find()
+
+public boolean find(
+int)
+
+public java.lang.String group()
+
+public java.lang.String group(
+int)
+
+public int groupCount()
+
+public boolean hasAnchoringBounds()
+
+public boolean hasTransparentBounds()
+
+public boolean hitEnd()
+
+public boolean lookingAt()
+
+public boolean matches()
+
+public java.util.regex.Pattern pattern()
+
+public java.util.regex.Matcher region(
+int
+int)
+
+public int regionEnd()
+
+public int regionStart()
+
+public java.lang.String replaceAll(
+java.lang.String)
+
+public java.lang.String replaceFirst(
+java.lang.String)
+
+public boolean requireEnd()
+
+public java.util.regex.Matcher reset()
+
+public java.util.regex.Matcher reset(
+java.lang.CharSequence)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public int start()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public int start(
+int)
+
+public java.util.regex.MatchResult toMatchResult()
+
+public java.util.regex.Matcher useAnchoringBounds(
+boolean)
+
+public java.util.regex.Matcher usePattern(
+java.util.regex.Pattern)
+
+public java.util.regex.Matcher useTransparentBounds(
+boolean)
+
+________________CLASS________________
+
+
+public final class java.util.regex.Pattern extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+public static final int CANON_EQ
+
+public static final int CASE_INSENSITIVE
+
+public static final int COMMENTS
+
+public static final int DOTALL
+
+public static final int LITERAL
+
+public static final int MULTILINE
+
+public static final int UNICODE_CASE
+
+public static final int UNIX_LINES
+
+private static final long serialVersionUID
+
+private int flags
+
+transient int mGroupCount
+
+transient int mNativePattern
+
+private java.lang.String pattern
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/util/regex/PatternSyntaxException; )
+private void <init>(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/util/regex/PatternSyntaxException; )
+public static java.util.regex.Pattern compile(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/util/regex/PatternSyntaxException; )
+public static java.util.regex.Pattern compile(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/util/regex/PatternSyntaxException; )
+private void compileImpl(
+java.lang.String
+int)
+
+public static boolean matches(
+java.lang.String
+java.lang.CharSequence)
+
+public static java.lang.String quote(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+protected void finalize()
+
+public int flags()
+
+public java.util.regex.Matcher matcher(
+java.lang.CharSequence)
+
+public java.lang.String pattern()
+
+public java.lang.String[] split(
+java.lang.CharSequence)
+
+public java.lang.String[] split(
+java.lang.CharSequence
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class java.util.regex.PatternSyntaxException extends java.lang.IllegalArgumentException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.String description
+
+private int index
+
+private java.lang.String pattern
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String
+int)
+
+public java.lang.String getDescription()
+
+public int getIndex()
+
+public java.lang.String getMessage()
+
+public java.lang.String getPattern()
+
+________________CLASS________________
+
+
+public abstract interface class java.util.zip.Checksum extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract long getValue()
+
+public abstract void reset()
+
+public abstract void update(
+int)
+
+public abstract void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.util.zip.Adler32 extends java.lang.Object implements java.util.zip.Checksum
+
+----------------FIELDS----------------
+
+private long adler
+----------------METHODS----------------
+
+public void <init>()
+
+private native long updateByteImpl(
+int
+long)
+
+private native long updateImpl(
+byte[]
+int
+int
+long)
+
+public long getValue()
+
+public void reset()
+
+public void update(
+int)
+
+public void update(
+byte[])
+
+public void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.util.zip.CRC32 extends java.lang.Object implements java.util.zip.Checksum
+
+----------------FIELDS----------------
+
+private long crc
+
+ long tbytes
+----------------METHODS----------------
+
+public void <init>()
+
+private native long updateByteImpl(
+byte
+long)
+
+private native long updateImpl(
+byte[]
+int
+int
+long)
+
+public long getValue()
+
+public void reset()
+
+public void update(
+int)
+
+public void update(
+byte[])
+
+public void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.util.zip.CheckedInputStream extends java.io.FilterInputStream
+
+----------------FIELDS----------------
+
+private final java.util.zip.Checksum check
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream
+java.util.zip.Checksum)
+
+public java.util.zip.Checksum getChecksum()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class java.util.zip.CheckedOutputStream extends java.io.FilterOutputStream
+
+----------------FIELDS----------------
+
+private final java.util.zip.Checksum check
+----------------METHODS----------------
+
+public void <init>(
+java.io.OutputStream
+java.util.zip.Checksum)
+
+public java.util.zip.Checksum getChecksum()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.util.zip.DataFormatException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class java.util.zip.Deflater extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int BEST_COMPRESSION
+
+public static final int BEST_SPEED
+
+public static final int DEFAULT_COMPRESSION
+
+public static final int DEFAULT_STRATEGY
+
+public static final int DEFLATED
+
+public static final int FILTERED
+
+public static final int HUFFMAN_ONLY
+
+public static final int NO_COMPRESSION
+
+private static final byte[] STUB_INPUT_BUFFER
+
+private static final int Z_FINISH
+
+private static final int Z_NO_FLUSH
+
+private int compressLevel
+
+private boolean finished
+
+private int flushParm
+
+private int inLength
+
+private int inRead
+
+private byte[] inputBuffer
+
+private int strategy
+
+private long streamHandle
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+int
+boolean)
+
+private native long createStream(
+int
+int
+boolean)
+
+private synchronized native int deflateImpl(
+byte[]
+int
+int
+long
+int)
+
+private synchronized native void endImpl(
+long)
+
+private synchronized native int getAdlerImpl(
+long)
+
+private synchronized native long getTotalInImpl(
+long)
+
+private synchronized native long getTotalOutImpl(
+long)
+
+private static native void oneTimeInitialization()
+
+private synchronized native void resetImpl(
+long)
+
+private synchronized native void setDictionaryImpl(
+byte[]
+int
+int
+long)
+
+private synchronized native void setInputImpl(
+byte[]
+int
+int
+long)
+
+private synchronized native void setLevelsImpl(
+int
+int
+long)
+
+public int deflate(
+byte[])
+
+public int deflate(
+byte[]
+int
+int)
+
+public void end()
+
+protected void finalize()
+
+public void finish()
+
+public boolean finished()
+
+public int getAdler()
+
+public long getBytesRead()
+
+public long getBytesWritten()
+
+public int getTotalIn()
+
+public int getTotalOut()
+
+public boolean needsInput()
+
+public void reset()
+
+public void setDictionary(
+byte[])
+
+public void setDictionary(
+byte[]
+int
+int)
+
+public void setInput(
+byte[])
+
+public void setInput(
+byte[]
+int
+int)
+
+public void setLevel(
+int)
+
+public void setStrategy(
+int)
+
+________________CLASS________________
+
+
+public class java.util.zip.GZIPInputStream extends java.util.zip.InflaterInputStream
+
+----------------FIELDS----------------
+
+private static final int FCOMMENT
+
+private static final int FEXTRA
+
+private static final int FHCRC
+
+private static final int FNAME
+
+public static final int GZIP_MAGIC
+
+protected java.util.zip.CRC32 crc
+
+protected boolean eos
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.InputStream
+int)
+
+private long getLong(
+byte[]
+int)
+
+private int getShort(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void readFully(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void readZeroTerminated(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.util.zip.GZIPOutputStream extends java.util.zip.DeflaterOutputStream
+
+----------------FIELDS----------------
+
+protected java.util.zip.CRC32 crc
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.OutputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private long writeLong(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int writeShort(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void finish()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class java.util.zip.Inflater extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final byte MAGIC_NUMBER
+
+private boolean finished
+
+private boolean gotFirstByte
+
+ int inLength
+
+ int inRead
+
+private boolean needsDictionary
+
+private boolean pass_magic_number_check
+
+private long streamHandle
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+boolean)
+
+private native long createStream(
+boolean)
+
+private synchronized native void endImpl(
+long)
+
+private synchronized native int getAdlerImpl(
+long)
+
+private synchronized native long getTotalInImpl(
+long)
+
+private synchronized native long getTotalOutImpl(
+long)
+
+private synchronized native int inflateImpl(
+byte[]
+int
+int
+long)
+
+private static native void oneTimeInitialization()
+
+private synchronized native void resetImpl(
+long)
+
+private synchronized native void setDictionaryImpl(
+byte[]
+int
+int
+long)
+
+private synchronized native int setFileInputImpl(
+java.io.FileDescriptor
+long
+int
+long)
+
+private synchronized native void setInputImpl(
+byte[]
+int
+int
+long)
+
+public void end()
+
+protected void finalize()
+
+public boolean finished()
+
+public int getAdler()
+
+public long getBytesRead()
+
+public long getBytesWritten()
+
+public int getRemaining()
+
+public int getTotalIn()
+
+public int getTotalOut()
+@dalvik.annotation.Throws (value =Ljava/util/zip/DataFormatException; )
+public int inflate(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/util/zip/DataFormatException; )
+public int inflate(
+byte[]
+int
+int)
+
+public boolean needsDictionary()
+
+public boolean needsInput()
+
+public void reset()
+
+public void setDictionary(
+byte[])
+
+public void setDictionary(
+byte[]
+int
+int)
+
+ int setFileInput(
+java.io.FileDescriptor
+long
+int)
+
+public void setInput(
+byte[])
+
+public void setInput(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljava/util/zip/ZipEntry; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =LittleEndianReader )
+ class java.util.zip.ZipEntry$LittleEndianReader extends java.lang.Object
+
+----------------FIELDS----------------
+
+private byte[] b
+
+ byte[] hdrBuf
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ long readIntLE(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ int readShortLE(
+java.io.InputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Object;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class java.util.zip.ZipFile$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.util.zip.ZipFile this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.zip.ZipFile)
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Enumeration<Ljava/util/zip/ZipEntry;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class java.util.zip.ZipFile$2 extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+
+private int i
+
+final java.util.zip.ZipFile this$0
+----------------METHODS----------------
+
+ void <init>(
+java.util.zip.ZipFile)
+
+public boolean hasMoreElements()
+
+public volatile java.lang.Object nextElement()
+
+public java.util.zip.ZipEntry nextElement()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =RAFStream )
+@dalvik.annotation.EnclosingClass (value =Ljava/util/zip/ZipFile; )
+ class java.util.zip.ZipFile$RAFStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+ long mLength
+
+ long mOffset
+
+ java.io.RandomAccessFile mSharedRaf
+
+private byte[] singleByteBuf
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.RandomAccessFile
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class javax.crypto.BadPaddingException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class javax.crypto.Cipher extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int DECRYPT_MODE
+
+public static final int ENCRYPT_MODE
+
+public static final int PRIVATE_KEY
+
+public static final int PUBLIC_KEY
+
+public static final int SECRET_KEY
+
+private static final java.lang.String SERVICE
+
+public static final int UNWRAP_MODE
+
+public static final int WRAP_MODE
+
+private static final org.apache.harmony.security.fortress.Engine engine
+
+private static java.security.SecureRandom sec_rand
+
+private int mode
+
+private java.security.Provider provider
+
+private javax.crypto.CipherSpi spiImpl
+
+private java.lang.String transformation
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+javax.crypto.CipherSpi
+java.security.Provider
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+private static java.lang.String[] checkTransformation(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljavax/crypto/NoSuchPaddingException; )
+private static javax.crypto.Cipher getCipher(
+java.lang.String
+java.security.Provider)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljavax/crypto/NoSuchPaddingException; )
+public static final javax.crypto.Cipher getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException;Ljavax/crypto/NoSuchPaddingException; )
+public static final javax.crypto.Cipher getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljavax/crypto/NoSuchPaddingException; )
+public static final javax.crypto.Cipher getInstance(
+java.lang.String
+java.security.Provider)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static final int getMaxAllowedKeyLength(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static final java.security.spec.AlgorithmParameterSpec getMaxAllowedParameterSpec(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException;Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+public final int doFinal(
+java.nio.ByteBuffer
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/ShortBufferException;Ljavax/crypto/BadPaddingException; )
+public final int doFinal(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException;Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+public final int doFinal(
+byte[]
+int
+int
+byte[])
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException;Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+public final int doFinal(
+byte[]
+int
+int
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+public final byte[] doFinal()
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+public final byte[] doFinal(
+byte[])
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+public final byte[] doFinal(
+byte[]
+int
+int)
+
+public final java.lang.String getAlgorithm()
+
+public final int getBlockSize()
+
+public final javax.crypto.ExemptionMechanism getExemptionMechanism()
+
+public final byte[] getIV()
+
+public final int getOutputSize(
+int)
+
+public final java.security.AlgorithmParameters getParameters()
+
+public final java.security.Provider getProvider()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public final void init(
+int
+java.security.Key)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+public final void init(
+int
+java.security.Key
+java.security.AlgorithmParameters)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+public final void init(
+int
+java.security.Key
+java.security.AlgorithmParameters
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public final void init(
+int
+java.security.Key
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+public final void init(
+int
+java.security.Key
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+public final void init(
+int
+java.security.Key
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public final void init(
+int
+java.security.cert.Certificate)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public final void init(
+int
+java.security.cert.Certificate
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/NoSuchAlgorithmException; )
+public final java.security.Key unwrap(
+byte[]
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException; )
+public final int update(
+java.nio.ByteBuffer
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException; )
+public final int update(
+byte[]
+int
+int
+byte[])
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException; )
+public final int update(
+byte[]
+int
+int
+byte[]
+int)
+
+public final byte[] update(
+byte[])
+
+public final byte[] update(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljava/security/InvalidKeyException; )
+public final byte[] wrap(
+java.security.Key)
+
+________________CLASS________________
+
+
+public class javax.crypto.CipherInputStream extends java.io.FilterInputStream
+
+----------------FIELDS----------------
+
+private final int I_BUFFER_SIZE
+
+private final javax.crypto.Cipher cipher
+
+private boolean finished
+
+private final byte[] i_buffer
+
+private int index
+
+private byte[] o_buffer
+----------------METHODS----------------
+
+protected void <init>(
+java.io.InputStream)
+
+public void <init>(
+java.io.InputStream
+javax.crypto.Cipher)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class javax.crypto.CipherOutputStream extends java.io.FilterOutputStream
+
+----------------FIELDS----------------
+
+private final byte[] arr
+
+private final javax.crypto.Cipher cipher
+----------------METHODS----------------
+
+protected void <init>(
+java.io.OutputStream)
+
+public void <init>(
+java.io.OutputStream
+javax.crypto.Cipher)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public abstract class javax.crypto.CipherSpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException;Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+protected int engineDoFinal(
+java.nio.ByteBuffer
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException;Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+protected abstract int engineDoFinal(
+byte[]
+int
+int
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+protected abstract byte[] engineDoFinal(
+byte[]
+int
+int)
+
+protected abstract int engineGetBlockSize()
+
+protected abstract byte[] engineGetIV()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected int engineGetKeySize(
+java.security.Key)
+
+protected abstract int engineGetOutputSize(
+int)
+
+protected abstract java.security.AlgorithmParameters engineGetParameters()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected abstract void engineInit(
+int
+java.security.Key
+java.security.AlgorithmParameters
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected abstract void engineInit(
+int
+java.security.Key
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected abstract void engineInit(
+int
+java.security.Key
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+protected abstract void engineSetMode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljavax/crypto/NoSuchPaddingException; )
+protected abstract void engineSetPadding(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/NoSuchAlgorithmException; )
+protected java.security.Key engineUnwrap(
+byte[]
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException; )
+protected int engineUpdate(
+java.nio.ByteBuffer
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException; )
+protected abstract int engineUpdate(
+byte[]
+int
+int
+byte[]
+int)
+
+protected abstract byte[] engineUpdate(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljava/security/InvalidKeyException; )
+protected byte[] engineWrap(
+java.security.Key)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.harmony.security.asn1.ASN1Constants extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CLASS_APPLICATION
+
+public static final int CLASS_CONTEXTSPECIFIC
+
+public static final int CLASS_PRIVATE
+
+public static final int CLASS_UNIVERSAL
+
+public static final int PC_CONSTRUCTED
+
+public static final int PC_PRIMITIVE
+
+public static final int TAG_ANY
+
+public static final int TAG_BITSTRING
+
+public static final int TAG_BMPSTRING
+
+public static final int TAG_BOOLEAN
+
+public static final int TAG_CHOICE
+
+public static final int TAG_C_BITSTRING
+
+public static final int TAG_C_GENERALIZEDTIME
+
+public static final int TAG_C_OCTETSTRING
+
+public static final int TAG_C_SEQUENCE
+
+public static final int TAG_C_SEQUENCEOF
+
+public static final int TAG_C_SET
+
+public static final int TAG_C_SETOF
+
+public static final int TAG_C_UTCTIME
+
+public static final int TAG_C_UTF8STRING
+
+public static final int TAG_EMBEDDEDPDV
+
+public static final int TAG_ENUM
+
+public static final int TAG_EXTERNAL
+
+public static final int TAG_GENERALIZEDTIME
+
+public static final int TAG_GENERALSTRING
+
+public static final int TAG_GRAPHICSTRING
+
+public static final int TAG_IA5STRING
+
+public static final int TAG_INSTANCEOF
+
+public static final int TAG_INTEGER
+
+public static final int TAG_ISO646STRING
+
+public static final int TAG_NULL
+
+public static final int TAG_NUMERICSTRING
+
+public static final int TAG_OBJDESCRIPTOR
+
+public static final int TAG_OCTETSTRING
+
+public static final int TAG_OID
+
+public static final int TAG_PRINTABLESTRING
+
+public static final int TAG_REAL
+
+public static final int TAG_RELATIVEOID
+
+public static final int TAG_SEQUENCE
+
+public static final int TAG_SEQUENCEOF
+
+public static final int TAG_SET
+
+public static final int TAG_SETOF
+
+public static final int TAG_T61STRING
+
+public static final int TAG_TELETEXSTRING
+
+public static final int TAG_UNIVERSALSTRING
+
+public static final int TAG_UTCTIME
+
+public static final int TAG_UTF8STRING
+
+public static final int TAG_VIDEOTEXSTRING
+
+public static final int TAG_VISIBLESTRING
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.security.asn1.ASN1Type extends java.lang.Object implements org.apache.harmony.security.asn1.ASN1Constants
+
+----------------FIELDS----------------
+
+public final int constrId
+
+public final int id
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+int
+int)
+
+public abstract boolean checkTag(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.lang.Object decode(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.lang.Object decode(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.lang.Object decode(
+byte[]
+int
+int)
+
+public final byte[] encode(
+java.lang.Object)
+
+public abstract void encodeASN(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public abstract void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public int getEncodedLength(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public abstract void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void verify(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void verify(
+byte[])
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.security.asn1.ASN1Constructured extends org.apache.harmony.security.asn1.ASN1Type
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+int
+int)
+
+public final boolean checkTag(
+int)
+
+public void encodeASN(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.security.asn1.ASN1TypeCollection extends org.apache.harmony.security.asn1.ASN1Constructured
+
+----------------FIELDS----------------
+
+public final java.lang.Object[] DEFAULT
+
+public final boolean[] OPTIONAL
+
+public final org.apache.harmony.security.asn1.ASN1Type[] type
+----------------METHODS----------------
+
+public void <init>(
+int
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+protected final void setDefault(
+java.lang.Object
+int)
+
+protected final void setOptional(
+int)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.asn1.ASN1Sequence extends org.apache.harmony.security.asn1.ASN1TypeCollection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public final void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public final void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljavax/crypto/EncryptedPrivateKeyInfo; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class javax.crypto.EncryptedPrivateKeyInfo$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Ljavax/crypto/EncryptedPrivateKeyInfo; )
+final class javax.crypto.EncryptedPrivateKeyInfo$2 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+________________CLASS________________
+
+
+public class javax.crypto.EncryptedPrivateKeyInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.asn1.ASN1SetOf ASN1Attributes
+
+private static final org.apache.harmony.security.asn1.ASN1Sequence ASN1PrivateKeyInfo
+
+private static final org.apache.harmony.security.asn1.ASN1Sequence asn1
+
+private static final byte[] nullParam
+
+private java.lang.String algName
+
+private final java.security.AlgorithmParameters algParameters
+
+private volatile byte[] encoded
+
+private final byte[] encryptedData
+
+private java.lang.String oid
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public void <init>(
+java.lang.String
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public void <init>(
+java.security.AlgorithmParameters
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+
+static java.security.AlgorithmParameters access$000(
+javax.crypto.EncryptedPrivateKeyInfo)
+
+static byte[] access$100()
+
+static java.lang.String access$200(
+javax.crypto.EncryptedPrivateKeyInfo)
+
+static byte[] access$300(
+javax.crypto.EncryptedPrivateKeyInfo)
+
+private static boolean isNullValue(
+byte[])
+
+private boolean mapAlgName()
+
+public java.lang.String getAlgName()
+
+public java.security.AlgorithmParameters getAlgParameters()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public byte[] getEncoded()
+
+public byte[] getEncryptedData()
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException; )
+public java.security.spec.PKCS8EncodedKeySpec getKeySpec(
+java.security.Key)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchProviderException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException; )
+public java.security.spec.PKCS8EncodedKeySpec getKeySpec(
+java.security.Key
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException; )
+public java.security.spec.PKCS8EncodedKeySpec getKeySpec(
+java.security.Key
+java.security.Provider)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+public java.security.spec.PKCS8EncodedKeySpec getKeySpec(
+javax.crypto.Cipher)
+
+________________CLASS________________
+
+
+public class javax.crypto.ExemptionMechanism extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.fortress.Engine engine
+
+private boolean generated
+
+private java.security.Key initKey
+
+private boolean isInit
+
+private final java.lang.String mechanism
+
+private final java.security.Provider provider
+
+private final javax.crypto.ExemptionMechanismSpi spiImpl
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+javax.crypto.ExemptionMechanismSpi
+java.security.Provider
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static final javax.crypto.ExemptionMechanism getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static final javax.crypto.ExemptionMechanism getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static final javax.crypto.ExemptionMechanism getInstance(
+java.lang.String
+java.security.Provider)
+
+protected void finalize()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException;Ljavax/crypto/ShortBufferException;Ljavax/crypto/ExemptionMechanismException; )
+public final int genExemptionBlob(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException;Ljavax/crypto/ShortBufferException;Ljavax/crypto/ExemptionMechanismException; )
+public final int genExemptionBlob(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException;Ljavax/crypto/ExemptionMechanismException; )
+public final byte[] genExemptionBlob()
+
+public final java.lang.String getName()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public final int getOutputSize(
+int)
+
+public final java.security.Provider getProvider()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljavax/crypto/ExemptionMechanismException; )
+public final void init(
+java.security.Key)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException;Ljavax/crypto/ExemptionMechanismException; )
+public final void init(
+java.security.Key
+java.security.AlgorithmParameters)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException;Ljavax/crypto/ExemptionMechanismException; )
+public final void init(
+java.security.Key
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljavax/crypto/ExemptionMechanismException; )
+public final boolean isCryptoAllowed(
+java.security.Key)
+
+________________CLASS________________
+
+
+public class javax.crypto.ExemptionMechanismException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class javax.crypto.ExemptionMechanismSpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException;Ljavax/crypto/ExemptionMechanismException; )
+protected abstract int engineGenExemptionBlob(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/ExemptionMechanismException; )
+protected abstract byte[] engineGenExemptionBlob()
+
+protected abstract int engineGetOutputSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljavax/crypto/ExemptionMechanismException; )
+protected abstract void engineInit(
+java.security.Key)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException;Ljavax/crypto/ExemptionMechanismException; )
+protected abstract void engineInit(
+java.security.Key
+java.security.AlgorithmParameters)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException;Ljavax/crypto/ExemptionMechanismException; )
+protected abstract void engineInit(
+java.security.Key
+java.security.spec.AlgorithmParameterSpec)
+
+________________CLASS________________
+
+
+public abstract class javax.crypto.MacSpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+protected abstract byte[] engineDoFinal()
+
+protected abstract int engineGetMacLength()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected abstract void engineInit(
+java.security.Key
+java.security.spec.AlgorithmParameterSpec)
+
+protected abstract void engineReset()
+
+protected abstract void engineUpdate(
+byte)
+
+protected void engineUpdate(
+java.nio.ByteBuffer)
+
+protected abstract void engineUpdate(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+ class javax.crypto.HmacSpi extends javax.crypto.MacSpi
+
+----------------FIELDS----------------
+
+private java.io.ByteArrayOutputStream mData
+
+private java.security.Key mKey
+
+private java.lang.Object mSync
+----------------METHODS----------------
+
+ void <init>()
+
+private native byte[] native_compute_sha1_hmac(
+byte[]
+byte[])
+
+protected byte[] engineDoFinal()
+
+protected int engineGetMacLength()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+java.security.Key
+java.security.spec.AlgorithmParameterSpec)
+
+protected void engineReset()
+
+protected void engineUpdate(
+byte)
+
+protected void engineUpdate(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class javax.crypto.IllegalBlockSizeException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class javax.crypto.KeyAgreement extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.fortress.Engine engine
+
+private static final java.security.SecureRandom rndm
+
+private final java.lang.String algorithm
+
+private final java.security.Provider provider
+
+private final javax.crypto.KeyAgreementSpi spiImpl
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+javax.crypto.KeyAgreementSpi
+java.security.Provider
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static final javax.crypto.KeyAgreement getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static final javax.crypto.KeyAgreement getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static final javax.crypto.KeyAgreement getInstance(
+java.lang.String
+java.security.Provider)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/lang/IllegalStateException; )
+public final java.security.Key doPhase(
+java.security.Key
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException;Ljavax/crypto/ShortBufferException; )
+public final int generateSecret(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException; )
+public final javax.crypto.SecretKey generateSecret(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public final byte[] generateSecret()
+
+public final java.lang.String getAlgorithm()
+
+public final java.security.Provider getProvider()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public final void init(
+java.security.Key)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public final void init(
+java.security.Key
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+public final void init(
+java.security.Key
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+public final void init(
+java.security.Key
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+
+public abstract class javax.crypto.KeyAgreementSpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/lang/IllegalStateException; )
+protected abstract java.security.Key engineDoPhase(
+java.security.Key
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException;Ljavax/crypto/ShortBufferException; )
+protected abstract int engineGenerateSecret(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException; )
+protected abstract javax.crypto.SecretKey engineGenerateSecret(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+protected abstract byte[] engineGenerateSecret()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected abstract void engineInit(
+java.security.Key
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected abstract void engineInit(
+java.security.Key
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+
+public class javax.crypto.KeyGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.fortress.Engine engine
+
+private static final java.security.SecureRandom rndm
+
+private final java.lang.String algorithm
+
+private final java.security.Provider provider
+
+private final javax.crypto.KeyGeneratorSpi spiImpl
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+javax.crypto.KeyGeneratorSpi
+java.security.Provider
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static final javax.crypto.KeyGenerator getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static final javax.crypto.KeyGenerator getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static final javax.crypto.KeyGenerator getInstance(
+java.lang.String
+java.security.Provider)
+
+public final javax.crypto.SecretKey generateKey()
+
+public final java.lang.String getAlgorithm()
+
+public final java.security.Provider getProvider()
+
+public final void init(
+int)
+
+public final void init(
+int
+java.security.SecureRandom)
+
+public final void init(
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public final void init(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public final void init(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+
+public abstract class javax.crypto.KeyGeneratorSpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected abstract javax.crypto.SecretKey engineGenerateKey()
+
+protected abstract void engineInit(
+int
+java.security.SecureRandom)
+
+protected abstract void engineInit(
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+protected abstract void engineInit(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+
+public class javax.crypto.Mac extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.fortress.Engine engine
+
+private final java.lang.String algorithm
+
+private boolean isInitMac
+
+private final java.security.Provider provider
+
+private final javax.crypto.MacSpi spiImpl
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+javax.crypto.MacSpi
+java.security.Provider
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static final javax.crypto.Mac getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static final javax.crypto.Mac getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static final javax.crypto.Mac getInstance(
+java.lang.String
+java.security.Provider)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public final java.lang.Object clone()
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException;Ljava/lang/IllegalStateException; )
+public final void doFinal(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public final byte[] doFinal()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public final byte[] doFinal(
+byte[])
+
+public final java.lang.String getAlgorithm()
+
+public final int getMacLength()
+
+public final java.security.Provider getProvider()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public final void init(
+java.security.Key)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+public final void init(
+java.security.Key
+java.security.spec.AlgorithmParameterSpec)
+
+public final void reset()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public final void update(
+byte)
+
+public final void update(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public final void update(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public final void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class javax.crypto.NoSuchPaddingException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class javax.crypto.NullCipher extends javax.crypto.Cipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class javax.crypto.SealedObject extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+protected byte[] encodedParams
+
+private byte[] encryptedContent
+
+private java.lang.String paramsAlg
+
+private java.lang.String sealAlg
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljavax/crypto/IllegalBlockSizeException; )
+public void <init>(
+java.io.Serializable
+javax.crypto.Cipher)
+
+protected void <init>(
+javax.crypto.SealedObject)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+public final java.lang.String getAlgorithm()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException; )
+public final java.lang.Object getObject(
+java.security.Key)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException;Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException;Ljava/security/InvalidKeyException; )
+public final java.lang.Object getObject(
+java.security.Key
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException;Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+public final java.lang.Object getObject(
+javax.crypto.Cipher)
+
+________________CLASS________________
+
+
+public abstract interface class javax.crypto.SecretKey extends java.lang.Object implements java.security.Key
+
+----------------FIELDS----------------
+
+public static final long serialVersionUID
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class javax.crypto.SecretKeyFactory extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.fortress.Engine engine
+
+private final java.lang.String algorithm
+
+private final java.security.Provider provider
+
+private final javax.crypto.SecretKeyFactorySpi spiImpl
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+javax.crypto.SecretKeyFactorySpi
+java.security.Provider
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static final javax.crypto.SecretKeyFactory getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static final javax.crypto.SecretKeyFactory getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static final javax.crypto.SecretKeyFactory getInstance(
+java.lang.String
+java.security.Provider)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+public final javax.crypto.SecretKey generateSecret(
+java.security.spec.KeySpec)
+
+public final java.lang.String getAlgorithm()
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+public final java.security.spec.KeySpec getKeySpec(
+javax.crypto.SecretKey
+java.lang.Class)
+
+public final java.security.Provider getProvider()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public final javax.crypto.SecretKey translateKey(
+javax.crypto.SecretKey)
+
+________________CLASS________________
+
+
+public abstract class javax.crypto.SecretKeyFactorySpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected abstract javax.crypto.SecretKey engineGenerateSecret(
+java.security.spec.KeySpec)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected abstract java.security.spec.KeySpec engineGetKeySpec(
+javax.crypto.SecretKey
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected abstract javax.crypto.SecretKey engineTranslateKey(
+javax.crypto.SecretKey)
+
+________________CLASS________________
+
+
+public class javax.crypto.ShortBufferException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class javax.crypto.interfaces.DHKey extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract javax.crypto.spec.DHParameterSpec getParams()
+
+________________CLASS________________
+
+
+public abstract interface class javax.crypto.interfaces.DHPrivateKey extends java.lang.Object implements javax.crypto.interfaces.DHKey, java.security.PrivateKey
+
+----------------FIELDS----------------
+
+public static final long serialVersionUID
+----------------METHODS----------------
+
+public abstract java.math.BigInteger getX()
+
+________________CLASS________________
+
+
+public abstract interface class javax.crypto.interfaces.DHPublicKey extends java.lang.Object implements javax.crypto.interfaces.DHKey, java.security.PublicKey
+
+----------------FIELDS----------------
+
+public static final long serialVersionUID
+----------------METHODS----------------
+
+public abstract java.math.BigInteger getY()
+
+________________CLASS________________
+
+
+public abstract interface class javax.crypto.interfaces.PBEKey extends java.lang.Object implements javax.crypto.SecretKey
+
+----------------FIELDS----------------
+
+public static final long serialVersionUID
+----------------METHODS----------------
+
+public abstract int getIterationCount()
+
+public abstract char[] getPassword()
+
+public abstract byte[] getSalt()
+
+________________CLASS________________
+
+
+public class javax.crypto.spec.DESKeySpec extends java.lang.Object implements java.security.spec.KeySpec
+
+----------------FIELDS----------------
+
+public static final int DES_KEY_LEN
+
+private static final byte[][] SEMIWEAKS
+
+private final byte[] key
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public void <init>(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public void <init>(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public static boolean isParityAdjusted(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public static boolean isWeak(
+byte[]
+int)
+
+public byte[] getKey()
+
+________________CLASS________________
+
+
+public class javax.crypto.spec.DESedeKeySpec extends java.lang.Object implements java.security.spec.KeySpec
+
+----------------FIELDS----------------
+
+public static final int DES_EDE_KEY_LEN
+
+private final byte[] key
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public void <init>(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public void <init>(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public static boolean isParityAdjusted(
+byte[]
+int)
+
+public byte[] getKey()
+
+________________CLASS________________
+
+
+public class javax.crypto.spec.DHGenParameterSpec extends java.lang.Object implements java.security.spec.AlgorithmParameterSpec
+
+----------------FIELDS----------------
+
+private final int exponentSize
+
+private final int primeSize
+----------------METHODS----------------
+
+public void <init>(
+int
+int)
+
+public int getExponentSize()
+
+public int getPrimeSize()
+
+________________CLASS________________
+
+
+public class javax.crypto.spec.DHParameterSpec extends java.lang.Object implements java.security.spec.AlgorithmParameterSpec
+
+----------------FIELDS----------------
+
+private final java.math.BigInteger g
+
+private final int l
+
+private final java.math.BigInteger p
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger)
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+int)
+
+public java.math.BigInteger getG()
+
+public int getL()
+
+public java.math.BigInteger getP()
+
+________________CLASS________________
+
+
+public class javax.crypto.spec.DHPrivateKeySpec extends java.lang.Object implements java.security.spec.KeySpec
+
+----------------FIELDS----------------
+
+private final java.math.BigInteger g
+
+private final java.math.BigInteger p
+
+private final java.math.BigInteger x
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger)
+
+public java.math.BigInteger getG()
+
+public java.math.BigInteger getP()
+
+public java.math.BigInteger getX()
+
+________________CLASS________________
+
+
+public class javax.crypto.spec.DHPublicKeySpec extends java.lang.Object implements java.security.spec.KeySpec
+
+----------------FIELDS----------------
+
+private final java.math.BigInteger g
+
+private final java.math.BigInteger p
+
+private final java.math.BigInteger y
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger)
+
+public java.math.BigInteger getG()
+
+public java.math.BigInteger getP()
+
+public java.math.BigInteger getY()
+
+________________CLASS________________
+
+
+public class javax.crypto.spec.IvParameterSpec extends java.lang.Object implements java.security.spec.AlgorithmParameterSpec
+
+----------------FIELDS----------------
+
+private final byte[] iv
+----------------METHODS----------------
+
+public void <init>(
+byte[])
+
+public void <init>(
+byte[]
+int
+int)
+
+public byte[] getIV()
+
+________________CLASS________________
+
+
+public class javax.crypto.spec.OAEPParameterSpec extends java.lang.Object implements java.security.spec.AlgorithmParameterSpec
+
+----------------FIELDS----------------
+
+public static final javax.crypto.spec.OAEPParameterSpec DEFAULT
+
+private final java.lang.String mdName
+
+private final java.lang.String mgfName
+
+private final java.security.spec.AlgorithmParameterSpec mgfSpec
+
+private final javax.crypto.spec.PSource pSrc
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.security.spec.AlgorithmParameterSpec
+javax.crypto.spec.PSource)
+
+public java.lang.String getDigestAlgorithm()
+
+public java.lang.String getMGFAlgorithm()
+
+public java.security.spec.AlgorithmParameterSpec getMGFParameters()
+
+public javax.crypto.spec.PSource getPSource()
+
+________________CLASS________________
+
+
+public class javax.crypto.spec.PBEKeySpec extends java.lang.Object implements java.security.spec.KeySpec
+
+----------------FIELDS----------------
+
+private final int iterationCount
+
+private final int keyLength
+
+private char[] password
+
+private final byte[] salt
+----------------METHODS----------------
+
+public void <init>(
+char[])
+
+public void <init>(
+char[]
+byte[]
+int)
+
+public void <init>(
+char[]
+byte[]
+int
+int)
+
+public final void clearPassword()
+
+public final int getIterationCount()
+
+public final int getKeyLength()
+
+public final char[] getPassword()
+
+public final byte[] getSalt()
+
+________________CLASS________________
+
+
+public class javax.crypto.spec.PBEParameterSpec extends java.lang.Object implements java.security.spec.AlgorithmParameterSpec
+
+----------------FIELDS----------------
+
+private final int iterationCount
+
+private final byte[] salt
+----------------METHODS----------------
+
+public void <init>(
+byte[]
+int)
+
+public int getIterationCount()
+
+public byte[] getSalt()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljavax/crypto/spec/PSource$PSpecified; )
+public class javax.crypto.spec.PSource extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.String pSrcName
+----------------METHODS----------------
+
+private void <init>()
+
+protected void <init>(
+java.lang.String)
+
+public java.lang.String getAlgorithm()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljavax/crypto/spec/PSource; )
+@dalvik.annotation.InnerClass (accessFlags =25 name =PSpecified )
+public final class javax.crypto.spec.PSource$PSpecified extends javax.crypto.spec.PSource
+
+----------------FIELDS----------------
+
+public static final javax.crypto.spec.PSource$PSpecified DEFAULT
+
+private final byte[] p
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public void <init>(
+byte[])
+
+public byte[] getValue()
+
+________________CLASS________________
+
+
+public class javax.crypto.spec.RC2ParameterSpec extends java.lang.Object implements java.security.spec.AlgorithmParameterSpec
+
+----------------FIELDS----------------
+
+private final int effectiveKeyBits
+
+private final byte[] iv
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+int
+byte[])
+
+public void <init>(
+int
+byte[]
+int)
+
+public boolean equals(
+java.lang.Object)
+
+public int getEffectiveKeyBits()
+
+public byte[] getIV()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class javax.crypto.spec.RC5ParameterSpec extends java.lang.Object implements java.security.spec.AlgorithmParameterSpec
+
+----------------FIELDS----------------
+
+private final byte[] iv
+
+private final int rounds
+
+private final int version
+
+private final int wordSize
+----------------METHODS----------------
+
+public void <init>(
+int
+int
+int)
+
+public void <init>(
+int
+int
+int
+byte[])
+
+public void <init>(
+int
+int
+int
+byte[]
+int)
+
+public boolean equals(
+java.lang.Object)
+
+public byte[] getIV()
+
+public int getRounds()
+
+public int getVersion()
+
+public int getWordSize()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class javax.crypto.spec.SecretKeySpec extends java.lang.Object implements javax.crypto.SecretKey, java.security.spec.KeySpec, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final java.lang.String algorithm
+
+private final java.lang.String format
+
+private final byte[] key
+----------------METHODS----------------
+
+public void <init>(
+byte[]
+int
+int
+java.lang.String)
+
+public void <init>(
+byte[]
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getAlgorithm()
+
+public byte[] getEncoded()
+
+public java.lang.String getFormat()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public abstract class javax.net.ServerSocketFactory extends java.lang.Object
+
+----------------FIELDS----------------
+
+static javax.net.ServerSocketFactory defaultFactory
+----------------METHODS----------------
+
+protected void <init>()
+
+public static javax.net.ServerSocketFactory getDefault()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.ServerSocket createServerSocket()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.net.ServerSocket createServerSocket(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.net.ServerSocket createServerSocket(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.net.ServerSocket createServerSocket(
+int
+int
+java.net.InetAddress)
+
+________________CLASS________________
+
+
+ class javax.net.DefaultServerSocketFactory extends javax.net.ServerSocketFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.ServerSocket createServerSocket(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.ServerSocket createServerSocket(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.ServerSocket createServerSocket(
+int
+int
+java.net.InetAddress)
+
+________________CLASS________________
+
+
+public abstract class javax.net.SocketFactory extends java.lang.Object
+
+----------------FIELDS----------------
+
+static javax.net.SocketFactory defaultFactory
+----------------METHODS----------------
+
+protected void <init>()
+
+public static javax.net.SocketFactory getDefault()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket createSocket()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/net/UnknownHostException; )
+public abstract java.net.Socket createSocket(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/net/UnknownHostException; )
+public abstract java.net.Socket createSocket(
+java.lang.String
+int
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.net.Socket createSocket(
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.net.Socket createSocket(
+java.net.InetAddress
+int
+java.net.InetAddress
+int)
+
+________________CLASS________________
+
+
+ class javax.net.DefaultSocketFactory extends javax.net.SocketFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket createSocket()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/net/UnknownHostException; )
+public java.net.Socket createSocket(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/net/UnknownHostException; )
+public java.net.Socket createSocket(
+java.lang.String
+int
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket createSocket(
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket createSocket(
+java.net.InetAddress
+int
+java.net.InetAddress
+int)
+
+________________CLASS________________
+
+
+public abstract interface class javax.net.ssl.ManagerFactoryParameters extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class javax.net.ssl.CertPathTrustManagerParameters extends java.lang.Object implements javax.net.ssl.ManagerFactoryParameters
+
+----------------FIELDS----------------
+
+private java.security.cert.CertPathParameters param
+----------------METHODS----------------
+
+public void <init>(
+java.security.cert.CertPathParameters)
+
+public java.security.cert.CertPathParameters getParameters()
+
+________________CLASS________________
+
+
+public class javax.net.ssl.SSLContext extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String SERVICE
+
+private static org.apache.harmony.security.fortress.Engine engine
+
+private final java.lang.String protocol
+
+private final java.security.Provider provider
+
+private final javax.net.ssl.SSLContextSpi spiImpl
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+javax.net.ssl.SSLContextSpi
+java.security.Provider
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static javax.net.ssl.SSLContext getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static javax.net.ssl.SSLContext getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static javax.net.ssl.SSLContext getInstance(
+java.lang.String
+java.security.Provider)
+
+public final javax.net.ssl.SSLEngine createSSLEngine()
+
+public final javax.net.ssl.SSLEngine createSSLEngine(
+java.lang.String
+int)
+
+public final javax.net.ssl.SSLSessionContext getClientSessionContext()
+
+public final java.lang.String getProtocol()
+
+public final java.security.Provider getProvider()
+
+public final javax.net.ssl.SSLSessionContext getServerSessionContext()
+
+public final javax.net.ssl.SSLServerSocketFactory getServerSocketFactory()
+
+public final javax.net.ssl.SSLSocketFactory getSocketFactory()
+@dalvik.annotation.Throws (value =Ljava/security/KeyManagementException; )
+public final void init(
+javax.net.ssl.KeyManager[]
+javax.net.ssl.TrustManager[]
+java.security.SecureRandom)
+
+________________CLASS________________
+
+
+ class javax.net.ssl.ContextImpl extends javax.net.ssl.SSLContext
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+javax.net.ssl.SSLContextSpi
+java.security.Provider
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class javax.net.ssl.HostnameVerifier extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean verify(
+java.lang.String
+javax.net.ssl.SSLSession)
+
+________________CLASS________________
+
+
+ class javax.net.ssl.DefaultHostnameVerifier extends java.lang.Object implements javax.net.ssl.HostnameVerifier
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public boolean verify(
+java.lang.String
+javax.net.ssl.SSLSession)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljavax/net/ssl/SSLContext;>; )
+final class javax.net.ssl.DefaultSSLContext$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object run()
+
+public javax.net.ssl.SSLContext run()
+
+________________CLASS________________
+
+
+ class javax.net.ssl.DefaultSSLContext extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static javax.net.ssl.SSLContext defaultSSLContext
+----------------METHODS----------------
+
+ void <init>()
+
+static javax.net.ssl.SSLContext access$000()
+
+private static javax.net.ssl.SSLContext findDefault()
+
+public static javax.net.ssl.SSLContext getContext()
+
+________________CLASS________________
+
+
+public abstract class javax.net.ssl.SSLServerSocketFactory extends javax.net.ServerSocketFactory
+
+----------------FIELDS----------------
+
+private static java.lang.String defaultName
+
+private static javax.net.ServerSocketFactory defaultServerSocketFactory
+----------------METHODS----------------
+
+protected void <init>()
+
+static java.lang.String access$000()
+
+static java.lang.String access$002(
+java.lang.String)
+
+static javax.net.ServerSocketFactory access$102(
+javax.net.ServerSocketFactory)
+
+public static javax.net.ServerSocketFactory getDefault()
+
+public abstract java.lang.String[] getDefaultCipherSuites()
+
+public abstract java.lang.String[] getSupportedCipherSuites()
+
+________________CLASS________________
+
+
+ class javax.net.ssl.DefaultSSLServerSocketFactory extends javax.net.ssl.SSLServerSocketFactory
+
+----------------FIELDS----------------
+
+private java.lang.String errMessage
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.ServerSocket createServerSocket(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.ServerSocket createServerSocket(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.ServerSocket createServerSocket(
+int
+int
+java.net.InetAddress)
+
+public java.lang.String[] getDefaultCipherSuites()
+
+public java.lang.String[] getSupportedCipherSuites()
+
+________________CLASS________________
+
+
+public abstract class javax.net.ssl.SSLSocketFactory extends javax.net.SocketFactory
+
+----------------FIELDS----------------
+
+private static java.lang.String defaultName
+
+private static javax.net.SocketFactory defaultSocketFactory
+----------------METHODS----------------
+
+public void <init>()
+
+static java.lang.String access$000()
+
+static java.lang.String access$002(
+java.lang.String)
+
+static javax.net.SocketFactory access$102(
+javax.net.SocketFactory)
+
+public static javax.net.SocketFactory getDefault()
+
+private static void log(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.net.Socket createSocket(
+java.net.Socket
+java.lang.String
+int
+boolean)
+
+public abstract java.lang.String[] getDefaultCipherSuites()
+
+public abstract java.lang.String[] getSupportedCipherSuites()
+
+________________CLASS________________
+
+
+ class javax.net.ssl.DefaultSSLSocketFactory extends javax.net.ssl.SSLSocketFactory
+
+----------------FIELDS----------------
+
+private java.lang.String errMessage
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/net/UnknownHostException; )
+public java.net.Socket createSocket(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/net/UnknownHostException; )
+public java.net.Socket createSocket(
+java.lang.String
+int
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket createSocket(
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket createSocket(
+java.net.InetAddress
+int
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket createSocket(
+java.net.Socket
+java.lang.String
+int
+boolean)
+
+public java.lang.String[] getDefaultCipherSuites()
+
+public java.lang.String[] getSupportedCipherSuites()
+
+________________CLASS________________
+
+
+public class javax.net.ssl.HandshakeCompletedEvent extends java.util.EventObject implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private transient javax.net.ssl.SSLSession session
+----------------METHODS----------------
+
+public void <init>(
+javax.net.ssl.SSLSocket
+javax.net.ssl.SSLSession)
+
+public java.lang.String getCipherSuite()
+
+public java.security.cert.Certificate[] getLocalCertificates()
+
+public java.security.Principal getLocalPrincipal()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public javax.security.cert.X509Certificate[] getPeerCertificateChain()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public java.security.cert.Certificate[] getPeerCertificates()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public java.security.Principal getPeerPrincipal()
+
+public javax.net.ssl.SSLSession getSession()
+
+public javax.net.ssl.SSLSocket getSocket()
+
+________________CLASS________________
+
+
+public abstract interface class javax.net.ssl.HandshakeCompletedListener extends java.lang.Object implements java.util.EventListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void handshakeCompleted(
+javax.net.ssl.HandshakeCompletedEvent)
+
+________________CLASS________________
+
+
+public abstract class javax.net.ssl.HttpsURLConnection extends java.net.HttpURLConnection
+
+----------------FIELDS----------------
+
+private static javax.net.ssl.HostnameVerifier defaultHostnameVerifier
+
+private static javax.net.ssl.SSLSocketFactory defaultSSLSocketFactory
+
+private static javax.net.ssl.SSLSocketFactory socketFactory
+
+protected javax.net.ssl.HostnameVerifier hostnameVerifier
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.net.URL)
+
+public static javax.net.ssl.HostnameVerifier getDefaultHostnameVerifier()
+
+public static javax.net.ssl.SSLSocketFactory getDefaultSSLSocketFactory()
+
+public static void setDefaultHostnameVerifier(
+javax.net.ssl.HostnameVerifier)
+
+public static void setDefaultSSLSocketFactory(
+javax.net.ssl.SSLSocketFactory)
+
+public abstract java.lang.String getCipherSuite()
+
+public javax.net.ssl.HostnameVerifier getHostnameVerifier()
+
+public abstract java.security.cert.Certificate[] getLocalCertificates()
+
+public java.security.Principal getLocalPrincipal()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public java.security.Principal getPeerPrincipal()
+
+public javax.net.ssl.SSLSocketFactory getSSLSocketFactory()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public abstract java.security.cert.Certificate[] getServerCertificates()
+
+public void setHostnameVerifier(
+javax.net.ssl.HostnameVerifier)
+
+public void setSSLSocketFactory(
+javax.net.ssl.SSLSocketFactory)
+
+________________CLASS________________
+
+
+public abstract interface class javax.net.ssl.KeyManager extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class javax.net.ssl.KeyManagerFactory$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+
+public class javax.net.ssl.KeyManagerFactory extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String PROPERTY_NAME
+
+private static final java.lang.String SERVICE
+
+private static org.apache.harmony.security.fortress.Engine engine
+
+private final java.lang.String algorithm
+
+private final java.security.Provider provider
+
+private final javax.net.ssl.KeyManagerFactorySpi spiImpl
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+javax.net.ssl.KeyManagerFactorySpi
+java.security.Provider
+java.lang.String)
+
+public static final java.lang.String getDefaultAlgorithm()
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static final javax.net.ssl.KeyManagerFactory getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static final javax.net.ssl.KeyManagerFactory getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static final javax.net.ssl.KeyManagerFactory getInstance(
+java.lang.String
+java.security.Provider)
+
+public final java.lang.String getAlgorithm()
+
+public final javax.net.ssl.KeyManager[] getKeyManagers()
+
+public final java.security.Provider getProvider()
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException;Ljava/security/NoSuchAlgorithmException;Ljava/security/UnrecoverableKeyException; )
+public final void init(
+java.security.KeyStore
+char[])
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public final void init(
+javax.net.ssl.ManagerFactoryParameters)
+
+________________CLASS________________
+
+
+public abstract class javax.net.ssl.KeyManagerFactorySpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected abstract javax.net.ssl.KeyManager[] engineGetKeyManagers()
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException;Ljava/security/NoSuchAlgorithmException;Ljava/security/UnrecoverableKeyException; )
+protected abstract void engineInit(
+java.security.KeyStore
+char[])
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+protected abstract void engineInit(
+javax.net.ssl.ManagerFactoryParameters)
+
+________________CLASS________________
+
+
+public class javax.net.ssl.KeyStoreBuilderParameters extends java.lang.Object implements javax.net.ssl.ManagerFactoryParameters
+
+----------------FIELDS----------------
+
+private java.util.List ksbuilders
+----------------METHODS----------------
+
+public void <init>(
+java.security.KeyStore$Builder)
+
+public void <init>(
+java.util.List)
+
+public java.util.List getParameters()
+
+________________CLASS________________
+
+
+public abstract class javax.net.ssl.SSLContextSpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected abstract javax.net.ssl.SSLEngine engineCreateSSLEngine()
+
+protected abstract javax.net.ssl.SSLEngine engineCreateSSLEngine(
+java.lang.String
+int)
+
+protected abstract javax.net.ssl.SSLSessionContext engineGetClientSessionContext()
+
+protected abstract javax.net.ssl.SSLSessionContext engineGetServerSessionContext()
+
+protected abstract javax.net.ssl.SSLServerSocketFactory engineGetServerSocketFactory()
+
+protected abstract javax.net.ssl.SSLSocketFactory engineGetSocketFactory()
+@dalvik.annotation.Throws (value =Ljava/security/KeyManagementException; )
+protected abstract void engineInit(
+javax.net.ssl.KeyManager[]
+javax.net.ssl.TrustManager[]
+java.security.SecureRandom)
+
+________________CLASS________________
+
+
+public abstract class javax.net.ssl.SSLEngine extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final java.lang.String host
+
+private final int port
+----------------METHODS----------------
+
+protected void <init>()
+
+protected void <init>(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public abstract void beginHandshake()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public abstract void closeInbound()
+
+public abstract void closeOutbound()
+
+public abstract java.lang.Runnable getDelegatedTask()
+
+public abstract boolean getEnableSessionCreation()
+
+public abstract java.lang.String[] getEnabledCipherSuites()
+
+public abstract java.lang.String[] getEnabledProtocols()
+
+public abstract javax.net.ssl.SSLEngineResult$HandshakeStatus getHandshakeStatus()
+
+public abstract boolean getNeedClientAuth()
+
+public java.lang.String getPeerHost()
+
+public int getPeerPort()
+
+public abstract javax.net.ssl.SSLSession getSession()
+
+public abstract java.lang.String[] getSupportedCipherSuites()
+
+public abstract java.lang.String[] getSupportedProtocols()
+
+public abstract boolean getUseClientMode()
+
+public abstract boolean getWantClientAuth()
+
+public abstract boolean isInboundDone()
+
+public abstract boolean isOutboundDone()
+
+public abstract void setEnableSessionCreation(
+boolean)
+
+public abstract void setEnabledCipherSuites(
+java.lang.String[])
+
+public abstract void setEnabledProtocols(
+java.lang.String[])
+
+public abstract void setNeedClientAuth(
+boolean)
+
+public abstract void setUseClientMode(
+boolean)
+
+public abstract void setWantClientAuth(
+boolean)
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public javax.net.ssl.SSLEngineResult unwrap(
+java.nio.ByteBuffer
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public javax.net.ssl.SSLEngineResult unwrap(
+java.nio.ByteBuffer
+java.nio.ByteBuffer[])
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public abstract javax.net.ssl.SSLEngineResult unwrap(
+java.nio.ByteBuffer
+java.nio.ByteBuffer[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public javax.net.ssl.SSLEngineResult wrap(
+java.nio.ByteBuffer
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public abstract javax.net.ssl.SSLEngineResult wrap(
+java.nio.ByteBuffer[]
+int
+int
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public javax.net.ssl.SSLEngineResult wrap(
+java.nio.ByteBuffer[]
+java.nio.ByteBuffer)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =HandshakeStatus )
+@dalvik.annotation.EnclosingClass (value =Ljavax/net/ssl/SSLEngineResult; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;>; )
+public final class javax.net.ssl.SSLEngineResult$HandshakeStatus extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final javax.net.ssl.SSLEngineResult$HandshakeStatus[] $VALUES
+
+public static final javax.net.ssl.SSLEngineResult$HandshakeStatus FINISHED
+
+public static final javax.net.ssl.SSLEngineResult$HandshakeStatus NEED_TASK
+
+public static final javax.net.ssl.SSLEngineResult$HandshakeStatus NEED_UNWRAP
+
+public static final javax.net.ssl.SSLEngineResult$HandshakeStatus NEED_WRAP
+
+public static final javax.net.ssl.SSLEngineResult$HandshakeStatus NOT_HANDSHAKING
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static javax.net.ssl.SSLEngineResult$HandshakeStatus valueOf(
+java.lang.String)
+
+public static javax.net.ssl.SSLEngineResult$HandshakeStatus[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16409 name =Status )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Ljavax/net/ssl/SSLEngineResult$Status;>; )
+@dalvik.annotation.EnclosingClass (value =Ljavax/net/ssl/SSLEngineResult; )
+public final class javax.net.ssl.SSLEngineResult$Status extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final javax.net.ssl.SSLEngineResult$Status[] $VALUES
+
+public static final javax.net.ssl.SSLEngineResult$Status BUFFER_OVERFLOW
+
+public static final javax.net.ssl.SSLEngineResult$Status BUFFER_UNDERFLOW
+
+public static final javax.net.ssl.SSLEngineResult$Status CLOSED
+
+public static final javax.net.ssl.SSLEngineResult$Status OK
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static javax.net.ssl.SSLEngineResult$Status valueOf(
+java.lang.String)
+
+public static javax.net.ssl.SSLEngineResult$Status[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljavax/net/ssl/SSLEngineResult$Status;Ljavax/net/ssl/SSLEngineResult$HandshakeStatus; )
+public class javax.net.ssl.SSLEngineResult extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int bytesConsumed
+
+private final int bytesProduced
+
+private final javax.net.ssl.SSLEngineResult$HandshakeStatus handshakeStatus
+
+private final javax.net.ssl.SSLEngineResult$Status status
+----------------METHODS----------------
+
+public void <init>(
+javax.net.ssl.SSLEngineResult$Status
+javax.net.ssl.SSLEngineResult$HandshakeStatus
+int
+int)
+
+public final int bytesConsumed()
+
+public final int bytesProduced()
+
+public final javax.net.ssl.SSLEngineResult$HandshakeStatus getHandshakeStatus()
+
+public final javax.net.ssl.SSLEngineResult$Status getStatus()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class javax.net.ssl.SSLException extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public class javax.net.ssl.SSLHandshakeException extends javax.net.ssl.SSLException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class javax.net.ssl.SSLKeyException extends javax.net.ssl.SSLException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class javax.net.ssl.SSLPeerUnverifiedException extends javax.net.ssl.SSLException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class javax.net.ssl.SSLPermission extends java.security.BasicPermission
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class javax.net.ssl.SSLProtocolException extends javax.net.ssl.SSLException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class javax.net.ssl.SSLServerSocket extends java.net.ServerSocket
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+int
+int
+java.net.InetAddress)
+
+public abstract boolean getEnableSessionCreation()
+
+public abstract java.lang.String[] getEnabledCipherSuites()
+
+public abstract java.lang.String[] getEnabledProtocols()
+
+public abstract boolean getNeedClientAuth()
+
+public abstract java.lang.String[] getSupportedCipherSuites()
+
+public abstract java.lang.String[] getSupportedProtocols()
+
+public abstract boolean getUseClientMode()
+
+public abstract boolean getWantClientAuth()
+
+public abstract void setEnableSessionCreation(
+boolean)
+
+public abstract void setEnabledCipherSuites(
+java.lang.String[])
+
+public abstract void setEnabledProtocols(
+java.lang.String[])
+
+public abstract void setNeedClientAuth(
+boolean)
+
+public abstract void setUseClientMode(
+boolean)
+
+public abstract void setWantClientAuth(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class javax.net.ssl.SSLServerSocketFactory$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+
+public abstract interface class javax.net.ssl.SSLSession extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int getApplicationBufferSize()
+
+public abstract java.lang.String getCipherSuite()
+
+public abstract long getCreationTime()
+
+public abstract byte[] getId()
+
+public abstract long getLastAccessedTime()
+
+public abstract java.security.cert.Certificate[] getLocalCertificates()
+
+public abstract java.security.Principal getLocalPrincipal()
+
+public abstract int getPacketBufferSize()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public abstract javax.security.cert.X509Certificate[] getPeerCertificateChain()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public abstract java.security.cert.Certificate[] getPeerCertificates()
+
+public abstract java.lang.String getPeerHost()
+
+public abstract int getPeerPort()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public abstract java.security.Principal getPeerPrincipal()
+
+public abstract java.lang.String getProtocol()
+
+public abstract javax.net.ssl.SSLSessionContext getSessionContext()
+
+public abstract java.lang.Object getValue(
+java.lang.String)
+
+public abstract java.lang.String[] getValueNames()
+
+public abstract void invalidate()
+
+public abstract boolean isValid()
+
+public abstract void putValue(
+java.lang.String
+java.lang.Object)
+
+public abstract void removeValue(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class javax.net.ssl.SSLSessionBindingEvent extends java.util.EventObject implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.String name
+----------------METHODS----------------
+
+public void <init>(
+javax.net.ssl.SSLSession
+java.lang.String)
+
+public java.lang.String getName()
+
+public javax.net.ssl.SSLSession getSession()
+
+________________CLASS________________
+
+
+public abstract interface class javax.net.ssl.SSLSessionBindingListener extends java.lang.Object implements java.util.EventListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void valueBound(
+javax.net.ssl.SSLSessionBindingEvent)
+
+public abstract void valueUnbound(
+javax.net.ssl.SSLSessionBindingEvent)
+
+________________CLASS________________
+
+
+public abstract interface class javax.net.ssl.SSLSessionContext extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.util.Enumeration getIds()
+
+public abstract javax.net.ssl.SSLSession getSession(
+byte[])
+
+public abstract int getSessionCacheSize()
+
+public abstract int getSessionTimeout()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public abstract void setSessionCacheSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public abstract void setSessionTimeout(
+int)
+
+________________CLASS________________
+
+
+public abstract class javax.net.ssl.SSLSocket extends java.net.Socket
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/net/UnknownHostException; )
+protected void <init>(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/net/UnknownHostException; )
+protected void <init>(
+java.lang.String
+int
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+java.net.InetAddress
+int
+java.net.InetAddress
+int)
+
+public abstract void addHandshakeCompletedListener(
+javax.net.ssl.HandshakeCompletedListener)
+
+public abstract boolean getEnableSessionCreation()
+
+public abstract java.lang.String[] getEnabledCipherSuites()
+
+public abstract java.lang.String[] getEnabledProtocols()
+
+public abstract boolean getNeedClientAuth()
+
+public abstract javax.net.ssl.SSLSession getSession()
+
+public abstract java.lang.String[] getSupportedCipherSuites()
+
+public abstract java.lang.String[] getSupportedProtocols()
+
+public abstract boolean getUseClientMode()
+
+public abstract boolean getWantClientAuth()
+
+public abstract void removeHandshakeCompletedListener(
+javax.net.ssl.HandshakeCompletedListener)
+
+public abstract void setEnableSessionCreation(
+boolean)
+
+public abstract void setEnabledCipherSuites(
+java.lang.String[])
+
+public abstract void setEnabledProtocols(
+java.lang.String[])
+
+public abstract void setNeedClientAuth(
+boolean)
+
+public abstract void setUseClientMode(
+boolean)
+
+public abstract void setWantClientAuth(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void startHandshake()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class javax.net.ssl.SSLSocketFactory$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+
+public abstract interface class javax.net.ssl.TrustManager extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+final class javax.net.ssl.TrustManagerFactory$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+
+public class javax.net.ssl.TrustManagerFactory extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String PROPERTYNAME
+
+private static final java.lang.String SERVICE
+
+private static org.apache.harmony.security.fortress.Engine engine
+
+private final java.lang.String algorithm
+
+private final java.security.Provider provider
+
+private final javax.net.ssl.TrustManagerFactorySpi spiImpl
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+javax.net.ssl.TrustManagerFactorySpi
+java.security.Provider
+java.lang.String)
+
+public static final java.lang.String getDefaultAlgorithm()
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static final javax.net.ssl.TrustManagerFactory getInstance(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException; )
+public static final javax.net.ssl.TrustManagerFactory getInstance(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static final javax.net.ssl.TrustManagerFactory getInstance(
+java.lang.String
+java.security.Provider)
+
+public final java.lang.String getAlgorithm()
+
+public final java.security.Provider getProvider()
+
+public final javax.net.ssl.TrustManager[] getTrustManagers()
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public final void init(
+java.security.KeyStore)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public final void init(
+javax.net.ssl.ManagerFactoryParameters)
+
+________________CLASS________________
+
+
+public abstract class javax.net.ssl.TrustManagerFactorySpi extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected abstract javax.net.ssl.TrustManager[] engineGetTrustManagers()
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+protected abstract void engineInit(
+java.security.KeyStore)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+protected abstract void engineInit(
+javax.net.ssl.ManagerFactoryParameters)
+
+________________CLASS________________
+
+
+public abstract interface class javax.net.ssl.X509KeyManager extends java.lang.Object implements javax.net.ssl.KeyManager
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String chooseClientAlias(
+java.lang.String[]
+java.security.Principal[]
+java.net.Socket)
+
+public abstract java.lang.String chooseServerAlias(
+java.lang.String
+java.security.Principal[]
+java.net.Socket)
+
+public abstract java.security.cert.X509Certificate[] getCertificateChain(
+java.lang.String)
+
+public abstract java.lang.String[] getClientAliases(
+java.lang.String
+java.security.Principal[])
+
+public abstract java.security.PrivateKey getPrivateKey(
+java.lang.String)
+
+public abstract java.lang.String[] getServerAliases(
+java.lang.String
+java.security.Principal[])
+
+________________CLASS________________
+
+
+public abstract class javax.net.ssl.X509ExtendedKeyManager extends java.lang.Object implements javax.net.ssl.X509KeyManager
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+
+public java.lang.String chooseEngineClientAlias(
+java.lang.String[]
+java.security.Principal[]
+javax.net.ssl.SSLEngine)
+
+public java.lang.String chooseEngineServerAlias(
+java.lang.String
+java.security.Principal[]
+javax.net.ssl.SSLEngine)
+
+________________CLASS________________
+
+
+public abstract interface class javax.net.ssl.X509TrustManager extends java.lang.Object implements javax.net.ssl.TrustManager
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public abstract void checkClientTrusted(
+java.security.cert.X509Certificate[]
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public abstract void checkServerTrusted(
+java.security.cert.X509Certificate[]
+java.lang.String)
+
+public abstract java.security.cert.X509Certificate[] getAcceptedIssuers()
+
+________________CLASS________________
+
+
+public final class javax.security.auth.AuthPermission extends java.security.BasicPermission
+
+----------------FIELDS----------------
+
+private static final java.lang.String CREATE_LOGIN_CONTEXT
+
+private static final java.lang.String CREATE_LOGIN_CONTEXT_ANY
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+private static java.lang.String init(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class javax.security.auth.DestroyFailedException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Ljavax/security/auth/PrivateCredentialPermission; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =CredOwner )
+final class javax.security.auth.PrivateCredentialPermission$CredOwner extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private transient boolean isClassWildcard
+
+private transient boolean isPNameWildcard
+
+ java.lang.String principalClass
+
+ java.lang.String principalName
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+ boolean implies(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljavax/security/auth/PrivateCredentialPermission$CredOwner; )
+public final class javax.security.auth.PrivateCredentialPermission extends java.security.Permission
+
+----------------FIELDS----------------
+
+private static final java.lang.String READ
+
+private static final long serialVersionUID
+
+private java.lang.String credentialClass
+
+private transient int offset
+
+private transient javax.security.auth.PrivateCredentialPermission$CredOwner[] set
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/Set<Ljava/security/Principal;>;)V )
+ void <init>(
+java.lang.String
+java.util.Set)
+
+private void initTargetName(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+private boolean sameMembers(
+java.lang.Object[]
+java.lang.Object[]
+int)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getActions()
+
+public java.lang.String getCredentialClass()
+
+public java.lang.String[][] getPrincipals()
+
+public int hashCode()
+
+public boolean implies(
+java.security.Permission)
+
+public java.security.PermissionCollection newPermissionCollection()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class javax.security.auth.Subject$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final javax.security.auth.SubjectDomainCombiner val$combiner
+
+final java.security.AccessControlContext val$context
+----------------METHODS----------------
+
+ void <init>(
+java.security.AccessControlContext
+javax.security.auth.SubjectDomainCombiner)
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/security/AccessControlContext;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class javax.security.auth.Subject$2 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final javax.security.auth.SubjectDomainCombiner val$combiner
+
+final java.security.AccessControlContext val$context
+----------------METHODS----------------
+
+ void <init>(
+java.security.AccessControlContext
+javax.security.auth.SubjectDomainCombiner)
+
+public volatile java.lang.Object run()
+
+public java.security.AccessControlContext run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/security/DomainCombiner;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class javax.security.auth.Subject$3 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.security.AccessControlContext val$context
+----------------METHODS----------------
+
+ void <init>(
+java.security.AccessControlContext)
+
+public volatile java.lang.Object run()
+
+public java.security.DomainCombiner run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =SecureIterator )
+@dalvik.annotation.EnclosingClass (value =Ljavax/security/auth/Subject$SecureSet; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<TSST;>; )
+ class javax.security.auth.Subject$SecureSet$SecureIterator extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Iterator<TSST;>; )
+protected java.util.Iterator iterator
+
+final javax.security.auth.Subject$SecureSet this$1
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Iterator<TSST;>;)V )
+protected void <init>(
+javax.security.auth.Subject$SecureSet
+java.util.Iterator)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TSST; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class javax.security.auth.Subject$SecureSet$1 extends javax.security.auth.Subject$SecureSet$SecureIterator
+
+----------------FIELDS----------------
+
+final javax.security.auth.Subject$SecureSet this$1
+----------------METHODS----------------
+
+ void <init>(
+javax.security.auth.Subject$SecureSet
+java.util.Iterator)
+@dalvik.annotation.Signature (value =()TSST; )
+public java.lang.Object next()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractSet<TE;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class javax.security.auth.Subject$SecureSet$2 extends java.util.AbstractSet
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/LinkedList<TE;>; )
+private java.util.LinkedList elements
+
+final javax.security.auth.Subject$SecureSet this$1
+
+final java.lang.Class val$c
+----------------METHODS----------------
+
+ void <init>(
+javax.security.auth.Subject$SecureSet
+java.lang.Class)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean retainAll(
+java.util.Collection)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =18 name =SecureSet )
+@dalvik.annotation.Signature (value =<SST:Ljava/lang/Object;>Ljava/util/AbstractSet<TSST;>;Ljava/io/Serializable; )
+@dalvik.annotation.MemberClasses (value =Ljavax/security/auth/Subject$SecureSet$SecureIterator; )
+@dalvik.annotation.EnclosingClass (value =Ljavax/security/auth/Subject; )
+final class javax.security.auth.Subject$SecureSet extends java.util.AbstractSet implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final int SET_Principal
+
+private static final int SET_PrivCred
+
+private static final int SET_PubCred
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/LinkedList<TSST;>; )
+private java.util.LinkedList elements
+
+private transient javax.security.auth.AuthPermission permission
+
+private int setType
+
+final javax.security.auth.Subject this$0
+----------------METHODS----------------
+
+protected void <init>(
+javax.security.auth.Subject
+javax.security.auth.AuthPermission)
+@dalvik.annotation.Signature (value =(Ljavax/security/auth/AuthPermission;Ljava/util/Collection<+TSST;>;)V )
+protected void <init>(
+javax.security.auth.Subject
+javax.security.auth.AuthPermission
+java.util.Collection)
+
+static javax.security.auth.AuthPermission access$600(
+javax.security.auth.Subject$SecureSet)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+private void verifyElement(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+@dalvik.annotation.Signature (value =(TSST;)Z )
+public boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>(Ljava/lang/Class<TE;>;)Ljava/util/Set<TE;>; )
+protected final java.util.Set get(
+java.lang.Class)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TSST;>; )
+public java.util.Iterator iterator()
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean retainAll(
+java.util.Collection)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Ljavax/security/auth/Subject$SecureSet; )
+public final class javax.security.auth.Subject extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final javax.security.auth.AuthPermission _AS
+
+private static final javax.security.auth.AuthPermission _AS_PRIVILEGED
+
+private static final javax.security.auth.AuthPermission _PRINCIPALS
+
+private static final javax.security.auth.AuthPermission _PRIVATE_CREDENTIALS
+
+private static final javax.security.auth.AuthPermission _PUBLIC_CREDENTIALS
+
+private static final javax.security.auth.AuthPermission _READ_ONLY
+
+private static final javax.security.auth.AuthPermission _SUBJECT
+
+private static final long serialVersionUID
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/security/Principal;>; )
+private final java.util.Set principals
+@dalvik.annotation.Signature (value =Ljavax/security/auth/Subject$SecureSet<Ljava/lang/Object;>; )
+private transient javax.security.auth.Subject$SecureSet privateCredentials
+@dalvik.annotation.Signature (value =Ljavax/security/auth/Subject$SecureSet<Ljava/lang/Object;>; )
+private transient javax.security.auth.Subject$SecureSet publicCredentials
+
+private boolean readOnly
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Signature (value =(ZLjava/util/Set<+Ljava/security/Principal;>;Ljava/util/Set<*>;Ljava/util/Set<*>;)V )
+public void <init>(
+boolean
+java.util.Set
+java.util.Set
+java.util.Set)
+
+static javax.security.auth.AuthPermission access$000()
+
+static void access$100(
+javax.security.auth.Subject)
+
+static void access$200(
+java.security.Permission)
+
+static javax.security.auth.AuthPermission access$300()
+
+static java.util.Set access$400(
+javax.security.auth.Subject)
+
+static javax.security.auth.AuthPermission access$500()
+
+private static void checkPermission(
+java.security.Permission)
+
+private void checkState()
+
+public static java.lang.Object doAs(
+javax.security.auth.Subject
+java.security.PrivilegedAction)
+@dalvik.annotation.Throws (value =Ljava/security/PrivilegedActionException; )
+public static java.lang.Object doAs(
+javax.security.auth.Subject
+java.security.PrivilegedExceptionAction)
+
+public static java.lang.Object doAsPrivileged(
+javax.security.auth.Subject
+java.security.PrivilegedAction
+java.security.AccessControlContext)
+@dalvik.annotation.Throws (value =Ljava/security/PrivilegedActionException; )
+public static java.lang.Object doAsPrivileged(
+javax.security.auth.Subject
+java.security.PrivilegedExceptionAction
+java.security.AccessControlContext)
+
+private static java.lang.Object doAs_PrivilegedAction(
+javax.security.auth.Subject
+java.security.PrivilegedAction
+java.security.AccessControlContext)
+@dalvik.annotation.Throws (value =Ljava/security/PrivilegedActionException; )
+private static java.lang.Object doAs_PrivilegedExceptionAction(
+javax.security.auth.Subject
+java.security.PrivilegedExceptionAction
+java.security.AccessControlContext)
+
+public static javax.security.auth.Subject getSubject(
+java.security.AccessControlContext)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/security/Principal;>; )
+public java.util.Set getPrincipals()
+@dalvik.annotation.Signature (value =<T::Ljava/security/Principal;>(Ljava/lang/Class<TT;>;)Ljava/util/Set<TT;>; )
+public java.util.Set getPrincipals(
+java.lang.Class)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/Object;>; )
+public java.util.Set getPrivateCredentials()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)Ljava/util/Set<TT;>; )
+public java.util.Set getPrivateCredentials(
+java.lang.Class)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/lang/Object;>; )
+public java.util.Set getPublicCredentials()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)Ljava/util/Set<TT;>; )
+public java.util.Set getPublicCredentials(
+java.lang.Class)
+
+public int hashCode()
+
+public boolean isReadOnly()
+
+public void setReadOnly()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class javax.security.auth.SubjectDomainCombiner extends java.lang.Object implements java.security.DomainCombiner
+
+----------------FIELDS----------------
+
+private static final javax.security.auth.AuthPermission _GET
+
+private javax.security.auth.Subject subject
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+javax.security.auth.Subject)
+
+public java.security.ProtectionDomain[] combine(
+java.security.ProtectionDomain[]
+java.security.ProtectionDomain[])
+
+public javax.security.auth.Subject getSubject()
+
+________________CLASS________________
+
+
+public abstract interface class javax.security.auth.callback.Callback extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class javax.security.auth.callback.CallbackHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljavax/security/auth/callback/UnsupportedCallbackException; )
+public abstract void handle(
+javax.security.auth.callback.Callback[])
+
+________________CLASS________________
+
+
+public class javax.security.auth.callback.PasswordCallback extends java.lang.Object implements javax.security.auth.callback.Callback, java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+ boolean echoOn
+
+private char[] inputPassword
+
+private java.lang.String prompt
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+private void setPrompt(
+java.lang.String)
+
+public void clearPassword()
+
+public char[] getPassword()
+
+public java.lang.String getPrompt()
+
+public boolean isEchoOn()
+
+public void setPassword(
+char[])
+
+________________CLASS________________
+
+
+public class javax.security.auth.callback.UnsupportedCallbackException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private javax.security.auth.callback.Callback callback
+----------------METHODS----------------
+
+public void <init>(
+javax.security.auth.callback.Callback)
+
+public void <init>(
+javax.security.auth.callback.Callback
+java.lang.String)
+
+public javax.security.auth.callback.Callback getCallback()
+
+________________CLASS________________
+
+
+public class javax.security.auth.login.LoginException extends java.security.GeneralSecurityException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class javax.security.auth.x500.X500Principal extends java.lang.Object implements java.io.Serializable, java.security.Principal
+
+----------------FIELDS----------------
+
+public static final java.lang.String CANONICAL
+
+public static final java.lang.String RFC1779
+
+public static final java.lang.String RFC2253
+
+private static final long serialVersionUID
+
+private transient org.apache.harmony.security.x501.Name dn
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream)
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public byte[] getEncoded()
+
+public java.lang.String getName()
+
+public java.lang.String getName(
+java.lang.String)
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract class javax.security.cert.Certificate extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljavax/security/cert/CertificateEncodingException; )
+public abstract byte[] getEncoded()
+
+public abstract java.security.PublicKey getPublicKey()
+
+public int hashCode()
+
+public abstract java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljavax/security/cert/CertificateException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public abstract void verify(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljavax/security/cert/CertificateException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public abstract void verify(
+java.security.PublicKey
+java.lang.String)
+
+________________CLASS________________
+
+
+public class javax.security.cert.CertificateException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class javax.security.cert.CertificateEncodingException extends javax.security.cert.CertificateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class javax.security.cert.CertificateExpiredException extends javax.security.cert.CertificateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class javax.security.cert.CertificateNotYetValidException extends javax.security.cert.CertificateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class javax.security.cert.CertificateParsingException extends javax.security.cert.CertificateException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Ljavax/security/cert/X509Certificate; )
+final class javax.security.cert.X509Certificate$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+
+public abstract class javax.security.cert.X509Certificate extends javax.security.cert.Certificate
+
+----------------FIELDS----------------
+
+private static java.lang.reflect.Constructor constructor
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljavax/security/cert/CertificateException; )
+public static final javax.security.cert.X509Certificate getInstance(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljavax/security/cert/CertificateException; )
+public static final javax.security.cert.X509Certificate getInstance(
+byte[])
+@dalvik.annotation.Throws (value =Ljavax/security/cert/CertificateExpiredException;Ljavax/security/cert/CertificateNotYetValidException; )
+public abstract void checkValidity()
+@dalvik.annotation.Throws (value =Ljavax/security/cert/CertificateExpiredException;Ljavax/security/cert/CertificateNotYetValidException; )
+public abstract void checkValidity(
+java.util.Date)
+
+public abstract java.security.Principal getIssuerDN()
+
+public abstract java.util.Date getNotAfter()
+
+public abstract java.util.Date getNotBefore()
+
+public abstract java.math.BigInteger getSerialNumber()
+
+public abstract java.lang.String getSigAlgName()
+
+public abstract java.lang.String getSigAlgOID()
+
+public abstract byte[] getSigAlgParams()
+
+public abstract java.security.Principal getSubjectDN()
+
+public abstract int getVersion()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class javax.security.cert.X509Certificate$2 extends javax.security.cert.X509Certificate
+
+----------------FIELDS----------------
+
+final java.security.cert.X509Certificate val$cert
+----------------METHODS----------------
+
+ void <init>(
+java.security.cert.X509Certificate)
+@dalvik.annotation.Throws (value =Ljavax/security/cert/CertificateExpiredException;Ljavax/security/cert/CertificateNotYetValidException; )
+public void checkValidity()
+@dalvik.annotation.Throws (value =Ljavax/security/cert/CertificateExpiredException;Ljavax/security/cert/CertificateNotYetValidException; )
+public void checkValidity(
+java.util.Date)
+@dalvik.annotation.Throws (value =Ljavax/security/cert/CertificateEncodingException; )
+public byte[] getEncoded()
+
+public java.security.Principal getIssuerDN()
+
+public java.util.Date getNotAfter()
+
+public java.util.Date getNotBefore()
+
+public java.security.PublicKey getPublicKey()
+
+public java.math.BigInteger getSerialNumber()
+
+public java.lang.String getSigAlgName()
+
+public java.lang.String getSigAlgOID()
+
+public byte[] getSigAlgParams()
+
+public java.security.Principal getSubjectDN()
+
+public int getVersion()
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljavax/security/cert/CertificateException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public void verify(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljavax/security/cert/CertificateException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public void verify(
+java.security.PublicKey
+java.lang.String)
+
+________________CLASS________________
+
+
+public class javax.sql.ConnectionEvent extends java.util.EventObject implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.sql.SQLException theSQLException
+----------------METHODS----------------
+
+public void <init>(
+javax.sql.PooledConnection)
+
+public void <init>(
+javax.sql.PooledConnection
+java.sql.SQLException)
+
+public java.sql.SQLException getSQLException()
+
+________________CLASS________________
+
+
+public abstract interface class javax.sql.ConnectionEventListener extends java.lang.Object implements java.util.EventListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void connectionClosed(
+javax.sql.ConnectionEvent)
+
+public abstract void connectionErrorOccurred(
+javax.sql.ConnectionEvent)
+
+________________CLASS________________
+
+
+public abstract interface class javax.sql.ConnectionPoolDataSource extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.PrintWriter getLogWriter()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getLoginTimeout()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract javax.sql.PooledConnection getPooledConnection()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract javax.sql.PooledConnection getPooledConnection(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setLogWriter(
+java.io.PrintWriter)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setLoginTimeout(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class javax.sql.DataSource extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Connection getConnection()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Connection getConnection(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.io.PrintWriter getLogWriter()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getLoginTimeout()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setLogWriter(
+java.io.PrintWriter)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setLoginTimeout(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class javax.sql.PooledConnection extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void addConnectionEventListener(
+javax.sql.ConnectionEventListener)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void close()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Connection getConnection()
+
+public abstract void removeConnectionEventListener(
+javax.sql.ConnectionEventListener)
+
+________________CLASS________________
+
+
+public abstract interface class javax.sql.RowSet extends java.lang.Object implements java.sql.ResultSet
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void addRowSetListener(
+javax.sql.RowSetListener)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void clearParameters()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void execute()
+
+public abstract java.lang.String getCommand()
+
+public abstract java.lang.String getDataSourceName()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean getEscapeProcessing()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxFieldSize()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getMaxRows()
+
+public abstract java.lang.String getPassword()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract int getQueryTimeout()
+
+public abstract int getTransactionIsolation()
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>; )
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.util.Map getTypeMap()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.String getUrl()
+
+public abstract java.lang.String getUsername()
+
+public abstract boolean isReadOnly()
+
+public abstract void removeRowSetListener(
+javax.sql.RowSetListener)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setArray(
+int
+java.sql.Array)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setAsciiStream(
+int
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setBigDecimal(
+int
+java.math.BigDecimal)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setBinaryStream(
+int
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setBlob(
+int
+java.sql.Blob)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setBoolean(
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setByte(
+int
+byte)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setBytes(
+int
+byte[])
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setCharacterStream(
+int
+java.io.Reader
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setClob(
+int
+java.sql.Clob)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setCommand(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setConcurrency(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setDataSourceName(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setDate(
+int
+java.sql.Date)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setDate(
+int
+java.sql.Date
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setDouble(
+int
+double)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setEscapeProcessing(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setFloat(
+int
+float)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setInt(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setLong(
+int
+long)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setMaxFieldSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setMaxRows(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setNull(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setNull(
+int
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setObject(
+int
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setObject(
+int
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setObject(
+int
+java.lang.Object
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setPassword(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setQueryTimeout(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setReadOnly(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setRef(
+int
+java.sql.Ref)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setShort(
+int
+short)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setString(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setTime(
+int
+java.sql.Time)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setTime(
+int
+java.sql.Time
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setTimestamp(
+int
+java.sql.Timestamp)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setTimestamp(
+int
+java.sql.Timestamp
+java.util.Calendar)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setTransactionIsolation(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setType(
+int)
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;)V )
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setTypeMap(
+java.util.Map)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setUrl(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setUsername(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class javax.sql.RowSetEvent extends java.util.EventObject implements java.io.Serializable
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+javax.sql.RowSet)
+
+________________CLASS________________
+
+
+public abstract interface class javax.sql.RowSetInternal extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.Connection getConnection()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getOriginal()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.sql.ResultSet getOriginalRow()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract java.lang.Object[] getParams()
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setMetaData(
+javax.sql.RowSetMetaData)
+
+________________CLASS________________
+
+
+public abstract interface class javax.sql.RowSetListener extends java.lang.Object implements java.util.EventListener
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void cursorMoved(
+javax.sql.RowSetEvent)
+
+public abstract void rowChanged(
+javax.sql.RowSetEvent)
+
+public abstract void rowSetChanged(
+javax.sql.RowSetEvent)
+
+________________CLASS________________
+
+
+public abstract interface class javax.sql.RowSetMetaData extends java.lang.Object implements java.sql.ResultSetMetaData
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setAutoIncrement(
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setCaseSensitive(
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setCatalogName(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setColumnCount(
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setColumnDisplaySize(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setColumnLabel(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setColumnName(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setColumnType(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setColumnTypeName(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setCurrency(
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setNullable(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setPrecision(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setScale(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setSchemaName(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setSearchable(
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setSigned(
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void setTableName(
+int
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class javax.sql.RowSetReader extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract void readData(
+javax.sql.RowSetInternal)
+
+________________CLASS________________
+
+
+public abstract interface class javax.sql.RowSetWriter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/sql/SQLException; )
+public abstract boolean writeData(
+javax.sql.RowSetInternal)
+
+________________CLASS________________
+
+
+public class javax.xml.XMLConstants extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String DEFAULT_NS_PREFIX
+
+public static final java.lang.String FEATURE_SECURE_PROCESSING
+
+public static final java.lang.String NULL_NS_URI
+
+public static final java.lang.String RELAXNG_NS_URI
+
+public static final java.lang.String W3C_XML_SCHEMA_INSTANCE_NS_URI
+
+public static final java.lang.String W3C_XML_SCHEMA_NS_URI
+
+public static final java.lang.String W3C_XPATH_DATATYPE_NS_URI
+
+public static final java.lang.String XMLNS_ATTRIBUTE
+
+public static final java.lang.String XMLNS_ATTRIBUTE_NS_URI
+
+public static final java.lang.String XML_DTD_NS_URI
+
+public static final java.lang.String XML_NS_PREFIX
+
+public static final java.lang.String XML_NS_URI
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public abstract class javax.xml.parsers.DocumentBuilder extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+
+public abstract org.w3c.dom.DOMImplementation getDOMImplementation()
+
+public abstract boolean isNamespaceAware()
+
+public abstract boolean isValidating()
+@dalvik.annotation.Throws (value =Ljava/lang/UnsupportedOperationException; )
+public boolean isXIncludeAware()
+
+public abstract org.w3c.dom.Document newDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public org.w3c.dom.Document parse(
+java.io.File)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public org.w3c.dom.Document parse(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public org.w3c.dom.Document parse(
+java.io.InputStream
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public org.w3c.dom.Document parse(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public abstract org.w3c.dom.Document parse(
+org.xml.sax.InputSource)
+
+public void reset()
+
+public abstract void setEntityResolver(
+org.xml.sax.EntityResolver)
+
+public abstract void setErrorHandler(
+org.xml.sax.ErrorHandler)
+
+________________CLASS________________
+
+
+public abstract class javax.xml.parsers.DocumentBuilderFactory extends java.lang.Object
+
+----------------FIELDS----------------
+
+private boolean coalesce
+
+private boolean expandEntityReferences
+
+private boolean ignoreComments
+
+private boolean ignoreElementContentWhitespace
+
+private boolean namespaceAware
+
+private boolean validate
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Throws (value =Ljavax/xml/parsers/FactoryConfigurationError; )
+public static javax.xml.parsers.DocumentBuilderFactory newInstance()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public abstract java.lang.Object getAttribute(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljavax/xml/parsers/ParserConfigurationException; )
+public abstract boolean getFeature(
+java.lang.String)
+
+public boolean isCoalescing()
+
+public boolean isExpandEntityReferences()
+
+public boolean isIgnoringComments()
+
+public boolean isIgnoringElementContentWhitespace()
+
+public boolean isNamespaceAware()
+
+public boolean isValidating()
+
+public boolean isXIncludeAware()
+@dalvik.annotation.Throws (value =Ljavax/xml/parsers/ParserConfigurationException; )
+public abstract javax.xml.parsers.DocumentBuilder newDocumentBuilder()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public abstract void setAttribute(
+java.lang.String
+java.lang.Object)
+
+public void setCoalescing(
+boolean)
+
+public void setExpandEntityReferences(
+boolean)
+@dalvik.annotation.Throws (value =Ljavax/xml/parsers/ParserConfigurationException; )
+public abstract void setFeature(
+java.lang.String
+boolean)
+
+public void setIgnoringComments(
+boolean)
+
+public void setIgnoringElementContentWhitespace(
+boolean)
+
+public void setNamespaceAware(
+boolean)
+
+public void setValidating(
+boolean)
+
+public void setXIncludeAware(
+boolean)
+
+________________CLASS________________
+
+
+public class javax.xml.parsers.FactoryConfigurationError extends java.lang.Error
+
+----------------FIELDS----------------
+
+private java.lang.Exception cause
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.Exception)
+
+public void <init>(
+java.lang.Exception
+java.lang.String)
+
+public void <init>(
+java.lang.String)
+
+public java.lang.Exception getException()
+
+public java.lang.String getMessage()
+
+________________CLASS________________
+
+
+public class javax.xml.parsers.ParserConfigurationException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class javax.xml.parsers.SAXParser extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract org.xml.sax.Parser getParser()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public abstract java.lang.Object getProperty(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract org.xml.sax.XMLReader getXMLReader()
+
+public abstract boolean isNamespaceAware()
+
+public abstract boolean isValidating()
+@dalvik.annotation.Throws (value =Ljava/lang/UnsupportedOperationException; )
+public boolean isXIncludeAware()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public void parse(
+java.io.File
+org.xml.sax.HandlerBase)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public void parse(
+java.io.File
+org.xml.sax.helpers.DefaultHandler)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public void parse(
+java.io.InputStream
+org.xml.sax.HandlerBase)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public void parse(
+java.io.InputStream
+org.xml.sax.HandlerBase
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public void parse(
+java.io.InputStream
+org.xml.sax.helpers.DefaultHandler)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public void parse(
+java.io.InputStream
+org.xml.sax.helpers.DefaultHandler
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public void parse(
+java.lang.String
+org.xml.sax.HandlerBase)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public void parse(
+java.lang.String
+org.xml.sax.helpers.DefaultHandler)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public void parse(
+org.xml.sax.InputSource
+org.xml.sax.HandlerBase)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public void parse(
+org.xml.sax.InputSource
+org.xml.sax.helpers.DefaultHandler)
+
+public void reset()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public abstract void setProperty(
+java.lang.String
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract class javax.xml.parsers.SAXParserFactory extends java.lang.Object
+
+----------------FIELDS----------------
+
+private boolean namespaceAware
+
+private boolean validating
+
+private boolean xincludeAware
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Throws (value =Ljavax/xml/parsers/FactoryConfigurationError; )
+public static javax.xml.parsers.SAXParserFactory newInstance()
+@dalvik.annotation.Throws (value =Ljavax/xml/parsers/ParserConfigurationException;Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public abstract boolean getFeature(
+java.lang.String)
+
+public boolean isNamespaceAware()
+
+public boolean isValidating()
+
+public boolean isXIncludeAware()
+@dalvik.annotation.Throws (value =Ljavax/xml/parsers/ParserConfigurationException;Lorg/xml/sax/SAXException; )
+public abstract javax.xml.parsers.SAXParser newSAXParser()
+@dalvik.annotation.Throws (value =Ljavax/xml/parsers/ParserConfigurationException;Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public abstract void setFeature(
+java.lang.String
+boolean)
+
+public void setNamespaceAware(
+boolean)
+
+public void setValidating(
+boolean)
+
+public void setXIncludeAware(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class junit.extensions.ActiveTestSuite$1 extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final junit.extensions.ActiveTestSuite this$0
+
+final junit.framework.TestResult val$result
+
+final junit.framework.Test val$test
+----------------METHODS----------------
+
+ void <init>(
+junit.extensions.ActiveTestSuite
+junit.framework.Test
+junit.framework.TestResult)
+
+public void run()
+
+________________CLASS________________
+
+
+public abstract interface class junit.framework.Test extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int countTestCases()
+
+public abstract void run(
+junit.framework.TestResult)
+
+________________CLASS________________
+
+
+public class junit.framework.TestSuite extends java.lang.Object implements junit.framework.Test
+
+----------------FIELDS----------------
+
+private java.lang.String fName
+
+private java.util.Vector fTests
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.Class)
+
+public void <init>(
+java.lang.Class
+java.lang.String)
+
+public void <init>(
+java.lang.String)
+
+private void addTestMethod(
+java.lang.reflect.Method
+java.util.Vector
+java.lang.Class)
+
+public static junit.framework.Test createTest(
+java.lang.Class
+java.lang.String)
+
+private static java.lang.String exceptionToString(
+java.lang.Throwable)
+@dalvik.annotation.Throws (value =Ljava/lang/NoSuchMethodException; )
+public static java.lang.reflect.Constructor getTestConstructor(
+java.lang.Class)
+
+private boolean isPublicTestMethod(
+java.lang.reflect.Method)
+
+private boolean isTestMethod(
+java.lang.reflect.Method)
+
+private static junit.framework.Test warning(
+java.lang.String)
+
+public void addTest(
+junit.framework.Test)
+
+public void addTestSuite(
+java.lang.Class)
+
+public int countTestCases()
+
+public java.lang.String getName()
+
+public void run(
+junit.framework.TestResult)
+
+public void runTest(
+junit.framework.Test
+junit.framework.TestResult)
+
+public void setName(
+java.lang.String)
+
+public junit.framework.Test testAt(
+int)
+
+public int testCount()
+
+public java.util.Enumeration tests()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class junit.extensions.ActiveTestSuite extends junit.framework.TestSuite
+
+----------------FIELDS----------------
+
+private volatile int fActiveTestDeathCount
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.Class)
+
+public void <init>(
+java.lang.Class
+java.lang.String)
+
+public void <init>(
+java.lang.String)
+
+public void run(
+junit.framework.TestResult)
+
+public void runFinished(
+junit.framework.Test)
+
+public void runTest(
+junit.framework.Test
+junit.framework.TestResult)
+
+ void waitUntilFinished()
+
+________________CLASS________________
+
+
+public class junit.framework.Assert extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+protected void <init>()
+
+public static void assertEquals(
+byte
+byte)
+
+public static void assertEquals(
+char
+char)
+
+public static void assertEquals(
+double
+double
+double)
+
+public static void assertEquals(
+float
+float
+float)
+
+public static void assertEquals(
+int
+int)
+
+public static void assertEquals(
+long
+long)
+
+public static void assertEquals(
+java.lang.Object
+java.lang.Object)
+
+public static void assertEquals(
+java.lang.String
+byte
+byte)
+
+public static void assertEquals(
+java.lang.String
+char
+char)
+
+public static void assertEquals(
+java.lang.String
+double
+double
+double)
+
+public static void assertEquals(
+java.lang.String
+float
+float
+float)
+
+public static void assertEquals(
+java.lang.String
+int
+int)
+
+public static void assertEquals(
+java.lang.String
+long
+long)
+
+public static void assertEquals(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static void assertEquals(
+java.lang.String
+java.lang.String)
+
+public static void assertEquals(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public static void assertEquals(
+java.lang.String
+short
+short)
+
+public static void assertEquals(
+java.lang.String
+boolean
+boolean)
+
+public static void assertEquals(
+short
+short)
+
+public static void assertEquals(
+boolean
+boolean)
+
+public static void assertFalse(
+java.lang.String
+boolean)
+
+public static void assertFalse(
+boolean)
+
+public static void assertNotNull(
+java.lang.Object)
+
+public static void assertNotNull(
+java.lang.String
+java.lang.Object)
+
+public static void assertNotSame(
+java.lang.Object
+java.lang.Object)
+
+public static void assertNotSame(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static void assertNull(
+java.lang.Object)
+
+public static void assertNull(
+java.lang.String
+java.lang.Object)
+
+public static void assertSame(
+java.lang.Object
+java.lang.Object)
+
+public static void assertSame(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static void assertTrue(
+java.lang.String
+boolean)
+
+public static void assertTrue(
+boolean)
+
+public static void fail()
+
+public static void fail(
+java.lang.String)
+
+private static void failNotEquals(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+private static void failNotSame(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+private static void failSame(
+java.lang.String)
+
+static java.lang.String format(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract class junit.framework.TestCase extends junit.framework.Assert implements junit.framework.Test
+
+----------------FIELDS----------------
+
+private java.lang.String fName
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+public int countTestCases()
+
+protected junit.framework.TestResult createResult()
+
+public java.lang.String getName()
+
+public junit.framework.TestResult run()
+
+public void run(
+junit.framework.TestResult)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+public void runBare()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void runTest()
+
+public void setName(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+protected void setUp()
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+protected void tearDown()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class junit.extensions.ExceptionTestCase extends junit.framework.TestCase
+
+----------------FIELDS----------------
+
+ java.lang.Class fExpected
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void runTest()
+
+________________CLASS________________
+
+
+public class junit.extensions.TestDecorator extends junit.framework.Assert implements junit.framework.Test
+
+----------------FIELDS----------------
+
+protected junit.framework.Test fTest
+----------------METHODS----------------
+
+public void <init>(
+junit.framework.Test)
+
+public void basicRun(
+junit.framework.TestResult)
+
+public int countTestCases()
+
+public junit.framework.Test getTest()
+
+public void run(
+junit.framework.TestResult)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class junit.extensions.RepeatedTest extends junit.extensions.TestDecorator
+
+----------------FIELDS----------------
+
+private int fTimesRepeat
+----------------METHODS----------------
+
+public void <init>(
+junit.framework.Test
+int)
+
+public int countTestCases()
+
+public void run(
+junit.framework.TestResult)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class junit.framework.Protectable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+public abstract void protect()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class junit.extensions.TestSetup$1 extends java.lang.Object implements junit.framework.Protectable
+
+----------------FIELDS----------------
+
+final junit.extensions.TestSetup this$0
+
+final junit.framework.TestResult val$result
+----------------METHODS----------------
+
+ void <init>(
+junit.extensions.TestSetup
+junit.framework.TestResult)
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public void protect()
+
+________________CLASS________________
+
+
+public class junit.extensions.TestSetup extends junit.extensions.TestDecorator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+junit.framework.Test)
+
+public void run(
+junit.framework.TestResult)
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+protected void setUp()
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+protected void tearDown()
+
+________________CLASS________________
+
+
+public class junit.framework.AssertionFailedError extends java.lang.Error
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class junit.framework.ComparisonFailure extends junit.framework.AssertionFailedError
+
+----------------FIELDS----------------
+
+private java.lang.String fActual
+
+private java.lang.String fExpected
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public java.lang.String getMessage()
+
+________________CLASS________________
+
+
+public class junit.framework.TestFailure extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected junit.framework.Test fFailedTest
+
+protected java.lang.Throwable fThrownException
+----------------METHODS----------------
+
+public void <init>(
+junit.framework.Test
+java.lang.Throwable)
+
+public java.lang.String exceptionMessage()
+
+public junit.framework.Test failedTest()
+
+public boolean isFailure()
+
+public java.lang.Throwable thrownException()
+
+public java.lang.String toString()
+
+public java.lang.String trace()
+
+________________CLASS________________
+
+
+public abstract interface class junit.framework.TestListener extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void addError(
+junit.framework.Test
+java.lang.Throwable)
+
+public abstract void addFailure(
+junit.framework.Test
+junit.framework.AssertionFailedError)
+
+public abstract void endTest(
+junit.framework.Test)
+
+public abstract void startTest(
+junit.framework.Test)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class junit.framework.TestResult$1 extends java.lang.Object implements junit.framework.Protectable
+
+----------------FIELDS----------------
+
+final junit.framework.TestResult this$0
+
+final junit.framework.TestCase val$test
+----------------METHODS----------------
+
+ void <init>(
+junit.framework.TestResult
+junit.framework.TestCase)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+public void protect()
+
+________________CLASS________________
+
+
+public class junit.framework.TestResult extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected java.util.Vector fErrors
+
+protected java.util.Vector fFailures
+
+protected java.util.Vector fListeners
+
+protected int fRunTests
+
+private boolean fStop
+----------------METHODS----------------
+
+public void <init>()
+
+private java.util.Vector cloneListeners()
+
+public void addError(
+junit.framework.Test
+java.lang.Throwable)
+
+public void addFailure(
+junit.framework.Test
+junit.framework.AssertionFailedError)
+
+public void addListener(
+junit.framework.TestListener)
+
+public void endTest(
+junit.framework.Test)
+
+public int errorCount()
+
+public java.util.Enumeration errors()
+
+public int failureCount()
+
+public java.util.Enumeration failures()
+
+public void removeListener(
+junit.framework.TestListener)
+
+protected void run(
+junit.framework.TestCase)
+
+public int runCount()
+
+public void runProtected(
+junit.framework.Test
+junit.framework.Protectable)
+
+public boolean shouldStop()
+
+public void startTest(
+junit.framework.Test)
+
+public void stop()
+
+public boolean wasSuccessful()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class junit.framework.TestSuite$1 extends junit.framework.TestCase
+
+----------------FIELDS----------------
+
+final java.lang.String val$message
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+java.lang.String)
+
+protected void runTest()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.annotation.internal.nls.Messages extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String sResource
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String getString(
+java.lang.String)
+
+public static java.lang.String getString(
+java.lang.String
+char)
+
+public static java.lang.String getString(
+java.lang.String
+int)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.archive.internal.nls.Messages extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String sResource
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String getString(
+java.lang.String)
+
+public static java.lang.String getString(
+java.lang.String
+char)
+
+public static java.lang.String getString(
+java.lang.String
+int)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.archive.util.Util extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static boolean ASCIIIgnoreCaseRegionMatches(
+java.lang.String
+int
+java.lang.String
+int
+int)
+
+public static java.lang.String toASCIILowerCase(
+java.lang.String)
+
+public static java.lang.String toASCIIUpperCase(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.auth.internal.nls.Messages extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String sResource
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String getString(
+java.lang.String)
+
+public static java.lang.String getString(
+java.lang.String
+char)
+
+public static java.lang.String getString(
+java.lang.String
+int)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.crypto.internal.NullCipherSpi extends javax.crypto.CipherSpi
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException;Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+public int engineDoFinal(
+java.nio.ByteBuffer
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException;Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+public int engineDoFinal(
+byte[]
+int
+int
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+public byte[] engineDoFinal(
+byte[]
+int
+int)
+
+public int engineGetBlockSize()
+
+public byte[] engineGetIV()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public int engineGetKeySize(
+java.security.Key)
+
+public int engineGetOutputSize(
+int)
+
+public java.security.AlgorithmParameters engineGetParameters()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+public void engineInit(
+int
+java.security.Key
+java.security.AlgorithmParameters
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public void engineInit(
+int
+java.security.Key
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+public void engineInit(
+int
+java.security.Key
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public void engineSetMode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljavax/crypto/NoSuchPaddingException; )
+public void engineSetPadding(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/NoSuchAlgorithmException; )
+public java.security.Key engineUnwrap(
+byte[]
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException; )
+public int engineUpdate(
+java.nio.ByteBuffer
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException; )
+public int engineUpdate(
+byte[]
+int
+int
+byte[]
+int)
+
+public byte[] engineUpdate(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljava/security/InvalidKeyException; )
+public byte[] engineWrap(
+java.security.Key)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.crypto.internal.nls.Messages extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String sResource
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String getString(
+java.lang.String)
+
+public static java.lang.String getString(
+java.lang.String
+char)
+
+public static java.lang.String getString(
+java.lang.String
+int)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.dalvik.NativeTestTarget extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static void emptyInlineMethod()
+
+public static native void emptyInternalStaticMethod()
+
+public static native void emptyJniStaticMethod0()
+
+public static native void emptyJniStaticMethod6(
+int
+int
+int
+int
+int
+int)
+
+public static native void emptyJniStaticMethod6L(
+java.lang.String
+java.lang.String[]
+int[][]
+java.lang.Object
+java.lang.Object[]
+java.lang.Object[][][][])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.dalvik.ddmc.Chunk extends java.lang.Object
+
+----------------FIELDS----------------
+
+public byte[] data
+
+public int length
+
+public int offset
+
+public int type
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int
+java.nio.ByteBuffer)
+
+public void <init>(
+int
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.dalvik.ddmc.ChunkHandler extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CHUNK_FAIL
+
+public static final java.nio.ByteOrder CHUNK_ORDER
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static org.apache.harmony.dalvik.ddmc.Chunk createFailChunk(
+int
+java.lang.String)
+
+public static java.lang.String getString(
+java.nio.ByteBuffer
+int)
+
+public static java.lang.String name(
+int)
+
+public static void putString(
+java.nio.ByteBuffer
+java.lang.String)
+
+public static int type(
+java.lang.String)
+
+public static java.nio.ByteBuffer wrapChunk(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+public abstract void connected()
+
+public abstract void disconnected()
+
+public abstract org.apache.harmony.dalvik.ddmc.Chunk handleChunk(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.dalvik.ddmc.DdmServer extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CLIENT_PROTOCOL_VERSION
+
+private static final int CONNECTED
+
+private static final int DISCONNECTED
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Integer;Lorg/apache/harmony/dalvik/ddmc/ChunkHandler;>; )
+private static java.util.HashMap mHandlerMap
+
+private static volatile boolean mRegistrationComplete
+
+private static boolean mRegistrationTimedOut
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+private static void broadcast(
+int)
+
+private static org.apache.harmony.dalvik.ddmc.Chunk dispatch(
+int
+byte[]
+int
+int)
+
+private static native void nativeSendChunk(
+int
+byte[]
+int
+int)
+
+public static void registerHandler(
+int
+org.apache.harmony.dalvik.ddmc.ChunkHandler)
+
+public static void registrationComplete()
+
+public static void sendChunk(
+org.apache.harmony.dalvik.ddmc.Chunk)
+
+public static org.apache.harmony.dalvik.ddmc.ChunkHandler unregisterHandler(
+int)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.dalvik.ddmc.DdmVmInternal extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static native void enableRecentAllocations(
+boolean)
+
+public static native boolean getRecentAllocationStatus()
+
+public static native byte[] getRecentAllocations()
+
+public static native java.lang.StackTraceElement[] getStackTraceById(
+int)
+
+public static native byte[] getThreadStats()
+
+public static native boolean heapInfoNotify(
+int)
+
+public static native boolean heapSegmentNotify(
+int
+int
+boolean)
+
+public static native void threadNotify(
+boolean)
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.kernel.vm.StringUtils extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static java.lang.String combineStrings(
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.kernel.vm.VM extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final int CPE_TYPE_DIRECTORY
+
+static final int CPE_TYPE_JAR
+
+static final int CPE_TYPE_TCP
+
+static final int CPE_TYPE_UNKNOWN
+
+static final int CPE_TYPE_UNUSABLE
+
+private static final int kernelVersion
+----------------METHODS----------------
+
+public void <init>()
+
+public static void addShutdownHook(
+java.lang.Thread)
+
+public static java.lang.ClassLoader bootCallerClassLoader()
+
+public static java.lang.ClassLoader callerClassLoader()
+
+public static void closeJars()
+
+public static void deleteOnExit()
+
+public static void dumpString(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class<*>; )
+static java.lang.Class findClassOrNull(
+java.lang.String
+java.lang.ClassLoader)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)I )
+static int getCPIndexImpl(
+java.lang.Class)
+
+static int getClassPathCount()
+
+static final int getClassPathEntryType(
+java.lang.Object
+int)
+
+public static int getKernelVersion()
+
+public static final java.lang.ClassLoader getNonBootstrapClassLoader()
+
+static byte[] getPathFromClassPath(
+int)
+
+static final java.lang.ClassLoader getStackClassLoader(
+int)
+
+public static java.lang.String[] getVMArgs()
+
+public static final void initializeClassLoader(
+java.lang.ClassLoader
+boolean)
+
+static void initializeVM()
+
+public static final java.lang.String intern(
+java.lang.String)
+
+public static boolean removeShutdownHook(
+java.lang.Thread)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Object;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class org.apache.harmony.lang.annotation.AnnotationFactory$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final org.apache.harmony.lang.annotation.AnnotationFactory this$0
+
+final org.apache.harmony.lang.annotation.AnnotationMember val$el
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.lang.annotation.AnnotationFactory
+org.apache.harmony.lang.annotation.AnnotationMember)
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.lang.annotation.AnnotationFactory extends java.lang.Object implements java.lang.reflect.InvocationHandler, java.io.Serializable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;[Lorg/apache/harmony/lang/annotation/AnnotationMember;>; )
+private static final transient java.util.Map cache
+
+private org.apache.harmony.lang.annotation.AnnotationMember[] elements
+@dalvik.annotation.Signature (value =Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>; )
+private final java.lang.Class klazz
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;[Lorg/apache/harmony/lang/annotation/AnnotationMember;)V )
+private void <init>(
+java.lang.Class
+org.apache.harmony.lang.annotation.AnnotationMember[])
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;[Lorg/apache/harmony/lang/annotation/AnnotationMember;)Ljava/lang/annotation/Annotation; )
+public static java.lang.annotation.Annotation createAnnotation(
+java.lang.Class
+org.apache.harmony.lang.annotation.AnnotationMember[])
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)[Lorg/apache/harmony/lang/annotation/AnnotationMember; )
+public static org.apache.harmony.lang.annotation.AnnotationMember[] getElementsDescription(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+public java.lang.Object invoke(
+java.lang.Object
+java.lang.reflect.Method
+java.lang.Object[])
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/lang/annotation/AnnotationMember; )
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lorg/apache/harmony/lang/annotation/AnnotationMember$DefaultValues;>; )
+@dalvik.annotation.InnerClass (accessFlags =16410 name =DefaultValues )
+final class org.apache.harmony.lang.annotation.AnnotationMember$DefaultValues extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.lang.annotation.AnnotationMember$DefaultValues[] $VALUES
+
+public static final org.apache.harmony.lang.annotation.AnnotationMember$DefaultValues NO_VALUE
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =()V )
+private void <init>(
+java.lang.String
+int)
+
+public static org.apache.harmony.lang.annotation.AnnotationMember$DefaultValues valueOf(
+java.lang.String)
+
+public static org.apache.harmony.lang.annotation.AnnotationMember$DefaultValues[] values()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/lang/annotation/AnnotationMember$DefaultValues; )
+public class org.apache.harmony.lang.annotation.AnnotationMember extends java.lang.Object implements java.io.Serializable
+
+----------------FIELDS----------------
+
+protected static final char ARRAY
+
+protected static final char ERROR
+
+protected static final java.lang.Object NO_VALUE
+
+protected static final char OTHER
+
+protected transient java.lang.reflect.Method definingMethod
+@dalvik.annotation.Signature (value =Ljava/lang/Class<*>; )
+protected transient java.lang.Class elementType
+
+protected final java.lang.String name
+
+protected final char tag
+
+protected final java.lang.Object value
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+java.lang.Object)
+
+public void <init>(
+java.lang.String
+java.lang.Object
+java.lang.Class
+java.lang.reflect.Method)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+public java.lang.Object copyValue()
+
+public boolean equalArrayValue(
+java.lang.Object)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+public void rethrowError()
+
+protected org.apache.harmony.lang.annotation.AnnotationMember setDefinition(
+org.apache.harmony.lang.annotation.AnnotationMember)
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+public java.lang.Object validateValue()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.logging.internal.nls.Messages extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String sResource
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String getString(
+java.lang.String)
+
+public static java.lang.String getString(
+java.lang.String
+char)
+
+public static java.lang.String getString(
+java.lang.String
+int)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/io/InputStream;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class org.apache.harmony.luni.internal.net.www.MimeTable$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final org.apache.harmony.luni.internal.net.www.MimeTable this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.luni.internal.net.www.MimeTable)
+
+public java.io.InputStream run()
+
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.internal.net.www.MimeTable extends java.lang.Object implements java.net.FileNameMap
+
+----------------FIELDS----------------
+
+public static final java.lang.String UNKNOWN
+
+public static final java.util.Properties types
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static java.io.InputStream access$000(
+org.apache.harmony.luni.internal.net.www.MimeTable)
+
+private java.io.InputStream getContentTypes()
+
+public java.lang.String getContentTypeFor(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.internal.net.www.protocol.file.FileURLConnection extends java.net.URLConnection
+
+----------------FIELDS----------------
+
+ java.lang.String fileName
+
+private java.io.InputStream is
+
+private boolean isDir
+
+private int length
+
+private java.io.FilePermission permission
+----------------METHODS----------------
+
+public void <init>(
+java.net.URL)
+
+private java.io.InputStream getDirectoryListing(
+java.io.File)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connect()
+
+public int getContentLength()
+
+public java.lang.String getContentType()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getInputStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.security.Permission getPermission()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.internal.net.www.protocol.file.Handler extends java.net.URLStreamHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public java.net.URLConnection openConnection(
+java.net.URL)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.URLConnection openConnection(
+java.net.URL
+java.net.Proxy)
+
+protected void parseURL(
+java.net.URL
+java.lang.String
+int
+int)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.internal.net.www.protocol.ftp.FtpURLConnection extends java.net.URLConnection
+
+----------------FIELDS----------------
+
+private static final int FTP_DATAOPEN
+
+private static final int FTP_FILEOK
+
+private static final int FTP_LOGGEDIN
+
+private static final int FTP_NOTFOUND
+
+private static final int FTP_OK
+
+private static final int FTP_OPENDATA
+
+private static final int FTP_PASWD
+
+private static final int FTP_PORT
+
+private static final int FTP_TRANSFEROK
+
+private static final int FTP_USERREADY
+
+private java.net.ServerSocket acceptSocket
+
+private java.net.Socket controlSocket
+
+private java.io.InputStream ctrlInput
+
+private java.io.OutputStream ctrlOutput
+
+private java.net.Proxy currentProxy
+
+private int dataPort
+
+private java.net.Socket dataSocket
+
+private java.lang.String hostName
+
+private java.io.InputStream inputStream
+
+private java.lang.String password
+
+private java.net.Proxy proxy
+
+private java.lang.String replyCode
+
+private java.net.URI uri
+
+private java.lang.String username
+----------------METHODS----------------
+
+protected void <init>(
+java.net.URL)
+
+protected void <init>(
+java.net.URL
+java.net.Proxy)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void cd()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void connectInternal()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void getFile()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int getReply()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void login()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void port()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.lang.String readLine()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private boolean readMultiLine()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void sendFile()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void setType()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void write(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connect()
+
+public java.lang.String getContentType()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getInputStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.OutputStream getOutputStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.security.Permission getPermission()
+
+public void setDoInput(
+boolean)
+
+public void setDoOutput(
+boolean)
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.internal.net.www.protocol.ftp.FtpURLInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+private java.net.Socket controlSocket
+
+private java.io.InputStream is
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream
+java.net.Socket)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+
+public void close()
+
+public void mark(
+int)
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.internal.net.www.protocol.ftp.Handler extends java.net.URLStreamHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected int getDefaultPort()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.net.URLConnection openConnection(
+java.net.URL)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.net.URLConnection openConnection(
+java.net.URL
+java.net.Proxy)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.internal.net.www.protocol.http.Handler extends java.net.URLStreamHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected int getDefaultPort()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.net.URLConnection openConnection(
+java.net.URL)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.net.URLConnection openConnection(
+java.net.URL
+java.net.Proxy)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.internal.net.www.protocol.http.Header extends java.lang.Object implements java.lang.Cloneable
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/util/LinkedList<Ljava/lang/String;>;>; )
+private java.util.HashMap keyTable
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/String;>; )
+private java.util.ArrayList props
+
+private java.lang.String statusLine
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;)V )
+public void <init>(
+java.util.Map)
+
+public void add(
+java.lang.String
+java.lang.String)
+
+public java.lang.Object clone()
+
+public java.lang.String get(
+int)
+
+public java.lang.String get(
+java.lang.String)
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>; )
+public java.util.Map getFieldMap()
+
+public java.lang.String getKey(
+int)
+
+public java.lang.String getStatusLine()
+
+public int length()
+
+public void set(
+java.lang.String
+java.lang.String)
+
+public void setStatusLine(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.internal.net.www.protocol.http.HttpConfiguration extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.String hostName
+
+private int hostPort
+
+private java.net.Proxy proxy
+
+private java.net.URI uri
+----------------METHODS----------------
+
+public void <init>(
+java.net.URI)
+
+public void <init>(
+java.net.URI
+java.net.Proxy)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getHostName()
+
+public int getHostPort()
+
+public java.net.Proxy getProxy()
+
+public int hashCode()
+
+public boolean usesProxy()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.Class SOCKET_TIMEOUT_CLASS
+
+private org.apache.harmony.luni.internal.net.www.protocol.http.HttpConfiguration config
+
+private java.io.InputStream inputStream
+
+private java.io.OutputStream outputStream
+
+private java.net.Socket socket
+
+private java.io.InputStream sslInputStream
+
+private java.io.OutputStream sslOutputStream
+
+private javax.net.ssl.SSLSocket sslSocket
+
+private boolean usingSecureSocket
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpConfiguration
+int)
+
+private static java.lang.Class SocketTimeoutExceptionClass()
+
+public static boolean isSocketTimeoutException(
+java.io.InterruptedIOException)
+
+public void closeSocketAndStreams()
+
+public org.apache.harmony.luni.internal.net.www.protocol.http.HttpConfiguration getHttpConfiguration()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getInputStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.OutputStream getOutputStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public javax.net.ssl.SSLSocket getSecureSocket(
+javax.net.ssl.SSLSocketFactory
+javax.net.ssl.HostnameVerifier)
+
+ java.net.Socket getSocket()
+
+protected boolean isEligibleForRecycling()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected boolean isStale()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setSoTimeout(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/internal/net/www/protocol/http/HttpConnectionManager; )
+ class org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/internal/net/www/protocol/http/HttpConnectionManager; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =ConnectionPool )
+ class org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager$ConnectionPool extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Lorg/apache/harmony/luni/internal/net/www/protocol/http/HttpConfiguration;Ljava/util/List<Lorg/apache/harmony/luni/internal/net/www/protocol/http/HttpConnection;>;>; )
+private java.util.Map freeConnectionMap
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager$1)
+
+public void clear()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection getHttpConnection(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpConfiguration
+int)
+
+public int numFreeConnections()
+
+public void returnConnection(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/luni/internal/net/www/protocol/http/HttpConnectionManager$1;Lorg/apache/harmony/luni/internal/net/www/protocol/http/HttpConnectionManager$ConnectionPool; )
+public class org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager defaultConnectionManager
+
+private static boolean keepAlive
+
+private static int maxConnections
+
+private org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager$ConnectionPool pool
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static boolean access$100()
+
+static int access$200()
+
+private void checkSystemProperties()
+
+public static org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager getDefault()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection getConnection(
+java.net.URI
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection getConnection(
+java.net.URI
+java.net.Proxy
+int)
+
+public int numFreeConnections()
+
+public void reset()
+
+public void returnConnectionToPool(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/net/ResponseCache;>; )
+ class org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection)
+
+public volatile java.lang.Object run()
+
+public java.net.ResponseCache run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =ChunkedInputStream )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/internal/net/www/protocol/http/HttpURLConnection; )
+ class org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection$ChunkedInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+private boolean atEnd
+
+private int bytesRemaining
+
+final org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection this$0
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void readChunkSize()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =HttpOutputStream )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/internal/net/www/protocol/http/HttpURLConnection; )
+ class org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection$HttpOutputStream extends java.io.OutputStream
+
+----------------FIELDS----------------
+
+static final int MAX
+
+ java.io.ByteArrayOutputStream cache
+
+ int cacheLength
+
+ boolean closed
+
+ int defaultCacheSize
+
+ int limit
+
+final org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection this$0
+
+ boolean writeToSocket
+----------------METHODS----------------
+
+public void <init>(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection)
+
+public void <init>(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection
+int)
+
+private int calculateChunkDataLength()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void output(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void sendCache(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+
+ boolean isCached()
+
+ boolean isChunked()
+
+ int size()
+
+ byte[] toByteArray()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =LimitedInputStream )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/internal/net/www/protocol/http/HttpURLConnection; )
+ class org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection$LimitedInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+ int bytesRemaining
+
+final org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection this$0
+----------------METHODS----------------
+
+public void <init>(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/internal/net/www/protocol/http/HttpURLConnection; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =LocalCloseInputStream )
+ class org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection$LocalCloseInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+private boolean closed
+
+final org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection this$0
+----------------METHODS----------------
+
+public void <init>(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void throwClosed()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+
+public void close()
+
+public void mark(
+int)
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/luni/internal/net/www/protocol/http/HttpURLConnection$HttpOutputStream;Lorg/apache/harmony/luni/internal/net/www/protocol/http/HttpURLConnection$ChunkedInputStream;Lorg/apache/harmony/luni/internal/net/www/protocol/http/HttpURLConnection$LimitedInputStream;Lorg/apache/harmony/luni/internal/net/www/protocol/http/HttpURLConnection$LocalCloseInputStream; )
+public class org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection extends java.net.HttpURLConnection
+
+----------------FIELDS----------------
+
+private static final java.lang.String GET
+
+private static final java.lang.String HEAD
+
+private static final java.lang.String POST
+
+private static final java.lang.String PUT
+
+private static org.apache.harmony.luni.internal.net.www.protocol.http.Header defaultReqHeader
+
+private java.io.OutputStream cacheOut
+
+private java.net.CacheRequest cacheRequest
+
+private java.net.CacheResponse cacheResponse
+
+protected org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection connection
+
+private final int defaultPort
+
+private boolean hasTriedCache
+
+private java.net.InetAddress hostAddress
+
+private java.lang.String hostName
+
+private int hostPort
+
+private int httpVersion
+
+private java.io.InputStream is
+
+private org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection$HttpOutputStream os
+
+private java.net.Proxy proxy
+
+private java.lang.String proxyName
+
+private org.apache.harmony.luni.internal.net.www.protocol.http.Header reqHeader
+
+private org.apache.harmony.luni.internal.net.www.protocol.http.Header resHeader
+
+private java.net.ResponseCache responseCache
+
+ boolean sendChunked
+
+private boolean sentRequest
+
+private java.io.OutputStream socketOut
+
+private java.io.InputStream uis
+
+private java.net.URI uri
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+java.net.URL)
+
+protected void <init>(
+java.net.URL
+int)
+
+protected void <init>(
+java.net.URL
+int
+java.net.Proxy)
+
+static java.io.InputStream access$000(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection)
+
+static void access$100(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection
+boolean)
+
+static int access$1000(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection)
+
+static int access$1100(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection)
+
+static java.io.OutputStream access$1200(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection)
+
+static boolean access$200(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection)
+
+static java.net.CacheRequest access$300(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection)
+
+static boolean access$400(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection)
+
+static java.io.OutputStream access$500(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection)
+
+static boolean access$600(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection)
+
+static boolean access$700(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection)
+
+static boolean access$800(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection)
+
+static boolean access$900(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private byte[] createRequest()
+
+private void disconnect(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.lang.String getAuthorizationCredentials(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.io.InputStream getContentStream()
+
+public static java.lang.String getDefaultRequestProperty(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private boolean getFromCache()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.net.InetAddress getHostAddress()
+
+private java.lang.String getHostName()
+
+private int getHostPort()
+
+private java.lang.String getSystemProperty(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void putToCache()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private boolean sendRequest()
+
+public static void setDefaultRequestProperty(
+java.lang.String
+java.lang.String)
+
+private void setProxy(
+java.lang.String)
+
+public void addRequestProperty(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connect()
+
+public void disconnect()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void doRequest()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void doRequestInternal()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void endRequest()
+
+public java.io.InputStream getErrorStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection getHTTPConnection(
+java.net.Proxy)
+
+public java.lang.String getHeaderField(
+int)
+
+public java.lang.String getHeaderField(
+java.lang.String)
+
+public java.lang.String getHeaderFieldKey(
+int)
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>; )
+public java.util.Map getHeaderFields()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getInputStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.OutputStream getOutputStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.security.Permission getPermission()
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>; )
+public java.util.Map getRequestProperties()
+
+public java.lang.String getRequestProperty(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int getResponseCode()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void readHeaders()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void readServerResponse()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ java.lang.String readln()
+
+protected java.lang.String requestString()
+
+public void setIfModifiedSince(
+long)
+
+public void setRequestProperty(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void setUpTransportIO(
+org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection)
+
+public boolean usingProxy()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.internal.net.www.protocol.https.Handler extends java.net.URLStreamHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected int getDefaultPort()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.net.URLConnection openConnection(
+java.net.URL)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.net.URLConnection openConnection(
+java.net.URL
+java.net.Proxy)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =HttpsEngine )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/internal/net/www/protocol/https/HttpsURLConnection; )
+ class org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnection$HttpsEngine extends org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection
+
+----------------FIELDS----------------
+
+private boolean makingSSLTunnel
+
+final org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnection this$0
+----------------METHODS----------------
+
+protected void <init>(
+org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnection
+java.net.URL
+int)
+
+protected void <init>(
+org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnection
+java.net.URL
+int
+java.net.Proxy)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connect()
+
+protected java.lang.String requestString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/luni/internal/net/www/protocol/https/HttpsURLConnection$HttpsEngine; )
+public class org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnection extends javax.net.ssl.HttpsURLConnection
+
+----------------FIELDS----------------
+
+private final org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnection$HttpsEngine httpsEngine
+
+private javax.net.ssl.SSLSocket sslSocket
+----------------METHODS----------------
+
+protected void <init>(
+java.net.URL
+int)
+
+protected void <init>(
+java.net.URL
+int
+java.net.Proxy)
+
+static javax.net.ssl.SSLSocket access$002(
+org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnection
+javax.net.ssl.SSLSocket)
+
+public void addRequestProperty(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connect()
+
+public void disconnect()
+
+public boolean getAllowUserInteraction()
+
+public java.lang.String getCipherSuite()
+
+public int getConnectTimeout()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getContent()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getContent(
+java.lang.Class[])
+
+public java.lang.String getContentEncoding()
+
+public int getContentLength()
+
+public java.lang.String getContentType()
+
+public long getDate()
+
+public boolean getDefaultUseCaches()
+
+public boolean getDoInput()
+
+public boolean getDoOutput()
+
+public java.io.InputStream getErrorStream()
+
+public long getExpiration()
+
+public java.lang.String getHeaderField(
+int)
+
+public java.lang.String getHeaderField(
+java.lang.String)
+
+public long getHeaderFieldDate(
+java.lang.String
+long)
+
+public int getHeaderFieldInt(
+java.lang.String
+int)
+
+public java.lang.String getHeaderFieldKey(
+int)
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>; )
+public java.util.Map getHeaderFields()
+
+public long getIfModifiedSince()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getInputStream()
+
+public boolean getInstanceFollowRedirects()
+
+public long getLastModified()
+
+public java.security.cert.Certificate[] getLocalCertificates()
+
+public java.security.Principal getLocalPrincipal()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.OutputStream getOutputStream()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public java.security.Principal getPeerPrincipal()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.security.Permission getPermission()
+
+public int getReadTimeout()
+
+public java.lang.String getRequestMethod()
+@dalvik.annotation.Signature (value =()Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>; )
+public java.util.Map getRequestProperties()
+
+public java.lang.String getRequestProperty(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int getResponseCode()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.String getResponseMessage()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public java.security.cert.Certificate[] getServerCertificates()
+
+public java.net.URL getURL()
+
+public boolean getUseCaches()
+
+public void setAllowUserInteraction(
+boolean)
+
+public void setConnectTimeout(
+int)
+
+public void setDefaultUseCaches(
+boolean)
+
+public void setDoInput(
+boolean)
+
+public void setDoOutput(
+boolean)
+
+public void setIfModifiedSince(
+long)
+
+public void setInstanceFollowRedirects(
+boolean)
+
+public void setReadTimeout(
+int)
+@dalvik.annotation.Throws (value =Ljava/net/ProtocolException; )
+public void setRequestMethod(
+java.lang.String)
+
+public void setRequestProperty(
+java.lang.String
+java.lang.String)
+
+public void setUseCaches(
+boolean)
+
+public java.lang.String toString()
+
+public boolean usingProxy()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.internal.net.www.protocol.jar.Handler extends java.net.URLStreamHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.net.URLConnection openConnection(
+java.net.URL)
+
+protected void parseURL(
+java.net.URL
+java.lang.String
+int
+int)
+
+protected java.lang.String toExternalForm(
+java.net.URL)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Integer;>; )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/internal/net/www/protocol/jar/JarURLConnection; )
+final class org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.Integer run()
+
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/util/jar/JarFile;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection$2 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection this$0
+
+final java.lang.String val$externalForm
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection
+java.lang.String)
+
+public volatile java.lang.Object run()
+
+public java.util.jar.JarFile run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/util/jar/JarFile;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection$3 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection this$0
+
+final java.lang.String val$externalForm
+
+final java.io.InputStream val$is
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection
+java.io.InputStream
+java.lang.String)
+
+public volatile java.lang.Object run()
+
+public java.util.jar.JarFile run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =24 name =CacheEntry )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/internal/net/www/protocol/jar/JarURLConnection; )
+@dalvik.annotation.Signature (value =<T:Ljava/util/jar/JarFile;>Ljava/lang/ref/WeakReference<TT;>; )
+final class org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection$CacheEntry extends java.lang.ref.WeakReference
+
+----------------FIELDS----------------
+
+ java.lang.Object key
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TT;Ljava/lang/String;Ljava/lang/ref/ReferenceQueue<Ljava/util/jar/JarFile;>;)V )
+ void <init>(
+java.util.jar.JarFile
+java.lang.String
+java.lang.ref.ReferenceQueue)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =JarURLConnectionInputStream )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/internal/net/www/protocol/jar/JarURLConnection; )
+ class org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection$JarURLConnectionInputStream extends java.io.FilterInputStream
+
+----------------FIELDS----------------
+
+ java.io.InputStream inputStream
+
+ java.util.jar.JarFile jarFile
+
+final org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection this$0
+----------------METHODS----------------
+
+protected void <init>(
+org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection
+java.io.InputStream
+java.util.jar.JarFile)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Comparator<Lorg/apache/harmony/luni/internal/net/www/protocol/jar/JarURLConnection$LRUKey;>; )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/internal/net/www/protocol/jar/JarURLConnection; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =LRUComparator )
+final class org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection$LRUComparator extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+public int compare(
+org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection$LRUKey
+org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection$LRUKey)
+
+public boolean equals(
+java.lang.Object
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/internal/net/www/protocol/jar/JarURLConnection; )
+@dalvik.annotation.InnerClass (accessFlags =24 name =LRUKey )
+final class org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection$LRUKey extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.util.jar.JarFile jar
+
+ long ts
+----------------METHODS----------------
+
+ void <init>(
+java.util.jar.JarFile
+long)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/luni/internal/net/www/protocol/jar/JarURLConnection$JarURLConnectionInputStream;Lorg/apache/harmony/luni/internal/net/www/protocol/jar/JarURLConnection$LRUComparator;Lorg/apache/harmony/luni/internal/net/www/protocol/jar/JarURLConnection$LRUKey;Lorg/apache/harmony/luni/internal/net/www/protocol/jar/JarURLConnection$CacheEntry; )
+public class org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection extends java.net.JarURLConnection
+
+----------------FIELDS----------------
+
+static int Limit
+@dalvik.annotation.Signature (value =Ljava/util/Hashtable<Ljava/lang/String;Lorg/apache/harmony/luni/internal/net/www/protocol/jar/JarURLConnection$CacheEntry<+Ljava/util/jar/JarFile;>;>; )
+static java.util.Hashtable jarCache
+@dalvik.annotation.Signature (value =Ljava/util/TreeSet<Lorg/apache/harmony/luni/internal/net/www/protocol/jar/JarURLConnection$LRUKey;>; )
+static java.util.TreeSet lru
+@dalvik.annotation.Signature (value =Ljava/lang/ref/ReferenceQueue<Ljava/util/jar/JarFile;>; )
+ java.lang.ref.ReferenceQueue cacheQueue
+
+private boolean closed
+
+private java.util.jar.JarEntry jarEntry
+
+private java.util.jar.JarFile jarFile
+
+ java.io.InputStream jarInput
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/net/MalformedURLException; )
+public void <init>(
+java.net.URL)
+
+static boolean access$000(
+org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection)
+
+static boolean access$102(
+org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection
+boolean)
+
+public static void closeCachedFiles()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void findJarEntry()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void findJarFile()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connect()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getContent()
+
+public int getContentLength()
+
+public java.lang.String getContentType()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getInputStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.jar.JarEntry getJarEntry()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.jar.JarFile getJarFile()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.security.Permission getPermission()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ java.util.jar.JarFile openJarFile(
+java.lang.String
+java.lang.String
+boolean)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.internal.nls.Messages extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String sResource
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String getString(
+java.lang.String)
+
+public static java.lang.String getString(
+java.lang.String
+char)
+
+public static java.lang.String getString(
+java.lang.String
+int)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object[])
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.internal.reflect.ProxyCharArrayCache extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int elementSize
+
+private char[][] keyTable
+
+private int threshold
+
+private int[] valueTable
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+static boolean equals(
+char[]
+char[])
+
+private int hashCodeChar(
+char[])
+
+private void rehash()
+
+ int get(
+char[])
+
+ int put(
+char[]
+int)
+
+ int size()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+abstract interface class org.apache.harmony.luni.internal.reflect.ProxyConstants extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int AccFinal
+
+public static final int AccPrivate
+
+public static final int AccProtected
+
+public static final int AccPublic
+
+public static final int AccStatic
+
+public static final int AccSuper
+
+public static final int ClassTag
+
+public static final char[] CodeName
+
+public static final int DoubleTag
+
+public static final char[] ExceptionsName
+
+public static final int FieldRefTag
+
+public static final int FloatTag
+
+public static final char[] Init
+
+public static final int IntegerTag
+
+public static final int InterfaceMethodRefTag
+
+public static final int LongTag
+
+public static final int MethodRefTag
+
+public static final int NameAndTypeTag
+
+public static final int OPC_aaload
+
+public static final int OPC_aastore
+
+public static final int OPC_aconst_null
+
+public static final int OPC_aload
+
+public static final int OPC_aload_0
+
+public static final int OPC_aload_1
+
+public static final int OPC_aload_2
+
+public static final int OPC_aload_3
+
+public static final int OPC_anewarray
+
+public static final int OPC_areturn
+
+public static final int OPC_arraylength
+
+public static final int OPC_astore
+
+public static final int OPC_astore_0
+
+public static final int OPC_astore_1
+
+public static final int OPC_astore_2
+
+public static final int OPC_astore_3
+
+public static final int OPC_athrow
+
+public static final int OPC_baload
+
+public static final int OPC_bastore
+
+public static final int OPC_bipush
+
+public static final int OPC_caload
+
+public static final int OPC_castore
+
+public static final int OPC_checkcast
+
+public static final int OPC_d2f
+
+public static final int OPC_d2i
+
+public static final int OPC_d2l
+
+public static final int OPC_dadd
+
+public static final int OPC_daload
+
+public static final int OPC_dastore
+
+public static final int OPC_dcmpg
+
+public static final int OPC_dcmpl
+
+public static final int OPC_dconst_0
+
+public static final int OPC_dconst_1
+
+public static final int OPC_ddiv
+
+public static final int OPC_dload
+
+public static final int OPC_dload_0
+
+public static final int OPC_dload_1
+
+public static final int OPC_dload_2
+
+public static final int OPC_dload_3
+
+public static final int OPC_dmul
+
+public static final int OPC_dneg
+
+public static final int OPC_drem
+
+public static final int OPC_dreturn
+
+public static final int OPC_dstore
+
+public static final int OPC_dstore_0
+
+public static final int OPC_dstore_1
+
+public static final int OPC_dstore_2
+
+public static final int OPC_dstore_3
+
+public static final int OPC_dsub
+
+public static final int OPC_dup
+
+public static final int OPC_dup2
+
+public static final int OPC_dup2_x1
+
+public static final int OPC_dup2_x2
+
+public static final int OPC_dup_x1
+
+public static final int OPC_dup_x2
+
+public static final int OPC_f2d
+
+public static final int OPC_f2i
+
+public static final int OPC_f2l
+
+public static final int OPC_fadd
+
+public static final int OPC_faload
+
+public static final int OPC_fastore
+
+public static final int OPC_fcmpg
+
+public static final int OPC_fcmpl
+
+public static final int OPC_fconst_0
+
+public static final int OPC_fconst_1
+
+public static final int OPC_fconst_2
+
+public static final int OPC_fdiv
+
+public static final int OPC_fload
+
+public static final int OPC_fload_0
+
+public static final int OPC_fload_1
+
+public static final int OPC_fload_2
+
+public static final int OPC_fload_3
+
+public static final int OPC_fmul
+
+public static final int OPC_fneg
+
+public static final int OPC_frem
+
+public static final int OPC_freturn
+
+public static final int OPC_fstore
+
+public static final int OPC_fstore_0
+
+public static final int OPC_fstore_1
+
+public static final int OPC_fstore_2
+
+public static final int OPC_fstore_3
+
+public static final int OPC_fsub
+
+public static final int OPC_getfield
+
+public static final int OPC_getstatic
+
+public static final int OPC_goto
+
+public static final int OPC_goto_w
+
+public static final int OPC_i2b
+
+public static final int OPC_i2c
+
+public static final int OPC_i2d
+
+public static final int OPC_i2f
+
+public static final int OPC_i2l
+
+public static final int OPC_i2s
+
+public static final int OPC_iadd
+
+public static final int OPC_iaload
+
+public static final int OPC_iand
+
+public static final int OPC_iastore
+
+public static final int OPC_iconst_0
+
+public static final int OPC_iconst_1
+
+public static final int OPC_iconst_2
+
+public static final int OPC_iconst_3
+
+public static final int OPC_iconst_4
+
+public static final int OPC_iconst_5
+
+public static final int OPC_iconst_m1
+
+public static final int OPC_idiv
+
+public static final int OPC_if_acmpeq
+
+public static final int OPC_if_acmpne
+
+public static final int OPC_if_icmpeq
+
+public static final int OPC_if_icmpge
+
+public static final int OPC_if_icmpgt
+
+public static final int OPC_if_icmple
+
+public static final int OPC_if_icmplt
+
+public static final int OPC_if_icmpne
+
+public static final int OPC_ifeq
+
+public static final int OPC_ifge
+
+public static final int OPC_ifgt
+
+public static final int OPC_ifle
+
+public static final int OPC_iflt
+
+public static final int OPC_ifne
+
+public static final int OPC_ifnonnull
+
+public static final int OPC_ifnull
+
+public static final int OPC_iinc
+
+public static final int OPC_iload
+
+public static final int OPC_iload_0
+
+public static final int OPC_iload_1
+
+public static final int OPC_iload_2
+
+public static final int OPC_iload_3
+
+public static final int OPC_imul
+
+public static final int OPC_ineg
+
+public static final int OPC_instanceof
+
+public static final int OPC_invokeinterface
+
+public static final int OPC_invokespecial
+
+public static final int OPC_invokestatic
+
+public static final int OPC_invokevirtual
+
+public static final int OPC_ior
+
+public static final int OPC_irem
+
+public static final int OPC_ireturn
+
+public static final int OPC_ishl
+
+public static final int OPC_ishr
+
+public static final int OPC_istore
+
+public static final int OPC_istore_0
+
+public static final int OPC_istore_1
+
+public static final int OPC_istore_2
+
+public static final int OPC_istore_3
+
+public static final int OPC_isub
+
+public static final int OPC_iushr
+
+public static final int OPC_ixor
+
+public static final int OPC_jsr
+
+public static final int OPC_jsr_w
+
+public static final int OPC_l2d
+
+public static final int OPC_l2f
+
+public static final int OPC_l2i
+
+public static final int OPC_ladd
+
+public static final int OPC_laload
+
+public static final int OPC_land
+
+public static final int OPC_lastore
+
+public static final int OPC_lcmp
+
+public static final int OPC_lconst_0
+
+public static final int OPC_lconst_1
+
+public static final int OPC_ldc
+
+public static final int OPC_ldc2_w
+
+public static final int OPC_ldc_w
+
+public static final int OPC_ldiv
+
+public static final int OPC_lload
+
+public static final int OPC_lload_0
+
+public static final int OPC_lload_1
+
+public static final int OPC_lload_2
+
+public static final int OPC_lload_3
+
+public static final int OPC_lmul
+
+public static final int OPC_lneg
+
+public static final int OPC_lookupswitch
+
+public static final int OPC_lor
+
+public static final int OPC_lrem
+
+public static final int OPC_lreturn
+
+public static final int OPC_lshl
+
+public static final int OPC_lshr
+
+public static final int OPC_lstore
+
+public static final int OPC_lstore_0
+
+public static final int OPC_lstore_1
+
+public static final int OPC_lstore_2
+
+public static final int OPC_lstore_3
+
+public static final int OPC_lsub
+
+public static final int OPC_lushr
+
+public static final int OPC_lxor
+
+public static final int OPC_monitorenter
+
+public static final int OPC_monitorexit
+
+public static final int OPC_multianewarray
+
+public static final int OPC_new
+
+public static final int OPC_newarray
+
+public static final int OPC_nop
+
+public static final int OPC_pop
+
+public static final int OPC_pop2
+
+public static final int OPC_putfield
+
+public static final int OPC_putstatic
+
+public static final int OPC_ret
+
+public static final int OPC_return
+
+public static final int OPC_saload
+
+public static final int OPC_sastore
+
+public static final int OPC_sipush
+
+public static final int OPC_swap
+
+public static final int OPC_tableswitch
+
+public static final int OPC_wide
+
+public static final int StringTag
+
+public static final int Utf8Tag
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.luni.internal.reflect.ProxyClassFile extends java.lang.Object implements org.apache.harmony.luni.internal.reflect.ProxyConstants
+
+----------------FIELDS----------------
+
+private static java.lang.reflect.Method ClassForNameMethod
+
+private static java.lang.reflect.Method ClassGetMethod
+
+private static java.lang.reflect.Method HandlerInvokeMethod
+
+private static final int INCREMENT_SIZE
+
+private static final int INITIAL_CONTENTS_SIZE
+
+private static final int INITIAL_HEADER_SIZE
+
+private static java.lang.reflect.Method ObjectEqualsMethod
+
+private static java.lang.reflect.Method ObjectHashCodeMethod
+
+private static java.lang.reflect.Method ObjectToStringMethod
+@dalvik.annotation.Signature (value =Ljava/lang/reflect/Constructor<*>; )
+private static java.lang.reflect.Constructor ProxyConstructor
+
+private static java.lang.reflect.Field ProxyHandlerField
+@dalvik.annotation.Signature (value =Ljava/lang/reflect/Constructor<*>; )
+private static java.lang.reflect.Constructor UndeclaredThrowableExceptionConstructor
+
+private org.apache.harmony.luni.internal.reflect.ProxyConstantPool constantPool
+
+private int constantPoolOffset
+
+private byte[] contents
+
+private int contentsOffset
+
+ byte[] header
+
+ int headerOffset
+
+private org.apache.harmony.luni.internal.reflect.ProxyMethod[] proxyMethods
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+java.lang.Class[])
+
+private void addAttributes()
+
+private void addFields()
+
+private void addMethods()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Ljava/util/ArrayList<Lorg/apache/harmony/luni/internal/reflect/ProxyMethod;>;Ljava/util/HashSet<Ljava/lang/Class<*>;>;)V )
+private void findMethods(
+java.lang.Class
+java.util.ArrayList
+java.util.HashSet)
+
+private void findMethods(
+java.lang.Class[])
+
+private void genCallClassForName(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Ljava/lang/String;[Ljava/lang/Class;)V )
+private void genCallGetMethod(
+java.lang.Class
+java.lang.String
+java.lang.Class[])
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)V )
+private void genCastReturnType(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;I)I )
+private int genInvokeArg(
+java.lang.Class
+int)
+
+private int genInvokeArgs(
+java.lang.Class[])
+
+private void genLoadArg(
+int)
+
+private void genStoreArg(
+int)
+
+public static byte[] generateBytes(
+java.lang.String
+java.lang.Class[])
+
+private void generateCodeAttribute(
+org.apache.harmony.luni.internal.reflect.ProxyMethod)
+
+private byte[] getBytes()
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)[C )
+static char[] getConstantPoolName(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/reflect/Constructor<*>;)[C )
+static char[] getConstantPoolName(
+java.lang.reflect.Constructor)
+
+static char[] getConstantPoolName(
+java.lang.reflect.Method)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/lang/reflect/Method; )
+private java.lang.reflect.Method typeAccessMethod(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/lang/reflect/Field; )
+private java.lang.reflect.Field typeField(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/lang/reflect/Constructor<*>; )
+private java.lang.reflect.Constructor typeInitMethod(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)Ljava/lang/String; )
+private java.lang.String typeWrapperName(
+java.lang.Class)
+
+private void writeIntConstant(
+int)
+
+private void writeLdc(
+java.lang.String)
+
+private void writeUnsignedByte(
+int)
+
+private void writeUnsignedShort(
+int)
+
+private void writeUnsignedWord(
+int)
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.internal.reflect.ProxyConstantPool extends java.lang.Object implements org.apache.harmony.luni.internal.reflect.ProxyConstants
+
+----------------FIELDS----------------
+
+public static final int CLASS_INITIAL_SIZE
+
+public static final int CONSTANTPOOL_GROW_SIZE
+
+public static final int CONSTANTPOOL_INITIAL_SIZE
+
+public static final int FIELD_INITIAL_SIZE
+
+public static final int INTERFACE_INITIAL_SIZE
+
+public static final int METHOD_INITIAL_SIZE
+
+public static final int NAMEANDTYPE_INITIAL_SIZE
+
+public static final int STRING_INITIAL_SIZE
+
+public static final int UTF8_INITIAL_SIZE
+
+ org.apache.harmony.luni.internal.reflect.ProxyCharArrayCache UTF8Cache
+
+ org.apache.harmony.luni.internal.reflect.ProxyCharArrayCache classNameCache
+
+ int currentIndex
+
+ int currentOffset
+
+ org.apache.harmony.luni.internal.reflect.ProxyObjectCache fieldCache
+
+ org.apache.harmony.luni.internal.reflect.ProxyObjectCache interfaceMethodCache
+
+ org.apache.harmony.luni.internal.reflect.ProxyObjectCache methodCache
+
+ org.apache.harmony.luni.internal.reflect.ProxyNameAndTypeCache nameAndTypeCache
+
+ byte[] poolContent
+
+ org.apache.harmony.luni.internal.reflect.ProxyCharArrayCache stringCache
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.luni.internal.reflect.ProxyClassFile)
+
+private int literalIndexForNameAndType(
+int
+int)
+
+private final void writeU1(
+int)
+
+private final void writeU2(
+int)
+
+ int literalIndex(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/reflect/Constructor<*>;)I )
+ int literalIndex(
+java.lang.reflect.Constructor)
+
+ int literalIndex(
+java.lang.reflect.Field)
+
+ int literalIndex(
+java.lang.reflect.Method)
+
+ int literalIndex(
+char[])
+
+ int literalIndexForLdc(
+char[])
+
+ int typeIndex(
+java.lang.String)
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.internal.reflect.ProxyMethod extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.lang.Class[] commonExceptions
+
+ java.lang.reflect.Method method
+----------------METHODS----------------
+
+ void <init>(
+java.lang.reflect.Method)
+
+ java.lang.Class[] getCheckedExceptions()
+
+ boolean matchMethod(
+java.lang.reflect.Method)
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.internal.reflect.ProxyNameAndTypeCache extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int elementSize
+
+ int[][] keyTable
+
+ int threshold
+
+ int[] valueTable
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+private void rehash()
+
+ int get(
+int[])
+
+ int hashCode(
+int[])
+
+ int put(
+int[]
+int)
+
+ int size()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.internal.reflect.ProxyObjectCache extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int elementSize
+
+ java.lang.Object[] keyTable
+
+ int threshold
+
+ int[] valueTable
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+private void rehash()
+
+ int get(
+java.lang.Object)
+
+ int hashCode(
+java.lang.Object)
+
+ int put(
+java.lang.Object
+int)
+
+ int size()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.luni.internal.util.TimezoneGetter extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static org.apache.harmony.luni.internal.util.TimezoneGetter instance
+----------------METHODS----------------
+
+public void <init>()
+
+public static org.apache.harmony.luni.internal.util.TimezoneGetter getInstance()
+
+public static void setInstance(
+org.apache.harmony.luni.internal.util.TimezoneGetter)
+
+public abstract java.lang.String getId()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.lang.reflect.GenericSignatureParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+ char[] buffer
+
+private boolean eof
+
+public org.apache.harmony.luni.lang.reflect.ListOfTypes exceptionTypes
+
+public java.lang.reflect.Type fieldType
+
+public java.lang.reflect.TypeVariable[] formalTypeParameters
+
+ java.lang.reflect.GenericDeclaration genericDecl
+
+ java.lang.String identifier
+
+public org.apache.harmony.luni.lang.reflect.ListOfTypes interfaceTypes
+
+public org.apache.harmony.luni.lang.reflect.ListOfTypes parameterTypes
+
+ int pos
+
+public java.lang.reflect.Type returnType
+
+public java.lang.reflect.Type superclassType
+
+ char symbol
+----------------METHODS----------------
+
+public void <init>()
+
+ void expect(
+char)
+
+ boolean isStopSymbol(
+char)
+
+ void parseClassSignature()
+
+ java.lang.reflect.Type parseClassTypeSignature()
+
+ java.lang.reflect.Type parseFieldTypeSignature()
+
+public void parseForClass(
+java.lang.reflect.GenericDeclaration
+java.lang.String)
+
+public void parseForConstructor(
+java.lang.reflect.GenericDeclaration
+java.lang.String)
+
+public void parseForField(
+java.lang.reflect.GenericDeclaration
+java.lang.String)
+
+public void parseForMethod(
+java.lang.reflect.GenericDeclaration
+java.lang.String)
+@dalvik.annotation.Signature (value =()Lorg/apache/harmony/luni/lang/reflect/ImplForVariable<Ljava/lang/reflect/GenericDeclaration;>; )
+ org.apache.harmony.luni.lang.reflect.ImplForVariable parseFormalTypeParameter()
+
+ void parseMethodTypeSignature(
+boolean)
+
+ void parseOptFormalTypeParameters()
+
+ org.apache.harmony.luni.lang.reflect.ListOfTypes parseOptTypeArguments()
+
+ java.lang.reflect.Type parseReturnType()
+
+ java.lang.reflect.Type parseTypeArgument()
+
+ java.lang.reflect.Type parseTypeSignature()
+@dalvik.annotation.Signature (value =()Lorg/apache/harmony/luni/lang/reflect/ImplForVariable<Ljava/lang/reflect/GenericDeclaration;>; )
+ org.apache.harmony.luni.lang.reflect.ImplForVariable parseTypeVariableSignature()
+
+ void scanIdentifier()
+
+ void scanSymbol()
+
+ void setInput(
+java.lang.reflect.GenericDeclaration
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.luni.lang.reflect.ImplForArray extends java.lang.Object implements java.lang.reflect.GenericArrayType
+
+----------------FIELDS----------------
+
+private final java.lang.reflect.Type componentType
+----------------METHODS----------------
+
+public void <init>(
+java.lang.reflect.Type)
+
+public java.lang.reflect.Type getGenericComponentType()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.luni.lang.reflect.ImplForType extends java.lang.Object implements java.lang.reflect.ParameterizedType
+
+----------------FIELDS----------------
+
+private final org.apache.harmony.luni.lang.reflect.ListOfTypes args
+
+private final org.apache.harmony.luni.lang.reflect.ImplForType ownerType0
+
+private java.lang.reflect.Type ownerTypeRes
+
+private java.lang.Class rawType
+
+private final java.lang.String rawTypeName
+----------------METHODS----------------
+
+public void <init>(
+org.apache.harmony.luni.lang.reflect.ImplForType
+java.lang.String
+org.apache.harmony.luni.lang.reflect.ListOfTypes)
+
+public java.lang.reflect.Type[] getActualTypeArguments()
+
+public java.lang.reflect.Type getOwnerType()
+
+public java.lang.Class getRawType()
+
+public volatile java.lang.reflect.Type getRawType()
+
+ java.lang.reflect.Type getResolvedType()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<D::Ljava/lang/reflect/GenericDeclaration;>Ljava/lang/Object;Ljava/lang/reflect/TypeVariable<TD;>; )
+public final class org.apache.harmony.luni.lang.reflect.ImplForVariable extends java.lang.Object implements java.lang.reflect.TypeVariable
+
+----------------FIELDS----------------
+
+private org.apache.harmony.luni.lang.reflect.ListOfTypes bounds
+
+private final java.lang.reflect.GenericDeclaration declOfVarUser
+@dalvik.annotation.Signature (value =Lorg/apache/harmony/luni/lang/reflect/ImplForVariable<TD;>; )
+private org.apache.harmony.luni.lang.reflect.ImplForVariable formalVar
+@dalvik.annotation.Signature (value =TD; )
+private java.lang.reflect.GenericDeclaration genericDeclaration
+
+private final java.lang.String name
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(TD;Ljava/lang/String;)V )
+ void <init>(
+java.lang.reflect.GenericDeclaration
+java.lang.String)
+@dalvik.annotation.Signature (value =(TD;Ljava/lang/String;Lorg/apache/harmony/luni/lang/reflect/ListOfTypes;)V )
+ void <init>(
+java.lang.reflect.GenericDeclaration
+java.lang.String
+org.apache.harmony.luni.lang.reflect.ListOfTypes)
+
+static java.lang.reflect.TypeVariable findFormalVar(
+java.lang.reflect.GenericDeclaration
+java.lang.String)
+
+static java.lang.reflect.GenericDeclaration nextLayer(
+java.lang.reflect.GenericDeclaration)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.reflect.Type[] getBounds()
+@dalvik.annotation.Signature (value =()TD; )
+public java.lang.reflect.GenericDeclaration getGenericDeclaration()
+
+public java.lang.String getName()
+
+public int hashCode()
+
+ void resolve()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.luni.lang.reflect.ImplForWildcard extends java.lang.Object implements java.lang.reflect.WildcardType
+
+----------------FIELDS----------------
+
+private final org.apache.harmony.luni.lang.reflect.ListOfTypes extendsBound
+
+private final org.apache.harmony.luni.lang.reflect.ListOfTypes superBound
+----------------METHODS----------------
+
+public void <init>(
+org.apache.harmony.luni.lang.reflect.ListOfTypes
+org.apache.harmony.luni.lang.reflect.ListOfTypes)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/lang/TypeNotPresentException;Ljava/lang/reflect/MalformedParameterizedTypeException; )
+public java.lang.reflect.Type[] getLowerBounds()
+@dalvik.annotation.Throws (value =Ljava/lang/TypeNotPresentException;Ljava/lang/reflect/MalformedParameterizedTypeException; )
+public java.lang.reflect.Type[] getUpperBounds()
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.lang.reflect.ListOfTypes extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final org.apache.harmony.luni.lang.reflect.ListOfTypes empty
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/reflect/Type;>; )
+ java.util.ArrayList list
+
+private java.lang.reflect.Type[] resolvedTypes
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+int)
+
+ void <init>(
+java.lang.reflect.Type[])
+
+ void add(
+java.lang.reflect.Type)
+
+public java.lang.reflect.Type[] getResolvedTypes()
+
+ int length()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.lang.reflect.ListOfVariables extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.reflect.TypeVariable[] empty
+@dalvik.annotation.Signature (value =Ljava/util/ArrayList<Ljava/lang/reflect/TypeVariable<*>;>; )
+ java.util.ArrayList array
+
+ int n
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+@dalvik.annotation.Signature (value =(Ljava/lang/reflect/TypeVariable<*>;)V )
+ void add(
+java.lang.reflect.TypeVariable)
+@dalvik.annotation.Signature (value =()[Ljava/lang/reflect/TypeVariable<*>; )
+ java.lang.reflect.TypeVariable[] getArray()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.lang.reflect.Types extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.reflect.Type[] getClonedTypeArray(
+org.apache.harmony.luni.lang.reflect.ListOfTypes)
+
+public static java.lang.reflect.Type getType(
+java.lang.reflect.Type)
+
+________________CLASS________________
+
+
+final class org.apache.harmony.luni.net.GenericIPMreq extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.net.InetAddress interfaceAddr
+
+private int interfaceIdx
+
+private boolean isIPV6Address
+
+private java.net.InetAddress multiaddr
+----------------METHODS----------------
+
+ void <init>(
+java.net.InetAddress)
+
+ void <init>(
+java.net.InetAddress
+java.net.NetworkInterface)
+
+private void init()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Boolean;>; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =Action )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/net/NetUtil; )
+final class org.apache.harmony.luni.net.NetUtil$Action extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+private final java.lang.String propertyName
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+public java.lang.Boolean run()
+
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/luni/net/NetUtil$Action; )
+public class org.apache.harmony.luni.net.NetUtil extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+static int bytesToInt(
+byte[]
+int)
+@dalvik.annotation.Signature (value =(Ljava/net/URI;)Ljava/util/List<Ljava/net/Proxy;>; )
+public static java.util.List getProxyList(
+java.net.URI)
+
+static void intToBytes(
+int
+byte[]
+int)
+
+public static boolean preferIPv4Stack()
+
+public static boolean preferIPv6Addresses()
+
+public static boolean usingSocks(
+java.net.Proxy)
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.net.PlainDatagramSocketImpl extends java.net.DatagramSocketImpl
+
+----------------FIELDS----------------
+
+static final int FLAG_SHUTDOWN
+
+static final int IP_MULTICAST_ADD
+
+static final int IP_MULTICAST_DROP
+
+static final int IP_MULTICAST_TTL
+
+static final int MULTICAST_IF
+
+static final int MULTICAST_TTL
+
+static final int REUSEADDR_AND_REUSEPORT
+
+private static final int SO_BROADCAST
+
+static final int TCP_NODELAY
+
+private boolean bindToDevice
+
+private java.net.InetAddress connectedAddress
+
+private int connectedPort
+
+private byte[] ipaddress
+
+private volatile boolean isNativeConnected
+
+private org.apache.harmony.luni.platform.INetworkSystem netImpl
+
+public int receiveTimeout
+
+public boolean shutdownInput
+
+public boolean streaming
+
+private int trafficClass
+
+private int ttl
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.io.FileDescriptor
+int)
+
+private void updatePacketRecvAddress(
+java.net.DatagramPacket)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void bind(
+int
+java.net.InetAddress)
+
+public void close()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void connect(
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void create()
+
+public void disconnect()
+
+protected void finalize()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public java.lang.Object getOption(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public byte getTTL()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int getTimeToLive()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void join(
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void joinGroup(
+java.net.SocketAddress
+java.net.NetworkInterface)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void leave(
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void leaveGroup(
+java.net.SocketAddress
+java.net.NetworkInterface)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected int peek(
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int peekData(
+java.net.DatagramPacket)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void receive(
+java.net.DatagramPacket)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void send(
+java.net.DatagramPacket)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setOption(
+int
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setTTL(
+byte)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setTimeToLive(
+int)
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.net.PlainMulticastSocketImpl extends org.apache.harmony.luni.net.PlainDatagramSocketImpl
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void create()
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.net.PlainSocketImpl extends java.net.SocketImpl
+
+----------------FIELDS----------------
+
+static final int FLAG_SHUTDOWN
+
+static final int MULTICAST_IF
+
+static final int MULTICAST_TTL
+
+static final int TCP_NODELAY
+
+private static java.lang.reflect.Field fdField
+
+private static java.net.InetAddress lastConnectedAddress
+
+private static int lastConnectedPort
+
+private static java.lang.reflect.Field localportField
+
+protected org.apache.harmony.luni.platform.INetworkSystem netImpl
+
+ java.net.Proxy proxy
+
+public boolean shutdownInput
+
+public boolean streaming
+
+private boolean tcpNoDelay
+
+private int trafficClass
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void connect(
+java.net.InetAddress
+int
+int)
+
+private java.lang.reflect.Field getSocketImplField(
+java.lang.String)
+
+private void setLocalport(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void socksBind()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void socksConnect(
+java.net.InetAddress
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+private java.net.InetAddress socksGetServerAddress()
+
+private int socksGetServerPort()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private org.apache.harmony.luni.net.Socks4Message socksReadReply()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void socksRequestConnection(
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void socksSendRequest(
+int
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void accept(
+java.net.SocketImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void bind(
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void connect(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void connect(
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void connect(
+java.net.SocketAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void create(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void finalize()
+
+ java.io.FileDescriptor getFD()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.io.InputStream getInputStream()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public java.lang.Object getOption(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.io.OutputStream getOutputStream()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void listen(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void sendUrgentData(
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setOption(
+int
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void shutdownInput()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void shutdownOutput()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void socksAccept()
+
+protected boolean supportsUrgentData()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ int write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.net.PlainServerSocketImpl extends org.apache.harmony.luni.net.PlainSocketImpl
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+protected void create(
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/reflect/Field;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class org.apache.harmony.luni.net.PlainSocketImpl$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final org.apache.harmony.luni.net.PlainSocketImpl this$0
+
+final java.lang.String val$fieldName
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.luni.net.PlainSocketImpl
+java.lang.String)
+
+public volatile java.lang.Object run()
+
+public java.lang.reflect.Field run()
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.net.PlainSocketImpl2 extends org.apache.harmony.luni.net.PlainSocketImpl
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.io.FileDescriptor
+int
+java.net.InetAddress
+int)
+
+public void <init>(
+java.net.Proxy)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void create(
+boolean)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.net.SocketImplProvider extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.net.DatagramSocketImpl getDatagramSocketImpl()
+
+public static java.net.DatagramSocketImpl getDatagramSocketImpl(
+java.io.FileDescriptor
+int)
+
+public static java.net.DatagramSocketImpl getMulticastSocketImpl()
+
+public static java.net.SocketImpl getServerSocketImpl()
+
+public static java.net.SocketImpl getServerSocketImpl(
+java.io.FileDescriptor)
+
+public static java.net.SocketImpl getSocketImpl()
+
+public static java.net.SocketImpl getSocketImpl(
+java.io.FileDescriptor
+int
+java.net.InetAddress
+int)
+
+public static java.net.SocketImpl getSocketImpl(
+java.net.Proxy)
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.net.SocketInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+private final org.apache.harmony.luni.net.PlainSocketImpl socket
+----------------METHODS----------------
+
+public void <init>(
+java.net.SocketImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.net.SocketOutputStream extends java.io.OutputStream
+
+----------------FIELDS----------------
+
+private org.apache.harmony.luni.net.PlainSocketImpl socket
+----------------METHODS----------------
+
+public void <init>(
+java.net.SocketImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.net.Socks4Message extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int BUFFER_LENGTH
+
+static final int COMMAND_BIND
+
+static final int COMMAND_CONNECT
+
+private static final int INDEX_COMMAND
+
+private static final int INDEX_IP
+
+private static final int INDEX_PORT
+
+private static final int INDEX_USER_ID
+
+static final int INDEX_VERSION
+
+private static final int MAX_USER_ID_LENGTH
+
+static final int REPLY_LENGTH
+
+static final int RETURN_CANNOT_CONNECT_TO_IDENTD
+
+static final int RETURN_DIFFERENT_USER_IDS
+
+static final int RETURN_FAILURE
+
+static final int RETURN_SUCCESS
+
+private static final int SOCKS_VERSION
+
+protected byte[] buffer
+----------------METHODS----------------
+
+public void <init>()
+
+private int getInt16(
+int)
+
+private int getInt32(
+int)
+
+private java.lang.String getString(
+int
+int)
+
+private int getVersionNumber()
+
+private void setInt16(
+int
+int)
+
+private void setString(
+int
+int
+java.lang.String)
+
+private void setVersionNumber(
+int)
+
+public byte[] getBytes()
+
+public int getCommandOrResult()
+
+public java.lang.String getErrorString(
+int)
+
+public int getIP()
+
+public int getLength()
+
+public int getPort()
+
+public java.lang.String getUserId()
+
+public void setCommandOrResult(
+int)
+
+public void setIP(
+byte[])
+
+public void setPort(
+int)
+
+public void setUserId(
+java.lang.String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/platform/AbstractMemorySpy; )
+@dalvik.annotation.InnerClass (accessFlags =16 name =AddressWrapper )
+final class org.apache.harmony.luni.platform.AbstractMemorySpy$AddressWrapper extends java.lang.Object
+
+----------------FIELDS----------------
+
+volatile boolean autoFree
+
+final org.apache.harmony.luni.platform.PlatformAddress shadow
+
+final org.apache.harmony.luni.platform.AbstractMemorySpy this$0
+@dalvik.annotation.Signature (value =Ljava/lang/ref/PhantomReference<Lorg/apache/harmony/luni/platform/PlatformAddress;>; )
+final java.lang.ref.PhantomReference wrAddress
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.luni.platform.AbstractMemorySpy
+org.apache.harmony.luni.platform.PlatformAddress)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.harmony.luni.platform.IMemorySpy extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void alloc(
+org.apache.harmony.luni.platform.PlatformAddress)
+
+public abstract void autoFree(
+org.apache.harmony.luni.platform.PlatformAddress)
+
+public abstract boolean free(
+org.apache.harmony.luni.platform.PlatformAddress)
+@dalvik.annotation.Throws (value =Ljava/lang/IndexOutOfBoundsException; )
+public abstract void rangeCheck(
+org.apache.harmony.luni.platform.PlatformAddress
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/luni/platform/AbstractMemorySpy$AddressWrapper; )
+abstract class org.apache.harmony.luni.platform.AbstractMemorySpy extends java.lang.Object implements org.apache.harmony.luni.platform.IMemorySpy
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Lorg/apache/harmony/luni/platform/PlatformAddress;Lorg/apache/harmony/luni/platform/AbstractMemorySpy$AddressWrapper;>; )
+protected java.util.Map memoryInUse
+@dalvik.annotation.Signature (value =Ljava/lang/ref/ReferenceQueue<Ljava/lang/Object;>; )
+protected java.lang.ref.ReferenceQueue notifyQueue
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/ref/Reference;Lorg/apache/harmony/luni/platform/PlatformAddress;>; )
+protected java.util.Map refToShadow
+----------------METHODS----------------
+
+public void <init>()
+
+public void alloc(
+org.apache.harmony.luni.platform.PlatformAddress)
+
+public void autoFree(
+org.apache.harmony.luni.platform.PlatformAddress)
+
+public boolean free(
+org.apache.harmony.luni.platform.PlatformAddress)
+
+protected void orphanedMemory(
+java.lang.ref.Reference)
+@dalvik.annotation.Throws (value =Ljava/lang/IndexOutOfBoundsException; )
+public void rangeCheck(
+org.apache.harmony.luni.platform.PlatformAddress
+int
+int)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.harmony.luni.platform.IAdapterManager extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.Object getAdapter(
+org.apache.harmony.luni.platform.IAdaptable
+java.lang.Class)
+
+public abstract boolean hasAdapter(
+org.apache.harmony.luni.platform.IAdaptable
+java.lang.Class)
+
+public abstract void registerAdapters(
+org.apache.harmony.luni.platform.IAdapterFactory
+java.lang.Class)
+
+public abstract void unregisterAdapters(
+org.apache.harmony.luni.platform.IAdapterFactory)
+
+public abstract void unregisterAdapters(
+org.apache.harmony.luni.platform.IAdapterFactory
+java.lang.Class)
+
+________________CLASS________________
+
+
+final class org.apache.harmony.luni.platform.AdapterManager extends java.lang.Object implements org.apache.harmony.luni.platform.IAdapterManager
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/Class;Ljava/util/List<Lorg/apache/harmony/luni/platform/IAdapterFactory;>;>; )
+private final java.util.HashMap factories
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.Object getAdapter(
+org.apache.harmony.luni.platform.IAdaptable
+java.lang.Class)
+
+public boolean hasAdapter(
+org.apache.harmony.luni.platform.IAdaptable
+java.lang.Class)
+
+public void registerAdapters(
+org.apache.harmony.luni.platform.IAdapterFactory
+java.lang.Class)
+
+public void unregisterAdapters(
+org.apache.harmony.luni.platform.IAdapterFactory)
+
+public void unregisterAdapters(
+org.apache.harmony.luni.platform.IAdapterFactory
+java.lang.Class)
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.luni.platform.Endianness extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.luni.platform.Endianness BIG_ENDIAN
+
+public static final org.apache.harmony.luni.platform.Endianness LITTLE_ENDIAN
+
+private final java.lang.String displayName
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+java.lang.String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.harmony.luni.platform.FileDescriptorHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.io.FileDescriptor getFD()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.harmony.luni.platform.IAdaptable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.Object getAdapter(
+java.lang.Class)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.harmony.luni.platform.IAdapterFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.Object getAdapter(
+org.apache.harmony.luni.platform.IAdaptable
+java.lang.Class)
+
+public abstract java.lang.Class[] getAdapterList()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.harmony.luni.platform.ICommonDataTypes extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int SIZEOF_BOOL
+
+public static final int SIZEOF_BOOLEAN
+
+public static final int SIZEOF_DOUBLE
+
+public static final int SIZEOF_EIGHT_BYTES
+
+public static final int SIZEOF_FLOAT
+
+public static final int SIZEOF_IEEE754_32_BITS
+
+public static final int SIZEOF_IEEE754_64_BITS
+
+public static final int SIZEOF_INT16
+
+public static final int SIZEOF_INT32
+
+public static final int SIZEOF_JBOOLEAN
+
+public static final int SIZEOF_JBYTE
+
+public static final int SIZEOF_JCHAR
+
+public static final int SIZEOF_JDOUBLE
+
+public static final int SIZEOF_JFLOAT
+
+public static final int SIZEOF_JINT
+
+public static final int SIZEOF_JLONG
+
+public static final int SIZEOF_JSHORT
+
+public static final int SIZEOF_JSIZE
+
+public static final int SIZEOF_LONG
+
+public static final int SIZEOF_NO_BYTES
+
+public static final int SIZEOF_ONE_BYTE
+
+public static final int SIZEOF_SHORT
+
+public static final int SIZEOF_SIGNED_16_BITS
+
+public static final int SIZEOF_SIGNED_32_BITS
+
+public static final int SIZEOF_SIGNED_64_BITS
+
+public static final int SIZEOF_SIGNED_8_BITS
+
+public static final int SIZEOF_SIGNED_CHAR
+
+public static final int SIZEOF_SIGNED_LONG
+
+public static final int SIZEOF_SIGNED_SHORT
+
+public static final int SIZEOF_TWO_BYTES
+
+public static final int SIZEOF_UINT16
+
+public static final int SIZEOF_UINT32
+
+public static final int SIZEOF_UNSIGNED_32_BITS
+
+public static final int SIZEOF_UNSIGNED_64_BITS
+
+public static final int SIZEOF_UNSIGNED_CHAR
+
+public static final int SIZEOF_UNSIGNED_LONG
+
+public static final int SIZEOF_UNSIGNED_SHORT
+
+public static final int SIZEOF_VOID
+
+public static final int SIZE_OF_FOUR_BYTES
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.harmony.luni.platform.ISystemComponent extends java.lang.Object implements org.apache.harmony.luni.platform.IAdaptable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.harmony.luni.platform.IFileSystem extends java.lang.Object implements org.apache.harmony.luni.platform.ISystemComponent
+
+----------------FIELDS----------------
+
+public static final int EXCLUSIVE_LOCK_TYPE
+
+public static final int O_APPEND
+
+public static final int O_CREAT
+
+public static final int O_EXCL
+
+public static final int O_NOCTTY
+
+public static final int O_NONBLOCK
+
+public static final int O_RDONLY
+
+public static final int O_RDWR
+
+public static final int O_RDWRSYNC
+
+public static final int O_TRUNC
+
+public static final int O_WRONLY
+
+public static final int SEEK_CUR
+
+public static final int SEEK_END
+
+public static final int SEEK_SET
+
+public static final int SHARED_LOCK_TYPE
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void close(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void fflush(
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int getAllocGranularity()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int ioctlAvailable(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract boolean lock(
+int
+long
+long
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public abstract int open(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long read(
+int
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long readDirect(
+int
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long readv(
+int
+int[]
+int[]
+int[]
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long seek(
+int
+long
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long transfer(
+int
+java.io.FileDescriptor
+long
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void truncate(
+int
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long ttyRead(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void unlock(
+int
+long
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long write(
+int
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long writeDirect(
+int
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract long writev(
+int
+int[]
+int[]
+int[]
+int)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.harmony.luni.platform.IMemorySystem extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int MMAP_READ_ONLY
+
+public static final int MMAP_READ_WRITE
+
+public static final int MMAP_WRITE_COPY
+----------------METHODS----------------
+
+public abstract void flush(
+int
+long)
+
+public abstract void free(
+int)
+
+public abstract int getAddress(
+int)
+
+public abstract byte getByte(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/NullPointerException;Ljava/lang/IndexOutOfBoundsException; )
+public abstract void getByteArray(
+int
+byte[]
+int
+int)
+
+public abstract double getDouble(
+int)
+
+public abstract double getDouble(
+int
+org.apache.harmony.luni.platform.Endianness)
+
+public abstract float getFloat(
+int)
+
+public abstract float getFloat(
+int
+org.apache.harmony.luni.platform.Endianness)
+
+public abstract int getInt(
+int)
+
+public abstract int getInt(
+int
+org.apache.harmony.luni.platform.Endianness)
+
+public abstract long getLong(
+int)
+
+public abstract long getLong(
+int
+org.apache.harmony.luni.platform.Endianness)
+
+public abstract int getPointerSize()
+
+public abstract short getShort(
+int)
+
+public abstract short getShort(
+int
+org.apache.harmony.luni.platform.Endianness)
+
+public abstract boolean isLittleEndian()
+
+public abstract boolean isLoaded(
+int
+long)
+
+public abstract void load(
+int
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/OutOfMemoryError; )
+public abstract int malloc(
+int)
+
+public abstract void memmove(
+int
+int
+long)
+
+public abstract void memset(
+int
+byte
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int mmap(
+int
+long
+long
+int)
+
+public abstract void setAddress(
+int
+int)
+
+public abstract void setByte(
+int
+byte)
+@dalvik.annotation.Throws (value =Ljava/lang/NullPointerException;Ljava/lang/IndexOutOfBoundsException; )
+public abstract void setByteArray(
+int
+byte[]
+int
+int)
+
+public abstract void setDouble(
+int
+double)
+
+public abstract void setDouble(
+int
+double
+org.apache.harmony.luni.platform.Endianness)
+
+public abstract void setFloat(
+int
+float)
+
+public abstract void setFloat(
+int
+float
+org.apache.harmony.luni.platform.Endianness)
+
+public abstract void setInt(
+int
+int)
+
+public abstract void setInt(
+int
+int
+org.apache.harmony.luni.platform.Endianness)
+@dalvik.annotation.Throws (value =Ljava/lang/NullPointerException;Ljava/lang/IndexOutOfBoundsException; )
+public abstract void setIntArray(
+int
+int[]
+int
+int
+boolean)
+
+public abstract void setLong(
+int
+long)
+
+public abstract void setLong(
+int
+long
+org.apache.harmony.luni.platform.Endianness)
+
+public abstract void setShort(
+int
+short)
+
+public abstract void setShort(
+int
+short
+org.apache.harmony.luni.platform.Endianness)
+@dalvik.annotation.Throws (value =Ljava/lang/NullPointerException;Ljava/lang/IndexOutOfBoundsException; )
+public abstract void setShortArray(
+int
+short[]
+int
+int
+boolean)
+
+public abstract void unmap(
+int
+long)
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.harmony.luni.platform.INetworkSystem extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int SOCKET_CONNECT_STEP_CHECK
+
+public static final int SOCKET_CONNECT_STEP_START
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void accept(
+java.io.FileDescriptor
+java.net.SocketImpl
+java.io.FileDescriptor
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract int availableStream(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract void bind(
+java.io.FileDescriptor
+int
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract boolean bind2(
+java.io.FileDescriptor
+int
+boolean
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int connect(
+java.io.FileDescriptor
+int
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract void connectDatagram(
+java.io.FileDescriptor
+int
+int
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void connectStreamWithTimeoutSocket(
+java.io.FileDescriptor
+int
+int
+int
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int connectWithTimeout(
+java.io.FileDescriptor
+int
+int
+java.net.InetAddress
+int
+int
+byte[])
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract void createDatagramSocket(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract void createMulticastSocket(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract void createServerStreamSocket(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void createSocket(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract void disconnectDatagram(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+public abstract java.net.InetAddress getHostByAddr(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+public abstract java.net.InetAddress getHostByName(
+java.lang.String
+boolean)
+
+public abstract int getSocketFlags()
+
+public abstract java.net.InetAddress getSocketLocalAddress(
+java.io.FileDescriptor
+boolean)
+
+public abstract int getSocketLocalPort(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract java.lang.Object getSocketOption(
+java.io.FileDescriptor
+int)
+
+public abstract java.nio.channels.Channel inheritedChannel()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract void listenStreamSocket(
+java.io.FileDescriptor
+int)
+
+public abstract void oneTimeInitialization(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int peekDatagram(
+java.io.FileDescriptor
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int read(
+java.io.FileDescriptor
+byte[]
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int readDirect(
+java.io.FileDescriptor
+int
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int receiveDatagram(
+java.io.FileDescriptor
+java.net.DatagramPacket
+byte[]
+int
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int receiveDatagramDirect(
+java.io.FileDescriptor
+java.net.DatagramPacket
+int
+int
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int receiveStream(
+java.io.FileDescriptor
+byte[]
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int recvConnectedDatagram(
+java.io.FileDescriptor
+java.net.DatagramPacket
+byte[]
+int
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int recvConnectedDatagramDirect(
+java.io.FileDescriptor
+java.net.DatagramPacket
+int
+int
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract int[] select(
+java.io.FileDescriptor[]
+java.io.FileDescriptor[]
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int sendConnectedDatagram(
+java.io.FileDescriptor
+byte[]
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int sendConnectedDatagramDirect(
+java.io.FileDescriptor
+int
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int sendDatagram(
+java.io.FileDescriptor
+byte[]
+int
+int
+int
+boolean
+int
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int sendDatagram2(
+java.io.FileDescriptor
+byte[]
+int
+int
+int
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int sendDatagramDirect(
+java.io.FileDescriptor
+int
+int
+int
+int
+boolean
+int
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int sendStream(
+java.io.FileDescriptor
+byte[]
+int
+int)
+
+public abstract void sendUrgentData(
+java.io.FileDescriptor
+byte)
+
+public abstract void setInetAddress(
+java.net.InetAddress
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void setNonBlocking(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public abstract void setSocketOption(
+java.io.FileDescriptor
+int
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void shutdownInput(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void shutdownOutput(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void socketClose(
+java.io.FileDescriptor)
+
+public abstract boolean supportsUrgentData(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int write(
+java.io.FileDescriptor
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int writeDirect(
+java.io.FileDescriptor
+int
+int
+int)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.platform.PlatformAddress extends java.lang.Object implements org.apache.harmony.luni.platform.ICommonDataTypes, java.lang.Comparable
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.luni.platform.PlatformAddress NULL
+
+static final int SIZEOF
+
+static final long UNKNOWN
+
+public static final org.apache.harmony.luni.platform.IMemorySpy memorySpy
+
+static final org.apache.harmony.luni.platform.IMemorySystem osMemory
+
+final int osaddr
+
+final long size
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+int
+long)
+
+public final void autoFree()
+
+public final int compareTo(
+java.lang.Object)
+
+public org.apache.harmony.luni.platform.PlatformAddress duplicate()
+
+public final boolean equals(
+java.lang.Object)
+
+public void free()
+
+public final org.apache.harmony.luni.platform.PlatformAddress getAddress(
+int)
+
+public final byte getByte(
+int)
+
+public final void getByteArray(
+int
+byte[]
+int
+int)
+
+public final double getDouble(
+int)
+
+public final double getDouble(
+int
+org.apache.harmony.luni.platform.Endianness)
+
+public final float getFloat(
+int)
+
+public final float getFloat(
+int
+org.apache.harmony.luni.platform.Endianness)
+
+public final int getInt(
+int)
+
+public final int getInt(
+int
+org.apache.harmony.luni.platform.Endianness)
+
+public final long getLong(
+int)
+
+public final long getLong(
+int
+org.apache.harmony.luni.platform.Endianness)
+
+public final short getShort(
+int)
+
+public final short getShort(
+int
+org.apache.harmony.luni.platform.Endianness)
+
+public final long getSize()
+
+public final int hashCode()
+
+public final boolean isNULL()
+
+public final void moveTo(
+org.apache.harmony.luni.platform.PlatformAddress
+long)
+
+public org.apache.harmony.luni.platform.PlatformAddress offsetBytes(
+int)
+
+public final void setAddress(
+int
+org.apache.harmony.luni.platform.PlatformAddress)
+
+public final void setByte(
+int
+byte)
+
+public final void setByteArray(
+int
+byte[]
+int
+int)
+
+public final void setDouble(
+int
+double)
+
+public final void setDouble(
+int
+double
+org.apache.harmony.luni.platform.Endianness)
+
+public final void setFloat(
+int
+float)
+
+public final void setFloat(
+int
+float
+org.apache.harmony.luni.platform.Endianness)
+
+public final void setInt(
+int
+int)
+
+public final void setInt(
+int
+int
+org.apache.harmony.luni.platform.Endianness)
+
+public final void setIntArray(
+int
+int[]
+int
+int
+boolean)
+
+public final void setLong(
+int
+long)
+
+public final void setLong(
+int
+long
+org.apache.harmony.luni.platform.Endianness)
+
+public final void setShort(
+int
+short)
+
+public final void setShort(
+int
+short
+org.apache.harmony.luni.platform.Endianness)
+
+public final void setShortArray(
+int
+short[]
+int
+int
+boolean)
+
+public final int toInt()
+
+public final long toLong()
+
+public final java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.platform.MappedPlatformAddress extends org.apache.harmony.luni.platform.PlatformAddress
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int
+long)
+
+public org.apache.harmony.luni.platform.PlatformAddress duplicate()
+
+public final void free()
+
+public final void mmapFlush()
+
+public final boolean mmapIsLoaded()
+
+public final void mmapLoad()
+
+public final org.apache.harmony.luni.platform.PlatformAddress offsetBytes(
+int)
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.platform.OSComponent extends java.lang.Object implements org.apache.harmony.luni.platform.IAdaptable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public java.lang.Object getAdapter(
+java.lang.Class)
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.platform.OSComponentFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public static org.apache.harmony.luni.platform.IFileSystem getFileSystem()
+
+public static org.apache.harmony.luni.platform.IMemorySystem getMemorySystem()
+
+public static org.apache.harmony.luni.platform.INetworkSystem getNetworkSystem()
+
+________________CLASS________________
+
+
+ class org.apache.harmony.luni.platform.OSFileSystem extends org.apache.harmony.luni.platform.OSComponent implements org.apache.harmony.luni.platform.IFileSystem
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+private native int closeImpl(
+int)
+
+private native int fflushImpl(
+int
+boolean)
+
+private native int lockImpl(
+int
+long
+long
+int
+boolean)
+
+private native int openImpl(
+byte[]
+int)
+
+private native long readDirectImpl(
+int
+int
+int
+int)
+
+private native long readImpl(
+int
+byte[]
+int
+int)
+
+private native long readvImpl(
+int
+int[]
+int[]
+int[]
+int)
+
+private native long seekImpl(
+int
+long
+int)
+
+private native long transferImpl(
+int
+java.io.FileDescriptor
+long
+long)
+
+private native int truncateImpl(
+int
+long)
+
+private native long ttyReadImpl(
+byte[]
+int
+int)
+
+private native int unlockImpl(
+int
+long
+long)
+
+private final void validateLockArgs(
+int
+long
+long)
+
+private native long writeDirectImpl(
+int
+int
+int
+int)
+
+private native long writeImpl(
+int
+byte[]
+int
+int)
+
+private native long writevImpl(
+int
+int[]
+int[]
+int[]
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void fflush(
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public native int getAllocGranularity()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public native int ioctlAvailable(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean lock(
+int
+long
+long
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/FileNotFoundException; )
+public int open(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long read(
+int
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long readDirect(
+int
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long readv(
+int
+int[]
+int[]
+int[]
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long seek(
+int
+long
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long transfer(
+int
+java.io.FileDescriptor
+long
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void truncate(
+int
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long ttyRead(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void unlock(
+int
+long
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long write(
+int
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long writeDirect(
+int
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long writev(
+int
+int[]
+int[]
+int[]
+int)
+
+________________CLASS________________
+
+
+final class org.apache.harmony.luni.platform.OSMemory extends org.apache.harmony.luni.platform.OSComponent implements org.apache.harmony.luni.platform.IMemorySystem
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.luni.platform.Endianness NATIVE_ORDER
+
+public static final int POINTER_SIZE
+
+private static final org.apache.harmony.luni.platform.OSMemory singleton
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+private native int flushImpl(
+int
+long)
+
+public static org.apache.harmony.luni.platform.OSMemory getOSMemory()
+
+private static native int getPointerSizeImpl()
+
+private static native boolean isLittleEndianImpl()
+
+private native boolean isLoadedImpl(
+int
+long)
+
+private native int loadImpl(
+int
+long)
+
+private native int mmapImpl(
+int
+long
+long
+int)
+
+private int swap(
+int)
+
+private long swap(
+long)
+
+private short swap(
+short)
+
+private native void unmapImpl(
+int
+long)
+
+public void flush(
+int
+long)
+
+public native void free(
+int)
+
+public native int getAddress(
+int)
+
+public native byte getByte(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/NullPointerException;Ljava/lang/IndexOutOfBoundsException; )
+public native void getByteArray(
+int
+byte[]
+int
+int)
+
+public native double getDouble(
+int)
+
+public double getDouble(
+int
+org.apache.harmony.luni.platform.Endianness)
+
+public native float getFloat(
+int)
+
+public float getFloat(
+int
+org.apache.harmony.luni.platform.Endianness)
+
+public native int getInt(
+int)
+
+public int getInt(
+int
+org.apache.harmony.luni.platform.Endianness)
+
+public native long getLong(
+int)
+
+public long getLong(
+int
+org.apache.harmony.luni.platform.Endianness)
+
+public org.apache.harmony.luni.platform.Endianness getNativeOrder()
+
+public int getPointerSize()
+
+public native short getShort(
+int)
+
+public short getShort(
+int
+org.apache.harmony.luni.platform.Endianness)
+
+public boolean isLittleEndian()
+
+public boolean isLoaded(
+int
+long)
+
+public void load(
+int
+long)
+@dalvik.annotation.Throws (value =Ljava/lang/OutOfMemoryError; )
+public native int malloc(
+int)
+
+public native void memmove(
+int
+int
+long)
+
+public native void memset(
+int
+byte
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int mmap(
+int
+long
+long
+int)
+
+public native void setAddress(
+int
+int)
+
+public native void setByte(
+int
+byte)
+@dalvik.annotation.Throws (value =Ljava/lang/NullPointerException;Ljava/lang/IndexOutOfBoundsException; )
+public native void setByteArray(
+int
+byte[]
+int
+int)
+
+public native void setDouble(
+int
+double)
+
+public void setDouble(
+int
+double
+org.apache.harmony.luni.platform.Endianness)
+
+public native void setFloat(
+int
+float)
+
+public void setFloat(
+int
+float
+org.apache.harmony.luni.platform.Endianness)
+
+public native void setInt(
+int
+int)
+
+public void setInt(
+int
+int
+org.apache.harmony.luni.platform.Endianness)
+@dalvik.annotation.Throws (value =Ljava/lang/NullPointerException;Ljava/lang/IndexOutOfBoundsException; )
+public native void setIntArray(
+int
+int[]
+int
+int
+boolean)
+
+public native void setLong(
+int
+long)
+
+public void setLong(
+int
+long
+org.apache.harmony.luni.platform.Endianness)
+
+public native void setShort(
+int
+short)
+
+public void setShort(
+int
+short
+org.apache.harmony.luni.platform.Endianness)
+@dalvik.annotation.Throws (value =Ljava/lang/NullPointerException;Ljava/lang/IndexOutOfBoundsException; )
+public native void setShortArray(
+int
+short[]
+int
+int
+boolean)
+
+public void unmap(
+int
+long)
+
+________________CLASS________________
+
+
+final class org.apache.harmony.luni.platform.OSNetworkSystem extends java.lang.Object implements org.apache.harmony.luni.platform.INetworkSystem
+
+----------------FIELDS----------------
+
+private static final int ERRORCODE_SOCKET_TIMEOUT
+
+private static final int INETADDR_REACHABLE
+
+private static boolean isNetworkInited
+
+private static org.apache.harmony.luni.platform.OSNetworkSystem ref
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native void acceptSocketImpl(
+java.io.FileDescriptor
+java.net.SocketImpl
+java.io.FileDescriptor
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+static native int availableStreamImpl(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+static native void connectDatagramImpl2(
+java.io.FileDescriptor
+int
+int
+java.net.InetAddress)
+
+static native int connectSocketImpl(
+java.io.FileDescriptor
+int
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native void connectStreamWithTimeoutSocketImpl(
+java.io.FileDescriptor
+int
+int
+int
+java.net.InetAddress)
+
+static native int connectWithTimeoutSocketImpl(
+java.io.FileDescriptor
+int
+int
+java.net.InetAddress
+int
+int
+byte[])
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+static native void createDatagramSocketImpl(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+static native void createMulticastSocketImpl(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+static native void createServerStreamSocketImpl(
+java.io.FileDescriptor
+boolean)
+
+static native void createSocketImpl(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+static native void disconnectDatagramImpl(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+static native java.net.InetAddress getHostByAddrImpl(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+static native java.net.InetAddress getHostByNameImpl(
+java.lang.String
+boolean)
+
+public static org.apache.harmony.luni.platform.OSNetworkSystem getOSNetworkSystem()
+
+static native int getSocketFlagsImpl()
+
+static native java.net.InetAddress getSocketLocalAddressImpl(
+java.io.FileDescriptor
+boolean)
+
+static native int getSocketLocalPortImpl(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+static native java.lang.Object getSocketOptionImpl(
+java.io.FileDescriptor
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+static native void listenStreamSocketImpl(
+java.io.FileDescriptor
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int peekDatagramImpl(
+java.io.FileDescriptor
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int readSocketDirectImpl(
+java.io.FileDescriptor
+int
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int readSocketImpl(
+java.io.FileDescriptor
+byte[]
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int receiveDatagramDirectImpl(
+java.io.FileDescriptor
+java.net.DatagramPacket
+int
+int
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int receiveDatagramImpl(
+java.io.FileDescriptor
+java.net.DatagramPacket
+byte[]
+int
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int receiveStreamImpl(
+java.io.FileDescriptor
+byte[]
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int recvConnectedDatagramDirectImpl(
+java.io.FileDescriptor
+java.net.DatagramPacket
+int
+int
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int recvConnectedDatagramImpl(
+java.io.FileDescriptor
+java.net.DatagramPacket
+byte[]
+int
+int
+int
+boolean)
+
+static native int selectImpl(
+java.io.FileDescriptor[]
+java.io.FileDescriptor[]
+int
+int
+int[]
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int sendConnectedDatagramDirectImpl(
+java.io.FileDescriptor
+int
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int sendConnectedDatagramImpl(
+java.io.FileDescriptor
+byte[]
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int sendDatagramDirectImpl(
+java.io.FileDescriptor
+int
+int
+int
+int
+boolean
+int
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int sendDatagramImpl(
+java.io.FileDescriptor
+byte[]
+int
+int
+int
+boolean
+int
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int sendDatagramImpl2(
+java.io.FileDescriptor
+byte[]
+int
+int
+int
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int sendStreamImpl(
+java.io.FileDescriptor
+byte[]
+int
+int)
+
+static native void sendUrgentDataImpl(
+java.io.FileDescriptor
+byte)
+
+static native void setNonBlockingImpl(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+static native void setSocketOptionImpl(
+java.io.FileDescriptor
+int
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native void shutdownInputImpl(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native void shutdownOutputImpl(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+static native void socketBindImpl(
+java.io.FileDescriptor
+int
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+static native boolean socketBindImpl2(
+java.io.FileDescriptor
+int
+boolean
+java.net.InetAddress)
+
+static native void socketCloseImpl(
+java.io.FileDescriptor)
+
+static native boolean supportsUrgentDataImpl(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int writeSocketDirectImpl(
+java.io.FileDescriptor
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static native int writeSocketImpl(
+java.io.FileDescriptor
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void accept(
+java.io.FileDescriptor
+java.net.SocketImpl
+java.io.FileDescriptor
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int availableStream(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void bind(
+java.io.FileDescriptor
+int
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public boolean bind2(
+java.io.FileDescriptor
+int
+boolean
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int connect(
+java.io.FileDescriptor
+int
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void connectDatagram(
+java.io.FileDescriptor
+int
+int
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connectStreamWithTimeoutSocket(
+java.io.FileDescriptor
+int
+int
+int
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int connectWithTimeout(
+java.io.FileDescriptor
+int
+int
+java.net.InetAddress
+int
+int
+byte[])
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void createDatagramSocket(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void createMulticastSocket(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void createServerStreamSocket(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void createSocket(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void disconnectDatagram(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+public java.net.InetAddress getHostByAddr(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+public java.net.InetAddress getHostByName(
+java.lang.String
+boolean)
+
+public int getSocketFlags()
+
+public java.net.InetAddress getSocketLocalAddress(
+java.io.FileDescriptor
+boolean)
+
+public int getSocketLocalPort(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public java.lang.Object getSocketOption(
+java.io.FileDescriptor
+int)
+
+public java.nio.channels.Channel inheritedChannel()
+
+native java.nio.channels.Channel inheritedChannelImpl()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void listenStreamSocket(
+java.io.FileDescriptor
+int)
+
+public void oneTimeInitialization(
+boolean)
+
+native void oneTimeInitializationImpl(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int peekDatagram(
+java.io.FileDescriptor
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+java.io.FileDescriptor
+byte[]
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int readDirect(
+java.io.FileDescriptor
+int
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int receiveDatagram(
+java.io.FileDescriptor
+java.net.DatagramPacket
+byte[]
+int
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int receiveDatagramDirect(
+java.io.FileDescriptor
+java.net.DatagramPacket
+int
+int
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int receiveStream(
+java.io.FileDescriptor
+byte[]
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int recvConnectedDatagram(
+java.io.FileDescriptor
+java.net.DatagramPacket
+byte[]
+int
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int recvConnectedDatagramDirect(
+java.io.FileDescriptor
+java.net.DatagramPacket
+int
+int
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int[] select(
+java.io.FileDescriptor[]
+java.io.FileDescriptor[]
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int sendConnectedDatagram(
+java.io.FileDescriptor
+byte[]
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int sendConnectedDatagramDirect(
+java.io.FileDescriptor
+int
+int
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int sendDatagram(
+java.io.FileDescriptor
+byte[]
+int
+int
+int
+boolean
+int
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int sendDatagram2(
+java.io.FileDescriptor
+byte[]
+int
+int
+int
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int sendDatagramDirect(
+java.io.FileDescriptor
+int
+int
+int
+int
+boolean
+int
+java.net.InetAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int sendStream(
+java.io.FileDescriptor
+byte[]
+int
+int)
+
+public void sendUrgentData(
+java.io.FileDescriptor
+byte)
+
+public void setInetAddress(
+java.net.InetAddress
+byte[])
+
+native void setInetAddressImpl(
+java.net.InetAddress
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setNonBlocking(
+java.io.FileDescriptor
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setSocketOption(
+java.io.FileDescriptor
+int
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void shutdownInput(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void shutdownOutput(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void socketClose(
+java.io.FileDescriptor)
+
+public boolean supportsUrgentData(
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int write(
+java.io.FileDescriptor
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int writeDirect(
+java.io.FileDescriptor
+int
+int
+int)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.platform.Platform extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final org.apache.harmony.luni.platform.IAdapterManager ADAPTER_MANAGER
+
+static final org.apache.harmony.luni.platform.IFileSystem FILE_SYSTEM
+
+static final org.apache.harmony.luni.platform.IMemorySystem MEMORY_SYSTEM
+
+static final org.apache.harmony.luni.platform.INetworkSystem NETWORK_SYSTEM
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static final void accessCheck()
+
+public static org.apache.harmony.luni.platform.IAdapterManager getAdapterManager()
+
+public static org.apache.harmony.luni.platform.IFileSystem getFileSystem()
+
+public static org.apache.harmony.luni.platform.IMemorySystem getMemorySystem()
+
+public static org.apache.harmony.luni.platform.INetworkSystem getNetworkSystem()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.platform.PlatformAddressFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static org.apache.harmony.luni.platform.PlatformAddress alloc(
+int)
+
+public static org.apache.harmony.luni.platform.PlatformAddress alloc(
+int
+byte)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static org.apache.harmony.luni.platform.PlatformAddress allocMap(
+int
+long
+long
+int)
+
+public static org.apache.harmony.luni.platform.MappedPlatformAddress mapOn(
+int
+long)
+
+public static org.apache.harmony.luni.platform.PlatformAddress on(
+int)
+
+public static org.apache.harmony.luni.platform.PlatformAddress on(
+int
+long)
+
+________________CLASS________________
+
+
+final class org.apache.harmony.luni.platform.RuntimeMemorySpy extends org.apache.harmony.luni.platform.AbstractMemorySpy
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void alloc(
+org.apache.harmony.luni.platform.PlatformAddress)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.util.Base64 extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final byte[] map
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static byte[] decode(
+byte[])
+
+public static byte[] decode(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/io/UnsupportedEncodingException; )
+public static java.lang.String encode(
+byte[]
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.util.BinarySearch extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static int binarySearch(
+java.lang.String
+char)
+
+public static int binarySearchRange(
+java.lang.String
+char)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Comparator<Ljava/lang/String;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.luni.util.DeleteOnExit$1 extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+public int compare(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.util.DeleteOnExit extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Vector<Ljava/lang/String;>; )
+private static java.util.Vector deleteList
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static void addFile(
+java.lang.String)
+
+public static void deleteOnExit()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.util.ErrorCodeException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private int errorCode
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public int getErrorCode()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/util/FloatingPointParser; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =StringExponentPair )
+final class org.apache.harmony.luni.util.FloatingPointParser$StringExponentPair extends java.lang.Object
+
+----------------FIELDS----------------
+
+ int e
+
+ boolean negative
+
+ java.lang.String s
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+int
+boolean)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/luni/util/FloatingPointParser$StringExponentPair; )
+public final class org.apache.harmony.luni.util.FloatingPointParser extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+private static org.apache.harmony.luni.util.FloatingPointParser$StringExponentPair initialParse(
+java.lang.String
+int)
+
+private static native double parseDblImpl(
+java.lang.String
+int)
+
+private static double parseDblName(
+java.lang.String
+int)
+
+public static double parseDouble(
+java.lang.String)
+
+public static float parseFloat(
+java.lang.String)
+
+private static native float parseFltImpl(
+java.lang.String
+int)
+
+private static float parseFltName(
+java.lang.String
+int)
+
+________________CLASS________________
+
+
+final class org.apache.harmony.luni.util.HexStringParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String BINARY_EXPONENT
+
+private static final int DOUBLE_EXPONENT_WIDTH
+
+private static final int DOUBLE_MANTISSA_WIDTH
+
+private static final int FLOAT_EXPONENT_WIDTH
+
+private static final int FLOAT_MANTISSA_WIDTH
+
+private static final java.lang.String FLOAT_TYPE_SUFFIX
+
+private static final java.lang.String HEX_PATTERN
+
+private static final int HEX_RADIX
+
+private static final java.lang.String HEX_SIGNIFICANT
+
+private static final int MAX_SIGNIFICANT_LENGTH
+
+private static final java.util.regex.Pattern PATTERN
+
+private final long EXPONENT_BASE
+
+private final int EXPONENT_WIDTH
+
+private final long MANTISSA_MASK
+
+private final int MANTISSA_WIDTH
+
+private final long MAX_EXPONENT
+
+private final long MIN_EXPONENT
+
+private java.lang.String abandonedNumber
+
+private long exponent
+
+private long mantissa
+
+private long sign
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+int)
+
+private void checkedAddExponent(
+long)
+
+private int countBitsLength(
+long)
+
+private void discardTrailingBits(
+long)
+
+private void fitMantissaInDesiredWidth(
+int)
+
+private java.lang.String getNormalizedSignificand(
+java.lang.String
+java.lang.String)
+
+private int getOffset(
+java.lang.String
+java.lang.String)
+
+private static java.lang.String[] getSegmentsFromHexString(
+java.lang.String)
+
+private long parse(
+java.lang.String)
+
+public static double parseDouble(
+java.lang.String)
+
+private void parseExponent(
+java.lang.String)
+
+public static float parseFloat(
+java.lang.String)
+
+private void parseHexSign(
+java.lang.String)
+
+private void parseMantissa(
+java.lang.String)
+
+private void processNormalNumber()
+
+private void processSubNormalNumber()
+
+private void round()
+
+private void setInfinite()
+
+private void setZero()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.util.Inet6Util extends java.lang.Object
+
+----------------FIELDS----------------
+
+static java.lang.String hexCharacters
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.lang.String addressToString(
+int)
+
+public static int bytesToInt(
+byte[]
+int)
+
+public static void convertToBytes(
+java.lang.String
+byte[]
+int)
+
+public static byte[] createByteArrayFromIPAddressString(
+java.lang.String)
+
+public static java.lang.String createIPAddrStringFromByteArray(
+byte[])
+
+static int getIntValue(
+char)
+
+private static boolean isIPv4MappedAddress(
+byte[])
+
+static boolean isValidHexChar(
+char)
+
+public static boolean isValidIP4Word(
+java.lang.String)
+
+public static boolean isValidIP6Address(
+java.lang.String)
+
+public static boolean isValidIPV4Address(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.util.InvalidJarIndexException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.util.Msg extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String sResource
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String getString(
+java.lang.String)
+
+public static java.lang.String getString(
+java.lang.String
+char)
+
+public static java.lang.String getString(
+java.lang.String
+int)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Object;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class org.apache.harmony.luni.util.MsgHelp$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final java.lang.ClassLoader val$loader
+
+final java.util.Locale val$locale
+
+final java.lang.String val$resource
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+java.util.Locale
+java.lang.ClassLoader)
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.luni.util.MsgHelp extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/ref/SoftReference<Ljava/util/ResourceBundle;>;>; )
+private static java.util.HashMap sRefMap
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.lang.String format(
+java.lang.String
+java.lang.Object[])
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.String)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.String
+java.lang.Object[])
+
+public static java.util.ResourceBundle loadBundle(
+java.lang.String)
+
+public static java.util.ResourceBundle setLocale(
+java.util.Locale
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.util.NotImplementedException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.io.PrintStream)
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+public void <init>(
+java.lang.Throwable)
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.luni.util.NumberConverter extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final long[] TEN_TO_THE
+
+private static final double invLogOfTenBaseTwo
+
+private int firstK
+
+private int getCount
+
+private int setCount
+
+private int[] uArray
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private native void bigIntDigitGeneratorInstImpl(
+long
+int
+boolean
+boolean
+int)
+
+public static java.lang.String convert(
+double)
+
+public static java.lang.String convert(
+float)
+
+private java.lang.String freeFormat()
+
+private java.lang.String freeFormatExponential()
+
+private static org.apache.harmony.luni.util.NumberConverter getConverter()
+
+private void longDigitGenerator(
+long
+int
+boolean
+boolean
+int)
+
+public java.lang.String convertD(
+double)
+
+public java.lang.String convertF(
+float)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =DBEntry )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/util/OIDDatabase; )
+ class org.apache.harmony.luni.util.OIDDatabase$DBEntry extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/List<Lorg/apache/harmony/luni/util/OIDDatabase$DBEntry;>; )
+private final java.util.List equivalents
+
+private final java.lang.String value
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+ void addEquivalent(
+org.apache.harmony.luni.util.OIDDatabase$DBEntry)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Lorg/apache/harmony/luni/util/OIDDatabase$DBEntry;>; )
+ java.util.Set getAllEquivalents()
+
+ java.lang.String getValue()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/luni/util/OIDDatabase$DBEntry; )
+public class org.apache.harmony.luni.util.OIDDatabase extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static org.apache.harmony.luni.util.OIDDatabase instance
+@dalvik.annotation.Signature (value =Ljava/util/Set<Lorg/apache/harmony/luni/util/OIDDatabase$DBEntry;>; )
+private java.util.Set algorithms
+@dalvik.annotation.Signature (value =Ljava/util/Set<Lorg/apache/harmony/luni/util/OIDDatabase$DBEntry;>; )
+private java.util.Set oids
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/util/Iterator<Lorg/apache/harmony/luni/util/OIDDatabase$DBEntry;>;)Ljava/util/Set<Ljava/lang/String;>; )
+private java.util.Set getAllEquivalents(
+java.lang.String
+java.util.Iterator)
+
+public static org.apache.harmony.luni.util.OIDDatabase getInstance()
+
+private void wireTogether(
+org.apache.harmony.luni.util.OIDDatabase$DBEntry
+org.apache.harmony.luni.util.OIDDatabase$DBEntry)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/Set<Ljava/lang/String;>; )
+public java.util.Set getAllAlgorithmsForOID(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/util/Set<Ljava/lang/String;>; )
+public java.util.Set getAllOIDsForAlgorithm(
+java.lang.String)
+
+public java.lang.String getFirstAlgorithmForOID(
+java.lang.String)
+
+public java.lang.String getFirstOIDForAlgorithm(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.util.PasswordProtectedInputStream extends java.io.FilterInputStream
+
+----------------FIELDS----------------
+
+private byte[] password
+
+private int pwdIndex
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.util.PositionedInputStream extends java.io.FilterInputStream
+
+----------------FIELDS----------------
+
+private int currentPosition
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream)
+
+public int currentPosition()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+
+public void resetCurrentPosition()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/security/PrivilegedAction<TT;>; )
+public class org.apache.harmony.luni.util.PriviAction extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+private static final int GET_SECURITY_POLICY
+
+private static final int GET_SECURITY_PROPERTY
+
+private static final int GET_SYSTEM_PROPERTY
+
+private static final int SET_ACCESSIBLE
+
+private int action
+
+private java.lang.Object arg1
+
+private java.lang.Object arg2
+----------------METHODS----------------
+
+public void <init>()
+
+private void <init>(
+int
+java.lang.Object)
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public void <init>(
+java.lang.reflect.AccessibleObject)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+public static java.security.PrivilegedAction getSecurityProperty(
+java.lang.String)
+@dalvik.annotation.Signature (value =()TT; )
+public java.lang.Object run()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.luni.util.SHAOutputStream extends java.io.OutputStream implements java.lang.Cloneable
+
+----------------FIELDS----------------
+
+private static final int BlockSizeInBytes
+
+private static final int H0
+
+private static final int H1
+
+private static final int H2
+
+private static final int H3
+
+private static final int H4
+
+private static final int HConstantsSize
+
+private static final int HashSizeInBytes
+
+private static final int K0_19
+
+private static final int K20_39
+
+private static final int K40_59
+
+private static final int K60_79
+
+private static final int WArraySize
+
+private int[] HConstants
+
+private byte[] MArray
+
+private int[] WArray
+
+private long bytesProcessed
+
+private int bytesToProcess
+
+private byte[] oneByte
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+byte[])
+
+private void copyToInternalBuffer(
+byte[]
+int
+int)
+
+private void initialize()
+
+private void padBuffer()
+
+private void processBuffer()
+
+private static java.lang.String toStringBlock(
+byte[])
+
+private static java.lang.String toStringBlock(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+public int[] getHash()
+
+public byte[] getHashAsBytes()
+
+public byte[] getHashAsBytes(
+boolean)
+
+public void reset()
+
+public java.lang.String toString()
+
+public void write(
+int)
+
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Comparator<TT;>; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =Comparator )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/util/Sorter; )
+public abstract interface class org.apache.harmony.luni.util.Sorter$Comparator extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@java.lang.Deprecated
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/luni/util/Sorter$Comparator; )
+public final class org.apache.harmony.luni.util.Sorter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;Lorg/apache/harmony/luni/util/Sorter$Comparator<TT;>;)V )
+public static void sort(
+java.lang.Object[]
+org.apache.harmony.luni.util.Sorter$Comparator)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Map$Entry<Ljava/lang/String;TV;>; )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/util/TwoKeyHashMap; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Entry )
+public class org.apache.harmony.luni.util.TwoKeyHashMap$Entry extends java.lang.Object implements java.util.Map$Entry
+
+----------------FIELDS----------------
+
+ int hash
+@dalvik.annotation.Signature (value =TE; )
+ java.lang.Object key1
+@dalvik.annotation.Signature (value =TK; )
+ java.lang.Object key2
+@dalvik.annotation.Signature (value =Lorg/apache/harmony/luni/util/TwoKeyHashMap$Entry<TE;TK;TV;>; )
+ org.apache.harmony.luni.util.TwoKeyHashMap$Entry next
+@dalvik.annotation.Signature (value =TV; )
+ java.lang.Object value
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(ITE;TK;TV;Lorg/apache/harmony/luni/util/TwoKeyHashMap$Entry<TE;TK;TV;>;)V )
+public void <init>(
+int
+java.lang.Object
+java.lang.Object
+java.lang.Object
+org.apache.harmony.luni.util.TwoKeyHashMap$Entry)
+
+public boolean equals(
+java.lang.Object)
+
+public volatile java.lang.Object getKey()
+
+public java.lang.String getKey()
+@dalvik.annotation.Signature (value =()TE; )
+public java.lang.Object getKey1()
+@dalvik.annotation.Signature (value =()TK; )
+public java.lang.Object getKey2()
+@dalvik.annotation.Signature (value =()TV; )
+public java.lang.Object getValue()
+
+public int hashCode()
+@dalvik.annotation.Signature (value =(TV;)TV; )
+public java.lang.Object setValue(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/util/TwoKeyHashMap; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<Ljava/util/Map$Entry<Ljava/lang/String;TV;>;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =EntryIteratorImpl )
+ class org.apache.harmony.luni.util.TwoKeyHashMap$EntryIteratorImpl extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+
+private int curr
+@dalvik.annotation.Signature (value =Lorg/apache/harmony/luni/util/TwoKeyHashMap$Entry<TE;TK;TV;>; )
+private org.apache.harmony.luni.util.TwoKeyHashMap$Entry curr_entry
+
+private boolean found
+@dalvik.annotation.Signature (value =Lorg/apache/harmony/luni/util/TwoKeyHashMap$Entry<TE;TK;TV;>; )
+private org.apache.harmony.luni.util.TwoKeyHashMap$Entry returned_entry
+
+private int returned_index
+
+private int startModCount
+
+final org.apache.harmony.luni.util.TwoKeyHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.luni.util.TwoKeyHashMap)
+
+public boolean hasNext()
+
+public volatile java.lang.Object next()
+@dalvik.annotation.Signature (value =()Ljava/util/Map$Entry<Ljava/lang/String;TV;>; )
+public java.util.Map$Entry next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/util/TwoKeyHashMap; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =EntrySetImpl )
+@dalvik.annotation.Signature (value =Ljava/util/AbstractSet<Ljava/util/Map$Entry<Ljava/lang/String;TV;>;>; )
+ class org.apache.harmony.luni.util.TwoKeyHashMap$EntrySetImpl extends java.util.AbstractSet
+
+----------------FIELDS----------------
+
+final org.apache.harmony.luni.util.TwoKeyHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.luni.util.TwoKeyHashMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/util/Map$Entry<Ljava/lang/String;TV;>;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Iterator<TV;>; )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/util/TwoKeyHashMap; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =ValueIteratorImpl )
+ class org.apache.harmony.luni.util.TwoKeyHashMap$ValueIteratorImpl extends java.lang.Object implements java.util.Iterator
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Lorg/apache/harmony/luni/util/TwoKeyHashMap<TE;TK;TV;>.EntryIteratorImpl; )
+private org.apache.harmony.luni.util.TwoKeyHashMap$EntryIteratorImpl itr
+
+final org.apache.harmony.luni.util.TwoKeyHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.luni.util.TwoKeyHashMap)
+
+public boolean hasNext()
+@dalvik.annotation.Signature (value =()TV; )
+public java.lang.Object next()
+
+public void remove()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/util/AbstractCollection<TV;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =ValuesCollectionImpl )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/luni/util/TwoKeyHashMap; )
+ class org.apache.harmony.luni.util.TwoKeyHashMap$ValuesCollectionImpl extends java.util.AbstractCollection
+
+----------------FIELDS----------------
+
+final org.apache.harmony.luni.util.TwoKeyHashMap this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.luni.util.TwoKeyHashMap)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TV;>; )
+public java.util.Iterator iterator()
+
+public int size()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/luni/util/TwoKeyHashMap$ValueIteratorImpl;Lorg/apache/harmony/luni/util/TwoKeyHashMap$ValuesCollectionImpl;Lorg/apache/harmony/luni/util/TwoKeyHashMap$EntryIteratorImpl;Lorg/apache/harmony/luni/util/TwoKeyHashMap$EntrySetImpl;Lorg/apache/harmony/luni/util/TwoKeyHashMap$Entry; )
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/AbstractMap<Ljava/lang/String;TV;>; )
+public class org.apache.harmony.luni.util.TwoKeyHashMap extends java.util.AbstractMap
+
+----------------FIELDS----------------
+
+static final int DEFAULT_INITIAL_SIZE
+
+static final float DEFAULT_LOAD_FACTOR
+@dalvik.annotation.Signature (value =[Lorg/apache/harmony/luni/util/TwoKeyHashMap$Entry<TE;TK;TV;>; )
+private org.apache.harmony.luni.util.TwoKeyHashMap$Entry[] arr
+
+private int arrSize
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/util/Map$Entry<Ljava/lang/String;TV;>;>; )
+private java.util.Set entrySet
+
+private float loadFactor
+
+private int modCount
+
+private int size
+
+ int threshold
+@dalvik.annotation.Signature (value =Ljava/util/Collection<TV;>; )
+private java.util.Collection values
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+int
+float)
+
+static int access$000(
+org.apache.harmony.luni.util.TwoKeyHashMap)
+
+static int access$010(
+org.apache.harmony.luni.util.TwoKeyHashMap)
+
+static org.apache.harmony.luni.util.TwoKeyHashMap$Entry access$100(
+org.apache.harmony.luni.util.TwoKeyHashMap
+java.lang.Object
+java.lang.Object)
+
+static org.apache.harmony.luni.util.TwoKeyHashMap$Entry access$200(
+org.apache.harmony.luni.util.TwoKeyHashMap
+java.lang.Object
+java.lang.Object)
+
+static int access$300(
+org.apache.harmony.luni.util.TwoKeyHashMap)
+
+static int access$308(
+org.apache.harmony.luni.util.TwoKeyHashMap)
+
+static org.apache.harmony.luni.util.TwoKeyHashMap$Entry[] access$400(
+org.apache.harmony.luni.util.TwoKeyHashMap)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Object;)Lorg/apache/harmony/luni/util/TwoKeyHashMap$Entry<TE;TK;TV;>; )
+private final org.apache.harmony.luni.util.TwoKeyHashMap$Entry findEntry(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Object;)Lorg/apache/harmony/luni/util/TwoKeyHashMap$Entry<TE;TK;TV;>; )
+private final org.apache.harmony.luni.util.TwoKeyHashMap$Entry removeEntry(
+java.lang.Object
+java.lang.Object)
+
+public void clear()
+
+public boolean containsKey(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Signature (value =(ITE;TK;TV;Lorg/apache/harmony/luni/util/TwoKeyHashMap$Entry<TE;TK;TV;>;)Lorg/apache/harmony/luni/util/TwoKeyHashMap$Entry<TE;TK;TV;>; )
+ org.apache.harmony.luni.util.TwoKeyHashMap$Entry createEntry(
+int
+java.lang.Object
+java.lang.Object
+java.lang.Object
+org.apache.harmony.luni.util.TwoKeyHashMap$Entry)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/util/Map$Entry<Ljava/lang/String;TV;>;>; )
+ java.util.Iterator createEntrySetIterator()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TV;>; )
+ java.util.Iterator createValueCollectionIterator()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/util/Map$Entry<Ljava/lang/String;TV;>;>; )
+public java.util.Set entrySet()
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Object;)TV; )
+public java.lang.Object get(
+java.lang.Object
+java.lang.Object)
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =(TE;TK;TV;)TV; )
+public java.lang.Object put(
+java.lang.Object
+java.lang.Object
+java.lang.Object)
+
+ void rehash()
+@dalvik.annotation.Signature (value =(Ljava/lang/Object;Ljava/lang/Object;)TV; )
+public java.lang.Object remove(
+java.lang.Object
+java.lang.Object)
+
+public int size()
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<TV;>; )
+public java.util.Collection values()
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.luni.util.URLUtil extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String canonicalizePath(
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.luni.util.Util extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.lang.String[] MONTHS
+
+private static java.lang.String[] WEEKDAYS
+
+private static final java.lang.String defaultEncoding
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/UTFDataFormatException; )
+public static java.lang.String convertFromUTF8(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/UTFDataFormatException; )
+public static java.lang.String convertUTF8WithBuf(
+byte[]
+char[]
+int
+int)
+
+public static java.lang.String decode(
+java.lang.String
+boolean)
+
+public static byte[] getBytes(
+java.lang.String)
+
+private static int parse(
+java.lang.String
+java.lang.String[])
+
+public static long parseDate(
+java.lang.String)
+
+public static java.lang.String toASCIILowerCase(
+java.lang.String)
+
+public static java.lang.String toASCIIUpperCase(
+java.lang.String)
+
+public static java.lang.String toString(
+byte[])
+
+public static java.lang.String toString(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.math.internal.nls.Messages extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String sResource
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String getString(
+java.lang.String)
+
+public static java.lang.String getString(
+java.lang.String
+char)
+
+public static java.lang.String getString(
+java.lang.String
+int)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.misc.HashCode extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int EMPTY_HASH_CODE
+
+private int hashCode
+----------------METHODS----------------
+
+public void <init>()
+
+public static int combine(
+int
+double)
+
+public static int combine(
+int
+float)
+
+public static int combine(
+int
+int)
+
+public static int combine(
+int
+long)
+
+public static int combine(
+int
+java.lang.Object)
+
+public static int combine(
+int
+boolean)
+
+public final org.apache.harmony.misc.HashCode append(
+double)
+
+public final org.apache.harmony.misc.HashCode append(
+float)
+
+public final org.apache.harmony.misc.HashCode append(
+int)
+
+public final org.apache.harmony.misc.HashCode append(
+long)
+
+public final org.apache.harmony.misc.HashCode append(
+java.lang.Object)
+
+public final org.apache.harmony.misc.HashCode append(
+boolean)
+
+public final int hashCode()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.misc.SystemUtils extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int ARC_IA32
+
+public static final int ARC_IA64
+
+public static final int ARC_UNKNOWN
+
+public static final int OS_LINUX
+
+public static final int OS_UNKNOWN
+
+public static final int OS_WINDOWS
+
+private static int arc
+
+private static int os
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static int getOS()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.misc.internal.nls.Messages extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String sResource
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String getString(
+java.lang.String)
+
+public static java.lang.String getString(
+java.lang.String
+char)
+
+public static java.lang.String getString(
+java.lang.String
+int)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.nio.AddressUtil extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static int getChannelAddress(
+java.nio.channels.Channel)
+
+public static int getDirectBufferAddress(
+java.nio.Buffer)
+
+private static native int getFDAddress(
+java.io.FileDescriptor)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.nio.FileChannelFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.nio.channels.FileChannel getFileChannel(
+java.lang.Object
+int
+int)
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.nio.Util extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static void assertArrayIndex(
+int
+int
+int)
+
+public static void assertArrayIndex(
+byte[]
+int
+int)
+
+public static void assertArrayIndex(
+char[]
+int
+int)
+
+public static void assertArrayIndex(
+double[]
+int
+int)
+
+public static void assertArrayIndex(
+float[]
+int
+int)
+
+public static void assertArrayIndex(
+int[]
+int
+int)
+
+public static void assertArrayIndex(
+long[]
+int
+int)
+
+public static void assertArrayIndex(
+java.lang.Object[]
+int
+int)
+
+public static void assertArrayIndex(
+short[]
+int
+int)
+
+public static void assertArrayIndex(
+boolean[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/nio/internal/DatagramChannelImpl; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =DatagramSocketAdapter )
+ class org.apache.harmony.nio.internal.DatagramChannelImpl$DatagramSocketAdapter extends java.net.DatagramSocket
+
+----------------FIELDS----------------
+
+private org.apache.harmony.nio.internal.DatagramChannelImpl channelImpl
+----------------METHODS----------------
+
+ void <init>(
+java.net.DatagramSocketImpl
+org.apache.harmony.nio.internal.DatagramChannelImpl)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void bind(
+java.net.SocketAddress)
+
+public void close()
+
+public void disconnect()
+
+public java.nio.channels.DatagramChannel getChannel()
+
+public java.net.InetAddress getInetAddress()
+
+public java.net.InetAddress getLocalAddress()
+
+public int getPort()
+
+public boolean isBound()
+
+public boolean isConnected()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void receive(
+java.net.DatagramPacket)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void send(
+java.net.DatagramPacket)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/nio/internal/DatagramChannelImpl$DatagramSocketAdapter; )
+ class org.apache.harmony.nio.internal.DatagramChannelImpl extends java.nio.channels.DatagramChannel implements org.apache.harmony.luni.platform.FileDescriptorHandler
+
+----------------FIELDS----------------
+
+private static final int DEFAULT_TIMEOUT
+
+private static final int ERRCODE_SOCKET_NONBLOCKING_WOULD_BLOCK
+
+private static final org.apache.harmony.luni.platform.INetworkSystem networkSystem
+
+private static final byte[] stubArray
+
+ java.net.InetSocketAddress connectAddress
+
+ boolean connected
+
+private java.io.FileDescriptor fd
+
+ boolean isBound
+
+private int localPort
+
+private final java.lang.Object readLock
+
+private java.net.DatagramSocket socket
+
+private int trafficClass
+
+private final java.lang.Object writeLock
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+java.nio.channels.spi.SelectorProvider)
+
+private int calculateByteBufferArray(
+java.nio.ByteBuffer[]
+int
+int)
+
+private void checkNotNull(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void checkOpen()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void checkOpenConnected()
+
+private void checkWritable(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int readImpl(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.net.SocketAddress receiveDirectImpl(
+java.nio.ByteBuffer
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.net.SocketAddress receiveImpl(
+java.nio.ByteBuffer
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int writeImpl(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.nio.channels.DatagramChannel connect(
+java.net.SocketAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.nio.channels.DatagramChannel disconnect()
+
+public java.io.FileDescriptor getFD()
+
+ java.net.InetAddress getLocalAddress()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void implCloseSelectableChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void implConfigureBlocking(
+boolean)
+
+public boolean isConnected()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long read(
+java.nio.ByteBuffer[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.SocketAddress receive(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int send(
+java.nio.ByteBuffer
+java.net.SocketAddress)
+
+public java.net.DatagramSocket socket()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int write(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long write(
+java.nio.ByteBuffer[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/nio/internal/FileChannelImpl; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class org.apache.harmony.nio.internal.FileChannelImpl$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =RepositioningLock )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/nio/internal/FileChannelImpl; )
+ class org.apache.harmony.nio.internal.FileChannelImpl$RepositioningLock extends java.lang.Object
+
+----------------FIELDS----------------
+
+final org.apache.harmony.nio.internal.FileChannelImpl this$0
+----------------METHODS----------------
+
+private void <init>(
+org.apache.harmony.nio.internal.FileChannelImpl)
+
+ void <init>(
+org.apache.harmony.nio.internal.FileChannelImpl
+org.apache.harmony.nio.internal.FileChannelImpl$1)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/nio/internal/FileChannelImpl$1;Lorg/apache/harmony/nio/internal/FileChannelImpl$RepositioningLock; )
+public abstract class org.apache.harmony.nio.internal.FileChannelImpl extends java.nio.channels.FileChannel
+
+----------------FIELDS----------------
+
+private static final int ALLOC_GRANULARITY
+
+private static final org.apache.harmony.luni.platform.IFileSystem fileSystem
+
+private final int handle
+
+private final org.apache.harmony.nio.internal.LockManager lockManager
+
+private final java.lang.Object repositioningLock
+
+private final java.lang.Object stream
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private long kernelTransfer(
+int
+java.io.FileDescriptor
+long
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int writeImpl(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.nio.channels.FileLock basicLock(
+long
+long
+boolean
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void force(
+boolean)
+
+public int getHandle()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void implCloseChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.nio.channels.FileLock lock(
+long
+long
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract java.nio.MappedByteBuffer map(
+java.nio.channels.FileChannel$MapMode
+long
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected final java.nio.MappedByteBuffer mapImpl(
+int
+long
+long)
+@dalvik.annotation.Throws (value =Ljava/nio/channels/ClosedChannelException; )
+protected final void openCheck()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long position()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.nio.channels.FileChannel position(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+java.nio.ByteBuffer
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long read(
+java.nio.ByteBuffer[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void release(
+java.nio.channels.FileLock)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long size()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long transferFrom(
+java.nio.channels.ReadableByteChannel
+long
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long transferTo(
+long
+long
+java.nio.channels.WritableByteChannel)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.nio.channels.FileChannel truncate(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.nio.channels.FileLock tryLock(
+long
+long
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int write(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int write(
+java.nio.ByteBuffer
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long write(
+java.nio.ByteBuffer[]
+int
+int)
+
+________________CLASS________________
+
+
+final class org.apache.harmony.nio.internal.FileLockImpl extends java.nio.channels.FileLock
+
+----------------FIELDS----------------
+
+private boolean isReleased
+----------------METHODS----------------
+
+public void <init>(
+java.nio.channels.FileChannel
+long
+long
+boolean)
+
+public boolean isValid()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void release()
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.nio.internal.IOUtil extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int DEFAULT_BUFFER_SIZE
+----------------METHODS----------------
+
+private void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void convert(
+java.lang.Object
+java.nio.charset.CharsetEncoder
+java.nio.ByteBuffer
+java.nio.CharBuffer
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static void fillBuf(
+java.io.InputStream
+java.nio.ByteBuffer
+java.nio.CharBuffer
+java.nio.charset.CharsetDecoder)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static void flushOutputStreamWriter(
+java.io.OutputStream
+java.nio.ByteBuffer
+java.nio.charset.CharsetEncoder
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static int readInputStreamReader(
+java.io.InputStream
+java.nio.ByteBuffer
+java.nio.CharBuffer
+java.nio.charset.CharsetDecoder
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static int readInputStreamReader(
+char[]
+int
+int
+java.io.InputStream
+java.nio.ByteBuffer
+java.nio.CharBuffer
+java.nio.charset.CharsetDecoder
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static void writeOutputStreamWriter(
+int
+java.io.OutputStream
+java.nio.ByteBuffer
+java.nio.charset.CharsetEncoder
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static void writeOutputStreamWriter(
+java.lang.String
+int
+int
+java.io.OutputStream
+java.nio.ByteBuffer
+java.nio.charset.CharsetEncoder
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static void writeOutputStreamWriter(
+char[]
+int
+int
+java.io.OutputStream
+java.nio.ByteBuffer
+java.nio.charset.CharsetEncoder
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/nio/internal/LockManager; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Comparator<Ljava/nio/channels/FileLock;>; )
+ class org.apache.harmony.nio.internal.LockManager$1 extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+
+final org.apache.harmony.nio.internal.LockManager this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.nio.internal.LockManager)
+
+public volatile int compare(
+java.lang.Object
+java.lang.Object)
+
+public int compare(
+java.nio.channels.FileLock
+java.nio.channels.FileLock)
+
+________________CLASS________________
+
+
+final class org.apache.harmony.nio.internal.LockManager extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Comparator<Ljava/nio/channels/FileLock;>; )
+private final java.util.Comparator lockComparator
+@dalvik.annotation.Signature (value =Ljava/util/SortedSet<Ljava/nio/channels/FileLock;>; )
+private final java.util.SortedSet locks
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Throws (value =Ljava/nio/channels/OverlappingFileLockException; )
+ void addLock(
+java.nio.channels.FileLock)
+
+ void removeLock(
+java.nio.channels.FileLock)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/nio/internal/MappedByteBufferFactory; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/reflect/Constructor;>; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.nio.internal.MappedByteBufferFactory$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object run()
+
+public java.lang.reflect.Constructor run()
+
+________________CLASS________________
+
+
+ class org.apache.harmony.nio.internal.MappedByteBufferFactory extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final java.lang.reflect.Constructor constructor
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+static java.nio.MappedByteBuffer getBuffer(
+org.apache.harmony.luni.platform.PlatformAddress
+int
+long
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/nio/internal/PipeImpl; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =SinkChannelImpl )
+ class org.apache.harmony.nio.internal.PipeImpl$SinkChannelImpl extends java.nio.channels.Pipe$SinkChannel implements org.apache.harmony.luni.platform.FileDescriptorHandler
+
+----------------FIELDS----------------
+
+private org.apache.harmony.nio.internal.SocketChannelImpl sinkSocket
+
+final org.apache.harmony.nio.internal.PipeImpl this$0
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+org.apache.harmony.nio.internal.PipeImpl
+java.nio.channels.spi.SelectorProvider)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean finishConnect()
+
+public java.io.FileDescriptor getFD()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void implCloseSelectableChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void implConfigureBlocking(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int write(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long write(
+java.nio.ByteBuffer[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long write(
+java.nio.ByteBuffer[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =SourceChannelImpl )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/nio/internal/PipeImpl; )
+ class org.apache.harmony.nio.internal.PipeImpl$SourceChannelImpl extends java.nio.channels.Pipe$SourceChannel implements org.apache.harmony.luni.platform.FileDescriptorHandler
+
+----------------FIELDS----------------
+
+private java.nio.channels.ServerSocketChannel sourceServer
+
+private org.apache.harmony.nio.internal.SocketChannelImpl sourceSocket
+
+final org.apache.harmony.nio.internal.PipeImpl this$0
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+org.apache.harmony.nio.internal.PipeImpl
+java.nio.channels.spi.SelectorProvider)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void accept()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void closeServer()
+
+public java.io.FileDescriptor getFD()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void implCloseSelectableChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void implConfigureBlocking(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long read(
+java.nio.ByteBuffer[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long read(
+java.nio.ByteBuffer[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/nio/internal/PipeImpl$SinkChannelImpl;Lorg/apache/harmony/nio/internal/PipeImpl$SourceChannelImpl; )
+final class org.apache.harmony.nio.internal.PipeImpl extends java.nio.channels.Pipe
+
+----------------FIELDS----------------
+
+private int serverPort
+
+private org.apache.harmony.nio.internal.PipeImpl$SinkChannelImpl sink
+
+private org.apache.harmony.nio.internal.PipeImpl$SourceChannelImpl source
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>()
+
+static int access$000(
+org.apache.harmony.nio.internal.PipeImpl)
+
+static int access$002(
+org.apache.harmony.nio.internal.PipeImpl
+int)
+
+private void reset()
+
+public java.nio.channels.Pipe$SinkChannel sink()
+
+public java.nio.channels.Pipe$SourceChannel source()
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.nio.internal.ReadOnlyFileChannel extends org.apache.harmony.nio.internal.FileChannelImpl
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected final java.nio.channels.FileLock basicLock(
+long
+long
+boolean
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void force(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.nio.MappedByteBuffer map(
+java.nio.channels.FileChannel$MapMode
+long
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final long transferFrom(
+java.nio.channels.ReadableByteChannel
+long
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.nio.channels.FileChannel truncate(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final int write(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final int write(
+java.nio.ByteBuffer
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final long write(
+java.nio.ByteBuffer[]
+int
+int)
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.nio.internal.ReadWriteFileChannel extends org.apache.harmony.nio.internal.FileChannelImpl
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.Object
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final java.nio.MappedByteBuffer map(
+java.nio.channels.FileChannel$MapMode
+long
+long)
+
+________________CLASS________________
+
+
+final class org.apache.harmony.nio.internal.SelectionKeyImpl extends java.nio.channels.spi.AbstractSelectionKey
+
+----------------FIELDS----------------
+
+private java.nio.channels.spi.AbstractSelectableChannel channel
+
+private int interestOps
+
+ int oldInterestOps
+
+private int readyOps
+
+private org.apache.harmony.nio.internal.SelectorImpl selector
+----------------METHODS----------------
+
+public void <init>(
+java.nio.channels.spi.AbstractSelectableChannel
+int
+java.lang.Object
+org.apache.harmony.nio.internal.SelectorImpl)
+
+private void checkValid()
+
+public java.nio.channels.SelectableChannel channel()
+
+public int interestOps()
+
+public java.nio.channels.SelectionKey interestOps(
+int)
+
+public int readyOps()
+
+public java.nio.channels.Selector selector()
+
+ void setReadyOps(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<E:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Set<TE;>; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =UnaddableSet )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/nio/internal/SelectorImpl; )
+ class org.apache.harmony.nio.internal.SelectorImpl$UnaddableSet extends java.lang.Object implements java.util.Set
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Set<TE;>; )
+private java.util.Set set
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Set<TE;>;)V )
+ void <init>(
+java.util.Set)
+@dalvik.annotation.Signature (value =(TE;)Z )
+public boolean add(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<+TE;>;)Z )
+public boolean addAll(
+java.util.Collection)
+
+public void clear()
+
+public boolean contains(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean containsAll(
+java.util.Collection)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+public boolean isEmpty()
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<TE;>; )
+public java.util.Iterator iterator()
+
+public boolean remove(
+java.lang.Object)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean removeAll(
+java.util.Collection)
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<*>;)Z )
+public boolean retainAll(
+java.util.Collection)
+
+public int size()
+
+public java.lang.Object[] toArray()
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>([TT;)[TT; )
+public java.lang.Object[] toArray(
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/nio/internal/SelectorImpl$UnaddableSet; )
+final class org.apache.harmony.nio.internal.SelectorImpl extends java.nio.channels.spi.AbstractSelector
+
+----------------FIELDS----------------
+
+private static final int MOCK_READBUF_SIZE
+
+private static final int MOCK_WRITEBUF_SIZE
+
+private static final int NA
+
+private static final int READABLE
+
+private static final int SELECT_BLOCK
+
+private static final int SELECT_NOW
+
+private static final int WRITEABLE
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/nio/channels/SelectionKey;>; )
+private final java.util.Set keys
+
+final java.lang.Object keysLock
+
+private java.io.FileDescriptor[] readable
+
+private java.nio.channels.SelectionKey[] readableChannels
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/io/FileDescriptor;>; )
+private java.util.List readableFDs
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/nio/channels/SelectionKey;>; )
+private final java.util.Set selectedKeys
+
+private java.nio.channels.Pipe$SinkChannel sink
+
+private java.nio.channels.Pipe$SourceChannel source
+
+private java.io.FileDescriptor sourcefd
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/nio/channels/SelectionKey;>; )
+private java.util.Set unaddableSelectedKeys
+@dalvik.annotation.Signature (value =Ljava/util/Set<Ljava/nio/channels/SelectionKey;>; )
+private java.util.Set unmodifiableKeys
+
+private java.io.FileDescriptor[] writable
+
+private java.nio.channels.SelectionKey[] writableChannels
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/io/FileDescriptor;>; )
+private java.util.List writableFDs
+----------------METHODS----------------
+
+public void <init>(
+java.nio.channels.spi.SelectorProvider)
+
+private void closeCheck()
+
+private void doCancel()
+
+private boolean isConnected(
+org.apache.harmony.nio.internal.SelectionKeyImpl)
+
+private void prepareChannels()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int processSelectResult(
+int[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int selectInternal(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void implCloseSelector()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/nio/channels/SelectionKey;>; )
+public java.util.Set keys()
+
+protected java.nio.channels.SelectionKey register(
+java.nio.channels.spi.AbstractSelectableChannel
+int
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int select()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int select(
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int selectNow()
+@dalvik.annotation.Signature (value =()Ljava/util/Set<Ljava/nio/channels/SelectionKey;>; )
+public java.util.Set selectedKeys()
+
+public java.nio.channels.Selector wakeup()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.nio.internal.SelectorProviderImpl extends java.nio.channels.spi.SelectorProvider
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.nio.channels.DatagramChannel openDatagramChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.nio.channels.Pipe openPipe()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.nio.channels.spi.AbstractSelector openSelector()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.nio.channels.ServerSocketChannel openServerSocketChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.nio.channels.SocketChannel openSocketChannel()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/nio/internal/ServerSocketChannelImpl; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class org.apache.harmony.nio.internal.ServerSocketChannelImpl$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/nio/internal/ServerSocketChannelImpl; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =AcceptLock )
+ class org.apache.harmony.nio.internal.ServerSocketChannelImpl$AcceptLock extends java.lang.Object
+
+----------------FIELDS----------------
+
+final org.apache.harmony.nio.internal.ServerSocketChannelImpl this$0
+----------------METHODS----------------
+
+private void <init>(
+org.apache.harmony.nio.internal.ServerSocketChannelImpl)
+
+ void <init>(
+org.apache.harmony.nio.internal.ServerSocketChannelImpl
+org.apache.harmony.nio.internal.ServerSocketChannelImpl$1)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =ServerSocketAdapter )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/nio/internal/ServerSocketChannelImpl; )
+ class org.apache.harmony.nio.internal.ServerSocketChannelImpl$ServerSocketAdapter extends java.net.ServerSocket
+
+----------------FIELDS----------------
+
+ org.apache.harmony.nio.internal.ServerSocketChannelImpl channelImpl
+
+final org.apache.harmony.nio.internal.ServerSocketChannelImpl this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.nio.internal.ServerSocketChannelImpl
+java.net.SocketImpl
+org.apache.harmony.nio.internal.ServerSocketChannelImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.net.Socket accept(
+java.net.Socket
+org.apache.harmony.nio.internal.SocketChannelImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static java.net.Socket access$100(
+org.apache.harmony.nio.internal.ServerSocketChannelImpl$ServerSocketAdapter
+java.net.Socket
+org.apache.harmony.nio.internal.SocketChannelImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket accept()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void bind(
+java.net.SocketAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void bind(
+java.net.SocketAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public java.nio.channels.ServerSocketChannel getChannel()
+
+public boolean isBound()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/nio/internal/ServerSocketChannelImpl$1;Lorg/apache/harmony/nio/internal/ServerSocketChannelImpl$ServerSocketAdapter;Lorg/apache/harmony/nio/internal/ServerSocketChannelImpl$AcceptLock; )
+public class org.apache.harmony.nio.internal.ServerSocketChannelImpl extends java.nio.channels.ServerSocketChannel implements org.apache.harmony.luni.platform.FileDescriptorHandler
+
+----------------FIELDS----------------
+
+private static final int SERVER_STATUS_CLOSED
+
+private static final int SERVER_STATUS_OPEN
+
+private static final int SERVER_STATUS_UNINIT
+
+private final java.lang.Object acceptLock
+
+private final java.io.FileDescriptor fd
+
+private final java.net.SocketImpl impl
+
+ boolean isBound
+
+private final java.net.ServerSocket socket
+
+ int status
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.nio.channels.spi.SelectorProvider)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.nio.channels.SocketChannel accept()
+
+public java.io.FileDescriptor getFD()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void implCloseSelectableChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void implConfigureBlocking(
+boolean)
+
+public java.net.ServerSocket socket()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =SocketAdapter )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/nio/internal/SocketChannelImpl; )
+ class org.apache.harmony.nio.internal.SocketChannelImpl$SocketAdapter extends java.net.Socket
+
+----------------FIELDS----------------
+
+ org.apache.harmony.nio.internal.SocketChannelImpl channel
+
+ java.net.SocketImpl socketImpl
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+ void <init>(
+java.net.SocketImpl
+org.apache.harmony.nio.internal.SocketChannelImpl)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+private void checkOpen()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void bind(
+java.net.SocketAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connect(
+java.net.SocketAddress
+int)
+
+public java.nio.channels.SocketChannel getChannel()
+
+public java.net.SocketImpl getImpl()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getInputStream()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public boolean getKeepAlive()
+
+public java.net.InetAddress getLocalAddress()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public boolean getOOBInline()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.OutputStream getOutputStream()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getReceiveBufferSize()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public boolean getReuseAddress()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getSendBufferSize()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getSoLinger()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getSoTimeout()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public boolean getTcpNoDelay()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getTrafficClass()
+
+public boolean isBound()
+
+public boolean isConnected()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/nio/internal/SocketChannelImpl; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =SocketChannelInputStream )
+ class org.apache.harmony.nio.internal.SocketChannelImpl$SocketChannelInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+ java.nio.channels.SocketChannel channel
+----------------METHODS----------------
+
+public void <init>(
+java.nio.channels.SocketChannel)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =SocketChannelOutputStream )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/nio/internal/SocketChannelImpl; )
+ class org.apache.harmony.nio.internal.SocketChannelImpl$SocketChannelOutputStream extends java.io.OutputStream
+
+----------------FIELDS----------------
+
+ java.nio.channels.SocketChannel channel
+----------------METHODS----------------
+
+public void <init>(
+java.nio.channels.SocketChannel)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/nio/internal/SocketChannelImpl$SocketChannelInputStream;Lorg/apache/harmony/nio/internal/SocketChannelImpl$SocketChannelOutputStream;Lorg/apache/harmony/nio/internal/SocketChannelImpl$SocketAdapter; )
+ class org.apache.harmony.nio.internal.SocketChannelImpl extends java.nio.channels.SocketChannel implements org.apache.harmony.luni.platform.FileDescriptorHandler
+
+----------------FIELDS----------------
+
+private static final int CONNECT_SUCCESS
+
+private static final int EOF
+
+private static final int ERRCODE_SOCKET_NONBLOCKING_WOULD_BLOCK
+
+private static final int HY_PORT_SOCKET_STEP_CHECK
+
+private static final int HY_SOCK_STEP_START
+
+static final int SOCKET_STATUS_CLOSED
+
+static final int SOCKET_STATUS_CONNECTED
+
+static final int SOCKET_STATUS_PENDING
+
+static final int SOCKET_STATUS_UNCONNECTED
+
+static final int SOCKET_STATUS_UNINIT
+
+private static final int TIMEOUT_BLOCK
+
+private static final int TIMEOUT_NONBLOCK
+
+static final org.apache.harmony.luni.platform.INetworkSystem networkSystem
+
+ java.net.InetSocketAddress connectAddress
+
+private byte[] connectContext
+
+ java.io.FileDescriptor fd
+
+ boolean isBound
+
+ java.net.InetAddress localAddress
+
+ int localPort
+
+private final java.lang.Object readLock
+
+private java.net.Socket socket
+
+ int status
+
+private int trafficClass
+
+private final java.lang.Object writeLock
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+ void <init>(
+java.net.Socket
+java.io.FileDescriptor)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.nio.channels.spi.SelectorProvider)
+
+private int calculateByteBufferArray(
+java.nio.ByteBuffer[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/nio/channels/ClosedChannelException; )
+private void checkOpenConnected()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void checkUnconnected()
+
+private boolean isIndexValid(
+java.nio.ByteBuffer[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int readImpl(
+java.nio.ByteBuffer)
+
+static java.net.InetSocketAddress validateAddress(
+java.net.SocketAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int writeImpl(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean connect(
+java.net.SocketAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public boolean finishConnect()
+
+public java.io.FileDescriptor getFD()
+@dalvik.annotation.Throws (value =Ljava/net/UnknownHostException; )
+public java.net.InetAddress getLocalAddress()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void implCloseSelectableChannel()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void implConfigureBlocking(
+boolean)
+
+public boolean isConnected()
+
+public boolean isConnectionPending()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long read(
+java.nio.ByteBuffer[]
+int
+int)
+
+ void setConnected()
+
+public java.net.Socket socket()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int write(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long write(
+java.nio.ByteBuffer[]
+int
+int)
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.nio.internal.WriteOnlyFileChannel extends org.apache.harmony.nio.internal.FileChannelImpl
+
+----------------FIELDS----------------
+
+private boolean append
+----------------METHODS----------------
+
+public void <init>(
+java.lang.Object
+int)
+
+public void <init>(
+java.lang.Object
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected final java.nio.channels.FileLock basicLock(
+long
+long
+boolean
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.nio.MappedByteBuffer map(
+java.nio.channels.FileChannel$MapMode
+long
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long position()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+java.nio.ByteBuffer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+java.nio.ByteBuffer
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long read(
+java.nio.ByteBuffer[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long transferTo(
+long
+long
+java.nio.channels.WritableByteChannel)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int write(
+java.nio.ByteBuffer)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.nio.internal.nls.Messages extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String sResource
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String getString(
+java.lang.String)
+
+public static java.lang.String getString(
+java.lang.String
+char)
+
+public static java.lang.String getString(
+java.lang.String
+int)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.niochar.internal.nls.Messages extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String sResource
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String getString(
+java.lang.String)
+
+public static java.lang.String getString(
+java.lang.String
+char)
+
+public static java.lang.String getString(
+java.lang.String
+int)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.prefs.internal.nls.Messages extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String sResource
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String getString(
+java.lang.String)
+
+public static java.lang.String getString(
+java.lang.String
+char)
+
+public static java.lang.String getString(
+java.lang.String
+int)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =GrantEntry )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/DefaultPolicyScanner; )
+public class org.apache.harmony.security.DefaultPolicyScanner$GrantEntry extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String codebase
+@dalvik.annotation.Signature (value =Ljava/util/Collection<Lorg/apache/harmony/security/DefaultPolicyScanner$PermissionEntry;>; )
+public java.util.Collection permissions
+@dalvik.annotation.Signature (value =Ljava/util/Collection<Lorg/apache/harmony/security/DefaultPolicyScanner$PrincipalEntry;>; )
+public java.util.Collection principals
+
+public java.lang.String signers
+----------------METHODS----------------
+
+public void <init>()
+
+public void addPrincipal(
+org.apache.harmony.security.DefaultPolicyScanner$PrincipalEntry)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/DefaultPolicyScanner; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =InvalidFormatException )
+public class org.apache.harmony.security.DefaultPolicyScanner$InvalidFormatException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =KeystoreEntry )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/DefaultPolicyScanner; )
+public class org.apache.harmony.security.DefaultPolicyScanner$KeystoreEntry extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String type
+
+public java.lang.String url
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/DefaultPolicyScanner; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PermissionEntry )
+public class org.apache.harmony.security.DefaultPolicyScanner$PermissionEntry extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.String actions
+
+public java.lang.String klass
+
+public java.lang.String name
+
+public java.lang.String signers
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/DefaultPolicyScanner; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PrincipalEntry )
+public class org.apache.harmony.security.DefaultPolicyScanner$PrincipalEntry extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String WILDCARD
+
+public java.lang.String klass
+
+public java.lang.String name
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/security/DefaultPolicyScanner$PermissionEntry;Lorg/apache/harmony/security/DefaultPolicyScanner$PrincipalEntry;Lorg/apache/harmony/security/DefaultPolicyScanner$GrantEntry;Lorg/apache/harmony/security/DefaultPolicyScanner$KeystoreEntry;Lorg/apache/harmony/security/DefaultPolicyScanner$InvalidFormatException; )
+public class org.apache.harmony.security.DefaultPolicyScanner extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected java.lang.String composeStatus(
+java.io.StreamTokenizer)
+
+protected java.io.StreamTokenizer configure(
+java.io.StreamTokenizer)
+@dalvik.annotation.Throws (value =Lorg/apache/harmony/security/DefaultPolicyScanner$InvalidFormatException; )
+protected final void handleUnexpectedToken(
+java.io.StreamTokenizer)
+@dalvik.annotation.Throws (value =Lorg/apache/harmony/security/DefaultPolicyScanner$InvalidFormatException; )
+protected final void handleUnexpectedToken(
+java.io.StreamTokenizer
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/harmony/security/DefaultPolicyScanner$InvalidFormatException; )
+protected org.apache.harmony.security.DefaultPolicyScanner$GrantEntry readGrantEntry(
+java.io.StreamTokenizer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/harmony/security/DefaultPolicyScanner$InvalidFormatException; )
+protected org.apache.harmony.security.DefaultPolicyScanner$KeystoreEntry readKeystoreEntry(
+java.io.StreamTokenizer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/harmony/security/DefaultPolicyScanner$InvalidFormatException; )
+@dalvik.annotation.Signature (value =(Ljava/io/StreamTokenizer;)Ljava/util/Collection<Lorg/apache/harmony/security/DefaultPolicyScanner$PermissionEntry;>; )
+protected java.util.Collection readPermissionEntries(
+java.io.StreamTokenizer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/harmony/security/DefaultPolicyScanner$InvalidFormatException; )
+protected org.apache.harmony.security.DefaultPolicyScanner$PrincipalEntry readPrincipalEntry(
+java.io.StreamTokenizer)
+@dalvik.annotation.Signature (value =(Ljava/io/Reader;Ljava/util/Collection<Lorg/apache/harmony/security/DefaultPolicyScanner$GrantEntry;>;Ljava/util/List<Lorg/apache/harmony/security/DefaultPolicyScanner$KeystoreEntry;>;)V )
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/apache/harmony/security/DefaultPolicyScanner$InvalidFormatException; )
+public void scanStream(
+java.io.Reader
+java.util.Collection
+java.util.List)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.PolicyEntry extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final java.security.CodeSource cs
+@dalvik.annotation.Signature (value =Ljava/util/Collection<Ljava/security/Permission;>; )
+private final java.util.Collection permissions
+
+private final java.security.Principal[] principals
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/security/CodeSource;Ljava/util/Collection<+Ljava/security/Principal;>;Ljava/util/Collection<+Ljava/security/Permission;>;)V )
+public void <init>(
+java.security.CodeSource
+java.util.Collection
+java.util.Collection)
+@dalvik.annotation.Signature (value =()Ljava/util/Collection<Ljava/security/Permission;>; )
+public java.util.Collection getPermissions()
+
+public boolean impliesCodeSource(
+java.security.CodeSource)
+
+public boolean impliesPrincipals(
+java.security.Principal[])
+
+public boolean isVoid()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.PrivateKeyImpl extends java.lang.Object implements java.security.PrivateKey
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.String algorithm
+
+private byte[] encoding
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public java.lang.String getAlgorithm()
+
+public byte[] getEncoded()
+
+public java.lang.String getFormat()
+
+public void setAlgorithm(
+java.lang.String)
+
+public void setEncoding(
+byte[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.PublicKeyImpl extends java.lang.Object implements java.security.PublicKey
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.lang.String algorithm
+
+private byte[] encoding
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public java.lang.String getAlgorithm()
+
+public byte[] getEncoded()
+
+public java.lang.String getFormat()
+
+public void setAlgorithm(
+java.lang.String)
+
+public void setEncoding(
+byte[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.SystemScope extends java.security.IdentityScope
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.util.Hashtable keys
+
+private java.util.Hashtable names
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/KeyManagementException; )
+public void <init>(
+java.lang.String
+java.security.IdentityScope)
+@dalvik.annotation.Throws (value =Ljava/security/KeyManagementException; )
+public void addIdentity(
+java.security.Identity)
+
+public java.security.Identity getIdentity(
+java.lang.String)
+
+public java.security.Identity getIdentity(
+java.security.PublicKey)
+
+public java.util.Enumeration identities()
+@dalvik.annotation.Throws (value =Ljava/security/KeyManagementException; )
+public void removeIdentity(
+java.security.Identity)
+
+public int size()
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.security.UnresolvedPrincipal extends java.lang.Object implements java.security.Principal
+
+----------------FIELDS----------------
+
+public static final java.lang.String WILDCARD
+
+private final java.lang.String klass
+
+private final java.lang.String name
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getClassName()
+
+public java.lang.String getName()
+
+public int hashCode()
+
+public boolean implies(
+java.security.Principal)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.asn1.ASN1Any extends org.apache.harmony.security.asn1.ASN1Type
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.asn1.ASN1Any ASN1
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static org.apache.harmony.security.asn1.ASN1Any getInstance()
+
+public final boolean checkTag(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void encodeASN(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public int getEncodedLength(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.security.asn1.ASN1StringType extends org.apache.harmony.security.asn1.ASN1Type
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1StringType BMPSTRING
+
+public static final org.apache.harmony.security.asn1.ASN1StringType GENERALSTRING
+
+public static final org.apache.harmony.security.asn1.ASN1StringType IA5STRING
+
+public static final org.apache.harmony.security.asn1.ASN1StringType PRINTABLESTRING
+
+public static final org.apache.harmony.security.asn1.ASN1StringType TELETEXSTRING
+
+public static final org.apache.harmony.security.asn1.ASN1StringType UNIVERSALSTRING
+
+public static final org.apache.harmony.security.asn1.ASN1StringType UTF8STRING
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int)
+
+public final boolean checkTag(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void encodeASN(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/security/asn1/ASN1BitString$ASN1NamedBitList; )
+public class org.apache.harmony.security.asn1.ASN1BitString extends org.apache.harmony.security.asn1.ASN1StringType
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.asn1.ASN1BitString ASN1
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static org.apache.harmony.security.asn1.ASN1BitString getInstance()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/asn1/ASN1BitString; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =ASN1NamedBitList )
+public class org.apache.harmony.security.asn1.ASN1BitString$ASN1NamedBitList extends org.apache.harmony.security.asn1.ASN1BitString
+
+----------------FIELDS----------------
+
+private static final int INDEFINITE_SIZE
+
+private static final byte[] SET_MASK
+
+private static final org.apache.harmony.security.asn1.BitString emptyString
+
+private final int maxBits
+
+private final int minBits
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.security.asn1.ASN1Primitive extends org.apache.harmony.security.asn1.ASN1Type
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public final boolean checkTag(
+int)
+
+public void encodeASN(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.asn1.ASN1Boolean extends org.apache.harmony.security.asn1.ASN1Primitive
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.asn1.ASN1Boolean ASN1
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static org.apache.harmony.security.asn1.ASN1Boolean getInstance()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.security.asn1.ASN1Choice extends org.apache.harmony.security.asn1.ASN1Type
+
+----------------FIELDS----------------
+
+private final int[][] identifiers
+
+public final org.apache.harmony.security.asn1.ASN1Type[] type
+----------------METHODS----------------
+
+public void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+private void addIdentifier(
+java.util.TreeMap
+int
+int)
+
+public final boolean checkTag(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void encodeASN(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public final void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public abstract int getIndex(
+java.lang.Object)
+
+public abstract java.lang.Object getObjectToEncode(
+java.lang.Object)
+
+public final void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.asn1.ASN1Enumerated extends org.apache.harmony.security.asn1.ASN1Primitive
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.asn1.ASN1Enumerated ASN1
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static org.apache.harmony.security.asn1.ASN1Enumerated getInstance()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.asn1.ASN1Exception extends java.io.IOException
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.security.asn1.ASN1Explicit extends org.apache.harmony.security.asn1.ASN1Constructured
+
+----------------FIELDS----------------
+
+public final org.apache.harmony.security.asn1.ASN1Type type
+----------------METHODS----------------
+
+public void <init>(
+int
+int
+org.apache.harmony.security.asn1.ASN1Type)
+
+public void <init>(
+int
+org.apache.harmony.security.asn1.ASN1Type)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.security.asn1.ASN1Time extends org.apache.harmony.security.asn1.ASN1StringType
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.asn1.ASN1GeneralizedTime extends org.apache.harmony.security.asn1.ASN1Time
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.asn1.ASN1GeneralizedTime ASN1
+
+private static final java.lang.String GEN_PATTERN
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static org.apache.harmony.security.asn1.ASN1GeneralizedTime getInstance()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.asn1.ASN1Implicit extends org.apache.harmony.security.asn1.ASN1Type
+
+----------------FIELDS----------------
+
+private static final int TAGGING_CONSTRUCTED
+
+private static final int TAGGING_PRIMITIVE
+
+private static final int TAGGING_STRING
+
+private final int taggingType
+
+private final org.apache.harmony.security.asn1.ASN1Type type
+----------------METHODS----------------
+
+public void <init>(
+int
+int
+org.apache.harmony.security.asn1.ASN1Type)
+
+public void <init>(
+int
+org.apache.harmony.security.asn1.ASN1Type)
+
+public final boolean checkTag(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void encodeASN(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.asn1.ASN1Integer extends org.apache.harmony.security.asn1.ASN1Primitive
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.asn1.ASN1Integer ASN1
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static java.lang.Object fromIntValue(
+int)
+
+public static org.apache.harmony.security.asn1.ASN1Integer getInstance()
+
+public static java.math.BigInteger toBigIntegerValue(
+java.lang.Object)
+
+public static int toIntValue(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.asn1.ASN1OctetString extends org.apache.harmony.security.asn1.ASN1StringType
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.asn1.ASN1OctetString ASN1
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static org.apache.harmony.security.asn1.ASN1OctetString getInstance()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.asn1.ASN1Oid extends org.apache.harmony.security.asn1.ASN1Primitive
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.asn1.ASN1Oid ASN1
+
+private static final org.apache.harmony.security.asn1.ASN1Oid STRING_OID
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static org.apache.harmony.security.asn1.ASN1Oid getInstance()
+
+public static org.apache.harmony.security.asn1.ASN1Oid getInstanceForString()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/asn1/ASN1Oid; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.asn1.ASN1Oid$1 extends org.apache.harmony.security.asn1.ASN1Oid
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/asn1/ASN1OpenType; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Id )
+public class org.apache.harmony.security.asn1.ASN1OpenType$Id extends org.apache.harmony.security.asn1.ASN1Oid
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/security/asn1/ASN1OpenType$Id; )
+public class org.apache.harmony.security.asn1.ASN1OpenType extends org.apache.harmony.security.asn1.ASN1Any
+
+----------------FIELDS----------------
+
+private final org.apache.harmony.security.asn1.ASN1OpenType$Id key
+
+private final org.apache.harmony.security.asn1.InformationObjectSet pool
+----------------METHODS----------------
+
+public void <init>(
+org.apache.harmony.security.asn1.ASN1OpenType$Id
+org.apache.harmony.security.asn1.InformationObjectSet)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.security.asn1.ASN1ValueCollection extends org.apache.harmony.security.asn1.ASN1Constructured
+
+----------------FIELDS----------------
+
+public final org.apache.harmony.security.asn1.ASN1Type type
+----------------METHODS----------------
+
+public void <init>(
+int
+org.apache.harmony.security.asn1.ASN1Type)
+
+public java.util.Collection getValues(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.asn1.ASN1SequenceOf extends org.apache.harmony.security.asn1.ASN1ValueCollection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.apache.harmony.security.asn1.ASN1Type)
+
+public static org.apache.harmony.security.asn1.ASN1SequenceOf asArrayOf(
+org.apache.harmony.security.asn1.ASN1Type)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public final void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public final void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.asn1.ASN1SequenceOf$1 extends org.apache.harmony.security.asn1.ASN1SequenceOf
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public java.util.Collection getValues(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.asn1.ASN1Set extends org.apache.harmony.security.asn1.ASN1TypeCollection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public final void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public final void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.asn1.ASN1SetOf extends org.apache.harmony.security.asn1.ASN1ValueCollection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.apache.harmony.security.asn1.ASN1Type)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static org.apache.harmony.security.asn1.ASN1SetOf asArrayOf(
+org.apache.harmony.security.asn1.ASN1Type)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public final void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public final void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+final class org.apache.harmony.security.asn1.ASN1SetOf$1 extends org.apache.harmony.security.asn1.ASN1SetOf
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public java.util.Collection getValues(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/asn1/ASN1StringType; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.asn1.ASN1StringType$1 extends org.apache.harmony.security.asn1.ASN1StringType
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/asn1/ASN1StringType; )
+final class org.apache.harmony.security.asn1.ASN1StringType$2 extends org.apache.harmony.security.asn1.ASN1StringType
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/asn1/ASN1StringType; )
+final class org.apache.harmony.security.asn1.ASN1StringType$3 extends org.apache.harmony.security.asn1.ASN1StringType
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/asn1/ASN1StringType; )
+final class org.apache.harmony.security.asn1.ASN1StringType$4 extends org.apache.harmony.security.asn1.ASN1StringType
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/asn1/ASN1StringType; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.asn1.ASN1StringType$5 extends org.apache.harmony.security.asn1.ASN1StringType
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/asn1/ASN1StringType; )
+final class org.apache.harmony.security.asn1.ASN1StringType$6 extends org.apache.harmony.security.asn1.ASN1StringType
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/asn1/ASN1StringType; )
+final class org.apache.harmony.security.asn1.ASN1StringType$7 extends org.apache.harmony.security.asn1.ASN1StringType
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.asn1.ASN1UTCTime extends org.apache.harmony.security.asn1.ASN1Time
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.asn1.ASN1UTCTime ASN1
+
+public static final int UTC_HM
+
+public static final int UTC_HMS
+
+public static final int UTC_LOCAL_HM
+
+public static final int UTC_LOCAL_HMS
+
+private static final java.lang.String UTC_PATTERN
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static org.apache.harmony.security.asn1.ASN1UTCTime getInstance()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.asn1.BerInputStream extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int BUF_INCREASE_SIZE
+
+protected static final int INDEFINIT_LENGTH
+
+protected byte[] buffer
+
+public int choiceIndex
+
+public java.lang.Object content
+
+protected int contentOffset
+
+protected java.io.InputStream in
+
+protected boolean isIndefinedLength
+
+protected boolean isVerify
+
+protected int length
+
+protected int offset
+
+public int oidElement
+
+private java.lang.Object[][] pool
+
+public int tag
+
+protected int tagOffset
+
+public int[] times
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private final void decodeValueCollection(
+org.apache.harmony.security.asn1.ASN1ValueCollection)
+
+public static int getLength(
+byte[])
+@dalvik.annotation.Throws (value =Lorg/apache/harmony/security/asn1/ASN1Exception; )
+private int strToInt(
+int
+int)
+
+public void compactBuffer()
+
+public java.lang.Object get(
+java.lang.Object)
+
+public final byte[] getBuffer()
+
+public final int getContentOffset()
+
+public byte[] getEncoded()
+
+public final int getEndOffset()
+
+public final int getLength()
+
+public final int getOffset()
+
+public final int getTagOffset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int next()
+
+public void put(
+java.lang.Object
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readBitString()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readBoolean()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readContent()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readEnumerated()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readGeneralizedTime()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readInteger()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readOID()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readOctetString()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readSequence(
+org.apache.harmony.security.asn1.ASN1Sequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readSequenceOf(
+org.apache.harmony.security.asn1.ASN1SequenceOf)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readSet(
+org.apache.harmony.security.asn1.ASN1Set)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readSetOf(
+org.apache.harmony.security.asn1.ASN1SetOf)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readString(
+org.apache.harmony.security.asn1.ASN1StringType)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readUTCTime()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final void reset(
+byte[])
+
+public final void setVerify()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.asn1.BerOutputStream extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.Object content
+
+public byte[] encoded
+
+public int length
+
+protected int offset
+----------------METHODS----------------
+
+public void <init>()
+
+public void encodeANY()
+
+public void encodeBitString()
+
+public void encodeBoolean()
+
+public void encodeChoice(
+org.apache.harmony.security.asn1.ASN1Choice)
+
+public void encodeExplicit(
+org.apache.harmony.security.asn1.ASN1Explicit)
+
+public void encodeGeneralizedTime()
+
+public void encodeInteger()
+
+public void encodeOID()
+
+public void encodeOctetString()
+
+public void encodeSequence(
+org.apache.harmony.security.asn1.ASN1Sequence)
+
+public void encodeSequenceOf(
+org.apache.harmony.security.asn1.ASN1SequenceOf)
+
+public void encodeSet(
+org.apache.harmony.security.asn1.ASN1Set)
+
+public void encodeSetOf(
+org.apache.harmony.security.asn1.ASN1SetOf)
+
+public void encodeString()
+
+public final void encodeTag(
+int)
+
+public void encodeUTCTime()
+
+public void getChoiceLength(
+org.apache.harmony.security.asn1.ASN1Choice)
+
+public void getExplicitLength(
+org.apache.harmony.security.asn1.ASN1Explicit)
+
+public void getSequenceLength(
+org.apache.harmony.security.asn1.ASN1Sequence)
+
+public void getSequenceOfLength(
+org.apache.harmony.security.asn1.ASN1SequenceOf)
+
+public void getSetLength(
+org.apache.harmony.security.asn1.ASN1Set)
+
+public void getSetOfLength(
+org.apache.harmony.security.asn1.ASN1SetOf)
+
+public int getStringLength(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.security.asn1.BitString extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final byte[] RESET_MASK
+
+private static final byte[] SET_MASK
+
+public final byte[] bytes
+
+public final int unusedBits
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+byte[]
+int)
+
+public void <init>(
+boolean[])
+
+public boolean getBit(
+int)
+
+public void setBit(
+int
+boolean)
+
+public boolean[] toBooleanArray()
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.security.asn1.DerInputStream extends org.apache.harmony.security.asn1.BerInputStream
+
+----------------FIELDS----------------
+
+private static final byte[] UNUSED_BITS_MASK
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public final int next()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readBitString()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readBoolean()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readGeneralizedTime()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readOctetString()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readSequence(
+org.apache.harmony.security.asn1.ASN1Sequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readSetOf(
+org.apache.harmony.security.asn1.ASN1SetOf)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readString(
+org.apache.harmony.security.asn1.ASN1StringType)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void readUTCTime()
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.security.asn1.DerOutputStream extends org.apache.harmony.security.asn1.BerOutputStream
+
+----------------FIELDS----------------
+
+private static final int initSize
+
+private int index
+
+private int[][] len
+
+private java.lang.Object[][] val
+----------------METHODS----------------
+
+public void <init>(
+org.apache.harmony.security.asn1.ASN1Type
+java.lang.Object)
+
+private final void encodeValueCollection(
+org.apache.harmony.security.asn1.ASN1ValueCollection)
+
+private void getValueOfLength(
+org.apache.harmony.security.asn1.ASN1ValueCollection)
+
+private void push(
+int[]
+java.lang.Object[])
+
+public void encodeChoice(
+org.apache.harmony.security.asn1.ASN1Choice)
+
+public void encodeExplicit(
+org.apache.harmony.security.asn1.ASN1Explicit)
+
+public void encodeSequence(
+org.apache.harmony.security.asn1.ASN1Sequence)
+
+public void encodeSequenceOf(
+org.apache.harmony.security.asn1.ASN1SequenceOf)
+
+public void encodeSetOf(
+org.apache.harmony.security.asn1.ASN1SetOf)
+
+public void getChoiceLength(
+org.apache.harmony.security.asn1.ASN1Choice)
+
+public void getExplicitLength(
+org.apache.harmony.security.asn1.ASN1Explicit)
+
+public void getSequenceLength(
+org.apache.harmony.security.asn1.ASN1Sequence)
+
+public void getSequenceOfLength(
+org.apache.harmony.security.asn1.ASN1SequenceOf)
+
+public void getSetOfLength(
+org.apache.harmony.security.asn1.ASN1SetOf)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =Entry )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/asn1/InformationObjectSet; )
+ class org.apache.harmony.security.asn1.InformationObjectSet$Entry extends java.lang.Object
+
+----------------FIELDS----------------
+
+public java.lang.Object object
+
+public int[] oid
+
+final org.apache.harmony.security.asn1.InformationObjectSet this$0
+----------------METHODS----------------
+
+public void <init>(
+org.apache.harmony.security.asn1.InformationObjectSet
+int[]
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/security/asn1/InformationObjectSet$Entry; )
+public class org.apache.harmony.security.asn1.InformationObjectSet extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int capacity
+
+private final org.apache.harmony.security.asn1.InformationObjectSet$Entry[][] pool
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int
+int)
+
+private int hashIntArray(
+int[])
+
+public java.lang.Object get(
+int[])
+
+public void put(
+org.apache.harmony.security.x501.AttributeType)
+
+public void put(
+int[]
+java.lang.Object)
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.security.asn1.ObjectIdentifier extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int[] oid
+
+private java.lang.String soid
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+int[])
+
+public static boolean isOID(
+java.lang.String)
+
+public static int[] toIntArray(
+java.lang.String)
+
+private static int[] toIntArray(
+java.lang.String
+boolean)
+
+public static java.lang.String toString(
+int[])
+
+public static void validate(
+int[])
+
+public boolean equals(
+java.lang.Object)
+
+public int[] getOid()
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.fortress.DefaultPolicy extends java.security.Policy
+
+----------------FIELDS----------------
+
+public static final java.lang.String JAVA_SECURITY_POLICY
+
+public static final java.lang.String POLICY_URL_PREFIX
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/Object;Ljava/util/Collection<Ljava/security/Permission;>;>; )
+private final java.util.Map cache
+@dalvik.annotation.Signature (value =Ljava/util/Set<Lorg/apache/harmony/security/PolicyEntry;>; )
+private final java.util.Set grants
+
+private boolean initiailized
+
+private final org.apache.harmony.security.fortress.DefaultPolicyParser parser
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.apache.harmony.security.fortress.DefaultPolicyParser)
+
+public java.security.PermissionCollection getPermissions(
+java.security.CodeSource)
+
+public java.security.PermissionCollection getPermissions(
+java.security.ProtectionDomain)
+
+public void refresh()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/fortress/PolicyUtils; )
+@dalvik.annotation.InnerClass (accessFlags =1545 name =GeneralExpansionHandler )
+public abstract interface class org.apache.harmony.security.fortress.PolicyUtils$GeneralExpansionHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/apache/harmony/security/fortress/PolicyUtils$ExpansionFailedException; )
+public abstract java.lang.String resolve(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =PermissionExpander )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/fortress/DefaultPolicyParser; )
+ class org.apache.harmony.security.fortress.DefaultPolicyParser$PermissionExpander extends java.lang.Object implements org.apache.harmony.security.fortress.PolicyUtils$GeneralExpansionHandler
+
+----------------FIELDS----------------
+
+private org.apache.harmony.security.DefaultPolicyScanner$GrantEntry ge
+
+private java.security.KeyStore ks
+
+final org.apache.harmony.security.fortress.DefaultPolicyParser this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.fortress.DefaultPolicyParser)
+
+private java.lang.String pc2str(
+java.security.Principal)
+
+public org.apache.harmony.security.fortress.DefaultPolicyParser$PermissionExpander configure(
+org.apache.harmony.security.DefaultPolicyScanner$GrantEntry
+java.security.KeyStore)
+@dalvik.annotation.Throws (value =Lorg/apache/harmony/security/fortress/PolicyUtils$ExpansionFailedException; )
+public java.lang.String resolve(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/security/fortress/DefaultPolicyParser$PermissionExpander; )
+public class org.apache.harmony.security.fortress.DefaultPolicyParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final org.apache.harmony.security.DefaultPolicyScanner scanner
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.apache.harmony.security.DefaultPolicyScanner)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException;Ljava/security/cert/CertificateException; )
+protected java.security.Principal getPrincipalByAlias(
+java.security.KeyStore
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lorg/apache/harmony/security/DefaultPolicyScanner$KeystoreEntry;>;Ljava/net/URL;Ljava/util/Properties;Z)Ljava/security/KeyStore; )
+protected java.security.KeyStore initKeyStore(
+java.util.List
+java.net.URL
+java.util.Properties
+boolean)
+@dalvik.annotation.Signature (value =(Ljava/net/URL;Ljava/util/Properties;)Ljava/util/Collection<Lorg/apache/harmony/security/PolicyEntry;>; )
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public java.util.Collection parse(
+java.net.URL
+java.util.Properties)
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+protected org.apache.harmony.security.PolicyEntry resolveGrant(
+org.apache.harmony.security.DefaultPolicyScanner$GrantEntry
+java.security.KeyStore
+java.util.Properties
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+protected java.security.Permission resolvePermission(
+org.apache.harmony.security.DefaultPolicyScanner$PermissionEntry
+org.apache.harmony.security.DefaultPolicyScanner$GrantEntry
+java.security.KeyStore
+java.util.Properties
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+protected java.security.cert.Certificate[] resolveSigners(
+java.security.KeyStore
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.fortress.Engine extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static org.apache.harmony.security.fortress.SecurityAccess door
+
+private java.lang.String lastAlgorithm
+
+public java.security.Provider provider
+
+private int refreshNumber
+
+private java.security.Provider$Service returnedService
+
+private java.lang.String serviceName
+
+public java.lang.Object spi
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public void getInstance(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public void getInstance(
+java.lang.String
+java.security.Provider
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Ljava/net/URL;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.fortress.PolicyUtils$1 extends java.lang.Object implements java.security.PrivilegedExceptionAction
+
+----------------FIELDS----------------
+
+final java.io.File val$f
+----------------METHODS----------------
+
+ void <init>(
+java.io.File)
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public volatile java.lang.Object run()
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public java.net.URL run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =ExpansionFailedException )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/fortress/PolicyUtils; )
+public class org.apache.harmony.security.fortress.PolicyUtils$ExpansionFailedException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Throwable)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/security/PrivilegedAction<TT;>; )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/fortress/PolicyUtils; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =ProviderLoader )
+public class org.apache.harmony.security.fortress.PolicyUtils$ProviderLoader extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/lang/Class<TT;>; )
+private java.lang.Class expectedType
+
+private java.lang.String key
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/String;Ljava/lang/Class<TT;>;)V )
+public void <init>(
+java.lang.String
+java.lang.Class)
+@dalvik.annotation.Signature (value =()TT; )
+public java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/fortress/PolicyUtils; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =SecurityPropertyAccessor )
+public class org.apache.harmony.security.fortress.PolicyUtils$SecurityPropertyAccessor extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+private java.lang.String key
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+public java.security.PrivilegedAction key(
+java.lang.String)
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/util/Properties;>; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =SystemKit )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/fortress/PolicyUtils; )
+public class org.apache.harmony.security.fortress.PolicyUtils$SystemKit extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public volatile java.lang.Object run()
+
+public java.util.Properties run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =SystemPropertyAccessor )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/fortress/PolicyUtils; )
+public class org.apache.harmony.security.fortress.PolicyUtils$SystemPropertyAccessor extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+public java.lang.String key
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/String;)Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+public java.security.PrivilegedAction key(
+java.lang.String)
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/fortress/PolicyUtils; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =URLLoader )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedExceptionAction<Ljava/io/InputStream;>; )
+public class org.apache.harmony.security.fortress.PolicyUtils$URLLoader extends java.lang.Object implements java.security.PrivilegedExceptionAction
+
+----------------FIELDS----------------
+
+public java.net.URL location
+----------------METHODS----------------
+
+public void <init>(
+java.net.URL)
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public java.io.InputStream run()
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public volatile java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/security/fortress/PolicyUtils$GeneralExpansionHandler;Lorg/apache/harmony/security/fortress/PolicyUtils$ExpansionFailedException;Lorg/apache/harmony/security/fortress/PolicyUtils$ProviderLoader;Lorg/apache/harmony/security/fortress/PolicyUtils$SecurityPropertyAccessor;Lorg/apache/harmony/security/fortress/PolicyUtils$SystemPropertyAccessor;Lorg/apache/harmony/security/fortress/PolicyUtils$SystemKit;Lorg/apache/harmony/security/fortress/PolicyUtils$URLLoader; )
+public class org.apache.harmony.security.fortress.PolicyUtils extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String FALSE
+
+private static final java.lang.Class[] NO_ARGS
+
+private static final java.lang.Class[] ONE_ARGS
+
+public static final java.lang.String POLICY_ALLOW_DYNAMIC
+
+public static final java.lang.String POLICY_EXPAND
+
+public static final java.lang.String TRUE
+
+private static final java.lang.Class[] TWO_ARGS
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static boolean canExpandProperties()
+@dalvik.annotation.Throws (value =Lorg/apache/harmony/security/fortress/PolicyUtils$ExpansionFailedException; )
+public static java.lang.String expand(
+java.lang.String
+java.util.Properties)
+@dalvik.annotation.Throws (value =Lorg/apache/harmony/security/fortress/PolicyUtils$ExpansionFailedException; )
+public static java.lang.String expandGeneral(
+java.lang.String
+org.apache.harmony.security.fortress.PolicyUtils$GeneralExpansionHandler)
+@dalvik.annotation.Throws (value =Lorg/apache/harmony/security/fortress/PolicyUtils$ExpansionFailedException; )
+public static java.lang.String expandURL(
+java.lang.String
+java.util.Properties)
+
+public static java.net.URL[] getPolicyURLs(
+java.util.Properties
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/String;)Ljava/security/Permission; )
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public static java.security.Permission instantiatePermission(
+java.lang.Class
+java.lang.String
+java.lang.String)
+
+public static boolean matchSubset(
+java.lang.Object[]
+java.lang.Object[])
+@dalvik.annotation.Signature (value =(Ljava/util/Collection<Ljava/security/Permission;>;)Ljava/security/PermissionCollection; )
+public static java.security.PermissionCollection toPermissionCollection(
+java.util.Collection)
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.security.fortress.SecurityUtils extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/WeakHashMap<Ljava/lang/Thread;Ljava/security/AccessControlContext;>; )
+private static final java.util.WeakHashMap ACC_CACHE
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+public static java.security.AccessControlContext getContext(
+java.lang.Thread)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException; )
+public static void putContext(
+java.lang.Thread
+java.security.AccessControlContext)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Object;>; )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/fortress/Services; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.fortress.Services$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.fortress.Services extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static boolean needRefresh
+@dalvik.annotation.Signature (value =Ljava/util/List<Ljava/security/Provider;>; )
+private static final java.util.List providers
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/security/Provider;>; )
+private static final java.util.Map providersNames
+
+public static int refreshNumber
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/security/Provider$Service;>; )
+private static final java.util.Map services
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static void access$000()
+
+public static java.security.Provider getProvider(
+java.lang.String)
+
+public static java.security.Provider[] getProviders()
+@dalvik.annotation.Signature (value =()Ljava/util/List<Ljava/security/Provider;>; )
+public static java.util.List getProvidersList()
+
+public static java.security.Provider$Service getService(
+java.lang.String)
+
+public static void initServiceInfo(
+java.security.Provider)
+
+public static int insertProviderAt(
+java.security.Provider
+int)
+
+public static boolean isEmpty()
+
+private static void loadProviders()
+
+public static void printServices()
+
+public static void refresh()
+
+public static void removeProvider(
+int)
+
+public static void setNeedRefresh()
+
+public static void updateServiceInfo()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.internal.nls.Messages extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String sResource
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String getString(
+java.lang.String)
+
+public static java.lang.String getString(
+java.lang.String
+char)
+
+public static java.lang.String getString(
+java.lang.String
+int)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/pkcs10/CertificationRequest; )
+final class org.apache.harmony.security.pkcs10.CertificationRequest$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.pkcs10.CertificationRequest extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private org.apache.harmony.security.x509.AlgorithmIdentifier algId
+
+private byte[] encoding
+
+private org.apache.harmony.security.pkcs10.CertificationRequestInfo info
+
+private byte[] signature
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.apache.harmony.security.pkcs10.CertificationRequestInfo
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[])
+
+private void <init>(
+org.apache.harmony.security.pkcs10.CertificationRequestInfo
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[]
+byte[])
+
+ void <init>(
+org.apache.harmony.security.pkcs10.CertificationRequestInfo
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[]
+byte[]
+org.apache.harmony.security.pkcs10.CertificationRequest$1)
+
+static org.apache.harmony.security.pkcs10.CertificationRequestInfo access$100(
+org.apache.harmony.security.pkcs10.CertificationRequest)
+
+static org.apache.harmony.security.x509.AlgorithmIdentifier access$200(
+org.apache.harmony.security.pkcs10.CertificationRequest)
+
+static byte[] access$300(
+org.apache.harmony.security.pkcs10.CertificationRequest)
+
+public org.apache.harmony.security.x509.AlgorithmIdentifier getAlgId()
+
+public byte[] getEncoded()
+
+public org.apache.harmony.security.pkcs10.CertificationRequestInfo getInfo()
+
+public byte[] getSignature()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/pkcs10/CertificationRequestInfo; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.pkcs10.CertificationRequestInfo$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.pkcs10.CertificationRequestInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private java.util.List attributes
+
+private byte[] encoding
+
+private org.apache.harmony.security.x501.Name subject
+
+private org.apache.harmony.security.x509.SubjectPublicKeyInfo subjectPublicKeyInfo
+
+private int version
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+org.apache.harmony.security.x501.Name
+org.apache.harmony.security.x509.SubjectPublicKeyInfo
+java.util.List)
+
+private void <init>(
+int
+org.apache.harmony.security.x501.Name
+org.apache.harmony.security.x509.SubjectPublicKeyInfo
+java.util.List
+byte[])
+
+ void <init>(
+int
+org.apache.harmony.security.x501.Name
+org.apache.harmony.security.x509.SubjectPublicKeyInfo
+java.util.List
+byte[]
+org.apache.harmony.security.pkcs10.CertificationRequestInfo$1)
+
+static int access$100(
+org.apache.harmony.security.pkcs10.CertificationRequestInfo)
+
+static org.apache.harmony.security.x501.Name access$200(
+org.apache.harmony.security.pkcs10.CertificationRequestInfo)
+
+static org.apache.harmony.security.x509.SubjectPublicKeyInfo access$300(
+org.apache.harmony.security.pkcs10.CertificationRequestInfo)
+
+static java.util.List access$400(
+org.apache.harmony.security.pkcs10.CertificationRequestInfo)
+
+public java.util.List getAttributes()
+
+public byte[] getEncoded()
+
+public org.apache.harmony.security.x501.Name getSubject()
+
+public org.apache.harmony.security.x509.SubjectPublicKeyInfo getSubjectPublicKeyInfo()
+
+public int getVersion()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/pkcs7/AuthenticatedAttributes; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.pkcs7.AuthenticatedAttributes$1 extends org.apache.harmony.security.asn1.ASN1SetOf
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type)
+
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+________________CLASS________________
+
+
+ class org.apache.harmony.security.pkcs7.AuthenticatedAttributes extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1SetOf ASN1
+
+private java.util.List authenticatedAttributes
+
+private byte[] encoding
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+byte[]
+java.util.List)
+
+public java.util.List getAttributes()
+
+public byte[] getEncoded()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/pkcs7/ContentInfo; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.pkcs7.ContentInfo$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.pkcs7.ContentInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+public static final int[] DATA
+
+public static final int[] DIGESTED_DATA
+
+public static final int[] ENCRYPTED_DATA
+
+public static final int[] ENVELOPED_DATA
+
+public static final int[] SIGNED_AND_ENVELOPED_DATA
+
+public static final int[] SIGNED_DATA
+
+private java.lang.Object content
+
+private byte[] encoding
+
+private int[] oid
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int[]
+java.lang.Object)
+
+private void <init>(
+int[]
+java.lang.Object
+byte[])
+
+ void <init>(
+int[]
+java.lang.Object
+byte[]
+org.apache.harmony.security.pkcs7.ContentInfo$1)
+
+static int[] access$000(
+org.apache.harmony.security.pkcs7.ContentInfo)
+
+static java.lang.Object access$100(
+org.apache.harmony.security.pkcs7.ContentInfo)
+
+public java.lang.Object getContent()
+
+public int[] getContentType()
+
+public byte[] getEncoded()
+
+public org.apache.harmony.security.pkcs7.SignedData getSignedData()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/pkcs7/SignedData; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.pkcs7.SignedData$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.pkcs7.SignedData extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private java.util.List certificates
+
+private org.apache.harmony.security.pkcs7.ContentInfo contentInfo
+
+private java.util.List crls
+
+private java.util.List digestAlgorithms
+
+private java.util.List signerInfos
+
+private int version
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+java.util.List
+org.apache.harmony.security.pkcs7.ContentInfo
+java.util.List
+java.util.List
+java.util.List)
+
+static int access$000(
+org.apache.harmony.security.pkcs7.SignedData)
+
+static java.util.List access$100(
+org.apache.harmony.security.pkcs7.SignedData)
+
+static org.apache.harmony.security.pkcs7.ContentInfo access$200(
+org.apache.harmony.security.pkcs7.SignedData)
+
+static java.util.List access$300(
+org.apache.harmony.security.pkcs7.SignedData)
+
+static java.util.List access$400(
+org.apache.harmony.security.pkcs7.SignedData)
+
+static java.util.List access$500(
+org.apache.harmony.security.pkcs7.SignedData)
+
+public java.util.List getCRLs()
+
+public java.util.List getCertificates()
+
+public org.apache.harmony.security.pkcs7.ContentInfo getContentInfo()
+
+public java.util.List getDigestAlgorithms()
+
+public java.util.List getSignerInfos()
+
+public int getVersion()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/pkcs7/SignerInfo; )
+final class org.apache.harmony.security.pkcs7.SignerInfo$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+public void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/pkcs7/SignerInfo; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.pkcs7.SignerInfo$2 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.pkcs7.SignerInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ISSUER_AND_SERIAL_NUMBER
+
+private org.apache.harmony.security.pkcs7.AuthenticatedAttributes authenticatedAttributes
+
+private org.apache.harmony.security.x509.AlgorithmIdentifier digestAlgorithm
+
+private org.apache.harmony.security.x509.AlgorithmIdentifier digestEncryptionAlgorithm
+
+private byte[] encryptedDigest
+
+private javax.security.auth.x500.X500Principal issuer
+
+private java.math.BigInteger serialNumber
+
+private java.util.List unauthenticatedAttributes
+
+private int version
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+java.lang.Object[]
+org.apache.harmony.security.x509.AlgorithmIdentifier
+org.apache.harmony.security.pkcs7.AuthenticatedAttributes
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[]
+java.util.List)
+
+static int access$000(
+org.apache.harmony.security.pkcs7.SignerInfo)
+
+static javax.security.auth.x500.X500Principal access$100(
+org.apache.harmony.security.pkcs7.SignerInfo)
+
+static java.math.BigInteger access$200(
+org.apache.harmony.security.pkcs7.SignerInfo)
+
+static org.apache.harmony.security.x509.AlgorithmIdentifier access$300(
+org.apache.harmony.security.pkcs7.SignerInfo)
+
+static org.apache.harmony.security.pkcs7.AuthenticatedAttributes access$400(
+org.apache.harmony.security.pkcs7.SignerInfo)
+
+static org.apache.harmony.security.x509.AlgorithmIdentifier access$500(
+org.apache.harmony.security.pkcs7.SignerInfo)
+
+static byte[] access$600(
+org.apache.harmony.security.pkcs7.SignerInfo)
+
+static java.util.List access$700(
+org.apache.harmony.security.pkcs7.SignerInfo)
+
+public java.util.List getAuthenticatedAttributes()
+
+public java.lang.String getDigestAlgorithm()
+
+public java.lang.String getDigestEncryptionAlgorithm()
+
+public byte[] getEncodedAuthenticatedAttributes()
+
+public byte[] getEncryptedDigest()
+
+public javax.security.auth.x500.X500Principal getIssuer()
+
+public java.math.BigInteger getSerialNumber()
+
+public java.lang.String getdigestAlgorithm()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/pkcs8/PrivateKeyInfo; )
+final class org.apache.harmony.security.pkcs8.PrivateKeyInfo$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.pkcs8.PrivateKeyInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private java.util.List attributes
+
+private byte[] encoding
+
+private byte[] privateKey
+
+private org.apache.harmony.security.x509.AlgorithmIdentifier privateKeyAlgorithm
+
+private int version
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[]
+java.util.List)
+
+private void <init>(
+int
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[]
+java.util.List
+byte[])
+
+ void <init>(
+int
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[]
+java.util.List
+byte[]
+org.apache.harmony.security.pkcs8.PrivateKeyInfo$1)
+
+static int access$100(
+org.apache.harmony.security.pkcs8.PrivateKeyInfo)
+
+static org.apache.harmony.security.x509.AlgorithmIdentifier access$200(
+org.apache.harmony.security.pkcs8.PrivateKeyInfo)
+
+static byte[] access$300(
+org.apache.harmony.security.pkcs8.PrivateKeyInfo)
+
+static java.util.List access$400(
+org.apache.harmony.security.pkcs8.PrivateKeyInfo)
+
+public org.apache.harmony.security.x509.AlgorithmIdentifier getAlgorithmIdentifier()
+
+public java.util.List getAttributes()
+
+public byte[] getEncoded()
+
+public byte[] getPrivateKey()
+
+public int getVersion()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.provider.cert.Cache extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final long HASH_MASK
+
+private static final int INDEX_MASK
+
+private static final long PREFIX_HASH_MASK
+
+private final java.lang.Object[] cache
+
+private boolean cache_is_full
+
+private final int cache_size
+
+private final byte[][] encodings
+
+private final long[] hashes
+
+private final long[] hashes_idx
+
+private int last_cached
+
+private final int prefix_size
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int)
+
+public void <init>(
+int
+int)
+
+private long getSuffHash(
+byte[])
+
+public boolean contains(
+long)
+
+public java.lang.Object get(
+long
+byte[])
+
+public long getHash(
+byte[])
+
+public void put(
+long
+byte[]
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Void;>; )
+ class org.apache.harmony.security.provider.cert.DRLCertFactory$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final org.apache.harmony.security.provider.cert.DRLCertFactory this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.provider.cert.DRLCertFactory)
+
+public volatile java.lang.Object run()
+
+public java.lang.Void run()
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.security.provider.cert.DRLCertFactory extends java.security.Provider
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.provider.cert.X509CRLEntryImpl extends java.security.cert.X509CRLEntry
+
+----------------FIELDS----------------
+
+private byte[] encoding
+
+private final org.apache.harmony.security.x509.Extensions extensions
+
+private final javax.security.auth.x500.X500Principal issuer
+
+private final org.apache.harmony.security.x509.TBSCertList$RevokedCertificate rcert
+----------------METHODS----------------
+
+public void <init>(
+org.apache.harmony.security.x509.TBSCertList$RevokedCertificate
+javax.security.auth.x500.X500Principal)
+
+public javax.security.auth.x500.X500Principal getCertificateIssuer()
+
+public java.util.Set getCriticalExtensionOIDs()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public byte[] getEncoded()
+
+public byte[] getExtensionValue(
+java.lang.String)
+
+public java.util.Set getNonCriticalExtensionOIDs()
+
+public java.util.Date getRevocationDate()
+
+public java.math.BigInteger getSerialNumber()
+
+public boolean hasExtensions()
+
+public boolean hasUnsupportedCriticalExtension()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.provider.cert.X509CRLImpl extends java.security.cert.X509CRL
+
+----------------FIELDS----------------
+
+private final org.apache.harmony.security.x509.CertificateList crl
+
+private byte[] encoding
+
+private java.util.ArrayList entries
+
+private boolean entriesRetrieved
+
+private int entriesSize
+
+private final org.apache.harmony.security.x509.Extensions extensions
+
+private boolean isIndirectCRL
+
+private javax.security.auth.x500.X500Principal issuer
+
+private int nonIndirectEntriesSize
+
+private boolean nullSigAlgParams
+
+private java.lang.String sigAlgName
+
+private java.lang.String sigAlgOID
+
+private byte[] sigAlgParams
+
+private byte[] signature
+
+private final org.apache.harmony.security.x509.TBSCertList tbsCertList
+
+private byte[] tbsCertListEncoding
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public void <init>(
+java.io.InputStream)
+
+public void <init>(
+org.apache.harmony.security.x509.CertificateList)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+
+private void retirieveEntries()
+
+public java.util.Set getCriticalExtensionOIDs()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public byte[] getEncoded()
+
+public byte[] getExtensionValue(
+java.lang.String)
+
+public java.security.Principal getIssuerDN()
+
+public javax.security.auth.x500.X500Principal getIssuerX500Principal()
+
+public java.util.Date getNextUpdate()
+
+public java.util.Set getNonCriticalExtensionOIDs()
+
+public java.security.cert.X509CRLEntry getRevokedCertificate(
+java.math.BigInteger)
+
+public java.security.cert.X509CRLEntry getRevokedCertificate(
+java.security.cert.X509Certificate)
+@dalvik.annotation.Signature (value =()Ljava/util/Set<+Ljava/security/cert/X509CRLEntry;>; )
+public java.util.Set getRevokedCertificates()
+
+public java.lang.String getSigAlgName()
+
+public java.lang.String getSigAlgOID()
+
+public byte[] getSigAlgParams()
+
+public byte[] getSignature()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public byte[] getTBSCertList()
+
+public java.util.Date getThisUpdate()
+
+public int getVersion()
+
+public boolean hasUnsupportedCriticalExtension()
+
+public boolean isRevoked(
+java.security.cert.Certificate)
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public void verify(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public void verify(
+java.security.PublicKey
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/provider/cert/X509CertFactoryImpl; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =RestoringInputStream )
+ class org.apache.harmony.security.provider.cert.X509CertFactoryImpl$RestoringInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+private static final int BUFF_SIZE
+
+private int bar
+
+private final int[] buff
+
+private int end
+
+private final java.io.InputStream inStream
+
+private int pos
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+
+public void mark(
+int)
+
+public boolean markSupported()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/security/provider/cert/X509CertFactoryImpl$RestoringInputStream; )
+public class org.apache.harmony.security.provider.cert.X509CertFactoryImpl extends java.security.cert.CertificateFactorySpi
+
+----------------FIELDS----------------
+
+private static byte[] CERT_BOUND_SUFFIX
+
+private static org.apache.harmony.security.provider.cert.Cache CERT_CACHE
+
+private static int CERT_CACHE_SEED_LENGTH
+
+private static org.apache.harmony.security.provider.cert.Cache CRL_CACHE
+
+private static int CRL_CACHE_SEED_LENGTH
+
+private static byte[] FREE_BOUND_SUFFIX
+
+private static byte[] pemBegin
+
+private static byte[] pemClose
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private byte[] decodePEM(
+java.io.InputStream
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException;Ljava/io/IOException; )
+private static java.security.cert.CRL getCRL(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException;Ljava/io/IOException; )
+private static java.security.cert.CRL getCRL(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException;Ljava/io/IOException; )
+private static java.security.cert.Certificate getCertificate(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException;Ljava/io/IOException; )
+private static java.security.cert.Certificate getCertificate(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static byte[] readBytes(
+java.io.InputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public java.security.cert.CRL engineGenerateCRL(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+@dalvik.annotation.Signature (value =(Ljava/io/InputStream;)Ljava/util/Collection<+Ljava/security/cert/CRL;>; )
+public java.util.Collection engineGenerateCRLs(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public java.security.cert.CertPath engineGenerateCertPath(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public java.security.cert.CertPath engineGenerateCertPath(
+java.io.InputStream
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public java.security.cert.CertPath engineGenerateCertPath(
+java.util.List)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public java.security.cert.Certificate engineGenerateCertificate(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+@dalvik.annotation.Signature (value =(Ljava/io/InputStream;)Ljava/util/Collection<+Ljava/security/cert/Certificate;>; )
+public java.util.Collection engineGenerateCertificates(
+java.io.InputStream)
+@dalvik.annotation.Signature (value =()Ljava/util/Iterator<Ljava/lang/String;>; )
+public java.util.Iterator engineGetCertPathEncodings()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.provider.cert.X509CertImpl extends java.security.cert.X509Certificate
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private final org.apache.harmony.security.x509.Certificate certificate
+
+private byte[] encoding
+
+private final org.apache.harmony.security.x509.Extensions extensions
+
+private javax.security.auth.x500.X500Principal issuer
+
+private long notAfter
+
+private long notBefore
+
+private boolean nullSigAlgParams
+
+private java.security.PublicKey publicKey
+
+private java.math.BigInteger serialNumber
+
+private java.lang.String sigAlgName
+
+private java.lang.String sigAlgOID
+
+private byte[] sigAlgParams
+
+private byte[] signature
+
+private javax.security.auth.x500.X500Principal subject
+
+private final org.apache.harmony.security.x509.TBSCertificate tbsCert
+
+private byte[] tbsCertificate
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public void <init>(
+java.io.InputStream)
+
+public void <init>(
+org.apache.harmony.security.x509.Certificate)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+private void fastVerify(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateExpiredException;Ljava/security/cert/CertificateNotYetValidException; )
+public void checkValidity()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateExpiredException;Ljava/security/cert/CertificateNotYetValidException; )
+public void checkValidity(
+java.util.Date)
+
+public int getBasicConstraints()
+
+public java.util.Set getCriticalExtensionOIDs()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateEncodingException; )
+public byte[] getEncoded()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateParsingException; )
+public java.util.List getExtendedKeyUsage()
+
+public byte[] getExtensionValue(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateParsingException; )
+public java.util.Collection getIssuerAlternativeNames()
+
+public java.security.Principal getIssuerDN()
+
+public boolean[] getIssuerUniqueID()
+
+public javax.security.auth.x500.X500Principal getIssuerX500Principal()
+
+public boolean[] getKeyUsage()
+
+public java.util.Set getNonCriticalExtensionOIDs()
+
+public java.util.Date getNotAfter()
+
+public java.util.Date getNotBefore()
+
+public java.security.PublicKey getPublicKey()
+
+public java.math.BigInteger getSerialNumber()
+
+public java.lang.String getSigAlgName()
+
+public java.lang.String getSigAlgOID()
+
+public byte[] getSigAlgParams()
+
+public byte[] getSignature()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateParsingException; )
+public java.util.Collection getSubjectAlternativeNames()
+
+public java.security.Principal getSubjectDN()
+
+public boolean[] getSubjectUniqueID()
+
+public javax.security.auth.x500.X500Principal getSubjectX500Principal()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateEncodingException; )
+public byte[] getTBSCertificate()
+
+public int getVersion()
+
+public boolean hasUnsupportedCriticalExtension()
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public void verify(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public void verify(
+java.security.PublicKey
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/provider/cert/X509CertPathImpl; )
+final class org.apache.harmony.security.provider.cert.X509CertPathImpl$1 extends org.apache.harmony.security.asn1.ASN1SequenceOf
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public java.util.Collection getValues(
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/provider/cert/X509CertPathImpl; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.provider.cert.X509CertPathImpl$2 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+
+private final byte[] PRECALCULATED_HEAD
+
+private final byte[] SIGNERS_INFO
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/provider/cert/X509CertPathImpl; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.provider.cert.X509CertPathImpl$3 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+
+private final byte[] SIGNED_DATA_OID
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.provider.cert.X509CertPathImpl extends java.security.cert.CertPath
+
+----------------FIELDS----------------
+
+public static org.apache.harmony.security.asn1.ASN1SequenceOf ASN1
+
+private static final org.apache.harmony.security.asn1.ASN1Sequence ASN1_SIGNED_DATA
+
+public static final int PKCS7
+
+private static final org.apache.harmony.security.asn1.ASN1Sequence PKCS7_SIGNED_DATA_OBJECT
+
+public static final int PKI_PATH
+
+static final java.util.List encodings
+
+private static final java.lang.String[] encodingsArr
+
+private static final long serialVersionUID
+
+private final java.util.List certificates
+
+private byte[] pkcs7Encoding
+
+private byte[] pkiPathEncoding
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public void <init>(
+java.util.List)
+
+private void <init>(
+java.util.List
+int
+byte[])
+
+ void <init>(
+java.util.List
+int
+byte[]
+org.apache.harmony.security.provider.cert.X509CertPathImpl$1)
+
+static java.util.List access$100(
+org.apache.harmony.security.provider.cert.X509CertPathImpl)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public static org.apache.harmony.security.provider.cert.X509CertPathImpl getInstance(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public static org.apache.harmony.security.provider.cert.X509CertPathImpl getInstance(
+java.io.InputStream
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public static org.apache.harmony.security.provider.cert.X509CertPathImpl getInstance(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public static org.apache.harmony.security.provider.cert.X509CertPathImpl getInstance(
+byte[]
+java.lang.String)
+
+public java.util.List getCertificates()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateEncodingException; )
+public byte[] getEncoded()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateEncodingException; )
+public byte[] getEncoded(
+java.lang.String)
+
+public java.util.Iterator getEncodings()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Void;>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class org.apache.harmony.security.provider.crypto.CryptoProvider$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final org.apache.harmony.security.provider.crypto.CryptoProvider this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.provider.crypto.CryptoProvider)
+
+public volatile java.lang.Object run()
+
+public java.lang.Void run()
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.security.provider.crypto.CryptoProvider extends java.security.Provider
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.provider.crypto.DSAKeyFactoryImpl extends java.security.KeyFactorySpi
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.PrivateKey engineGeneratePrivate(
+java.security.spec.KeySpec)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.PublicKey engineGeneratePublic(
+java.security.spec.KeySpec)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+@dalvik.annotation.Signature (value =<T::Ljava/security/spec/KeySpec;>(Ljava/security/Key;Ljava/lang/Class<TT;>;)TT; )
+protected java.security.spec.KeySpec engineGetKeySpec(
+java.security.Key
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected java.security.Key engineTranslateKey(
+java.security.Key)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.provider.crypto.DSAPrivateKeyImpl extends org.apache.harmony.security.PrivateKeyImpl implements java.security.interfaces.DSAPrivateKey
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.security.interfaces.DSAParams params
+
+private java.math.BigInteger x
+----------------METHODS----------------
+
+public void <init>(
+java.security.spec.DSAPrivateKeySpec)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+public void <init>(
+java.security.spec.PKCS8EncodedKeySpec)
+
+public java.security.interfaces.DSAParams getParams()
+
+public java.math.BigInteger getX()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.provider.crypto.DSAPublicKeyImpl extends org.apache.harmony.security.PublicKeyImpl implements java.security.interfaces.DSAPublicKey
+
+----------------FIELDS----------------
+
+private static final long serialVersionUID
+
+private java.security.interfaces.DSAParams params
+
+private java.math.BigInteger y
+----------------METHODS----------------
+
+public void <init>(
+java.security.spec.DSAPublicKeySpec)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+public void <init>(
+java.security.spec.X509EncodedKeySpec)
+
+public java.security.interfaces.DSAParams getParams()
+
+public java.math.BigInteger getY()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/provider/crypto/RandomBitsSupplier; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.provider.crypto.RandomBitsSupplier$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public java.lang.Object run()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.harmony.security.provider.crypto.SHA1_Data extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int BYTES_OFFSET
+
+public static final java.lang.String[] DEVICE_NAMES
+
+public static final int DIGEST_LENGTH
+
+public static final int H0
+
+public static final int H1
+
+public static final int H2
+
+public static final int H3
+
+public static final int H4
+
+public static final int HASH_OFFSET
+
+public static final java.lang.String LIBRARY_NAME
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.provider.crypto.RandomBitsSupplier extends java.lang.Object implements org.apache.harmony.security.provider.crypto.SHA1_Data
+
+----------------FIELDS----------------
+
+private static java.io.FileInputStream bis
+
+private static java.io.File randomFile
+
+private static boolean serviceAvailable
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static java.io.FileInputStream access$002(
+java.io.FileInputStream)
+
+static java.io.File access$102(
+java.io.File)
+
+private static byte[] getLinuxRandomBits(
+int)
+
+public static byte[] getRandomBits(
+int)
+
+static boolean isServiceAvailable()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.provider.crypto.SHA1Impl extends java.lang.Object implements org.apache.harmony.security.provider.crypto.SHA1_Data
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+static void computeHash(
+int[])
+
+static void updateHash(
+int[]
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.provider.crypto.SHA1PRNG_SecureRandomImpl extends java.security.SecureRandomSpi implements java.io.Serializable, org.apache.harmony.security.provider.crypto.SHA1_Data
+
+----------------FIELDS----------------
+
+private static final int COUNTER_BASE
+
+private static final int[] END_FLAGS
+
+private static final int EXTRAFRAME_OFFSET
+
+private static final int FRAME_LENGTH
+
+private static final int FRAME_OFFSET
+
+private static final int HASHBYTES_TO_USE
+
+private static final int HASHCOPY_OFFSET
+
+private static final int[] LEFT
+
+private static final int[] MASK
+
+private static final int MAX_BYTES
+
+private static final int NEXT_BYTES
+
+private static final int[] RIGHT1
+
+private static final int[] RIGHT2
+
+private static final int SET_SEED
+
+private static final int UNDEFINED
+
+private static org.apache.harmony.security.provider.crypto.SHA1PRNG_SecureRandomImpl myRandom
+
+private static final long serialVersionUID
+
+private transient int[] copies
+
+private transient long counter
+
+private transient int nextBIndex
+
+private transient byte[] nextBytes
+
+private transient int[] seed
+
+private transient long seedLength
+
+private transient int state
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+
+private void updateSeed(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+protected byte[] engineGenerateSeed(
+int)
+
+protected void engineNextBytes(
+byte[])
+
+protected void engineSetSeed(
+byte[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.provider.crypto.SHA1_MessageDigestImpl extends java.security.MessageDigestSpi implements java.lang.Cloneable, org.apache.harmony.security.provider.crypto.SHA1_Data
+
+----------------FIELDS----------------
+
+private int[] buffer
+
+private int messageLength
+
+private byte[] oneByte
+----------------METHODS----------------
+
+public void <init>()
+
+private void processDigest(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+@dalvik.annotation.Throws (value =Ljava/security/DigestException; )
+protected int engineDigest(
+byte[]
+int
+int)
+
+protected byte[] engineDigest()
+
+protected int engineGetDigestLength()
+
+protected void engineReset()
+
+protected void engineUpdate(
+byte)
+
+protected void engineUpdate(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.provider.crypto.SHA1withDSA_SignatureImpl extends java.security.Signature
+
+----------------FIELDS----------------
+
+private java.security.interfaces.DSAKey dsaKey
+
+private java.security.MessageDigest msgDigest
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+private boolean checkSignature(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidParameterException; )
+protected java.lang.Object engineGetParameter(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInitSign(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInitVerify(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidParameterException; )
+protected void engineSetParameter(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected byte[] engineSign()
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected void engineUpdate(
+byte)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected void engineUpdate(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected boolean engineVerify(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected boolean engineVerify(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/provider/crypto/ThreeIntegerSequence; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.provider.crypto.ThreeIntegerSequence$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+ class org.apache.harmony.security.provider.crypto.ThreeIntegerSequence extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private byte[] encoding
+
+ byte[] g
+
+ byte[] p
+
+ byte[] q
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+byte[]
+byte[]
+byte[])
+
+public byte[] getEncoded()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.utils.AlgNameMapper extends java.lang.Object
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+private static final java.util.Map alg2OidMap
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+private static final java.util.Map algAliasesMap
+
+private static final java.lang.String[][] knownAlgMappings
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>; )
+private static final java.util.Map oid2AlgMap
+
+private static final java.lang.String[] serviceName
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public static java.lang.String dump()
+
+public static java.lang.String getStandardName(
+java.lang.String)
+
+public static boolean isOID(
+java.lang.String)
+
+public static java.lang.String map2AlgName(
+java.lang.String)
+
+public static java.lang.String map2OID(
+java.lang.String)
+
+public static java.lang.String normalize(
+java.lang.String)
+
+private static void selectEntries(
+java.security.Provider)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.utils.Array extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static java.lang.String toString(
+byte[]
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.utils.JarUtils extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int[] MESSAGE_DIGEST_OID
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private static java.security.cert.X509Certificate[] createChain(
+java.security.cert.X509Certificate
+java.security.cert.X509Certificate[])
+
+private static java.security.cert.X509Certificate findCert(
+java.security.Principal
+java.security.cert.X509Certificate[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/security/GeneralSecurityException; )
+public static java.security.cert.Certificate[] verifySignature(
+java.io.InputStream
+java.io.InputStream)
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.security.utils.ObjectIdentifier extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.Object group
+
+private int hash
+
+private java.lang.String name
+
+private final int[] oid
+
+private java.lang.String sOID
+
+private java.lang.String soid
+----------------METHODS----------------
+
+public void <init>(
+int[])
+
+public void <init>(
+int[]
+java.lang.String
+java.lang.Object)
+
+public static int hashIntArray(
+int[])
+
+public static void validateOid(
+int[])
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.Object getGroup()
+
+public java.lang.String getName()
+
+public int[] getOid()
+
+public int hashCode()
+
+public java.lang.String toOIDString()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x501.AttributeType extends java.lang.Object
+
+----------------FIELDS----------------
+
+public final org.apache.harmony.security.asn1.ObjectIdentifier oid
+
+public final org.apache.harmony.security.asn1.ASN1Type type
+----------------METHODS----------------
+
+public void <init>(
+org.apache.harmony.security.asn1.ObjectIdentifier
+org.apache.harmony.security.asn1.ASN1Type)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x501/AttributeTypeAndValue; )
+final class org.apache.harmony.security.x501.AttributeTypeAndValue$1 extends org.apache.harmony.security.asn1.ASN1Type
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+
+public boolean checkTag(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object decode(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void encodeASN(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public void encodeContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public int getEncodedLength(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+public void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x501/AttributeTypeAndValue; )
+final class org.apache.harmony.security.x501.AttributeTypeAndValue$2 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x501.AttributeTypeAndValue extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+public static org.apache.harmony.security.asn1.ASN1Type AttributeValue
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier C
+
+private static final int CAPACITY
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier CN
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier DC
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier DNQ
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier DNQUALIFIER
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier EMAILADDRESS
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier GENERATION
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier GIVENNAME
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier INITIALS
+
+private static final java.util.HashMap KNOWN_NAMES
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier[][] KNOWN_OIDS
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier L
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier O
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier OU
+
+private static final java.util.HashMap RFC1779_NAMES
+
+private static final java.util.HashMap RFC2253_NAMES
+
+private static final java.util.HashMap RFC2459_NAMES
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier SERIALNUMBER
+
+private static final int SIZE
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier ST
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier STREET
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier SURNAME
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier T
+
+private static final org.apache.harmony.security.utils.ObjectIdentifier UID
+
+private final org.apache.harmony.security.utils.ObjectIdentifier oid
+
+private org.apache.harmony.security.x501.AttributeValue value
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.lang.String
+org.apache.harmony.security.x501.AttributeValue)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void <init>(
+int[]
+org.apache.harmony.security.x501.AttributeValue)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void <init>(
+int[]
+org.apache.harmony.security.x501.AttributeValue
+org.apache.harmony.security.x501.AttributeTypeAndValue$1)
+
+static org.apache.harmony.security.utils.ObjectIdentifier access$100(
+org.apache.harmony.security.x501.AttributeTypeAndValue)
+
+static org.apache.harmony.security.x501.AttributeValue access$200(
+org.apache.harmony.security.x501.AttributeTypeAndValue)
+
+private static void addOID(
+org.apache.harmony.security.utils.ObjectIdentifier)
+
+private static org.apache.harmony.security.utils.ObjectIdentifier getOID(
+int[])
+
+private static int hashIntArray(
+int[])
+
+public void appendName(
+java.lang.String
+java.lang.StringBuffer)
+
+public org.apache.harmony.security.utils.ObjectIdentifier getType()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x501.AttributeTypeAndValueComparator extends java.lang.Object implements java.util.Comparator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+private static int compateOids(
+org.apache.harmony.security.utils.ObjectIdentifier
+org.apache.harmony.security.utils.ObjectIdentifier)
+
+public int compare(
+java.lang.Object
+java.lang.Object)
+
+public boolean equals(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x501.AttributeValue extends java.lang.Object
+
+----------------FIELDS----------------
+
+public byte[] bytes
+
+public byte[] encoded
+
+public java.lang.String escapedString
+
+public boolean hasQE
+
+private java.lang.String hexString
+
+public java.lang.String rawString
+
+private int tag
+
+public final boolean wasEncoded
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+boolean)
+
+public void <init>(
+java.lang.String
+byte[])
+
+public void <init>(
+java.lang.String
+byte[]
+int)
+
+private java.lang.String makeEscaped(
+java.lang.String)
+
+public void appendQEString(
+java.lang.StringBuffer)
+
+public java.lang.String getHexString()
+
+public int getTag()
+
+public java.lang.String makeCanonical()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x501.Attributes extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static org.apache.harmony.security.asn1.ASN1Sequence getASN1(
+org.apache.harmony.security.asn1.InformationObjectSet)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x501/DirectoryString; )
+final class org.apache.harmony.security.x501.DirectoryString$1 extends org.apache.harmony.security.asn1.ASN1Choice
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+public int getIndex(
+java.lang.Object)
+
+public java.lang.Object getObjectToEncode(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x501.DirectoryString extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Choice ASN1
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x501/Name; )
+final class org.apache.harmony.security.x501.Name$1 extends org.apache.harmony.security.asn1.ASN1SequenceOf
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type)
+
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public java.util.Collection getValues(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x501.Name extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1SequenceOf ASN1
+
+public static final org.apache.harmony.security.asn1.ASN1SetOf ASN1_RDN
+
+private java.lang.String canonicalString
+
+private volatile byte[] encoded
+
+private java.util.List rdn
+
+private java.lang.String rfc1779String
+
+private java.lang.String rfc2253String
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.lang.String)
+
+private void <init>(
+java.util.List)
+
+ void <init>(
+java.util.List
+org.apache.harmony.security.x501.Name$1)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+
+static java.util.List access$100(
+org.apache.harmony.security.x501.Name)
+
+private java.lang.String getName0(
+java.lang.String)
+
+public byte[] getEncoded()
+
+public java.lang.String getName(
+java.lang.String)
+
+public javax.security.auth.x500.X500Principal getX500Principal()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/AccessDescription; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.AccessDescription$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.AccessDescription extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private final org.apache.harmony.security.x509.GeneralName accessLocation
+
+private final java.lang.String accessMethod
+
+private byte[] encoding
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+org.apache.harmony.security.x509.GeneralName)
+
+private void <init>(
+java.lang.String
+org.apache.harmony.security.x509.GeneralName
+byte[])
+
+ void <init>(
+java.lang.String
+org.apache.harmony.security.x509.GeneralName
+byte[]
+org.apache.harmony.security.x509.AccessDescription$1)
+
+static java.lang.String access$100(
+org.apache.harmony.security.x509.AccessDescription)
+
+static org.apache.harmony.security.x509.GeneralName access$200(
+org.apache.harmony.security.x509.AccessDescription)
+
+public org.apache.harmony.security.x509.GeneralName getAccessLocation()
+
+public java.lang.String getAccessMethod()
+
+public byte[] getEncoded()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/AlgorithmIdentifier; )
+final class org.apache.harmony.security.x509.AlgorithmIdentifier$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.AlgorithmIdentifier extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private java.lang.String algorithm
+
+private java.lang.String algorithmName
+
+private byte[] encoding
+
+private byte[] parameters
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+byte[])
+
+private void <init>(
+java.lang.String
+byte[]
+byte[])
+
+public void dumpValue(
+java.lang.StringBuffer)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getAlgorithm()
+
+public java.lang.String getAlgorithmName()
+
+public byte[] getEncoded()
+
+public byte[] getParameters()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.ExtensionValue extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected byte[] encoding
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+byte[])
+
+public void dumpValue(
+java.lang.StringBuffer)
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public byte[] getEncoded()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.AlternativeName extends org.apache.harmony.security.x509.ExtensionValue
+
+----------------FIELDS----------------
+
+public static final boolean ISSUER
+
+public static final boolean SUBJECT
+
+private org.apache.harmony.security.x509.GeneralNames alternativeNames
+
+private boolean which
+----------------METHODS----------------
+
+public void <init>(
+boolean
+org.apache.harmony.security.x509.GeneralNames)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+boolean
+byte[])
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public java.util.List getAlternativeNames()
+
+public byte[] getEncoded()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/AuthorityKeyIdentifier; )
+final class org.apache.harmony.security.x509.AuthorityKeyIdentifier$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.AuthorityKeyIdentifier extends org.apache.harmony.security.x509.ExtensionValue
+
+----------------FIELDS----------------
+
+public static org.apache.harmony.security.asn1.ASN1Type ASN1
+
+private final org.apache.harmony.security.x509.GeneralNames authorityCertIssuer
+
+private final java.math.BigInteger authorityCertSerialNumber
+
+private final byte[] keyIdentifier
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+byte[]
+org.apache.harmony.security.x509.GeneralNames
+java.math.BigInteger)
+
+static byte[] access$000(
+org.apache.harmony.security.x509.AuthorityKeyIdentifier)
+
+static org.apache.harmony.security.x509.GeneralNames access$100(
+org.apache.harmony.security.x509.AuthorityKeyIdentifier)
+
+static java.math.BigInteger access$200(
+org.apache.harmony.security.x509.AuthorityKeyIdentifier)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static org.apache.harmony.security.x509.AuthorityKeyIdentifier decode(
+byte[])
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public byte[] getEncoded()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/BasicConstraints; )
+final class org.apache.harmony.security.x509.BasicConstraints$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.BasicConstraints extends org.apache.harmony.security.x509.ExtensionValue
+
+----------------FIELDS----------------
+
+public static org.apache.harmony.security.asn1.ASN1Type ASN1
+
+private boolean cA
+
+private int pathLenConstraint
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+boolean
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public boolean getCA()
+
+public byte[] getEncoded()
+
+public int getPathLenConstraint()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/CRLDistributionPoints; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.CRLDistributionPoints$1 extends org.apache.harmony.security.asn1.ASN1SequenceOf
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type)
+
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public java.util.Collection getValues(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.CRLDistributionPoints extends org.apache.harmony.security.x509.ExtensionValue
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Type ASN1
+
+private java.util.List distributionPoints
+
+private byte[] encoding
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.util.List)
+
+public void <init>(
+java.util.List
+byte[])
+
+static java.util.List access$000(
+org.apache.harmony.security.x509.CRLDistributionPoints)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static org.apache.harmony.security.x509.CRLDistributionPoints decode(
+byte[])
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public byte[] getEncoded()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.CRLNumber extends org.apache.harmony.security.x509.ExtensionValue
+
+----------------FIELDS----------------
+
+public static org.apache.harmony.security.asn1.ASN1Type ASN1
+
+private final java.math.BigInteger number
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.math.BigInteger)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public byte[] getEncoded()
+
+public java.math.BigInteger getNumber()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/Certificate; )
+final class org.apache.harmony.security.x509.Certificate$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.Certificate extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private byte[] encoding
+
+private final org.apache.harmony.security.x509.AlgorithmIdentifier signatureAlgorithm
+
+private final byte[] signatureValue
+
+private final org.apache.harmony.security.x509.TBSCertificate tbsCertificate
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.apache.harmony.security.x509.TBSCertificate
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[])
+
+private void <init>(
+org.apache.harmony.security.x509.TBSCertificate
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[]
+byte[])
+
+ void <init>(
+org.apache.harmony.security.x509.TBSCertificate
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[]
+byte[]
+org.apache.harmony.security.x509.Certificate$1)
+
+static org.apache.harmony.security.x509.TBSCertificate access$100(
+org.apache.harmony.security.x509.Certificate)
+
+static org.apache.harmony.security.x509.AlgorithmIdentifier access$200(
+org.apache.harmony.security.x509.Certificate)
+
+static byte[] access$300(
+org.apache.harmony.security.x509.Certificate)
+
+public byte[] getEncoded()
+
+public org.apache.harmony.security.x509.AlgorithmIdentifier getSignatureAlgorithm()
+
+public byte[] getSignatureValue()
+
+public org.apache.harmony.security.x509.TBSCertificate getTbsCertificate()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/CertificateIssuer; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.CertificateIssuer$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.CertificateIssuer extends org.apache.harmony.security.x509.ExtensionValue
+
+----------------FIELDS----------------
+
+public static org.apache.harmony.security.asn1.ASN1Type ASN1
+
+private javax.security.auth.x500.X500Principal issuer
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.apache.harmony.security.x509.GeneralName)
+
+public void <init>(
+byte[])
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public javax.security.auth.x500.X500Principal getIssuer()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/CertificateList; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.CertificateList$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.CertificateList extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private byte[] encoding
+
+private final org.apache.harmony.security.x509.AlgorithmIdentifier signatureAlgorithm
+
+private final byte[] signatureValue
+
+private final org.apache.harmony.security.x509.TBSCertList tbsCertList
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.apache.harmony.security.x509.TBSCertList
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[])
+
+private void <init>(
+org.apache.harmony.security.x509.TBSCertList
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[]
+byte[])
+
+ void <init>(
+org.apache.harmony.security.x509.TBSCertList
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[]
+byte[]
+org.apache.harmony.security.x509.CertificateList$1)
+
+static org.apache.harmony.security.x509.TBSCertList access$100(
+org.apache.harmony.security.x509.CertificateList)
+
+static org.apache.harmony.security.x509.AlgorithmIdentifier access$200(
+org.apache.harmony.security.x509.CertificateList)
+
+static byte[] access$300(
+org.apache.harmony.security.x509.CertificateList)
+
+public byte[] getEncoded()
+
+public org.apache.harmony.security.x509.AlgorithmIdentifier getSignatureAlgorithm()
+
+public byte[] getSignatureValue()
+
+public org.apache.harmony.security.x509.TBSCertList getTbsCertList()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/CertificatePolicies; )
+final class org.apache.harmony.security.x509.CertificatePolicies$1 extends org.apache.harmony.security.asn1.ASN1SequenceOf
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type)
+
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public java.util.Collection getValues(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.CertificatePolicies extends org.apache.harmony.security.x509.ExtensionValue
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Type ASN1
+
+private byte[] encoding
+
+private java.util.List policyInformations
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+java.util.List)
+
+private void <init>(
+java.util.List
+byte[])
+
+ void <init>(
+java.util.List
+byte[]
+org.apache.harmony.security.x509.CertificatePolicies$1)
+
+static java.util.List access$100(
+org.apache.harmony.security.x509.CertificatePolicies)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static org.apache.harmony.security.x509.CertificatePolicies decode(
+byte[])
+
+public org.apache.harmony.security.x509.CertificatePolicies addPolicyInformation(
+org.apache.harmony.security.x509.PolicyInformation)
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public byte[] getEncoded()
+
+public java.util.List getPolicyInformations()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.DNParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected int beg
+
+protected char[] chars
+
+protected int cur
+
+protected byte[] encoded
+
+protected int end
+
+protected boolean hasQE
+
+protected final int length
+
+protected int pos
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private char getEscaped()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.lang.String hexAV()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.lang.String escapedAV()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected int getByte(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected char getUTF8()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.lang.String nextAT()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.List parse()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.lang.String quotedAV()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/DistributionPoint; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.DistributionPoint$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.DistributionPoint extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private final org.apache.harmony.security.x509.GeneralNames cRLIssuer
+
+private final org.apache.harmony.security.x509.DistributionPointName distributionPoint
+
+private final org.apache.harmony.security.x509.ReasonFlags reasons
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+org.apache.harmony.security.x509.DistributionPointName
+org.apache.harmony.security.x509.ReasonFlags
+org.apache.harmony.security.x509.GeneralNames)
+
+static org.apache.harmony.security.x509.DistributionPointName access$000(
+org.apache.harmony.security.x509.DistributionPoint)
+
+static org.apache.harmony.security.x509.ReasonFlags access$100(
+org.apache.harmony.security.x509.DistributionPoint)
+
+static org.apache.harmony.security.x509.GeneralNames access$200(
+org.apache.harmony.security.x509.DistributionPoint)
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/DistributionPointName; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.DistributionPointName$1 extends org.apache.harmony.security.asn1.ASN1Choice
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public int getIndex(
+java.lang.Object)
+
+public java.lang.Object getObjectToEncode(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.DistributionPointName extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Choice ASN1
+
+private final org.apache.harmony.security.x509.GeneralNames fullName
+
+private final org.apache.harmony.security.x501.Name nameRelativeToCRLIssuer
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.apache.harmony.security.x501.Name)
+
+public void <init>(
+org.apache.harmony.security.x509.GeneralNames)
+
+static org.apache.harmony.security.x509.GeneralNames access$000(
+org.apache.harmony.security.x509.DistributionPointName)
+
+static org.apache.harmony.security.x501.Name access$100(
+org.apache.harmony.security.x509.DistributionPointName)
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/EDIPartyName; )
+final class org.apache.harmony.security.x509.EDIPartyName$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.EDIPartyName extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private byte[] encoding
+
+private java.lang.String nameAssigner
+
+private java.lang.String partyName
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+java.lang.String)
+
+private void <init>(
+java.lang.String
+java.lang.String
+byte[])
+
+ void <init>(
+java.lang.String
+java.lang.String
+byte[]
+org.apache.harmony.security.x509.EDIPartyName$1)
+
+static java.lang.String access$100(
+org.apache.harmony.security.x509.EDIPartyName)
+
+static java.lang.String access$200(
+org.apache.harmony.security.x509.EDIPartyName)
+
+public byte[] getEncoded()
+
+public java.lang.String getNameAssigner()
+
+public java.lang.String getPartyName()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/ExtendedKeyUsage; )
+final class org.apache.harmony.security.x509.ExtendedKeyUsage$1 extends org.apache.harmony.security.asn1.ASN1Oid
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.ExtendedKeyUsage extends org.apache.harmony.security.x509.ExtensionValue
+
+----------------FIELDS----------------
+
+public static org.apache.harmony.security.asn1.ASN1Type ASN1
+
+private java.util.List keys
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.util.List)
+
+public void <init>(
+byte[])
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public byte[] getEncoded()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.List getExtendedKeyUsage()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/Extension; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.Extension$1 extends org.apache.harmony.security.asn1.ASN1OctetString
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/Extension; )
+final class org.apache.harmony.security.x509.Extension$2 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.Extension extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+public static final int[] AUTHORITY_INFO_ACCESS
+
+public static final int[] AUTH_KEY_ID
+
+public static final int[] BASIC_CONSTRAINTS
+
+public static final int[] CERTIFICATE_ISSUER
+
+public static final int[] CERTIFICATE_POLICIES
+
+public static final boolean CRITICAL
+
+public static final int[] CRL_DISTR_POINTS
+
+public static final int[] CRL_NUMBER
+
+public static final int[] EXTENDED_KEY_USAGE
+
+public static final int[] FRESHEST_CRL
+
+public static final int[] INHIBIT_ANY_POLICY
+
+public static final int[] INVALIDITY_DATE
+
+public static final int[] ISSUER_ALTERNATIVE_NAME
+
+public static final int[] ISSUING_DISTR_POINT
+
+public static final int[] ISSUING_DISTR_POINTS
+
+public static final int[] KEY_USAGE
+
+public static final int[] NAME_CONSTRAINTS
+
+public static final boolean NON_CRITICAL
+
+public static final int[] POLICY_CONSTRAINTS
+
+public static final int[] POLICY_MAPPINGS
+
+public static final int[] PRIVATE_KEY_USAGE_PERIOD
+
+public static final int[] REASON_CODE
+
+public static final int[] SUBJECT_ALT_NAME
+
+public static final int[] SUBJECT_INFO_ACCESS
+
+public static final int[] SUBJ_DIRECTORY_ATTRS
+
+public static final int[] SUBJ_KEY_ID
+
+private final boolean critical
+
+private byte[] encoding
+
+private final int[] extnID
+
+private java.lang.String extnID_str
+
+private final byte[] extnValue
+
+protected org.apache.harmony.security.x509.ExtensionValue extnValueObject
+
+private byte[] rawExtnValue
+
+private boolean valueDecoded
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+boolean
+org.apache.harmony.security.x509.ExtensionValue)
+
+public void <init>(
+java.lang.String
+boolean
+byte[])
+
+public void <init>(
+java.lang.String
+byte[])
+
+public void <init>(
+int[]
+boolean
+byte[])
+
+private void <init>(
+int[]
+boolean
+byte[]
+byte[]
+byte[]
+org.apache.harmony.security.x509.ExtensionValue)
+
+ void <init>(
+int[]
+boolean
+byte[]
+byte[]
+byte[]
+org.apache.harmony.security.x509.ExtensionValue
+org.apache.harmony.security.x509.Extension$1)
+
+public void <init>(
+int[]
+byte[])
+
+static boolean access$000(
+int[]
+int[])
+
+static int[] access$200(
+org.apache.harmony.security.x509.Extension)
+
+static boolean access$300(
+org.apache.harmony.security.x509.Extension)
+
+static byte[] access$400(
+org.apache.harmony.security.x509.Extension)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void decodeExtensionValue()
+
+private static boolean oidEquals(
+int[]
+int[])
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+
+public org.apache.harmony.security.x509.BasicConstraints getBasicConstraintsValue()
+
+public boolean getCritical()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.apache.harmony.security.x509.ExtensionValue getDecodedExtensionValue()
+
+public byte[] getEncoded()
+
+public java.lang.String getExtnID()
+
+public byte[] getExtnValue()
+
+public org.apache.harmony.security.x509.KeyUsage getKeyUsageValue()
+
+public byte[] getRawExtnValue()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/Extensions; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.Extensions$1 extends org.apache.harmony.security.asn1.ASN1SequenceOf
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type)
+
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public java.util.Collection getValues(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.Extensions extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Type ASN1
+
+private static java.util.List SUPPORTED_CRITICAL
+
+private java.util.Set critical
+
+private byte[] encoding
+@dalvik.annotation.Signature (value =Ljava/util/List<Lorg/apache/harmony/security/x509/Extension;>; )
+private java.util.List extensions
+
+private boolean hasUnsupported
+
+private java.util.Set noncritical
+
+private java.util.HashMap oidMap
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+java.util.List)
+
+static java.util.List access$000(
+org.apache.harmony.security.x509.Extensions)
+
+private void makeOidsLists()
+
+public void addExtension(
+org.apache.harmony.security.x509.Extension)
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+
+public java.util.Set getCriticalExtensions()
+
+public byte[] getEncoded()
+
+public org.apache.harmony.security.x509.Extension getExtensionByOID(
+java.lang.String)
+
+public java.util.List getExtensions()
+
+public java.util.Set getNonCriticalExtensions()
+
+public boolean hasUnsupportedCritical()
+
+public int size()
+
+public int valueOfBasicConstrains()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public javax.security.auth.x500.X500Principal valueOfCertificateIssuerExtension()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.List valueOfExtendedKeyUsage()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.List valueOfIssuerAlternativeName()
+
+public boolean[] valueOfKeyUsage()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.util.List valueOfSubjectAlternativeName()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/GeneralName; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.GeneralName$1 extends org.apache.harmony.security.asn1.ASN1Choice
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public int getIndex(
+java.lang.Object)
+
+public java.lang.Object getObjectToEncode(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.GeneralName extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Choice ASN1
+
+public static final int DIR_NAME
+
+public static final int DNS_NAME
+
+public static final int EDIP_NAME
+
+public static final int IP_ADDR
+
+public static final int OTHER_NAME
+
+public static final int REG_ID
+
+public static final int RFC822_NAME
+
+public static final int UR_ID
+
+public static final int X400_ADDR
+
+private static org.apache.harmony.security.asn1.ASN1Type[] nameASN1
+
+private byte[] encoding
+
+private java.lang.Object name
+
+private byte[] name_encoding
+
+private int tag
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+int
+byte[])
+
+public void <init>(
+org.apache.harmony.security.x501.Name)
+
+public void <init>(
+org.apache.harmony.security.x509.EDIPartyName)
+
+public void <init>(
+org.apache.harmony.security.x509.ORAddress)
+
+public void <init>(
+org.apache.harmony.security.x509.OtherName)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void <init>(
+byte[])
+
+static java.lang.Object access$000(
+org.apache.harmony.security.x509.GeneralName)
+
+static int access$100(
+org.apache.harmony.security.x509.GeneralName)
+
+static byte[] access$202(
+org.apache.harmony.security.x509.GeneralName
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static void checkDNS(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static void checkURI(
+java.lang.String)
+
+private java.lang.String getBytesAsString(
+byte[])
+
+public static java.lang.String ipBytesToStr(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static byte[] ipStrToBytes(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static int[] oidStrToInts(
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+
+public java.util.List getAsList()
+
+public byte[] getEncoded()
+
+public byte[] getEncodedName()
+
+public java.lang.Object getName()
+
+public int getTag()
+
+public boolean isAcceptable(
+org.apache.harmony.security.x509.GeneralName)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/GeneralNames; )
+final class org.apache.harmony.security.x509.GeneralNames$1 extends org.apache.harmony.security.asn1.ASN1SequenceOf
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type)
+
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public java.util.Collection getValues(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.GeneralNames extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Type ASN1
+
+private byte[] encoding
+
+private java.util.List generalNames
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+java.util.List)
+
+private void <init>(
+java.util.List
+byte[])
+
+ void <init>(
+java.util.List
+byte[]
+org.apache.harmony.security.x509.GeneralNames$1)
+
+static java.util.List access$100(
+org.apache.harmony.security.x509.GeneralNames)
+
+public void addName(
+org.apache.harmony.security.x509.GeneralName)
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public byte[] getEncoded()
+
+public java.util.List getNames()
+
+public java.util.List getPairsList()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/GeneralSubtree; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.GeneralSubtree$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.GeneralSubtree extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private final org.apache.harmony.security.x509.GeneralName base
+
+private byte[] encoding
+
+private final int maximum
+
+private final int minimum
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.apache.harmony.security.x509.GeneralName)
+
+public void <init>(
+org.apache.harmony.security.x509.GeneralName
+int)
+
+public void <init>(
+org.apache.harmony.security.x509.GeneralName
+int
+int)
+
+static org.apache.harmony.security.x509.GeneralName access$000(
+org.apache.harmony.security.x509.GeneralSubtree)
+
+static int access$100(
+org.apache.harmony.security.x509.GeneralSubtree)
+
+static int access$200(
+org.apache.harmony.security.x509.GeneralSubtree)
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public org.apache.harmony.security.x509.GeneralName getBase()
+
+public byte[] getEncoded()
+
+public int getMaximum()
+
+public int getMinimum()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/GeneralSubtrees; )
+final class org.apache.harmony.security.x509.GeneralSubtrees$1 extends org.apache.harmony.security.asn1.ASN1SequenceOf
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type)
+
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public java.util.Collection getValues(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.GeneralSubtrees extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Type ASN1
+
+private byte[] encoding
+
+private java.util.List generalSubtrees
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+java.util.List)
+
+static java.util.List access$000(
+org.apache.harmony.security.x509.GeneralSubtrees)
+
+public org.apache.harmony.security.x509.GeneralSubtrees addSubtree(
+org.apache.harmony.security.x509.GeneralSubtree)
+
+public byte[] getEncoded()
+
+public java.util.List getSubtrees()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/InfoAccessSyntax; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.InfoAccessSyntax$1 extends org.apache.harmony.security.asn1.ASN1SequenceOf
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public java.util.Collection getValues(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.InfoAccessSyntax extends org.apache.harmony.security.x509.ExtensionValue
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Type ASN1
+
+private final java.util.List accessDescriptions
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.util.List)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void <init>(
+java.util.List
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void <init>(
+java.util.List
+byte[]
+org.apache.harmony.security.x509.InfoAccessSyntax$1)
+
+static java.util.List access$100(
+org.apache.harmony.security.x509.InfoAccessSyntax)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static org.apache.harmony.security.x509.InfoAccessSyntax decode(
+byte[])
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public java.util.List getAccessDescriptions()
+
+public byte[] getEncoded()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.InhibitAnyPolicy extends org.apache.harmony.security.x509.ExtensionValue
+
+----------------FIELDS----------------
+
+private int skipCerts
+----------------METHODS----------------
+
+public void <init>(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public byte[] getEncoded()
+
+public int getSkipCerts()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.InvalidityDate extends org.apache.harmony.security.x509.ExtensionValue
+
+----------------FIELDS----------------
+
+public static org.apache.harmony.security.asn1.ASN1Type ASN1
+
+private final java.util.Date date
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.util.Date)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public java.util.Date getDate()
+
+public byte[] getEncoded()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/IssuingDistributionPoint; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.IssuingDistributionPoint$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.IssuingDistributionPoint extends org.apache.harmony.security.x509.ExtensionValue
+
+----------------FIELDS----------------
+
+public static org.apache.harmony.security.asn1.ASN1Type ASN1
+
+private org.apache.harmony.security.x509.DistributionPointName distributionPoint
+
+private boolean indirectCRL
+
+private boolean onlyContainsAttributeCerts
+
+private boolean onlyContainsCACerts
+
+private boolean onlyContainsUserCerts
+
+private org.apache.harmony.security.x509.ReasonFlags onlySomeReasons
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.apache.harmony.security.x509.DistributionPointName
+org.apache.harmony.security.x509.ReasonFlags)
+
+static org.apache.harmony.security.x509.DistributionPointName access$000(
+org.apache.harmony.security.x509.IssuingDistributionPoint)
+
+static boolean access$100(
+org.apache.harmony.security.x509.IssuingDistributionPoint)
+
+static boolean access$200(
+org.apache.harmony.security.x509.IssuingDistributionPoint)
+
+static org.apache.harmony.security.x509.ReasonFlags access$300(
+org.apache.harmony.security.x509.IssuingDistributionPoint)
+
+static boolean access$400(
+org.apache.harmony.security.x509.IssuingDistributionPoint)
+
+static boolean access$500(
+org.apache.harmony.security.x509.IssuingDistributionPoint)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static org.apache.harmony.security.x509.IssuingDistributionPoint decode(
+byte[])
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public org.apache.harmony.security.x509.DistributionPointName getDistributionPoint()
+
+public byte[] getEncoded()
+
+public boolean getIndirectCRL()
+
+public boolean getOnlyContainsAttributeCerts()
+
+public boolean getOnlyContainsCACerts()
+
+public boolean getOnlyContainsUserCerts()
+
+public org.apache.harmony.security.x509.ReasonFlags getOnlySomeReasons()
+
+public void setIndirectCRL(
+boolean)
+
+public void setOnlyContainsAttributeCerts(
+boolean)
+
+public void setOnlyContainsCACerts(
+boolean)
+
+public void setOnlyContainsUserCerts(
+boolean)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.KeyUsage extends org.apache.harmony.security.x509.ExtensionValue
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.asn1.ASN1Type ASN1
+
+private static final java.lang.String[] USAGES
+
+private final boolean[] keyUsage
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+
+public void <init>(
+boolean[])
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public byte[] getEncoded()
+
+public boolean[] getKeyUsage()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/NameConstraints; )
+final class org.apache.harmony.security.x509.NameConstraints$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.NameConstraints extends org.apache.harmony.security.x509.ExtensionValue
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private byte[] encoding
+
+private final org.apache.harmony.security.x509.GeneralSubtrees excludedSubtrees
+
+private java.util.ArrayList[] excluded_names
+
+private final org.apache.harmony.security.x509.GeneralSubtrees permittedSubtrees
+
+private java.util.ArrayList[] permitted_names
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+org.apache.harmony.security.x509.GeneralSubtrees
+org.apache.harmony.security.x509.GeneralSubtrees)
+
+private void <init>(
+org.apache.harmony.security.x509.GeneralSubtrees
+org.apache.harmony.security.x509.GeneralSubtrees
+byte[])
+
+ void <init>(
+org.apache.harmony.security.x509.GeneralSubtrees
+org.apache.harmony.security.x509.GeneralSubtrees
+byte[]
+org.apache.harmony.security.x509.NameConstraints$1)
+
+static org.apache.harmony.security.x509.GeneralSubtrees access$100(
+org.apache.harmony.security.x509.NameConstraints)
+
+static org.apache.harmony.security.x509.GeneralSubtrees access$200(
+org.apache.harmony.security.x509.NameConstraints)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static org.apache.harmony.security.x509.NameConstraints decode(
+byte[])
+
+private byte[] getExtensionValue(
+java.security.cert.X509Certificate
+java.lang.String)
+
+private void prepareNames()
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public byte[] getEncoded()
+
+public boolean isAcceptable(
+java.security.cert.X509Certificate)
+
+public boolean isAcceptable(
+java.util.List)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/ORAddress; )
+final class org.apache.harmony.security.x509.ORAddress$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+java.lang.Object[])
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/ORAddress; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.ORAddress$2 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+
+private final java.lang.Object foo
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.ORAddress extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private byte[] encoding
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public byte[] getEncoded()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/OtherName; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.OtherName$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.OtherName extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private byte[] encoding
+
+private java.lang.String typeID
+
+private byte[] value
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+byte[])
+
+private void <init>(
+java.lang.String
+byte[]
+byte[])
+
+ void <init>(
+java.lang.String
+byte[]
+byte[]
+org.apache.harmony.security.x509.OtherName$1)
+
+static java.lang.String access$100(
+org.apache.harmony.security.x509.OtherName)
+
+static byte[] access$200(
+org.apache.harmony.security.x509.OtherName)
+
+public byte[] getEncoded()
+
+public java.lang.String getTypeID()
+
+public byte[] getValue()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/PolicyConstraints; )
+final class org.apache.harmony.security.x509.PolicyConstraints$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.PolicyConstraints extends org.apache.harmony.security.x509.ExtensionValue
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private byte[] encoding
+
+private final java.math.BigInteger inhibitPolicyMapping
+
+private final java.math.BigInteger requireExplicitPolicy
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+int
+int)
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger)
+
+private void <init>(
+java.math.BigInteger
+java.math.BigInteger
+byte[])
+
+ void <init>(
+java.math.BigInteger
+java.math.BigInteger
+byte[]
+org.apache.harmony.security.x509.PolicyConstraints$1)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+
+static java.math.BigInteger access$100(
+org.apache.harmony.security.x509.PolicyConstraints)
+
+static java.math.BigInteger access$200(
+org.apache.harmony.security.x509.PolicyConstraints)
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public byte[] getEncoded()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/PolicyInformation; )
+final class org.apache.harmony.security.x509.PolicyInformation$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.PolicyInformation extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private byte[] encoding
+
+private java.lang.String policyIdentifier
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String)
+
+static java.lang.String access$000(
+org.apache.harmony.security.x509.PolicyInformation)
+
+public void dumpValue(
+java.lang.StringBuffer)
+
+public byte[] getEncoded()
+
+public java.lang.String getPolicyIdentifier()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/PolicyQualifierInfo; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.PolicyQualifierInfo$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.PolicyQualifierInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/PrivateKeyUsagePeriod; )
+final class org.apache.harmony.security.x509.PrivateKeyUsagePeriod$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.PrivateKeyUsagePeriod extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private byte[] encoding
+
+private final java.util.Date notAfterDate
+
+private final java.util.Date notBeforeDate
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.util.Date
+java.util.Date)
+
+private void <init>(
+java.util.Date
+java.util.Date
+byte[])
+
+ void <init>(
+java.util.Date
+java.util.Date
+byte[]
+org.apache.harmony.security.x509.PrivateKeyUsagePeriod$1)
+
+static java.util.Date access$100(
+org.apache.harmony.security.x509.PrivateKeyUsagePeriod)
+
+static java.util.Date access$200(
+org.apache.harmony.security.x509.PrivateKeyUsagePeriod)
+
+public byte[] getEncoded()
+
+public java.util.Date getNotAfter()
+
+public java.util.Date getNotBefore()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.ReasonCode extends org.apache.harmony.security.x509.ExtensionValue
+
+----------------FIELDS----------------
+
+public static final byte AA_COMPROMISE
+
+public static final byte AFFILIATION_CHANGED
+
+public static org.apache.harmony.security.asn1.ASN1Type ASN1
+
+public static final byte CA_COMPROMISE
+
+public static final byte CERTIFICATE_HOLD
+
+public static final byte CESSATION_OF_OPERATION
+
+public static final byte KEY_COMPROMISE
+
+public static final byte PRIVILEGE_WITHDRAWN
+
+public static final byte REMOVE_FROM_CRL
+
+public static final byte SUPERSEDED
+
+public static final byte UNSPECIFIED
+
+private final byte code
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+byte)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public int getCode()
+
+public byte[] getEncoded()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/ReasonFlags; )
+final class org.apache.harmony.security.x509.ReasonFlags$1 extends org.apache.harmony.security.asn1.ASN1BitString$ASN1NamedBitList
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+public void setEncodingContent(
+org.apache.harmony.security.asn1.BerOutputStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.ReasonFlags extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static org.apache.harmony.security.asn1.ASN1BitString ASN1
+
+public static final java.lang.String[] REASONS
+
+private boolean[] flags
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+boolean[])
+
+static boolean[] access$000(
+org.apache.harmony.security.x509.ReasonFlags)
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.SubjectKeyIdentifier extends org.apache.harmony.security.x509.ExtensionValue
+
+----------------FIELDS----------------
+
+private final byte[] keyIdentifier
+----------------METHODS----------------
+
+public void <init>(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static org.apache.harmony.security.x509.SubjectKeyIdentifier decode(
+byte[])
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public byte[] getEncoded()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/SubjectPublicKeyInfo; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.SubjectPublicKeyInfo$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.SubjectPublicKeyInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private org.apache.harmony.security.x509.AlgorithmIdentifier algorithmID
+
+private byte[] encoding
+
+private java.security.PublicKey publicKey
+
+private byte[] subjectPublicKey
+
+private int unusedBits
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[])
+
+public void <init>(
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[]
+int)
+
+private void <init>(
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[]
+int
+byte[])
+
+ void <init>(
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[]
+int
+byte[]
+org.apache.harmony.security.x509.SubjectPublicKeyInfo$1)
+
+static org.apache.harmony.security.x509.AlgorithmIdentifier access$100(
+org.apache.harmony.security.x509.SubjectPublicKeyInfo)
+
+static byte[] access$200(
+org.apache.harmony.security.x509.SubjectPublicKeyInfo)
+
+static int access$300(
+org.apache.harmony.security.x509.SubjectPublicKeyInfo)
+
+public org.apache.harmony.security.x509.AlgorithmIdentifier getAlgorithmIdentifier()
+
+public byte[] getEncoded()
+
+public java.security.PublicKey getPublicKey()
+
+public byte[] getSubjectPublicKey()
+
+public int getUnusedBits()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/TBSCertList; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.TBSCertList$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/TBSCertList$RevokedCertificate; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.TBSCertList$RevokedCertificate$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/TBSCertList; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =RevokedCertificate )
+public class org.apache.harmony.security.x509.TBSCertList$RevokedCertificate extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private final org.apache.harmony.security.x509.Extensions crlEntryExtensions
+
+private byte[] encoding
+
+private javax.security.auth.x500.X500Principal issuer
+
+private boolean issuerRetrieved
+
+private final java.util.Date revocationDate
+
+private final java.math.BigInteger userCertificate
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.math.BigInteger
+java.util.Date
+org.apache.harmony.security.x509.Extensions)
+
+static java.math.BigInteger access$000(
+org.apache.harmony.security.x509.TBSCertList$RevokedCertificate)
+
+static java.util.Date access$100(
+org.apache.harmony.security.x509.TBSCertList$RevokedCertificate)
+
+static org.apache.harmony.security.x509.Extensions access$200(
+org.apache.harmony.security.x509.TBSCertList$RevokedCertificate)
+
+public void dumpValue(
+java.lang.StringBuffer
+java.lang.String)
+
+public boolean equals(
+java.lang.Object)
+
+public org.apache.harmony.security.x509.Extensions getCrlEntryExtensions()
+
+public byte[] getEncoded()
+
+public javax.security.auth.x500.X500Principal getIssuer()
+
+public java.util.Date getRevocationDate()
+
+public java.math.BigInteger getUserCertificate()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/security/x509/TBSCertList$RevokedCertificate; )
+public class org.apache.harmony.security.x509.TBSCertList extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private final org.apache.harmony.security.x509.Extensions crlExtensions
+
+private byte[] encoding
+
+private final org.apache.harmony.security.x501.Name issuer
+
+private final java.util.Date nextUpdate
+
+private final java.util.List revokedCertificates
+
+private final org.apache.harmony.security.x509.AlgorithmIdentifier signature
+
+private final java.util.Date thisUpdate
+
+private final int version
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+org.apache.harmony.security.x509.AlgorithmIdentifier
+org.apache.harmony.security.x501.Name
+java.util.Date
+java.util.Date
+java.util.List
+org.apache.harmony.security.x509.Extensions)
+
+private void <init>(
+int
+org.apache.harmony.security.x509.AlgorithmIdentifier
+org.apache.harmony.security.x501.Name
+java.util.Date
+java.util.Date
+java.util.List
+org.apache.harmony.security.x509.Extensions
+byte[])
+
+ void <init>(
+int
+org.apache.harmony.security.x509.AlgorithmIdentifier
+org.apache.harmony.security.x501.Name
+java.util.Date
+java.util.Date
+java.util.List
+org.apache.harmony.security.x509.Extensions
+byte[]
+org.apache.harmony.security.x509.TBSCertList$1)
+
+public void <init>(
+org.apache.harmony.security.x509.AlgorithmIdentifier
+org.apache.harmony.security.x501.Name
+java.util.Date)
+
+static org.apache.harmony.security.x509.Extensions access$1000(
+org.apache.harmony.security.x509.TBSCertList)
+
+static int access$400(
+org.apache.harmony.security.x509.TBSCertList)
+
+static org.apache.harmony.security.x509.AlgorithmIdentifier access$500(
+org.apache.harmony.security.x509.TBSCertList)
+
+static org.apache.harmony.security.x501.Name access$600(
+org.apache.harmony.security.x509.TBSCertList)
+
+static java.util.Date access$700(
+org.apache.harmony.security.x509.TBSCertList)
+
+static java.util.Date access$800(
+org.apache.harmony.security.x509.TBSCertList)
+
+static java.util.List access$900(
+org.apache.harmony.security.x509.TBSCertList)
+
+public void dumpValue(
+java.lang.StringBuffer)
+
+public boolean equals(
+java.lang.Object)
+
+public org.apache.harmony.security.x509.Extensions getCrlExtensions()
+
+public byte[] getEncoded()
+
+public org.apache.harmony.security.x501.Name getIssuer()
+
+public java.util.Date getNextUpdate()
+
+public java.util.List getRevokedCertificates()
+
+public org.apache.harmony.security.x509.AlgorithmIdentifier getSignature()
+
+public java.util.Date getThisUpdate()
+
+public int getVersion()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/TBSCertificate; )
+final class org.apache.harmony.security.x509.TBSCertificate$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.TBSCertificate extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+ byte[] encoding
+
+private final org.apache.harmony.security.x509.Extensions extensions
+
+private final org.apache.harmony.security.x501.Name issuer
+
+private final boolean[] issuerUniqueID
+
+private final java.math.BigInteger serialNumber
+
+private final org.apache.harmony.security.x509.AlgorithmIdentifier signature
+
+private final org.apache.harmony.security.x501.Name subject
+
+private final org.apache.harmony.security.x509.SubjectPublicKeyInfo subjectPublicKeyInfo
+
+private final boolean[] subjectUniqueID
+
+private final org.apache.harmony.security.x509.Validity validity
+
+private final int version
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+java.math.BigInteger
+org.apache.harmony.security.x509.AlgorithmIdentifier
+org.apache.harmony.security.x501.Name
+org.apache.harmony.security.x509.Validity
+org.apache.harmony.security.x501.Name
+org.apache.harmony.security.x509.SubjectPublicKeyInfo)
+
+public void <init>(
+int
+java.math.BigInteger
+org.apache.harmony.security.x509.AlgorithmIdentifier
+org.apache.harmony.security.x501.Name
+org.apache.harmony.security.x509.Validity
+org.apache.harmony.security.x501.Name
+org.apache.harmony.security.x509.SubjectPublicKeyInfo
+boolean[]
+boolean[]
+org.apache.harmony.security.x509.Extensions)
+
+private void <init>(
+int
+java.math.BigInteger
+org.apache.harmony.security.x509.AlgorithmIdentifier
+org.apache.harmony.security.x501.Name
+org.apache.harmony.security.x509.Validity
+org.apache.harmony.security.x501.Name
+org.apache.harmony.security.x509.SubjectPublicKeyInfo
+boolean[]
+boolean[]
+org.apache.harmony.security.x509.Extensions
+byte[])
+
+ void <init>(
+int
+java.math.BigInteger
+org.apache.harmony.security.x509.AlgorithmIdentifier
+org.apache.harmony.security.x501.Name
+org.apache.harmony.security.x509.Validity
+org.apache.harmony.security.x501.Name
+org.apache.harmony.security.x509.SubjectPublicKeyInfo
+boolean[]
+boolean[]
+org.apache.harmony.security.x509.Extensions
+byte[]
+org.apache.harmony.security.x509.TBSCertificate$1)
+
+static int access$100(
+org.apache.harmony.security.x509.TBSCertificate)
+
+static org.apache.harmony.security.x509.Extensions access$1000(
+org.apache.harmony.security.x509.TBSCertificate)
+
+static java.math.BigInteger access$200(
+org.apache.harmony.security.x509.TBSCertificate)
+
+static org.apache.harmony.security.x509.AlgorithmIdentifier access$300(
+org.apache.harmony.security.x509.TBSCertificate)
+
+static org.apache.harmony.security.x501.Name access$400(
+org.apache.harmony.security.x509.TBSCertificate)
+
+static org.apache.harmony.security.x509.Validity access$500(
+org.apache.harmony.security.x509.TBSCertificate)
+
+static org.apache.harmony.security.x501.Name access$600(
+org.apache.harmony.security.x509.TBSCertificate)
+
+static org.apache.harmony.security.x509.SubjectPublicKeyInfo access$700(
+org.apache.harmony.security.x509.TBSCertificate)
+
+static boolean[] access$800(
+org.apache.harmony.security.x509.TBSCertificate)
+
+static boolean[] access$900(
+org.apache.harmony.security.x509.TBSCertificate)
+
+public void dumpValue(
+java.lang.StringBuffer)
+
+public byte[] getEncoded()
+
+public org.apache.harmony.security.x509.Extensions getExtensions()
+
+public org.apache.harmony.security.x501.Name getIssuer()
+
+public boolean[] getIssuerUniqueID()
+
+public java.math.BigInteger getSerialNumber()
+
+public org.apache.harmony.security.x509.AlgorithmIdentifier getSignature()
+
+public org.apache.harmony.security.x501.Name getSubject()
+
+public org.apache.harmony.security.x509.SubjectPublicKeyInfo getSubjectPublicKeyInfo()
+
+public boolean[] getSubjectUniqueID()
+
+public org.apache.harmony.security.x509.Validity getValidity()
+
+public int getVersion()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/Time; )
+final class org.apache.harmony.security.x509.Time$1 extends org.apache.harmony.security.asn1.ASN1Choice
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+public int getIndex(
+java.lang.Object)
+
+public java.lang.Object getObjectToEncode(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.Time extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Choice ASN1
+
+private static final long JAN_01_2050
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.Utils extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static boolean isPrintableString(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/Validity; )
+final class org.apache.harmony.security.x509.Validity$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.Validity extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private byte[] encoding
+
+private final java.util.Date notAfter
+
+private final java.util.Date notBefore
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.util.Date
+java.util.Date)
+
+static java.util.Date access$000(
+org.apache.harmony.security.x509.Validity)
+
+static java.util.Date access$100(
+org.apache.harmony.security.x509.Validity)
+
+public byte[] getEncoded()
+
+public java.util.Date getNotAfter()
+
+public java.util.Date getNotBefore()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.X509PublicKey extends java.lang.Object implements java.security.PublicKey
+
+----------------FIELDS----------------
+
+private final java.lang.String algorithm
+
+private final byte[] encoded
+
+private final byte[] keyBytes
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+byte[]
+byte[])
+
+public java.lang.String getAlgorithm()
+
+public byte[] getEncoded()
+
+public java.lang.String getFormat()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/tsp/MessageImprint; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.tsp.MessageImprint$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.tsp.MessageImprint extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private final org.apache.harmony.security.x509.AlgorithmIdentifier algId
+
+private final byte[] hashedMessage
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.apache.harmony.security.x509.AlgorithmIdentifier
+byte[])
+
+static org.apache.harmony.security.x509.AlgorithmIdentifier access$000(
+org.apache.harmony.security.x509.tsp.MessageImprint)
+
+static byte[] access$100(
+org.apache.harmony.security.x509.tsp.MessageImprint)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lorg/apache/harmony/security/x509/tsp/PKIFailureInfo;>; )
+public final class org.apache.harmony.security.x509.tsp.PKIFailureInfo extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.x509.tsp.PKIFailureInfo[] $VALUES
+
+public static final org.apache.harmony.security.x509.tsp.PKIFailureInfo ADD_INFO_NOT_AVAILABLE
+
+public static final org.apache.harmony.security.x509.tsp.PKIFailureInfo BAD_ALG
+
+public static final org.apache.harmony.security.x509.tsp.PKIFailureInfo BAD_DATA_FORMAT
+
+public static final org.apache.harmony.security.x509.tsp.PKIFailureInfo BAD_REQUEST
+
+public static final org.apache.harmony.security.x509.tsp.PKIFailureInfo SYSTEM_FAILURE
+
+public static final org.apache.harmony.security.x509.tsp.PKIFailureInfo TIME_NOT_AVAILABLE
+
+public static final org.apache.harmony.security.x509.tsp.PKIFailureInfo UNACCEPTED_EXTENSION
+
+public static final org.apache.harmony.security.x509.tsp.PKIFailureInfo UNACCEPTED_POLICY
+
+private static int maxValue
+
+private final int value
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static org.apache.harmony.security.x509.tsp.PKIFailureInfo getInstance(
+int)
+
+public static int getMaxValue()
+
+public static org.apache.harmony.security.x509.tsp.PKIFailureInfo valueOf(
+java.lang.String)
+
+public static org.apache.harmony.security.x509.tsp.PKIFailureInfo[] values()
+
+public int getValue()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Enum<Lorg/apache/harmony/security/x509/tsp/PKIStatus;>; )
+public final class org.apache.harmony.security.x509.tsp.PKIStatus extends java.lang.Enum
+
+----------------FIELDS----------------
+
+private static final org.apache.harmony.security.x509.tsp.PKIStatus[] $VALUES
+
+public static final org.apache.harmony.security.x509.tsp.PKIStatus GRANTED
+
+public static final org.apache.harmony.security.x509.tsp.PKIStatus GRANTED_WITH_MODS
+
+public static final org.apache.harmony.security.x509.tsp.PKIStatus REJECTION
+
+public static final org.apache.harmony.security.x509.tsp.PKIStatus REVOCATION_NOTIFICATION
+
+public static final org.apache.harmony.security.x509.tsp.PKIStatus REVOCATION_WARNING
+
+public static final org.apache.harmony.security.x509.tsp.PKIStatus WAITING
+
+private final int status
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Signature (value =(I)V )
+private void <init>(
+java.lang.String
+int
+int)
+
+public static org.apache.harmony.security.x509.tsp.PKIStatus getInstance(
+int)
+
+public static org.apache.harmony.security.x509.tsp.PKIStatus valueOf(
+java.lang.String)
+
+public static org.apache.harmony.security.x509.tsp.PKIStatus[] values()
+
+public int getStatus()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/tsp/PKIStatusInfo; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.tsp.PKIStatusInfo$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.tsp.PKIStatusInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private final org.apache.harmony.security.x509.tsp.PKIFailureInfo failInfo
+
+private final org.apache.harmony.security.x509.tsp.PKIStatus status
+
+private final java.util.List statusString
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.apache.harmony.security.x509.tsp.PKIStatus
+java.util.List
+org.apache.harmony.security.x509.tsp.PKIFailureInfo)
+
+static org.apache.harmony.security.x509.tsp.PKIStatus access$000(
+org.apache.harmony.security.x509.tsp.PKIStatusInfo)
+
+static java.util.List access$100(
+org.apache.harmony.security.x509.tsp.PKIStatusInfo)
+
+static org.apache.harmony.security.x509.tsp.PKIFailureInfo access$200(
+org.apache.harmony.security.x509.tsp.PKIStatusInfo)
+
+public org.apache.harmony.security.x509.tsp.PKIFailureInfo getFailInfo()
+
+public org.apache.harmony.security.x509.tsp.PKIStatus getStatus()
+
+public java.util.List getStatusString()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/tsp/TSTInfo; )
+final class org.apache.harmony.security.x509.tsp.TSTInfo$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/tsp/TSTInfo; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.tsp.TSTInfo$2 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.tsp.TSTInfo extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ACCURACY
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private final int[] accuracy
+
+private final org.apache.harmony.security.x509.Extensions extensions
+
+private final java.util.Date genTime
+
+private final org.apache.harmony.security.x509.tsp.MessageImprint messageImprint
+
+private final java.math.BigInteger nonce
+
+private final java.lang.Boolean ordering
+
+private final java.lang.String policy
+
+private final java.math.BigInteger serialNumber
+
+private final org.apache.harmony.security.x509.GeneralName tsa
+
+private final int version
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+java.lang.String
+org.apache.harmony.security.x509.tsp.MessageImprint
+java.math.BigInteger
+java.util.Date
+int[]
+java.lang.Boolean
+java.math.BigInteger
+org.apache.harmony.security.x509.GeneralName
+org.apache.harmony.security.x509.Extensions)
+
+static int access$000(
+org.apache.harmony.security.x509.tsp.TSTInfo)
+
+static java.lang.String access$100(
+org.apache.harmony.security.x509.tsp.TSTInfo)
+
+static org.apache.harmony.security.x509.tsp.MessageImprint access$200(
+org.apache.harmony.security.x509.tsp.TSTInfo)
+
+static java.math.BigInteger access$300(
+org.apache.harmony.security.x509.tsp.TSTInfo)
+
+static java.util.Date access$400(
+org.apache.harmony.security.x509.tsp.TSTInfo)
+
+static int[] access$500(
+org.apache.harmony.security.x509.tsp.TSTInfo)
+
+static java.lang.Boolean access$600(
+org.apache.harmony.security.x509.tsp.TSTInfo)
+
+static java.math.BigInteger access$700(
+org.apache.harmony.security.x509.tsp.TSTInfo)
+
+static org.apache.harmony.security.x509.GeneralName access$800(
+org.apache.harmony.security.x509.tsp.TSTInfo)
+
+static org.apache.harmony.security.x509.Extensions access$900(
+org.apache.harmony.security.x509.tsp.TSTInfo)
+
+public int[] getAccuracy()
+
+public org.apache.harmony.security.x509.Extensions getExtensions()
+
+public java.util.Date getGenTime()
+
+public org.apache.harmony.security.x509.tsp.MessageImprint getMessageImprint()
+
+public java.math.BigInteger getNonce()
+
+public java.lang.Boolean getOrdering()
+
+public java.lang.String getPolicy()
+
+public java.math.BigInteger getSerialNumber()
+
+public org.apache.harmony.security.x509.GeneralName getTsa()
+
+public int getVersion()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/tsp/TimeStampReq; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.tsp.TimeStampReq$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.tsp.TimeStampReq extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private final java.lang.Boolean certReq
+
+private byte[] encoding
+
+private final org.apache.harmony.security.x509.Extensions extensions
+
+private final org.apache.harmony.security.x509.tsp.MessageImprint messageImprint
+
+private final java.math.BigInteger nonce
+
+private final java.lang.String reqPolicy
+
+private final int version
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+int
+org.apache.harmony.security.x509.tsp.MessageImprint
+java.lang.String
+java.math.BigInteger
+java.lang.Boolean
+org.apache.harmony.security.x509.Extensions)
+
+private void <init>(
+int
+org.apache.harmony.security.x509.tsp.MessageImprint
+java.lang.String
+java.math.BigInteger
+java.lang.Boolean
+org.apache.harmony.security.x509.Extensions
+byte[])
+
+ void <init>(
+int
+org.apache.harmony.security.x509.tsp.MessageImprint
+java.lang.String
+java.math.BigInteger
+java.lang.Boolean
+org.apache.harmony.security.x509.Extensions
+byte[]
+org.apache.harmony.security.x509.tsp.TimeStampReq$1)
+
+static int access$100(
+org.apache.harmony.security.x509.tsp.TimeStampReq)
+
+static org.apache.harmony.security.x509.tsp.MessageImprint access$200(
+org.apache.harmony.security.x509.tsp.TimeStampReq)
+
+static java.lang.String access$300(
+org.apache.harmony.security.x509.tsp.TimeStampReq)
+
+static java.math.BigInteger access$400(
+org.apache.harmony.security.x509.tsp.TimeStampReq)
+
+static java.lang.Boolean access$500(
+org.apache.harmony.security.x509.tsp.TimeStampReq)
+
+static org.apache.harmony.security.x509.Extensions access$600(
+org.apache.harmony.security.x509.tsp.TimeStampReq)
+
+public java.lang.Boolean getCertReq()
+
+public byte[] getEncoded()
+
+public org.apache.harmony.security.x509.Extensions getExtensions()
+
+public org.apache.harmony.security.x509.tsp.MessageImprint getMessageImprint()
+
+public java.math.BigInteger getNonce()
+
+public java.lang.String getReqPolicy()
+
+public int getVersion()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/security/x509/tsp/TimeStampResp; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+final class org.apache.harmony.security.x509.tsp.TimeStampResp$1 extends org.apache.harmony.security.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.security.asn1.ASN1Type[])
+
+protected java.lang.Object getDecodedObject(
+org.apache.harmony.security.asn1.BerInputStream)
+
+protected void getValues(
+java.lang.Object
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.security.x509.tsp.TimeStampResp extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.security.asn1.ASN1Sequence ASN1
+
+private final org.apache.harmony.security.x509.tsp.PKIStatusInfo status
+
+private final org.apache.harmony.security.pkcs7.ContentInfo timeStampToken
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.apache.harmony.security.x509.tsp.PKIStatusInfo
+org.apache.harmony.security.pkcs7.ContentInfo)
+
+static org.apache.harmony.security.x509.tsp.PKIStatusInfo access$000(
+org.apache.harmony.security.x509.tsp.TimeStampResp)
+
+static org.apache.harmony.security.pkcs7.ContentInfo access$100(
+org.apache.harmony.security.x509.tsp.TimeStampResp)
+
+public org.apache.harmony.security.x509.tsp.PKIStatusInfo getStatus()
+
+public org.apache.harmony.security.pkcs7.ContentInfo getTimeStampToken()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.sql.internal.nls.Messages extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String sResource
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String getString(
+java.lang.String)
+
+public static java.lang.String getString(
+java.lang.String
+char)
+
+public static java.lang.String getString(
+java.lang.String
+int)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.text.BidiRun extends java.lang.Object
+
+----------------FIELDS----------------
+
+private final int level
+
+private final int limit
+
+private final int start
+----------------METHODS----------------
+
+public void <init>(
+int
+int
+int)
+
+public boolean equals(
+java.lang.Object)
+
+public int getLevel()
+
+public int getLimit()
+
+public int getStart()
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.text.BidiWrapper extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int UBIDI_DEFAULT_LTR
+
+public static final int UBIDI_DEFAULT_RTL
+
+public static final int UBIDI_DO_MIRRORING
+
+public static final int UBIDI_INSERT_LRM_FOR_NUMERIC
+
+public static final int UBIDI_KEEP_BASE_COMBINING
+
+public static final int UBIDI_LEVEL_OVERRIDE
+
+public static final int UBIDI_MAX_EXPLICIT_LEVEL
+
+public static final int UBIDI_OUTPUT_REVERSE
+
+public static final int UBIDI_REMOVE_BIDI_CONTROLS
+
+public static final int UBiDiDirection_UBIDI_LTR
+
+public static final int UBiDiDirection_UBIDI_MIXED
+
+public static final int UBiDiDirection_UBIDI_RTL
+----------------METHODS----------------
+
+public void <init>()
+
+public static native void ubidi_close(
+long)
+
+public static native int ubidi_countRuns(
+long)
+
+public static native int ubidi_getDirection(
+long)
+
+public static native int ubidi_getLength(
+long)
+
+public static native byte[] ubidi_getLevels(
+long)
+
+public static native byte ubidi_getParaLevel(
+long)
+
+public static native org.apache.harmony.text.BidiRun[] ubidi_getRuns(
+long)
+
+public static native long ubidi_open()
+
+public static native int[] ubidi_reorderVisual(
+byte[]
+int)
+
+public static native long ubidi_setLine(
+long
+int
+int)
+
+public static native void ubidi_setPara(
+long
+char[]
+int
+byte
+byte[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.text.internal.nls.Messages extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String sResource
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String getString(
+java.lang.String)
+
+public static java.lang.String getString(
+java.lang.String
+char)
+
+public static java.lang.String getString(
+java.lang.String
+int)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public abstract interface class org.xml.sax.Attributes extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int getIndex(
+java.lang.String)
+
+public abstract int getIndex(
+java.lang.String
+java.lang.String)
+
+public abstract int getLength()
+
+public abstract java.lang.String getLocalName(
+int)
+
+public abstract java.lang.String getQName(
+int)
+
+public abstract java.lang.String getType(
+int)
+
+public abstract java.lang.String getType(
+java.lang.String)
+
+public abstract java.lang.String getType(
+java.lang.String
+java.lang.String)
+
+public abstract java.lang.String getURI(
+int)
+
+public abstract java.lang.String getValue(
+int)
+
+public abstract java.lang.String getValue(
+java.lang.String)
+
+public abstract java.lang.String getValue(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+abstract class org.apache.harmony.xml.ExpatAttributes extends java.lang.Object implements org.xml.sax.Attributes
+
+----------------FIELDS----------------
+
+private static final java.lang.String CDATA
+----------------METHODS----------------
+
+ void <init>()
+
+static native void freeAttributes(
+int)
+
+static native int getIndex(
+int
+java.lang.String)
+
+static native int getIndex(
+int
+java.lang.String
+java.lang.String)
+
+static native java.lang.String getLocalName(
+int
+int
+int)
+
+static native java.lang.String getQName(
+int
+int
+int)
+
+static native java.lang.String getURI(
+int
+int
+int)
+
+static native java.lang.String getValue(
+int
+int)
+
+static native java.lang.String getValue(
+int
+java.lang.String)
+
+static native java.lang.String getValue(
+int
+java.lang.String
+java.lang.String)
+
+public int getIndex(
+java.lang.String)
+
+public int getIndex(
+java.lang.String
+java.lang.String)
+
+public abstract int getLength()
+
+public java.lang.String getLocalName(
+int)
+
+abstract int getParserPointer()
+
+public abstract int getPointer()
+
+public java.lang.String getQName(
+int)
+
+public java.lang.String getType(
+int)
+
+public java.lang.String getType(
+java.lang.String)
+
+public java.lang.String getType(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getURI(
+int)
+
+public java.lang.String getValue(
+int)
+
+public java.lang.String getValue(
+java.lang.String)
+
+public java.lang.String getValue(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+ class org.apache.harmony.xml.ExpatException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatParser; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class org.apache.harmony.xml.ExpatParser$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =ClonedAttributes )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatParser; )
+ class org.apache.harmony.xml.ExpatParser$ClonedAttributes extends org.apache.harmony.xml.ExpatAttributes
+
+----------------FIELDS----------------
+
+private static final org.xml.sax.Attributes EMPTY
+
+private final int length
+
+private final int parserPointer
+
+private int pointer
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+int
+int
+int)
+
+ void <init>(
+int
+int
+int
+org.apache.harmony.xml.ExpatParser$1)
+
+static org.xml.sax.Attributes access$400()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public int getLength()
+
+public int getParserPointer()
+
+public int getPointer()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatParser; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =CurrentAttributes )
+ class org.apache.harmony.xml.ExpatParser$CurrentAttributes extends org.apache.harmony.xml.ExpatAttributes
+
+----------------FIELDS----------------
+
+final org.apache.harmony.xml.ExpatParser this$0
+----------------METHODS----------------
+
+private void <init>(
+org.apache.harmony.xml.ExpatParser)
+
+ void <init>(
+org.apache.harmony.xml.ExpatParser
+org.apache.harmony.xml.ExpatParser$1)
+
+public int getLength()
+
+public int getParserPointer()
+
+public int getPointer()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/xml/ExpatParser$1;Lorg/apache/harmony/xml/ExpatParser$EntityParser;Lorg/apache/harmony/xml/ExpatParser$ParseException;Lorg/apache/harmony/xml/ExpatParser$CurrentAttributes;Lorg/apache/harmony/xml/ExpatParser$ExpatLocator;Lorg/apache/harmony/xml/ExpatParser$ClonedAttributes; )
+ class org.apache.harmony.xml.ExpatParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int BUFFER_SIZE
+
+static final java.lang.String CHARACTER_ENCODING
+
+private static final java.lang.String DEFAULT_ENCODING
+
+private static final java.lang.String OUTSIDE_START_ELEMENT
+
+private static final int TIMEOUT
+
+private int attributeCount
+
+private int attributePointer
+
+private final org.apache.harmony.xml.ExpatAttributes attributes
+
+private final java.lang.String encoding
+
+private boolean inStartElement
+
+private final org.xml.sax.Locator locator
+
+private int pointer
+
+private final java.lang.String publicId
+
+private final java.lang.String systemId
+
+private final org.apache.harmony.xml.ExpatReader xmlReader
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+java.lang.String
+org.apache.harmony.xml.ExpatReader
+int
+java.lang.String
+java.lang.String)
+
+ void <init>(
+java.lang.String
+org.apache.harmony.xml.ExpatReader
+int
+java.lang.String
+java.lang.String
+org.apache.harmony.xml.ExpatParser$1)
+
+ void <init>(
+java.lang.String
+org.apache.harmony.xml.ExpatReader
+boolean
+java.lang.String
+java.lang.String)
+
+static int access$1000(
+org.apache.harmony.xml.ExpatParser)
+
+static boolean access$1100(
+org.apache.harmony.xml.ExpatParser)
+
+static int access$1200(
+org.apache.harmony.xml.ExpatParser)
+
+static int access$1300(
+org.apache.harmony.xml.ExpatParser)
+
+static java.lang.String access$600(
+org.apache.harmony.xml.ExpatParser)
+
+static java.lang.String access$700(
+org.apache.harmony.xml.ExpatParser)
+
+static int access$800(
+org.apache.harmony.xml.ExpatParser)
+
+static int access$900(
+org.apache.harmony.xml.ExpatParser)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Lorg/apache/harmony/xml/ExpatException; )
+private native void append(
+int
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Lorg/apache/harmony/xml/ExpatException; )
+private native void append(
+int
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Lorg/apache/harmony/xml/ExpatException; )
+private native void append(
+int
+char[]
+int
+int)
+
+private static native int cloneAttributes(
+int
+int)
+
+private int column()
+
+private static native int column(
+int)
+
+private static native int createEntityParser(
+int
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+private void endDocument()
+
+private native int initialize(
+java.lang.String
+boolean)
+
+private int line()
+
+private static native int line(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static java.io.InputStream openUrl(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+private void parseExternalEntity(
+org.apache.harmony.xml.ExpatParser
+org.xml.sax.InputSource)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+private void parseFragment(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+private void parseFragment(
+java.io.Reader)
+
+private java.lang.String pickEncoding(
+org.xml.sax.InputSource)
+
+private native void release(
+int)
+
+private static native void releaseParser(
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+private void startDocument()
+
+private static native void staticInitialize(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void append(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void append(
+byte[])
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void append(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void append(
+char[]
+int
+int)
+
+ org.xml.sax.Attributes cloneAttributes()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void comment(
+char[]
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void endCdata()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void endDtd()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void endElement(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void endNamespace(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void finish()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+ void handleExternalEntity(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+ void parseDocument(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+ void parseDocument(
+java.io.Reader)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void processingInstruction(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void startCdata()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void startDtd(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void startElement(
+java.lang.String
+java.lang.String
+java.lang.String
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void startNamespace(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void text(
+char[]
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =EntityParser )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatParser; )
+ class org.apache.harmony.xml.ExpatParser$EntityParser extends org.apache.harmony.xml.ExpatParser
+
+----------------FIELDS----------------
+
+private int depth
+----------------METHODS----------------
+
+private void <init>(
+java.lang.String
+org.apache.harmony.xml.ExpatReader
+int
+java.lang.String
+java.lang.String)
+
+ void <init>(
+java.lang.String
+org.apache.harmony.xml.ExpatReader
+int
+java.lang.String
+java.lang.String
+org.apache.harmony.xml.ExpatParser$1)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void endElement(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void startElement(
+java.lang.String
+java.lang.String
+java.lang.String
+int
+int)
+
+________________CLASS________________
+
+
+public abstract interface class org.xml.sax.Locator extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int getColumnNumber()
+
+public abstract int getLineNumber()
+
+public abstract java.lang.String getPublicId()
+
+public abstract java.lang.String getSystemId()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =ExpatLocator )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatParser; )
+ class org.apache.harmony.xml.ExpatParser$ExpatLocator extends java.lang.Object implements org.xml.sax.Locator
+
+----------------FIELDS----------------
+
+final org.apache.harmony.xml.ExpatParser this$0
+----------------METHODS----------------
+
+private void <init>(
+org.apache.harmony.xml.ExpatParser)
+
+ void <init>(
+org.apache.harmony.xml.ExpatParser
+org.apache.harmony.xml.ExpatParser$1)
+
+public int getColumnNumber()
+
+public int getLineNumber()
+
+public java.lang.String getPublicId()
+
+public java.lang.String getSystemId()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.xml.sax.SAXException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private java.lang.Exception exception
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.Exception)
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+java.lang.Exception)
+
+public java.lang.Exception getException()
+
+public java.lang.String getMessage()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.xml.sax.SAXParseException extends org.xml.sax.SAXException
+
+----------------FIELDS----------------
+
+private int columnNumber
+
+private int lineNumber
+
+private java.lang.String publicId
+
+private java.lang.String systemId
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+int
+int)
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String
+int
+int
+java.lang.Exception)
+
+public void <init>(
+java.lang.String
+org.xml.sax.Locator)
+
+public void <init>(
+java.lang.String
+org.xml.sax.Locator
+java.lang.Exception)
+
+private void init(
+java.lang.String
+java.lang.String
+int
+int)
+
+public int getColumnNumber()
+
+public int getLineNumber()
+
+public java.lang.String getPublicId()
+
+public java.lang.String getSystemId()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =10 name =ParseException )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatParser; )
+ class org.apache.harmony.xml.ExpatParser$ParseException extends org.xml.sax.SAXParseException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>(
+java.lang.String
+org.xml.sax.Locator)
+
+ void <init>(
+java.lang.String
+org.xml.sax.Locator
+org.apache.harmony.xml.ExpatParser$1)
+
+private static java.lang.String makeMessage(
+java.lang.String
+int
+int)
+
+private static java.lang.String makeMessage(
+java.lang.String
+org.xml.sax.Locator)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatPullParser; )
+ class org.apache.harmony.xml.ExpatPullParser$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatPullParser; )
+@dalvik.annotation.InnerClass (accessFlags =1024 name =Document )
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/xml/ExpatPullParser$Document$SaxHandler; )
+abstract class org.apache.harmony.xml.ExpatPullParser$Document extends java.lang.Object
+
+----------------FIELDS----------------
+
+ org.apache.harmony.xml.ExpatPullParser$Event currentEvent
+
+final java.lang.String encoding
+
+ boolean finished
+
+ org.apache.harmony.xml.ExpatPullParser$Event last
+
+ org.apache.harmony.xml.ExpatPullParser$NamespaceStack$Builder namespaceStackBuilder
+
+final org.apache.harmony.xml.ExpatParser parser
+
+final boolean processNamespaces
+
+ org.apache.harmony.xml.ExpatPullParser$TextEvent textEvent
+
+final org.apache.harmony.xml.ExpatPullParser this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xml.ExpatPullParser
+java.lang.String
+boolean)
+
+ void add(
+org.apache.harmony.xml.ExpatPullParser$Event)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+abstract int buffer()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+ int dequeue()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+abstract void flush(
+org.apache.harmony.xml.ExpatParser
+int)
+
+ int getDepth()
+
+ java.lang.String getEncoding()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+ boolean isCurrentElementEmpty()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+ void pump()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatPullParser; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =ByteDocument )
+ class org.apache.harmony.xml.ExpatPullParser$ByteDocument extends org.apache.harmony.xml.ExpatPullParser$Document
+
+----------------FIELDS----------------
+
+final byte[] buffer
+
+final java.io.InputStream in
+
+final org.apache.harmony.xml.ExpatPullParser this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xml.ExpatPullParser
+java.io.InputStream
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ int buffer()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+ void flush(
+org.apache.harmony.xml.ExpatParser
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =CharDocument )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatPullParser; )
+ class org.apache.harmony.xml.ExpatPullParser$CharDocument extends org.apache.harmony.xml.ExpatPullParser$Document
+
+----------------FIELDS----------------
+
+final char[] buffer
+
+final java.io.Reader in
+
+final org.apache.harmony.xml.ExpatPullParser this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xml.ExpatPullParser
+java.io.Reader
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ int buffer()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+ void flush(
+org.apache.harmony.xml.ExpatParser
+int)
+
+________________CLASS________________
+
+
+public abstract interface class org.xml.sax.ContentHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void characters(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void endDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void endElement(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void endPrefixMapping(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void ignorableWhitespace(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void processingInstruction(
+java.lang.String
+java.lang.String)
+
+public abstract void setDocumentLocator(
+org.xml.sax.Locator)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void skippedEntity(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void startDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void startElement(
+java.lang.String
+java.lang.String
+java.lang.String
+org.xml.sax.Attributes)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void startPrefixMapping(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatPullParser$Document; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =SaxHandler )
+ class org.apache.harmony.xml.ExpatPullParser$Document$SaxHandler extends java.lang.Object implements org.xml.sax.ContentHandler
+
+----------------FIELDS----------------
+
+ int depth
+
+final org.apache.harmony.xml.ExpatPullParser$Document this$1
+----------------METHODS----------------
+
+private void <init>(
+org.apache.harmony.xml.ExpatPullParser$Document)
+
+ void <init>(
+org.apache.harmony.xml.ExpatPullParser$Document
+org.apache.harmony.xml.ExpatPullParser$1)
+
+public void characters(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endDocument()
+
+public void endElement(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endPrefixMapping(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void ignorableWhitespace(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void processingInstruction(
+java.lang.String
+java.lang.String)
+
+public void setDocumentLocator(
+org.xml.sax.Locator)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void skippedEntity(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startDocument()
+
+public void startElement(
+java.lang.String
+java.lang.String
+java.lang.String
+org.xml.sax.Attributes)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startPrefixMapping(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1032 name =Event )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatPullParser; )
+abstract class org.apache.harmony.xml.ExpatPullParser$Event extends java.lang.Object
+
+----------------FIELDS----------------
+
+final int depth
+
+final org.apache.harmony.xml.ExpatPullParser$NamespaceStack namespaceStack
+
+ org.apache.harmony.xml.ExpatPullParser$Event next
+----------------METHODS----------------
+
+ void <init>(
+int
+org.apache.harmony.xml.ExpatPullParser$NamespaceStack)
+
+ int getAttributeCount()
+
+ java.lang.String getAttributeName(
+int)
+
+ java.lang.String getAttributeNamespace(
+int)
+
+ java.lang.String getAttributeValue(
+int)
+
+ java.lang.String getAttributeValue(
+java.lang.String
+java.lang.String)
+
+public int getDepth()
+
+ java.lang.String getName()
+
+ java.lang.String getNamespace()
+
+ org.apache.harmony.xml.ExpatPullParser$Event getNext()
+
+ java.lang.StringBuilder getText()
+
+abstract int getType()
+
+ void setNext(
+org.apache.harmony.xml.ExpatPullParser$Event)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =EndDocumentEvent )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatPullParser; )
+ class org.apache.harmony.xml.ExpatPullParser$EndDocumentEvent extends org.apache.harmony.xml.ExpatPullParser$Event
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+ org.apache.harmony.xml.ExpatPullParser$Event getNext()
+
+ int getType()
+
+ void setNext(
+org.apache.harmony.xml.ExpatPullParser$Event)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =EndTagEvent )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatPullParser; )
+ class org.apache.harmony.xml.ExpatPullParser$EndTagEvent extends org.apache.harmony.xml.ExpatPullParser$Event
+
+----------------FIELDS----------------
+
+final java.lang.String localName
+
+final java.lang.String namespace
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+java.lang.String
+int
+org.apache.harmony.xml.ExpatPullParser$NamespaceStack)
+
+ java.lang.String getName()
+
+ java.lang.String getNamespace()
+
+ int getType()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatPullParser$NamespaceStack; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =Builder )
+ class org.apache.harmony.xml.ExpatPullParser$NamespaceStack$Builder extends java.lang.Object
+
+----------------FIELDS----------------
+
+ org.apache.harmony.xml.ExpatPullParser$NamespaceStack top
+----------------METHODS----------------
+
+ void <init>()
+
+ org.apache.harmony.xml.ExpatPullParser$NamespaceStack build()
+
+ void pop(
+int)
+
+ void push(
+java.lang.String
+java.lang.String
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatPullParser; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =NamespaceStack )
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/xml/ExpatPullParser$NamespaceStack$Builder; )
+ class org.apache.harmony.xml.ExpatPullParser$NamespaceStack extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final org.apache.harmony.xml.ExpatPullParser$NamespaceStack EMPTY
+
+private final int depth
+
+private final int index
+
+private final org.apache.harmony.xml.ExpatPullParser$NamespaceStack parent
+
+private final java.lang.String prefix
+
+private final java.lang.String uri
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+private void <init>(
+org.apache.harmony.xml.ExpatPullParser$NamespaceStack
+java.lang.String
+java.lang.String
+int)
+
+ void <init>(
+org.apache.harmony.xml.ExpatPullParser$NamespaceStack
+java.lang.String
+java.lang.String
+int
+org.apache.harmony.xml.ExpatPullParser$1)
+
+static int access$100(
+org.apache.harmony.xml.ExpatPullParser$NamespaceStack)
+
+static org.apache.harmony.xml.ExpatPullParser$NamespaceStack access$200(
+org.apache.harmony.xml.ExpatPullParser$NamespaceStack)
+
+private org.apache.harmony.xml.ExpatPullParser$NamespaceStack nodeAt(
+int)
+
+ int countAt(
+int)
+
+ java.lang.String prefixAt(
+int)
+
+ java.lang.String uriAt(
+int)
+
+ java.lang.String uriFor(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =StartDocumentEvent )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatPullParser; )
+ class org.apache.harmony.xml.ExpatPullParser$StartDocumentEvent extends org.apache.harmony.xml.ExpatPullParser$Event
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+ int getType()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatPullParser; )
+@dalvik.annotation.InnerClass (accessFlags =8 name =StartTagEvent )
+ class org.apache.harmony.xml.ExpatPullParser$StartTagEvent extends org.apache.harmony.xml.ExpatPullParser$Event
+
+----------------FIELDS----------------
+
+final org.xml.sax.Attributes attributes
+
+final java.lang.String name
+
+final java.lang.String namespace
+
+final boolean processNamespaces
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String
+java.lang.String
+org.apache.harmony.xml.ExpatParser
+int
+org.apache.harmony.xml.ExpatPullParser$NamespaceStack
+boolean)
+
+ int getAttributeCount()
+
+ java.lang.String getAttributeName(
+int)
+
+ java.lang.String getAttributeNamespace(
+int)
+
+ java.lang.String getAttributeValue(
+int)
+
+ java.lang.String getAttributeValue(
+java.lang.String
+java.lang.String)
+
+ java.lang.String getName()
+
+ java.lang.String getNamespace()
+
+ int getType()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =TextEvent )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatPullParser; )
+ class org.apache.harmony.xml.ExpatPullParser$TextEvent extends org.apache.harmony.xml.ExpatPullParser$Event
+
+----------------FIELDS----------------
+
+final java.lang.StringBuilder builder
+----------------METHODS----------------
+
+public void <init>(
+int
+int
+org.apache.harmony.xml.ExpatPullParser$NamespaceStack)
+
+ void append(
+char[]
+int
+int)
+
+ java.lang.StringBuilder getText()
+
+ int getType()
+
+________________CLASS________________
+
+
+public abstract interface class org.xmlpull.v1.XmlPullParser extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CDSECT
+
+public static final int COMMENT
+
+public static final int DOCDECL
+
+public static final int END_DOCUMENT
+
+public static final int END_TAG
+
+public static final int ENTITY_REF
+
+public static final java.lang.String FEATURE_PROCESS_DOCDECL
+
+public static final java.lang.String FEATURE_PROCESS_NAMESPACES
+
+public static final java.lang.String FEATURE_REPORT_NAMESPACE_ATTRIBUTES
+
+public static final java.lang.String FEATURE_VALIDATION
+
+public static final int IGNORABLE_WHITESPACE
+
+public static final java.lang.String NO_NAMESPACE
+
+public static final int PROCESSING_INSTRUCTION
+
+public static final int START_DOCUMENT
+
+public static final int START_TAG
+
+public static final int TEXT
+
+public static final java.lang.String[] TYPES
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public abstract void defineEntityReplacementText(
+java.lang.String
+java.lang.String)
+
+public abstract int getAttributeCount()
+
+public abstract java.lang.String getAttributeName(
+int)
+
+public abstract java.lang.String getAttributeNamespace(
+int)
+
+public abstract java.lang.String getAttributePrefix(
+int)
+
+public abstract java.lang.String getAttributeType(
+int)
+
+public abstract java.lang.String getAttributeValue(
+int)
+
+public abstract java.lang.String getAttributeValue(
+java.lang.String
+java.lang.String)
+
+public abstract int getColumnNumber()
+
+public abstract int getDepth()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public abstract int getEventType()
+
+public abstract boolean getFeature(
+java.lang.String)
+
+public abstract java.lang.String getInputEncoding()
+
+public abstract int getLineNumber()
+
+public abstract java.lang.String getName()
+
+public abstract java.lang.String getNamespace()
+
+public abstract java.lang.String getNamespace(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public abstract int getNamespaceCount(
+int)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public abstract java.lang.String getNamespacePrefix(
+int)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public abstract java.lang.String getNamespaceUri(
+int)
+
+public abstract java.lang.String getPositionDescription()
+
+public abstract java.lang.String getPrefix()
+
+public abstract java.lang.Object getProperty(
+java.lang.String)
+
+public abstract java.lang.String getText()
+
+public abstract char[] getTextCharacters(
+int[])
+
+public abstract boolean isAttributeDefault(
+int)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public abstract boolean isEmptyElementTag()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public abstract boolean isWhitespace()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public abstract int next()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public abstract int nextTag()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public abstract java.lang.String nextText()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public abstract int nextToken()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public abstract void require(
+int
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public abstract void setFeature(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public abstract void setInput(
+java.io.InputStream
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public abstract void setInput(
+java.io.Reader)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public abstract void setProperty(
+java.lang.String
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/xml/ExpatPullParser$1;Lorg/apache/harmony/xml/ExpatPullParser$ByteDocument;Lorg/apache/harmony/xml/ExpatPullParser$CharDocument;Lorg/apache/harmony/xml/ExpatPullParser$Document;Lorg/apache/harmony/xml/ExpatPullParser$EndDocumentEvent;Lorg/apache/harmony/xml/ExpatPullParser$TextEvent;Lorg/apache/harmony/xml/ExpatPullParser$EndTagEvent;Lorg/apache/harmony/xml/ExpatPullParser$StartTagEvent;Lorg/apache/harmony/xml/ExpatPullParser$StartDocumentEvent;Lorg/apache/harmony/xml/ExpatPullParser$Event;Lorg/apache/harmony/xml/ExpatPullParser$NamespaceStack; )
+public class org.apache.harmony.xml.ExpatPullParser extends java.lang.Object implements org.xmlpull.v1.XmlPullParser
+
+----------------FIELDS----------------
+
+private static final int BUFFER_SIZE
+
+public static final java.lang.String FEATURE_RELAXED
+
+private static final java.lang.String NOT_A_START_TAG
+
+private org.apache.harmony.xml.ExpatPullParser$Document document
+
+private boolean processNamespaces
+
+private boolean relaxed
+----------------METHODS----------------
+
+public void <init>()
+
+static boolean access$400(
+org.apache.harmony.xml.ExpatPullParser)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void defineEntityReplacementText(
+java.lang.String
+java.lang.String)
+
+public int getAttributeCount()
+
+public java.lang.String getAttributeName(
+int)
+
+public java.lang.String getAttributeNamespace(
+int)
+
+public java.lang.String getAttributePrefix(
+int)
+
+public java.lang.String getAttributeType(
+int)
+
+public java.lang.String getAttributeValue(
+int)
+
+public java.lang.String getAttributeValue(
+java.lang.String
+java.lang.String)
+
+public int getColumnNumber()
+
+public int getDepth()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public int getEventType()
+
+public boolean getFeature(
+java.lang.String)
+
+public java.lang.String getInputEncoding()
+
+public int getLineNumber()
+
+public java.lang.String getName()
+
+public java.lang.String getNamespace()
+
+public java.lang.String getNamespace(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public int getNamespaceCount(
+int)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public java.lang.String getNamespacePrefix(
+int)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public java.lang.String getNamespaceUri(
+int)
+
+public java.lang.String getPositionDescription()
+
+public java.lang.String getPrefix()
+
+public java.lang.Object getProperty(
+java.lang.String)
+
+public java.lang.String getText()
+
+public char[] getTextCharacters(
+int[])
+
+public boolean isAttributeDefault(
+int)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public boolean isEmptyElementTag()
+
+public boolean isNamespaceProcessingEnabled()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public boolean isWhitespace()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public int next()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public int nextTag()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public java.lang.String nextText()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public int nextToken()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void require(
+int
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void setFeature(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void setInput(
+java.io.InputStream
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void setInput(
+java.io.Reader)
+
+public void setNamespaceProcessingEnabled(
+boolean)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void setProperty(
+java.lang.String
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/ExpatReader; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =Feature )
+ class org.apache.harmony.xml.ExpatReader$Feature extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String BASE_URI
+
+private static final java.lang.String NAMESPACES
+
+private static final java.lang.String NAMESPACE_PREFIXES
+
+private static final java.lang.String STRING_INTERNING
+
+private static final java.lang.String VALIDATION
+----------------METHODS----------------
+
+private void <init>()
+
+________________CLASS________________
+
+
+public abstract interface class org.xml.sax.XMLReader extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.xml.sax.ContentHandler getContentHandler()
+
+public abstract org.xml.sax.DTDHandler getDTDHandler()
+
+public abstract org.xml.sax.EntityResolver getEntityResolver()
+
+public abstract org.xml.sax.ErrorHandler getErrorHandler()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public abstract boolean getFeature(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public abstract java.lang.Object getProperty(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+public abstract void parse(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+public abstract void parse(
+org.xml.sax.InputSource)
+
+public abstract void setContentHandler(
+org.xml.sax.ContentHandler)
+
+public abstract void setDTDHandler(
+org.xml.sax.DTDHandler)
+
+public abstract void setEntityResolver(
+org.xml.sax.EntityResolver)
+
+public abstract void setErrorHandler(
+org.xml.sax.ErrorHandler)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public abstract void setFeature(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public abstract void setProperty(
+java.lang.String
+java.lang.Object)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/xml/ExpatReader$Feature; )
+public class org.apache.harmony.xml.ExpatReader extends java.lang.Object implements org.xml.sax.XMLReader
+
+----------------FIELDS----------------
+
+private static final java.lang.String LEXICAL_HANDLER_PROPERTY
+
+private static final java.util.logging.Logger logger
+
+ org.xml.sax.ContentHandler contentHandler
+
+ org.xml.sax.EntityResolver entityResolver
+
+ org.xml.sax.ErrorHandler errorHandler
+
+ org.xml.sax.ext.LexicalHandler lexicalHandler
+
+private boolean processNamespacePrefixes
+
+private boolean processNamespaces
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+private void parse(
+java.io.InputStream
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+private void parse(
+java.io.Reader
+java.lang.String
+java.lang.String)
+
+public org.xml.sax.ContentHandler getContentHandler()
+
+public org.xml.sax.DTDHandler getDTDHandler()
+
+public org.xml.sax.EntityResolver getEntityResolver()
+
+public org.xml.sax.ErrorHandler getErrorHandler()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public boolean getFeature(
+java.lang.String)
+
+public org.xml.sax.ext.LexicalHandler getLexicalHandler()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public java.lang.Object getProperty(
+java.lang.String)
+
+public boolean isNamespaceProcessingEnabled()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+public void parse(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+public void parse(
+org.xml.sax.InputSource)
+
+public void setContentHandler(
+org.xml.sax.ContentHandler)
+
+public void setDTDHandler(
+org.xml.sax.DTDHandler)
+
+public void setEntityResolver(
+org.xml.sax.EntityResolver)
+
+public void setErrorHandler(
+org.xml.sax.ErrorHandler)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public void setFeature(
+java.lang.String
+boolean)
+
+public void setLexicalHandler(
+org.xml.sax.ext.LexicalHandler)
+
+public void setNamespaceProcessingEnabled(
+boolean)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public void setProperty(
+java.lang.String
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract interface class org.w3c.dom.Node extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final short ATTRIBUTE_NODE
+
+public static final short CDATA_SECTION_NODE
+
+public static final short COMMENT_NODE
+
+public static final short DOCUMENT_FRAGMENT_NODE
+
+public static final short DOCUMENT_NODE
+
+public static final short DOCUMENT_TYPE_NODE
+
+public static final short ELEMENT_NODE
+
+public static final short ENTITY_NODE
+
+public static final short ENTITY_REFERENCE_NODE
+
+public static final short NOTATION_NODE
+
+public static final short PROCESSING_INSTRUCTION_NODE
+
+public static final short TEXT_NODE
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Node appendChild(
+org.w3c.dom.Node)
+
+public abstract org.w3c.dom.Node cloneNode(
+boolean)
+
+public abstract org.w3c.dom.NamedNodeMap getAttributes()
+
+public abstract org.w3c.dom.NodeList getChildNodes()
+
+public abstract org.w3c.dom.Node getFirstChild()
+
+public abstract org.w3c.dom.Node getLastChild()
+
+public abstract java.lang.String getLocalName()
+
+public abstract java.lang.String getNamespaceURI()
+
+public abstract org.w3c.dom.Node getNextSibling()
+
+public abstract java.lang.String getNodeName()
+
+public abstract short getNodeType()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract java.lang.String getNodeValue()
+
+public abstract org.w3c.dom.Document getOwnerDocument()
+
+public abstract org.w3c.dom.Node getParentNode()
+
+public abstract java.lang.String getPrefix()
+
+public abstract org.w3c.dom.Node getPreviousSibling()
+
+public abstract boolean hasAttributes()
+
+public abstract boolean hasChildNodes()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Node insertBefore(
+org.w3c.dom.Node
+org.w3c.dom.Node)
+
+public abstract boolean isSupported(
+java.lang.String
+java.lang.String)
+
+public abstract void normalize()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Node removeChild(
+org.w3c.dom.Node)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Node replaceChild(
+org.w3c.dom.Node
+org.w3c.dom.Node)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract void setNodeValue(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract void setPrefix(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.xml.dom.NodeImpl extends java.lang.Object implements org.w3c.dom.Node
+
+----------------FIELDS----------------
+
+private static final org.w3c.dom.NodeList EMPTY_LIST
+
+ org.apache.harmony.xml.dom.DocumentImpl document
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>(
+org.apache.harmony.xml.dom.DocumentImpl)
+
+private static boolean matchesName(
+java.lang.String
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node appendChild(
+org.w3c.dom.Node)
+
+public org.w3c.dom.Node cloneNode(
+boolean)
+
+public org.w3c.dom.NamedNodeMap getAttributes()
+
+public org.w3c.dom.NodeList getChildNodes()
+
+public org.w3c.dom.Node getFirstChild()
+
+public org.w3c.dom.Node getLastChild()
+
+public java.lang.String getLocalName()
+
+public java.lang.String getNamespaceURI()
+
+public org.w3c.dom.Node getNextSibling()
+
+public java.lang.String getNodeName()
+
+public abstract short getNodeType()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public java.lang.String getNodeValue()
+
+public org.w3c.dom.Document getOwnerDocument()
+
+public org.w3c.dom.Node getParentNode()
+
+public java.lang.String getPrefix()
+
+public org.w3c.dom.Node getPreviousSibling()
+
+public boolean hasAttributes()
+
+public boolean hasChildNodes()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node insertBefore(
+org.w3c.dom.Node
+org.w3c.dom.Node)
+
+public boolean isSupported(
+java.lang.String
+java.lang.String)
+
+public boolean matchesName(
+java.lang.String
+boolean)
+
+public boolean matchesNameNS(
+java.lang.String
+java.lang.String
+boolean)
+
+public void normalize()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node removeChild(
+org.w3c.dom.Node)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node replaceChild(
+org.w3c.dom.Node
+org.w3c.dom.Node)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public void setNodeValue(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public void setPrefix(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.w3c.dom.Attr extends java.lang.Object implements org.w3c.dom.Node
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getName()
+
+public abstract org.w3c.dom.Element getOwnerElement()
+
+public abstract boolean getSpecified()
+
+public abstract java.lang.String getValue()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract void setValue(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xml.dom.AttrImpl extends org.apache.harmony.xml.dom.NodeImpl implements org.w3c.dom.Attr
+
+----------------FIELDS----------------
+
+private java.lang.String localName
+
+private boolean namespaceAware
+
+private java.lang.String namespaceURI
+
+ org.apache.harmony.xml.dom.ElementImpl ownerElement
+
+private java.lang.String prefix
+
+private java.lang.String value
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xml.dom.DocumentImpl
+java.lang.String)
+
+ void <init>(
+org.apache.harmony.xml.dom.DocumentImpl
+java.lang.String
+java.lang.String)
+
+public java.lang.String getLocalName()
+
+public java.lang.String getName()
+
+public java.lang.String getNamespaceURI()
+
+public java.lang.String getNodeName()
+
+public short getNodeType()
+
+public java.lang.String getNodeValue()
+
+public org.w3c.dom.Element getOwnerElement()
+
+public java.lang.String getPrefix()
+
+public boolean getSpecified()
+
+public java.lang.String getValue()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public void setNodeValue(
+java.lang.String)
+
+public void setPrefix(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public void setValue(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.xml.dom.LeafNodeImpl extends org.apache.harmony.xml.dom.NodeImpl
+
+----------------FIELDS----------------
+
+ int index
+
+ org.apache.harmony.xml.dom.InnerNodeImpl parent
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xml.dom.DocumentImpl)
+
+public org.w3c.dom.Node getNextSibling()
+
+public org.w3c.dom.Node getParentNode()
+
+public org.w3c.dom.Node getPreviousSibling()
+
+ boolean isParentOf(
+org.w3c.dom.Node)
+
+________________CLASS________________
+
+
+public abstract interface class org.w3c.dom.CharacterData extends java.lang.Object implements org.w3c.dom.Node
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract void appendData(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract void deleteData(
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract java.lang.String getData()
+
+public abstract int getLength()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract void insertData(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract void replaceData(
+int
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract void setData(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract java.lang.String substringData(
+int
+int)
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.xml.dom.CharacterDataImpl extends org.apache.harmony.xml.dom.LeafNodeImpl implements org.w3c.dom.CharacterData
+
+----------------FIELDS----------------
+
+private java.lang.StringBuffer buffer
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xml.dom.DocumentImpl
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public void appendData(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public void deleteData(
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public java.lang.String getData()
+
+public int getLength()
+
+public java.lang.String getNodeValue()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public void insertData(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public void replaceData(
+int
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public void setData(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public java.lang.String substringData(
+int
+int)
+
+________________CLASS________________
+
+
+public abstract interface class org.w3c.dom.Text extends java.lang.Object implements org.w3c.dom.CharacterData
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Text splitText(
+int)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xml.dom.TextImpl extends org.apache.harmony.xml.dom.CharacterDataImpl implements org.w3c.dom.Text
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xml.dom.DocumentImpl
+java.lang.String)
+
+public java.lang.String getNodeName()
+
+public short getNodeType()
+
+public java.lang.String getNodeValue()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Text splitText(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class org.w3c.dom.CDATASection extends java.lang.Object implements org.w3c.dom.Text
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xml.dom.CDATASectionImpl extends org.apache.harmony.xml.dom.TextImpl implements org.w3c.dom.CDATASection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xml.dom.DocumentImpl
+java.lang.String)
+
+public java.lang.String getNodeName()
+
+public short getNodeType()
+
+________________CLASS________________
+
+
+public abstract interface class org.w3c.dom.Comment extends java.lang.Object implements org.w3c.dom.CharacterData
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xml.dom.CommentImpl extends org.apache.harmony.xml.dom.CharacterDataImpl implements org.w3c.dom.Comment
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xml.dom.DocumentImpl
+java.lang.String)
+
+public java.lang.String getNodeName()
+
+public short getNodeType()
+
+________________CLASS________________
+
+
+public abstract interface class org.w3c.dom.DOMImplementation extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Document createDocument(
+java.lang.String
+java.lang.String
+org.w3c.dom.DocumentType)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.DocumentType createDocumentType(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public abstract boolean hasFeature(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xml.dom.DOMImplementationImpl extends java.lang.Object implements org.w3c.dom.DOMImplementation
+
+----------------FIELDS----------------
+
+private static org.apache.harmony.xml.dom.DOMImplementationImpl instance
+----------------METHODS----------------
+
+ void <init>()
+
+public static org.apache.harmony.xml.dom.DOMImplementationImpl getInstance()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Document createDocument(
+java.lang.String
+java.lang.String
+org.w3c.dom.DocumentType)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.DocumentType createDocumentType(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public boolean hasFeature(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.xml.dom.InnerNodeImpl extends org.apache.harmony.xml.dom.LeafNodeImpl
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/List<Lorg/apache/harmony/xml/dom/LeafNodeImpl;>; )
+ java.util.List children
+----------------METHODS----------------
+
+public void <init>(
+org.apache.harmony.xml.dom.DocumentImpl)
+
+private void refreshIndices(
+int)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node appendChild(
+org.w3c.dom.Node)
+
+public org.w3c.dom.NodeList getChildNodes()
+
+public org.w3c.dom.Node getFirstChild()
+
+public org.w3c.dom.Node getLastChild()
+
+public org.w3c.dom.Node getNextSibling()
+
+public boolean hasChildNodes()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node insertBefore(
+org.w3c.dom.Node
+org.w3c.dom.Node)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node insertChildAt(
+org.w3c.dom.Node
+int)
+
+public boolean isParentOf(
+org.w3c.dom.Node)
+
+public void normalize()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node removeChild(
+org.w3c.dom.Node)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node replaceChild(
+org.w3c.dom.Node
+org.w3c.dom.Node)
+
+________________CLASS________________
+
+
+public abstract interface class org.w3c.dom.DocumentFragment extends java.lang.Object implements org.w3c.dom.Node
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xml.dom.DocumentFragmentImpl extends org.apache.harmony.xml.dom.InnerNodeImpl implements org.w3c.dom.DocumentFragment
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xml.dom.DocumentImpl)
+
+public java.lang.String getNodeName()
+
+public short getNodeType()
+
+________________CLASS________________
+
+
+public abstract interface class org.w3c.dom.Document extends java.lang.Object implements org.w3c.dom.Node
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Attr createAttribute(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Attr createAttributeNS(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.CDATASection createCDATASection(
+java.lang.String)
+
+public abstract org.w3c.dom.Comment createComment(
+java.lang.String)
+
+public abstract org.w3c.dom.DocumentFragment createDocumentFragment()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Element createElement(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Element createElementNS(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.EntityReference createEntityReference(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.ProcessingInstruction createProcessingInstruction(
+java.lang.String
+java.lang.String)
+
+public abstract org.w3c.dom.Text createTextNode(
+java.lang.String)
+
+public abstract org.w3c.dom.DocumentType getDoctype()
+
+public abstract org.w3c.dom.Element getDocumentElement()
+
+public abstract org.w3c.dom.Element getElementById(
+java.lang.String)
+
+public abstract org.w3c.dom.NodeList getElementsByTagName(
+java.lang.String)
+
+public abstract org.w3c.dom.NodeList getElementsByTagNameNS(
+java.lang.String
+java.lang.String)
+
+public abstract org.w3c.dom.DOMImplementation getImplementation()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Node importNode(
+org.w3c.dom.Node
+boolean)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xml.dom.DocumentImpl extends org.apache.harmony.xml.dom.InnerNodeImpl implements org.w3c.dom.Document
+
+----------------FIELDS----------------
+
+private org.w3c.dom.DOMImplementation domImplementation
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xml.dom.DOMImplementationImpl
+java.lang.String
+java.lang.String
+org.w3c.dom.DocumentType)
+
+static boolean isXMLIdentifier(
+java.lang.String)
+
+private static boolean isXMLIdentifierPart(
+char)
+
+private static boolean isXMLIdentifierStart(
+char)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+ org.w3c.dom.Node cloneNode(
+org.w3c.dom.Node
+boolean)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.apache.harmony.xml.dom.AttrImpl createAttribute(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public volatile org.w3c.dom.Attr createAttribute(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Attr createAttributeNS(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.CDATASection createCDATASection(
+java.lang.String)
+
+public org.w3c.dom.Comment createComment(
+java.lang.String)
+
+public org.w3c.dom.DocumentFragment createDocumentFragment()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Element createElement(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Element createElementNS(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.EntityReference createEntityReference(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.ProcessingInstruction createProcessingInstruction(
+java.lang.String
+java.lang.String)
+
+public org.w3c.dom.Text createTextNode(
+java.lang.String)
+
+public org.w3c.dom.DocumentType getDoctype()
+
+public org.w3c.dom.Element getDocumentElement()
+
+public org.w3c.dom.Element getElementById(
+java.lang.String)
+
+public org.w3c.dom.NodeList getElementsByTagName(
+java.lang.String)
+
+public org.w3c.dom.NodeList getElementsByTagNameNS(
+java.lang.String
+java.lang.String)
+
+public org.w3c.dom.DOMImplementation getImplementation()
+
+public java.lang.String getNodeName()
+
+public short getNodeType()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node importNode(
+org.w3c.dom.Node
+boolean)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node insertChildAt(
+org.w3c.dom.Node
+int)
+
+________________CLASS________________
+
+
+public abstract interface class org.w3c.dom.DocumentType extends java.lang.Object implements org.w3c.dom.Node
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.w3c.dom.NamedNodeMap getEntities()
+
+public abstract java.lang.String getInternalSubset()
+
+public abstract java.lang.String getName()
+
+public abstract org.w3c.dom.NamedNodeMap getNotations()
+
+public abstract java.lang.String getPublicId()
+
+public abstract java.lang.String getSystemId()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xml.dom.DocumentTypeImpl extends org.apache.harmony.xml.dom.LeafNodeImpl implements org.w3c.dom.DocumentType
+
+----------------FIELDS----------------
+
+private java.lang.String publicId
+
+private java.lang.String qualifiedName
+
+private java.lang.String systemId
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xml.dom.DOMImplementationImpl
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public org.w3c.dom.NamedNodeMap getEntities()
+
+public java.lang.String getInternalSubset()
+
+public java.lang.String getName()
+
+public java.lang.String getNodeName()
+
+public short getNodeType()
+
+public org.w3c.dom.NamedNodeMap getNotations()
+
+public java.lang.String getPublicId()
+
+public java.lang.String getSystemId()
+
+________________CLASS________________
+
+
+public abstract interface class org.w3c.dom.NamedNodeMap extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int getLength()
+
+public abstract org.w3c.dom.Node getNamedItem(
+java.lang.String)
+
+public abstract org.w3c.dom.Node getNamedItemNS(
+java.lang.String
+java.lang.String)
+
+public abstract org.w3c.dom.Node item(
+int)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Node removeNamedItem(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Node removeNamedItemNS(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Node setNamedItem(
+org.w3c.dom.Node)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Node setNamedItemNS(
+org.w3c.dom.Node)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1 name =ElementAttrNamedNodeMapImpl )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xml/dom/ElementImpl; )
+public class org.apache.harmony.xml.dom.ElementImpl$ElementAttrNamedNodeMapImpl extends java.lang.Object implements org.w3c.dom.NamedNodeMap
+
+----------------FIELDS----------------
+
+final org.apache.harmony.xml.dom.ElementImpl this$0
+----------------METHODS----------------
+
+public void <init>(
+org.apache.harmony.xml.dom.ElementImpl)
+
+private int indexOfItem(
+java.lang.String)
+
+private int indexOfItemNS(
+java.lang.String
+java.lang.String)
+
+public int getLength()
+
+public org.w3c.dom.Node getNamedItem(
+java.lang.String)
+
+public org.w3c.dom.Node getNamedItemNS(
+java.lang.String
+java.lang.String)
+
+public org.w3c.dom.Node item(
+int)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node removeNamedItem(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node removeNamedItemNS(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node setNamedItem(
+org.w3c.dom.Node)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node setNamedItemNS(
+org.w3c.dom.Node)
+
+________________CLASS________________
+
+
+public abstract interface class org.w3c.dom.Element extends java.lang.Object implements org.w3c.dom.Node
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getAttribute(
+java.lang.String)
+
+public abstract java.lang.String getAttributeNS(
+java.lang.String
+java.lang.String)
+
+public abstract org.w3c.dom.Attr getAttributeNode(
+java.lang.String)
+
+public abstract org.w3c.dom.Attr getAttributeNodeNS(
+java.lang.String
+java.lang.String)
+
+public abstract org.w3c.dom.NodeList getElementsByTagName(
+java.lang.String)
+
+public abstract org.w3c.dom.NodeList getElementsByTagNameNS(
+java.lang.String
+java.lang.String)
+
+public abstract java.lang.String getTagName()
+
+public abstract boolean hasAttribute(
+java.lang.String)
+
+public abstract boolean hasAttributeNS(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract void removeAttribute(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract void removeAttributeNS(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Attr removeAttributeNode(
+org.w3c.dom.Attr)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract void setAttribute(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract void setAttributeNS(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Attr setAttributeNode(
+org.w3c.dom.Attr)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract org.w3c.dom.Attr setAttributeNodeNS(
+org.w3c.dom.Attr)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/xml/dom/ElementImpl$ElementAttrNamedNodeMapImpl; )
+public class org.apache.harmony.xml.dom.ElementImpl extends org.apache.harmony.xml.dom.InnerNodeImpl implements org.w3c.dom.Element
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/List<Lorg/apache/harmony/xml/dom/AttrImpl;>; )
+private java.util.List attributes
+
+private java.lang.String localName
+
+private boolean namespaceAware
+
+private java.lang.String namespaceURI
+
+private java.lang.String prefix
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xml.dom.DocumentImpl
+java.lang.String)
+
+ void <init>(
+org.apache.harmony.xml.dom.DocumentImpl
+java.lang.String
+java.lang.String)
+
+static java.util.List access$000(
+org.apache.harmony.xml.dom.ElementImpl)
+
+static int access$100(
+org.apache.harmony.xml.dom.ElementImpl
+java.lang.String)
+
+static int access$200(
+org.apache.harmony.xml.dom.ElementImpl
+java.lang.String
+java.lang.String)
+
+private int indexOfAttribute(
+java.lang.String)
+
+private int indexOfAttributeNS(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getAttribute(
+java.lang.String)
+
+public java.lang.String getAttributeNS(
+java.lang.String
+java.lang.String)
+
+public org.w3c.dom.Attr getAttributeNode(
+java.lang.String)
+
+public org.w3c.dom.Attr getAttributeNodeNS(
+java.lang.String
+java.lang.String)
+
+public org.w3c.dom.NamedNodeMap getAttributes()
+
+ org.w3c.dom.Element getElementById(
+java.lang.String)
+
+public org.w3c.dom.NodeList getElementsByTagName(
+java.lang.String)
+
+ void getElementsByTagName(
+org.apache.harmony.xml.dom.NodeListImpl
+java.lang.String)
+
+public org.w3c.dom.NodeList getElementsByTagNameNS(
+java.lang.String
+java.lang.String)
+
+ void getElementsByTagNameNS(
+org.apache.harmony.xml.dom.NodeListImpl
+java.lang.String
+java.lang.String)
+
+public java.lang.String getLocalName()
+
+public java.lang.String getNamespaceURI()
+
+public java.lang.String getNodeName()
+
+public short getNodeType()
+
+public java.lang.String getPrefix()
+
+public java.lang.String getTagName()
+
+public boolean hasAttribute(
+java.lang.String)
+
+public boolean hasAttributeNS(
+java.lang.String
+java.lang.String)
+
+public boolean hasAttributes()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public void removeAttribute(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public void removeAttributeNS(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Attr removeAttributeNode(
+org.w3c.dom.Attr)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public void setAttribute(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public void setAttributeNS(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Attr setAttributeNode(
+org.w3c.dom.Attr)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Attr setAttributeNodeNS(
+org.w3c.dom.Attr)
+
+public void setPrefix(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.w3c.dom.Entity extends java.lang.Object implements org.w3c.dom.Node
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getNotationName()
+
+public abstract java.lang.String getPublicId()
+
+public abstract java.lang.String getSystemId()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xml.dom.EntityImpl extends org.apache.harmony.xml.dom.NodeImpl implements org.w3c.dom.Entity
+
+----------------FIELDS----------------
+
+private java.lang.String notationName
+
+private java.lang.String publicID
+
+private java.lang.String systemID
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xml.dom.DocumentImpl
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public java.lang.String getNodeName()
+
+public short getNodeType()
+
+public java.lang.String getNotationName()
+
+public java.lang.String getPublicId()
+
+public java.lang.String getSystemId()
+
+________________CLASS________________
+
+
+public abstract interface class org.w3c.dom.EntityReference extends java.lang.Object implements org.w3c.dom.Node
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xml.dom.EntityReferenceImpl extends org.apache.harmony.xml.dom.LeafNodeImpl implements org.w3c.dom.EntityReference
+
+----------------FIELDS----------------
+
+private java.lang.String name
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xml.dom.DocumentImpl
+java.lang.String)
+
+public java.lang.String getNodeName()
+
+public short getNodeType()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xml.dom.NamedNodeMapImpl extends java.lang.Object implements org.w3c.dom.NamedNodeMap
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/List<Lorg/apache/harmony/xml/dom/NodeImpl;>; )
+private java.util.List list
+@dalvik.annotation.Signature (value =Ljava/lang/Class<*>; )
+private java.lang.Class type
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/lang/Class<*>;)V )
+ void <init>(
+java.lang.Class)
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lorg/apache/harmony/xml/dom/NodeImpl;>;Ljava/lang/Class<*>;)V )
+ void <init>(
+java.util.List
+java.lang.Class)
+
+private int indexOfItem(
+java.lang.String)
+
+private int indexOfItemNS(
+java.lang.String
+java.lang.String)
+
+public int getLength()
+
+public org.w3c.dom.Node getNamedItem(
+java.lang.String)
+
+public org.w3c.dom.Node getNamedItemNS(
+java.lang.String
+java.lang.String)
+
+public org.w3c.dom.Node item(
+int)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node removeNamedItem(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node removeNamedItemNS(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node setNamedItem(
+org.w3c.dom.Node)
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public org.w3c.dom.Node setNamedItemNS(
+org.w3c.dom.Node)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xml.dom.NodeListImpl extends java.lang.Object implements org.w3c.dom.NodeList
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/List<Lorg/apache/harmony/xml/dom/NodeImpl;>; )
+private java.util.List children
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Signature (value =(Ljava/util/List<Lorg/apache/harmony/xml/dom/NodeImpl;>;)V )
+ void <init>(
+java.util.List)
+
+ void add(
+org.apache.harmony.xml.dom.NodeImpl)
+
+public int getLength()
+
+public org.w3c.dom.Node item(
+int)
+
+________________CLASS________________
+
+
+public abstract interface class org.w3c.dom.Notation extends java.lang.Object implements org.w3c.dom.Node
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getPublicId()
+
+public abstract java.lang.String getSystemId()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xml.dom.NotationImpl extends org.apache.harmony.xml.dom.LeafNodeImpl implements org.w3c.dom.Notation
+
+----------------FIELDS----------------
+
+private java.lang.String notationName
+
+private java.lang.String publicID
+
+private java.lang.String systemID
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xml.dom.DocumentImpl
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public java.lang.String getNodeName()
+
+public short getNodeType()
+
+public java.lang.String getPublicId()
+
+public java.lang.String getSystemId()
+
+________________CLASS________________
+
+
+public abstract interface class org.w3c.dom.ProcessingInstruction extends java.lang.Object implements org.w3c.dom.Node
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getData()
+
+public abstract java.lang.String getTarget()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public abstract void setData(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xml.dom.ProcessingInstructionImpl extends org.apache.harmony.xml.dom.LeafNodeImpl implements org.w3c.dom.ProcessingInstruction
+
+----------------FIELDS----------------
+
+private java.lang.String data
+
+private java.lang.String target
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xml.dom.DocumentImpl
+java.lang.String
+java.lang.String)
+
+public java.lang.String getData()
+
+public java.lang.String getNodeName()
+
+public short getNodeType()
+
+public java.lang.String getNodeValue()
+
+public java.lang.String getTarget()
+@dalvik.annotation.Throws (value =Lorg/w3c/dom/DOMException; )
+public void setData(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xml.parsers.DocumentBuilderFactoryImpl extends javax.xml.parsers.DocumentBuilderFactory
+
+----------------FIELDS----------------
+
+private static final java.lang.String NAMESPACES
+
+private static final java.lang.String VALIDATION
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public java.lang.Object getAttribute(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljavax/xml/parsers/ParserConfigurationException; )
+public boolean getFeature(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljavax/xml/parsers/ParserConfigurationException; )
+public javax.xml.parsers.DocumentBuilder newDocumentBuilder()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void setAttribute(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljavax/xml/parsers/ParserConfigurationException; )
+public void setFeature(
+java.lang.String
+boolean)
+
+________________CLASS________________
+
+
+ class org.apache.harmony.xml.parsers.DocumentBuilderImpl extends javax.xml.parsers.DocumentBuilder
+
+----------------FIELDS----------------
+
+private static org.w3c.dom.DOMImplementation dom
+
+private org.xml.sax.EntityResolver entityResolver
+
+private org.xml.sax.ErrorHandler errorHandler
+
+private boolean ignoreComments
+
+private boolean ignoreElementContentWhitespace
+
+private boolean namespaceAware
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+private void parse(
+org.xmlpull.v1.XmlPullParser
+org.w3c.dom.Document
+org.w3c.dom.Node
+int)
+
+private java.lang.String resolveStandardEntity(
+java.lang.String)
+
+public org.w3c.dom.DOMImplementation getDOMImplementation()
+
+public boolean isIgnoringComments()
+
+public boolean isIgnoringElementContentWhitespace()
+
+public boolean isNamespaceAware()
+
+public boolean isValidating()
+
+public org.w3c.dom.Document newDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public org.w3c.dom.Document parse(
+org.xml.sax.InputSource)
+
+public void setEntityResolver(
+org.xml.sax.EntityResolver)
+
+public void setErrorHandler(
+org.xml.sax.ErrorHandler)
+
+public void setIgnoreComments(
+boolean)
+
+public void setIgnoreElementContentWhitespace(
+boolean)
+
+public void setNamespaceAware(
+boolean)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xml.parsers.SAXParserFactoryImpl extends javax.xml.parsers.SAXParserFactory
+
+----------------FIELDS----------------
+
+private static final java.lang.String NAMESPACES
+
+private static final java.lang.String VALIDATION
+@dalvik.annotation.Signature (value =Ljava/util/Map<Ljava/lang/String;Ljava/lang/Boolean;>; )
+private java.util.Map features
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException; )
+public boolean getFeature(
+java.lang.String)
+
+public boolean isNamespaceAware()
+
+public boolean isValidating()
+@dalvik.annotation.Throws (value =Ljavax/xml/parsers/ParserConfigurationException; )
+public javax.xml.parsers.SAXParser newSAXParser()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException; )
+public void setFeature(
+java.lang.String
+boolean)
+
+public void setNamespaceAware(
+boolean)
+
+public void setValidating(
+boolean)
+
+________________CLASS________________
+
+
+ class org.apache.harmony.xml.parsers.SAXParserImpl extends javax.xml.parsers.SAXParser
+
+----------------FIELDS----------------
+
+private org.xml.sax.Parser parser
+
+private org.xml.sax.XMLReader reader
+----------------METHODS----------------
+@dalvik.annotation.Signature (value =(Ljava/util/Map<Ljava/lang/String;Ljava/lang/Boolean;>;)V )
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+ void <init>(
+java.util.Map)
+
+public org.xml.sax.Parser getParser()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public java.lang.Object getProperty(
+java.lang.String)
+
+public org.xml.sax.XMLReader getXMLReader()
+
+public boolean isNamespaceAware()
+
+public boolean isValidating()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public void setProperty(
+java.lang.String
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.internal.nls.Messages extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String sResource
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String getString(
+java.lang.String)
+
+public static java.lang.String getString(
+java.lang.String
+char)
+
+public static java.lang.String getString(
+java.lang.String
+int)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object
+java.lang.Object)
+
+public static java.lang.String getString(
+java.lang.String
+java.lang.Object[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.AlertException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+private final byte description
+
+private final javax.net.ssl.SSLException reason
+----------------METHODS----------------
+
+protected void <init>(
+byte
+javax.net.ssl.SSLException)
+
+protected byte getDescriptionCode()
+
+protected javax.net.ssl.SSLException getReason()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.AlertProtocol extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected static final byte ACCESS_DENIED
+
+protected static final byte BAD_CERTIFICATE
+
+protected static final byte BAD_RECORD_MAC
+
+protected static final byte CERTIFICATE_EXPIRED
+
+protected static final byte CERTIFICATE_REVOKED
+
+protected static final byte CERTIFICATE_UNKNOWN
+
+protected static final byte CLOSE_NOTIFY
+
+protected static final byte DECODE_ERROR
+
+protected static final byte DECOMPRESSION_FAILURE
+
+protected static final byte DECRYPTION_FAILED
+
+protected static final byte DECRYPT_ERROR
+
+protected static final byte EXPORT_RESTRICTION
+
+protected static final byte FATAL
+
+protected static final byte HANDSHAKE_FAILURE
+
+protected static final byte ILLEGAL_PARAMETER
+
+protected static final byte INSUFFICIENT_SECURITY
+
+protected static final byte INTERNAL_ERROR
+
+protected static final byte NO_RENEGOTIATION
+
+protected static final byte PROTOCOL_VERSION
+
+protected static final byte RECORD_OVERFLOW
+
+protected static final byte UNEXPECTED_MESSAGE
+
+protected static final byte UNKNOWN_CA
+
+protected static final byte UNSUPPORTED_CERTIFICATE
+
+protected static final byte USER_CANCELED
+
+protected static final byte WARNING
+
+private final byte[] alert
+
+private org.apache.harmony.xnet.provider.jsse.Logger$Stream logger
+
+private org.apache.harmony.xnet.provider.jsse.SSLRecordProtocol recordProtocol
+----------------METHODS----------------
+
+protected void <init>()
+
+protected void alert(
+byte
+byte)
+
+protected java.lang.String getAlertDescription()
+
+protected byte getDescriptionCode()
+
+protected boolean hasAlert()
+
+protected boolean isFatalAlert()
+
+protected void setProcessed()
+
+protected void setRecordProtocol(
+org.apache.harmony.xnet.provider.jsse.SSLRecordProtocol)
+
+protected void shutdown()
+
+protected byte[] wrap()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.harmony.xnet.provider.jsse.Appendable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void append(
+byte[])
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.xnet.provider.jsse.Message extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected int length
+----------------METHODS----------------
+
+public void <init>()
+
+protected void fatalAlert(
+byte
+java.lang.String)
+
+protected void fatalAlert(
+byte
+java.lang.String
+java.lang.Throwable)
+
+abstract int getType()
+
+public int length()
+
+abstract void send(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.CertificateMessage extends org.apache.harmony.xnet.provider.jsse.Message
+
+----------------FIELDS----------------
+
+ java.security.cert.X509Certificate[] certs
+
+ byte[][] encoded_certs
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream
+int)
+
+public void <init>(
+java.security.cert.X509Certificate[])
+
+public int getType()
+
+public void send(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.CertificateRequest extends org.apache.harmony.xnet.provider.jsse.Message
+
+----------------FIELDS----------------
+
+public static final byte DSS_FIXED_DH
+
+public static final byte DSS_SIGN
+
+public static final byte RSA_FIXED_DH
+
+public static final byte RSA_SIGN
+
+ javax.security.auth.x500.X500Principal[] certificate_authorities
+
+final byte[] certificate_types
+
+private byte[][] encoded_principals
+
+private java.lang.String[] types
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream
+int)
+
+public void <init>(
+byte[]
+java.security.cert.X509Certificate[])
+
+public int getType()
+
+public java.lang.String[] getTypesAsString()
+
+public void send(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.CertificateVerify extends org.apache.harmony.xnet.provider.jsse.Message
+
+----------------FIELDS----------------
+
+ byte[] signedHash
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream
+int)
+
+public void <init>(
+byte[])
+
+public int getType()
+
+public void send(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.CipherSuite extends java.lang.Object
+
+----------------FIELDS----------------
+
+static int KeyExchange_DHE_DSS
+
+static int KeyExchange_DHE_DSS_EXPORT
+
+static int KeyExchange_DHE_RSA
+
+static int KeyExchange_DHE_RSA_EXPORT
+
+static int KeyExchange_DH_DSS
+
+static int KeyExchange_DH_DSS_EXPORT
+
+static int KeyExchange_DH_RSA
+
+static int KeyExchange_DH_RSA_EXPORT
+
+static int KeyExchange_DH_anon
+
+static int KeyExchange_DH_anon_EXPORT
+
+static int KeyExchange_RSA
+
+static int KeyExchange_RSA_EXPORT
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_DHE_DSS_WITH_DES_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_DHE_RSA_WITH_DES_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_DH_DSS_WITH_DES_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_DH_RSA_WITH_DES_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_DH_anon_EXPORT_WITH_RC4_40_MD5
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_DH_anon_WITH_3DES_EDE_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_DH_anon_WITH_DES_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_DH_anon_WITH_RC4_128_MD5
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_NULL_WITH_NULL_NULL
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_RSA_EXPORT_WITH_DES40_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_RSA_EXPORT_WITH_RC4_40_MD5
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_RSA_WITH_3DES_EDE_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_RSA_WITH_DES_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_RSA_WITH_IDEA_CBC_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_RSA_WITH_NULL_MD5
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_RSA_WITH_NULL_SHA
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_RSA_WITH_RC4_128_MD5
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite TLS_RSA_WITH_RC4_128_SHA
+
+static byte[] code_TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
+
+static byte[] code_TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
+
+static byte[] code_TLS_DHE_DSS_WITH_DES_CBC_SHA
+
+static byte[] code_TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
+
+static byte[] code_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
+
+static byte[] code_TLS_DHE_RSA_WITH_DES_CBC_SHA
+
+static byte[] code_TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA
+
+static byte[] code_TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA
+
+static byte[] code_TLS_DH_DSS_WITH_DES_CBC_SHA
+
+static byte[] code_TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA
+
+static byte[] code_TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA
+
+static byte[] code_TLS_DH_RSA_WITH_DES_CBC_SHA
+
+static byte[] code_TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA
+
+static byte[] code_TLS_DH_anon_EXPORT_WITH_RC4_40_MD5
+
+static byte[] code_TLS_DH_anon_WITH_3DES_EDE_CBC_SHA
+
+static byte[] code_TLS_DH_anon_WITH_DES_CBC_SHA
+
+static byte[] code_TLS_DH_anon_WITH_RC4_128_MD5
+
+static byte[] code_TLS_NULL_WITH_NULL_NULL
+
+static byte[] code_TLS_RSA_EXPORT_WITH_DES40_CBC_SHA
+
+static byte[] code_TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5
+
+static byte[] code_TLS_RSA_EXPORT_WITH_RC4_40_MD5
+
+static byte[] code_TLS_RSA_WITH_3DES_EDE_CBC_SHA
+
+static byte[] code_TLS_RSA_WITH_DES_CBC_SHA
+
+static byte[] code_TLS_RSA_WITH_IDEA_CBC_SHA
+
+static byte[] code_TLS_RSA_WITH_NULL_MD5
+
+static byte[] code_TLS_RSA_WITH_NULL_SHA
+
+static byte[] code_TLS_RSA_WITH_RC4_128_MD5
+
+static byte[] code_TLS_RSA_WITH_RC4_128_SHA
+
+private static org.apache.harmony.xnet.provider.jsse.CipherSuite[] cuitesByCode
+
+private static java.util.Hashtable cuitesByName
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite[] defaultCipherSuites
+
+static java.lang.String[] supportedCipherSuiteNames
+
+static org.apache.harmony.xnet.provider.jsse.CipherSuite[] supportedCipherSuites
+
+final int IVSize
+
+private final int blockSize
+
+final java.lang.String cipherName
+
+private final byte[] cipherSuiteCode
+
+final int effectiveKeyBytes
+
+final int expandedKeyMaterial
+
+private final java.lang.String hashName
+
+private final int hashSize
+
+private final java.lang.String hmacName
+
+private final boolean isExportable
+
+final int keyExchange
+
+final int keyMaterial
+
+private final java.lang.String name
+
+ boolean supported
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String
+boolean
+int
+java.lang.String
+java.lang.String
+byte[])
+
+public static org.apache.harmony.xnet.provider.jsse.CipherSuite getByCode(
+byte
+byte)
+
+public static org.apache.harmony.xnet.provider.jsse.CipherSuite getByCode(
+byte
+byte
+byte)
+
+public static org.apache.harmony.xnet.provider.jsse.CipherSuite getByName(
+java.lang.String)
+
+public static org.apache.harmony.xnet.provider.jsse.CipherSuite[] getSupported()
+
+public static java.lang.String[] getSupportedCipherSuiteNames()
+
+public boolean equals(
+java.lang.Object)
+
+public int getBlockSize()
+
+public java.lang.String getBulkEncryptionAlgorithm()
+
+public java.lang.String getHashName()
+
+public java.lang.String getHmacName()
+
+public int getMACLength()
+
+public java.lang.String getName()
+
+public boolean isAnonymous()
+
+public boolean isExportable()
+
+public byte[] toBytes()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class org.apache.harmony.xnet.provider.jsse.ClientHandshakeImpl$1 extends java.lang.Object implements java.security.PrivilegedExceptionAction
+
+----------------FIELDS----------------
+
+final org.apache.harmony.xnet.provider.jsse.ClientHandshakeImpl this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xnet.provider.jsse.ClientHandshakeImpl)
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public java.lang.Object run()
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.xnet.provider.jsse.HandshakeProtocol extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int FINISHED
+
+public static final int NEED_TASK
+
+public static final int NEED_UNWRAP
+
+public static final int NOT_HANDSHAKING
+
+protected org.apache.harmony.xnet.provider.jsse.CertificateRequest certificateRequest
+
+protected org.apache.harmony.xnet.provider.jsse.CertificateVerify certificateVerify
+
+protected boolean changeCipherSpecReceived
+
+protected org.apache.harmony.xnet.provider.jsse.CertificateMessage clientCert
+
+protected org.apache.harmony.xnet.provider.jsse.Finished clientFinished
+
+protected org.apache.harmony.xnet.provider.jsse.ClientHello clientHello
+
+protected org.apache.harmony.xnet.provider.jsse.ClientKeyExchange clientKeyExchange
+
+protected java.lang.Exception delegatedTaskErr
+
+protected java.util.Vector delegatedTasks
+
+public org.apache.harmony.xnet.provider.jsse.SSLEngineImpl engineOwner
+
+protected org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream io_stream
+
+protected boolean isResuming
+
+private byte[] master_secret_bytes
+
+private boolean needSendCCSpec
+
+protected boolean needSendHelloRequest
+
+protected boolean nonBlocking
+
+protected org.apache.harmony.xnet.provider.jsse.SSLParameters parameters
+
+protected byte[] preMasterSecret
+
+protected org.apache.harmony.xnet.provider.jsse.SSLRecordProtocol recordProtocol
+
+protected org.apache.harmony.xnet.provider.jsse.CertificateMessage serverCert
+
+protected org.apache.harmony.xnet.provider.jsse.Finished serverFinished
+
+protected org.apache.harmony.xnet.provider.jsse.ServerHello serverHello
+
+protected org.apache.harmony.xnet.provider.jsse.ServerHelloDone serverHelloDone
+
+protected org.apache.harmony.xnet.provider.jsse.ServerKeyExchange serverKeyExchange
+
+protected org.apache.harmony.xnet.provider.jsse.SSLSessionImpl session
+
+protected int status
+
+private byte[] verify_data
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/spec/InvalidKeySpecException; )
+protected static int getRSAKeyLength(
+java.security.PublicKey)
+
+protected void clearMessages()
+
+public void computerMasterSecret()
+
+protected void computerReferenceVerifyDataSSLv3(
+byte[])
+
+protected void computerReferenceVerifyDataTLS(
+java.lang.String)
+
+protected void computerVerifyDataSSLv3(
+byte[]
+byte[])
+
+protected void computerVerifyDataTLS(
+java.lang.String
+byte[])
+
+protected void fatalAlert(
+byte
+java.lang.String)
+
+protected void fatalAlert(
+byte
+java.lang.String
+java.lang.Exception)
+
+protected void fatalAlert(
+byte
+javax.net.ssl.SSLException)
+
+public org.apache.harmony.xnet.provider.jsse.SSLSessionImpl getSession()
+
+public javax.net.ssl.SSLEngineResult$HandshakeStatus getStatus()
+
+public java.lang.Runnable getTask()
+
+abstract void makeFinished()
+
+abstract void receiveChangeCipherSpec()
+
+public void send(
+org.apache.harmony.xnet.provider.jsse.Message)
+
+protected void sendChangeCipherSpec()
+
+protected void sendHelloRequest()
+
+protected void sendWarningAlert(
+byte)
+
+public void setRecordProtocol(
+org.apache.harmony.xnet.provider.jsse.SSLRecordProtocol)
+
+protected void shutdown()
+
+public abstract void start()
+
+protected void stop()
+
+protected void unexpectedMessage()
+
+public abstract void unwrap(
+byte[])
+
+public abstract void unwrapSSLv2(
+byte[])
+
+protected void verifyFinished(
+byte[])
+
+public byte[] wrap()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.ClientHandshakeImpl extends org.apache.harmony.xnet.provider.jsse.HandshakeProtocol
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+java.lang.Object)
+
+private org.apache.harmony.xnet.provider.jsse.SSLSessionImpl findSessionToResume()
+
+private void renegotiateNewSession()
+
+private void startSession()
+
+private void verifyServerCert()
+
+protected void makeFinished()
+
+ void processServerHelloDone()
+
+public void receiveChangeCipherSpec()
+
+public void start()
+
+public void unwrap(
+byte[])
+
+public void unwrapSSLv2(
+byte[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.ClientHello extends org.apache.harmony.xnet.provider.jsse.Message
+
+----------------FIELDS----------------
+
+final org.apache.harmony.xnet.provider.jsse.CipherSuite[] cipher_suites
+
+final byte[] client_version
+
+final byte[] compression_methods
+
+final byte[] random
+
+final byte[] session_id
+----------------METHODS----------------
+
+public void <init>(
+java.security.SecureRandom
+byte[]
+byte[]
+org.apache.harmony.xnet.provider.jsse.CipherSuite[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream
+int)
+
+public byte[] getRandom()
+
+public int getType()
+
+public void send(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.ClientKeyExchange extends org.apache.harmony.xnet.provider.jsse.Message
+
+----------------FIELDS----------------
+
+final byte[] exchange_keys
+
+final boolean isRSA
+
+ boolean isTLS
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.math.BigInteger)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream
+int
+boolean
+boolean)
+
+public void <init>(
+byte[]
+boolean)
+
+public int getType()
+
+public boolean isEmpty()
+
+public void send(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream)
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.xnet.provider.jsse.ConnectionState extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected javax.crypto.Cipher decCipher
+
+protected javax.crypto.Cipher encCipher
+
+protected int hash_size
+
+protected boolean is_block_cipher
+
+protected org.apache.harmony.xnet.provider.jsse.Logger$Stream logger
+
+protected final byte[] read_seq_num
+
+protected final byte[] write_seq_num
+----------------METHODS----------------
+
+public void <init>()
+
+protected static void incSequenceNumber(
+byte[])
+
+protected byte[] decrypt(
+byte
+byte[])
+
+protected abstract byte[] decrypt(
+byte
+byte[]
+int
+int)
+
+protected byte[] encrypt(
+byte
+byte[])
+
+protected abstract byte[] encrypt(
+byte
+byte[]
+int
+int)
+
+protected int getContentSize(
+int)
+
+protected int getFragmentSize(
+int)
+
+protected int getMinFragmentSize()
+
+protected void shutdown()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.ConnectionStateSSLv3 extends org.apache.harmony.xnet.provider.jsse.ConnectionState
+
+----------------FIELDS----------------
+
+private final byte[] mac_material_part
+
+private final byte[] mac_read_secret
+
+private final byte[] mac_write_secret
+
+private final java.security.MessageDigest messageDigest
+
+private final byte[] pad_1
+
+private final byte[] pad_2
+----------------METHODS----------------
+
+protected void <init>(
+org.apache.harmony.xnet.provider.jsse.SSLSessionImpl)
+
+protected byte[] decrypt(
+byte
+byte[]
+int
+int)
+
+protected byte[] encrypt(
+byte
+byte[]
+int
+int)
+
+protected void shutdown()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.ConnectionStateTLS extends org.apache.harmony.xnet.provider.jsse.ConnectionState
+
+----------------FIELDS----------------
+
+private static byte[] CLIENT_WRITE_KEY_LABEL
+
+private static byte[] IV_BLOCK_LABEL
+
+private static byte[] KEY_EXPANSION_LABEL
+
+private static byte[] SERVER_WRITE_KEY_LABEL
+
+private final javax.crypto.Mac decMac
+
+private final javax.crypto.Mac encMac
+
+private final byte[] mac_material_header
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+org.apache.harmony.xnet.provider.jsse.SSLSessionImpl)
+
+protected byte[] decrypt(
+byte
+byte[]
+int
+int)
+
+protected byte[] encrypt(
+byte
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.ContentType extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected static final byte ALERT
+
+protected static final byte APPLICATION_DATA
+
+protected static final byte CHANGE_CIPHER_SPEC
+
+protected static final byte HANDSHAKE
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.DHParameters extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static byte[] prime
+
+private static byte[] prime512
+
+private static byte[] primeGroup1
+
+private static byte[] primeGroup2
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static byte[] getPrime()
+
+________________CLASS________________
+
+
+public abstract interface class org.apache.harmony.xnet.provider.jsse.DataStream extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract byte[] getData(
+int)
+
+public abstract boolean hasData()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.DelegatedTask extends java.lang.Object implements java.lang.Runnable
+
+----------------FIELDS----------------
+
+private final java.security.PrivilegedExceptionAction action
+
+private final java.security.AccessControlContext context
+
+private final org.apache.harmony.xnet.provider.jsse.HandshakeProtocol handshaker
+----------------METHODS----------------
+
+public void <init>(
+java.security.PrivilegedExceptionAction
+org.apache.harmony.xnet.provider.jsse.HandshakeProtocol
+java.security.AccessControlContext)
+
+public void run()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.DigitalSignature extends java.lang.Object
+
+----------------FIELDS----------------
+
+private javax.crypto.Cipher cipher
+
+private java.security.MessageDigest md5
+
+private byte[] md5_hash
+
+private java.security.MessageDigest sha
+
+private byte[] sha_hash
+
+private java.security.Signature signature
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void init(
+java.security.PrivateKey)
+
+public void init(
+java.security.cert.Certificate)
+
+public void setMD5(
+byte[])
+
+public void setSHA(
+byte[])
+
+public byte[] sign()
+
+public void update(
+byte[])
+
+public boolean verifySignature(
+byte[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.EndOfBufferException extends java.io.IOException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.EndOfSourceException extends java.io.IOException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.Finished extends org.apache.harmony.xnet.provider.jsse.Message
+
+----------------FIELDS----------------
+
+private byte[] data
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream
+int)
+
+public void <init>(
+byte[])
+
+public byte[] getData()
+
+public int getType()
+
+public void send(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.Handshake extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final byte CERTIFICATE
+
+public static final byte CERTIFICATE_REQUEST
+
+public static final byte CERTIFICATE_VERIFY
+
+public static final byte CLIENT_HELLO
+
+public static final byte CLIENT_KEY_EXCHANGE
+
+public static final byte FINISHED
+
+public static final byte HELLO_REQUEST
+
+public static final byte SERVER_HELLO
+
+public static final byte SERVER_HELLO_DONE
+
+public static final byte SERVER_KEY_EXCHANGE
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public abstract class org.apache.harmony.xnet.provider.jsse.SSLInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public byte[] read(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int readUint16()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int readUint24()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long readUint32()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long readUint64()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int readUint8()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public long skip(
+long)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream extends org.apache.harmony.xnet.provider.jsse.SSLInputStream implements org.apache.harmony.xnet.provider.jsse.Appendable, org.apache.harmony.xnet.provider.jsse.DataStream
+
+----------------FIELDS----------------
+
+private static final java.security.MessageDigest md5
+
+private static final java.security.MessageDigest sha
+
+private int buff_size
+
+private byte[] buffer
+
+private int inc_buff_size
+
+private int marked_pos
+
+private int read_pos
+
+private int read_pos_end
+
+private int write_pos
+
+private int write_pos_beg
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void append(
+byte[]
+int
+int)
+
+private void check(
+int)
+
+private void enlargeBuffer(
+int)
+
+public void append(
+byte[])
+
+public int available()
+
+protected void clearBuffer()
+
+public byte[] getData(
+int)
+
+protected byte[] getDigestMD5()
+
+protected byte[] getDigestMD5withoutLast()
+
+protected byte[] getDigestSHA()
+
+protected byte[] getDigestSHAwithoutLast()
+
+protected byte[] getMessages()
+
+public boolean hasData()
+
+public void mark()
+
+public void mark(
+int)
+
+public boolean markSupported()
+
+protected void printContent(
+java.io.PrintStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public byte[] read(
+int)
+
+protected void removeFromMarkedPosition()
+
+public void reset()
+
+public void write(
+byte)
+
+public void write(
+byte[])
+
+public void writeUint16(
+long)
+
+public void writeUint24(
+long)
+
+public void writeUint32(
+long)
+
+public void writeUint64(
+long)
+
+public void writeUint8(
+long)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.HelloRequest extends org.apache.harmony.xnet.provider.jsse.Message
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream
+int)
+
+public int getType()
+
+public int length()
+
+public void send(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/Void;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class org.apache.harmony.xnet.provider.jsse.JSSEProvider$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final org.apache.harmony.xnet.provider.jsse.JSSEProvider this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xnet.provider.jsse.JSSEProvider)
+
+public volatile java.lang.Object run()
+
+public java.lang.Void run()
+
+________________CLASS________________
+
+
+public final class org.apache.harmony.xnet.provider.jsse.JSSEProvider extends java.security.Provider
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl)
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl$2 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl)
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl extends javax.net.ssl.KeyManagerFactorySpi
+
+----------------FIELDS----------------
+
+private java.security.KeyStore keyStore
+
+private char[] pwd
+----------------METHODS----------------
+
+public void <init>()
+
+public javax.net.ssl.KeyManager[] engineGetKeyManagers()
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException;Ljava/security/NoSuchAlgorithmException;Ljava/security/UnrecoverableKeyException; )
+public void engineInit(
+java.security.KeyStore
+char[])
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public void engineInit(
+javax.net.ssl.ManagerFactoryParameters)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.KeyManagerImpl extends javax.net.ssl.X509ExtendedKeyManager
+
+----------------FIELDS----------------
+
+private final java.util.Hashtable hash
+----------------METHODS----------------
+
+public void <init>(
+java.security.KeyStore
+char[])
+
+private java.lang.String[] chooseAlias(
+java.lang.String[]
+java.security.Principal[])
+
+public java.lang.String chooseClientAlias(
+java.lang.String[]
+java.security.Principal[]
+java.net.Socket)
+
+public java.lang.String chooseEngineClientAlias(
+java.lang.String[]
+java.security.Principal[]
+javax.net.ssl.SSLEngine)
+
+public java.lang.String chooseEngineServerAlias(
+java.lang.String
+java.security.Principal[]
+javax.net.ssl.SSLEngine)
+
+public java.lang.String chooseServerAlias(
+java.lang.String
+java.security.Principal[]
+java.net.Socket)
+
+public java.security.cert.X509Certificate[] getCertificateChain(
+java.lang.String)
+
+public java.lang.String[] getClientAliases(
+java.lang.String
+java.security.Principal[])
+
+public java.security.PrivateKey getPrivateKey(
+java.lang.String)
+
+public java.lang.String[] getServerAliases(
+java.lang.String
+java.security.Principal[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =8 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xnet/provider/jsse/Logger; )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<[Ljava/lang/String;>; )
+final class org.apache.harmony.xnet.provider.jsse.Logger$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+public volatile java.lang.Object run()
+
+public java.lang.String[] run()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Stream )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xnet/provider/jsse/Logger; )
+public class org.apache.harmony.xnet.provider.jsse.Logger$Stream extends java.io.PrintStream
+
+----------------FIELDS----------------
+
+private static int indent
+
+private final java.lang.String prefix
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String)
+
+public void endIndent()
+
+public void newIndent()
+
+public void print(
+java.lang.String)
+
+public void print(
+byte[])
+
+public void print(
+byte[]
+int
+int)
+
+public void printAsHex(
+int
+java.lang.String
+java.lang.String
+byte[])
+
+public void printAsHex(
+int
+java.lang.String
+java.lang.String
+byte[]
+int
+int)
+
+public void println(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/xnet/provider/jsse/Logger$Stream; )
+public class org.apache.harmony.xnet.provider.jsse.Logger extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.lang.String[] names
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static org.apache.harmony.xnet.provider.jsse.Logger$Stream getStream(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.NativeCrypto extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static native int EVP_DigestBlockSize(
+int)
+
+public static native int EVP_DigestFinal(
+int
+byte[]
+int)
+
+public static native void EVP_DigestInit(
+int
+java.lang.String)
+
+public static native int EVP_DigestSize(
+int)
+
+public static native void EVP_DigestUpdate(
+int
+byte[]
+int
+int)
+
+public static native void EVP_PKEY_free(
+int)
+
+public static native int EVP_PKEY_new_DSA(
+byte[]
+byte[]
+byte[]
+byte[]
+byte[])
+
+public static native int EVP_PKEY_new_RSA(
+byte[]
+byte[]
+byte[]
+byte[]
+byte[])
+
+public static native int EVP_VerifyFinal(
+int
+byte[]
+int
+int
+int)
+
+public static native void EVP_VerifyInit(
+int
+java.lang.String)
+
+public static native void EVP_VerifyUpdate(
+int
+byte[]
+int
+int)
+
+public static native void EVP_free(
+int)
+
+public static native int EVP_new()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.crypto.Digest extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int doFinal(
+byte[]
+int)
+
+public abstract java.lang.String getAlgorithmName()
+
+public abstract int getDigestSize()
+
+public abstract void reset()
+
+public abstract void update(
+byte)
+
+public abstract void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.crypto.ExtendedDigest extends java.lang.Object implements org.bouncycastle.crypto.Digest
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int getByteLength()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigest extends java.lang.Object implements org.bouncycastle.crypto.ExtendedDigest
+
+----------------FIELDS----------------
+
+private java.lang.String algorithm
+
+private int ctx
+
+private byte[] singleByte
+----------------METHODS----------------
+
+private void <init>(
+java.lang.String)
+
+public static org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigest getInstance(
+java.lang.String)
+
+public int doFinal(
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public java.lang.String getAlgorithmName()
+
+public int getByteLength()
+
+public int getDigestSize()
+
+public void reset()
+
+public void update(
+byte)
+
+public void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigestJDK extends java.security.MessageDigest
+
+----------------FIELDS----------------
+
+private int ctx
+
+private byte[] singleByte
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+private void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigestJDK getInstance(
+java.lang.String)
+
+protected byte[] engineDigest()
+
+protected void engineReset()
+
+protected void engineUpdate(
+byte)
+
+protected void engineUpdate(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.OpenSSLServerSocketFactoryImpl extends javax.net.ssl.SSLServerSocketFactory
+
+----------------FIELDS----------------
+
+private java.io.IOException instantiationException
+
+private org.apache.harmony.xnet.provider.jsse.SSLParameters sslParameters
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.apache.harmony.xnet.provider.jsse.SSLParameters)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.ServerSocket createServerSocket()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.ServerSocket createServerSocket(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.ServerSocket createServerSocket(
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.ServerSocket createServerSocket(
+int
+int
+java.net.InetAddress)
+
+public java.lang.String[] getDefaultCipherSuites()
+
+public java.lang.String[] getSupportedCipherSuites()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.OpenSSLServerSocketImpl extends javax.net.ssl.SSLServerSocket
+
+----------------FIELDS----------------
+
+private static long SSL_OP_NO_SSLv3
+
+private static long SSL_OP_NO_TLSv1
+
+private static int SSL_VERIFY_CLIENT_ONCE
+
+private static int SSL_VERIFY_FAIL_IF_NO_PEER_CERT
+
+private static int SSL_VERIFY_NONE
+
+private static int SSL_VERIFY_PEER
+
+private static final java.lang.String[] supportedProtocols
+
+private boolean client_mode
+
+private org.apache.harmony.xnet.provider.jsse.SSLParameters sslParameters
+
+private int ssl_ctx
+
+private long ssl_op_no
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+int
+int
+java.net.InetAddress
+org.apache.harmony.xnet.provider.jsse.SSLParameters)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+int
+int
+org.apache.harmony.xnet.provider.jsse.SSLParameters)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+int
+org.apache.harmony.xnet.provider.jsse.SSLParameters)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+org.apache.harmony.xnet.provider.jsse.SSLParameters)
+
+private boolean findSuite(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void init()
+
+private native void nativefree()
+
+private native java.lang.String[] nativegetenabledciphersuites()
+
+static native java.lang.String[] nativegetsupportedciphersuites()
+
+private native void nativeinit(
+java.lang.String
+java.lang.String
+byte[])
+
+private static native void nativeinitstatic()
+
+private native void nativesetclientauth(
+int)
+
+private native void nativesetenabledciphersuites(
+java.lang.String)
+
+private native void nativesetenabledprotocols(
+long)
+
+private void setClientAuth()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket accept()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+public boolean getEnableSessionCreation()
+
+public java.lang.String[] getEnabledCipherSuites()
+
+public java.lang.String[] getEnabledProtocols()
+
+public boolean getNeedClientAuth()
+
+public java.lang.String[] getSupportedCipherSuites()
+
+public java.lang.String[] getSupportedProtocols()
+
+public boolean getUseClientMode()
+
+public boolean getWantClientAuth()
+
+public void setEnableSessionCreation(
+boolean)
+
+public void setEnabledCipherSuites(
+java.lang.String[])
+
+public void setEnabledProtocols(
+java.lang.String[])
+
+public void setNeedClientAuth(
+boolean)
+
+public void setUseClientMode(
+boolean)
+
+public void setWantClientAuth(
+boolean)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.OpenSSLSessionImpl extends java.lang.Object implements javax.net.ssl.SSLSession
+
+----------------FIELDS----------------
+
+private boolean isValid
+
+ long lastAccessedTime
+
+ java.security.cert.X509Certificate[] localCertificates
+
+private javax.security.cert.X509Certificate[] peerCertificateChain
+
+ java.security.cert.X509Certificate[] peerCertificates
+
+private java.lang.String peerHost
+
+private int peerPort
+
+protected int session
+
+private org.apache.harmony.xnet.provider.jsse.SSLParameters sslParameters
+
+private org.apache.harmony.luni.util.TwoKeyHashMap values
+----------------METHODS----------------
+
+protected void <init>(
+int
+org.apache.harmony.xnet.provider.jsse.SSLParameters
+java.lang.String
+int)
+
+private native void nativefree(
+int)
+
+private native java.lang.String nativegetciphersuite()
+
+private native long nativegetcreationtime()
+
+private native byte[] nativegetid()
+
+private native byte[][] nativegetpeercertificates()
+
+private native java.lang.String nativegetpeerhost()
+
+private native java.lang.String nativegetpeerport()
+
+private native java.lang.String nativegetprotocol()
+
+protected void finalize()
+
+public int getApplicationBufferSize()
+
+public java.lang.String getCipherSuite()
+
+public long getCreationTime()
+
+public byte[] getId()
+
+public long getLastAccessedTime()
+
+public java.security.cert.Certificate[] getLocalCertificates()
+
+public java.security.Principal getLocalPrincipal()
+
+public int getPacketBufferSize()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public javax.security.cert.X509Certificate[] getPeerCertificateChain()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public java.security.cert.Certificate[] getPeerCertificates()
+
+public java.lang.String getPeerHost()
+
+public int getPeerPort()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public java.security.Principal getPeerPrincipal()
+
+public java.lang.String getProtocol()
+
+public javax.net.ssl.SSLSessionContext getSessionContext()
+
+public java.lang.Object getValue(
+java.lang.String)
+
+public java.lang.String[] getValueNames()
+
+public void invalidate()
+
+public boolean isValid()
+
+public void putValue(
+java.lang.String
+java.lang.Object)
+
+public void removeValue(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.OpenSSLSignature extends java.security.Signature
+
+----------------FIELDS----------------
+
+private int ctx
+
+private int dsa
+
+private java.lang.String evpAlgorithm
+
+private int rsa
+
+private byte[] singleByte
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+private void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+public static org.apache.harmony.xnet.provider.jsse.OpenSSLSignature getInstance(
+java.lang.String)
+
+private static void log(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidParameterException; )
+protected java.lang.Object engineGetParameter(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInitSign(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInitVerify(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidParameterException; )
+protected void engineSetParameter(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected byte[] engineSign()
+
+protected void engineUpdate(
+byte)
+
+protected void engineUpdate(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected boolean engineVerify(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/lang/Throwable; )
+protected void finalize()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.OpenSSLSocketFactoryImpl extends javax.net.ssl.SSLSocketFactory
+
+----------------FIELDS----------------
+
+private java.io.IOException instantiationException
+
+private org.apache.harmony.xnet.provider.jsse.SSLParameters sslParameters
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.apache.harmony.xnet.provider.jsse.SSLParameters)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket createSocket()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/net/UnknownHostException; )
+public java.net.Socket createSocket(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/net/UnknownHostException; )
+public java.net.Socket createSocket(
+java.lang.String
+int
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket createSocket(
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket createSocket(
+java.net.InetAddress
+int
+java.net.InetAddress
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.net.Socket createSocket(
+java.net.Socket
+java.lang.String
+int
+boolean)
+
+public java.lang.String[] getDefaultCipherSuites()
+
+public java.lang.String[] getSupportedCipherSuites()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xnet/provider/jsse/OpenSSLSocketImpl; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =Finalizer )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xnet/provider/jsse/OpenSSLSocketImpl; )
+ class org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$Finalizer extends java.lang.Thread
+
+----------------FIELDS----------------
+
+final org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl this$0
+----------------METHODS----------------
+
+private void <init>(
+org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl)
+
+ void <init>(
+org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl
+org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$1)
+
+public void run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xnet/provider/jsse/OpenSSLSocketImpl; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =SSLInputStream )
+ class org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream extends java.io.InputStream
+
+----------------FIELDS----------------
+
+final org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl this$0
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void <init>(
+org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =SSLOutputStream )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xnet/provider/jsse/OpenSSLSocketImpl; )
+ class org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLOutputStream extends java.io.OutputStream
+
+----------------FIELDS----------------
+
+final org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl this$0
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void <init>(
+org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/apache/harmony/xnet/provider/jsse/OpenSSLSocketImpl$1;Lorg/apache/harmony/xnet/provider/jsse/OpenSSLSocketImpl$Finalizer;Lorg/apache/harmony/xnet/provider/jsse/OpenSSLSocketImpl$SSLOutputStream;Lorg/apache/harmony/xnet/provider/jsse/OpenSSLSocketImpl$SSLInputStream; )
+public class org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl extends javax.net.ssl.SSLSocket
+
+----------------FIELDS----------------
+
+private static long SSL_OP_NO_SSLv3
+
+private static long SSL_OP_NO_TLSv1
+
+private static int instanceCount
+
+private static final java.lang.String[] supportedProtocols
+
+private java.net.InetSocketAddress address
+
+private boolean autoClose
+
+private java.lang.Object handshakeLock
+
+private boolean handshakeStarted
+
+private java.io.InputStream is
+
+private java.util.ArrayList listeners
+
+private java.io.OutputStream os
+
+private java.lang.Object readLock
+
+private java.net.Socket socket
+
+private int ssl
+
+private org.apache.harmony.xnet.provider.jsse.SSLParameters sslParameters
+
+private org.apache.harmony.xnet.provider.jsse.OpenSSLSessionImpl sslSession
+
+private int ssl_ctx
+
+private long ssl_op_no
+
+private int timeout
+
+private java.lang.Object writeLock
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+java.lang.String
+int
+java.net.InetAddress
+int
+org.apache.harmony.xnet.provider.jsse.SSLParameters)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+java.lang.String
+int
+org.apache.harmony.xnet.provider.jsse.SSLParameters)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+java.net.InetAddress
+int
+java.net.InetAddress
+int
+org.apache.harmony.xnet.provider.jsse.SSLParameters)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+java.net.InetAddress
+int
+org.apache.harmony.xnet.provider.jsse.SSLParameters)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+java.net.Socket
+java.lang.String
+int
+boolean
+org.apache.harmony.xnet.provider.jsse.SSLParameters)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+org.apache.harmony.xnet.provider.jsse.SSLParameters)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+org.apache.harmony.xnet.provider.jsse.SSLParameters
+long)
+
+static java.lang.Object access$000(
+org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl)
+
+static int access$100(
+org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static int access$200(
+org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static int access$300(
+org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl
+byte[]
+int
+int
+int)
+
+static java.lang.Object access$400(
+org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static void access$500(
+org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static void access$600(
+org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl
+byte[]
+int
+int)
+
+static java.net.Socket access$800(
+org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl)
+
+private boolean findSuite(
+java.lang.String)
+
+public static int getInstanceCount()
+
+private org.apache.harmony.xnet.provider.jsse.OpenSSLSessionImpl getOpenSSLSessionImpl()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void init()
+
+private native java.lang.String nativecipherauthenticationmethod()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native void nativeclose()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native boolean nativeconnect(
+int
+java.net.Socket
+boolean
+int)
+
+private native void nativefree()
+
+private native java.lang.String[] nativegetenabledciphersuites()
+
+private native int nativegetsslsession(
+int)
+
+static native java.lang.String[] nativegetsupportedciphersuites()
+
+private native void nativeinit(
+java.lang.String
+java.lang.String
+byte[])
+
+private static native void nativeinitstatic()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native void nativeinterrupt()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native int nativeread(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native int nativeread(
+byte[]
+int
+int
+int)
+
+private native void nativesetenabledciphersuites(
+java.lang.String)
+
+private native void nativesetenabledprotocols(
+long)
+
+private static native int nativeverifysignature(
+byte[]
+byte[]
+java.lang.String
+byte[]
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native void nativewrite(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private native void nativewrite(
+byte[]
+int
+int)
+
+private static void updateInstanceCount(
+int)
+
+public static boolean verifySignature(
+byte[]
+byte[]
+java.lang.String
+java.security.interfaces.RSAPublicKey)
+
+private int verify_callback(
+byte[][])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void accept(
+int
+boolean)
+
+public void addHandshakeCompletedListener(
+javax.net.ssl.HandshakeCompletedListener)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void close()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void finalize()
+
+public boolean getEnableSessionCreation()
+
+public java.lang.String[] getEnabledCipherSuites()
+
+public java.lang.String[] getEnabledProtocols()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.InputStream getInputStream()
+
+public boolean getNeedClientAuth()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public java.io.OutputStream getOutputStream()
+
+public javax.net.ssl.SSLSession getSession()
+
+public java.lang.String[] getSupportedCipherSuites()
+
+public java.lang.String[] getSupportedProtocols()
+
+public boolean getUseClientMode()
+
+public boolean getWantClientAuth()
+
+synchronized native void nativeaccept(
+java.net.Socket
+int
+boolean)
+
+public void removeHandshakeCompletedListener(
+javax.net.ssl.HandshakeCompletedListener)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void sendUrgentData(
+int)
+
+public void setEnableSessionCreation(
+boolean)
+
+public void setEnabledCipherSuites(
+java.lang.String[])
+
+public void setEnabledProtocols(
+java.lang.String[])
+
+public void setNeedClientAuth(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setOOBInline(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setSoTimeout(
+int)
+
+public void setUseClientMode(
+boolean)
+
+public void setWantClientAuth(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void shutdownInput()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void shutdownOutput()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void startHandshake()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImplWrapper extends org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl
+
+----------------FIELDS----------------
+
+private java.net.Socket socket
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void <init>(
+java.net.Socket
+java.lang.String
+int
+boolean
+org.apache.harmony.xnet.provider.jsse.SSLParameters)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void bind(
+java.net.SocketAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connect(
+java.net.SocketAddress)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void connect(
+java.net.SocketAddress
+int)
+
+public java.net.InetAddress getInetAddress()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public boolean getKeepAlive()
+
+public java.net.InetAddress getLocalAddress()
+
+public int getLocalPort()
+
+public java.net.SocketAddress getLocalSocketAddress()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public boolean getOOBInline()
+
+public int getPort()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getReceiveBufferSize()
+
+public java.net.SocketAddress getRemoteSocketAddress()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public boolean getReuseAddress()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getSendBufferSize()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getSoLinger()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getSoTimeout()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public boolean getTcpNoDelay()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public int getTrafficClass()
+
+public boolean isBound()
+
+public boolean isClosed()
+
+public boolean isConnected()
+
+public boolean isInputShutdown()
+
+public boolean isOutputShutdown()
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setKeepAlive(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setReceiveBufferSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setReuseAddress(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setSendBufferSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setSoLinger(
+boolean
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setSoTimeout(
+int)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setTcpNoDelay(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/net/SocketException; )
+public void setTrafficClass(
+int)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.PRF extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static org.apache.harmony.xnet.provider.jsse.Logger$Stream logger
+
+protected static java.security.MessageDigest md5
+
+private static javax.crypto.Mac md5_mac
+
+private static int md5_mac_length
+
+protected static java.security.MessageDigest sha
+
+private static javax.crypto.Mac sha_mac
+
+private static int sha_mac_length
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/GeneralSecurityException; )
+static void computePRF(
+byte[]
+byte[]
+byte[]
+byte[])
+
+static void computePRF_SSLv3(
+byte[]
+byte[]
+byte[])
+
+private static void init()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.ProtocolVersion extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static org.apache.harmony.xnet.provider.jsse.ProtocolVersion SSLv3
+
+public static org.apache.harmony.xnet.provider.jsse.ProtocolVersion TLSv1
+
+private static java.util.Hashtable protocolsByName
+
+public static final java.lang.String[] supportedProtocols
+
+public final java.lang.String name
+
+public final byte[] version
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+java.lang.String
+byte[])
+
+public static org.apache.harmony.xnet.provider.jsse.ProtocolVersion getByName(
+java.lang.String)
+
+public static org.apache.harmony.xnet.provider.jsse.ProtocolVersion getByVersion(
+byte[])
+
+public static org.apache.harmony.xnet.provider.jsse.ProtocolVersion getLatestVersion(
+java.lang.String[])
+
+public static boolean isSupported(
+java.lang.String)
+
+public static boolean isSupported(
+byte[])
+
+public boolean equals(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.SSLBufferedInput extends org.apache.harmony.xnet.provider.jsse.SSLInputStream
+
+----------------FIELDS----------------
+
+private int bytik
+
+private int consumed
+
+private java.nio.ByteBuffer in
+----------------METHODS----------------
+
+protected void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+
+protected int consumed()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+
+protected void setSourceBuffer(
+java.nio.ByteBuffer)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.SSLContextImpl extends javax.net.ssl.SSLContextSpi
+
+----------------FIELDS----------------
+
+private org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl clientSessionContext
+
+private org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl serverSessionContext
+
+protected org.apache.harmony.xnet.provider.jsse.SSLParameters sslParameters
+----------------METHODS----------------
+
+public void <init>()
+
+public javax.net.ssl.SSLEngine engineCreateSSLEngine()
+
+public javax.net.ssl.SSLEngine engineCreateSSLEngine(
+java.lang.String
+int)
+
+public javax.net.ssl.SSLSessionContext engineGetClientSessionContext()
+
+public javax.net.ssl.SSLSessionContext engineGetServerSessionContext()
+
+public javax.net.ssl.SSLServerSocketFactory engineGetServerSocketFactory()
+
+public javax.net.ssl.SSLSocketFactory engineGetSocketFactory()
+@dalvik.annotation.Throws (value =Ljava/security/KeyManagementException; )
+public void engineInit(
+javax.net.ssl.KeyManager[]
+javax.net.ssl.TrustManager[]
+java.security.SecureRandom)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.SSLEngineAppData extends java.lang.Object implements org.apache.harmony.xnet.provider.jsse.Appendable
+
+----------------FIELDS----------------
+
+ byte[] buffer
+----------------METHODS----------------
+
+protected void <init>()
+
+public void append(
+byte[])
+
+protected int placeTo(
+java.nio.ByteBuffer[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.SSLEngineDataStream extends java.lang.Object implements org.apache.harmony.xnet.provider.jsse.DataStream
+
+----------------FIELDS----------------
+
+private int available
+
+private int consumed
+
+private int limit
+
+private int offset
+
+private java.nio.ByteBuffer[] srcs
+----------------METHODS----------------
+
+protected void <init>()
+
+public int available()
+
+protected int consumed()
+
+public byte[] getData(
+int)
+
+public boolean hasData()
+
+protected void setSourceBuffers(
+java.nio.ByteBuffer[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.SSLEngineImpl extends javax.net.ssl.SSLEngine
+
+----------------FIELDS----------------
+
+private org.apache.harmony.xnet.provider.jsse.AlertProtocol alertProtocol
+
+private org.apache.harmony.xnet.provider.jsse.SSLEngineAppData appData
+
+private boolean close_notify_was_received
+
+private boolean close_notify_was_sent
+
+private org.apache.harmony.xnet.provider.jsse.SSLEngineDataStream dataStream
+
+private boolean engine_was_closed
+
+private boolean engine_was_shutteddown
+
+private org.apache.harmony.xnet.provider.jsse.HandshakeProtocol handshakeProtocol
+
+private boolean handshake_started
+
+private boolean isInboundDone
+
+private boolean isOutboundDone
+
+private org.apache.harmony.xnet.provider.jsse.Logger$Stream logger
+
+private boolean peer_mode_was_set
+
+private org.apache.harmony.xnet.provider.jsse.SSLBufferedInput recProtIS
+
+protected org.apache.harmony.xnet.provider.jsse.SSLRecordProtocol recordProtocol
+
+private byte[] remaining_hsh_data
+
+private byte[] remaining_wrapped_data
+
+private org.apache.harmony.xnet.provider.jsse.SSLSessionImpl session
+
+protected org.apache.harmony.xnet.provider.jsse.SSLParameters sslParameters
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.String
+int
+org.apache.harmony.xnet.provider.jsse.SSLParameters)
+
+protected void <init>(
+org.apache.harmony.xnet.provider.jsse.SSLParameters)
+
+private javax.net.ssl.SSLEngineResult$Status getEngineStatus()
+
+private void shutdown()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public void beginHandshake()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public void closeInbound()
+
+public void closeOutbound()
+
+public java.lang.Runnable getDelegatedTask()
+
+public boolean getEnableSessionCreation()
+
+public java.lang.String[] getEnabledCipherSuites()
+
+public java.lang.String[] getEnabledProtocols()
+
+public javax.net.ssl.SSLEngineResult$HandshakeStatus getHandshakeStatus()
+
+public boolean getNeedClientAuth()
+
+public javax.net.ssl.SSLSession getSession()
+
+public java.lang.String[] getSupportedCipherSuites()
+
+public java.lang.String[] getSupportedProtocols()
+
+public boolean getUseClientMode()
+
+public boolean getWantClientAuth()
+
+public boolean isInboundDone()
+
+public boolean isOutboundDone()
+
+public void setEnableSessionCreation(
+boolean)
+
+public void setEnabledCipherSuites(
+java.lang.String[])
+
+public void setEnabledProtocols(
+java.lang.String[])
+
+public void setNeedClientAuth(
+boolean)
+
+public void setUseClientMode(
+boolean)
+
+public void setWantClientAuth(
+boolean)
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public javax.net.ssl.SSLEngineResult unwrap(
+java.nio.ByteBuffer
+java.nio.ByteBuffer[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLException; )
+public javax.net.ssl.SSLEngineResult wrap(
+java.nio.ByteBuffer[]
+int
+int
+java.nio.ByteBuffer)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.SSLParameters extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static javax.net.ssl.X509KeyManager defaultKeyManager
+
+private static org.apache.harmony.xnet.provider.jsse.SSLParameters defaultParameters
+
+private static java.security.SecureRandom defaultSecureRandom
+
+private static javax.net.ssl.X509TrustManager defaultTrustManager
+
+private org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl clientSessionContext
+
+private boolean client_mode
+
+private boolean enable_session_creation
+
+private java.lang.String[] enabledCipherSuiteNames
+
+private org.apache.harmony.xnet.provider.jsse.CipherSuite[] enabledCipherSuites
+
+private java.lang.String[] enabledProtocols
+
+private javax.net.ssl.X509KeyManager keyManager
+
+private boolean need_client_auth
+
+private java.security.SecureRandom secureRandom
+
+private org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl serverSessionContext
+
+private int ssl_ctx
+
+private javax.net.ssl.X509TrustManager trustManager
+
+private boolean want_client_auth
+----------------METHODS----------------
+
+private void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/KeyManagementException; )
+protected void <init>(
+javax.net.ssl.KeyManager[]
+javax.net.ssl.TrustManager[]
+java.security.SecureRandom
+org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl
+org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl)
+@dalvik.annotation.Throws (value =Ljava/security/KeyManagementException; )
+protected static org.apache.harmony.xnet.provider.jsse.SSLParameters getDefault()
+
+private native int nativeinitsslctx()
+
+protected java.lang.Object clone()
+
+protected org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl getClientSessionContext()
+
+protected boolean getEnableSessionCreation()
+
+protected java.lang.String[] getEnabledCipherSuites()
+
+protected org.apache.harmony.xnet.provider.jsse.CipherSuite[] getEnabledCipherSuitesMember()
+
+protected java.lang.String[] getEnabledProtocols()
+
+protected javax.net.ssl.X509KeyManager getKeyManager()
+
+protected boolean getNeedClientAuth()
+
+protected int getSSLCTX()
+
+protected java.security.SecureRandom getSecureRandom()
+
+protected java.security.SecureRandom getSecureRandomMember()
+
+protected org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl getServerSessionContext()
+
+protected javax.net.ssl.X509TrustManager getTrustManager()
+
+protected boolean getUseClientMode()
+
+protected boolean getWantClientAuth()
+
+protected void setEnableSessionCreation(
+boolean)
+
+protected void setEnabledCipherSuites(
+java.lang.String[])
+
+protected void setEnabledProtocols(
+java.lang.String[])
+
+protected void setNeedClientAuth(
+boolean)
+
+protected void setUseClientMode(
+boolean)
+
+protected void setWantClientAuth(
+boolean)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.SSLRecordProtocol extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected static int MAX_CIPHERED_DATA_LENGTH
+
+protected static int MAX_COMPRESSED_DATA_LENGTH
+
+protected static int MAX_DATA_LENGTH
+
+protected static int MAX_SSL_PACKET_SIZE
+
+private static final byte[] change_cipher_spec_byte
+
+private org.apache.harmony.xnet.provider.jsse.ConnectionState activeReadState
+
+private org.apache.harmony.xnet.provider.jsse.ConnectionState activeWriteState
+
+private org.apache.harmony.xnet.provider.jsse.AlertProtocol alertProtocol
+
+private org.apache.harmony.xnet.provider.jsse.Appendable appData
+
+private org.apache.harmony.xnet.provider.jsse.HandshakeProtocol handshakeProtocol
+
+private org.apache.harmony.xnet.provider.jsse.SSLInputStream in
+
+private org.apache.harmony.xnet.provider.jsse.Logger$Stream logger
+
+private org.apache.harmony.xnet.provider.jsse.ConnectionState pendingConnectionState
+
+private org.apache.harmony.xnet.provider.jsse.SSLSessionImpl session
+
+private boolean sessionWasChanged
+
+private byte[] version
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+org.apache.harmony.xnet.provider.jsse.HandshakeProtocol
+org.apache.harmony.xnet.provider.jsse.AlertProtocol
+org.apache.harmony.xnet.provider.jsse.SSLInputStream
+org.apache.harmony.xnet.provider.jsse.Appendable)
+
+private byte[] packetize(
+byte
+byte[]
+byte[])
+
+private void setSession(
+org.apache.harmony.xnet.provider.jsse.SSLSessionImpl)
+
+protected void alert(
+byte
+byte)
+
+protected byte[] getChangeCipherSpecMesage(
+org.apache.harmony.xnet.provider.jsse.SSLSessionImpl)
+
+protected int getDataSize(
+int)
+
+protected int getMinRecordSize()
+
+protected int getRecordSize(
+int)
+
+protected org.apache.harmony.xnet.provider.jsse.SSLSessionImpl getSession()
+
+protected void setVersion(
+byte[])
+
+protected void shutdown()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected int unwrap()
+
+protected byte[] wrap(
+byte
+org.apache.harmony.xnet.provider.jsse.DataStream)
+
+protected byte[] wrap(
+byte
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/util/LinkedHashMap<[BLjavax/net/ssl/SSLSession;>; )
+@dalvik.annotation.EnclosingClass (value =Lorg/apache/harmony/xnet/provider/jsse/SSLSessionContextImpl; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl$1 extends java.util.LinkedHashMap
+
+----------------FIELDS----------------
+
+final org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl
+int
+float
+boolean)
+
+public boolean removeEldestEntry(
+java.util.Map$Entry)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/util/Enumeration<[B>; )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl$2 extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+@dalvik.annotation.Signature (value =Ljava/util/Iterator<[B>; )
+ java.util.Iterator iterator
+
+final org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl)
+
+public boolean hasMoreElements()
+
+public volatile java.lang.Object nextElement()
+
+public byte[] nextElement()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl extends java.lang.Object implements javax.net.ssl.SSLSessionContext
+
+----------------FIELDS----------------
+
+private int cacheSize
+@dalvik.annotation.Signature (value =Ljava/util/LinkedHashMap<[BLjavax/net/ssl/SSLSession;>; )
+private volatile java.util.LinkedHashMap clone
+@dalvik.annotation.Signature (value =Ljava/util/LinkedHashMap<[BLjavax/net/ssl/SSLSession;>; )
+private final java.util.LinkedHashMap sessions
+
+private long timeout
+----------------METHODS----------------
+
+public void <init>()
+
+static int access$000(
+org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl)
+
+static java.util.LinkedHashMap access$100(
+org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl)
+@dalvik.annotation.Signature (value =()Ljava/util/Enumeration<[B>; )
+public java.util.Enumeration getIds()
+
+public javax.net.ssl.SSLSession getSession(
+byte[])
+
+public int getSessionCacheSize()
+
+public int getSessionTimeout()
+
+ void putSession(
+javax.net.ssl.SSLSession)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void setSessionCacheSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void setSessionTimeout(
+int)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.SSLSessionImpl extends java.lang.Object implements javax.net.ssl.SSLSession
+
+----------------FIELDS----------------
+
+public static final org.apache.harmony.xnet.provider.jsse.SSLSessionImpl NULL_SESSION
+
+ org.apache.harmony.xnet.provider.jsse.CipherSuite cipherSuite
+
+ byte[] clientRandom
+
+ org.apache.harmony.xnet.provider.jsse.SSLSessionContextImpl context
+
+private long creationTime
+
+ byte[] id
+
+ boolean isServer
+
+private boolean isValid
+
+ long lastAccessedTime
+
+ java.security.cert.X509Certificate[] localCertificates
+
+ byte[] master_secret
+
+ java.security.cert.X509Certificate[] peerCertificates
+
+ java.lang.String peerHost
+
+ int peerPort
+
+ org.apache.harmony.xnet.provider.jsse.ProtocolVersion protocol
+
+ byte[] serverRandom
+
+private org.apache.harmony.luni.util.TwoKeyHashMap values
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+public void <init>(
+java.security.SecureRandom)
+
+public void <init>(
+org.apache.harmony.xnet.provider.jsse.CipherSuite
+java.security.SecureRandom)
+
+public java.lang.Object clone()
+
+public int getApplicationBufferSize()
+
+public java.lang.String getCipherSuite()
+
+public long getCreationTime()
+
+public byte[] getId()
+
+public long getLastAccessedTime()
+
+public java.security.cert.Certificate[] getLocalCertificates()
+
+public java.security.Principal getLocalPrincipal()
+
+public int getPacketBufferSize()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public javax.security.cert.X509Certificate[] getPeerCertificateChain()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public java.security.cert.Certificate[] getPeerCertificates()
+
+public java.lang.String getPeerHost()
+
+public int getPeerPort()
+@dalvik.annotation.Throws (value =Ljavax/net/ssl/SSLPeerUnverifiedException; )
+public java.security.Principal getPeerPrincipal()
+
+public java.lang.String getProtocol()
+
+public javax.net.ssl.SSLSessionContext getSessionContext()
+
+public java.lang.Object getValue(
+java.lang.String)
+
+public java.lang.String[] getValueNames()
+
+public void invalidate()
+
+public boolean isValid()
+
+public void putValue(
+java.lang.String
+java.lang.Object)
+
+public void removeValue(
+java.lang.String)
+
+ void setPeer(
+java.lang.String
+int)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.SSLStreamedInput extends org.apache.harmony.xnet.provider.jsse.SSLInputStream
+
+----------------FIELDS----------------
+
+private java.io.InputStream in
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int available()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.SSLv3Constants extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final byte[] MD5pad1
+
+static final byte[] MD5pad2
+
+static final byte[] SHApad1
+
+static final byte[] SHApad2
+
+static final byte[] client
+
+static final byte[] server
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class org.apache.harmony.xnet.provider.jsse.ServerHandshakeImpl$1 extends java.lang.Object implements java.security.PrivilegedExceptionAction
+
+----------------FIELDS----------------
+
+final org.apache.harmony.xnet.provider.jsse.ServerHandshakeImpl this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xnet.provider.jsse.ServerHandshakeImpl)
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public java.lang.Object run()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class org.apache.harmony.xnet.provider.jsse.ServerHandshakeImpl$2 extends java.lang.Object implements java.security.PrivilegedExceptionAction
+
+----------------FIELDS----------------
+
+final org.apache.harmony.xnet.provider.jsse.ServerHandshakeImpl this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xnet.provider.jsse.ServerHandshakeImpl)
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public java.lang.Object run()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.ServerHandshakeImpl extends org.apache.harmony.xnet.provider.jsse.HandshakeProtocol
+
+----------------FIELDS----------------
+
+private java.security.PrivateKey privKey
+----------------METHODS----------------
+
+public void <init>(
+java.lang.Object)
+
+private org.apache.harmony.xnet.provider.jsse.SSLSessionImpl findSessionToResume(
+byte[])
+
+private org.apache.harmony.xnet.provider.jsse.CipherSuite selectSuite(
+org.apache.harmony.xnet.provider.jsse.CipherSuite[])
+
+protected void makeFinished()
+
+ void processClientHello()
+
+public void receiveChangeCipherSpec()
+
+public void start()
+
+public void unwrap(
+byte[])
+
+public void unwrapSSLv2(
+byte[])
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.ServerHello extends org.apache.harmony.xnet.provider.jsse.Message
+
+----------------FIELDS----------------
+
+ org.apache.harmony.xnet.provider.jsse.CipherSuite cipher_suite
+
+ byte compression_method
+
+ byte[] random
+
+ byte[] server_version
+
+ byte[] session_id
+----------------METHODS----------------
+
+public void <init>(
+java.security.SecureRandom
+byte[]
+byte[]
+org.apache.harmony.xnet.provider.jsse.CipherSuite
+byte)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream
+int)
+
+public byte[] getRandom()
+
+public int getType()
+
+public void send(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.ServerHelloDone extends org.apache.harmony.xnet.provider.jsse.Message
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream
+int)
+
+public int getType()
+
+public int length()
+
+public void send(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.ServerKeyExchange extends org.apache.harmony.xnet.provider.jsse.Message
+
+----------------FIELDS----------------
+
+final byte[] bytes1
+
+final byte[] bytes2
+
+final byte[] bytes3
+
+final byte[] hash
+
+private java.security.interfaces.RSAPublicKey key
+
+final java.math.BigInteger par1
+
+final java.math.BigInteger par2
+
+final java.math.BigInteger par3
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream
+int
+int)
+
+public java.security.interfaces.RSAPublicKey getRSAPublicKey()
+
+public int getType()
+
+public void send(
+org.apache.harmony.xnet.provider.jsse.HandshakeIODataStream)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+ class org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl$1 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl)
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+@dalvik.annotation.Signature (value =Ljava/lang/Object;Ljava/security/PrivilegedAction<Ljava/lang/String;>; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingMethod (value =null )
+ class org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl$2 extends java.lang.Object implements java.security.PrivilegedAction
+
+----------------FIELDS----------------
+
+final org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl this$0
+----------------METHODS----------------
+
+ void <init>(
+org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl)
+
+public volatile java.lang.Object run()
+
+public java.lang.String run()
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl extends javax.net.ssl.TrustManagerFactorySpi
+
+----------------FIELDS----------------
+
+private java.security.KeyStore keyStore
+----------------METHODS----------------
+
+public void <init>()
+
+public javax.net.ssl.TrustManager[] engineGetTrustManagers()
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public void engineInit(
+java.security.KeyStore)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public void engineInit(
+javax.net.ssl.ManagerFactoryParameters)
+
+________________CLASS________________
+
+
+public class org.apache.harmony.xnet.provider.jsse.TrustManagerImpl extends java.lang.Object implements javax.net.ssl.X509TrustManager
+
+----------------FIELDS----------------
+
+private java.lang.Exception err
+
+private java.security.cert.CertificateFactory factory
+
+private java.security.cert.PKIXParameters params
+
+private java.security.cert.CertPathValidator validator
+----------------METHODS----------------
+
+public void <init>(
+java.security.KeyStore)
+
+private boolean isDirectlyTrustedCert(
+java.security.cert.X509Certificate[])
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public void checkClientTrusted(
+java.security.cert.X509Certificate[]
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public void checkServerTrusted(
+java.security.cert.X509Certificate[]
+java.lang.String)
+
+public java.security.cert.X509Certificate[] getAcceptedIssuers()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.ASN1Choice extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/asn1/ASN1Collection; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class org.bouncycastle.asn1.ASN1Collection$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =ASN1CollectionEnumeration )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/asn1/ASN1Collection; )
+ class org.bouncycastle.asn1.ASN1Collection$ASN1CollectionEnumeration extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+
+private int at
+
+private final int origSize
+
+final org.bouncycastle.asn1.ASN1Collection this$0
+----------------METHODS----------------
+
+private void <init>(
+org.bouncycastle.asn1.ASN1Collection)
+
+ void <init>(
+org.bouncycastle.asn1.ASN1Collection
+org.bouncycastle.asn1.ASN1Collection$1)
+
+public boolean hasMoreElements()
+
+public java.lang.Object nextElement()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.DEREncodable extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.bouncycastle.asn1.DERObject getDERObject()
+
+________________CLASS________________
+
+
+public abstract class org.bouncycastle.asn1.ASN1Encodable extends java.lang.Object implements org.bouncycastle.asn1.DEREncodable
+
+----------------FIELDS----------------
+
+public static final java.lang.String BER
+
+public static final java.lang.String DER
+----------------METHODS----------------
+
+public void <init>()
+
+public boolean equals(
+java.lang.Object)
+
+public byte[] getDEREncoded()
+
+public org.bouncycastle.asn1.DERObject getDERObject()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public byte[] getEncoded()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public byte[] getEncoded(
+java.lang.String)
+
+public int hashCode()
+
+public abstract org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.DERTags extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int APPLICATION
+
+public static final int BIT_STRING
+
+public static final int BMP_STRING
+
+public static final int BOOLEAN
+
+public static final int CONSTRUCTED
+
+public static final int ENUMERATED
+
+public static final int EXTERNAL
+
+public static final int GENERALIZED_TIME
+
+public static final int GENERAL_STRING
+
+public static final int GRAPHIC_STRING
+
+public static final int IA5_STRING
+
+public static final int INTEGER
+
+public static final int NULL
+
+public static final int NUMERIC_STRING
+
+public static final int OBJECT_IDENTIFIER
+
+public static final int OCTET_STRING
+
+public static final int PRINTABLE_STRING
+
+public static final int SEQUENCE
+
+public static final int SEQUENCE_OF
+
+public static final int SET
+
+public static final int SET_OF
+
+public static final int T61_STRING
+
+public static final int TAGGED
+
+public static final int UNIVERSAL_STRING
+
+public static final int UTC_TIME
+
+public static final int UTF8_STRING
+
+public static final int VIDEOTEX_STRING
+
+public static final int VISIBLE_STRING
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public abstract class org.bouncycastle.asn1.DERObject extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.DERTags
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+abstract void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public abstract boolean equals(
+java.lang.Object)
+
+public abstract int hashCode()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/asn1/ASN1Collection$1;Lorg/bouncycastle/asn1/ASN1Collection$ASN1CollectionEnumeration; )
+public abstract class org.bouncycastle.asn1.ASN1Collection extends org.bouncycastle.asn1.DERObject
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DEREncodable obj0
+
+private org.bouncycastle.asn1.DEREncodable obj1
+
+private org.bouncycastle.asn1.DEREncodable obj2
+
+private org.bouncycastle.asn1.DEREncodable obj3
+
+private org.bouncycastle.asn1.DEREncodable[] rest
+
+private int size
+----------------METHODS----------------
+
+public void <init>()
+
+static int access$100(
+org.bouncycastle.asn1.ASN1Collection)
+
+static org.bouncycastle.asn1.DEREncodable access$200(
+org.bouncycastle.asn1.ASN1Collection)
+
+static org.bouncycastle.asn1.DEREncodable access$300(
+org.bouncycastle.asn1.ASN1Collection)
+
+static org.bouncycastle.asn1.DEREncodable access$400(
+org.bouncycastle.asn1.ASN1Collection)
+
+static org.bouncycastle.asn1.DEREncodable access$500(
+org.bouncycastle.asn1.ASN1Collection)
+
+static org.bouncycastle.asn1.DEREncodable[] access$600(
+org.bouncycastle.asn1.ASN1Collection)
+
+private static byte[] getEncoded(
+org.bouncycastle.asn1.DEREncodable)
+
+private static boolean lessThanOrEqual(
+byte[]
+byte[])
+
+private void setObjectAt(
+org.bouncycastle.asn1.DEREncodable
+int)
+
+protected void addObject(
+org.bouncycastle.asn1.DEREncodable)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+abstract void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public final org.bouncycastle.asn1.DEREncodable getObjectAt(
+int)
+
+public final java.util.Enumeration getObjects()
+
+public final int hashCode()
+
+public final int size()
+
+protected void sort()
+
+public final java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DEREncodableVector extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.util.Vector v
+----------------METHODS----------------
+
+public void <init>()
+
+public void add(
+org.bouncycastle.asn1.DEREncodable)
+
+public org.bouncycastle.asn1.DEREncodable get(
+int)
+
+public int size()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ASN1EncodableVector extends org.bouncycastle.asn1.DEREncodableVector
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/asn1/ASN1InputStream; )
+ class org.bouncycastle.asn1.ASN1InputStream$1 extends org.bouncycastle.asn1.DERObject
+
+----------------FIELDS----------------
+
+final org.bouncycastle.asn1.ASN1InputStream this$0
+----------------METHODS----------------
+
+ void <init>(
+org.bouncycastle.asn1.ASN1InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ASN1InputStream extends java.io.FilterInputStream implements org.bouncycastle.asn1.DERTags
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DERObject END_OF_STREAM
+
+ boolean eofFound
+
+ int limit
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream)
+
+public void <init>(
+java.io.InputStream
+int)
+
+public void <init>(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private org.bouncycastle.asn1.BERConstructedOctetString buildConstructedOctetString()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private org.bouncycastle.asn1.BERConstructedOctetString buildDerConstructedOctetString(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private byte[] readIndefiniteLengthFully()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int readTagNumber(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected org.bouncycastle.asn1.DERObject buildObject(
+int
+int
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void readFully(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected int readLength()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.bouncycastle.asn1.DERObject readObject()
+
+________________CLASS________________
+
+
+public abstract class org.bouncycastle.asn1.ASN1Null extends org.bouncycastle.asn1.DERObject
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+abstract void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public abstract class org.bouncycastle.asn1.ASN1OctetString extends org.bouncycastle.asn1.DERObject
+
+----------------FIELDS----------------
+
+ byte[] string
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.DEREncodable)
+
+public void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.ASN1OctetString getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.ASN1OctetString getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+abstract void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public byte[] getOctets()
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DEROutputStream extends java.io.FilterOutputStream implements org.bouncycastle.asn1.DERTags
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeLength(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void writeEncoded(
+int
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void writeNull()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeObject(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ASN1OutputStream extends org.bouncycastle.asn1.DEROutputStream
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeObject(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract class org.bouncycastle.asn1.ASN1Sequence extends org.bouncycastle.asn1.ASN1Collection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static org.bouncycastle.asn1.ASN1Sequence getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.ASN1Sequence getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public boolean equals(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract class org.bouncycastle.asn1.ASN1Set extends org.bouncycastle.asn1.ASN1Collection
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static org.bouncycastle.asn1.ASN1Set getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.ASN1Set getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public boolean equals(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public abstract class org.bouncycastle.asn1.ASN1TaggedObject extends org.bouncycastle.asn1.DERObject
+
+----------------FIELDS----------------
+
+ boolean empty
+
+ boolean explicit
+
+ org.bouncycastle.asn1.DEREncodable obj
+
+ int tagNo
+----------------METHODS----------------
+
+public void <init>(
+int
+org.bouncycastle.asn1.DEREncodable)
+
+public void <init>(
+boolean
+int
+org.bouncycastle.asn1.DEREncodable)
+
+public static org.bouncycastle.asn1.ASN1TaggedObject getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.ASN1TaggedObject getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+abstract void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DERObject getObject()
+
+public int getTagNo()
+
+public int hashCode()
+
+public boolean isEmpty()
+
+public boolean isExplicit()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DEROctetString extends org.bouncycastle.asn1.ASN1OctetString
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.DEREncodable)
+
+public void <init>(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.BERConstructedOctetString extends org.bouncycastle.asn1.DEROctetString
+
+----------------FIELDS----------------
+
+private java.util.Vector octs
+----------------METHODS----------------
+
+public void <init>(
+java.util.Vector)
+
+public void <init>(
+org.bouncycastle.asn1.DEREncodable)
+
+public void <init>(
+org.bouncycastle.asn1.DERObject)
+
+public void <init>(
+byte[])
+
+private java.util.Vector generateOcts()
+
+private static byte[] toBytes(
+java.util.Vector)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public java.util.Enumeration getObjects()
+
+public byte[] getOctets()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERConstructedSequence extends org.bouncycastle.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void addObject(
+org.bouncycastle.asn1.DEREncodable)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public int getSize()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.BERConstructedSequence extends org.bouncycastle.asn1.DERConstructedSequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/asn1/BERInputStream; )
+@dalvik.annotation.InnerClass (accessFlags =0 name =null )
+ class org.bouncycastle.asn1.BERInputStream$1 extends org.bouncycastle.asn1.DERObject
+
+----------------FIELDS----------------
+
+final org.bouncycastle.asn1.BERInputStream this$0
+----------------METHODS----------------
+
+ void <init>(
+org.bouncycastle.asn1.BERInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERInputStream extends java.io.FilterInputStream implements org.bouncycastle.asn1.DERTags
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected org.bouncycastle.asn1.DERObject buildObject(
+int
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void readFully(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected int readLength()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.bouncycastle.asn1.DERObject readObject()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.BERInputStream extends org.bouncycastle.asn1.DERInputStream
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DERObject END_OF_STREAM
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private org.bouncycastle.asn1.BERConstructedOctetString buildConstructedOctetString()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private byte[] readIndefiniteLengthFully()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.bouncycastle.asn1.DERObject readObject()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERNull extends org.bouncycastle.asn1.ASN1Null
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERNull THE_ONE
+
+private static final byte[] zeroBytes
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.BERNull extends org.bouncycastle.asn1.DERNull
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.BERNull THE_ONE
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.BEROutputStream extends org.bouncycastle.asn1.DEROutputStream
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeObject(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERSequence extends org.bouncycastle.asn1.ASN1Sequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.bouncycastle.asn1.DEREncodable)
+
+public void <init>(
+org.bouncycastle.asn1.DEREncodableVector)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Encodable[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.BERSequence extends org.bouncycastle.asn1.DERSequence
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.bouncycastle.asn1.DEREncodable)
+
+public void <init>(
+org.bouncycastle.asn1.DEREncodableVector)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERSet extends org.bouncycastle.asn1.ASN1Set
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.bouncycastle.asn1.DEREncodable)
+
+public void <init>(
+org.bouncycastle.asn1.DEREncodableVector)
+
+ void <init>(
+org.bouncycastle.asn1.DEREncodableVector
+boolean)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Encodable[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.BERSet extends org.bouncycastle.asn1.DERSet
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.bouncycastle.asn1.DEREncodable)
+
+public void <init>(
+org.bouncycastle.asn1.DEREncodableVector)
+
+ void <init>(
+org.bouncycastle.asn1.DEREncodableVector
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERTaggedObject extends org.bouncycastle.asn1.ASN1TaggedObject
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+int
+org.bouncycastle.asn1.DEREncodable)
+
+public void <init>(
+boolean
+int
+org.bouncycastle.asn1.DEREncodable)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.BERTaggedObject extends org.bouncycastle.asn1.DERTaggedObject
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+int
+org.bouncycastle.asn1.DEREncodable)
+
+public void <init>(
+boolean
+int
+org.bouncycastle.asn1.DEREncodable)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERApplicationSpecific extends org.bouncycastle.asn1.DERObject
+
+----------------FIELDS----------------
+
+private byte[] octets
+
+private int tag
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+int
+org.bouncycastle.asn1.DEREncodable)
+
+public void <init>(
+int
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public int getApplicationTag()
+
+public byte[] getContents()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.bouncycastle.asn1.DERObject getObject()
+
+public int hashCode()
+
+public boolean isConstructed()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.DERString extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERBMPString extends org.bouncycastle.asn1.DERObject implements org.bouncycastle.asn1.DERString
+
+----------------FIELDS----------------
+
+ java.lang.String string
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.DERBMPString getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.DERBMPString getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getString()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERBitString extends org.bouncycastle.asn1.DERObject implements org.bouncycastle.asn1.DERString
+
+----------------FIELDS----------------
+
+private static final char[] table
+
+protected byte[] data
+
+protected int padBits
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>(
+byte
+int)
+
+public void <init>(
+org.bouncycastle.asn1.DEREncodable)
+
+public void <init>(
+byte[])
+
+public void <init>(
+byte[]
+int)
+
+protected static byte[] getBytes(
+int)
+
+public static org.bouncycastle.asn1.DERBitString getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.DERBitString getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+protected static int getPadBits(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public byte[] getBytes()
+
+public int getPadBits()
+
+public java.lang.String getString()
+
+public int hashCode()
+
+public int intValue()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERBoolean extends org.bouncycastle.asn1.DERObject
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERBoolean FALSE
+
+public static final org.bouncycastle.asn1.DERBoolean TRUE
+
+private final byte value
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+boolean)
+
+public static org.bouncycastle.asn1.DERBoolean getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.DERBoolean getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public static org.bouncycastle.asn1.DERBoolean getInstance(
+boolean)
+
+public static org.bouncycastle.asn1.DERBoolean getInstance(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+public boolean isTrue()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERConstructedSet extends org.bouncycastle.asn1.ASN1Set
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.bouncycastle.asn1.DEREncodable)
+
+public void <init>(
+org.bouncycastle.asn1.DEREncodableVector)
+
+public void addObject(
+org.bouncycastle.asn1.DEREncodable)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public int getSize()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DEREnumerated extends org.bouncycastle.asn1.DERObject
+
+----------------FIELDS----------------
+
+ byte[] bytes
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+java.math.BigInteger)
+
+public void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.DEREnumerated getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.DEREnumerated getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public java.math.BigInteger getValue()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERGeneralString extends org.bouncycastle.asn1.DERObject implements org.bouncycastle.asn1.DERString
+
+----------------FIELDS----------------
+
+private java.lang.String string
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.DERGeneralString getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.DERGeneralString getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public byte[] getOctets()
+
+public java.lang.String getString()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERGeneralizedTime extends org.bouncycastle.asn1.DERObject
+
+----------------FIELDS----------------
+
+ java.lang.String time
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.util.Date)
+
+ void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.DERGeneralizedTime getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.DERGeneralizedTime getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+private byte[] getOctets()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/text/ParseException; )
+public java.util.Date getDate()
+
+public java.lang.String getTime()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERIA5String extends org.bouncycastle.asn1.DERObject implements org.bouncycastle.asn1.DERString
+
+----------------FIELDS----------------
+
+ java.lang.String string
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.DERIA5String getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.DERIA5String getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public byte[] getOctets()
+
+public java.lang.String getString()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERInteger extends org.bouncycastle.asn1.DERObject
+
+----------------FIELDS----------------
+
+ byte[] bytes
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+java.math.BigInteger)
+
+public void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.DERInteger getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.DERInteger getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public java.math.BigInteger getPositiveValue()
+
+public java.math.BigInteger getValue()
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERNumericString extends org.bouncycastle.asn1.DERObject implements org.bouncycastle.asn1.DERString
+
+----------------FIELDS----------------
+
+ java.lang.String string
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.DERNumericString getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.DERNumericString getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public byte[] getOctets()
+
+public java.lang.String getString()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERObjectIdentifier extends org.bouncycastle.asn1.DERObject
+
+----------------FIELDS----------------
+
+ java.lang.String identifier
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+ void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.DERObjectIdentifier getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.DERObjectIdentifier getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+private static boolean isValidIdentifier(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeField(
+java.io.OutputStream
+long)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeField(
+java.io.OutputStream
+java.math.BigInteger)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getId()
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERPrintableString extends org.bouncycastle.asn1.DERObject implements org.bouncycastle.asn1.DERString
+
+----------------FIELDS----------------
+
+private final java.lang.String string
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.DERPrintableString getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.DERPrintableString getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public byte[] getOctets()
+
+public java.lang.String getString()
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERT61String extends org.bouncycastle.asn1.DERObject implements org.bouncycastle.asn1.DERString
+
+----------------FIELDS----------------
+
+ java.lang.String string
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.DERT61String getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.DERT61String getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public byte[] getOctets()
+
+public java.lang.String getString()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERUTCTime extends org.bouncycastle.asn1.DERObject
+
+----------------FIELDS----------------
+
+ java.lang.String time
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.util.Date)
+
+ void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.DERUTCTime getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.DERUTCTime getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+private byte[] getOctets()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getAdjustedTime()
+
+public java.lang.String getTime()
+
+public int hashCode()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERUTF8String extends org.bouncycastle.asn1.DERObject implements org.bouncycastle.asn1.DERString
+
+----------------FIELDS----------------
+
+ java.lang.String string
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+ void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.DERUTF8String getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.DERUTF8String getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getString()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERUniversalString extends org.bouncycastle.asn1.DERObject implements org.bouncycastle.asn1.DERString
+
+----------------FIELDS----------------
+
+private static final char[] table
+
+private byte[] string
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.DERUniversalString getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.DERUniversalString getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public byte[] getOctets()
+
+public java.lang.String getString()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERUnknownTag extends org.bouncycastle.asn1.DERObject
+
+----------------FIELDS----------------
+
+ byte[] data
+
+ int tag
+----------------METHODS----------------
+
+public void <init>(
+int
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public byte[] getData()
+
+public int getTag()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.DERVisibleString extends org.bouncycastle.asn1.DERObject implements org.bouncycastle.asn1.DERString
+
+----------------FIELDS----------------
+
+ java.lang.String string
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.DERVisibleString getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.DERVisibleString getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void encode(
+org.bouncycastle.asn1.DEROutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public byte[] getOctets()
+
+public java.lang.String getString()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.OIDTokenizer extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int index
+
+private java.lang.String oid
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public boolean hasMoreTokens()
+
+public java.lang.String nextToken()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/asn1/OrderedTable; )
+ class org.bouncycastle.asn1.OrderedTable$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/asn1/OrderedTable; )
+@dalvik.annotation.InnerClass (accessFlags =2 name =KeyEnumeration )
+ class org.bouncycastle.asn1.OrderedTable$KeyEnumeration extends java.lang.Object implements java.util.Enumeration
+
+----------------FIELDS----------------
+
+private int at
+
+private final int origSize
+
+final org.bouncycastle.asn1.OrderedTable this$0
+----------------METHODS----------------
+
+private void <init>(
+org.bouncycastle.asn1.OrderedTable)
+
+ void <init>(
+org.bouncycastle.asn1.OrderedTable
+org.bouncycastle.asn1.OrderedTable$1)
+
+public boolean hasMoreElements()
+
+public java.lang.Object nextElement()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/asn1/OrderedTable$1;Lorg/bouncycastle/asn1/OrderedTable$KeyEnumeration; )
+public final class org.bouncycastle.asn1.OrderedTable extends java.lang.Object
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DERObjectIdentifier key0
+
+private org.bouncycastle.asn1.DERObjectIdentifier key1
+
+private org.bouncycastle.asn1.DERObjectIdentifier key2
+
+private org.bouncycastle.asn1.DERObjectIdentifier key3
+
+private java.lang.Object[] rest
+
+private int size
+
+private java.lang.Object value0
+
+private java.lang.Object value1
+
+private java.lang.Object value2
+
+private java.lang.Object value3
+----------------METHODS----------------
+
+public void <init>()
+
+static int access$100(
+org.bouncycastle.asn1.OrderedTable)
+
+public void add(
+org.bouncycastle.asn1.DERObjectIdentifier
+java.lang.Object)
+
+public java.lang.Object get(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+public org.bouncycastle.asn1.DERObjectIdentifier getKey(
+int)
+
+public java.util.Enumeration getKeys()
+
+public java.lang.Object getValue(
+int)
+
+public int size()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cmp.PKIFailureInfo extends org.bouncycastle.asn1.DERBitString
+
+----------------FIELDS----------------
+
+public static final int ADD_INFO_NOT_AVAILABLE
+
+public static final int BAD_ALG
+
+public static final int BAD_CERT_ID
+
+public static final int BAD_DATA_FORMAT
+
+public static final int BAD_MESSAGE_CHECK
+
+public static final int BAD_POP
+
+public static final int BAD_REQUEST
+
+public static final int BAD_TIME
+
+public static final int INCORRECT_DATA
+
+public static final int MISSING_TIME_STAMP
+
+public static final int SYSTEM_FAILURE
+
+public static final int TIME_NOT_AVAILABLE
+
+public static final int UNACCEPTED_EXTENSION
+
+public static final int UNACCEPTED_POLICY
+
+public static final int WRONG_AUTHORITY
+
+public static final int addInfoNotAvailable
+
+public static final int badAlg
+
+public static final int badCertId
+
+public static final int badDataFormat
+
+public static final int badMessageCheck
+
+public static final int badPOP
+
+public static final int badRequest
+
+public static final int badTime
+
+public static final int incorrectData
+
+public static final int missingTimeStamp
+
+public static final int systemFailure
+
+public static final int timeNotAvailable
+
+public static final int unacceptedExtension
+
+public static final int unacceptedPolicy
+
+public static final int wrongAuthority
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+org.bouncycastle.asn1.DERBitString)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cmp.PKIFreeText extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ASN1Sequence strings
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERUTF8String)
+
+public static org.bouncycastle.asn1.cmp.PKIFreeText getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.cmp.PKIFreeText getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.DERUTF8String getStringAt(
+int)
+
+public int size()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.cmp.PKIStatus extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int GRANTED
+
+public static final int GRANTED_WITH_MODS
+
+public static final int REJECTION
+
+public static final int REVOCATION_NOTIFICATION
+
+public static final int REVOCATION_WARNING
+
+public static final int WAITING
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cmp.PKIStatusInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERBitString failInfo
+
+ org.bouncycastle.asn1.DERInteger status
+
+ org.bouncycastle.asn1.cmp.PKIFreeText statusString
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+int
+org.bouncycastle.asn1.cmp.PKIFreeText)
+
+public void <init>(
+int
+org.bouncycastle.asn1.cmp.PKIFreeText
+org.bouncycastle.asn1.cmp.PKIFailureInfo)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.cmp.PKIStatusInfo getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.cmp.PKIStatusInfo getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.DERBitString getFailInfo()
+
+public java.math.BigInteger getStatus()
+
+public org.bouncycastle.asn1.cmp.PKIFreeText getStatusString()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.Attribute extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DERObjectIdentifier attrType
+
+private org.bouncycastle.asn1.ASN1Set attrValues
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.ASN1Set)
+
+public static org.bouncycastle.asn1.cms.Attribute getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DERObjectIdentifier getAttrType()
+
+public org.bouncycastle.asn1.ASN1Set getAttrValues()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.AttributeTable extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.util.Hashtable attributes
+----------------METHODS----------------
+
+public void <init>(
+java.util.Hashtable)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Set)
+
+public void <init>(
+org.bouncycastle.asn1.DEREncodableVector)
+
+private void addAttribute(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.cms.Attribute)
+
+private java.util.Hashtable copyTable(
+java.util.Hashtable)
+
+public org.bouncycastle.asn1.cms.Attribute get(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+public org.bouncycastle.asn1.ASN1EncodableVector getAll(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+public org.bouncycastle.asn1.ASN1EncodableVector toASN1EncodableVector()
+
+public java.util.Hashtable toHashtable()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.cms.CMSAttributes extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier contentType
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier counterSignature
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier messageDigest
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier signingTime
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.cms.CMSObjectIdentifiers extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier compressedData
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier data
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier digestedData
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier encryptedData
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier envelopedData
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier signedAndEnvelopedData
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier signedData
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.CompressedData extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier compressionAlgorithm
+
+private org.bouncycastle.asn1.cms.ContentInfo encapContentInfo
+
+private org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.cms.ContentInfo)
+
+public static org.bouncycastle.asn1.cms.CompressedData getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.cms.CompressedData getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getCompressionAlgorithmIdentifier()
+
+public org.bouncycastle.asn1.cms.ContentInfo getEncapContentInfo()
+
+public org.bouncycastle.asn1.DERInteger getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.ContentInfo extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.cms.CMSObjectIdentifiers
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DEREncodable content
+
+private org.bouncycastle.asn1.DERObjectIdentifier contentType
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.DEREncodable)
+
+public static org.bouncycastle.asn1.cms.ContentInfo getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DEREncodable getContent()
+
+public org.bouncycastle.asn1.DERObjectIdentifier getContentType()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.EncryptedContentInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier contentEncryptionAlgorithm
+
+private org.bouncycastle.asn1.DERObjectIdentifier contentType
+
+private org.bouncycastle.asn1.ASN1OctetString encryptedContent
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.ASN1OctetString)
+
+public static org.bouncycastle.asn1.cms.EncryptedContentInfo getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getContentEncryptionAlgorithm()
+
+public org.bouncycastle.asn1.DERObjectIdentifier getContentType()
+
+public org.bouncycastle.asn1.ASN1OctetString getEncryptedContent()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.EnvelopedData extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.cms.EncryptedContentInfo encryptedContentInfo
+
+private org.bouncycastle.asn1.cms.OriginatorInfo originatorInfo
+
+private org.bouncycastle.asn1.ASN1Set recipientInfos
+
+private org.bouncycastle.asn1.ASN1Set unprotectedAttrs
+
+private org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.cms.OriginatorInfo
+org.bouncycastle.asn1.ASN1Set
+org.bouncycastle.asn1.cms.EncryptedContentInfo
+org.bouncycastle.asn1.ASN1Set)
+
+public static org.bouncycastle.asn1.cms.EnvelopedData getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.cms.EnvelopedData getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.cms.EncryptedContentInfo getEncryptedContentInfo()
+
+public org.bouncycastle.asn1.cms.OriginatorInfo getOriginatorInfo()
+
+public org.bouncycastle.asn1.ASN1Set getRecipientInfos()
+
+public org.bouncycastle.asn1.ASN1Set getUnprotectedAttrs()
+
+public org.bouncycastle.asn1.DERInteger getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.IssuerAndSerialNumber extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.X509Name name
+
+ org.bouncycastle.asn1.DERInteger serialNumber
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.X509Name
+java.math.BigInteger)
+
+public void <init>(
+org.bouncycastle.asn1.x509.X509Name
+org.bouncycastle.asn1.DERInteger)
+
+public static org.bouncycastle.asn1.cms.IssuerAndSerialNumber getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.x509.X509Name getName()
+
+public org.bouncycastle.asn1.DERInteger getSerialNumber()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.KEKIdentifier extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DERGeneralizedTime date
+
+private org.bouncycastle.asn1.ASN1OctetString keyIdentifier
+
+private org.bouncycastle.asn1.cms.OtherKeyAttribute other
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+byte[]
+org.bouncycastle.asn1.DERGeneralizedTime
+org.bouncycastle.asn1.cms.OtherKeyAttribute)
+
+public static org.bouncycastle.asn1.cms.KEKIdentifier getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.cms.KEKIdentifier getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.DERGeneralizedTime getDate()
+
+public org.bouncycastle.asn1.ASN1OctetString getKeyIdentifier()
+
+public org.bouncycastle.asn1.cms.OtherKeyAttribute getOther()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.KEKRecipientInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.ASN1OctetString encryptedKey
+
+private org.bouncycastle.asn1.cms.KEKIdentifier kekid
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier keyEncryptionAlgorithm
+
+private org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.cms.KEKIdentifier
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.ASN1OctetString)
+
+public static org.bouncycastle.asn1.cms.KEKRecipientInfo getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.cms.KEKRecipientInfo getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.ASN1OctetString getEncryptedKey()
+
+public org.bouncycastle.asn1.cms.KEKIdentifier getKekid()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getKeyEncryptionAlgorithm()
+
+public org.bouncycastle.asn1.DERInteger getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.KeyAgreeRecipientInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier keyEncryptionAlgorithm
+
+private org.bouncycastle.asn1.cms.OriginatorIdentifierOrKey originator
+
+private org.bouncycastle.asn1.ASN1Sequence recipientEncryptedKeys
+
+private org.bouncycastle.asn1.ASN1OctetString ukm
+
+private org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.cms.OriginatorIdentifierOrKey
+org.bouncycastle.asn1.ASN1OctetString
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.cms.KeyAgreeRecipientInfo getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.cms.KeyAgreeRecipientInfo getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getKeyEncryptionAlgorithm()
+
+public org.bouncycastle.asn1.cms.OriginatorIdentifierOrKey getOriginator()
+
+public org.bouncycastle.asn1.ASN1Sequence getRecipientEncryptedKeys()
+
+public org.bouncycastle.asn1.ASN1OctetString getUserKeyingMaterial()
+
+public org.bouncycastle.asn1.DERInteger getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.KeyTransRecipientInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.ASN1OctetString encryptedKey
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier keyEncryptionAlgorithm
+
+private org.bouncycastle.asn1.cms.RecipientIdentifier rid
+
+private org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.cms.RecipientIdentifier
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.ASN1OctetString)
+
+public static org.bouncycastle.asn1.cms.KeyTransRecipientInfo getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.ASN1OctetString getEncryptedKey()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getKeyEncryptionAlgorithm()
+
+public org.bouncycastle.asn1.cms.RecipientIdentifier getRecipientIdentifier()
+
+public org.bouncycastle.asn1.DERInteger getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.OriginatorIdentifierOrKey extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DEREncodable id
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1OctetString)
+
+public void <init>(
+org.bouncycastle.asn1.DERObject)
+
+public void <init>(
+org.bouncycastle.asn1.cms.IssuerAndSerialNumber)
+
+public void <init>(
+org.bouncycastle.asn1.cms.OriginatorPublicKey)
+
+public static org.bouncycastle.asn1.cms.OriginatorIdentifierOrKey getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.cms.OriginatorIdentifierOrKey getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.DEREncodable getId()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.OriginatorInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.ASN1Set certs
+
+private org.bouncycastle.asn1.ASN1Set crls
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Set
+org.bouncycastle.asn1.ASN1Set)
+
+public static org.bouncycastle.asn1.cms.OriginatorInfo getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.cms.OriginatorInfo getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.ASN1Set getCRLs()
+
+public org.bouncycastle.asn1.ASN1Set getCertificates()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.OriginatorPublicKey extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier algorithm
+
+private org.bouncycastle.asn1.DERBitString publicKey
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+byte[])
+
+public static org.bouncycastle.asn1.cms.OriginatorPublicKey getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.cms.OriginatorPublicKey getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getAlgorithm()
+
+public org.bouncycastle.asn1.DERBitString getPublicKey()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.OtherKeyAttribute extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DEREncodable keyAttr
+
+private org.bouncycastle.asn1.DERObjectIdentifier keyAttrId
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.DEREncodable)
+
+public static org.bouncycastle.asn1.cms.OtherKeyAttribute getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DEREncodable getKeyAttr()
+
+public org.bouncycastle.asn1.DERObjectIdentifier getKeyAttrId()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.OtherRecipientInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DERObjectIdentifier oriType
+
+private org.bouncycastle.asn1.DEREncodable oriValue
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.DEREncodable)
+
+public static org.bouncycastle.asn1.cms.OtherRecipientInfo getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.cms.OtherRecipientInfo getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.DERObjectIdentifier getType()
+
+public org.bouncycastle.asn1.DEREncodable getValue()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.PasswordRecipientInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.ASN1OctetString encryptedKey
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier keyDerivationAlgorithm
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier keyEncryptionAlgorithm
+
+private org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.ASN1OctetString)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.ASN1OctetString)
+
+public static org.bouncycastle.asn1.cms.PasswordRecipientInfo getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.cms.PasswordRecipientInfo getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.ASN1OctetString getEncryptedKey()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getKeyDerivationAlgorithm()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getKeyEncryptionAlgorithm()
+
+public org.bouncycastle.asn1.DERInteger getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.RecipientIdentifier extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DEREncodable id
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1OctetString)
+
+public void <init>(
+org.bouncycastle.asn1.DERObject)
+
+public void <init>(
+org.bouncycastle.asn1.cms.IssuerAndSerialNumber)
+
+public static org.bouncycastle.asn1.cms.RecipientIdentifier getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DEREncodable getId()
+
+public boolean isTagged()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.RecipientInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DEREncodable info
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.DERObject)
+
+public void <init>(
+org.bouncycastle.asn1.cms.KEKRecipientInfo)
+
+public void <init>(
+org.bouncycastle.asn1.cms.KeyAgreeRecipientInfo)
+
+public void <init>(
+org.bouncycastle.asn1.cms.KeyTransRecipientInfo)
+
+public void <init>(
+org.bouncycastle.asn1.cms.OtherRecipientInfo)
+
+public void <init>(
+org.bouncycastle.asn1.cms.PasswordRecipientInfo)
+
+public static org.bouncycastle.asn1.cms.RecipientInfo getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DEREncodable getInfo()
+
+public org.bouncycastle.asn1.DERInteger getVersion()
+
+public boolean isTagged()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.RecipientKeyIdentifier extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DERGeneralizedTime date
+
+private org.bouncycastle.asn1.cms.OtherKeyAttribute other
+
+private org.bouncycastle.asn1.ASN1OctetString subjectKeyIdentifier
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1OctetString
+org.bouncycastle.asn1.DERGeneralizedTime
+org.bouncycastle.asn1.cms.OtherKeyAttribute)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.cms.RecipientKeyIdentifier getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.cms.RecipientKeyIdentifier getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.DERGeneralizedTime getDate()
+
+public org.bouncycastle.asn1.cms.OtherKeyAttribute getOtherKeyAttribute()
+
+public org.bouncycastle.asn1.ASN1OctetString getSubjectKeyIdentifier()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.SignedData extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private boolean certBer
+
+private org.bouncycastle.asn1.ASN1Set certificates
+
+private org.bouncycastle.asn1.cms.ContentInfo contentInfo
+
+private org.bouncycastle.asn1.ASN1Set crls
+
+private boolean crlsBer
+
+private org.bouncycastle.asn1.ASN1Set digestAlgorithms
+
+private org.bouncycastle.asn1.ASN1Set signerInfos
+
+private org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Set
+org.bouncycastle.asn1.cms.ContentInfo
+org.bouncycastle.asn1.ASN1Set
+org.bouncycastle.asn1.ASN1Set
+org.bouncycastle.asn1.ASN1Set)
+
+public static org.bouncycastle.asn1.cms.SignedData getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.ASN1Set getCRLs()
+
+public org.bouncycastle.asn1.ASN1Set getCertificates()
+
+public org.bouncycastle.asn1.ASN1Set getDigestAlgorithms()
+
+public org.bouncycastle.asn1.cms.ContentInfo getEncapContentInfo()
+
+public org.bouncycastle.asn1.ASN1Set getSignerInfos()
+
+public org.bouncycastle.asn1.DERInteger getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.SignerIdentifier extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DEREncodable id
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1OctetString)
+
+public void <init>(
+org.bouncycastle.asn1.DERObject)
+
+public void <init>(
+org.bouncycastle.asn1.cms.IssuerAndSerialNumber)
+
+public static org.bouncycastle.asn1.cms.SignerIdentifier getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DEREncodable getId()
+
+public boolean isTagged()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.SignerInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.ASN1Set authenticatedAttributes
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier digAlgorithm
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier digEncryptionAlgorithm
+
+private org.bouncycastle.asn1.ASN1OctetString encryptedDigest
+
+private org.bouncycastle.asn1.cms.SignerIdentifier sid
+
+private org.bouncycastle.asn1.ASN1Set unauthenticatedAttributes
+
+private org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.cms.SignerIdentifier
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.ASN1Set
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.ASN1OctetString
+org.bouncycastle.asn1.ASN1Set)
+
+public static org.bouncycastle.asn1.cms.SignerInfo getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.ASN1Set getAuthenticatedAttributes()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getDigestAlgorithm()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getDigestEncryptionAlgorithm()
+
+public org.bouncycastle.asn1.ASN1OctetString getEncryptedDigest()
+
+public org.bouncycastle.asn1.cms.SignerIdentifier getSID()
+
+public org.bouncycastle.asn1.ASN1Set getUnauthenticatedAttributes()
+
+public org.bouncycastle.asn1.DERInteger getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.cms.Time extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERObject time
+----------------METHODS----------------
+
+public void <init>(
+java.util.Date)
+
+public void <init>(
+org.bouncycastle.asn1.DERObject)
+
+public static org.bouncycastle.asn1.cms.Time getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.cms.Time getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public java.util.Date getDate()
+
+public java.lang.String getTime()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String GOST_id
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR28147_cbc
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3410_2001
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3410_2001_CryptoPro_A
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3410_2001_CryptoPro_B
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3410_2001_CryptoPro_C
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3410_2001_CryptoPro_XchA
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3410_2001_CryptoPro_XchB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3410_94
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3410_94_CryptoPro_A
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3410_94_CryptoPro_B
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3410_94_CryptoPro_C
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3410_94_CryptoPro_D
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3410_94_CryptoPro_XchA
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3410_94_CryptoPro_XchB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3410_94_CryptoPro_XchC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3411
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3411_94_CryptoProParamSet
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3411_94_with_gostR3410_2001
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gostR3411_94_with_gostR3410_94
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gost_ElSgDH3410_1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gost_ElSgDH3410_default
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.esf.CommitmentTypeIdentifier extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier proofOfApproval
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier proofOfCreation
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier proofOfDelivery
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier proofOfOrigin
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier proofOfReceipt
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier proofOfSender
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.esf.CommitmentTypeIndication extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DERObjectIdentifier commitmentTypeId
+
+private org.bouncycastle.asn1.ASN1Sequence commitmentTypeQualifier
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.esf.CommitmentTypeIndication getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DERObjectIdentifier getCommitmentTypeId()
+
+public org.bouncycastle.asn1.ASN1Sequence getCommitmentTypeQualifier()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.esf.CommitmentTypeQualifier extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DERObjectIdentifier commitmentTypeIdentifier
+
+private org.bouncycastle.asn1.DEREncodable qualifier
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.DEREncodable)
+
+public static org.bouncycastle.asn1.esf.CommitmentTypeQualifier getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DERObjectIdentifier getCommitmentTypeIdentifier()
+
+public org.bouncycastle.asn1.DEREncodable getQualifier()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.esf.ESFAttributes extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier commitmentType
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier sigPolicyId
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier signerLocation
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.esf.SignerLocation extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DERUTF8String countryName
+
+private org.bouncycastle.asn1.DERUTF8String localityName
+
+private org.bouncycastle.asn1.ASN1Sequence postalAddress
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERUTF8String
+org.bouncycastle.asn1.DERUTF8String
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.esf.SignerLocation getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DERUTF8String getCountryName()
+
+public org.bouncycastle.asn1.DERUTF8String getLocalityName()
+
+public org.bouncycastle.asn1.ASN1Sequence getPostalAddress()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ess.ContentIdentifier extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ASN1OctetString value
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1OctetString)
+
+public void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.ess.ContentIdentifier getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.ASN1OctetString getValue()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ess.ESSCertID extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.ASN1OctetString certHash
+
+private org.bouncycastle.asn1.x509.IssuerSerial issuerSerial
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+byte[])
+
+public void <init>(
+byte[]
+org.bouncycastle.asn1.x509.IssuerSerial)
+
+public static org.bouncycastle.asn1.ess.ESSCertID getInstance(
+java.lang.Object)
+
+public byte[] getCertHash()
+
+public org.bouncycastle.asn1.x509.IssuerSerial getIssuerSerial()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ess.OtherCertID extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.IssuerSerial issuerSerial
+
+private org.bouncycastle.asn1.ASN1Encodable otherCertHash
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+byte[])
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+byte[]
+org.bouncycastle.asn1.x509.IssuerSerial)
+
+public static org.bouncycastle.asn1.ess.OtherCertID getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getAlgorithmHash()
+
+public byte[] getCertHash()
+
+public org.bouncycastle.asn1.x509.IssuerSerial getIssuerSerial()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ess.OtherSigningCertificate extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ASN1Sequence certs
+
+ org.bouncycastle.asn1.ASN1Sequence policies
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.ess.OtherCertID)
+
+public static org.bouncycastle.asn1.ess.OtherSigningCertificate getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.ess.OtherCertID[] getCerts()
+
+public org.bouncycastle.asn1.x509.PolicyInformation[] getPolicies()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ess.SigningCertificate extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ASN1Sequence certs
+
+ org.bouncycastle.asn1.ASN1Sequence policies
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.ess.ESSCertID)
+
+public static org.bouncycastle.asn1.ess.SigningCertificate getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.ess.ESSCertID[] getCerts()
+
+public org.bouncycastle.asn1.x509.PolicyInformation[] getPolicies()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.gnu.GNUObjectIdentifiers extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier CRC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier CRC32
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier GNU
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier GnuPG
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier GnuRadar
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier Serpent
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier Serpent_128_CBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier Serpent_128_CFB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier Serpent_128_ECB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier Serpent_128_OFB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier Serpent_192_CBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier Serpent_192_CFB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier Serpent_192_ECB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier Serpent_192_OFB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier Serpent_256_CBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier Serpent_256_CFB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier Serpent_256_ECB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier Serpent_256_OFB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier Tiger_192
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier digestAlgorithm
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier encryptionAlgorithm
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier notation
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pkaAddress
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.iana.IANAObjectIdentifiers extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier hmacMD5
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier hmacRIPEMD160
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier hmacSHA1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier hmacTIGER
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier isakmpOakley
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.icao.DataGroupHash extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ASN1OctetString dataGroupHashValue
+
+ org.bouncycastle.asn1.DERInteger dataGroupNumber
+----------------METHODS----------------
+
+public void <init>(
+int
+org.bouncycastle.asn1.ASN1OctetString)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.icao.DataGroupHash getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.ASN1OctetString getDataGroupHashValue()
+
+public int getDataGroupNumber()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.icao.ICAOObjectIdentifiers extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String id_icao
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_icao_ldsSecurityObject
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_icao_mrtd
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_icao_mrtd_security
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.icao.LDSSecurityObject extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.icao.ICAOObjectIdentifiers
+
+----------------FIELDS----------------
+
+public static final int ub_DataGroups
+
+ org.bouncycastle.asn1.icao.DataGroupHash[] datagroupHash
+
+ org.bouncycastle.asn1.x509.AlgorithmIdentifier digestAlgorithmIdentifier
+
+ org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.icao.DataGroupHash[])
+
+private void checkDatagroupHashSeqSize(
+int)
+
+public static org.bouncycastle.asn1.icao.LDSSecurityObject getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.icao.DataGroupHash[] getDatagroupHash()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getDigestAlgorithmIdentifier()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.misc.IDEACBCPar extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ASN1OctetString iv
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.misc.IDEACBCPar getInstance(
+java.lang.Object)
+
+public byte[] getIV()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.misc.MiscObjectIdentifiers extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String netscape
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier netscapeBaseURL
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier netscapeCARevocationURL
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier netscapeCApolicyURL
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier netscapeCertComment
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier netscapeCertType
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier netscapeRenewalURL
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier netscapeRevocationURL
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier netscapeSSLServerName
+
+public static final java.lang.String verisign
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier verisignCzagExtension
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.misc.NetscapeCertType extends org.bouncycastle.asn1.DERBitString
+
+----------------FIELDS----------------
+
+public static final int objectSigning
+
+public static final int objectSigningCA
+
+public static final int reserved
+
+public static final int smime
+
+public static final int smimeCA
+
+public static final int sslCA
+
+public static final int sslClient
+
+public static final int sslServer
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+org.bouncycastle.asn1.DERBitString)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.misc.NetscapeRevocationURL extends org.bouncycastle.asn1.DERIA5String
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.DERIA5String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.misc.VerisignCzagExtension extends org.bouncycastle.asn1.DERIA5String
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.DERIA5String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.mozilla.PublicKeyAndChallenge extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DERIA5String challenge
+
+private org.bouncycastle.asn1.ASN1Sequence pkacSeq
+
+private org.bouncycastle.asn1.x509.SubjectPublicKeyInfo spki
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.mozilla.PublicKeyAndChallenge getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DERIA5String getChallenge()
+
+public org.bouncycastle.asn1.x509.SubjectPublicKeyInfo getSubjectPublicKeyInfo()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.nist.NISTObjectIdentifiers extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String aes
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier dsa_with_sha224
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier dsa_with_sha256
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aes128_CBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aes128_CFB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aes128_ECB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aes128_OFB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aes128_wrap
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aes192_CBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aes192_CFB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aes192_ECB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aes192_OFB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aes192_wrap
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aes256_CBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aes256_CFB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aes256_ECB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aes256_OFB
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aes256_wrap
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_dsa_with_sha2
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_sha224
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_sha256
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_sha384
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_sha512
+
+public static final java.lang.String nistAlgorithm
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ocsp.BasicOCSPResponse extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.ASN1Sequence certs
+
+private org.bouncycastle.asn1.DERBitString signature
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier signatureAlgorithm
+
+private org.bouncycastle.asn1.ocsp.ResponseData tbsResponseData
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.ocsp.ResponseData
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.DERBitString
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.ocsp.BasicOCSPResponse getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.ocsp.BasicOCSPResponse getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.ASN1Sequence getCerts()
+
+public org.bouncycastle.asn1.DERBitString getSignature()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getSignatureAlgorithm()
+
+public org.bouncycastle.asn1.ocsp.ResponseData getTbsResponseData()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ocsp.CertID extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.AlgorithmIdentifier hashAlgorithm
+
+ org.bouncycastle.asn1.ASN1OctetString issuerKeyHash
+
+ org.bouncycastle.asn1.ASN1OctetString issuerNameHash
+
+ org.bouncycastle.asn1.DERInteger serialNumber
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.ASN1OctetString
+org.bouncycastle.asn1.ASN1OctetString
+org.bouncycastle.asn1.DERInteger)
+
+public static org.bouncycastle.asn1.ocsp.CertID getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.ocsp.CertID getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getHashAlgorithm()
+
+public org.bouncycastle.asn1.ASN1OctetString getIssuerKeyHash()
+
+public org.bouncycastle.asn1.ASN1OctetString getIssuerNameHash()
+
+public org.bouncycastle.asn1.DERInteger getSerialNumber()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ocsp.CertStatus extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.ASN1Choice
+
+----------------FIELDS----------------
+
+private int tagNo
+
+private org.bouncycastle.asn1.DEREncodable value
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+int
+org.bouncycastle.asn1.DEREncodable)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1TaggedObject)
+
+public void <init>(
+org.bouncycastle.asn1.ocsp.RevokedInfo)
+
+public static org.bouncycastle.asn1.ocsp.CertStatus getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.ocsp.CertStatus getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.DEREncodable getStatus()
+
+public int getTagNo()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ocsp.CrlID extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERInteger crlNum
+
+ org.bouncycastle.asn1.DERGeneralizedTime crlTime
+
+ org.bouncycastle.asn1.DERIA5String crlUrl
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public org.bouncycastle.asn1.DERInteger getCrlNum()
+
+public org.bouncycastle.asn1.DERGeneralizedTime getCrlTime()
+
+public org.bouncycastle.asn1.DERIA5String getCrlUrl()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.ocsp.OCSPObjectIdentifiers extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_pkix_ocsp
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_pkix_ocsp_archive_cutoff
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_pkix_ocsp_basic
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_pkix_ocsp_crl
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_pkix_ocsp_nocheck
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_pkix_ocsp_nonce
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_pkix_ocsp_response
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_pkix_ocsp_service_locator
+
+public static final java.lang.String pkix_ocsp
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ocsp.OCSPRequest extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ocsp.Signature optionalSignature
+
+ org.bouncycastle.asn1.ocsp.TBSRequest tbsRequest
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.ocsp.TBSRequest
+org.bouncycastle.asn1.ocsp.Signature)
+
+public static org.bouncycastle.asn1.ocsp.OCSPRequest getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.ocsp.OCSPRequest getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.ocsp.Signature getOptionalSignature()
+
+public org.bouncycastle.asn1.ocsp.TBSRequest getTbsRequest()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ocsp.OCSPResponse extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ocsp.ResponseBytes responseBytes
+
+ org.bouncycastle.asn1.ocsp.OCSPResponseStatus responseStatus
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.ocsp.OCSPResponseStatus
+org.bouncycastle.asn1.ocsp.ResponseBytes)
+
+public static org.bouncycastle.asn1.ocsp.OCSPResponse getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.ocsp.OCSPResponse getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.ocsp.ResponseBytes getResponseBytes()
+
+public org.bouncycastle.asn1.ocsp.OCSPResponseStatus getResponseStatus()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ocsp.OCSPResponseStatus extends org.bouncycastle.asn1.DEREnumerated
+
+----------------FIELDS----------------
+
+public static final int INTERNAL_ERROR
+
+public static final int MALFORMED_REQUEST
+
+public static final int SIG_REQUIRED
+
+public static final int SUCCESSFUL
+
+public static final int TRY_LATER
+
+public static final int UNAUTHORIZED
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+org.bouncycastle.asn1.DEREnumerated)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ocsp.Request extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ocsp.CertID reqCert
+
+ org.bouncycastle.asn1.x509.X509Extensions singleRequestExtensions
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.ocsp.CertID
+org.bouncycastle.asn1.x509.X509Extensions)
+
+public static org.bouncycastle.asn1.ocsp.Request getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.ocsp.Request getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.ocsp.CertID getReqCert()
+
+public org.bouncycastle.asn1.x509.X509Extensions getSingleRequestExtensions()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ocsp.ResponderID extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.ASN1Choice
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DEREncodable value
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1OctetString)
+
+public void <init>(
+org.bouncycastle.asn1.x509.X509Name)
+
+public static org.bouncycastle.asn1.ocsp.ResponderID getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.ocsp.ResponderID getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ocsp.ResponseBytes extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ASN1OctetString response
+
+ org.bouncycastle.asn1.DERObjectIdentifier responseType
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.ASN1OctetString)
+
+public static org.bouncycastle.asn1.ocsp.ResponseBytes getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.ocsp.ResponseBytes getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.ASN1OctetString getResponse()
+
+public org.bouncycastle.asn1.DERObjectIdentifier getResponseType()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ocsp.ResponseData extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private static final org.bouncycastle.asn1.DERInteger V1
+
+private org.bouncycastle.asn1.DERGeneralizedTime producedAt
+
+private org.bouncycastle.asn1.ocsp.ResponderID responderID
+
+private org.bouncycastle.asn1.x509.X509Extensions responseExtensions
+
+private org.bouncycastle.asn1.ASN1Sequence responses
+
+private org.bouncycastle.asn1.DERInteger version
+
+private boolean versionPresent
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERInteger
+org.bouncycastle.asn1.ocsp.ResponderID
+org.bouncycastle.asn1.DERGeneralizedTime
+org.bouncycastle.asn1.ASN1Sequence
+org.bouncycastle.asn1.x509.X509Extensions)
+
+public void <init>(
+org.bouncycastle.asn1.ocsp.ResponderID
+org.bouncycastle.asn1.DERGeneralizedTime
+org.bouncycastle.asn1.ASN1Sequence
+org.bouncycastle.asn1.x509.X509Extensions)
+
+public static org.bouncycastle.asn1.ocsp.ResponseData getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.ocsp.ResponseData getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.DERGeneralizedTime getProducedAt()
+
+public org.bouncycastle.asn1.ocsp.ResponderID getResponderID()
+
+public org.bouncycastle.asn1.x509.X509Extensions getResponseExtensions()
+
+public org.bouncycastle.asn1.ASN1Sequence getResponses()
+
+public org.bouncycastle.asn1.DERInteger getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ocsp.RevokedInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.CRLReason revocationReason
+
+private org.bouncycastle.asn1.DERGeneralizedTime revocationTime
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERGeneralizedTime
+org.bouncycastle.asn1.x509.CRLReason)
+
+public static org.bouncycastle.asn1.ocsp.RevokedInfo getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.ocsp.RevokedInfo getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.CRLReason getRevocationReason()
+
+public org.bouncycastle.asn1.DERGeneralizedTime getRevocationTime()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ocsp.ServiceLocator extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.X509Name issuer
+
+ org.bouncycastle.asn1.DERObject locator
+----------------METHODS----------------
+
+public void <init>()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ocsp.Signature extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ASN1Sequence certs
+
+ org.bouncycastle.asn1.DERBitString signature
+
+ org.bouncycastle.asn1.x509.AlgorithmIdentifier signatureAlgorithm
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.DERBitString)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.DERBitString
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.ocsp.Signature getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.ocsp.Signature getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.ASN1Sequence getCerts()
+
+public org.bouncycastle.asn1.DERBitString getSignature()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getSignatureAlgorithm()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ocsp.SingleResponse extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.ocsp.CertID certID
+
+private org.bouncycastle.asn1.ocsp.CertStatus certStatus
+
+private org.bouncycastle.asn1.DERGeneralizedTime nextUpdate
+
+private org.bouncycastle.asn1.x509.X509Extensions singleExtensions
+
+private org.bouncycastle.asn1.DERGeneralizedTime thisUpdate
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.ocsp.CertID
+org.bouncycastle.asn1.ocsp.CertStatus
+org.bouncycastle.asn1.DERGeneralizedTime
+org.bouncycastle.asn1.DERGeneralizedTime
+org.bouncycastle.asn1.x509.X509Extensions)
+
+public static org.bouncycastle.asn1.ocsp.SingleResponse getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.ocsp.SingleResponse getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.ocsp.CertID getCertID()
+
+public org.bouncycastle.asn1.ocsp.CertStatus getCertStatus()
+
+public org.bouncycastle.asn1.DERGeneralizedTime getNextUpdate()
+
+public org.bouncycastle.asn1.x509.X509Extensions getSingleExtensions()
+
+public org.bouncycastle.asn1.DERGeneralizedTime getThisUpdate()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.ocsp.TBSRequest extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private static final org.bouncycastle.asn1.DERInteger V1
+
+ org.bouncycastle.asn1.x509.X509Extensions requestExtensions
+
+ org.bouncycastle.asn1.ASN1Sequence requestList
+
+ org.bouncycastle.asn1.x509.GeneralName requestorName
+
+ org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.GeneralName
+org.bouncycastle.asn1.ASN1Sequence
+org.bouncycastle.asn1.x509.X509Extensions)
+
+public static org.bouncycastle.asn1.ocsp.TBSRequest getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.ocsp.TBSRequest getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.X509Extensions getRequestExtensions()
+
+public org.bouncycastle.asn1.ASN1Sequence getRequestList()
+
+public org.bouncycastle.asn1.x509.GeneralName getRequestorName()
+
+public org.bouncycastle.asn1.DERInteger getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.oiw.OIWObjectIdentifiers extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier desCBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier dsaWithSHA1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier elGamalAlgorithm
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier idSHA1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier md4WithRSA
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier md4WithRSAEncryption
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier md5WithRSA
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier sha1WithRSA
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.Attribute extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DERObjectIdentifier attrType
+
+private org.bouncycastle.asn1.ASN1Set attrValues
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.ASN1Set)
+
+public static org.bouncycastle.asn1.pkcs.Attribute getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DERObjectIdentifier getAttrType()
+
+public org.bouncycastle.asn1.ASN1Set getAttrValues()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.AuthenticatedSafe extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.pkcs.ContentInfo[] info
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.pkcs.ContentInfo[])
+
+public org.bouncycastle.asn1.pkcs.ContentInfo[] getContentInfo()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.CertBag extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERObjectIdentifier certId
+
+ org.bouncycastle.asn1.DERObject certValue
+
+ org.bouncycastle.asn1.ASN1Sequence seq
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.DERObject)
+
+public org.bouncycastle.asn1.DERObjectIdentifier getCertId()
+
+public org.bouncycastle.asn1.DERObject getCertValue()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.CertificationRequest extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+protected org.bouncycastle.asn1.pkcs.CertificationRequestInfo reqInfo
+
+protected org.bouncycastle.asn1.x509.AlgorithmIdentifier sigAlgId
+
+protected org.bouncycastle.asn1.DERBitString sigBits
+----------------METHODS----------------
+
+protected void <init>()
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.pkcs.CertificationRequestInfo
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.DERBitString)
+
+public org.bouncycastle.asn1.pkcs.CertificationRequestInfo getCertificationRequestInfo()
+
+public org.bouncycastle.asn1.DERBitString getSignature()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getSignatureAlgorithm()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.CertificationRequestInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ASN1Set attributes
+
+ org.bouncycastle.asn1.x509.X509Name subject
+
+ org.bouncycastle.asn1.x509.SubjectPublicKeyInfo subjectPKInfo
+
+ org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.X509Name
+org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
+org.bouncycastle.asn1.ASN1Set)
+
+public static org.bouncycastle.asn1.pkcs.CertificationRequestInfo getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.ASN1Set getAttributes()
+
+public org.bouncycastle.asn1.x509.X509Name getSubject()
+
+public org.bouncycastle.asn1.x509.SubjectPublicKeyInfo getSubjectPublicKeyInfo()
+
+public org.bouncycastle.asn1.DERInteger getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier RC2_CBC
+
+public static final java.lang.String bagtypes
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier canNotDecryptAny
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier certBag
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier crlBag
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier data
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier des_EDE3_CBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier dhKeyAgreement
+
+public static final java.lang.String digestAlgorithm
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier digestedData
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier encryptedData
+
+public static final java.lang.String encryptionAlgorithm
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier envelopedData
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_PBES2
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_PBKDF2
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_RSAES_OAEP
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_RSASSA_PSS
+
+public static final java.lang.String id_aa
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aa_commitmentType
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aa_contentIdentifier
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aa_encrypKeyPref
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aa_otherSigCert
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aa_receiptRequest
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aa_sigPolicyId
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aa_signatureTimeStampToken
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aa_signerLocation
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_aa_signingCertificate
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_alg_PWRI_KEK
+
+public static final java.lang.String id_ct
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_ct_TSTInfo
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_ct_compressedData
+
+public static final java.lang.String id_cti
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_cti_ets_proofOfApproval
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_cti_ets_proofOfCreation
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_cti_ets_proofOfDelivery
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_cti_ets_proofOfOrigin
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_cti_ets_proofOfReceipt
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_cti_ets_proofOfSender
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_hmacWithSHA1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_hmacWithSHA224
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_hmacWithSHA256
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_hmacWithSHA384
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_hmacWithSHA512
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_mgf1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_pSpecified
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier keyBag
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier md2
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier md2WithRSAEncryption
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier md4
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier md4WithRSAEncryption
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier md5
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier md5WithRSAEncryption
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pbeWithMD2AndDES_CBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pbeWithMD2AndRC2_CBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pbeWithMD5AndDES_CBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pbeWithMD5AndRC2_CBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pbeWithSHA1AndDES_CBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pbeWithSHA1AndRC2_CBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pbeWithSHAAnd128BitRC2_CBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pbeWithSHAAnd128BitRC4
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pbeWithSHAAnd2_KeyTripleDES_CBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pbeWithSHAAnd3_KeyTripleDES_CBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pbeWithSHAAnd40BitRC4
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pbewithSHAAnd40BitRC2_CBC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pkcs8ShroudedKeyBag
+
+public static final java.lang.String pkcs_1
+
+public static final java.lang.String pkcs_12
+
+public static final java.lang.String pkcs_12PbeIds
+
+public static final java.lang.String pkcs_3
+
+public static final java.lang.String pkcs_5
+
+public static final java.lang.String pkcs_7
+
+public static final java.lang.String pkcs_9
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pkcs_9_at_challengePassword
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pkcs_9_at_contentType
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pkcs_9_at_counterSignature
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pkcs_9_at_emailAddress
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pkcs_9_at_extendedCertificateAttributes
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pkcs_9_at_extensionRequest
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pkcs_9_at_friendlyName
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pkcs_9_at_localKeyId
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pkcs_9_at_messageDigest
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pkcs_9_at_signingDescription
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pkcs_9_at_signingTime
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pkcs_9_at_smimeCapabilities
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pkcs_9_at_unstructuredAddress
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier pkcs_9_at_unstructuredName
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier preferSignedData
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier rsaEncryption
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier sMIMECapabilitiesVersions
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier safeContentsBag
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier secretBag
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier sha1WithRSAEncryption
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier sha224WithRSAEncryption
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier sha256WithRSAEncryption
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier sha384WithRSAEncryption
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier sha512WithRSAEncryption
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier signedAndEnvelopedData
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier signedData
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier srsaOAEPEncryptionSET
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier x509certType
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.ContentInfo extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DEREncodable content
+
+private org.bouncycastle.asn1.DERObjectIdentifier contentType
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.DEREncodable)
+
+public static org.bouncycastle.asn1.pkcs.ContentInfo getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DEREncodable getContent()
+
+public org.bouncycastle.asn1.DERObjectIdentifier getContentType()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.DHParameter extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERInteger g
+
+ org.bouncycastle.asn1.DERInteger l
+
+ org.bouncycastle.asn1.DERInteger p
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+int)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public java.math.BigInteger getG()
+
+public java.math.BigInteger getL()
+
+public java.math.BigInteger getP()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.EncryptedData extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERObjectIdentifier bagId
+
+ org.bouncycastle.asn1.DERObject bagValue
+
+ org.bouncycastle.asn1.ASN1Sequence data
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.DEREncodable)
+
+public static org.bouncycastle.asn1.pkcs.EncryptedData getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.ASN1OctetString getContent()
+
+public org.bouncycastle.asn1.DERObjectIdentifier getContentType()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getEncryptionAlgorithm()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.EncryptedPrivateKeyInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier algId
+
+private org.bouncycastle.asn1.ASN1OctetString data
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+byte[])
+
+public static org.bouncycastle.asn1.pkcs.EncryptedPrivateKeyInfo getInstance(
+java.lang.Object)
+
+public byte[] getEncryptedData()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getEncryptionAlgorithm()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.AlgorithmIdentifier extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DERObjectIdentifier objectId
+
+private org.bouncycastle.asn1.DEREncodable parameters
+
+private boolean parametersDefined
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.DEREncodable)
+
+public static org.bouncycastle.asn1.x509.AlgorithmIdentifier getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.AlgorithmIdentifier getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.DERObjectIdentifier getObjectId()
+
+public org.bouncycastle.asn1.DEREncodable getParameters()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.EncryptionScheme extends org.bouncycastle.asn1.x509.AlgorithmIdentifier
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERObject obj
+
+ org.bouncycastle.asn1.DERObject objectId
+----------------METHODS----------------
+
+ void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public org.bouncycastle.asn1.DERObject getDERObject()
+
+public org.bouncycastle.asn1.DERObject getObject()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.IssuerAndSerialNumber extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERInteger certSerialNumber
+
+ org.bouncycastle.asn1.x509.X509Name name
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.X509Name
+java.math.BigInteger)
+
+public void <init>(
+org.bouncycastle.asn1.x509.X509Name
+org.bouncycastle.asn1.DERInteger)
+
+public static org.bouncycastle.asn1.pkcs.IssuerAndSerialNumber getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DERInteger getCertificateSerialNumber()
+
+public org.bouncycastle.asn1.x509.X509Name getName()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.KeyDerivationFunc extends org.bouncycastle.asn1.x509.AlgorithmIdentifier
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+ void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.ASN1Encodable)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.MacData extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.DigestInfo digInfo
+
+ java.math.BigInteger iterationCount
+
+ byte[] salt
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.DigestInfo
+byte[]
+int)
+
+public static org.bouncycastle.asn1.pkcs.MacData getInstance(
+java.lang.Object)
+
+public java.math.BigInteger getIterationCount()
+
+public org.bouncycastle.asn1.x509.DigestInfo getMac()
+
+public byte[] getSalt()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.PBES2Algorithms extends org.bouncycastle.asn1.x509.AlgorithmIdentifier implements org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.pkcs.KeyDerivationFunc func
+
+private org.bouncycastle.asn1.DERObjectIdentifier objectId
+
+private org.bouncycastle.asn1.pkcs.EncryptionScheme scheme
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public org.bouncycastle.asn1.DERObject getDERObject()
+
+public org.bouncycastle.asn1.pkcs.EncryptionScheme getEncryptionScheme()
+
+public org.bouncycastle.asn1.pkcs.KeyDerivationFunc getKeyDerivationFunc()
+
+public org.bouncycastle.asn1.DERObjectIdentifier getObjectId()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.PBES2Parameters extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.pkcs.KeyDerivationFunc func
+
+private org.bouncycastle.asn1.pkcs.EncryptionScheme scheme
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public org.bouncycastle.asn1.pkcs.EncryptionScheme getEncryptionScheme()
+
+public org.bouncycastle.asn1.pkcs.KeyDerivationFunc getKeyDerivationFunc()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.PBKDF2Params extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERInteger iterationCount
+
+ org.bouncycastle.asn1.DERInteger keyLength
+
+ org.bouncycastle.asn1.ASN1OctetString octStr
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+byte[]
+int)
+
+public static org.bouncycastle.asn1.pkcs.PBKDF2Params getInstance(
+java.lang.Object)
+
+public java.math.BigInteger getIterationCount()
+
+public java.math.BigInteger getKeyLength()
+
+public byte[] getSalt()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.PKCS12PBEParams extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERInteger iterations
+
+ org.bouncycastle.asn1.ASN1OctetString iv
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+byte[]
+int)
+
+public static org.bouncycastle.asn1.pkcs.PKCS12PBEParams getInstance(
+java.lang.Object)
+
+public byte[] getIV()
+
+public java.math.BigInteger getIterations()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.Pfx extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.pkcs.ContentInfo contentInfo
+
+private org.bouncycastle.asn1.pkcs.MacData macData
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.pkcs.ContentInfo
+org.bouncycastle.asn1.pkcs.MacData)
+
+public org.bouncycastle.asn1.pkcs.ContentInfo getAuthSafe()
+
+public org.bouncycastle.asn1.pkcs.MacData getMacData()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.PrivateKeyInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier algId
+
+private org.bouncycastle.asn1.ASN1Set attributes
+
+private org.bouncycastle.asn1.DERObject privKey
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.DERObject)
+
+public static org.bouncycastle.asn1.pkcs.PrivateKeyInfo getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.pkcs.PrivateKeyInfo getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getAlgorithmId()
+
+public org.bouncycastle.asn1.ASN1Set getAttributes()
+
+public org.bouncycastle.asn1.DERObject getPrivateKey()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.RC2CBCParameter extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ASN1OctetString iv
+
+ org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+int
+byte[])
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.pkcs.RC2CBCParameter getInstance(
+java.lang.Object)
+
+public byte[] getIV()
+
+public java.math.BigInteger getRC2ParameterVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.RSAESOAEPparams extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.x509.AlgorithmIdentifier DEFAULT_HASH_ALGORITHM
+
+public static final org.bouncycastle.asn1.x509.AlgorithmIdentifier DEFAULT_MASK_GEN_FUNCTION
+
+public static final org.bouncycastle.asn1.x509.AlgorithmIdentifier DEFAULT_P_SOURCE_ALGORITHM
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier hashAlgorithm
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier maskGenAlgorithm
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier pSourceAlgorithm
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.x509.AlgorithmIdentifier)
+
+public static org.bouncycastle.asn1.pkcs.RSAESOAEPparams getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getHashAlgorithm()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getMaskGenAlgorithm()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getPSourceAlgorithm()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.RSAPrivateKeyStructure extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private java.math.BigInteger coefficient
+
+private java.math.BigInteger exponent1
+
+private java.math.BigInteger exponent2
+
+private java.math.BigInteger modulus
+
+private org.bouncycastle.asn1.ASN1Sequence otherPrimeInfos
+
+private java.math.BigInteger prime1
+
+private java.math.BigInteger prime2
+
+private java.math.BigInteger privateExponent
+
+private java.math.BigInteger publicExponent
+
+private int version
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.pkcs.RSAPrivateKeyStructure getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.pkcs.RSAPrivateKeyStructure getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public java.math.BigInteger getCoefficient()
+
+public java.math.BigInteger getExponent1()
+
+public java.math.BigInteger getExponent2()
+
+public java.math.BigInteger getModulus()
+
+public java.math.BigInteger getPrime1()
+
+public java.math.BigInteger getPrime2()
+
+public java.math.BigInteger getPrivateExponent()
+
+public java.math.BigInteger getPublicExponent()
+
+public int getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.RSASSAPSSparams extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.x509.AlgorithmIdentifier DEFAULT_HASH_ALGORITHM
+
+public static final org.bouncycastle.asn1.x509.AlgorithmIdentifier DEFAULT_MASK_GEN_FUNCTION
+
+public static final org.bouncycastle.asn1.DERInteger DEFAULT_SALT_LENGTH
+
+public static final org.bouncycastle.asn1.DERInteger DEFAULT_TRAILER_FIELD
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier hashAlgorithm
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier maskGenAlgorithm
+
+private org.bouncycastle.asn1.DERInteger saltLength
+
+private org.bouncycastle.asn1.DERInteger trailerField
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.DERInteger
+org.bouncycastle.asn1.DERInteger)
+
+public static org.bouncycastle.asn1.pkcs.RSASSAPSSparams getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getHashAlgorithm()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getMaskGenAlgorithm()
+
+public org.bouncycastle.asn1.DERInteger getSaltLength()
+
+public org.bouncycastle.asn1.DERInteger getTrailerField()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.SafeBag extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ASN1Set bagAttributes
+
+ org.bouncycastle.asn1.DERObjectIdentifier bagId
+
+ org.bouncycastle.asn1.DERObject bagValue
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.DERObject)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.DERObject
+org.bouncycastle.asn1.ASN1Set)
+
+public org.bouncycastle.asn1.ASN1Set getBagAttributes()
+
+public org.bouncycastle.asn1.DERObjectIdentifier getBagId()
+
+public org.bouncycastle.asn1.DERObject getBagValue()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.SignedData extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.ASN1Set certificates
+
+private org.bouncycastle.asn1.pkcs.ContentInfo contentInfo
+
+private org.bouncycastle.asn1.ASN1Set crls
+
+private org.bouncycastle.asn1.ASN1Set digestAlgorithms
+
+private org.bouncycastle.asn1.ASN1Set signerInfos
+
+private org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERInteger
+org.bouncycastle.asn1.ASN1Set
+org.bouncycastle.asn1.pkcs.ContentInfo
+org.bouncycastle.asn1.ASN1Set
+org.bouncycastle.asn1.ASN1Set
+org.bouncycastle.asn1.ASN1Set)
+
+public static org.bouncycastle.asn1.pkcs.SignedData getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.ASN1Set getCRLs()
+
+public org.bouncycastle.asn1.ASN1Set getCertificates()
+
+public org.bouncycastle.asn1.pkcs.ContentInfo getContentInfo()
+
+public org.bouncycastle.asn1.ASN1Set getDigestAlgorithms()
+
+public org.bouncycastle.asn1.ASN1Set getSignerInfos()
+
+public org.bouncycastle.asn1.DERInteger getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.pkcs.SignerInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.ASN1Set authenticatedAttributes
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier digAlgorithm
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier digEncryptionAlgorithm
+
+private org.bouncycastle.asn1.ASN1OctetString encryptedDigest
+
+private org.bouncycastle.asn1.pkcs.IssuerAndSerialNumber issuerAndSerialNumber
+
+private org.bouncycastle.asn1.ASN1Set unauthenticatedAttributes
+
+private org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERInteger
+org.bouncycastle.asn1.pkcs.IssuerAndSerialNumber
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.ASN1Set
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.ASN1OctetString
+org.bouncycastle.asn1.ASN1Set)
+
+public static org.bouncycastle.asn1.pkcs.SignerInfo getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.ASN1Set getAuthenticatedAttributes()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getDigestAlgorithm()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getDigestEncryptionAlgorithm()
+
+public org.bouncycastle.asn1.ASN1OctetString getEncryptedDigest()
+
+public org.bouncycastle.asn1.pkcs.IssuerAndSerialNumber getIssuerAndSerialNumber()
+
+public org.bouncycastle.asn1.ASN1Set getUnauthenticatedAttributes()
+
+public org.bouncycastle.asn1.DERInteger getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier ripemd128
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier ripemd160
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier ripemd256
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier rsaSignatureWithripemd128
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier rsaSignatureWithripemd160
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier rsaSignatureWithripemd256
+
+public static final java.lang.String teleTrusTAlgorithm
+
+public static final java.lang.String teleTrusTRSAsignatureAlgorithm
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.tsp.Accuracy extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+protected static final int MAX_MICROS
+
+protected static final int MAX_MILLIS
+
+protected static final int MIN_MICROS
+
+protected static final int MIN_MILLIS
+
+ org.bouncycastle.asn1.DERInteger micros
+
+ org.bouncycastle.asn1.DERInteger millis
+
+ org.bouncycastle.asn1.DERInteger seconds
+----------------METHODS----------------
+
+protected void <init>()
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERInteger
+org.bouncycastle.asn1.DERInteger
+org.bouncycastle.asn1.DERInteger)
+
+public static org.bouncycastle.asn1.tsp.Accuracy getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DERInteger getMicros()
+
+public org.bouncycastle.asn1.DERInteger getMillis()
+
+public org.bouncycastle.asn1.DERInteger getSeconds()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.tsp.MessageImprint extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.AlgorithmIdentifier hashAlgorithm
+
+ byte[] hashedMessage
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+byte[])
+
+public static org.bouncycastle.asn1.tsp.MessageImprint getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getHashAlgorithm()
+
+public byte[] getHashedMessage()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.tsp.TSTInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.tsp.Accuracy accuracy
+
+ org.bouncycastle.asn1.x509.X509Extensions extensions
+
+ org.bouncycastle.asn1.DERGeneralizedTime genTime
+
+ org.bouncycastle.asn1.tsp.MessageImprint messageImprint
+
+ org.bouncycastle.asn1.DERInteger nonce
+
+ org.bouncycastle.asn1.DERBoolean ordering
+
+ org.bouncycastle.asn1.DERInteger serialNumber
+
+ org.bouncycastle.asn1.x509.GeneralName tsa
+
+ org.bouncycastle.asn1.DERObjectIdentifier tsaPolicyId
+
+ org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.tsp.MessageImprint
+org.bouncycastle.asn1.DERInteger
+org.bouncycastle.asn1.DERGeneralizedTime
+org.bouncycastle.asn1.tsp.Accuracy
+org.bouncycastle.asn1.DERBoolean
+org.bouncycastle.asn1.DERInteger
+org.bouncycastle.asn1.x509.GeneralName
+org.bouncycastle.asn1.x509.X509Extensions)
+
+public static org.bouncycastle.asn1.tsp.TSTInfo getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.tsp.Accuracy getAccuracy()
+
+public org.bouncycastle.asn1.x509.X509Extensions getExtensions()
+
+public org.bouncycastle.asn1.DERGeneralizedTime getGenTime()
+
+public org.bouncycastle.asn1.tsp.MessageImprint getMessageImprint()
+
+public org.bouncycastle.asn1.DERInteger getNonce()
+
+public org.bouncycastle.asn1.DERBoolean getOrdering()
+
+public org.bouncycastle.asn1.DERObjectIdentifier getPolicy()
+
+public org.bouncycastle.asn1.DERInteger getSerialNumber()
+
+public org.bouncycastle.asn1.x509.GeneralName getTsa()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.tsp.TimeStampReq extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERBoolean certReq
+
+ org.bouncycastle.asn1.x509.X509Extensions extensions
+
+ org.bouncycastle.asn1.tsp.MessageImprint messageImprint
+
+ org.bouncycastle.asn1.DERInteger nonce
+
+ org.bouncycastle.asn1.DERObjectIdentifier tsaPolicy
+
+ org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.tsp.MessageImprint
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.DERInteger
+org.bouncycastle.asn1.DERBoolean
+org.bouncycastle.asn1.x509.X509Extensions)
+
+public static org.bouncycastle.asn1.tsp.TimeStampReq getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DERBoolean getCertReq()
+
+public org.bouncycastle.asn1.x509.X509Extensions getExtensions()
+
+public org.bouncycastle.asn1.tsp.MessageImprint getMessageImprint()
+
+public org.bouncycastle.asn1.DERInteger getNonce()
+
+public org.bouncycastle.asn1.DERObjectIdentifier getReqPolicy()
+
+public org.bouncycastle.asn1.DERInteger getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.tsp.TimeStampResp extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.cmp.PKIStatusInfo pkiStatusInfo
+
+ org.bouncycastle.asn1.cms.ContentInfo timeStampToken
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.cmp.PKIStatusInfo
+org.bouncycastle.asn1.cms.ContentInfo)
+
+public static org.bouncycastle.asn1.tsp.TimeStampResp getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.cmp.PKIStatusInfo getStatus()
+
+public org.bouncycastle.asn1.cms.ContentInfo getTimeStampToken()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.util.ASN1Dump extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.lang.String TAB
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static java.lang.String _dumpAsString(
+java.lang.String
+org.bouncycastle.asn1.DERObject)
+
+public static java.lang.String dumpAsString(
+java.lang.Object)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.util.DERDump extends org.bouncycastle.asn1.util.ASN1Dump
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String dumpAsString(
+org.bouncycastle.asn1.DEREncodable)
+
+public static java.lang.String dumpAsString(
+org.bouncycastle.asn1.DERObject)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.util.Dump extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+public static void main(
+java.lang.String[])
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.AccessDescription extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_ad_caIssuers
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_ad_ocsp
+
+ org.bouncycastle.asn1.x509.GeneralName accessLocation
+
+ org.bouncycastle.asn1.DERObjectIdentifier accessMethod
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.x509.GeneralName)
+
+public static org.bouncycastle.asn1.x509.AccessDescription getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.x509.GeneralName getAccessLocation()
+
+public org.bouncycastle.asn1.DERObjectIdentifier getAccessMethod()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.AttCertIssuer extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.ASN1Choice
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERObject choiceObj
+
+ org.bouncycastle.asn1.ASN1Encodable obj
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.x509.GeneralNames)
+
+public void <init>(
+org.bouncycastle.asn1.x509.V2Form)
+
+public static org.bouncycastle.asn1.x509.AttCertIssuer getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.AttCertIssuer getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.ASN1Encodable getIssuer()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.AttCertValidityPeriod extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERGeneralizedTime notAfterTime
+
+ org.bouncycastle.asn1.DERGeneralizedTime notBeforeTime
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERGeneralizedTime
+org.bouncycastle.asn1.DERGeneralizedTime)
+
+public static org.bouncycastle.asn1.x509.AttCertValidityPeriod getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DERGeneralizedTime getNotAfterTime()
+
+public org.bouncycastle.asn1.DERGeneralizedTime getNotBeforeTime()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.Attribute extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DERObjectIdentifier attrType
+
+private org.bouncycastle.asn1.ASN1Set attrValues
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.ASN1Set)
+
+public static org.bouncycastle.asn1.x509.Attribute getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DERObjectIdentifier getAttrType()
+
+public org.bouncycastle.asn1.ASN1Set getAttrValues()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.AttributeCertificate extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.AttributeCertificateInfo acinfo
+
+ org.bouncycastle.asn1.x509.AlgorithmIdentifier signatureAlgorithm
+
+ org.bouncycastle.asn1.DERBitString signatureValue
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AttributeCertificateInfo
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.DERBitString)
+
+public static org.bouncycastle.asn1.x509.AttributeCertificate getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.x509.AttributeCertificateInfo getAcinfo()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getSignatureAlgorithm()
+
+public org.bouncycastle.asn1.DERBitString getSignatureValue()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.AttributeCertificateInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.AttCertValidityPeriod attrCertValidityPeriod
+
+private org.bouncycastle.asn1.ASN1Sequence attributes
+
+private org.bouncycastle.asn1.x509.X509Extensions extensions
+
+private org.bouncycastle.asn1.x509.Holder holder
+
+private org.bouncycastle.asn1.x509.AttCertIssuer issuer
+
+private org.bouncycastle.asn1.DERBitString issuerUniqueID
+
+private org.bouncycastle.asn1.DERInteger serialNumber
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier signature
+
+private org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.x509.AttributeCertificateInfo getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.AttributeCertificateInfo getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.AttCertValidityPeriod getAttrCertValidityPeriod()
+
+public org.bouncycastle.asn1.ASN1Sequence getAttributes()
+
+public org.bouncycastle.asn1.x509.X509Extensions getExtensions()
+
+public org.bouncycastle.asn1.x509.Holder getHolder()
+
+public org.bouncycastle.asn1.x509.AttCertIssuer getIssuer()
+
+public org.bouncycastle.asn1.DERBitString getIssuerUniqueID()
+
+public org.bouncycastle.asn1.DERInteger getSerialNumber()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getSignature()
+
+public org.bouncycastle.asn1.DERInteger getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.AuthorityInformationAccess extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.AccessDescription[] descriptions
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.x509.GeneralName)
+
+public static org.bouncycastle.asn1.x509.AuthorityInformationAccess getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.x509.AccessDescription[] getAccessDescriptions()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.AuthorityKeyIdentifier extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.GeneralNames certissuer
+
+ org.bouncycastle.asn1.DERInteger certserno
+
+ org.bouncycastle.asn1.ASN1OctetString keyidentifier
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.GeneralNames
+java.math.BigInteger)
+
+public void <init>(
+org.bouncycastle.asn1.x509.SubjectPublicKeyInfo)
+
+public void <init>(
+org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
+org.bouncycastle.asn1.x509.GeneralNames
+java.math.BigInteger)
+
+public void <init>(
+byte[]
+org.bouncycastle.asn1.x509.GeneralNames
+java.math.BigInteger)
+
+public static org.bouncycastle.asn1.x509.AuthorityKeyIdentifier getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.AuthorityKeyIdentifier getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.GeneralNames getAuthorityCertIssuer()
+
+public java.math.BigInteger getAuthorityCertSerialNumber()
+
+public byte[] getKeyIdentifier()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.BasicConstraints extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERBoolean cA
+
+ org.bouncycastle.asn1.DERInteger pathLenConstraint
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+boolean)
+
+public void <init>(
+boolean
+int)
+
+public static org.bouncycastle.asn1.x509.BasicConstraints getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.BasicConstraints getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public java.math.BigInteger getPathLenConstraint()
+
+public boolean isCA()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.CRLDistPoint extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ASN1Sequence seq
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.DistributionPoint[])
+
+public static org.bouncycastle.asn1.x509.CRLDistPoint getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.CRLDistPoint getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.DistributionPoint[] getDistributionPoints()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.CRLNumber extends org.bouncycastle.asn1.DERInteger
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger)
+
+public java.math.BigInteger getCRLNumber()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.CRLReason extends org.bouncycastle.asn1.DEREnumerated
+
+----------------FIELDS----------------
+
+public static final int AA_COMPROMISE
+
+public static final int AFFILIATION_CHANGED
+
+public static final int CA_COMPROMISE
+
+public static final int CERTIFICATE_HOLD
+
+public static final int CESSATION_OF_OPERATION
+
+public static final int KEY_COMPROMISE
+
+public static final int PRIVILEGE_WITHDRAWN
+
+public static final int REMOVE_FROM_CRL
+
+public static final int SUPERSEDED
+
+public static final int UNSPECIFIED
+
+public static final int aACompromise
+
+public static final int affiliationChanged
+
+public static final int cACompromise
+
+public static final int certificateHold
+
+public static final int cessationOfOperation
+
+public static final int keyCompromise
+
+public static final int privilegeWithdrawn
+
+public static final int removeFromCRL
+
+public static final int superseded
+
+public static final int unspecified
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+org.bouncycastle.asn1.DEREnumerated)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.CertPolicyId extends org.bouncycastle.asn1.DERObjectIdentifier
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.CertificateList extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERBitString sig
+
+ org.bouncycastle.asn1.x509.AlgorithmIdentifier sigAlgId
+
+ org.bouncycastle.asn1.x509.TBSCertList tbsCertList
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.x509.CertificateList getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.CertificateList getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.X509Name getIssuer()
+
+public org.bouncycastle.asn1.x509.Time getNextUpdate()
+
+public org.bouncycastle.asn1.x509.TBSCertList$CRLEntry[] getRevokedCertificates()
+
+public org.bouncycastle.asn1.DERBitString getSignature()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getSignatureAlgorithm()
+
+public org.bouncycastle.asn1.x509.TBSCertList getTBSCertList()
+
+public org.bouncycastle.asn1.x509.Time getThisUpdate()
+
+public int getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.CertificatePolicies extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+static final org.bouncycastle.asn1.DERObjectIdentifier anyPolicy
+
+ java.util.Vector policies
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+public static org.bouncycastle.asn1.x509.CertificatePolicies getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.CertificatePolicies getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public void addPolicy(
+java.lang.String)
+
+public java.lang.String getPolicy(
+int)
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.DSAParameter extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERInteger g
+
+ org.bouncycastle.asn1.DERInteger p
+
+ org.bouncycastle.asn1.DERInteger q
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.x509.DSAParameter getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.DSAParameter getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public java.math.BigInteger getG()
+
+public java.math.BigInteger getP()
+
+public java.math.BigInteger getQ()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.DigestInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier algId
+
+private byte[] digest
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+byte[])
+
+public static org.bouncycastle.asn1.x509.DigestInfo getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.DigestInfo getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getAlgorithmId()
+
+public byte[] getDigest()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.DisplayText extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.ASN1Choice
+
+----------------FIELDS----------------
+
+public static final int CONTENT_TYPE_BMPSTRING
+
+public static final int CONTENT_TYPE_IA5STRING
+
+public static final int CONTENT_TYPE_UTF8STRING
+
+public static final int CONTENT_TYPE_VISIBLESTRING
+
+public static final int DISPLAY_TEXT_MAXIMUM_SIZE
+
+ int contentType
+
+ org.bouncycastle.asn1.DERString contents
+----------------METHODS----------------
+
+public void <init>(
+int
+java.lang.String)
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+org.bouncycastle.asn1.DERString)
+
+public static org.bouncycastle.asn1.x509.DisplayText getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.DisplayText getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public java.lang.String getString()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.DistributionPoint extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.GeneralNames cRLIssuer
+
+ org.bouncycastle.asn1.x509.DistributionPointName distributionPoint
+
+ org.bouncycastle.asn1.x509.ReasonFlags reasons
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.DistributionPointName
+org.bouncycastle.asn1.x509.ReasonFlags
+org.bouncycastle.asn1.x509.GeneralNames)
+
+public static org.bouncycastle.asn1.x509.DistributionPoint getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.DistributionPoint getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.GeneralNames getCRLIssuer()
+
+public org.bouncycastle.asn1.x509.DistributionPointName getDistributionPoint()
+
+public org.bouncycastle.asn1.x509.ReasonFlags getReasons()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.DistributionPointName extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.ASN1Choice
+
+----------------FIELDS----------------
+
+public static final int FULL_NAME
+
+public static final int NAME_RELATIVE_TO_CRL_ISSUER
+
+ org.bouncycastle.asn1.DEREncodable name
+
+ int type
+----------------METHODS----------------
+
+public void <init>(
+int
+org.bouncycastle.asn1.ASN1Encodable)
+
+public void <init>(
+int
+org.bouncycastle.asn1.DEREncodable)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1TaggedObject)
+
+public static org.bouncycastle.asn1.x509.DistributionPointName getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.DistributionPointName getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.ASN1Encodable getName()
+
+public int getType()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.ExtendedKeyUsage extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ASN1Sequence seq
+
+ java.util.Hashtable usageTable
+----------------METHODS----------------
+
+public void <init>(
+java.util.Vector)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.KeyPurposeId)
+
+public static org.bouncycastle.asn1.x509.ExtendedKeyUsage getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.ExtendedKeyUsage getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public boolean hasKeyPurposeId(
+org.bouncycastle.asn1.x509.KeyPurposeId)
+
+public int size()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.GeneralName extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.ASN1Choice
+
+----------------FIELDS----------------
+
+public static final int dNSName
+
+public static final int directoryName
+
+public static final int ediPartyName
+
+public static final int iPAddress
+
+public static final int otherName
+
+public static final int registeredID
+
+public static final int rfc822Name
+
+public static final int uniformResourceIdentifier
+
+public static final int x400Address
+
+ org.bouncycastle.asn1.DEREncodable obj
+
+ int tag
+----------------METHODS----------------
+
+public void <init>(
+int
+java.lang.String)
+
+public void <init>(
+int
+org.bouncycastle.asn1.ASN1Encodable)
+
+public void <init>(
+org.bouncycastle.asn1.DERObject
+int)
+
+public void <init>(
+org.bouncycastle.asn1.x509.X509Name)
+
+public static org.bouncycastle.asn1.x509.GeneralName getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.GeneralName getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.DEREncodable getName()
+
+public int getTagNo()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.GeneralNames extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ASN1Sequence seq
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.GeneralName)
+
+public static org.bouncycastle.asn1.x509.GeneralNames getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.GeneralNames getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.GeneralName[] getNames()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.GeneralSubtree extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private static final java.math.BigInteger ZERO
+
+private org.bouncycastle.asn1.x509.GeneralName base
+
+private org.bouncycastle.asn1.DERInteger maximum
+
+private org.bouncycastle.asn1.DERInteger minimum
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.GeneralName
+java.math.BigInteger
+java.math.BigInteger)
+
+public static org.bouncycastle.asn1.x509.GeneralSubtree getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.GeneralSubtree getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.GeneralName getBase()
+
+public java.math.BigInteger getMaximum()
+
+public java.math.BigInteger getMinimum()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.Holder extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.IssuerSerial baseCertificateID
+
+ org.bouncycastle.asn1.x509.GeneralNames entityName
+
+ org.bouncycastle.asn1.x509.ObjectDigestInfo objectDigestInfo
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.GeneralNames)
+
+public void <init>(
+org.bouncycastle.asn1.x509.IssuerSerial)
+
+public static org.bouncycastle.asn1.x509.Holder getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.x509.IssuerSerial getBaseCertificateID()
+
+public org.bouncycastle.asn1.x509.GeneralNames getEntityName()
+
+public org.bouncycastle.asn1.x509.ObjectDigestInfo getObjectDigestInfo()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.IetfAttrSyntax extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+public static final int VALUE_OCTETS
+
+public static final int VALUE_OID
+
+public static final int VALUE_UTF8
+
+ org.bouncycastle.asn1.x509.GeneralNames policyAuthority
+
+ int valueChoice
+
+ java.util.Vector values
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public org.bouncycastle.asn1.x509.GeneralNames getPolicyAuthority()
+
+public int getValueType()
+
+public java.lang.Object[] getValues()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.IssuerSerial extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.GeneralNames issuer
+
+ org.bouncycastle.asn1.DERBitString issuerUID
+
+ org.bouncycastle.asn1.DERInteger serial
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.GeneralNames
+org.bouncycastle.asn1.DERInteger)
+
+public static org.bouncycastle.asn1.x509.IssuerSerial getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.IssuerSerial getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.GeneralNames getIssuer()
+
+public org.bouncycastle.asn1.DERBitString getIssuerUID()
+
+public org.bouncycastle.asn1.DERInteger getSerial()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.IssuingDistributionPoint extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private boolean indirectCRL
+
+private boolean onlyContainsAttributeCerts
+
+private boolean onlyContainsCACerts
+
+private boolean onlyContainsUserCerts
+
+private org.bouncycastle.asn1.ASN1Sequence seq
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.x509.IssuingDistributionPoint getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.IssuingDistributionPoint getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public boolean isIndirectCRL()
+
+public boolean onlyContainsAttributeCerts()
+
+public boolean onlyContainsCACerts()
+
+public boolean onlyContainsUserCerts()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.KeyPurposeId extends org.bouncycastle.asn1.DERObjectIdentifier
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.x509.KeyPurposeId anyExtendedKeyUsage
+
+private static final java.lang.String id_kp
+
+public static final org.bouncycastle.asn1.x509.KeyPurposeId id_kp_OCSPSigning
+
+public static final org.bouncycastle.asn1.x509.KeyPurposeId id_kp_clientAuth
+
+public static final org.bouncycastle.asn1.x509.KeyPurposeId id_kp_codeSigning
+
+public static final org.bouncycastle.asn1.x509.KeyPurposeId id_kp_emailProtection
+
+public static final org.bouncycastle.asn1.x509.KeyPurposeId id_kp_ipsecEndSystem
+
+public static final org.bouncycastle.asn1.x509.KeyPurposeId id_kp_ipsecTunnel
+
+public static final org.bouncycastle.asn1.x509.KeyPurposeId id_kp_ipsecUser
+
+public static final org.bouncycastle.asn1.x509.KeyPurposeId id_kp_serverAuth
+
+public static final org.bouncycastle.asn1.x509.KeyPurposeId id_kp_smartcardlogon
+
+public static final org.bouncycastle.asn1.x509.KeyPurposeId id_kp_timeStamping
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.KeyUsage extends org.bouncycastle.asn1.DERBitString
+
+----------------FIELDS----------------
+
+public static final int cRLSign
+
+public static final int dataEncipherment
+
+public static final int decipherOnly
+
+public static final int digitalSignature
+
+public static final int encipherOnly
+
+public static final int keyAgreement
+
+public static final int keyCertSign
+
+public static final int keyEncipherment
+
+public static final int nonRepudiation
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+org.bouncycastle.asn1.DERBitString)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.NameConstraints extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.ASN1Sequence excluded
+
+private org.bouncycastle.asn1.ASN1Sequence permitted
+----------------METHODS----------------
+
+public void <init>(
+java.util.Vector
+java.util.Vector)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+private org.bouncycastle.asn1.DERSequence createSequence(
+java.util.Vector)
+
+public org.bouncycastle.asn1.ASN1Sequence getExcludedSubtrees()
+
+public org.bouncycastle.asn1.ASN1Sequence getPermittedSubtrees()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.NoticeReference extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.ASN1Sequence noticeNumbers
+
+private org.bouncycastle.asn1.x509.DisplayText organization
+----------------METHODS----------------
+
+public void <init>(
+int
+java.lang.String
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+java.lang.String
+java.util.Vector)
+
+public void <init>(
+java.lang.String
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.x509.NoticeReference getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.ASN1Sequence getNoticeNumbers()
+
+public org.bouncycastle.asn1.x509.DisplayText getOrganization()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.ObjectDigestInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.AlgorithmIdentifier digestAlgorithm
+
+ org.bouncycastle.asn1.DEREnumerated digestedObjectType
+
+ org.bouncycastle.asn1.DERBitString objectDigest
+
+ org.bouncycastle.asn1.DERObjectIdentifier otherObjectTypeID
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.x509.ObjectDigestInfo getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.ObjectDigestInfo getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getDigestAlgorithm()
+
+public org.bouncycastle.asn1.DEREnumerated getDigestedObjectType()
+
+public org.bouncycastle.asn1.DERBitString getObjectDigest()
+
+public org.bouncycastle.asn1.DERObjectIdentifier getOtherObjectTypeID()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.PolicyInformation extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DERObjectIdentifier policyIdentifier
+
+private org.bouncycastle.asn1.ASN1Sequence policyQualifiers
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.x509.PolicyInformation getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DERObjectIdentifier getPolicyIdentifier()
+
+public org.bouncycastle.asn1.ASN1Sequence getPolicyQualifiers()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.PolicyMappings extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ASN1Sequence seq
+----------------METHODS----------------
+
+public void <init>(
+java.util.Hashtable)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.PolicyQualifierId extends org.bouncycastle.asn1.DERObjectIdentifier
+
+----------------FIELDS----------------
+
+private static final java.lang.String id_qt
+
+public static final org.bouncycastle.asn1.x509.PolicyQualifierId id_qt_cps
+
+public static final org.bouncycastle.asn1.x509.PolicyQualifierId id_qt_unotice
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.PolicyQualifierInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DERObjectIdentifier policyQualifierId
+
+private org.bouncycastle.asn1.DEREncodable qualifier
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.DEREncodable)
+
+public static org.bouncycastle.asn1.x509.PolicyQualifierInfo getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DERObjectIdentifier getPolicyQualifierId()
+
+public org.bouncycastle.asn1.DEREncodable getQualifier()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.RSAPublicKeyStructure extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private java.math.BigInteger modulus
+
+private java.math.BigInteger publicExponent
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.x509.RSAPublicKeyStructure getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.RSAPublicKeyStructure getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public java.math.BigInteger getModulus()
+
+public java.math.BigInteger getPublicExponent()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.ReasonFlags extends org.bouncycastle.asn1.DERBitString
+
+----------------FIELDS----------------
+
+public static final int AA_COMPROMISE
+
+public static final int AFFILIATION_CHANGED
+
+public static final int CA_COMPROMISE
+
+public static final int CERTIFICATE_HOLD
+
+public static final int CESSATION_OF_OPERATION
+
+public static final int KEY_COMPROMISE
+
+public static final int PRIVILEGE_WITHDRAWN
+
+public static final int SUPERSEDED
+
+public static final int UNUSED
+
+public static final int aACompromise
+
+public static final int affiliationChanged
+
+public static final int cACompromise
+
+public static final int certificateHold
+
+public static final int cessationOfOperation
+
+public static final int keyCompromise
+
+public static final int privilegeWithdrawn
+
+public static final int superseded
+
+public static final int unused
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+org.bouncycastle.asn1.DERBitString)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.RoleSyntax extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.GeneralNames roleAuthority
+
+private org.bouncycastle.asn1.x509.GeneralName roleName
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.GeneralName)
+
+public void <init>(
+org.bouncycastle.asn1.x509.GeneralNames
+org.bouncycastle.asn1.x509.GeneralName)
+
+public static org.bouncycastle.asn1.x509.RoleSyntax getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.x509.GeneralNames getRoleAuthority()
+
+public java.lang.String[] getRoleAuthorityAsString()
+
+public org.bouncycastle.asn1.x509.GeneralName getRoleName()
+
+public java.lang.String getRoleNameAsString()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.SubjectDirectoryAttributes extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private java.util.Vector attributes
+----------------METHODS----------------
+
+public void <init>(
+java.util.Vector)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.x509.SubjectDirectoryAttributes getInstance(
+java.lang.Object)
+
+public java.util.Vector getAttributes()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.SubjectKeyIdentifier extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private byte[] keyidentifier
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1OctetString)
+
+public void <init>(
+org.bouncycastle.asn1.x509.SubjectPublicKeyInfo)
+
+public void <init>(
+byte[])
+
+public static org.bouncycastle.asn1.x509.SubjectKeyIdentifier getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.SubjectKeyIdentifier getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public byte[] getKeyIdentifier()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.SubjectPublicKeyInfo extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier algId
+
+private org.bouncycastle.asn1.DERBitString keyData
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.DEREncodable)
+
+public void <init>(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+byte[])
+
+public static org.bouncycastle.asn1.x509.SubjectPublicKeyInfo getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.SubjectPublicKeyInfo getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getAlgorithmId()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.bouncycastle.asn1.DERObject getPublicKey()
+
+public org.bouncycastle.asn1.DERBitString getPublicKeyData()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =1 name =CRLEntry )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/asn1/x509/TBSCertList; )
+public class org.bouncycastle.asn1.x509.TBSCertList$CRLEntry extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.X509Extensions crlEntryExtensions
+
+ org.bouncycastle.asn1.x509.Time revocationDate
+
+ org.bouncycastle.asn1.ASN1Sequence seq
+
+final org.bouncycastle.asn1.x509.TBSCertList this$0
+
+ org.bouncycastle.asn1.DERInteger userCertificate
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.x509.TBSCertList
+org.bouncycastle.asn1.ASN1Sequence)
+
+public org.bouncycastle.asn1.x509.X509Extensions getExtensions()
+
+public org.bouncycastle.asn1.x509.Time getRevocationDate()
+
+public org.bouncycastle.asn1.DERInteger getUserCertificate()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/asn1/x509/TBSCertList$CRLEntry; )
+public class org.bouncycastle.asn1.x509.TBSCertList extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.X509Extensions crlExtensions
+
+ org.bouncycastle.asn1.x509.X509Name issuer
+
+ org.bouncycastle.asn1.x509.Time nextUpdate
+
+ org.bouncycastle.asn1.x509.TBSCertList$CRLEntry[] revokedCertificates
+
+ org.bouncycastle.asn1.ASN1Sequence seq
+
+ org.bouncycastle.asn1.x509.AlgorithmIdentifier signature
+
+ org.bouncycastle.asn1.x509.Time thisUpdate
+
+ org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.x509.TBSCertList getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.TBSCertList getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.X509Extensions getExtensions()
+
+public org.bouncycastle.asn1.x509.X509Name getIssuer()
+
+public org.bouncycastle.asn1.x509.Time getNextUpdate()
+
+public org.bouncycastle.asn1.x509.TBSCertList$CRLEntry[] getRevokedCertificates()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getSignature()
+
+public org.bouncycastle.asn1.x509.Time getThisUpdate()
+
+public int getVersion()
+
+public org.bouncycastle.asn1.DERInteger getVersionNumber()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.x509.X509ObjectIdentifiers extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier commonName
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier countryName
+
+public static final java.lang.String id
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_SHA1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_ea_rsa
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier localityName
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier ocspAccessMethod
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier organization
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier organizationalUnitName
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier ripemd160
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier ripemd160WithRSAEncryption
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier stateOrProvinceName
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.TBSCertificateStructure extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.x509.X509ObjectIdentifiers, org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.Time endDate
+
+ org.bouncycastle.asn1.x509.X509Extensions extensions
+
+ org.bouncycastle.asn1.x509.X509Name issuer
+
+ org.bouncycastle.asn1.DERBitString issuerUniqueId
+
+ org.bouncycastle.asn1.ASN1Sequence seq
+
+ org.bouncycastle.asn1.DERInteger serialNumber
+
+ org.bouncycastle.asn1.x509.AlgorithmIdentifier signature
+
+ org.bouncycastle.asn1.x509.Time startDate
+
+ org.bouncycastle.asn1.x509.X509Name subject
+
+ org.bouncycastle.asn1.x509.SubjectPublicKeyInfo subjectPublicKeyInfo
+
+ org.bouncycastle.asn1.DERBitString subjectUniqueId
+
+ org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.x509.TBSCertificateStructure getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.TBSCertificateStructure getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.Time getEndDate()
+
+public org.bouncycastle.asn1.x509.X509Extensions getExtensions()
+
+public org.bouncycastle.asn1.x509.X509Name getIssuer()
+
+public org.bouncycastle.asn1.DERBitString getIssuerUniqueId()
+
+public org.bouncycastle.asn1.DERInteger getSerialNumber()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getSignature()
+
+public org.bouncycastle.asn1.x509.Time getStartDate()
+
+public org.bouncycastle.asn1.x509.X509Name getSubject()
+
+public org.bouncycastle.asn1.x509.SubjectPublicKeyInfo getSubjectPublicKeyInfo()
+
+public org.bouncycastle.asn1.DERBitString getSubjectUniqueId()
+
+public int getVersion()
+
+public org.bouncycastle.asn1.DERInteger getVersionNumber()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.Time extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.ASN1Choice
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERObject time
+----------------METHODS----------------
+
+public void <init>(
+java.util.Date)
+
+public void <init>(
+org.bouncycastle.asn1.DERObject)
+
+public static org.bouncycastle.asn1.x509.Time getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.Time getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public java.util.Date getDate()
+
+public java.lang.String getTime()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.UserNotice extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.DisplayText explicitText
+
+private org.bouncycastle.asn1.x509.NoticeReference noticeRef
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.NoticeReference
+java.lang.String)
+
+public void <init>(
+org.bouncycastle.asn1.x509.NoticeReference
+org.bouncycastle.asn1.x509.DisplayText)
+
+public org.bouncycastle.asn1.x509.DisplayText getExplicitText()
+
+public org.bouncycastle.asn1.x509.NoticeReference getNoticeRef()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.V1TBSCertificateGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.Time endDate
+
+ org.bouncycastle.asn1.x509.X509Name issuer
+
+ org.bouncycastle.asn1.DERInteger serialNumber
+
+ org.bouncycastle.asn1.x509.AlgorithmIdentifier signature
+
+ org.bouncycastle.asn1.x509.Time startDate
+
+ org.bouncycastle.asn1.x509.X509Name subject
+
+ org.bouncycastle.asn1.x509.SubjectPublicKeyInfo subjectPublicKeyInfo
+
+ org.bouncycastle.asn1.DERTaggedObject version
+----------------METHODS----------------
+
+public void <init>()
+
+public org.bouncycastle.asn1.x509.TBSCertificateStructure generateTBSCertificate()
+
+public void setEndDate(
+org.bouncycastle.asn1.DERUTCTime)
+
+public void setEndDate(
+org.bouncycastle.asn1.x509.Time)
+
+public void setIssuer(
+org.bouncycastle.asn1.x509.X509Name)
+
+public void setSerialNumber(
+org.bouncycastle.asn1.DERInteger)
+
+public void setSignature(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier)
+
+public void setStartDate(
+org.bouncycastle.asn1.DERUTCTime)
+
+public void setStartDate(
+org.bouncycastle.asn1.x509.Time)
+
+public void setSubject(
+org.bouncycastle.asn1.x509.X509Name)
+
+public void setSubjectPublicKeyInfo(
+org.bouncycastle.asn1.x509.SubjectPublicKeyInfo)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.V2AttributeCertificateInfoGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.AttCertValidityPeriod attrCertValidityPeriod
+
+private org.bouncycastle.asn1.ASN1EncodableVector attributes
+
+private org.bouncycastle.asn1.DERGeneralizedTime endDate
+
+private org.bouncycastle.asn1.x509.X509Extensions extensions
+
+private org.bouncycastle.asn1.x509.Holder holder
+
+private org.bouncycastle.asn1.x509.AttCertIssuer issuer
+
+private org.bouncycastle.asn1.DERBitString issuerUniqueID
+
+private org.bouncycastle.asn1.DERInteger serialNumber
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier signature
+
+private org.bouncycastle.asn1.DERGeneralizedTime startDate
+
+private org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>()
+
+public void addAttribute(
+java.lang.String
+org.bouncycastle.asn1.ASN1Encodable)
+
+public void addAttribute(
+org.bouncycastle.asn1.x509.Attribute)
+
+public org.bouncycastle.asn1.x509.AttributeCertificateInfo generateAttributeCertificateInfo()
+
+public void setEndDate(
+org.bouncycastle.asn1.DERGeneralizedTime)
+
+public void setExtensions(
+org.bouncycastle.asn1.x509.X509Extensions)
+
+public void setHolder(
+org.bouncycastle.asn1.x509.Holder)
+
+public void setIssuer(
+org.bouncycastle.asn1.x509.AttCertIssuer)
+
+public void setIssuerUniqueID(
+org.bouncycastle.asn1.DERBitString)
+
+public void setSerialNumber(
+org.bouncycastle.asn1.DERInteger)
+
+public void setSignature(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier)
+
+public void setStartDate(
+org.bouncycastle.asn1.DERGeneralizedTime)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.V2Form extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.IssuerSerial baseCertificateID
+
+ org.bouncycastle.asn1.x509.GeneralNames issuerName
+
+ org.bouncycastle.asn1.x509.ObjectDigestInfo objectDigestInfo
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.GeneralNames)
+
+public static org.bouncycastle.asn1.x509.V2Form getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.V2Form getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.IssuerSerial getBaseCertificateID()
+
+public org.bouncycastle.asn1.x509.GeneralNames getIssuerName()
+
+public org.bouncycastle.asn1.x509.ObjectDigestInfo getObjectDigestInfo()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.V2TBSCertListGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.util.Vector crlentries
+
+ org.bouncycastle.asn1.x509.X509Extensions extensions
+
+ org.bouncycastle.asn1.x509.X509Name issuer
+
+ org.bouncycastle.asn1.x509.Time nextUpdate
+
+ org.bouncycastle.asn1.x509.AlgorithmIdentifier signature
+
+ org.bouncycastle.asn1.x509.Time thisUpdate
+
+ org.bouncycastle.asn1.DERInteger version
+----------------METHODS----------------
+
+public void <init>()
+
+public void addCRLEntry(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void addCRLEntry(
+org.bouncycastle.asn1.DERInteger
+org.bouncycastle.asn1.DERUTCTime
+int)
+
+public void addCRLEntry(
+org.bouncycastle.asn1.DERInteger
+org.bouncycastle.asn1.x509.Time
+int)
+
+public void addCRLEntry(
+org.bouncycastle.asn1.DERInteger
+org.bouncycastle.asn1.x509.Time
+int
+org.bouncycastle.asn1.DERGeneralizedTime)
+
+public void addCRLEntry(
+org.bouncycastle.asn1.DERInteger
+org.bouncycastle.asn1.x509.Time
+org.bouncycastle.asn1.x509.X509Extensions)
+
+public org.bouncycastle.asn1.x509.TBSCertList generateTBSCertList()
+
+public void setExtensions(
+org.bouncycastle.asn1.x509.X509Extensions)
+
+public void setIssuer(
+org.bouncycastle.asn1.x509.X509Name)
+
+public void setNextUpdate(
+org.bouncycastle.asn1.DERUTCTime)
+
+public void setNextUpdate(
+org.bouncycastle.asn1.x509.Time)
+
+public void setSignature(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier)
+
+public void setThisUpdate(
+org.bouncycastle.asn1.DERUTCTime)
+
+public void setThisUpdate(
+org.bouncycastle.asn1.x509.Time)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.V3TBSCertificateGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.Time endDate
+
+ org.bouncycastle.asn1.x509.X509Extensions extensions
+
+ org.bouncycastle.asn1.x509.X509Name issuer
+
+ org.bouncycastle.asn1.DERInteger serialNumber
+
+ org.bouncycastle.asn1.x509.AlgorithmIdentifier signature
+
+ org.bouncycastle.asn1.x509.Time startDate
+
+ org.bouncycastle.asn1.x509.X509Name subject
+
+ org.bouncycastle.asn1.x509.SubjectPublicKeyInfo subjectPublicKeyInfo
+
+ org.bouncycastle.asn1.DERTaggedObject version
+----------------METHODS----------------
+
+public void <init>()
+
+public org.bouncycastle.asn1.x509.TBSCertificateStructure generateTBSCertificate()
+
+public void setEndDate(
+org.bouncycastle.asn1.DERUTCTime)
+
+public void setEndDate(
+org.bouncycastle.asn1.x509.Time)
+
+public void setExtensions(
+org.bouncycastle.asn1.x509.X509Extensions)
+
+public void setIssuer(
+org.bouncycastle.asn1.x509.X509Name)
+
+public void setSerialNumber(
+org.bouncycastle.asn1.DERInteger)
+
+public void setSignature(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier)
+
+public void setStartDate(
+org.bouncycastle.asn1.DERUTCTime)
+
+public void setStartDate(
+org.bouncycastle.asn1.x509.Time)
+
+public void setSubject(
+org.bouncycastle.asn1.x509.X509Name)
+
+public void setSubjectPublicKeyInfo(
+org.bouncycastle.asn1.x509.SubjectPublicKeyInfo)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.X509Attributes extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier RoleSyntax
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.X509CertificateStructure extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.x509.X509ObjectIdentifiers, org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ASN1Sequence seq
+
+ org.bouncycastle.asn1.DERBitString sig
+
+ org.bouncycastle.asn1.x509.AlgorithmIdentifier sigAlgId
+
+ org.bouncycastle.asn1.x509.TBSCertificateStructure tbsCert
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.x509.X509CertificateStructure getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.X509CertificateStructure getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public org.bouncycastle.asn1.x509.Time getEndDate()
+
+public org.bouncycastle.asn1.x509.X509Name getIssuer()
+
+public org.bouncycastle.asn1.DERInteger getSerialNumber()
+
+public org.bouncycastle.asn1.DERBitString getSignature()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getSignatureAlgorithm()
+
+public org.bouncycastle.asn1.x509.Time getStartDate()
+
+public org.bouncycastle.asn1.x509.X509Name getSubject()
+
+public org.bouncycastle.asn1.x509.SubjectPublicKeyInfo getSubjectPublicKeyInfo()
+
+public org.bouncycastle.asn1.x509.TBSCertificateStructure getTBSCertificate()
+
+public int getVersion()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public abstract class org.bouncycastle.asn1.x509.X509NameEntryConverter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected boolean canBePrintable(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected org.bouncycastle.asn1.DERObject convertHexEncoded(
+java.lang.String
+int)
+
+public abstract org.bouncycastle.asn1.DERObject getConvertedValue(
+org.bouncycastle.asn1.DERObjectIdentifier
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.X509DefaultEntryConverter extends org.bouncycastle.asn1.x509.X509NameEntryConverter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public org.bouncycastle.asn1.DERObject getConvertedValue(
+org.bouncycastle.asn1.DERObjectIdentifier
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.X509Extension extends java.lang.Object
+
+----------------FIELDS----------------
+
+ boolean critical
+
+ org.bouncycastle.asn1.ASN1OctetString value
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.DERBoolean
+org.bouncycastle.asn1.ASN1OctetString)
+
+public void <init>(
+boolean
+org.bouncycastle.asn1.ASN1OctetString)
+
+public boolean equals(
+java.lang.Object)
+
+public org.bouncycastle.asn1.ASN1OctetString getValue()
+
+public int hashCode()
+
+public boolean isCritical()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.X509Extensions extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier AuthorityInfoAccess
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier AuthorityKeyIdentifier
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier BasicConstraints
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier BiometricInfo
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier CRLDistributionPoints
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier CRLNumber
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier CertificateIssuer
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier CertificatePolicies
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier DeltaCRLIndicator
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier ExtendedKeyUsage
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier FreshestCRL
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier InhibitAnyPolicy
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier InstructionCode
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier InvalidityDate
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier IssuerAlternativeName
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier IssuingDistributionPoint
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier KeyUsage
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier NameConstraints
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier PolicyConstraints
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier PolicyMappings
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier PrivateKeyUsagePeriod
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier QCStatements
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier ReasonCode
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier SubjectAlternativeName
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier SubjectDirectoryAttributes
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier SubjectInfoAccess
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier SubjectKeyIdentifier
+
+private org.bouncycastle.asn1.OrderedTable table
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.util.Hashtable)
+
+public void <init>(
+java.util.Vector
+java.util.Hashtable)
+
+public void <init>(
+java.util.Vector
+java.util.Vector)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public static org.bouncycastle.asn1.x509.X509Extensions getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.X509Extensions getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public boolean equals(
+java.lang.Object)
+
+public org.bouncycastle.asn1.x509.X509Extension getExtension(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+public int hashCode()
+
+public java.util.Enumeration oids()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.X509Name extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier BUSINESS_CATEGORY
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier C
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier CN
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier COUNTRY_OF_CITIZENSHIP
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier COUNTRY_OF_RESIDENCE
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier DATE_OF_BIRTH
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier DC
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier DN_QUALIFIER
+
+public static java.util.Hashtable DefaultLookUp
+
+public static boolean DefaultReverse
+
+public static java.util.Hashtable DefaultSymbols
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier E
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier EmailAddress
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier GENDER
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier GENERATION
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier GIVENNAME
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier INITIALS
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier L
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier NAME_AT_BIRTH
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier O
+
+public static java.util.Hashtable OIDLookUp
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier OU
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier PLACE_OF_BIRTH
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier POSTAL_ADDRESS
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier POSTAL_CODE
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier PSEUDONYM
+
+public static java.util.Hashtable RFC1779Symbols
+
+public static java.util.Hashtable RFC2253Symbols
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier SERIALNUMBER
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier SN
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier ST
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier STREET
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier SURNAME
+
+public static java.util.Hashtable SymbolLookUp
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier T
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier UID
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier UNIQUE_IDENTIFIER
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier UnstructuredAddress
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier UnstructuredName
+
+private org.bouncycastle.asn1.x509.X509NameEntryConverter converter
+
+private org.bouncycastle.asn1.x509.X509NameElementList elems
+
+private org.bouncycastle.asn1.ASN1Sequence seq
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+org.bouncycastle.asn1.x509.X509NameEntryConverter)
+
+public void <init>(
+java.util.Hashtable)
+
+public void <init>(
+java.util.Vector
+java.util.Hashtable)
+
+public void <init>(
+java.util.Vector
+java.util.Hashtable
+org.bouncycastle.asn1.x509.X509DefaultEntryConverter)
+
+public void <init>(
+java.util.Vector
+java.util.Vector)
+
+public void <init>(
+java.util.Vector
+java.util.Vector
+org.bouncycastle.asn1.x509.X509NameEntryConverter)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+boolean
+java.lang.String)
+
+public void <init>(
+boolean
+java.lang.String
+org.bouncycastle.asn1.x509.X509NameEntryConverter)
+
+public void <init>(
+boolean
+java.util.Hashtable
+java.lang.String)
+
+public void <init>(
+boolean
+java.util.Hashtable
+java.lang.String
+org.bouncycastle.asn1.x509.X509NameEntryConverter)
+
+private void appendValue(
+java.lang.StringBuffer
+java.util.Hashtable
+org.bouncycastle.asn1.DERObjectIdentifier
+java.lang.String)
+
+private java.lang.String bytesToString(
+byte[])
+
+private org.bouncycastle.asn1.DERObjectIdentifier decodeOID(
+java.lang.String
+java.util.Hashtable)
+
+public static org.bouncycastle.asn1.x509.X509Name getInstance(
+java.lang.Object)
+
+public static org.bouncycastle.asn1.x509.X509Name getInstance(
+org.bouncycastle.asn1.ASN1TaggedObject
+boolean)
+
+public boolean equals(
+java.lang.Object)
+
+public boolean equals(
+java.lang.Object
+boolean)
+
+public java.util.Vector getOIDs()
+
+public java.util.Vector getValues()
+
+public int hashCode()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+public java.lang.String toString()
+
+public java.lang.String toString(
+boolean
+java.util.Hashtable)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.X509NameElementList extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int added
+
+private org.bouncycastle.asn1.DERObjectIdentifier key0
+
+private org.bouncycastle.asn1.DERObjectIdentifier key1
+
+private org.bouncycastle.asn1.DERObjectIdentifier key2
+
+private org.bouncycastle.asn1.DERObjectIdentifier key3
+
+private java.lang.Object[] rest
+
+private int size
+
+private java.lang.String value0
+
+private java.lang.String value1
+
+private java.lang.String value2
+
+private java.lang.String value3
+----------------METHODS----------------
+
+public void <init>()
+
+public void add(
+org.bouncycastle.asn1.DERObjectIdentifier
+java.lang.String)
+
+public void add(
+org.bouncycastle.asn1.DERObjectIdentifier
+java.lang.String
+boolean)
+
+public boolean getAdded(
+int)
+
+public org.bouncycastle.asn1.DERObjectIdentifier getKey(
+int)
+
+public java.lang.String getValue(
+int)
+
+public org.bouncycastle.asn1.x509.X509NameElementList reverse()
+
+public void setLastAddedFlag()
+
+public int size()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.X509NameTokenizer extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.lang.StringBuffer buf
+
+private int index
+
+private char seperator
+
+private java.lang.String value
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+char)
+
+public boolean hasMoreTokens()
+
+public java.lang.String nextToken()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.qualified.BiometricData extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.ASN1OctetString biometricDataHash
+
+ org.bouncycastle.asn1.x509.AlgorithmIdentifier hashAlgorithm
+
+ org.bouncycastle.asn1.DERIA5String sourceDataUri
+
+ org.bouncycastle.asn1.x509.qualified.TypeOfBiometricData typeOfBiometricData
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.qualified.TypeOfBiometricData
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.ASN1OctetString)
+
+public void <init>(
+org.bouncycastle.asn1.x509.qualified.TypeOfBiometricData
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+org.bouncycastle.asn1.ASN1OctetString
+org.bouncycastle.asn1.DERIA5String)
+
+public static org.bouncycastle.asn1.x509.qualified.BiometricData getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.ASN1OctetString getBiometricDataHash()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getHashAlgorithm()
+
+public org.bouncycastle.asn1.DERIA5String getSourceDataUri()
+
+public org.bouncycastle.asn1.x509.qualified.TypeOfBiometricData getTypeOfBiometricData()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.x509.qualified.ETSIQCObjectIdentifiers extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String id_etsi_qcs
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_etsi_qcs_LimiteValue
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_etsi_qcs_QcCompliance
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_etsi_qcs_QcSSCD
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_etsi_qcs_RetentionPeriod
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.qualified.Iso4217CurrencyCode extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.ASN1Choice
+
+----------------FIELDS----------------
+
+final int ALPHABETIC_MAXSIZE
+
+final int NUMERIC_MAXSIZE
+
+final int NUMERIC_MINSIZE
+
+ int numeric
+
+ org.bouncycastle.asn1.DEREncodable obj
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+java.lang.String)
+
+public static org.bouncycastle.asn1.x509.qualified.Iso4217CurrencyCode getInstance(
+java.lang.Object)
+
+public java.lang.String getAlphabetic()
+
+public int getNumeric()
+
+public boolean isAlphabetic()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.qualified.MonetaryValue extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERInteger amount
+
+ org.bouncycastle.asn1.x509.qualified.Iso4217CurrencyCode currency
+
+ org.bouncycastle.asn1.DERInteger exponent
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.x509.qualified.Iso4217CurrencyCode
+int
+int)
+
+public static org.bouncycastle.asn1.x509.qualified.MonetaryValue getInstance(
+java.lang.Object)
+
+public java.math.BigInteger getAmount()
+
+public org.bouncycastle.asn1.x509.qualified.Iso4217CurrencyCode getCurrency()
+
+public java.math.BigInteger getExponent()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.x509.qualified.RFC3739QCObjectIdentifiers extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String id_qcs
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_qcs_pkixQCSyntax_v1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_qcs_pkixQCSyntax_v2
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.qualified.QCStatement extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.x509.qualified.ETSIQCObjectIdentifiers, org.bouncycastle.asn1.x509.qualified.RFC3739QCObjectIdentifiers
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.DERObjectIdentifier qcStatementId
+
+ org.bouncycastle.asn1.ASN1Encodable qcStatementInfo
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.ASN1Encodable)
+
+public static org.bouncycastle.asn1.x509.qualified.QCStatement getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DERObjectIdentifier getStatementId()
+
+public org.bouncycastle.asn1.ASN1Encodable getStatementInfo()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.qualified.SemanticsInformation extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.GeneralName[] nameRegistrationAuthorities
+
+ org.bouncycastle.asn1.DERObjectIdentifier semanticsIdentifier
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.x509.GeneralName[])
+
+public void <init>(
+org.bouncycastle.asn1.x509.GeneralName[])
+
+public static org.bouncycastle.asn1.x509.qualified.SemanticsInformation getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.x509.GeneralName[] getNameRegistrationAuthorities()
+
+public org.bouncycastle.asn1.DERObjectIdentifier getSemanticsIdentifier()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.asn1.x509.qualified.TypeOfBiometricData extends org.bouncycastle.asn1.ASN1Encodable implements org.bouncycastle.asn1.ASN1Choice
+
+----------------FIELDS----------------
+
+public static final int HANDWRITTEN_SIGNATURE
+
+public static final int PICTURE
+
+ org.bouncycastle.asn1.DEREncodable obj
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public void <init>(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+public static org.bouncycastle.asn1.x509.qualified.TypeOfBiometricData getInstance(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DERObjectIdentifier getBiometricDataOid()
+
+public int getPredefinedBiometricType()
+
+public boolean isPredefined()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public final class org.bouncycastle.asn1.x509.sigi.SigIObjectIdentifiers extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_sigi
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_sigi_cp
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_sigi_cp_sigconform
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_sigi_kp
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_sigi_kp_directoryService
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_sigi_on
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_sigi_on_personalData
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.asn1.x9.X9ObjectIdentifiers extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String ansi_X9_62
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2onb191v4
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2onb191v5
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2onb239v4
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2onb239v5
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2pnb163v1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2pnb163v2
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2pnb163v3
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2pnb176w1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2pnb208w1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2pnb272w1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2pnb368w1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2png304v1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2tnb191v1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2tnb191v2
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2tnb191v3
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2tnb239v1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2tnb239v2
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2tnb239v3
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2tnb359v1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier c2tnb431r1
+
+public static final java.lang.String cTwoCurve
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier characteristic_two_field
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier dhpublicnumber
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier ecdsa_with_SHA1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier ecdsa_with_SHA2
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier ecdsa_with_SHA224
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier ecdsa_with_SHA256
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier ecdsa_with_SHA384
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier ecdsa_with_SHA512
+
+public static final java.lang.String ellipticCurve
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier gnBasis
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_dsa
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_dsa_with_sha1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier id_ecPublicKey
+
+public static final java.lang.String id_ecSigType
+
+public static final java.lang.String id_fieldType
+
+public static final java.lang.String id_publicKeyType
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier ppBasis
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier prime192v1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier prime192v2
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier prime192v3
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier prime239v1
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier prime239v2
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier prime239v3
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier prime256v1
+
+public static final java.lang.String primeCurve
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier prime_field
+
+public static final org.bouncycastle.asn1.DERObjectIdentifier tpBasis
+----------------METHODS----------------
+
+static void <clinit>()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.crypto.AsymmetricBlockCipher extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int getInputBlockSize()
+
+public abstract int getOutputBlockSize()
+
+public abstract void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public abstract byte[] processBlock(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.AsymmetricCipherKeyPair extends java.lang.Object
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.CipherParameters privateParam
+
+private org.bouncycastle.crypto.CipherParameters publicParam
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.CipherParameters
+org.bouncycastle.crypto.CipherParameters)
+
+public org.bouncycastle.crypto.CipherParameters getPrivate()
+
+public org.bouncycastle.crypto.CipherParameters getPublic()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.crypto.AsymmetricCipherKeyPairGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.bouncycastle.crypto.AsymmetricCipherKeyPair generateKeyPair()
+
+public abstract void init(
+org.bouncycastle.crypto.KeyGenerationParameters)
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.crypto.BasicAgreement extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.math.BigInteger calculateAgreement(
+org.bouncycastle.crypto.CipherParameters)
+
+public abstract void init(
+org.bouncycastle.crypto.CipherParameters)
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.crypto.BlockCipher extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getAlgorithmName()
+
+public abstract int getBlockSize()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public abstract void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public abstract int processBlock(
+byte[]
+int
+byte[]
+int)
+
+public abstract void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.BufferedAsymmetricBlockCipher extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected byte[] buf
+
+protected int bufOff
+
+private final org.bouncycastle.crypto.AsymmetricBlockCipher cipher
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.AsymmetricBlockCipher)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public byte[] doFinal()
+
+public int getBufferPosition()
+
+public int getInputBlockSize()
+
+public int getOutputBlockSize()
+
+public org.bouncycastle.crypto.AsymmetricBlockCipher getUnderlyingCipher()
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+
+public void processByte(
+byte)
+
+public void processBytes(
+byte[]
+int
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.BufferedBlockCipher extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected byte[] buf
+
+protected int bufOff
+
+protected org.bouncycastle.crypto.BlockCipher cipher
+
+protected boolean forEncryption
+
+protected boolean partialBlockOkay
+
+protected boolean pgpCFB
+----------------METHODS----------------
+
+protected void <init>()
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException;Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public int doFinal(
+byte[]
+int)
+
+public int getBlockSize()
+
+public int getOutputSize(
+int)
+
+public org.bouncycastle.crypto.BlockCipher getUnderlyingCipher()
+
+public int getUpdateOutputSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public int processByte(
+byte
+byte[]
+int)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public int processBytes(
+byte[]
+int
+int
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.CipherKeyGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected java.security.SecureRandom random
+
+protected int strength
+----------------METHODS----------------
+
+public void <init>()
+
+public byte[] generateKey()
+
+public void init(
+org.bouncycastle.crypto.KeyGenerationParameters)
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.crypto.CipherParameters extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.CryptoException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.crypto.DSA extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.math.BigInteger[] generateSignature(
+byte[])
+
+public abstract void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+
+public abstract boolean verifySignature(
+byte[]
+java.math.BigInteger
+java.math.BigInteger)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.RuntimeCryptoException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.DataLengthException extends org.bouncycastle.crypto.RuntimeCryptoException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.crypto.DerivationFunction extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalArgumentException; )
+public abstract int generateBytes(
+byte[]
+int
+int)
+
+public abstract org.bouncycastle.crypto.Digest getDigest()
+
+public abstract void init(
+org.bouncycastle.crypto.DerivationParameters)
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.crypto.DerivationParameters extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.InvalidCipherTextException extends org.bouncycastle.crypto.CryptoException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.KeyGenerationParameters extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.security.SecureRandom random
+
+private int strength
+----------------METHODS----------------
+
+public void <init>(
+java.security.SecureRandom
+int)
+
+public java.security.SecureRandom getRandom()
+
+public int getStrength()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.crypto.Mac extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public abstract int doFinal(
+byte[]
+int)
+
+public abstract java.lang.String getAlgorithmName()
+
+public abstract int getMacSize()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public abstract void init(
+org.bouncycastle.crypto.CipherParameters)
+
+public abstract void reset()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+public abstract void update(
+byte)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public abstract void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public abstract class org.bouncycastle.crypto.PBEParametersGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected int iterationCount
+
+protected byte[] password
+
+protected byte[] salt
+----------------METHODS----------------
+
+protected void <init>()
+
+public static byte[] PKCS12PasswordToBytes(
+char[])
+
+public static byte[] PKCS5PasswordToBytes(
+char[])
+
+public abstract org.bouncycastle.crypto.CipherParameters generateDerivedMacParameters(
+int)
+
+public abstract org.bouncycastle.crypto.CipherParameters generateDerivedParameters(
+int)
+
+public abstract org.bouncycastle.crypto.CipherParameters generateDerivedParameters(
+int
+int)
+
+public int getIterationCount()
+
+public byte[] getPassword()
+
+public byte[] getSalt()
+
+public void init(
+byte[]
+byte[]
+int)
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.crypto.Signer extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/CryptoException;Lorg/bouncycastle/crypto/DataLengthException; )
+public abstract byte[] generateSignature()
+
+public abstract void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+
+public abstract void reset()
+
+public abstract void update(
+byte)
+
+public abstract void update(
+byte[]
+int
+int)
+
+public abstract boolean verifySignature(
+byte[])
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.crypto.SignerWithRecovery extends java.lang.Object implements org.bouncycastle.crypto.Signer
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract byte[] getRecoveredMessage()
+
+public abstract boolean hasFullMessage()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.crypto.StreamCipher extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getAlgorithmName()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public abstract void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException; )
+public abstract void processBytes(
+byte[]
+int
+int
+byte[]
+int)
+
+public abstract void reset()
+
+public abstract byte returnByte(
+byte)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.StreamBlockCipher extends java.lang.Object implements org.bouncycastle.crypto.StreamCipher
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.BlockCipher cipher
+
+private byte[] oneByte
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher)
+
+public java.lang.String getAlgorithmName()
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException; )
+public void processBytes(
+byte[]
+int
+int
+byte[]
+int)
+
+public void reset()
+
+public byte returnByte(
+byte)
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.crypto.Wrapper extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getAlgorithmName()
+
+public abstract void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public abstract byte[] unwrap(
+byte[]
+int
+int)
+
+public abstract byte[] wrap(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.agreement.DHAgreement extends java.lang.Object
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.params.DHParameters dhParams
+
+private org.bouncycastle.crypto.params.DHPrivateKeyParameters key
+
+private java.math.BigInteger privateValue
+
+private java.security.SecureRandom random
+----------------METHODS----------------
+
+public void <init>()
+
+public java.math.BigInteger calculateAgreement(
+org.bouncycastle.crypto.params.DHPublicKeyParameters
+java.math.BigInteger)
+
+public java.math.BigInteger calculateMessage()
+
+public void init(
+org.bouncycastle.crypto.CipherParameters)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.agreement.DHBasicAgreement extends java.lang.Object implements org.bouncycastle.crypto.BasicAgreement
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.params.DHParameters dhParams
+
+private org.bouncycastle.crypto.params.DHPrivateKeyParameters key
+
+private java.security.SecureRandom random
+----------------METHODS----------------
+
+public void <init>()
+
+public java.math.BigInteger calculateAgreement(
+org.bouncycastle.crypto.CipherParameters)
+
+public void init(
+org.bouncycastle.crypto.CipherParameters)
+
+________________CLASS________________
+
+
+public abstract class org.bouncycastle.crypto.digests.GeneralDigest extends java.lang.Object implements org.bouncycastle.crypto.ExtendedDigest
+
+----------------FIELDS----------------
+
+private static final int BYTE_LENGTH
+
+private long byteCount
+
+private byte[] xBuf
+
+private int xBufOff
+----------------METHODS----------------
+
+protected void <init>()
+
+protected void <init>(
+org.bouncycastle.crypto.digests.GeneralDigest)
+
+public void finish()
+
+public int getByteLength()
+
+protected abstract void processBlock()
+
+protected abstract void processLength(
+long)
+
+protected abstract void processWord(
+byte[]
+int)
+
+public void reset()
+
+public void update(
+byte)
+
+public void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public abstract class org.bouncycastle.crypto.digests.LongDigest extends java.lang.Object implements org.bouncycastle.crypto.ExtendedDigest
+
+----------------FIELDS----------------
+
+private static final int BYTE_LENGTH
+
+static final long[] K
+
+protected long H1
+
+protected long H2
+
+protected long H3
+
+protected long H4
+
+protected long H5
+
+protected long H6
+
+protected long H7
+
+protected long H8
+
+private long[] W
+
+private long byteCount1
+
+private long byteCount2
+
+private int wOff
+
+private byte[] xBuf
+
+private int xBufOff
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>()
+
+protected void <init>(
+org.bouncycastle.crypto.digests.LongDigest)
+
+private long Ch(
+long
+long
+long)
+
+private long Maj(
+long
+long
+long)
+
+private long Sigma0(
+long)
+
+private long Sigma1(
+long)
+
+private long Sum0(
+long)
+
+private long Sum1(
+long)
+
+private void adjustByteCounts()
+
+public void finish()
+
+public int getByteLength()
+
+protected void processBlock()
+
+protected void processLength(
+long
+long)
+
+protected void processWord(
+byte[]
+int)
+
+public void reset()
+
+protected void unpackWord(
+long
+byte[]
+int)
+
+public void update(
+byte)
+
+public void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.digests.MD2Digest extends java.lang.Object implements org.bouncycastle.crypto.ExtendedDigest
+
+----------------FIELDS----------------
+
+private static final int DIGEST_LENGTH
+
+private static final byte[] S
+
+private byte[] C
+
+private int COff
+
+private byte[] M
+
+private byte[] X
+
+private int mOff
+
+private int xOff
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+org.bouncycastle.crypto.digests.MD2Digest)
+
+public int doFinal(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getByteLength()
+
+public int getDigestSize()
+
+protected void processBlock(
+byte[])
+
+protected void processCheckSum(
+byte[])
+
+public void reset()
+
+public void update(
+byte)
+
+public void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.digests.MD4Digest extends org.bouncycastle.crypto.digests.GeneralDigest
+
+----------------FIELDS----------------
+
+private static final int DIGEST_LENGTH
+
+private static final int S11
+
+private static final int S12
+
+private static final int S13
+
+private static final int S14
+
+private static final int S21
+
+private static final int S22
+
+private static final int S23
+
+private static final int S24
+
+private static final int S31
+
+private static final int S32
+
+private static final int S33
+
+private static final int S34
+
+private int H1
+
+private int H2
+
+private int H3
+
+private int H4
+
+private int[] X
+
+private int xOff
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.bouncycastle.crypto.digests.MD4Digest)
+
+private int F(
+int
+int
+int)
+
+private int G(
+int
+int
+int)
+
+private int H(
+int
+int
+int)
+
+private int rotateLeft(
+int
+int)
+
+private void unpackWord(
+int
+byte[]
+int)
+
+public int doFinal(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getDigestSize()
+
+protected void processBlock()
+
+protected void processLength(
+long)
+
+protected void processWord(
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.digests.MD5Digest extends org.bouncycastle.crypto.digests.GeneralDigest
+
+----------------FIELDS----------------
+
+private static final int DIGEST_LENGTH
+
+private static final int S11
+
+private static final int S12
+
+private static final int S13
+
+private static final int S14
+
+private static final int S21
+
+private static final int S22
+
+private static final int S23
+
+private static final int S24
+
+private static final int S31
+
+private static final int S32
+
+private static final int S33
+
+private static final int S34
+
+private static final int S41
+
+private static final int S42
+
+private static final int S43
+
+private static final int S44
+
+private int H1
+
+private int H2
+
+private int H3
+
+private int H4
+
+private int[] X
+
+private int xOff
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.bouncycastle.crypto.digests.MD5Digest)
+
+private int F(
+int
+int
+int)
+
+private int G(
+int
+int
+int)
+
+private int H(
+int
+int
+int)
+
+private int K(
+int
+int
+int)
+
+private int rotateLeft(
+int
+int)
+
+private void unpackWord(
+int
+byte[]
+int)
+
+public int doFinal(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getDigestSize()
+
+protected void processBlock()
+
+protected void processLength(
+long)
+
+protected void processWord(
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.digests.SHA1Digest extends org.bouncycastle.crypto.digests.GeneralDigest
+
+----------------FIELDS----------------
+
+private static final int DIGEST_LENGTH
+
+private static final int Y1
+
+private static final int Y2
+
+private static final int Y3
+
+private static final int Y4
+
+private int H1
+
+private int H2
+
+private int H3
+
+private int H4
+
+private int H5
+
+private int[] X
+
+private int xOff
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.bouncycastle.crypto.digests.SHA1Digest)
+
+private int f(
+int
+int
+int)
+
+private int g(
+int
+int
+int)
+
+private int h(
+int
+int
+int)
+
+private void unpackWord(
+int
+byte[]
+int)
+
+public int doFinal(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getDigestSize()
+
+protected void processBlock()
+
+protected void processLength(
+long)
+
+protected void processWord(
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.digests.SHA224Digest extends org.bouncycastle.crypto.digests.GeneralDigest
+
+----------------FIELDS----------------
+
+private static final int DIGEST_LENGTH
+
+static final int[] K
+
+private int H1
+
+private int H2
+
+private int H3
+
+private int H4
+
+private int H5
+
+private int H6
+
+private int H7
+
+private int H8
+
+private int[] X
+
+private int xOff
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+org.bouncycastle.crypto.digests.SHA224Digest)
+
+private int Ch(
+int
+int
+int)
+
+private int Maj(
+int
+int
+int)
+
+private int Sum0(
+int)
+
+private int Sum1(
+int)
+
+private int Theta0(
+int)
+
+private int Theta1(
+int)
+
+private void unpackWord(
+int
+byte[]
+int)
+
+public int doFinal(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getDigestSize()
+
+protected void processBlock()
+
+protected void processLength(
+long)
+
+protected void processWord(
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.digests.SHA256Digest extends org.bouncycastle.crypto.digests.GeneralDigest
+
+----------------FIELDS----------------
+
+private static final int DIGEST_LENGTH
+
+static final int[] K
+
+private int H1
+
+private int H2
+
+private int H3
+
+private int H4
+
+private int H5
+
+private int H6
+
+private int H7
+
+private int H8
+
+private int[] X
+
+private int xOff
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void <init>(
+org.bouncycastle.crypto.digests.SHA256Digest)
+
+private int Ch(
+int
+int
+int)
+
+private int Maj(
+int
+int
+int)
+
+private int Sum0(
+int)
+
+private int Sum1(
+int)
+
+private int Theta0(
+int)
+
+private int Theta1(
+int)
+
+private void unpackWord(
+int
+byte[]
+int)
+
+public int doFinal(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getDigestSize()
+
+protected void processBlock()
+
+protected void processLength(
+long)
+
+protected void processWord(
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.digests.SHA384Digest extends org.bouncycastle.crypto.digests.LongDigest
+
+----------------FIELDS----------------
+
+private static final int DIGEST_LENGTH
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.bouncycastle.crypto.digests.SHA384Digest)
+
+public int doFinal(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getDigestSize()
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.digests.SHA512Digest extends org.bouncycastle.crypto.digests.LongDigest
+
+----------------FIELDS----------------
+
+private static final int DIGEST_LENGTH
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.bouncycastle.crypto.digests.SHA512Digest)
+
+public int doFinal(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getDigestSize()
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.digests.ShortenedDigest extends java.lang.Object implements org.bouncycastle.crypto.ExtendedDigest
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.ExtendedDigest baseDigest
+
+private int length
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.ExtendedDigest
+int)
+
+public int doFinal(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getByteLength()
+
+public int getDigestSize()
+
+public void reset()
+
+public void update(
+byte)
+
+public void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.encodings.ISO9796d1Encoding extends java.lang.Object implements org.bouncycastle.crypto.AsymmetricBlockCipher
+
+----------------FIELDS----------------
+
+private static byte[] inverse
+
+private static byte[] shadows
+
+private int bitSize
+
+private org.bouncycastle.crypto.AsymmetricBlockCipher engine
+
+private boolean forEncryption
+
+private int padBits
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.bouncycastle.crypto.AsymmetricBlockCipher)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+private byte[] decodeBlock(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+private byte[] encodeBlock(
+byte[]
+int
+int)
+
+public int getInputBlockSize()
+
+public int getOutputBlockSize()
+
+public int getPadBits()
+
+public org.bouncycastle.crypto.AsymmetricBlockCipher getUnderlyingCipher()
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public byte[] processBlock(
+byte[]
+int
+int)
+
+public void setPadBits(
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.encodings.OAEPEncoding extends java.lang.Object implements org.bouncycastle.crypto.AsymmetricBlockCipher
+
+----------------FIELDS----------------
+
+private byte[] defHash
+
+private org.bouncycastle.crypto.AsymmetricBlockCipher engine
+
+private boolean forEncryption
+
+private org.bouncycastle.crypto.Digest hash
+
+private java.security.SecureRandom random
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.AsymmetricBlockCipher)
+
+public void <init>(
+org.bouncycastle.crypto.AsymmetricBlockCipher
+org.bouncycastle.crypto.Digest)
+
+public void <init>(
+org.bouncycastle.crypto.AsymmetricBlockCipher
+org.bouncycastle.crypto.Digest
+byte[])
+
+private void ItoOSP(
+int
+byte[])
+
+private byte[] maskGeneratorFunction1(
+byte[]
+int
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public byte[] decodeBlock(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public byte[] encodeBlock(
+byte[]
+int
+int)
+
+public int getInputBlockSize()
+
+public int getOutputBlockSize()
+
+public org.bouncycastle.crypto.AsymmetricBlockCipher getUnderlyingCipher()
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public byte[] processBlock(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.encodings.PKCS1Encoding extends java.lang.Object implements org.bouncycastle.crypto.AsymmetricBlockCipher
+
+----------------FIELDS----------------
+
+private static int HEADER_LENGTH
+
+public static java.lang.String STRICT_LENGTH_ENABLED_PROPERTY
+
+private org.bouncycastle.crypto.AsymmetricBlockCipher engine
+
+private boolean forEncryption
+
+private boolean forPrivateKey
+
+private java.security.SecureRandom random
+
+private boolean useStrictLength
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.bouncycastle.crypto.AsymmetricBlockCipher)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+private byte[] decodeBlock(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+private byte[] encodeBlock(
+byte[]
+int
+int)
+
+public int getInputBlockSize()
+
+public int getOutputBlockSize()
+
+public org.bouncycastle.crypto.AsymmetricBlockCipher getUnderlyingCipher()
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public byte[] processBlock(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.engines.AESEngine extends java.lang.Object implements org.bouncycastle.crypto.BlockCipher
+
+----------------FIELDS----------------
+
+private static final int BLOCK_SIZE
+
+private static final byte[] S
+
+private static final byte[] Si
+
+private static final int[] T0
+
+private static final int[] Tinv0
+
+private static final int m1
+
+private static final int m2
+
+private static final int m3
+
+private static final int[] rcon
+
+private int C0
+
+private int C1
+
+private int C2
+
+private int C3
+
+private int ROUNDS
+
+private int[][] WorkingKey
+
+private boolean forEncryption
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private int FFmulX(
+int)
+
+private final void decryptBlock(
+int[][])
+
+private final void encryptBlock(
+int[][])
+
+private int[][] generateWorkingKey(
+byte[]
+boolean)
+
+private int inv_mcol(
+int)
+
+private final void packBlock(
+byte[]
+int)
+
+private int shift(
+int
+int)
+
+private int subWord(
+int)
+
+private final void unpackBlock(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getBlockSize()
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+
+public int processBlock(
+byte[]
+int
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.engines.AESFastEngine extends java.lang.Object implements org.bouncycastle.crypto.BlockCipher
+
+----------------FIELDS----------------
+
+private static final int BLOCK_SIZE
+
+private static final byte[] S
+
+private static final byte[] Si
+
+private static final int[] T0
+
+private static final int[] T1
+
+private static final int[] T2
+
+private static final int[] T3
+
+private static final int[] Tinv0
+
+private static final int[] Tinv1
+
+private static final int[] Tinv2
+
+private static final int[] Tinv3
+
+private static final int m1
+
+private static final int m2
+
+private static final int m3
+
+private static final int[] rcon
+
+private int C0
+
+private int C1
+
+private int C2
+
+private int C3
+
+private int ROUNDS
+
+private int[][] WorkingKey
+
+private boolean forEncryption
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private int FFmulX(
+int)
+
+private final void decryptBlock(
+int[][])
+
+private final void encryptBlock(
+int[][])
+
+private int[][] generateWorkingKey(
+byte[]
+boolean)
+
+private int inv_mcol(
+int)
+
+private final void packBlock(
+byte[]
+int)
+
+private int shift(
+int
+int)
+
+private int subWord(
+int)
+
+private final void unpackBlock(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getBlockSize()
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+
+public int processBlock(
+byte[]
+int
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.engines.AESLightEngine extends java.lang.Object implements org.bouncycastle.crypto.BlockCipher
+
+----------------FIELDS----------------
+
+private static final int BLOCK_SIZE
+
+private static final byte[] S
+
+private static final byte[] Si
+
+private static final int m1
+
+private static final int m2
+
+private static final int m3
+
+private static final int[] rcon
+
+private int C0
+
+private int C1
+
+private int C2
+
+private int C3
+
+private int ROUNDS
+
+private int[][] WorkingKey
+
+private boolean forEncryption
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private int FFmulX(
+int)
+
+private final void decryptBlock(
+int[][])
+
+private void encryptBlock(
+int[][])
+
+private int[][] generateWorkingKey(
+byte[]
+boolean)
+
+private int inv_mcol(
+int)
+
+private int mcol(
+int)
+
+private final void packBlock(
+byte[]
+int)
+
+private int shift(
+int
+int)
+
+private int subWord(
+int)
+
+private final void unpackBlock(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getBlockSize()
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+
+public int processBlock(
+byte[]
+int
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.engines.AESWrapEngine extends java.lang.Object implements org.bouncycastle.crypto.Wrapper
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.BlockCipher engine
+
+private boolean forWrapping
+
+private byte[] iv
+
+private org.bouncycastle.crypto.params.KeyParameter param
+----------------METHODS----------------
+
+public void <init>()
+
+public java.lang.String getAlgorithmName()
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public byte[] unwrap(
+byte[]
+int
+int)
+
+public byte[] wrap(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.engines.DESEngine extends java.lang.Object implements org.bouncycastle.crypto.BlockCipher
+
+----------------FIELDS----------------
+
+protected static final int BLOCK_SIZE
+
+static short[] Df_Key
+
+static int[] SP1
+
+static int[] SP2
+
+static int[] SP3
+
+static int[] SP4
+
+static int[] SP5
+
+static int[] SP6
+
+static int[] SP7
+
+static int[] SP8
+
+static int[] bigbyte
+
+static short[] bytebit
+
+static byte[] pc1
+
+static byte[] pc2
+
+static byte[] totrot
+
+private int[] workingKey
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+protected void desFunc(
+int[]
+byte[]
+int
+byte[]
+int)
+
+protected int[] generateWorkingKey(
+boolean
+byte[])
+
+public java.lang.String getAlgorithmName()
+
+public int getBlockSize()
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+
+public int processBlock(
+byte[]
+int
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.engines.DESedeEngine extends org.bouncycastle.crypto.engines.DESEngine
+
+----------------FIELDS----------------
+
+protected static final int BLOCK_SIZE
+
+private boolean forEncryption
+
+private int[] workingKey1
+
+private int[] workingKey2
+
+private int[] workingKey3
+----------------METHODS----------------
+
+public void <init>()
+
+public java.lang.String getAlgorithmName()
+
+public int getBlockSize()
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+
+public int processBlock(
+byte[]
+int
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.engines.DESedeWrapEngine extends java.lang.Object implements org.bouncycastle.crypto.Wrapper
+
+----------------FIELDS----------------
+
+private static final byte[] IV2
+
+ byte[] digest
+
+private org.bouncycastle.crypto.modes.CBCBlockCipher engine
+
+private boolean forWrapping
+
+private byte[] iv
+
+private org.bouncycastle.crypto.params.KeyParameter param
+
+private org.bouncycastle.crypto.params.ParametersWithIV paramPlusIV
+
+ org.bouncycastle.crypto.Digest sha1
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private byte[] calculateCMSKeyChecksum(
+byte[])
+
+private boolean checkCMSKeyChecksum(
+byte[]
+byte[])
+
+public java.lang.String getAlgorithmName()
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public byte[] unwrap(
+byte[]
+int
+int)
+
+public byte[] wrap(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.engines.IESEngine extends java.lang.Object
+
+----------------FIELDS----------------
+
+ org.bouncycastle.crypto.BasicAgreement agree
+
+ org.bouncycastle.crypto.BufferedBlockCipher cipher
+
+ boolean forEncryption
+
+ org.bouncycastle.crypto.DerivationFunction kdf
+
+ org.bouncycastle.crypto.Mac mac
+
+ byte[] macBuf
+
+ org.bouncycastle.crypto.params.IESParameters param
+
+ org.bouncycastle.crypto.CipherParameters privParam
+
+ org.bouncycastle.crypto.CipherParameters pubParam
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.BasicAgreement
+org.bouncycastle.crypto.DerivationFunction
+org.bouncycastle.crypto.Mac)
+
+public void <init>(
+org.bouncycastle.crypto.BasicAgreement
+org.bouncycastle.crypto.DerivationFunction
+org.bouncycastle.crypto.Mac
+org.bouncycastle.crypto.BufferedBlockCipher)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+private byte[] decryptBlock(
+byte[]
+int
+int
+byte[])
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+private byte[] encryptBlock(
+byte[]
+int
+int
+byte[])
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters
+org.bouncycastle.crypto.CipherParameters
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public byte[] processBlock(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.engines.NullEngine extends java.lang.Object implements org.bouncycastle.crypto.BlockCipher
+
+----------------FIELDS----------------
+
+protected static final int BLOCK_SIZE
+----------------METHODS----------------
+
+public void <init>()
+
+public java.lang.String getAlgorithmName()
+
+public int getBlockSize()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public int processBlock(
+byte[]
+int
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.engines.RSAEngine extends java.lang.Object implements org.bouncycastle.crypto.AsymmetricBlockCipher
+
+----------------FIELDS----------------
+
+private boolean forEncryption
+
+private org.bouncycastle.crypto.params.RSAKeyParameters key
+
+private int shift
+----------------METHODS----------------
+
+public void <init>()
+
+public int getInputBlockSize()
+
+public int getOutputBlockSize()
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+
+public byte[] processBlock(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.generators.BaseKDFBytesGenerator extends java.lang.Object implements org.bouncycastle.crypto.DerivationFunction
+
+----------------FIELDS----------------
+
+private int counterStart
+
+private org.bouncycastle.crypto.Digest digest
+
+private byte[] iv
+
+private byte[] shared
+----------------METHODS----------------
+
+protected void <init>(
+int
+org.bouncycastle.crypto.Digest)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalArgumentException; )
+public int generateBytes(
+byte[]
+int
+int)
+
+public org.bouncycastle.crypto.Digest getDigest()
+
+public void init(
+org.bouncycastle.crypto.DerivationParameters)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.generators.DESKeyGenerator extends org.bouncycastle.crypto.CipherKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public byte[] generateKey()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.generators.DESedeKeyGenerator extends org.bouncycastle.crypto.generators.DESKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public byte[] generateKey()
+
+public void init(
+org.bouncycastle.crypto.KeyGenerationParameters)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.generators.DHBasicKeyPairGenerator extends java.lang.Object implements org.bouncycastle.crypto.AsymmetricCipherKeyPairGenerator
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.generators.DHKeyGeneratorHelper helper
+
+private org.bouncycastle.crypto.params.DHKeyGenerationParameters param
+----------------METHODS----------------
+
+public void <init>()
+
+public org.bouncycastle.crypto.AsymmetricCipherKeyPair generateKeyPair()
+
+public void init(
+org.bouncycastle.crypto.KeyGenerationParameters)
+
+________________CLASS________________
+
+
+ class org.bouncycastle.crypto.generators.DHKeyGeneratorHelper extends java.lang.Object
+
+----------------FIELDS----------------
+
+static final org.bouncycastle.crypto.generators.DHKeyGeneratorHelper INSTANCE
+
+private static final int MAX_ITERATIONS
+
+private static java.math.BigInteger TWO
+
+private static java.math.BigInteger ZERO
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+private java.math.BigInteger createInRange(
+java.math.BigInteger
+java.security.SecureRandom)
+
+ java.math.BigInteger calculatePrivate(
+java.math.BigInteger
+java.security.SecureRandom
+int)
+
+ java.math.BigInteger calculatePublic(
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.generators.DHKeyPairGenerator extends java.lang.Object implements org.bouncycastle.crypto.AsymmetricCipherKeyPairGenerator
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.generators.DHKeyGeneratorHelper helper
+
+private org.bouncycastle.crypto.params.DHKeyGenerationParameters param
+----------------METHODS----------------
+
+public void <init>()
+
+public org.bouncycastle.crypto.AsymmetricCipherKeyPair generateKeyPair()
+
+public void init(
+org.bouncycastle.crypto.KeyGenerationParameters)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.generators.DHParametersGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.math.BigInteger ONE
+
+private static java.math.BigInteger TWO
+
+private int certainty
+
+private java.security.SecureRandom random
+
+private int size
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public org.bouncycastle.crypto.params.DHParameters generateParameters()
+
+public void init(
+int
+int
+java.security.SecureRandom)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.generators.DSAKeyPairGenerator extends java.lang.Object implements org.bouncycastle.crypto.AsymmetricCipherKeyPairGenerator
+
+----------------FIELDS----------------
+
+private static java.math.BigInteger ZERO
+
+private org.bouncycastle.crypto.params.DSAKeyGenerationParameters param
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public org.bouncycastle.crypto.AsymmetricCipherKeyPair generateKeyPair()
+
+public void init(
+org.bouncycastle.crypto.KeyGenerationParameters)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.generators.DSAParametersGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.math.BigInteger ONE
+
+private static java.math.BigInteger TWO
+
+private int certainty
+
+private java.security.SecureRandom random
+
+private int size
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void add(
+byte[]
+byte[]
+int)
+
+public org.bouncycastle.crypto.params.DSAParameters generateParameters()
+
+public void init(
+int
+int
+java.security.SecureRandom)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.generators.KDF1BytesGenerator extends org.bouncycastle.crypto.generators.BaseKDFBytesGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.Digest)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.generators.KDF2BytesGenerator extends org.bouncycastle.crypto.generators.BaseKDFBytesGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.Digest)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.generators.MGF1BytesGenerator extends java.lang.Object implements org.bouncycastle.crypto.DerivationFunction
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.Digest digest
+
+private int hLen
+
+private byte[] seed
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.Digest)
+
+private void ItoOSP(
+int
+byte[])
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalArgumentException; )
+public int generateBytes(
+byte[]
+int
+int)
+
+public org.bouncycastle.crypto.Digest getDigest()
+
+public void init(
+org.bouncycastle.crypto.DerivationParameters)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.generators.OpenSSLPBEParametersGenerator extends org.bouncycastle.crypto.PBEParametersGenerator
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.Digest digest
+----------------METHODS----------------
+
+public void <init>()
+
+private byte[] generateDerivedKey(
+int)
+
+public org.bouncycastle.crypto.CipherParameters generateDerivedMacParameters(
+int)
+
+public org.bouncycastle.crypto.CipherParameters generateDerivedParameters(
+int)
+
+public org.bouncycastle.crypto.CipherParameters generateDerivedParameters(
+int
+int)
+
+public void init(
+byte[]
+byte[])
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.generators.PKCS12ParametersGenerator extends org.bouncycastle.crypto.PBEParametersGenerator
+
+----------------FIELDS----------------
+
+public static final int IV_MATERIAL
+
+public static final int KEY_MATERIAL
+
+public static final int MAC_MATERIAL
+
+private org.bouncycastle.crypto.Digest digest
+
+private int u
+
+private int v
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.Digest)
+
+private void adjust(
+byte[]
+int
+byte[])
+
+private byte[] generateDerivedKey(
+int
+int)
+
+public org.bouncycastle.crypto.CipherParameters generateDerivedMacParameters(
+int)
+
+public org.bouncycastle.crypto.CipherParameters generateDerivedParameters(
+int)
+
+public org.bouncycastle.crypto.CipherParameters generateDerivedParameters(
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator extends org.bouncycastle.crypto.PBEParametersGenerator
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.Digest digest
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.Digest)
+
+private byte[] generateDerivedKey()
+
+public org.bouncycastle.crypto.CipherParameters generateDerivedMacParameters(
+int)
+
+public org.bouncycastle.crypto.CipherParameters generateDerivedParameters(
+int)
+
+public org.bouncycastle.crypto.CipherParameters generateDerivedParameters(
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator extends org.bouncycastle.crypto.PBEParametersGenerator
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.Mac hMac
+----------------METHODS----------------
+
+public void <init>()
+
+private void F(
+byte[]
+byte[]
+int
+byte[]
+byte[]
+int)
+
+private byte[] generateDerivedKey(
+int)
+
+private void intToOctet(
+byte[]
+int)
+
+public org.bouncycastle.crypto.CipherParameters generateDerivedMacParameters(
+int)
+
+public org.bouncycastle.crypto.CipherParameters generateDerivedParameters(
+int)
+
+public org.bouncycastle.crypto.CipherParameters generateDerivedParameters(
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.generators.RSAKeyPairGenerator extends java.lang.Object implements org.bouncycastle.crypto.AsymmetricCipherKeyPairGenerator
+
+----------------FIELDS----------------
+
+private static java.math.BigInteger ONE
+
+private org.bouncycastle.crypto.params.RSAKeyGenerationParameters param
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public org.bouncycastle.crypto.AsymmetricCipherKeyPair generateKeyPair()
+
+public void init(
+org.bouncycastle.crypto.KeyGenerationParameters)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.io.DigestInputStream extends java.io.FilterInputStream
+
+----------------FIELDS----------------
+
+protected org.bouncycastle.crypto.Digest digest
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream
+org.bouncycastle.crypto.Digest)
+
+public org.bouncycastle.crypto.Digest getDigest()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.io.DigestOutputStream extends java.io.FilterOutputStream
+
+----------------FIELDS----------------
+
+protected org.bouncycastle.crypto.Digest digest
+----------------METHODS----------------
+
+public void <init>(
+java.io.OutputStream
+org.bouncycastle.crypto.Digest)
+
+public org.bouncycastle.crypto.Digest getDigest()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.io.MacInputStream extends java.io.FilterInputStream
+
+----------------FIELDS----------------
+
+protected org.bouncycastle.crypto.Mac mac
+----------------METHODS----------------
+
+public void <init>(
+java.io.InputStream
+org.bouncycastle.crypto.Mac)
+
+public org.bouncycastle.crypto.Mac getMac()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int read(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.io.MacOutputStream extends java.io.FilterOutputStream
+
+----------------FIELDS----------------
+
+protected org.bouncycastle.crypto.Mac mac
+----------------METHODS----------------
+
+public void <init>(
+java.io.OutputStream
+org.bouncycastle.crypto.Mac)
+
+public org.bouncycastle.crypto.Mac getMac()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.macs.BlockCipherMac extends java.lang.Object implements org.bouncycastle.crypto.Mac
+
+----------------FIELDS----------------
+
+private byte[] buf
+
+private int bufOff
+
+private org.bouncycastle.crypto.BlockCipher cipher
+
+private byte[] mac
+
+private int macSize
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher)
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher
+int)
+
+public int doFinal(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getMacSize()
+
+public void init(
+org.bouncycastle.crypto.CipherParameters)
+
+public void reset()
+
+public void update(
+byte)
+
+public void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.macs.CBCBlockCipherMac extends java.lang.Object implements org.bouncycastle.crypto.Mac
+
+----------------FIELDS----------------
+
+private byte[] buf
+
+private int bufOff
+
+private org.bouncycastle.crypto.BlockCipher cipher
+
+private byte[] mac
+
+private int macSize
+
+private org.bouncycastle.crypto.paddings.BlockCipherPadding padding
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher)
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher
+int)
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher
+int
+org.bouncycastle.crypto.paddings.BlockCipherPadding)
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher
+org.bouncycastle.crypto.paddings.BlockCipherPadding)
+
+public int doFinal(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getMacSize()
+
+public void init(
+org.bouncycastle.crypto.CipherParameters)
+
+public void reset()
+
+public void update(
+byte)
+
+public void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.macs.CFBBlockCipherMac extends java.lang.Object implements org.bouncycastle.crypto.Mac
+
+----------------FIELDS----------------
+
+private byte[] buf
+
+private int bufOff
+
+private org.bouncycastle.crypto.macs.MacCFBBlockCipher cipher
+
+private byte[] mac
+
+private int macSize
+
+private org.bouncycastle.crypto.paddings.BlockCipherPadding padding
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher)
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher
+int
+int)
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher
+int
+int
+org.bouncycastle.crypto.paddings.BlockCipherPadding)
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher
+org.bouncycastle.crypto.paddings.BlockCipherPadding)
+
+public int doFinal(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getMacSize()
+
+public void init(
+org.bouncycastle.crypto.CipherParameters)
+
+public void reset()
+
+public void update(
+byte)
+
+public void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.macs.HMac extends java.lang.Object implements org.bouncycastle.crypto.Mac
+
+----------------FIELDS----------------
+
+private static final byte IPAD
+
+private static final byte OPAD
+
+private static java.util.Hashtable blockLengths
+
+private int blockLength
+
+private org.bouncycastle.crypto.Digest digest
+
+private int digestSize
+
+private byte[] inputPad
+
+private byte[] outputPad
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+org.bouncycastle.crypto.Digest)
+
+private void <init>(
+org.bouncycastle.crypto.Digest
+int)
+
+private static int getByteLength(
+org.bouncycastle.crypto.Digest)
+
+public int doFinal(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getMacSize()
+
+public org.bouncycastle.crypto.Digest getUnderlyingDigest()
+
+public void init(
+org.bouncycastle.crypto.CipherParameters)
+
+public void reset()
+
+public void update(
+byte)
+
+public void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.macs.ISO9797Alg3Mac extends java.lang.Object implements org.bouncycastle.crypto.Mac
+
+----------------FIELDS----------------
+
+private byte[] buf
+
+private int bufOff
+
+private org.bouncycastle.crypto.BlockCipher cipher
+
+private org.bouncycastle.crypto.params.KeyParameter lastKey2
+
+private org.bouncycastle.crypto.params.KeyParameter lastKey3
+
+private byte[] mac
+
+private int macSize
+
+private org.bouncycastle.crypto.paddings.BlockCipherPadding padding
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher)
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher
+int)
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher
+int
+org.bouncycastle.crypto.paddings.BlockCipherPadding)
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher
+org.bouncycastle.crypto.paddings.BlockCipherPadding)
+
+public int doFinal(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getMacSize()
+
+public void init(
+org.bouncycastle.crypto.CipherParameters)
+
+public void reset()
+
+public void update(
+byte)
+
+public void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+ class org.bouncycastle.crypto.macs.MacCFBBlockCipher extends java.lang.Object
+
+----------------FIELDS----------------
+
+private byte[] IV
+
+private int blockSize
+
+private byte[] cfbOutV
+
+private byte[] cfbV
+
+private org.bouncycastle.crypto.BlockCipher cipher
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getBlockSize()
+
+ void getMacBlock(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void init(
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public int processBlock(
+byte[]
+int
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.macs.OldHMac extends java.lang.Object implements org.bouncycastle.crypto.Mac
+
+----------------FIELDS----------------
+
+private static final int BLOCK_LENGTH
+
+private static final byte IPAD
+
+private static final byte OPAD
+
+private org.bouncycastle.crypto.Digest digest
+
+private int digestSize
+
+private byte[] inputPad
+
+private byte[] outputPad
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.Digest)
+
+public int doFinal(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getMacSize()
+
+public org.bouncycastle.crypto.Digest getUnderlyingDigest()
+
+public void init(
+org.bouncycastle.crypto.CipherParameters)
+
+public void reset()
+
+public void update(
+byte)
+
+public void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.modes.CBCBlockCipher extends java.lang.Object implements org.bouncycastle.crypto.BlockCipher
+
+----------------FIELDS----------------
+
+private byte[] IV
+
+private int blockSize
+
+private byte[] cbcNextV
+
+private byte[] cbcV
+
+private org.bouncycastle.crypto.BlockCipher cipher
+
+private boolean encrypting
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+private int decryptBlock(
+byte[]
+int
+byte[]
+int)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+private int encryptBlock(
+byte[]
+int
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getBlockSize()
+
+public org.bouncycastle.crypto.BlockCipher getUnderlyingCipher()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public int processBlock(
+byte[]
+int
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.modes.CCMBlockCipher extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int blockSize
+
+private org.bouncycastle.crypto.BlockCipher cipher
+
+private boolean forEncryption
+
+private byte[] macBlock
+
+private org.bouncycastle.crypto.params.CCMParameters params
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher)
+
+private boolean areEqual(
+byte[]
+byte[])
+
+private int calculateMac(
+byte[]
+int
+int
+byte[])
+
+public java.lang.String getAlgorithmName()
+
+public byte[] getMac()
+
+public org.bouncycastle.crypto.BlockCipher getUnderlyingCipher()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException;Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public byte[] processPacket(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.modes.CFBBlockCipher extends java.lang.Object implements org.bouncycastle.crypto.BlockCipher
+
+----------------FIELDS----------------
+
+private byte[] IV
+
+private int blockSize
+
+private byte[] cfbOutV
+
+private byte[] cfbV
+
+private org.bouncycastle.crypto.BlockCipher cipher
+
+private boolean encrypting
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher
+int)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public int decryptBlock(
+byte[]
+int
+byte[]
+int)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public int encryptBlock(
+byte[]
+int
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getBlockSize()
+
+public org.bouncycastle.crypto.BlockCipher getUnderlyingCipher()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public int processBlock(
+byte[]
+int
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.modes.CTSBlockCipher extends org.bouncycastle.crypto.BufferedBlockCipher
+
+----------------FIELDS----------------
+
+private int blockSize
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException;Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public int doFinal(
+byte[]
+int)
+
+public int getOutputSize(
+int)
+
+public int getUpdateOutputSize(
+int)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public int processByte(
+byte
+byte[]
+int)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public int processBytes(
+byte[]
+int
+int
+byte[]
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.modes.GOFBBlockCipher extends java.lang.Object implements org.bouncycastle.crypto.BlockCipher
+
+----------------FIELDS----------------
+
+static final int C1
+
+static final int C2
+
+private byte[] IV
+
+ int N3
+
+ int N4
+
+private final int blockSize
+
+private final org.bouncycastle.crypto.BlockCipher cipher
+
+ boolean firstStep
+
+private byte[] ofbOutV
+
+private byte[] ofbV
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher)
+
+private int bytesToint(
+byte[]
+int)
+
+private void intTobytes(
+int
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getBlockSize()
+
+public org.bouncycastle.crypto.BlockCipher getUnderlyingCipher()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public int processBlock(
+byte[]
+int
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.modes.OFBBlockCipher extends java.lang.Object implements org.bouncycastle.crypto.BlockCipher
+
+----------------FIELDS----------------
+
+private byte[] IV
+
+private final int blockSize
+
+private final org.bouncycastle.crypto.BlockCipher cipher
+
+private byte[] ofbOutV
+
+private byte[] ofbV
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getBlockSize()
+
+public org.bouncycastle.crypto.BlockCipher getUnderlyingCipher()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public int processBlock(
+byte[]
+int
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.modes.PaddedBlockCipher extends org.bouncycastle.crypto.BufferedBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException;Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public int doFinal(
+byte[]
+int)
+
+public int getOutputSize(
+int)
+
+public int getUpdateOutputSize(
+int)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public int processByte(
+byte
+byte[]
+int)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public int processBytes(
+byte[]
+int
+int
+byte[]
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.modes.SICBlockCipher extends java.lang.Object implements org.bouncycastle.crypto.BlockCipher
+
+----------------FIELDS----------------
+
+private byte[] IV
+
+private final int blockSize
+
+private final org.bouncycastle.crypto.BlockCipher cipher
+
+private byte[] counter
+
+private byte[] counterOut
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher)
+
+public java.lang.String getAlgorithmName()
+
+public int getBlockSize()
+
+public org.bouncycastle.crypto.BlockCipher getUnderlyingCipher()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public int processBlock(
+byte[]
+int
+byte[]
+int)
+
+public void reset()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.crypto.paddings.BlockCipherPadding extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int addPadding(
+byte[]
+int)
+
+public abstract java.lang.String getPaddingName()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public abstract void init(
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public abstract int padCount(
+byte[])
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.paddings.ISO10126d2Padding extends java.lang.Object implements org.bouncycastle.crypto.paddings.BlockCipherPadding
+
+----------------FIELDS----------------
+
+ java.security.SecureRandom random
+----------------METHODS----------------
+
+public void <init>()
+
+public int addPadding(
+byte[]
+int)
+
+public java.lang.String getPaddingName()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void init(
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public int padCount(
+byte[])
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.paddings.ISO7816d4Padding extends java.lang.Object implements org.bouncycastle.crypto.paddings.BlockCipherPadding
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public int addPadding(
+byte[]
+int)
+
+public java.lang.String getPaddingName()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void init(
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public int padCount(
+byte[])
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.paddings.PKCS7Padding extends java.lang.Object implements org.bouncycastle.crypto.paddings.BlockCipherPadding
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public int addPadding(
+byte[]
+int)
+
+public java.lang.String getPaddingName()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void init(
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public int padCount(
+byte[])
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher extends org.bouncycastle.crypto.BufferedBlockCipher
+
+----------------FIELDS----------------
+
+ org.bouncycastle.crypto.paddings.BlockCipherPadding padding
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher)
+
+public void <init>(
+org.bouncycastle.crypto.BlockCipher
+org.bouncycastle.crypto.paddings.BlockCipherPadding)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException;Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public int doFinal(
+byte[]
+int)
+
+public int getOutputSize(
+int)
+
+public int getUpdateOutputSize(
+int)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public int processByte(
+byte
+byte[]
+int)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalStateException; )
+public int processBytes(
+byte[]
+int
+int
+byte[]
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.paddings.TBCPadding extends java.lang.Object implements org.bouncycastle.crypto.paddings.BlockCipherPadding
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public int addPadding(
+byte[]
+int)
+
+public java.lang.String getPaddingName()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void init(
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public int padCount(
+byte[])
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.paddings.X923Padding extends java.lang.Object implements org.bouncycastle.crypto.paddings.BlockCipherPadding
+
+----------------FIELDS----------------
+
+ java.security.SecureRandom random
+----------------METHODS----------------
+
+public void <init>()
+
+public int addPadding(
+byte[]
+int)
+
+public java.lang.String getPaddingName()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void init(
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public int padCount(
+byte[])
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.paddings.ZeroBytePadding extends java.lang.Object implements org.bouncycastle.crypto.paddings.BlockCipherPadding
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public int addPadding(
+byte[]
+int)
+
+public java.lang.String getPaddingName()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public void init(
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/InvalidCipherTextException; )
+public int padCount(
+byte[])
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.AsymmetricKeyParameter extends java.lang.Object implements org.bouncycastle.crypto.CipherParameters
+
+----------------FIELDS----------------
+
+ boolean privateKey
+----------------METHODS----------------
+
+public void <init>(
+boolean)
+
+public boolean isPrivate()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.CCMParameters extends java.lang.Object implements org.bouncycastle.crypto.CipherParameters
+
+----------------FIELDS----------------
+
+private byte[] associatedText
+
+private org.bouncycastle.crypto.params.KeyParameter key
+
+private int macSize
+
+private byte[] nonce
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.params.KeyParameter
+int
+byte[]
+byte[])
+
+public byte[] getAssociatedText()
+
+public org.bouncycastle.crypto.params.KeyParameter getKey()
+
+public int getMacSize()
+
+public byte[] getNonce()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.KeyParameter extends java.lang.Object implements org.bouncycastle.crypto.CipherParameters
+
+----------------FIELDS----------------
+
+private byte[] key
+----------------METHODS----------------
+
+public void <init>(
+byte[])
+
+public void <init>(
+byte[]
+int
+int)
+
+public byte[] getKey()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.DESParameters extends org.bouncycastle.crypto.params.KeyParameter
+
+----------------FIELDS----------------
+
+public static final int DES_KEY_LENGTH
+
+private static byte[] DES_weak_keys
+
+private static final int N_DES_WEAK_KEYS
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>(
+byte[])
+
+public static boolean isWeakKey(
+byte[]
+int)
+
+public static void setOddParity(
+byte[])
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.DESedeParameters extends org.bouncycastle.crypto.params.DESParameters
+
+----------------FIELDS----------------
+
+public static final int DES_EDE_KEY_LENGTH
+----------------METHODS----------------
+
+public void <init>(
+byte[])
+
+public static boolean isWeakKey(
+byte[]
+int)
+
+public static boolean isWeakKey(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.DHKeyGenerationParameters extends org.bouncycastle.crypto.KeyGenerationParameters
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.params.DHParameters params
+----------------METHODS----------------
+
+public void <init>(
+java.security.SecureRandom
+org.bouncycastle.crypto.params.DHParameters)
+
+public org.bouncycastle.crypto.params.DHParameters getParameters()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.DHKeyParameters extends org.bouncycastle.crypto.params.AsymmetricKeyParameter
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.params.DHParameters params
+----------------METHODS----------------
+
+protected void <init>(
+boolean
+org.bouncycastle.crypto.params.DHParameters)
+
+public boolean equals(
+java.lang.Object)
+
+public org.bouncycastle.crypto.params.DHParameters getParameters()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.DHParameters extends java.lang.Object implements org.bouncycastle.crypto.CipherParameters
+
+----------------FIELDS----------------
+
+private java.math.BigInteger g
+
+private int j
+
+private java.math.BigInteger p
+
+private java.math.BigInteger q
+
+private org.bouncycastle.crypto.params.DHValidationParameters validation
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger)
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+int)
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+int
+org.bouncycastle.crypto.params.DHValidationParameters)
+
+public boolean equals(
+java.lang.Object)
+
+public java.math.BigInteger getG()
+
+public int getJ()
+
+public java.math.BigInteger getP()
+
+public java.math.BigInteger getQ()
+
+public org.bouncycastle.crypto.params.DHValidationParameters getValidationParameters()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.DHPrivateKeyParameters extends org.bouncycastle.crypto.params.DHKeyParameters
+
+----------------FIELDS----------------
+
+private java.math.BigInteger x
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+org.bouncycastle.crypto.params.DHParameters)
+
+public boolean equals(
+java.lang.Object)
+
+public java.math.BigInteger getX()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.DHPublicKeyParameters extends org.bouncycastle.crypto.params.DHKeyParameters
+
+----------------FIELDS----------------
+
+private java.math.BigInteger y
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+org.bouncycastle.crypto.params.DHParameters)
+
+public boolean equals(
+java.lang.Object)
+
+public java.math.BigInteger getY()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.DHValidationParameters extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int counter
+
+private byte[] seed
+----------------METHODS----------------
+
+public void <init>(
+byte[]
+int)
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.DSAKeyGenerationParameters extends org.bouncycastle.crypto.KeyGenerationParameters
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.params.DSAParameters params
+----------------METHODS----------------
+
+public void <init>(
+java.security.SecureRandom
+org.bouncycastle.crypto.params.DSAParameters)
+
+public org.bouncycastle.crypto.params.DSAParameters getParameters()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.DSAKeyParameters extends org.bouncycastle.crypto.params.AsymmetricKeyParameter
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.params.DSAParameters params
+----------------METHODS----------------
+
+public void <init>(
+boolean
+org.bouncycastle.crypto.params.DSAParameters)
+
+public org.bouncycastle.crypto.params.DSAParameters getParameters()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.DSAParameters extends java.lang.Object implements org.bouncycastle.crypto.CipherParameters
+
+----------------FIELDS----------------
+
+private java.math.BigInteger g
+
+private java.math.BigInteger p
+
+private java.math.BigInteger q
+
+private org.bouncycastle.crypto.params.DSAValidationParameters validation
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger)
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+org.bouncycastle.crypto.params.DSAValidationParameters)
+
+public boolean equals(
+java.lang.Object)
+
+public java.math.BigInteger getG()
+
+public java.math.BigInteger getP()
+
+public java.math.BigInteger getQ()
+
+public org.bouncycastle.crypto.params.DSAValidationParameters getValidationParameters()
+
+public int hashCode()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.DSAPrivateKeyParameters extends org.bouncycastle.crypto.params.DSAKeyParameters
+
+----------------FIELDS----------------
+
+private java.math.BigInteger x
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+org.bouncycastle.crypto.params.DSAParameters)
+
+public java.math.BigInteger getX()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.DSAPublicKeyParameters extends org.bouncycastle.crypto.params.DSAKeyParameters
+
+----------------FIELDS----------------
+
+private java.math.BigInteger y
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+org.bouncycastle.crypto.params.DSAParameters)
+
+public java.math.BigInteger getY()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.DSAValidationParameters extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int counter
+
+private byte[] seed
+----------------METHODS----------------
+
+public void <init>(
+byte[]
+int)
+
+public boolean equals(
+java.lang.Object)
+
+public int getCounter()
+
+public byte[] getSeed()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.IESParameters extends java.lang.Object implements org.bouncycastle.crypto.CipherParameters
+
+----------------FIELDS----------------
+
+private byte[] derivation
+
+private byte[] encoding
+
+private int macKeySize
+----------------METHODS----------------
+
+public void <init>(
+byte[]
+byte[]
+int)
+
+public byte[] getDerivationV()
+
+public byte[] getEncodingV()
+
+public int getMacKeySize()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.IESWithCipherParameters extends org.bouncycastle.crypto.params.IESParameters
+
+----------------FIELDS----------------
+
+private int cipherKeySize
+----------------METHODS----------------
+
+public void <init>(
+byte[]
+byte[]
+int
+int)
+
+public int getCipherKeySize()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.ISO18033KDFParameters extends java.lang.Object implements org.bouncycastle.crypto.DerivationParameters
+
+----------------FIELDS----------------
+
+ byte[] seed
+----------------METHODS----------------
+
+public void <init>(
+byte[])
+
+public byte[] getSeed()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.KDFParameters extends java.lang.Object implements org.bouncycastle.crypto.DerivationParameters
+
+----------------FIELDS----------------
+
+ byte[] iv
+
+ byte[] shared
+----------------METHODS----------------
+
+public void <init>(
+byte[]
+byte[])
+
+public byte[] getIV()
+
+public byte[] getSharedSecret()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.MGFParameters extends java.lang.Object implements org.bouncycastle.crypto.DerivationParameters
+
+----------------FIELDS----------------
+
+ byte[] seed
+----------------METHODS----------------
+
+public void <init>(
+byte[])
+
+public void <init>(
+byte[]
+int
+int)
+
+public byte[] getSeed()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.ParametersWithIV extends java.lang.Object implements org.bouncycastle.crypto.CipherParameters
+
+----------------FIELDS----------------
+
+private byte[] iv
+
+private org.bouncycastle.crypto.CipherParameters parameters
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.CipherParameters
+byte[])
+
+public void <init>(
+org.bouncycastle.crypto.CipherParameters
+byte[]
+int
+int)
+
+public byte[] getIV()
+
+public org.bouncycastle.crypto.CipherParameters getParameters()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.ParametersWithRandom extends java.lang.Object implements org.bouncycastle.crypto.CipherParameters
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.CipherParameters parameters
+
+private java.security.SecureRandom random
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.CipherParameters)
+
+public void <init>(
+org.bouncycastle.crypto.CipherParameters
+java.security.SecureRandom)
+
+public org.bouncycastle.crypto.CipherParameters getParameters()
+
+public java.security.SecureRandom getRandom()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.ParametersWithSBox extends java.lang.Object implements org.bouncycastle.crypto.CipherParameters
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.CipherParameters parameters
+
+private byte[] sBox
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.CipherParameters
+byte[])
+
+public org.bouncycastle.crypto.CipherParameters getParameters()
+
+public byte[] getSBox()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.ParametersWithSalt extends java.lang.Object implements org.bouncycastle.crypto.CipherParameters
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.CipherParameters parameters
+
+private byte[] salt
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.CipherParameters
+byte[])
+
+public void <init>(
+org.bouncycastle.crypto.CipherParameters
+byte[]
+int
+int)
+
+public org.bouncycastle.crypto.CipherParameters getParameters()
+
+public byte[] getSalt()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.RC2Parameters extends java.lang.Object implements org.bouncycastle.crypto.CipherParameters
+
+----------------FIELDS----------------
+
+private int bits
+
+private byte[] key
+----------------METHODS----------------
+
+public void <init>(
+byte[])
+
+public void <init>(
+byte[]
+int)
+
+public int getEffectiveKeyBits()
+
+public byte[] getKey()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.RC5Parameters extends java.lang.Object implements org.bouncycastle.crypto.CipherParameters
+
+----------------FIELDS----------------
+
+private byte[] key
+
+private int rounds
+----------------METHODS----------------
+
+public void <init>(
+byte[]
+int)
+
+public byte[] getKey()
+
+public int getRounds()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.RSAKeyGenerationParameters extends org.bouncycastle.crypto.KeyGenerationParameters
+
+----------------FIELDS----------------
+
+private int certainty
+
+private java.math.BigInteger publicExponent
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.security.SecureRandom
+int
+int)
+
+public int getCertainty()
+
+public java.math.BigInteger getPublicExponent()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.RSAKeyParameters extends org.bouncycastle.crypto.params.AsymmetricKeyParameter
+
+----------------FIELDS----------------
+
+private java.math.BigInteger exponent
+
+private java.math.BigInteger modulus
+----------------METHODS----------------
+
+public void <init>(
+boolean
+java.math.BigInteger
+java.math.BigInteger)
+
+public java.math.BigInteger getExponent()
+
+public java.math.BigInteger getModulus()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters extends org.bouncycastle.crypto.params.RSAKeyParameters
+
+----------------FIELDS----------------
+
+private java.math.BigInteger dP
+
+private java.math.BigInteger dQ
+
+private java.math.BigInteger e
+
+private java.math.BigInteger p
+
+private java.math.BigInteger q
+
+private java.math.BigInteger qInv
+----------------METHODS----------------
+
+public void <init>(
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger
+java.math.BigInteger)
+
+public java.math.BigInteger getDP()
+
+public java.math.BigInteger getDQ()
+
+public java.math.BigInteger getP()
+
+public java.math.BigInteger getPublicExponent()
+
+public java.math.BigInteger getQ()
+
+public java.math.BigInteger getQInv()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.signers.DSASigner extends java.lang.Object implements org.bouncycastle.crypto.DSA
+
+----------------FIELDS----------------
+
+ org.bouncycastle.crypto.params.DSAKeyParameters key
+
+ java.security.SecureRandom random
+----------------METHODS----------------
+
+public void <init>()
+
+public java.math.BigInteger[] generateSignature(
+byte[])
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+
+public boolean verifySignature(
+byte[]
+java.math.BigInteger
+java.math.BigInteger)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.signers.ISO9796d2PSSSigner extends java.lang.Object implements org.bouncycastle.crypto.SignerWithRecovery
+
+----------------FIELDS----------------
+
+public static final int TRAILER_IMPLICIT
+
+public static final int TRAILER_RIPEMD128
+
+public static final int TRAILER_RIPEMD160
+
+public static final int TRAILER_SHA1
+
+private byte[] block
+
+private org.bouncycastle.crypto.AsymmetricBlockCipher cipher
+
+private org.bouncycastle.crypto.Digest digest
+
+private boolean fullMessage
+
+private int hLen
+
+private int keyBits
+
+private byte[] mBuf
+
+private int messageLength
+
+private java.security.SecureRandom random
+
+private byte[] recoveredMessage
+
+private int saltLength
+
+private byte[] standardSalt
+
+private int trailer
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.AsymmetricBlockCipher
+org.bouncycastle.crypto.Digest
+int)
+
+public void <init>(
+org.bouncycastle.crypto.AsymmetricBlockCipher
+org.bouncycastle.crypto.Digest
+int
+boolean)
+
+private void ItoOSP(
+int
+byte[])
+
+private void LtoOSP(
+long
+byte[])
+
+private void clearBlock(
+byte[])
+
+private boolean isSameAs(
+byte[]
+byte[])
+
+private byte[] maskGeneratorFunction1(
+byte[]
+int
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/CryptoException; )
+public byte[] generateSignature()
+
+public byte[] getRecoveredMessage()
+
+public boolean hasFullMessage()
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+
+public void reset()
+
+public void update(
+byte)
+
+public void update(
+byte[]
+int
+int)
+
+public boolean verifySignature(
+byte[])
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.signers.ISO9796d2Signer extends java.lang.Object implements org.bouncycastle.crypto.SignerWithRecovery
+
+----------------FIELDS----------------
+
+public static final int TRAILER_IMPLICIT
+
+public static final int TRAILER_RIPEMD128
+
+public static final int TRAILER_RIPEMD160
+
+public static final int TRAILER_SHA1
+
+private byte[] block
+
+private org.bouncycastle.crypto.AsymmetricBlockCipher cipher
+
+private org.bouncycastle.crypto.Digest digest
+
+private boolean fullMessage
+
+private int keyBits
+
+private byte[] mBuf
+
+private int messageLength
+
+private byte[] recoveredMessage
+
+private int trailer
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.AsymmetricBlockCipher
+org.bouncycastle.crypto.Digest)
+
+public void <init>(
+org.bouncycastle.crypto.AsymmetricBlockCipher
+org.bouncycastle.crypto.Digest
+boolean)
+
+private void clearBlock(
+byte[])
+
+private boolean isSameAs(
+byte[]
+byte[])
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/CryptoException; )
+public byte[] generateSignature()
+
+public byte[] getRecoveredMessage()
+
+public boolean hasFullMessage()
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+
+public void reset()
+
+public void update(
+byte)
+
+public void update(
+byte[]
+int
+int)
+
+public boolean verifySignature(
+byte[])
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.signers.PSSSigner extends java.lang.Object implements org.bouncycastle.crypto.Signer
+
+----------------FIELDS----------------
+
+public static final byte TRAILER_IMPLICIT
+
+private byte[] block
+
+private org.bouncycastle.crypto.AsymmetricBlockCipher cipher
+
+private org.bouncycastle.crypto.Digest digest
+
+private int emBits
+
+private int hLen
+
+private byte[] mDash
+
+private java.security.SecureRandom random
+
+private int sLen
+
+private byte[] salt
+
+private byte trailer
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.AsymmetricBlockCipher
+org.bouncycastle.crypto.Digest
+int)
+
+public void <init>(
+org.bouncycastle.crypto.AsymmetricBlockCipher
+org.bouncycastle.crypto.Digest
+int
+byte)
+
+private void ItoOSP(
+int
+byte[])
+
+private void clearBlock(
+byte[])
+
+private byte[] maskGeneratorFunction1(
+byte[]
+int
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/CryptoException;Lorg/bouncycastle/crypto/DataLengthException; )
+public byte[] generateSignature()
+
+public void init(
+boolean
+org.bouncycastle.crypto.CipherParameters)
+
+public void reset()
+
+public void update(
+byte)
+
+public void update(
+byte[]
+int
+int)
+
+public boolean verifySignature(
+byte[])
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.util.PrivateKeyFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static org.bouncycastle.crypto.params.AsymmetricKeyParameter createKey(
+org.bouncycastle.asn1.pkcs.PrivateKeyInfo)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.crypto.util.PublicKeyFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static org.bouncycastle.crypto.params.AsymmetricKeyParameter createKey(
+org.bouncycastle.asn1.x509.SubjectPublicKeyInfo)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.i18n.LocalizedMessage extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected java.lang.Object[] arguments
+
+protected org.bouncycastle.i18n.filter.Filter filter
+
+protected java.lang.Object[] filteredArguments
+
+protected final java.lang.String id
+
+protected final java.lang.String resource
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/NullPointerException; )
+public void <init>(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/NullPointerException; )
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.Object[])
+
+protected java.lang.String formatWithTimeZone(
+java.lang.String
+java.lang.Object[]
+java.util.Locale
+java.util.TimeZone)
+
+public java.lang.Object[] getArguments()
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/i18n/MissingEntryException; )
+public java.lang.String getEntry(
+java.lang.String
+java.util.Locale
+java.util.TimeZone)
+
+public org.bouncycastle.i18n.filter.Filter getFilter()
+
+public java.lang.String getId()
+
+public java.lang.String getResource()
+
+public void setFilter(
+org.bouncycastle.i18n.filter.Filter)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.i18n.TextBundle extends org.bouncycastle.i18n.LocalizedMessage
+
+----------------FIELDS----------------
+
+public static final java.lang.String TEXT_ENTRY
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/NullPointerException; )
+public void <init>(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/NullPointerException; )
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.Object[])
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/i18n/MissingEntryException; )
+public java.lang.String getText(
+java.util.Locale)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/i18n/MissingEntryException; )
+public java.lang.String getText(
+java.util.Locale
+java.util.TimeZone)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.i18n.MessageBundle extends org.bouncycastle.i18n.TextBundle
+
+----------------FIELDS----------------
+
+public static final java.lang.String TITLE_ENTRY
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/NullPointerException; )
+public void <init>(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/NullPointerException; )
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.Object[])
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/i18n/MissingEntryException; )
+public java.lang.String getTitle(
+java.util.Locale)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/i18n/MissingEntryException; )
+public java.lang.String getTitle(
+java.util.Locale
+java.util.TimeZone)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.i18n.ErrorBundle extends org.bouncycastle.i18n.MessageBundle
+
+----------------FIELDS----------------
+
+public static final java.lang.String DETAIL_ENTRY
+
+public static final java.lang.String SUMMARY_ENTRY
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/NullPointerException; )
+public void <init>(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/NullPointerException; )
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.Object[])
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/i18n/MissingEntryException; )
+public java.lang.String getDetail(
+java.util.Locale)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/i18n/MissingEntryException; )
+public java.lang.String getDetail(
+java.util.Locale
+java.util.TimeZone)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/i18n/MissingEntryException; )
+public java.lang.String getSummary(
+java.util.Locale)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/i18n/MissingEntryException; )
+public java.lang.String getSummary(
+java.util.Locale
+java.util.TimeZone)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.i18n.LocalizedException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private java.lang.Throwable cause
+
+protected org.bouncycastle.i18n.ErrorBundle message
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.i18n.ErrorBundle)
+
+public void <init>(
+org.bouncycastle.i18n.ErrorBundle
+java.lang.Throwable)
+
+public java.lang.Throwable getCause()
+
+public org.bouncycastle.i18n.ErrorBundle getErrorMessage()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.i18n.MissingEntryException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+protected final java.lang.String key
+
+protected final java.lang.String resource
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public java.lang.String getKey()
+
+public java.lang.String getResource()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.i18n.filter.Filter extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String doFilter(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.i18n.filter.HTMLFilter extends java.lang.Object implements org.bouncycastle.i18n.filter.Filter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public java.lang.String doFilter(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.i18n.filter.SQLFilter extends java.lang.Object implements org.bouncycastle.i18n.filter.Filter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public java.lang.String doFilter(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.i18n.filter.UntrustedInput extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected java.lang.Object input
+----------------METHODS----------------
+
+public void <init>(
+java.lang.Object)
+
+public java.lang.Object getInput()
+
+public java.lang.String getString()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.PKCS10CertificationRequest extends org.bouncycastle.asn1.pkcs.CertificationRequest
+
+----------------FIELDS----------------
+
+private static java.util.Hashtable algorithms
+
+private static java.util.Hashtable keyAlgorithms
+
+private static java.util.Set noParams
+
+private static java.util.Hashtable oids
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException;Ljava/security/InvalidKeyException;Ljava/security/SignatureException; )
+public void <init>(
+java.lang.String
+javax.security.auth.x500.X500Principal
+java.security.PublicKey
+org.bouncycastle.asn1.ASN1Set
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException;Ljava/security/InvalidKeyException;Ljava/security/SignatureException; )
+public void <init>(
+java.lang.String
+javax.security.auth.x500.X500Principal
+java.security.PublicKey
+org.bouncycastle.asn1.ASN1Set
+java.security.PrivateKey
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException;Ljava/security/InvalidKeyException;Ljava/security/SignatureException; )
+public void <init>(
+java.lang.String
+org.bouncycastle.asn1.x509.X509Name
+java.security.PublicKey
+org.bouncycastle.asn1.ASN1Set
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException;Ljava/security/InvalidKeyException;Ljava/security/SignatureException; )
+public void <init>(
+java.lang.String
+org.bouncycastle.asn1.x509.X509Name
+java.security.PublicKey
+org.bouncycastle.asn1.ASN1Set
+java.security.PrivateKey
+java.lang.String)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+byte[])
+
+private static org.bouncycastle.asn1.x509.X509Name convertName(
+javax.security.auth.x500.X500Principal)
+
+private static org.bouncycastle.asn1.ASN1Sequence toDERSequence(
+byte[])
+
+public byte[] getEncoded()
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException;Ljava/security/InvalidKeyException; )
+public java.security.PublicKey getPublicKey()
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException;Ljava/security/InvalidKeyException; )
+public java.security.PublicKey getPublicKey(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException;Ljava/security/InvalidKeyException;Ljava/security/SignatureException; )
+public boolean verify()
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/NoSuchProviderException;Ljava/security/InvalidKeyException;Ljava/security/SignatureException; )
+public boolean verify(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.PKCS7SignedData extends java.lang.Object implements org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers
+
+----------------FIELDS----------------
+
+private final java.lang.String ID_DSA
+
+private final java.lang.String ID_MD2
+
+private final java.lang.String ID_MD5
+
+private final java.lang.String ID_PKCS7_DATA
+
+private final java.lang.String ID_PKCS7_SIGNED_DATA
+
+private final java.lang.String ID_RSA
+
+private final java.lang.String ID_SHA1
+
+private java.util.Collection certs
+
+private java.util.Collection crls
+
+private byte[] digest
+
+private java.lang.String digestAlgorithm
+
+private java.lang.String digestEncryptionAlgorithm
+
+private java.util.Set digestalgos
+
+private transient java.security.PrivateKey privKey
+
+private java.security.Signature sig
+
+private java.security.cert.X509Certificate signCert
+
+private int signerversion
+
+private int version
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/NoSuchAlgorithmException; )
+public void <init>(
+java.security.PrivateKey
+java.security.cert.Certificate[]
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/NoSuchAlgorithmException; )
+public void <init>(
+java.security.PrivateKey
+java.security.cert.Certificate[]
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/NoSuchAlgorithmException; )
+public void <init>(
+java.security.PrivateKey
+java.security.cert.Certificate[]
+java.security.cert.CRL[]
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/security/cert/CRLException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/NoSuchAlgorithmException; )
+public void <init>(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/security/cert/CRLException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/NoSuchAlgorithmException; )
+public void <init>(
+byte[]
+java.lang.String)
+
+private org.bouncycastle.asn1.DERObject getIssuer(
+byte[])
+
+public java.util.Collection getCRLs()
+
+public java.security.cert.Certificate[] getCertificates()
+
+public java.lang.String getDigestAlgorithm()
+
+public byte[] getEncoded()
+
+public java.security.cert.X509Certificate getSigningCertificate()
+
+public int getSigningInfoVersion()
+
+public int getVersion()
+
+public void reset()
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+public void update(
+byte)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+public void update(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+public boolean verify()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.PrincipalUtil extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public static org.bouncycastle.jce.X509Principal getIssuerX509Principal(
+java.security.cert.X509CRL)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateEncodingException; )
+public static org.bouncycastle.jce.X509Principal getIssuerX509Principal(
+java.security.cert.X509Certificate)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateEncodingException; )
+public static org.bouncycastle.jce.X509Principal getSubjectX509Principal(
+java.security.cert.X509Certificate)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.X509KeyUsage extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+public static final int cRLSign
+
+public static final int dataEncipherment
+
+public static final int decipherOnly
+
+public static final int digitalSignature
+
+public static final int encipherOnly
+
+public static final int keyAgreement
+
+public static final int keyCertSign
+
+public static final int keyEncipherment
+
+public static final int nonRepudiation
+
+private int usage
+----------------METHODS----------------
+
+public void <init>(
+int)
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.X509Principal extends org.bouncycastle.asn1.x509.X509Name implements java.security.Principal
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.util.Hashtable)
+
+public void <init>(
+java.util.Vector
+java.util.Hashtable)
+
+public void <init>(
+java.util.Vector
+java.util.Vector)
+
+public void <init>(
+org.bouncycastle.asn1.x509.X509Name)
+
+public void <init>(
+boolean
+java.lang.String)
+
+public void <init>(
+boolean
+java.util.Hashtable
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static org.bouncycastle.asn1.ASN1Sequence readSequence(
+org.bouncycastle.asn1.ASN1InputStream)
+
+public byte[] getEncoded()
+
+public java.lang.String getName()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.X509V1CertificateGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.util.Hashtable algorithms
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier sigAlgId
+
+private org.bouncycastle.asn1.DERObjectIdentifier sigOID
+
+private java.lang.String signatureAlgorithm
+
+private org.bouncycastle.asn1.x509.V1TBSCertificateGenerator tbsGen
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509Certificate generateX509Certificate(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchProviderException;Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509Certificate generateX509Certificate(
+java.security.PrivateKey
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchProviderException;Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509Certificate generateX509Certificate(
+java.security.PrivateKey
+java.lang.String
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509Certificate generateX509Certificate(
+java.security.PrivateKey
+java.security.SecureRandom)
+
+public void reset()
+
+public void setIssuerDN(
+org.bouncycastle.asn1.x509.X509Name)
+
+public void setNotAfter(
+java.util.Date)
+
+public void setNotBefore(
+java.util.Date)
+
+public void setPublicKey(
+java.security.PublicKey)
+
+public void setSerialNumber(
+java.math.BigInteger)
+
+public void setSignatureAlgorithm(
+java.lang.String)
+
+public void setSubjectDN(
+org.bouncycastle.asn1.x509.X509Name)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.X509V2CRLGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.util.Hashtable algorithms
+
+private java.text.SimpleDateFormat dateF
+
+private java.util.Vector extOrdering
+
+private java.util.Hashtable extensions
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier sigAlgId
+
+private org.bouncycastle.asn1.DERObjectIdentifier sigOID
+
+private java.lang.String signatureAlgorithm
+
+private org.bouncycastle.asn1.x509.V2TBSCertListGenerator tbsGen
+
+private java.util.SimpleTimeZone tz
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void addCRLEntry(
+java.math.BigInteger
+java.util.Date
+int)
+
+public void addExtension(
+java.lang.String
+boolean
+org.bouncycastle.asn1.DEREncodable)
+
+public void addExtension(
+java.lang.String
+boolean
+byte[])
+
+public void addExtension(
+org.bouncycastle.asn1.DERObjectIdentifier
+boolean
+org.bouncycastle.asn1.DEREncodable)
+
+public void addExtension(
+org.bouncycastle.asn1.DERObjectIdentifier
+boolean
+byte[])
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509CRL generateX509CRL(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchProviderException;Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509CRL generateX509CRL(
+java.security.PrivateKey
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchProviderException;Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509CRL generateX509CRL(
+java.security.PrivateKey
+java.lang.String
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509CRL generateX509CRL(
+java.security.PrivateKey
+java.security.SecureRandom)
+
+public void reset()
+
+public void setIssuerDN(
+org.bouncycastle.asn1.x509.X509Name)
+
+public void setNextUpdate(
+java.util.Date)
+
+public void setSignatureAlgorithm(
+java.lang.String)
+
+public void setThisUpdate(
+java.util.Date)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.X509V3CertificateGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.util.Hashtable algorithms
+
+private java.util.Vector extOrdering
+
+private java.util.Hashtable extensions
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier sigAlgId
+
+private org.bouncycastle.asn1.DERObjectIdentifier sigOID
+
+private java.lang.String signatureAlgorithm
+
+private org.bouncycastle.asn1.x509.V3TBSCertificateGenerator tbsGen
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public void addExtension(
+java.lang.String
+boolean
+org.bouncycastle.asn1.DEREncodable)
+
+public void addExtension(
+java.lang.String
+boolean
+byte[])
+
+public void addExtension(
+org.bouncycastle.asn1.DERObjectIdentifier
+boolean
+org.bouncycastle.asn1.DEREncodable)
+
+public void addExtension(
+org.bouncycastle.asn1.DERObjectIdentifier
+boolean
+byte[])
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509Certificate generateX509Certificate(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchProviderException;Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509Certificate generateX509Certificate(
+java.security.PrivateKey
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchProviderException;Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509Certificate generateX509Certificate(
+java.security.PrivateKey
+java.lang.String
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509Certificate generateX509Certificate(
+java.security.PrivateKey
+java.security.SecureRandom)
+
+public void reset()
+
+public void setIssuerDN(
+org.bouncycastle.asn1.x509.X509Name)
+
+public void setNotAfter(
+java.util.Date)
+
+public void setNotBefore(
+java.util.Date)
+
+public void setPublicKey(
+java.security.PublicKey)
+
+public void setSerialNumber(
+java.math.BigInteger)
+
+public void setSignatureAlgorithm(
+java.lang.String)
+
+public void setSubjectDN(
+org.bouncycastle.asn1.x509.X509Name)
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.jce.interfaces.BCKeyStore extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract void setRandom(
+java.security.SecureRandom)
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.jce.interfaces.IESKey extends java.lang.Object implements java.security.Key
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.security.PrivateKey getPrivate()
+
+public abstract java.security.PublicKey getPublic()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.bouncycastle.asn1.DEREncodable getBagAttribute(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+public abstract java.util.Enumeration getBagAttributeKeys()
+
+public abstract void setBagAttribute(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.DEREncodable)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.netscape.NetscapeCertRequest extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ java.lang.String challenge
+
+ org.bouncycastle.asn1.DERBitString content
+
+ org.bouncycastle.asn1.x509.AlgorithmIdentifier keyAlg
+
+ java.security.PublicKey pubkey
+
+ org.bouncycastle.asn1.x509.AlgorithmIdentifier sigAlg
+
+ byte[] sigBits
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/spec/InvalidKeySpecException;Ljava/security/NoSuchProviderException; )
+public void <init>(
+java.lang.String
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+java.security.PublicKey)
+
+public void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/spec/InvalidKeySpecException;Ljava/security/NoSuchProviderException; )
+private org.bouncycastle.asn1.DERObject getKeySpec()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private static org.bouncycastle.asn1.ASN1Sequence getReq(
+byte[])
+
+public java.lang.String getChallenge()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getKeyAlgorithm()
+
+public java.security.PublicKey getPublicKey()
+
+public org.bouncycastle.asn1.x509.AlgorithmIdentifier getSigningAlgorithm()
+
+public void setChallenge(
+java.lang.String)
+
+public void setKeyAlgorithm(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier)
+
+public void setPublicKey(
+java.security.PublicKey)
+
+public void setSigningAlgorithm(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/SignatureException;Ljava/security/NoSuchProviderException;Ljava/security/spec/InvalidKeySpecException; )
+public void sign(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/SignatureException;Ljava/security/NoSuchProviderException;Ljava/security/spec/InvalidKeySpecException; )
+public void sign(
+java.security.PrivateKey
+java.security.SecureRandom)
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/SignatureException;Ljava/security/NoSuchProviderException; )
+public boolean verify(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.AnnotatedException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+private java.lang.Exception _underlyingException
+----------------METHODS----------------
+
+ void <init>(
+java.lang.String)
+
+ void <init>(
+java.lang.String
+java.lang.Exception)
+
+public java.lang.Throwable getCause()
+
+ java.lang.Exception getUnderlyingException()
+
+________________CLASS________________
+
+
+public final class org.bouncycastle.jce.provider.BouncyCastleProvider extends java.security.Provider
+
+----------------FIELDS----------------
+
+public static java.lang.String PROVIDER_NAME
+
+private static java.lang.String info
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+private void addHMACAlgorithm(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+private void addHMACAlias(
+java.lang.String
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+private void addMacAlgorithms()
+
+private void addMessageDigestAlgorithms()
+
+private void addSignatureAlgorithm(
+java.lang.String
+java.lang.String
+java.lang.String
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+private void addSignatureAlgorithms()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/BrokenPBE$Util; )
+public abstract interface class org.bouncycastle.jce.provider.BrokenPBE extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int MD5
+
+public static final int OLD_PKCS12
+
+public static final int PKCS12
+
+public static final int PKCS5S1
+
+public static final int PKCS5S2
+
+public static final int RIPEMD160
+
+public static final int SHA1
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/BrokenJCEBlockCipher$BrokePBEWithSHAAndDES2Key;Lorg/bouncycastle/jce/provider/BrokenJCEBlockCipher$OldPBEWithSHAAndDES3Key;Lorg/bouncycastle/jce/provider/BrokenJCEBlockCipher$BrokePBEWithSHAAndDES3Key;Lorg/bouncycastle/jce/provider/BrokenJCEBlockCipher$BrokePBEWithSHA1AndDES;Lorg/bouncycastle/jce/provider/BrokenJCEBlockCipher$BrokePBEWithMD5AndDES; )
+public class org.bouncycastle.jce.provider.BrokenJCEBlockCipher extends java.lang.Object implements org.bouncycastle.jce.provider.BrokenPBE
+
+----------------FIELDS----------------
+
+private java.lang.Class[] availableSpecs
+
+private org.bouncycastle.crypto.BufferedBlockCipher cipher
+
+private java.security.AlgorithmParameters engineParams
+
+private int ivLength
+
+private org.bouncycastle.crypto.params.ParametersWithIV ivParam
+
+private int pbeHash
+
+private int pbeIvSize
+
+private int pbeKeySize
+
+private int pbeType
+----------------METHODS----------------
+
+protected void <init>(
+org.bouncycastle.crypto.BlockCipher)
+
+protected void <init>(
+org.bouncycastle.crypto.BlockCipher
+int
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+protected int engineDoFinal(
+byte[]
+int
+int
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+protected byte[] engineDoFinal(
+byte[]
+int
+int)
+
+protected int engineGetBlockSize()
+
+protected byte[] engineGetIV()
+
+protected int engineGetKeySize(
+java.security.Key)
+
+protected int engineGetOutputSize(
+int)
+
+protected java.security.AlgorithmParameters engineGetParameters()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.AlgorithmParameters
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+protected void engineSetMode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljavax/crypto/NoSuchPaddingException; )
+protected void engineSetPadding(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected java.security.Key engineUnwrap(
+byte[]
+java.lang.String
+int)
+
+protected int engineUpdate(
+byte[]
+int
+int
+byte[]
+int)
+
+protected byte[] engineUpdate(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljava/security/InvalidKeyException; )
+protected byte[] engineWrap(
+java.security.Key)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/BrokenJCEBlockCipher; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =BrokePBEWithMD5AndDES )
+public class org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithMD5AndDES extends org.bouncycastle.jce.provider.BrokenJCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/BrokenJCEBlockCipher; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =BrokePBEWithSHA1AndDES )
+public class org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithSHA1AndDES extends org.bouncycastle.jce.provider.BrokenJCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/BrokenJCEBlockCipher; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =BrokePBEWithSHAAndDES2Key )
+public class org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithSHAAndDES2Key extends org.bouncycastle.jce.provider.BrokenJCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =BrokePBEWithSHAAndDES3Key )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/BrokenJCEBlockCipher; )
+public class org.bouncycastle.jce.provider.BrokenJCEBlockCipher$BrokePBEWithSHAAndDES3Key extends org.bouncycastle.jce.provider.BrokenJCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/BrokenJCEBlockCipher; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =OldPBEWithSHAAndDES3Key )
+public class org.bouncycastle.jce.provider.BrokenJCEBlockCipher$OldPBEWithSHAAndDES3Key extends org.bouncycastle.jce.provider.BrokenJCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.BrokenKDF2BytesGenerator extends java.lang.Object implements org.bouncycastle.crypto.DerivationFunction
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.Digest digest
+
+private byte[] iv
+
+private byte[] shared
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.Digest)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/crypto/DataLengthException;Ljava/lang/IllegalArgumentException; )
+public int generateBytes(
+byte[]
+int
+int)
+
+public org.bouncycastle.crypto.Digest getDigest()
+
+public void init(
+org.bouncycastle.crypto.DerivationParameters)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Util )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/BrokenPBE; )
+public class org.bouncycastle.jce.provider.BrokenPBE$Util extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+private static org.bouncycastle.crypto.PBEParametersGenerator makePBEGenerator(
+int
+int)
+
+static org.bouncycastle.crypto.CipherParameters makePBEMacParameters(
+org.bouncycastle.jce.provider.JCEPBEKey
+java.security.spec.AlgorithmParameterSpec
+int
+int
+int)
+
+static org.bouncycastle.crypto.CipherParameters makePBEParameters(
+org.bouncycastle.jce.provider.JCEPBEKey
+java.security.spec.AlgorithmParameterSpec
+int
+int
+java.lang.String
+int
+int)
+
+private static void setOddParity(
+byte[])
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.CertPathValidatorUtilities extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected static final java.lang.String ANY_POLICY
+
+protected static final java.lang.String BASIC_CONSTRAINTS
+
+protected static final java.lang.String CERTIFICATE_POLICIES
+
+protected static final java.lang.String CRL_NUMBER
+
+protected static final int CRL_SIGN
+
+protected static final java.lang.String DELTA_CRL_INDICATOR
+
+protected static final java.lang.String INHIBIT_ANY_POLICY
+
+protected static final java.lang.String ISSUING_DISTRIBUTION_POINT
+
+protected static final int KEY_CERT_SIGN
+
+protected static final java.lang.String KEY_USAGE
+
+protected static final java.lang.String NAME_CONSTRAINTS
+
+protected static final java.lang.String POLICY_CONSTRAINTS
+
+protected static final java.lang.String POLICY_MAPPINGS
+
+protected static final java.lang.String SUBJECT_ALTERNATIVE_NAME
+
+protected static final java.lang.String[] crlReasons
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathValidatorException; )
+protected static void checkExcludedDN(
+java.util.Set
+org.bouncycastle.asn1.ASN1Sequence)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathValidatorException; )
+protected static void checkExcludedEmail(
+java.util.Set
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathValidatorException; )
+protected static void checkExcludedIP(
+java.util.Set
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathValidatorException; )
+protected static void checkPermittedDN(
+java.util.Set
+org.bouncycastle.asn1.ASN1Sequence)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathValidatorException; )
+protected static void checkPermittedEmail(
+java.util.Set
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathValidatorException; )
+protected static void checkPermittedIP(
+java.util.Set
+byte[])
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/jce/provider/AnnotatedException; )
+protected static final java.util.Collection findCRLs(
+java.security.cert.X509CRLSelector
+java.util.List)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathValidatorException; )
+protected static final java.security.cert.TrustAnchor findTrustAnchor(
+java.security.cert.X509Certificate
+java.security.cert.CertPath
+int
+java.util.Set)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathValidatorException; )
+protected static org.bouncycastle.asn1.x509.AlgorithmIdentifier getAlgorithmIdentifier(
+java.security.PublicKey)
+
+protected static javax.security.auth.x500.X500Principal getEncodedIssuerPrincipal(
+java.security.cert.X509Certificate)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/jce/provider/AnnotatedException; )
+protected static org.bouncycastle.asn1.DERObject getExtensionValue(
+java.security.cert.X509Extension
+java.lang.String)
+
+protected static javax.security.auth.x500.X500Principal getIssuerPrincipal(
+java.security.cert.X509CRL)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/jce/provider/AnnotatedException; )
+private static org.bouncycastle.asn1.DERObject getObject(
+java.lang.String
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathValidatorException; )
+protected static final java.util.Set getQualifierSet(
+org.bouncycastle.asn1.ASN1Sequence)
+
+protected static javax.security.auth.x500.X500Principal getSubjectPrincipal(
+java.security.cert.X509Certificate)
+
+protected static java.util.Date getValidDate(
+java.security.cert.PKIXParameters)
+
+protected static java.util.Set intersectDN(
+java.util.Set
+org.bouncycastle.asn1.ASN1Sequence)
+
+protected static java.util.Set intersectEmail(
+java.util.Set
+java.lang.String)
+
+protected static java.util.Set intersectIP(
+java.util.Set
+byte[])
+
+protected static boolean isAnyPolicy(
+java.util.Set)
+
+protected static boolean isSelfIssued(
+java.security.cert.X509Certificate)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/jce/provider/AnnotatedException;Ljava/security/cert/CertPathValidatorException; )
+protected static void prepareNextCertB1(
+int
+java.util.List[]
+java.lang.String
+java.util.Map
+java.security.cert.X509Certificate)
+
+protected static org.bouncycastle.jce.provider.PKIXPolicyNode prepareNextCertB2(
+int
+java.util.List[]
+java.lang.String
+org.bouncycastle.jce.provider.PKIXPolicyNode)
+
+protected static boolean processCertD1i(
+int
+java.util.List[]
+org.bouncycastle.asn1.DERObjectIdentifier
+java.util.Set)
+
+protected static void processCertD1ii(
+int
+java.util.List[]
+org.bouncycastle.asn1.DERObjectIdentifier
+java.util.Set)
+
+protected static org.bouncycastle.jce.provider.PKIXPolicyNode removePolicyNode(
+org.bouncycastle.jce.provider.PKIXPolicyNode
+java.util.List[]
+org.bouncycastle.jce.provider.PKIXPolicyNode)
+
+private static void removePolicyNodeRecurse(
+java.util.List[]
+org.bouncycastle.jce.provider.PKIXPolicyNode)
+
+protected static java.util.Set unionDN(
+java.util.Set
+org.bouncycastle.asn1.ASN1Sequence)
+
+protected static java.util.Set unionEmail(
+java.util.Set
+java.lang.String)
+
+protected static java.util.Set unionIP(
+java.util.Set
+byte[])
+
+private static boolean withinDNSubtree(
+org.bouncycastle.asn1.ASN1Sequence
+org.bouncycastle.asn1.ASN1Sequence)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.CertStoreCollectionSpi extends java.security.cert.CertStoreSpi
+
+----------------FIELDS----------------
+
+private java.security.cert.CollectionCertStoreParameters params
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public void <init>(
+java.security.cert.CertStoreParameters)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertStoreException; )
+public java.util.Collection engineGetCRLs(
+java.security.cert.CRLSelector)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertStoreException; )
+public java.util.Collection engineGetCertificates(
+java.security.cert.CertSelector)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.DHUtil extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public static org.bouncycastle.crypto.params.AsymmetricKeyParameter generatePrivateKeyParameter(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public static org.bouncycastle.crypto.params.AsymmetricKeyParameter generatePublicKeyParameter(
+java.security.PublicKey)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.DSAUtil extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public static org.bouncycastle.crypto.params.AsymmetricKeyParameter generatePrivateKeyParameter(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public static org.bouncycastle.crypto.params.AsymmetricKeyParameter generatePublicKeyParameter(
+java.security.PublicKey)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/PBE$Util; )
+public abstract interface class org.bouncycastle.jce.provider.PBE extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int MD5
+
+public static final int OPENSSL
+
+public static final int PKCS12
+
+public static final int PKCS5S1
+
+public static final int PKCS5S2
+
+public static final int RIPEMD160
+
+public static final int SHA1
+
+public static final int SHA256
+
+public static final int TIGER
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/WrapCipherSpi$DESEDEWrap;Lorg/bouncycastle/jce/provider/WrapCipherSpi$AESWrap; )
+public abstract class org.bouncycastle.jce.provider.WrapCipherSpi extends javax.crypto.CipherSpi implements org.bouncycastle.jce.provider.PBE
+
+----------------FIELDS----------------
+
+private java.lang.Class[] availableSpecs
+
+protected java.security.AlgorithmParameters engineParams
+
+protected int pbeHash
+
+protected int pbeIvSize
+
+protected int pbeKeySize
+
+protected int pbeType
+
+protected org.bouncycastle.crypto.Wrapper wrapEngine
+----------------METHODS----------------
+
+protected void <init>()
+
+protected void <init>(
+org.bouncycastle.crypto.Wrapper)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+protected int engineDoFinal(
+byte[]
+int
+int
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+protected byte[] engineDoFinal(
+byte[]
+int
+int)
+
+protected int engineGetBlockSize()
+
+protected byte[] engineGetIV()
+
+protected int engineGetKeySize(
+java.security.Key)
+
+protected int engineGetOutputSize(
+int)
+
+protected java.security.AlgorithmParameters engineGetParameters()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.AlgorithmParameters
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+protected void engineSetMode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljavax/crypto/NoSuchPaddingException; )
+protected void engineSetPadding(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected java.security.Key engineUnwrap(
+byte[]
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException; )
+protected int engineUpdate(
+byte[]
+int
+int
+byte[]
+int)
+
+protected byte[] engineUpdate(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljava/security/InvalidKeyException; )
+protected byte[] engineWrap(
+java.security.Key)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JCEBlockCipher$PBEWithAESCBC;Lorg/bouncycastle/jce/provider/JCEBlockCipher$PBEWithSHAAndDES2Key;Lorg/bouncycastle/jce/provider/JCEBlockCipher$PBEWithSHAAndDES3Key;Lorg/bouncycastle/jce/provider/JCEBlockCipher$PBEWithSHA1AndDES;Lorg/bouncycastle/jce/provider/JCEBlockCipher$PBEWithMD5AndDES;Lorg/bouncycastle/jce/provider/JCEBlockCipher$AESOFB;Lorg/bouncycastle/jce/provider/JCEBlockCipher$AESCFB;Lorg/bouncycastle/jce/provider/JCEBlockCipher$AESCBC;Lorg/bouncycastle/jce/provider/JCEBlockCipher$AES;Lorg/bouncycastle/jce/provider/JCEBlockCipher$DESedeCBC;Lorg/bouncycastle/jce/provider/JCEBlockCipher$DESede;Lorg/bouncycastle/jce/provider/JCEBlockCipher$DESCBC;Lorg/bouncycastle/jce/provider/JCEBlockCipher$DES; )
+public class org.bouncycastle.jce.provider.JCEBlockCipher extends org.bouncycastle.jce.provider.WrapCipherSpi implements org.bouncycastle.jce.provider.PBE
+
+----------------FIELDS----------------
+
+private java.lang.Class[] availableSpecs
+
+private org.bouncycastle.crypto.BlockCipher baseEngine
+
+private org.bouncycastle.crypto.BufferedBlockCipher cipher
+
+private int ivLength
+
+private org.bouncycastle.crypto.params.ParametersWithIV ivParam
+
+private java.lang.String modeName
+
+private boolean padded
+
+private java.lang.String pbeAlgorithm
+
+private javax.crypto.spec.PBEParameterSpec pbeSpec
+----------------METHODS----------------
+
+protected void <init>(
+org.bouncycastle.crypto.BlockCipher)
+
+protected void <init>(
+org.bouncycastle.crypto.BlockCipher
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+protected int engineDoFinal(
+byte[]
+int
+int
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+protected byte[] engineDoFinal(
+byte[]
+int
+int)
+
+protected int engineGetBlockSize()
+
+protected byte[] engineGetIV()
+
+protected int engineGetKeySize(
+java.security.Key)
+
+protected int engineGetOutputSize(
+int)
+
+protected java.security.AlgorithmParameters engineGetParameters()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.AlgorithmParameters
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+protected void engineSetMode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljavax/crypto/NoSuchPaddingException; )
+protected void engineSetPadding(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException; )
+protected int engineUpdate(
+byte[]
+int
+int
+byte[]
+int)
+
+protected byte[] engineUpdate(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =AES )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEBlockCipher; )
+public class org.bouncycastle.jce.provider.JCEBlockCipher$AES extends org.bouncycastle.jce.provider.JCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =AESCBC )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEBlockCipher; )
+public class org.bouncycastle.jce.provider.JCEBlockCipher$AESCBC extends org.bouncycastle.jce.provider.JCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =AESCFB )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEBlockCipher; )
+public class org.bouncycastle.jce.provider.JCEBlockCipher$AESCFB extends org.bouncycastle.jce.provider.JCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEBlockCipher; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =AESOFB )
+public class org.bouncycastle.jce.provider.JCEBlockCipher$AESOFB extends org.bouncycastle.jce.provider.JCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEBlockCipher; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DES )
+public class org.bouncycastle.jce.provider.JCEBlockCipher$DES extends org.bouncycastle.jce.provider.JCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEBlockCipher; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DESCBC )
+public class org.bouncycastle.jce.provider.JCEBlockCipher$DESCBC extends org.bouncycastle.jce.provider.JCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DESede )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEBlockCipher; )
+public class org.bouncycastle.jce.provider.JCEBlockCipher$DESede extends org.bouncycastle.jce.provider.JCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEBlockCipher; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DESedeCBC )
+public class org.bouncycastle.jce.provider.JCEBlockCipher$DESedeCBC extends org.bouncycastle.jce.provider.JCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithAESCBC )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEBlockCipher; )
+public class org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithAESCBC extends org.bouncycastle.jce.provider.JCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEBlockCipher; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithMD5AndDES )
+public class org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithMD5AndDES extends org.bouncycastle.jce.provider.JCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHA1AndDES )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEBlockCipher; )
+public class org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHA1AndDES extends org.bouncycastle.jce.provider.JCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEBlockCipher; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHAAndDES2Key )
+public class org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAndDES2Key extends org.bouncycastle.jce.provider.JCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHAAndDES3Key )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEBlockCipher; )
+public class org.bouncycastle.jce.provider.JCEBlockCipher$PBEWithSHAAndDES3Key extends org.bouncycastle.jce.provider.JCEBlockCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.JCEDHKeyAgreement extends javax.crypto.KeyAgreementSpi
+
+----------------FIELDS----------------
+
+private java.math.BigInteger g
+
+private java.math.BigInteger p
+
+private java.security.SecureRandom random
+
+private java.math.BigInteger result
+
+private java.math.BigInteger x
+----------------METHODS----------------
+
+public void <init>()
+
+private byte[] bigIntToBytes(
+java.math.BigInteger)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/lang/IllegalStateException; )
+protected java.security.Key engineDoPhase(
+java.security.Key
+boolean)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException;Ljavax/crypto/ShortBufferException; )
+protected int engineGenerateSecret(
+byte[]
+int)
+
+protected javax.crypto.SecretKey engineGenerateSecret(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalStateException; )
+protected byte[] engineGenerateSecret()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInit(
+java.security.Key
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+java.security.Key
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.JCEDHPrivateKey extends java.lang.Object implements javax.crypto.interfaces.DHPrivateKey, org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier
+
+----------------FIELDS----------------
+
+ javax.crypto.spec.DHParameterSpec dhSpec
+
+private java.util.Hashtable pkcs12Attributes
+
+private java.util.Vector pkcs12Ordering
+
+ java.math.BigInteger x
+----------------METHODS----------------
+
+protected void <init>()
+
+ void <init>(
+javax.crypto.interfaces.DHPrivateKey)
+
+ void <init>(
+javax.crypto.spec.DHPrivateKeySpec)
+
+ void <init>(
+org.bouncycastle.asn1.pkcs.PrivateKeyInfo)
+
+ void <init>(
+org.bouncycastle.crypto.params.DHPrivateKeyParameters)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public java.lang.String getAlgorithm()
+
+public org.bouncycastle.asn1.DEREncodable getBagAttribute(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+public java.util.Enumeration getBagAttributeKeys()
+
+public byte[] getEncoded()
+
+public java.lang.String getFormat()
+
+public javax.crypto.spec.DHParameterSpec getParams()
+
+public java.math.BigInteger getX()
+
+public void setBagAttribute(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.DEREncodable)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.JCEDHPublicKey extends java.lang.Object implements javax.crypto.interfaces.DHPublicKey
+
+----------------FIELDS----------------
+
+private javax.crypto.spec.DHParameterSpec dhSpec
+
+private java.math.BigInteger y
+----------------METHODS----------------
+
+ void <init>(
+java.math.BigInteger
+javax.crypto.spec.DHParameterSpec)
+
+ void <init>(
+javax.crypto.interfaces.DHPublicKey)
+
+ void <init>(
+javax.crypto.spec.DHPublicKeySpec)
+
+ void <init>(
+org.bouncycastle.asn1.x509.SubjectPublicKeyInfo)
+
+ void <init>(
+org.bouncycastle.crypto.params.DHPublicKeyParameters)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public java.lang.String getAlgorithm()
+
+public byte[] getEncoded()
+
+public java.lang.String getFormat()
+
+public javax.crypto.spec.DHParameterSpec getParams()
+
+public java.math.BigInteger getY()
+
+________________CLASS________________
+
+
+ class org.bouncycastle.jce.provider.JCEDigestUtil extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.util.Set md5
+
+private static java.util.Map oids
+
+private static java.util.Set sha1
+
+private static java.util.Set sha224
+
+private static java.util.Set sha256
+
+private static java.util.Set sha384
+
+private static java.util.Set sha512
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+static org.bouncycastle.crypto.Digest getDigest(
+java.lang.String)
+
+static org.bouncycastle.asn1.DERObjectIdentifier getOID(
+java.lang.String)
+
+static boolean isSameDigest(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JCEIESCipher$IES;Lorg/bouncycastle/jce/provider/JCEIESCipher$BrokenIES; )
+public class org.bouncycastle.jce.provider.JCEIESCipher extends org.bouncycastle.jce.provider.WrapCipherSpi
+
+----------------FIELDS----------------
+
+private java.lang.Class[] availableSpecs
+
+private java.io.ByteArrayOutputStream buffer
+
+private org.bouncycastle.crypto.engines.IESEngine cipher
+
+private java.security.AlgorithmParameters engineParam
+
+private org.bouncycastle.jce.spec.IESParameterSpec engineParams
+
+private int state
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.engines.IESEngine)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+protected int engineDoFinal(
+byte[]
+int
+int
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+protected byte[] engineDoFinal(
+byte[]
+int
+int)
+
+protected int engineGetBlockSize()
+
+protected byte[] engineGetIV()
+
+protected int engineGetKeySize(
+java.security.Key)
+
+protected int engineGetOutputSize(
+int)
+
+protected java.security.AlgorithmParameters engineGetParameters()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.AlgorithmParameters
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+protected void engineSetMode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljavax/crypto/NoSuchPaddingException; )
+protected void engineSetPadding(
+java.lang.String)
+
+protected int engineUpdate(
+byte[]
+int
+int
+byte[]
+int)
+
+protected byte[] engineUpdate(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =BrokenIES )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEIESCipher; )
+public class org.bouncycastle.jce.provider.JCEIESCipher$BrokenIES extends org.bouncycastle.jce.provider.JCEIESCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =IES )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEIESCipher; )
+public class org.bouncycastle.jce.provider.JCEIESCipher$IES extends org.bouncycastle.jce.provider.JCEIESCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator$HMACTIGER;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$HMACSHA512;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$HMACSHA384;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$HMACSHA256;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$HMACSHA224;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$HMACSHA1;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$RIPEMD160HMAC;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$RIPEMD128HMAC;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$MD5HMAC;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$MD4HMAC;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$MD2HMAC;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$IDEA;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$CAST6;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$CAST5;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$Camellia;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$Serpent;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$Rijndael;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$GOST28147;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$AES256;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$AES192;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$AES128;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$AES;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$RC6;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$RC564;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$RC5;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$RC4;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$RC2;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$Twofish;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$Blowfish;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$Skipjack;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$DESede3;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$DESede;Lorg/bouncycastle/jce/provider/JCEKeyGenerator$DES; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator extends javax.crypto.KeyGeneratorSpi
+
+----------------FIELDS----------------
+
+protected java.lang.String algName
+
+protected int defaultKeySize
+
+protected org.bouncycastle.crypto.CipherKeyGenerator engine
+
+protected int keySize
+
+protected boolean uninitialised
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.String
+int
+org.bouncycastle.crypto.CipherKeyGenerator)
+
+protected javax.crypto.SecretKey engineGenerateKey()
+
+protected void engineInit(
+int
+java.security.SecureRandom)
+
+protected void engineInit(
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =AES128 )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$AES128 extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =AES192 )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$AES192 extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =AES256 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$AES256 extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =AES )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$AES extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Blowfish )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$Blowfish extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =CAST5 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$CAST5 extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =CAST6 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$CAST6 extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Camellia )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$Camellia extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DES )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$DES extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DESede3 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$DESede3 extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+
+private boolean keySizeSet
+----------------METHODS----------------
+
+public void <init>()
+
+protected javax.crypto.SecretKey engineGenerateKey()
+
+protected void engineInit(
+int
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DESede )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$DESede extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+
+private boolean keySizeSet
+----------------METHODS----------------
+
+public void <init>()
+
+protected javax.crypto.SecretKey engineGenerateKey()
+
+protected void engineInit(
+int
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =GOST28147 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$GOST28147 extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =HMACSHA1 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$HMACSHA1 extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =HMACSHA224 )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$HMACSHA224 extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =HMACSHA256 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$HMACSHA256 extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =HMACSHA384 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$HMACSHA384 extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =HMACSHA512 )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$HMACSHA512 extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =HMACTIGER )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$HMACTIGER extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =IDEA )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$IDEA extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =MD2HMAC )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$MD2HMAC extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =MD4HMAC )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$MD4HMAC extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =MD5HMAC )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$MD5HMAC extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =RC2 )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$RC2 extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =RC4 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$RC4 extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =RC564 )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$RC564 extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =RC5 )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$RC5 extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =RC6 )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$RC6 extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =RIPEMD128HMAC )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$RIPEMD128HMAC extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =RIPEMD160HMAC )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$RIPEMD160HMAC extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Rijndael )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$Rijndael extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =Serpent )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$Serpent extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Skipjack )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$Skipjack extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Twofish )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEKeyGenerator; )
+public class org.bouncycastle.jce.provider.JCEKeyGenerator$Twofish extends org.bouncycastle.jce.provider.JCEKeyGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JCEMac$PBEWithSHA;Lorg/bouncycastle/jce/provider/JCEMac$OldSHA512;Lorg/bouncycastle/jce/provider/JCEMac$SHA512;Lorg/bouncycastle/jce/provider/JCEMac$OldSHA384;Lorg/bouncycastle/jce/provider/JCEMac$SHA384;Lorg/bouncycastle/jce/provider/JCEMac$SHA256;Lorg/bouncycastle/jce/provider/JCEMac$SHA224;Lorg/bouncycastle/jce/provider/JCEMac$SHA1;Lorg/bouncycastle/jce/provider/JCEMac$MD5;Lorg/bouncycastle/jce/provider/JCEMac$DES9797Alg3;Lorg/bouncycastle/jce/provider/JCEMac$DESede64;Lorg/bouncycastle/jce/provider/JCEMac$DESedeCFB8;Lorg/bouncycastle/jce/provider/JCEMac$DESCFB8;Lorg/bouncycastle/jce/provider/JCEMac$DESede;Lorg/bouncycastle/jce/provider/JCEMac$DES; )
+public class org.bouncycastle.jce.provider.JCEMac extends javax.crypto.MacSpi implements org.bouncycastle.jce.provider.PBE
+
+----------------FIELDS----------------
+
+private int keySize
+
+private org.bouncycastle.crypto.Mac macEngine
+
+private int pbeHash
+
+private int pbeType
+----------------METHODS----------------
+
+protected void <init>(
+org.bouncycastle.crypto.Mac)
+
+protected void <init>(
+org.bouncycastle.crypto.Mac
+int
+int
+int)
+
+protected byte[] engineDoFinal()
+
+protected int engineGetMacLength()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+java.security.Key
+java.security.spec.AlgorithmParameterSpec)
+
+protected void engineReset()
+
+protected void engineUpdate(
+byte)
+
+protected void engineUpdate(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DES9797Alg3 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEMac; )
+public class org.bouncycastle.jce.provider.JCEMac$DES9797Alg3 extends org.bouncycastle.jce.provider.JCEMac
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEMac; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DES )
+public class org.bouncycastle.jce.provider.JCEMac$DES extends org.bouncycastle.jce.provider.JCEMac
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DESCFB8 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEMac; )
+public class org.bouncycastle.jce.provider.JCEMac$DESCFB8 extends org.bouncycastle.jce.provider.JCEMac
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEMac; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DESede64 )
+public class org.bouncycastle.jce.provider.JCEMac$DESede64 extends org.bouncycastle.jce.provider.JCEMac
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEMac; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DESede )
+public class org.bouncycastle.jce.provider.JCEMac$DESede extends org.bouncycastle.jce.provider.JCEMac
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEMac; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DESedeCFB8 )
+public class org.bouncycastle.jce.provider.JCEMac$DESedeCFB8 extends org.bouncycastle.jce.provider.JCEMac
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =MD5 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEMac; )
+public class org.bouncycastle.jce.provider.JCEMac$MD5 extends org.bouncycastle.jce.provider.JCEMac
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =OldSHA384 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEMac; )
+public class org.bouncycastle.jce.provider.JCEMac$OldSHA384 extends org.bouncycastle.jce.provider.JCEMac
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =OldSHA512 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEMac; )
+public class org.bouncycastle.jce.provider.JCEMac$OldSHA512 extends org.bouncycastle.jce.provider.JCEMac
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEMac; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHA )
+public class org.bouncycastle.jce.provider.JCEMac$PBEWithSHA extends org.bouncycastle.jce.provider.JCEMac
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEMac; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA1 )
+public class org.bouncycastle.jce.provider.JCEMac$SHA1 extends org.bouncycastle.jce.provider.JCEMac
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA224 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEMac; )
+public class org.bouncycastle.jce.provider.JCEMac$SHA224 extends org.bouncycastle.jce.provider.JCEMac
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEMac; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA256 )
+public class org.bouncycastle.jce.provider.JCEMac$SHA256 extends org.bouncycastle.jce.provider.JCEMac
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEMac; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA384 )
+public class org.bouncycastle.jce.provider.JCEMac$SHA384 extends org.bouncycastle.jce.provider.JCEMac
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEMac; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA512 )
+public class org.bouncycastle.jce.provider.JCEMac$SHA512 extends org.bouncycastle.jce.provider.JCEMac
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.JCEPBEKey extends java.lang.Object implements javax.crypto.interfaces.PBEKey
+
+----------------FIELDS----------------
+
+ java.lang.String algorithm
+
+ int digest
+
+ int ivSize
+
+ int keySize
+
+ org.bouncycastle.asn1.DERObjectIdentifier oid
+
+ org.bouncycastle.crypto.CipherParameters param
+
+ javax.crypto.spec.PBEKeySpec pbeKeySpec
+
+ boolean tryWrong
+
+ int type
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+org.bouncycastle.asn1.DERObjectIdentifier
+int
+int
+int
+int
+javax.crypto.spec.PBEKeySpec
+org.bouncycastle.crypto.CipherParameters)
+
+public java.lang.String getAlgorithm()
+
+ int getDigest()
+
+public byte[] getEncoded()
+
+public java.lang.String getFormat()
+
+public int getIterationCount()
+
+ int getIvSize()
+
+ int getKeySize()
+
+public org.bouncycastle.asn1.DERObjectIdentifier getOID()
+
+ org.bouncycastle.crypto.CipherParameters getParam()
+
+public char[] getPassword()
+
+public byte[] getSalt()
+
+ int getType()
+
+ void setTryWrongPKCS12Zero(
+boolean)
+
+ boolean shouldTryWrongPKCS12()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JCERSACipher$ISO9796d1Padding;Lorg/bouncycastle/jce/provider/JCERSACipher$OAEPPadding;Lorg/bouncycastle/jce/provider/JCERSACipher$PKCS1v1_5Padding_PublicOnly;Lorg/bouncycastle/jce/provider/JCERSACipher$PKCS1v1_5Padding_PrivateOnly;Lorg/bouncycastle/jce/provider/JCERSACipher$PKCS1v1_5Padding;Lorg/bouncycastle/jce/provider/JCERSACipher$NoPadding; )
+public class org.bouncycastle.jce.provider.JCERSACipher extends org.bouncycastle.jce.provider.WrapCipherSpi
+
+----------------FIELDS----------------
+
+private java.io.ByteArrayOutputStream bOut
+
+private org.bouncycastle.crypto.AsymmetricBlockCipher cipher
+
+private java.security.AlgorithmParameters engineParams
+
+private java.security.spec.AlgorithmParameterSpec paramSpec
+
+private boolean privateKeyOnly
+
+private boolean publicKeyOnly
+----------------METHODS----------------
+
+public void <init>(
+javax.crypto.spec.OAEPParameterSpec)
+
+public void <init>(
+org.bouncycastle.crypto.AsymmetricBlockCipher)
+
+public void <init>(
+boolean
+boolean
+org.bouncycastle.crypto.AsymmetricBlockCipher)
+@dalvik.annotation.Throws (value =Ljavax/crypto/NoSuchPaddingException; )
+private void initFromSpec(
+javax.crypto.spec.OAEPParameterSpec)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+protected int engineDoFinal(
+byte[]
+int
+int
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljavax/crypto/IllegalBlockSizeException;Ljavax/crypto/BadPaddingException; )
+protected byte[] engineDoFinal(
+byte[]
+int
+int)
+
+protected int engineGetBlockSize()
+
+protected byte[] engineGetIV()
+
+protected int engineGetKeySize(
+java.security.Key)
+
+protected int engineGetOutputSize(
+int)
+
+protected java.security.AlgorithmParameters engineGetParameters()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.AlgorithmParameters
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException; )
+protected void engineSetMode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljavax/crypto/NoSuchPaddingException; )
+protected void engineSetPadding(
+java.lang.String)
+
+protected int engineUpdate(
+byte[]
+int
+int
+byte[]
+int)
+
+protected byte[] engineUpdate(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =ISO9796d1Padding )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCERSACipher; )
+public class org.bouncycastle.jce.provider.JCERSACipher$ISO9796d1Padding extends org.bouncycastle.jce.provider.JCERSACipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCERSACipher; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =NoPadding )
+public class org.bouncycastle.jce.provider.JCERSACipher$NoPadding extends org.bouncycastle.jce.provider.JCERSACipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =OAEPPadding )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCERSACipher; )
+public class org.bouncycastle.jce.provider.JCERSACipher$OAEPPadding extends org.bouncycastle.jce.provider.JCERSACipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCERSACipher; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PKCS1v1_5Padding )
+public class org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding extends org.bouncycastle.jce.provider.JCERSACipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PKCS1v1_5Padding_PrivateOnly )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCERSACipher; )
+public class org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding_PrivateOnly extends org.bouncycastle.jce.provider.JCERSACipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCERSACipher; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PKCS1v1_5Padding_PublicOnly )
+public class org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding_PublicOnly extends org.bouncycastle.jce.provider.JCERSACipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.JCERSAPrivateKey extends java.lang.Object implements java.security.interfaces.RSAPrivateKey, org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier
+
+----------------FIELDS----------------
+
+protected java.math.BigInteger modulus
+
+private java.util.Hashtable pkcs12Attributes
+
+private java.util.Vector pkcs12Ordering
+
+protected java.math.BigInteger privateExponent
+----------------METHODS----------------
+
+protected void <init>()
+
+ void <init>(
+java.security.interfaces.RSAPrivateKey)
+
+ void <init>(
+java.security.spec.RSAPrivateKeySpec)
+
+ void <init>(
+org.bouncycastle.crypto.params.RSAKeyParameters)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/ClassNotFoundException; )
+private void readObject(
+java.io.ObjectInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeObject(
+java.io.ObjectOutputStream)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getAlgorithm()
+
+public org.bouncycastle.asn1.DEREncodable getBagAttribute(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+public java.util.Enumeration getBagAttributeKeys()
+
+public byte[] getEncoded()
+
+public java.lang.String getFormat()
+
+public java.math.BigInteger getModulus()
+
+public java.math.BigInteger getPrivateExponent()
+
+public int hashCode()
+
+public void setBagAttribute(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.DEREncodable)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.JCERSAPrivateCrtKey extends org.bouncycastle.jce.provider.JCERSAPrivateKey implements java.security.interfaces.RSAPrivateCrtKey
+
+----------------FIELDS----------------
+
+private java.math.BigInteger crtCoefficient
+
+private java.math.BigInteger primeExponentP
+
+private java.math.BigInteger primeExponentQ
+
+private java.math.BigInteger primeP
+
+private java.math.BigInteger primeQ
+
+private java.math.BigInteger publicExponent
+----------------METHODS----------------
+
+ void <init>(
+java.security.interfaces.RSAPrivateCrtKey)
+
+ void <init>(
+java.security.spec.RSAPrivateCrtKeySpec)
+
+ void <init>(
+org.bouncycastle.asn1.pkcs.PrivateKeyInfo)
+
+ void <init>(
+org.bouncycastle.asn1.pkcs.RSAPrivateKeyStructure)
+
+ void <init>(
+org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters)
+
+public boolean equals(
+java.lang.Object)
+
+public java.math.BigInteger getCrtCoefficient()
+
+public byte[] getEncoded()
+
+public java.lang.String getFormat()
+
+public java.math.BigInteger getPrimeExponentP()
+
+public java.math.BigInteger getPrimeExponentQ()
+
+public java.math.BigInteger getPrimeP()
+
+public java.math.BigInteger getPrimeQ()
+
+public java.math.BigInteger getPublicExponent()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.JCERSAPublicKey extends java.lang.Object implements java.security.interfaces.RSAPublicKey
+
+----------------FIELDS----------------
+
+private java.math.BigInteger modulus
+
+private java.math.BigInteger publicExponent
+----------------METHODS----------------
+
+ void <init>(
+java.security.interfaces.RSAPublicKey)
+
+ void <init>(
+java.security.spec.RSAPublicKeySpec)
+
+ void <init>(
+org.bouncycastle.asn1.x509.SubjectPublicKeyInfo)
+
+ void <init>(
+org.bouncycastle.crypto.params.RSAKeyParameters)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getAlgorithm()
+
+public byte[] getEncoded()
+
+public java.lang.String getFormat()
+
+public java.math.BigInteger getModulus()
+
+public java.math.BigInteger getPublicExponent()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithMD5And256BitAESCBCOpenSSL;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithMD5And192BitAESCBCOpenSSL;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithMD5And128BitAESCBCOpenSSL;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithSHA256And256BitAESBC;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithSHA256And192BitAESBC;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithSHA256And128BitAESBC;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithSHAAnd256BitAESBC;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithSHAAnd192BitAESBC;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithSHAAnd128BitAESBC;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithTiger;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithSHA;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithRIPEMD160;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithSHAAnd40BitRC4;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithSHAAnd128BitRC4;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithSHAAndIDEA;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithSHAAndTwofish;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithSHAAnd40BitRC2;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithSHAAnd128BitRC2;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithSHAAndDES2Key;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithSHAAndDES3Key;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithSHA1AndRC2;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithSHA1AndDES;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithMD5AndRC2;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEWithMD5AndDES;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$DESede;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$DES;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$DESPBEKeyFactory;Lorg/bouncycastle/jce/provider/JCESecretKeyFactory$PBEKeyFactory; )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory extends javax.crypto.SecretKeyFactorySpi implements org.bouncycastle.jce.provider.PBE
+
+----------------FIELDS----------------
+
+protected java.lang.String algName
+
+protected org.bouncycastle.asn1.DERObjectIdentifier algOid
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.String
+org.bouncycastle.asn1.DERObjectIdentifier)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected javax.crypto.SecretKey engineGenerateSecret(
+java.security.spec.KeySpec)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.spec.KeySpec engineGetKeySpec(
+javax.crypto.SecretKey
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected javax.crypto.SecretKey engineTranslateKey(
+javax.crypto.SecretKey)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DES )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$DES extends org.bouncycastle.jce.provider.JCESecretKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected javax.crypto.SecretKey engineGenerateSecret(
+java.security.spec.KeySpec)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DESPBEKeyFactory )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$DESPBEKeyFactory extends org.bouncycastle.jce.provider.JCESecretKeyFactory
+
+----------------FIELDS----------------
+
+private int digest
+
+private boolean forCipher
+
+private int ivSize
+
+private int keySize
+
+private int scheme
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+org.bouncycastle.asn1.DERObjectIdentifier
+boolean
+int
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected javax.crypto.SecretKey engineGenerateSecret(
+java.security.spec.KeySpec)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DESede )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$DESede extends org.bouncycastle.jce.provider.JCESecretKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected javax.crypto.SecretKey engineGenerateSecret(
+java.security.spec.KeySpec)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.spec.KeySpec engineGetKeySpec(
+javax.crypto.SecretKey
+java.lang.Class)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEKeyFactory )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory extends org.bouncycastle.jce.provider.JCESecretKeyFactory
+
+----------------FIELDS----------------
+
+private int digest
+
+private boolean forCipher
+
+private int ivSize
+
+private int keySize
+
+private int scheme
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+org.bouncycastle.asn1.DERObjectIdentifier
+boolean
+int
+int
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected javax.crypto.SecretKey engineGenerateSecret(
+java.security.spec.KeySpec)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithMD5And128BitAESCBCOpenSSL )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithMD5And128BitAESCBCOpenSSL extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithMD5And192BitAESCBCOpenSSL )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithMD5And192BitAESCBCOpenSSL extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithMD5And256BitAESCBCOpenSSL )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithMD5And256BitAESCBCOpenSSL extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithMD5AndDES )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithMD5AndDES extends org.bouncycastle.jce.provider.JCESecretKeyFactory$DESPBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithMD5AndRC2 )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithMD5AndRC2 extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithRIPEMD160 )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithRIPEMD160 extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHA1AndDES )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHA1AndDES extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHA1AndRC2 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHA1AndRC2 extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHA256And128BitAESBC )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHA256And128BitAESBC extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHA256And192BitAESBC )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHA256And192BitAESBC extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHA256And256BitAESBC )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHA256And256BitAESBC extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHA )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHA extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHAAnd128BitAESBC )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHAAnd128BitAESBC extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHAAnd128BitRC2 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHAAnd128BitRC2 extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHAAnd128BitRC4 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHAAnd128BitRC4 extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHAAnd192BitAESBC )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHAAnd192BitAESBC extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHAAnd256BitAESBC )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHAAnd256BitAESBC extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHAAnd40BitRC2 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHAAnd40BitRC2 extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHAAnd40BitRC4 )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHAAnd40BitRC4 extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHAAndDES2Key )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHAAndDES2Key extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHAAndDES3Key )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHAAndDES3Key extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHAAndIDEA )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHAAndIDEA extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithSHAAndTwofish )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithSHAAndTwofish extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PBEWithTiger )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCESecretKeyFactory; )
+public class org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEWithTiger extends org.bouncycastle.jce.provider.JCESecretKeyFactory$PBEKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JCEStreamCipher$DESede_OFB8;Lorg/bouncycastle/jce/provider/JCEStreamCipher$DES_OFB8;Lorg/bouncycastle/jce/provider/JCEStreamCipher$DESede_CFB8;Lorg/bouncycastle/jce/provider/JCEStreamCipher$DES_CFB8; )
+public class org.bouncycastle.jce.provider.JCEStreamCipher extends org.bouncycastle.jce.provider.WrapCipherSpi implements org.bouncycastle.jce.provider.PBE
+
+----------------FIELDS----------------
+
+private java.lang.Class[] availableSpecs
+
+private org.bouncycastle.crypto.StreamCipher cipher
+
+private int ivLength
+
+private org.bouncycastle.crypto.params.ParametersWithIV ivParam
+
+private java.lang.String pbeAlgorithm
+
+private javax.crypto.spec.PBEParameterSpec pbeSpec
+----------------METHODS----------------
+
+protected void <init>(
+org.bouncycastle.crypto.BlockCipher
+int)
+
+protected void <init>(
+org.bouncycastle.crypto.StreamCipher)
+
+protected int engineDoFinal(
+byte[]
+int
+int
+byte[]
+int)
+
+protected byte[] engineDoFinal(
+byte[]
+int
+int)
+
+protected int engineGetBlockSize()
+
+protected byte[] engineGetIV()
+
+protected int engineGetKeySize(
+java.security.Key)
+
+protected int engineGetOutputSize(
+int)
+
+protected java.security.AlgorithmParameters engineGetParameters()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.AlgorithmParameters
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException;Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+int
+java.security.Key
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+protected void engineSetMode(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljavax/crypto/NoSuchPaddingException; )
+protected void engineSetPadding(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljavax/crypto/ShortBufferException; )
+protected int engineUpdate(
+byte[]
+int
+int
+byte[]
+int)
+
+protected byte[] engineUpdate(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEStreamCipher; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DES_CFB8 )
+public class org.bouncycastle.jce.provider.JCEStreamCipher$DES_CFB8 extends org.bouncycastle.jce.provider.JCEStreamCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEStreamCipher; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DES_OFB8 )
+public class org.bouncycastle.jce.provider.JCEStreamCipher$DES_OFB8 extends org.bouncycastle.jce.provider.JCEStreamCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEStreamCipher; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DESede_CFB8 )
+public class org.bouncycastle.jce.provider.JCEStreamCipher$DESede_CFB8 extends org.bouncycastle.jce.provider.JCEStreamCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JCEStreamCipher; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DESede_OFB8 )
+public class org.bouncycastle.jce.provider.JCEStreamCipher$DESede_OFB8 extends org.bouncycastle.jce.provider.JCEStreamCipher
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator$CAST5;Lorg/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator$IDEA;Lorg/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator$AES;Lorg/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator$RC2;Lorg/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator$DES;Lorg/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator$DSA;Lorg/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator$DH; )
+public abstract class org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator extends java.security.AlgorithmParameterGeneratorSpi
+
+----------------FIELDS----------------
+
+protected java.security.SecureRandom random
+
+protected int strength
+----------------METHODS----------------
+
+public void <init>()
+
+protected void engineInit(
+int
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =AES )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator; )
+public class org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$AES extends org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected java.security.AlgorithmParameters engineGenerateParameters()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =CAST5 )
+public class org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$CAST5 extends org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected java.security.AlgorithmParameters engineGenerateParameters()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DES )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator; )
+public class org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$DES extends org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected java.security.AlgorithmParameters engineGenerateParameters()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DH )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator; )
+public class org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$DH extends org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator
+
+----------------FIELDS----------------
+
+private int l
+----------------METHODS----------------
+
+public void <init>()
+
+protected java.security.AlgorithmParameters engineGenerateParameters()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DSA )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator; )
+public class org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$DSA extends org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected java.security.AlgorithmParameters engineGenerateParameters()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =IDEA )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator; )
+public class org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$IDEA extends org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+protected java.security.AlgorithmParameters engineGenerateParameters()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameterGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =RC2 )
+public class org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator$RC2 extends org.bouncycastle.jce.provider.JDKAlgorithmParameterGenerator
+
+----------------FIELDS----------------
+
+ javax.crypto.spec.RC2ParameterSpec spec
+----------------METHODS----------------
+
+public void <init>()
+
+protected java.security.AlgorithmParameters engineGenerateParameters()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters$PSS;Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters$OAEP;Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters$IES;Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters$DSA;Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters$DH;Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters$PKCS12PBE;Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters$CAST5AlgorithmParameters;Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters$RC2AlgorithmParameters;Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters$IDEAAlgorithmParameters;Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters$IVAlgorithmParameters; )
+public abstract class org.bouncycastle.jce.provider.JDKAlgorithmParameters extends java.security.AlgorithmParametersSpi
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =CAST5AlgorithmParameters )
+public class org.bouncycastle.jce.provider.JDKAlgorithmParameters$CAST5AlgorithmParameters extends org.bouncycastle.jce.provider.JDKAlgorithmParameters
+
+----------------FIELDS----------------
+
+private byte[] iv
+
+private int keyLength
+----------------METHODS----------------
+
+public void <init>()
+
+protected byte[] engineGetEncoded()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected byte[] engineGetEncoded(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected java.security.spec.AlgorithmParameterSpec engineGetParameterSpec(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[]
+java.lang.String)
+
+protected java.lang.String engineToString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DH )
+public class org.bouncycastle.jce.provider.JDKAlgorithmParameters$DH extends org.bouncycastle.jce.provider.JDKAlgorithmParameters
+
+----------------FIELDS----------------
+
+ javax.crypto.spec.DHParameterSpec currentSpec
+----------------METHODS----------------
+
+public void <init>()
+
+protected byte[] engineGetEncoded()
+
+protected byte[] engineGetEncoded(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected java.security.spec.AlgorithmParameterSpec engineGetParameterSpec(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[]
+java.lang.String)
+
+protected java.lang.String engineToString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DSA )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters; )
+public class org.bouncycastle.jce.provider.JDKAlgorithmParameters$DSA extends org.bouncycastle.jce.provider.JDKAlgorithmParameters
+
+----------------FIELDS----------------
+
+ java.security.spec.DSAParameterSpec currentSpec
+----------------METHODS----------------
+
+public void <init>()
+
+protected byte[] engineGetEncoded()
+
+protected byte[] engineGetEncoded(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected java.security.spec.AlgorithmParameterSpec engineGetParameterSpec(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[]
+java.lang.String)
+
+protected java.lang.String engineToString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =IDEAAlgorithmParameters )
+public class org.bouncycastle.jce.provider.JDKAlgorithmParameters$IDEAAlgorithmParameters extends org.bouncycastle.jce.provider.JDKAlgorithmParameters
+
+----------------FIELDS----------------
+
+private byte[] iv
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected byte[] engineGetEncoded()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected byte[] engineGetEncoded(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected java.security.spec.AlgorithmParameterSpec engineGetParameterSpec(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[]
+java.lang.String)
+
+protected java.lang.String engineToString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =IES )
+public class org.bouncycastle.jce.provider.JDKAlgorithmParameters$IES extends org.bouncycastle.jce.provider.JDKAlgorithmParameters
+
+----------------FIELDS----------------
+
+ org.bouncycastle.jce.spec.IESParameterSpec currentSpec
+----------------METHODS----------------
+
+public void <init>()
+
+protected byte[] engineGetEncoded()
+
+protected byte[] engineGetEncoded(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected java.security.spec.AlgorithmParameterSpec engineGetParameterSpec(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[]
+java.lang.String)
+
+protected java.lang.String engineToString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =IVAlgorithmParameters )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters; )
+public class org.bouncycastle.jce.provider.JDKAlgorithmParameters$IVAlgorithmParameters extends org.bouncycastle.jce.provider.JDKAlgorithmParameters
+
+----------------FIELDS----------------
+
+private byte[] iv
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected byte[] engineGetEncoded()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected byte[] engineGetEncoded(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected java.security.spec.AlgorithmParameterSpec engineGetParameterSpec(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[]
+java.lang.String)
+
+protected java.lang.String engineToString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =OAEP )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters; )
+public class org.bouncycastle.jce.provider.JDKAlgorithmParameters$OAEP extends org.bouncycastle.jce.provider.JDKAlgorithmParameters
+
+----------------FIELDS----------------
+
+ javax.crypto.spec.OAEPParameterSpec currentSpec
+----------------METHODS----------------
+
+public void <init>()
+
+protected byte[] engineGetEncoded()
+
+protected byte[] engineGetEncoded(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected java.security.spec.AlgorithmParameterSpec engineGetParameterSpec(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[]
+java.lang.String)
+
+protected java.lang.String engineToString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PKCS12PBE )
+public class org.bouncycastle.jce.provider.JDKAlgorithmParameters$PKCS12PBE extends org.bouncycastle.jce.provider.JDKAlgorithmParameters
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.pkcs.PKCS12PBEParams params
+----------------METHODS----------------
+
+public void <init>()
+
+protected byte[] engineGetEncoded()
+
+protected byte[] engineGetEncoded(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected java.security.spec.AlgorithmParameterSpec engineGetParameterSpec(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[]
+java.lang.String)
+
+protected java.lang.String engineToString()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =PSS )
+public class org.bouncycastle.jce.provider.JDKAlgorithmParameters$PSS extends org.bouncycastle.jce.provider.JDKAlgorithmParameters
+
+----------------FIELDS----------------
+
+ java.security.spec.PSSParameterSpec currentSpec
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected byte[] engineGetEncoded()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected byte[] engineGetEncoded(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected java.security.spec.AlgorithmParameterSpec engineGetParameterSpec(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[]
+java.lang.String)
+
+protected java.lang.String engineToString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =RC2AlgorithmParameters )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKAlgorithmParameters; )
+public class org.bouncycastle.jce.provider.JDKAlgorithmParameters$RC2AlgorithmParameters extends org.bouncycastle.jce.provider.JDKAlgorithmParameters
+
+----------------FIELDS----------------
+
+private short[] ekb
+
+private byte[] iv
+
+private int parameterVersion
+
+private short[] table
+----------------METHODS----------------
+
+public void <init>()
+
+protected byte[] engineGetEncoded()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected byte[] engineGetEncoded(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected java.security.spec.AlgorithmParameterSpec engineGetParameterSpec(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[]
+java.lang.String)
+
+protected java.lang.String engineToString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.JDKDSAPrivateKey extends java.lang.Object implements java.security.interfaces.DSAPrivateKey, org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier
+
+----------------FIELDS----------------
+
+ java.security.interfaces.DSAParams dsaSpec
+
+private java.util.Hashtable pkcs12Attributes
+
+private java.util.Vector pkcs12Ordering
+
+ java.math.BigInteger x
+----------------METHODS----------------
+
+protected void <init>()
+
+ void <init>(
+java.security.interfaces.DSAPrivateKey)
+
+ void <init>(
+java.security.spec.DSAPrivateKeySpec)
+
+ void <init>(
+org.bouncycastle.asn1.pkcs.PrivateKeyInfo)
+
+ void <init>(
+org.bouncycastle.crypto.params.DSAPrivateKeyParameters)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getAlgorithm()
+
+public org.bouncycastle.asn1.DEREncodable getBagAttribute(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+public java.util.Enumeration getBagAttributeKeys()
+
+public byte[] getEncoded()
+
+public java.lang.String getFormat()
+
+public java.security.interfaces.DSAParams getParams()
+
+public java.math.BigInteger getX()
+
+public void setBagAttribute(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.DEREncodable)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.JDKDSAPublicKey extends java.lang.Object implements java.security.interfaces.DSAPublicKey
+
+----------------FIELDS----------------
+
+private java.security.interfaces.DSAParams dsaSpec
+
+private java.math.BigInteger y
+----------------METHODS----------------
+
+ void <init>(
+java.math.BigInteger
+java.security.spec.DSAParameterSpec)
+
+ void <init>(
+java.security.interfaces.DSAPublicKey)
+
+ void <init>(
+java.security.spec.DSAPublicKeySpec)
+
+ void <init>(
+org.bouncycastle.asn1.x509.SubjectPublicKeyInfo)
+
+ void <init>(
+org.bouncycastle.crypto.params.DSAPublicKeyParameters)
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String getAlgorithm()
+
+public byte[] getEncoded()
+
+public java.lang.String getFormat()
+
+public java.security.interfaces.DSAParams getParams()
+
+public java.math.BigInteger getY()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKDSASigner; )
+ class org.bouncycastle.jce.provider.JDKDSASigner$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKDSASigner; )
+@dalvik.annotation.InnerClass (accessFlags =10 name =NullDigest )
+ class org.bouncycastle.jce.provider.JDKDSASigner$NullDigest extends java.lang.Object implements org.bouncycastle.crypto.Digest
+
+----------------FIELDS----------------
+
+private java.io.ByteArrayOutputStream bOut
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+org.bouncycastle.jce.provider.JDKDSASigner$1)
+
+public int doFinal(
+byte[]
+int)
+
+public java.lang.String getAlgorithmName()
+
+public int getDigestSize()
+
+public void reset()
+
+public void update(
+byte)
+
+public void update(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JDKDSASigner$1;Lorg/bouncycastle/jce/provider/JDKDSASigner$NullDigest;Lorg/bouncycastle/jce/provider/JDKDSASigner$noneDSA;Lorg/bouncycastle/jce/provider/JDKDSASigner$stdDSA; )
+public class org.bouncycastle.jce.provider.JDKDSASigner extends java.security.Signature implements org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers, org.bouncycastle.asn1.x509.X509ObjectIdentifiers
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.Digest digest
+
+private java.security.SecureRandom random
+
+private org.bouncycastle.crypto.DSA signer
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.String
+org.bouncycastle.crypto.Digest
+org.bouncycastle.crypto.DSA)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.math.BigInteger[] derDecode(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private byte[] derEncode(
+java.math.BigInteger
+java.math.BigInteger)
+
+protected java.lang.Object engineGetParameter(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInitSign(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInitSign(
+java.security.PrivateKey
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInitVerify(
+java.security.PublicKey)
+
+protected void engineSetParameter(
+java.lang.String
+java.lang.Object)
+
+protected void engineSetParameter(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected byte[] engineSign()
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected void engineUpdate(
+byte)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected void engineUpdate(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected boolean engineVerify(
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKDSASigner; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =noneDSA )
+public class org.bouncycastle.jce.provider.JDKDSASigner$noneDSA extends org.bouncycastle.jce.provider.JDKDSASigner
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =stdDSA )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKDSASigner; )
+public class org.bouncycastle.jce.provider.JDKDSASigner$stdDSA extends org.bouncycastle.jce.provider.JDKDSASigner
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JDKDigestSignature$MD5WithRSAEncryption;Lorg/bouncycastle/jce/provider/JDKDigestSignature$MD4WithRSAEncryption;Lorg/bouncycastle/jce/provider/JDKDigestSignature$MD2WithRSAEncryption;Lorg/bouncycastle/jce/provider/JDKDigestSignature$SHA512WithRSAEncryption;Lorg/bouncycastle/jce/provider/JDKDigestSignature$SHA384WithRSAEncryption;Lorg/bouncycastle/jce/provider/JDKDigestSignature$SHA256WithRSAEncryption;Lorg/bouncycastle/jce/provider/JDKDigestSignature$SHA224WithRSAEncryption;Lorg/bouncycastle/jce/provider/JDKDigestSignature$SHA1WithRSAEncryption; )
+public class org.bouncycastle.jce.provider.JDKDigestSignature extends java.security.Signature implements org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers, org.bouncycastle.asn1.x509.X509ObjectIdentifiers
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier algId
+
+private org.bouncycastle.crypto.AsymmetricBlockCipher cipher
+
+private org.bouncycastle.crypto.Digest digest
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.String
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.crypto.Digest
+org.bouncycastle.crypto.AsymmetricBlockCipher)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private byte[] derEncode(
+byte[])
+
+private java.lang.String getType(
+java.lang.Object)
+
+protected java.lang.Object engineGetParameter(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInitSign(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInitVerify(
+java.security.PublicKey)
+
+protected void engineSetParameter(
+java.lang.String
+java.lang.Object)
+
+protected void engineSetParameter(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected byte[] engineSign()
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected void engineUpdate(
+byte)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected void engineUpdate(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected boolean engineVerify(
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =MD2WithRSAEncryption )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKDigestSignature; )
+public class org.bouncycastle.jce.provider.JDKDigestSignature$MD2WithRSAEncryption extends org.bouncycastle.jce.provider.JDKDigestSignature
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKDigestSignature; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =MD4WithRSAEncryption )
+public class org.bouncycastle.jce.provider.JDKDigestSignature$MD4WithRSAEncryption extends org.bouncycastle.jce.provider.JDKDigestSignature
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =MD5WithRSAEncryption )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKDigestSignature; )
+public class org.bouncycastle.jce.provider.JDKDigestSignature$MD5WithRSAEncryption extends org.bouncycastle.jce.provider.JDKDigestSignature
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA1WithRSAEncryption )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKDigestSignature; )
+public class org.bouncycastle.jce.provider.JDKDigestSignature$SHA1WithRSAEncryption extends org.bouncycastle.jce.provider.JDKDigestSignature
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA224WithRSAEncryption )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKDigestSignature; )
+public class org.bouncycastle.jce.provider.JDKDigestSignature$SHA224WithRSAEncryption extends org.bouncycastle.jce.provider.JDKDigestSignature
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA256WithRSAEncryption )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKDigestSignature; )
+public class org.bouncycastle.jce.provider.JDKDigestSignature$SHA256WithRSAEncryption extends org.bouncycastle.jce.provider.JDKDigestSignature
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA384WithRSAEncryption )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKDigestSignature; )
+public class org.bouncycastle.jce.provider.JDKDigestSignature$SHA384WithRSAEncryption extends org.bouncycastle.jce.provider.JDKDigestSignature
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA512WithRSAEncryption )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKDigestSignature; )
+public class org.bouncycastle.jce.provider.JDKDigestSignature$SHA512WithRSAEncryption extends org.bouncycastle.jce.provider.JDKDigestSignature
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =SigAlgParameters )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKECDSAAlgParameters; )
+public class org.bouncycastle.jce.provider.JDKECDSAAlgParameters$SigAlgParameters extends org.bouncycastle.jce.provider.JDKAlgorithmParameters
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.DEREncodable params
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected byte[] engineGetEncoded()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected byte[] engineGetEncoded(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected java.security.spec.AlgorithmParameterSpec engineGetParameterSpec(
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidParameterSpecException; )
+protected void engineInit(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void engineInit(
+byte[]
+java.lang.String)
+
+protected java.lang.String engineToString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JDKECDSAAlgParameters$SigAlgParameters; )
+public abstract class org.bouncycastle.jce.provider.JDKECDSAAlgParameters extends java.security.AlgorithmParametersSpi
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JDKISOSignature$MD5WithRSAEncryption;Lorg/bouncycastle/jce/provider/JDKISOSignature$SHA1WithRSAEncryption; )
+public class org.bouncycastle.jce.provider.JDKISOSignature extends java.security.Signature
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.signers.ISO9796d2Signer signer
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.String
+org.bouncycastle.crypto.Digest
+org.bouncycastle.crypto.AsymmetricBlockCipher)
+
+protected java.lang.Object engineGetParameter(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInitSign(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInitVerify(
+java.security.PublicKey)
+
+protected void engineSetParameter(
+java.lang.String
+java.lang.Object)
+
+protected void engineSetParameter(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected byte[] engineSign()
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected void engineUpdate(
+byte)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected void engineUpdate(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected boolean engineVerify(
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKISOSignature; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =MD5WithRSAEncryption )
+public class org.bouncycastle.jce.provider.JDKISOSignature$MD5WithRSAEncryption extends org.bouncycastle.jce.provider.JDKISOSignature
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKISOSignature; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA1WithRSAEncryption )
+public class org.bouncycastle.jce.provider.JDKISOSignature$SHA1WithRSAEncryption extends org.bouncycastle.jce.provider.JDKISOSignature
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JDKKeyFactory$ECDHC;Lorg/bouncycastle/jce/provider/JDKKeyFactory$ECDH;Lorg/bouncycastle/jce/provider/JDKKeyFactory$ECGOST3410;Lorg/bouncycastle/jce/provider/JDKKeyFactory$ECDSA;Lorg/bouncycastle/jce/provider/JDKKeyFactory$EC;Lorg/bouncycastle/jce/provider/JDKKeyFactory$X509;Lorg/bouncycastle/jce/provider/JDKKeyFactory$ElGamal;Lorg/bouncycastle/jce/provider/JDKKeyFactory$GOST3410;Lorg/bouncycastle/jce/provider/JDKKeyFactory$DSA;Lorg/bouncycastle/jce/provider/JDKKeyFactory$DH;Lorg/bouncycastle/jce/provider/JDKKeyFactory$RSA; )
+public abstract class org.bouncycastle.jce.provider.JDKKeyFactory extends java.security.KeyFactorySpi
+
+----------------FIELDS----------------
+
+protected boolean elGamalFactory
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static java.security.PrivateKey createPrivateKeyFromDERStream(
+byte[])
+
+static java.security.PrivateKey createPrivateKeyFromPrivateKeyInfo(
+org.bouncycastle.asn1.pkcs.PrivateKeyInfo)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static java.security.PublicKey createPublicKeyFromDERStream(
+byte[])
+
+static java.security.PublicKey createPublicKeyFromPublicKeyInfo(
+org.bouncycastle.asn1.x509.SubjectPublicKeyInfo)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.spec.KeySpec engineGetKeySpec(
+java.security.Key
+java.lang.Class)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected java.security.Key engineTranslateKey(
+java.security.Key)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DH )
+public class org.bouncycastle.jce.provider.JDKKeyFactory$DH extends org.bouncycastle.jce.provider.JDKKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.PrivateKey engineGeneratePrivate(
+java.security.spec.KeySpec)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.PublicKey engineGeneratePublic(
+java.security.spec.KeySpec)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DSA )
+public class org.bouncycastle.jce.provider.JDKKeyFactory$DSA extends org.bouncycastle.jce.provider.JDKKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.PrivateKey engineGeneratePrivate(
+java.security.spec.KeySpec)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.PublicKey engineGeneratePublic(
+java.security.spec.KeySpec)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =EC )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKKeyFactory; )
+public class org.bouncycastle.jce.provider.JDKKeyFactory$EC extends org.bouncycastle.jce.provider.JDKKeyFactory
+
+----------------FIELDS----------------
+
+ java.lang.String algorithm
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.PrivateKey engineGeneratePrivate(
+java.security.spec.KeySpec)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.PublicKey engineGeneratePublic(
+java.security.spec.KeySpec)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =ECDH )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKKeyFactory; )
+public class org.bouncycastle.jce.provider.JDKKeyFactory$ECDH extends org.bouncycastle.jce.provider.JDKKeyFactory$EC
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =ECDHC )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKKeyFactory; )
+public class org.bouncycastle.jce.provider.JDKKeyFactory$ECDHC extends org.bouncycastle.jce.provider.JDKKeyFactory$EC
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =ECDSA )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKKeyFactory; )
+public class org.bouncycastle.jce.provider.JDKKeyFactory$ECDSA extends org.bouncycastle.jce.provider.JDKKeyFactory$EC
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =ECGOST3410 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKKeyFactory; )
+public class org.bouncycastle.jce.provider.JDKKeyFactory$ECGOST3410 extends org.bouncycastle.jce.provider.JDKKeyFactory$EC
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =ElGamal )
+public class org.bouncycastle.jce.provider.JDKKeyFactory$ElGamal extends org.bouncycastle.jce.provider.JDKKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.PrivateKey engineGeneratePrivate(
+java.security.spec.KeySpec)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.PublicKey engineGeneratePublic(
+java.security.spec.KeySpec)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =GOST3410 )
+public class org.bouncycastle.jce.provider.JDKKeyFactory$GOST3410 extends org.bouncycastle.jce.provider.JDKKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.PrivateKey engineGeneratePrivate(
+java.security.spec.KeySpec)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.PublicKey engineGeneratePublic(
+java.security.spec.KeySpec)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =RSA )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKKeyFactory; )
+public class org.bouncycastle.jce.provider.JDKKeyFactory$RSA extends org.bouncycastle.jce.provider.JDKKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.PrivateKey engineGeneratePrivate(
+java.security.spec.KeySpec)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.PublicKey engineGeneratePublic(
+java.security.spec.KeySpec)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKKeyFactory; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =X509 )
+public class org.bouncycastle.jce.provider.JDKKeyFactory$X509 extends org.bouncycastle.jce.provider.JDKKeyFactory
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.PrivateKey engineGeneratePrivate(
+java.security.spec.KeySpec)
+@dalvik.annotation.Throws (value =Ljava/security/spec/InvalidKeySpecException; )
+protected java.security.PublicKey engineGeneratePublic(
+java.security.spec.KeySpec)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JDKKeyPairGenerator$DSA;Lorg/bouncycastle/jce/provider/JDKKeyPairGenerator$DH;Lorg/bouncycastle/jce/provider/JDKKeyPairGenerator$RSA; )
+public abstract class org.bouncycastle.jce.provider.JDKKeyPairGenerator extends java.security.KeyPairGenerator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public abstract java.security.KeyPair generateKeyPair()
+
+public abstract void initialize(
+int
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DH )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKKeyPairGenerator; )
+public class org.bouncycastle.jce.provider.JDKKeyPairGenerator$DH extends org.bouncycastle.jce.provider.JDKKeyPairGenerator
+
+----------------FIELDS----------------
+
+ int certainty
+
+ org.bouncycastle.crypto.generators.DHBasicKeyPairGenerator engine
+
+ boolean initialised
+
+ org.bouncycastle.crypto.params.DHKeyGenerationParameters param
+
+ java.security.SecureRandom random
+
+ int strength
+----------------METHODS----------------
+
+public void <init>()
+
+public java.security.KeyPair generateKeyPair()
+
+public void initialize(
+int
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public void initialize(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKKeyPairGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DSA )
+public class org.bouncycastle.jce.provider.JDKKeyPairGenerator$DSA extends org.bouncycastle.jce.provider.JDKKeyPairGenerator
+
+----------------FIELDS----------------
+
+ int certainty
+
+ org.bouncycastle.crypto.generators.DSAKeyPairGenerator engine
+
+ boolean initialised
+
+ org.bouncycastle.crypto.params.DSAKeyGenerationParameters param
+
+ java.security.SecureRandom random
+
+ int strength
+----------------METHODS----------------
+
+public void <init>()
+
+public java.security.KeyPair generateKeyPair()
+
+public void initialize(
+int
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public void initialize(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKKeyPairGenerator; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =RSA )
+public class org.bouncycastle.jce.provider.JDKKeyPairGenerator$RSA extends org.bouncycastle.jce.provider.JDKKeyPairGenerator
+
+----------------FIELDS----------------
+
+static final java.math.BigInteger defaultPublicExponent
+
+static final int defaultTests
+
+ org.bouncycastle.crypto.generators.RSAKeyPairGenerator engine
+
+ org.bouncycastle.crypto.params.RSAKeyGenerationParameters param
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public java.security.KeyPair generateKeyPair()
+
+public void initialize(
+int
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidAlgorithmParameterException; )
+public void initialize(
+java.security.spec.AlgorithmParameterSpec
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JDKKeyStore$BouncyCastleStore;Lorg/bouncycastle/jce/provider/JDKKeyStore$StoreEntry; )
+public class org.bouncycastle.jce.provider.JDKKeyStore extends java.security.KeyStoreSpi implements org.bouncycastle.jce.interfaces.BCKeyStore
+
+----------------FIELDS----------------
+
+static final int CERTIFICATE
+
+static final int KEY
+
+private static final java.lang.String KEY_CIPHER
+
+static final int KEY_PRIVATE
+
+static final int KEY_PUBLIC
+
+private static final int KEY_SALT_SIZE
+
+static final int KEY_SECRET
+
+private static final int MIN_ITERATIONS
+
+static final int NULL
+
+static final int SEALED
+
+static final int SECRET
+
+private static final java.lang.String STORE_CIPHER
+
+private static final int STORE_SALT_SIZE
+
+private static final int STORE_VERSION
+
+protected java.security.SecureRandom random
+
+protected java.util.Hashtable table
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static void access$000(
+org.bouncycastle.jce.provider.JDKKeyStore
+java.security.Key
+java.io.DataOutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static java.security.Key access$100(
+org.bouncycastle.jce.provider.JDKKeyStore
+java.io.DataInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.security.cert.Certificate decodeCertificate(
+java.io.DataInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.security.Key decodeKey(
+java.io.DataInputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void encodeCertificate(
+java.security.cert.Certificate
+java.io.DataOutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void encodeKey(
+java.security.Key
+java.io.DataOutputStream)
+
+public java.util.Enumeration engineAliases()
+
+public boolean engineContainsAlias(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public void engineDeleteEntry(
+java.lang.String)
+
+public java.security.cert.Certificate engineGetCertificate(
+java.lang.String)
+
+public java.lang.String engineGetCertificateAlias(
+java.security.cert.Certificate)
+
+public java.security.cert.Certificate[] engineGetCertificateChain(
+java.lang.String)
+
+public java.util.Date engineGetCreationDate(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/UnrecoverableKeyException; )
+public java.security.Key engineGetKey(
+java.lang.String
+char[])
+
+public boolean engineIsCertificateEntry(
+java.lang.String)
+
+public boolean engineIsKeyEntry(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void engineLoad(
+java.io.InputStream
+char[])
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public void engineSetCertificateEntry(
+java.lang.String
+java.security.cert.Certificate)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public void engineSetKeyEntry(
+java.lang.String
+java.security.Key
+char[]
+java.security.cert.Certificate[])
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public void engineSetKeyEntry(
+java.lang.String
+byte[]
+java.security.cert.Certificate[])
+
+public int engineSize()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void engineStore(
+java.io.OutputStream
+char[])
+
+protected boolean isSameAs(
+byte[]
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void loadStore(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected javax.crypto.Cipher makePBECipher(
+java.lang.String
+int
+char[]
+byte[]
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected void saveStore(
+java.io.OutputStream)
+
+public void setRandom(
+java.security.SecureRandom)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =BouncyCastleStore )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKKeyStore; )
+public class org.bouncycastle.jce.provider.JDKKeyStore$BouncyCastleStore extends org.bouncycastle.jce.provider.JDKKeyStore
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void engineLoad(
+java.io.InputStream
+char[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void engineStore(
+java.io.OutputStream
+char[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =StoreEntry )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKKeyStore; )
+ class org.bouncycastle.jce.provider.JDKKeyStore$StoreEntry extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.lang.String alias
+
+ java.security.cert.Certificate[] certChain
+
+ java.util.Date date
+
+ java.lang.Object obj
+
+final org.bouncycastle.jce.provider.JDKKeyStore this$0
+
+ int type
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/lang/Exception; )
+ void <init>(
+org.bouncycastle.jce.provider.JDKKeyStore
+java.lang.String
+java.security.Key
+char[]
+java.security.cert.Certificate[])
+
+ void <init>(
+org.bouncycastle.jce.provider.JDKKeyStore
+java.lang.String
+java.security.Key
+java.security.cert.Certificate[])
+
+ void <init>(
+org.bouncycastle.jce.provider.JDKKeyStore
+java.lang.String
+java.security.cert.Certificate)
+
+ void <init>(
+org.bouncycastle.jce.provider.JDKKeyStore
+java.lang.String
+java.util.Date
+int
+java.lang.Object)
+
+ void <init>(
+org.bouncycastle.jce.provider.JDKKeyStore
+java.lang.String
+java.util.Date
+int
+java.lang.Object
+java.security.cert.Certificate[])
+
+ void <init>(
+org.bouncycastle.jce.provider.JDKKeyStore
+java.lang.String
+byte[]
+java.security.cert.Certificate[])
+
+ java.lang.String getAlias()
+
+ java.security.cert.Certificate[] getCertificateChain()
+
+ java.util.Date getDate()
+
+ java.lang.Object getObject()
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/UnrecoverableKeyException; )
+ java.lang.Object getObject(
+char[])
+
+ int getType()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JDKMessageDigest$MD5;Lorg/bouncycastle/jce/provider/JDKMessageDigest$SHA512;Lorg/bouncycastle/jce/provider/JDKMessageDigest$SHA384;Lorg/bouncycastle/jce/provider/JDKMessageDigest$SHA256;Lorg/bouncycastle/jce/provider/JDKMessageDigest$SHA224;Lorg/bouncycastle/jce/provider/JDKMessageDigest$SHA1; )
+public class org.bouncycastle.jce.provider.JDKMessageDigest extends java.security.MessageDigest
+
+----------------FIELDS----------------
+
+ org.bouncycastle.crypto.Digest digest
+----------------METHODS----------------
+
+protected void <init>(
+org.bouncycastle.crypto.Digest)
+
+public byte[] engineDigest()
+
+public void engineReset()
+
+public void engineUpdate(
+byte)
+
+public void engineUpdate(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =MD5 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKMessageDigest; )
+public class org.bouncycastle.jce.provider.JDKMessageDigest$MD5 extends org.bouncycastle.jce.provider.JDKMessageDigest implements java.lang.Cloneable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA1 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKMessageDigest; )
+public class org.bouncycastle.jce.provider.JDKMessageDigest$SHA1 extends org.bouncycastle.jce.provider.JDKMessageDigest implements java.lang.Cloneable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKMessageDigest; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA224 )
+public class org.bouncycastle.jce.provider.JDKMessageDigest$SHA224 extends org.bouncycastle.jce.provider.JDKMessageDigest implements java.lang.Cloneable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA256 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKMessageDigest; )
+public class org.bouncycastle.jce.provider.JDKMessageDigest$SHA256 extends org.bouncycastle.jce.provider.JDKMessageDigest implements java.lang.Cloneable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA384 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKMessageDigest; )
+public class org.bouncycastle.jce.provider.JDKMessageDigest$SHA384 extends org.bouncycastle.jce.provider.JDKMessageDigest implements java.lang.Cloneable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA512 )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKMessageDigest; )
+public class org.bouncycastle.jce.provider.JDKMessageDigest$SHA512 extends org.bouncycastle.jce.provider.JDKMessageDigest implements java.lang.Cloneable
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/CloneNotSupportedException; )
+public java.lang.Object clone()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JDKPKCS12KeyStore$DefPKCS12KeyStore;Lorg/bouncycastle/jce/provider/JDKPKCS12KeyStore$BCPKCS12KeyStore;Lorg/bouncycastle/jce/provider/JDKPKCS12KeyStore$CertId; )
+public class org.bouncycastle.jce.provider.JDKPKCS12KeyStore extends java.security.KeyStoreSpi implements org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers, org.bouncycastle.asn1.x509.X509ObjectIdentifiers, org.bouncycastle.jce.interfaces.BCKeyStore
+
+----------------FIELDS----------------
+
+static final int CERTIFICATE
+
+private static final java.lang.String CERT_ALGORITHM
+
+static final int KEY
+
+private static final java.lang.String KEY_ALGORITHM
+
+static final int KEY_PRIVATE
+
+static final int KEY_PUBLIC
+
+static final int KEY_SECRET
+
+private static final int MIN_ITERATIONS
+
+static final int NULL
+
+private static final int SALT_SIZE
+
+static final int SEALED
+
+static final int SECRET
+
+private java.security.cert.CertificateFactory certFact
+
+private java.util.Hashtable certs
+
+private java.util.Hashtable chainCerts
+
+private java.util.Hashtable keyCerts
+
+private java.util.Hashtable keys
+
+private java.util.Hashtable localIds
+
+protected java.security.SecureRandom random
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+static org.bouncycastle.asn1.x509.SubjectKeyIdentifier access$000(
+org.bouncycastle.jce.provider.JDKPKCS12KeyStore
+java.security.PublicKey)
+
+private org.bouncycastle.asn1.x509.SubjectKeyIdentifier createSubjectKeyId(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected org.bouncycastle.asn1.ASN1Sequence decryptData(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+byte[]
+char[]
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected byte[] encryptData(
+java.lang.String
+byte[]
+org.bouncycastle.asn1.pkcs.PKCS12PBEParams
+char[])
+
+public java.util.Enumeration engineAliases()
+
+public boolean engineContainsAlias(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public void engineDeleteEntry(
+java.lang.String)
+
+public java.security.cert.Certificate engineGetCertificate(
+java.lang.String)
+
+public java.lang.String engineGetCertificateAlias(
+java.security.cert.Certificate)
+
+public java.security.cert.Certificate[] engineGetCertificateChain(
+java.lang.String)
+
+public java.util.Date engineGetCreationDate(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/UnrecoverableKeyException; )
+public java.security.Key engineGetKey(
+java.lang.String
+char[])
+
+public boolean engineIsCertificateEntry(
+java.lang.String)
+
+public boolean engineIsKeyEntry(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void engineLoad(
+java.io.InputStream
+char[])
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public void engineSetCertificateEntry(
+java.lang.String
+java.security.cert.Certificate)
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public void engineSetKeyEntry(
+java.lang.String
+java.security.Key
+char[]
+java.security.cert.Certificate[])
+@dalvik.annotation.Throws (value =Ljava/security/KeyStoreException; )
+public void engineSetKeyEntry(
+java.lang.String
+byte[]
+java.security.cert.Certificate[])
+
+public int engineSize()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void engineStore(
+java.io.OutputStream
+char[])
+
+public void setRandom(
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected java.security.PrivateKey unwrapKey(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier
+byte[]
+char[]
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+protected byte[] wrapKey(
+java.lang.String
+java.security.Key
+org.bouncycastle.asn1.pkcs.PKCS12PBEParams
+char[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =BCPKCS12KeyStore )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKPKCS12KeyStore; )
+public class org.bouncycastle.jce.provider.JDKPKCS12KeyStore$BCPKCS12KeyStore extends org.bouncycastle.jce.provider.JDKPKCS12KeyStore
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =2 name =CertId )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKPKCS12KeyStore; )
+ class org.bouncycastle.jce.provider.JDKPKCS12KeyStore$CertId extends java.lang.Object
+
+----------------FIELDS----------------
+
+ byte[] id
+
+final org.bouncycastle.jce.provider.JDKPKCS12KeyStore this$0
+----------------METHODS----------------
+
+ void <init>(
+org.bouncycastle.jce.provider.JDKPKCS12KeyStore
+java.security.PublicKey)
+
+ void <init>(
+org.bouncycastle.jce.provider.JDKPKCS12KeyStore
+byte[])
+
+public boolean equals(
+java.lang.Object)
+
+public int hashCode()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKPKCS12KeyStore; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =DefPKCS12KeyStore )
+public class org.bouncycastle.jce.provider.JDKPKCS12KeyStore$DefPKCS12KeyStore extends org.bouncycastle.jce.provider.JDKPKCS12KeyStore
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/bouncycastle/jce/provider/JDKPSSSigner$SHA512withRSA;Lorg/bouncycastle/jce/provider/JDKPSSSigner$SHA384withRSA;Lorg/bouncycastle/jce/provider/JDKPSSSigner$SHA256withRSA;Lorg/bouncycastle/jce/provider/JDKPSSSigner$SHA224withRSA;Lorg/bouncycastle/jce/provider/JDKPSSSigner$SHA1withRSA;Lorg/bouncycastle/jce/provider/JDKPSSSigner$PSSwithRSA; )
+public class org.bouncycastle.jce.provider.JDKPSSSigner extends java.security.Signature
+
+----------------FIELDS----------------
+
+private org.bouncycastle.crypto.Digest digest
+
+private java.security.AlgorithmParameters engineParams
+
+private java.security.spec.PSSParameterSpec originalSpec
+
+private java.security.spec.PSSParameterSpec paramSpec
+
+private org.bouncycastle.crypto.signers.PSSSigner pss
+
+private int saltLength
+
+private org.bouncycastle.crypto.AsymmetricBlockCipher signer
+
+private byte trailer
+----------------METHODS----------------
+
+protected void <init>(
+java.lang.String
+org.bouncycastle.crypto.AsymmetricBlockCipher
+java.security.spec.PSSParameterSpec)
+
+private byte getTrailer(
+int)
+
+protected java.lang.Object engineGetParameter(
+java.lang.String)
+
+protected java.security.AlgorithmParameters engineGetParameters()
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInitSign(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInitSign(
+java.security.PrivateKey
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+protected void engineInitVerify(
+java.security.PublicKey)
+
+protected void engineSetParameter(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidParameterException; )
+protected void engineSetParameter(
+java.security.spec.AlgorithmParameterSpec)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected byte[] engineSign()
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected void engineUpdate(
+byte)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected void engineUpdate(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/security/SignatureException; )
+protected boolean engineVerify(
+byte[])
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =PSSwithRSA )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKPSSSigner; )
+public class org.bouncycastle.jce.provider.JDKPSSSigner$PSSwithRSA extends org.bouncycastle.jce.provider.JDKPSSSigner
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA1withRSA )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKPSSSigner; )
+public class org.bouncycastle.jce.provider.JDKPSSSigner$SHA1withRSA extends org.bouncycastle.jce.provider.JDKPSSSigner
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA224withRSA )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKPSSSigner; )
+public class org.bouncycastle.jce.provider.JDKPSSSigner$SHA224withRSA extends org.bouncycastle.jce.provider.JDKPSSSigner
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA256withRSA )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKPSSSigner; )
+public class org.bouncycastle.jce.provider.JDKPSSSigner$SHA256withRSA extends org.bouncycastle.jce.provider.JDKPSSSigner
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKPSSSigner; )
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA384withRSA )
+public class org.bouncycastle.jce.provider.JDKPSSSigner$SHA384withRSA extends org.bouncycastle.jce.provider.JDKPSSSigner
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =SHA512withRSA )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/JDKPSSSigner; )
+public class org.bouncycastle.jce.provider.JDKPSSSigner$SHA512withRSA extends org.bouncycastle.jce.provider.JDKPSSSigner
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.JDKX509CertificateFactory extends java.security.cert.CertificateFactorySpi
+
+----------------FIELDS----------------
+
+private static final long MAX_MEMORY
+
+private java.io.InputStream currentCrlStream
+
+private java.io.InputStream currentStream
+
+private org.bouncycastle.asn1.pkcs.SignedData sCrlData
+
+private int sCrlDataObjectCount
+
+private org.bouncycastle.asn1.pkcs.SignedData sData
+
+private int sDataObjectCount
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int getLimit(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/security/cert/CRLException; )
+private java.security.cert.CRL readDERCRL(
+org.bouncycastle.asn1.ASN1InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.security.cert.Certificate readDERCertificate(
+org.bouncycastle.asn1.ASN1InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.lang.String readLine(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/security/cert/CRLException; )
+private java.security.cert.CRL readPEMCRL(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.security.cert.Certificate readPEMCertificate(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/security/cert/CRLException; )
+private java.security.cert.CRL readPKCS7CRL(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private java.security.cert.Certificate readPKCS7Certificate(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public java.security.cert.CRL engineGenerateCRL(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public java.util.Collection engineGenerateCRLs(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public java.security.cert.CertPath engineGenerateCertPath(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public java.security.cert.CertPath engineGenerateCertPath(
+java.io.InputStream
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public java.security.cert.CertPath engineGenerateCertPath(
+java.util.List)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public java.security.cert.Certificate engineGenerateCertificate(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+public java.util.Collection engineGenerateCertificates(
+java.io.InputStream)
+
+public java.util.Iterator engineGetCertPathEncodings()
+
+________________CLASS________________
+
+
+ class org.bouncycastle.jce.provider.OldPKCS12ParametersGenerator extends org.bouncycastle.crypto.PBEParametersGenerator
+
+----------------FIELDS----------------
+
+public static final int IV_MATERIAL
+
+public static final int KEY_MATERIAL
+
+public static final int MAC_MATERIAL
+
+private org.bouncycastle.crypto.Digest digest
+
+private int u
+
+private int v
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.crypto.Digest)
+
+private void adjust(
+byte[]
+int
+byte[])
+
+private byte[] generateDerivedKey(
+int
+int)
+
+public org.bouncycastle.crypto.CipherParameters generateDerivedMacParameters(
+int)
+
+public org.bouncycastle.crypto.CipherParameters generateDerivedParameters(
+int)
+
+public org.bouncycastle.crypto.CipherParameters generateDerivedParameters(
+int
+int)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =Util )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/PBE; )
+public class org.bouncycastle.jce.provider.PBE$Util extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+private static org.bouncycastle.crypto.PBEParametersGenerator makePBEGenerator(
+int
+int)
+
+static org.bouncycastle.crypto.CipherParameters makePBEMacParameters(
+javax.crypto.spec.PBEKeySpec
+int
+int
+int)
+
+static org.bouncycastle.crypto.CipherParameters makePBEMacParameters(
+org.bouncycastle.jce.provider.JCEPBEKey
+java.security.spec.AlgorithmParameterSpec)
+
+static org.bouncycastle.crypto.CipherParameters makePBEParameters(
+javax.crypto.spec.PBEKeySpec
+int
+int
+int
+int)
+
+static org.bouncycastle.crypto.CipherParameters makePBEParameters(
+org.bouncycastle.jce.provider.JCEPBEKey
+java.security.spec.AlgorithmParameterSpec
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.PKIXCertPath extends java.security.cert.CertPath
+
+----------------FIELDS----------------
+
+static final java.util.List certPathEncodings
+
+private java.util.List certificates
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException; )
+ void <init>(
+java.io.InputStream
+java.lang.String)
+
+ void <init>(
+java.util.List)
+
+private java.util.List sortCerts(
+java.util.List)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateEncodingException; )
+private org.bouncycastle.asn1.DERObject toASN1Object(
+java.security.cert.X509Certificate)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateEncodingException; )
+private byte[] toDEREncoded(
+org.bouncycastle.asn1.ASN1Encodable)
+
+public java.util.List getCertificates()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateEncodingException; )
+public byte[] getEncoded()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateEncodingException; )
+public byte[] getEncoded(
+java.lang.String)
+
+public java.util.Iterator getEncodings()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.PKIXCertPathBuilderSpi extends java.security.cert.CertPathBuilderSpi
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertStoreException; )
+private final java.util.Collection findCertificates(
+java.security.cert.CertSelector
+java.util.List)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathValidatorException; )
+private final java.security.cert.X509Certificate findIssuer(
+java.security.cert.X509Certificate
+java.util.List)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathBuilderException;Ljava/security/InvalidAlgorithmParameterException; )
+public java.security.cert.CertPathBuilderResult engineBuild(
+java.security.cert.CertPathParameters)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathBuilderException; )
+final java.security.cert.TrustAnchor findTrustAnchor(
+java.security.cert.X509Certificate
+java.util.Set)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi extends java.security.cert.CertPathValidatorSpi
+
+----------------FIELDS----------------
+
+private static final java.lang.String ANY_POLICY
+
+private static final java.lang.String BASIC_CONSTRAINTS
+
+private static final java.lang.String CERTIFICATE_POLICIES
+
+private static final java.lang.String CRL_NUMBER
+
+private static final int CRL_SIGN
+
+private static final java.lang.String DELTA_CRL_INDICATOR
+
+private static final java.lang.String INHIBIT_ANY_POLICY
+
+private static final java.lang.String ISSUING_DISTRIBUTION_POINT
+
+private static final int KEY_CERT_SIGN
+
+private static final java.lang.String KEY_USAGE
+
+private static final java.lang.String NAME_CONSTRAINTS
+
+private static final java.lang.String POLICY_CONSTRAINTS
+
+private static final java.lang.String POLICY_MAPPINGS
+
+private static final java.lang.String SUBJECT_ALTERNATIVE_NAME
+
+private static final java.lang.String[] crlReasons
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/jce/provider/AnnotatedException; )
+private void checkCRLs(
+java.security.cert.PKIXParameters
+java.security.cert.X509Certificate
+java.util.Date
+java.security.cert.X509Certificate
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertPathValidatorException;Ljava/security/InvalidAlgorithmParameterException; )
+public java.security.cert.CertPathValidatorResult engineValidate(
+java.security.cert.CertPath
+java.security.cert.CertPathParameters)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.PKIXPolicyNode extends java.lang.Object implements java.security.cert.PolicyNode
+
+----------------FIELDS----------------
+
+protected java.util.List children
+
+protected boolean critical
+
+protected int depth
+
+protected java.util.Set expectedPolicies
+
+protected java.security.cert.PolicyNode parent
+
+protected java.util.Set policyQualifiers
+
+protected java.lang.String validPolicy
+----------------METHODS----------------
+
+public void <init>(
+java.util.List
+int
+java.util.Set
+java.security.cert.PolicyNode
+java.util.Set
+java.lang.String
+boolean)
+
+public void addChild(
+org.bouncycastle.jce.provider.PKIXPolicyNode)
+
+public java.lang.Object clone()
+
+public org.bouncycastle.jce.provider.PKIXPolicyNode copy()
+
+public java.util.Iterator getChildren()
+
+public int getDepth()
+
+public java.util.Set getExpectedPolicies()
+
+public java.security.cert.PolicyNode getParent()
+
+public java.util.Set getPolicyQualifiers()
+
+public java.lang.String getValidPolicy()
+
+public boolean hasChildren()
+
+public boolean isCritical()
+
+public void removeChild(
+org.bouncycastle.jce.provider.PKIXPolicyNode)
+
+public void setCritical(
+boolean)
+
+public void setParent(
+org.bouncycastle.jce.provider.PKIXPolicyNode)
+
+public java.lang.String toString()
+
+public java.lang.String toString(
+java.lang.String)
+
+________________CLASS________________
+
+
+ class org.bouncycastle.jce.provider.RSAUtil extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+static org.bouncycastle.crypto.params.RSAKeyParameters generatePrivateKeyParameter(
+java.security.interfaces.RSAPrivateKey)
+
+static org.bouncycastle.crypto.params.RSAKeyParameters generatePublicKeyParameter(
+java.security.interfaces.RSAPublicKey)
+
+static boolean isRsaOid(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =AESWrap )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/WrapCipherSpi; )
+public class org.bouncycastle.jce.provider.WrapCipherSpi$AESWrap extends org.bouncycastle.jce.provider.WrapCipherSpi
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =9 name =DESEDEWrap )
+@dalvik.annotation.EnclosingClass (value =Lorg/bouncycastle/jce/provider/WrapCipherSpi; )
+public class org.bouncycastle.jce.provider.WrapCipherSpi$DESEDEWrap extends org.bouncycastle.jce.provider.WrapCipherSpi
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.X509CRLEntryObject extends java.security.cert.X509CRLEntry
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.TBSCertList$CRLEntry c
+
+private boolean isIndirect
+
+private javax.security.auth.x500.X500Principal previousCertificateIssuer
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.x509.TBSCertList$CRLEntry)
+
+public void <init>(
+org.bouncycastle.asn1.x509.TBSCertList$CRLEntry
+boolean
+javax.security.auth.x500.X500Principal)
+
+private java.util.Set getExtensionOIDs(
+boolean)
+
+public javax.security.auth.x500.X500Principal getCertificateIssuer()
+
+public java.util.Set getCriticalExtensionOIDs()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public byte[] getEncoded()
+
+public byte[] getExtensionValue(
+java.lang.String)
+
+public java.util.Set getNonCriticalExtensionOIDs()
+
+public java.util.Date getRevocationDate()
+
+public java.math.BigInteger getSerialNumber()
+
+public boolean hasExtensions()
+
+public boolean hasUnsupportedCriticalExtension()
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.X509CRLObject extends java.security.cert.X509CRL
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.CertificateList c
+
+private java.lang.String sigAlgName
+
+private byte[] sigAlgParams
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public void <init>(
+org.bouncycastle.asn1.x509.CertificateList)
+
+private java.util.Set getExtensionOIDs(
+boolean)
+
+private boolean isIndirectCRL()
+
+public java.util.Set getCriticalExtensionOIDs()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public byte[] getEncoded()
+
+public byte[] getExtensionValue(
+java.lang.String)
+
+public java.security.Principal getIssuerDN()
+
+public javax.security.auth.x500.X500Principal getIssuerX500Principal()
+
+public java.util.Date getNextUpdate()
+
+public java.util.Set getNonCriticalExtensionOIDs()
+
+public java.security.cert.X509CRLEntry getRevokedCertificate(
+java.math.BigInteger)
+
+public java.util.Set getRevokedCertificates()
+
+public java.lang.String getSigAlgName()
+
+public java.lang.String getSigAlgOID()
+
+public byte[] getSigAlgParams()
+
+public byte[] getSignature()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public byte[] getTBSCertList()
+
+public java.util.Date getThisUpdate()
+
+public int getVersion()
+
+public boolean hasUnsupportedCriticalExtension()
+
+public boolean isRevoked(
+java.security.cert.Certificate)
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public void verify(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public void verify(
+java.security.PublicKey
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.provider.X509CertificateObject extends java.security.cert.X509Certificate implements org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.X509CertificateStructure c
+
+private org.bouncycastle.asn1.OrderedTable pkcs12
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.asn1.x509.X509CertificateStructure)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException;Ljava/security/NoSuchAlgorithmException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException;Ljava/security/cert/CertificateEncodingException; )
+private void checkSignature(
+java.security.PublicKey
+java.security.Signature)
+
+private byte[] getExtensionBytes(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateExpiredException;Ljava/security/cert/CertificateNotYetValidException; )
+public void checkValidity()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateExpiredException;Ljava/security/cert/CertificateNotYetValidException; )
+public void checkValidity(
+java.util.Date)
+
+public boolean equals(
+java.lang.Object)
+
+public org.bouncycastle.asn1.DEREncodable getBagAttribute(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+public java.util.Enumeration getBagAttributeKeys()
+
+public int getBasicConstraints()
+
+public java.util.Set getCriticalExtensionOIDs()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateEncodingException; )
+public byte[] getEncoded()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateParsingException; )
+public java.util.List getExtendedKeyUsage()
+
+public byte[] getExtensionValue(
+java.lang.String)
+
+public java.security.Principal getIssuerDN()
+
+public boolean[] getIssuerUniqueID()
+
+public javax.security.auth.x500.X500Principal getIssuerX500Principal()
+
+public boolean[] getKeyUsage()
+
+public java.util.Set getNonCriticalExtensionOIDs()
+
+public java.util.Date getNotAfter()
+
+public java.util.Date getNotBefore()
+
+public java.security.PublicKey getPublicKey()
+
+public java.math.BigInteger getSerialNumber()
+
+public java.lang.String getSigAlgName()
+
+public java.lang.String getSigAlgOID()
+
+public byte[] getSigAlgParams()
+
+public byte[] getSignature()
+
+public java.security.Principal getSubjectDN()
+
+public boolean[] getSubjectUniqueID()
+
+public javax.security.auth.x500.X500Principal getSubjectX500Principal()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateEncodingException; )
+public byte[] getTBSCertificate()
+
+public int getVersion()
+
+public boolean hasUnsupportedCriticalExtension()
+
+public int hashCode()
+
+public void setBagAttribute(
+org.bouncycastle.asn1.DERObjectIdentifier
+org.bouncycastle.asn1.DEREncodable)
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public final void verify(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public final void verify(
+java.security.PublicKey
+java.lang.String)
+
+________________CLASS________________
+
+
+ class org.bouncycastle.jce.provider.X509SignatureUtil extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final org.bouncycastle.asn1.ASN1Null derNull
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+private static java.lang.String getDigestAlgName(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+static java.lang.String getSignatureName(
+org.bouncycastle.asn1.x509.AlgorithmIdentifier)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchAlgorithmException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+static void setSignatureParameters(
+java.security.Signature
+org.bouncycastle.asn1.DEREncodable)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.spec.IEKeySpec extends java.lang.Object implements java.security.spec.KeySpec, org.bouncycastle.jce.interfaces.IESKey
+
+----------------FIELDS----------------
+
+private java.security.PrivateKey privKey
+
+private java.security.PublicKey pubKey
+----------------METHODS----------------
+
+public void <init>(
+java.security.PrivateKey
+java.security.PublicKey)
+
+public java.lang.String getAlgorithm()
+
+public byte[] getEncoded()
+
+public java.lang.String getFormat()
+
+public java.security.PrivateKey getPrivate()
+
+public java.security.PublicKey getPublic()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.jce.spec.IESParameterSpec extends java.lang.Object implements java.security.spec.AlgorithmParameterSpec
+
+----------------FIELDS----------------
+
+private byte[] derivation
+
+private byte[] encoding
+
+private int macKeySize
+----------------METHODS----------------
+
+public void <init>(
+byte[]
+byte[]
+int)
+
+public byte[] getDerivationV()
+
+public byte[] getEncodingV()
+
+public int getMacKeySize()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.openssl.PEMWriter extends java.io.BufferedWriter
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.io.Writer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeEncoded(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private void writeHexEncoded(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeObject(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeObject(
+java.lang.Object
+java.lang.String
+char[]
+java.security.SecureRandom)
+
+________________CLASS________________
+
+
+public final class org.bouncycastle.util.Arrays extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+public static boolean areEqual(
+byte[]
+byte[])
+
+public static void fill(
+byte[]
+byte)
+
+public static void fill(
+long[]
+long)
+
+public static void fill(
+short[]
+short)
+
+________________CLASS________________
+
+
+public final class org.bouncycastle.util.BigIntegers extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static byte[] asUnsignedByteArray(
+java.math.BigInteger)
+
+________________CLASS________________
+
+
+public final class org.bouncycastle.util.Strings extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static java.lang.String fromUTF8ByteArray(
+byte[])
+
+public static java.lang.String toLowerCase(
+java.lang.String)
+
+public static byte[] toUTF8ByteArray(
+java.lang.String)
+
+public static java.lang.String toUpperCase(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.util.encoders.Base64 extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final org.bouncycastle.util.encoders.Encoder encoder
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static int decode(
+java.lang.String
+java.io.OutputStream)
+
+public static byte[] decode(
+java.lang.String)
+
+public static byte[] decode(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static int encode(
+byte[]
+int
+int
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static int encode(
+byte[]
+java.io.OutputStream)
+
+public static byte[] encode(
+byte[])
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.util.encoders.Encoder extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int decode(
+java.lang.String
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int decode(
+byte[]
+int
+int
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract int encode(
+byte[]
+int
+int
+java.io.OutputStream)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.util.encoders.Base64Encoder extends java.lang.Object implements org.bouncycastle.util.encoders.Encoder
+
+----------------FIELDS----------------
+
+protected final byte[] decodingTable
+
+protected final byte[] encodingTable
+
+protected byte padding
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int decodeLastBlock(
+java.io.OutputStream
+char
+char
+char
+char)
+
+private boolean ignore(
+char)
+
+private int nextI(
+java.lang.String
+int
+int)
+
+private int nextI(
+byte[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int decode(
+java.lang.String
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int decode(
+byte[]
+int
+int
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int encode(
+byte[]
+int
+int
+java.io.OutputStream)
+
+protected void initialiseDecodingTable()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.util.encoders.BufferedDecoder extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected byte[] buf
+
+protected int bufOff
+
+protected org.bouncycastle.util.encoders.Translator translator
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.util.encoders.Translator
+int)
+
+public int processByte(
+byte
+byte[]
+int)
+
+public int processBytes(
+byte[]
+int
+int
+byte[]
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.util.encoders.BufferedEncoder extends java.lang.Object
+
+----------------FIELDS----------------
+
+protected byte[] buf
+
+protected int bufOff
+
+protected org.bouncycastle.util.encoders.Translator translator
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.util.encoders.Translator
+int)
+
+public int processByte(
+byte
+byte[]
+int)
+
+public int processBytes(
+byte[]
+int
+int
+byte[]
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.util.encoders.Hex extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final org.bouncycastle.util.encoders.Encoder encoder
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static int decode(
+java.lang.String
+java.io.OutputStream)
+
+public static byte[] decode(
+java.lang.String)
+
+public static byte[] decode(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static int encode(
+byte[]
+int
+int
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static int encode(
+byte[]
+java.io.OutputStream)
+
+public static byte[] encode(
+byte[])
+
+public static byte[] encode(
+byte[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.util.encoders.HexEncoder extends java.lang.Object implements org.bouncycastle.util.encoders.Encoder
+
+----------------FIELDS----------------
+
+protected final byte[] decodingTable
+
+protected final byte[] encodingTable
+----------------METHODS----------------
+
+public void <init>()
+
+private boolean ignore(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int decode(
+java.lang.String
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int decode(
+byte[]
+int
+int
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public int encode(
+byte[]
+int
+int
+java.io.OutputStream)
+
+protected void initialiseDecodingTable()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.util.encoders.Translator extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int decode(
+byte[]
+int
+int
+byte[]
+int)
+
+public abstract int encode(
+byte[]
+int
+int
+byte[]
+int)
+
+public abstract int getDecodedBlockSize()
+
+public abstract int getEncodedBlockSize()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.util.encoders.HexTranslator extends java.lang.Object implements org.bouncycastle.util.encoders.Translator
+
+----------------FIELDS----------------
+
+private static final byte[] hexTable
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public int decode(
+byte[]
+int
+int
+byte[]
+int)
+
+public int encode(
+byte[]
+int
+int
+byte[]
+int)
+
+public int getDecodedBlockSize()
+
+public int getEncodedBlockSize()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.util.encoders.UrlBase64 extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final org.bouncycastle.util.encoders.Encoder encoder
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static int decode(
+java.lang.String
+java.io.OutputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static int decode(
+byte[]
+java.io.OutputStream)
+
+public static byte[] decode(
+java.lang.String)
+
+public static byte[] decode(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static int encode(
+byte[]
+java.io.OutputStream)
+
+public static byte[] encode(
+byte[])
+
+________________CLASS________________
+
+
+public class org.bouncycastle.util.encoders.UrlBase64Encoder extends org.bouncycastle.util.encoders.Base64Encoder
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.x509.AttributeCertificateHolder extends java.lang.Object implements java.security.cert.CertSelector
+
+----------------FIELDS----------------
+
+final org.bouncycastle.asn1.x509.Holder holder
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateParsingException; )
+public void <init>(
+java.security.cert.X509Certificate)
+
+public void <init>(
+javax.security.auth.x500.X500Principal)
+
+public void <init>(
+javax.security.auth.x500.X500Principal
+java.math.BigInteger)
+
+ void <init>(
+org.bouncycastle.asn1.ASN1Sequence)
+
+public void <init>(
+org.bouncycastle.jce.X509Principal)
+
+public void <init>(
+org.bouncycastle.jce.X509Principal
+java.math.BigInteger)
+
+private org.bouncycastle.asn1.x509.GeneralNames generateGeneralNames(
+org.bouncycastle.jce.X509Principal)
+
+private java.lang.Object[] getNames(
+org.bouncycastle.asn1.x509.GeneralName[])
+
+private java.security.Principal[] getPrincipals(
+org.bouncycastle.asn1.x509.GeneralNames)
+
+private boolean matchesDN(
+org.bouncycastle.jce.X509Principal
+org.bouncycastle.asn1.x509.GeneralNames)
+
+public java.lang.Object clone()
+
+public java.security.Principal[] getEntityNames()
+
+public java.security.Principal[] getIssuer()
+
+public java.math.BigInteger getSerialNumber()
+
+public boolean match(
+java.security.cert.Certificate)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.x509.AttributeCertificateIssuer extends java.lang.Object implements java.security.cert.CertSelector
+
+----------------FIELDS----------------
+
+final org.bouncycastle.asn1.ASN1Encodable form
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+javax.security.auth.x500.X500Principal)
+
+ void <init>(
+org.bouncycastle.asn1.x509.AttCertIssuer)
+
+public void <init>(
+org.bouncycastle.jce.X509Principal)
+
+private java.lang.Object[] getNames()
+
+private boolean matchesDN(
+javax.security.auth.x500.X500Principal
+org.bouncycastle.asn1.x509.GeneralNames)
+
+public java.lang.Object clone()
+
+public java.security.Principal[] getPrincipals()
+
+public boolean match(
+java.security.cert.Certificate)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.x509.CertPathReviewerException extends org.bouncycastle.i18n.LocalizedException
+
+----------------FIELDS----------------
+
+private java.security.cert.CertPath certPath
+
+private int index
+----------------METHODS----------------
+
+public void <init>(
+org.bouncycastle.i18n.ErrorBundle)
+
+public void <init>(
+org.bouncycastle.i18n.ErrorBundle
+java.lang.Throwable)
+
+public void <init>(
+org.bouncycastle.i18n.ErrorBundle
+java.lang.Throwable
+java.security.cert.CertPath
+int)
+
+public void <init>(
+org.bouncycastle.i18n.ErrorBundle
+java.security.cert.CertPath
+int)
+
+public java.security.cert.CertPath getCertPath()
+
+public int getIndex()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.x509.PKIXCertPathReviewer extends org.bouncycastle.jce.provider.CertPathValidatorUtilities
+
+----------------FIELDS----------------
+
+private static final java.lang.String AUTH_INFO_ACCESS
+
+private static final java.lang.String CRL_DIST_POINTS
+
+private static final java.lang.String QC_STATEMENT
+
+private static final java.lang.String RESOURCE_NAME
+
+protected java.security.cert.CertPath certPath
+
+protected java.util.List certs
+
+protected java.util.List[] errors
+
+protected int n
+
+protected java.util.List[] notifications
+
+protected java.security.cert.PKIXParameters pkixParams
+
+protected java.security.cert.PolicyNode policyTree
+
+protected java.security.PublicKey subjectPublicKey
+
+protected java.security.cert.TrustAnchor trustAnchor
+
+protected java.util.Date validDate
+----------------METHODS----------------
+
+static void <clinit>()
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/x509/CertPathReviewerException; )
+public void <init>(
+java.security.cert.CertPath
+java.security.cert.PKIXParameters)
+
+private java.lang.String IPtoString(
+byte[])
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/x509/CertPathReviewerException; )
+private void checkCRLs(
+java.security.cert.PKIXParameters
+java.security.cert.X509Certificate
+java.util.Date
+java.security.cert.X509Certificate
+java.security.PublicKey
+java.util.Vector
+int)
+
+private void checkCriticalExtensions()
+
+private void checkNameConstraints()
+
+private void checkPathLength()
+
+private void checkPolicy()
+
+private void checkSignatures()
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/x509/CertPathReviewerException; )
+private java.security.cert.X509CRL getCRL(
+java.lang.String)
+
+private java.util.Vector getCRLDistUrls(
+org.bouncycastle.asn1.x509.CRLDistPoint
+org.bouncycastle.asn1.x509.AuthorityInformationAccess)
+
+private java.util.Vector getOCSPUrls(
+org.bouncycastle.asn1.x509.AuthorityInformationAccess)
+@dalvik.annotation.Throws (value =Lorg/bouncycastle/x509/CertPathReviewerException; )
+private java.util.Collection getTrustAnchors(
+java.security.cert.X509Certificate
+java.util.Set)
+
+private boolean processQcStatements(
+java.security.cert.X509Certificate
+int)
+
+protected void addError(
+org.bouncycastle.i18n.ErrorBundle)
+
+protected void addError(
+org.bouncycastle.i18n.ErrorBundle
+int)
+
+protected void addNotification(
+org.bouncycastle.i18n.ErrorBundle)
+
+protected void addNotification(
+org.bouncycastle.i18n.ErrorBundle
+int)
+
+protected void doChecks()
+
+public java.security.cert.CertPath getCertPath()
+
+public int getCertPathSize()
+
+public java.util.List getErrors(
+int)
+
+public java.util.List[] getErrors()
+
+public java.util.List getNotifications(
+int)
+
+public java.util.List[] getNotifications()
+
+public java.security.cert.PolicyNode getPolicyTree()
+
+public java.security.PublicKey getSubjectPublicKey()
+
+public java.security.cert.TrustAnchor getTrustAnchor()
+
+public boolean isValidCertPath()
+
+________________CLASS________________
+
+
+public class org.bouncycastle.x509.X509Attribute extends org.bouncycastle.asn1.ASN1Encodable
+
+----------------FIELDS----------------
+
+ org.bouncycastle.asn1.x509.Attribute attr
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String
+org.bouncycastle.asn1.ASN1Encodable)
+
+public void <init>(
+java.lang.String
+org.bouncycastle.asn1.ASN1EncodableVector)
+
+ void <init>(
+org.bouncycastle.asn1.ASN1Encodable)
+
+public java.lang.String getOID()
+
+public org.bouncycastle.asn1.ASN1Encodable[] getValues()
+
+public org.bouncycastle.asn1.DERObject toASN1Object()
+
+________________CLASS________________
+
+
+public abstract interface class org.bouncycastle.x509.X509AttributeCertificate extends java.lang.Object implements java.security.cert.X509Extension
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateExpiredException;Ljava/security/cert/CertificateNotYetValidException; )
+public abstract void checkValidity()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateExpiredException;Ljava/security/cert/CertificateNotYetValidException; )
+public abstract void checkValidity(
+java.util.Date)
+
+public abstract org.bouncycastle.x509.X509Attribute[] getAttributes()
+
+public abstract org.bouncycastle.x509.X509Attribute[] getAttributes(
+java.lang.String)
+
+public abstract java.util.Set getCriticalExtensionOIDs()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract byte[] getEncoded()
+
+public abstract org.bouncycastle.x509.AttributeCertificateHolder getHolder()
+
+public abstract org.bouncycastle.x509.AttributeCertificateIssuer getIssuer()
+
+public abstract boolean[] getIssuerUniqueID()
+
+public abstract java.util.Set getNonCriticalExtensionOIDs()
+
+public abstract java.util.Date getNotAfter()
+
+public abstract java.util.Date getNotBefore()
+
+public abstract java.math.BigInteger getSerialNumber()
+
+public abstract byte[] getSignature()
+
+public abstract int getVersion()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public abstract void verify(
+java.security.PublicKey
+java.lang.String)
+
+________________CLASS________________
+
+
+ class org.bouncycastle.x509.X509Util extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static java.util.Hashtable algorithms
+
+private static java.util.Set noParams
+----------------METHODS----------------
+
+static void <clinit>()
+
+ void <init>()
+
+static org.bouncycastle.jce.X509Principal convertPrincipal(
+javax.security.auth.x500.X500Principal)
+
+static java.util.Iterator getAlgNames()
+
+static org.bouncycastle.asn1.DERObjectIdentifier getAlgorithmOID(
+java.lang.String)
+
+static org.bouncycastle.asn1.x509.AlgorithmIdentifier getSigAlgID(
+org.bouncycastle.asn1.DERObjectIdentifier)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.x509.X509V1CertificateGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier sigAlgId
+
+private org.bouncycastle.asn1.DERObjectIdentifier sigOID
+
+private java.lang.String signatureAlgorithm
+
+private org.bouncycastle.asn1.x509.V1TBSCertificateGenerator tbsGen
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509Certificate generateX509Certificate(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchProviderException;Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509Certificate generateX509Certificate(
+java.security.PrivateKey
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchProviderException;Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509Certificate generateX509Certificate(
+java.security.PrivateKey
+java.lang.String
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509Certificate generateX509Certificate(
+java.security.PrivateKey
+java.security.SecureRandom)
+
+public java.util.Iterator getSignatureAlgNames()
+
+public void reset()
+
+public void setIssuerDN(
+javax.security.auth.x500.X500Principal)
+
+public void setIssuerDN(
+org.bouncycastle.asn1.x509.X509Name)
+
+public void setNotAfter(
+java.util.Date)
+
+public void setNotBefore(
+java.util.Date)
+
+public void setPublicKey(
+java.security.PublicKey)
+
+public void setSerialNumber(
+java.math.BigInteger)
+
+public void setSignatureAlgorithm(
+java.lang.String)
+
+public void setSubjectDN(
+javax.security.auth.x500.X500Principal)
+
+public void setSubjectDN(
+org.bouncycastle.asn1.x509.X509Name)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.x509.X509V2AttributeCertificate extends java.lang.Object implements org.bouncycastle.x509.X509AttributeCertificate
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.AttributeCertificate cert
+
+private java.util.Date notAfter
+
+private java.util.Date notBefore
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+java.io.InputStream)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void <init>(
+org.bouncycastle.asn1.x509.AttributeCertificate)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+
+private java.util.Set getExtensionOIDs(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateExpiredException;Ljava/security/cert/CertificateNotYetValidException; )
+public void checkValidity()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateExpiredException;Ljava/security/cert/CertificateNotYetValidException; )
+public void checkValidity(
+java.util.Date)
+
+public org.bouncycastle.x509.X509Attribute[] getAttributes()
+
+public org.bouncycastle.x509.X509Attribute[] getAttributes(
+java.lang.String)
+
+public java.util.Set getCriticalExtensionOIDs()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public byte[] getEncoded()
+
+public byte[] getExtensionValue(
+java.lang.String)
+
+public org.bouncycastle.x509.AttributeCertificateHolder getHolder()
+
+public org.bouncycastle.x509.AttributeCertificateIssuer getIssuer()
+
+public boolean[] getIssuerUniqueID()
+
+public java.util.Set getNonCriticalExtensionOIDs()
+
+public java.util.Date getNotAfter()
+
+public java.util.Date getNotBefore()
+
+public java.math.BigInteger getSerialNumber()
+
+public byte[] getSignature()
+
+public int getVersion()
+
+public boolean hasUnsupportedCriticalExtension()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateException;Ljava/security/NoSuchAlgorithmException;Ljava/security/InvalidKeyException;Ljava/security/NoSuchProviderException;Ljava/security/SignatureException; )
+public final void verify(
+java.security.PublicKey
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.x509.X509V2AttributeCertificateGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.V2AttributeCertificateInfoGenerator acInfoGen
+
+private java.util.Vector extOrdering
+
+private java.util.Hashtable extensions
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier sigAlgId
+
+private org.bouncycastle.asn1.DERObjectIdentifier sigOID
+
+private java.lang.String signatureAlgorithm
+----------------METHODS----------------
+
+public void <init>()
+
+public void addAttribute(
+org.bouncycastle.x509.X509Attribute)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void addExtension(
+java.lang.String
+boolean
+org.bouncycastle.asn1.ASN1Encodable)
+
+public void addExtension(
+java.lang.String
+boolean
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchProviderException;Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public org.bouncycastle.x509.X509AttributeCertificate generateCertificate(
+java.security.PrivateKey
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchProviderException;Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public org.bouncycastle.x509.X509AttributeCertificate generateCertificate(
+java.security.PrivateKey
+java.lang.String
+java.security.SecureRandom)
+
+public java.util.Iterator getSignatureAlgNames()
+
+public void reset()
+
+public void setHolder(
+org.bouncycastle.x509.AttributeCertificateHolder)
+
+public void setIssuer(
+org.bouncycastle.x509.AttributeCertificateIssuer)
+
+public void setIssuerUniqueId(
+boolean[])
+
+public void setNotAfter(
+java.util.Date)
+
+public void setNotBefore(
+java.util.Date)
+
+public void setSerialNumber(
+java.math.BigInteger)
+
+public void setSignatureAlgorithm(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.x509.X509V2CRLGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.text.SimpleDateFormat dateF
+
+private java.util.Vector extOrdering
+
+private java.util.Hashtable extensions
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier sigAlgId
+
+private org.bouncycastle.asn1.DERObjectIdentifier sigOID
+
+private java.lang.String signatureAlgorithm
+
+private org.bouncycastle.asn1.x509.V2TBSCertListGenerator tbsGen
+
+private java.util.SimpleTimeZone tz
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/security/cert/CRLException; )
+public void addCRL(
+java.security.cert.X509CRL)
+
+public void addCRLEntry(
+java.math.BigInteger
+java.util.Date
+int)
+
+public void addCRLEntry(
+java.math.BigInteger
+java.util.Date
+int
+java.util.Date)
+
+public void addCRLEntry(
+java.math.BigInteger
+java.util.Date
+org.bouncycastle.asn1.x509.X509Extensions)
+
+public void addExtension(
+java.lang.String
+boolean
+org.bouncycastle.asn1.DEREncodable)
+
+public void addExtension(
+java.lang.String
+boolean
+byte[])
+
+public void addExtension(
+org.bouncycastle.asn1.DERObjectIdentifier
+boolean
+org.bouncycastle.asn1.DEREncodable)
+
+public void addExtension(
+org.bouncycastle.asn1.DERObjectIdentifier
+boolean
+byte[])
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509CRL generateX509CRL(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchProviderException;Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509CRL generateX509CRL(
+java.security.PrivateKey
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchProviderException;Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509CRL generateX509CRL(
+java.security.PrivateKey
+java.lang.String
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509CRL generateX509CRL(
+java.security.PrivateKey
+java.security.SecureRandom)
+
+public java.util.Iterator getSignatureAlgNames()
+
+public void reset()
+
+public void setIssuerDN(
+javax.security.auth.x500.X500Principal)
+
+public void setIssuerDN(
+org.bouncycastle.asn1.x509.X509Name)
+
+public void setNextUpdate(
+java.util.Date)
+
+public void setSignatureAlgorithm(
+java.lang.String)
+
+public void setThisUpdate(
+java.util.Date)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.x509.X509V3CertificateGenerator extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.util.Vector extOrdering
+
+private java.util.Hashtable extensions
+
+private org.bouncycastle.asn1.x509.AlgorithmIdentifier sigAlgId
+
+private org.bouncycastle.asn1.DERObjectIdentifier sigOID
+
+private java.lang.String signatureAlgorithm
+
+private org.bouncycastle.asn1.x509.V3TBSCertificateGenerator tbsGen
+----------------METHODS----------------
+
+public void <init>()
+
+public void addExtension(
+java.lang.String
+boolean
+org.bouncycastle.asn1.DEREncodable)
+
+public void addExtension(
+java.lang.String
+boolean
+byte[])
+
+public void addExtension(
+org.bouncycastle.asn1.DERObjectIdentifier
+boolean
+org.bouncycastle.asn1.DEREncodable)
+
+public void addExtension(
+org.bouncycastle.asn1.DERObjectIdentifier
+boolean
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateParsingException; )
+public void copyAndAddExtension(
+java.lang.String
+boolean
+java.security.cert.X509Certificate)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateParsingException; )
+public void copyAndAddExtension(
+org.bouncycastle.asn1.DERObjectIdentifier
+boolean
+java.security.cert.X509Certificate)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509Certificate generateX509Certificate(
+java.security.PrivateKey)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchProviderException;Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509Certificate generateX509Certificate(
+java.security.PrivateKey
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/security/NoSuchProviderException;Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509Certificate generateX509Certificate(
+java.security.PrivateKey
+java.lang.String
+java.security.SecureRandom)
+@dalvik.annotation.Throws (value =Ljava/lang/SecurityException;Ljava/security/SignatureException;Ljava/security/InvalidKeyException; )
+public java.security.cert.X509Certificate generateX509Certificate(
+java.security.PrivateKey
+java.security.SecureRandom)
+
+public java.util.Iterator getSignatureAlgNames()
+
+public void reset()
+
+public void setIssuerDN(
+javax.security.auth.x500.X500Principal)
+
+public void setIssuerDN(
+org.bouncycastle.asn1.x509.X509Name)
+
+public void setNotAfter(
+java.util.Date)
+
+public void setNotBefore(
+java.util.Date)
+
+public void setPublicKey(
+java.security.PublicKey)
+
+public void setSerialNumber(
+java.math.BigInteger)
+
+public void setSignatureAlgorithm(
+java.lang.String)
+
+public void setSubjectDN(
+javax.security.auth.x500.X500Principal)
+
+public void setSubjectDN(
+org.bouncycastle.asn1.x509.X509Name)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.x509.extension.AuthorityKeyIdentifierStructure extends org.bouncycastle.asn1.x509.AuthorityKeyIdentifier
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+public void <init>(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateParsingException; )
+public void <init>(
+java.security.cert.X509Certificate)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateParsingException; )
+private static org.bouncycastle.asn1.ASN1Sequence fromCertificate(
+java.security.cert.X509Certificate)
+@dalvik.annotation.Throws (value =Ljava/security/InvalidKeyException; )
+private static org.bouncycastle.asn1.ASN1Sequence fromKey(
+java.security.PublicKey)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.x509.extension.SubjectKeyIdentifierStructure extends org.bouncycastle.asn1.x509.SubjectKeyIdentifier
+
+----------------FIELDS----------------
+
+private org.bouncycastle.asn1.x509.AuthorityKeyIdentifier authKeyID
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateParsingException; )
+public void <init>(
+java.security.PublicKey)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void <init>(
+byte[])
+@dalvik.annotation.Throws (value =Ljava/security/cert/CertificateParsingException; )
+private static org.bouncycastle.asn1.ASN1OctetString fromPublicKey(
+java.security.PublicKey)
+
+________________CLASS________________
+
+
+public class org.bouncycastle.x509.extension.X509ExtensionUtil extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static org.bouncycastle.asn1.ASN1Encodable fromExtensionValue(
+byte[])
+
+________________CLASS________________
+
+
+public class org.json.JSONArray extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.util.ArrayList myArrayList
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.util.Collection)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public void <init>(
+org.json.JSONTokener)
+
+public boolean equals(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public java.lang.Object get(
+int)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public boolean getBoolean(
+int)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public double getDouble(
+int)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public int getInt(
+int)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONArray getJSONArray(
+int)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONObject getJSONObject(
+int)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public long getLong(
+int)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public java.lang.String getString(
+int)
+
+public boolean isNull(
+int)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public java.lang.String join(
+java.lang.String)
+
+public int length()
+
+public java.lang.Object opt(
+int)
+
+public boolean optBoolean(
+int)
+
+public boolean optBoolean(
+int
+boolean)
+
+public double optDouble(
+int)
+
+public double optDouble(
+int
+double)
+
+public int optInt(
+int)
+
+public int optInt(
+int
+int)
+
+public org.json.JSONArray optJSONArray(
+int)
+
+public org.json.JSONObject optJSONObject(
+int)
+
+public long optLong(
+int)
+
+public long optLong(
+int
+long)
+
+public java.lang.String optString(
+int)
+
+public java.lang.String optString(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONArray put(
+double)
+
+public org.json.JSONArray put(
+int)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONArray put(
+int
+double)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONArray put(
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONArray put(
+int
+long)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONArray put(
+int
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONArray put(
+int
+boolean)
+
+public org.json.JSONArray put(
+long)
+
+public org.json.JSONArray put(
+java.lang.Object)
+
+public org.json.JSONArray put(
+boolean)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONObject toJSONObject(
+org.json.JSONArray)
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public java.lang.String toString(
+int)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+ java.lang.String toString(
+int
+int)
+
+________________CLASS________________
+
+
+public class org.json.JSONException extends java.lang.Exception
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/json/JSONObject; )
+@dalvik.annotation.InnerClass (accessFlags =4104 name =null )
+ class org.json.JSONObject$1 extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/json/JSONObject; )
+@dalvik.annotation.InnerClass (accessFlags =26 name =Null )
+final class org.json.JSONObject$Null extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+
+ void <init>(
+org.json.JSONObject$1)
+
+protected final java.lang.Object clone()
+
+public boolean equals(
+java.lang.Object)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/json/JSONObject$1;Lorg/json/JSONObject$Null; )
+public class org.json.JSONObject extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.Object NULL
+
+private java.util.HashMap myHashMap
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.util.Map)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public void <init>(
+org.json.JSONObject
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public void <init>(
+org.json.JSONTokener)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public static java.lang.String numberToString(
+java.lang.Number)
+
+public static java.lang.String quote(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+static void testValidity(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+static java.lang.String valueToString(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+static java.lang.String valueToString(
+java.lang.Object
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONObject accumulate(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public java.lang.Object get(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public boolean getBoolean(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public double getDouble(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public int getInt(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONArray getJSONArray(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONObject getJSONObject(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public long getLong(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public java.lang.String getString(
+java.lang.String)
+
+public boolean has(
+java.lang.String)
+
+public boolean isNull(
+java.lang.String)
+
+public java.util.Iterator keys()
+
+public int length()
+
+public org.json.JSONArray names()
+
+public java.lang.Object opt(
+java.lang.String)
+
+public boolean optBoolean(
+java.lang.String)
+
+public boolean optBoolean(
+java.lang.String
+boolean)
+
+public double optDouble(
+java.lang.String)
+
+public double optDouble(
+java.lang.String
+double)
+
+public int optInt(
+java.lang.String)
+
+public int optInt(
+java.lang.String
+int)
+
+public org.json.JSONArray optJSONArray(
+java.lang.String)
+
+public org.json.JSONObject optJSONObject(
+java.lang.String)
+
+public long optLong(
+java.lang.String)
+
+public long optLong(
+java.lang.String
+long)
+
+public java.lang.String optString(
+java.lang.String)
+
+public java.lang.String optString(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONObject put(
+java.lang.String
+double)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONObject put(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONObject put(
+java.lang.String
+long)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONObject put(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONObject put(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONObject putOpt(
+java.lang.String
+java.lang.Object)
+
+public java.lang.Object remove(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONArray toJSONArray(
+org.json.JSONArray)
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public java.lang.String toString(
+int)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+ java.lang.String toString(
+int
+int)
+
+________________CLASS________________
+
+
+public class org.json.JSONStringer extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final int maxdepth
+
+private boolean comma
+
+private char mode
+
+private java.lang.StringBuilder sb
+
+private char[] stack
+
+private int top
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+private org.json.JSONStringer append(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+private org.json.JSONStringer end(
+char
+char)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+private void pop(
+char)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+private void push(
+char)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONStringer array()
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONStringer endArray()
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONStringer endObject()
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONStringer key(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONStringer object()
+
+public java.lang.String toString()
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONStringer value(
+double)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONStringer value(
+long)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONStringer value(
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public org.json.JSONStringer value(
+boolean)
+
+________________CLASS________________
+
+
+public class org.json.JSONTokener extends java.lang.Object
+
+----------------FIELDS----------------
+
+private int myIndex
+
+private java.lang.String mySource
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public static int dehexchar(
+char)
+
+public void back()
+
+public boolean more()
+
+public char next()
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public char next(
+char)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public java.lang.String next(
+int)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public char nextClean()
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public java.lang.String nextString(
+char)
+
+public java.lang.String nextTo(
+char)
+
+public java.lang.String nextTo(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/json/JSONException; )
+public java.lang.Object nextValue()
+
+public void skipPast(
+java.lang.String)
+
+public char skipTo(
+char)
+
+public org.json.JSONException syntaxError(
+java.lang.String)
+
+public java.lang.String toString()
+
+________________CLASS________________
+
+
+public class org.kxml2.io.KXmlParser extends java.lang.Object implements org.xmlpull.v1.XmlPullParser
+
+----------------FIELDS----------------
+
+private static final java.lang.String ILLEGAL_TYPE
+
+private static final int LEGACY
+
+private static final java.lang.String UNEXPECTED_EOF
+
+private static final int XML_DECL
+
+private int attributeCount
+
+private java.lang.String[] attributes
+
+private int column
+
+private boolean degenerated
+
+private int depth
+
+private java.lang.String[] elementStack
+
+private java.lang.String encoding
+
+private java.util.HashMap entityMap
+
+private java.lang.String error
+
+private boolean isWhitespace
+
+private int line
+
+private java.lang.Object location
+
+private java.lang.String name
+
+private java.lang.String namespace
+
+private int[] nspCounts
+
+private java.lang.String[] nspStack
+
+private int[] peek
+
+private int peekCount
+
+private java.lang.String prefix
+
+private boolean processNsp
+
+private java.io.Reader reader
+
+private boolean relaxed
+
+private char[] srcBuf
+
+private int srcCount
+
+private int srcPos
+
+private int stackMismatch
+
+private java.lang.Boolean standalone
+
+private boolean token
+
+private char[] txtBuf
+
+private int txtPos
+
+private int type
+
+private boolean unresolved
+
+private java.lang.String version
+
+private boolean wasCR
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+private final boolean adjustNsp()
+
+private final java.lang.String[] ensureCapacity(
+java.lang.String[]
+int)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+private final void error(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+private final void exception(
+java.lang.String)
+
+private final java.lang.String get(
+int)
+
+private final boolean isProp(
+java.lang.String
+boolean
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+private final void nextImpl()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+private final void parseDoctype(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+private final void parseEndTag()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+private final int parseLegacy(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+private final void parseStartTag(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private final int peek(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private final int peekType()
+
+private final void push(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+private final void pushEntity()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+private final void pushText(
+int
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private final int read()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+private final void read(
+char)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+private final java.lang.String readName()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private final void skip()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void defineEntityReplacementText(
+java.lang.String
+java.lang.String)
+
+public int getAttributeCount()
+
+public java.lang.String getAttributeName(
+int)
+
+public java.lang.String getAttributeNamespace(
+int)
+
+public java.lang.String getAttributePrefix(
+int)
+
+public java.lang.String getAttributeType(
+int)
+
+public java.lang.String getAttributeValue(
+int)
+
+public java.lang.String getAttributeValue(
+java.lang.String
+java.lang.String)
+
+public int getColumnNumber()
+
+public int getDepth()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public int getEventType()
+
+public boolean getFeature(
+java.lang.String)
+
+public java.lang.String getInputEncoding()
+
+public int getLineNumber()
+
+public java.lang.String getName()
+
+public java.lang.String getNamespace()
+
+public java.lang.String getNamespace(
+java.lang.String)
+
+public int getNamespaceCount(
+int)
+
+public java.lang.String getNamespacePrefix(
+int)
+
+public java.lang.String getNamespaceUri(
+int)
+
+public java.lang.String getPositionDescription()
+
+public java.lang.String getPrefix()
+
+public java.lang.Object getProperty(
+java.lang.String)
+
+public java.lang.String getText()
+
+public char[] getTextCharacters(
+int[])
+
+public boolean isAttributeDefault(
+int)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public boolean isEmptyElementTag()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public boolean isWhitespace()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public int next()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public int nextTag()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public java.lang.String nextText()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public int nextToken()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void require(
+int
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void setFeature(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void setInput(
+java.io.InputStream
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void setInput(
+java.io.Reader)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void setProperty(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void skipSubTree()
+
+________________CLASS________________
+
+
+public abstract interface class org.xmlpull.v1.XmlSerializer extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract org.xmlpull.v1.XmlSerializer attribute(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract void cdsect(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract void comment(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract void docdecl(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract void endDocument()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract org.xmlpull.v1.XmlSerializer endTag(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract void entityRef(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public abstract void flush()
+
+public abstract int getDepth()
+
+public abstract boolean getFeature(
+java.lang.String)
+
+public abstract java.lang.String getName()
+
+public abstract java.lang.String getNamespace()
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException; )
+public abstract java.lang.String getPrefix(
+java.lang.String
+boolean)
+
+public abstract java.lang.Object getProperty(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract void ignorableWhitespace(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract void processingInstruction(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract void setFeature(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract void setOutput(
+java.io.OutputStream
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract void setOutput(
+java.io.Writer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract void setPrefix(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract void setProperty(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract void startDocument(
+java.lang.String
+java.lang.Boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract org.xmlpull.v1.XmlSerializer startTag(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract org.xmlpull.v1.XmlSerializer text(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Ljava/lang/IllegalArgumentException;Ljava/lang/IllegalStateException; )
+public abstract org.xmlpull.v1.XmlSerializer text(
+char[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.kxml2.io.KXmlSerializer extends java.lang.Object implements org.xmlpull.v1.XmlSerializer
+
+----------------FIELDS----------------
+
+private static final int WRITE_BUFFER_SIZE
+
+private int auto
+
+private int depth
+
+private java.lang.String[] elementStack
+
+private java.lang.String encoding
+
+private boolean[] indent
+
+private int[] nspCounts
+
+private java.lang.String[] nspStack
+
+private boolean pending
+
+private boolean unicode
+
+private java.io.BufferedWriter writer
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private final void check(
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private final java.lang.String getPrefix(
+java.lang.String
+boolean
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private final void writeEscaped(
+java.lang.String
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.xmlpull.v1.XmlSerializer attribute(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void cdsect(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void comment(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void docdecl(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void endDocument()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.xmlpull.v1.XmlSerializer endTag(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void entityRef(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void flush()
+
+public int getDepth()
+
+public boolean getFeature(
+java.lang.String)
+
+public java.lang.String getName()
+
+public java.lang.String getNamespace()
+
+public java.lang.String getPrefix(
+java.lang.String
+boolean)
+
+public java.lang.Object getProperty(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void ignorableWhitespace(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void processingInstruction(
+java.lang.String)
+
+public void setFeature(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setOutput(
+java.io.OutputStream
+java.lang.String)
+
+public void setOutput(
+java.io.Writer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setPrefix(
+java.lang.String
+java.lang.String)
+
+public void setProperty(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void startDocument(
+java.lang.String
+java.lang.Boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.xmlpull.v1.XmlSerializer startTag(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.xmlpull.v1.XmlSerializer text(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.xmlpull.v1.XmlSerializer text(
+char[]
+int
+int)
+
+________________CLASS________________
+
+
+public class org.kxml2.kdom.Node extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int CDSECT
+
+public static final int COMMENT
+
+public static final int DOCDECL
+
+public static final int DOCUMENT
+
+public static final int ELEMENT
+
+public static final int ENTITY_REF
+
+public static final int IGNORABLE_WHITESPACE
+
+public static final int PROCESSING_INSTRUCTION
+
+public static final int TEXT
+
+protected java.util.ArrayList children
+
+protected java.lang.StringBuffer types
+----------------METHODS----------------
+
+public void <init>()
+
+public void addChild(
+int
+int
+java.lang.Object)
+
+public void addChild(
+int
+java.lang.Object)
+
+public org.kxml2.kdom.Element createElement(
+java.lang.String
+java.lang.String)
+
+public java.lang.Object getChild(
+int)
+
+public int getChildCount()
+
+public org.kxml2.kdom.Element getElement(
+int)
+
+public org.kxml2.kdom.Element getElement(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getText(
+int)
+
+public int getType(
+int)
+
+public int indexOf(
+java.lang.String
+java.lang.String
+int)
+
+public boolean isText(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+public void parse(
+org.xmlpull.v1.XmlPullParser)
+
+public void removeChild(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+org.xmlpull.v1.XmlSerializer)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void writeChildren(
+org.xmlpull.v1.XmlSerializer)
+
+________________CLASS________________
+
+
+public class org.kxml2.kdom.Document extends org.kxml2.kdom.Node
+
+----------------FIELDS----------------
+
+ java.lang.String encoding
+
+protected int rootIndex
+
+ java.lang.Boolean standalone
+----------------METHODS----------------
+
+public void <init>()
+
+public void addChild(
+int
+int
+java.lang.Object)
+
+public java.lang.String getEncoding()
+
+public java.lang.String getName()
+
+public org.kxml2.kdom.Element getRootElement()
+
+public java.lang.Boolean getStandalone()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+public void parse(
+org.xmlpull.v1.XmlPullParser)
+
+public void removeChild(
+int)
+
+public void setEncoding(
+java.lang.String)
+
+public void setStandalone(
+java.lang.Boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+org.xmlpull.v1.XmlSerializer)
+
+________________CLASS________________
+
+
+public class org.kxml2.kdom.Element extends org.kxml2.kdom.Node
+
+----------------FIELDS----------------
+
+protected java.util.ArrayList attributes
+
+protected java.lang.String name
+
+protected java.lang.String namespace
+
+protected org.kxml2.kdom.Node parent
+
+protected java.util.ArrayList prefixes
+----------------METHODS----------------
+
+public void <init>()
+
+public void clear()
+
+public org.kxml2.kdom.Element createElement(
+java.lang.String
+java.lang.String)
+
+public int getAttributeCount()
+
+public java.lang.String getAttributeName(
+int)
+
+public java.lang.String getAttributeNamespace(
+int)
+
+public java.lang.String getAttributeValue(
+int)
+
+public java.lang.String getAttributeValue(
+java.lang.String)
+
+public java.lang.String getAttributeValue(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getName()
+
+public java.lang.String getNamespace()
+
+public int getNamespaceCount()
+
+public java.lang.String getNamespacePrefix(
+int)
+
+public java.lang.String getNamespaceUri(
+int)
+
+public java.lang.String getNamespaceUri(
+java.lang.String)
+
+public org.kxml2.kdom.Node getParent()
+
+public org.kxml2.kdom.Node getRoot()
+
+public void init()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+public void parse(
+org.xmlpull.v1.XmlPullParser)
+
+public void setAttribute(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public void setName(
+java.lang.String)
+
+public void setNamespace(
+java.lang.String)
+
+protected void setParent(
+org.kxml2.kdom.Node)
+
+public void setPrefix(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void write(
+org.xmlpull.v1.XmlSerializer)
+
+________________CLASS________________
+
+
+public abstract interface class org.kxml2.wap.Wbxml extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final int END
+
+public static final int ENTITY
+
+public static final int EXT_0
+
+public static final int EXT_1
+
+public static final int EXT_2
+
+public static final int EXT_I_0
+
+public static final int EXT_I_1
+
+public static final int EXT_I_2
+
+public static final int EXT_T_0
+
+public static final int EXT_T_1
+
+public static final int EXT_T_2
+
+public static final int LITERAL
+
+public static final int LITERAL_A
+
+public static final int LITERAL_AC
+
+public static final int LITERAL_C
+
+public static final int OPAQUE
+
+public static final int PI
+
+public static final int STR_I
+
+public static final int STR_T
+
+public static final int SWITCH_PAGE
+----------------METHODS----------------
+
+________________CLASS________________
+
+
+public class org.kxml2.wap.WbxmlParser extends java.lang.Object implements org.xmlpull.v1.XmlPullParser
+
+----------------FIELDS----------------
+
+private static final java.lang.String ILLEGAL_TYPE
+
+private static final java.lang.String UNEXPECTED_EOF
+
+public static final int WAP_EXTENSION
+
+private int ATTR_START_TABLE
+
+private int ATTR_VALUE_TABLE
+
+private int TAG_TABLE
+
+private java.lang.String[] attrStartTable
+
+private java.lang.String[] attrValueTable
+
+private int attributeCount
+
+private java.lang.String[] attributes
+
+private java.util.Hashtable cacheStringTable
+
+ int charSet
+
+private int codePage
+
+private boolean degenerated
+
+private int depth
+
+private java.lang.String[] elementStack
+
+private java.lang.String encoding
+
+private java.io.InputStream in
+
+private boolean isWhitespace
+
+private java.lang.String name
+
+private java.lang.String namespace
+
+private int nextId
+
+private int[] nspCounts
+
+private java.lang.String[] nspStack
+
+private java.lang.String prefix
+
+private boolean processNsp
+
+ int publicIdentifierId
+
+private byte[] stringTable
+
+private java.util.Vector tables
+
+private java.lang.String[] tagTable
+
+private java.lang.String text
+
+private int type
+
+ int version
+
+private int wapExtensionCode
+
+private java.lang.Object wapExtensionData
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+private final boolean adjustNsp()
+
+private final java.lang.String[] ensureCapacity(
+java.lang.String[]
+int)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+private final void exception(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+private final void nextImpl()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+private int peekId()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+private void selectPage(
+int
+boolean)
+
+private final void setTable(
+int
+int
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void defineEntityReplacementText(
+java.lang.String
+java.lang.String)
+
+public int getAttributeCount()
+
+public java.lang.String getAttributeName(
+int)
+
+public java.lang.String getAttributeNamespace(
+int)
+
+public java.lang.String getAttributePrefix(
+int)
+
+public java.lang.String getAttributeType(
+int)
+
+public java.lang.String getAttributeValue(
+int)
+
+public java.lang.String getAttributeValue(
+java.lang.String
+java.lang.String)
+
+public int getColumnNumber()
+
+public int getDepth()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public int getEventType()
+
+public boolean getFeature(
+java.lang.String)
+
+public java.lang.String getInputEncoding()
+
+public int getLineNumber()
+
+public java.lang.String getName()
+
+public java.lang.String getNamespace()
+
+public java.lang.String getNamespace(
+java.lang.String)
+
+public int getNamespaceCount(
+int)
+
+public java.lang.String getNamespacePrefix(
+int)
+
+public java.lang.String getNamespaceUri(
+int)
+
+public java.lang.String getPositionDescription()
+
+public java.lang.String getPrefix()
+
+public java.lang.Object getProperty(
+java.lang.String)
+
+public java.lang.String getText()
+
+public char[] getTextCharacters(
+int[])
+
+public boolean isAttributeDefault(
+int)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public boolean isEmptyElementTag()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public boolean isWhitespace()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public int next()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public int nextTag()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public java.lang.String nextText()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public int nextToken()
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+ void parseElement(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+public void parseWapExtension(
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xmlpull/v1/XmlPullParserException; )
+public void readAttr()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ int readByte()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ int readInt()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ java.lang.String readStrI()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ java.lang.String readStrT()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException;Ljava/io/IOException; )
+public void require(
+int
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ java.lang.String resolveId(
+java.lang.String[]
+int)
+
+public void setAttrStartTable(
+int
+java.lang.String[])
+
+public void setAttrValueTable(
+int
+java.lang.String[])
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void setFeature(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void setInput(
+java.io.InputStream
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void setInput(
+java.io.Reader)
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void setProperty(
+java.lang.String
+java.lang.Object)
+
+public void setTagTable(
+int
+java.lang.String[])
+
+________________CLASS________________
+
+
+public class org.kxml2.wap.WbxmlSerializer extends java.lang.Object implements org.xmlpull.v1.XmlSerializer
+
+----------------FIELDS----------------
+
+private int attrPage
+
+ java.util.Hashtable attrStartTable
+
+ java.util.Hashtable attrValueTable
+
+ java.util.Vector attributes
+
+ java.io.ByteArrayOutputStream buf
+
+ int depth
+
+private java.lang.String encoding
+
+ java.lang.String name
+
+ java.lang.String namespace
+
+ java.io.OutputStream out
+
+ java.lang.String pending
+
+ java.util.Hashtable stringTable
+
+ java.io.ByteArrayOutputStream stringTableBuf
+
+private int tagPage
+
+ java.util.Hashtable tagTable
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static void writeInt(
+java.io.OutputStream
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+static void writeStrI(
+java.io.OutputStream
+java.lang.String)
+
+public org.xmlpull.v1.XmlSerializer attribute(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void cdsect(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void checkPending(
+boolean)
+
+public void comment(
+java.lang.String)
+
+public void docdecl(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void endDocument()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.xmlpull.v1.XmlSerializer endTag(
+java.lang.String
+java.lang.String)
+
+public void entityRef(
+java.lang.String)
+
+public void flush()
+
+public int getDepth()
+
+public boolean getFeature(
+java.lang.String)
+
+public java.lang.String getName()
+
+public java.lang.String getNamespace()
+
+public java.lang.String getPrefix(
+java.lang.String
+boolean)
+
+public java.lang.Object getProperty(
+java.lang.String)
+
+public void ignorableWhitespace(
+java.lang.String)
+
+public void processingInstruction(
+java.lang.String)
+
+public void setAttrStartTable(
+int
+java.lang.String[])
+
+public void setAttrValueTable(
+int
+java.lang.String[])
+
+public void setFeature(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void setOutput(
+java.io.OutputStream
+java.lang.String)
+
+public void setOutput(
+java.io.Writer)
+
+public void setPrefix(
+java.lang.String
+java.lang.String)
+
+public void setProperty(
+java.lang.String
+java.lang.Object)
+
+public void setTagTable(
+int
+java.lang.String[])
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public void startDocument(
+java.lang.String
+java.lang.Boolean)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.xmlpull.v1.XmlSerializer startTag(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.xmlpull.v1.XmlSerializer text(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public org.xmlpull.v1.XmlSerializer text(
+char[]
+int
+int)
+
+public void writeLegacy(
+int
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+ void writeStrT(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract class org.kxml2.wap.syncml.SyncML extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String[] TAG_TABLE_0
+
+public static final java.lang.String[] TAG_TABLE_1
+
+public static final java.lang.String[] TAG_TABLE_2_DM
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static org.kxml2.wap.WbxmlParser createDMParser()
+
+public static org.kxml2.wap.WbxmlSerializer createDMSerializer()
+
+public static org.kxml2.wap.WbxmlParser createParser()
+
+public static org.kxml2.wap.WbxmlSerializer createSerializer()
+
+________________CLASS________________
+
+
+public abstract class org.kxml2.wap.wml.Wml extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String[] ATTR_START_TABLE
+
+public static final java.lang.String[] ATTR_VALUE_TABLE
+
+public static final java.lang.String[] TAG_TABLE
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+public static org.kxml2.wap.WbxmlParser createParser()
+
+public static org.kxml2.wap.WbxmlSerializer createSerializer()
+
+________________CLASS________________
+
+
+public abstract class org.kxml2.wap.wv.WV extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String[] attrStartTable
+
+public static final java.lang.String[] attrValueTable
+
+public static final java.lang.String[] tagTablePage0
+
+public static final java.lang.String[] tagTablePage1
+
+public static final java.lang.String[] tagTablePage2
+
+public static final java.lang.String[] tagTablePage3
+
+public static final java.lang.String[] tagTablePage4
+
+public static final java.lang.String[] tagTablePage5
+
+public static final java.lang.String[] tagTablePage6
+
+public static final java.lang.String[] tagTablePage7
+
+public static final java.lang.String[] tagTablePage8
+
+public static final java.lang.String[] tagTablePage9
+
+public static final java.lang.String[] tagTablePageA
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+@dalvik.annotation.Throws (value =Ljava/io/IOException; )
+public static org.kxml2.wap.WbxmlParser createParser()
+
+________________CLASS________________
+
+
+public class org.openssl.NativeBN extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public static native int BN_CTX_new()
+
+public static native boolean BN_add(
+int
+int
+int)
+
+public static native boolean BN_add_word(
+int
+int)
+
+public static native boolean BN_bin2bn(
+byte[]
+int
+boolean
+int)
+
+public static native byte[] BN_bn2bin(
+int
+byte[])
+
+public static native java.lang.String BN_bn2dec(
+int)
+
+public static native java.lang.String BN_bn2hex(
+int)
+
+public static native int BN_cmp(
+int
+int)
+
+public static native boolean BN_copy(
+int
+int)
+
+public static native int BN_dec2bn(
+int
+java.lang.String)
+
+public static native boolean BN_div(
+int
+int
+int
+int
+int)
+
+public static native int BN_div_word(
+int
+int)
+
+public static native boolean BN_exp(
+int
+int
+int
+int)
+
+public static native void BN_free(
+int)
+
+public static native boolean BN_gcd(
+int
+int
+int
+int)
+
+public static native boolean BN_generate_prime_ex(
+int
+int
+boolean
+int
+int
+int)
+
+public static native int BN_hex2bn(
+int
+java.lang.String)
+
+public static native boolean BN_is_bit_set(
+int
+int)
+
+public static native boolean BN_is_prime_ex(
+int
+int
+int
+int)
+
+public static native boolean BN_lshift(
+int
+int
+int)
+
+public static native boolean BN_mod_exp(
+int
+int
+int
+int
+int)
+
+public static native boolean BN_mod_inverse(
+int
+int
+int
+int)
+
+public static native int BN_mod_word(
+int
+int)
+
+public static native boolean BN_mul(
+int
+int
+int
+int)
+
+public static native boolean BN_mul_word(
+int
+int)
+
+public static native int BN_new()
+
+public static native boolean BN_nnmod(
+int
+int
+int
+int)
+
+public static native void BN_set_negative(
+int
+int)
+
+public static native boolean BN_sub(
+int
+int
+int)
+
+public static native boolean BN_sub_word(
+int
+int)
+
+public static native java.lang.String ERR_error_string(
+int)
+
+public static native int ERR_get_error()
+
+public static native int bitLength(
+int)
+
+public static native int[] bn2litEndInts(
+int
+int[])
+
+public static native byte[] bn2twosComp(
+int
+byte[])
+
+public static native boolean litEndInts2bn(
+int[]
+int
+boolean
+int)
+
+public static native long longInt(
+int)
+
+public static native boolean modifyBit(
+int
+int
+int)
+
+public static native boolean putLongInt(
+int
+long)
+
+public static native boolean putULongInt(
+int
+long
+boolean)
+
+public static native int sign(
+int)
+
+public static native boolean twosComp2bn(
+byte[]
+int
+int)
+
+public static native boolean twosCompFitsIntoBytes(
+int
+int)
+
+________________CLASS________________
+
+
+public class org.w3c.dom.DOMException extends java.lang.RuntimeException
+
+----------------FIELDS----------------
+
+public static final short DOMSTRING_SIZE_ERR
+
+public static final short HIERARCHY_REQUEST_ERR
+
+public static final short INDEX_SIZE_ERR
+
+public static final short INUSE_ATTRIBUTE_ERR
+
+public static final short INVALID_ACCESS_ERR
+
+public static final short INVALID_CHARACTER_ERR
+
+public static final short INVALID_MODIFICATION_ERR
+
+public static final short INVALID_STATE_ERR
+
+public static final short NAMESPACE_ERR
+
+public static final short NOT_FOUND_ERR
+
+public static final short NOT_SUPPORTED_ERR
+
+public static final short NO_DATA_ALLOWED_ERR
+
+public static final short NO_MODIFICATION_ALLOWED_ERR
+
+public static final short SYNTAX_ERR
+
+public static final short WRONG_DOCUMENT_ERR
+
+public short code
+----------------METHODS----------------
+
+public void <init>(
+short
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.xml.sax.AttributeList extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract int getLength()
+
+public abstract java.lang.String getName(
+int)
+
+public abstract java.lang.String getType(
+int)
+
+public abstract java.lang.String getType(
+java.lang.String)
+
+public abstract java.lang.String getValue(
+int)
+
+public abstract java.lang.String getValue(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.xml.sax.DTDHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void notationDecl(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void unparsedEntityDecl(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.xml.sax.DocumentHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void characters(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void endDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void endElement(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void ignorableWhitespace(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void processingInstruction(
+java.lang.String
+java.lang.String)
+
+public abstract void setDocumentLocator(
+org.xml.sax.Locator)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void startDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void startElement(
+java.lang.String
+org.xml.sax.AttributeList)
+
+________________CLASS________________
+
+
+public class org.xml.sax.HandlerBase extends java.lang.Object implements org.xml.sax.EntityResolver, org.xml.sax.DTDHandler, org.xml.sax.DocumentHandler, org.xml.sax.ErrorHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void characters(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endElement(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void error(
+org.xml.sax.SAXParseException)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void fatalError(
+org.xml.sax.SAXParseException)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void ignorableWhitespace(
+char[]
+int
+int)
+
+public void notationDecl(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void processingInstruction(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public org.xml.sax.InputSource resolveEntity(
+java.lang.String
+java.lang.String)
+
+public void setDocumentLocator(
+org.xml.sax.Locator)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startElement(
+java.lang.String
+org.xml.sax.AttributeList)
+
+public void unparsedEntityDecl(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void warning(
+org.xml.sax.SAXParseException)
+
+________________CLASS________________
+
+
+public class org.xml.sax.InputSource extends java.lang.Object
+
+----------------FIELDS----------------
+
+private java.io.InputStream byteStream
+
+private java.io.Reader characterStream
+
+private java.lang.String encoding
+
+private java.lang.String publicId
+
+private java.lang.String systemId
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.io.InputStream)
+
+public void <init>(
+java.io.Reader)
+
+public void <init>(
+java.lang.String)
+
+public java.io.InputStream getByteStream()
+
+public java.io.Reader getCharacterStream()
+
+public java.lang.String getEncoding()
+
+public java.lang.String getPublicId()
+
+public java.lang.String getSystemId()
+
+public void setByteStream(
+java.io.InputStream)
+
+public void setCharacterStream(
+java.io.Reader)
+
+public void setEncoding(
+java.lang.String)
+
+public void setPublicId(
+java.lang.String)
+
+public void setSystemId(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.xml.sax.Parser extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public abstract void parse(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public abstract void parse(
+org.xml.sax.InputSource)
+
+public abstract void setDTDHandler(
+org.xml.sax.DTDHandler)
+
+public abstract void setDocumentHandler(
+org.xml.sax.DocumentHandler)
+
+public abstract void setEntityResolver(
+org.xml.sax.EntityResolver)
+
+public abstract void setErrorHandler(
+org.xml.sax.ErrorHandler)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void setLocale(
+java.util.Locale)
+
+________________CLASS________________
+
+
+public class org.xml.sax.SAXNotRecognizedException extends org.xml.sax.SAXException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.xml.sax.SAXNotSupportedException extends org.xml.sax.SAXException
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.xml.sax.XMLFilter extends java.lang.Object implements org.xml.sax.XMLReader
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract org.xml.sax.XMLReader getParent()
+
+public abstract void setParent(
+org.xml.sax.XMLReader)
+
+________________CLASS________________
+
+
+public abstract interface class org.xml.sax.ext.Attributes2 extends java.lang.Object implements org.xml.sax.Attributes
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract boolean isDeclared(
+int)
+
+public abstract boolean isDeclared(
+java.lang.String)
+
+public abstract boolean isDeclared(
+java.lang.String
+java.lang.String)
+
+public abstract boolean isSpecified(
+int)
+
+public abstract boolean isSpecified(
+java.lang.String)
+
+public abstract boolean isSpecified(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.xml.sax.helpers.AttributesImpl extends java.lang.Object implements org.xml.sax.Attributes
+
+----------------FIELDS----------------
+
+ java.lang.String[] data
+
+ int length
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.xml.sax.Attributes)
+@dalvik.annotation.Throws (value =Ljava/lang/ArrayIndexOutOfBoundsException; )
+private void badIndex(
+int)
+
+private void ensureCapacity(
+int)
+
+public void addAttribute(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public void clear()
+
+public int getIndex(
+java.lang.String)
+
+public int getIndex(
+java.lang.String
+java.lang.String)
+
+public int getLength()
+
+public java.lang.String getLocalName(
+int)
+
+public java.lang.String getQName(
+int)
+
+public java.lang.String getType(
+int)
+
+public java.lang.String getType(
+java.lang.String)
+
+public java.lang.String getType(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getURI(
+int)
+
+public java.lang.String getValue(
+int)
+
+public java.lang.String getValue(
+java.lang.String)
+
+public java.lang.String getValue(
+java.lang.String
+java.lang.String)
+
+public void removeAttribute(
+int)
+
+public void setAttribute(
+int
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public void setAttributes(
+org.xml.sax.Attributes)
+
+public void setLocalName(
+int
+java.lang.String)
+
+public void setQName(
+int
+java.lang.String)
+
+public void setType(
+int
+java.lang.String)
+
+public void setURI(
+int
+java.lang.String)
+
+public void setValue(
+int
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.xml.sax.ext.Attributes2Impl extends org.xml.sax.helpers.AttributesImpl implements org.xml.sax.ext.Attributes2
+
+----------------FIELDS----------------
+
+private boolean[] declared
+
+private boolean[] specified
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.xml.sax.Attributes)
+
+public void addAttribute(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public boolean isDeclared(
+int)
+
+public boolean isDeclared(
+java.lang.String)
+
+public boolean isDeclared(
+java.lang.String
+java.lang.String)
+
+public boolean isSpecified(
+int)
+
+public boolean isSpecified(
+java.lang.String)
+
+public boolean isSpecified(
+java.lang.String
+java.lang.String)
+
+public void removeAttribute(
+int)
+
+public void setAttributes(
+org.xml.sax.Attributes)
+
+public void setDeclared(
+int
+boolean)
+
+public void setSpecified(
+int
+boolean)
+
+________________CLASS________________
+
+
+public abstract interface class org.xml.sax.ext.DeclHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void attributeDecl(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void elementDecl(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void externalEntityDecl(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void internalEntityDecl(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.xml.sax.helpers.DefaultHandler extends java.lang.Object implements org.xml.sax.EntityResolver, org.xml.sax.DTDHandler, org.xml.sax.ContentHandler, org.xml.sax.ErrorHandler
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void characters(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endElement(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endPrefixMapping(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void error(
+org.xml.sax.SAXParseException)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void fatalError(
+org.xml.sax.SAXParseException)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void ignorableWhitespace(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void notationDecl(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void processingInstruction(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+public org.xml.sax.InputSource resolveEntity(
+java.lang.String
+java.lang.String)
+
+public void setDocumentLocator(
+org.xml.sax.Locator)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void skippedEntity(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startElement(
+java.lang.String
+java.lang.String
+java.lang.String
+org.xml.sax.Attributes)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startPrefixMapping(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void unparsedEntityDecl(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void warning(
+org.xml.sax.SAXParseException)
+
+________________CLASS________________
+
+
+public abstract interface class org.xml.sax.ext.LexicalHandler extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void comment(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void endCDATA()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void endDTD()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void endEntity(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void startCDATA()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void startDTD(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public abstract void startEntity(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.xml.sax.ext.EntityResolver2 extends java.lang.Object implements org.xml.sax.EntityResolver
+
+----------------FIELDS----------------
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public abstract org.xml.sax.InputSource getExternalSubset(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public abstract org.xml.sax.InputSource resolveEntity(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.xml.sax.ext.DefaultHandler2 extends org.xml.sax.helpers.DefaultHandler implements org.xml.sax.ext.LexicalHandler, org.xml.sax.ext.DeclHandler, org.xml.sax.ext.EntityResolver2
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void attributeDecl(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void comment(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void elementDecl(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endCDATA()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endDTD()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endEntity(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void externalEntityDecl(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public org.xml.sax.InputSource getExternalSubset(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void internalEntityDecl(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public org.xml.sax.InputSource resolveEntity(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public org.xml.sax.InputSource resolveEntity(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startCDATA()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startDTD(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startEntity(
+java.lang.String)
+
+________________CLASS________________
+
+
+public abstract interface class org.xml.sax.ext.Locator2 extends java.lang.Object implements org.xml.sax.Locator
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+public abstract java.lang.String getEncoding()
+
+public abstract java.lang.String getXMLVersion()
+
+________________CLASS________________
+
+
+public class org.xml.sax.helpers.LocatorImpl extends java.lang.Object implements org.xml.sax.Locator
+
+----------------FIELDS----------------
+
+private int columnNumber
+
+private int lineNumber
+
+private java.lang.String publicId
+
+private java.lang.String systemId
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.xml.sax.Locator)
+
+public int getColumnNumber()
+
+public int getLineNumber()
+
+public java.lang.String getPublicId()
+
+public java.lang.String getSystemId()
+
+public void setColumnNumber(
+int)
+
+public void setLineNumber(
+int)
+
+public void setPublicId(
+java.lang.String)
+
+public void setSystemId(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.xml.sax.ext.Locator2Impl extends org.xml.sax.helpers.LocatorImpl implements org.xml.sax.ext.Locator2
+
+----------------FIELDS----------------
+
+private java.lang.String encoding
+
+private java.lang.String version
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.xml.sax.Locator)
+
+public java.lang.String getEncoding()
+
+public java.lang.String getXMLVersion()
+
+public void setEncoding(
+java.lang.String)
+
+public void setXMLVersion(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.xml.sax.helpers.AttributeListImpl extends java.lang.Object implements org.xml.sax.AttributeList
+
+----------------FIELDS----------------
+
+ java.util.Vector names
+
+ java.util.Vector types
+
+ java.util.Vector values
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.xml.sax.AttributeList)
+
+public void addAttribute(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public void clear()
+
+public int getLength()
+
+public java.lang.String getName(
+int)
+
+public java.lang.String getType(
+int)
+
+public java.lang.String getType(
+java.lang.String)
+
+public java.lang.String getValue(
+int)
+
+public java.lang.String getValue(
+java.lang.String)
+
+public void removeAttribute(
+java.lang.String)
+
+public void setAttributeList(
+org.xml.sax.AttributeList)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16 name =Context )
+@dalvik.annotation.EnclosingClass (value =Lorg/xml/sax/helpers/NamespaceSupport; )
+final class org.xml.sax.helpers.NamespaceSupport$Context extends java.lang.Object
+
+----------------FIELDS----------------
+
+ java.util.Hashtable attributeNameTable
+
+private boolean declSeen
+
+private java.util.Vector declarations
+
+ boolean declsOK
+
+ java.lang.String defaultNS
+
+ java.util.Hashtable elementNameTable
+
+private org.xml.sax.helpers.NamespaceSupport$Context parent
+
+ java.util.Hashtable prefixTable
+
+final org.xml.sax.helpers.NamespaceSupport this$0
+
+ java.util.Hashtable uriTable
+----------------METHODS----------------
+
+ void <init>(
+org.xml.sax.helpers.NamespaceSupport)
+
+private void copyTables()
+
+ void clear()
+
+ void declarePrefix(
+java.lang.String
+java.lang.String)
+
+ java.util.Enumeration getDeclaredPrefixes()
+
+ java.lang.String getPrefix(
+java.lang.String)
+
+ java.util.Enumeration getPrefixes()
+
+ java.lang.String getURI(
+java.lang.String)
+
+ java.lang.String[] processName(
+java.lang.String
+boolean)
+
+ void setParent(
+org.xml.sax.helpers.NamespaceSupport$Context)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/xml/sax/helpers/NamespaceSupport$Context; )
+public class org.xml.sax.helpers.NamespaceSupport extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.util.Enumeration EMPTY_ENUMERATION
+
+public static final java.lang.String NSDECL
+
+public static final java.lang.String XMLNS
+
+private int contextPos
+
+private org.xml.sax.helpers.NamespaceSupport$Context[] contexts
+
+private org.xml.sax.helpers.NamespaceSupport$Context currentContext
+
+private boolean namespaceDeclUris
+----------------METHODS----------------
+
+static void <clinit>()
+
+public void <init>()
+
+static boolean access$000(
+org.xml.sax.helpers.NamespaceSupport)
+
+static java.util.Enumeration access$100()
+
+public boolean declarePrefix(
+java.lang.String
+java.lang.String)
+
+public java.util.Enumeration getDeclaredPrefixes()
+
+public java.lang.String getPrefix(
+java.lang.String)
+
+public java.util.Enumeration getPrefixes()
+
+public java.util.Enumeration getPrefixes(
+java.lang.String)
+
+public java.lang.String getURI(
+java.lang.String)
+
+public boolean isNamespaceDeclUris()
+
+public void popContext()
+
+public java.lang.String[] processName(
+java.lang.String
+java.lang.String[]
+boolean)
+
+public void pushContext()
+
+public void reset()
+
+public void setNamespaceDeclUris(
+boolean)
+
+________________CLASS________________
+
+
+ class org.xml.sax.helpers.NewInstance extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+ void <init>()
+
+static java.lang.ClassLoader getClassLoader()
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException;Ljava/lang/IllegalAccessException;Ljava/lang/InstantiationException; )
+static java.lang.Object newInstance(
+java.lang.ClassLoader
+java.lang.String)
+
+________________CLASS________________
+
+@dalvik.annotation.EnclosingClass (value =Lorg/xml/sax/helpers/ParserAdapter; )
+@dalvik.annotation.InnerClass (accessFlags =16 name =AttributeListAdapter )
+final class org.xml.sax.helpers.ParserAdapter$AttributeListAdapter extends java.lang.Object implements org.xml.sax.Attributes
+
+----------------FIELDS----------------
+
+private org.xml.sax.AttributeList qAtts
+
+final org.xml.sax.helpers.ParserAdapter this$0
+----------------METHODS----------------
+
+ void <init>(
+org.xml.sax.helpers.ParserAdapter)
+
+public int getIndex(
+java.lang.String)
+
+public int getIndex(
+java.lang.String
+java.lang.String)
+
+public int getLength()
+
+public java.lang.String getLocalName(
+int)
+
+public java.lang.String getQName(
+int)
+
+public java.lang.String getType(
+int)
+
+public java.lang.String getType(
+java.lang.String)
+
+public java.lang.String getType(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getURI(
+int)
+
+public java.lang.String getValue(
+int)
+
+public java.lang.String getValue(
+java.lang.String)
+
+public java.lang.String getValue(
+java.lang.String
+java.lang.String)
+
+ void setAttributeList(
+org.xml.sax.AttributeList)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/xml/sax/helpers/ParserAdapter$AttributeListAdapter; )
+public class org.xml.sax.helpers.ParserAdapter extends java.lang.Object implements org.xml.sax.XMLReader, org.xml.sax.DocumentHandler
+
+----------------FIELDS----------------
+
+private static final java.lang.String FEATURES
+
+private static final java.lang.String NAMESPACES
+
+private static final java.lang.String NAMESPACE_PREFIXES
+
+private static final java.lang.String XMLNS_URIs
+
+private org.xml.sax.helpers.ParserAdapter$AttributeListAdapter attAdapter
+
+private org.xml.sax.helpers.AttributesImpl atts
+
+ org.xml.sax.ContentHandler contentHandler
+
+ org.xml.sax.DTDHandler dtdHandler
+
+ org.xml.sax.EntityResolver entityResolver
+
+ org.xml.sax.ErrorHandler errorHandler
+
+ org.xml.sax.Locator locator
+
+private java.lang.String[] nameParts
+
+private boolean namespaces
+
+private org.xml.sax.helpers.NamespaceSupport nsSupport
+
+private org.xml.sax.Parser parser
+
+private boolean parsing
+
+private boolean prefixes
+
+private boolean uris
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void <init>()
+
+public void <init>(
+org.xml.sax.Parser)
+
+static org.xml.sax.helpers.AttributesImpl access$000(
+org.xml.sax.helpers.ParserAdapter)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotSupportedException; )
+private void checkNotParsing(
+java.lang.String
+java.lang.String)
+
+private org.xml.sax.SAXParseException makeException(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+private java.lang.String[] processName(
+java.lang.String
+boolean
+boolean)
+
+private void setup(
+org.xml.sax.Parser)
+
+private void setupParser()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void characters(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endElement(
+java.lang.String)
+
+public org.xml.sax.ContentHandler getContentHandler()
+
+public org.xml.sax.DTDHandler getDTDHandler()
+
+public org.xml.sax.EntityResolver getEntityResolver()
+
+public org.xml.sax.ErrorHandler getErrorHandler()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public boolean getFeature(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public java.lang.Object getProperty(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void ignorableWhitespace(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+public void parse(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+public void parse(
+org.xml.sax.InputSource)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void processingInstruction(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+ void reportError(
+java.lang.String)
+
+public void setContentHandler(
+org.xml.sax.ContentHandler)
+
+public void setDTDHandler(
+org.xml.sax.DTDHandler)
+
+public void setDocumentLocator(
+org.xml.sax.Locator)
+
+public void setEntityResolver(
+org.xml.sax.EntityResolver)
+
+public void setErrorHandler(
+org.xml.sax.ErrorHandler)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public void setFeature(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public void setProperty(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startElement(
+java.lang.String
+org.xml.sax.AttributeList)
+
+________________CLASS________________
+
+
+public class org.xml.sax.helpers.ParserFactory extends java.lang.Object
+
+----------------FIELDS----------------
+----------------METHODS----------------
+
+private void <init>()
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException;Ljava/lang/IllegalAccessException;Ljava/lang/InstantiationException;Ljava/lang/NullPointerException;Ljava/lang/ClassCastException; )
+public static org.xml.sax.Parser makeParser()
+@dalvik.annotation.Throws (value =Ljava/lang/ClassNotFoundException;Ljava/lang/IllegalAccessException;Ljava/lang/InstantiationException;Ljava/lang/ClassCastException; )
+public static org.xml.sax.Parser makeParser(
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.xml.sax.helpers.XMLFilterImpl extends java.lang.Object implements org.xml.sax.XMLFilter, org.xml.sax.EntityResolver, org.xml.sax.DTDHandler, org.xml.sax.ContentHandler, org.xml.sax.ErrorHandler
+
+----------------FIELDS----------------
+
+private org.xml.sax.ContentHandler contentHandler
+
+private org.xml.sax.DTDHandler dtdHandler
+
+private org.xml.sax.EntityResolver entityResolver
+
+private org.xml.sax.ErrorHandler errorHandler
+
+private org.xml.sax.Locator locator
+
+private org.xml.sax.XMLReader parent
+----------------METHODS----------------
+
+public void <init>()
+
+public void <init>(
+org.xml.sax.XMLReader)
+
+private void setupParse()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void characters(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endElement(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endPrefixMapping(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void error(
+org.xml.sax.SAXParseException)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void fatalError(
+org.xml.sax.SAXParseException)
+
+public org.xml.sax.ContentHandler getContentHandler()
+
+public org.xml.sax.DTDHandler getDTDHandler()
+
+public org.xml.sax.EntityResolver getEntityResolver()
+
+public org.xml.sax.ErrorHandler getErrorHandler()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public boolean getFeature(
+java.lang.String)
+
+public org.xml.sax.XMLReader getParent()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public java.lang.Object getProperty(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void ignorableWhitespace(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void notationDecl(
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public void parse(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public void parse(
+org.xml.sax.InputSource)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void processingInstruction(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public org.xml.sax.InputSource resolveEntity(
+java.lang.String
+java.lang.String)
+
+public void setContentHandler(
+org.xml.sax.ContentHandler)
+
+public void setDTDHandler(
+org.xml.sax.DTDHandler)
+
+public void setDocumentLocator(
+org.xml.sax.Locator)
+
+public void setEntityResolver(
+org.xml.sax.EntityResolver)
+
+public void setErrorHandler(
+org.xml.sax.ErrorHandler)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public void setFeature(
+java.lang.String
+boolean)
+
+public void setParent(
+org.xml.sax.XMLReader)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public void setProperty(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void skippedEntity(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startElement(
+java.lang.String
+java.lang.String
+java.lang.String
+org.xml.sax.Attributes)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startPrefixMapping(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void unparsedEntityDecl(
+java.lang.String
+java.lang.String
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void warning(
+org.xml.sax.SAXParseException)
+
+________________CLASS________________
+
+@dalvik.annotation.InnerClass (accessFlags =16 name =AttributesAdapter )
+@dalvik.annotation.EnclosingClass (value =Lorg/xml/sax/helpers/XMLReaderAdapter; )
+final class org.xml.sax.helpers.XMLReaderAdapter$AttributesAdapter extends java.lang.Object implements org.xml.sax.AttributeList
+
+----------------FIELDS----------------
+
+private org.xml.sax.Attributes attributes
+
+final org.xml.sax.helpers.XMLReaderAdapter this$0
+----------------METHODS----------------
+
+ void <init>(
+org.xml.sax.helpers.XMLReaderAdapter)
+
+public int getLength()
+
+public java.lang.String getName(
+int)
+
+public java.lang.String getType(
+int)
+
+public java.lang.String getType(
+java.lang.String)
+
+public java.lang.String getValue(
+int)
+
+public java.lang.String getValue(
+java.lang.String)
+
+ void setAttributes(
+org.xml.sax.Attributes)
+
+________________CLASS________________
+
+@dalvik.annotation.MemberClasses (value =Lorg/xml/sax/helpers/XMLReaderAdapter$AttributesAdapter; )
+public class org.xml.sax.helpers.XMLReaderAdapter extends java.lang.Object implements org.xml.sax.Parser, org.xml.sax.ContentHandler
+
+----------------FIELDS----------------
+
+ org.xml.sax.DocumentHandler documentHandler
+
+ org.xml.sax.helpers.XMLReaderAdapter$AttributesAdapter qAtts
+
+ org.xml.sax.XMLReader xmlReader
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void <init>()
+
+public void <init>(
+org.xml.sax.XMLReader)
+
+private void setup(
+org.xml.sax.XMLReader)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+private void setupXMLReader()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void characters(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void endElement(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+public void endPrefixMapping(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void ignorableWhitespace(
+char[]
+int
+int)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+public void parse(
+java.lang.String)
+@dalvik.annotation.Throws (value =Ljava/io/IOException;Lorg/xml/sax/SAXException; )
+public void parse(
+org.xml.sax.InputSource)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void processingInstruction(
+java.lang.String
+java.lang.String)
+
+public void setDTDHandler(
+org.xml.sax.DTDHandler)
+
+public void setDocumentHandler(
+org.xml.sax.DocumentHandler)
+
+public void setDocumentLocator(
+org.xml.sax.Locator)
+
+public void setEntityResolver(
+org.xml.sax.EntityResolver)
+
+public void setErrorHandler(
+org.xml.sax.ErrorHandler)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void setLocale(
+java.util.Locale)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void skippedEntity(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startDocument()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public void startElement(
+java.lang.String
+java.lang.String
+java.lang.String
+org.xml.sax.Attributes)
+
+public void startPrefixMapping(
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class org.xml.sax.helpers.XMLReaderFactory extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final java.lang.String property
+----------------METHODS----------------
+
+private void <init>()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public static org.xml.sax.XMLReader createXMLReader()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+public static org.xml.sax.XMLReader createXMLReader(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+private static org.xml.sax.XMLReader loadClass(
+java.lang.ClassLoader
+java.lang.String)
+
+________________CLASS________________
+
+
+public class org.xmlpull.v1.XmlPullParserException extends java.lang.Exception
+
+----------------FIELDS----------------
+
+protected int column
+
+protected java.lang.Throwable detail
+
+protected int row
+----------------METHODS----------------
+
+public void <init>(
+java.lang.String)
+
+public void <init>(
+java.lang.String
+org.xmlpull.v1.XmlPullParser
+java.lang.Throwable)
+
+public int getColumnNumber()
+
+public java.lang.Throwable getDetail()
+
+public int getLineNumber()
+
+public void printStackTrace()
+
+________________CLASS________________
+
+
+public class org.xmlpull.v1.XmlPullParserFactory extends java.lang.Object
+
+----------------FIELDS----------------
+
+public static final java.lang.String PROPERTY_NAME
+
+private static final java.lang.String RESOURCE_NAME
+
+static final java.lang.Class referenceContextClass
+
+protected java.lang.String classNamesLocation
+
+protected java.util.HashMap features
+
+protected java.util.ArrayList parserClasses
+
+protected java.util.ArrayList serializerClasses
+----------------METHODS----------------
+
+static void <clinit>()
+
+protected void <init>()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public static org.xmlpull.v1.XmlPullParserFactory newInstance()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public static org.xmlpull.v1.XmlPullParserFactory newInstance(
+java.lang.String
+java.lang.Class)
+
+public boolean getFeature(
+java.lang.String)
+
+public boolean isNamespaceAware()
+
+public boolean isValidating()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public org.xmlpull.v1.XmlPullParser newPullParser()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public org.xmlpull.v1.XmlSerializer newSerializer()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void setFeature(
+java.lang.String
+boolean)
+
+public void setNamespaceAware(
+boolean)
+
+public void setValidating(
+boolean)
+
+________________CLASS________________
+
+
+public class org.xmlpull.v1.sax2.Driver extends java.lang.Object implements org.xml.sax.Locator, org.xml.sax.XMLReader, org.xml.sax.Attributes
+
+----------------FIELDS----------------
+
+protected static final java.lang.String APACHE_DYNAMIC_VALIDATION_FEATURE
+
+protected static final java.lang.String APACHE_SCHEMA_VALIDATION_FEATURE
+
+protected static final java.lang.String DECLARATION_HANDLER_PROPERTY
+
+protected static final java.lang.String LEXICAL_HANDLER_PROPERTY
+
+protected static final java.lang.String NAMESPACES_FEATURE
+
+protected static final java.lang.String NAMESPACE_PREFIXES_FEATURE
+
+protected static final java.lang.String VALIDATION_FEATURE
+
+protected org.xml.sax.ContentHandler contentHandler
+
+protected org.xml.sax.ErrorHandler errorHandler
+
+protected org.xmlpull.v1.XmlPullParser pp
+
+protected java.lang.String systemId
+----------------METHODS----------------
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void <init>()
+@dalvik.annotation.Throws (value =Lorg/xmlpull/v1/XmlPullParserException; )
+public void <init>(
+org.xmlpull.v1.XmlPullParser)
+
+public int getColumnNumber()
+
+public org.xml.sax.ContentHandler getContentHandler()
+
+public org.xml.sax.DTDHandler getDTDHandler()
+
+public org.xml.sax.EntityResolver getEntityResolver()
+
+public org.xml.sax.ErrorHandler getErrorHandler()
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public boolean getFeature(
+java.lang.String)
+
+public int getIndex(
+java.lang.String)
+
+public int getIndex(
+java.lang.String
+java.lang.String)
+
+public int getLength()
+
+public int getLineNumber()
+
+public java.lang.String getLocalName(
+int)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public java.lang.Object getProperty(
+java.lang.String)
+
+public java.lang.String getPublicId()
+
+public java.lang.String getQName(
+int)
+
+public java.lang.String getSystemId()
+
+public java.lang.String getType(
+int)
+
+public java.lang.String getType(
+java.lang.String)
+
+public java.lang.String getType(
+java.lang.String
+java.lang.String)
+
+public java.lang.String getURI(
+int)
+
+public java.lang.String getValue(
+int)
+
+public java.lang.String getValue(
+java.lang.String)
+
+public java.lang.String getValue(
+java.lang.String
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public void parse(
+java.lang.String)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public void parse(
+org.xml.sax.InputSource)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException;Ljava/io/IOException; )
+public void parseSubTree(
+org.xmlpull.v1.XmlPullParser)
+
+public void setContentHandler(
+org.xml.sax.ContentHandler)
+
+public void setDTDHandler(
+org.xml.sax.DTDHandler)
+
+public void setEntityResolver(
+org.xml.sax.EntityResolver)
+
+public void setErrorHandler(
+org.xml.sax.ErrorHandler)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public void setFeature(
+java.lang.String
+boolean)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXNotRecognizedException;Lorg/xml/sax/SAXNotSupportedException; )
+public void setProperty(
+java.lang.String
+java.lang.Object)
+@dalvik.annotation.Throws (value =Lorg/xml/sax/SAXException; )
+protected void startElement(
+java.lang.String
+java.lang.String
+java.lang.String)
+
+________________CLASS________________
+
+
+public final class sun.misc.Unsafe extends java.lang.Object
+
+----------------FIELDS----------------
+
+private static final sun.misc.Unsafe THE_ONE
+
+private final org.apache.harmony.kernel.vm.LangAccess lang
+----------------METHODS----------------
+
+static void <clinit>()
+
+private void <init>()
+
+private static native int arrayBaseOffset0(
+java.lang.Class)
+
+private static native int arrayIndexScale0(
+java.lang.Class)
+
+public static sun.misc.Unsafe getUnsafe()
+
+private static native long objectFieldOffset0(
+java.lang.reflect.Field)
+
+public int arrayBaseOffset(
+java.lang.Class)
+
+public int arrayIndexScale(
+java.lang.Class)
+
+public native boolean compareAndSwapInt(
+java.lang.Object
+long
+int
+int)
+
+public native boolean compareAndSwapLong(
+java.lang.Object
+long
+long
+long)
+
+public native boolean compareAndSwapObject(
+java.lang.Object
+long
+java.lang.Object
+java.lang.Object)
+
+public native int getInt(
+java.lang.Object
+long)
+
+public native int getIntVolatile(
+java.lang.Object
+long)
+
+public native long getLong(
+java.lang.Object
+long)
+
+public native long getLongVolatile(
+java.lang.Object
+long)
+
+public native java.lang.Object getObject(
+java.lang.Object
+long)
+
+public native java.lang.Object getObjectVolatile(
+java.lang.Object
+long)
+
+public long objectFieldOffset(
+java.lang.reflect.Field)
+
+public void park(
+boolean
+long)
+
+public native void putInt(
+java.lang.Object
+long
+int)
+
+public native void putIntVolatile(
+java.lang.Object
+long
+int)
+
+public native void putLong(
+java.lang.Object
+long
+long)
+
+public native void putLongVolatile(
+java.lang.Object
+long
+long)
+
+public native void putObject(
+java.lang.Object
+long
+java.lang.Object)
+
+public native void putObjectVolatile(
+java.lang.Object
+long
+java.lang.Object)
+
+public void unpark(
+java.lang.Object)
diff --git a/tools/dex-tools/src/dex/reader/DexAnnotationAttributeImpl.java b/tools/dex-tools/src/dex/reader/DexAnnotationAttributeImpl.java
new file mode 100644
index 0000000..deec93c
--- /dev/null
+++ b/tools/dex-tools/src/dex/reader/DexAnnotationAttributeImpl.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader;
+
+import dex.reader.DexFileReader.FieldIdItem;
+import dex.structure.DexAnnotation;
+import dex.structure.DexAnnotationAttribute;
+import dex.structure.DexEncodedValue;
+
+/* package */final class DexAnnotationAttributeImpl implements
+        DexAnnotationAttribute {
+    int nameIdx; // uleb128
+    DexEncodedValue value;// encoded_value
+    private String[] stringPool;
+    private DexBuffer buffer;
+    private final int[] typeIds;
+    private final FieldIdItem[] fieldIdItems;
+    private final DexAnnotation annotation;
+
+    public DexAnnotationAttributeImpl(DexBuffer buffer,
+            DexAnnotation annotation, int[] typeIds, String[] stringPool,
+            FieldIdItem[] fieldIdItems) {
+        this.buffer = buffer;
+        this.annotation = annotation;
+        this.typeIds = typeIds;
+        this.stringPool = stringPool;
+        this.fieldIdItems = fieldIdItems;
+        parseValue();
+    }
+
+    private void parseValue() {
+        nameIdx = buffer.readUleb128();
+        value = new DexEncodedValueImpl(buffer, annotation, typeIds,
+                stringPool, fieldIdItems);
+    }
+
+    public String getName() {
+        return stringPool[nameIdx];
+    }
+
+    public DexEncodedValue getEncodedValue() {
+        return value;
+    }
+
+    @Override
+    public String toString() {
+        return getName() + " " + getEncodedValue();
+    }
+
+    public DexAnnotation getAnnotation() {
+        return annotation;
+    }
+
+}
diff --git a/tools/dex-tools/src/dex/reader/DexAnnotationImpl.java b/tools/dex-tools/src/dex/reader/DexAnnotationImpl.java
new file mode 100644
index 0000000..49a93ae
--- /dev/null
+++ b/tools/dex-tools/src/dex/reader/DexAnnotationImpl.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader;
+
+import dex.reader.DexFileReader.FieldIdItem;
+import dex.structure.DexAnnotation;
+import dex.structure.DexAnnotationAttribute;
+
+import java.util.List;
+
+// FIXME provide special type for Signature annotation
+/* package */final class DexAnnotationImpl implements DexAnnotation {
+
+    private int offset;
+    private DexBuffer buffer;
+    private int[] typeIds;
+    private String[] stringPool;
+    private Visibility visibility;
+    private DexEncodedAnnotationImpl encodedAnnotation;
+
+    private TypeFormatter formatter = new TypeFormatter();
+    private final FieldIdItem[] fieldIdItems;
+
+    public DexAnnotationImpl(DexBuffer buffer, int offset, int[] typeIds,
+            String[] stringPool, FieldIdItem[] fieldIdItems) {
+        this.buffer = buffer;
+        this.offset = offset;
+        this.typeIds = typeIds;
+        this.stringPool = stringPool;
+        this.fieldIdItems = fieldIdItems;
+        parseAnnotations();
+    }
+
+    private void parseAnnotations() {
+        buffer.setPosition(offset);
+        visibility = Visibility.get(buffer.readUByte());
+        encodedAnnotation = new DexEncodedAnnotationImpl(buffer, this, typeIds,
+                stringPool, fieldIdItems);
+    }
+
+    public List<DexAnnotationAttribute> getAttributes() {
+        return encodedAnnotation.getValue();
+    }
+
+    public String getTypeName() {
+        return encodedAnnotation.getTypeName();
+    }
+
+    public Visibility getVisibility() {
+        return visibility;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("@");
+        builder.append(formatter.format(encodedAnnotation.getTypeName()));
+        if (!getAttributes().isEmpty()) {
+            builder.append(" (");
+            for (DexAnnotationAttribute value : getAttributes()) {
+                builder.append(value.toString());
+                builder.append(" ");
+            }
+            builder.append(")");
+        }
+        return builder.toString();
+    }
+
+}
diff --git a/tools/dex-tools/src/dex/reader/DexBuffer.java b/tools/dex-tools/src/dex/reader/DexBuffer.java
new file mode 100644
index 0000000..6292e28
--- /dev/null
+++ b/tools/dex-tools/src/dex/reader/DexBuffer.java
@@ -0,0 +1,182 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+
+public final class DexBuffer {
+
+    private ByteBuffer b;
+
+    public DexBuffer(String fileName) throws IOException {
+
+        // FIXME channel? allocate fix size?
+        FileInputStream fis = null;
+        try {
+            fis = new FileInputStream(fileName);
+
+            BufferedInputStream bis = new BufferedInputStream(fis);
+            ByteArrayOutputStream bos = new ByteArrayOutputStream();
+            byte[] buf = new byte[1024];
+            int len;
+            while ((len = bis.read(buf)) > 0) {
+                bos.write(buf, 0, len);
+            }
+            byte[] bytes = bos.toByteArray();
+            initialize(ByteBuffer.wrap(bytes));
+        } finally {
+            if (fis != null) {
+                fis.close();
+            }
+        }
+    }
+
+    public DexBuffer(byte[] bytes) {
+        initialize(ByteBuffer.wrap(bytes));
+    }
+
+    private DexBuffer(ByteBuffer slice) {
+        initialize(slice);
+    }
+
+    private void initialize(ByteBuffer buffer) {
+        b = buffer.asReadOnlyBuffer();
+        b.clear();
+        b.order(ByteOrder.LITTLE_ENDIAN);
+    }
+
+    public void setPosition(int offset) {
+        b.position(offset);
+    }
+
+    public void readBytes(byte[] dst) {
+        b.get(dst, 0, dst.length);
+    }
+
+    /**
+     * FIXME make endian dependent
+     */
+    public int readUleb128() {
+        int endValue = 0;
+        int value = 0;
+        int nr = 0;
+        do {
+            value = (b.get() & 0xFF);
+            endValue |= ((value & 0x7F) << 7 * nr);// cut away left most bit
+            nr++;
+        } while ((value & 0x80) != 0); // highest bit set?
+        return endValue;
+    }
+
+    /**
+     * pre 0 < nBytes <=4
+     */
+    public int readInt(int nBytes) {
+        int endValue = 0;
+        int tmp = 0;
+        for (int i = 0; i < nBytes; i++) {
+            tmp = b.get() & 0xFF;
+            endValue |= (tmp << i * 8);
+        }
+        return endValue;
+    }
+
+    /**
+     * pre 0 < nBytes <=1 FIXME: Sign extension
+     */
+    public short readShort(int nBytes) {
+        short endValue = 0;
+        int tmp = 0;
+        for (int i = 0; i < nBytes; i++) {
+            tmp = b.get() & 0xFF;
+            endValue |= (tmp << i * 8);
+        }
+        return endValue;
+    }
+
+    /**
+     * pre 0 < nBytes <=1
+     */
+    public char readChar(int nBytes) {
+        char endValue = 0;
+        int tmp = 0;
+        for (int i = 0; i < nBytes; i++) {
+            tmp = b.get() & 0xFF;
+            endValue |= (tmp << i * 8);
+        }
+        return endValue;
+    }
+
+    /**
+     * pre 0 < nBytes <=7 FIXME: Sign extension
+     */
+    public long readLong(int nBytes) {
+        long endValue = 0;
+        int tmp = 0;
+        for (int i = 0; i < nBytes; i++) {
+            tmp = b.get() & 0xFF;
+            endValue |= (tmp << i * 8);
+        }
+        return endValue;
+    }
+
+    /**
+     * pre 0 < nBytes <=4
+     */
+    public float readFloat(int nBytes) {
+        int bits = readInt(nBytes);
+        int bytesToMove = (4 - nBytes) * 8;
+        bits <<= bytesToMove;
+        return Float.intBitsToFloat(bits);
+    }
+
+    // returns int form current position
+    public int readUInt() {
+        int value = b.getInt();
+        // assert value >= 0;
+        return value;
+    }
+
+    public int readUShort() {
+        return b.getShort() & 0xFFFF;
+    }
+
+    // returns byte form current position
+    public byte readUByte() {
+        return b.get();
+    }
+
+    public DexBuffer createCopy() {
+        return new DexBuffer(b.duplicate());
+    }
+
+    public double readDouble(int nBytes) {
+        long bits = readLong(nBytes);
+        int bytesToMove = (8 - nBytes) * 8;
+        bits <<= bytesToMove;
+        return Double.longBitsToDouble(bits);
+    }
+
+    public void skip(int nBytes) {
+        b.position(b.position() + nBytes);
+    }
+}
diff --git a/tools/dex-tools/src/dex/reader/DexClassImpl.java b/tools/dex-tools/src/dex/reader/DexClassImpl.java
new file mode 100644
index 0000000..f15e809
--- /dev/null
+++ b/tools/dex-tools/src/dex/reader/DexClassImpl.java
@@ -0,0 +1,360 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader;
+
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import dex.reader.DexFileReader.ClassDefItem;
+import dex.reader.DexFileReader.FieldIdItem;
+import dex.reader.DexFileReader.MethodsIdItem;
+import dex.reader.DexFileReader.ProtIdItem;
+import dex.structure.DexAnnotation;
+import dex.structure.DexClass;
+import dex.structure.DexField;
+import dex.structure.DexMethod;
+
+/* package */final class DexClassImpl implements DexClass {
+    // constant
+    private final int NO_INDEX = -1;
+    // dex bytes
+    private final DexBuffer buffer;
+    // allready parsed
+    private final ClassDefItem classDefItem;
+    private final int[] typeIds;
+    private final String[] stringPool;
+    private ProtIdItem[] protoIdItems;
+    private FieldIdItem[] fieldIdItems;
+    private MethodsIdItem[] methodIdItems;
+
+    //
+    private List<DexField> fields;
+    private List<DexMethod> methods;
+    private List<String> interfaces;
+    private ClassDataItem classDataItem;
+    private AnnotationsDirectoryItem annotationDir;
+    private Map<Integer, FieldAnnotation> idToFieldAnnotation =
+            new HashMap<Integer, FieldAnnotation>();
+    private Map<Integer, MethodAnnotation> idToMethodAnnotation =
+            new HashMap<Integer, MethodAnnotation>();
+    private Map<Integer, ParameterAnnotation> idToParameterAnnotation =
+            new HashMap<Integer, ParameterAnnotation>();
+
+    private Set<DexAnnotation> annotations;
+    private TypeFormatter formatter = new TypeFormatter();
+
+    private boolean hasClassData;
+
+
+    public DexClassImpl(DexBuffer buffer, ClassDefItem classDefItem,
+            String[] stringPool, int[] typeIds, ProtIdItem[] protoIdItems,
+            FieldIdItem[] fieldIdItems, MethodsIdItem[] methodIdItems) {
+        this.buffer = buffer;
+        this.classDefItem = classDefItem;
+        this.stringPool = stringPool;
+        this.typeIds = typeIds;
+        this.protoIdItems = protoIdItems;
+        this.fieldIdItems = fieldIdItems;
+        this.methodIdItems = methodIdItems;
+        hasClassData = classDefItem.class_data_off != 0;
+        parseClassData();
+        parseAnnotationDirectory();
+        parseClassAnnotations();
+    }
+
+    static class AnnotationsDirectoryItem {
+        int class_annotations_off; // uint
+        int fields_size; // uint
+        int methods_size; // uint
+        int annotated_params_size; // uint
+        FieldAnnotation[] fieldAnnotations;
+        MethodAnnotation[] methodAnnotations;
+        ParameterAnnotation[] parameterAnnotations;
+    }
+
+    static class AnnotationSetItem {
+        int size;// uint
+        int[] annotationOffItem;
+    }
+
+    static class FieldAnnotation {
+        int fieldIdx;// uint
+        int annotationsOff;// uint
+        AnnotationSetItem[] annotationSetItems;
+    }
+
+    static class MethodAnnotation {
+        int methodIdx;// uint
+        int annotationsOff;// uint
+        AnnotationSetItem[] annotationSetItems;
+    }
+
+    static class ParameterAnnotation {
+        int methodIdx;// uint
+        int annotationsOff;// uint
+        // AnnotationSetRefListItem[] annotationSetRefListItems;
+    }
+
+    private void parseAnnotationDirectory() {
+        if (classDefItem.annotations_off != 0) {
+            buffer.setPosition(classDefItem.annotations_off);
+            annotationDir = new AnnotationsDirectoryItem();
+            annotationDir.class_annotations_off = buffer.readUInt();
+            annotationDir.fields_size = buffer.readUInt();
+            annotationDir.methods_size = buffer.readUInt();
+            annotationDir.annotated_params_size = buffer.readUInt();
+
+            if (annotationDir.fields_size != 0) {
+                annotationDir.fieldAnnotations =
+                        new FieldAnnotation[annotationDir.fields_size];
+                for (int i = 0; i < annotationDir.fields_size; i++) {
+                    annotationDir.fieldAnnotations[i] = new FieldAnnotation();
+                    annotationDir.fieldAnnotations[i].fieldIdx = buffer
+                            .readUInt();
+                    annotationDir.fieldAnnotations[i].annotationsOff = buffer
+                            .readUInt();
+                    idToFieldAnnotation.put(
+                            annotationDir.fieldAnnotations[i].fieldIdx,
+                            annotationDir.fieldAnnotations[i]);
+                }
+            }
+            if (annotationDir.methods_size != 0) {
+                annotationDir.methodAnnotations =
+                        new MethodAnnotation[annotationDir.methods_size];
+                for (int i = 0; i < annotationDir.methods_size; i++) {
+                    annotationDir.methodAnnotations[i] = new MethodAnnotation();
+                    annotationDir.methodAnnotations[i].methodIdx = buffer
+                            .readUInt();
+                    annotationDir.methodAnnotations[i].annotationsOff = buffer
+                            .readUInt();
+                    idToMethodAnnotation.put(
+                            annotationDir.methodAnnotations[i].methodIdx,
+                            annotationDir.methodAnnotations[i]);
+                }
+            }
+            if (annotationDir.annotated_params_size != 0) {
+                annotationDir.parameterAnnotations =
+                        new ParameterAnnotation[annotationDir
+                                .annotated_params_size];
+                for (int i = 0; i < annotationDir.annotated_params_size; i++) {
+                    annotationDir.parameterAnnotations[i] =
+                            new ParameterAnnotation();
+                    annotationDir.parameterAnnotations[i].methodIdx = buffer
+                            .readUInt();
+                    annotationDir.parameterAnnotations[i].annotationsOff =
+                            buffer.readUInt();
+                    idToParameterAnnotation.put(
+                            annotationDir.parameterAnnotations[i].methodIdx,
+                            annotationDir.parameterAnnotations[i]);
+                }
+            }
+        }
+    }
+
+    static class ClassDataItem {
+        int static_fields_size;// uleb128
+        int instance_fields_size;// uleb128
+        int direct_methods_size;// uleb128
+        int virtual_methods_size;// uleb128
+        EncodedField[] staticFields;
+        EncodedField[] instanceFields;
+        EncodedMethod[] directMethods;
+        EncodedMethod[] virtualMethods;
+    }
+
+    static class EncodedField {
+        int field_idx_diff; // uleb128
+        int access_flags; // uleb128
+    }
+
+    static class EncodedMethod {
+        int method_idx_diff;// uleb128
+        int access_flags;// uleb128
+        int code_off; // uleb128
+    }
+
+    private void parseClassData() {
+        if (hasClassData) {
+            buffer.setPosition(classDefItem.class_data_off);
+            classDataItem = new ClassDataItem();
+            classDataItem.static_fields_size = buffer.readUleb128();
+            classDataItem.instance_fields_size = buffer.readUleb128();
+            classDataItem.direct_methods_size = buffer.readUleb128();
+            classDataItem.virtual_methods_size = buffer.readUleb128();
+            classDataItem.staticFields = parseFields(
+                    classDataItem.static_fields_size);
+            classDataItem.instanceFields = parseFields(
+                    classDataItem.instance_fields_size);
+            classDataItem.directMethods = parseMethods(
+                    classDataItem.direct_methods_size);
+            classDataItem.virtualMethods = parseMethods(
+                    classDataItem.virtual_methods_size);
+        }
+    }
+
+    private EncodedField[] parseFields(int size) {
+        EncodedField[] fields = new EncodedField[size];
+        for (int i = 0; i < fields.length; i++) {
+            fields[i] = new EncodedField();
+            fields[i].field_idx_diff = buffer.readUleb128();
+            fields[i].access_flags = buffer.readUleb128();
+        }
+        return fields;
+    }
+
+    private EncodedMethod[] parseMethods(int size) {
+        EncodedMethod[] methods = new EncodedMethod[size];
+        for (int i = 0; i < methods.length; i++) {
+            methods[i] = new EncodedMethod();
+            methods[i].method_idx_diff = buffer.readUleb128();
+            methods[i].access_flags = buffer.readUleb128();
+            methods[i].code_off = buffer.readUleb128();
+        }
+        return methods;
+    }
+
+    private void parseClassAnnotations() {
+        annotations = new HashSet<DexAnnotation>();
+        if (annotationDir != null && annotationDir.class_annotations_off != 0) {
+            buffer.setPosition(annotationDir.class_annotations_off);
+            final int size = buffer.readUInt();
+            for (int i = 0; i < size; i++) {
+                annotations.add(new DexAnnotationImpl(buffer.createCopy(),
+                        buffer.readUInt(), typeIds, stringPool, fieldIdItems));
+            }
+        }
+    }
+
+    public synchronized List<DexField> getFields() {
+        if (fields == null) {
+            fields = new ArrayList<DexField>();
+            if (hasClassData) {
+                fields.addAll(getDexFields(classDataItem.staticFields));
+                fields.addAll(getDexFields(classDataItem.instanceFields));
+            }
+        }
+        return fields;
+    }
+
+    private List<DexField> getDexFields(EncodedField[] fields) {
+        List<DexField> dexFields = new ArrayList<DexField>(fields.length);
+        if (fields.length != 0) {
+            int fieldIdIdx = 0;
+            for (int i = 0; i < fields.length; i++) {
+                int accessFlags = fields[i].access_flags;
+                fieldIdIdx = (i == 0) ? fields[i].field_idx_diff : fieldIdIdx
+                        + fields[i].field_idx_diff;
+                dexFields.add(new DexFieldImpl(buffer.createCopy(), this,
+                        fieldIdItems[fieldIdIdx], accessFlags,
+                        idToFieldAnnotation.get(fieldIdIdx), stringPool,
+                        typeIds, fieldIdItems));
+            }
+        }
+        return dexFields;
+    }
+
+    public synchronized List<DexMethod> getMethods() {
+        if (methods == null) {
+            methods = new ArrayList<DexMethod>();
+            if (hasClassData) {
+                methods.addAll(getDexMethods(classDataItem.directMethods));
+                methods.addAll(getDexMethods(classDataItem.virtualMethods));
+            }
+        }
+        return methods;
+    }
+
+    private List<DexMethod> getDexMethods(EncodedMethod[] methods) {
+        List<DexMethod> dexMethods = new ArrayList<DexMethod>(methods.length);
+        if (methods.length != 0) {
+            int methodIdIdx = 0;
+            EncodedMethod method = null;
+            for (int i = 0; i < methods.length; i++) {
+                method = methods[i];
+                methodIdIdx = (i == 0) ? method.method_idx_diff : methodIdIdx
+                        + method.method_idx_diff;
+                dexMethods.add(new DexMethodImpl(buffer, this,
+                        methodIdItems[methodIdIdx],
+                        protoIdItems[methodIdItems[methodIdIdx].proto_idx],
+                        method.access_flags, idToMethodAnnotation
+                                .get(methodIdIdx), idToParameterAnnotation
+                                .get(methodIdIdx), stringPool, typeIds,
+                        fieldIdItems));
+            }
+        }
+        return dexMethods;
+    }
+
+
+
+    public synchronized List<String> getInterfaces() {
+        if (interfaces == null) {
+            interfaces = new LinkedList<String>();
+            if (classDefItem.interfaces_off != 0) {
+                buffer.setPosition(classDefItem.interfaces_off);
+                int size = buffer.readUInt();
+                for (int i = 0; i < size; i++) {
+                    interfaces.add(stringPool[typeIds[buffer.readUShort()]]);
+                }
+            }
+        }
+        return interfaces;
+    }
+
+    // returns null if no super class is present
+    public String getSuperClass() {
+        return classDefItem.superclass_idx == NO_INDEX ? null
+                : stringPool[typeIds[classDefItem.superclass_idx]];
+    }
+
+    public Set<DexAnnotation> getAnnotations() {
+        return annotations;
+    }
+
+    public String getName() {
+        return stringPool[typeIds[classDefItem.class_idx]];
+    }
+
+    public int getModifiers() {
+        return classDefItem.access_flags;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append(formatter.formatAnnotations(getAnnotations()));
+        builder.append(Modifier.toString(getModifiers()));
+        builder.append(" class ");
+        builder.append(formatter.format(getName()));
+        if (getSuperClass() != null) {
+            builder.append(" extends ");
+            builder.append(formatter.format(getSuperClass()));
+        }
+        if (!getInterfaces().isEmpty()) {
+            builder.append(" implements ");
+            builder.append(formatter.format(getInterfaces()));
+        }
+        return builder.toString();
+    }
+
+}
diff --git a/tools/dex-tools/src/dex/reader/DexEncodedAnnotationImpl.java b/tools/dex-tools/src/dex/reader/DexEncodedAnnotationImpl.java
new file mode 100644
index 0000000..0114ce3
--- /dev/null
+++ b/tools/dex-tools/src/dex/reader/DexEncodedAnnotationImpl.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader;
+
+import dex.reader.DexFileReader.FieldIdItem;
+import dex.structure.DexAnnotation;
+import dex.structure.DexAnnotationAttribute;
+import dex.structure.DexEncodedAnnotation;
+import dex.structure.DexEncodedValueType;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/* package */final class DexEncodedAnnotationImpl implements
+        DexEncodedAnnotation {
+
+    private List<DexAnnotationAttribute> values;
+    private final DexBuffer buffer;
+    private final int[] typeIds;
+    private final String[] stringPool;
+    private int typeIdx;
+    private final FieldIdItem[] fieldIdItems;
+    private final DexAnnotation annotation;
+
+    public DexEncodedAnnotationImpl(DexBuffer buffer, DexAnnotation annotation,
+            int[] typeIds, String[] stringPool, FieldIdItem[] fieldIdItems) {
+        this.buffer = buffer;
+        this.annotation = annotation;
+        this.typeIds = typeIds;
+        this.stringPool = stringPool;
+        this.fieldIdItems = fieldIdItems;
+        parseEncodedAnnotation();
+    }
+
+    private void parseEncodedAnnotation() {
+        typeIdx = buffer.readUleb128();
+        int size = buffer.readUleb128();
+        values = new ArrayList<DexAnnotationAttribute>(size);
+        for (int j = 0; j < size; j++) {
+            values.add(new DexAnnotationAttributeImpl(buffer, annotation,
+                    typeIds, stringPool, fieldIdItems));
+        }
+    }
+
+    public DexEncodedValueType getType() {
+        return DexEncodedValueType.VALUE_ANNOTATION;
+    }
+
+    public List<DexAnnotationAttribute> getValue() {
+        return values;
+    }
+
+    public String getTypeName() {
+        return stringPool[typeIds[typeIdx]];
+    }
+
+    @Override
+    public String toString() {
+        return getTypeName() + ":" + getValue();
+    }
+}
diff --git a/tools/dex-tools/src/dex/reader/DexEncodedValueImpl.java b/tools/dex-tools/src/dex/reader/DexEncodedValueImpl.java
new file mode 100644
index 0000000..82ba184
--- /dev/null
+++ b/tools/dex-tools/src/dex/reader/DexEncodedValueImpl.java
@@ -0,0 +1,298 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader;
+
+import static dex.structure.DexEncodedValueType.*;
+import dex.reader.DexFileReader.FieldIdItem;
+import dex.structure.DexAnnotation;
+import dex.structure.DexEncodedValue;
+import dex.structure.DexEncodedValueType;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/* package */final class DexEncodedValueImpl implements DexEncodedValue {
+
+    private final DexBuffer buffer;
+    private byte typeAndValueArg;
+    private DexEncodedValueType type;
+    private String[] stringPool;
+    private Object value;
+    private int[] typeIds;
+    private final FieldIdItem[] fieldIdItems;
+    private final DexAnnotation annotation;
+
+    /**
+     * 
+     * @param buffer
+     *            the buffer with the correct position
+     * @param annotation
+     * @param stringPool
+     * @param fieldIdItems
+     */
+    public DexEncodedValueImpl(DexBuffer buffer, DexAnnotation annotation,
+            int[] typeIds, String[] stringPool, FieldIdItem[] fieldIdItems) {
+        this.buffer = buffer;
+        this.annotation = annotation;
+        this.typeIds = typeIds;
+        this.stringPool = stringPool;
+        this.fieldIdItems = fieldIdItems;
+        parseValue();
+    }
+
+    private void parseValue() {
+        typeAndValueArg = buffer.readUByte();
+        type = DexEncodedValueType.get(typeAndValueArg);
+        int valueArg = DexEncodedValueType.valueArg(typeAndValueArg);
+        switch (type) {
+        case VALUE_BYTE:
+            value = getByteValue(valueArg);
+            break;
+        case VALUE_SHORT:
+            value = getShortValue(valueArg);
+            break;
+        case VALUE_CHAR:
+            value = getCharValue(valueArg);
+            break;
+        case VALUE_INT:
+            value = getIntValue(valueArg);
+            break;
+        case VALUE_LONG:
+            value = getLongValue(valueArg);
+            break;
+        case VALUE_FLOAT:
+            value = getFloatValue(valueArg);
+            break;
+        case VALUE_DOUBLE:
+            value = getDoubleValue(valueArg);
+            break;
+        case VALUE_STRING:
+            value = getStringValue(valueArg);
+            break;
+        case VALUE_TYPE:
+            value = getTypeValue(valueArg);
+            break;
+        case VALUE_FIELD:
+            value = getFieldValue(valueArg);
+            break;
+        case VALUE_METHOD:
+            value = getMethodValue(valueArg);
+            break;
+        case VALUE_ENUM:
+            value = getEnumValue(valueArg);
+            break;
+        case VALUE_ARRAY:
+            value = getArrayValue(valueArg);
+            break;
+        case VALUE_ANNOTATION:
+            value = getAnnotationValue(valueArg);
+            break;
+        case VALUE_NULL:
+            value = getNullValue(valueArg);
+            break;
+        case VALUE_BOOLEAN:
+            value = getBooleanValue(valueArg);
+            break;
+        default:
+            throw new IllegalArgumentException("DexEncodedValueType " + type
+                    + " not recognized");
+        }
+    }
+
+    /**
+     * VALUE_BOOLEAN 0x1f boolean (0...1) (none) one-bit value; 0 for false and
+     * 1 for true. The bit is represented in the value_arg.
+     */
+    private Boolean getBooleanValue(int valueArg) {
+        return valueArg == 1;
+    }
+
+    /** VALUE_NULL 0x1e (none; must be 0) (none) null reference value */
+    private Object getNullValue(int valueArg) {
+        return null; // must be like that!
+    }
+
+    /**
+     * VALUE_ANNOTATION 0x1d (none; must be 0) encoded_annotation a
+     * sub-annotation, in the format specified by "encoded_annotation Format"
+     * below. The size of the value is implicit in the encoding.
+     */
+    private Object getAnnotationValue(int valueArg) {
+        // use the buffer directly to get adjusted offset
+        return new DexEncodedAnnotationImpl(buffer, annotation, typeIds,
+                stringPool, fieldIdItems);
+    }
+
+    /**
+     * VALUE_ARRAY 0x1c (none; must be 0) encoded_array an array of values, in
+     * the format specified by "encoded_array Format" below. The size of the
+     * value is implicit in the encoding.
+     */
+    private List<DexEncodedValue> getArrayValue(int valueArg) {
+        int size = buffer.readUleb128();
+        List<DexEncodedValue> values = new ArrayList<DexEncodedValue>(size);
+        for (int i = 0; i < size; i++) {
+            values.add(new DexEncodedValueImpl(buffer, annotation, typeIds,
+                    stringPool, fieldIdItems));
+        }
+        return values;
+    }
+
+    /**
+     * VALUE_ENUM 0x1b size - 1 (0...3) ubyte[size] unsigned (zero-extended)
+     * four-byte integer value, interpreted as an index into the field_ids
+     * section and representing the value of an enumerated type constant
+     */
+    private Object getEnumValue(int valueArg) {
+        int fieldOffset = buffer.readInt(valueArg + 1);
+        FieldIdItem fieldIdItem = fieldIdItems[fieldOffset];
+        // FORMAT La/b/E;!CONSTANT
+        String constantName = stringPool[fieldIdItem.name_idx];
+        String typeName = stringPool[typeIds[fieldIdItem.type_idx]];
+        return typeName + "!" + constantName;
+    }
+
+    /**
+     * VALUE_METHOD 0x1a size - 1 (0...3) ubyte[size] unsigned (zero-extended)
+     * four-byte integer value, interpreted as an index into the method_ids
+     * section and representing a reflective method value
+     */
+    private Object getMethodValue(int valueArg) {
+        // FIXME lookup value
+        buffer.skip(valueArg + 1);
+        return null;
+    }
+
+    /**
+     * VALUE_FIELD 0x19 size - 1 (0...3) ubyte[size] unsigned (zero-extended)
+     * four-byte integer value, interpreted as an index into the field_ids
+     * section and representing a reflective field value
+     */
+    private Object getFieldValue(int valueArg) {
+        int fieldOffset = buffer.readInt(valueArg + 1);
+        FieldIdItem fieldIdItem = fieldIdItems[fieldOffset];
+        // FORMAT La/b/E;!CONSTANT
+        String fieldName = stringPool[fieldIdItem.name_idx];
+        String typeName = stringPool[typeIds[fieldIdItem.type_idx]];
+        return typeName + "!" + fieldName;
+    }
+
+    /**
+     * VALUE_TYPE 0x18 size - 1 (0...3) ubyte[size] unsigned (zero-extended)
+     * four-byte integer value, interpreted as an index into the type_ids
+     * section and representing a reflective type/class value
+     */
+    private Object getTypeValue(int valueArg) {
+        valueArg++; // size - 1 (0...3)
+        // FIXME SPEC!! states: unsigned (zero-extended) four-byte integer value
+        return stringPool[typeIds[buffer.readInt(valueArg)]];
+    }
+
+    /**
+     * VALUE_STRING 0x17 size - 1 (0...3) ubyte[size] unsigned (zero-extended)
+     * four-byte integer value, interpreted as an index into the string_ids
+     * section and representing a string value
+     */
+    private Object getStringValue(int valueArg) {
+        valueArg++;
+        return stringPool[buffer.readInt(valueArg)];
+    }
+
+    /**
+     * VALUE_DOUBLE 0x11 size - 1 (0...7) ubyte[size] eight-byte bit pattern,
+     * zero-extended to the right, and interpreted as an IEEE754 64-bit floating
+     * point value
+     */
+    private Object getDoubleValue(int valueArg) {
+        return buffer.readDouble(valueArg + 1);
+    }
+
+    /**
+     * VALUE_FLOAT 0x10 size - 1 (0...3) ubyte[size] four-byte bit pattern,
+     * zero-extended to the right, and interpreted as an IEEE754 32-bit floating
+     * point value
+     */
+    private Float getFloatValue(int valueArg) {
+        return buffer.readFloat(valueArg + 1);
+    }
+
+    /**
+     * VALUE_LONG 0x06 size - 1 (0...7) ubyte[size] signed eight-byte integer
+     * value, sign-extended
+     */
+    private Long getLongValue(int valueArg) {
+        return buffer.readLong(valueArg + 1);
+    }
+
+    /**
+     * VALUE_INT 0x04 size - 1 (0...3) ubyte[size] signed four-byte integer
+     * value, sign-extended
+     */
+    private Integer getIntValue(int valueArg) {
+        return buffer.readInt(valueArg + 1);
+    }
+
+    /**
+     * VALUE_CHAR 0x03 size - 1 (0...1) ubyte[size] unsigned two-byte integer
+     * value, zero-extended
+     */
+    private Character getCharValue(int valueArg) {
+        return buffer.readChar(valueArg + 1);
+    }
+
+    /**
+     * VALUE_SHORT 0x02 size - 1 (0...1) ubyte[size] signed two-byte integer
+     * value, sign-extended
+     */
+    private Short getShortValue(int valueArg) {
+        return buffer.readShort(valueArg + 1);
+    }
+
+    /**
+     * VALUE_BYTE 0x00 (none; must be 0) ubyte[1] signed one-byte integer value
+     */
+    private Byte getByteValue(int valueArg) {
+        assert valueArg == 0 : "Illegal valueArg for VALUE_BYTE: " + valueArg;
+        return null;
+    }
+
+    public DexEncodedValueType getType() {
+        return type;
+    }
+
+    public Object getValue() {
+        return value;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("=");
+        if (type == VALUE_ARRAY) {
+            if (getValue() instanceof List<?>) {
+                List<?> values = (List<?>) getValue();
+                for (Object object : values) {
+                    DexEncodedValue val = (DexEncodedValue) object;
+                    builder.append(val.getValue());
+                }
+            }
+        } else {
+            builder.append(getValue());
+        }
+        return builder.toString();
+    }
+}
diff --git a/tools/dex-tools/src/dex/reader/DexFieldImpl.java b/tools/dex-tools/src/dex/reader/DexFieldImpl.java
new file mode 100644
index 0000000..f4a8c72
--- /dev/null
+++ b/tools/dex-tools/src/dex/reader/DexFieldImpl.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader;
+
+import dex.reader.DexClassImpl.FieldAnnotation;
+import dex.reader.DexFileReader.FieldIdItem;
+import dex.structure.DexAnnotation;
+import dex.structure.DexClass;
+import dex.structure.DexField;
+
+import java.lang.reflect.Modifier;
+import java.util.HashSet;
+import java.util.Set;
+
+/* package */final class DexFieldImpl implements DexField {
+
+    private DexBuffer buffer;
+    private String[] stringPool;
+    private FieldIdItem fieldIdItem;
+    private int[] typeIds;
+    private final int accessFlags;
+    private Set<DexAnnotation> annotations;
+    private FieldAnnotation fieldAnnotation;
+    private TypeFormatter formatter = new TypeFormatter();
+    private final DexClass declaringClass;
+    private final FieldIdItem[] fieldIdItems;
+
+    public DexFieldImpl(DexBuffer buffer, DexClass declaringClass,
+            FieldIdItem fieldIdItem, int accessFlags,
+            FieldAnnotation fieldAnnotation, String[] stringPool,
+            int[] typeIds, FieldIdItem[] fieldIdItems) {
+        this.buffer = buffer;
+        this.declaringClass = declaringClass;
+        this.fieldIdItem = fieldIdItem;
+        this.accessFlags = accessFlags;
+        this.fieldAnnotation = fieldAnnotation;
+        this.stringPool = stringPool;
+        this.typeIds = typeIds;
+        this.fieldIdItems = fieldIdItems;
+        parseAnnotations();
+    }
+
+    private void parseAnnotations() {
+        annotations = new HashSet<DexAnnotation>();
+        if (fieldAnnotation != null) {
+            buffer.setPosition(fieldAnnotation.annotationsOff);
+            final int size = buffer.readUInt();
+            for (int i = 0; i < size; i++) {
+                annotations.add(new DexAnnotationImpl(buffer.createCopy(),
+                        buffer.readUInt(), typeIds, stringPool, fieldIdItems));
+            }
+        }
+    }
+
+    public String getName() {
+        return stringPool[fieldIdItem.name_idx];
+    }
+
+    public String getType() {
+        return stringPool[typeIds[fieldIdItem.type_idx]];
+    }
+
+    public int getModifiers() {
+        return accessFlags;
+    }
+
+    public synchronized Set<DexAnnotation> getAnnotations() {
+        return annotations;
+    }
+
+    public DexClass getDeclaringClass() {
+        return declaringClass;
+    }
+
+    public boolean isEnumConstant() {
+        return (getModifiers() & 0x4000) > 0;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append(formatter.formatAnnotations(getAnnotations()));
+        builder.append(Modifier.toString(getModifiers()));
+        builder.append(" ");
+        builder.append(formatter.format(getType()));
+        builder.append(" ");
+        builder.append(getName());
+        return builder.toString();
+    }
+}
diff --git a/tools/dex-tools/src/dex/reader/DexFileImpl.java b/tools/dex-tools/src/dex/reader/DexFileImpl.java
new file mode 100644
index 0000000..da066f1
--- /dev/null
+++ b/tools/dex-tools/src/dex/reader/DexFileImpl.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader;
+
+import dex.reader.DexFileReader.ClassDefItem;
+import dex.reader.DexFileReader.FieldIdItem;
+import dex.reader.DexFileReader.MethodsIdItem;
+import dex.reader.DexFileReader.ProtIdItem;
+import dex.structure.DexClass;
+import dex.structure.DexFile;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/* package */final class DexFileImpl implements DexFile {
+
+    private final String[] stringPool;
+    private final int[] typeIds;
+    private ProtIdItem[] protoIdItems;
+    private FieldIdItem[] fieldIdItems;
+    private MethodsIdItem[] methodIdItems;
+    private ClassDefItem[] classDefItems;
+    private final DexBuffer buffer;
+
+    private List<DexClass> classes = null;
+
+    public DexFileImpl(DexBuffer buffer, String[] stringPool, int[] typeIds,
+            ProtIdItem[] protoIds, FieldIdItem[] fieldIdItems,
+            MethodsIdItem[] methodIdItems, ClassDefItem[] classDefItems) {
+        this.buffer = buffer;
+        this.stringPool = stringPool;
+        this.typeIds = typeIds;
+        this.protoIdItems = protoIds;
+        this.fieldIdItems = fieldIdItems;
+        this.methodIdItems = methodIdItems;
+        this.classDefItems = classDefItems;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see dex.reader.DexFile#getDefinedClasses()
+     */
+    public synchronized List<DexClass> getDefinedClasses() {
+        if (classes == null) {
+            classes = new ArrayList<DexClass>(classDefItems.length);
+            for (int i = 0; i < classDefItems.length; i++) {
+                classes.add(new DexClassImpl(buffer.createCopy(),
+                        classDefItems[i], stringPool, typeIds, protoIdItems,
+                        fieldIdItems, methodIdItems));
+            }
+        }
+        return classes;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder();
+        b.append("StringPool:\n").append(Arrays.toString(stringPool));
+        b.append("\nTypes:\n");
+        for (int i = 0; i < typeIds.length; i++) {
+            b.append(stringPool[typeIds[i]] + "\n");
+        }
+        b.append("\nProtos:\n").append(Arrays.toString(protoIdItems));
+        b.append("\nFields:\n").append(Arrays.toString(fieldIdItems));
+        b.append("\nMethods:\n").append(Arrays.toString(methodIdItems));
+        b.append("\nClasses:\n").append(Arrays.toString(classDefItems));
+        return b.toString();
+    }
+
+    public String getName() {
+        return "DexFile";
+    }
+}
diff --git a/tools/dex-tools/src/dex/reader/DexFileReader.java b/tools/dex-tools/src/dex/reader/DexFileReader.java
new file mode 100644
index 0000000..1fd17f6
--- /dev/null
+++ b/tools/dex-tools/src/dex/reader/DexFileReader.java
@@ -0,0 +1,273 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader;
+
+import dex.structure.DexFile;
+
+import java.util.Arrays;
+
+public final class DexFileReader {
+
+    // DEX constants
+    private int ENDIAN_CONSTANT = 0x12345678;
+    @SuppressWarnings("unused")
+    private int REVERSE_ENDIAN_CONSTANT = 0x78563412;
+    private final byte[] REF_MAGIC = new byte[] {
+            0x64, 0x65, 0x78, 0x0a, 0x30, 0x33, 0x35, 0x00};
+
+    // Header values
+    private DexBuffer b;
+    private byte[] magic = new byte[8];
+    @SuppressWarnings("unused")
+    private int checksum = 0;
+    private byte[] signature = new byte[20];
+    @SuppressWarnings("unused")
+    private int fileSize = 0;
+    @SuppressWarnings("unused")
+    private int headerSize = 0;
+    private int endianTag = 0;
+
+    // Indices of offset and size items
+    private static final int LINK = 0;
+    private static final int MAP = 1; // no size!
+    private static final int STRING_IDS = 2;
+    private static final int TYPE_IDS = 3;
+    private static final int PROTO_IDS = 4;
+    private static final int FIELD_IDS = 5;
+    private static final int METHOD_IDS = 6;
+    private static final int CLASS_DEFS = 7;
+    private static final int DATA = 8;
+
+    private int[] size = new int[9];
+    private int[] off = new int[9];
+
+
+    //
+    private String[] stringPool;
+    private int[] typeIds; // values are index of stringPool
+    private ProtIdItem[] protoIdItems;
+    private FieldIdItem[] fieldIdItems;
+    private MethodsIdItem[] methodIdItems;
+    private ClassDefItem[] classDefItems;
+
+    // starting buffer at zero
+    public DexFile read(DexBuffer buffer) {
+        this.b = buffer;
+        readMagic();
+        readChecksum();
+        readSignature();
+        readFileSize();
+        readHeaderSize();
+        readEndianTag();
+        readSize(LINK);
+        readOffset(LINK);
+        readOffset(MAP);
+        readSize(STRING_IDS);
+        readOffset(STRING_IDS);
+        readSize(TYPE_IDS);
+        readOffset(TYPE_IDS);
+        readSize(PROTO_IDS);
+        readOffset(PROTO_IDS);
+        readSize(FIELD_IDS);
+        readOffset(FIELD_IDS);
+        readSize(METHOD_IDS);
+        readOffset(METHOD_IDS);
+        readSize(CLASS_DEFS);
+        readOffset(CLASS_DEFS);
+        readSize(DATA);
+        readOffset(DATA);
+        // from now on, index is not automatically on the desired position
+        readStrings();
+        readTypeIds();
+        readProtos();
+        readFields();
+        readMethods();
+        readClasses();
+
+        return new DexFileImpl(b.createCopy(), stringPool, typeIds,
+                protoIdItems, fieldIdItems, methodIdItems, classDefItems);
+    }
+
+    // MAGIC (8, U_BYTE)
+    // "dex\n035\0"
+    private void readMagic() {
+        b.readBytes(magic);
+        assert Arrays.equals(magic, REF_MAGIC) : "Not a DEX file";
+    }
+
+    // CHECKSUM (1, U_INT)
+    private void readChecksum() {
+        checksum = b.readUInt();
+    }
+
+    // SIGNATURE (20, U_BYTE)
+    private void readSignature() {
+        b.readBytes(signature);
+    }
+
+    // FILE_SIZE (1, U_INT)
+    private void readFileSize() {
+        fileSize = b.readUInt();
+    }
+
+    // HEADER_SIZE (1, U_INT), //0x70
+    private void readHeaderSize() {
+        headerSize = b.readUInt();
+    }
+
+    // ENDIAN_TAG (1, U_INT), //ENDIAN_CONSTANT
+    private void readEndianTag() {
+        endianTag = b.readUInt();
+        // FIXME Support for big endian encoded dex files
+        assert endianTag == ENDIAN_CONSTANT : "Byteorder NOT in little endian";
+    }
+
+    private void readSize(int attribute) {
+        size[attribute] = b.readUInt();
+    }
+
+    private void readOffset(int attribute) {
+        off[attribute] = b.readUInt();
+    }
+
+    // reads the string pool
+    private void readStrings() {
+        int nStrings = size[STRING_IDS];
+        b.setPosition(off[STRING_IDS]); // the first string offset is here
+        int[] stringDataOffsets = new int[nStrings];
+
+        for (int i = 0; i < stringDataOffsets.length; i++) {
+            stringDataOffsets[i] = b.readUInt();
+        }
+
+        stringPool = new String[nStrings];
+        for (int i = 0; i < stringDataOffsets.length; i++) {
+            b.setPosition(stringDataOffsets[i]); // set buffer to offset
+            // Position
+            int lenght = b.readUleb128(); // read uleb128
+            byte[] values = new byte[lenght];
+            b.readBytes(values);
+            stringPool[i] = new String(values);
+        }
+    }
+
+    private void readTypeIds() {
+        int nTypes = size[TYPE_IDS];
+        b.setPosition(off[TYPE_IDS]); // the first element is here
+        typeIds = new int[nTypes];
+
+        for (int i = 0; i < typeIds.length; i++) {
+            typeIds[i] = b.readUInt();
+        }
+    }
+
+    static class ProtIdItem {
+        public int shorty_idx;
+        public int return_type_idx;
+        public int parameter_off;
+    }
+
+    private void readProtos() {
+        int nProtos = size[PROTO_IDS];
+        b.setPosition(off[PROTO_IDS]);
+        protoIdItems = new ProtIdItem[nProtos];
+
+        ProtIdItem item = null;
+        for (int i = 0; i < protoIdItems.length; i++) {
+            item = new ProtIdItem();
+            item.shorty_idx = b.readUInt();
+            item.return_type_idx = b.readUInt();
+            item.parameter_off = b.readUInt();
+            protoIdItems[i] = item;
+        }
+    }
+
+    static class FieldIdItem {
+        public int class_idx; // defining class : index of type_ids
+        public int type_idx; // type of field : index of type_ids
+        public int name_idx; // name of field : index into string id (or
+        // directly stringpool)
+    }
+
+    private void readFields() {
+        int nFields = size[FIELD_IDS];
+        b.setPosition(off[FIELD_IDS]);
+        fieldIdItems = new FieldIdItem[nFields];
+
+        FieldIdItem item = null;
+        for (int i = 0; i < fieldIdItems.length; i++) {
+            item = new FieldIdItem();
+            item.class_idx = b.readUShort();
+            item.type_idx = b.readUShort();
+            item.name_idx = b.readUInt();
+            fieldIdItems[i] = item;
+        }
+    }
+
+    static class MethodsIdItem {
+        public int class_idx; // defining class : index of typeIds
+        public int proto_idx; // proto of method : index of protoIdItems
+        public int name_idx; // name of method : index into string id (or
+        // directly stringpool)
+    }
+
+    private void readMethods() {
+        int nMethods = size[METHOD_IDS];
+        b.setPosition(off[METHOD_IDS]);
+        methodIdItems = new MethodsIdItem[nMethods];
+
+        MethodsIdItem item = null;
+        for (int i = 0; i < methodIdItems.length; i++) {
+            item = new MethodsIdItem();
+            item.class_idx = b.readUShort();
+            item.proto_idx = b.readUShort();
+            item.name_idx = b.readUInt();
+            methodIdItems[i] = item;
+        }
+    }
+
+    public static class ClassDefItem {
+        public int class_idx;
+        public int access_flags;
+        public int superclass_idx;
+        public int interfaces_off;
+        public int source_file_idx;
+        public int annotations_off;
+        public int class_data_off;
+        public int static_values_off;
+    }
+
+    private void readClasses() {
+        int nClassDefs = size[CLASS_DEFS];
+        b.setPosition(off[CLASS_DEFS]);
+        classDefItems = new ClassDefItem[nClassDefs];
+
+        ClassDefItem item = null;
+        for (int i = 0; i < classDefItems.length; i++) {
+            item = new ClassDefItem();
+            item.class_idx = b.readUInt();
+            item.access_flags = b.readUInt();
+            item.superclass_idx = b.readUInt();
+            item.interfaces_off = b.readUInt();
+            item.source_file_idx = b.readUInt();
+            item.annotations_off = b.readUInt();
+            item.class_data_off = b.readUInt();
+            item.static_values_off = b.readUInt();
+            classDefItems[i] = item;
+        }
+    }
+}
diff --git a/tools/dex-tools/src/dex/reader/DexMethodImpl.java b/tools/dex-tools/src/dex/reader/DexMethodImpl.java
new file mode 100644
index 0000000..21a19e5
--- /dev/null
+++ b/tools/dex-tools/src/dex/reader/DexMethodImpl.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader;
+
+import java.lang.reflect.Modifier;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import dex.reader.DexClassImpl.MethodAnnotation;
+import dex.reader.DexClassImpl.ParameterAnnotation;
+import dex.reader.DexFileReader.FieldIdItem;
+import dex.reader.DexFileReader.MethodsIdItem;
+import dex.reader.DexFileReader.ProtIdItem;
+import dex.structure.DexAnnotation;
+import dex.structure.DexClass;
+import dex.structure.DexMethod;
+import dex.structure.DexParameter;
+
+/* package */final class DexMethodImpl implements DexMethod {
+
+    private DexBuffer buffer;
+    private MethodsIdItem methodsIdItem;
+    private String[] stringPool;
+    private int[] typeIds;
+    private ProtIdItem protoIdItem;
+    private List<DexParameter> parameters;
+    private final int accessFlags;
+    private final MethodAnnotation methodAnnotation;
+    private Set<DexAnnotation> annotations;
+    private final TypeFormatter formatter = new TypeFormatter();
+    private final DexClass declaringClass;
+    private final ParameterAnnotation parameterAnnotation;
+    private Map<Integer, Integer> parameterIdToIndex;
+    private final FieldIdItem[] fieldIdItems;
+
+    public DexMethodImpl(DexBuffer buffer, DexClass declaringClass,
+            MethodsIdItem methodsIdItem, ProtIdItem protoIdItem,
+            int accessFlags, MethodAnnotation methodAnnotation,
+            ParameterAnnotation parameterAnnotation, String[] stringPool,
+            int[] typeIds, FieldIdItem[] fieldIdItems) {
+        this.buffer = buffer;
+        this.declaringClass = declaringClass;
+        this.methodsIdItem = methodsIdItem;
+        this.protoIdItem = protoIdItem;
+        this.accessFlags = accessFlags;
+        this.methodAnnotation = methodAnnotation;
+        this.parameterAnnotation = parameterAnnotation;
+        this.stringPool = stringPool;
+        this.typeIds = typeIds;
+        this.fieldIdItems = fieldIdItems;
+        parseAnnotations();
+        parseParameterAnnotations();
+    }
+
+    private void parseParameterAnnotations() {
+        parameterIdToIndex = new HashMap<Integer, Integer>();
+        if (parameterAnnotation != null) {
+            buffer.setPosition(parameterAnnotation.annotationsOff);
+            int numberOfParameters = buffer.readUInt();
+            for (int i = 0; i < numberOfParameters; i++) {
+                parameterIdToIndex.put(i, buffer.readUInt());
+            }
+        }
+    }
+
+    private void parseAnnotations() {
+        annotations = new HashSet<DexAnnotation>();
+        if (methodAnnotation != null) {
+            buffer.setPosition(methodAnnotation.annotationsOff);
+            final int size = buffer.readUInt();
+            for (int i = 0; i < size; i++) {
+                annotations.add(new DexAnnotationImpl(buffer.createCopy(),
+                        buffer.readUInt(), typeIds, stringPool, fieldIdItems));
+            }
+        }
+    }
+
+    public String getName() {
+        return stringPool[methodsIdItem.name_idx];
+    }
+
+    public String getReturnType() {
+        return stringPool[typeIds[protoIdItem.return_type_idx]];
+    }
+
+    public synchronized List<DexParameter> getParameters() {
+        if (parameters == null) {
+            parameters = new LinkedList<DexParameter>();
+            if (protoIdItem.parameter_off != 0) {
+
+                buffer.setPosition(protoIdItem.parameter_off);
+                int size = buffer.readUInt();
+
+                int[] paramTypeIdx = new int[size];
+                for (int i = 0; i < size; i++) {
+                    paramTypeIdx[i] = buffer.readUShort();
+                }
+                for (int i = 0; i < paramTypeIdx.length; i++) {
+                    parameters.add(new DexParameterImpl(buffer.createCopy(),
+                            stringPool[typeIds[paramTypeIdx[i]]],
+                            parameterIdToIndex.get(i), typeIds, stringPool,
+                            fieldIdItems));
+                }
+            }
+        }
+        return parameters;
+    }
+
+    public int getModifiers() {
+        return accessFlags;
+    }
+
+    public Set<DexAnnotation> getAnnotations() {
+        return annotations;
+    }
+
+    public DexClass getDeclaringClass() {
+        return declaringClass;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append(formatter.formatAnnotations(getAnnotations()));
+        builder.append(Modifier.toString(getModifiers()));
+        builder.append(" ");
+        builder.append(formatter.format(getReturnType()));
+        builder.append(" ");
+        builder.append(getName());
+        builder.append("(");
+        List<DexParameter> parameters = getParameters();
+        for (DexParameter dexParameter : parameters) {
+            builder.append(formatter.formatAnnotations(dexParameter
+                    .getAnnotations()));
+            builder.append(formatter.format(dexParameter.getTypeName()));
+        }
+        builder.append(")");
+        return builder.toString();
+    }
+}
diff --git a/tools/dex-tools/src/dex/reader/DexParameterImpl.java b/tools/dex-tools/src/dex/reader/DexParameterImpl.java
new file mode 100644
index 0000000..ec2db05
--- /dev/null
+++ b/tools/dex-tools/src/dex/reader/DexParameterImpl.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import dex.reader.DexFileReader.FieldIdItem;
+import dex.structure.DexAnnotation;
+import dex.structure.DexParameter;
+
+public class DexParameterImpl implements DexParameter {
+
+    private final String typeName;
+    private final Integer annotationOffset;
+    private Set<DexAnnotation> annotations;
+    private final DexBuffer buffer;
+    private final int[] typeIds;
+    private final String[] stringPool;
+    private final FieldIdItem[] fieldIdItems;
+
+    public DexParameterImpl(DexBuffer buffer, String typeName,
+            Integer annotationOffset, int[] typeIds, String[] stringPool,
+            FieldIdItem[] fieldIdItems) {
+        this.buffer = buffer;
+        this.typeName = typeName;
+        this.annotationOffset = annotationOffset;
+        this.typeIds = typeIds;
+        this.stringPool = stringPool;
+        this.fieldIdItems = fieldIdItems;
+        parseAnnotations();
+    }
+
+    private void parseAnnotations() {
+        annotations = new HashSet<DexAnnotation>();
+        if (annotationOffset != null) {
+            buffer.setPosition(annotationOffset);
+            final int size = buffer.readUInt();
+            for (int i = 0; i < size; i++) {
+                annotations.add(new DexAnnotationImpl(buffer.createCopy(),
+                        buffer.readUInt(), typeIds, stringPool, fieldIdItems));
+            }
+        }
+    }
+
+    public String getTypeName() {
+        return typeName;
+    }
+
+    public Set<DexAnnotation> getAnnotations() {
+        return annotations;
+    }
+
+    @Override
+    public String toString() {
+        return getTypeName();
+    }
+}
diff --git a/tools/dex-tools/src/dex/reader/TypeFormatter.java b/tools/dex-tools/src/dex/reader/TypeFormatter.java
new file mode 100644
index 0000000..f54b30f
--- /dev/null
+++ b/tools/dex-tools/src/dex/reader/TypeFormatter.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader;
+
+import dex.structure.DexAnnotation;
+import dex.structure.DexClass;
+import dex.structure.DexField;
+import dex.structure.DexFile;
+import dex.structure.DexMethod;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <pre>
+ * TypeDescriptor := 'V' | FieldTypeDescriptor
+ * FieldTypeDescriptor := NonArrayFieldTypeDescriptor | ('[' * 1...255) NonArrayFieldTypeDescriptor
+ * NonArrayFieldTypeDescriptor := 'Z' | 'B' | 'S' | 'C' | 'I' | 'J' | 'F' | 'D' | 'L' FullClassName ';'
+ * </pre>
+ */
+public final class TypeFormatter {
+
+    /**
+     * V void; only valid for return types Z boolean B byte S short C char I int
+     * J long F float D double Lfully/qualified/Name; the class
+     * fully.qualified.Name [descriptor array of descriptor, usable recursively
+     * for arrays-of-arrays, though it is invalid to have more than 255
+     * dimensions.
+     */
+    public String format(String typeName) {
+        if (typeName.length() == 1) {
+            switch (typeName.charAt(0)) {
+            case 'V':
+                return "void";
+            case 'Z':
+                return "boolean";
+            case 'B':
+                return "byte";
+            case 'S':
+                return "short";
+            case 'C':
+                return "char";
+            case 'I':
+                return "int";
+            case 'J':
+                return "long";
+            case 'F':
+                return "float";
+            case 'D':
+                return "double";
+            }
+        } else {
+            if (typeName.startsWith("L")) {
+                return typeName.substring(1, typeName.length() - 1).replace(
+                        "/", "."); // remove 'L' and ';', replace '/' with '.'
+            } else if (typeName.startsWith("[")) {
+                return format(typeName.substring(1)) + "[]";
+            }
+        }
+        System.err.println("Strange type in formatter: " + typeName);
+        return typeName;
+    }
+
+    public String format(List<String> typeNames) {
+        List<String> types = new ArrayList<String>(typeNames.size());
+        for (String type : typeNames) {
+            types.add(format(type));
+        }
+        return format(types, ", ");
+    }
+
+    public String formatAnnotations(Set<DexAnnotation> annotations) {
+        return format(new ArrayList<DexAnnotation>(annotations), "\n") + "\n";
+    }
+
+    private String format(List<?> elements, String separator) {
+        StringBuilder builder = new StringBuilder();
+        boolean first = true;
+        for (Object element : elements) {
+            if (!first) {
+                builder.append(separator);
+            }
+            builder.append(element.toString());
+            first = false;
+        }
+        return builder.toString();
+    }
+
+
+    public String formatDexFile(DexFile file) {
+        StringBuilder builder = new StringBuilder();
+        builder.append("----------------DEX_FILE--------------\n\n");
+        builder.append("Filename: ").append(file.getName());
+        builder.append("\n-----------DEFINED_CLASSES------------\n\n");
+        for (DexClass dexClass : file.getDefinedClasses()) {
+            builder.append("\n________________CLASS________________\n\n");
+            builder.append(dexClass);
+            builder.append("\n\n----------------FIELDS----------------\n");
+            for (DexField field : dexClass.getFields()) {
+                builder.append(field).append("\n");
+            }
+            builder.append("----------------METHODS----------------\n");
+            for (DexMethod method : dexClass.getMethods()) {
+                builder.append(method).append("\n");
+            }
+        }
+        return builder.toString();
+    }
+}
diff --git a/tools/dex-tools/src/dex/structure/DexAnnotatedElement.java b/tools/dex-tools/src/dex/structure/DexAnnotatedElement.java
new file mode 100644
index 0000000..0b69ca8
--- /dev/null
+++ b/tools/dex-tools/src/dex/structure/DexAnnotatedElement.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.structure;
+
+import java.util.Set;
+
+/**
+ * {@code DexAnnotatedElement} is implemented by all Elements that could have
+ * attached annotations.
+ */
+public interface DexAnnotatedElement {
+
+    /**
+     * Returns a list of {@code DexAnnotation} elements.
+     * 
+     * @return a list of {@code DexAnnotation} elements
+     */
+    Set<DexAnnotation> getAnnotations();
+}
diff --git a/tools/dex-tools/src/dex/structure/DexAnnotation.java b/tools/dex-tools/src/dex/structure/DexAnnotation.java
new file mode 100644
index 0000000..9cd372d
--- /dev/null
+++ b/tools/dex-tools/src/dex/structure/DexAnnotation.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.structure;
+
+import java.util.List;
+
+/**
+ * {@code DexAnnotation} represents an annotation.
+ */
+public interface DexAnnotation {
+
+    /**
+     * {@code Visibility} indicates the retention of a {@code DexAnnotation}.
+     */
+    enum Visibility {
+        /**
+         * Intended only to be visible at build time (e.g., during compilation
+         * of other code).
+         */
+        VISIBILITY_BUILD((byte) 0x00),
+        /**
+         * Intended to be visible at runtime. FIXME missing words in spec
+         */
+        VISIBILITY_RUNTIME((byte) 0X01),
+        /**
+         * Intended to be visible at runtime, but only to the underlying system
+         * (and not to regular user code). FIXME missing words in spec
+         */
+        VISIBILITY_SYSTEM((byte) 0x02);
+
+        @SuppressWarnings("unused")
+        private byte value;
+
+        private Visibility(byte value) {
+            this.value = value;
+        }
+
+        /**
+         * Returns the {@code Visibility} identified by the given {@code byte}.
+         * pre: 0 <= {@code value} <=2
+         * 
+         * @param value
+         *            the {@code byte} value which identifies a {@code
+         *            Visibility}
+         * @return the {@code Visibility} for the given {@code byte}
+         */
+        public static Visibility get(byte value) {
+            // FIXME loop and compare instead of switch?
+            switch (value) {
+            case 0x00:
+                return VISIBILITY_BUILD;
+            case 0x01:
+                return VISIBILITY_RUNTIME;
+            case 0x02:
+                return VISIBILITY_SYSTEM;
+            default:
+                throw new IllegalArgumentException("Visibility doesn't exist!");
+            }
+        }
+    }
+
+    /**
+     * Returns the {@code Visibility} of this {@code DexAnnotation}.
+     * 
+     * @return the {@code Visibility} of this {@code DexAnnotation}
+     */
+    Visibility getVisibility();
+
+    /**
+     * Returns the attributes of this {@code DexAnnotation}.
+     * 
+     * @return the attributes of this {@code DexAnnotation}
+     */
+    List<DexAnnotationAttribute> getAttributes();
+
+    /**
+     * Returns the class name of this {@code DexAnnotation}.
+     * 
+     * @return the class name of this {@code DexAnnotation}
+     */
+    String getTypeName();
+}
diff --git a/tools/dex-tools/src/dex/structure/DexAnnotationAttribute.java b/tools/dex-tools/src/dex/structure/DexAnnotationAttribute.java
new file mode 100644
index 0000000..4d51c08
--- /dev/null
+++ b/tools/dex-tools/src/dex/structure/DexAnnotationAttribute.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.structure;
+
+/**
+ * {@code DexAnnotationValue} is implemented by annotation values. In the
+ * following example:
+ * 
+ * <pre>
+ * &#064;Text(value=&quot;hello&quot;)
+ * </pre>
+ * 
+ * 'value="hello"' is represented by a {@code DexAnnotationValue}. "value" is
+ * its name and "hello" is its encoded value.
+ */
+public interface DexAnnotationAttribute extends NamedElement {
+    /**
+     * Returns the encoded value of this {@code DexAnnotationValue}.
+     * 
+     * @return the encoded value of this {@code DexAnnotationValue}
+     */
+    public DexEncodedValue getEncodedValue();
+
+    public DexAnnotation getAnnotation();
+}
diff --git a/tools/dex-tools/src/dex/structure/DexClass.java b/tools/dex-tools/src/dex/structure/DexClass.java
new file mode 100644
index 0000000..198f4ee
--- /dev/null
+++ b/tools/dex-tools/src/dex/structure/DexClass.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.structure;
+
+import java.util.List;
+
+/**
+ * {@code DexClass} represents a class.
+ */
+public interface DexClass extends DexAnnotatedElement, WithModifiers,
+        NamedElement {
+    /**
+     * Returns a list containing the names of all implemented interfaces.
+     * 
+     * @return a list containing the names of all implemented interfaces
+     */
+    List<String> getInterfaces();
+
+    /**
+     * Returns the name of the super class.
+     * 
+     * @return the name of the super class, maybe {@code null}
+     */
+    String getSuperClass();
+
+    /**
+     * Returns a list containing all fields declared by this {@code DexClass}.
+     * 
+     * @return a list containing all fields declared by this {@code DexClass}
+     */
+    List<DexField> getFields();
+
+    /**
+     * Returns a list containing all methods declared by this {@code DexClass}.
+     * 
+     * @return a list containing all methods declared by this {@code DexClass}
+     */
+    List<DexMethod> getMethods();
+}
diff --git a/tools/dex-tools/src/dex/structure/DexEncodedAnnotation.java b/tools/dex-tools/src/dex/structure/DexEncodedAnnotation.java
new file mode 100644
index 0000000..f31fe74
--- /dev/null
+++ b/tools/dex-tools/src/dex/structure/DexEncodedAnnotation.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.structure;
+
+import java.util.List;
+
+public interface DexEncodedAnnotation extends DexEncodedValue {
+    String getTypeName();
+
+    List<DexAnnotationAttribute> getValue();
+
+}
diff --git a/tools/dex-tools/src/dex/structure/DexEncodedValue.java b/tools/dex-tools/src/dex/structure/DexEncodedValue.java
new file mode 100644
index 0000000..1d09f34
--- /dev/null
+++ b/tools/dex-tools/src/dex/structure/DexEncodedValue.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.structure;
+
+/**
+ * {@code DexEncodedValue} represents an encoded value. The value of a {@code
+ * DexAnnotationValue} is encoded as {@code DexEncodedValue}.
+ */
+public interface DexEncodedValue {
+
+    /**
+     * Returns the type of this {@code DexEncodedValue}.
+     * 
+     * @return the type of this {@code DexEncodedValue}
+     */
+    DexEncodedValueType getType();
+
+    /**
+     * Returns the value of this {@code DexEncodedValue}.
+     * 
+     * @return the value of this {@code DexEncodedValue}
+     */
+    Object getValue();
+}
diff --git a/tools/dex-tools/src/dex/structure/DexEncodedValueType.java b/tools/dex-tools/src/dex/structure/DexEncodedValueType.java
new file mode 100644
index 0000000..00560f3
--- /dev/null
+++ b/tools/dex-tools/src/dex/structure/DexEncodedValueType.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.structure;
+
+/**
+ * {@code DexEncodedValueType} represents the type of an {code DexEncodedValue}.
+ */
+public enum DexEncodedValueType {
+    /**
+     * <pre>
+     * VALUE_BYTE 0x00 (none; must be 0) ubyte[1]
+     * </pre>
+     * 
+     * signed one-byte integer value
+     */
+    VALUE_BYTE((byte) 0x00),
+    /**
+     * <pre>
+     * VALUE_SHORT 0x02 size - 1 (0...1) ubyte[size]
+     * </pre>
+     * 
+     * signed two-byte integer value, sign-extended
+     */
+    VALUE_SHORT((byte) 0x02),
+    /**
+     * <pre>
+     * VALUE_CHAR 0x03 size - 1 (0...1) ubyte[size]
+     * </pre>
+     * 
+     * unsigned two-byte integer value, zero-extended
+     */
+    VALUE_CHAR((byte) 0x03),
+    /**
+     * <pre>
+     * VALUE_INT 0x04 size - 1 (0...3) ubyte[size]
+     * </pre>
+     * 
+     * signed four-byte integer value, sign-extended
+     */
+    VALUE_INT((byte) 0x04),
+    /**
+     * <pre>
+     * VALUE_LONG 0x06 size - 1 (0...7) ubyte[size]
+     * </pre>
+     * 
+     * signed eight-byte integer value, sign-extended
+     */
+    VALUE_LONG((byte) 0x06),
+    /**
+     * <pre>
+     * VALUE_FLOAT 0x10 size - 1 (0...3) ubyte[size]
+     * </pre>
+     * 
+     * four-byte bit pattern, zero-extended to the right, and interpreted as an
+     * IEEE754 32-bit floating point value
+     */
+    VALUE_FLOAT((byte) 0x10),
+    /**
+     * <pre>
+     * VALUE_DOUBLE 0x11 size - 1 (0...7) ubyte[size]
+     * </pre>
+     * 
+     * eight-byte bit pattern, zero-extended to the right, and interpreted as an
+     * IEEE754 64-bit floating point value
+     */
+    VALUE_DOUBLE((byte) 0x11),
+    /**
+     * <pre>
+     * VALUE_STRING    0x17     size - 1 (0...3)     ubyte[size]
+     * </pre>
+     * 
+     * unsigned (zero-extended) four-byte integer value, interpreted as an index
+     * into the string_ids section and representing a string value
+     */
+    VALUE_STRING((byte) 0x17),
+    /**
+     * <pre>
+     * VALUE_TYPE 0x18 size - 1 (0...3) ubyte[size]
+     * </pre>
+     * 
+     * unsigned (zero-extended) four-byte integer value, interpreted as an index
+     * into the type_ids section and representing a reflective type/class value
+     */
+    VALUE_TYPE((byte) 0x18),
+    /**
+     * <pre>
+     * VALUE_FIELD 0x19 size - 1 (0...3) ubyte[size]
+     * </pre>
+     * 
+     * unsigned (zero-extended) four-byte integer value, interpreted as an index
+     * into the field_ids section and representing a reflective field value
+     */
+    VALUE_FIELD((byte) 0x19),
+    /**
+     * <pre>
+     * VALUE_METHOD 0x1a size - 1 (0...3) ubyte[size]
+     * </pre>
+     * 
+     * unsigned (zero-extended) four-byte integer value, interpreted as an index
+     * into the method_ids section and representing a reflective method value
+     */
+    VALUE_METHOD((byte) 0x1a),
+    /**
+     * <pre>
+     * VALUE_ENUM 0x1b size - 1 (0...3) ubyte[size]
+     * </pre>
+     * 
+     * unsigned (zero-extended) four-byte integer value, interpreted as an index
+     * into the field_ids section and representing the value of an enumerated
+     * type constant
+     */
+    VALUE_ENUM((byte) 0x1b),
+    /**
+     * <pre>
+     * VALUE_ARRAY 0x1c (none; must be 0) encoded_array
+     * </pre>
+     * 
+     * an array of values, in the format specified by "encoded_array Format"
+     * below. The size of the value is implicit in the encoding.
+     */
+    VALUE_ARRAY((byte) 0x1c),
+    /**
+     * <pre>
+     * VALUE_ANNOTATION 0x1d (none; must be 0) encoded_annotation
+     * </pre>
+     * 
+     * a sub-annotation, in the format specified by "encoded_annotation Format"
+     * below. The size of the value is implicit in the encoding.
+     */
+    VALUE_ANNOTATION((byte) 0x1d),
+    /**
+     * <pre>
+     * VALUE_NULL 0x1e (none; must be 0) (none)
+     * </pre>
+     * 
+     * null reference value
+     */
+    VALUE_NULL((byte) 0x1e),
+    /**
+     * <pre>
+     * VALUE_BOOLEAN 0x1f boolean (0...1) (none)
+     * </pre>
+     * 
+     * one-bit value; 0 for false and 1 for true. The bit is represented in the
+     * value_arg.
+     */
+    VALUE_BOOLEAN((byte) 0x1f);
+
+    private byte value;
+
+    /**
+     * Creates a new instance of {@code DexEncodedValueType} using the provided
+     * byte.
+     * <p>
+     * Format: value := (value_arg << 5) | value_type
+     * 
+     * @param value
+     *            the {@code byte} containing the type and the value argument
+     */
+    private DexEncodedValueType(byte value) {
+        this.value = value;
+    }
+
+    /**
+     * Returns the {@code DexEncodedValueType} for the given {@code byte}.
+     * 
+     * @param value
+     *            the {@code byte} containing the type and the value argument
+     * @return the {@code DexEncodedValueType} for the given {@code byte}
+     */
+    public static DexEncodedValueType get(byte value) {
+        // FIXME don't loop -> switch to get performance boost
+        for (DexEncodedValueType type : values()) {
+            if (type.value == (value & 0x1F)) {
+                return type;
+            }
+        }
+        throw new IllegalArgumentException("Type does not exist!");
+    }
+
+    /**
+     * Returns the value argument of the given {@code byte}.
+     * <p>
+     * Format: value := (value_arg << 5) | value_type
+     * 
+     * @param value
+     *            the {@code byte} containing the type and the value argument
+     * @return the value argument of the given {@code byte}
+     */
+    public static byte valueArg(byte value) {
+        return (byte) (value >>> 5);
+    }
+}
diff --git a/tools/dex-tools/src/dex/structure/DexField.java b/tools/dex-tools/src/dex/structure/DexField.java
new file mode 100644
index 0000000..419bfad
--- /dev/null
+++ b/tools/dex-tools/src/dex/structure/DexField.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.structure;
+
+/**
+ * {@code DexField} represents a field.
+ */
+public interface DexField extends DexAnnotatedElement, WithModifiers,
+        NamedElement {
+
+    /**
+     * Returns the name of the type of this {@code DexField}.
+     * 
+     * @return the name of the type of this {@code DexField}
+     */
+    String getType();
+
+    DexClass getDeclaringClass();
+
+    boolean isEnumConstant();
+}
diff --git a/tools/dex-tools/src/dex/structure/DexFile.java b/tools/dex-tools/src/dex/structure/DexFile.java
new file mode 100644
index 0000000..f7ee50e
--- /dev/null
+++ b/tools/dex-tools/src/dex/structure/DexFile.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.structure;
+
+
+import java.util.List;
+
+/**
+ * {@code DexFile} represents a whole dex file, containing multiple classes.
+ */
+public interface DexFile extends NamedElement {
+
+    /**
+     * Returns a list of {@code DexClass} elements that are part of this {@code
+     * DexFile}.
+     * 
+     * @return a list of {@code DexClass} elements that are part of this {@code
+     *         DexFile}
+     */
+    public List<DexClass> getDefinedClasses();
+
+}
diff --git a/tools/dex-tools/src/dex/structure/DexInterface.java b/tools/dex-tools/src/dex/structure/DexInterface.java
new file mode 100644
index 0000000..639b14d
--- /dev/null
+++ b/tools/dex-tools/src/dex/structure/DexInterface.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.structure;
+
+/**
+ * {@code DexInterface} represents an interface.
+ */
+public interface DexInterface extends DexAnnotatedElement {
+}
diff --git a/tools/dex-tools/src/dex/structure/DexMethod.java b/tools/dex-tools/src/dex/structure/DexMethod.java
new file mode 100644
index 0000000..a2e3a09
--- /dev/null
+++ b/tools/dex-tools/src/dex/structure/DexMethod.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.structure;
+
+import java.util.List;
+
+/**
+ * {@code DexMethod} represents a method.
+ */
+public interface DexMethod extends WithModifiers, DexAnnotatedElement,
+        NamedElement {
+    /**
+     * Returns a list of strings representing the types of the parameters of
+     * this method.
+     * 
+     * @return a list of strings representing the types of the parameters of
+     *         this method
+     */
+    public List<DexParameter> getParameters();
+
+    public String getReturnType();
+
+    public DexClass getDeclaringClass();
+}
diff --git a/tools/dex-tools/src/dex/structure/DexParameter.java b/tools/dex-tools/src/dex/structure/DexParameter.java
new file mode 100644
index 0000000..22a21e0
--- /dev/null
+++ b/tools/dex-tools/src/dex/structure/DexParameter.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.structure;
+
+public interface DexParameter extends DexAnnotatedElement {
+    String getTypeName();
+}
diff --git a/tools/dex-tools/src/dex/structure/NamedElement.java b/tools/dex-tools/src/dex/structure/NamedElement.java
new file mode 100644
index 0000000..ab8b128
--- /dev/null
+++ b/tools/dex-tools/src/dex/structure/NamedElement.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.structure;
+
+/**
+ * {@code NamedElement} represents an element with a name.
+ */
+public interface NamedElement {
+    /**
+     * Returns the name of this {@code NamedElement}.
+     * 
+     * @return the name of this {@code NamedElement}
+     */
+    String getName();
+}
diff --git a/tools/dex-tools/src/dex/structure/WithModifiers.java b/tools/dex-tools/src/dex/structure/WithModifiers.java
new file mode 100644
index 0000000..804c461
--- /dev/null
+++ b/tools/dex-tools/src/dex/structure/WithModifiers.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.structure;
+
+import java.lang.reflect.Modifier;
+
+/**
+ * {@link WithModifiers} is implemented by all language elements that have
+ * modifiers.
+ */
+public interface WithModifiers {
+
+    /**
+     * The {@link Modifier} class should be used to decode the result.
+     * 
+     * @return the modifiers for this member
+     * 
+     * @see Modifier
+     */
+    int getModifiers();
+}
diff --git a/tools/dex-tools/test/dex/reader/DexFileReaderTests.java b/tools/dex-tools/test/dex/reader/DexFileReaderTests.java
new file mode 100644
index 0000000..55907f9
--- /dev/null
+++ b/tools/dex-tools/test/dex/reader/DexFileReaderTests.java
@@ -0,0 +1,382 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.FileWriter;
+import java.io.IOException;
+import java.lang.reflect.Modifier;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.junit.Test;
+
+import dex.reader.util.JavaSource;
+import dex.structure.DexAnnotation;
+import dex.structure.DexAnnotationAttribute;
+import dex.structure.DexClass;
+import dex.structure.DexEncodedValue;
+import dex.structure.DexField;
+import dex.structure.DexFile;
+import dex.structure.DexMethod;
+import dex.structure.DexParameter;
+
+
+public class DexFileReaderTests extends DexTestsCommon {
+
+    private static final String LDALVIK_ANNOTATION_SIGNATURE = "Ldalvik/annotation/Signature;";
+    
+    
+    JavaSource A = new JavaSource("a.b.c.A", 
+            "package a.b.c; public class A{ public void get() {}}"
+    );
+    
+    @Test
+    public void testA() throws IOException {
+        DexFile dexFile = javaToDexUtil.getFrom(A);
+        assertEquals(1, dexFile.getDefinedClasses().size());
+        @SuppressWarnings("unused")
+        DexClass class1 = getClass(dexFile, "La/b/c/A;");
+        System.out.println(dexFile);
+    }
+    
+    
+    JavaSource T0 = new JavaSource("T0",
+            "public class T0 {" + 
+            "    public int publicIntField;" + 
+            "    protected long protectedLongField;" + 
+            "    short defaultShortField;" + 
+            "    private double privateDoubleField;" + 
+            "    " + 
+            "    public String publicStringMethodInt(int a){ return \"bla\"; }" + 
+            "    protected String protectedStringMethodInt(int a){ return \"bla\"; }" + 
+            "    String defaultStringMethodInt(int a){ return \"bla\"; }" + 
+            "    private String privateStringMethodInt(int a){ return \"bla\"; }" + 
+            "}"     
+    );
+    
+    /**
+     * Tests parsing a simple class.
+     */
+    @Test 
+    public void testT0() throws IOException {
+        
+        DexFile dexFile = javaToDexUtil.getFrom(T0);
+        assertEquals(1, dexFile.getDefinedClasses().size());
+        DexClass clazz = dexFile.getDefinedClasses().get(0);
+        assertEquals("LT0;", clazz.getName());
+        assertPublic(clazz);
+        //fields
+        assertEquals(4, clazz.getFields().size());
+        DexField field = getField(clazz, "publicIntField");
+        assertPublic(field);
+        field = getField(clazz, "protectedLongField");
+        assertProtected(field);
+        field = getField(clazz, "defaultShortField");
+        assertDefault(field);
+        field = getField(clazz, "privateDoubleField");
+        assertPrivate(field);
+        //methods
+        DexMethod method = getMethod(clazz, "publicStringMethodInt", "I");
+        assertPublic(method);
+        method = getMethod(clazz, "protectedStringMethodInt", "I");/** a.b.C */
+        assertProtected(method);
+        method = getMethod(clazz, "defaultStringMethodInt", "I");
+        assertDefault(method);
+        method = getMethod(clazz, "privateStringMethodInt", "I");
+        assertPrivate(method);
+    }
+    
+    JavaSource T1 = new JavaSource( "T1","public class T1 extends T0 {}" );
+
+    
+    private static Set<JavaSource> toSet(JavaSource...javaSources){
+        return new HashSet<JavaSource>(Arrays.asList(javaSources));
+    }
+    
+    private static Set<String> toStringSet(JavaSource... javaSources) {
+        Set<String> names = new HashSet<String>();
+        for (JavaSource javaSource : javaSources) {
+            names.add(javaSource.getName());
+        }
+        
+        return names;
+    }
+    
+    private static Set<String> toStringSet(String... javaSourceName) {
+        return new HashSet<String>(Arrays.asList(javaSourceName));
+    }
+    
+    /**
+     * Tests parsing a simple sub class.
+     * @throws IOException
+     */
+    @Test 
+    public void testT1() throws IOException {
+        DexFile dexFile = javaToDexUtil.getFrom(toSet(T1, T0), toStringSet(T1));
+        assertEquals(1, dexFile.getDefinedClasses().size());
+        DexClass clazz = dexFile.getDefinedClasses().get(0);
+        assertEquals("LT1;", clazz.getName());
+        assertPublic(clazz);
+        assertEquals("LT0;", clazz.getSuperClass());
+    }
+    
+    /**
+     * Tests parsing T0 and T1 from same dex file.
+     * 
+     * @throws IOException
+     */
+    @Test 
+    public void testT0_T1() throws IOException {
+        DexFile dexFile = javaToDexUtil.getFrom(T1, T0);
+        assertEquals(2, dexFile.getDefinedClasses().size());
+        
+        DexClass T0 = getClass(dexFile, "LT0;");
+        assertPublic(T0);
+        
+        DexClass T1 = getClass(dexFile, "LT1;");
+        assertPublic(T1);
+        
+        assertEquals(T1.getSuperClass(), T0.getName());
+    }
+    
+    static final JavaSource A0 = new JavaSource("A0", 
+    "import java.lang.annotation.*;" + 
+    "@Retention(RetentionPolicy.RUNTIME)" + 
+    "@Target(ElementType.TYPE)" + 
+    "public @interface A0 {}"
+     );
+    
+    /**
+     * Tests parsing Annotation Declaration.
+     */
+    @Test 
+    public void testA0() throws IOException {
+        DexFile dexFile = javaToDexUtil.getFrom(A0);
+        assertEquals(1, dexFile.getDefinedClasses().size());
+        
+        DexClass A0 = getClass(dexFile, "LA0;");
+        assertPublic(A0);
+        assertEquals(2, A0.getAnnotations().size());
+    }
+    
+    
+    static final JavaSource T3 = new JavaSource("T3",
+    "import java.io.*;" + 
+    "@A0 " + 
+    "public final class T3 {}"        
+    );
+    
+    
+    /**
+     * Tests parsing Annotated Class.
+     */
+    @Test 
+    public void testA0_T3() throws IOException {
+        DexFile dexFile = javaToDexUtil.getFrom(T3, A0);
+        assertEquals(2, dexFile.getDefinedClasses().size());
+        
+        DexClass T3 = getClass(dexFile, "LT3;");
+        assertPublic(T3);
+        assertEquals(1, T3.getAnnotations().size());
+        
+        DexAnnotation annotation = getAnnotation(T3, "LA0;");
+        
+        DexClass A0 = getClass(dexFile, "LA0;");
+        
+        assertEquals(A0.getName(), annotation.getTypeName());
+    }
+    
+    
+    static final JavaSource G0 = new JavaSource("G0","public class G0<T>{}");
+    
+    /**
+     * Tests parsing Generic Type.
+     */
+    @Test 
+    public void testG0() throws IOException {
+        DexFile dexFile = javaToDexUtil.getFrom(G0);
+        assertEquals(1, dexFile.getDefinedClasses().size());
+        DexClass G0 = getClass(dexFile, "LG0;");
+        assertPublic(G0);
+        DexAnnotation sig = getAnnotation(G0, LDALVIK_ANNOTATION_SIGNATURE);
+        assertEquals(1, sig.getAttributes().size());
+        DexAnnotationAttribute dexAnnotationValue = sig.getAttributes().get(0);
+        assertNotNull(dexAnnotationValue.getEncodedValue());
+        Object value = dexAnnotationValue.getEncodedValue().getValue();
+        assertTrue(value instanceof List);
+        StringBuilder builder = new StringBuilder();
+        for (Object o : (List<?>)value) {
+            builder.append(((DexEncodedValue)o).getValue());
+        }
+        //FIXME verify
+        assertEquals("<T:Ljava/lang/Object;>Ljava/lang/Object;", builder.toString());
+    }
+    
+    static final JavaSource G1 = new JavaSource("G1","public class G1<T extends G1>{}");
+    
+    /**
+     * Tests parsing Generic Type.
+     */
+    @Test 
+    public void testG1() throws IOException {
+        DexFile dexFile = javaToDexUtil.getFrom(G1);
+        assertEquals(1, dexFile.getDefinedClasses().size());
+        DexClass G1 = getClass(dexFile, "LG1;");
+        assertPublic(G1);
+        DexAnnotation sig = getAnnotation(G1, LDALVIK_ANNOTATION_SIGNATURE);
+        assertEquals(1, sig.getAttributes().size());
+        DexAnnotationAttribute dexAnnotationValue = sig.getAttributes().get(0);
+        assertNotNull(dexAnnotationValue.getEncodedValue());
+        Object value = dexAnnotationValue.getEncodedValue().getValue();
+        assertTrue(value instanceof List);
+        StringBuilder builder = new StringBuilder();
+        for (Object o : (List<?>)value) {
+            builder.append(((DexEncodedValue)o).getValue());
+        }
+        //FIXME verify
+        assertEquals("<T:LG1;>Ljava/lang/Object;", builder.toString());
+    }
+    
+
+    
+    static final JavaSource I0 = new JavaSource("I0",
+    "import java.io.Serializable;" + 
+    "public interface I0 extends Serializable {}"
+    );
+    
+    /**
+     * Tests parsing Interface Type.
+     */
+    @Test  
+    public void testI0() throws IOException {
+        DexFile dexFile = javaToDexUtil.getFrom(I0);
+        assertEquals(1, dexFile.getDefinedClasses().size());
+        DexClass I0 = getClass(dexFile, "LI0;");
+        assertPublic(I0);
+        assertTrue(Modifier.isInterface(I0.getModifiers()));
+        assertEquals(1,  I0.getInterfaces().size());
+        assertEquals("Ljava/io/Serializable;",  I0.getInterfaces().get(0));
+    }
+    
+    
+    static final JavaSource Outer0 = new JavaSource("Outer0",
+    "public class Outer0 {" + 
+    "    static class StaticInner {}" + 
+    "    class Inner{}" + 
+    "}"
+    );
+    
+    /**
+     * Tests parsing Interface Type.
+     * @throws IOException
+     */
+    @SuppressWarnings("unchecked")
+    @Test  
+    public void testOuter0() throws IOException {
+        DexFile dexFile = javaToDexUtil.getFrom(toSet(Outer0), toStringSet("Outer0", "Outer0$Inner", "Outer0$StaticInner"));
+        assertEquals(3, dexFile.getDefinedClasses().size());
+        DexClass Outer0 = getClass(dexFile, "LOuter0;");
+        DexAnnotation sig = getAnnotation(Outer0, "Ldalvik/annotation/MemberClasses;");
+        assertEquals(1, sig.getAttributes().size());
+        DexAnnotationAttribute dexAnnotationValue = sig.getAttributes().get(0);
+        assertNotNull(dexAnnotationValue.getEncodedValue());
+        List<DexEncodedValue> values = (List<DexEncodedValue>) dexAnnotationValue.getEncodedValue().getValue();
+        Set<String> innerTypeNames = new HashSet<String>();
+        for (DexEncodedValue value : values) {
+            innerTypeNames.add((String) value.getValue());
+        }
+        DexClass inner = getClass(dexFile, "LOuter0$Inner;");
+        DexClass staticInner = getClass(dexFile, "LOuter0$StaticInner;");
+        assertTrue(innerTypeNames.contains(inner.getName()));
+        assertTrue(innerTypeNames.contains(staticInner.getName()));
+    }
+    
+    static final JavaSource parameterAnnotation = new JavaSource("A",
+            "public class A {" + 
+            "  void m(@Deprecated int a) {}" + 
+            "}");
+
+    /**
+     * Tests parameter annotation.
+     * 
+     * @throws IOException
+     */
+    @Test
+    public void testParameterAnnotation() throws IOException {
+        DexFile dexFile = javaToDexUtil.getFrom(parameterAnnotation);
+        assertEquals(1, dexFile.getDefinedClasses().size());
+        DexClass A = getClass(dexFile, "LA;");
+
+        DexMethod method = getMethod(A, "m", "I");
+        assertEquals(1, method.getParameters().size());
+        DexParameter dexParameter = method.getParameters().get(0);
+        assertEquals("I", dexParameter.getTypeName());
+
+        assertEquals(1, dexParameter.getAnnotations().size());
+        DexAnnotation annotation = dexParameter.getAnnotations().iterator().next();
+        assertEquals("Ljava/lang/Deprecated;", annotation.getTypeName());
+    }
+    
+    @Test 
+    public void testEnum() throws IOException {
+        JavaSource source = new JavaSource("E", "public enum E { A,B; public static final E C = null; }");
+        DexFile dexFile = javaToDexUtil.getFrom(source);
+        assertEquals(1, dexFile.getDefinedClasses().size());
+        DexClass E = getClass(dexFile, "LE;");
+        System.out.println(E);
+        System.out.println(E.getFields());
+    }
+
+    /**
+     * Tests parsing of huge dex file. 
+     * @throws IOException
+     */
+    @Test 
+    public void testAllReader() throws IOException {
+        FileWriter w = new FileWriter("dex/classes.out.dex");
+        DexFileReader dexReader = new DexFileReader();
+        DexFile dexFile = dexReader.read(new DexBuffer("dex/classes.dex"));
+        TypeFormatter formatter = new TypeFormatter();
+        w.append(formatter.formatDexFile(dexFile));
+        w.flush();
+        w.close();
+        assertTrue(true);
+    }
+    
+    /**
+     * Tests parsing of huge dex file. 
+     * @throws IOException
+     */
+    @Test 
+    public void testAllReader0() throws IOException {
+        FileWriter w = new FileWriter("dex/classes0.out.dex");
+        DexFileReader dexReader = new DexFileReader();
+        DexFile dexFile = dexReader.read(new DexBuffer("dex/classes0.dex"));
+        TypeFormatter formatter = new TypeFormatter();
+        w.append(formatter.formatDexFile(dexFile));
+        w.flush();
+        w.close();
+        assertTrue(true);
+    }
+    
+}
diff --git a/tools/dex-tools/test/dex/reader/DexTestsCommon.java b/tools/dex-tools/test/dex/reader/DexTestsCommon.java
new file mode 100644
index 0000000..e5c3898
--- /dev/null
+++ b/tools/dex-tools/test/dex/reader/DexTestsCommon.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.junit.After;
+import org.junit.Before;
+
+import dex.reader.util.JavaSourceToDexUtil;
+import dex.structure.DexAnnotatedElement;
+import dex.structure.DexAnnotation;
+import dex.structure.DexClass;
+import dex.structure.DexField;
+import dex.structure.DexFile;
+import dex.structure.DexMethod;
+import dex.structure.DexParameter;
+import dex.structure.WithModifiers;
+
+import java.io.IOException;
+import java.lang.reflect.Modifier;
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+
+public class DexTestsCommon {
+    
+    protected JavaSourceToDexUtil javaToDexUtil;
+
+    @Before
+    public void initializeJavaToDexUtil() {
+        javaToDexUtil = new JavaSourceToDexUtil();
+    }
+    
+    @After
+    public void shutdownJavaToDexUtil() {
+        javaToDexUtil = null;
+    }
+    
+    public static void assertPublic(WithModifiers withMod) {
+        assertTrue(Modifier.isPublic(withMod.getModifiers()));
+        assertFalse(Modifier.isPrivate(withMod.getModifiers())
+                || Modifier.isProtected(withMod.getModifiers()));
+    }
+    
+    public static void assertProtected(WithModifiers withMod) {
+        assertTrue(Modifier.isProtected(withMod.getModifiers()));
+        assertFalse(Modifier.isPrivate(withMod.getModifiers())
+                || Modifier.isPublic(withMod.getModifiers()));
+    }
+    
+    public static void assertPrivate(WithModifiers withMod) {
+        assertTrue(Modifier.isPrivate(withMod.getModifiers()));
+        assertFalse(Modifier.isProtected(withMod.getModifiers())
+                || Modifier.isPublic(withMod.getModifiers()));
+    }
+    
+    public static void assertDefault(WithModifiers withMod) {
+        assertFalse(Modifier.isPrivate(withMod.getModifiers())
+                || Modifier.isProtected(withMod.getModifiers())
+                || Modifier.isPublic(withMod.getModifiers()));
+    }
+    
+    /**
+     * Creates and returns a dex file from the specified file.
+     * 
+     * @param fileName the name of the file to read
+     * @return the dex file
+     * @throws IOException if the file is not accessible
+     */
+    protected DexFile prepareDexFile(String fileName) throws IOException{
+        DexFileReader dexReader = new DexFileReader();
+        return  dexReader.read(new DexBuffer(fileName));
+    }
+    
+    protected DexClass getClass(DexFile file, String className) {
+        assertNotNull(file);
+        assertNotNull(className);
+        for (DexClass clazz : file.getDefinedClasses()) {
+            if(className.equals(clazz.getName())){
+                return clazz;
+            }
+        }
+        fail("Class: " + className +" not present in file: " + file.getName());
+        throw new IllegalArgumentException("Class: " + className +" not present in file: " + file.getName());
+    }
+    
+    protected DexField getField(DexClass clazz, String fieldName) {
+        assertNotNull(clazz);
+        assertNotNull(fieldName);
+        for (DexField field : clazz.getFields()) {
+            if(fieldName.equals(field.getName())){
+                return field;
+            }
+        }
+        fail("Field: " + fieldName +" not present in class: " + clazz.getName());
+        throw new IllegalArgumentException("Field: " + fieldName +" not present in class: " + clazz.getName());
+    }
+    
+    protected DexAnnotation getAnnotation(DexAnnotatedElement element, String annotationType) {
+        assertNotNull(element);
+        assertNotNull(annotationType);
+        for (DexAnnotation anno : element.getAnnotations()) {
+            if(annotationType.equals(anno.getTypeName())){
+                return anno;
+            }
+        }
+        fail("Annotation: " + annotationType +" not present in Element.");
+        throw new IllegalArgumentException("Annotation: " + annotationType +" not present in Element.");
+    }
+    
+    protected DexMethod getMethod(DexClass clazz, String methodName, String... typeNames) {
+        assertNotNull(clazz);
+        assertNotNull(methodName);
+        List<String> paramTypeNames = Arrays.asList(typeNames);
+        for (DexMethod method : clazz.getMethods()) {
+            List<String> methodsParamTypeNames = getParamTypeNames(method.getParameters());
+            if(methodName.equals(method.getName()) && paramTypeNames.equals(methodsParamTypeNames)){
+                return method;
+            }
+        }
+        fail("Method: " + methodName +" not present in class: " + clazz.getName());
+        throw new IllegalArgumentException("Method: " + methodName +" not present in class: " + clazz.getName());
+    }
+    
+    private List<String> getParamTypeNames(List<DexParameter> parameters) {
+        List<String> paramTypeNames = new LinkedList<String>();
+        for (DexParameter parameter : parameters) {
+            paramTypeNames.add(parameter.getTypeName());
+        }
+        return paramTypeNames;
+    }
+
+}
diff --git a/tools/dex-tools/test/dex/reader/LargeDexTests.java b/tools/dex-tools/test/dex/reader/LargeDexTests.java
new file mode 100644
index 0000000..64d3993
--- /dev/null
+++ b/tools/dex-tools/test/dex/reader/LargeDexTests.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader;
+
+import static org.junit.Assert.assertEquals;
+import dex.reader.util.JavaSource;
+import dex.structure.DexClass;
+import dex.structure.DexFile;
+
+import org.junit.Test;
+
+import java.io.IOException;
+
+public class LargeDexTests extends DexTestsCommon{
+   
+    /**
+     * Tests parsing a class with 10000 Fields.
+     */
+    @Test
+    public void testManyFields() throws IOException{
+        String CLASS_NAME = "L0";
+        int NR_OF_FIELDS = 10000;
+        StringBuilder b = new StringBuilder();
+        b.append("public class ").append(CLASS_NAME).append("{\n");
+        for (int i = 0; i < NR_OF_FIELDS; i++) {
+            b.append("\tpublic int f").append(i).append(";\n");
+        }
+        b.append("}\n");
+        
+        JavaSource source = new JavaSource(CLASS_NAME, b.toString());
+        DexFile dexFile = javaToDexUtil.getFrom(source);
+        assertEquals(1, dexFile.getDefinedClasses().size());
+        DexClass clazz = dexFile.getDefinedClasses().get(0);
+        assertEquals("LL0;", clazz.getName());
+        assertPublic(clazz);
+        assertEquals(NR_OF_FIELDS, clazz.getFields().size());
+    }
+}
diff --git a/tools/dex-tools/test/dex/reader/util/JavaSource.java b/tools/dex-tools/test/dex/reader/util/JavaSource.java
new file mode 100644
index 0000000..f117f52
--- /dev/null
+++ b/tools/dex-tools/test/dex/reader/util/JavaSource.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URI;
+
+import javax.tools.SimpleJavaFileObject;
+
+/**
+ * {@code JavaSource} represents an in-memory java source.
+ */
+public class JavaSource extends SimpleJavaFileObject {
+    private String src;
+    private final String sourceName;
+
+    public JavaSource(String sourceName, String sourceCode) {
+        super(URI.create("string:///" + sourceName.replace(".", "/") + ".java"),
+                Kind.SOURCE);
+        this.sourceName = sourceName;
+        this.src = sourceCode;
+    }
+    
+    @Override
+    public String getName() {
+       return sourceName;
+    }
+    
+    public CharSequence getCharContent(boolean ignoreEncodingErrors) {
+        return src;
+    }
+
+    public OutputStream openOutputStream() {
+        throw new IllegalStateException();
+    }
+
+    public InputStream openInputStream() {
+        return new ByteArrayInputStream(src.getBytes());
+    }
+}
\ No newline at end of file
diff --git a/tools/dex-tools/test/dex/reader/util/JavaSourceToDexUtil.java b/tools/dex-tools/test/dex/reader/util/JavaSourceToDexUtil.java
new file mode 100644
index 0000000..8037b95
--- /dev/null
+++ b/tools/dex-tools/test/dex/reader/util/JavaSourceToDexUtil.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader.util;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.tools.Diagnostic;
+import javax.tools.DiagnosticCollector;
+import javax.tools.JavaCompiler;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.ToolProvider;
+import javax.tools.JavaCompiler.CompilationTask;
+
+import com.android.dx.dex.cf.CfOptions;
+import com.android.dx.dex.cf.CfTranslator;
+import com.android.dx.dex.file.ClassDefItem;
+import com.android.dx.dex.file.DexFile;
+
+import dex.reader.DexBuffer;
+import dex.reader.DexFileReader;
+
+public class JavaSourceToDexUtil {
+    
+    public dex.structure.DexFile getFrom(JavaSource source) throws IOException{
+        return getAllFrom(Collections.singleton(source));
+    }
+    
+    public dex.structure.DexFile getFrom(JavaSource... source) throws IOException{
+        return getAllFrom(new HashSet<JavaSource>(Arrays.asList(source)));
+    }
+    
+    public dex.structure.DexFile getAllFrom(Set<JavaSource> sources) throws IOException{
+        return getFrom(sources, null);
+    }
+
+    /**
+     * Converts java source code to a {@link dex.structure.DexFile} loaded by
+     * {@link DexFileReader}. Converts only classes with the specified name in
+     * classesToDex or all classes if classesToDex is null.
+     * 
+     * @throws IOException
+     */
+    public dex.structure.DexFile getFrom(Set<JavaSource> sources,
+            Set<String> classesToDex) throws IOException {
+        Set<MemoryByteCode> byteCodeInMemory = compileToByteCode(sources);
+
+        byte[] dexCode = convertToDexCode(byteCodeInMemory, classesToDex);
+        DexBuffer dexBuffer = new DexBuffer(dexCode);
+        DexFileReader reader = new DexFileReader();
+        return reader.read(dexBuffer);
+    }
+    
+
+    private byte[] convertToDexCode(Set<MemoryByteCode> byteCodeInMemory, Set<String> classNamesToDex) throws IOException {
+        CfOptions cfOptions = new CfOptions();
+        DexFile dexFile = new DexFile();
+        for (MemoryByteCode memoryByteCode : byteCodeInMemory) {
+            if(classNamesToDex == null || classNamesToDex.contains(memoryByteCode.getName())) {
+            ClassDefItem classDefItem = CfTranslator.translate(memoryByteCode.getName().replace('.', '/') +".class", memoryByteCode.getBytes(), cfOptions);
+            dexFile.add(classDefItem);
+            }
+        }
+        return dexFile.toDex(null, false);
+    }
+
+
+    public Set<MemoryByteCode> compileToByteCode(Set<JavaSource> source) {
+        JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
+        DiagnosticCollector<JavaFileObject> diacol = new DiagnosticCollector<JavaFileObject>();
+        StandardJavaFileManager sjfm = javac.getStandardFileManager(diacol,
+                null, null);
+        SpecialJavaFileManager xfm = new SpecialJavaFileManager(sjfm);
+        
+        CompilationTask compile = javac.getTask(null, xfm, diacol, Arrays
+                .asList(new String[] {"-classpath", "."}), null, source);
+        boolean success = compile.call();
+        if(!success) {
+        StringBuilder errorMessage = new StringBuilder();
+            for (Diagnostic<? extends JavaFileObject> dia : diacol.getDiagnostics()) {
+                errorMessage.append(dia);
+            }
+            throw new IllegalStateException(errorMessage.toString());
+        }
+        return xfm.getAllMemoryByteCodes();
+    }
+}
+
+
+
+
+
+
diff --git a/tools/dex-tools/test/dex/reader/util/MemoryByteCode.java b/tools/dex-tools/test/dex/reader/util/MemoryByteCode.java
new file mode 100644
index 0000000..4858cc5
--- /dev/null
+++ b/tools/dex-tools/test/dex/reader/util/MemoryByteCode.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader.util;
+
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URI;
+
+import javax.tools.SimpleJavaFileObject;
+
+/**
+ * {@code MemoryByteCode} represents an in-memory java byte code.
+ */
+/* package */ class MemoryByteCode extends SimpleJavaFileObject {
+    private ByteArrayOutputStream baos;
+    private final String name;
+
+    public MemoryByteCode(String name) {
+        super(URI.create("byte:///" + name.replace(".", "/") + ".class"),
+                Kind.CLASS);
+        this.name = name;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    public CharSequence getCharContent(boolean ignoreEncodingErrors) {
+        throw new IllegalStateException();
+    }
+
+    public OutputStream openOutputStream() {
+        baos = new ByteArrayOutputStream();
+        return baos;
+    }
+
+    public InputStream openInputStream() {
+        throw new IllegalStateException();
+    }
+
+    public byte[] getBytes() {
+        return baos.toByteArray();
+    }
+}
diff --git a/tools/dex-tools/test/dex/reader/util/SpecialJavaFileManager.java b/tools/dex-tools/test/dex/reader/util/SpecialJavaFileManager.java
new file mode 100644
index 0000000..e280661
--- /dev/null
+++ b/tools/dex-tools/test/dex/reader/util/SpecialJavaFileManager.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dex.reader.util;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import javax.tools.FileObject;
+import javax.tools.ForwardingJavaFileManager;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+
+/**
+ * {@code SpecialJavaFileManager} is a file manager which returns
+ * {@link MemoryByteCode} objects for its output and keeps track of them.
+ */
+/* package */ class SpecialJavaFileManager extends
+        ForwardingJavaFileManager<StandardJavaFileManager> {
+
+    private Map<String, MemoryByteCode> store;
+
+    public SpecialJavaFileManager(StandardJavaFileManager sjfm) {
+        super(sjfm);
+        store = new HashMap<String, MemoryByteCode>();
+    }
+
+    public JavaFileObject getJavaFileForOutput(Location location, String name,
+            JavaFileObject.Kind kind, FileObject sibling) {
+        MemoryByteCode mbc = new MemoryByteCode(name);
+        store.put(name, mbc);
+        return mbc;
+    }
+
+    public Set<MemoryByteCode> getAllMemoryByteCodes() {
+        return new HashSet<MemoryByteCode>(store.values());
+    }
+
+    public MemoryByteCode getMemoryByteCode(String className) {
+        return store.get(className);
+    }
+}
diff --git a/tools/dx-tests/Android.mk b/tools/dx-tests/Android.mk
new file mode 100644
index 0000000..9dee47d
--- /dev/null
+++ b/tools/dx-tests/Android.mk
@@ -0,0 +1,73 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH := $(call my-dir)
+
+# run-dx-tests host module
+#===========================================================
+
+include $(CLEAR_VARS)
+LOCAL_IS_HOST_MODULE := true
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_MODULE := dx-tests
+
+LOCAL_JAVA_LIBRARIES := dx
+
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+ALL_SRC_FILES := $(patsubst ./%,%,$(shell cd $(LOCAL_PATH) && find src/dxc/junit -name "*.java" -o -name "*.j" -o -name "*.cfh"))
+ABSOLUTE_SRC_FILES := $(addprefix $(LOCAL_PATH)/,$(ALL_SRC_FILES))
+
+$(LOCAL_BUILT_MODULE): PRIVATE_CURRENT_MODULE_SCRIPT := $(LOCAL_PATH)/etc/compileall
+$(LOCAL_BUILT_MODULE): PRIVATE_BASE := $(LOCAL_PATH)
+$(LOCAL_BUILT_MODULE): PRIVATE_INTERMEDIATES := $(intermediates)
+$(LOCAL_BUILT_MODULE): $(DX) $(TARGET_OUT_EXECUTABLES)/dalvikvm
+$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/etc/starttests $(LOCAL_PATH)/etc/compileall ${ABSOLUTE_SRC_FILES} $(HOST_OUT_JAVA_LIBRARIES)/dx.jar $(HOST_OUT_JAVA_LIBRARIES)/cfassembler.jar | $(ACP)
+	@echo "Copy: $(PRIVATE_MODULE) ($@)"
+	$(copy-file-to-new-target)
+	$(hide) chmod 755 $@
+	@$(PRIVATE_CURRENT_MODULE_SCRIPT) "$(PRIVATE_BASE)" "$(HOST_JAVAC)" "$(PRIVATE_INTERMEDIATES)" "$(HOST_OUT_JAVA_LIBRARIES)/dx.jar:$(HOST_OUT_JAVA_LIBRARIES)/cfassembler.jar"
+
+# cfassembler host module
+#============================================================
+
+include $(CLEAR_VARS)
+
+LOCAL_IS_HOST_MODULE := true
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_MODULE := cfassembler
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(HOST_OUT_JAVA_LIBRARIES)/cfassembler$(COMMON_JAVA_PACKAGE_SUFFIX)
+$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/etc/cfassembler | $(ACP)
+	@echo "Copy: $(PRIVATE_MODULE) ($@)"
+	$(copy-file-to-new-target)
+	$(hide) chmod 755 $@
+
+INTERNAL_DALVIK_MODULES += $(LOCAL_INSTALLED_MODULE)
+
+# cfassembler java library
+# ============================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := src/dxconvext/ClassFileAssembler.java src/dxconvext/util/FileUtils.java
+LOCAL_JAR_MANIFEST := etc/cfassembler_manifest.txt
+
+LOCAL_MODULE:= cfassembler
+
+include $(BUILD_HOST_JAVA_LIBRARY)
+
+INTERNAL_DALVIK_MODULES += $(LOCAL_INSTALLED_MODULE)
diff --git a/tools/dx-tests/dx-tests.css b/tools/dx-tests/dx-tests.css
new file mode 100644
index 0000000..a315a73
--- /dev/null
+++ b/tools/dx-tests/dx-tests.css
@@ -0,0 +1,59 @@
+h1 {
+    font-family: serif;
+    color: #222266;
+}
+
+h2 {
+    font-family: serif;
+    border-top-style: solid;
+    border-top-width: 2px;
+    border-color: #ccccdd;
+    padding-top: 12px;
+    margin-top: 48px;
+    margin-bottom: 2px;
+    color: #222266;
+}
+
+@media print {
+    table {
+        font-size: 8pt;
+    }
+}
+
+@media screen {
+    table {
+        font-size: 10pt;
+    }
+}
+
+
+/* general for all tables */
+
+table {
+    border-collapse: collapse;
+    margin-top: 24px;
+    margin-bottom: 24px;
+    margin-left: 48px;
+    margin-right: 48px;
+}
+
+table th {
+    font-family: sans-serif;
+    background: #aabbff;
+    text-align: left;
+}
+
+table td {
+    font-family: sans-serif;
+    border-top-style: solid;
+    border-bottom-style: solid;
+    border-width: 1px;
+    border-color: #aaaaff;
+    padding-top: 4px;
+    padding-bottom: 4px;
+    padding-left: 4px;
+    padding-right: 6px;
+    background: #eeeeff;
+    margin-top: 4pt;
+    margin-bottom: 0pt;
+}
diff --git a/tools/dx-tests/dx-tests.html b/tools/dx-tests/dx-tests.html
new file mode 100644
index 0000000..832f701
--- /dev/null
+++ b/tools/dx-tests/dx-tests.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html>
+  <head>
+    <title>DX Converter Test Suite</title>
+    <link rel=stylesheet href="dx-tests.css">
+  </head>
+
+  <body>
+    <h1>DX Converter Test Suite</h1>
+    <p>Version 1.0</p>
+    <p>Copyright &copy; 2008 The Android Open Source Project
+
+    <h2>Overview</h2>
+
+    <p>    
+      This directory contains a test suite for the DX converter. It tests the
+      capabilities of the DX converter in a black-box manner, based on the
+      usual specifications for <code>.class</code> files. The suite does both
+      functional and verifier tests. Regarding the latter, the DX converter has
+      only limited bytecode verification capabilities, but the combination of DX
+      and the Dalvik VM is supposed to perform bytecode verification equivalent
+      to that done in other virtual machines. Please see
+        
+      <pre>
+        docs/dalvik/java-constraints.html
+        docs/dalvik/verifier.html
+      </pre>
+        
+      for further details.
+    </p>
+
+    <h2>How to build</h2>
+    
+    <p>
+      The test suite is normally included in a full build of the Android
+      project. If it needs to be built individually, a simple
+        
+      <pre>
+        make dx-tests
+      </pre>
+        
+      or an
+        
+      <pre>
+        mm
+      </pre>
+        
+      in this directory will do.
+    </p>
+
+    <h2>How to run</h2>
+        
+    <p>
+      The suite can be invoked by executing
+    
+      <pre>
+        dx-tests
+      </pre>
+    
+      from any location, assuming the suite has been built. This will run
+      all tests. If you want to limit the suite to the test cases
+      corresponding to a single instruction, you can specifiy the mnemonic
+      as a parameter. For example
+
+      <pre>
+        dx-tests anewarray
+      </pre>
+      
+      executes the tests for the <code>anewarray</code> instruction.
+      Please see the corresponding specification for all the mnemonics. Two
+      additional parameters are possible that don't represent instructions.
+      These run sanity checks for the suite itself and general verifier tests,
+      respectively: 
+
+      <pre>
+        dx-tests sanity
+        dx-tests verifier
+      </pre>
+
+      The suite is normally run for the fast version of the interpreter. To run
+      it for the portable interpreter, pass <code>--portable</code> as the first
+      parameter. Passing <code>--help</code> results in a brief overview of the
+      options.
+    </p>
+
+    <p>      
+      The suite is compatible with both emulator and simulator 
+      builds. For an emulator build, please make sure you have
+      either an emulator running or a device attached via USB before
+      invoking the test suite.
+    </p>
+
+    <p>
+      The suite might easily take 30 minutes or more for execution,
+      depending on the environment. It will generate a full HTML
+      report with details on all test cases. While running, console output
+      is produced to give a quick impression of the progress and results.
+      For both types of output, each individual test results falls into one of
+      the following categories:
+    </p>
+            
+    <table>
+      <tr>
+        <th>Type in report</th><th>Type on console</th><th>Description</th>
+      </tr>
+      <tr>
+        <td>Success</td>
+        <td>.</td>
+        <td>
+          The test case passed successfully.
+        </td>
+      </tr>
+      <tr>
+        <td>Functional failure</td>
+        <td>F</td>
+        <td>
+          A functional (normal or boundary) or an exception test case
+          failed.
+        </td>
+        </tr>
+        <tr>
+          <td>Verifier failure</td>
+          <td>V</td>
+          <td>
+            A verifier test case failed. Either the verifier accepted
+            some invalid piece of code or it rejected a valid one.
+          </td>
+        </tr>
+        <tr>
+          <td>Warning</td>
+          <td>W</td>
+          <td>
+            A verifier test case threw <code>VerifyError</code>, where a
+            different VM would have thrown a different exception. This is
+            specified Dalvik behavior, though, hence just the warning.
+          </td>
+        </tr>
+      </table> 
+  </body>
+</html>
diff --git a/tools/dx-tests/etc/cfassembler b/tools/dx-tests/etc/cfassembler
new file mode 100644
index 0000000..e05f4ae
--- /dev/null
+++ b/tools/dx-tests/etc/cfassembler
@@ -0,0 +1,66 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Set up prog to be the path of this script, including following symlinks,
+# and set up progdir to be the fully-qualified pathname of its directory.
+prog="$0"
+while [ -h "${prog}" ]; do
+    newProg=`/bin/ls -ld "${prog}"`
+    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
+    if expr "x${newProg}" : 'x/' >/dev/null; then
+        prog="${newProg}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${newProg}"
+    fi
+done
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+jarfile=cfassembler.jar
+libdir="$progdir"
+if [ ! -r "$libdir/$jarfile" ]
+then
+    libdir=`dirname "$progdir"`/tools/lib
+fi
+if [ ! -r "$libdir/$jarfile" ]
+then
+    libdir=`dirname "$progdir"`/framework
+fi
+if [ ! -r "$libdir/$jarfile" ]
+then
+    echo `basename "$prog"`": can't find $jarfile"
+    exit 1
+fi
+
+javaOpts=""
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "$1" : '-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    shift
+done
+
+if [ "$OSTYPE" = "cygwin" ] ; then
+    jarpath=`cygpath -w  "$libdir/$jarfile"`
+else
+    jarpath="$libdir/$jarfile"
+fi
+
+exec java $javaOpts -jar "$jarpath" "$@"
diff --git a/tools/dx-tests/etc/cfassembler_manifest.txt b/tools/dx-tests/etc/cfassembler_manifest.txt
new file mode 100644
index 0000000..382adc6
--- /dev/null
+++ b/tools/dx-tests/etc/cfassembler_manifest.txt
@@ -0,0 +1 @@
+Main-Class: dxconvext.ClassFileAssembler
diff --git a/tools/dx-tests/etc/compileall b/tools/dx-tests/etc/compileall
new file mode 100755
index 0000000..42b198e
--- /dev/null
+++ b/tools/dx-tests/etc/compileall
@@ -0,0 +1,113 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+echo "building dx-test-suite"
+#
+# generates .class files from the .j (jasmin) and .cfh (hex format) files for the dxconverter test project.
+# the dx executable must be on the PATH.
+# only for lunch 2 at the moment - TODO check which commands are available in busybox/toolbox on the device
+#
+
+prog="$0"
+while [ -h "${prog}" ]; do
+    newProg=`/bin/ls -ld "${prog}"`
+    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
+    if expr "x${newProg}" : 'x/' >/dev/null; then
+        prog="${newProg}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${newProg}"
+    fi
+done
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+libdir=`dirname $progdir`/framework
+
+javaOpts=""
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "$1" : '-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    shift
+done
+
+#echo "progdir: $progdir"
+#echo "android build top: $ANDROID_BUILD_TOP"
+project_home=$1
+javac=$2
+tmpdir=$3 # ANDROID_BUILD_TOP/$3
+dxjarpath=$4
+project_src=$project_home/src
+project_lib=$project_home/lib
+project_data=$project_home/data
+javac_out=$tmpdir/classout
+javafiles=$tmpdir/_javafiles
+mainfilesdir=$tmpdir/mainfiles
+mainfileslist=$tmpdir/_mainfileslist
+
+#echo "home: $project_home"
+
+if [ "$tmpdir" = "" ]; then
+    echo "error: intermediates dir not set/found!!";
+    exit 1;
+else
+    echo "tmp/intermediates dir (rel): $tmpdir"
+fi
+rm -rf --preserve-root $javac_out
+rm -rf --preserve-root $javafiles
+
+# compile all files from javafiles
+echo "compiling all java files (with package dxc.junit.**)"
+find $project_src/dxc/junit -name '*.java' > $javafiles
+echo "$project_src/util/CollectAllTests.java" >> $javafiles
+mkdir -p $javac_out
+jfiles=\@$javafiles
+javac -d $javac_out -classpath ${dxjarpath} -sourcepath $project_src $jfiles
+
+echo "compiling all jasmin (*.j)"
+
+find $project_src/dxc/junit -name '*.j' | sort > $tmpdir/alljasminfiles
+java -classpath $project_home/utilclasses:$project_lib/jasmin.jar util.CompileAllJasmin $tmpdir/alljasminfiles $javac_out  &> /dev/null
+
+echo "compiling all .cfh files into .class files"
+for acfhfile in `find $project_src/dxc/junit -name '*.cfh'`
+do
+    #echo "cfh file:$acfhfile"
+    java -classpath ${dxjarpath} dxconvext.ClassFileAssembler $acfhfile $javac_out &> /dev/null
+done
+
+echo "generating Main_*.java files reading from $project_home writing to $mainfilesdir"
+mkdir -p $mainfilesdir
+# generate the Main_*.java files
+java -cp $project_lib/junit.jar:$javac_out util.CollectAllTests $project_home $mainfilesdir 
+# compile the Main_*.java files
+find $mainfilesdir/dxc/junit -name '*.java' > $mainfileslist
+echo "compile the Main_*.java files"
+javac -d $javac_out -classpath $project_lib/junit.jar:$javac_out -sourcepath $mainfilesdir \@$mainfileslist
+
+# now copy relevant data from intermediates dir to its final destination
+fdest=$ANDROID_BUILD_TOP/out/target/common/cts/dxconverter
+mkdir -p $fdest/data
+acp -r $javac_out $fdest/
+acp $mainfilesdir/data/scriptdata $fdest/data/scriptdata
+
+echo "dxconverter test suite sucessfully built!"
+echo "intermediate Main_*.java files (for stacktrace analysis) can be found under $mainfilesdir" 
+
diff --git a/tools/dx-tests/etc/morescripts/countTests.sh b/tools/dx-tests/etc/morescripts/countTests.sh
new file mode 100755
index 0000000..ff0b323
--- /dev/null
+++ b/tools/dx-tests/etc/morescripts/countTests.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+cd ../../src
+
+echo "normal tests (testN...): "
+egrep -R 'public void testN[0-9][0-9]?' * | grep ".java" | sed -e '/.svn/d' | sort | wc -l
+
+echo "border egde tests (testB...): "
+egrep -R 'public void testB[0-9][0-9]?' * | grep ".java" | sed -e '/.svn/d' | sort | wc -l
+
+echo "exception tests (testE...): "
+egrep -R 'public void testE[0-9][0-9]?' * | grep ".java" | sed -e '/.svn/d' | sort | wc -l
+
+echo "verify error tests (testVFE...): "
+egrep -R 'public void testVFE[0-9][0-9]?' * | grep ".java" | sed -e '/.svn/d' | sort | wc -l
diff --git a/tools/dx-tests/etc/morescripts/detailCount.sh b/tools/dx-tests/etc/morescripts/detailCount.sh
new file mode 100755
index 0000000..c7aae42
--- /dev/null
+++ b/tools/dx-tests/etc/morescripts/detailCount.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#
+# sed -e '/.svn/d' |
+# ---------------------------------------------------------
+
+echo ">>> statistics about kind of tests (normal, border edge, exception, verify)"
+cd ../../src
+for mypack in `find dxc -maxdepth 4 -mindepth 4 -name "Test_*.java" | sort`
+do
+    resN=`egrep -c 'public void testN[0-9][0-9]?' $mypack`
+    resB=`egrep -c 'public void testB[0-9][0-9]?' $mypack`
+    resE=`egrep -c 'public void testE[0-9][0-9]?' $mypack`
+    resVFE=`egrep -c 'public void testVFE[0-9][0-9]?' $mypack`
+    echo "file:$mypack, N:$resN, B:$resB, E:$resE, VFE:$resVFE"
+done
diff --git a/tools/dx-tests/etc/starttests b/tools/dx-tests/etc/starttests
new file mode 100755
index 0000000..e43a00a
--- /dev/null
+++ b/tools/dx-tests/etc/starttests
@@ -0,0 +1,341 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Set up prog to be the path of this script, including following symlinks,
+# and set up progdir to be the fully-qualified pathname of its directory.
+
+prog="$0"
+while [ -h "${prog}" ]; do
+    newProg=`/bin/ls -ld "${prog}"`
+    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
+    if expr "x${newProg}" : 'x/' >/dev/null; then
+        prog="${newProg}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${newProg}"
+    fi
+done
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+libdir=`dirname $progdir`/framework
+
+javaOpts=""
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "$1" : '-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    shift
+done
+
+#exec java $javaOpts -jar $libdir/hat.jar "$@"
+
+#######################################################################
+# Original content of invocation script follows. Uses values cleverly
+# deduced by the above code.
+#######################################################################
+
+selection=$1
+interpreter="fast"
+if [ "$selection" = "--portable" ]; then
+    selection=$2;
+    interpreter="portable"
+fi
+
+datadir=/tmp/${USER}
+rm -rf --preserve-root $datadir/dalvik-cache
+mkdir -p $datadir
+mkdir -p $datadir/dalvik-cache
+
+base=$OUT
+framework=$base/system/framework
+export ANDROID_PRINTF_LOG=tag
+export ANDROID_LOG_TAGS='*:s' # was: jdwp:i dalvikvm:i dalvikvmi:i'
+export ANDROID_DATA=$datadir
+export ANDROID_ROOT=$base/system
+export LD_LIBRARY_PATH=$base/system/lib
+export DYLD_LIBRARY_PATH=$base/system/lib
+debug_opts="-Xcheck:jni"
+exe=$base/system/bin/dalvikvm
+bpath=$framework/core.jar
+BASEDIR=$ANDROID_BUILD_TOP/out/target/common/cts/dxconverter
+
+echo "--------------------------------------------------"
+echo "DX Converter Test Suite"
+echo "Version 1.0"
+echo "Copyright (c) 2008 The Android Open Source Project"
+echo ""
+
+if [ "$selection" = "--help" ]; then
+    echo "Usage: dx-tests [--help|--portable] [<mnemonic>]"
+    echo ""
+    echo "    --help      prints this help message"
+    echo "    --portable  uses the portable interpreter;"
+    echo "                default is the fast one"
+    echo ""
+    echo "    <mnemonic>  specifies the instruction to test;"
+    echo "                default is to run all tests"
+    echo ""
+    exit 1;
+fi
+
+# we need for launching: the dx tool, the dalvikvm executable, and the directory with all .class files
+# - prep dxcore.jar
+# - init reportfile
+# for each package as stated in data/scriptdata (like dxc/junit/opcode/aaload) do
+#   - clear tmpoutput
+#   - try to dx Test_opcode.class and all .class files in the ./jm directory into a classes.jar file
+#   - launch dalvikvm, let it write output &> to tmpoutput (surrounded by magic key for start/stop)
+#   - look at tmpoutput -> green or red test result
+#   - append the result to the report.html file (table form)
+#   - clear the tmpoutput, the classes.jar etc.
+# end for
+# - close the report file and cat its path to stdout
+
+# sanity checks:
+# dx around?
+curmode=""
+dx --version &> /dev/null
+if [ ! $? -eq 0 ]
+then
+    echo "error:could not start dx tool"
+    exit 1;
+fi
+ 
+if [ "$TARGET_SIMULATOR" = "true" ]; then
+    echo "Simulator mode, $interpreter interpreter";
+    curmode="simulator"
+    if [ -f $exe ]; then
+        version=`${exe} -version 2> /dev/null | grep -o "version.*$"`
+        echo "Using Dalvik VM ${version}"
+    else
+        echo "No Dalvik VM found at $exe";
+        exit 1;
+    fi
+else
+    echo "Emulator mode, $interpreter interpreter";
+    curmode="emulator"
+    version=`adb shell dalvikvm -version 2> /dev/null | grep -o "version.*$"`
+    if [ "${version}" != "" ]; then
+        echo "Using Dalvik VM ${version}"
+    else
+        echo "No emulator or device found";
+        exit 1;
+    fi
+fi
+
+echo ""
+
+latestpath=""
+curdate=`date`
+dxtmpdir=$BASEDIR/dxtmp
+dxruntmpdir=$BASEDIR/dxruntmp
+javac_out=$BASEDIR/classout
+report=$BASEDIR/report.html
+mkdir -p $dxtmpdir
+rm -f $report
+pre_report="<html><head><style>
+table tr.ok { background:#a0ffa0; }
+table tr.nok { background:#ffa0a0; }
+table tr.wok { background:#ffffa0; }
+table tr.lok { background:#aaaaff; }
+</style></head>
+<body>
+<h1>DX test suite results</h1>
+Generated $curdate (using the $curmode)
+<p>
+<table width='100%'>
+<tr><td>Status</td><td>Target</td><td>Category</td><td>Details</td></tr>"
+post_report="</body></html>"
+echo $pre_report > $report
+
+# ----------- generating dxcore.jar
+cd $javac_out
+# consists of dxc.junit.DxAbstractMain and dxc.junit.DxUtil
+dx --dex --positions=lines --output="$BASEDIR/dxcore.jar" dxc/junit/DxAbstractMain.class dxc/junit/DxUtil.class
+
+# ----------- generating jars for each opcode test ------------
+
+export jpassedcnt=0
+export jwarningcnt=0
+export jvfefailedcnt=0
+export jfailedcnt=0
+export jallcnt=0
+export jcolumns=0
+
+function classnameToPath()
+{
+    echo $1 | sed -e 's#\.#/#g;s#$#.class#'
+}
+
+function lecho()
+{
+    if [ ! -z $CTS_DX_DEBUG ]; then echo $@; fi
+}
+
+while read -u 3 myline;
+do
+    mainclass=`echo $myline | cut -d";" -f1` # e.g dxc.junit.verify.t482_9.Main_testVFE2
+    classfiles=`classnameToPath $mainclass`
+    
+    testclasses=`echo $myline | cut -d";" -f2` # e.g dxc.junit.verity.t482_9.jm.T_t482_9_1
+    
+    for testclass in $testclasses; do
+        classfiles="$classfiles "`classnameToPath $testclass`;
+    done
+    
+    jtitle=`echo $myline | cut -d";" -f3`
+    jcomment=`echo $myline | cut -d";" -f4`
+    details=`echo $myline | cut -d";" -f5`
+    
+    if [ "$selection" == "" ] || [ "$jtitle" == "$selection" ]; then
+    
+        (( jallcnt += 1 ))   
+    
+    
+        rm -rf --preserve-root $dxtmpdir/*
+        mkdir -p $dxtmpdir
+        cd $dxtmpdir            
+        
+        for testclass in $classfiles; do
+            lecho -n "dexing $testclass : "
+            mkdir -p `dirname ${dxtmpdir}/${testclass}`
+            cp ${javac_out}/${testclass} ${dxtmpdir}/${testclass}
+            
+            dx --dex --positions=lines $testclass &>/dev/null
+            
+            if [ $? -eq 0 ]; then
+                lecho " dexable";
+            else
+                lecho " not dexable->remove";
+                rm $testclass
+            fi
+        done
+        
+        dx --dex --positions=lines --output="$BASEDIR/dxclasses.jar" .
+            
+        # run the previously prepared jar files in the dalvik vm.
+        # the dalvik vm executable (dalvikvm) must be on the PATH.
+        # 
+        ### echo -n ">>> launch dalvikvm for class: $mainclass"
+        cd $BASEDIR
+        rm -f $BASEDIR/dalvikout
+        # write dalvik output to file
+        echo -n "mk_b:" > $BASEDIR/dalvikout
+            #echo ">>> launch dex package -classpath $BASEDIR/dxcore.jar:$BASEDIR/dxclasses.jar $mainclass"
+    
+        if [ "$TARGET_SIMULATOR" = "true" ]; then
+            ### echo " on simulator";
+            $valgrind $exe -Xint:$interpreter -Xmx512M -Xss32K -Xbootclasspath:$bpath -DacceptCNF=true -classpath $BASEDIR/dxcore.jar:$BASEDIR/dxclasses.jar $debug_opts $mainclass "$@" >> $BASEDIR/dalvikout 2>&1
+            RESULTCODE=$?
+            if [ ${RESULTCODE} -ne 0 ]; then
+                echo "execute dalvikvm failed with resultcode: ${RESULTCODE}" >> $BASEDIR/dalvikout 2>&1
+            fi
+        else
+            # adb shell dalvikvm -Xint:$interpreter -Djava.io.tmpdir=/data/local/tmp -classpath /data/dxcore.jar:/data/dxclasses.jar dxc.junit.opcodes.aload.Main_testN2
+            # either no output (ok) or
+            # java.lang.RuntimeException: test did not cause the expected verify error, but:java.lang.RuntimeException, msg:AssertionFailedError msg:expected a verification exception
+            #    at dxc.junit.DxUtil.checkVerifyException(DxUtil.java:65)
+            #    at dxc.junit.opcodes.aload.Test_aload.testVFE10(Test_aload.java:181)
+            #    at dxc.junit.opcodes.aload.Main_testVFE10.main(Main_testVFE10.java:5)
+            #    at dalvik.system.NativeStart.main(Native Method)
+        
+            ### echo " on emulator/device with adb push"
+            adb push $BASEDIR/dxcore.jar /data/dxcore.jar &> /dev/null
+            adb push $BASEDIR/dxclasses.jar /data/dxclasses.jar &> /dev/null
+            adb shell "dalvikvm -Djava.io.tmpdir=/data/local/tmp -classpath /data/dxcore.jar:/data/dxclasses.jar $mainclass && echo -n dvmpassed:" >> $BASEDIR/dalvikout 2>&1
+        fi
+        
+        echo -n "mk_s:" >> $BASEDIR/dalvikout
+        # verify tmpout only contains mkdxc_start;mkdxc_stop -> no system.out/err because of exception.
+            # if ok -> green report line else red report with info between mkdxc_start and stop
+        ### echo "vmresult: $vmresult"
+        vmresult=`cat $BASEDIR/dalvikout`
+        if [[ ("$vmresult" == "mk_b:mk_s:") || ("$vmresult" == "mk_b:dvmpassed:mk_s:") ]]; then
+            (( jpassedcnt += 1 )) 
+            echo "<tr class=\"ok\"><td>Success</td><td>$jtitle</td><td>$jcomment</td><td>$details</td></tr>" >> $report
+            ### echo " -> PASSED (passed:$jpassedcnt, failed:$jfailedcnt, vfe failed:$jvfefailedcnt, warnings:$jwarningcnt)"
+            echo -n "."
+        elif [[ ("$vmresult" == "mk_b:dvmvfe:mk_s:") || ("$vmresult" == "mk_b:dvmvfe:dvmpassed:mk_s:") ]]; then
+            (( jwarningcnt += 1 )) 
+            echo "<tr class=\"wok\"><td>Warning</td><td>$jtitle</td><td>$jcomment</td><td>Special behavior regarding VerifyError</td></tr>" >> $report
+            ### echo " -> WARNING (passed:$jpassedcnt, failed:$jfailedcnt, vfe failed:$jvfefailedcnt, warnings:$jwarningcnt)"
+            echo -n "W"
+        else
+           vmres=`cat $BASEDIR/dalvikout | sed -e 's/mk_b://;s/mk_s://'`
+           vmres="$details<br><pre>$vmres</pre>"    
+            # red with additional info if a VFE failed, red if either a N,B, or E failed
+            jtype=`echo "$mainclass" | sed -e 's/.*_test\([^0-9]*\)[0-9].*/\1/' `
+            if [ "$jtype" == "VFE" ]; then
+                (( jvfefailedcnt += 1 ))
+                echo -n "<tr class=\"nok\"><td>Verifier failure</td><td>$jtitle</td><td>$jcomment</td><td>$vmres</td></tr>" >> $report
+                ### echo " -> VFE FAILED (passed:$jpassedcnt, failed:$jfailedcnt, vfe failed:$jvfefailedcnt, warnings:$jwarningcnt)"
+                echo -n "V"
+            else
+                (( jfailedcnt += 1 )) 
+                echo -n "<tr class=\"nok\"><td>Functional failure</td><td>$jtitle</td><td>$jcomment</td><td>$vmres</td></tr>" >> $report
+                ### echo " -> FAILED (passed:$jpassedcnt, failed:$jfailedcnt, vfe failed:$jvfefailedcnt, warnings:$jwarningcnt)"
+                echo -n "F"
+            fi
+        fi
+        
+        (( jcolumns += 1 ))
+        if [ ${jcolumns} -eq 40 ]; then
+            echo ""
+            (( jcolumns = 0 ))
+        fi
+        
+    fi
+      
+done 3<$BASEDIR/data/scriptdata #we use fd nr 3 to avoid subshelling via cat since this looses all variables (and thus also the counters we are interested in).
+
+echo "</table>" >> $report
+let jallcalccnt=$jpassedcnt+$jfailedcnt+$jvfefailedcnt+$jwarningcnt
+if [ $jallcalccnt -ne $jallcnt ]; then
+    echo "<br>error: green & red != total , $jallcalccnt -ne $jallcnt" >> $report
+    exit 1;
+fi
+
+echo "<br>Tests run: ${jallcnt}" >> $report
+echo "<br>Functional failures: ${jfailedcnt}" >> $report
+echo "<br>Verifier failures: ${jvfefailedcnt}" >> $report
+echo "<br>Warnings: ${jwarningcnt}" >> $report
+
+echo $post_report >> $report
+
+if [[ jcolumns -ne 0 ]]; then
+    echo ""
+fi
+
+echo ""
+
+if [[ jallcnt -eq jpassedcnt ]]; then
+    echo "OK (${jpassedcnt} tests)"
+else
+    echo "FAILURES!!!"
+    echo ""
+    echo "Tests run          : ${jallcnt}"
+    echo "Functional failures: ${jfailedcnt}"
+    echo "Verifier failures  : ${jvfefailedcnt}"
+    echo "Warnings           : ${jwarningcnt}"
+fi
+
+echo ""
+echo "Please see complete report in ${report}"
+echo "--------------------------------------------------"
diff --git a/tools/dx-tests/lib/jasmin.jar b/tools/dx-tests/lib/jasmin.jar
new file mode 100644
index 0000000..87db0d0
--- /dev/null
+++ b/tools/dx-tests/lib/jasmin.jar
Binary files differ
diff --git a/tools/dx-tests/lib/junit.jar b/tools/dx-tests/lib/junit.jar
new file mode 100644
index 0000000..674d71e
--- /dev/null
+++ b/tools/dx-tests/lib/junit.jar
Binary files differ
diff --git a/tools/dx-tests/scripts/assemble_cfh.sh b/tools/dx-tests/scripts/assemble_cfh.sh
new file mode 100755
index 0000000..0c8e9c7
--- /dev/null
+++ b/tools/dx-tests/scripts/assemble_cfh.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# compiles all .cfh files into .class files
+abase=`pwd`
+srcd="$abase/src"
+cout=$abase/out/classes_cfh
+cp=$abase/out/classes_jasmin
+cp2=$abase/out/classes_javac
+
+echo "del old files"
+rm -rf $cout/*
+echo "done del"
+
+echo "src folder:$srcd"
+for myfile in `find $srcd -name "*.cfh"`
+do
+    echo "file:$myfile"
+    java -cp $cout:$cp:$cp2 dxconvext.ClassFileAssembler $myfile $cout
+done
+
+echo "Done!"
diff --git a/tools/dx-tests/scripts/collect_dasm_files.sh b/tools/dx-tests/scripts/collect_dasm_files.sh
new file mode 100644
index 0000000..d4275c0
--- /dev/null
+++ b/tools/dx-tests/scripts/collect_dasm_files.sh
@@ -0,0 +1,154 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+BASEDIR=`pwd`
+CLASSFOLDERS='out/classes_cfh out/classes_jasmin out/classes_javac'
+
+function findClassFile()
+{
+    i=0;
+    for path in $1; 
+    do
+        if [ -f ${path}/$2 ]; then
+            CLASSFOLDER=$path
+            return
+        fi
+    done
+}
+
+function mapOpcode()
+{
+    MAPPED_OPCODE=""
+    if [ -z $1 ]; then
+        MAPPED_OPCODE=""
+        return;
+    fi
+    
+    line=`grep -e "^$1    " ${BASEDIR}/data/opcode_mapping`
+    if [ $? -ne 0 ]; then
+        MAPPED_OPCODE=""
+    else
+        echo $line
+        MAPPED_OPCODE=`echo -n $line | cut -d" " -f2`
+    fi
+}
+
+while read -u 3 myline;
+do
+    jpackageclass=`echo $myline | cut -d";" -f1` # e.g dxc.junit.verify.t482_9.Main_testVFE2
+    jpackageclassfile=`echo $jpackageclass | sed -e 's/\./\//g;s/$/.java/'`
+    echo $jpackageclassfile
+    jtestclass=`echo $myline | cut -d";" -f2` # e.g dxc.junit.verity.t482_9.jm.T_t482_9_1
+    jtestclassfile=`echo $jtestclass | sed -e 's/\./\//g;s/$/.class/'`
+    jtestsourcefile=`echo $jtestclass | sed -e 's/\./\//g;s/$/.java/'`
+#    echo $jtestclassfile
+    
+rm -rf out/tmp
+mkdir -p out/tmp
+
+findClassFile "${CLASSFOLDERS}" $jtestclassfile
+cd ${CLASSFOLDER}
+cp -P --parent $jtestclassfile ${BASEDIR}/out/tmp/
+cd ${BASEDIR}
+
+#findClassFile "${CLASSFOLDERS}" $jpackageclassfile
+#cd ${CLASSFOLDER}
+#cp -P --parents $jpackageclassfile ${BASEDIR}/out/tmp/
+#cd ${BASEDIR}
+
+# echo ${CLASSFOLDER}/${jtestclassfile}
+
+OPCODE=`echo $jtestclass | sed -e 's/.*T_\(.*\)_[0-9]\+[_]*[a-z]*/\1/'`
+mapOpcode ${OPCODE}
+# echo ${OPCODE} " - " ${MAPPED_OPCODE}
+if [ -z ${MAPPED_OPCODE} ]; then
+    continue
+fi
+
+for subcode in `echo $MAPPED_OPCODE | cut -d";" -f1,2 --output-delimiter=" "`; do
+
+    SCRIPT="s#out/classes_[^/]*/dxc/\(.*\)/${OPCODE}/jm/T_${OPCODE}\(.*\)\.class#src/dot/\1/${subcode}/d/T_${subcode}\2.d#"
+    FILEDEST=`echo ${CLASSFOLDER}/${jtestclassfile} | sed -e $SCRIPT`
+    echo ${FILEDEST}
+#    SCRIPT="s#out/classes_[^/]*/dxc/\(.*\)${OPCODE}/Main_\(.*\)\.class#src/dot/\1/${subcode}/Main_\2.d#"
+#    FILEDEST=`echo ${CLASSFOLDER}/${jpackageclassfile} | sed -e $SCRIPT`
+#    echo ${FILEDEST}
+    
+    cd out/tmp
+    OUT=`dx --dex --no-optimize --positions=lines --output="/tmp/dxclasses.jar" ${jtestclassfile} 2>&1`
+    
+    if [ $? -eq 0 ]; then
+        cd ${BASEDIR}
+        mkdir -p `dirname ${FILEDEST}`
+        dexdump -g /tmp/dxclasses.jar > ${FILEDEST}
+        sed -i -e 's/dxc\([\.|\/]\)junit/dot\1junit/' ${FILEDEST}
+        SCRIPT="s/${OPCODE}\([\.|\/]\)jm\([\.|\/]\)/${subcode}\1d\2/g"
+        sed -i -e ${SCRIPT} ${FILEDEST}
+        SCRIPT="s/T_${OPCODE}/T_${subcode}/g"
+        sed -i -e ${SCRIPT} ${FILEDEST}
+        
+        SCRIPT="s#dxc/\(.*\)/${OPCODE}/\(.*\)#src/dot/\1/${subcode}/\2#"
+        jpackagedestfile=`echo ${jpackageclassfile} | sed -e $SCRIPT`
+        cp src/${jpackageclassfile} ${jpackagedestfile}
+        sed -i -e 's/dxc\([\.|\/]\)junit/dot\1junit/' ${jpackagedestfile}
+        SCRIPT="s/${OPCODE}\([\.|\/]\)jm\([\.|\/]\)/${subcode}\1d\2/g"
+        sed -i -e ${SCRIPT} ${jpackagedestfile}
+        SCRIPT="s/T_${OPCODE}/T_${subcode}/g"
+        sed -i -e ${SCRIPT} ${jpackagedestfile}
+        sed -i -e "s/\(package .*\)${OPCODE}/\1${subcode}/" ${jpackagedestfile}
+
+
+        SCRIPT="s#dxc/\(.*\)/${OPCODE}/jm/\(.*\)${OPCODE}\(.*\).class#src/dot/\1/${subcode}/d/\2${subcode}\3.java#"
+        jpackagedestfile=`echo ${jtestclassfile} | sed -e $SCRIPT`
+        cp src/${jtestsourcefile} ${jpackagedestfile}
+        sed -i -e 's/dxc\([\.|\/]\)junit/dot\1junit/' ${jpackagedestfile}
+        SCRIPT="s/${OPCODE}\([\.|\/]\)jm\([\.|\/|;]\)/${subcode}\1d\2/g"
+        sed -i -e ${SCRIPT} ${jpackagedestfile}
+        SCRIPT="s/T_${OPCODE}/T_${subcode}/g"
+        sed -i -e ${SCRIPT} ${jpackagedestfile}
+        sed -i -e "s/\(package .*\)${OPCODE}/\1${subcode}/" ${jpackagedestfile}
+        
+        srcdir=`dirname ${jtestsourcefile}`
+        for srcfile in `find src/${srcdir} -maxdepth 1 -type f ! -name "T_*.java" -a -name "*.java"`; do
+            echo $srcfile
+            SCRIPT="s#dxc/\(.*\)/${OPCODE}/jm/\(.*\).java#dot/\1/${subcode}/d/\2.java#"
+            jpackagedestfile=`echo ${srcfile} | sed -e $SCRIPT`
+            cp ${srcfile} ${jpackagedestfile}
+            sed -i -e 's/dxc\([\.|\/]\)junit/dot\1junit/' ${jpackagedestfile}
+            SCRIPT="s/${OPCODE}\([\.|\/]\)jm\([\.|\/|;]\)/${subcode}\1d\2/g"
+            sed -i -e ${SCRIPT} ${jpackagedestfile}
+            SCRIPT="s/T_${OPCODE}/T_${subcode}/g"
+            sed -i -e ${SCRIPT} ${jpackagedestfile}
+            sed -i -e "s/\(package .*\)${OPCODE}/\1${subcode}/" ${jpackagedestfile}
+        done
+        
+        srcdir=`dirname ${jpackageclassfile}`
+        for srcfile in `find src/${srcdir} -maxdepth 1 -type f ! -name "Main_*.java" -a ! -name "Test_*.java" -a -name "*.java"`; do
+            echo $srcfile
+            SCRIPT="s#dxc/\(.*\)/${OPCODE}/\(.*\)#dot/\1/${subcode}/\2#"
+            jpackagedestfile=`echo ${srcfile} | sed -e $SCRIPT`
+            cp -v ${srcfile} ${jpackagedestfile}
+        done
+        
+    else
+        echo "--- not dexable"
+    fi
+    cd ${BASEDIR}
+done
+
+
+done 3<$BASEDIR/data/scriptdata
+
diff --git a/tools/dx-tests/scripts/jm.sh b/tools/dx-tests/scripts/jm.sh
new file mode 100755
index 0000000..c9c1848
--- /dev/null
+++ b/tools/dx-tests/scripts/jm.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# 
+echo "compile jasmin files"
+rm -rf out/classes_jasmin/*
+java -jar lib/jasmin.jar -d out/classes_jasmin src/dxc/junit/**/**/**/*.j
+echo "Done!"
\ No newline at end of file
diff --git a/tools/dx-tests/scripts/validate-tests.sh b/tools/dx-tests/scripts/validate-tests.sh
new file mode 100755
index 0000000..df73cf1
--- /dev/null
+++ b/tools/dx-tests/scripts/validate-tests.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+# Quick and dirty way to validate the DX tests against a JVM. Note that
+# even the JVM has different bugs and verification behavior depending
+# on the version. The tests pass 100% for the following setup:
+# 
+# java version "1.6.0"
+# Java(TM) SE Runtime Environment (build 1.6.0-b105)
+# Java HotSpot(TM) Server VM (build 1.6.0-b105, mixed mode)
+#
+# Linux ... 2.6.18.5-gg42workstation-mixed64-32 #1 SMP
+# Tue Nov 25 21:45:59 PST 2008 x86_64 GNU/Linux
+#
+# You can only run the tests if the "dx-tests" target has been built before.
+# 
+java -cp ./lib/junit.jar:$ANDROID_BUILD_TOP/out/target/common/cts/dxconverter/classout/ junit.textui.TestRunner dxc.junit.AllTests
+
+
diff --git a/tools/dx-tests/src/dxc/Main.java b/tools/dx-tests/src/dxc/Main.java
new file mode 100644
index 0000000..04031da
--- /dev/null
+++ b/tools/dx-tests/src/dxc/Main.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc;
+
+import dxc.junit.AllTests;
+import junit.textui.TestRunner;
+
+/**
+ * Main class to run the jasmin tests.
+ */
+public class Main {
+    public static void main(String[] args) {
+        if (args.length == 0) {
+            System.out.println("Running all tests...");
+            TestRunner.run(AllTests.suite());
+        } else {
+            System.out.println("Running selected tests...");
+            TestRunner.main(args);
+        }
+        
+        Runtime.getRuntime().halt(0);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/AllTests.java b/tools/dx-tests/src/dxc/junit/AllTests.java
new file mode 100644
index 0000000..d5867bf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/AllTests.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite();
+        // tests basic functionality
+        suite.addTest(dxc.junit.argsreturns.AllTests.suite());
+        // tests all opcodes
+        suite.addTest(dxc.junit.opcodes.AllTests.suite());
+        // tests all constraints that should be enforced by the verifier,
+        // but which do apply to more than one bytecode
+        suite.addTest(dxc.junit.verify.AllTests.suite());
+        return suite;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/DxAbstractMain.java b/tools/dx-tests/src/dxc/junit/DxAbstractMain.java
new file mode 100644
index 0000000..157e489
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/DxAbstractMain.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dxc.junit;
+
+public class DxAbstractMain {
+    
+    static public void assertEquals(int expected, int actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals");
+    }
+
+    static public void assertEquals(long expected, long actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals");
+    }
+
+    static public void assertEquals(double expected, double actual, double delta) {
+        if(!(Math.abs(expected-actual) <= delta)) throw new RuntimeException("AssertionFailedError: not within delta");
+    }
+    
+    static public void assertEquals(Object expected, Object actual) {
+        if (expected == null && actual == null)
+            return;
+        if (expected != null && expected.equals(actual))
+            return;
+        throw new RuntimeException("AssertionFailedError: not the same");
+    }
+    
+    static public void assertTrue(boolean condition) {
+        if (!condition) throw new RuntimeException("AssertionFailedError: condition was false");
+    }
+    
+    static public void assertFalse(boolean condition) {
+        if (condition) throw new RuntimeException("AssertionFailedError: condition was true");
+    }
+    
+    static public void assertNotNull(Object object) {
+        if (object == null) throw new RuntimeException("AssertionFailedError: object was null");
+    }
+    
+    static public void assertNull(Object object) {
+        if (object != null) throw new RuntimeException("AssertionFailedError: object was not null");
+    }
+    
+    static public void fail(String message) {
+        throw new RuntimeException("AssertionFailedError msg:"+message);
+    }
+    
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/DxTestCase.java b/tools/dx-tests/src/dxc/junit/DxTestCase.java
new file mode 100644
index 0000000..00b57e8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/DxTestCase.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dxc.junit;
+
+import junit.framework.TestCase;
+
+public class DxTestCase extends TestCase {
+    
+    // omit the "extends TestCase" and uncomment the following methods if you would like to run the tests as rolled-out, separate tests.
+    
+    /*
+    static public void assertEquals(int expected, int actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals");
+    }
+
+    static public void assertEquals(long expected, long actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals");
+    }
+
+    static public void assertEquals(double expected, double actual, double delta) {
+        if(!(Math.abs(expected-actual) <= delta)) throw new RuntimeException("AssertionFailedError: not within delta");
+    }
+    
+    static public void assertEquals(Object expected, Object actual) {
+        if (expected == null && actual == null)
+            return;
+        if (expected != null && expected.equals(actual))
+            return;
+        throw new RuntimeException("AssertionFailedError: not the same");
+    }
+    
+    static public void assertTrue(boolean condition) {
+        if (!condition) throw new RuntimeException("AssertionFailedError: condition was false");
+    }
+    
+    static public void assertFalse(boolean condition) {
+        if (condition) throw new RuntimeException("AssertionFailedError: condition was true");
+    }
+    
+    static public void assertNotNull(Object object) {
+        if (object == null) throw new RuntimeException("AssertionFailedError: object was null");
+    }
+    
+    static public void assertNull(Object object) {
+        if (object != null) throw new RuntimeException("AssertionFailedError: object was not null");
+    }
+    
+    static public void fail(String message) {
+        throw new RuntimeException("AssertionFailedError msg:"+message);
+    }
+    */
+    
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/DxUtil.java b/tools/dx-tests/src/dxc/junit/DxUtil.java
new file mode 100644
index 0000000..f1c90b3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/DxUtil.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dxc.junit;
+
+public class DxUtil {
+    private static boolean isDalvik = false;
+    
+    static {
+        /**
+         * whether in case of a failure, also ClassNotFoundException is accepted.
+         * this makes sense for invalid classes that got rejected by the dx tools
+         * and thus do not exist in .dex format, so that this class missing means a
+         * the expected verify error (though at the dx tool level)
+         */
+//        String acnfS = System.getProperty("acceptCNF");
+//        isDalvik = (acnfS != null && acnfS.equals("true"));
+        //System.out.println("@DX:DxUtil:isDalik="+isDalvik);
+    }
+    
+    public static void checkVerifyException(Throwable t) {
+        // the dalvik vm and other vm handle verify errors differently (see the dalvik verifier)
+        // the dalvik vm only throws a VerifyError, whereas other vm can throw all subclasses of
+        // LinkageError:
+        // - ClassCircularityError
+        // - ClassFormatError
+        // - ExceptionInInitializerError
+        // - IncompatibleClassChangeError
+        // - NoClassDefFoundError
+        // - UnsatisfiedLinkError
+        // - VerifyError
+
+        // in case we are testing the dalvik, we also accept a ClassNotFoundException, 
+        // since that may happen when a verify error was thrown by the dx tool and thus no
+        // classes.dex was written at all. 
+        //System.out.println("@dx:debug:isDalvik:"+isDalvik);
+        /*
+        if ((t instanceof VerifyError || 
+                (isDalvik && t instanceof ClassNotFoundException) || 
+                (!isDalvik && !(t instanceof NoClassDefFoundError) 
+                        && t instanceof LinkageError))) {
+                // ok, this is what we expected
+            System.out.println("@dx:debug:vfe-ok: vfe was:"+t.getClass().getName()+", msg:"+t.getMessage());
+            return;
+        } else {
+            throw new RuntimeException("test did not cause the expected verify error, but:"+t.getClass().getName()+", msg:"+t.getMessage());
+        }
+*/
+        if (t instanceof VerifyError || t instanceof ClassNotFoundException || t instanceof LinkageError) {
+                if (t instanceof VerifyError) {
+                    if (((VerifyError)t).getMessage().contains("Main_")) {
+                        System.out.print("verify failed on Main_");
+                    }
+                }
+                // ok, this is what we expected
+        } else {
+            throw new RuntimeException("Verify error expected", t);
+        }
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/AllTests.java b/tools/dx-tests/src/dxc/junit/argsreturns/AllTests.java
new file mode 100644
index 0000000..fc32868
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/AllTests.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.argsreturns;
+
+import dxc.junit.argsreturns.pargsreturn.Test_pargsreturn;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite("Tests for basic java vm opcodes: "
+                + "calling method with parameters and return");
+        suite.addTestSuite(Test_pargsreturn.class);
+        return suite;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/Test_pargsreturn.java b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/Test_pargsreturn.java
new file mode 100644
index 0000000..e6f0f04
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/Test_pargsreturn.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.argsreturns.pargsreturn;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.argsreturns.pargsreturn.jm.T1;
+import dxc.junit.argsreturns.pargsreturn.jm.T2;
+import dxc.junit.argsreturns.pargsreturn.jm.T3;
+import dxc.junit.argsreturns.pargsreturn.jm.T4;
+
+public class Test_pargsreturn extends DxTestCase {
+
+    /**
+     * @title checks return value of a constant
+     */
+    public void testN1() {
+        assertEquals(1234, new T1().run());
+    }
+    
+    /**
+     * @title checks whether the correct int value is returned.
+     */
+    public void testN2() {
+        assertEquals(1234, new T2().run(1234));
+    }
+    
+    /**
+     * @title tests whether the correct int value is set.
+     */
+    public void testN3() {
+        T3 t = new T3();
+        t.run(1234);
+        assertEquals(1234, t.i1);
+    }
+
+    /**
+     * @title tests correct setting of field values
+     */
+    public void testN4() {
+        T4 t = new T4();
+        t.run(1234);
+        assertEquals(50000000000l, t.j1);
+        assertEquals(1234, t.i1);
+    }
+
+    
+    
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T1.j b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T1.j
new file mode 100644
index 0000000..46eb6b8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T1.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T1.java
+.class public dxc/junit/argsreturns/pargsreturn/jm/T1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+    sipush 1234
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T1.java b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T1.java
new file mode 100644
index 0000000..196ae8d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.argsreturns.pargsreturn.jm;
+
+public class T1 {
+    public int run() {
+        return 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T2.j b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T2.j
new file mode 100644
index 0000000..141877c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T2.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T2.java
+.class public dxc/junit/argsreturns/pargsreturn/jm/T2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T2.java b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T2.java
new file mode 100644
index 0000000..b89bfd3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.argsreturns.pargsreturn.jm;
+
+public class T2 {
+    public int run(int i) {
+        return i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T3.j b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T3.j
new file mode 100644
index 0000000..d4ead13
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T3.java
+.class public dxc/junit/argsreturns/pargsreturn/jm/T3
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)V
+    .limit stack 2
+    .limit locals 2
+    aload_0
+    iload_1
+    putfield dxc.junit.argsreturns.pargsreturn.jm.T3.i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T3.java b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T3.java
new file mode 100644
index 0000000..e50f39e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.argsreturns.pargsreturn.jm;
+
+public class T3 {
+    public int i1;
+    
+    public void run(int i) {
+        i1 = i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T4.j b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T4.j
new file mode 100644
index 0000000..1b294c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T4.java
+.class public dxc/junit/argsreturns/pargsreturn/jm/T4
+.super java/lang/Object
+
+.field public i1 I
+.field public j1 J
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)V
+    .limit stack 3
+    .limit locals 2
+    aload_0
+    iload_1
+    putfield dxc.junit.argsreturns.pargsreturn.jm.T4.i1 I
+
+    aload_0
+    ldc2_w 50000000000
+    putfield dxc.junit.argsreturns.pargsreturn.jm.T4.j1 J
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T4.java b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T4.java
new file mode 100644
index 0000000..bb8da48
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.argsreturns.pargsreturn.jm;
+
+public class T4 {
+    public int i1;
+    public long j1;
+    
+    public void run(int i) {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/AllTests.java b/tools/dx-tests/src/dxc/junit/opcodes/AllTests.java
new file mode 100644
index 0000000..2c49ccc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/AllTests.java
@@ -0,0 +1,250 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite("Tests for all java vm opcodes");
+        suite.addTestSuite(dxc.junit.opcodes.aaload.Test_aaload.class);
+        suite.addTestSuite(dxc.junit.opcodes.aastore.Test_aastore.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.aconst_null.Test_aconst_null.class);
+        suite.addTestSuite(dxc.junit.opcodes.aload.Test_aload.class);
+        suite.addTestSuite(dxc.junit.opcodes.aload_0.Test_aload_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.aload_1.Test_aload_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.aload_2.Test_aload_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.aload_3.Test_aload_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.anewarray.Test_anewarray.class);
+        suite.addTestSuite(dxc.junit.opcodes.areturn.Test_areturn.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.arraylength.Test_arraylength.class);
+        suite.addTestSuite(dxc.junit.opcodes.astore.Test_astore.class);
+        suite.addTestSuite(dxc.junit.opcodes.astore_0.Test_astore_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.astore_1.Test_astore_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.astore_2.Test_astore_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.astore_3.Test_astore_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.athrow.Test_athrow.class);
+        suite.addTestSuite(dxc.junit.opcodes.baload.Test_baload.class);
+        suite.addTestSuite(dxc.junit.opcodes.bastore.Test_bastore.class);
+        suite.addTestSuite(dxc.junit.opcodes.bipush.Test_bipush.class);
+        suite.addTestSuite(dxc.junit.opcodes.caload.Test_caload.class);
+        suite.addTestSuite(dxc.junit.opcodes.castore.Test_castore.class);
+        suite.addTestSuite(dxc.junit.opcodes.checkcast.Test_checkcast.class);
+        suite.addTestSuite(dxc.junit.opcodes.d2f.Test_d2f.class);
+        suite.addTestSuite(dxc.junit.opcodes.d2i.Test_d2i.class);
+        suite.addTestSuite(dxc.junit.opcodes.d2l.Test_d2l.class);
+        suite.addTestSuite(dxc.junit.opcodes.dadd.Test_dadd.class);
+        suite.addTestSuite(dxc.junit.opcodes.daload.Test_daload.class);
+        suite.addTestSuite(dxc.junit.opcodes.dastore.Test_dastore.class);
+        suite.addTestSuite(dxc.junit.opcodes.dcmpg.Test_dcmpg.class);
+        suite.addTestSuite(dxc.junit.opcodes.dcmpl.Test_dcmpl.class);
+        suite.addTestSuite(dxc.junit.opcodes.dconst_0.Test_dconst_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.dconst_1.Test_dconst_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.ddiv.Test_ddiv.class);
+        suite.addTestSuite(dxc.junit.opcodes.dload.Test_dload.class);
+        suite.addTestSuite(dxc.junit.opcodes.dload_0.Test_dload_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.dload_1.Test_dload_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.dload_2.Test_dload_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.dload_3.Test_dload_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.dmul.Test_dmul.class);
+        suite.addTestSuite(dxc.junit.opcodes.dneg.Test_dneg.class);
+        suite.addTestSuite(dxc.junit.opcodes.drem.Test_drem.class);
+        suite.addTestSuite(dxc.junit.opcodes.dreturn.Test_dreturn.class);
+        suite.addTestSuite(dxc.junit.opcodes.dstore.Test_dstore.class);
+        suite.addTestSuite(dxc.junit.opcodes.dstore_0.Test_dstore_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.dstore_1.Test_dstore_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.dstore_2.Test_dstore_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.dstore_3.Test_dstore_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.dsub.Test_dsub.class);
+        suite.addTestSuite(dxc.junit.opcodes.dup.Test_dup.class);
+        suite.addTestSuite(dxc.junit.opcodes.dup_x1.Test_dup_x1.class);
+        suite.addTestSuite(dxc.junit.opcodes.dup_x2.Test_dup_x2.class);
+        suite.addTestSuite(dxc.junit.opcodes.dup2.Test_dup2.class);
+        suite.addTestSuite(dxc.junit.opcodes.dup2_x1.Test_dup2_x1.class);
+        suite.addTestSuite(dxc.junit.opcodes.dup2_x2.Test_dup2_x2.class);
+        suite.addTestSuite(dxc.junit.opcodes.f2d.Test_f2d.class);
+        suite.addTestSuite(dxc.junit.opcodes.f2i.Test_f2i.class);
+        suite.addTestSuite(dxc.junit.opcodes.f2l.Test_f2l.class);
+        suite.addTestSuite(dxc.junit.opcodes.fadd.Test_fadd.class);
+        suite.addTestSuite(dxc.junit.opcodes.faload.Test_faload.class);
+        suite.addTestSuite(dxc.junit.opcodes.fastore.Test_fastore.class);
+        suite.addTestSuite(dxc.junit.opcodes.fcmpg.Test_fcmpg.class);
+        suite.addTestSuite(dxc.junit.opcodes.fcmpl.Test_fcmpl.class);
+        suite.addTestSuite(dxc.junit.opcodes.fconst_0.Test_fconst_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.fconst_1.Test_fconst_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.fconst_2.Test_fconst_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.fdiv.Test_fdiv.class);
+        suite.addTestSuite(dxc.junit.opcodes.fload.Test_fload.class);
+        suite.addTestSuite(dxc.junit.opcodes.fload_0.Test_fload_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.fload_1.Test_fload_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.fload_2.Test_fload_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.fload_3.Test_fload_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.fmul.Test_fmul.class);
+        suite.addTestSuite(dxc.junit.opcodes.fneg.Test_fneg.class);
+        suite.addTestSuite(dxc.junit.opcodes.frem.Test_frem.class);
+        suite.addTestSuite(dxc.junit.opcodes.freturn.Test_freturn.class);
+        suite.addTestSuite(dxc.junit.opcodes.fstore.Test_fstore.class);
+        suite.addTestSuite(dxc.junit.opcodes.fstore_0.Test_fstore_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.fstore_1.Test_fstore_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.fstore_2.Test_fstore_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.fstore_3.Test_fstore_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.fsub.Test_fsub.class);
+        suite.addTestSuite(dxc.junit.opcodes.getfield.Test_getfield.class);
+        suite.addTestSuite(dxc.junit.opcodes.getstatic.Test_getstatic.class);
+        suite.addTestSuite(dxc.junit.opcodes.opc_goto.Test_opc_goto.class);
+        suite.addTestSuite(dxc.junit.opcodes.goto_w.Test_goto_w.class);
+        suite.addTestSuite(dxc.junit.opcodes.i2b.Test_i2b.class);
+        suite.addTestSuite(dxc.junit.opcodes.i2c.Test_i2c.class);
+        suite.addTestSuite(dxc.junit.opcodes.i2d.Test_i2d.class);
+        suite.addTestSuite(dxc.junit.opcodes.i2f.Test_i2f.class);
+        suite.addTestSuite(dxc.junit.opcodes.i2l.Test_i2l.class);
+        suite.addTestSuite(dxc.junit.opcodes.i2s.Test_i2s.class);
+        suite.addTestSuite(dxc.junit.opcodes.iaload.Test_iaload.class);
+        suite.addTestSuite(dxc.junit.opcodes.iadd.Test_iadd.class);
+        suite.addTestSuite(dxc.junit.opcodes.iand.Test_iand.class);
+        suite.addTestSuite(dxc.junit.opcodes.iastore.Test_iastore.class);
+        suite.addTestSuite(dxc.junit.opcodes.iconst_m1.Test_iconst_m1.class);
+        suite.addTestSuite(dxc.junit.opcodes.iconst_0.Test_iconst_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.iconst_1.Test_iconst_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.iconst_2.Test_iconst_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.iconst_3.Test_iconst_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.iconst_4.Test_iconst_4.class);
+        suite.addTestSuite(dxc.junit.opcodes.iconst_5.Test_iconst_5.class);
+        suite.addTestSuite(dxc.junit.opcodes.idiv.Test_idiv.class);
+        suite.addTestSuite(dxc.junit.opcodes.if_acmpeq.Test_if_acmpeq.class);
+        suite.addTestSuite(dxc.junit.opcodes.if_acmpne.Test_if_acmpne.class);
+        suite.addTestSuite(dxc.junit.opcodes.if_icmpeq.Test_if_icmpeq.class);
+        suite.addTestSuite(dxc.junit.opcodes.if_icmpge.Test_if_icmpge.class);
+        suite.addTestSuite(dxc.junit.opcodes.if_icmpgt.Test_if_icmpgt.class);
+        suite.addTestSuite(dxc.junit.opcodes.if_icmple.Test_if_icmple.class);
+        suite.addTestSuite(dxc.junit.opcodes.if_icmplt.Test_if_icmplt.class);
+        suite.addTestSuite(dxc.junit.opcodes.if_icmpne.Test_if_icmpne.class);
+        suite.addTestSuite(dxc.junit.opcodes.ifeq.Test_ifeq.class);
+        suite.addTestSuite(dxc.junit.opcodes.ifge.Test_ifge.class);
+        suite.addTestSuite(dxc.junit.opcodes.ifgt.Test_ifgt.class);
+        suite.addTestSuite(dxc.junit.opcodes.ifle.Test_ifle.class);
+        suite.addTestSuite(dxc.junit.opcodes.iflt.Test_iflt.class);
+        suite.addTestSuite(dxc.junit.opcodes.ifne.Test_ifne.class);
+        suite.addTestSuite(dxc.junit.opcodes.ifnonnull.Test_ifnonnull.class);
+        suite.addTestSuite(dxc.junit.opcodes.ifnull.Test_ifnull.class);
+        suite.addTestSuite(dxc.junit.opcodes.iinc.Test_iinc.class);
+        suite.addTestSuite(dxc.junit.opcodes.iload.Test_iload.class);
+        suite.addTestSuite(dxc.junit.opcodes.iload_0.Test_iload_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.iload_1.Test_iload_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.iload_2.Test_iload_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.iload_3.Test_iload_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.imul.Test_imul.class);
+        suite.addTestSuite(dxc.junit.opcodes.ineg.Test_ineg.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.opc_instanceof.Test_opc_instanceof.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.invokeinterface.Test_invokeinterface.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.invokespecial.Test_invokespecial.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.invokestatic.Test_invokestatic.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.invokevirtual.Test_invokevirtual.class);
+        suite.addTestSuite(dxc.junit.opcodes.ior.Test_ior.class);
+        suite.addTestSuite(dxc.junit.opcodes.irem.Test_irem.class);
+        suite.addTestSuite(dxc.junit.opcodes.ireturn.Test_ireturn.class);
+        suite.addTestSuite(dxc.junit.opcodes.ishl.Test_ishl.class);
+        suite.addTestSuite(dxc.junit.opcodes.ishr.Test_ishr.class);
+        suite.addTestSuite(dxc.junit.opcodes.istore.Test_istore.class);
+        suite.addTestSuite(dxc.junit.opcodes.istore_0.Test_istore_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.istore_1.Test_istore_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.istore_2.Test_istore_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.istore_3.Test_istore_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.isub.Test_isub.class);
+        suite.addTestSuite(dxc.junit.opcodes.iushr.Test_iushr.class);
+        suite.addTestSuite(dxc.junit.opcodes.ixor.Test_ixor.class);
+        suite.addTestSuite(dxc.junit.opcodes.jsr.Test_jsr.class);
+        suite.addTestSuite(dxc.junit.opcodes.jsr_w.Test_jsr_w.class);
+        suite.addTestSuite(dxc.junit.opcodes.l2d.Test_l2d.class);
+        suite.addTestSuite(dxc.junit.opcodes.l2f.Test_l2f.class);
+        suite.addTestSuite(dxc.junit.opcodes.l2i.Test_l2i.class);
+        suite.addTestSuite(dxc.junit.opcodes.ladd.Test_ladd.class);
+        suite.addTestSuite(dxc.junit.opcodes.laload.Test_laload.class);
+        suite.addTestSuite(dxc.junit.opcodes.land.Test_land.class);
+        suite.addTestSuite(dxc.junit.opcodes.lastore.Test_lastore.class);
+        suite.addTestSuite(dxc.junit.opcodes.lcmp.Test_lcmp.class);
+        suite.addTestSuite(dxc.junit.opcodes.lconst_0.Test_lconst_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.lconst_1.Test_lconst_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.ldc.Test_ldc.class);
+        suite.addTestSuite(dxc.junit.opcodes.ldc_w.Test_ldc_w.class);
+        suite.addTestSuite(dxc.junit.opcodes.ldc2_w.Test_ldc2_w.class);
+        suite.addTestSuite(dxc.junit.opcodes.ldiv.Test_ldiv.class);
+        suite.addTestSuite(dxc.junit.opcodes.lload.Test_lload.class);
+        suite.addTestSuite(dxc.junit.opcodes.lload_0.Test_lload_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.lload_1.Test_lload_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.lload_2.Test_lload_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.lload_3.Test_lload_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.lmul.Test_lmul.class);
+        suite.addTestSuite(dxc.junit.opcodes.lneg.Test_lneg.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.lookupswitch.Test_lookupswitch.class);
+        suite.addTestSuite(dxc.junit.opcodes.lor.Test_lor.class);
+        suite.addTestSuite(dxc.junit.opcodes.lrem.Test_lrem.class);
+        suite.addTestSuite(dxc.junit.opcodes.lreturn.Test_lreturn.class);
+        suite.addTestSuite(dxc.junit.opcodes.lshl.Test_lshl.class);
+        suite.addTestSuite(dxc.junit.opcodes.lshr.Test_lshr.class);
+        suite.addTestSuite(dxc.junit.opcodes.lstore.Test_lstore.class);
+        suite.addTestSuite(dxc.junit.opcodes.lstore_0.Test_lstore_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.lstore_1.Test_lstore_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.lstore_2.Test_lstore_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.lstore_3.Test_lstore_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.lsub.Test_lsub.class);
+        suite.addTestSuite(dxc.junit.opcodes.lushr.Test_lushr.class);
+        suite.addTestSuite(dxc.junit.opcodes.lxor.Test_lxor.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.monitorenter.Test_monitorenter.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.monitorexit.Test_monitorexit.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.multianewarray.Test_multianewarray.class);
+        suite.addTestSuite(dxc.junit.opcodes.opc_new.Test_opc_new.class);
+        suite.addTestSuite(dxc.junit.opcodes.newarray.Test_newarray.class);
+        suite.addTestSuite(dxc.junit.opcodes.nop.Test_nop.class);
+        suite.addTestSuite(dxc.junit.opcodes.pop.Test_pop.class);
+        suite.addTestSuite(dxc.junit.opcodes.pop2.Test_pop2.class);
+        suite.addTestSuite(dxc.junit.opcodes.putfield.Test_putfield.class);
+        suite.addTestSuite(dxc.junit.opcodes.putstatic.Test_putstatic.class);
+        suite.addTestSuite(dxc.junit.opcodes.ret.Test_ret.class);
+        suite.addTestSuite(dxc.junit.opcodes.opc_return.Test_opc_return.class);
+        suite.addTestSuite(dxc.junit.opcodes.saload.Test_saload.class);
+        suite.addTestSuite(dxc.junit.opcodes.sastore.Test_sastore.class);
+        suite.addTestSuite(dxc.junit.opcodes.sipush.Test_sipush.class);
+        suite.addTestSuite(dxc.junit.opcodes.swap.Test_swap.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.tableswitch.Test_tableswitch.class);
+        suite.addTestSuite(dxc.junit.opcodes.wide.Test_wide.class);
+
+        return suite;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/Test_aaload.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/Test_aaload.java
new file mode 100644
index 0000000..eebfa92
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/Test_aaload.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aaload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.aaload.jm.T_aaload_1;
+
+public class Test_aaload extends DxTestCase {
+
+    /**
+     * @title Normal test. Trying different indexes 
+     */
+    public void testN1() {
+        T_aaload_1 t = new T_aaload_1();
+        String[] arr = new String[] {"a", "b"};
+        assertEquals("a", t.run(arr, 0));
+    }
+
+    /**
+     * @title Normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_aaload_1 t = new T_aaload_1();
+        String[] arr = new String[] {"a", "b"};
+        assertEquals("b", t.run(arr, 1));
+    }
+
+    /**
+     * @title ArrayIndexOutOfBoundsException expected
+     */
+    public void testE1() {
+        T_aaload_1 t = new T_aaload_1();
+        String[] arr = new String[] {"a", "b"};
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aioobe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Negative index. ArrayIndexOutOfBoundsException expected
+     */
+    public void testE2() {
+        T_aaload_1 t = new T_aaload_1();
+        String[] arr = new String[] {"a", "b"};
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aioobe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title NullPointerException expected
+     */
+    public void testE3() {
+        T_aaload_1 t = new T_aaload_1();
+        String[] arr = null;
+        try {
+            t.run(arr, 0);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.aaload.jm.T_aaload_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.aaload.jm.T_aaload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.aaload.jm.T_aaload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.aaload.jm.T_aaload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.aaload.jm.T_aaload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float[], int
+     */
+    public void testVFE6() {
+        try { // opcodes.aastore.jm
+            Class.forName("dxc.junit.opcodes.aaload.jm.T_aaload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.aaload.jm.T_aaload_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.aaload.jm.T_aaload_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_1.j
new file mode 100644
index 0000000..90ecad7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_1.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aaload_1.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    aaload
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_1.java
new file mode 100644
index 0000000..8cdd527
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_1 {
+    
+    public String run(String [] arr, int idx) {
+        return arr[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_2.j
new file mode 100644
index 0000000..6f906b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aaload_2.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+    .limit stack 2
+    .limit locals 3
+
+;    aload_1
+    iload_2
+    aaload
+
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_2.java
new file mode 100644
index 0000000..55c8238
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_2 {
+    
+    public String run(String [] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_3.j
new file mode 100644
index 0000000..370de70
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aaload_3.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+;    iload_2
+    aaload
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_3.java
new file mode 100644
index 0000000..0afdc21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_3 {
+    
+    public String run(String [] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_4.j
new file mode 100644
index 0000000..94d7275
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_4.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aaload_4.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/String;D)Ljava/lang/String;
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    dload_2
+    aaload
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_4.java
new file mode 100644
index 0000000..4505b73
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_4 {
+    
+    public String run(String [] arr, double idx) {
+        return arr[(int)idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_5.j
new file mode 100644
index 0000000..a34bcdc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aaload_5.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/String;J)Ljava/lang/String;
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    lload_2
+    aaload
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_5.java
new file mode 100644
index 0000000..33b3896
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_5 {
+    
+    public String run(String [] arr, long idx) {
+        return arr[(int)idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_6.j
new file mode 100644
index 0000000..e4dbc17
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aaload_6.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;[Ljava/lang/String;I)Ljava/lang/String;
+    .limit stack 2
+    .limit locals 4
+
+    aload_1
+    iload_3
+    aaload
+
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_6.java
new file mode 100644
index 0000000..35c428f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_6 {
+    
+    public String run(Object a, String[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_7.j
new file mode 100644
index 0000000..86a256d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aaload_7.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([F[Ljava/lang/String;I)Ljava/lang/String;
+    .limit stack 2
+    .limit locals 4
+
+    aload_1
+    iload_3
+    aaload
+
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_7.java
new file mode 100644
index 0000000..4456205
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_7 {
+    
+    public String run(float[] a, String[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_8.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_8.j
new file mode 100644
index 0000000..5cd99ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_8.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aaload_8.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([J[Ljava/lang/String;I)Ljava/lang/String;
+    .limit stack 2
+    .limit locals 4
+
+    aload_1
+    iload_3
+    aaload
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_8.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_8.java
new file mode 100644
index 0000000..1888233
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_8 {
+    
+    public String run(long[] a, String[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_9.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_9.j
new file mode 100644
index 0000000..27de7bc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_9.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aaload_9.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_0
+    aaload
+
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_9.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_9.java
new file mode 100644
index 0000000..33c3824
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_9 {
+    
+    public String run(String [] arr, int idx) {
+        return arr[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/Test_aastore.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/Test_aastore.java
new file mode 100644
index 0000000..419c7b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/Test_aastore.java
@@ -0,0 +1,235 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aastore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.aastore.jm.T_aastore_1;
+import dxc.junit.opcodes.aastore.jm.T_aastore_10;
+import dxc.junit.opcodes.aastore.jm.T_aastore_11;
+import dxc.junit.opcodes.aastore.jm.T_aastore_4;
+
+public class Test_aastore extends DxTestCase {
+
+    /**
+     * @title Normal test. Trying different indexes 
+     */
+    public void testN1() {
+        T_aastore_1 t = new T_aastore_1();
+        String[] arr = new String[2];
+        t.run(arr, 0, "hello");
+        assertEquals("hello", arr[0]);
+    }
+
+    /**
+     * @title Normal test. Trying different indexes 
+     */
+    public void testN2() {
+        T_aastore_1 t = new T_aastore_1();
+        String[] value = {"world", null, ""};
+        String[] arr = new String[2];
+        for (int i = 0; i < value.length; i++) {
+            t.run(arr, 1, value[i]);
+            assertEquals(value[i], arr[1]);
+        }
+    }
+
+    /**
+     * @title Normal test. Trying different indexes 
+     */
+    public void testN3() {
+        T_aastore_10 t = new T_aastore_10();
+        Integer[] arr = new Integer[2];
+        Integer value = new Integer(12345);
+        t.run(arr, 0, value);
+        assertEquals(value, arr[0]);
+    }
+
+    /**
+     * @title  Check assignement compatibility rules
+     */
+    public void testN4() {
+        // @uses dxc.junit.opcodes.aastore.jm.SubClass
+        // @uses dxc.junit.opcodes.aastore.jm.SuperClass
+        // @uses dxc.junit.opcodes.aastore.jm.SuperInterface
+        // @uses dxc.junit.opcodes.aastore.jm.SuperInterface2
+        T_aastore_11 t = new T_aastore_11();
+        assertEquals(3, t.run());
+
+    }
+
+    /**
+     * @title ArrayIndexOutOfBoundsException expected
+     */
+    public void testE1() {
+        T_aastore_1 t = new T_aastore_1();
+        String[] arr = new String[2];
+        try {
+            t.run(arr, arr.length, "abc");
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE2() {
+        T_aastore_1 t = new T_aastore_1();
+        String[] arr = new String[2];
+        try {
+            t.run(arr, -1, "abc");
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        T_aastore_1 t = new T_aastore_1();
+        String[] arr = null;
+        try {
+            t.run(arr, 0, "abc");
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayStoreException
+     */
+    public void testE4() {
+        T_aastore_4 t = new T_aastore_4();
+        String[] arr = new String[2];
+        try {
+            t.run(arr, 0, this);
+            fail("expected ArrayStoreException");
+        } catch (ArrayStoreException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.aastore.jm.T_aastore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.aastore.jm.T_aastore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double, String
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.aastore.jm.T_aastore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.aastore.jm.T_aastore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - object, int, String
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.aastore.jm.T_aastore_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float[], int, String
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.aastore.jm.T_aastore_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int, String
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.aastore.jm.T_aastore_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference, String
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.aastore.jm.T_aastore_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_1.j
new file mode 100644
index 0000000..abbd91c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aastore_1.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    aload_3
+    aastore
+
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_1.java
new file mode 100644
index 0000000..bea5c19
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_1 {
+
+    public void run(String[] arr, int idx, String value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_10.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_10.j
new file mode 100644
index 0000000..1dbfb4b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_10.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aastore_10.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/Integer;ILjava/lang/Integer;)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    aload_3
+    aastore
+
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_10.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_10.java
new file mode 100644
index 0000000..f94c166
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_10 {
+    
+    public void run(Integer[] arr, int idx, Integer value) {
+        arr[idx] = value;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_11.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_11.j
new file mode 100644
index 0000000..278f7f0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_11.j
@@ -0,0 +1,132 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aastore_11.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 20
+    .limit locals 10
+    
+    iconst_0
+    istore_1
+
+    iconst_1
+    anewarray dxc/junit/opcodes/aastore/jm/SubClass
+    astore_2    ; SubClass[]
+    
+    iconst_1
+    anewarray dxc/junit/opcodes/aastore/jm/SuperClass
+    astore_3    ; SuperClass[]
+    
+    new        dxc/junit/opcodes/aastore/jm/SubClass
+    dup
+    invokespecial dxc/junit/opcodes/aastore/jm/SubClass.<init>()V
+    astore 4    ; SubClass
+    
+    new        dxc/junit/opcodes/aastore/jm/SuperClass
+    dup
+    invokespecial dxc/junit/opcodes/aastore/jm/SuperClass.<init>()V
+    astore 5    ; SuperClass
+    
+    iconst_1
+    anewarray dxc/junit/opcodes/aastore/jm/SuperInterface
+    astore 6    ; SuperInterface[]
+    
+    iconst_1
+    anewarray java/lang/Object
+    astore 7    ; Object[]
+    
+    iconst_1
+    anewarray dxc/junit/opcodes/aastore/jm/SuperInterface2
+    astore 8    ; SuperInterface2[]    
+    
+; (SubClass -> SuperClass[])
+    aload 3
+    iconst_0
+    aload 4
+    aastore
+    
+; (SubClass -> SuperInterface[])
+    aload 6
+    iconst_0
+    aload 4
+    aastore
+    
+; (SubClass -> Object[])
+    aload 7
+    iconst_0
+    aload 4
+    aastore        
+        
+; !(SuperClass -> SubClass[])    
+Label1:
+    aload 2
+    iconst_0
+    aload 5
+Label10:        
+    nop
+    aastore
+Label11:    
+    goto Label2
+Label12:
+    pop
+    iinc 1 1
+    goto Label2
+        
+; !(SuperClass -> SuperInterface2[])    
+Label2:
+    aload 8
+    iconst_0
+    aload 5
+Label20:    
+    aastore
+Label21:    
+    goto Label3
+Label22:
+    pop
+    iinc 1 1
+    goto Label3
+
+; !(SubClass[] -> SuperInterface[])    
+Label3:
+    aload 6
+    iconst_0
+    aload 2
+Label30:    
+    aastore
+Label31:    
+    goto Label4
+Label32:    
+    pop
+    iinc 1 1
+    goto Label4
+
+Label4:
+Label6:        
+    iload_1
+    ireturn
+    
+.catch java/lang/ArrayStoreException from Label10 to Label11 using Label12
+.catch java/lang/ArrayStoreException from Label20 to Label21 using Label22
+.catch java/lang/ArrayStoreException from Label30 to Label31 using Label32
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_11.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_11.java
new file mode 100644
index 0000000..ad0c222
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_11 {
+    
+    public int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_12.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_12.j
new file mode 100644
index 0000000..ee00a4a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_12.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aastore_12.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_12
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+    .limit stack 3
+    .limit locals 4
+    
+    aload_1
+    aload_0
+    aload_3
+    aastore
+
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_12.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_12.java
new file mode 100644
index 0000000..c2b1c75
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_12 {
+    
+    public void run(String[] arr, int idx, String value) {
+        arr[idx] = value;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_2.j
new file mode 100644
index 0000000..2c9d227
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_2.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aastore_2.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+    .limit stack 3
+    .limit locals 4
+
+;    aload_1
+    iload_2
+    aload_3
+    aastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_2.java
new file mode 100644
index 0000000..39b0b09
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_2 {
+
+    public void run(String[] arr, int idx, String value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_3.j
new file mode 100644
index 0000000..531ab76
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aastore_3.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+;    aload_3
+    aastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_3.java
new file mode 100644
index 0000000..2f77f61
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_3 {
+
+    public void run(String[] arr, int idx, String value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_4.j
new file mode 100644
index 0000000..38b89e8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aastore_4.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([Ljava/lang/String;ILjava/lang/Object;)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    aload_3
+    aastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_4.java
new file mode 100644
index 0000000..3c6f558
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_4.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_4 {
+
+//  public void run(Integer[] arr, int idx) {
+    /* similar to
+     * Object x[] = new String[3];
+     * x[0] = new Integer(0);
+     */
+//  }
+    
+    public void run(String[] arr, int idx, Object a) {
+        //arr[idx] = a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_5.j
new file mode 100644
index 0000000..89e70cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aastore_5.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([Ljava/lang/String;DLjava/lang/String;)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+    aload 4
+    aastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_5.java
new file mode 100644
index 0000000..d063623
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_5 {
+
+    public void run(String[] arr, double idx, String value) {
+        arr[(int)idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_6.j
new file mode 100644
index 0000000..1e5e7ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_6.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aastore_6.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([Ljava/lang/String;IJ)V
+    .limit stack 4
+    .limit locals 5
+    
+    aload_1
+    iload_2
+    lload_3
+    aastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_6.java
new file mode 100644
index 0000000..449f21c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_6 {
+
+    public void run(String[] arr, int idx, String value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_7.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_7.j
new file mode 100644
index 0000000..b89c42f8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_7.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aastore_7.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ljava/lang/Object;ILjava/lang/String;)V
+    .limit stack 3
+    .limit locals 5
+
+    aload_1
+    iload_2
+    aload 3
+    aastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_7.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_7.java
new file mode 100644
index 0000000..082f5c2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_7 {
+    
+    public void run(Object a, String[] arr, int idx, String value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_8.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_8.j
new file mode 100644
index 0000000..d6fc147
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_8.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aastore_8.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([FILjava/lang/String;)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_2
+    aload 3
+    aastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_8.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_8.java
new file mode 100644
index 0000000..ef57088
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_8 {
+    
+    public void run(String a[], float[] arr, int idx, String value) {
+        a[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_9.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_9.j
new file mode 100644
index 0000000..83d163f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_9.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aastore_9.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_9
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([JILjava/lang/String;)V
+    .limit stack 3
+    .limit locals 5
+
+    aload_1
+    iload_2
+    aload 3
+    aastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_9.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_9.java
new file mode 100644
index 0000000..f5713a0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_9 {
+    
+    public void run(String a[], long[] arr, int idx, String value) {
+        a[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/TestStubs.java
new file mode 100644
index 0000000..190220f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/TestStubs.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+
+interface SuperInterface{
+    
+}
+
+interface SuperInterface2{
+    
+}
+
+class SuperClass implements SuperInterface{
+    
+}
+
+class SubClass extends SuperClass{
+
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/Test_aconst_null.java b/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/Test_aconst_null.java
new file mode 100644
index 0000000..531e559
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/Test_aconst_null.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aconst_null;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.aconst_null.jm.T_aconst_null_1;
+
+public class Test_aconst_null extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        assertEquals(null, new T_aconst_null_1().run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.aconst_null.jm.T_aconst_null_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_1.j b/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_1.j
new file mode 100644
index 0000000..fe997d2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_1.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.class public dxc/junit/opcodes/aconst_null/jm/T_aconst_null_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Ljava/lang/Object;
+    .limit stack 1
+    .limit locals 1
+
+    aconst_null
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_1.java
new file mode 100644
index 0000000..0cc8d33
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aconst_null.jm;
+
+public class T_aconst_null_1 {
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_2.j b/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_2.j
new file mode 100644
index 0000000..9993f2b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_2.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.class public dxc/junit/opcodes/aconst_null/jm/T_aconst_null_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Ljava/lang/Object;
+    .limit stack 0
+    .limit locals 1
+
+    aconst_null
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/Test_aload.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/Test_aload.java
new file mode 100644
index 0000000..cff192e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/Test_aload.java
@@ -0,0 +1,202 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.aload.jm.T_aload_1;
+import dxc.junit.opcodes.aload.jm.T_aload_1_w;
+import dxc.junit.opcodes.aload.jm.T_aload_2;
+import dxc.junit.opcodes.aload.jm.T_aload_2_w;
+
+/**
+ * NORMAL aload VERSION
+ */
+public class Test_aload extends DxTestCase {
+
+    /**
+     * @title  Test aload 1
+     */
+    public void testN1() {
+        T_aload_1 t = new T_aload_1();
+        assertEquals("hello", t.run());
+    }
+
+    /**
+     * @title  Test aload 255
+     */
+    public void testN2() {
+        T_aload_2 t = new T_aload_2();
+        assertEquals("hello", t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.21
+     * @title returnAddress may not be loaded from
+     * local variable
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE aload VERSION
+     */
+
+    /**
+     * @title  Test aload 257
+     */
+    public void testN3() {
+        T_aload_1_w t = new T_aload_1_w();
+        assertEquals("hello", t.run());
+    }
+
+    /**
+     * @title  Test aload_w 1
+     */
+    public void testN4() {
+        T_aload_2_w t = new T_aload_2_w();
+        assertEquals("hello", t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_5_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_6_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.21
+     * @title returnAddress may not be loaded from
+     * local variable
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_7_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1.j
new file mode 100644
index 0000000..8563239
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_1.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 3
+    .limit locals 2
+
+    ldc "hello"
+    astore_1
+    ldc "hi"
+    aload_1
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1.java
new file mode 100644
index 0000000..fb737be
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_1 {
+
+    public String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1_w.j
new file mode 100644
index 0000000..cb90bcb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_1_w.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_1_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 3
+    .limit locals 300
+
+    ldc "hello"
+    astore 257
+    ldc "hi"
+    aload 257
+
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1_w.java
new file mode 100644
index 0000000..eee3830
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_1_w {
+    
+    public String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2.j
new file mode 100644
index 0000000..2bd7bf4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_2.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 4
+    .limit locals 300
+
+    new java/lang/String
+    dup
+    ldc "hello"
+    astore 255
+    ldc "hi"
+    aload 255
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2.java
new file mode 100644
index 0000000..23b55e3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_2 {
+
+    public String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2_w.j
new file mode 100644
index 0000000..fb0bb5f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_2_w.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_2_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 3
+    .limit locals 2
+
+    ldc "hello"
+    astore_1
+    ldc "hi"
+    aload_w 1
+
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2_w.java
new file mode 100644
index 0000000..34ae0fd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_2_w {
+    
+    public String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3.j
new file mode 100644
index 0000000..0c5d5f2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_3.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 1
+
+    aload 1
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3.java
new file mode 100644
index 0000000..e09b3f3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_3 {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3_w.j
new file mode 100644
index 0000000..41696c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_3_w.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_3_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 300
+
+    aload 300
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3_w.java
new file mode 100644
index 0000000..1bda5b3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_3_w {
+    
+    public void run() {
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4.j
new file mode 100644
index 0000000..d14e595
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_4.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    fstore_1
+    fconst_1
+    fstore_2
+    
+    aload 1
+    
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4.java
new file mode 100644
index 0000000..a293d13
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_4 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4_w.j
new file mode 100644
index 0000000..c611274
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4_w.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_4_w.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_4_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 300
+
+    iconst_1
+    istore 260
+    iconst_1
+    istore 261
+    
+    aload_w 260
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4_w.java
new file mode 100644
index 0000000..17ee8f6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_4_w {
+    
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5.j
new file mode 100644
index 0000000..c568f54
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_5.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_1
+    
+    aload 1
+    
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5.java
new file mode 100644
index 0000000..21b90bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_5 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5_w.j
new file mode 100644
index 0000000..4c133fc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_5_w.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_5_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 300
+
+    dconst_1
+    dstore 260
+    dconst_1
+    dstore 261
+    
+    aload_w 260
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5_w.java
new file mode 100644
index 0000000..8331d51
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_5_w {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6.j
new file mode 100644
index 0000000..afbff18
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_6.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 2
+
+    ldc "abc"
+    astore_1
+    
+    aload 1
+    aload 1
+    
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6.java
new file mode 100644
index 0000000..2a622c0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_6 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6_w.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6_w.j
new file mode 100644
index 0000000..0e62855
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_6_w.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_6_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 300
+
+    ldc "hello"
+    astore 260
+    
+    aload_w 260
+    aload_w 260
+    
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6_w.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6_w.java
new file mode 100644
index 0000000..38ec788
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_6_w {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7.j
new file mode 100644
index 0000000..8aacd2c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_7.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 2
+
+    jsr Label1
+    return
+
+Label1:
+    astore_1
+    aload 1
+    ret 1
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7.java
new file mode 100644
index 0000000..2ff26f0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_7 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7_w.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7_w.j
new file mode 100644
index 0000000..9b7a8e9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7_w.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_7_w.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_7_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 2
+
+    jsr Label1
+    return
+
+Label1:
+    astore_1
+    aload_w 1
+    ret 1
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7_w.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7_w.java
new file mode 100644
index 0000000..110edd8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_7_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/Test_aload_0.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/Test_aload_0.java
new file mode 100644
index 0000000..457d2ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/Test_aload_0.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.aload_0.jm.T_aload_0_1;
+import dxc.junit.opcodes.aload_0.jm.T_aload_0_6;
+
+public class Test_aload_0 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals("hello", T_aload_0_1.run());
+    }
+
+    /**
+     * @title equality of aload_<n> and aload <n>
+     */
+    public void testN2() {
+        assertTrue(T_aload_0_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_0.jm.T_aload_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_0.jm.T_aload_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_0.jm.T_aload_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_0.jm.T_aload_0_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_0.jm.T_aload_0_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.21
+     * @title returnAddress may not be loaded from
+     * local variable
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_0.jm.T_aload_0_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_1.j
new file mode 100644
index 0000000..99a6407
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_0_1.java
+.class public dxc/junit/opcodes/aload_0/jm/T_aload_0_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 3
+    .limit locals 2
+    
+    ldc "hello"
+    astore_0
+    ldc "hi"
+    aload_0
+    areturn
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_1.java
new file mode 100644
index 0000000..cc72d47
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_0.jm;
+
+public class T_aload_0_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_2.j
new file mode 100644
index 0000000..0e2b130
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_0_2.java
+.class public dxc/junit/opcodes/aload_0/jm/T_aload_0_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    aload_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_2.java
new file mode 100644
index 0000000..ede0a70
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_0.jm;
+
+public class T_aload_0_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_3.j
new file mode 100644
index 0000000..681f400
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_3.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_0_3.java
+.class public dxc/junit/opcodes/aload_0/jm/T_aload_0_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    fstore_0
+    fconst_1
+    fstore_1
+    
+    aload_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_3.java
new file mode 100644
index 0000000..e9ee293
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_0.jm;
+
+public class T_aload_0_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_4.j
new file mode 100644
index 0000000..ea898b3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_0_4.java
+.class public dxc/junit/opcodes/aload_0/jm/T_aload_0_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_0
+    
+    aload_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_4.java
new file mode 100644
index 0000000..c6a30ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_0.jm;
+
+public class T_aload_0_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_5.j
new file mode 100644
index 0000000..c30867e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_0_5.java
+.class public dxc/junit/opcodes/aload_0/jm/T_aload_0_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    iconst_1
+    istore_0
+    
+    aload_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_5.java
new file mode 100644
index 0000000..c9a12a3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_0.jm;
+
+public class T_aload_0_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_6.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_6.j
new file mode 100644
index 0000000..1f823e5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_0_6.java
+.class public dxc/junit/opcodes/aload_0/jm/T_aload_0_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 2
+
+    ldc "hello"
+    astore_0
+
+    aload_0
+    aload 0
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_6.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_6.java
new file mode 100644
index 0000000..350126f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_0.jm;
+
+public class T_aload_0_6 {
+
+    public static boolean run() {
+        String a = new String("hello");
+        return a == a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_7.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_7.j
new file mode 100644
index 0000000..8e0073c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_7.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_0_7.java
+.class public dxc/junit/opcodes/aload_0/jm/T_aload_0_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    ldc "hello"
+    astore_0
+    
+    aload_0
+    aload_0
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_7.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_7.java
new file mode 100644
index 0000000..7d002ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_0.jm;
+
+public class T_aload_0_7 {
+    
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_8.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_8.j
new file mode 100644
index 0000000..d2922cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_8.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_0_8.java
+.class public dxc/junit/opcodes/aload_0/jm/T_aload_0_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    jsr Label1
+    return
+
+Label1:
+    astore_0
+    aload_0
+    ret 0
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_8.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_8.java
new file mode 100644
index 0000000..1e268b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_0.jm;
+
+public class T_aload_0_8 {
+    
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/Test_aload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/Test_aload_1.java
new file mode 100644
index 0000000..22a129e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/Test_aload_1.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.aload_1.jm.T_aload_1_1;
+import dxc.junit.opcodes.aload_1.jm.T_aload_1_6;
+
+public class Test_aload_1 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals("hello", T_aload_1_1.run());
+    }
+
+    /**
+     * @title equality of aload_<n> and aload <n>
+     */
+    public void testN2() {
+        assertTrue(T_aload_1_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_1.jm.T_aload_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_1.jm.T_aload_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_1.jm.T_aload_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_1.jm.T_aload_1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_1.jm.T_aload_1_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.21
+     * @title returnAddress may not be loaded from
+     * local variable
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_1.jm.T_aload_1_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_1.j
new file mode 100644
index 0000000..e2718f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_1_1.java
+.class public dxc/junit/opcodes/aload_1/jm/T_aload_1_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 3
+    .limit locals 2
+    
+    ldc "hello"
+    astore_1
+    ldc "hi"
+    aload_1
+    areturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_1.java
new file mode 100644
index 0000000..e5e4fc6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_1.jm;
+
+public class T_aload_1_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_2.j
new file mode 100644
index 0000000..8089467
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_1_2.java
+.class public dxc/junit/opcodes/aload_1/jm/T_aload_1_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    aload_1
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_2.java
new file mode 100644
index 0000000..d223d29
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_1.jm;
+
+public class T_aload_1_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_3.j
new file mode 100644
index 0000000..0d98b4c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_1_3.java
+.class public dxc/junit/opcodes/aload_1/jm/T_aload_1_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    fstore_0
+    fconst_1
+    fstore_1
+    
+    aload_1
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_3.java
new file mode 100644
index 0000000..e639b3b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_1.jm;
+
+public class T_aload_1_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_4.j
new file mode 100644
index 0000000..037314b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_1_4.java
+.class public dxc/junit/opcodes/aload_1/jm/T_aload_1_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_1
+    
+    aload_1
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_4.java
new file mode 100644
index 0000000..4263064
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_1.jm;
+
+public class T_aload_1_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_5.j
new file mode 100644
index 0000000..9e84cc2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_1_5.java
+.class public dxc/junit/opcodes/aload_1/jm/T_aload_1_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    iconst_1
+    istore_1
+    
+    aload_1
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_5.java
new file mode 100644
index 0000000..88fb112
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_1.jm;
+
+public class T_aload_1_5 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_6.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_6.j
new file mode 100644
index 0000000..2a476d6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_1_6.java
+.class public dxc/junit/opcodes/aload_1/jm/T_aload_1_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 2
+
+    ldc "hello"
+    astore_1
+
+    aload_1
+    aload 1
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_6.java
new file mode 100644
index 0000000..a5b95c3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_1.jm;
+
+public class T_aload_1_6 {
+
+    public static boolean run() {
+        String a = new String("hello");
+        return a == a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_7.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_7.j
new file mode 100644
index 0000000..dcc158f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_7.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_1_7.java
+.class public dxc/junit/opcodes/aload_1/jm/T_aload_1_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    ldc "hello"
+    astore_1
+    
+    aload_1
+    aload_1
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_7.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_7.java
new file mode 100644
index 0000000..08930a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_1.jm;
+
+public class T_aload_1_7 {
+    
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_8.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_8.j
new file mode 100644
index 0000000..a72e6f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_8.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_1_8.java
+.class public dxc/junit/opcodes/aload_1/jm/T_aload_1_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    jsr Label1
+    return
+
+Label1:
+    astore_1
+    aload_1
+    ret 1
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_8.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_8.java
new file mode 100644
index 0000000..9fd86cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_1.jm;
+
+public class T_aload_1_8 {
+    
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/Test_aload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/Test_aload_2.java
new file mode 100644
index 0000000..d01c00b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/Test_aload_2.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.aload_2.jm.T_aload_2_1;
+import dxc.junit.opcodes.aload_2.jm.T_aload_2_6;
+
+public class Test_aload_2 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals("hello", T_aload_2_1.run());
+    }
+
+    /**
+     * @title equality of aload_<n> and aload <n>
+     */
+    public void testN2() {
+        assertTrue(T_aload_2_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_2.jm.T_aload_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_2.jm.T_aload_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_2.jm.T_aload_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_2.jm.T_aload_2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_2.jm.T_aload_2_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.21
+     * @title returnAddress may not be loaded from
+     * local variable
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_2.jm.T_aload_2_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_1.j
new file mode 100644
index 0000000..cf7efe7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_2_1.java
+.class public dxc/junit/opcodes/aload_2/jm/T_aload_2_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 3
+    .limit locals 3
+    
+    ldc "hello"
+    astore_2
+    ldc "hi"
+    aload_2
+    areturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_1.java
new file mode 100644
index 0000000..a57be08
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_2.jm;
+
+public class T_aload_2_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_2.j
new file mode 100644
index 0000000..12a73ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_2_2.java
+.class public dxc/junit/opcodes/aload_2/jm/T_aload_2_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    .limit stack 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    aload_2
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_2.java
new file mode 100644
index 0000000..c2b074d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_2.jm;
+
+public class T_aload_2_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_3.j
new file mode 100644
index 0000000..829b23a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_2_3.java
+.class public dxc/junit/opcodes/aload_2/jm/T_aload_2_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    fstore_1
+    fconst_2
+    fstore_2
+    
+    aload_2
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_3.java
new file mode 100644
index 0000000..5fe9956
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_2.jm;
+
+public class T_aload_2_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_4.j
new file mode 100644
index 0000000..14565e7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_2_4.java
+.class public dxc/junit/opcodes/aload_2/jm/T_aload_2_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_2
+    
+    aload_2
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_4.java
new file mode 100644
index 0000000..604db5a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_2.jm;
+
+public class T_aload_2_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_5.j
new file mode 100644
index 0000000..8d3fd27
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_2_5.java
+.class public dxc/junit/opcodes/aload_2/jm/T_aload_2_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 4
+
+    iconst_2
+    istore_2
+    
+    aload_2
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_5.java
new file mode 100644
index 0000000..3a39ef9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_2.jm;
+
+public class T_aload_2_5 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_6.j
new file mode 100644
index 0000000..aa81a91
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_2_6.java
+.class public dxc/junit/opcodes/aload_2/jm/T_aload_2_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 3
+
+    ldc "hello"
+    astore_2
+
+    aload_2
+    aload 2
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_6.java
new file mode 100644
index 0000000..a4e9ca0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_2.jm;
+
+public class T_aload_2_6 {
+
+    public static boolean run() {
+        String a = new String("hello");
+        return a == a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_7.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_7.j
new file mode 100644
index 0000000..bf69c97
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_7.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_2_7.java
+.class public dxc/junit/opcodes/aload_2/jm/T_aload_2_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 3
+
+    ldc "hello"
+    astore_2
+    
+    aload_2
+    aload_2
+    
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_7.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_7.java
new file mode 100644
index 0000000..e9e8773
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_2.jm;
+
+public class T_aload_2_7 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_8.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_8.j
new file mode 100644
index 0000000..d03eedf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_8.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_2_8.java
+.class public dxc/junit/opcodes/aload_2/jm/T_aload_2_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 3
+
+    jsr Label1
+    return
+
+Label1:
+    astore_2
+    aload_2
+    ret 2
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_8.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_8.java
new file mode 100644
index 0000000..56e6e7a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_2.jm;
+
+public class T_aload_2_8 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/Test_aload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/Test_aload_3.java
new file mode 100644
index 0000000..ee67af0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/Test_aload_3.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.aload_3.jm.T_aload_3_1;
+import dxc.junit.opcodes.aload_3.jm.T_aload_3_6;
+
+public class Test_aload_3 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals("hello", T_aload_3_1.run());
+    }
+
+    /**
+     * @title equality of aload_<n> and aload <n>
+     */
+    public void testN2() {
+        assertTrue(T_aload_3_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_3.jm.T_aload_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_3.jm.T_aload_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_3.jm.T_aload_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_3.jm.T_aload_3_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_3.jm.T_aload_3_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.21
+     * @title returnAddress may not be loaded from
+     * local variable
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_3.jm.T_aload_3_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_1.j
new file mode 100644
index 0000000..2d79c90
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_3_1.java
+.class public dxc/junit/opcodes/aload_3/jm/T_aload_3_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 3
+    .limit locals 4
+    
+    ldc "hello"
+    astore_3
+    ldc "hi"
+    aload_3
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_1.java
new file mode 100644
index 0000000..27b910f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_3.jm;
+
+public class T_aload_3_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_2.j
new file mode 100644
index 0000000..ed1f591
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_3_2.java
+.class public dxc/junit/opcodes/aload_3/jm/T_aload_3_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    aload_3
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_2.java
new file mode 100644
index 0000000..15743fd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_3.jm;
+
+public class T_aload_3_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_3.j
new file mode 100644
index 0000000..164dc3c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_3_3.java
+.class public dxc/junit/opcodes/aload_3/jm/T_aload_3_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_2
+    fstore_3
+    
+    aload_3
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_3.java
new file mode 100644
index 0000000..90ff938
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_3.jm;
+
+public class T_aload_3_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_4.j
new file mode 100644
index 0000000..d83697a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_3_4.java
+.class public dxc/junit/opcodes/aload_3/jm/T_aload_3_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    lconst_1
+    lstore_3
+    
+    aload_3
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_4.java
new file mode 100644
index 0000000..51b8522
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_3.jm;
+
+public class T_aload_3_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_5.j
new file mode 100644
index 0000000..2acfe28
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_3_5.java
+.class public dxc/junit/opcodes/aload_3/jm/T_aload_3_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 4
+
+    iconst_3
+    istore_3
+    
+    aload_3
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_5.java
new file mode 100644
index 0000000..a2cb2d9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_3.jm;
+
+public class T_aload_3_5 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_6.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_6.j
new file mode 100644
index 0000000..905342a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_3_6.java
+.class public dxc/junit/opcodes/aload_3/jm/T_aload_3_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 4
+
+    ldc "hello"
+    astore_3
+
+    aload_3
+    aload 3
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_6.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_6.java
new file mode 100644
index 0000000..ce9727b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_3.jm;
+
+public class T_aload_3_6 {
+
+    public static boolean run() {
+        String a = new String("hello");
+        return a == a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_7.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_7.j
new file mode 100644
index 0000000..1083e93
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_7.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_3_7.java
+.class public dxc/junit/opcodes/aload_3/jm/T_aload_3_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 4
+
+    ldc "hello"
+    astore_3
+    
+    aload_3
+    aload_3
+    
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_7.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_7.java
new file mode 100644
index 0000000..d8f143f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_3.jm;
+
+public class T_aload_3_7 {
+    
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_8.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_8.j
new file mode 100644
index 0000000..6699732
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_8.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aload_3_8.java
+.class public dxc/junit/opcodes/aload_3/jm/T_aload_3_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 4
+
+    jsr Label1
+    return
+
+Label1:
+    astore_3
+    aload_3
+    ret 3
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_8.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_8.java
new file mode 100644
index 0000000..12628ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.aload_3.jm;
+
+public class T_aload_3_8 {
+    
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/TestStubs.java
new file mode 100644
index 0000000..08a00cd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.anewarray;
+
+public class TestStubs {
+    
+private class TestStub{
+    // testE4
+}
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/Test_anewarray.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/Test_anewarray.java
new file mode 100644
index 0000000..ecc1ce2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/Test_anewarray.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.anewarray;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.anewarray.jm.T_anewarray_1;
+import dxc.junit.opcodes.anewarray.jm.T_anewarray_6;
+import dxc.junit.opcodes.anewarray.jm.T_anewarray_7;
+
+public class Test_anewarray extends DxTestCase {
+    
+    /**
+     * @title Test for Object
+     */
+    public void testN1() {
+        T_anewarray_1 t = new T_anewarray_1();
+
+        Object[] arr = t.run(10);
+        assertNotNull(arr);
+        assertEquals(10, arr.length);
+        for (int i = 0; i < 10; i++)
+            assertNull(arr[i]);
+    }
+
+    /**
+     * @title Test for String
+     */
+    public void testN2() {
+        T_anewarray_1 t = new T_anewarray_1();
+
+        String[] arr2 = t.run2(5);
+        assertNotNull(arr2);
+        assertEquals(5, arr2.length);
+        for (int i = 0; i < 5; i++)
+            assertNull(arr2[i]);
+    }
+
+    /**
+     * @title Test for Integer
+     */
+    public void testN3() {
+        T_anewarray_1 t = new T_anewarray_1();
+
+        Integer[] arr3 = t.run3(15);
+        assertNotNull(arr3);
+        assertEquals(15, arr3.length);
+        for (int i = 0; i < 15; i++)
+            assertNull(arr3[i]);
+    }
+
+    /**
+     * @title if count is zero, no subsequent dimensions allocated
+     */
+    public void testE1() {
+        T_anewarray_1 t = new T_anewarray_1();
+        Object[] res = t.run(0);
+        try {
+            Object s = res[0];
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NegativeArraySizeException
+     */
+    public void testE2() {
+        T_anewarray_1 t = new T_anewarray_1();
+        try {
+            t.run(-2);
+            fail("expected NegativeArraySizeException");
+        } catch (NegativeArraySizeException nase) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NoClassDefFoundError
+     */
+    public void testE3() {
+        try {
+            T_anewarray_6 t = new T_anewarray_6();
+            t.run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; eagerly tries to load the array type
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected IllegalAccessError
+     * <pre>
+     * V(15469) +++ dvmAddClassToHash '[Ldxc/junit/opcodes/anewarray/jm/TestStubs$TestStub;' 0x973d7708 (isnew=1) --> 0x973e1f10  (dalvikvm)
+     * V(15469) Created array class '[Ldxc/junit/opcodes/anewarray/jm/TestStubs$TestStub;' 0x973d7708 (access=0x6000.0010)  (dalvikvm)
+     * </pre>
+     * TestStub class is private. no IllegalAccessError is thrown, but VerifyError
+     */
+    public void testE4() {
+        try {
+            T_anewarray_7 t = new T_anewarray_7();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.19
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.anewarray.jm.T_anewarray_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.anewarray.jm.T_anewarray_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.anewarray.jm.T_anewarray_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.17
+     * @title array of more than 255 dimensions
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.anewarray.jm.T_anewarray_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.anewarray.jm.T_anewarray_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.19
+     * @title constant pool type
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.anewarray.jm.T_anewarray_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_1.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_1.j
new file mode 100644
index 0000000..3fbf658
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_1.j
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_anewarray_1.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)[Ljava/lang/Object;
+    .limit stack 1
+    .limit locals 2
+
+    iload_1
+    anewarray java/lang/Object
+    areturn
+
+.end method
+
+.method public run2(I)[Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+
+    iload_1
+    anewarray java/lang/String
+    areturn
+
+.end method
+
+.method public run3(I)[Ljava/lang/Integer;
+    .limit stack 1
+    .limit locals 2
+
+    iload_1
+    anewarray java/lang/Integer
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_1.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_1.java
new file mode 100644
index 0000000..4358382
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_1 {
+
+    public Object[] run(int idx) {
+        return new Object[idx];
+    }
+    
+    public String[] run2(int idx) {
+        return new String[idx];
+    }
+    
+    public Integer[] run3(int idx) {
+        return new Integer[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.cfh b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.cfh
new file mode 100644
index 0000000..d2fef44
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.cfh
@@ -0,0 +1,191 @@
+//@class:dxc/junit/opcodes/anewarray/jm/T_anewarray_2
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0010
+// .  .  
+   00 10 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 3, h: 0003: type{java.lang.String}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 37, len 3, h: 0004: type{dxc.junit.opcodes.anewarray.jm.T_anewarray_2}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 40, len 13, h: 0005: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 53, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 62, len 7, h: 0007: utf8{"run2"}
+    // .  .  .  r  u  n  2  
+       01 00 04 72 75 6e 32 
+    // parsed:, offset 69, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0c 
+    // parsed:, offset 74, len 47, h: 0009: utf8{"dxc/junit/opcodes/anewarray/jm/T_anewarray_2"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  a  n  e  w  a  r  r  a  y  /  j  m  /  T  _  a  n  e  w  a  r  r  a  y  _  2  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 61 6e 65 77 61 72 72 61 79 2f 6a 6d 2f 54 5f 61 6e 65 77 61 72 72 61 79 5f 32 
+    // parsed:, offset 121, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 128, len 19, h: 000b: utf8{"java/lang/String"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 
+    // parsed:, offset 147, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 153, len 21, h: 000d: utf8{"T_anewarray_2.java"}
+    // .  .  .  T  _  a  n  e  w  a  r  r  a  y  _  2  .  j  a  v  a  
+       01 00 12 54 5f 61 6e 65 77 61 72 72 61 79 5f 32 2e 6a 61 76 61 
+    // parsed:, offset 174, len 25, h: 000e: utf8{"(I)[Ljava/lang/String;"}
+    // .  .  .  (  I  )  [  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  
+       01 00 16 28 49 29 5b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 
+    // parsed:, offset 199, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 202, len 0, h: end constant_pool
+// parsed:, offset 202, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 204, len 2, h: this_class: type{dxc.junit.opcodes.anewarray.jm.T_anewarray_2}
+// .  .  
+   00 04 
+// parsed:, offset 206, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 208, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 210, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 212, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 214, len:72,desc: ()V
+// parsed:, offset 214, len 0, h:  methods[0]: 
+    // parsed:, offset 214, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 218, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 220, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 222, len 0, h:  attributes[0]: 
+        // parsed:, offset 222, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 224, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 228, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 230, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 232, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 241, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 243, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 245, len 0, h: end attributes[0] 
+// parsed:, offset 245, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run2, offset 245, len:41,desc: (I)[Ljava/lang/String;
+// parsed:, offset 245, len 0, h:  methods[1]: 
+    // parsed:, offset 245, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 247, len 2, h: name: run2
+    // .  .  
+       00 07 
+    // parsed:, offset 249, len 2, h: descriptor: (I)[Ljava/lang/String;
+    // .  .  
+       00 0e 
+    // parsed:, offset 251, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 253, len 0, h:  attributes[0]: 
+        // parsed:, offset 253, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 255, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 259, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 261, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 263, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: anewarray type{java.lang.String}
+        // .  .  .  
+//@mod           bd 00 03 
+           bd 01 03           
+        // parsed:, offset 4, len 1, h: 0004: areturn
+        // .  
+           b0 
+        // parsed:, offset 272, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 274, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 276, len 0, h: end attributes[0] 
+// parsed:, offset 276, len 0, h: end methods[1] 
+// ========== end-ParseMember:run2, desc: (I)[Ljava/lang/String;
+// parsed:, offset 276, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 278, len 0, h:  attributes[0]: 
+    // parsed:, offset 278, len 2, h: name: SourceFile
+    // .  .  
+       00 05 
+    // parsed:, offset 280, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 284, len 2, h: source: utf8{"T_anewarray_2.java"}
+    // .  .  
+       00 0d 
+// parsed:, offset 286, len 0, h: end attributes[0] 
+// parsed:, offset 286, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.j
new file mode 100644
index 0000000..41c2fc2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_anewarray_2.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run2(I)[Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+
+    iload_1
+    anewarray java/lang/String
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.java
new file mode 100644
index 0000000..d58fa37
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_2 {
+
+    public String[] run2(int idx) {
+        return new String[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_3.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_3.j
new file mode 100644
index 0000000..6e6f638
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_anewarray_3.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run2(I)[Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+
+;    iload_1
+    anewarray java/lang/String
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_3.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_3.java
new file mode 100644
index 0000000..c5b8e54
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_3 {
+
+    public String[] run2(int idx) {
+        return new String[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_4.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_4.j
new file mode 100644
index 0000000..0ed6b0f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_anewarray_4.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run2(F)[Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+
+    fload_1
+    anewarray java/lang/String
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_4.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_4.java
new file mode 100644
index 0000000..1256343
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_4 {
+
+    public String[] run2(int idx) {
+        return new String[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_5.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_5.j
new file mode 100644
index 0000000..d5d1770
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_anewarray_5.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)[Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+
+    iload_1
+    anewarray [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[Ljava/lang/String;
+
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_5.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_5.java
new file mode 100644
index 0000000..c0f8763
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_5 {
+
+    public String[] run(int idx) {
+        return new String[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_6.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_6.j
new file mode 100644
index 0000000..f2a5369
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_anewarray_6.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Ljava/lang/Object;
+    .limit stack 1
+    .limit locals 1
+
+    iconst_1
+    anewarray dxc/junit/opcodes/anewarray/jm/T_anewarray_61
+    areturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_6.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_6.java
new file mode 100644
index 0000000..23fe874e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_6 {
+
+    public Object run() {
+        return new T_anewarray_6[1];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_7.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_7.j
new file mode 100644
index 0000000..8915c0e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_7.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_anewarray_7.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Ljava/lang/Object;
+    .limit stack 1
+    .limit locals 1
+
+    iconst_1
+    anewarray dxc/junit/opcodes/anewarray/TestStubs$TestStub
+    areturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_7.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_7.java
new file mode 100644
index 0000000..b8a9997
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_7 {
+
+    public Object run() {
+        return new T_anewarray_7[1];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_8.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_8.j
new file mode 100644
index 0000000..85e65ca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_8.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_anewarray_8.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run2(I)[Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    anewarray java/lang/String
+
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_8.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_8.java
new file mode 100644
index 0000000..dc349ee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_8 {
+
+    public String[] run2(int idx) {
+        return new String[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.cfh b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.cfh
new file mode 100644
index 0000000..7f763fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/anewarray/jm/T_anewarray_9
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0011
+// .  .  
+   00 11 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 09 
+    // parsed:, offset 15, len 47, h: 0002: utf8{"dxc/junit/opcodes/anewarray/jm/T_anewarray_9"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  a  n  e  w  a  r  r  a  y  /  j  m  /  T  _  a  n  e  w  a  r  r  a  y  _  9  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 61 6e 65 77 61 72 72 61 79 2f 6a 6d 2f 54 5f 61 6e 65 77 61 72 72 61 79 5f 39 
+    // parsed:, offset 62, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 81, len 3, h: 0004: type{java.lang.String}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 84, len 13, h: 0005: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 97, len 5, h: 0006: int{0x0000007b / 123}
+    // .  .  .  .  {  
+       03 00 00 00 7b 
+    // parsed:, offset 102, len 9, h: 0007: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 111, len 7, h: 0008: utf8{"run2"}
+    // .  .  .  r  u  n  2  
+       01 00 04 72 75 6e 32 
+    // parsed:, offset 118, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 07 00 0c 
+    // parsed:, offset 123, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 130, len 19, h: 000b: utf8{"java/lang/String"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 
+    // parsed:, offset 149, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 155, len 3, h: 000d: type{dxc.junit.opcodes.anewarray.jm.T_anewarray_9}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 158, len 25, h: 000e: utf8{"(I)[Ljava/lang/String;"}
+    // .  .  .  (  I  )  [  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  
+       01 00 16 28 49 29 5b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 
+    // parsed:, offset 183, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 186, len 21, h: 0010: utf8{"T_anewarray_9.java"}
+    // .  .  .  T  _  a  n  e  w  a  r  r  a  y  _  9  .  j  a  v  a  
+       01 00 12 54 5f 61 6e 65 77 61 72 72 61 79 5f 39 2e 6a 61 76 61 
+// parsed:, offset 207, len 0, h: end constant_pool
+// parsed:, offset 207, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 209, len 2, h: this_class: type{dxc.junit.opcodes.anewarray.jm.T_anewarray_9}
+// .  .  
+   00 0d 
+// parsed:, offset 211, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 213, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 215, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 217, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 219, len:75,desc: ()V
+// parsed:, offset 219, len 0, h:  methods[0]: 
+    // parsed:, offset 219, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 221, len 2, h: name: <init>
+    // .  .  
+       00 07 
+    // parsed:, offset 223, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 225, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 227, len 0, h:  attributes[0]: 
+        // parsed:, offset 227, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 229, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 233, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 235, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 237, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 246, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 248, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 250, len 0, h: end attributes[0] 
+// parsed:, offset 250, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run2, offset 250, len:44,desc: (I)[Ljava/lang/String;
+// parsed:, offset 250, len 0, h:  methods[1]: 
+    // parsed:, offset 250, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 252, len 2, h: name: run2
+    // .  .  
+       00 08 
+    // parsed:, offset 254, len 2, h: descriptor: (I)[Ljava/lang/String;
+    // .  .  
+       00 0e 
+    // parsed:, offset 256, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 258, len 0, h:  attributes[0]: 
+        // parsed:, offset 258, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 260, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 264, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 266, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 268, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 2, h: 0000: ldc #+0000007b
+        // .  .  
+           12 06 
+        // parsed:, offset 2, len 1, h: 0002: pop
+        // W  
+           57 
+        // parsed:, offset 3, len 1, h: 0003: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 4, len 3, h: 0004: anewarray type{java.lang.String}
+        // .  .  .  
+//@mod           bd 00 04 
+           bd 00 06 
+        // parsed:, offset 7, len 1, h: 0007: areturn
+        // .  
+           b0 
+        // parsed:, offset 280, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 282, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 284, len 0, h: end attributes[0] 
+// parsed:, offset 284, len 0, h: end methods[1] 
+// ========== end-ParseMember:run2, desc: (I)[Ljava/lang/String;
+// parsed:, offset 284, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 286, len 0, h:  attributes[0]: 
+    // parsed:, offset 286, len 2, h: name: SourceFile
+    // .  .  
+       00 05 
+    // parsed:, offset 288, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 292, len 2, h: source: utf8{"T_anewarray_9.java"}
+    // .  .  
+       00 10 
+// parsed:, offset 294, len 0, h: end attributes[0] 
+// parsed:, offset 294, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.j
new file mode 100644
index 0000000..d91f6f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_anewarray_9.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_9
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run2(I)[Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+    
+    ldc 123
+    pop
+    
+    iload_1
+    anewarray java/lang/String
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.java
new file mode 100644
index 0000000..30ab5f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_9 {
+
+    public String[] run2(int idx) {
+        return new String[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/TestStubs.java
new file mode 100644
index 0000000..73452fd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class TestStubs {
+    
+private class TestStub{
+    // testE4
+}
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/Runner.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/Runner.java
new file mode 100644
index 0000000..580812d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/Runner.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn;
+
+public interface Runner {
+    public void doit();
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/RunnerGenerator.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/RunnerGenerator.java
new file mode 100644
index 0000000..e9f34ec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/RunnerGenerator.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn;
+
+public interface RunnerGenerator {
+    public Runner run();
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/Test_areturn.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/Test_areturn.java
new file mode 100644
index 0000000..5485d03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/Test_areturn.java
@@ -0,0 +1,236 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.areturn.jm.T_areturn_1;
+import dxc.junit.opcodes.areturn.jm.T_areturn_12;
+import dxc.junit.opcodes.areturn.jm.T_areturn_13;
+import dxc.junit.opcodes.areturn.jm.T_areturn_2;
+import dxc.junit.opcodes.areturn.jm.T_areturn_6;
+import dxc.junit.opcodes.areturn.jm.T_areturn_7;
+import dxc.junit.opcodes.areturn.jm.T_areturn_8;
+import dxc.junit.opcodes.areturn.jm.T_areturn_9;
+
+public class Test_areturn extends DxTestCase {
+
+    /**
+     * @title  simple
+     */
+    public void testN1() {
+        T_areturn_1 t = new T_areturn_1();
+        assertEquals("hello", t.run());
+    }
+
+    /**
+     * @title  simple
+     */
+    public void testN2() {
+        T_areturn_1 t = new T_areturn_1();
+        assertEquals(t, t.run2());
+    }
+
+    /**
+     * @title  simple
+     */
+    public void testN3() {
+        T_areturn_1 t = new T_areturn_1();
+        Integer a = 12345;
+        assertEquals(a, t.run3());
+    }
+
+    /**
+     * @title test for null
+     */
+    public void testN4() {
+        T_areturn_2 t = new T_areturn_2();
+        assertNull(t.run());
+    }
+
+    /**
+     * @title  check that frames are discarded and reinstananted correctly
+     */
+    public void testN5() {
+        T_areturn_6 t = new T_areturn_6();
+        assertEquals("hello", t.run());
+    }
+
+    /**
+     * @title  check that monitor is released by areturn
+     */
+    public void testN6() {
+        assertTrue(T_areturn_7.execute());
+    }
+
+    /**
+     * @title  assignment compatibility (TChild returned as TSuper)
+     */
+    public void testN7() {
+        // @uses dxc.junit.opcodes.areturn.jm.TSuper
+        // @uses dxc.junit.opcodes.areturn.jm.TInterface
+        // @uses dxc.junit.opcodes.areturn.jm.TChild
+        T_areturn_12 t = new T_areturn_12();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  assignment compatibility (TChild returned as TInterface)
+     */
+    public void testN8() {
+        // @uses dxc.junit.opcodes.areturn.jm.TInterface
+        // @uses dxc.junit.opcodes.areturn.jm.TChild
+        // @uses dxc.junit.opcodes.areturn.jm.TSuper
+        T_areturn_13 t = new T_areturn_13();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_areturn_8 t = new T_areturn_8();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Lock structural rule 1 is violated
+     */
+    public void testE2() {
+        T_areturn_9 t = new T_areturn_9();
+        try {
+            assertEquals("abc", t.run());
+            // the JVM spec says that it is optional to implement the structural
+            // lock rules, see JVM spec 8.13 and monitorenter/exit opcodes.
+            System.out.print("dvmvfe:");
+            //fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - void
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.areturn.jm.T_areturn_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.areturn.jm.T_areturn_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.areturn.jm.T_areturn_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.areturn.jm.T_areturn_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.areturn.jm.T_areturn_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title assignment incompatible references
+     */
+    public void testVFE6() {
+        // @uses dxc.junit.opcodes.areturn.jm.TInterface
+        // @uses dxc.junit.opcodes.areturn.jm.TSuper
+        // @uses dxc.junit.opcodes.areturn.jm.TChild
+        try {
+            Class.forName("dxc.junit.opcodes.areturn.jm.T_areturn_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title assignment incompatible references
+     */
+    @SuppressWarnings("cast")
+    public void testVFE7() {
+        // @uses dxc.junit.opcodes.areturn.jm.TSuper2
+        // @uses dxc.junit.opcodes.areturn.Runner
+        // @uses dxc.junit.opcodes.areturn.RunnerGenerator
+        try {
+            RunnerGenerator rg = (RunnerGenerator) Class.forName(
+                    "dxc.junit.opcodes.areturn.jm.T_areturn_15").newInstance();
+            Runner r = rg.run();
+            assertFalse(r instanceof Runner);
+            assertFalse(Runner.class.isAssignableFrom(r.getClass()));
+            // only upon invocation of a concrete method,
+            // a java.lang.IncompatibleClassChangeError is thrown
+            r.doit();
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_1.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_1.j
new file mode 100644
index 0000000..900806d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_1.j
@@ -0,0 +1,59 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_areturn_1.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 1
+    .limit locals 1
+
+    ldc "hello"
+    areturn
+
+.end method
+
+.method public run2()Ljava/lang/Object;
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    areturn
+
+.end method
+
+.method public run3()Ljava/lang/Integer;
+    .limit stack 3
+    .limit locals 2
+
+    new java/lang/Integer
+    dup
+    sipush 12345
+    invokespecial java/lang/Integer/<init>(I)V
+    astore_1
+
+    aload_1
+
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_1.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_1.java
new file mode 100644
index 0000000..a4a7719
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_1.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_1 {
+
+    public String run() {
+        return "hello";
+    }
+    
+    public Object run2() {
+        return this;
+    }
+    
+    public Integer run3() {
+        Integer value = new Integer(12345);
+        return value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_10.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_10.j
new file mode 100644
index 0000000..db962a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_10.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_areturn_10.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_10
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 1
+    .limit locals 1
+
+;    ldc "abc"
+    fconst_0
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_10.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_10.java
new file mode 100644
index 0000000..efe5c5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_10 {
+    
+    public String run() {
+        return "abc";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_11.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_11.j
new file mode 100644
index 0000000..1a75aee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_11.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_areturn_11.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_11
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private static test()Ljava/lang/String;
+    .limit stack 1
+    .limit locals 0
+
+    ldc "hello"
+    areturn
+
+.end method
+
+.method public run()Ljava/lang/String;
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/areturn/jm/T_areturn_11/test()Ljava/lang/String;
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_11.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_11.java
new file mode 100644
index 0000000..ea112ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_11.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_11 {
+    
+    private static String test() {
+        return "hello";
+    }
+    
+    public String run() {
+        return test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_12.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_12.j
new file mode 100644
index 0000000..76f51a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_12.j
@@ -0,0 +1,50 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_areturn_12.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_12
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method private test()Ldxc/junit/opcodes/areturn/jm/TSuper;
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/areturn/jm/TChild
+    dup
+    invokespecial dxc/junit/opcodes/areturn/jm/TChild/<init>()V
+
+    areturn
+.end method
+
+
+
+.method public run()Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    invokespecial dxc/junit/opcodes/areturn/jm/T_areturn_12/test()Ldxc/junit/opcodes/areturn/jm/TSuper;
+
+    instanceof dxc/junit/opcodes/areturn/jm/TChild
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_12.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_12.java
new file mode 100644
index 0000000..6aaa5f3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_12.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_12 {
+    
+    private TSuper test() {
+        return new TChild();
+    }
+    
+    public boolean run() {
+        TSuper t = test();
+        return (t instanceof TChild);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_13.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_13.j
new file mode 100644
index 0000000..c0a8156
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_13.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_areturn_13.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_13
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method private test()Ldxc/junit/opcodes/areturn/jm/TInterface;
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/areturn/jm/TChild
+    dup
+    invokespecial dxc/junit/opcodes/areturn/jm/TChild/<init>()V
+    areturn
+.end method
+
+
+
+.method public run()Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    invokespecial dxc/junit/opcodes/areturn/jm/T_areturn_13/test()Ldxc/junit/opcodes/areturn/jm/TInterface;
+
+    instanceof dxc/junit/opcodes/areturn/jm/TChild
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_13.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_13.java
new file mode 100644
index 0000000..e79f765
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_13.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+
+public class T_areturn_13 {
+    
+    private TInterface test() {
+        return new TChild();
+    }
+    
+    public boolean run() {
+        TInterface t = test();
+        return (t instanceof TChild);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_14.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_14.j
new file mode 100644
index 0000000..221015e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_14.j
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_areturn_14.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_14
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method private test()Ldxc/junit/opcodes/areturn/jm/TChild;
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/areturn/jm/TSuper
+    dup
+    invokespecial dxc/junit/opcodes/areturn/jm/TSuper/<init>()V
+
+    areturn
+
+.end method
+
+
+
+.method public run()Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    invokespecial dxc/junit/opcodes/areturn/jm/T_areturn_14/test()Ldxc/junit/opcodes/areturn/jm/TChild;
+
+    instanceof dxc/junit/opcodes/areturn/jm/TChild
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_14.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_14.java
new file mode 100644
index 0000000..baa9963
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_14.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+
+public class T_areturn_14 {
+    
+    private TChild test() {
+        //return new TSuper();
+        return new TChild();
+    }
+    
+    public boolean run() {
+        TChild t = test();
+        return (t instanceof TChild);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_15.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_15.j
new file mode 100644
index 0000000..afa0940
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_15.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_areturn_15.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_15
+.super java/lang/Object
+.implements dxc/junit/opcodes/areturn/RunnerGenerator
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Ldxc/junit/opcodes/areturn/Runner;
+    .limit stack 2
+
+    new dxc/junit/opcodes/areturn/jm/TSuper2
+    dup
+    invokespecial dxc/junit/opcodes/areturn/jm/TSuper2/<init>()V
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_15.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_15.java
new file mode 100644
index 0000000..bec3561
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_15.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+
+public class T_areturn_15 {
+    
+    private TInterface test() {
+        //return new TSuper2();
+        return new TSuper();
+    }
+    
+    public boolean run() {
+        TInterface t = test();
+        return (t instanceof TSuper);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_2.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_2.j
new file mode 100644
index 0000000..20064df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_2.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_areturn_2.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    aconst_null
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_2.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_2.java
new file mode 100644
index 0000000..a8e0b9c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_2 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_3.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_3.j
new file mode 100644
index 0000000..d6e60f9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_areturn_3.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    ldc "hello"
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_3.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_3.java
new file mode 100644
index 0000000..813fc95
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_3 {
+
+    public String run() {
+        return "hello";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_4.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_4.j
new file mode 100644
index 0000000..a7d470b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_areturn_4.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()F
+    .limit stack 1
+    .limit locals 1
+
+    ldc "hello"
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_4.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_4.java
new file mode 100644
index 0000000..0bc7d7c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_4 {
+
+    public String run() {
+        return "hello";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_5.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_5.j
new file mode 100644
index 0000000..753df23
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_areturn_5.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 1
+    .limit locals 1
+
+;    ldc "hello"
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_5.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_5.java
new file mode 100644
index 0000000..7463e46
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_5 {
+
+    public String run() {
+        return "hello";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_6.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_6.j
new file mode 100644
index 0000000..372e3e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_6.j
@@ -0,0 +1,88 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_areturn_6.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit locals 6
+    .limit stack 3
+    
+    ldc "a"
+    astore_1
+    ldc "b"
+    astore_2
+    ldc "c"
+    astore 3
+    
+    ldc "d"
+    
+    invokestatic dxc/junit/opcodes/areturn/jm/T_areturn_6/test()Ljava/lang/String;
+    
+    ldc "ddd"
+    if_acmpne Label1
+    
+    ldc "d"
+    if_acmpne Label0
+    
+    aload_1
+    ldc "a"
+    if_acmpne Label0
+    
+    aload_2
+    ldc "b"
+    if_acmpne Label0
+    
+    aload 3
+    ldc "c"
+    if_acmpne Label0    
+    
+    ldc "hello"
+    areturn
+    
+Label1:
+    pop
+Label0:
+    ldc "a"
+    areturn    
+    
+.end method
+
+.method private static test()Ljava/lang/String;
+    .limit stack 1
+    .limit locals 3
+
+    ldc "aaa"
+    astore_0
+
+    ldc "bbb"
+    astore_1
+
+    ldc "ccc"
+    astore_2
+
+    ldc "ddd"
+
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_6.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_6.java
new file mode 100644
index 0000000..685c106b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_6.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_6 {
+
+    public String run() {
+        return "hello";
+    }
+    
+    private static String test() {
+        String a = "aaa";
+        String b = "bbb";
+        String c = "ccc";
+        return "ddd";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_7.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_7.j
new file mode 100644
index 0000000..c922898
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_7.j
@@ -0,0 +1,174 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_areturn_7.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_7
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field  value Ljava/lang/Integer;
+.field  failed Z
+
+.method public <init>()V
+    .limit stack 4
+    .limit locals 1
+    
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    new java/lang/Integer
+    dup
+    iconst_0
+    invokespecial java/lang/Integer/<init>(I)V
+    putfield dxc.junit.opcodes.areturn.jm.T_areturn_7.value Ljava/lang/Integer;
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.areturn.jm.T_areturn_7.failed Z
+
+    return
+
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+    
+    iconst_0
+    istore_1
+
+Label4:
+    goto Label0
+
+Label1:
+    aload_0
+    invokespecial dxc/junit/opcodes/areturn/jm/T_areturn_7/test()Ljava/lang/Integer;
+    pop
+
+    iinc 1 1
+
+Label0:
+    iload_1
+    sipush 1000
+    if_icmplt Label1
+
+    return
+.end method
+
+
+
+.method private synchronized test()Ljava/lang/Integer;
+    .limit stack 4
+    .limit locals 2
+    
+    new java/lang/Integer
+    dup
+    aload_0
+    getfield dxc.junit.opcodes.areturn.jm.T_areturn_7.value Ljava/lang/Integer;
+    invokevirtual java/lang/Integer/intValue()I
+    iconst_1
+    iadd
+    invokespecial java/lang/Integer/<init>(I)V
+    astore_1
+
+    aload_0
+    aload_1
+    putfield dxc.junit.opcodes.areturn.jm.T_areturn_7.value Ljava/lang/Integer;
+
+    invokestatic java/lang/Thread/yield()V
+
+    aload_1
+    aload_0
+    getfield dxc.junit.opcodes.areturn.jm.T_areturn_7.value Ljava/lang/Integer;
+    if_acmpeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.areturn.jm.T_areturn_7.failed Z
+
+Label0:
+    aload_1
+    areturn
+.end method
+
+
+
+.method public static execute()Z
+    .limit stack 3
+    .limit locals 4
+
+    new dxc/junit/opcodes/areturn/jm/T_areturn_7
+    dup
+    invokespecial dxc/junit/opcodes/areturn/jm/T_areturn_7/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:
+    astore_3
+
+Label10:
+    iconst_0
+    ireturn
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.areturn.jm.T_areturn_7.value Ljava/lang/Integer;
+    invokevirtual java/lang/Integer/intValue()I
+    sipush 2000
+    if_icmpeq Label1
+
+    iconst_0
+    ireturn
+
+Label1:
+    aload_0
+    getfield dxc.junit.opcodes.areturn.jm.T_areturn_7.failed Z
+    ifeq Label2
+    iconst_0
+    goto Label3
+
+Label2:
+    iconst_1
+
+Label3:
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_7.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_7.java
new file mode 100644
index 0000000..f58eb51
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_7.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+import dxc.junit.opcodes.areturn.jm.T_areturn_7;
+
+public class T_areturn_7 implements Runnable {
+    public final static int CNT = 1000;
+    Integer value = new Integer(0);
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    private synchronized Integer test()  {
+        Integer c = new Integer(value.intValue() + 1);
+        
+        value = c;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+        return c;
+    }
+    
+    public static boolean execute() {
+        T_areturn_7 test = new T_areturn_7();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value.intValue() != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_8.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_8.j
new file mode 100644
index 0000000..953e5eb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_8.j
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_areturn_8.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private synchronized test()Ljava/lang/String;
+    .limit stack 1
+    .limit locals 1
+ 
+    aload_0
+    monitorexit
+    ldc "abc"
+    areturn
+
+.end method
+
+.method public run()Z
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial dxc/junit/opcodes/areturn/jm/T_areturn_8/test()Ljava/lang/String;
+    pop
+
+    iconst_1
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_8.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_8.java
new file mode 100644
index 0000000..f12ed82
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_8.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_8 {
+    
+    private synchronized String test() {
+        return "abc";
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_9.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_9.j
new file mode 100644
index 0000000..75b7309
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_9.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_areturn_9.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_9
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    monitorenter
+    ldc "abc"
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_9.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_9.java
new file mode 100644
index 0000000..df35df5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_9 {
+    
+    public String run() {
+        return "abc";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/TetsStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/TetsStubs.java
new file mode 100644
index 0000000..7b46a68
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/TetsStubs.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+
+interface TInterface{
+    
+}
+
+class TSuper implements TInterface {
+    
+}
+
+class TChild extends TSuper {
+    
+}
+
+class TSuper2 {
+    
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/arraylength/Test_arraylength.java b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/Test_arraylength.java
new file mode 100644
index 0000000..f5dfd91
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/Test_arraylength.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.arraylength;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.arraylength.jm.T_arraylength_1;
+
+public class Test_arraylength extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_arraylength_1 t = new T_arraylength_1();
+        String[] a = new String[5];
+        assertEquals(5, t.run(a));
+    }
+
+    /**
+     * @title NullPointerException expected
+     */
+    public void testNPE1() {
+        T_arraylength_1 t = new T_arraylength_1();
+        try {
+            t.run(null);
+            fail("NPE expected");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.arraylength.jm.T_arraylength_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.arraylength.jm.T_arraylength_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_1.j b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_1.j
new file mode 100644
index 0000000..75cd6f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_arraylength_1.java
+.class public dxc/junit/opcodes/arraylength/jm/T_arraylength_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/Object;)I
+    .limit stack 1
+    .limit locals 2
+    aload_1
+    arraylength
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_1.java b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_1.java
new file mode 100644
index 0000000..7b204689
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.arraylength.jm;
+
+public class T_arraylength_1 {
+
+    public int run(Object[] arr) {
+        return arr.length;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_2.j b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_2.j
new file mode 100644
index 0000000..469b364
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_2.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.class public dxc/junit/opcodes/arraylength/jm/T_arraylength_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 2
+
+    aload_0            ; load "this" pointer
+    arraylength
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_2.java b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_2.java
new file mode 100644
index 0000000..4ec2183
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.arraylength.jm;
+
+public class T_arraylength_2 {
+
+    public int run() {
+        byte[] ba = null;
+        return ba.length;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_3.j b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_3.j
new file mode 100644
index 0000000..30e8cd0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.class public dxc/junit/opcodes/arraylength/jm/T_arraylength_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 2
+
+    iconst_1
+    arraylength
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_3.java b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_3.java
new file mode 100644
index 0000000..6723a27
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.arraylength.jm;
+
+public class T_arraylength_3 {
+
+    public int run() {
+        byte[] ba = null;
+        return ba.length;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/Test_astore.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/Test_astore.java
new file mode 100644
index 0000000..6e99ace
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/Test_astore.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.astore.jm.T_astore_1;
+import dxc.junit.opcodes.astore.jm.T_astore_1_w;
+import dxc.junit.opcodes.astore.jm.T_astore_5;
+import dxc.junit.opcodes.astore.jm.T_astore_5_w;
+
+public class Test_astore extends DxTestCase {
+
+    /*
+     * NORMAL astore VERSION
+     */
+
+    /**
+     * @title  astore 0
+     */
+    public void testN1() {
+        assertEquals("hello", T_astore_1.run());
+    }
+
+    /**
+     * @title  astore 255
+     */
+    public void testN2() {
+        assertEquals("world", T_astore_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore.jm.T_astore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore.jm.T_astore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore.jm.T_astore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE astore VERSION
+     */
+
+    /**
+     * @title  astore_w 0
+     */
+    public void testN3() {
+        assertEquals("hello", T_astore_1_w.run());
+    }
+
+    /**
+     * @title  astore 257
+     */
+    public void testN4() {
+        assertEquals("world", T_astore_5_w.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore.jm.T_astore_2_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore.jm.T_astore_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore.jm.T_astore_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1.j
new file mode 100644
index 0000000..8791368
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_1.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 1
+    
+    ldc "hello"
+    astore 0
+    ldc "hi"
+    aload 0
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1.java
new file mode 100644
index 0000000..cb6c942
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1_w.j
new file mode 100644
index 0000000..fb6432e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1_w.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_1_w.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_1_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 4
+    .limit locals 2
+    
+    ldc "hello"
+    astore_w 0
+    ldc "hi"
+    aload 0
+    areturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1_w.java
new file mode 100644
index 0000000..ee352e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_1_w {
+    
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2.j
new file mode 100644
index 0000000..82d9f21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_2.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    astore 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2.java
new file mode 100644
index 0000000..d6a8eff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2_w.j
new file mode 100644
index 0000000..935d039
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_2_w.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_2_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    astore_w 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2_w.java
new file mode 100644
index 0000000..13ddd3b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_2_w {
+    
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3.j
new file mode 100644
index 0000000..8c74ad3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_3.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    fconst_1
+    astore 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3.java
new file mode 100644
index 0000000..a8887d0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3_w.j
new file mode 100644
index 0000000..7988f8a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_3_w.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_3_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 3
+    .limit locals 2
+
+    fconst_1
+    astore_w 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3_w.java
new file mode 100644
index 0000000..c4c8d3b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_3_w {
+    
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4.j
new file mode 100644
index 0000000..5a3031a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_4.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    lconst_1
+    astore 0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4.java
new file mode 100644
index 0000000..3a20228
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4_w.j
new file mode 100644
index 0000000..29e8922
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_4_w.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_4_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 1
+
+    iconst_1
+    astore 0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4_w.java
new file mode 100644
index 0000000..078beb6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_4_w {
+    
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5.j
new file mode 100644
index 0000000..1d7c782
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_5.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 300
+    
+    ldc "world"
+    astore 255
+    ldc "hi"
+    aload 255
+    areturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5.java
new file mode 100644
index 0000000..c950130
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_5 {
+
+    public static String run() {
+        return "world";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5_w.j
new file mode 100644
index 0000000..690924f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_5_w.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_5_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 300
+    
+    ldc "world"
+    astore_w 257
+    ldc "hi"
+    aload 257
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5_w.java
new file mode 100644
index 0000000..c74bcd9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_5_w {
+    
+    public static String run() {
+        return "world";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_6.java
new file mode 100644
index 0000000..6518de1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_6 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/Test_astore_0.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/Test_astore_0.java
new file mode 100644
index 0000000..179ae7b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/Test_astore_0.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.astore_0.jm.T_astore_0_1;
+import dxc.junit.opcodes.astore_0.jm.T_astore_0_5;
+
+public class Test_astore_0 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals("hello", T_astore_0_1.run());
+    }
+
+    /**
+     * @title equality of astore_<n> and astore <n>
+     */
+    public void testN2() {
+        assertTrue(T_astore_0_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_0.jm.T_astore_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_0.jm.T_astore_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_0.jm.T_astore_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_1.j
new file mode 100644
index 0000000..50c2732
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_0_1.java
+.class public dxc/junit/opcodes/astore_0/jm/T_astore_0_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 1
+    
+    ldc "hello"
+    astore_0
+    ldc "hi"
+    aload_0
+    areturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_1.java
new file mode 100644
index 0000000..022182d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_0.jm;
+
+public class T_astore_0_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_2.j
new file mode 100644
index 0000000..1130fc4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_0_2.java
+.class public dxc/junit/opcodes/astore_0/jm/T_astore_0_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    astore_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_2.java
new file mode 100644
index 0000000..10af6e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_0.jm;
+
+public class T_astore_0_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_3.j
new file mode 100644
index 0000000..737a6ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_0_3.java
+.class public dxc/junit/opcodes/astore_0/jm/T_astore_0_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 1
+
+    fconst_1
+    astore_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_3.java
new file mode 100644
index 0000000..0e4e1cb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_0.jm;
+
+public class T_astore_0_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_4.j
new file mode 100644
index 0000000..c8e268b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_0_4.java
+.class public dxc/junit/opcodes/astore_0/jm/T_astore_0_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 1
+
+    lconst_1
+    astore_0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_4.java
new file mode 100644
index 0000000..4b54fd7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_0.jm;
+
+public class T_astore_0_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_5.j
new file mode 100644
index 0000000..f7a1082
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_5.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_0_5.java
+.class public dxc/junit/opcodes/astore_0/jm/T_astore_0_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 2
+
+    ldc "hello"
+    astore_0
+    aload_0
+    
+    ldc "hello"
+    astore 0
+    aload_0
+    
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_5.java
new file mode 100644
index 0000000..90f895e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_0.jm;
+
+public class T_astore_0_5 {
+
+    public static boolean run() {
+        String a = new String("hello");
+        return a == a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_6.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_6.java
new file mode 100644
index 0000000..9b32ca6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_0.jm;
+
+public class T_astore_0_6 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/Test_astore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/Test_astore_1.java
new file mode 100644
index 0000000..48c46b3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/Test_astore_1.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.astore_1.jm.T_astore_1_1;
+import dxc.junit.opcodes.astore_1.jm.T_astore_1_5;
+
+public class Test_astore_1 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals("hello", T_astore_1_1.run());
+    }
+
+    /**
+     * @title equality of astore_<n> and astore <n>
+     */
+    public void testN2() {
+        assertTrue(T_astore_1_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_1.jm.T_astore_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_1.jm.T_astore_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_1.jm.T_astore_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_1.j
new file mode 100644
index 0000000..0e3adb6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_1_1.java
+.class public dxc/junit/opcodes/astore_1/jm/T_astore_1_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 2
+    
+    ldc "hello"
+    astore_1
+    ldc "hi"
+    aload_1
+    areturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_1.java
new file mode 100644
index 0000000..6ce3fcc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_1.jm;
+
+public class T_astore_1_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_2.j
new file mode 100644
index 0000000..91110d9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_1_2.java
+.class public dxc/junit/opcodes/astore_1/jm/T_astore_1_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    astore_1
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_2.java
new file mode 100644
index 0000000..138f5cb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_1.jm;
+
+public class T_astore_1_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_3.j
new file mode 100644
index 0000000..2f86fe7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_1_3.java
+.class public dxc/junit/opcodes/astore_1/jm/T_astore_1_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    fconst_1
+    astore_1
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_3.java
new file mode 100644
index 0000000..73e0f14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_1.jm;
+
+public class T_astore_1_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_4.j
new file mode 100644
index 0000000..6581c7c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_1_4.java
+.class public dxc/junit/opcodes/astore_1/jm/T_astore_1_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    lconst_1
+    astore_1
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_4.java
new file mode 100644
index 0000000..8f831cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_1.jm;
+
+public class T_astore_1_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_5.j
new file mode 100644
index 0000000..4189fb3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_5.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_1_5.java
+.class public dxc/junit/opcodes/astore_1/jm/T_astore_1_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 2
+
+    ldc "hello"
+    astore_1
+    aload_1
+
+    ldc "hello"
+    astore 1
+    aload 1
+    
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_5.java
new file mode 100644
index 0000000..a45382f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_1.jm;
+
+public class T_astore_1_5 {
+
+    public static boolean run() {
+        String a = new String("hello");
+        return a == a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_6.java
new file mode 100644
index 0000000..d0e3916
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_1.jm;
+
+public class T_astore_1_6 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/Test_astore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/Test_astore_2.java
new file mode 100644
index 0000000..4d05fd2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/Test_astore_2.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.astore_2.jm.T_astore_2_1;
+import dxc.junit.opcodes.astore_2.jm.T_astore_2_5;
+
+public class Test_astore_2 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals("hello", T_astore_2_1.run());
+    }
+
+    /**
+     * @title equality of astore_<n> and astore <n>
+     */
+    public void testN2() {
+        assertTrue(T_astore_2_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_2.jm.T_astore_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_2.jm.T_astore_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_2.jm.T_astore_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_1.j
new file mode 100644
index 0000000..a974ce1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_2_1.java
+.class public dxc/junit/opcodes/astore_2/jm/T_astore_2_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 3
+    
+    ldc "hello"
+    astore_2
+    ldc "hi"
+    aload_2
+    areturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_1.java
new file mode 100644
index 0000000..e581790
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_2.jm;
+
+public class T_astore_2_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_2.j
new file mode 100644
index 0000000..750b538
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_2_2.java
+.class public dxc/junit/opcodes/astore_2/jm/T_astore_2_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    astore_2
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_2.java
new file mode 100644
index 0000000..ee9ffbd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_2.jm;
+
+public class T_astore_2_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_3.j
new file mode 100644
index 0000000..135abe7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_2_3.java
+.class public dxc/junit/opcodes/astore_2/jm/T_astore_2_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 3
+
+    fconst_2
+    astore_2
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_3.java
new file mode 100644
index 0000000..3c70ad7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_2.jm;
+
+public class T_astore_2_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_4.j
new file mode 100644
index 0000000..4708e55
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_2_4.java
+.class public dxc/junit/opcodes/astore_2/jm/T_astore_2_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 3
+
+    lconst_1
+    astore_2
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_4.java
new file mode 100644
index 0000000..46e882d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_2.jm;
+
+public class T_astore_2_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_5.j
new file mode 100644
index 0000000..f7edded
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_5.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_2_5.java
+.class public dxc/junit/opcodes/astore_2/jm/T_astore_2_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 3
+
+    ldc "hello"
+    astore_2
+    aload_2
+
+    ldc "hello"
+    astore 2
+    aload_2
+    
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_5.java
new file mode 100644
index 0000000..1b31c7d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_2.jm;
+
+public class T_astore_2_5 {
+
+    public static boolean run() {
+        String a = new String("hello");
+        return a == a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_6.java
new file mode 100644
index 0000000..f610892
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_2.jm;
+
+public class T_astore_2_6 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/Test_astore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/Test_astore_3.java
new file mode 100644
index 0000000..f8ca21f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/Test_astore_3.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.astore_3.jm.T_astore_3_1;
+import dxc.junit.opcodes.astore_3.jm.T_astore_3_5;
+
+public class Test_astore_3 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals("hello", T_astore_3_1.run());
+    }
+
+    /**
+     * @title equality of astore_<n> and astore <n>
+     */
+    public void testN2() {
+        assertTrue(T_astore_3_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_3.jm.T_astore_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_3.jm.T_astore_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_3.jm.T_astore_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_1.j
new file mode 100644
index 0000000..12cbc00a4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_3_1.java
+.class public dxc/junit/opcodes/astore_3/jm/T_astore_3_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 4
+    
+    ldc "hello"
+    astore_3
+    ldc "hi"
+    aload_3
+    areturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_1.java
new file mode 100644
index 0000000..5a118f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_3.jm;
+
+public class T_astore_3_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_2.j
new file mode 100644
index 0000000..a9c6268
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_3_2.java
+.class public dxc/junit/opcodes/astore_3/jm/T_astore_3_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    astore_3
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_2.java
new file mode 100644
index 0000000..d11fc80
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_3.jm;
+
+public class T_astore_3_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_3.j
new file mode 100644
index 0000000..52de374
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_3_3.java
+.class public dxc/junit/opcodes/astore_3/jm/T_astore_3_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 4
+
+    fconst_2
+    astore_3
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_3.java
new file mode 100644
index 0000000..b2aef96
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_3.jm;
+
+public class T_astore_3_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_4.j
new file mode 100644
index 0000000..c6623fd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_3_4.java
+.class public dxc/junit/opcodes/astore_3/jm/T_astore_3_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 4
+
+    lconst_1
+    astore_3
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_4.java
new file mode 100644
index 0000000..ae42784
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_3.jm;
+
+public class T_astore_3_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_5.j
new file mode 100644
index 0000000..c04ef0b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_5.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_astore_3_5.java
+.class public dxc/junit/opcodes/astore_3/jm/T_astore_3_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 4
+
+    ldc "hello"
+    astore_3
+    aload_3
+
+    ldc "hello"
+    astore 3
+    aload_3
+    
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_5.java
new file mode 100644
index 0000000..c94d01a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_3.jm;
+
+public class T_astore_3_5 {
+
+    public static boolean run() {
+        String a = new String("hello");
+        return a == a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_6.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_6.java
new file mode 100644
index 0000000..3250a5f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.astore_3.jm;
+
+public class T_astore_3_6 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/Test_athrow.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/Test_athrow.java
new file mode 100644
index 0000000..c8829e3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/Test_athrow.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.athrow;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.athrow.jm.T_athrow_1;
+import dxc.junit.opcodes.athrow.jm.T_athrow_11;
+import dxc.junit.opcodes.athrow.jm.T_athrow_12;
+import dxc.junit.opcodes.athrow.jm.T_athrow_2;
+import dxc.junit.opcodes.athrow.jm.T_athrow_4;
+import dxc.junit.opcodes.athrow.jm.T_athrow_5;
+import dxc.junit.opcodes.athrow.jm.T_athrow_8;
+
+public class Test_athrow extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_athrow_1 t = new T_athrow_1();
+        try {
+            t.run();
+            fail("must throw a RuntimeException");
+        } catch (RuntimeException re) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Throwing of the objectref on the class Throwable
+     */
+    public void testN2() {
+        T_athrow_2 t = new T_athrow_2();
+        try {
+            t.run();
+            fail("must throw a Throwable");
+        } catch (Throwable e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Throwing of the objectref on the subclass of Throwable
+     */
+    public void testN3() {
+        T_athrow_8 t = new T_athrow_8();
+        try {
+            t.run();
+            fail("must throw a Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Nearest matching catch must be executed in case of exception
+     */
+    public void testN4() {
+        T_athrow_12 t = new T_athrow_12();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  NullPointerException If objectref is null, athrow throws
+     * a NullPointerException instead of objectref
+     */
+    public void testE1() {
+        T_athrow_4 t = new T_athrow_4();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  IllegalMonitorStateException expected
+     */
+    public void testE2() {
+        T_athrow_5 t = new T_athrow_5();
+        try {
+            t.run();
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @title IllegalMonitorStateException if structural lock rule violated -
+     */
+    public void testE3() {
+        T_athrow_11 t = new T_athrow_11();
+        try {
+            t.run();
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        } catch (NullPointerException npe) {
+            // the JVM spec says that it is optional to implement the structural
+            // lock rules, see JVM spec 8.13 and monitorenter/exit opcodes.
+            System.out.print("dvmvfe:");
+            //fail ("expected IllegalMonitorStateException, but got NPE");
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.19
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.athrow.jm.T_athrow_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.athrow.jm.T_athrow_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.athrow.jm.T_athrow_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title type of argument - String
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.athrow.jm.T_athrow_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.19 
+     * @title Throwing of the objectref on the class which is not
+     *          the class Throwable or a subclass of Throwable.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.athrow.jm.T_athrow_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_1.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_1.j
new file mode 100644
index 0000000..6c0c1a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_1.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_athrow_1.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    new java/lang/RuntimeException
+    dup
+    invokespecial java/lang/RuntimeException/<init>()V
+    athrow
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_1.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_1.java
new file mode 100644
index 0000000..657ed24
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_1 {
+
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_10.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_10.j
new file mode 100644
index 0000000..96562a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_10.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_athrow_10.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_10
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    new    java/lang/String
+    dup
+    invokespecial java/lang/String/<init>()V
+    athrow
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_10.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_10.java
new file mode 100644
index 0000000..e9aceca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_10 {
+    
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_11.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_11.j
new file mode 100644
index 0000000..37429eb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_11.j
@@ -0,0 +1,50 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_athrow_11.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private test()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    monitorenter
+
+    new java/lang/NullPointerException
+    dup
+    invokespecial java/lang/NullPointerException/<init>()V
+
+    athrow
+
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial dxc/junit/opcodes/athrow/jm/T_athrow_11/test()V
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_11.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_11.java
new file mode 100644
index 0000000..43a0f0a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_11.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_11 {
+
+    private void test() {
+        throw new NullPointerException();
+    }
+    
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_12.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_12.j
new file mode 100644
index 0000000..fc0ba94
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_12.j
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_athrow_12.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_12
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+
+Label0:
+    new java/lang/RuntimeException
+    dup
+    invokespecial java/lang/RuntimeException/<init>()V
+    athrow
+
+Label5:
+    astore_1
+Label2:
+    iconst_1
+    ireturn
+
+Label3:
+    astore_1
+    iconst_0
+    ireturn
+
+.catch java/lang/RuntimeException from Label0 to Label5 using Label5
+.catch java/lang/RuntimeException from Label0 to Label2 using Label3
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_12.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_12.java
new file mode 100644
index 0000000..b7aca69
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_12.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_12 {
+
+    public boolean run() {
+        try{
+            try {
+                throw new RuntimeException();
+            }catch(RuntimeException e1) {
+                return true;
+            }
+        } catch(RuntimeException e2) {
+        }
+        return false;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_2.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_2.j
new file mode 100644
index 0000000..7df7277
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_athrow_2.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .throws java/lang/Throwable
+    .limit stack 2
+    .limit locals 1
+
+    new java/lang/Throwable
+    dup
+    invokespecial java/lang/Throwable/<init>()V
+    athrow
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_2.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_2.java
new file mode 100644
index 0000000..13be1ee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_2 {
+
+    public void run() throws Throwable {
+        throw new Throwable();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.cfh
new file mode 100644
index 0000000..d95df9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/athrow/jm/T_athrow_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0010
+// .  .  
+   00 10 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 07 
+    // parsed:, offset 15, len 5, h: 0002: method{java.lang.RuntimeException.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 07 
+    // parsed:, offset 20, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 39, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 52, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 61, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 67, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0c 
+    // parsed:, offset 72, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 79, len 18, h: 0009: utf8{"T_athrow_3.java"}
+    // .  .  .  T  _  a  t  h  r  o  w  _  3  .  j  a  v  a  
+       01 00 0f 54 5f 61 74 68 72 6f 77 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 97, len 41, h: 000a: utf8{"dxc/junit/opcodes/athrow/jm/T_athrow_3"}
+    // .  .  &  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  a  t  h  r  o  w  /  j  m  /  T  _  a  t  h  r  o  w  _  3  
+       01 00 26 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 61 74 68 72 6f 77 2f 6a 6d 2f 54 5f 61 74 68 72 6f 77 5f 33 
+    // parsed:, offset 138, len 29, h: 000b: utf8{"java/lang/RuntimeException"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  R  u  n  t  i  m  e  E  x  c  e  p  t  i  o  n  
+       01 00 1a 6a 61 76 61 2f 6c 61 6e 67 2f 52 75 6e 74 69 6d 65 45 78 63 65 70 74 69 6f 6e 
+    // parsed:, offset 167, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 173, len 3, h: 000d: type{java.lang.RuntimeException}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 176, len 3, h: 000e: type{dxc.junit.opcodes.athrow.jm.T_athrow_3}
+    // .  .  .  
+       07 00 0a 
+    // parsed:, offset 179, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 182, len 0, h: end constant_pool
+// parsed:, offset 182, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 184, len 2, h: this_class: type{dxc.junit.opcodes.athrow.jm.T_athrow_3}
+// .  .  
+   00 0e 
+// parsed:, offset 186, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 188, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 190, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 192, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 194, len:75,desc: ()V
+// parsed:, offset 194, len 0, h:  methods[0]: 
+    // parsed:, offset 194, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 196, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 198, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 200, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 202, len 0, h:  attributes[0]: 
+        // parsed:, offset 202, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 204, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 208, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 210, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 212, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 221, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 223, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 225, len 0, h: end attributes[0] 
+// parsed:, offset 225, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 225, len:44,desc: ()V
+// parsed:, offset 225, len 0, h:  methods[1]: 
+    // parsed:, offset 225, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 227, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 229, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 231, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 233, len 0, h:  attributes[0]: 
+        // parsed:, offset 233, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 235, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 239, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 241, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 243, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 3, h: 0000: new type{java.lang.RuntimeException}
+        // .  .  .  
+//@mod           bb 00 0d 
+           bb 01 0d           
+        // parsed:, offset 3, len 1, h: 0003: dup
+        // Y  
+           59 
+        // parsed:, offset 4, len 3, h: 0004: invokespecial method{java.lang.RuntimeException.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 7, len 1, h: 0007: athrow
+        // .  
+           bf 
+        // parsed:, offset 255, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 257, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 259, len 0, h: end attributes[0] 
+// parsed:, offset 259, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 259, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 261, len 0, h:  attributes[0]: 
+    // parsed:, offset 261, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 263, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 267, len 2, h: source: utf8{"T_athrow_3.java"}
+    // .  .  
+       00 09 
+// parsed:, offset 269, len 0, h: end attributes[0] 
+// parsed:, offset 269, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.j
new file mode 100644
index 0000000..c4ea4ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_athrow_3.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    new java/lang/RuntimeException
+    dup
+    invokespecial java/lang/RuntimeException/<init>()V
+    athrow
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.java
new file mode 100644
index 0000000..8d985e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_3 {
+
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_4.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_4.j
new file mode 100644
index 0000000..9f74fd7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_athrow_4.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    aconst_null
+    athrow
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_4.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_4.java
new file mode 100644
index 0000000..a50d5cd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_4 {
+
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_5.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_5.j
new file mode 100644
index 0000000..887180b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_athrow_5.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public synchronized run()V
+    .limit stack 2
+    .limit locals 1
+    
+    aload_0
+    monitorexit
+    
+    new java/lang/NullPointerException
+    dup
+    invokespecial java/lang/NullPointerException/<init>()V
+
+    athrow
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_5.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_5.java
new file mode 100644
index 0000000..3296cda
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_5 {
+
+    public synchronized void run() {
+            throw new NullPointerException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_6.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_6.j
new file mode 100644
index 0000000..754f150
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_6.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_athrow_6.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    athrow
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_6.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_6.java
new file mode 100644
index 0000000..0ec671c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_6 {
+
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_7.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_7.j
new file mode 100644
index 0000000..7ef0094
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_athrow_7.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    fconst_0
+    athrow
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_7.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_7.java
new file mode 100644
index 0000000..8b4146c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_7 {
+    
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_8.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_8.j
new file mode 100644
index 0000000..6a3a04a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_8.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_athrow_8.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .throws java/lang/Error
+    .limit stack 2
+    .limit locals 1
+
+    new java/lang/Error
+    dup
+    invokespecial java/lang/Error/<init>()V
+    athrow
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_8.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_8.java
new file mode 100644
index 0000000..0ee1856
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_8 {
+
+    public void run() throws Error {
+        throw new Error();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_9.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_9.j
new file mode 100644
index 0000000..6bcef31
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_9.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_athrow_9.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_9
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    new java/lang/Object
+    dup
+    invokespecial java/lang/RuntimeException/<init>()V
+    athrow
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_9.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_9.java
new file mode 100644
index 0000000..9dea3b5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_9 {
+    
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/Test_baload.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/Test_baload.java
new file mode 100644
index 0000000..8cd4511
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/Test_baload.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.baload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.baload.jm.T_baload_1;
+
+public class Test_baload extends DxTestCase {
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN1() {
+        T_baload_1 t = new T_baload_1();
+        byte[] arr = new byte[2];
+        arr[1] = 100;
+        assertEquals(100, t.run(arr, 1));
+    }
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_baload_1 t = new T_baload_1();
+        byte[] arr = new byte[2];
+        arr[0] = 100;
+        assertEquals(100, t.run(arr, 0));
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_baload_1 t = new T_baload_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_baload_1 t = new T_baload_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_baload_1 t = new T_baload_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.baload.jm.T_baload_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.baload.jm.T_baload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.baload.jm.T_baload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.baload.jm.T_baload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object, short
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.baload.jm.T_baload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], short
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.baload.jm.T_baload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int[], int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.baload.jm.T_baload_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.baload.jm.T_baload_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_1.j
new file mode 100644
index 0000000..1d028c0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_baload_1.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([BI)B
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+
+    baload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_1.java
new file mode 100644
index 0000000..bfb95ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_1 {
+    public byte run(byte[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_2.j
new file mode 100644
index 0000000..d21f2e7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_baload_2.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([BI)B
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+;    iload_2
+
+    baload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_2.java
new file mode 100644
index 0000000..74f6686
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_2 {
+
+    public byte run(byte[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_3.j
new file mode 100644
index 0000000..7f20dfb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_baload_3.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([BI)B
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    baload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_3.java
new file mode 100644
index 0000000..f9ffedd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_3 {
+
+    public byte run(byte[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_4.j
new file mode 100644
index 0000000..26e2c63
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_baload_4.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([BD)B
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    baload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_4.java
new file mode 100644
index 0000000..17b9452
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_4 {
+
+    public byte run(byte[] arr, double idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_5.j
new file mode 100644
index 0000000..821f3d6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_baload_5.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([BJ)B
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    lload_2
+;    l2i
+    baload
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_5.java
new file mode 100644
index 0000000..0e033dc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_5 {
+
+    public byte run(byte[] arr, long idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_6.j
new file mode 100644
index 0000000..b02bf0d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_baload_6.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;[BI)B
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_3
+
+    baload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_6.java
new file mode 100644
index 0000000..819ec21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_6 {
+
+    public byte run(Object a, byte[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_7.j
new file mode 100644
index 0000000..32607e2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_baload_7.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([D[BI)B
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    baload
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_7.java
new file mode 100644
index 0000000..af1d1af
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_7 {
+
+    public byte run(double[] a, byte[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_8.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_8.j
new file mode 100644
index 0000000..b7dd523
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_8.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_baload_8.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([I[BI)B
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    baload
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_8.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_8.java
new file mode 100644
index 0000000..eeb6197
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_8 {
+
+    public byte run(int[] a, byte[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_9.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_9.j
new file mode 100644
index 0000000..f47a328
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_9.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_baload_9.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([BI)B
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_0
+    baload
+
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_9.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_9.java
new file mode 100644
index 0000000..9471c7a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_9 {
+    
+    public byte run(byte[] arr, int idx) {
+        return arr[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/Test_bastore.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/Test_bastore.java
new file mode 100644
index 0000000..e183f0d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/Test_bastore.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.bastore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.bastore.jm.T_bastore_1;
+
+public class Test_bastore extends DxTestCase {
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN1() {
+        T_bastore_1 t = new T_bastore_1();
+        byte[] arr = new byte[2];
+        t.run(arr, 1, (byte) 100);
+        assertEquals(100, arr[1]);
+    }
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_bastore_1 t = new T_bastore_1();
+        byte[] arr = new byte[2];
+        t.run(arr, 0, (byte) 100);
+        assertEquals(100, arr[0]);
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_bastore_1 t = new T_bastore_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, 2, (byte) 100);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_bastore_1 t = new T_bastore_1();
+        try {
+            t.run(null, 2, (byte) 100);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_bastore_1 t = new T_bastore_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, -1, (byte) 100);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.bastore.jm.T_bastore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.bastore.jm.T_bastore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double,
+     * short
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.bastore.jm.T_bastore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.bastore.jm.T_bastore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - object, int,
+     * short
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.bastore.jm.T_bastore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int,
+     * short
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.bastore.jm.T_bastore_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int,
+     * short
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.bastore.jm.T_bastore_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference,
+     * short
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.bastore.jm.T_bastore_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_1.j
new file mode 100644
index 0000000..49c11df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_bastore_1.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([BIB)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    iload_3
+    bastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_1.java
new file mode 100644
index 0000000..82c22a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_1 {
+    public void run(byte[] arr, int idx, byte value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_2.j
new file mode 100644
index 0000000..d67c623
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_bastore_2.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([BIB)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    ;iload_3
+    bastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_2.java
new file mode 100644
index 0000000..a34acf8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_2 {
+
+    public void run(byte[] arr, int idx, byte value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_3.j
new file mode 100644
index 0000000..68920fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_bastore_3.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([BIB)V
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    iload_3
+    bastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_3.java
new file mode 100644
index 0000000..533b440
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_3 {
+
+    public void run(byte[] arr, int idx, byte value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_4.j
new file mode 100644
index 0000000..a4f8aaa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_4.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_bastore_4.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([BDI)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    iload 4
+    bastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_4.java
new file mode 100644
index 0000000..6dbb401
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_4 {
+
+    public void run(byte[] arr, double idx, byte value) {
+        arr[(int)idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_5.j
new file mode 100644
index 0000000..49c1303
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_bastore_5.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([BIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+    lload 3
+;   l2i
+;    i2s    
+    bastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_5.java
new file mode 100644
index 0000000..af3fe81
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_5 {
+
+    public void run(byte[] arr, int idx, long value) {
+        arr[idx] = (byte)value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_6.j
new file mode 100644
index 0000000..e6ce2e0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_bastore_6.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;IB)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    iload_3
+    bastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_6.java
new file mode 100644
index 0000000..4db5a94
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_6 {
+
+    public void run(Object a, byte[] arr, int idx, byte value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_7.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_7.j
new file mode 100644
index 0000000..4470df9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_7.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_bastore_7.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([D[BIB)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    iload 4
+    bastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_7.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_7.java
new file mode 100644
index 0000000..d97dd1d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_7 {
+
+    public void run(double a[], byte[] arr, int idx, byte value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_8.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_8.j
new file mode 100644
index 0000000..54feab5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_8.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_bastore_8.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([J[BIB)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    iload 4
+    bastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_8.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_8.java
new file mode 100644
index 0000000..77b58c0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_8 {
+
+    public void run(long a[], byte[] arr, int idx, byte value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_9.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_9.j
new file mode 100644
index 0000000..f2f3ec3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_bastore_9.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([BIB)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    aload_0
+    iload_3
+    bastore
+
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_9.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_9.java
new file mode 100644
index 0000000..9b62a2c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_9 {
+    
+    public void run(byte[] arr, int idx, byte value) {
+        arr[idx] = value;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/Test_bipush.java b/tools/dx-tests/src/dxc/junit/opcodes/bipush/Test_bipush.java
new file mode 100644
index 0000000..2eb5bce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/Test_bipush.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.bipush;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.bipush.jm.T_bipush_1;
+import dxc.junit.opcodes.bipush.jm.T_bipush_2;
+import dxc.junit.opcodes.bipush.jm.T_bipush_3;
+
+public class Test_bipush extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_bipush_1 t = new T_bipush_1();
+        assertEquals(100, t.run());
+    }
+
+    /**
+     * @title normal test
+     */
+    public void testB1() {
+        T_bipush_2 t = new T_bipush_2();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title normal test
+     */
+    public void testB2() {
+        T_bipush_3 t = new T_bipush_3();
+        assertEquals(-1, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.bipush.jm.T_bipush_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_1.j b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_1.j
new file mode 100644
index 0000000..40d0a80
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_bipush_1.java
+.class public dxc/junit/opcodes/bipush/jm/T_bipush_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()B
+    bipush 100
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_1.java b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_1.java
new file mode 100644
index 0000000..5c2667d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.bipush.jm;
+
+public class T_bipush_1 {
+
+    public byte run() {
+        return (byte)100;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_2.j b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_2.j
new file mode 100644
index 0000000..17b6e3a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_bipush_2.java
+.class public dxc/junit/opcodes/bipush/jm/T_bipush_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()B
+    .limit stack 1
+    .limit locals 1
+
+    bipush 0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_2.java b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_2.java
new file mode 100644
index 0000000..9b04e4d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.bipush.jm;
+
+public class T_bipush_2 {
+
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_3.j b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_3.j
new file mode 100644
index 0000000..7e93411
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_bipush_3.java
+.class public dxc/junit/opcodes/bipush/jm/T_bipush_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()B
+    .limit stack 1
+    .limit locals 1
+
+    bipush -1
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_3.java b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_3.java
new file mode 100644
index 0000000..0fad6c7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.bipush.jm;
+
+public class T_bipush_3 {
+
+    public byte run() {
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_4.j b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_4.j
new file mode 100644
index 0000000..0d9b7d9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_bipush_4.java
+.class public dxc/junit/opcodes/bipush/jm/T_bipush_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()B
+    .limit stack 1
+;    .limit locals 1
+
+    bipush 1
+    bipush 1
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_4.java b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_4.java
new file mode 100644
index 0000000..4740577
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.bipush.jm;
+
+public class T_bipush_4 {
+
+    public byte run() {
+        return 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/Test_caload.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/Test_caload.java
new file mode 100644
index 0000000..3db3080
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/Test_caload.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.caload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.caload.jm.T_caload_1;
+
+public class Test_caload extends DxTestCase {
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN1() {
+        T_caload_1 t = new T_caload_1();
+        char[] arr = new char[2];
+        arr[1] = 'g';
+        assertEquals('g', t.run(arr, 1));
+    }
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_caload_1 t = new T_caload_1();
+        char[] arr = new char[2];
+        arr[0] = 'g';
+        assertEquals('g', t.run(arr, 0));
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_caload_1 t = new T_caload_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_caload_1 t = new T_caload_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_caload_1 t = new T_caload_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.caload.jm.T_caload_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.caload.jm.T_caload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.caload.jm.T_caload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.caload.jm.T_caload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object, char
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.caload.jm.T_caload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], char
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.caload.jm.T_caload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int[], int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.caload.jm.T_caload_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.caload.jm.T_caload_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_1.j
new file mode 100644
index 0000000..3d541a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_caload_1.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([CI)C
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+
+    caload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_1.java
new file mode 100644
index 0000000..beb189c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_1 {
+    public char run(char[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_2.j
new file mode 100644
index 0000000..9df1729
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_caload_2.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([CI)C
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+;    iload_2
+
+    caload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_2.java
new file mode 100644
index 0000000..fffa0bf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_2 {
+
+    public char run(char[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_3.j
new file mode 100644
index 0000000..28233b4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_caload_3.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([CI)C
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    caload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_3.java
new file mode 100644
index 0000000..4d12ec7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_3 {
+
+    public char run(char[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_4.j
new file mode 100644
index 0000000..8d67495
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_caload_4.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([CD)C
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    caload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_4.java
new file mode 100644
index 0000000..2e9c3e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_4 {
+
+    public char run(char[] arr, double idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_5.j
new file mode 100644
index 0000000..9a3eb23
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_caload_5.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([CJ)C
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    lload_2
+;    l2i
+    caload
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_5.java
new file mode 100644
index 0000000..2fde894
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_5 {
+
+    public char run(char[] arr, long idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_6.j
new file mode 100644
index 0000000..549c5fc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_caload_6.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;[CI)C
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_3
+
+    caload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_6.java
new file mode 100644
index 0000000..c4b5fb1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_6 {
+
+    public char run(Object a, char[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_7.j
new file mode 100644
index 0000000..9c7513a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_caload_7.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([D[CI)C
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    caload
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_7.java
new file mode 100644
index 0000000..0b93a7d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_7 {
+
+    public char run(double[] a, char[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_8.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_8.j
new file mode 100644
index 0000000..34f05f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_8.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_caload_8.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([I[CI)C
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    caload
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_8.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_8.java
new file mode 100644
index 0000000..41c435d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_8 {
+
+    public char run(int[] a, char[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_9.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_9.j
new file mode 100644
index 0000000..d0489ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_9.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_caload_9.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([CI)C
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_0
+    caload
+
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_9.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_9.java
new file mode 100644
index 0000000..c5c29e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_9 {
+    
+    public char run(char[] arr, int idx) {
+        return arr[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/Test_castore.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/Test_castore.java
new file mode 100644
index 0000000..c427cd6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/Test_castore.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.castore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.castore.jm.T_castore_1;
+
+public class Test_castore extends DxTestCase {
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN1() {
+        T_castore_1 t = new T_castore_1();
+        char[] arr = new char[2];
+        t.run(arr, 1, 'g');
+        assertEquals('g', arr[1]);
+    }
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_castore_1 t = new T_castore_1();
+        char[] arr = new char[2];
+        t.run(arr, 0, 'g');
+        assertEquals('g', arr[0]);
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_castore_1 t = new T_castore_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, 2, 'g');
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_castore_1 t = new T_castore_1();
+        try {
+            t.run(null, 2, 'g');
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_castore_1 t = new T_castore_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, -1, 'g');
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.castore.jm.T_castore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.castore.jm.T_castore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double,
+     * char
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.castore.jm.T_castore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.castore.jm.T_castore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - object, int, char
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.castore.jm.T_castore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int,
+     * char
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.castore.jm.T_castore_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int, char
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.castore.jm.T_castore_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference,
+     * char
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.castore.jm.T_castore_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_1.j
new file mode 100644
index 0000000..5936fc5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_castore_1.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([CIC)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    iload_3
+    castore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_1.java
new file mode 100644
index 0000000..011ac3b6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_1 {
+    public void run(char[] arr, int idx, char value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_2.j
new file mode 100644
index 0000000..6589661
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_castore_2.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([CIC)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    ;iload_3
+    castore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_2.java
new file mode 100644
index 0000000..b04e352
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_2 {
+
+    public void run(char[] arr, int idx, char value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_3.j
new file mode 100644
index 0000000..2253cc7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_castore_3.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([CIC)V
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    iload_3
+    castore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_3.java
new file mode 100644
index 0000000..55be405
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_3 {
+
+    public void run(char[] arr, int idx, char value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_4.j
new file mode 100644
index 0000000..11c390f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_4.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_castore_4.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([CDC)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    iload 4
+    castore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_4.java
new file mode 100644
index 0000000..3666fa1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_4 {
+
+    public void run(char[] arr, double idx, char value) {
+        arr[(int)idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_5.j
new file mode 100644
index 0000000..3cfa149
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_castore_5.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([CIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+    lload 3
+;   l2i
+;    i2s    
+    castore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_5.java
new file mode 100644
index 0000000..1d43a3d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_5 {
+
+    public void run(char[] arr, int idx, long value) {
+        arr[idx] = (char)value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_6.j
new file mode 100644
index 0000000..f5caba3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_castore_6.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;IC)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    iload_3
+    castore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_6.java
new file mode 100644
index 0000000..57ad883
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_6 {
+
+    public void run(Object a, char[] arr, int idx, char value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_7.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_7.j
new file mode 100644
index 0000000..81a790e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_7.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_castore_7.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([D[CIC)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    iload 4
+    castore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_7.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_7.java
new file mode 100644
index 0000000..62418ca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_7 {
+
+    public void run(double a[], char[] arr, int idx, char value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_8.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_8.j
new file mode 100644
index 0000000..8e33f1f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_8.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_castore_8.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([J[CIC)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    iload 4
+    castore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_8.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_8.java
new file mode 100644
index 0000000..d5bfaba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_8 {
+
+    public void run(long a[], char[] arr, int idx, char value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_9.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_9.j
new file mode 100644
index 0000000..955dc0e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_castore_9.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([CIC)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    aload_0
+    iload_3
+    castore
+
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_9.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_9.java
new file mode 100644
index 0000000..097fcfc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_9 {
+    
+    public void run(char[] arr, int idx, char value) {
+        arr[idx] = value;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/Test_checkcast.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/Test_checkcast.java
new file mode 100644
index 0000000..a6f2350
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/Test_checkcast.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.checkcast;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.checkcast.jm.T_checkcast_1;
+import dxc.junit.opcodes.checkcast.jm.T_checkcast_2;
+import dxc.junit.opcodes.checkcast.jm.T_checkcast_3;
+import dxc.junit.opcodes.checkcast.jm.T_checkcast_7;
+
+public class Test_checkcast extends DxTestCase {
+    
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_checkcast_1 t = new T_checkcast_1();
+        String s = "";
+        assertEquals(s, t.run(s));
+    }
+
+    /**
+     * @title check null value
+     */
+    public void testN2() {
+        T_checkcast_1 t = new T_checkcast_1();
+        assertNull(t.run(null));
+    }
+
+    /**
+     * @title normal class
+     */
+    public void testN4() {
+        // @uses dxc.junit.opcodes.checkcast.jm.SubClass
+        // @uses dxc.junit.opcodes.checkcast.jm.SuperClass
+        // @uses dxc.junit.opcodes.checkcast.jm.SuperInterface
+        // @uses dxc.junit.opcodes.checkcast.jm.SuperInterface2
+        
+        T_checkcast_2 t = new T_checkcast_2();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title expected ClassCastException
+     */
+    public void testE1() {
+        T_checkcast_1 t = new T_checkcast_1();
+        try {
+            t.run(this);
+            fail("expected ClassCastException");
+        } catch (ClassCastException iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ClassCastException. checkcast [[[Ldxc/junit/opcodes/checkcast/jm/TestStubs$TestStub;
+     * dalvikvm throws ClassCastException as demanded by checkcast, but
+     * does not claim a IllegalAccessError to a private class - ok, 
+     * since checkcast does what the spec says it should do.
+     */
+    public void testE2() {
+        // @uses dxc.junit.opcodes.checkcast.jm.TestStubs$TestStub
+        try {
+            T_checkcast_3 t = new T_checkcast_3();
+            t.run();
+            fail("expected ClassCastException");
+        } catch (ClassCastException cce) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NoClassDefFoundError
+     */
+    public void testE3() {
+        try {
+            T_checkcast_7 t = new T_checkcast_7();
+            t.run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError iae) {
+            // expected
+        } catch (VerifyError vfe) {
+            // ok for dalvikvm; early resolution
+            System.out.print("dvmvfe:");
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.16
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.checkcast.jm.T_checkcast_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.checkcast.jm.T_checkcast_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.checkcast.jm.T_checkcast_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.16
+     * @title constant pool type
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.checkcast.jm.T_checkcast_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_1.j b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_1.j
new file mode 100644
index 0000000..2efe0d6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_checkcast_1.java
+.class public dxc/junit/opcodes/checkcast/jm/T_checkcast_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+    aload_1
+    checkcast java/lang/String
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_1.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_1.java
new file mode 100644
index 0000000..c416457
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+public class T_checkcast_1 {
+
+    public String run(Object o) {
+        return (String)o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_2.j b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_2.j
new file mode 100644
index 0000000..01d2e59
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_2.j
@@ -0,0 +1,139 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_checkcast_2.java
+.class public dxc/junit/opcodes/checkcast/jm/T_checkcast_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 20
+    .limit locals 2
+    
+    iconst_0
+    istore_1
+    
+; (SubClass instanceof SuperClass)    
+    new        dxc/junit/opcodes/checkcast/jm/SubClass
+    dup
+    invokespecial dxc/junit/opcodes/checkcast/jm/SubClass.<init>()V
+    checkcast dxc/junit/opcodes/checkcast/jm/SuperClass
+    pop
+    
+; (SubClass[] instanceof SuperClass[])    
+    iconst_1
+    anewarray dxc/junit/opcodes/checkcast/jm/SubClass
+    checkcast [Ldxc/junit/opcodes/checkcast/jm/SuperClass;
+    pop    
+    
+; (SubClass[] instanceof Object)    
+    iconst_1
+    anewarray dxc/junit/opcodes/checkcast/jm/SubClass
+    checkcast java/lang/Object
+    pop
+    
+; (SubClass instanceof SuperInterface)    
+    new dxc/junit/opcodes/checkcast/jm/SubClass
+    dup
+    invokespecial dxc/junit/opcodes/checkcast/jm/SubClass.<init>()V    
+    checkcast dxc/junit/opcodes/checkcast/jm/SuperInterface
+    pop
+        
+
+; !(SuperClass instanceof SubClass)    
+Label1:
+    new dxc/junit/opcodes/checkcast/jm/SuperClass
+    dup
+    invokespecial dxc/junit/opcodes/checkcast/jm/SuperClass.<init>()V
+Label10:    
+    checkcast dxc/junit/opcodes/checkcast/jm/SubClass
+    pop
+Label11:    
+    goto Label2
+Label12:
+    pop
+    iinc 1 1
+    goto Label2
+        
+; !(SubClass instanceof SuperInterface2)    
+Label2:
+    new dxc/junit/opcodes/checkcast/jm/SubClass
+    dup
+    invokespecial dxc/junit/opcodes/checkcast/jm/SubClass.<init>()V    
+Label20:    
+    checkcast dxc/junit/opcodes/checkcast/jm/SuperInterface2
+    pop
+Label21:    
+    goto Label3
+Label22:
+    pop
+    iinc 1 1
+    goto Label3
+
+; !(SubClass[] instanceof SuperInterface)    
+Label3:
+    iconst_1
+    anewarray dxc/junit/opcodes/checkcast/jm/SubClass
+Label30:    
+    checkcast dxc/junit/opcodes/checkcast/jm/SuperInterface
+    pop
+Label31:    
+    goto Label4
+Label32:    
+    pop
+    iinc 1 1
+    goto Label4
+
+; !(SubClass[] instanceof SubClass)    
+Label4:
+    iconst_1
+    anewarray dxc/junit/opcodes/checkcast/jm/SubClass
+Label40:    
+    checkcast dxc/junit/opcodes/checkcast/jm/SubClass
+    pop
+Label41:    
+    goto Label5
+Label42:
+    pop
+    iinc 1 1
+    goto Label5    
+    
+; !(SuperClass[] instanceof SubClass[])    
+Label5:
+    iconst_1
+    anewarray dxc/junit/opcodes/checkcast/jm/SuperClass
+Label50:    
+    checkcast [Ldxc/junit/opcodes/checkcast/jm/SubClass;
+    pop
+Label51:    
+    goto Label6
+Label52:
+    pop
+    iinc 1 1
+    
+Label6:        
+    iload_1
+    ireturn
+    
+.catch java/lang/ClassCastException from Label10 to Label11 using Label12
+.catch java/lang/ClassCastException from Label20 to Label21 using Label22
+.catch java/lang/ClassCastException from Label30 to Label31 using Label32
+.catch java/lang/ClassCastException from Label40 to Label41 using Label42
+.catch java/lang/ClassCastException from Label50 to Label51 using Label52
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_2.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_2.java
new file mode 100644
index 0000000..08b8ec8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+public class T_checkcast_2 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_3.j b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_3.j
new file mode 100644
index 0000000..84ec459
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_checkcast_3.java
+.class public dxc/junit/opcodes/checkcast/jm/T_checkcast_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 3
+    .limit locals 4
+    aload_0
+    checkcast [[[Ldxc/junit/opcodes/checkcast/jm/TestStubs$TestStub;
+    pop
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_3.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_3.java
new file mode 100644
index 0000000..c9c5652
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+public class T_checkcast_3 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.cfh
new file mode 100644
index 0000000..27a40ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.cfh
@@ -0,0 +1,191 @@
+//@class:dxc/junit/opcodes/checkcast/jm/T_checkcast_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0010
+// .  .  
+   00 10 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 19, h: 0004: utf8{"java/lang/String"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 
+    // parsed:, offset 66, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 75, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 81, len 47, h: 0007: utf8{"dxc/junit/opcodes/checkcast/jm/T_checkcast_4"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  c  h  e  c  k  c  a  s  t  /  j  m  /  T  _  c  h  e  c  k  c  a  s  t  _  4  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 63 68 65 63 6b 63 61 73 74 2f 6a 6d 2f 54 5f 63 68 65 63 6b 63 61 73 74 5f 34 
+    // parsed:, offset 128, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0d 
+    // parsed:, offset 133, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 140, len 21, h: 000a: utf8{"T_checkcast_4.java"}
+    // .  .  .  T  _  c  h  e  c  k  c  a  s  t  _  4  .  j  a  v  a  
+       01 00 12 54 5f 63 68 65 63 6b 63 61 73 74 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 161, len 3, h: 000b: type{java.lang.String}
+    // .  .  .  
+       07 00 04 
+    // parsed:, offset 164, len 41, h: 000c: utf8{"(Ljava/lang/Object;)Ljava/lang/String;"}
+    // .  .  &  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  
+       01 00 26 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 
+    // parsed:, offset 205, len 6, h: 000d: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 211, len 3, h: 000e: type{dxc.junit.opcodes.checkcast.jm.T_checkcast_4}
+    // .  .  .  
+       07 00 07 
+    // parsed:, offset 214, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 217, len 0, h: end constant_pool
+// parsed:, offset 217, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 219, len 2, h: this_class: type{dxc.junit.opcodes.checkcast.jm.T_checkcast_4}
+// .  .  
+   00 0e 
+// parsed:, offset 221, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 223, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 225, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 227, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 229, len:72,desc: ()V
+// parsed:, offset 229, len 0, h:  methods[0]: 
+    // parsed:, offset 229, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 231, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 233, len 2, h: descriptor: ()V
+    // .  .  
+       00 0d 
+    // parsed:, offset 235, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 237, len 0, h:  attributes[0]: 
+        // parsed:, offset 237, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 239, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 243, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 245, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 247, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 256, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 258, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 260, len 0, h: end attributes[0] 
+// parsed:, offset 260, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 260, len:41,desc: (Ljava/lang/Object;)Ljava/lang/String;
+// parsed:, offset 260, len 0, h:  methods[1]: 
+    // parsed:, offset 260, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 262, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 264, len 2, h: descriptor: (Ljava/lang/Object;)Ljava/lang/String;
+    // .  .  
+       00 0c 
+    // parsed:, offset 266, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 268, len 0, h:  attributes[0]: 
+        // parsed:, offset 268, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 270, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 274, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 276, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 278, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 3, h: 0001: checkcast type{java.lang.String}
+        // .  .  .  
+//@mod           c0 00 0b 
+           c0 01 0b 
+        // parsed:, offset 4, len 1, h: 0004: areturn
+        // .  
+           b0 
+        // parsed:, offset 287, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 289, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 291, len 0, h: end attributes[0] 
+// parsed:, offset 291, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;)Ljava/lang/String;
+// parsed:, offset 291, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 293, len 0, h:  attributes[0]: 
+    // parsed:, offset 293, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 295, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 299, len 2, h: source: utf8{"T_checkcast_4.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 301, len 0, h: end attributes[0] 
+// parsed:, offset 301, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.j b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.j
new file mode 100644
index 0000000..9066302
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_checkcast_4.java
+.class public dxc/junit/opcodes/checkcast/jm/T_checkcast_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+    aload_1
+    checkcast java/lang/String
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.java
new file mode 100644
index 0000000..e5d5fbc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+public class T_checkcast_4 {
+
+    public String run(Object o) {
+        return (String)o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_5.j b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_5.j
new file mode 100644
index 0000000..b4e645b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_5.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_checkcast_5.java
+.class public dxc/junit/opcodes/checkcast/jm/T_checkcast_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+    fconst_1
+    checkcast java/lang/String
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_5.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_5.java
new file mode 100644
index 0000000..afb4ba2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+public class T_checkcast_5 {
+
+    public String run(Object o) {
+        return (String)o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_6.j b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_6.j
new file mode 100644
index 0000000..7ae206c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_6.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_checkcast_6.java
+.class public dxc/junit/opcodes/checkcast/jm/T_checkcast_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+;    aload_1
+    checkcast java/lang/String
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_6.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_6.java
new file mode 100644
index 0000000..6389d85
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+public class T_checkcast_6 {
+
+    public String run(Object o) {
+        return (String)o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_7.j b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_7.j
new file mode 100644
index 0000000..b3ad568
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_7.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_checkcast_7.java
+.class public dxc/junit/opcodes/checkcast/jm/T_checkcast_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 3
+    .limit locals 4
+    aload_0
+    checkcast [[[Ldxc/junit/opcodes/checkcast/jm/foobar1;
+    pop
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_7.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_7.java
new file mode 100644
index 0000000..98167f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+public class T_checkcast_7 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.cfh b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.cfh
new file mode 100644
index 0000000..fa33a5f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/checkcast/jm/T_checkcast_8
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0011
+// .  .  
+   00 11 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 10 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 3, h: 0003: type{java.lang.String}
+    // .  .  .  
+       07 00 0c 
+    // parsed:, offset 37, len 47, h: 0004: utf8{"dxc/junit/opcodes/checkcast/jm/T_checkcast_8"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  c  h  e  c  k  c  a  s  t  /  j  m  /  T  _  c  h  e  c  k  c  a  s  t  _  8  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 63 68 65 63 6b 63 61 73 74 2f 6a 6d 2f 54 5f 63 68 65 63 6b 63 61 73 74 5f 38 
+    // parsed:, offset 84, len 13, h: 0005: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 97, len 5, h: 0006: int{0x0000007b / 123}
+    // .  .  .  .  {  
+       03 00 00 00 7b 
+    // parsed:, offset 102, len 9, h: 0007: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 111, len 6, h: 0008: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 117, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 07 00 0e 
+    // parsed:, offset 122, len 21, h: 000a: utf8{"T_checkcast_8.java"}
+    // .  .  .  T  _  c  h  e  c  k  c  a  s  t  _  8  .  j  a  v  a  
+       01 00 12 54 5f 63 68 65 63 6b 63 61 73 74 5f 38 2e 6a 61 76 61 
+    // parsed:, offset 143, len 7, h: 000b: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 150, len 19, h: 000c: utf8{"java/lang/String"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 
+    // parsed:, offset 169, len 41, h: 000d: utf8{"(Ljava/lang/Object;)Ljava/lang/String;"}
+    // .  .  &  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  
+       01 00 26 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 
+    // parsed:, offset 210, len 6, h: 000e: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 216, len 3, h: 000f: type{dxc.junit.opcodes.checkcast.jm.T_checkcast_8}
+    // .  .  .  
+       07 00 04 
+    // parsed:, offset 219, len 3, h: 0010: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 222, len 0, h: end constant_pool
+// parsed:, offset 222, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 224, len 2, h: this_class: type{dxc.junit.opcodes.checkcast.jm.T_checkcast_8}
+// .  .  
+   00 0f 
+// parsed:, offset 226, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 10 
+// parsed:, offset 228, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 230, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 232, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 234, len:75,desc: ()V
+// parsed:, offset 234, len 0, h:  methods[0]: 
+    // parsed:, offset 234, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 236, len 2, h: name: <init>
+    // .  .  
+       00 07 
+    // parsed:, offset 238, len 2, h: descriptor: ()V
+    // .  .  
+       00 0e 
+    // parsed:, offset 240, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 242, len 0, h:  attributes[0]: 
+        // parsed:, offset 242, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 244, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 248, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 250, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 252, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 261, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 263, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 265, len 0, h: end attributes[0] 
+// parsed:, offset 265, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 265, len:44,desc: (Ljava/lang/Object;)Ljava/lang/String;
+// parsed:, offset 265, len 0, h:  methods[1]: 
+    // parsed:, offset 265, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 267, len 2, h: name: run
+    // .  .  
+       00 08 
+    // parsed:, offset 269, len 2, h: descriptor: (Ljava/lang/Object;)Ljava/lang/String;
+    // .  .  
+       00 0d 
+    // parsed:, offset 271, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 273, len 0, h:  attributes[0]: 
+        // parsed:, offset 273, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 275, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 279, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 281, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 283, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 2, h: 0000: ldc #+0000007b
+        // .  .  
+           12 06 
+        // parsed:, offset 2, len 1, h: 0002: pop
+        // W  
+           57 
+        // parsed:, offset 3, len 1, h: 0003: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 4, len 3, h: 0004: checkcast type{java.lang.String}
+        // .  .  .  
+//@mod           c0 00 03 
+           c0 00 06 
+        // parsed:, offset 7, len 1, h: 0007: areturn
+        // .  
+           b0 
+        // parsed:, offset 295, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 297, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 299, len 0, h: end attributes[0] 
+// parsed:, offset 299, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;)Ljava/lang/String;
+// parsed:, offset 299, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 301, len 0, h:  attributes[0]: 
+    // parsed:, offset 301, len 2, h: name: SourceFile
+    // .  .  
+       00 05 
+    // parsed:, offset 303, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 307, len 2, h: source: utf8{"T_checkcast_8.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 309, len 0, h: end attributes[0] 
+// parsed:, offset 309, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.j b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.j
new file mode 100644
index 0000000..bf537de
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_checkcast_8.java
+.class public dxc/junit/opcodes/checkcast/jm/T_checkcast_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+    
+    ldc 123
+    pop
+    
+    aload_1
+    checkcast java/lang/String
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.java
new file mode 100644
index 0000000..cce0c88
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+public class T_checkcast_8 {
+
+    public String run(Object o) {
+        return (String)o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/TestStubs.java
new file mode 100644
index 0000000..97476a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/TestStubs.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private class TestStub {
+        // testE2
+    }
+}
+
+interface SuperInterface{
+    
+}
+
+interface SuperInterface2{
+    
+}
+
+class SuperClass implements SuperInterface{
+    
+}
+
+class SubClass extends SuperClass{
+
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/Test_d2f.java b/tools/dx-tests/src/dxc/junit/opcodes/d2f/Test_d2f.java
new file mode 100644
index 0000000..3571b8a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/Test_d2f.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2f;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.d2f.jm.T_d2f_1;
+
+public class Test_d2f extends DxTestCase {
+
+    /**
+     * @title  Argument = 2.71
+     */
+    public void testN1() {
+        T_d2f_1 t = new T_d2f_1();
+        assertEquals(2.71f, t.run(2.71d));
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_d2f_1 t = new T_d2f_1();
+        assertEquals(1f, t.run(1d));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_d2f_1 t = new T_d2f_1();
+        assertEquals(-1f, t.run(-1d));
+    }
+
+    /**
+     * @title  Argument = Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_d2f_1 t = new T_d2f_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Double.MIN_VALUE
+     */
+    public void testB2() {
+        T_d2f_1 t = new T_d2f_1();
+        assertEquals(0f, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @title  Argument = -0
+     */
+    public void testB3() {
+        T_d2f_1 t = new T_d2f_1();
+        assertEquals(-0f, t.run(-0d));
+    }
+
+    /**
+     * @title  Argument = NaN
+     */
+    public void testB4() {
+        T_d2f_1 t = new T_d2f_1();
+        assertTrue(Float.isNaN(t.run(Double.NaN)));
+    }
+
+    /**
+     * @title  Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_d2f_1 t = new T_d2f_1();
+        assertTrue(Float.isInfinite(t.run(Double.POSITIVE_INFINITY)));
+    }
+
+    /**
+     * @title  Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_d2f_1 t = new T_d2f_1();
+        assertTrue(Float.isInfinite(t.run(Double.NEGATIVE_INFINITY)));
+    }
+
+
+    /**
+     * @title  Argument = -Double.MIN_VALUE
+     */
+    public void testB7() {
+        T_d2f_1 t = new T_d2f_1();
+        assertEquals(-0f, t.run(-4.9E-324d));
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2f.jm.T_d2f_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2f.jm.T_d2f_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2f.jm.T_d2f_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2f.jm.T_d2f_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_1.j b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_1.j
new file mode 100644
index 0000000..461f86a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_d2f_1.java
+.class public dxc/junit/opcodes/d2f/jm/T_d2f_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)F
+    .limit stack 3
+    .limit locals 3
+    dload_1
+    d2f
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_1.java b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_1.java
new file mode 100644
index 0000000..e63f2c4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2f.jm;
+
+public class T_d2f_1 {
+
+    public float run(double a) {
+        return (float)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_2.j b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_2.j
new file mode 100644
index 0000000..a65c7ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_d2f_2.java
+.class public dxc/junit/opcodes/d2f/jm/T_d2f_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(D)F
+    .limit stack 3
+    .limit locals 3
+
+;    dload_1
+    d2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_2.java b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_2.java
new file mode 100644
index 0000000..5dca9a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2f.jm;
+
+public class T_d2f_2 {
+
+    public float run(double a) {
+        return (float)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_3.j b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_3.j
new file mode 100644
index 0000000..4c02168
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_d2f_3.java
+.class public dxc/junit/opcodes/d2f/jm/T_d2f_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(F)F
+    .limit stack 2
+    .limit locals 3
+
+    fload_1
+    d2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_3.java b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_3.java
new file mode 100644
index 0000000..6be1325
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2f.jm;
+
+public class T_d2f_3 {
+
+    public float run(float a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_4.j b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_4.j
new file mode 100644
index 0000000..dc79276
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_d2f_4.java
+.class public dxc/junit/opcodes/d2f/jm/T_d2f_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)D
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+    d2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_4.java b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_4.java
new file mode 100644
index 0000000..240dfea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2f.jm;
+
+public class T_d2f_4 {
+
+    public float run(long a) {
+        return (float) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_5.j b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_5.j
new file mode 100644
index 0000000..c743637
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_d2f_5.java
+.class public dxc/junit/opcodes/d2f/jm/T_d2f_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)F
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    d2f
+    freturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_5.java b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_5.java
new file mode 100644
index 0000000..b9a986b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2f.jm;
+
+public class T_d2f_5 {
+    
+    public float run(double a) {
+        return (float)a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/Test_d2i.java b/tools/dx-tests/src/dxc/junit/opcodes/d2i/Test_d2i.java
new file mode 100644
index 0000000..a316201
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/Test_d2i.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2i;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.d2i.jm.T_d2i_1;
+
+public class Test_d2i extends DxTestCase {
+
+    /**
+     * @title  Argument = 2.9999999d
+     */
+    public void testN1() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(2, t.run(2.9999999d));
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(1, t.run(1d));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(-1, t.run(-1d));
+    }
+
+    /**
+     * @title  Argument = -0
+     */
+    public void testB1() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(0, t.run(-0d));
+    }
+
+    /**
+     * @title  Argument = Double.MAX_VALUE
+     */
+    public void testB2() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Double.MIN_VALUE
+     */
+    public void testB3() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(0, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @title  Argument = NaN
+     */
+    public void testB4() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(0, t.run(Double.NaN));
+    }
+
+    /**
+     * @title  Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2i.jm.T_d2i_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2i.jm.T_d2i_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2i.jm.T_d2i_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2i.jm.T_d2i_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_1.j b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_1.j
new file mode 100644
index 0000000..d14f823
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_d2i_1.java
+.class public dxc/junit/opcodes/d2i/jm/T_d2i_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)I
+    .limit stack 3
+    .limit locals 3
+    dload_1
+    d2i
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_1.java b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_1.java
new file mode 100644
index 0000000..5d55cac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2i.jm;
+
+public class T_d2i_1 {
+
+    public int run(double a) {
+        return (int)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_2.j b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_2.j
new file mode 100644
index 0000000..f0bd798
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_d2i_2.java
+.class public dxc/junit/opcodes/d2i/jm/T_d2i_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(D)I
+    .limit stack 3
+    .limit locals 3
+
+;    dload_1
+    d2i
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_2.java b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_2.java
new file mode 100644
index 0000000..6228cc3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2i.jm;
+
+public class T_d2i_2 {
+
+    public int run(double a) {
+        return (int)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_3.j b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_3.j
new file mode 100644
index 0000000..d9be73a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_3.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_d2i_3.java
+.class public dxc/junit/opcodes/d2i/jm/T_d2i_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(F)I
+    .limit stack 2
+    .limit locals 3
+ 
+    fload_1
+ ;   d2f
+     d2i
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_3.java b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_3.java
new file mode 100644
index 0000000..a83ae18
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2i.jm;
+
+public class T_d2i_3 {
+
+    public int run(float a) {
+        return (int)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_4.j b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_4.j
new file mode 100644
index 0000000..beb0d2f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_d2i_4.java
+.class public dxc/junit/opcodes/d2i/jm/T_d2i_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(J)I
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+
+    ;l2f
+    d2i
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_4.java b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_4.java
new file mode 100644
index 0000000..78aba37
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2i.jm;
+
+public class T_d2i_4 {
+
+    public int run(long a) {
+        return (int)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_5.j b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_5.j
new file mode 100644
index 0000000..9816ceb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_d2i_5.java
+.class public dxc/junit/opcodes/d2i/jm/T_d2i_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    d2i
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_5.java b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_5.java
new file mode 100644
index 0000000..cf5b3ec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2i.jm;
+
+public class T_d2i_5 {
+    
+    public int run(double a) {
+        return (int)a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/Test_d2l.java b/tools/dx-tests/src/dxc/junit/opcodes/d2l/Test_d2l.java
new file mode 100644
index 0000000..d1bbd05
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/Test_d2l.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2l;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.d2l.jm.T_d2l_1;
+
+public class Test_d2l extends DxTestCase {
+
+    /**
+     * @title  Argument = 2.9999999
+     */
+    public void testN1() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(2l, t.run(2.9999999d));
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(1l, t.run(1d));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(-1l, t.run(-1d));
+    }
+
+    /**
+     * @title  Argument = Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(Long.MAX_VALUE, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Double.MIN_VALUE
+     */
+    public void testB2() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(0, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @title  Argument = -0
+     */
+    public void testB3() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(0l, t.run(-0));
+    }
+
+    /**
+     * @title  Argument = NaN
+     */
+    public void testB4() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(0l, t.run(Double.NaN));
+    }
+
+    /**
+     * @title  Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(Long.MAX_VALUE, t.run(Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(Long.MIN_VALUE, t.run(Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2l.jm.T_d2l_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2l.jm.T_d2l_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2l.jm.T_d2l_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2l.jm.T_d2l_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_1.j b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_1.j
new file mode 100644
index 0000000..10de4b2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_d2l_1.java
+.class public dxc/junit/opcodes/d2l/jm/T_d2l_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)J
+    .limit stack 3
+    .limit locals 3
+    dload_1
+    d2l
+    lreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_1.java b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_1.java
new file mode 100644
index 0000000..b40863a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2l.jm;
+
+public class T_d2l_1 {
+
+    public long run(double a) {
+        return (long)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_2.j b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_2.j
new file mode 100644
index 0000000..37831f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_d2l_2.java
+.class public dxc/junit/opcodes/d2l/jm/T_d2l_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(D)J
+    .limit stack 3
+    .limit locals 3
+
+;    dload_1
+    d2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_2.java b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_2.java
new file mode 100644
index 0000000..9985d3e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2l.jm;
+
+public class T_d2l_2 {
+
+    public long run(double a) {
+        return (long)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_3.j b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_3.j
new file mode 100644
index 0000000..0476a8b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_d2l_3.java
+.class public dxc/junit/opcodes/d2l/jm/T_d2l_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(F)J
+    .limit stack 2
+    .limit locals 3
+
+    fload_1
+    d2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_3.java b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_3.java
new file mode 100644
index 0000000..96d73bb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2l.jm;
+
+public class T_d2l_3 {
+
+    public long run(float a) {
+        return (long)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_4.j b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_4.j
new file mode 100644
index 0000000..c0551c2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_d2l_4.java
+.class public dxc/junit/opcodes/d2l/jm/T_d2l_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)J
+    .limit stack 3
+    .limit locals 3
+
+    lload_1
+;    l2d
+    d2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_4.java b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_4.java
new file mode 100644
index 0000000..0bb55a3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2l.jm;
+
+public class T_d2l_4 {
+
+    public long run(long a) {
+        return (long)(double)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_5.j b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_5.j
new file mode 100644
index 0000000..262b187
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_d2l_5.java
+.class public dxc/junit/opcodes/d2l/jm/T_d2l_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)J
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    d2l
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_5.java b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_5.java
new file mode 100644
index 0000000..049e587
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.d2l.jm;
+
+public class T_d2l_5 {
+    
+    public long run(double a) {
+        return (long)a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/Test_dadd.java b/tools/dx-tests/src/dxc/junit/opcodes/dadd/Test_dadd.java
new file mode 100644
index 0000000..891f6ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/Test_dadd.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dadd;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dadd.jm.T_dadd_1;
+
+public class Test_dadd extends DxTestCase {
+
+    /**
+     * @title  Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(5.84d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title  Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(-3.14d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title Arguments = -3.14d, -2.7d
+     */
+    public void testN3() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(-5.84d, t.run(-3.14d, -2.7d));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB4() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title  Arguments = +0, -0
+     */
+    public void testB5() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(+0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title  Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(-0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title  Arguments = -2.7d, 2.7d
+     */
+    public void testB7() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(+0d, t.run(-2.7d, 2.7d));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE,
+                Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.MIN_VALUE, -4.9E-324
+     */
+    public void testB9() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(0d, t.run(Double.MIN_VALUE, -4.9E-324));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dadd.jm.T_dadd_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dadd.jm.T_dadd_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dadd.jm.T_dadd_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dadd.jm.T_dadd_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_1.j
new file mode 100644
index 0000000..34c23af
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dadd_1.java
+.class public dxc/junit/opcodes/dadd/jm/T_dadd_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    dload_3
+    dadd
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_1.java
new file mode 100644
index 0000000..5edfe5c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dadd.jm;
+
+public class T_dadd_1 {
+
+    public double run(double a, double b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_2.j
new file mode 100644
index 0000000..bcfa2a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dadd_2.java
+.class public dxc/junit/opcodes/dadd/jm/T_dadd_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    ; dload_3    
+    dadd
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_2.java
new file mode 100644
index 0000000..bc97e0d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dadd.jm;
+
+public class T_dadd_2 {
+
+    public double run(double a, double b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_3.j
new file mode 100644
index 0000000..1318e2d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dadd_3.java
+.class public dxc/junit/opcodes/dadd/jm/T_dadd_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)D
+    .limit stack 3
+    .limit locals 5
+    fload_1
+    dload_2    
+    dadd
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_3.java
new file mode 100644
index 0000000..640d826
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dadd.jm;
+
+public class T_dadd_3 {
+
+    public double run(double a, double b) {
+        return a+(double)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_4.j
new file mode 100644
index 0000000..da1c93f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dadd_4.java
+.class public dxc/junit/opcodes/dadd/jm/T_dadd_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JD)D
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    dload_3
+    dadd
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_4.java
new file mode 100644
index 0000000..8e0f36d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dadd.jm;
+
+public class T_dadd_4 {
+
+    public double run(double a, double b) {
+        return (double)a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_5.j
new file mode 100644
index 0000000..dfea131
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dadd_5.java
+.class public dxc/junit/opcodes/dadd/jm/T_dadd_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    aload_0
+    dadd
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_5.java
new file mode 100644
index 0000000..fadd2ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dadd.jm;
+
+public class T_dadd_5 {
+    
+    public double run(double a, double b) {
+        return a+b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/Test_daload.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/Test_daload.java
new file mode 100644
index 0000000..9fd9893
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/Test_daload.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.daload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.daload.jm.T_daload_1;
+
+public class Test_daload extends DxTestCase {
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN1() {
+        T_daload_1 t = new T_daload_1();
+        double[] arr = new double[2];
+        arr[1] = 3.1415d;
+        assertEquals(3.1415d, t.run(arr, 1));
+    }
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_daload_1 t = new T_daload_1();
+        double[] arr = new double[2];
+        arr[0] = 3.1415d;
+        assertEquals(3.1415d, t.run(arr, 0));
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_daload_1 t = new T_daload_1();
+        double[] arr = new double[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_daload_1 t = new T_daload_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_daload_1 t = new T_daload_1();
+        double[] arr = new double[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.daload.jm.T_daload_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.daload.jm.T_daload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.daload.jm.T_daload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.daload.jm.T_daload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.daload.jm.T_daload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float[], int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.daload.jm.T_daload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.daload.jm.T_daload_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.daload.jm.T_daload_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_1.j
new file mode 100644
index 0000000..51f291f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_daload_1.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([DI)D
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+
+    daload
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_1.java
new file mode 100644
index 0000000..652138a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_1 {
+    public double run(double[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_2.j
new file mode 100644
index 0000000..21d2c6d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_daload_2.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([DI)D
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+;    iload_2
+
+    daload
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_2.java
new file mode 100644
index 0000000..666682d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_2 {
+
+    public double run(double[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_3.j
new file mode 100644
index 0000000..5a695a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_daload_3.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([DI)D
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    daload
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_3.java
new file mode 100644
index 0000000..2f8da59
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_3 {
+
+    public double run(double[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_4.j
new file mode 100644
index 0000000..d7bd17e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_daload_4.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([DD)D
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    daload
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_4.java
new file mode 100644
index 0000000..9572731
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_4 {
+
+    public double run(double[] arr, double idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_5.j
new file mode 100644
index 0000000..f2025aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_daload_5.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([DJ)D
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    lload_2
+;    l2f
+    daload
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_5.java
new file mode 100644
index 0000000..5dd8ee1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_5 {
+
+    public double run(double[] arr, long idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_6.j
new file mode 100644
index 0000000..52caafd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_daload_6.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;[DI)D
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_3
+
+    daload
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_6.java
new file mode 100644
index 0000000..3632e5b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_6 {
+
+    public double run(Object a, double[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_7.j
new file mode 100644
index 0000000..694971e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_daload_7.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([D[FI)D
+    .limit stack 2
+    .limit locals 4
+    aload_2
+    iload_3
+    daload
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_7.java
new file mode 100644
index 0000000..eac7cd2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_7 {
+
+    public double run(double[] a, double[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_8.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_8.j
new file mode 100644
index 0000000..ef9a1a3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_8.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_daload_8.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([J[DI)D
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    daload
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_8.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_8.java
new file mode 100644
index 0000000..994a158
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_8 {
+
+    public double run(long[] a, double[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_9.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_9.j
new file mode 100644
index 0000000..fa0ef03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_9.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_daload_9.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([DI)D
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_0
+    daload
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_9.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_9.java
new file mode 100644
index 0000000..440e7a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_9 {
+    
+    public double run(double[] arr, int idx) {
+        return arr[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/Test_dastore.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/Test_dastore.java
new file mode 100644
index 0000000..223d812
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/Test_dastore.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dastore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dastore.jm.T_dastore_1;
+
+public class Test_dastore extends DxTestCase {
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN1() {
+        T_dastore_1 t = new T_dastore_1();
+        double[] arr = new double[2];
+        t.run(arr, 1, 2.7d);
+        assertEquals(2.7d, arr[1]);
+    }
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_dastore_1 t = new T_dastore_1();
+        double[] arr = new double[2];
+        t.run(arr, 0, 2.7d);
+        assertEquals(2.7d, arr[0]);
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_dastore_1 t = new T_dastore_1();
+        double[] arr = new double[2];
+        try {
+            t.run(arr, 2, 2.7d);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_dastore_1 t = new T_dastore_1();
+        try {
+            t.run(null, 2, 2.7d);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_dastore_1 t = new T_dastore_1();
+        double[] arr = new double[2];
+        try {
+            t.run(arr, -1, 2.7d);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dastore.jm.T_dastore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dastore.jm.T_dastore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double,
+     * double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dastore.jm.T_dastore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dastore.jm.T_dastore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - object, int,
+     * double
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.dastore.jm.T_dastore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float[], int,
+     * double
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.dastore.jm.T_dastore_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int,
+     * double
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.dastore.jm.T_dastore_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference,
+     * double
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.dastore.jm.T_dastore_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_1.j
new file mode 100644
index 0000000..5088f559
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dastore_1.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([DID)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+    dload_3
+    dastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_1.java
new file mode 100644
index 0000000..927890e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_1 {
+    public void run(double[] arr, int idx, double value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_2.j
new file mode 100644
index 0000000..2e663f6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dastore_2.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([DID)V
+    .limit stack 3
+    .limit locals 5
+
+    aload_1
+    iload_2
+    ;dload_3
+    dastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_2.java
new file mode 100644
index 0000000..fac0a98
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_2 {
+
+    public void run(double[] arr, int idx, double value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_3.j
new file mode 100644
index 0000000..a2a2b00
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dastore_3.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([DID)V
+    .limit stack 3
+    .limit locals 5
+
+    ;aload_1
+    iload_2
+    dload_3
+    dastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_3.java
new file mode 100644
index 0000000..c6fc58c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_3 {
+
+    public void run(double[] arr, int idx, double value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_4.j
new file mode 100644
index 0000000..38e7bab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dastore_4.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([DDD)V
+    .limit stack 6
+    .limit locals 6
+
+    aload_1
+    dload_2
+;    d2i
+    dload 4
+
+    dastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_4.java
new file mode 100644
index 0000000..4d368a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_4 {
+
+    public void run(double[] arr, double idx, double value) {
+        arr[(int)idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_5.j
new file mode 100644
index 0000000..cf5f55e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dastore_5.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([DIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+    lload_3
+;    l2f
+    dastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_5.java
new file mode 100644
index 0000000..c5b7ff8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_5 {
+
+    public void run(double[] arr, int idx, double value) {
+        arr[idx] = (double)value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_6.j
new file mode 100644
index 0000000..f3eace3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dastore_6.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;ID)V
+    .limit stack 4
+    .limit locals 6
+
+    aload_1
+    iload_2
+    dload_3
+    dastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_6.java
new file mode 100644
index 0000000..cbbf398
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_6 {
+
+    public void run(Object a, double[] arr, int idx, double value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_7.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_7.j
new file mode 100644
index 0000000..0ad9369
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_7.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dastore_7.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([D[FID)V
+    .limit stack 4
+    .limit locals 6
+    
+    aload_2
+    iload_3
+    dload 4
+    dastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_7.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_7.java
new file mode 100644
index 0000000..f6225df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_7 {
+
+    public void run(double a[], float[] arr, int idx, double value) {
+        a[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_8.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_8.j
new file mode 100644
index 0000000..c04e9a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_8.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dastore_8.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([J[DID)V
+    .limit stack 4
+    .limit locals 6
+    
+    aload_1
+    iload_3
+    dload 4
+    dastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_8.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_8.java
new file mode 100644
index 0000000..705e711
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_8 {
+
+    public void run(long a[], double[] arr, int idx, double value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_9.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_9.j
new file mode 100644
index 0000000..b8ef436
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dastore_9.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([DID)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    aload_0
+    dload_3
+    dastore
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_9.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_9.java
new file mode 100644
index 0000000..af682a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_9 {
+    
+    public void run(double[] arr, int idx, double value) {
+        arr[idx] = value;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/Test_dcmpg.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/Test_dcmpg.java
new file mode 100644
index 0000000..bb99cd7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/Test_dcmpg.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dcmpg;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dcmpg.jm.T_dcmpg_1;
+
+public class Test_dcmpg extends DxTestCase {
+
+    /**
+     * @title  Arguments = 3.14d, 2.7d
+     */
+    public void testN1() {
+        T_dcmpg_1 t = new T_dcmpg_1();
+        assertEquals(1, t.run(3.14d, 2.7d));
+    }
+
+    /**
+     * @title  Arguments = -3.14d, 2.7d
+     */
+    public void testN2() {
+        T_dcmpg_1 t = new T_dcmpg_1();
+        assertEquals(-1, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title  Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_dcmpg_1 t = new T_dcmpg_1();
+        assertEquals(0, t.run(3.14d, 3.14d));
+    }
+
+    /**
+     * @title  Arguments = Double.NaN, Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_dcmpg_1 t = new T_dcmpg_1();
+        assertEquals(1, t.run(Double.NaN, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = +0, -0
+     */
+    public void testB2() {
+        T_dcmpg_1 t = new T_dcmpg_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = Double.NEGATIVE_INFINITY, Double.MIN_VALUE
+     */
+    public void testB3() {
+        T_dcmpg_1 t = new T_dcmpg_1();
+        assertEquals(-1, t.run(Double.NEGATIVE_INFINITY, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY, Double.MAX_VALUE
+     */
+    public void testB4() {
+        T_dcmpg_1 t = new T_dcmpg_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_dcmpg_1 t = new T_dcmpg_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dcmpg.jm.T_dcmpg_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dcmpg.jm.T_dcmpg_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dcmpg.jm.T_dcmpg_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dcmpg.jm.T_dcmpg_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_1.j
new file mode 100644
index 0000000..788ed13
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_1.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dcmpg_1.java
+.class public dxc/junit/opcodes/dcmpg/jm/T_dcmpg_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)I
+    .limit stack 4
+    .limit locals 6
+    
+    dload_1
+    dload_3
+    
+    dcmpg 
+    dup
+    ifeq Label0
+    ifgt Label1
+    
+    iconst_m1
+    ireturn
+    
+    Label0:
+    iconst_0
+    ireturn
+
+    Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_1.java
new file mode 100644
index 0000000..4b9e6c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dcmpg.jm;
+
+public class T_dcmpg_1 {
+
+    public int run(double a, double b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_2.j
new file mode 100644
index 0000000..e8d237d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_2.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dcmpg_2.java
+.class public dxc/junit/opcodes/dcmpg/jm/T_dcmpg_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DD)Z
+    .limit stack 4
+    .limit locals 6
+
+    dload_1
+;    fload_3
+    dcmpg
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_2.java
new file mode 100644
index 0000000..6ff5dff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dcmpg.jm;
+
+public class T_dcmpg_2 {
+
+    public boolean run(double a, double b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_3.j
new file mode 100644
index 0000000..fb5f6d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dcmpg_3.java
+.class public dxc/junit/opcodes/dcmpg/jm/T_dcmpg_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(DD)Z
+    .limit stack 4
+    .limit locals 6
+
+    dload_1
+    fconst_1
+    dcmpg 
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_3.java
new file mode 100644
index 0000000..1101f00
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dcmpg.jm;
+
+public class T_dcmpg_3 {
+
+    public boolean run(double a, double b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_4.j
new file mode 100644
index 0000000..8e23715
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_4.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dcmpg_4.java
+.class public dxc/junit/opcodes/dcmpg/jm/T_dcmpg_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(DD)Z
+    .limit stack 4
+    .limit locals 6
+
+    lconst_1    
+    dload_1
+
+    dcmpg 
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_4.java
new file mode 100644
index 0000000..ae2d937
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dcmpg.jm;
+
+public class T_dcmpg_4 {
+
+    public boolean run(double a, double b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_5.j
new file mode 100644
index 0000000..9f9d92f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_5.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dcmpg_5.java
+.class public dxc/junit/opcodes/dcmpg/jm/T_dcmpg_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)Z
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    aload_0
+    dcmpl
+    ifle Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_5.java
new file mode 100644
index 0000000..45663f8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dcmpg.jm;
+
+public class T_dcmpg_5 {
+    
+    public boolean run(double a, double b) {
+        return a > b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/Test_dcmpl.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/Test_dcmpl.java
new file mode 100644
index 0000000..045c181
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/Test_dcmpl.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dcmpl;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dcmpl.jm.T_dcmpl_1;
+
+public class Test_dcmpl extends DxTestCase {
+
+    /**
+     * @title  Arguments = 3.14d, 2.7d
+     */
+    public void testN1() {
+        T_dcmpl_1 t = new T_dcmpl_1();
+        assertEquals(1, t.run(3.14d, 2.7d));
+    }
+
+    /**
+     * @title  Arguments = -3.14d, 2.7d
+     */
+    public void testN2() {
+        T_dcmpl_1 t = new T_dcmpl_1();
+        assertEquals(-1, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title  Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_dcmpl_1 t = new T_dcmpl_1();
+        assertEquals(0, t.run(3.14d, 3.14d));
+    }
+
+    /**
+     * @title  Arguments = Double.NaN, Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_dcmpl_1 t = new T_dcmpl_1();
+        assertEquals(-1, t.run(Double.NaN, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = +0, -0
+     */
+    public void testB2() {
+        T_dcmpl_1 t = new T_dcmpl_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = Double.NEGATIVE_INFINITY, Double.MIN_VALUE
+     */
+    public void testB3() {
+        T_dcmpl_1 t = new T_dcmpl_1();
+        assertEquals(-1, t.run(Double.NEGATIVE_INFINITY, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY, Double.MAX_VALUE
+     */
+    public void testB4() {
+        T_dcmpl_1 t = new T_dcmpl_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_dcmpl_1 t = new T_dcmpl_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dcmpl.jm.T_dcmpl_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dcmpl.jm.T_dcmpl_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dcmpl.jm.T_dcmpl_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dcmpl.jm.T_dcmpl_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_1.j
new file mode 100644
index 0000000..35b12a4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_1.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dcmpl_1.java
+.class public dxc/junit/opcodes/dcmpl/jm/T_dcmpl_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)I
+    .limit stack 4
+    .limit locals 6
+    
+    dload_1
+    dload_3
+    
+    dcmpl 
+    dup
+    ifeq Label0
+    ifgt Label1
+    
+    iconst_m1
+    ireturn
+    
+    Label0:
+    iconst_0
+    ireturn
+
+    Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_1.java
new file mode 100644
index 0000000..7effb95
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dcmpl.jm;
+
+public class T_dcmpl_1 {
+
+    public int run(double a, double b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_2.j
new file mode 100644
index 0000000..d4fa52c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_2.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dcmpl_2.java
+.class public dxc/junit/opcodes/dcmpl/jm/T_dcmpl_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DD)Z
+    .limit stack 4
+    .limit locals 6
+
+    dload_1
+;    fload_3
+    dcmpl
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_2.java
new file mode 100644
index 0000000..583256a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dcmpl.jm;
+
+public class T_dcmpl_2 {
+
+    public boolean run(double a, double b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_3.j
new file mode 100644
index 0000000..4db6e33
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dcmpl_3.java
+.class public dxc/junit/opcodes/dcmpl/jm/T_dcmpl_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(DD)Z
+    .limit stack 4
+    .limit locals 6
+
+    dload_1
+    fconst_1
+    dcmpl 
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_3.java
new file mode 100644
index 0000000..fdb3329
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dcmpl.jm;
+
+public class T_dcmpl_3 {
+
+    public boolean run(double a, double b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_4.j
new file mode 100644
index 0000000..7b18e83
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_4.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dcmpl_4.java
+.class public dxc/junit/opcodes/dcmpl/jm/T_dcmpl_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(DD)Z
+    .limit stack 4
+    .limit locals 6
+
+    lconst_1    
+    dload_1
+
+    dcmpl 
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_4.java
new file mode 100644
index 0000000..f2a8b24
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dcmpl.jm;
+
+public class T_dcmpl_4 {
+
+    public boolean run(double a, double b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_5.j
new file mode 100644
index 0000000..56d80b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_5.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dcmpl_5.java
+.class public dxc/junit/opcodes/dcmpl/jm/T_dcmpl_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)Z
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    aload_0
+    dcmpl
+    ifle Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_5.java
new file mode 100644
index 0000000..79d1bf8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dcmpl.jm;
+
+public class T_dcmpl_5 {
+    
+    public boolean run(double a, double b) {
+        return a > b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/Test_dconst_0.java b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/Test_dconst_0.java
new file mode 100644
index 0000000..1dc0718
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/Test_dconst_0.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dconst_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dconst_0.jm.T_dconst_0_1;
+
+public class Test_dconst_0 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_dconst_0_1 t = new T_dconst_0_1();
+        double b = 1234d;
+        double c = 1234d;
+        double d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dconst_0.jm.T_dconst_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_1.j
new file mode 100644
index 0000000..c6b15b82
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_1.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dconst_0_1.java
+.class public dxc/junit/opcodes/dconst_0/jm/T_dconst_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()D
+    .limit stack 2
+    dconst_0
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_1.java
new file mode 100644
index 0000000..bb40485
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dconst_0.jm;
+
+public class T_dconst_0_1 {
+
+    public double run() {
+        return 0d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_2.j
new file mode 100644
index 0000000..163d026
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dconst_0_2.java
+.class public dxc/junit/opcodes/dconst_0/jm/T_dconst_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()D
+    .limit stack 1
+;    .limit locals 1
+
+    dconst_0
+    dconst_0
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_2.java
new file mode 100644
index 0000000..47856ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dconst_0.jm;
+
+public class T_dconst_0_2 {
+
+    public double run() {
+        return 0d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/Test_dconst_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/Test_dconst_1.java
new file mode 100644
index 0000000..2b15a2d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/Test_dconst_1.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dconst_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dconst_1.jm.T_dconst_1_1;
+
+public class Test_dconst_1 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_dconst_1_1 t = new T_dconst_1_1();
+        double b = 1235d;
+        double c = 1234d;
+        double d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dconst_1.jm.T_dconst_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_1.j
new file mode 100644
index 0000000..2636b26
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_1.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dconst_1_1.java
+.class public dxc/junit/opcodes/dconst_1/jm/T_dconst_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()D
+    .limit stack 2
+    dconst_1
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_1.java
new file mode 100644
index 0000000..a332a75
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dconst_1.jm;
+
+public class T_dconst_1_1 {
+
+    public double run() {
+        return 0d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_2.j
new file mode 100644
index 0000000..9a17a14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dconst_1_2.java
+.class public dxc/junit/opcodes/dconst_1/jm/T_dconst_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()D
+    .limit stack 1
+;    .limit locals 1
+
+    dconst_1
+    dconst_1
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_2.java
new file mode 100644
index 0000000..88726ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dconst_1.jm;
+
+public class T_dconst_1_2 {
+
+    public double run() {
+        return 0d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/Test_ddiv.java b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/Test_ddiv.java
new file mode 100644
index 0000000..e97558a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/Test_ddiv.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ddiv;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ddiv.jm.T_ddiv_1;
+
+public class Test_ddiv extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(0.8598726114649682d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title  Dividend = 0
+     */
+    public void testN2() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(0d, t.run(0, 3.14d));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN3() {
+
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(-1.162962962962963d, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN4() {
+
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(-1.162962962962963d, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title  Arguments = -2.7d, Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(0d, t.run(-2.7d, Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB5() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(Double.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title  Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(-0d, t.run(0, -2.7d));
+    }
+
+    /**
+     * @title  Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(-2.7d, 0));
+    }
+
+    /**
+     * @title  Arguments = 1, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(1, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.MAX_VALUE, -1E-9f));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ddiv.jm.T_ddiv_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float / double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ddiv.jm.T_ddiv_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ddiv.jm.T_ddiv_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double /
+     * reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ddiv.jm.T_ddiv_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_1.j
new file mode 100644
index 0000000..97285f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ddiv_1.java
+.class public dxc/junit/opcodes/ddiv/jm/T_ddiv_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    dload_3
+    ddiv
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_1.java
new file mode 100644
index 0000000..bb7e5d5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ddiv.jm;
+
+public class T_ddiv_1 {
+
+    public double run(double a, double b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_2.j
new file mode 100644
index 0000000..fd03c32
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ddiv_2.java
+.class public dxc/junit/opcodes/ddiv/jm/T_ddiv_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    ; dload_3
+    ddiv
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_2.java
new file mode 100644
index 0000000..a3c1b12
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ddiv.jm;
+
+public class T_ddiv_2 {
+
+    public double run(double a, double b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_3.j
new file mode 100644
index 0000000..1d5da57
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ddiv_3.java
+.class public dxc/junit/opcodes/ddiv/jm/T_ddiv_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)D
+    .limit stack 3
+    .limit locals 5
+    fload_1
+    dload_2    
+    ddiv
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_3.java
new file mode 100644
index 0000000..8fc4917
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ddiv.jm;
+
+public class T_ddiv_3 {
+
+    public double run(float a, double b) {
+        return (double)a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_4.j
new file mode 100644
index 0000000..037c781
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ddiv_4.java
+.class public dxc/junit/opcodes/ddiv/jm/T_ddiv_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JD)D
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    dload_3
+    ddiv
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_4.java
new file mode 100644
index 0000000..3861a04
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ddiv.jm;
+
+public class T_ddiv_4 {
+
+    public double run(long a, double b) {
+        return (double)a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_5.j
new file mode 100644
index 0000000..f7d28aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ddiv_5.java
+.class public dxc/junit/opcodes/ddiv/jm/T_ddiv_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    aload_0
+    ddiv
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_5.java
new file mode 100644
index 0000000..51f30d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ddiv.jm;
+
+public class T_ddiv_5 {
+    
+    public double run(double a, double b) {
+        return a/b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/Test_dload.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/Test_dload.java
new file mode 100644
index 0000000..87607ca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/Test_dload.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dload.jm.T_dload_1;
+import dxc.junit.opcodes.dload.jm.T_dload_1_w;
+import dxc.junit.opcodes.dload.jm.T_dload_2;
+import dxc.junit.opcodes.dload.jm.T_dload_2_w;
+
+public class Test_dload extends DxTestCase {
+
+    /*
+     * NORMAL dload VERSION
+     */
+
+    /**
+     * @title  Test dload 1
+     */
+    public void testN1() {
+        T_dload_1 t = new T_dload_1();
+        assertEquals(1d, t.run());
+    }
+
+    /**
+     * @title  Test dload 255
+     */
+    public void testN2() {
+        T_dload_2 t = new T_dload_2();
+        assertEquals(1d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload.jm.T_dload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload.jm.T_dload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload.jm.T_dload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload.jm.T_dload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE dload VERSION
+     */
+
+    /**
+     * @title  Test dload 257
+     */
+    public void testN3() {
+        T_dload_1_w t = new T_dload_1_w();
+        assertEquals(1d, t.run());
+    }
+
+    /**
+     * @title  Test dload_w 1
+     */
+    public void testN4() {
+        T_dload_2_w t = new T_dload_2_w();
+        assertEquals(1d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload.jm.T_dload_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload.jm.T_dload_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload.jm.T_dload_5_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload.jm.T_dload_6_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1.j
new file mode 100644
index 0000000..ea6f194
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_1.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 4
+    .limit locals 6
+    
+    dconst_1
+    dstore 4
+    dconst_0
+    dload 4
+    
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1.java
new file mode 100644
index 0000000..7775049
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_1 {
+
+    public double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1_w.j
new file mode 100644
index 0000000..c6c9056
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_1_w.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_1_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 4
+    .limit locals 300
+    
+    dconst_1
+    dstore 257
+    dconst_0
+    dload 257
+    
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1_w.java
new file mode 100644
index 0000000..337b02d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_1_w {
+
+    public double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2.j
new file mode 100644
index 0000000..dd97744
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_2.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 4
+    .limit locals 300
+    
+    dconst_1
+    dstore 255
+    dconst_0
+    dload 255
+    
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2.java
new file mode 100644
index 0000000..002071f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_2 {
+
+      public double run() {
+          return 1d;
+      }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2_w.j
new file mode 100644
index 0000000..0874c3e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_2_w.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_2_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 4
+    .limit locals 4
+    
+    dconst_1
+    dstore 1
+    dconst_0
+    dload_w 1
+    
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2_w.java
new file mode 100644
index 0000000..c5140b5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_2_w {
+
+      public double run() {
+          return 1d;
+      }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3.j
new file mode 100644
index 0000000..bed08c5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_3.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 0
+
+    dload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3.java
new file mode 100644
index 0000000..eefa007
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_3 {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3_w.j
new file mode 100644
index 0000000..7618f0d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_3_w.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_3_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 300
+
+    dload 300
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3_w.java
new file mode 100644
index 0000000..01eb395
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_3_w {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4.j
new file mode 100644
index 0000000..a1731d0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_4.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    fstore_0
+    fconst_1
+    fstore_1
+    
+    dload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4.java
new file mode 100644
index 0000000..13c99db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_4 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4_w.j
new file mode 100644
index 0000000..855d01e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_4_w.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_4_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 300
+
+    fconst_1
+    fstore 260
+    fconst_1
+    fstore 261
+    
+    dload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4_w.java
new file mode 100644
index 0000000..6810298
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_4_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5.j
new file mode 100644
index 0000000..d363cab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_5.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_0
+    
+    dload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5.java
new file mode 100644
index 0000000..1428a19
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_5 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5_w.j
new file mode 100644
index 0000000..bf96314
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_5_w.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_5_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 300
+
+    lconst_1
+    lstore 260
+    
+    dload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5_w.java
new file mode 100644
index 0000000..8010dc0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_5_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6.j
new file mode 100644
index 0000000..07b4434
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_6.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    dconst_1
+    dstore_0
+    
+    dload 0
+    dload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6.java
new file mode 100644
index 0000000..41b6572
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_6 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6_w.j
new file mode 100644
index 0000000..4a92f33
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_6_w.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_6_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 300
+
+    dconst_1
+    dstore 260
+    
+    dload_w 260
+    dload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6_w.java
new file mode 100644
index 0000000..d2d54e3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_6_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/Test_dload_0.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/Test_dload_0.java
new file mode 100644
index 0000000..3386d70
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/Test_dload_0.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dload_0.jm.T_dload_0_1;
+import dxc.junit.opcodes.dload_0.jm.T_dload_0_6;
+
+public class Test_dload_0 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1d, T_dload_0_1.run());
+    }
+
+    /**
+     * @title equality of dload_<n> and dload <n>
+     */
+    public void testN2() {
+        assertTrue(T_dload_0_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_0.jm.T_dload_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_0.jm.T_dload_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_0.jm.T_dload_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_0.jm.T_dload_0_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_1.j
new file mode 100644
index 0000000..efadce3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_0_1.java
+.class public dxc/junit/opcodes/dload_0/jm/T_dload_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 4
+    
+    dconst_1
+    dstore_0
+    dconst_0
+    dload_0
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_1.java
new file mode 100644
index 0000000..b6c0a13
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_0.jm;
+
+public class T_dload_0_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_2.j
new file mode 100644
index 0000000..7da999c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_0_2.java
+.class public dxc/junit/opcodes/dload_0/jm/T_dload_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_2.java
new file mode 100644
index 0000000..05fe279
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_0.jm;
+
+public class T_dload_0_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_3.j
new file mode 100644
index 0000000..07fa8f4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_0_3.java
+.class public dxc/junit/opcodes/dload_0/jm/T_dload_0_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    fstore_0
+    fconst_1
+    fstore_1
+    
+    dload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_3.java
new file mode 100644
index 0000000..86dcec7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_0.jm;
+
+public class T_dload_0_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_4.j
new file mode 100644
index 0000000..6254ac4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_0_4.java
+.class public dxc/junit/opcodes/dload_0/jm/T_dload_0_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_0
+    
+    dload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_4.java
new file mode 100644
index 0000000..ffcfe2b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_0.jm;
+
+public class T_dload_0_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_5.j
new file mode 100644
index 0000000..6c7c879
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_0_5.java
+.class public dxc/junit/opcodes/dload_0/jm/T_dload_0_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 4
+
+    dconst_1
+    dstore_0
+    
+    dload_0
+    dload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_5.java
new file mode 100644
index 0000000..1cdadbc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_0.jm;
+
+public class T_dload_0_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_6.j
new file mode 100644
index 0000000..43843a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_0_6.java
+.class public dxc/junit/opcodes/dload_0/jm/T_dload_0_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 2
+
+    dconst_1
+    dstore_0
+
+    dload_0
+    dload 0
+    dcmpl 
+    
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_6.java
new file mode 100644
index 0000000..03e3a47
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_0.jm;
+
+public class T_dload_0_6 {
+
+    public static boolean run() {
+        double i = 1d;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/Test_dload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/Test_dload_1.java
new file mode 100644
index 0000000..78e1d63
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/Test_dload_1.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dload_1.jm.T_dload_1_1;
+import dxc.junit.opcodes.dload_1.jm.T_dload_1_6;
+
+public class Test_dload_1 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1d, T_dload_1_1.run());
+    }
+
+    /**
+     * @title equality of dload_<n> and dload <n>
+     */
+    public void testN2() {
+        assertTrue(T_dload_1_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_1.jm.T_dload_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_1.jm.T_dload_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_1.jm.T_dload_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_1.jm.T_dload_1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_1.j
new file mode 100644
index 0000000..f0b8614
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_1_1.java
+.class public dxc/junit/opcodes/dload_1/jm/T_dload_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 4
+    
+    dconst_1
+    dstore_1
+    dconst_0
+    dload_1
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_1.java
new file mode 100644
index 0000000..08c6c4c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_1.jm;
+
+public class T_dload_1_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_2.j
new file mode 100644
index 0000000..c3c537b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_1_2.java
+.class public dxc/junit/opcodes/dload_1/jm/T_dload_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 1
+
+    dload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_2.java
new file mode 100644
index 0000000..e9d012a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_1.jm;
+
+public class T_dload_1_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_3.j
new file mode 100644
index 0000000..23521db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_1_3.java
+.class public dxc/junit/opcodes/dload_1/jm/T_dload_1_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    fstore_1
+    fconst_1
+    fstore_2
+    
+    dload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_3.java
new file mode 100644
index 0000000..ce229e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_1.jm;
+
+public class T_dload_1_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_4.j
new file mode 100644
index 0000000..ae50746
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_1_4.java
+.class public dxc/junit/opcodes/dload_1/jm/T_dload_1_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_1
+    
+    dload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_4.java
new file mode 100644
index 0000000..3e6eadb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_1.jm;
+
+public class T_dload_1_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_5.j
new file mode 100644
index 0000000..247a0ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_1_5.java
+.class public dxc/junit/opcodes/dload_1/jm/T_dload_1_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 4
+
+    dconst_1
+    dstore_1
+    
+    dload_1
+    dload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_5.java
new file mode 100644
index 0000000..569b8be
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_1.jm;
+
+public class T_dload_1_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_6.j
new file mode 100644
index 0000000..6a3adfe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_1_6.java
+.class public dxc/junit/opcodes/dload_1/jm/T_dload_1_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_1
+
+    dload_1
+    dload 1
+    dcmpl 
+    
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_6.java
new file mode 100644
index 0000000..fda7e3a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_1.jm;
+
+public class T_dload_1_6 {
+
+    public static boolean run() {
+        double i = 1d;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/Test_dload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/Test_dload_2.java
new file mode 100644
index 0000000..b0d5ede
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/Test_dload_2.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dload_2.jm.T_dload_2_1;
+import dxc.junit.opcodes.dload_2.jm.T_dload_2_6;
+
+public class Test_dload_2 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1d, T_dload_2_1.run());
+    }
+
+    /**
+     * @title equality of dload_<n> and dload <n>
+     */
+    public void testN2() {
+        assertTrue(T_dload_2_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_2.jm.T_dload_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_2.jm.T_dload_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_2.jm.T_dload_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_2.jm.T_dload_2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_1.j
new file mode 100644
index 0000000..5dbb5f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_2_1.java
+.class public dxc/junit/opcodes/dload_2/jm/T_dload_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 4
+    
+    dconst_1
+    dstore_2
+    dconst_0
+    dload_2
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_1.java
new file mode 100644
index 0000000..bd20ce7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_2.jm;
+
+public class T_dload_2_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_2.j
new file mode 100644
index 0000000..998877e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_2_2.java
+.class public dxc/junit/opcodes/dload_2/jm/T_dload_2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_2.java
new file mode 100644
index 0000000..eeab9cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_2.jm;
+
+public class T_dload_2_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_3.j
new file mode 100644
index 0000000..d907737
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_2_3.java
+.class public dxc/junit/opcodes/dload_2/jm/T_dload_2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    fstore_2
+    fconst_1
+    fstore_3
+    
+    dload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_3.java
new file mode 100644
index 0000000..7c20960
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_2.jm;
+
+public class T_dload_2_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_4.j
new file mode 100644
index 0000000..2330dd2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_2_4.java
+.class public dxc/junit/opcodes/dload_2/jm/T_dload_2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_2
+    
+    dload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_4.java
new file mode 100644
index 0000000..d01ef76
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_2.jm;
+
+public class T_dload_2_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_5.j
new file mode 100644
index 0000000..1680575
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_2_5.java
+.class public dxc/junit/opcodes/dload_2/jm/T_dload_2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 4
+
+    dconst_1
+    dstore_2
+    
+    dload_2
+    dload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_5.java
new file mode 100644
index 0000000..96be034
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_2.jm;
+
+public class T_dload_2_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_6.j
new file mode 100644
index 0000000..64411be
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_2_6.java
+.class public dxc/junit/opcodes/dload_2/jm/T_dload_2_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_2
+
+    dload_2
+    dload 2
+    dcmpl 
+    
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_6.java
new file mode 100644
index 0000000..e98944a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_2.jm;
+
+public class T_dload_2_6 {
+
+    public static boolean run() {
+        double i = 1d;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/Test_dload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/Test_dload_3.java
new file mode 100644
index 0000000..8d88d4e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/Test_dload_3.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dload_3.jm.T_dload_3_1;
+import dxc.junit.opcodes.dload_3.jm.T_dload_3_6;
+
+public class Test_dload_3 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1d, T_dload_3_1.run());
+    }
+
+    /**
+     * @title equality of dload_<n> and dload <n>
+     */
+    public void testN2() {
+        assertTrue(T_dload_3_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_3.jm.T_dload_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_3.jm.T_dload_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_3.jm.T_dload_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_3.jm.T_dload_3_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_1.j
new file mode 100644
index 0000000..3e4ec5d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_3_1.java
+.class public dxc/junit/opcodes/dload_3/jm/T_dload_3_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 5
+    
+    dconst_1
+    dstore_3
+    dconst_0
+    dload_3
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_1.java
new file mode 100644
index 0000000..a5cb748
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_3.jm;
+
+public class T_dload_3_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_2.j
new file mode 100644
index 0000000..5d3d072
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_3_2.java
+.class public dxc/junit/opcodes/dload_3/jm/T_dload_3_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_2.java
new file mode 100644
index 0000000..da11e14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_3.jm;
+
+public class T_dload_3_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_3.j
new file mode 100644
index 0000000..8558fa9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_3_3.java
+.class public dxc/junit/opcodes/dload_3/jm/T_dload_3_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    fconst_1
+    fstore_3
+    fconst_1
+    fstore 4
+    
+    dload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_3.java
new file mode 100644
index 0000000..1534e50
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_3.jm;
+
+public class T_dload_3_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_4.j
new file mode 100644
index 0000000..28fce45
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_3_4.java
+.class public dxc/junit/opcodes/dload_3/jm/T_dload_3_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    lconst_1
+    lstore_3
+    
+    dload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_4.java
new file mode 100644
index 0000000..6b22af4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_3.jm;
+
+public class T_dload_3_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_5.j
new file mode 100644
index 0000000..b9ceac4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_3_5.java
+.class public dxc/junit/opcodes/dload_3/jm/T_dload_3_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 5
+
+    dconst_1
+    dstore_3
+    
+    dload_3
+    dload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_5.java
new file mode 100644
index 0000000..48b7cfe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_3.jm;
+
+public class T_dload_3_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_6.j
new file mode 100644
index 0000000..eecc7a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dload_3_6.java
+.class public dxc/junit/opcodes/dload_3/jm/T_dload_3_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 5
+
+    dconst_1
+    dstore_3
+
+    dload_3
+    dload 3
+    dcmpl 
+    
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_6.java
new file mode 100644
index 0000000..4be5f77
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dload_3.jm;
+
+public class T_dload_3_6 {
+
+    public static boolean run() {
+        double i = 1d;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/Test_dmul.java b/tools/dx-tests/src/dxc/junit/opcodes/dmul/Test_dmul.java
new file mode 100644
index 0000000..4f0c55b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/Test_dmul.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dmul;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dmul.jm.T_dmul_1;
+
+public class Test_dmul extends DxTestCase {
+
+    /**
+     * @title  Arguments = 2.7d, 3.14d
+     */
+
+    public void testN1() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(8.478000000000002d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title  Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(-0d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title  Arguments = -2.7d, -3.14d
+     */
+    public void testN3() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(8.478000000000002d, t.run(-3.14d, -2.7d));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY, 0
+     */
+    public void testB2() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY, 0));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = +0, -0d
+     */
+    public void testB5() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(-0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title  Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(+0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB7() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE,
+                Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.MIN_VALUE, -1.4E-45f
+     */
+    public void testB8() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(-0d, t.run(Double.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dmul.jm.T_dmul_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dmul.jm.T_dmul_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dmul.jm.T_dmul_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dmul.jm.T_dmul_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_1.j
new file mode 100644
index 0000000..4bd9247
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dmul_1.java
+.class public dxc/junit/opcodes/dmul/jm/T_dmul_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    dload_3
+    dmul
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_1.java
new file mode 100644
index 0000000..c4ad6fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dmul.jm;
+
+public class T_dmul_1 {
+
+    public double run(double a, double b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_2.j
new file mode 100644
index 0000000..744f9ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dmul_2.java
+.class public dxc/junit/opcodes/dmul/jm/T_dmul_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    ; dload_3   
+    dmul
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_2.java
new file mode 100644
index 0000000..7616c9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dmul.jm;
+
+public class T_dmul_2 {
+
+    public double run(double a, double b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_3.j
new file mode 100644
index 0000000..222294b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dmul_3.java
+.class public dxc/junit/opcodes/dmul/jm/T_dmul_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)F
+    .limit stack 4
+    .limit locals 5
+    fload_1
+    dload_2    
+    dmul
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_3.java
new file mode 100644
index 0000000..7732dbd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dmul.jm;
+
+public class T_dmul_3 {
+
+    public double run(float a, double b) {
+        return (double)a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_4.j
new file mode 100644
index 0000000..376b985
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dmul_4.java
+.class public dxc/junit/opcodes/dmul/jm/T_dmul_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JD)D
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+;    l2d
+    dload_3
+    dmul
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_4.java
new file mode 100644
index 0000000..7fe4ff0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dmul.jm;
+
+public class T_dmul_4 {
+
+    public double run(long a, double b) {
+        return (double)a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_5.j
new file mode 100644
index 0000000..c6783ca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dmul_5.java
+.class public dxc/junit/opcodes/dmul/jm/T_dmul_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    aload_0
+    dmul
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_5.java
new file mode 100644
index 0000000..d4c5811
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dmul.jm;
+
+public class T_dmul_5 {
+    
+    public double run(double a, double b) {
+        return a*b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/Test_dneg.java b/tools/dx-tests/src/dxc/junit/opcodes/dneg/Test_dneg.java
new file mode 100644
index 0000000..6f17737
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/Test_dneg.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dneg;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dneg.jm.T_dneg_1;
+
+public class Test_dneg extends DxTestCase {
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN1() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(-1d, t.run(1d));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN2() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(1d, t.run(-1d));
+    }
+
+    /**
+     * @title  Argument = +0
+     */
+    public void testN3() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(-0d, t.run(+0d));
+    }
+
+    /**
+     * @title  Argument = -2.7
+     */
+    public void testN4() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(2.7d, t.run(-2.7d));
+    }
+
+
+    /**
+     * @title  Argument = Double.NaN
+     */
+    public void testB1() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(Double.NaN, t.run(Double.NaN));
+    }
+
+    /**
+     * @title  Argument = Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Argument = Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Argument = Double.MAX_VALUE
+     */
+    public void testB4() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(-1.7976931348623157E308d, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Double.MIN
+     */
+    public void testB5() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(-4.9E-324d, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dneg.jm.T_dneg_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dneg.jm.T_dneg_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dneg.jm.T_dneg_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dneg.jm.T_dneg_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_1.j
new file mode 100644
index 0000000..17acbbb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ineg_1.java
+.class public dxc/junit/opcodes/dneg/jm/T_dneg_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)D
+    .limit stack 2
+    .limit locals 3
+    dload_1
+    dneg
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_1.java
new file mode 100644
index 0000000..9b33e9b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dneg.jm;
+
+public class T_dneg_1 {
+
+    public double run(double d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_2.j
new file mode 100644
index 0000000..7f8266c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_2.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dneg_2.java
+.class public dxc/junit/opcodes/dneg/jm/T_dneg_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)D
+    .limit stack 2
+    .limit locals 2
+    ;dload_1
+    dneg
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_2.java
new file mode 100644
index 0000000..27ec6ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dneg.jm;
+
+public class T_dneg_2 {
+
+    public double run(double d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_3.j
new file mode 100644
index 0000000..98aa60e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dneg_3.java
+.class public dxc/junit/opcodes/dneg/jm/T_dneg_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)D
+    .limit stack 2
+    .limit locals 3
+
+    fconst_1
+    dneg
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_3.java
new file mode 100644
index 0000000..c7a68a3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dneg.jm;
+
+public class T_dneg_3 {
+
+    public double run(double d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_4.j
new file mode 100644
index 0000000..fbbac9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_4.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dneg_4.java
+.class public dxc/junit/opcodes/dneg/jm/T_dneg_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)D
+    .limit stack 2
+    .limit locals 3
+
+    lconst_1
+    dneg
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_4.java
new file mode 100644
index 0000000..ee85927
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dneg.jm;
+
+public class T_dneg_4 {
+
+    public double run(double d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_5.j
new file mode 100644
index 0000000..6e7874d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dneg_5.java
+.class public dxc/junit/opcodes/dneg/jm/T_dneg_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)D
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    dneg
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_5.java
new file mode 100644
index 0000000..1fb3c3d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dneg.jm;
+
+public class T_dneg_5 {
+    
+    public double run(double d) {
+        return -d;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/Test_drem.java b/tools/dx-tests/src/dxc/junit/opcodes/drem/Test_drem.java
new file mode 100644
index 0000000..f8a9de5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/Test_drem.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.drem;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.drem.jm.T_drem_1;
+
+public class Test_drem extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(2.7d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title  Dividend = 0
+     */
+    public void testN2() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(0d, t.run(0, 3.14d));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN3() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(-0.43999999999999995d, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY, -2.7d));
+    }
+
+    /**
+     * @title  Arguments = -2.7d, Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(-2.7d, t.run(-2.7d, Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB5() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(Double.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title  Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(0d, t.run(0, -2.7d));
+    }
+
+    /**
+     * @title  Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(Double.NaN, t.run(-2.7d, 0));
+    }
+
+    /**
+     * @title  Arguments = 1, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(0d, t.run(1, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, -1E-9d
+     */
+    public void testB9() {
+        T_drem_1 t = new T_drem_1();
+
+        assertEquals(1.543905285031139E-10d, t.run(Double.MAX_VALUE, -1E-9d));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.drem.jm.T_drem_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.drem.jm.T_drem_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.drem.jm.T_drem_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.drem.jm.T_drem_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_1.j b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_1.j
new file mode 100644
index 0000000..15501a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_drem_1.java
+.class public dxc/junit/opcodes/drem/jm/T_drem_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    dload_3
+    drem
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_1.java b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_1.java
new file mode 100644
index 0000000..36f7787
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.drem.jm;
+
+public class T_drem_1 {
+
+    public double run(double a, double b) {
+        return a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_2.j b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_2.j
new file mode 100644
index 0000000..1c256c2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_drem_2.java
+.class public dxc/junit/opcodes/drem/jm/T_drem_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    ; dload_3    
+    drem
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_2.java b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_2.java
new file mode 100644
index 0000000..5268322
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.drem.jm;
+
+public class T_drem_2 {
+
+    public double run(double a, double b) {
+        return a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_3.j b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_3.j
new file mode 100644
index 0000000..f0cc9668
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_drem_3.java
+.class public dxc/junit/opcodes/drem/jm/T_drem_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)D
+    .limit stack 3
+    .limit locals 5
+    fload_1
+    dload_2    
+    drem
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_3.java b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_3.java
new file mode 100644
index 0000000..2687fec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.drem.jm;
+
+public class T_drem_3 {
+
+    public double run(double a, float b) {
+        return a%(double)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_4.j b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_4.j
new file mode 100644
index 0000000..8b9dc80
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_drem_4.java
+.class public dxc/junit/opcodes/drem/jm/T_drem_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JD)D
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+;    l2d
+    dload_3
+    drem
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_4.java b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_4.java
new file mode 100644
index 0000000..bf104e9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.drem.jm;
+
+public class T_drem_4 {
+
+    public double run(long a, double b) {
+        return (double)a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_5.j b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_5.j
new file mode 100644
index 0000000..75dc941
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_drem_5.java
+.class public dxc/junit/opcodes/drem/jm/T_drem_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    aload_0
+    drem
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_5.java b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_5.java
new file mode 100644
index 0000000..2d3f76b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.drem.jm;
+
+public class T_drem_5 {
+    
+    public double run(double a, double b) {
+        return a%b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/Test_dreturn.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/Test_dreturn.java
new file mode 100644
index 0000000..90e9e7a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/Test_dreturn.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dreturn;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dreturn.jm.T_dreturn_1;
+import dxc.junit.opcodes.dreturn.jm.T_dreturn_6;
+import dxc.junit.opcodes.dreturn.jm.T_dreturn_7;
+import dxc.junit.opcodes.dreturn.jm.T_dreturn_8;
+import dxc.junit.opcodes.dreturn.jm.T_dreturn_9;
+
+public class Test_dreturn extends DxTestCase {
+
+    /**
+     * @title  simple
+     */
+    public void testN1() {
+        T_dreturn_1 t = new T_dreturn_1();
+        assertEquals(123456d, t.run());
+    }
+
+    /**
+     * @title  check that frames are discarded and reinstananted correctly
+     */
+    public void testN2() {
+        T_dreturn_6 t = new T_dreturn_6();
+        assertEquals(123456d, t.run());
+    }
+
+    /**
+     * @title  check that monitor is released by dreturn
+     */
+    public void testN3() {
+        assertTrue(T_dreturn_7.execute());
+    }
+
+
+    /**
+     * @title  Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_dreturn_8 t = new T_dreturn_8();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Lock structural rule 1 is violated
+     */
+    public void testE2() {
+        T_dreturn_9 t = new T_dreturn_9();
+        try {
+            assertEquals(1d, t.run());
+            // the JVM spec says that it is optional to implement the structural
+            // lock rules, see JVM spec 8.13 and monitorenter/exit opcodes.
+            System.out.print("dvmvfe:");
+            //fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - void
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dreturn.jm.T_dreturn_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dreturn.jm.T_dreturn_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dreturn.jm.T_dreturn_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dreturn.jm.T_dreturn_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.dreturn.jm.T_dreturn_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.dreturn.jm.T_dreturn_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_1.j
new file mode 100644
index 0000000..b4c8d87
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_1.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dreturn_1.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()D
+    .limit stack 2
+    ldc2_w 123456.0
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_1.java
new file mode 100644
index 0000000..2f6e798
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_1 {
+
+    public double run() {
+        return 123456d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_10.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_10.j
new file mode 100644
index 0000000..fbfd76a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_10.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dreturn_10.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private static test()D
+    .limit stack 2
+    .limit locals 0
+    dconst_1
+    dreturn
+.end method
+
+
+
+.method public run()D
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/dreturn/jm/T_dreturn_10/test()D
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_10.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_10.java
new file mode 100644
index 0000000..49208c7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_10.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_10 {
+    
+    private static double test() {
+        return 1d;
+    }
+    
+    public double run() {
+        return test();
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_11.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_11.j
new file mode 100644
index 0000000..ed2f42a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_11.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dreturn_11.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()D
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_11.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_11.java
new file mode 100644
index 0000000..ed86640
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_11 {
+    
+    public double run() {
+        return 0d;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_2.j
new file mode 100644
index 0000000..19a7298
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dreturn_2.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    dconst_0
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_2.java
new file mode 100644
index 0000000..3d2bc88
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_2 {
+
+    public double run() {
+        return 0d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_3.j
new file mode 100644
index 0000000..0a80e55
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dreturn_3.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()F
+    .limit stack 2
+    .limit locals 1
+
+    dconst_0
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_3.java
new file mode 100644
index 0000000..dac5e4e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_3 {
+
+    public double run() {
+        return 0d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_4.j
new file mode 100644
index 0000000..811f72c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_4.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dreturn_4.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()D
+    .limit stack 2
+    .limit locals 1
+
+    ;dconst_0
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_4.java
new file mode 100644
index 0000000..8e3b4ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_4 {
+
+    public double run() {
+        return 0d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_5.j
new file mode 100644
index 0000000..3a666f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dreturn_5.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()D
+    .limit stack 2
+    .limit locals 1
+
+    fconst_0
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_5.java
new file mode 100644
index 0000000..62063b1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_5 {
+
+    public double run() {
+        return 0d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_6.j
new file mode 100644
index 0000000..4f72ff5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_6.j
@@ -0,0 +1,90 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dreturn_6.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()D
+    .limit locals 12
+    .limit stack 6
+    
+    dconst_1
+    dstore_1
+    ldc2_w 2.0
+    dstore_3
+    ldc2_w 3.0
+    dstore 5
+    
+    ldc2_w 4.0
+    
+    invokestatic dxc/junit/opcodes/dreturn/jm/T_dreturn_6/test()D
+    
+    ldc2_w 4444.0
+    dcmpl
+    ifne Label1
+    
+    ldc2_w 4.0
+    dcmpl
+    ifne Label0
+    
+    dload_1
+    dconst_1
+    dcmpl
+    ifne Label0
+    
+    dload_3
+    ldc2_w 2.0
+    dcmpl
+    ifne Label0
+    
+    dload 5
+    ldc2_w 3.0
+    dcmpl
+    ifne Label0    
+    
+    ldc2_w 123456.0
+    dreturn
+
+Label1:
+    pop2
+Label0:
+    dconst_0
+    dreturn
+
+.end method
+
+.method private static test()D
+    .limit locals 8
+    .limit stack 4
+    
+    ldc2_w 1111.0
+    dstore_1
+    ldc2_w 2222.0
+    dstore_3
+    ldc2_w 3333.0
+    dstore 5
+    
+    ldc2_w 5555.0
+    
+    ldc2_w 4444.0
+    dreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_6.java
new file mode 100644
index 0000000..e3c2681
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_6.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_6 {
+
+    public double run() {
+        return 123456d;
+    }
+    
+    private static double test() {
+        double a = 1111d;
+        double b = 2222d;
+        double c = 3333d;
+        return 4444d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_7.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_7.j
new file mode 100644
index 0000000..2297b9f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_7.j
@@ -0,0 +1,166 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dreturn_7.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_7
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field  value D
+.field  failed Z
+
+.method public <init>()V
+    .limit stack 3
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    dconst_0
+    putfield dxc.junit.opcodes.dreturn.jm.T_dreturn_7.value D
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.dreturn.jm.T_dreturn_7.failed Z
+
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+   
+    iconst_0
+    istore_1
+
+Label4:
+    iload_1
+    sipush 1000
+    if_icmpge Label3
+
+    aload_0
+    invokespecial dxc/junit/opcodes/dreturn/jm/T_dreturn_7/test()D
+    pop2
+
+    iinc 1 1
+
+    goto Label4
+
+
+Label3:
+    return
+
+.end method
+
+
+
+.method private synchronized test()D
+    .limit stack 5
+    .limit locals 3
+    
+.line 16
+    aload_0
+    dup
+    getfield dxc.junit.opcodes.dreturn.jm.T_dreturn_7.value D
+    dup2
+    dstore_1
+
+    dconst_1
+    dadd
+    putfield dxc.junit.opcodes.dreturn.jm.T_dreturn_7.value D
+
+    dload_1
+    dconst_1
+    dadd
+    dstore_1
+
+    invokestatic java/lang/Thread/yield()V
+
+    dload_1
+    aload_0
+    getfield dxc.junit.opcodes.dreturn.jm.T_dreturn_7.value D
+    dcmpl
+    ifeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.dreturn.jm.T_dreturn_7.failed Z
+
+Label0:
+    dload_1
+    dreturn
+.end method
+
+
+
+.method public static execute()Z
+    .limit stack 5
+    .limit locals 4
+
+    new dxc/junit/opcodes/dreturn/jm/T_dreturn_7
+    dup
+    invokespecial dxc/junit/opcodes/dreturn/jm/T_dreturn_7/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:            ; exception handler
+    astore_3
+    goto Label3
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.dreturn.jm.T_dreturn_7.value D
+    ldc2_w 2000.0
+    dcmpl
+    ifne Label3
+
+    aload_0
+    getfield dxc.junit.opcodes.dreturn.jm.T_dreturn_7.failed Z
+    ifne Label3
+
+    iconst_1
+    ireturn
+
+Label3:
+    iconst_0
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_7.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_7.java
new file mode 100644
index 0000000..d02da66
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_7.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_7 implements Runnable {
+    public final static int CNT = 1000;
+    double value = 0;
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    private synchronized double test()    {
+        value++;
+        double c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+        return c;
+    }
+    
+    public static boolean execute() {
+        T_dreturn_7 test = new T_dreturn_7();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_8.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_8.j
new file mode 100644
index 0000000..9b8b0b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_8.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dreturn_8.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private synchronized test()D
+    .limit stack 2
+    aload_0
+    monitorexit
+       dconst_0
+    dreturn
+.end method
+
+
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial dxc/junit/opcodes/dreturn/jm/T_dreturn_8/test()D
+    pop2
+
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_8.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_8.java
new file mode 100644
index 0000000..27aa409
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_8.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_8 {
+    
+    private synchronized double test() {
+        return 0d;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_9.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_9.j
new file mode 100644
index 0000000..2895b44
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dreturn_9.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()D
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    monitorenter
+
+    dconst_1
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_9.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_9.java
new file mode 100644
index 0000000..9d9c41d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_9 {
+    
+    public double run() {
+        return 1d;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/Test_dstore.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/Test_dstore.java
new file mode 100644
index 0000000..3288dd7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/Test_dstore.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dstore.jm.T_dstore_1;
+import dxc.junit.opcodes.dstore.jm.T_dstore_1_w;
+import dxc.junit.opcodes.dstore.jm.T_dstore_5;
+import dxc.junit.opcodes.dstore.jm.T_dstore_5_w;
+
+public class Test_dstore extends DxTestCase {
+
+    /*
+     * NORMAL dstore VERSION
+     */
+
+    /**
+     * @title  dstore 0
+     */
+    public void testN1() {
+        assertEquals(1d, T_dstore_1.run());
+    }
+
+    /**
+     * @title  dstore 255
+     */
+    public void testN2() {
+        assertEquals(1d, T_dstore_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore.jm.T_dstore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore.jm.T_dstore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore.jm.T_dstore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE dstore VERSION
+     */
+
+    /**
+     * @title  dstore_w 0
+     */
+    public void testN3() {
+        assertEquals(1d, T_dstore_1_w.run());
+    }
+
+    /**
+     * @title  dstore 257
+     */
+    public void testN4() {
+        assertEquals(1d, T_dstore_5_w.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore.jm.T_dstore_2_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore.jm.T_dstore_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore.jm.T_dstore_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1.j
new file mode 100644
index 0000000..dfc1a4e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_1.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 2
+    
+    dconst_1
+    dstore 0
+    dconst_0
+    dload 0
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1.java
new file mode 100644
index 0000000..211bf9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1_w.j
new file mode 100644
index 0000000..3bd52da
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_1_w.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_1_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 2
+    
+    dconst_1
+    dstore_w 0
+    dconst_0
+    dload 0
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1_w.java
new file mode 100644
index 0000000..c855bb4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_1_w {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2.j
new file mode 100644
index 0000000..1e7e045
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_2.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dstore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2.java
new file mode 100644
index 0000000..1a3e865
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2_w.j
new file mode 100644
index 0000000..95c3b6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_2_w.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_2_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dstore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2_w.java
new file mode 100644
index 0000000..9db43ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_2_w {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3.j
new file mode 100644
index 0000000..ca8d79f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_3.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    dstore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3.java
new file mode 100644
index 0000000..f858789
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3_w.j
new file mode 100644
index 0000000..9f90254
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_3_w.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_3_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    dstore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3_w.java
new file mode 100644
index 0000000..e0d3e8f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_3_w {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4.j
new file mode 100644
index 0000000..45912a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_4.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    dstore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4.java
new file mode 100644
index 0000000..8aef1df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4_w.j
new file mode 100644
index 0000000..95fc6f6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_4_w.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_4_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    dstore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4_w.java
new file mode 100644
index 0000000..0e34bdd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_4_w {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5.j
new file mode 100644
index 0000000..b92bac5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_5.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 300
+    
+    dconst_1
+    dstore 255
+    dconst_0
+    dload 255
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5.java
new file mode 100644
index 0000000..5bfd48b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_5 {
+
+    public static double run() {
+        return 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5_w.j
new file mode 100644
index 0000000..3efeed0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_5_w.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_5_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 300
+    
+    dconst_1
+    dstore_w 257
+    dconst_0
+    dload 257
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5_w.java
new file mode 100644
index 0000000..6a5bf97
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_5_w {
+
+    public static double run() {
+        return 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/Test_dstore_0.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/Test_dstore_0.java
new file mode 100644
index 0000000..c365e69
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/Test_dstore_0.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dstore_0.jm.T_dstore_0_1;
+import dxc.junit.opcodes.dstore_0.jm.T_dstore_0_5;
+
+public class Test_dstore_0 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals(1d, T_dstore_0_1.run());
+    }
+
+    /**
+     * @title equality of dstore_<n> and dstore <n>
+     */
+    public void testN2() {
+        assertTrue(T_dstore_0_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_0.jm.T_dstore_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_0.jm.T_dstore_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_0.jm.T_dstore_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_1.j
new file mode 100644
index 0000000..c145f7f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_0_1.java
+.class public dxc/junit/opcodes/dstore_0/jm/T_dstore_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 2
+    
+    dconst_1
+    dstore_0
+    dconst_0
+    dload_0
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_1.java
new file mode 100644
index 0000000..225c851
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_0.jm;
+
+public class T_dstore_0_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_2.j
new file mode 100644
index 0000000..2fc0cf3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_0_2.java
+.class public dxc/junit/opcodes/dstore_0/jm/T_dstore_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dstore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_2.java
new file mode 100644
index 0000000..468a023
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_0.jm;
+
+public class T_dstore_0_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_3.j
new file mode 100644
index 0000000..a401b73
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_0_3.java
+.class public dxc/junit/opcodes/dstore_0/jm/T_dstore_0_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    dstore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_3.java
new file mode 100644
index 0000000..d22bee4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_0.jm;
+
+public class T_dstore_0_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_4.j
new file mode 100644
index 0000000..c3ad00d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_0_4.java
+.class public dxc/junit/opcodes/dstore_0/jm/T_dstore_0_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    dstore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_4.java
new file mode 100644
index 0000000..80fd08e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_0.jm;
+
+public class T_dstore_0_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_5.j
new file mode 100644
index 0000000..6a7124b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_0_5.java
+.class public dxc/junit/opcodes/dstore_0/jm/T_dstore_0_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 2
+
+    dconst_1
+    dstore_0
+    dload_0
+
+    dconst_1
+    dstore 0
+    dload_0
+    
+    dcmpl
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_5.java
new file mode 100644
index 0000000..e0596d4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_0.jm;
+
+public class T_dstore_0_5 {
+
+    public static boolean run() {
+        double i = 2d;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/Test_dstore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/Test_dstore_1.java
new file mode 100644
index 0000000..54dda38
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/Test_dstore_1.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dstore_1.jm.T_dstore_1_1;
+import dxc.junit.opcodes.dstore_1.jm.T_dstore_1_5;
+
+public class Test_dstore_1 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals(1d, T_dstore_1_1.run());
+    }
+
+    /**
+     * @title equality of dstore_<n> and dstore <n>
+     */
+    public void testN2() {
+        assertTrue(T_dstore_1_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_1.jm.T_dstore_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_1.jm.T_dstore_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_1.jm.T_dstore_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_1.j
new file mode 100644
index 0000000..99f316a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_1_1.java
+.class public dxc/junit/opcodes/dstore_1/jm/T_dstore_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 3
+    
+    dconst_1
+    dstore_1
+    dconst_0
+    dload_1
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_1.java
new file mode 100644
index 0000000..f57c81b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_1.jm;
+
+public class T_dstore_1_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_2.j
new file mode 100644
index 0000000..32d1a60
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_1_2.java
+.class public dxc/junit/opcodes/dstore_1/jm/T_dstore_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dstore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_2.java
new file mode 100644
index 0000000..292b860
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_1.jm;
+
+public class T_dstore_1_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_3.j
new file mode 100644
index 0000000..6dd7feb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_1_3.java
+.class public dxc/junit/opcodes/dstore_1/jm/T_dstore_1_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    dstore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_3.java
new file mode 100644
index 0000000..3f55d47
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_1.jm;
+
+public class T_dstore_1_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_4.j
new file mode 100644
index 0000000..bfce7ba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_1_4.java
+.class public dxc/junit/opcodes/dstore_1/jm/T_dstore_1_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    dstore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_4.java
new file mode 100644
index 0000000..242e0a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_1.jm;
+
+public class T_dstore_1_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_5.j
new file mode 100644
index 0000000..12dd5a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_1_5.java
+.class public dxc/junit/opcodes/dstore_1/jm/T_dstore_1_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 3
+
+    dconst_1
+    dstore_1
+    dload_1
+
+    dconst_1
+    dstore 1
+    dload_1
+    
+    dcmpl
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_5.java
new file mode 100644
index 0000000..492506a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_1.jm;
+
+public class T_dstore_1_5 {
+
+    public static boolean run() {
+        double i = 2d;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/Test_dstore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/Test_dstore_2.java
new file mode 100644
index 0000000..c00b007
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/Test_dstore_2.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dstore_2.jm.T_dstore_2_1;
+import dxc.junit.opcodes.dstore_2.jm.T_dstore_2_5;
+
+public class Test_dstore_2 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals(1d, T_dstore_2_1.run());
+    }
+
+    /**
+     * @title equality of dstore_<n> and dstore <n>
+     */
+    public void testN2() {
+        assertTrue(T_dstore_2_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_2.jm.T_dstore_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_2.jm.T_dstore_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_2.jm.T_dstore_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_1.j
new file mode 100644
index 0000000..c2a76bb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_2_1.java
+.class public dxc/junit/opcodes/dstore_2/jm/T_dstore_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 4
+    
+    dconst_1
+    dstore_2
+    dconst_0
+    dload_2
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_1.java
new file mode 100644
index 0000000..ab0b839
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_2.jm;
+
+public class T_dstore_2_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_2.j
new file mode 100644
index 0000000..4f07c20
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_2_2.java
+.class public dxc/junit/opcodes/dstore_2/jm/T_dstore_2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dstore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_2.java
new file mode 100644
index 0000000..3fc3729
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_2.jm;
+
+public class T_dstore_2_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_3.j
new file mode 100644
index 0000000..07f8d4d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_2_3.java
+.class public dxc/junit/opcodes/dstore_2/jm/T_dstore_2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    dstore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_3.java
new file mode 100644
index 0000000..3e29214
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_2.jm;
+
+public class T_dstore_2_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_4.j
new file mode 100644
index 0000000..eba9a71
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_2_4.java
+.class public dxc/junit/opcodes/dstore_2/jm/T_dstore_2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    dstore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_4.java
new file mode 100644
index 0000000..3b9bb03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_2.jm;
+
+public class T_dstore_2_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_5.j
new file mode 100644
index 0000000..1b9a614
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_2_5.java
+.class public dxc/junit/opcodes/dstore_2/jm/T_dstore_2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_2
+    dload_2
+
+    dconst_1
+    dstore 2
+    dload_2
+    
+    dcmpl
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_5.java
new file mode 100644
index 0000000..556be2c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_2.jm;
+
+public class T_dstore_2_5 {
+
+    public static boolean run() {
+        double i = 2d;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/Test_dstore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/Test_dstore_3.java
new file mode 100644
index 0000000..860a614
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/Test_dstore_3.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dstore_3.jm.T_dstore_3_1;
+import dxc.junit.opcodes.dstore_3.jm.T_dstore_3_5;
+
+public class Test_dstore_3 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals(1d, T_dstore_3_1.run());
+    }
+
+    /**
+     * @title equality of dstore_<n> and dstore <n>
+     */
+    public void testN2() {
+        assertTrue(T_dstore_3_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_3.jm.T_dstore_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_3.jm.T_dstore_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_3.jm.T_dstore_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_1.j
new file mode 100644
index 0000000..3738af3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_3_1.java
+.class public dxc/junit/opcodes/dstore_3/jm/T_dstore_3_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 5
+    
+    dconst_1
+    dstore_3
+    dconst_0
+    dload_3
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_1.java
new file mode 100644
index 0000000..847e07a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_3.jm;
+
+public class T_dstore_3_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_2.j
new file mode 100644
index 0000000..626d1e4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_3_2.java
+.class public dxc/junit/opcodes/dstore_3/jm/T_dstore_3_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dstore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_2.java
new file mode 100644
index 0000000..21293d2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_3.jm;
+
+public class T_dstore_3_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_3.j
new file mode 100644
index 0000000..9d232e7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_3_3.java
+.class public dxc/junit/opcodes/dstore_3/jm/T_dstore_3_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    fconst_1
+    dstore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_3.java
new file mode 100644
index 0000000..b0ac2a0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_3.jm;
+
+public class T_dstore_3_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_4.j
new file mode 100644
index 0000000..2250519
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_3_4.java
+.class public dxc/junit/opcodes/dstore_3/jm/T_dstore_3_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    lconst_1
+    dstore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_4.java
new file mode 100644
index 0000000..7f1a8d4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_3.jm;
+
+public class T_dstore_3_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_5.j
new file mode 100644
index 0000000..4808894
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dstore_3_5.java
+.class public dxc/junit/opcodes/dstore_3/jm/T_dstore_3_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 5
+
+    dconst_1
+    dstore_3
+    dload_3
+
+    dconst_1
+    dstore 3
+    dload_3
+    
+    dcmpl
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_5.java
new file mode 100644
index 0000000..f1b6ce4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dstore_3.jm;
+
+public class T_dstore_3_5 {
+
+    public static boolean run() {
+        double i = 2d;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/Test_dsub.java b/tools/dx-tests/src/dxc/junit/opcodes/dsub/Test_dsub.java
new file mode 100644
index 0000000..25ae6eb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/Test_dsub.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dsub;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dsub.jm.T_dsub_1;
+
+public class Test_dsub extends DxTestCase {
+
+    /**
+     * @title  Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(-0.43999999999999995d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title  Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(3.14d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title Arguments = -3.14d, -2.7d
+     */
+    public void testN3() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(-0.43999999999999995d, t.run(-3.14d, -2.7d));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB4() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title  Arguments = +0, -0d
+     */
+    public void testB5() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(+0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title  Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title  Arguments = +0d, +0d
+     */
+    public void testB7() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(+0d, t.run(+0d, +0d));
+    }
+
+    /**
+     * @title  Arguments = 2.7d, 2.7d
+     */
+    public void testB8() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(0d, t.run(2.7d, 2.7d));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB9() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(0d, t.run(Double.MAX_VALUE, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.MIN_VALUE, 4.9E-324
+     */
+    public void testB10() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(0d, t.run(Double.MIN_VALUE, 4.9E-324));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dsub.jm.T_dsub_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dsub.jm.T_dsub_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dsub.jm.T_dsub_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dsub.jm.T_dsub_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_1.j
new file mode 100644
index 0000000..62af343
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dsub_1.java
+.class public dxc/junit/opcodes/dsub/jm/T_dsub_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    dload_3
+    dsub
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_1.java
new file mode 100644
index 0000000..ab16ff8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dsub.jm;
+
+public class T_dsub_1 {
+
+    public double run(double a, double b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_2.j
new file mode 100644
index 0000000..988f027
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dsub_2.java
+.class public dxc/junit/opcodes/dsub/jm/T_dsub_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    ; dload_3    
+    dsub
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_2.java
new file mode 100644
index 0000000..f85699e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dsub.jm;
+
+public class T_dsub_2 {
+
+    public double run(double a, double b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_3.j
new file mode 100644
index 0000000..0e6e7db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dsub_3.java
+.class public dxc/junit/opcodes/dsub/jm/T_dsub_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)D
+    .limit stack 4
+    .limit locals 5
+    fload_1
+    dload_2    
+    dsub
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_3.java
new file mode 100644
index 0000000..e57d3c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dsub.jm;
+
+public class T_dsub_3 {
+
+    public double run(float a, double b) {
+        return (double)a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_4.j
new file mode 100644
index 0000000..e592dc3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dsub_4.java
+.class public dxc/junit/opcodes/dsub/jm/T_dsub_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JD)D
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    dload_3
+    dsub
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_4.java
new file mode 100644
index 0000000..3dcd8c8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dsub.jm;
+
+public class T_dsub_4 {
+
+    public double run(long a, double b) {
+        return (double)a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_5.j
new file mode 100644
index 0000000..b83d875
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dsub_5.java
+.class public dxc/junit/opcodes/dsub/jm/T_dsub_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    aload_0
+    dsub
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_5.java
new file mode 100644
index 0000000..47ee270
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dsub.jm;
+
+public class T_dsub_5 {
+    
+    public double run(double a, double b) {
+        return a-b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/Test_dup.java b/tools/dx-tests/src/dxc/junit/opcodes/dup/Test_dup.java
new file mode 100644
index 0000000..5e84815
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/Test_dup.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dup.jm.T_dup_1;
+import dxc.junit.opcodes.dup.jm.T_dup_6;
+import dxc.junit.opcodes.dup.jm.T_dup_7;
+
+
+public class Test_dup extends DxTestCase {
+
+    /**
+     * @title  type of argument - int
+     */
+    public void testN1() {
+        T_dup_1 t = new T_dup_1();
+        assertTrue(t.run());
+    }
+    
+    /**
+     * @title  type of argument - float
+     */
+    public void testN2() {
+        T_dup_6 t = new T_dup_6();
+        assertTrue(t.run());
+    }
+    
+    /**
+     * @title  type of argument - reference
+     */
+    public void testN3() {
+        T_dup_7 t = new T_dup_7();
+        assertTrue(t.run());
+    }
+    
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments 
+     */
+    public void testVFE1() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.dup.jm.T_dup_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double 
+     */
+    public void testVFE2() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.dup.jm.T_dup_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long 
+     */
+    public void testVFE3() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.dup.jm.T_dup_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.dup.jm.T_dup_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_1.j
new file mode 100644
index 0000000..c1b71e5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_1.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_1.java
+.class public dxc/junit/opcodes/dup/jm/T_dup_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    iconst_4
+    dup
+    if_icmpeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_1.java
new file mode 100644
index 0000000..c1d2de7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup.jm;
+
+public class T_dup_1 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_2.j
new file mode 100644
index 0000000..fc18b59
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_2.java
+.class public dxc/junit/opcodes/dup/jm/T_dup_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    ; iconst_4
+    dup
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_2.java
new file mode 100644
index 0000000..a9729cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup.jm;
+
+public class T_dup_2 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_3.j
new file mode 100644
index 0000000..4414dc2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_3.java
+.class public dxc/junit/opcodes/dup/jm/T_dup_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 3
+    .limit locals 3
+    dconst_1
+    dup
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_3.java
new file mode 100644
index 0000000..07c156d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup.jm;
+
+public class T_dup_3 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_4.j
new file mode 100644
index 0000000..a200e95
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_4.java
+.class public dxc/junit/opcodes/dup/jm/T_dup_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1
+    dup
+
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_4.java
new file mode 100644
index 0000000..f5a1819
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup.jm;
+
+public class T_dup_4 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_5.j
new file mode 100644
index 0000000..a346cd4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_5.java
+.class public dxc/junit/opcodes/dup/jm/T_dup_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 1
+    .limit locals 1
+    
+    iconst_4
+    dup
+
+    if_icmpeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_5.java
new file mode 100644
index 0000000..28e1688
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup.jm;
+
+public class T_dup_5 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_6.j
new file mode 100644
index 0000000..46c002a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_6.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_6.java
+.class public dxc/junit/opcodes/dup/jm/T_dup_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    fconst_2
+    dup
+    fcmpl
+    ifeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_6.java
new file mode 100644
index 0000000..1ff2719
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup.jm;
+
+public class T_dup_6 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_7.j b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_7.j
new file mode 100644
index 0000000..2e31bb8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_7.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_7.java
+.class public dxc/junit/opcodes/dup/jm/T_dup_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    aload_0
+    dup
+    if_acmpeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_7.java b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_7.java
new file mode 100644
index 0000000..17d9abe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup.jm;
+
+public class T_dup_7 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/Test_dup2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2/Test_dup2.java
new file mode 100644
index 0000000..c73ef3b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/Test_dup2.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dup2.jm.T_dup2_1;
+import dxc.junit.opcodes.dup2.jm.T_dup2_3;
+import dxc.junit.opcodes.dup2.jm.T_dup2_4;
+import dxc.junit.opcodes.dup2.jm.T_dup2_6;
+
+public class Test_dup2 extends DxTestCase {
+
+    /**
+     * @title  type of argument - int, int
+     */
+    public void testN1() {
+        T_dup2_1 t = new T_dup2_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - float, float
+     */
+    public void testN2() {
+        T_dup2_6 t = new T_dup2_6();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - double, int
+     */
+    public void testN3() {
+        T_dup2_3 t = new T_dup2_3();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - long, int
+     */
+    public void testN4() {
+        T_dup2_4 t = new T_dup2_4();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup2.jm.T_dup2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup2.jm.T_dup2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_1.j
new file mode 100644
index 0000000..07a81b8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_1.j
@@ -0,0 +1,57 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_1.java
+.class public dxc/junit/opcodes/dup2/jm/T_dup2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 5
+    .limit locals 2
+    
+    iconst_3
+    iconst_4
+    dup2            
+    
+    iconst_4
+    if_icmpne Label3
+    
+    iconst_3
+    if_icmpne Label2
+    
+    iconst_4
+    if_icmpne Label1
+    
+    iconst_3
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+
+Label3:
+    pop
+Label2:
+    pop
+Label1:
+    pop
+Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_1.java
new file mode 100644
index 0000000..b72b82d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2.jm;
+
+public class T_dup2_1 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_2.j
new file mode 100644
index 0000000..e7ad7f2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_2.java
+.class public dxc/junit/opcodes/dup2/jm/T_dup2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()Z
+    .limit stack 5
+    .limit locals 2
+    iconst_4
+    dup2
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_2.java
new file mode 100644
index 0000000..c2d0e43
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2.jm;
+
+public class T_dup2_2 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_3.j
new file mode 100644
index 0000000..5f526d4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_3.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_3.java
+.class public dxc/junit/opcodes/dup2/jm/T_dup2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 6
+    .limit locals 3
+    dconst_1
+    dup2
+    
+    dcmpl
+    ifne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_3.java
new file mode 100644
index 0000000..aa2ac10
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2.jm;
+
+public class T_dup2_3 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_4.j
new file mode 100644
index 0000000..9424ac6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_4.java
+.class public dxc/junit/opcodes/dup2/jm/T_dup2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 6
+    .limit locals 3
+    lconst_1
+    dup2
+    
+    lcmp
+    ifne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_4.java
new file mode 100644
index 0000000..f451f5a2d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2.jm;
+
+public class T_dup2_4 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_5.j
new file mode 100644
index 0000000..757caaa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_5.java
+.class public dxc/junit/opcodes/dup2/jm/T_dup2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 1
+    
+    iconst_3
+    iconst_4
+    dup2
+
+    if_icmpeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_5.java
new file mode 100644
index 0000000..2af55a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2.jm;
+
+public class T_dup2_5 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_6.j
new file mode 100644
index 0000000..d68f7b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_6.j
@@ -0,0 +1,61 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_6.java
+.class public dxc/junit/opcodes/dup2/jm/T_dup2_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 5
+    .limit locals 2
+    
+    fconst_0
+    fconst_1
+    dup2
+    
+    fconst_1
+    fcmpl
+    ifne Label3
+    
+    fconst_0
+    fcmpl
+    ifne Label2
+    
+    fconst_1
+    fcmpl
+    ifne Label1
+    
+    fconst_0
+    fcmpl
+    ifne Label0
+    
+    iconst_1
+    ireturn
+
+Label3:
+    pop
+Label2:
+    pop    
+Label1:
+    pop
+Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_6.java
new file mode 100644
index 0000000..9fa9ff1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2.jm;
+
+public class T_dup2_6 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/Test_dup2_x1.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/Test_dup2_x1.java
new file mode 100644
index 0000000..2ba5c11
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/Test_dup2_x1.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2_x1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dup2_x1.jm.T_dup2_x1_1;
+import dxc.junit.opcodes.dup2_x1.jm.T_dup2_x1_3;
+import dxc.junit.opcodes.dup2_x1.jm.T_dup2_x1_4;
+import dxc.junit.opcodes.dup2_x1.jm.T_dup2_x1_6;
+
+public class Test_dup2_x1 extends DxTestCase {
+
+    /**
+     * @title  type of argument - int, int, int
+     */
+    public void testN1() {
+        T_dup2_x1_1 t = new T_dup2_x1_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - float, float, float
+     */
+    public void testN2() {
+        T_dup2_x1_6 t = new T_dup2_x1_6();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - double, int
+     */
+    public void testN3() {
+        T_dup2_x1_3 t = new T_dup2_x1_3();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title type of argument - long, int
+     */
+    public void testN4() {
+        T_dup2_x1_4 t = new T_dup2_x1_4();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup2_x1.jm.T_dup2_x1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup2_x1.jm.T_dup2_x1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_1.j
new file mode 100644
index 0000000..6d2c106
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_1.j
@@ -0,0 +1,59 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_x1_1.java
+.class public dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 2
+    
+    iconst_3
+    iconst_4
+    iconst_5    ; 3 4 5
+    dup2_x1        ; 4 5 3 4 5
+    iconst_5
+    if_icmpne Label4    ; 4 5 3 4
+    iconst_4
+    if_icmpne Label3    ; 4 5 3 
+    iconst_3
+    if_icmpne Label2    ; 4 5 
+    iconst_5
+    if_icmpne Label1    ; 4
+    iconst_4
+    if_icmpne Label0    ; 
+
+    iconst_1
+    ireturn
+    
+Label4:
+    pop
+Label3:
+    pop
+Label2:
+    pop
+Label1:
+    pop
+Label0:    
+    iconst_0
+    ireturn
+        
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_1.java
new file mode 100644
index 0000000..471e097
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2_x1.jm;
+
+public class T_dup2_x1_1 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_2.j
new file mode 100644
index 0000000..fbdd36b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_x1_2.java
+.class public dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 2
+    iconst_3
+    iconst_4
+    ;iconst_5
+    dup2_x1
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_2.java
new file mode 100644
index 0000000..afa7a67
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2_x1.jm;
+
+public class T_dup2_x1_2 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_3.j
new file mode 100644
index 0000000..23c3cf8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_3.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_x1_3.java
+.class public dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 3
+    
+    iconst_5
+    dconst_1
+    dup2_x1        ; [1] 5 [1]
+    
+    dconst_1    ; [1] 5 [1] [1]
+    dcmpl        ; [1] 5
+    ifne Label2
+    iconst_5    ; [1] 5 5
+    if_icmpne Label1
+       dconst_1    ; [1][1]
+    dcmpl        ; 
+    ifne Label0
+    
+    iconst_1
+    ireturn
+    
+ Label2:
+     pop
+ Label1:
+     pop2
+ Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_3.java
new file mode 100644
index 0000000..fdd9b7b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2_x1.jm;
+
+public class T_dup2_x1_3 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_4.j
new file mode 100644
index 0000000..c719ab6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_4.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_x1_4.java
+.class public dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 3
+    
+    iconst_5
+    lconst_1
+    dup2_x1        ; [1] 5 [1]
+    
+    lconst_1    ; [1] 5 [1] [1]
+    lcmp        ; [1] 5
+    ifne Label2
+    iconst_5    ; [1] 5 5
+    if_icmpne Label1
+       lconst_1    ; [1][1]
+    lcmp        ; 
+    ifne Label0
+    
+    iconst_1
+    ireturn
+    
+ Label2:
+     pop
+ Label1:
+     pop2
+ Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_4.java
new file mode 100644
index 0000000..92e6cd2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2_x1.jm;
+
+public class T_dup2_x1_4 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_5.j
new file mode 100644
index 0000000..81a5836
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_5.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_x1_5.java
+.class public dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 1
+    
+    iconst_3
+    iconst_4
+    iconst_5
+    dup2_x1
+
+    if_icmpeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_5.java
new file mode 100644
index 0000000..46036a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2_x1.jm;
+
+public class T_dup2_x1_5 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_6.j
new file mode 100644
index 0000000..45cd2b2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_6.j
@@ -0,0 +1,64 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_x1_6.java
+.class public dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 2
+    
+    fconst_0
+    fconst_1
+    fconst_2    ; 0 1 2
+    dup2_x1        ; 1 2 0 1 2
+    fconst_2
+    fcmpl         ; 1 2 0 1
+    ifne Label4    
+    fconst_1
+    fcmpl         ; 1 2 0 
+    ifne Label3    
+    fconst_0
+    fcmpl         ; 1 2 
+    ifne Label2    
+    fconst_2
+    fcmpl         ; 1
+    ifne Label1    
+    fconst_1
+    fcmpl         ;
+    ifne Label0     
+
+    iconst_1
+    ireturn
+    
+Label4:
+    pop
+Label3:
+    pop
+Label2:
+    pop
+Label1:
+    pop
+Label0:    
+    iconst_0
+    ireturn
+        
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_6.java
new file mode 100644
index 0000000..050d49c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2_x1.jm;
+
+public class T_dup2_x1_6 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/Test_dup2_x2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/Test_dup2_x2.java
new file mode 100644
index 0000000..e211f3e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/Test_dup2_x2.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2_x2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dup2_x2.jm.T_dup2_x2_1;
+import dxc.junit.opcodes.dup2_x2.jm.T_dup2_x2_2;
+import dxc.junit.opcodes.dup2_x2.jm.T_dup2_x2_3;
+import dxc.junit.opcodes.dup2_x2.jm.T_dup2_x2_4;
+import dxc.junit.opcodes.dup2_x2.jm.T_dup2_x2_5;
+
+public class Test_dup2_x2 extends DxTestCase {
+
+    /**
+     * @title  type of argument - int, int, int, int
+     */
+    public void testN1() {
+        T_dup2_x2_1 t = new T_dup2_x2_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - float, float, float, float
+     */
+    public void testN2() {
+        T_dup2_x2_2 t = new T_dup2_x2_2();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - double, float, int
+     */
+    public void testN3() {
+        T_dup2_x2_3 t = new T_dup2_x2_3();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title type of argument - int, float, long
+     */
+    public void testN4() {
+        T_dup2_x2_4 t = new T_dup2_x2_4();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title type of argument - double, long
+     */
+    public void testN5() {
+        T_dup2_x2_5 t = new T_dup2_x2_5();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup2_x2.jm.T_dup2_x2_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup2_x2.jm.T_dup2_x2_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_1.j
new file mode 100644
index 0000000..b7be303
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_1.j
@@ -0,0 +1,64 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_x2_1.java
+.class public dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 2
+    
+    iconst_2
+    iconst_3
+    iconst_4
+    iconst_5    ; 2 3 4 5
+    dup2_x2        ; 4 5 2 3 4 5
+    iconst_5
+    if_icmpne Label5    ; 4 5 2 3 4 
+    iconst_4
+    if_icmpne Label4    ; 4 5 2 3 
+    iconst_3
+    if_icmpne Label3    ; 4 5 2 
+    iconst_2
+    if_icmpne Label2    ; 4 5
+    iconst_5
+    if_icmpne Label1    ; 4
+    iconst_4
+    if_icmpne Label0    ; 4
+
+    iconst_1
+    ireturn
+   
+Label5:
+    pop 
+Label4:
+    pop
+Label3:
+    pop
+Label2:
+    pop
+Label1:
+    pop
+Label0:    
+    iconst_0
+    ireturn
+        
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_1.java
new file mode 100644
index 0000000..3d02ff3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2_x2.jm;
+
+public class T_dup2_x2_1 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_2.j
new file mode 100644
index 0000000..aa231cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_2.j
@@ -0,0 +1,75 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_x2_2.java
+.class public dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 2
+    
+    fconst_2
+    ldc 3.0f
+    ldc 4.0f
+    ldc 5.0f    ; 2 3 4 5
+    dup2_x2        ; 4 5 2 3 4 5
+    
+    ldc 5.0f
+    fcmpl        ; 4 5 2 3 4
+    ifne Label5
+
+    ldc 4.0f
+    fcmpl        ; 4 5 2 3
+    ifne Label4
+         
+    ldc 3.0f
+    fcmpl        ; 4 5 2
+    ifne Label3
+
+    fconst_2
+    fcmpl        ; 4 5
+    ifne Label2
+    
+    ldc 5.0f
+    fcmpl        ; 4
+    ifne Label1
+    
+    ldc 4.0f
+    fcmpl        ;
+    ifne Label0
+
+    iconst_1
+    ireturn
+   
+Label5:
+    pop 
+Label4:
+    pop
+Label3:
+    pop
+Label2:
+    pop
+Label1:
+    pop
+Label0:    
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_2.java
new file mode 100644
index 0000000..12f6dbd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2_x2.jm;
+
+public class T_dup2_x2_2 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_3.j
new file mode 100644
index 0000000..6c42a29
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_3.j
@@ -0,0 +1,66 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_x2_3.java
+.class public dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 2
+    
+    ldc2_w 3.0d
+    ldc 4.0f
+    iconst_5    ; [3] 4.0 5
+    dup2_x2        ; 4.0 5 [3] 4.0 5
+    
+    iconst_5
+    if_icmpne Label4    ; 4.0 5 [3] 4.0
+
+    ldc 4.0f
+    fcmpl        ; 4.0 5 [3]
+    ifne Label3
+         
+    ldc2_w 3.0d
+    dcmpl        ; 4.0 5
+    ifne Label2
+
+    iconst_5
+    if_icmpne Label1 ; 4.0
+    
+    ldc 4.0f
+    fcmpl        ;
+    ifne Label0
+
+    iconst_1
+    ireturn
+   
+Label4:
+    pop
+Label3:
+    pop2
+Label2:
+    pop
+Label1:
+    pop
+Label0:    
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_3.java
new file mode 100644
index 0000000..e714059
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2_x2.jm;
+
+public class T_dup2_x2_3 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_4.j
new file mode 100644
index 0000000..61533bf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_4.j
@@ -0,0 +1,61 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_x2_4.java
+.class public dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 2
+    
+    iconst_3
+    ldc 4.0f
+    ldc2_w 5    ; 3 4.0 [5]
+    dup2_x2        ; [5] 3 4.0 [5]
+    
+    ldc2_w 5
+    lcmp
+    ifne Label3    ; [5] 3 4.0
+
+    ldc 4.0f
+    fcmpl        ; [5] 3
+    ifne Label2
+         
+    iconst_3
+    if_icmpne Label1 ; [5]
+
+    ldc2_w 5
+    lcmp        ;
+    ifne Label0
+
+    iconst_1
+    ireturn
+   
+Label3:
+    pop
+Label2:
+    pop
+Label1:
+    pop2
+Label0:    
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_4.java
new file mode 100644
index 0000000..64f1368
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2_x2.jm;
+
+public class T_dup2_x2_4 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_5.j
new file mode 100644
index 0000000..58b4209
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_5.j
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_x2_5.java
+.class public dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 2
+    
+    ldc2_w 4.0d
+    ldc2_w 5    ; [4.] [5]
+    dup2_x2        ; [5] [4.] [5]
+    
+    ldc2_w 5
+    lcmp
+    ifne Label2    ; [5] [4.]
+
+    ldc2_w 4.0d
+    dcmpl        ; [5]
+    ifne Label1
+         
+    ldc2_w 5
+    lcmp        ;
+    ifne Label0
+
+    iconst_1
+    ireturn
+   
+Label2:
+    pop2
+Label1:
+    pop2
+Label0:    
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_5.java
new file mode 100644
index 0000000..e3ba641
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2_x2.jm;
+
+public class T_dup2_x2_5 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_6.j
new file mode 100644
index 0000000..1912e5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_6.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_x2_6.java
+.class public dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 2
+    iconst_2
+    iconst_3
+    iconst_4
+    ;iconst_5
+    dup2_x2
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_6.java
new file mode 100644
index 0000000..a38100d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2_x2.jm;
+
+public class T_dup2_x2_6 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_7.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_7.j
new file mode 100644
index 0000000..d4a70f2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_7.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup2_x2_7.java
+.class public dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 5
+    .limit locals 1
+    
+    iconst_2
+    iconst_3
+    iconst_4
+    iconst_5
+    dup2_x2
+
+    if_icmpeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_7.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_7.java
new file mode 100644
index 0000000..cf71ad1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup2_x2.jm;
+
+public class T_dup2_x2_7 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/Test_dup_x1.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/Test_dup_x1.java
new file mode 100644
index 0000000..6e3f57e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/Test_dup_x1.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup_x1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dup_x1.jm.T_dup_x1_1;
+import dxc.junit.opcodes.dup_x1.jm.T_dup_x1_6;
+import dxc.junit.opcodes.dup_x1.jm.T_dup_x1_7;
+import dxc.junit.opcodes.dup_x1.jm.T_dup_x1_8;
+
+public class Test_dup_x1 extends DxTestCase {
+
+    /**
+     * @title  type of argument - int, int
+     */
+    public void testN1() {
+        T_dup_x1_1 t = new T_dup_x1_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - float, float
+     */
+    public void testN2() {
+        T_dup_x1_6 t = new T_dup_x1_6();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - float, int
+     */
+    public void testN3() {
+        T_dup_x1_7 t = new T_dup_x1_7();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - reference
+     */
+    public void testN4() {
+        T_dup_x1_8 t = new T_dup_x1_8();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup_x1.jm.T_dup_x1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup_x1.jm.T_dup_x1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup_x1.jm.T_dup_x1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup_x1.jm.T_dup_x1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_1.j
new file mode 100644
index 0000000..4dc02d2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_1.j
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_x1_1.java
+.class public dxc/junit/opcodes/dup_x1/jm/T_dup_x1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 2
+    
+    iconst_4
+    iconst_5
+    dup_x1
+    
+    iconst_5
+    if_icmpne Label2
+
+    iconst_4
+    if_icmpne Label1
+
+    iconst_5
+    if_icmpne Label0
+
+    iconst_1
+    ireturn
+
+Label2:
+    pop
+Label1:
+    pop
+Label0:    
+    iconst_0
+    ireturn
+        
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_1.java
new file mode 100644
index 0000000..01af921
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup_x1.jm;
+
+public class T_dup_x1_1 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_2.j
new file mode 100644
index 0000000..fd6f37b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_x1_2.java
+.class public dxc/junit/opcodes/dup_x1/jm/T_dup_x1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 2
+    iconst_4
+    ;iconst_5
+    dup_x1
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_2.java
new file mode 100644
index 0000000..8a21b44
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup_x1.jm;
+
+public class T_dup_x1_2 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_3.j
new file mode 100644
index 0000000..f009a81
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_x1_3.java
+.class public dxc/junit/opcodes/dup_x1/jm/T_dup_x1_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 3
+    .limit locals 3
+    dconst_1
+    dup_x1
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_3.java
new file mode 100644
index 0000000..58ab4cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup_x1.jm;
+
+public class T_dup_x1_3 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_4.j
new file mode 100644
index 0000000..e6eaece
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_x1_4.java
+.class public dxc/junit/opcodes/dup_x1/jm/T_dup_x1_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1
+    dup_x1
+
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_4.java
new file mode 100644
index 0000000..db5cbc3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup_x1.jm;
+
+public class T_dup_x1_4 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_5.j
new file mode 100644
index 0000000..79c3d8c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_x1_5.java
+.class public dxc/junit/opcodes/dup_x1/jm/T_dup_x1_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 1
+    
+    iconst_4
+    iconst_5
+    dup_x1
+
+    if_icmpeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_5.java
new file mode 100644
index 0000000..b1cc14a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup_x1.jm;
+
+public class T_dup_x1_5 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_6.j
new file mode 100644
index 0000000..32d43ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_6.j
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_x1_6.java
+.class public dxc/junit/opcodes/dup_x1/jm/T_dup_x1_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 2
+    
+    fconst_2
+    fconst_1
+    dup_x1
+    
+    fconst_1
+    fcmpl
+    ifne Label2
+    
+    fconst_2
+    fcmpl
+    ifne Label1
+
+    fconst_1
+    fcmpl
+    ifne Label0
+
+    iconst_1
+    ireturn
+    
+Label2:
+    pop
+Label1:
+    pop
+Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_6.java
new file mode 100644
index 0000000..63d7511
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup_x1.jm;
+
+public class T_dup_x1_6 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_7.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_7.j
new file mode 100644
index 0000000..6f28a6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_7.j
@@ -0,0 +1,54 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_x1_7.java
+.class public dxc/junit/opcodes/dup_x1/jm/T_dup_x1_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 2
+    
+    fconst_2
+    iconst_1
+    dup_x1
+
+    iconst_1
+    if_icmpne Label2
+        
+    fconst_2
+    fcmpl
+    ifne Label1
+    
+    iconst_1
+    if_icmpne Label0
+
+    iconst_1
+    ireturn
+    
+Label2:
+    pop    
+Label1:
+    pop
+Label0:
+    iconst_0
+    ireturn
+.end method
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_7.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_7.java
new file mode 100644
index 0000000..ce0579d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup_x1.jm;
+
+public class T_dup_x1_7 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_8.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_8.j
new file mode 100644
index 0000000..726cc7c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_8.j
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_x1_8.java
+.class public dxc/junit/opcodes/dup_x1/jm/T_dup_x1_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 2
+    
+    aload_0
+    aconst_null
+    dup_x1
+
+    aconst_null
+    if_acmpne Label2
+        
+    aload_0
+    if_acmpne Label1
+    
+    aconst_null
+    if_acmpne Label0
+
+    iconst_1
+    ireturn
+    
+Label2:
+    pop    
+Label1:
+    pop
+Label0:
+    iconst_0
+    ireturn
+.end method
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_8.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_8.java
new file mode 100644
index 0000000..ed52228
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup_x1.jm;
+
+public class T_dup_x1_8 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/Test_dup_x2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/Test_dup_x2.java
new file mode 100644
index 0000000..38f1650
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/Test_dup_x2.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup_x2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dup_x2.jm.T_dup_x2_1;
+import dxc.junit.opcodes.dup_x2.jm.T_dup_x2_6;
+import dxc.junit.opcodes.dup_x2.jm.T_dup_x2_7;
+
+public class Test_dup_x2 extends DxTestCase {
+
+    /**
+     * @title  type of argument - int, int, int
+     */
+    public void testN1() {
+        T_dup_x2_1 t = new T_dup_x2_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - float, float, float
+     */
+    public void testN2() {
+        T_dup_x2_6 t = new T_dup_x2_6();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - double, int
+     */
+    public void testN3() {
+        T_dup_x2_7 t = new T_dup_x2_7();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup_x2.jm.T_dup_x2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup_x2.jm.T_dup_x2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup_x2.jm.T_dup_x2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup_x2.jm.T_dup_x2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_1.j
new file mode 100644
index 0000000..5c24e22
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_1.j
@@ -0,0 +1,60 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_x2_1.java
+.class public dxc/junit/opcodes/dup_x2/jm/T_dup_x2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 5
+    .limit locals 2
+    
+    iconst_3
+    iconst_4            
+    iconst_5            ; 3 4 5
+    dup_x2                ; 5 3 4 5
+    
+    iconst_5            ; 5 3 4 5 5
+    if_icmpne Label3    ; 5 3 4
+    
+    iconst_4            ; 5 3 4 4
+    if_icmpne Label2    ; 5 3
+    
+    iconst_3            ; 5 3 3
+    if_icmpne Label1    ; 5
+    
+    iconst_5            ; 5 5 
+    if_icmpne Label0    ; 
+
+    iconst_1
+    ireturn
+    
+Label3:
+    pop
+Label2:
+    pop
+Label1:
+    pop 
+    
+Label0:    
+    iconst_0
+    ireturn
+        
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_1.java
new file mode 100644
index 0000000..abeff61
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup_x2.jm;
+
+public class T_dup_x2_1 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_2.j
new file mode 100644
index 0000000..6bf6328
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_x2_2.java
+.class public dxc/junit/opcodes/dup_x2/jm/T_dup_x2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 2
+    iconst_4
+    ;iconst_5
+    dup_x2
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_2.java
new file mode 100644
index 0000000..b085559
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup_x2.jm;
+
+public class T_dup_x2_2 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_3.j
new file mode 100644
index 0000000..10a2800
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_x2_3.java
+.class public dxc/junit/opcodes/dup_x2/jm/T_dup_x2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 3
+    dconst_1
+    dup_x2
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_3.java
new file mode 100644
index 0000000..ff5cd9d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup_x2.jm;
+
+public class T_dup_x2_3 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_4.j
new file mode 100644
index 0000000..db1f32b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_x2_4.java
+.class public dxc/junit/opcodes/dup_x2/jm/T_dup_x2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 3
+
+    lconst_1
+    dup_x2
+
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_4.java
new file mode 100644
index 0000000..8a66e42
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup_x2.jm;
+
+public class T_dup_x2_4 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_5.j
new file mode 100644
index 0000000..e952b56
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_5.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_x2_5.java
+.class public dxc/junit/opcodes/dup_x2/jm/T_dup_x2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 3
+    .limit locals 1
+    
+    iconst_3
+    iconst_4
+    iconst_5
+    dup_x2
+
+    if_icmpeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_5.java
new file mode 100644
index 0000000..c685f59
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup_x2.jm;
+
+public class T_dup_x2_5 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_6.j
new file mode 100644
index 0000000..f67f224
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_6.j
@@ -0,0 +1,64 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_x2_6.java
+.class public dxc/junit/opcodes/dup_x2/jm/T_dup_x2_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 5
+    .limit locals 2
+    
+    fconst_0
+    fconst_1            
+    fconst_2            ; 0 1 2
+    dup_x2                ; 2 0 1 2
+    
+    fconst_2            ; 2 0 1 2 2
+    fcmpl                ; 2 0 1
+    ifne Label3    
+    
+    fconst_1            ; 2 0 1 1
+    fcmpl                ; 2 0
+    ifne Label2            
+    
+    fconst_0            ; 2 0 0
+    fcmpl                ; 2
+    ifne Label1    
+    
+    fconst_2            ; 2 2
+    fcmpl                ; 
+    ifne Label0    
+
+    iconst_1
+    ireturn
+    
+Label3:
+    pop
+Label2:
+    pop
+Label1:
+    pop 
+    
+Label0:    
+    iconst_0
+    ireturn
+        
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_6.java
new file mode 100644
index 0000000..352f746
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup_x2.jm;
+
+public class T_dup_x2_6 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_7.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_7.j
new file mode 100644
index 0000000..497fbca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_7.j
@@ -0,0 +1,54 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_dup_x2_7.java
+.class public dxc/junit/opcodes/dup_x2/jm/T_dup_x2_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 5
+    .limit locals 2
+    
+    dconst_1
+    iconst_3              ; [1] 3
+    dup_x2                ; 3 [1] 3
+    
+    iconst_3            ; 3 [1] 3 3
+    if_icmpne Label2    ; 3 [1]    
+    
+    dconst_1            ; 3 [1] [1]
+    dcmpl                ; 3
+    ifne Label1            
+    
+    iconst_3            ; 0
+    if_icmpne Label0    ;    
+    
+    iconst_1
+    ireturn
+    
+Label2:
+    pop2
+Label1:
+    pop 
+Label0:    
+    iconst_0
+    ireturn
+        
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_7.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_7.java
new file mode 100644
index 0000000..3427222
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.dup_x2.jm;
+
+public class T_dup_x2_7 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/Test_f2d.java b/tools/dx-tests/src/dxc/junit/opcodes/f2d/Test_f2d.java
new file mode 100644
index 0000000..af2a661
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/Test_f2d.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2d;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.f2d.jm.T_f2d_1;
+
+public class Test_f2d extends DxTestCase {
+
+    /**
+     * @title  Argument = 0.5
+     */
+    public void testN1() {
+        T_f2d_1 t = new T_f2d_1();
+        assertEquals(0.5d, t.run(0.5f), 0d);
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_f2d_1 t = new T_f2d_1();
+        assertEquals(1d, t.run(1), 0d);
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_f2d_1 t = new T_f2d_1();
+        assertEquals(-1d, t.run(-1), 0d);
+    }
+
+    /**
+     * @title  Argument = Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_f2d_1 t = new T_f2d_1();
+        double r = 0x1.fffffeP+127d;
+        assertEquals(r, t.run(Float.MAX_VALUE), 0d);
+    }
+
+    /**
+     * @title  Argument = Float.MIN_VALUE
+     */
+    public void testB2() {
+        T_f2d_1 t = new T_f2d_1();
+        double r = 0x0.000002P-126d;
+        assertEquals(r, t.run(Float.MIN_VALUE), 0d);
+    }
+
+    /**
+     * @title  Argument = -0
+     */
+    public void testB3() {
+        T_f2d_1 t = new T_f2d_1();
+        assertEquals(-0d, t.run(-0), 0d);
+    }
+
+    /**
+     * @title  Argument = NaN
+     */
+    public void testB4() {
+        T_f2d_1 t = new T_f2d_1();
+        assertTrue(Double.isNaN(t.run(Float.NaN)));
+    }
+
+    /**
+     * @title  Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_f2d_1 t = new T_f2d_1();
+        assertTrue(Double.isInfinite(t.run(Float.POSITIVE_INFINITY)));
+    }
+
+    /**
+     * @title  Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_f2d_1 t = new T_f2d_1();
+        assertTrue(Double.isInfinite(t.run(Float.NEGATIVE_INFINITY)));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2d.jm.T_f2d_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2d.jm.T_f2d_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2d.jm.T_f2d_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2d.jm.T_f2d_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2d.jm.T_f2d_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_1.j b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_1.j
new file mode 100644
index 0000000..7c39854
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f2d_1.java
+.class public dxc/junit/opcodes/f2d/jm/T_f2d_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)D
+    .limit stack 2
+    .limit locals 2
+    fload_1
+    f2d
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_1.java b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_1.java
new file mode 100644
index 0000000..86f6024
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2d.jm;
+
+public class T_f2d_1 {
+
+    public double run(float a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_2.j b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_2.j
new file mode 100644
index 0000000..27d5ce9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f2d_2.java
+.class public dxc/junit/opcodes/f2d/jm/T_f2d_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(F)D
+    .limit stack 2
+    .limit locals 2
+
+;    fload_1
+    f2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_2.java b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_2.java
new file mode 100644
index 0000000..92464dd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2d.jm;
+
+public class T_f2d_2 {
+
+    public double run(float a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_3.j b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_3.j
new file mode 100644
index 0000000..8bd52a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f2d_3.java
+.class public dxc/junit/opcodes/f2d/jm/T_f2d_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(D)D
+    .limit stack 2
+    .limit locals 3
+
+    dload_1
+    f2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_3.java b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_3.java
new file mode 100644
index 0000000..7668c19
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2d.jm;
+
+public class T_f2d_3 {
+
+    public double run(double a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_4.j b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_4.j
new file mode 100644
index 0000000..0535199
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f2d_4.java
+.class public dxc/junit/opcodes/f2d/jm/T_f2d_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)D
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+;    l2f
+    f2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_4.java b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_4.java
new file mode 100644
index 0000000..21cfd1a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2d.jm;
+
+public class T_f2d_4 {
+
+    public double run(long a) {
+        return (float) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_5.j b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_5.j
new file mode 100644
index 0000000..4a25d44
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f2d_5.java
+.class public dxc/junit/opcodes/f2d/jm/T_f2d_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(F)D
+    .limit stack 1
+    .limit locals 2
+
+    fload_1
+    f2d
+    
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_5.java b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_5.java
new file mode 100644
index 0000000..b01c814
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2d.jm;
+
+public class T_f2d_5 {
+
+    public double run(float a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_6.j b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_6.j
new file mode 100644
index 0000000..2f90d81
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f2d_6.java
+.class public dxc/junit/opcodes/f2d/jm/T_f2d_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)D
+    .limit stack 2
+    .limit locals 2
+
+    aload_0
+    f2d
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_6.java b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_6.java
new file mode 100644
index 0000000..8ac2102
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2d.jm;
+
+public class T_f2d_6 {
+    
+    public double run(float a) {
+        return a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/Test_f2i.java b/tools/dx-tests/src/dxc/junit/opcodes/f2i/Test_f2i.java
new file mode 100644
index 0000000..0968e96
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/Test_f2i.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2i;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.f2i.jm.T_f2i_1;
+
+public class Test_f2i extends DxTestCase {
+
+    /**
+     * @title  Argument = 2.999999f
+     */
+    public void testN1() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(2, t.run(2.999999f));
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(1, t.run(1f));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(-1, t.run(-1f));
+    }
+
+    /**
+     * @title  Argument = -0f
+     */
+    public void testB1() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(0, t.run(-0f));
+    }
+
+    /**
+     * @title  Argument = Float.MAX_VALUE
+     */
+    public void testB2() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Float.MIN_VALUE
+     */
+    public void testB3() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(0, t.run(Float.MIN_VALUE));
+    }
+
+    /**
+     * @title  Argument = NaN
+     */
+    public void testB4() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(0, t.run(Float.NaN));
+    }
+
+    /**
+     * @title  Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2i.jm.T_f2i_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2i.jm.T_f2i_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2i.jm.T_f2i_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2i.jm.T_f2i_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_1.j b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_1.j
new file mode 100644
index 0000000..ddc0dc0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f2i_1.java
+.class public dxc/junit/opcodes/f2i/jm/T_f2i_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)I
+    .limit stack 2
+    .limit locals 2
+    fload_1
+    f2i
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_1.java b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_1.java
new file mode 100644
index 0000000..b8ae3e2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2i.jm;
+
+public class T_f2i_1 {
+
+    public int run(float a) {
+        return (int)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_2.j b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_2.j
new file mode 100644
index 0000000..2676a82
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f2i_2.java
+.class public dxc/junit/opcodes/f2i/jm/T_f2i_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(F)I
+    .limit stack 2
+    .limit locals 2
+
+;    fload_1
+    f2i
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_2.java b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_2.java
new file mode 100644
index 0000000..888f9a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2i.jm;
+
+public class T_f2i_2 {
+
+    public int run(float a) {
+        return (int)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_3.j b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_3.j
new file mode 100644
index 0000000..8a819ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_3.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f2i_3.java
+.class public dxc/junit/opcodes/f2i/jm/T_f2i_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(D)I
+    .limit stack 2
+    .limit locals 3
+ 
+    dload_1
+ ;   d2f
+     f2i
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_3.java b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_3.java
new file mode 100644
index 0000000..fb68cc8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2i.jm;
+
+public class T_f2i_3 {
+
+    public int run(double a) {
+        return (int)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_4.j b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_4.j
new file mode 100644
index 0000000..9df3571
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f2i_4.java
+.class public dxc/junit/opcodes/f2i/jm/T_f2i_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(J)I
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+
+    ;l2f
+    f2i
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_4.java b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_4.java
new file mode 100644
index 0000000..7f487a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2i.jm;
+
+public class T_f2i_4 {
+
+    public int run(long a) {
+        return (int)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_5.j b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_5.j
new file mode 100644
index 0000000..a18e695
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f2i_5.java
+.class public dxc/junit/opcodes/f2i/jm/T_f2i_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)I
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    f2i
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_5.java b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_5.java
new file mode 100644
index 0000000..d09408c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2i.jm;
+
+public class T_f2i_5 {
+    
+    public int run(float a) {
+        return (int)a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/Test_f2l.java b/tools/dx-tests/src/dxc/junit/opcodes/f2l/Test_f2l.java
new file mode 100644
index 0000000..ae6f98f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/Test_f2l.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2l;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.f2l.jm.T_f2l_1;
+
+public class Test_f2l extends DxTestCase {
+
+    /**
+     * @title  Argument = 2.999999f
+     */
+    public void testN1() {
+        T_f2l_1 t = new T_f2l_1();
+        assertEquals(2l, t.run(2.999999f));
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+         T_f2l_1 t = new T_f2l_1();
+         assertEquals(1l, t.run(1));
+    }
+    
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+         T_f2l_1 t = new T_f2l_1();
+         assertEquals(-1l, t.run(-1));
+    }
+
+    /**
+     * @title  Argument = Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_f2l_1 t = new T_f2l_1();
+        assertEquals(Long.MAX_VALUE, t.run(Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Float.MIN_VALUE
+     */
+    public void testB2() {
+        T_f2l_1 t = new T_f2l_1();
+        assertEquals(0, t.run(Float.MIN_VALUE));
+    }
+    
+    /**
+     * @title  Argument = 0
+     */
+    public void testB3() {
+        T_f2l_1 t = new T_f2l_1();
+        assertEquals(0l, t.run(0));
+    }
+    
+    /**
+     * @title  Argument = NaN
+     */
+    public void testB4() {
+        T_f2l_1 t = new T_f2l_1();
+        assertEquals(0l, t.run(Float.NaN));
+    }
+    
+    /**
+     * @title  Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_f2l_1 t = new T_f2l_1();
+        assertEquals(Long.MAX_VALUE, t.run(Float.POSITIVE_INFINITY));
+    }
+    
+    /**
+     * @title  Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_f2l_1 t = new T_f2l_1();
+        assertEquals(Long.MIN_VALUE, t.run(Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments 
+     */
+    public void testVFE1() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.f2l.jm.T_f2l_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double 
+     */
+    public void testVFE2() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.f2l.jm.T_f2l_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long 
+     */
+    public void testVFE3() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.f2l.jm.T_f2l_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.f2l.jm.T_f2l_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference 
+     */
+    public void testVFE5() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.f2l.jm.T_f2l_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_1.j b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_1.j
new file mode 100644
index 0000000..0416969
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f2l_1.java
+.class public dxc/junit/opcodes/f2l/jm/T_f2l_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)J
+    .limit stack 2
+    .limit locals 2
+    fload_1
+    f2l
+    lreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_1.java b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_1.java
new file mode 100644
index 0000000..1aa20c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2l.jm;
+
+public class T_f2l_1 {
+
+    public long run(float a) {
+        return (long)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_2.j b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_2.j
new file mode 100644
index 0000000..df4d9e0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f2l_2.java
+.class public dxc/junit/opcodes/f2l/jm/T_f2l_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(F)J
+    .limit stack 2
+    .limit locals 2
+
+;    fload_1
+    f2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_2.java b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_2.java
new file mode 100644
index 0000000..61a830d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2l.jm;
+
+public class T_f2l_2 {
+
+    public long run(float a) {
+        return (long)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_3.j b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_3.j
new file mode 100644
index 0000000..72ff8f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f2l_3.java
+.class public dxc/junit/opcodes/f2l/jm/T_f2l_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(D)J
+    .limit stack 2
+    .limit locals 3
+
+    dload_1
+    f2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_3.java b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_3.java
new file mode 100644
index 0000000..c755d86
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2l.jm;
+
+public class T_f2l_3 {
+
+    public long run(double a) {
+        return (long)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_4.j b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_4.j
new file mode 100644
index 0000000..293a938
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f2l_4.java
+.class public dxc/junit/opcodes/f2l/jm/T_f2l_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)J
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+;    l2f
+    f2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_4.java b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_4.java
new file mode 100644
index 0000000..1a82262
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2l.jm;
+
+public class T_f2l_4 {
+
+    public long run(long a) {
+        return (long)(float)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_5.j b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_5.j
new file mode 100644
index 0000000..534ec84
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f2l_5.java
+.class public dxc/junit/opcodes/f2l/jm/T_f2l_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(F)J
+    .limit stack 1
+    .limit locals 2
+
+    fload_1
+    f2l
+    
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_5.java b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_5.java
new file mode 100644
index 0000000..ecc44b7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2l.jm;
+
+public class T_f2l_5 {
+
+    public long run(float a) {
+        return (long)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_6.j b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_6.j
new file mode 100644
index 0000000..55af8b4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f2l_6.java
+.class public dxc/junit/opcodes/f2l/jm/T_f2l_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)J
+    .limit stack 2
+    .limit locals 2
+
+    aload_0
+    f2l
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_6.java b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_6.java
new file mode 100644
index 0000000..9984255
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.f2l.jm;
+
+public class T_f2l_6 {
+    
+    public long run(float a) {
+        return (long)a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/Test_fadd.java b/tools/dx-tests/src/dxc/junit/opcodes/fadd/Test_fadd.java
new file mode 100644
index 0000000..a2fef55
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/Test_fadd.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fadd;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fadd.jm.T_fadd_1;
+
+public class Test_fadd extends DxTestCase {
+
+    /**
+     * @title  Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(5.84f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title  Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(-3.14f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title Arguments = -3.14f, -2.7f
+     */
+    public void testN3() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(-5.84f, t.run(-3.14f, -2.7f));
+    }
+
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(3.3028235E38f, 0.11E38f));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_fadd_1 t = new T_fadd_1();
+        assertTrue(Float.isNaN(t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY)));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB4() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title  Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(+0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(-0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = -2.7f, 2.7f
+     */
+    public void testB7() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(+0f, t.run(-2.7f, 2.7f));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB9() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(0f, t.run(Float.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fadd.jm.T_fadd_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fadd.jm.T_fadd_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fadd.jm.T_fadd_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fadd.jm.T_fadd_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_1.j
new file mode 100644
index 0000000..81aa01f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fadd_1.java
+.class public dxc/junit/opcodes/fadd/jm/T_fadd_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    fload_2
+    fadd
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_1.java
new file mode 100644
index 0000000..a093407
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fadd.jm;
+
+public class T_fadd_1 {
+
+    public float run(float a, float b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_2.j
new file mode 100644
index 0000000..57ee8d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fadd_2.java
+.class public dxc/junit/opcodes/fadd/jm/T_fadd_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    ; fload_2    
+    fadd
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_2.java
new file mode 100644
index 0000000..6dfb686
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fadd.jm;
+
+public class T_fadd_2 {
+
+    public float run(float a, float b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_3.j
new file mode 100644
index 0000000..dadd9e0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fadd_3.java
+.class public dxc/junit/opcodes/fadd/jm/T_fadd_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)F
+    .limit stack 3
+    .limit locals 5
+    fload_1
+    dload_2    
+    fadd
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_3.java
new file mode 100644
index 0000000..3f26ebd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fadd.jm;
+
+public class T_fadd_3 {
+
+    public float run(float a, double b) {
+        return a+(float)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_4.j
new file mode 100644
index 0000000..6c6aac1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fadd_4.java
+.class public dxc/junit/opcodes/fadd/jm/T_fadd_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JF)F
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2f
+    fload_3
+    fadd
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_4.java
new file mode 100644
index 0000000..6224205
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fadd.jm;
+
+public class T_fadd_4 {
+
+    public float run(long a, float b) {
+        return (float)a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_5.j
new file mode 100644
index 0000000..e964fb4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fadd_5.java
+.class public dxc/junit/opcodes/fadd/jm/T_fadd_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+
+    fload_1
+    aload_0
+    fadd
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_5.java
new file mode 100644
index 0000000..78855ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fadd.jm;
+
+public class T_fadd_5 {
+    
+    public float run(float a, float b) {
+        return a+b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/Test_faload.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/Test_faload.java
new file mode 100644
index 0000000..6a04f7d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/Test_faload.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.faload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.faload.jm.T_faload_1;
+
+public class Test_faload extends DxTestCase {
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN1() {
+        T_faload_1 t = new T_faload_1();
+        float[] arr = new float[2];
+        arr[1] = 3.1415f;
+        assertEquals(3.1415f, t.run(arr, 1));
+    }
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_faload_1 t = new T_faload_1();
+        float[] arr = new float[2];
+        arr[0] = 3.1415f;
+        assertEquals(3.1415f, t.run(arr, 0));
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_faload_1 t = new T_faload_1();
+        float[] arr = new float[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_faload_1 t = new T_faload_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_faload_1 t = new T_faload_1();
+        float[] arr = new float[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.faload.jm.T_faload_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.faload.jm.T_faload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.faload.jm.T_faload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.faload.jm.T_faload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.faload.jm.T_faload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.faload.jm.T_faload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.faload.jm.T_faload_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.faload.jm.T_faload_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_1.j
new file mode 100644
index 0000000..448ac41
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_faload_1.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([FI)F
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+
+    faload
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_1.java
new file mode 100644
index 0000000..b8173a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_1 {
+    public float run(float[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_2.j
new file mode 100644
index 0000000..0f06fe4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_faload_2.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([FI)F
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+;    iload_2
+
+    faload
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_2.java
new file mode 100644
index 0000000..4894ed9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_2 {
+
+    public float run(float[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_3.j
new file mode 100644
index 0000000..14e2b64
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_faload_3.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([FI)F
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    faload
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_3.java
new file mode 100644
index 0000000..0ca882b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_3 {
+
+    public float run(float[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_4.j
new file mode 100644
index 0000000..12c6259
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_faload_4.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([FD)F
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+    faload
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_4.java
new file mode 100644
index 0000000..efff3d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_4 {
+
+    public float run(float[] arr, double idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_5.j
new file mode 100644
index 0000000..eb3e0d8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_faload_5.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([FJ)F
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    lload_2
+;    l2i
+    faload
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_5.java
new file mode 100644
index 0000000..d5a8738
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_5 {
+
+    public float run(float[] arr, long idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_6.j
new file mode 100644
index 0000000..2592e0d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_faload_6.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;[FI)F
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_3
+
+    faload
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_6.java
new file mode 100644
index 0000000..b70478f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_6 {
+
+    public float run(Object a, float[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_7.j
new file mode 100644
index 0000000..6ed18fc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_faload_7.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([D[FI)F
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    faload
+
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_7.java
new file mode 100644
index 0000000..401a9cb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_7 {
+
+    public float run(double[] a, float[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_8.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_8.j
new file mode 100644
index 0000000..5e94ca0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_8.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_faload_8.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([J[FI)F
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    faload
+
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_8.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_8.java
new file mode 100644
index 0000000..4b6d235
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_8 {
+
+    public float run(long[] a, float[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_9.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_9.j
new file mode 100644
index 0000000..3a8e65c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_9.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_faload_9.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([FI)F
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_0
+    faload
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_9.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_9.java
new file mode 100644
index 0000000..a53e367
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_9 {
+    
+    public float run(float[] arr, int idx) {
+        return arr[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/Test_fastore.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/Test_fastore.java
new file mode 100644
index 0000000..bf2a6c9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/Test_fastore.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fastore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fastore.jm.T_fastore_1;
+
+public class Test_fastore extends DxTestCase {
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN1() {
+        T_fastore_1 t = new T_fastore_1();
+        float[] arr = new float[2];
+        t.run(arr, 1, 2.7f);
+        assertEquals(2.7f, arr[1]);
+    }
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_fastore_1 t = new T_fastore_1();
+        float[] arr = new float[2];
+        t.run(arr, 0, 2.7f);
+        assertEquals(2.7f, arr[0]);
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_fastore_1 t = new T_fastore_1();
+        float[] arr = new float[2];
+        try {
+            t.run(arr, 2, 2.7f);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_fastore_1 t = new T_fastore_1();
+        try {
+            t.run(null, 2, 2.7f);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_fastore_1 t = new T_fastore_1();
+        float[] arr = new float[2];
+        try {
+            t.run(arr, -1, 2.7f);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fastore.jm.T_fastore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fastore.jm.T_fastore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double,
+     * float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fastore.jm.T_fastore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fastore.jm.T_fastore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - object, int,
+     * float
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.fastore.jm.T_fastore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int,
+     * float
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.fastore.jm.T_fastore_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int,
+     * float
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.fastore.jm.T_fastore_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference,
+     * float
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.fastore.jm.T_fastore_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_1.j
new file mode 100644
index 0000000..82dc298
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fastore_1.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([FIF)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    fload_3
+    fastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_1.java
new file mode 100644
index 0000000..9977fce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_1 {
+    public void run(float[] arr, int idx, float value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_2.j
new file mode 100644
index 0000000..09d9ee1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fastore_2.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([FIF)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    ;fload_3
+    fastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_2.java
new file mode 100644
index 0000000..d9e9013
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_2 {
+
+    public void run(float[] arr, int idx, float value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_3.j
new file mode 100644
index 0000000..861cc0f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fastore_3.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([FIF)V
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    fload_3
+    fastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_3.java
new file mode 100644
index 0000000..7d55003
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_3 {
+
+    public void run(float[] arr, int idx, float value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_4.j
new file mode 100644
index 0000000..12318b4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fastore_4.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([FDF)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    fload 4
+
+    fastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_4.java
new file mode 100644
index 0000000..6d3b631
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_4 {
+
+    public void run(float[] arr, double idx, float value) {
+        arr[(int)idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_5.j
new file mode 100644
index 0000000..4c2325d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fastore_5.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([FIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+    lload_3
+;    l2f
+    fastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_5.java
new file mode 100644
index 0000000..34e158a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_5 {
+
+    public void run(float[] arr, int idx, float value) {
+        arr[idx] = (float)value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_6.j
new file mode 100644
index 0000000..b1cabb8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fastore_6.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;IF)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    fload_3
+    fastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_6.java
new file mode 100644
index 0000000..39d8539
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_6 {
+
+    public void run(Object a, float[] arr, int idx, float value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_7.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_7.j
new file mode 100644
index 0000000..3bf14f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_7.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fastore_7.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([D[FIF)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    fload 4
+    fastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_7.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_7.java
new file mode 100644
index 0000000..8766fd1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_7 {
+
+    public void run(double a[], float[] arr, int idx, float value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_8.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_8.j
new file mode 100644
index 0000000..138ccc1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_8.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fastore_8.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([J[FIF)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    fload 4
+    fastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_8.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_8.java
new file mode 100644
index 0000000..38264cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_8 {
+
+    public void run(long a[], float[] arr, int idx, float value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_9.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_9.j
new file mode 100644
index 0000000..66e8723
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fastore_9.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([FIF)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    aload_0
+    fload_3
+    fastore
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_9.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_9.java
new file mode 100644
index 0000000..af77ce5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_9 {
+    
+    public void run(float[] arr, int idx, float value) {
+        arr[idx] = value;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/Test_fcmpg.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/Test_fcmpg.java
new file mode 100644
index 0000000..5af23b3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/Test_fcmpg.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fcmpg;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fcmpg.jm.T_fcmpg_1;
+
+public class Test_fcmpg extends DxTestCase {
+
+    /**
+     * @title  Arguments = 3.14f, 2.7f
+     */
+    public void testN1() {
+        T_fcmpg_1 t = new T_fcmpg_1();
+        assertEquals(1, t.run(3.14f, 2.7f));
+    }
+
+    /**
+     * @title  Arguments = -3.14f, 2.7f
+     */
+    public void testN2() {
+        T_fcmpg_1 t = new T_fcmpg_1();
+        assertEquals(-1, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title  Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_fcmpg_1 t = new T_fcmpg_1();
+        assertEquals(0, t.run(3.14f, 3.14f));
+    }
+
+    /**
+     * @title  Arguments = Float.NaN, Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_fcmpg_1 t = new T_fcmpg_1();
+        assertEquals(1, t.run(Float.NaN, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = +0, -0
+     */
+    public void testB2() {
+        T_fcmpg_1 t = new T_fcmpg_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = Float.NEGATIVE_INFINITY, Float.MIN_VALUE
+     */
+    public void testB3() {
+        T_fcmpg_1 t = new T_fcmpg_1();
+        assertEquals(-1, t.run(Float.NEGATIVE_INFINITY, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY, Float.MAX_VALUE
+     */
+    public void testB4() {
+        T_fcmpg_1 t = new T_fcmpg_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_fcmpg_1 t = new T_fcmpg_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fcmpg.jm.T_fcmpg_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fcmpg.jm.T_fcmpg_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fcmpg.jm.T_fcmpg_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fcmpg.jm.T_fcmpg_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_1.j
new file mode 100644
index 0000000..557db8b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_1.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fcmpg_1.java
+.class public dxc/junit/opcodes/fcmpg/jm/T_fcmpg_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)I
+    .limit stack 2
+    .limit locals 3
+    
+    fload_1
+    fload_2
+    
+    fcmpg 
+    dup
+    ifeq Label0
+    ifgt Label1
+    
+    iconst_m1
+    ireturn
+    
+    Label0:
+    iconst_0
+    ireturn
+
+    Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_1.java
new file mode 100644
index 0000000..90916a4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fcmpg.jm;
+
+public class T_fcmpg_1 {
+
+    public int run(float a, float b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_2.j
new file mode 100644
index 0000000..98a5a14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_2.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fcmpg_2.java
+.class public dxc/junit/opcodes/fcmpg/jm/T_fcmpg_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FF)Z
+    .limit stack 2
+    .limit locals 3
+
+    fload_1
+;    fload_2
+    fcmpg
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_2.java
new file mode 100644
index 0000000..76fc02e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fcmpg.jm;
+
+public class T_fcmpg_2 {
+
+    public boolean run(float a, float b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_3.j
new file mode 100644
index 0000000..8404b13
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fcmpg_3.java
+.class public dxc/junit/opcodes/fcmpg/jm/T_fcmpg_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(FF)Z
+    .limit stack 4
+    .limit locals 3
+
+    fload_1
+    dconst_1
+    fcmpg 
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_3.java
new file mode 100644
index 0000000..f559c7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fcmpg.jm;
+
+public class T_fcmpg_3 {
+
+    public boolean run(float a, float b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_4.j
new file mode 100644
index 0000000..f6ed938
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fcmpg_4.java
+.class public dxc/junit/opcodes/fcmpg/jm/T_fcmpg_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(FF)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+    fload_1
+
+    fcmpg 
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_4.java
new file mode 100644
index 0000000..b540532
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fcmpg.jm;
+
+public class T_fcmpg_4 {
+
+    public boolean run(float a, float b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_5.j
new file mode 100644
index 0000000..cb0a344
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fcmpg_5.java
+.class public dxc/junit/opcodes/fcmpg/jm/T_fcmpg_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    fload_2
+    fcmpl
+    ifle Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_5.java
new file mode 100644
index 0000000..75872f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fcmpg.jm;
+
+public class T_fcmpg_5 {
+    
+    public boolean run(float a, float b) {
+        return a > b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/Test_fcmpl.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/Test_fcmpl.java
new file mode 100644
index 0000000..78c0b03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/Test_fcmpl.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fcmpl;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fcmpl.jm.T_fcmpl_1;
+
+public class Test_fcmpl extends DxTestCase {
+
+    /**
+     * @title  Arguments = 3.14f, 2.7f
+     */
+    public void testN1() {
+        T_fcmpl_1 t = new T_fcmpl_1();
+        assertEquals(1, t.run(3.14f, 2.7f));
+    }
+
+    /**
+     * @title  Arguments = -3.14f, 2.7f
+     */
+    public void testN2() {
+        T_fcmpl_1 t = new T_fcmpl_1();
+        assertEquals(-1, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title  Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_fcmpl_1 t = new T_fcmpl_1();
+        assertEquals(0, t.run(3.14f, 3.14f));
+    }
+
+    /**
+     * @title  Arguments = Float.NaN, Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_fcmpl_1 t = new T_fcmpl_1();
+        assertEquals(-1, t.run(Float.NaN, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = +0, -0
+     */
+    public void testB2() {
+        T_fcmpl_1 t = new T_fcmpl_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = Float.NEGATIVE_INFINITY, Float.MIN_VALUE
+     */
+    public void testB3() {
+        T_fcmpl_1 t = new T_fcmpl_1();
+        assertEquals(-1, t.run(Float.NEGATIVE_INFINITY, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY, Float.MAX_VALUE
+     */
+    public void testB4() {
+        T_fcmpl_1 t = new T_fcmpl_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_fcmpl_1 t = new T_fcmpl_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fcmpl.jm.T_fcmpl_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fcmpl.jm.T_fcmpl_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fcmpl.jm.T_fcmpl_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fcmpl.jm.T_fcmpl_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_1.j
new file mode 100644
index 0000000..3bf5533
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_1.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fcmpl_1.java
+.class public dxc/junit/opcodes/fcmpl/jm/T_fcmpl_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)I
+    .limit stack 2
+    .limit locals 3
+    
+    fload_1
+    fload_2
+    
+    fcmpl 
+    dup
+    ifeq Label0
+    ifgt Label1
+    
+    iconst_m1
+    ireturn
+    
+    Label0:
+    iconst_0
+    ireturn
+
+    Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_1.java
new file mode 100644
index 0000000..2dd1c26
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fcmpl.jm;
+
+public class T_fcmpl_1 {
+
+    public int run(float a, float b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_2.j
new file mode 100644
index 0000000..01d6c1a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_2.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fcmpl_2.java
+.class public dxc/junit/opcodes/fcmpl/jm/T_fcmpl_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FF)Z
+    .limit stack 2
+    .limit locals 3
+
+    fload_1
+;    fload_2
+    fcmpl
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_2.java
new file mode 100644
index 0000000..12cb22f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fcmpl.jm;
+
+public class T_fcmpl_2 {
+
+    public boolean run(float a, float b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_3.j
new file mode 100644
index 0000000..f944312
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fcmpl_3.java
+.class public dxc/junit/opcodes/fcmpl/jm/T_fcmpl_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(FF)Z
+    .limit stack 4
+    .limit locals 3
+
+    fload_1
+    dconst_1
+    fcmpl 
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_3.java
new file mode 100644
index 0000000..984516a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fcmpl.jm;
+
+public class T_fcmpl_3 {
+
+    public boolean run(float a, float b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_4.j
new file mode 100644
index 0000000..42a0161
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fcmpl_4.java
+.class public dxc/junit/opcodes/fcmpl/jm/T_fcmpl_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(FF)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+    fload_1
+
+    fcmpl 
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_4.java
new file mode 100644
index 0000000..ca79301
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fcmpl.jm;
+
+public class T_fcmpl_4 {
+
+    public boolean run(float a, float b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_5.j
new file mode 100644
index 0000000..65742db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fcmpl_5.java
+.class public dxc/junit/opcodes/fcmpl/jm/T_fcmpl_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    fload_2
+    fcmpl
+    ifle Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_5.java
new file mode 100644
index 0000000..0a661b1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fcmpl.jm;
+
+public class T_fcmpl_5 {
+    
+    public boolean run(float a, float b) {
+        return a > b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/Test_fconst_0.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/Test_fconst_0.java
new file mode 100644
index 0000000..cf2b492
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/Test_fconst_0.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fconst_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fconst_0.jm.T_fconst_0_1;
+
+public class Test_fconst_0 extends DxTestCase {
+
+    /**
+     * @title normal test 
+     */
+    public void testN1() {
+        T_fconst_0_1 t = new T_fconst_0_1();
+        float b = 1234f;
+        float c = 1234f;
+        float d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fconst_0.jm.T_fconst_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_1.j
new file mode 100644
index 0000000..f96b078
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fconst_0_1.java
+.class public dxc/junit/opcodes/fconst_0/jm/T_fconst_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    fconst_0
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_1.java
new file mode 100644
index 0000000..976773d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fconst_0.jm;
+
+public class T_fconst_0_1 {
+
+    public float run() {
+        return 0f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_2.j
new file mode 100644
index 0000000..864b359
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fconst_0_2.java
+.class public dxc/junit/opcodes/fconst_0/jm/T_fconst_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    .limit stack 1
+;    .limit locals 1
+
+    fconst_0
+    fconst_0
+
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_2.java
new file mode 100644
index 0000000..0f7267b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fconst_0.jm;
+
+public class T_fconst_0_2 {
+
+    public float run() {
+        return 0f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/Test_fconst_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/Test_fconst_1.java
new file mode 100644
index 0000000..25ae549
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/Test_fconst_1.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fconst_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fconst_1.jm.T_fconst_1_1;
+
+public class Test_fconst_1 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_fconst_1_1 t = new T_fconst_1_1();
+        float b = 1235f;
+        float c = 1234f;
+        float d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fconst_1.jm.T_fconst_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_1.j
new file mode 100644
index 0000000..af3a723
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fconst_1_1.java
+.class public dxc/junit/opcodes/fconst_1/jm/T_fconst_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    fconst_1
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_1.java
new file mode 100644
index 0000000..b9751a4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fconst_1.jm;
+
+public class T_fconst_1_1 {
+
+    public float run() {
+        return 1f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_2.j
new file mode 100644
index 0000000..98c41d4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fconst_1_2.java
+.class public dxc/junit/opcodes/fconst_1/jm/T_fconst_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    .limit stack 1
+;    .limit locals 1
+
+    fconst_1
+    fconst_1
+
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_2.java
new file mode 100644
index 0000000..6fa39d1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fconst_1.jm;
+
+public class T_fconst_1_2 {
+
+    public float run() {
+        return 1f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/Test_fconst_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/Test_fconst_2.java
new file mode 100644
index 0000000..4aeaf8b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/Test_fconst_2.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fconst_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fconst_2.jm.T_fconst_2_1;
+
+public class Test_fconst_2 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_fconst_2_1 t = new T_fconst_2_1();
+        float b = 1236f;
+        float c = 1234f;
+        float d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fconst_2.jm.T_fconst_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_1.j
new file mode 100644
index 0000000..2c7ef7f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fconst_2_1.java
+.class public dxc/junit/opcodes/fconst_2/jm/T_fconst_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    fconst_2
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_1.java
new file mode 100644
index 0000000..7ac0339
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fconst_2.jm;
+
+public class T_fconst_2_1 {
+
+    public float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_2.j
new file mode 100644
index 0000000..795fb7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fconst_2_2.java
+.class public dxc/junit/opcodes/fconst_2/jm/T_fconst_2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    .limit stack 1
+;    .limit locals 1
+
+    fconst_2
+    fconst_2
+
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_2.java
new file mode 100644
index 0000000..f910831
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fconst_2.jm;
+
+public class T_fconst_2_2 {
+
+    public float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/Test_fdiv.java b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/Test_fdiv.java
new file mode 100644
index 0000000..ce1f3d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/Test_fdiv.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fdiv;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fdiv.jm.T_fdiv_1;
+
+public class Test_fdiv extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(0.8598726f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title  Dividend = 0
+     */
+    public void testN2() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(0f, t.run(0, 3.14f));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN3() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(-1.162963f, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title  Arguments = -2.7f, Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(0f, t.run(-2.7f, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB5() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(Float.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title  Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(-0f, t.run(0, -2.7f));
+    }
+
+    /**
+     * @title  Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(-2.7f, 0));
+    }
+
+    /**
+     * @title  Arguments = 1, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(1, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.MAX_VALUE, -1E-9f));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fdiv.jm.T_fdiv_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float / double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fdiv.jm.T_fdiv_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fdiv.jm.T_fdiv_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference / float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fdiv.jm.T_fdiv_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_1.j
new file mode 100644
index 0000000..a64d47f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fdiv_1.java
+.class public dxc/junit/opcodes/fdiv/jm/T_fdiv_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    fload_2
+    fdiv
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_1.java
new file mode 100644
index 0000000..4d6c2e3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fdiv.jm;
+
+public class T_fdiv_1 {
+
+    public float run(float a, float b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_2.j
new file mode 100644
index 0000000..6755eaf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fdiv_2.java
+.class public dxc/junit/opcodes/fdiv/jm/T_fdiv_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    ; fload_2    
+    fdiv
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_2.java
new file mode 100644
index 0000000..447fe13
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fdiv.jm;
+
+public class T_fdiv_2 {
+
+    public float run(float a, float b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_3.j
new file mode 100644
index 0000000..06872a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fdiv_3.java
+.class public dxc/junit/opcodes/fdiv/jm/T_fdiv_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)F
+    .limit stack 3
+    .limit locals 5
+    fload_1
+    dload_2    
+    fdiv
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_3.java
new file mode 100644
index 0000000..24d8a09
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fdiv.jm;
+
+public class T_fdiv_3 {
+
+    public float run(float a, double b) {
+        return a/(float)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_4.j
new file mode 100644
index 0000000..a8e98ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fdiv_4.java
+.class public dxc/junit/opcodes/fdiv/jm/T_fdiv_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JF)F
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2f
+    fload_3
+    fdiv
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_4.java
new file mode 100644
index 0000000..0c2cc97
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fdiv.jm;
+
+public class T_fdiv_4 {
+
+    public float run(long a, float b) {
+        return (float)a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_5.j
new file mode 100644
index 0000000..c273a5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fdiv_5.java
+.class public dxc/junit/opcodes/fdiv/jm/T_fdiv_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    fload_2
+    fdiv
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_5.java
new file mode 100644
index 0000000..f93de7b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fdiv.jm;
+
+public class T_fdiv_5 {
+    
+    public float run(float a, float b) {
+        return a/b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/Test_fload.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/Test_fload.java
new file mode 100644
index 0000000..736ebbb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/Test_fload.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fload.jm.T_fload_1;
+import dxc.junit.opcodes.fload.jm.T_fload_1_w;
+import dxc.junit.opcodes.fload.jm.T_fload_2;
+import dxc.junit.opcodes.fload.jm.T_fload_2_w;
+
+public class Test_fload extends DxTestCase {
+
+    /*
+     * NORMAL fload VERSION
+     */
+
+    /**
+     * @title  Test fload 1
+     */
+    public void testN1() {
+        T_fload_1 t = new T_fload_1();
+        assertEquals(2f, t.run());
+    }
+
+    /**
+     * @title  Test fload 255
+     */
+    public void testN2() {
+        T_fload_2 t = new T_fload_2();
+        assertEquals(2f, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload.jm.T_fload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload.jm.T_fload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload.jm.T_fload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload.jm.T_fload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE fload VERSION
+     */
+
+    /**
+     * @title  Test fload 257
+     */
+    public void testN3() {
+        T_fload_1_w t = new T_fload_1_w();
+        assertEquals(2f, t.run());
+    }
+
+    /**
+     * @title  Test fload_w 1
+     */
+    public void testN4() {
+        T_fload_2_w t = new T_fload_2_w();
+        assertEquals(2f, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload.jm.T_fload_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload.jm.T_fload_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload.jm.T_fload_5_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload.jm.T_fload_6_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1.j
new file mode 100644
index 0000000..d48d674
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_1.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()F
+    .limit stack 2
+    .limit locals 6
+    
+    fconst_2
+    fstore 4
+    fconst_1
+    fload 4
+    
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1.java
new file mode 100644
index 0000000..0659eb4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_1 {
+
+    public float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1_w.j
new file mode 100644
index 0000000..5c3e03e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_1_w.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_1_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()F
+    .limit stack 2
+    .limit locals 300
+    
+    fconst_2
+    fstore 257
+    fconst_1
+    fload 257
+    
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1_w.java
new file mode 100644
index 0000000..0a75402
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_1_w {
+
+    public float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2.j
new file mode 100644
index 0000000..affbbcc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_2.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()F
+    .limit stack 2
+    .limit locals 300
+    
+    fconst_2
+    fstore 255
+    fconst_1
+    fload 255
+    
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2.java
new file mode 100644
index 0000000..5f955cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_2 {
+
+      public float run() {
+          return 2f;
+      }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2_w.j
new file mode 100644
index 0000000..8cfd4b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_2_w.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_2_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()F
+    .limit stack 2
+    .limit locals 2
+    
+    fconst_2
+    fstore 1
+    fconst_1
+    fload_w 1
+    
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2_w.java
new file mode 100644
index 0000000..06e678d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_2_w {
+
+      public float run() {
+          return 2f;
+      }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3.j
new file mode 100644
index 0000000..b46e1ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_3.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    fload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3.java
new file mode 100644
index 0000000..4a96c8d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_3 {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3_w.j
new file mode 100644
index 0000000..ca096aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_3_w.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_3_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 300
+
+    fload 300
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3_w.java
new file mode 100644
index 0000000..e097e18
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_3_w {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4.j
new file mode 100644
index 0000000..0fb25c9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_4.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_0
+    
+    fload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4.java
new file mode 100644
index 0000000..07f75b5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_4 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4_w.j
new file mode 100644
index 0000000..d58ae6a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_4_w.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_4_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 300
+
+    dconst_1
+    dstore 260
+    
+    fload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4_w.java
new file mode 100644
index 0000000..8ae2258
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_4_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5.j
new file mode 100644
index 0000000..94dc078
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_5.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_0
+    
+    fload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5.java
new file mode 100644
index 0000000..7f7dc3c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_5 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5_w.j
new file mode 100644
index 0000000..dbffaa5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_5_w.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_5_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 300
+
+    lconst_1
+    lstore 260
+    
+    fload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5_w.java
new file mode 100644
index 0000000..0cabc57
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_5_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6.j
new file mode 100644
index 0000000..b4c0270
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_6.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    fconst_1
+    fstore_0
+    
+    fload 0
+    fload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6.java
new file mode 100644
index 0000000..8ce1234
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_6 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6_w.j
new file mode 100644
index 0000000..32e9795
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_6_w.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_6_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 300
+
+    fconst_1
+    fstore 260
+    
+    fload_w 260
+    fload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6_w.java
new file mode 100644
index 0000000..5f61753
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_6_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/Test_fload_0.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/Test_fload_0.java
new file mode 100644
index 0000000..b796eb7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/Test_fload_0.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fload_0.jm.T_fload_0_1;
+import dxc.junit.opcodes.fload_0.jm.T_fload_0_6;
+
+public class Test_fload_0 extends DxTestCase {
+
+    /**
+     * @title  value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(2f, T_fload_0_1.run());
+    }
+
+    /**
+     * @title equality of fload_<n> and fload <n>
+     */
+    public void testN2() {
+        assertTrue(T_fload_0_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_0.jm.T_fload_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_0.jm.T_fload_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_0.jm.T_fload_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_0.jm.T_fload_0_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_1.j
new file mode 100644
index 0000000..c7b69ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_0_1.java
+.class public dxc/junit/opcodes/fload_0/jm/T_fload_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 1
+    
+    fconst_2
+    fstore_0
+    fconst_1
+    fload_0
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_1.java
new file mode 100644
index 0000000..a577960
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_0.jm;
+
+public class T_fload_0_1 {
+
+    public static float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_2.j
new file mode 100644
index 0000000..6a795e3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_0_2.java
+.class public dxc/junit/opcodes/fload_0/jm/T_fload_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    fload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_2.java
new file mode 100644
index 0000000..482b227
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_0.jm;
+
+public class T_fload_0_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_3.j
new file mode 100644
index 0000000..4b378f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_0_3.java
+.class public dxc/junit/opcodes/fload_0/jm/T_fload_0_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_0
+    
+    fload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_3.java
new file mode 100644
index 0000000..31db2e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_0.jm;
+
+public class T_fload_0_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_4.j
new file mode 100644
index 0000000..23f2597
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_0_4.java
+.class public dxc/junit/opcodes/fload_0/jm/T_fload_0_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_0
+    
+    fload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_4.java
new file mode 100644
index 0000000..c812def
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_0.jm;
+
+public class T_fload_0_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_5.j
new file mode 100644
index 0000000..f767cfd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_0_5.java
+.class public dxc/junit/opcodes/fload_0/jm/T_fload_0_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    fconst_1
+    fstore_0
+    
+    fload_0
+    fload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_5.java
new file mode 100644
index 0000000..98ebafd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_0.jm;
+
+public class T_fload_0_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_6.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_6.j
new file mode 100644
index 0000000..dd42b7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_0_6.java
+.class public dxc/junit/opcodes/fload_0/jm/T_fload_0_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 1
+
+    fconst_2
+    fstore_0
+
+    fload_0
+    fload 0
+    fcmpl 
+    
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_6.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_6.java
new file mode 100644
index 0000000..1a337b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_0.jm;
+
+public class T_fload_0_6 {
+
+    public static boolean run() {
+        float i = 2f;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/Test_fload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/Test_fload_1.java
new file mode 100644
index 0000000..91a6112
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/Test_fload_1.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fload_1.jm.T_fload_1_1;
+import dxc.junit.opcodes.fload_1.jm.T_fload_1_6;
+
+public class Test_fload_1 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(2f, T_fload_1_1.run());
+    }
+
+    /**
+     * @title equality of fload_<n> and fload <n>
+     */
+    public void testN2() {
+        assertTrue(T_fload_1_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title (index must be no greater than the value
+     * of max_locals-1).
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_1.jm.T_fload_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_1.jm.T_fload_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_1.jm.T_fload_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_1.jm.T_fload_1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_1.j
new file mode 100644
index 0000000..93f205e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_1_1.java
+.class public dxc/junit/opcodes/fload_1/jm/T_fload_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 2
+    
+    fconst_2
+    fstore_1
+    fconst_1
+    fload_1
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_1.java
new file mode 100644
index 0000000..7e2f5c4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_1.jm;
+
+public class T_fload_1_1 {
+
+    public static float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_2.j
new file mode 100644
index 0000000..fabb478
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_1_2.java
+.class public dxc/junit/opcodes/fload_1/jm/T_fload_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 1
+
+    fload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_2.java
new file mode 100644
index 0000000..6e54dd8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_1.jm;
+
+public class T_fload_1_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_3.j
new file mode 100644
index 0000000..f28c5bf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_1_3.java
+.class public dxc/junit/opcodes/fload_1/jm/T_fload_1_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_1
+    
+    fload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_3.java
new file mode 100644
index 0000000..10e5e25
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_1.jm;
+
+public class T_fload_1_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_4.j
new file mode 100644
index 0000000..f0154b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_1_4.java
+.class public dxc/junit/opcodes/fload_1/jm/T_fload_1_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_1
+    
+    fload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_4.java
new file mode 100644
index 0000000..cd6f66a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_1.jm;
+
+public class T_fload_1_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_5.j
new file mode 100644
index 0000000..6778df6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_1_5.java
+.class public dxc/junit/opcodes/fload_1/jm/T_fload_1_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    fconst_1
+    fstore_1
+    
+    fload_1
+    fload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_5.java
new file mode 100644
index 0000000..ba47f43
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_1.jm;
+
+public class T_fload_1_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_6.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_6.j
new file mode 100644
index 0000000..8557f82
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_1_6.java
+.class public dxc/junit/opcodes/fload_1/jm/T_fload_1_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 2
+
+    fconst_2
+    fstore_1
+
+    fload_1
+    fload 1
+    fcmpl 
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_6.java
new file mode 100644
index 0000000..31d567b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_1.jm;
+
+public class T_fload_1_6 {
+
+    public static boolean run() {
+        float i = 2f;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/Test_fload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/Test_fload_2.java
new file mode 100644
index 0000000..7a5bb47
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/Test_fload_2.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fload_2.jm.T_fload_2_1;
+import dxc.junit.opcodes.fload_2.jm.T_fload_2_6;
+
+public class Test_fload_2 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(2f, T_fload_2_1.run());
+    }
+
+    /**
+     * @title equality of fload_<n> and fload <n>
+     */
+    public void testN2() {
+        assertTrue(T_fload_2_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title (index must be no greater than the value
+     * of max_locals-1).
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_2.jm.T_fload_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_2.jm.T_fload_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_2.jm.T_fload_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_2.jm.T_fload_2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_1.j
new file mode 100644
index 0000000..e6fcb75
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_2_1.java
+.class public dxc/junit/opcodes/fload_2/jm/T_fload_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 3
+    
+    fconst_2
+    fstore_2
+    fconst_1
+    fload_2
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_1.java
new file mode 100644
index 0000000..c4b1790
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_2.jm;
+
+public class T_fload_2_1 {
+
+    public static float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_2.j
new file mode 100644
index 0000000..1d44d0e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_2_2.java
+.class public dxc/junit/opcodes/fload_2/jm/T_fload_2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    fload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_2.java
new file mode 100644
index 0000000..e86cd01
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_2.jm;
+
+public class T_fload_2_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_3.j
new file mode 100644
index 0000000..4cc8b98
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_2_3.java
+.class public dxc/junit/opcodes/fload_2/jm/T_fload_2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_2
+    
+    fload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_3.java
new file mode 100644
index 0000000..09a7cdf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_2.jm;
+
+public class T_fload_2_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_4.j
new file mode 100644
index 0000000..9a1382d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_2_4.java
+.class public dxc/junit/opcodes/fload_2/jm/T_fload_2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_2
+    
+    fload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_4.java
new file mode 100644
index 0000000..082bc9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_2.jm;
+
+public class T_fload_2_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_5.j
new file mode 100644
index 0000000..8e37b39
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_2_5.java
+.class public dxc/junit/opcodes/fload_2/jm/T_fload_2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 3
+
+    fconst_1
+    fstore_2
+    
+    fload_2
+    fload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_5.java
new file mode 100644
index 0000000..b3dcd24
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_2.jm;
+
+public class T_fload_2_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_6.j
new file mode 100644
index 0000000..85d7c90
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_2_6.java
+.class public dxc/junit/opcodes/fload_2/jm/T_fload_2_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 3
+
+    fconst_2
+    fstore_2
+
+    fload_2
+    fload 2
+    fcmpl 
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_6.java
new file mode 100644
index 0000000..a584e41
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_2.jm;
+
+public class T_fload_2_6 {
+
+    public static boolean run() {
+        float i = 2f;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/Test_fload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/Test_fload_3.java
new file mode 100644
index 0000000..cd8d127
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/Test_fload_3.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fload_3.jm.T_fload_3_1;
+import dxc.junit.opcodes.fload_3.jm.T_fload_3_6;
+
+public class Test_fload_3 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(2f, T_fload_3_1.run());
+    }
+
+    /**
+     * @title equality of fload_<n> and fload <n>
+     */
+    public void testN2() {
+        assertTrue(T_fload_3_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title (index must be no greater than the value
+     * of max_locals-1).
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_3.jm.T_fload_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_3.jm.T_fload_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_3.jm.T_fload_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_3.jm.T_fload_3_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_1.j
new file mode 100644
index 0000000..abe83e0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_3_1.java
+.class public dxc/junit/opcodes/fload_3/jm/T_fload_3_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 4
+    
+    fconst_2
+    fstore_3
+    fconst_1
+    fload_3
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_1.java
new file mode 100644
index 0000000..f4e434b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_3.jm;
+
+public class T_fload_3_1 {
+
+    public static float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_2.j
new file mode 100644
index 0000000..7b06437
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_3_2.java
+.class public dxc/junit/opcodes/fload_3/jm/T_fload_3_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 3
+
+    fload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_2.java
new file mode 100644
index 0000000..896396d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_3.jm;
+
+public class T_fload_3_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_3.j
new file mode 100644
index 0000000..157316a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_3_3.java
+.class public dxc/junit/opcodes/fload_3/jm/T_fload_3_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    dconst_1
+    dstore_3
+    
+    fload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_3.java
new file mode 100644
index 0000000..040faf7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_3.jm;
+
+public class T_fload_3_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_4.j
new file mode 100644
index 0000000..8408f9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_3_4.java
+.class public dxc/junit/opcodes/fload_3/jm/T_fload_3_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    lconst_1
+    lstore_3
+    
+    fload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_4.java
new file mode 100644
index 0000000..240b801
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_3.jm;
+
+public class T_fload_3_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_5.j
new file mode 100644
index 0000000..e99cf7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_3_5.java
+.class public dxc/junit/opcodes/fload_3/jm/T_fload_3_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 4
+
+    fconst_1
+    fstore_3
+    
+    fload_3
+    fload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_5.java
new file mode 100644
index 0000000..c1a7754
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_3.jm;
+
+public class T_fload_3_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_6.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_6.j
new file mode 100644
index 0000000..f61cdc8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fload_3_6.java
+.class public dxc/junit/opcodes/fload_3/jm/T_fload_3_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 4
+
+    fconst_2
+    fstore_3
+
+    fload_3
+    fload 3
+    fcmpl 
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_6.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_6.java
new file mode 100644
index 0000000..8bbff07
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fload_3.jm;
+
+public class T_fload_3_6 {
+
+    public static boolean run() {
+        float i = 2f;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/Test_fmul.java b/tools/dx-tests/src/dxc/junit/opcodes/fmul/Test_fmul.java
new file mode 100644
index 0000000..0bbf1ee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/Test_fmul.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fmul;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fmul.jm.T_fmul_1;
+
+public class Test_fmul extends DxTestCase {
+
+    /**
+     * @title  Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(8.478001f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title  Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(-0f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title  Arguments = -2.7f, -3.14f
+     */
+    public void testN3() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(8.478001f, t.run(-3.14f, -2.7f));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY, 0
+     */
+    public void testB2() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY, 0));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(-0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(+0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB7() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB8() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(-0f, t.run(Float.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fmul.jm.T_fmul_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fmul.jm.T_fmul_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fmul.jm.T_fmul_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fmul.jm.T_fmul_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_1.j
new file mode 100644
index 0000000..474a8c2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fmul_1.java
+.class public dxc/junit/opcodes/fmul/jm/T_fmul_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    fload_2
+    fmul
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_1.java
new file mode 100644
index 0000000..1a12d72
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fmul.jm;
+
+public class T_fmul_1 {
+
+    public float run(float a, float b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_2.j
new file mode 100644
index 0000000..35caf66
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fmul_2.java
+.class public dxc/junit/opcodes/fmul/jm/T_fmul_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    ; fload_2    
+    fmul
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_2.java
new file mode 100644
index 0000000..7927d37
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fmul.jm;
+
+public class T_fmul_2 {
+
+    public float run(float a, float b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_3.j
new file mode 100644
index 0000000..e11cfe1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fmul_3.java
+.class public dxc/junit/opcodes/fmul/jm/T_fmul_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)F
+    .limit stack 3
+    .limit locals 5
+    fload_1
+    dload_2    
+    fmul
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_3.java
new file mode 100644
index 0000000..7474a90
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fmul.jm;
+
+public class T_fmul_3 {
+
+    public float run(float a, double b) {
+        return a*(float)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_4.j
new file mode 100644
index 0000000..1455bb6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fmul_4.java
+.class public dxc/junit/opcodes/fmul/jm/T_fmul_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JF)F
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2f
+    fload_3
+    fmul
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_4.java
new file mode 100644
index 0000000..0e5200b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fmul.jm;
+
+public class T_fmul_4 {
+
+    public float run(long a, float b) {
+        return (float)a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_5.j
new file mode 100644
index 0000000..ce62cc0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fmul_5.java
+.class public dxc/junit/opcodes/fmul/jm/T_fmul_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    fload_2
+    fmul
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_5.java
new file mode 100644
index 0000000..9da82fa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fmul.jm;
+
+public class T_fmul_5 {
+    
+    public float run(float a, float b) {
+        return a*b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/Test_fneg.java b/tools/dx-tests/src/dxc/junit/opcodes/fneg/Test_fneg.java
new file mode 100644
index 0000000..d15f754
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/Test_fneg.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fneg;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fneg.jm.T_fneg_1;
+
+public class Test_fneg extends DxTestCase {
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN1() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(-1f, t.run(1f));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN2() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(1f, t.run(-1f));
+    }
+
+    /**
+     * @title  Argument = +0
+     */
+    public void testN3() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(-0f, t.run(+0f));
+    }
+
+    /**
+     * @title  Argument = -2.7
+     */
+    public void testN4() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(2.7f, t.run(-2.7f));
+    }
+
+    /**
+     * @title  Argument = Float.NaN
+     */
+    public void testB1() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(Float.NaN, t.run(Float.NaN));
+    }
+
+    /**
+     * @title  Argument = Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Argument = Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Argument = Float.MAX_VALUE
+     */
+    public void testB4() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(-3.4028235E38f, t.run(Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Float.MIN
+     */
+    public void testB5() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(-1.4E-45f, t.run(Float.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fneg.jm.T_fneg_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fneg.jm.T_fneg_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fneg.jm.T_fneg_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fneg.jm.T_fneg_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_1.j
new file mode 100644
index 0000000..ee7b958
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ineg_1.java
+.class public dxc/junit/opcodes/fneg/jm/T_fneg_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)F
+    .limit stack 1
+    .limit locals 2
+    fload_1
+    fneg
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_1.java
new file mode 100644
index 0000000..ed652f0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fneg.jm;
+
+public class T_fneg_1 {
+
+    public float run(float d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_2.j
new file mode 100644
index 0000000..3d91051
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_2.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fneg_2.java
+.class public dxc/junit/opcodes/fneg/jm/T_fneg_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)F
+    .limit stack 1
+    .limit locals 2
+    ;fload_1
+    fneg
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_2.java
new file mode 100644
index 0000000..9872e07
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fneg.jm;
+
+public class T_fneg_2 {
+
+    public float run(float d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_3.j
new file mode 100644
index 0000000..0ef20fe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fneg_3.java
+.class public dxc/junit/opcodes/fneg/jm/T_fneg_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)F
+    .limit stack 2
+    .limit locals 3
+    ;fload_1
+    dconst_1
+    fneg
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_3.java
new file mode 100644
index 0000000..8ebcf38
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fneg.jm;
+
+public class T_fneg_3 {
+
+    public float run(float d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_4.j
new file mode 100644
index 0000000..1e8eaad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_4.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fneg_4.java
+.class public dxc/junit/opcodes/fneg/jm/T_fneg_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)F
+    .limit stack 2
+    .limit locals 3
+    ;fload_1
+    lconst_1
+    fneg
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_4.java
new file mode 100644
index 0000000..97504d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fneg.jm;
+
+public class T_fneg_4 {
+
+    public float run(float d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_5.j
new file mode 100644
index 0000000..48e5e3a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fneg_5.java
+.class public dxc/junit/opcodes/fneg/jm/T_fneg_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)F
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    fneg
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_5.java
new file mode 100644
index 0000000..c46a002
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fneg.jm;
+
+public class T_fneg_5 {
+    
+    public float run(float d) {
+        return -d;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/Test_frem.java b/tools/dx-tests/src/dxc/junit/opcodes/frem/Test_frem.java
new file mode 100644
index 0000000..4cf0a68
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/Test_frem.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.frem;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.frem.jm.T_frem_1;
+
+public class Test_frem extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(2.7f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title  Dividend = 0
+     */
+    public void testN2() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(0f, t.run(0, 3.14f));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN3() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(-0.44000006f, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY, -2.7f));
+    }
+
+    /**
+     * @title  Arguments = -2.7f, Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(-2.7f, t.run(-2.7f, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB5() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(Float.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title  Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(0f, t.run(0, -2.7f));
+    }
+
+    /**
+     * @title  Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(Float.NaN, t.run(-2.7f, 0));
+    }
+
+    /**
+     * @title  Arguments = 1, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(0f, t.run(1, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(7.2584893E-10f, t.run(Float.MAX_VALUE, -1E-9f));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.frem.jm.T_frem_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.frem.jm.T_frem_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.frem.jm.T_frem_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.frem.jm.T_frem_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_1.j b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_1.j
new file mode 100644
index 0000000..f8bbda0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_frem_1.java
+.class public dxc/junit/opcodes/frem/jm/T_frem_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    fload_2
+    frem
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_1.java b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_1.java
new file mode 100644
index 0000000..e96b4b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.frem.jm;
+
+public class T_frem_1 {
+
+    public float run(float a, float b) {
+        return a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_2.j b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_2.j
new file mode 100644
index 0000000..80e3e21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_frem_2.java
+.class public dxc/junit/opcodes/frem/jm/T_frem_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    ; fload_2    
+    frem
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_2.java b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_2.java
new file mode 100644
index 0000000..86b1230
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.frem.jm;
+
+public class T_frem_2 {
+
+    public float run(float a, float b) {
+        return a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_3.j b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_3.j
new file mode 100644
index 0000000..0c55f61
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_frem_3.java
+.class public dxc/junit/opcodes/frem/jm/T_frem_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)F
+    .limit stack 3
+    .limit locals 5
+    fload_1
+    dload_2    
+    frem
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_3.java b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_3.java
new file mode 100644
index 0000000..8047356
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.frem.jm;
+
+public class T_frem_3 {
+
+    public float run(float a, double b) {
+        return a%(float)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_4.j b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_4.j
new file mode 100644
index 0000000..d179b19
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_frem_4.java
+.class public dxc/junit/opcodes/frem/jm/T_frem_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JF)F
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2f
+    fload_3
+    frem
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_4.java b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_4.java
new file mode 100644
index 0000000..ff87ad6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.frem.jm;
+
+public class T_frem_4 {
+
+    public float run(long a, float b) {
+        return (float)a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_5.j b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_5.j
new file mode 100644
index 0000000..c82332f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_frem_5.java
+.class public dxc/junit/opcodes/frem/jm/T_frem_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    fload_2
+    frem
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_5.java b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_5.java
new file mode 100644
index 0000000..9f4f055
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.frem.jm;
+
+public class T_frem_5 {
+    
+    public float run(float a, float b) {
+        return a%b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/Test_freturn.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/Test_freturn.java
new file mode 100644
index 0000000..a109dfd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/Test_freturn.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.freturn;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.freturn.jm.T_freturn_1;
+import dxc.junit.opcodes.freturn.jm.T_freturn_6;
+import dxc.junit.opcodes.freturn.jm.T_freturn_7;
+import dxc.junit.opcodes.freturn.jm.T_freturn_8;
+import dxc.junit.opcodes.freturn.jm.T_freturn_9;
+
+public class Test_freturn extends DxTestCase {
+
+    /**
+     * @title  simple
+     */
+    public void testN1() {
+        T_freturn_1 t = new T_freturn_1();
+        assertEquals(123456f, t.run());
+    }
+
+    /**
+     * @title  check that frames are discarded and reinstananted correctly
+     */
+    public void testN2() {
+        T_freturn_6 t = new T_freturn_6();
+        assertEquals(123456f, t.run());
+    }
+
+    /**
+     * @title  check that monitor is released by freturn
+     */
+    public void testN3() {
+        assertTrue(T_freturn_7.execute());
+    }
+
+    /**
+     * @title  Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_freturn_8 t = new T_freturn_8();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Lock structural rule 1 is violated
+     */
+    public void testE2() {
+        T_freturn_9 t = new T_freturn_9();
+        try {
+            assertEquals(1f, t.run());
+            // the JVM spec says that it is optional to implement the structural
+            // lock rules, see JVM spec 8.13 and monitorenter/exit opcodes.
+            System.out.print("dvmvfe:");
+            //fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - void
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.freturn.jm.T_freturn_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.freturn.jm.T_freturn_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.freturn.jm.T_freturn_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.freturn.jm.T_freturn_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.freturn.jm.T_freturn_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.freturn.jm.T_freturn_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_1.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_1.j
new file mode 100644
index 0000000..e194867
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_freturn_1.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    ldc 123456.0f
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_1.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_1.java
new file mode 100644
index 0000000..cbc1490
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_1 {
+
+    public float run() {
+        return 123456f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_10.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_10.j
new file mode 100644
index 0000000..0f73349
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_10.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_freturn_10.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private static test()F
+    .limit stack 1
+    .limit locals 0
+    fconst_1
+    freturn
+.end method
+
+
+
+.method public run()F
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/freturn/jm/T_freturn_10/test()F
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_10.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_10.java
new file mode 100644
index 0000000..caa1933
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_10.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_10 {
+    
+    private static float test()    {
+        return 1f;
+    }
+    
+    public float run() {
+        return test();
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_11.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_11.j
new file mode 100644
index 0000000..8143890
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_11.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_freturn_11.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_11.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_11.java
new file mode 100644
index 0000000..303e939
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_11 {
+    
+    public float run() {
+        return 0f;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_2.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_2.j
new file mode 100644
index 0000000..685f3f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_freturn_2.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    fconst_0
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_2.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_2.java
new file mode 100644
index 0000000..6589925
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_2 {
+
+    public float run() {
+        return 0f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_3.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_3.j
new file mode 100644
index 0000000..b1109da
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_freturn_3.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()D
+    .limit stack 1
+    .limit locals 1
+
+    fconst_0
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_3.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_3.java
new file mode 100644
index 0000000..202091d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_3 {
+
+    public float run() {
+        return 0f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_4.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_4.j
new file mode 100644
index 0000000..7da6dfb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_4.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_freturn_4.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()F
+    .limit stack 1
+    .limit locals 1
+
+    ;fconst_0
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_4.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_4.java
new file mode 100644
index 0000000..e0503e7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_4 {
+
+    public float run() {
+        return 0f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_5.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_5.j
new file mode 100644
index 0000000..21c85b8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_freturn_5.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()F
+    .limit stack 2
+    .limit locals 1
+
+    dconst_0
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_5.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_5.java
new file mode 100644
index 0000000..e5018c9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_5 {
+
+    public float run() {
+        return 0f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_6.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_6.j
new file mode 100644
index 0000000..7e7ba2c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_6.j
@@ -0,0 +1,90 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_freturn_6.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    .limit locals 6
+    .limit stack 6
+    
+    fconst_1
+    fstore_1
+    fconst_2
+    fstore_2
+    ldc 3.0f
+    fstore 3
+    
+    ldc 4.0f
+    
+    invokestatic dxc/junit/opcodes/freturn/jm/T_freturn_6/test()F
+    
+    ldc 4444.0f
+    fcmpl
+    ifne Label1
+    
+    ldc 4.0f
+    fcmpl
+    ifne Label0
+    
+    fload_1
+    fconst_1
+    fcmpl
+    ifne Label0
+    
+    fload_2
+    fconst_2
+    fcmpl
+    ifne Label0
+    
+    fload_3
+    ldc 3.0f
+    fcmpl
+    ifne Label0    
+    
+    ldc 123456.0f
+    freturn
+
+Label1:
+    pop
+Label0:
+    fconst_0
+    freturn
+
+.end method
+
+.method private static test()F
+    .limit locals 4
+    .limit stack 4
+    
+    ldc 1111.0f
+    fstore_1
+    ldc 2222.0f
+    fstore_2
+    ldc 3333.0f
+    fstore_3
+    
+    ldc 5555.0f
+    
+    ldc 4444.0f
+    freturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_6.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_6.java
new file mode 100644
index 0000000..a6fad35
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_6.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_6 {
+
+    public float run() {
+        return 123456f;
+    }
+    
+    private static float test() {
+        float a = 1111f;
+        float b = 2222f;
+        float c = 3333f;
+        return 4444f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_7.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_7.j
new file mode 100644
index 0000000..afa8119
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_7.j
@@ -0,0 +1,166 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_freturn_7.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_7
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field  value F
+.field  failed Z
+
+.method public <init>()V
+    .limit stack 3
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    fconst_0
+    putfield dxc.junit.opcodes.freturn.jm.T_freturn_7.value F
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.freturn.jm.T_freturn_7.failed Z
+
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+   
+    iconst_0
+    istore_1
+
+Label4:
+    iload_1
+    sipush 1000
+    if_icmpge Label3
+
+    aload_0
+    invokespecial dxc/junit/opcodes/freturn/jm/T_freturn_7/test()F
+    pop
+
+    iinc 1 1
+
+    goto Label4
+
+
+Label3:
+    return
+
+.end method
+
+
+
+.method private synchronized test()F
+    .limit stack 3
+    .limit locals 2
+    
+.line 16
+    aload_0
+    dup
+    getfield dxc.junit.opcodes.freturn.jm.T_freturn_7.value F
+    dup
+    fstore_1
+
+    fconst_1
+    fadd
+    putfield dxc.junit.opcodes.freturn.jm.T_freturn_7.value F
+
+    fload_1
+    fconst_1
+    fadd
+    fstore_1
+
+    invokestatic java/lang/Thread/yield()V
+
+    fload_1
+    aload_0
+    getfield dxc.junit.opcodes.freturn.jm.T_freturn_7.value F
+    fcmpl
+    ifeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.freturn.jm.T_freturn_7.failed Z
+
+Label0:
+    fload_1
+    freturn
+.end method
+
+
+
+.method public static execute()Z
+    .limit stack 3
+    .limit locals 4
+
+    new dxc/junit/opcodes/freturn/jm/T_freturn_7
+    dup
+    invokespecial dxc/junit/opcodes/freturn/jm/T_freturn_7/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:            ; exception handler
+    astore_3
+    goto Label3
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.freturn.jm.T_freturn_7.value F
+    ldc 2000.0f
+    fcmpl
+    ifne Label3
+
+    aload_0
+    getfield dxc.junit.opcodes.freturn.jm.T_freturn_7.failed Z
+    ifne Label3
+
+    iconst_1
+    ireturn
+
+Label3:
+    iconst_0
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_7.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_7.java
new file mode 100644
index 0000000..af11cd1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_7.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_7 implements Runnable {
+    public final static int CNT = 1000;
+    float value = 0;
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    private synchronized float test()    {
+        value++;
+        float c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+        return c;
+    }
+    
+    public static boolean execute() {
+        T_freturn_7 test = new T_freturn_7();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_8.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_8.j
new file mode 100644
index 0000000..e1e6f78
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_8.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_freturn_8.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private synchronized test()F
+    .limit stack 1
+    aload_0
+    monitorexit
+       fconst_0
+    freturn
+.end method
+
+
+
+.method public run()Z
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial dxc/junit/opcodes/freturn/jm/T_freturn_8/test()F
+    pop
+
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_8.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_8.java
new file mode 100644
index 0000000..230931d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_8.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_8 {
+    
+    private synchronized float test() {
+        return 0f;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_9.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_9.j
new file mode 100644
index 0000000..e492ac2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_freturn_9.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()F
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    monitorenter
+
+    fconst_1
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_9.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_9.java
new file mode 100644
index 0000000..d32b8a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_9 {
+    
+    public float run() {
+        return 1f;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/Test_fstore.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/Test_fstore.java
new file mode 100644
index 0000000..1c074f0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/Test_fstore.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fstore.jm.T_fstore_1;
+import dxc.junit.opcodes.fstore.jm.T_fstore_1_w;
+import dxc.junit.opcodes.fstore.jm.T_fstore_5;
+import dxc.junit.opcodes.fstore.jm.T_fstore_5_w;
+
+public class Test_fstore extends DxTestCase {
+
+    /*
+     * NORMAL fstore VERSION
+     */
+
+    /**
+     * @title  fstore 0
+     */
+    public void testN1() {
+        assertEquals(2f, T_fstore_1.run());
+    }
+
+    /**
+     * @title  fstore 255
+     */
+    public void testN2() {
+        assertEquals(2f, T_fstore_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1)
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore.jm.T_fstore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore.jm.T_fstore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore.jm.T_fstore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE fstore VERSION
+     */
+
+    /**
+     * @title  fstore_w 0
+     */
+    public void testN3() {
+        assertEquals(2f, T_fstore_1_w.run());
+    }
+
+    /**
+     * @title  fstore 257
+     */
+    public void testN4() {
+        assertEquals(2f, T_fstore_5_w.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore.jm.T_fstore_2_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore.jm.T_fstore_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore.jm.T_fstore_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1.j
new file mode 100644
index 0000000..ddbbeaa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_1.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 1
+    
+    fconst_2
+    fstore 0
+    fconst_1
+    fload 0
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1.java
new file mode 100644
index 0000000..546394b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_1 {
+
+    public static float run() {
+        return 2;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1_w.j
new file mode 100644
index 0000000..f3a2c2b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_1_w.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_1_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 1
+    
+    fconst_2
+    fstore_w 0
+    fconst_1
+    fload 0
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1_w.java
new file mode 100644
index 0000000..cba5c82
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_1_w {
+
+    public static float run() {
+        return 2;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2.j
new file mode 100644
index 0000000..6eb7c7d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_2.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    fstore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2.java
new file mode 100644
index 0000000..c535d34
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2_w.j
new file mode 100644
index 0000000..20933b4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_2_w.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_2_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    fstore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2_w.java
new file mode 100644
index 0000000..0664597
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_2_w {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3.j
new file mode 100644
index 0000000..75bc312
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_3.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    fstore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3.java
new file mode 100644
index 0000000..9fe4d51
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3_w.j
new file mode 100644
index 0000000..a401cf0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_3_w.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_3_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    fstore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3_w.java
new file mode 100644
index 0000000..7b32dfe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_3_w {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4.j
new file mode 100644
index 0000000..7a7ad92
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_4.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    fstore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4.java
new file mode 100644
index 0000000..97b94bc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4_w.j
new file mode 100644
index 0000000..afbd8e4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_4_w.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_4_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    fstore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4_w.java
new file mode 100644
index 0000000..0e658e0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_4_w {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5.j
new file mode 100644
index 0000000..818c41f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_5.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 300
+    
+    fconst_2
+    fstore 255
+    fconst_1
+    fload 255
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5.java
new file mode 100644
index 0000000..9b76887
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_5 {
+
+    public static float run() {
+        return 2;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5_w.j
new file mode 100644
index 0000000..ccc6f4c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_5_w.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_5_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 300
+    
+    fconst_2
+    fstore_w 257
+    fconst_1
+    fload 257
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5_w.java
new file mode 100644
index 0000000..119ad9c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_5_w {
+
+    public static float run() {
+        return 2;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/Test_fstore_0.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/Test_fstore_0.java
new file mode 100644
index 0000000..e512d4e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/Test_fstore_0.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fstore_0.jm.T_fstore_0_1;
+import dxc.junit.opcodes.fstore_0.jm.T_fstore_0_5;
+
+public class Test_fstore_0 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals(2f, T_fstore_0_1.run());
+    }
+
+    /**
+     * @title equality of fstore_<n> and fstore <n>
+     */
+    public void testN2() {
+        assertTrue(T_fstore_0_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_0.jm.T_fstore_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_0.jm.T_fstore_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_0.jm.T_fstore_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_1.j
new file mode 100644
index 0000000..288c55e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_0_1.java
+.class public dxc/junit/opcodes/fstore_0/jm/T_fstore_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 1
+    
+    fconst_2
+    fstore_0
+    fconst_1
+    fload_0
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_1.java
new file mode 100644
index 0000000..a098e2c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_0.jm;
+
+public class T_fstore_0_1 {
+
+    public static float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_2.j
new file mode 100644
index 0000000..85b0dd8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_0_2.java
+.class public dxc/junit/opcodes/fstore_0/jm/T_fstore_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    fstore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_2.java
new file mode 100644
index 0000000..60d6932
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_0.jm;
+
+public class T_fstore_0_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_3.j
new file mode 100644
index 0000000..7f0a48a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_0_3.java
+.class public dxc/junit/opcodes/fstore_0/jm/T_fstore_0_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    fstore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_3.java
new file mode 100644
index 0000000..28ae501
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_0.jm;
+
+public class T_fstore_0_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_4.j
new file mode 100644
index 0000000..daeb302
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_0_4.java
+.class public dxc/junit/opcodes/fstore_0/jm/T_fstore_0_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    fstore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_4.java
new file mode 100644
index 0000000..9ddb0f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_0.jm;
+
+public class T_fstore_0_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_5.j
new file mode 100644
index 0000000..bc5488f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_0_5.java
+.class public dxc/junit/opcodes/fstore_0/jm/T_fstore_0_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 2
+
+    fconst_2
+    fstore_0
+    fload_0
+
+    fconst_2
+    fstore 0
+    fload_0
+    
+    fcmpl
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_5.java
new file mode 100644
index 0000000..caf98c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_0.jm;
+
+public class T_fstore_0_5 {
+
+    public static boolean run() {
+        float i = 2;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/Test_fstore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/Test_fstore_1.java
new file mode 100644
index 0000000..1cd1865
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/Test_fstore_1.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fstore_1.jm.T_fstore_1_1;
+import dxc.junit.opcodes.fstore_1.jm.T_fstore_1_5;
+
+public class Test_fstore_1 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals(2f, T_fstore_1_1.run());
+    }
+
+    /**
+     * @title equality of fstore_<n> and fstore <n>
+     */
+    public void testN2() {
+        assertTrue(T_fstore_1_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_1.jm.T_fstore_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_1.jm.T_fstore_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_1.jm.T_fstore_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_1.j
new file mode 100644
index 0000000..4f5183e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_1_1.java
+.class public dxc/junit/opcodes/fstore_1/jm/T_fstore_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 2
+    
+    fconst_2
+    fstore_1
+    fconst_1
+    fload_1
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_1.java
new file mode 100644
index 0000000..1f479a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_1.jm;
+
+public class T_fstore_1_1 {
+
+    public static float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_2.j
new file mode 100644
index 0000000..438637a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_1_2.java
+.class public dxc/junit/opcodes/fstore_1/jm/T_fstore_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 1
+
+    fstore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_2.java
new file mode 100644
index 0000000..612dead
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_1.jm;
+
+public class T_fstore_1_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_3.j
new file mode 100644
index 0000000..17895ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_1_3.java
+.class public dxc/junit/opcodes/fstore_1/jm/T_fstore_1_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    fstore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_3.java
new file mode 100644
index 0000000..f202684
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_1.jm;
+
+public class T_fstore_1_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_4.j
new file mode 100644
index 0000000..54b2fce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_1_4.java
+.class public dxc/junit/opcodes/fstore_1/jm/T_fstore_1_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    fstore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_4.java
new file mode 100644
index 0000000..2aac2d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_1.jm;
+
+public class T_fstore_1_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_5.j
new file mode 100644
index 0000000..8f3a4cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_1_5.java
+.class public dxc/junit/opcodes/fstore_1/jm/T_fstore_1_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 2
+
+    fconst_2
+    fstore_1
+    fload_1
+
+    fconst_2
+    fstore 1
+    fload_1
+    
+    fcmpl
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_5.java
new file mode 100644
index 0000000..f7aacea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_1.jm;
+
+public class T_fstore_1_5 {
+
+    public static boolean run() {
+        float i = 2;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/Test_fstore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/Test_fstore_2.java
new file mode 100644
index 0000000..02956aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/Test_fstore_2.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fstore_2.jm.T_fstore_2_1;
+import dxc.junit.opcodes.fstore_2.jm.T_fstore_2_5;
+
+public class Test_fstore_2 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals(2f, T_fstore_2_1.run());
+    }
+
+    /**
+     * @title  equality of fstore_<n> and fstore <n>
+     */
+    public void testN2() {
+        assertTrue(T_fstore_2_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_2.jm.T_fstore_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_2.jm.T_fstore_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_2.jm.T_fstore_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_1.j
new file mode 100644
index 0000000..544718b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_2_1.java
+.class public dxc/junit/opcodes/fstore_2/jm/T_fstore_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 3
+    
+    fconst_2
+    fstore_2
+    fconst_1
+    fload_2
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_1.java
new file mode 100644
index 0000000..af93f51
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_2.jm;
+
+public class T_fstore_2_1 {
+
+    public static float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_2.j
new file mode 100644
index 0000000..9ef2c53
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_2_2.java
+.class public dxc/junit/opcodes/fstore_2/jm/T_fstore_2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    fstore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_2.java
new file mode 100644
index 0000000..ad6e139
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_2.jm;
+
+public class T_fstore_2_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_3.j
new file mode 100644
index 0000000..931c9cd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_2_3.java
+.class public dxc/junit/opcodes/fstore_2/jm/T_fstore_2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    fstore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_3.java
new file mode 100644
index 0000000..fef360e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_2.jm;
+
+public class T_fstore_2_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_4.j
new file mode 100644
index 0000000..1a28180
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_2_4.java
+.class public dxc/junit/opcodes/fstore_2/jm/T_fstore_2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    fstore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_4.java
new file mode 100644
index 0000000..b164180
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_2.jm;
+
+public class T_fstore_2_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_5.j
new file mode 100644
index 0000000..51e53ec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_2_5.java
+.class public dxc/junit/opcodes/fstore_2/jm/T_fstore_2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 3
+
+    fconst_2
+    fstore_2
+    fload_2
+
+    fconst_2
+    fstore 2
+    fload_2
+    
+    fcmpl
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_5.java
new file mode 100644
index 0000000..28956f2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_2.jm;
+
+public class T_fstore_2_5 {
+
+    public static boolean run() {
+        float i = 2;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/Test_fstore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/Test_fstore_3.java
new file mode 100644
index 0000000..ef6d0a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/Test_fstore_3.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fstore_3.jm.T_fstore_3_1;
+import dxc.junit.opcodes.fstore_3.jm.T_fstore_3_5;
+
+public class Test_fstore_3 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals(2f, T_fstore_3_1.run());
+    }
+
+    /**
+     * @title equality of fstore_<n> and fstore <n>
+     */
+    public void testN2() {
+        assertTrue(T_fstore_3_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_3.jm.T_fstore_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_3.jm.T_fstore_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_3.jm.T_fstore_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_1.j
new file mode 100644
index 0000000..4aba4f0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_3_1.java
+.class public dxc/junit/opcodes/fstore_3/jm/T_fstore_3_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 4
+    
+    fconst_2
+    fstore_3
+    fconst_1
+    fload_3
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_1.java
new file mode 100644
index 0000000..5d763a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_3.jm;
+
+public class T_fstore_3_1 {
+
+    public static float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_2.j
new file mode 100644
index 0000000..554ba64
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_3_2.java
+.class public dxc/junit/opcodes/fstore_3/jm/T_fstore_3_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 3
+
+    fstore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_2.java
new file mode 100644
index 0000000..54afaa2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_3.jm;
+
+public class T_fstore_3_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_3.j
new file mode 100644
index 0000000..3b3c30e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_3_3.java
+.class public dxc/junit/opcodes/fstore_3/jm/T_fstore_3_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    dconst_1
+    fstore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_3.java
new file mode 100644
index 0000000..17de90e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_3.jm;
+
+public class T_fstore_3_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_4.j
new file mode 100644
index 0000000..05eb66e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_3_4.java
+.class public dxc/junit/opcodes/fstore_3/jm/T_fstore_3_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    lconst_1
+    fstore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_4.java
new file mode 100644
index 0000000..145fc22
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_3.jm;
+
+public class T_fstore_3_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_5.j
new file mode 100644
index 0000000..2904edd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fstore_3_5.java
+.class public dxc/junit/opcodes/fstore_3/jm/T_fstore_3_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 4
+
+    fconst_2
+    fstore_3
+    fload_3
+
+    fconst_2
+    fstore 3
+    fload_3
+    
+    fcmpl
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_5.java
new file mode 100644
index 0000000..1bf3a26
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fstore_3.jm;
+
+public class T_fstore_3_5 {
+
+    public static boolean run() {
+        float i = 2;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/Test_fsub.java b/tools/dx-tests/src/dxc/junit/opcodes/fsub/Test_fsub.java
new file mode 100644
index 0000000..897cd58
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/Test_fsub.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fsub;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fsub.jm.T_fsub_1;
+
+public class Test_fsub extends DxTestCase {
+
+    /**
+     * @title  Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(-0.44000006f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title  Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(3.14f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title Arguments = -3.14f, -2.7f
+     */
+    public void testN3() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(-0.44000006f, t.run(-3.14f, -2.7f));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB4() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title  Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(+0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = +0f, +0f
+     */
+    public void testB7() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(+0f, t.run(+0f, +0f));
+    }
+
+    /**
+     * @title  Arguments = 2.7f, 2.7f
+     */
+    public void testB8() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(0f, t.run(2.7f, 2.7f));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB9() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(0f, t.run(Float.MAX_VALUE, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB10() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(0f, t.run(Float.MIN_VALUE, 1.4E-45f));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, -Float.MAX_VALUE
+     */
+    public void testB11() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                -3.402823E+38F));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fsub.jm.T_fsub_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fsub.jm.T_fsub_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fsub.jm.T_fsub_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fsub.jm.T_fsub_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_1.j
new file mode 100644
index 0000000..649dee4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fsub_1.java
+.class public dxc/junit/opcodes/fsub/jm/T_fsub_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    fload_2
+    fsub
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_1.java
new file mode 100644
index 0000000..2038dfa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fsub.jm;
+
+public class T_fsub_1 {
+
+    public float run(float a, float b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_2.j
new file mode 100644
index 0000000..e4afbf1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fsub_2.java
+.class public dxc/junit/opcodes/fsub/jm/T_fsub_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    ; fload_2    
+    fsub
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_2.java
new file mode 100644
index 0000000..7971658
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fsub.jm;
+
+public class T_fsub_2 {
+
+    public float run(float a, float b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_3.j
new file mode 100644
index 0000000..02633be
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fsub_3.java
+.class public dxc/junit/opcodes/fsub/jm/T_fsub_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)F
+    .limit stack 3
+    .limit locals 5
+    fload_1
+    dload_2    
+    fsub
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_3.java
new file mode 100644
index 0000000..9cdbf97
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fsub.jm;
+
+public class T_fsub_3 {
+
+    public float run(float a, double b) {
+        return a-(float)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_4.j
new file mode 100644
index 0000000..47c7ba9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fsub_4.java
+.class public dxc/junit/opcodes/fsub/jm/T_fsub_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JF)F
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2f
+    fload_3
+    fsub
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_4.java
new file mode 100644
index 0000000..86de9bc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fsub.jm;
+
+public class T_fsub_4 {
+
+    public float run(long a, float b) {
+        return (float)a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_5.j
new file mode 100644
index 0000000..26bb805
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fsub_5.java
+.class public dxc/junit/opcodes/fsub/jm/T_fsub_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    fload_2
+    fsub
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_5.java
new file mode 100644
index 0000000..7687dc3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.fsub.jm;
+
+public class T_fsub_5 {
+    
+    public float run(float a, float b) {
+        return a-b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/Test_getfield.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/Test_getfield.java
new file mode 100644
index 0000000..39f925f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/Test_getfield.java
@@ -0,0 +1,285 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.getfield.jm.T_getfield_1;
+import dxc.junit.opcodes.getfield.jm.T_getfield_10;
+import dxc.junit.opcodes.getfield.jm.T_getfield_11;
+import dxc.junit.opcodes.getfield.jm.T_getfield_12;
+import dxc.junit.opcodes.getfield.jm.T_getfield_14;
+import dxc.junit.opcodes.getfield.jm.T_getfield_16;
+import dxc.junit.opcodes.getfield.jm.T_getfield_17;
+import dxc.junit.opcodes.getfield.jm.T_getfield_2;
+import dxc.junit.opcodes.getfield.jm.T_getfield_5;
+import dxc.junit.opcodes.getfield.jm.T_getfield_6;
+import dxc.junit.opcodes.getfield.jm.T_getfield_7;
+import dxc.junit.opcodes.getfield.jm.T_getfield_8;
+import dxc.junit.opcodes.getfield.jm.T_getfield_9;
+import dxc.junit.opcodes.getfield.jm.TestStubs;
+
+public class Test_getfield extends DxTestCase {
+    private int TestStubField = 123;
+    protected int TestStubFieldP = 0;
+
+    private int privateInt = 456;
+    
+    /**
+     * @title  type - int
+     */
+    public void testN1() {
+        T_getfield_1 t = new T_getfield_1();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title  type - double
+     */
+    public void testN2() {
+        T_getfield_2 t = new T_getfield_2();
+        assertEquals(123d, t.run());
+    }
+
+    /**
+     * @title  access protected field from subclass
+     */
+    public void testN3() {
+     // @uses dxc.junit.opcodes.getfield.jm.T_getfield_1
+        T_getfield_11 t = new T_getfield_11();
+        assertEquals(10, t.run());
+    }
+
+    /**
+     * @title  assignment compatible references
+     */
+    public void testN4() {
+        // @uses dxc.junit.opcodes.getfield.jm.TChild        
+        // @uses dxc.junit.opcodes.getfield.jm.TSuper        
+        T_getfield_14 t = new T_getfield_14();
+        assertEquals(0, t.run().compareTo("abc"));
+    }
+
+    /**
+     * @title  attempt to access static field
+     */
+    public void testE1() {
+        // @uses dxc.junit.opcodes.getstatic.jm.T_getstatic_1
+        try {
+            T_getfield_5 t = new T_getfield_5();
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        } 
+    }
+
+    /**
+     * @title  attempt to access of non-accessible private field
+     */
+    public void testE2() {
+        try {
+            T_getfield_6 t = new T_getfield_6();
+            int res = t.run();
+            System.out.println("res:"+res);
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoClassDefFoundError
+     */
+    public void testE3() {
+        try {
+            // need to include the constructor call into the try-catch block,
+            // since class resolution can take place at any time.
+            // (not only when t.run() is called
+            T_getfield_7 t = new T_getfield_7();
+            t.run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoSuchFieldError
+     */
+    public void testE4() {
+        try {
+            T_getfield_8 t = new T_getfield_8();
+            t.run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  attempt to get int from float field
+     */
+    public void testE5() {
+        try {
+            T_getfield_10 t = new T_getfield_10();
+            t.run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE6() {
+        T_getfield_9 t = new T_getfield_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    //FIXME: "fail" commented out temporarily - check
+    /**
+     * @title  attempt to read superclass' private field from subclass
+     * in same package
+     * 
+     * FIXME: this seems to be a bug in JDK 1.5?
+     */
+    public void testE7() {
+        // @uses dxc.junit.opcodes.getfield.jm.T_getfield_1
+        try {
+            T_getfield_12 t = new T_getfield_12();
+            //fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  attempt to read private field of a class which was passed
+     * as argument
+     */
+    public void testE9() {
+        // @uses dxc.junit.opcodes.getfield.jm.TestStubs
+        try {
+            T_getfield_17 t = new T_getfield_17();
+            t.run(new dxc.junit.opcodes.getfield.jm.TestStubs());
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    
+
+    /**
+     * @title  attempt to access of non-accessible protected field
+     */
+    public void testE8() {
+        try {
+            T_getfield_16 t = new T_getfield_16();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.getfield.jm.T_getfield_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.getfield.jm.T_getfield_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.12
+     * @title constant pool type
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.getfield.jm.T_getfield_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.16
+     * @title assignment incompatible references
+     */
+    public void testVFE4() {
+        // @uses dxc.junit.opcodes.getfield.jm.TChild        
+        // @uses dxc.junit.opcodes.getfield.jm.TSuper        
+        try {
+            Class.forName("dxc.junit.opcodes.getfield.jm.T_getfield_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_1.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_1.j
new file mode 100644
index 0000000..a669ff4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_1.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getfield_1.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_1
+.super java/lang/Object
+
+.field public i1 I
+.field protected p1 I
+.field private pvt1 I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_5
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_1.i1 I
+
+    aload_0
+    bipush 10
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_1.p1 I
+
+    aload_0
+    bipush 20
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_1.pvt1 I
+
+    return
+
+.end method
+
+
+
+.method public run()I
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_1.i1 I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_1.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_1.java
new file mode 100644
index 0000000..2d0b750
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_1 {
+    public int i1 = 5;
+    protected int p1 = 10;
+    private int pvt1 = 20;
+    
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_10.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_10.j
new file mode 100644
index 0000000..0790ed3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_10.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getfield_10.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_10
+.super java/lang/Object
+
+.field public i1 F
+
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0    
+    fconst_1
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_10.i1 F
+    
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_10.i1N I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_10.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_10.java
new file mode 100644
index 0000000..ba7aa3d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_10 {
+    public int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_11.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_11.j
new file mode 100644
index 0000000..6f16f55
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_11.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getfield_11.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_11
+.super dxc/junit/opcodes/getfield/jm/T_getfield_1
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/getfield/jm/T_getfield_1/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_1.p1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_11.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_11.java
new file mode 100644
index 0000000..1fefaa2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_11 extends T_getfield_1 {
+
+    public int run(){
+        return p1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_12.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_12.j
new file mode 100644
index 0000000..5c535f4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_12.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getfield_12.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_12
+.super dxc/junit/opcodes/getfield/jm/T_getfield_1
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/getfield/jm/T_getfield_1/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+
+    aload_0    
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_1.pvt1 I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_12.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_12.java
new file mode 100644
index 0000000..6d92fce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_12 extends T_getfield_1 {
+
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.cfh b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.cfh
new file mode 100644
index 0000000..6ab7906
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.cfh
@@ -0,0 +1,234 @@
+//@class:dxc/junit/opcodes/getfield/jm/T_getfield_13
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0013
+// .  .  
+   00 13 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 19, h: 0001: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 29, len 5, h: 0002: float{0x4048f5c3 / 3.14}
+    // .  @  H  .  .  
+       04 40 48 f5 c3 
+    // parsed:, offset 34, len 9, h: 0003: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 43, len 3, h: 0004: type{java.lang.Object}
+    // .  .  .  
+       07 00 01 
+    // parsed:, offset 46, len 5, h: 0005: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 03 00 06 
+    // parsed:, offset 51, len 6, h: 0006: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 57, len 7, h: 0007: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 64, len 4, h: 0008: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 68, len 13, h: 0009: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 81, len 3, h: 000a: type{dxc.junit.opcodes.getfield.jm.T_getfield_13}
+    // .  .  .  
+       07 00 11 
+    // parsed:, offset 84, len 5, h: 000b: nat{i1:I}
+    // .  .  .  .  .  
+       0c 00 0f 00 08 
+    // parsed:, offset 89, len 6, h: 000c: utf8{"()I"}
+    // .  .  .  (  )  I  
+       01 00 03 28 29 49 
+    // parsed:, offset 95, len 6, h: 000d: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 101, len 5, h: 000e: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 04 00 05 
+    // parsed:, offset 106, len 5, h: 000f: utf8{"i1"}
+    // .  .  .  i  1  
+       01 00 02 69 31 
+    // parsed:, offset 111, len 21, h: 0010: utf8{"T_getfield_13.java"}
+    // .  .  .  T  _  g  e  t  f  i  e  l  d  _  1  3  .  j  a  v  a  
+       01 00 12 54 5f 67 65 74 66 69 65 6c 64 5f 31 33 2e 6a 61 76 61 
+    // parsed:, offset 132, len 46, h: 0011: utf8{"dxc/junit/opcodes/getfield/jm/T_getfield_13"}
+    // .  .  +  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  g  e  t  f  i  e  l  d  /  j  m  /  T  _  g  e  t  f  i  e  l  d  _  1  3  
+       01 00 2b 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 67 65 74 66 69 65 6c 64 2f 6a 6d 2f 54 5f 67 65 74 66 69 65 6c 64 5f 31 33 
+    // parsed:, offset 178, len 5, h: 0012: field{dxc.junit.opcodes.getfield.jm.T_getfield_13.i1:I}
+    // .  .  .  .  .  
+       09 00 0a 00 0b 
+// parsed:, offset 183, len 0, h: end constant_pool
+// parsed:, offset 183, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 185, len 2, h: this_class: type{dxc.junit.opcodes.getfield.jm.T_getfield_13}
+// .  .  
+   00 0a 
+// parsed:, offset 187, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 04 
+// parsed:, offset 189, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 191, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:i1, offset 193, len:91,desc: I
+// parsed:, offset 193, len 0, h:  fields[0]: 
+    // parsed:, offset 193, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 2, h: name: i1
+    // .  .  
+       00 0f 
+    // parsed:, offset 197, len 2, h: descriptor: I
+    // .  .  
+       00 08 
+    // parsed:, offset 199, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 201, len 0, h: end fields[0] 
+// ========== end-ParseMember:i1, desc: I
+// parsed:, offset 201, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 203, len:81,desc: ()V
+// parsed:, offset 203, len 0, h:  methods[0]: 
+    // parsed:, offset 203, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 205, len 2, h: name: <init>
+    // .  .  
+       00 03 
+    // parsed:, offset 207, len 2, h: descriptor: ()V
+    // .  .  
+       00 06 
+    // parsed:, offset 209, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 211, len 0, h:  attributes[0]: 
+        // parsed:, offset 211, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 213, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 217, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 219, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 221, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 0e 
+        // parsed:, offset 4, len 1, h: 0004: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 5, len 1, h: 0005: iconst_5 // #+05
+        // .  
+           08 
+        // parsed:, offset 6, len 3, h: 0006: putfield field{dxc.junit.opcodes.getfield.jm.T_getfield_13.i1:I}
+        // .  .  .  
+           b5 00 12 
+        // parsed:, offset 9, len 1, h: 0009: return
+        // .  
+           b1 
+        // parsed:, offset 10, len 1, h: 000a: return
+        // .  
+           b1 
+        // parsed:, offset 236, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 238, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 240, len:44,desc: ()I
+// parsed:, offset 240, len 0, h:  methods[1]: 
+    // parsed:, offset 240, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 242, len 2, h: name: run
+    // .  .  
+       00 0d 
+    // parsed:, offset 244, len 2, h: descriptor: ()I
+    // .  .  
+       00 0c 
+    // parsed:, offset 246, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 248, len 0, h:  attributes[0]: 
+        // parsed:, offset 248, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 250, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 254, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 256, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 258, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 2, h: 0000: ldc #4048f5c3 // 3.14
+        // .  .  
+           12 02 
+        // parsed:, offset 2, len 1, h: 0002: pop
+        // W  
+           57 
+        // parsed:, offset 3, len 1, h: 0003: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 4, len 3, h: 0004: getfield field{dxc.junit.opcodes.getfield.jm.T_getfield_13.i1:I}
+        // .  .  .  
+//@mod           b4 00 12 
+           b4 00 02
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 270, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 272, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 274, len 0, h: end attributes[0] 
+// parsed:, offset 274, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()I
+// parsed:, offset 274, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 276, len 0, h:  attributes[0]: 
+    // parsed:, offset 276, len 2, h: name: SourceFile
+    // .  .  
+       00 09 
+    // parsed:, offset 278, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 282, len 2, h: source: utf8{"T_getfield_13.java"}
+    // .  .  
+       00 10 
+// parsed:, offset 284, len 0, h: end attributes[0] 
+// parsed:, offset 284, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.j
new file mode 100644
index 0000000..de3b816
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.j
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getfield_13.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_13
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    
+    aload_0
+    iconst_5
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_13.i1 I
+    return
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+    
+    ldc 3.14
+    pop
+
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_13.i1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.java
new file mode 100644
index 0000000..3087341
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_13 {
+
+    public int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_14.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_14.j
new file mode 100644
index 0000000..1b8b562
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_14.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getfield_14.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_14
+.super java/lang/Object
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/getfield/jm/TChild
+    dup
+    invokespecial dxc/junit/opcodes/getfield/jm/TChild/<init>()V
+    astore_1
+
+    aload_1
+    getfield dxc.junit.opcodes.getfield.jm.TSuper.s Ljava/lang/String;
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_14.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_14.java
new file mode 100644
index 0000000..ec06180
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_14.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_14 {
+
+    public String run() {
+        //TChild c = new TChild();
+        return null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_15.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_15.j
new file mode 100644
index 0000000..5c5d5a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_15.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getfield_15.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_15
+.super java/lang/Object
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/getfield/jm/TSuper
+    dup
+    invokespecial dxc/junit/opcodes/getfield/jm/TSuper/<init>()V
+    astore_1
+
+    aload_1
+    getfield dxc.junit.opcodes.getfield.jm.TChild.o Ljava/lang/Object;
+
+    areturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_15.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_15.java
new file mode 100644
index 0000000..7424e02
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_15.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_15 {
+
+    public Object run() {
+        TChild s = new TChild();
+        return s.o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_16.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_16.j
new file mode 100644
index 0000000..9c17d05
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_16.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getfield_16.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_16
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+
+    new dxc/junit/opcodes/getfield/Test_getfield
+    dup
+    invokespecial dxc/junit/opcodes/getfield/Test_getfield/<init>()V
+
+    getfield dxc.junit.opcodes.getfield.Test_getfield.TestStubFieldP I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_16.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_16.java
new file mode 100644
index 0000000..b7114d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_16 {
+
+    public int run() {
+        return -99;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_17.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_17.j
new file mode 100644
index 0000000..2ef0aa4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_17.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getfield_17.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_17
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ldxc/junit/opcodes/getfield/jm/TestStubs;)I
+    .limit locals 2
+    aload_1
+    getfield dxc.junit.opcodes.getfield.jm.TestStubs.privateInt I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_17.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_17.java
new file mode 100644
index 0000000..95d4f75
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_17.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+
+public class T_getfield_17 {
+
+    public int run(TestStubs t) {
+        return -99;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_2.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_2.j
new file mode 100644
index 0000000..9082c3f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_2.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getfield_2.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_2
+.super java/lang/Object
+
+.field public val D
+
+.method public <init>()V
+    .limit stack 3
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0    
+    ldc2_w 123.0
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_2.val D
+
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 3
+    .limit locals 1
+
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_2.val D
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_2.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_2.java
new file mode 100644
index 0000000..36c976a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_2 {
+
+    public double val = 123.0d;
+    
+    public double run() {
+        return val;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_3.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_3.j
new file mode 100644
index 0000000..12c523e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_3.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getfield_3.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_3
+.super java/lang/Object
+
+.field public val D
+
+.method public <init>()V
+    .limit stack 3
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    
+    aload_0
+    ldc2_w 123.0
+    putstatic dxc.junit.opcodes.getfield.jm.T_getfield_3.val D
+
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_3.val D
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_3.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_3.java
new file mode 100644
index 0000000..7b91429
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_3.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_3 {
+
+    public double val = 123.0d;
+    
+    public double run() {
+        return val;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.cfh
new file mode 100644
index 0000000..e6a6403
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.cfh
@@ -0,0 +1,225 @@
+//@class:dxc/junit/opcodes/getfield/jm/T_getfield_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"()I"}
+    // .  .  .  (  )  I  
+       01 00 03 28 29 49 
+    // parsed:, offset 62, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 68, len 20, h: 0007: utf8{"T_getfield_4.java"}
+    // .  .  .  T  _  g  e  t  f  i  e  l  d  _  4  .  j  a  v  a  
+       01 00 11 54 5f 67 65 74 66 69 65 6c 64 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 88, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0e 
+    // parsed:, offset 93, len 5, h: 0009: utf8{"i1"}
+    // .  .  .  i  1  
+       01 00 02 69 31 
+    // parsed:, offset 98, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 105, len 45, h: 000b: utf8{"dxc/junit/opcodes/getfield/jm/T_getfield_4"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  g  e  t  f  i  e  l  d  /  j  m  /  T  _  g  e  t  f  i  e  l  d  _  4  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 67 65 74 66 69 65 6c 64 2f 6a 6d 2f 54 5f 67 65 74 66 69 65 6c 64 5f 34 
+    // parsed:, offset 150, len 3, h: 000c: type{dxc.junit.opcodes.getfield.jm.T_getfield_4}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 153, len 5, h: 000d: field{dxc.junit.opcodes.getfield.jm.T_getfield_4.i1:I}
+    // .  .  .  .  .  
+       09 00 0c 00 11 
+    // parsed:, offset 158, len 6, h: 000e: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 164, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 167, len 4, h: 0010: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 171, len 5, h: 0011: nat{i1:I}
+    // .  .  .  .  .  
+       0c 00 09 00 10 
+// parsed:, offset 176, len 0, h: end constant_pool
+// parsed:, offset 176, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 178, len 2, h: this_class: type{dxc.junit.opcodes.getfield.jm.T_getfield_4}
+// .  .  
+   00 0c 
+// parsed:, offset 180, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 182, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 184, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:i1, offset 186, len:88,desc: I
+// parsed:, offset 186, len 0, h:  fields[0]: 
+    // parsed:, offset 186, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 188, len 2, h: name: i1
+    // .  .  
+       00 09 
+    // parsed:, offset 190, len 2, h: descriptor: I
+    // .  .  
+       00 10 
+    // parsed:, offset 192, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 194, len 0, h: end fields[0] 
+// ========== end-ParseMember:i1, desc: I
+// parsed:, offset 194, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 196, len:78,desc: ()V
+// parsed:, offset 196, len 0, h:  methods[0]: 
+    // parsed:, offset 196, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 198, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 200, len 2, h: descriptor: ()V
+    // .  .  
+       00 0e 
+    // parsed:, offset 202, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 204, len 0, h:  attributes[0]: 
+        // parsed:, offset 204, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 206, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 210, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 212, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 214, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 5, len 1, h: 0005: iconst_5 // #+05
+        // .  
+           08 
+        // parsed:, offset 6, len 3, h: 0006: putfield field{dxc.junit.opcodes.getfield.jm.T_getfield_4.i1:I}
+        // .  .  .  
+           b5 00 0d 
+        // parsed:, offset 9, len 1, h: 0009: return
+        // .  
+           b1 
+        // parsed:, offset 10, len 1, h: 000a: return
+        // .  
+           b1 
+        // parsed:, offset 229, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 231, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 233, len 0, h: end attributes[0] 
+// parsed:, offset 233, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 233, len:41,desc: ()I
+// parsed:, offset 233, len 0, h:  methods[1]: 
+    // parsed:, offset 233, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 235, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 237, len 2, h: descriptor: ()I
+    // .  .  
+       00 05 
+    // parsed:, offset 239, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 241, len 0, h:  attributes[0]: 
+        // parsed:, offset 241, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 243, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 247, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 249, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 251, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: getfield field{dxc.junit.opcodes.getfield.jm.T_getfield_4.i1:I}
+        // .  .  .  
+//@mod           b4 00 0d 
+           b4 01 0d 
+        // parsed:, offset 4, len 1, h: 0004: ireturn
+        // .  
+           ac 
+        // parsed:, offset 260, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 262, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 264, len 0, h: end attributes[0] 
+// parsed:, offset 264, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()I
+// parsed:, offset 264, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 266, len 0, h:  attributes[0]: 
+    // parsed:, offset 266, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 268, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 272, len 2, h: source: utf8{"T_getfield_4.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 274, len 0, h: end attributes[0] 
+// parsed:, offset 274, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.j
new file mode 100644
index 0000000..815e7a8b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getfield_4.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_4
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    
+    aload_0
+    iconst_5
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_4.i1 I
+    return
+    
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_4.i1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.java
new file mode 100644
index 0000000..2c9c301
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_4 {
+
+    public int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_5.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_5.j
new file mode 100644
index 0000000..172f791
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_5.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getfield_5.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_5
+.super java/lang/Object
+
+.field public static i1 I
+
+.method static <clinit>()V
+    .limit stack 1
+    .limit locals 0
+
+    iconst_5
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_1.i1 I
+    
+    return
+.end method
+
+.method public <init>()V
+    .limit stack 2
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_5.i1 I
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_5.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_5.java
new file mode 100644
index 0000000..34ca783
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_5 {
+
+    public static int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_6.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_6.j
new file mode 100644
index 0000000..dcf9a08
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getfield_6.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+
+    new dxc/junit/opcodes/getfield/Test_getfield
+    dup
+    invokespecial dxc/junit/opcodes/getfield/Test_getfield/<init>()V
+
+    getfield dxc.junit.opcodes.getfield.Test_getfield.TestStubField I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_6.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_6.java
new file mode 100644
index 0000000..07ab1b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_6 {
+
+    public int run() {
+        return -99;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_7.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_7.j
new file mode 100644
index 0000000..ebffccc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_7.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getfield_7.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_7
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    .limit stack 2
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    aload_0
+    iconst_5
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_7.i1 I
+    return
+.end method
+
+.method public run()I
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_7abc.i1 I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_7.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_7.java
new file mode 100644
index 0000000..ad0b3a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_7 {
+    public int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_8.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_8.j
new file mode 100644
index 0000000..1d3e3d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_8.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getfield_8.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_8
+.super java/lang/Object
+
+.field public i1 I
+
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    
+    aload_0
+    iconst_5
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_8.i1 I
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+    
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_8.i1N I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_8.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_8.java
new file mode 100644
index 0000000..884d068
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_8 {
+    public int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_9.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_9.j
new file mode 100644
index 0000000..b2fd59d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_9.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getfield_9.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_9
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0    
+    iconst_5
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_9.i1 I
+    
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+;    aload_0
+    aconst_null
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_9.i1 I
+
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_9.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_9.java
new file mode 100644
index 0000000..f2868db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_9 {
+    public int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/TestStubs.java
new file mode 100644
index 0000000..09b654f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/TestStubs.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+
+
+class TSuper {
+    public String s = "abc";
+}
+
+class TChild extends TSuper {
+    public Object o = null;    
+}
+
+public class TestStubs {
+    private int privateInt = 456;
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/TestStubs.java
new file mode 100644
index 0000000..b681d91
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/TestStubs.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getstatic;
+
+public class TestStubs {
+    private static int TestStubField = 50;
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/Test_getstatic.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/Test_getstatic.java
new file mode 100644
index 0000000..290cc0e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/Test_getstatic.java
@@ -0,0 +1,209 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getstatic;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_1;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_10;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_11;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_12;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_2;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_5;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_6;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_7;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_8;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_9;
+
+public class Test_getstatic extends DxTestCase {
+    
+    /**
+     * @title  type - int
+     */
+    public void testN1() {
+        T_getstatic_1 t = new T_getstatic_1();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title  type - double
+     */
+    public void testN2() {
+        T_getstatic_2 t = new T_getstatic_2();
+        assertEquals(123d, t.run());
+    }
+
+    /**
+     * @title  access protected field from subclass
+     */
+    public void testN3() {
+        // @uses dxc.junit.opcodes.getstatic.jm.T_getstatic_1
+        T_getstatic_11 t = new T_getstatic_11();
+        assertEquals(10, t.run());
+    }
+
+    /**
+     * @title  attempt to access non-static field
+     */
+    public void testE1() {
+        T_getstatic_5 t = new T_getstatic_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  attempt to access of non-accessible field
+     */
+    public void testE2() {
+        // @uses dxc.junit.opcodes.getstatic.TestStubs        
+        try {
+            T_getstatic_6 t = new T_getstatic_6();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoClassDefFoundError
+     */
+    public void testE3() {
+        try {
+            T_getstatic_7 t = new T_getstatic_7();
+            t.run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoSuchFieldError
+     */
+    public void testE4() {
+        try {
+               T_getstatic_8 t = new T_getstatic_8();
+            t.run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  attempt to get int from float field
+     */
+    public void testE5() {
+        try {
+            T_getstatic_10 t = new T_getstatic_10();
+            t.run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  initialization of referenced class throws exception
+     */
+    public void testE6() {
+        // @uses dxc.junit.opcodes.getstatic.jm.StubInitError
+        T_getstatic_9 t = new T_getstatic_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    //  FIXME: "fail" commented out temporarily - check
+    /**
+     * @title  attempt to read superclass' private field from subclass
+     * 
+     * FIXME: is this a JVM bug?
+     */
+    public void testE7() {
+        // @uses dxc.junit.opcodes.getstatic.jm.T_getstatic_1
+        try {
+            T_getstatic_12 t = new T_getstatic_12();
+            t.run();
+            //fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.getstatic.jm.T_getstatic_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.getstatic.jm.T_getstatic_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.12
+     * @title constant pool type
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.getstatic.jm.T_getstatic_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_1.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_1.j
new file mode 100644
index 0000000..3143fda
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_1.j
@@ -0,0 +1,60 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getstatic_1.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_1
+.super java/lang/Object
+
+.field public static i1 I
+.field protected static p1 I
+.field private static pvt1 I
+
+.method static <clinit>()V
+    .limit stack 1
+    .limit locals 0
+
+    iconst_5
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_1.i1 I
+    
+    ldc 10
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_1.p1 I
+    
+    ldc 20
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_1.pvt1 I
+    return
+
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_1.i1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_1.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_1.java
new file mode 100644
index 0000000..052182e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_1 {
+    public static int i1 = 5;
+    protected static int p1 = 10;
+    private static int pvt1 = 20;
+    
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_10.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_10.j
new file mode 100644
index 0000000..29880ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_10.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getstatic_10.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_10
+.super java/lang/Object
+
+.field public static i1 F
+
+.method static <clinit>()V
+    .limit stack 1
+    .limit locals 0
+
+    fconst_1
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_10.i1 F
+    return
+
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_10.i1N I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_10.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_10.java
new file mode 100644
index 0000000..0dda175
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_10 {
+    public static int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_11.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_11.j
new file mode 100644
index 0000000..aaa565b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_11.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getstatic_11.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_11
+.super dxc/junit/opcodes/getstatic/jm/T_getstatic_1
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/getstatic/jm/T_getstatic_1/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_1.p1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_11.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_11.java
new file mode 100644
index 0000000..25923d4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_11 extends T_getstatic_1 {
+
+    public int run(){
+        return p1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_12.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_12.j
new file mode 100644
index 0000000..72385f8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_12.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getstatic_12.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_12
+.super dxc/junit/opcodes/getstatic/jm/T_getstatic_1
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/getstatic/jm/T_getstatic_1/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_1.pvt1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_12.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_12.java
new file mode 100644
index 0000000..ee091a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_12 extends T_getstatic_1 {
+
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.cfh b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.cfh
new file mode 100644
index 0000000..92ad194
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.cfh
@@ -0,0 +1,270 @@
+//@class:dxc/junit/opcodes/getstatic/jm/T_getstatic_13
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0014
+// .  .  
+   00 14 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 19, h: 0001: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 29, len 5, h: 0002: float{0x4048f5c3 / 3.14}
+    // .  @  H  .  .  
+       04 40 48 f5 c3 
+    // parsed:, offset 34, len 9, h: 0003: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 43, len 3, h: 0004: type{java.lang.Object}
+    // .  .  .  
+       07 00 01 
+    // parsed:, offset 46, len 5, h: 0005: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 03 00 07 
+    // parsed:, offset 51, len 11, h: 0006: utf8{"<clinit>"}
+    // .  .  .  <  c  l  i  n  i  t  >  
+       01 00 08 3c 63 6c 69 6e 69 74 3e 
+    // parsed:, offset 62, len 6, h: 0007: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 68, len 5, h: 0008: field{dxc.junit.opcodes.getstatic.jm.T_getstatic_13.i1:I}
+    // .  .  .  .  .  
+       09 00 11 00 0d 
+    // parsed:, offset 73, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 80, len 13, h: 000a: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 93, len 4, h: 000b: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 97, len 48, h: 000c: utf8{"dxc/junit/opcodes/getstatic/jm/T_getstatic_13"}
+    // .  .  -  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  g  e  t  s  t  a  t  i  c  /  j  m  /  T  _  g  e  t  s  t  a  t  i  c  _  1  3  
+       01 00 2d 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 67 65 74 73 74 61 74 69 63 2f 6a 6d 2f 54 5f 67 65 74 73 74 61 74 69 63 5f 31 33 
+    // parsed:, offset 145, len 5, h: 000d: nat{i1:I}
+    // .  .  .  .  .  
+       0c 00 12 00 0b 
+    // parsed:, offset 150, len 6, h: 000e: utf8{"()I"}
+    // .  .  .  (  )  I  
+       01 00 03 28 29 49 
+    // parsed:, offset 156, len 6, h: 000f: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 162, len 5, h: 0010: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 04 00 05 
+    // parsed:, offset 167, len 3, h: 0011: type{dxc.junit.opcodes.getstatic.jm.T_getstatic_13}
+    // .  .  .  
+       07 00 0c 
+    // parsed:, offset 170, len 5, h: 0012: utf8{"i1"}
+    // .  .  .  i  1  
+       01 00 02 69 31 
+    // parsed:, offset 175, len 22, h: 0013: utf8{"T_getstatic_13.java"}
+    // .  .  .  T  _  g  e  t  s  t  a  t  i  c  _  1  3  .  j  a  v  a  
+       01 00 13 54 5f 67 65 74 73 74 61 74 69 63 5f 31 33 2e 6a 61 76 61 
+// parsed:, offset 197, len 0, h: end constant_pool
+// parsed:, offset 197, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 199, len 2, h: this_class: type{dxc.junit.opcodes.getstatic.jm.T_getstatic_13}
+// .  .  
+   00 11 
+// parsed:, offset 201, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 04 
+// parsed:, offset 203, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 205, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:i1, offset 207, len:115,desc: I
+// parsed:, offset 207, len 0, h:  fields[0]: 
+    // parsed:, offset 207, len 2, h: access_flags: public|static
+    // .  .  
+       00 09 
+    // parsed:, offset 209, len 2, h: name: i1
+    // .  .  
+       00 12 
+    // parsed:, offset 211, len 2, h: descriptor: I
+    // .  .  
+       00 0b 
+    // parsed:, offset 213, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 215, len 0, h: end fields[0] 
+// ========== end-ParseMember:i1, desc: I
+// parsed:, offset 215, len 2, h: methods_count: 0003
+// .  .  
+   00 03 
+// ========== start-ParseMember:<clinit>, offset 217, len:105,desc: ()V
+// parsed:, offset 217, len 0, h:  methods[0]: 
+    // parsed:, offset 217, len 2, h: access_flags: static
+    // .  .  
+       00 08 
+    // parsed:, offset 219, len 2, h: name: <clinit>
+    // .  .  
+       00 06 
+    // parsed:, offset 221, len 2, h: descriptor: ()V
+    // .  .  
+       00 07 
+    // parsed:, offset 223, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 225, len 0, h:  attributes[0]: 
+        // parsed:, offset 225, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 227, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 231, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 233, len 2, h: max_locals: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 235, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: iconst_5 // #+05
+        // .  
+           08 
+        // parsed:, offset 1, len 3, h: 0001: putstatic field{dxc.junit.opcodes.getstatic.jm.T_getstatic_13.i1:I}
+        // .  .  .  
+           b3 00 08 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 244, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 246, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 248, len 0, h: end attributes[0] 
+// parsed:, offset 248, len 0, h: end methods[0] 
+// ========== end-ParseMember:<clinit>, desc: ()V
+// ========== start-ParseMember:<init>, offset 248, len:74,desc: ()V
+// parsed:, offset 248, len 0, h:  methods[1]: 
+    // parsed:, offset 248, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 250, len 2, h: name: <init>
+    // .  .  
+       00 03 
+    // parsed:, offset 252, len 2, h: descriptor: ()V
+    // .  .  
+       00 07 
+    // parsed:, offset 254, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 256, len 0, h:  attributes[0]: 
+        // parsed:, offset 256, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 258, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 262, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 264, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 266, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 10 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 275, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 277, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 279, len 0, h: end attributes[0] 
+// parsed:, offset 279, len 0, h: end methods[1] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 279, len:43,desc: ()I
+// parsed:, offset 279, len 0, h:  methods[2]: 
+    // parsed:, offset 279, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 281, len 2, h: name: run
+    // .  .  
+       00 0f 
+    // parsed:, offset 283, len 2, h: descriptor: ()I
+    // .  .  
+       00 0e 
+    // parsed:, offset 285, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 287, len 0, h:  attributes[0]: 
+        // parsed:, offset 287, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 289, len 4, h: length: 00000013
+        // .  .  .  .  
+           00 00 00 13 
+        // parsed:, offset 293, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 295, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 297, len 4, h: code_length: 00000007
+        // .  .  .  .  
+           00 00 00 07 
+        // parsed:, offset 0, len 2, h: 0000: ldc #4048f5c3 // 3.14
+        // .  .  
+           12 02 
+        // parsed:, offset 2, len 1, h: 0002: pop
+        // W  
+           57 
+        // parsed:, offset 3, len 3, h: 0003: getstatic field{dxc.junit.opcodes.getstatic.jm.T_getstatic_13.i1:I}
+        // .  .  .  
+//@mod           b2 00 08 
+           b2 00 02 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 308, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 310, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 312, len 0, h: end attributes[0] 
+// parsed:, offset 312, len 0, h: end methods[2] 
+// ========== end-ParseMember:run, desc: ()I
+// parsed:, offset 312, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 314, len 0, h:  attributes[0]: 
+    // parsed:, offset 314, len 2, h: name: SourceFile
+    // .  .  
+       00 0a 
+    // parsed:, offset 316, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 320, len 2, h: source: utf8{"T_getstatic_13.java"}
+    // .  .  
+       00 13 
+// parsed:, offset 322, len 0, h: end attributes[0] 
+// parsed:, offset 322, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.j
new file mode 100644
index 0000000..7d3769a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.j
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getstatic_13.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_13
+.super java/lang/Object
+
+.field public static i1 I
+
+.method static <clinit>()V
+    .limit stack 1
+    .limit locals 0
+
+    iconst_5
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_13.i1 I
+    return
+
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+    
+    ldc 3.14
+    pop
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_13.i1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.java
new file mode 100644
index 0000000..37f5811
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_13 {
+
+    public static int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_2.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_2.j
new file mode 100644
index 0000000..dcd4322
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_2.j
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getstatic_2.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_2
+.super java/lang/Object
+
+.field public static val D
+
+.method static <clinit>()V
+    .limit stack 2
+    .limit locals 0
+
+    ldc2_w 123.0
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_2.val D
+
+    return
+.end method
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 2
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_2.val D
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_2.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_2.java
new file mode 100644
index 0000000..f9f2d23
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_2 {
+
+    public static double val = 123.0d;
+    
+    public double run() {
+        return val;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_3.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_3.j
new file mode 100644
index 0000000..cb47889
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_3.j
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getstatic_3.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_3
+.super java/lang/Object
+
+.field public static val D
+
+.method static <clinit>()V
+    .limit stack 2
+    .limit locals 0
+
+    ldc2_w 123.0
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_3.val D
+
+    return
+.end method
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_3.val D
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_3.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_3.java
new file mode 100644
index 0000000..98d1f15
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_3.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_3 {
+
+    public static double val = 123.0d;
+    
+    public double run() {
+        return val;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.cfh
new file mode 100644
index 0000000..b384bf3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.cfh
@@ -0,0 +1,261 @@
+//@class:dxc/junit/opcodes/getstatic/jm/T_getstatic_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0013
+// .  .  
+   00 13 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: nat{i1:I}
+    // .  .  .  .  .  
+       0c 00 11 00 0c 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 9, h: 0003: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 43, len 47, h: 0004: utf8{"dxc/junit/opcodes/getstatic/jm/T_getstatic_4"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  g  e  t  s  t  a  t  i  c  /  j  m  /  T  _  g  e  t  s  t  a  t  i  c  _  4  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 67 65 74 73 74 61 74 69 63 2f 6a 6d 2f 54 5f 67 65 74 73 74 61 74 69 63 5f 34 
+    // parsed:, offset 90, len 3, h: 0005: type{dxc.junit.opcodes.getstatic.jm.T_getstatic_4}
+    // .  .  .  
+       07 00 04 
+    // parsed:, offset 93, len 6, h: 0006: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 99, len 7, h: 0007: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 106, len 11, h: 0008: utf8{"<clinit>"}
+    // .  .  .  <  c  l  i  n  i  t  >  
+       01 00 08 3c 63 6c 69 6e 69 74 3e 
+    // parsed:, offset 117, len 13, h: 0009: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 130, len 5, h: 000a: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 03 00 06 
+    // parsed:, offset 135, len 3, h: 000b: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 138, len 4, h: 000c: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 142, len 6, h: 000d: utf8{"()I"}
+    // .  .  .  (  )  I  
+       01 00 03 28 29 49 
+    // parsed:, offset 148, len 6, h: 000e: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 154, len 5, h: 000f: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0b 00 0a 
+    // parsed:, offset 159, len 5, h: 0010: field{dxc.junit.opcodes.getstatic.jm.T_getstatic_4.i1:I}
+    // .  .  .  .  .  
+       09 00 05 00 01 
+    // parsed:, offset 164, len 5, h: 0011: utf8{"i1"}
+    // .  .  .  i  1  
+       01 00 02 69 31 
+    // parsed:, offset 169, len 21, h: 0012: utf8{"T_getstatic_4.java"}
+    // .  .  .  T  _  g  e  t  s  t  a  t  i  c  _  4  .  j  a  v  a  
+       01 00 12 54 5f 67 65 74 73 74 61 74 69 63 5f 34 2e 6a 61 76 61 
+// parsed:, offset 190, len 0, h: end constant_pool
+// parsed:, offset 190, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 192, len 2, h: this_class: type{dxc.junit.opcodes.getstatic.jm.T_getstatic_4}
+// .  .  
+   00 05 
+// parsed:, offset 194, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0b 
+// parsed:, offset 196, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 198, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:i1, offset 200, len:112,desc: I
+// parsed:, offset 200, len 0, h:  fields[0]: 
+    // parsed:, offset 200, len 2, h: access_flags: public|static
+    // .  .  
+       00 09 
+    // parsed:, offset 202, len 2, h: name: i1
+    // .  .  
+       00 11 
+    // parsed:, offset 204, len 2, h: descriptor: I
+    // .  .  
+       00 0c 
+    // parsed:, offset 206, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 208, len 0, h: end fields[0] 
+// ========== end-ParseMember:i1, desc: I
+// parsed:, offset 208, len 2, h: methods_count: 0003
+// .  .  
+   00 03 
+// ========== start-ParseMember:<clinit>, offset 210, len:102,desc: ()V
+// parsed:, offset 210, len 0, h:  methods[0]: 
+    // parsed:, offset 210, len 2, h: access_flags: static
+    // .  .  
+       00 08 
+    // parsed:, offset 212, len 2, h: name: <clinit>
+    // .  .  
+       00 08 
+    // parsed:, offset 214, len 2, h: descriptor: ()V
+    // .  .  
+       00 06 
+    // parsed:, offset 216, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 218, len 0, h:  attributes[0]: 
+        // parsed:, offset 218, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 220, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 224, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 2, h: max_locals: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 228, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: iconst_5 // #+05
+        // .  
+           08 
+        // parsed:, offset 1, len 3, h: 0001: putstatic field{dxc.junit.opcodes.getstatic.jm.T_getstatic_4.i1:I}
+        // .  .  .  
+           b3 00 10 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 237, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 239, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 241, len 0, h: end attributes[0] 
+// parsed:, offset 241, len 0, h: end methods[0] 
+// ========== end-ParseMember:<clinit>, desc: ()V
+// ========== start-ParseMember:<init>, offset 241, len:71,desc: ()V
+// parsed:, offset 241, len 0, h:  methods[1]: 
+    // parsed:, offset 241, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 243, len 2, h: name: <init>
+    // .  .  
+       00 03 
+    // parsed:, offset 245, len 2, h: descriptor: ()V
+    // .  .  
+       00 06 
+    // parsed:, offset 247, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 249, len 0, h:  attributes[0]: 
+        // parsed:, offset 249, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 251, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 255, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 257, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 259, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 0f 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 268, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 270, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 272, len 0, h: end attributes[0] 
+// parsed:, offset 272, len 0, h: end methods[1] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 272, len:40,desc: ()I
+// parsed:, offset 272, len 0, h:  methods[2]: 
+    // parsed:, offset 272, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 274, len 2, h: name: run
+    // .  .  
+       00 0e 
+    // parsed:, offset 276, len 2, h: descriptor: ()I
+    // .  .  
+       00 0d 
+    // parsed:, offset 278, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 280, len 0, h:  attributes[0]: 
+        // parsed:, offset 280, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 282, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 286, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 288, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 290, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 3, h: 0000: getstatic field{dxc.junit.opcodes.getstatic.jm.T_getstatic_4.i1:I}
+        // .  .  .  
+//@mod           b2 00 10 
+           b2 01 10 
+        // parsed:, offset 3, len 1, h: 0003: ireturn
+        // .  
+           ac 
+        // parsed:, offset 298, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 300, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 302, len 0, h: end attributes[0] 
+// parsed:, offset 302, len 0, h: end methods[2] 
+// ========== end-ParseMember:run, desc: ()I
+// parsed:, offset 302, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 304, len 0, h:  attributes[0]: 
+    // parsed:, offset 304, len 2, h: name: SourceFile
+    // .  .  
+       00 09 
+    // parsed:, offset 306, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 310, len 2, h: source: utf8{"T_getstatic_4.java"}
+    // .  .  
+       00 12 
+// parsed:, offset 312, len 0, h: end attributes[0] 
+// parsed:, offset 312, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.j
new file mode 100644
index 0000000..349b217
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getstatic_4.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_4
+.super java/lang/Object
+
+.field public static i1 I
+
+.method static <clinit>()V
+    .limit stack 1
+    .limit locals 0
+
+    iconst_5
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_4.i1 I
+    return
+
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_4.i1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.java
new file mode 100644
index 0000000..2fa815d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_4 {
+
+    public static int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_5.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_5.j
new file mode 100644
index 0000000..0f26e28
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_5.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getstatic_5.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_5
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    .limit stack 2
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_5
+    putfield dxc.junit.opcodes.getstatic.jm.T_getstatic_5.i1 I
+
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_5.i1 I
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_5.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_5.java
new file mode 100644
index 0000000..d183ca4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_5 {
+
+    public int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_6.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_6.j
new file mode 100644
index 0000000..ba60eb9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_6.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getstatic_6.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    getstatic dxc.junit.opcodes.getstatic.TestStubs.TestStubField I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_6.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_6.java
new file mode 100644
index 0000000..746d6a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_6 {
+
+    public int run() {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_7.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_7.j
new file mode 100644
index 0000000..ecb55ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_7.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getstatic_7.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_7
+.super java/lang/Object
+
+.field public static i1 I
+
+.method static <clinit>()V
+    .limit stack 1
+    .limit locals 0
+
+    iconst_5
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_7.i1 I
+    return
+
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_71.i1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_7.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_7.java
new file mode 100644
index 0000000..362759e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_7 {
+    public static int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_8.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_8.j
new file mode 100644
index 0000000..5391bed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_8.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getstatic_8.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_8
+.super java/lang/Object
+
+.field public static i1 I
+
+.method static <clinit>()V
+    .limit stack 1
+    .limit locals 0
+
+    iconst_5
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_8.i1 I
+    return
+
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_8.i1N I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_8.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_8.java
new file mode 100644
index 0000000..d187e34
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_8 {
+    public static int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_9.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_9.j
new file mode 100644
index 0000000..f7a7c9f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_9.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_getstatic_9.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.StubInitError.value I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_9.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_9.java
new file mode 100644
index 0000000..e569935
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_9 {
+    
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/TestStubs.java
new file mode 100644
index 0000000..97c647f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+
+class StubInitError{
+    public static int value = 5 / 0;
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/Test_goto_w.java b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/Test_goto_w.java
new file mode 100644
index 0000000..4cac33d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/Test_goto_w.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.goto_w;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.goto_w.jm.T_goto_w_1;
+import dxc.junit.opcodes.goto_w.jm.T_goto_w_5;
+
+public class Test_goto_w extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_goto_w_1 t = new T_goto_w_1();
+        assertEquals(0, t.run(20));
+    }
+
+    /**
+     * @title normal test
+     */
+    public void testN2() {
+        T_goto_w_1 t = new T_goto_w_1();
+        assertEquals(-20, t.run(-20));
+    }
+
+    /**
+     * @title  negative offset
+     */
+    public void testN3() {
+        T_goto_w_5 t = new T_goto_w_5();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target is inside instruction
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.goto_w.jm.T_goto_w_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.goto_w.jm.T_goto_w_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.goto_w.jm.T_goto_w_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_1.j b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_1.j
new file mode 100644
index 0000000..e7b623b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_1.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_w_1.java
+.class public dxc/junit/opcodes/goto_w/jm/T_goto_w_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    goto_w Label0
+
+    Label1:
+    iinc 1 -1
+
+    Label0:
+    iload_1
+    ifgt Label1
+
+    iload_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_1.java b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_1.java
new file mode 100644
index 0000000..d0a8e94
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.goto_w.jm;
+
+public class T_goto_w_1 {
+
+    public int run(int a) {
+        while (a > 0) {
+            a--;
+        }
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.cfh b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.cfh
new file mode 100644
index 0000000..4abb7c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.cfh
@@ -0,0 +1,193 @@
+//@class:dxc/junit/opcodes/goto_w/jm/T_goto_w_2
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000f
+// .  .  
+   00 0f 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 3, h: 0004: string{"a"}
+    // .  .  .  
+       08 00 0c 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 18, h: 0006: utf8{"T_goto_w_2.java"}
+    // .  .  .  T  _  g  o  t  o  _  w  _  2  .  j  a  v  a  
+       01 00 0f 54 5f 67 6f 74 6f 5f 77 5f 32 2e 6a 61 76 61 
+    // parsed:, offset 77, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 83, len 3, h: 0008: type{dxc.junit.opcodes.goto_w.jm.T_goto_w_2}
+    // .  .  .  
+       07 00 0e 
+    // parsed:, offset 86, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 91, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 98, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 104, len 4, h: 000c: utf8{"a"}
+    // .  .  .  a  
+       01 00 01 61 
+    // parsed:, offset 108, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 111, len 41, h: 000e: utf8{"dxc/junit/opcodes/goto_w/jm/T_goto_w_2"}
+    // .  .  &  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  g  o  t  o  _  w  /  j  m  /  T  _  g  o  t  o  _  w  _  2  
+       01 00 26 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 67 6f 74 6f 5f 77 2f 6a 6d 2f 54 5f 67 6f 74 6f 5f 77 5f 32 
+// parsed:, offset 152, len 0, h: end constant_pool
+// parsed:, offset 152, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 154, len 2, h: this_class: type{dxc.junit.opcodes.goto_w.jm.T_goto_w_2}
+// .  .  
+   00 08 
+// parsed:, offset 156, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 158, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 160, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 162, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 164, len:76,desc: ()V
+// parsed:, offset 164, len 0, h:  methods[0]: 
+    // parsed:, offset 164, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 168, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 170, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 172, len 0, h:  attributes[0]: 
+        // parsed:, offset 172, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 174, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 178, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 180, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 182, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 191, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 193, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 195, len 0, h: end attributes[0] 
+// parsed:, offset 195, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 195, len:45,desc: ()V
+// parsed:, offset 195, len 0, h:  methods[1]: 
+    // parsed:, offset 195, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 199, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 201, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 203, len 0, h:  attributes[0]: 
+        // parsed:, offset 203, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 205, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 209, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 211, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 213, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 5, h: 0000: goto_w 00000006
+        // .  .  .  .  .  
+//@mod:    c8 00 00 00 06 
+// we jump to the parameter of a byte code (was: ldc, now: string "a"), so this 
+// must be rejected by the verifier  
+           c8 00 00 00 07 
+        // parsed:, offset 5, len 1, h: 0005: return
+        // .  
+           b1 
+        // parsed:, offset 6, len 2, h: 0006: ldc string{"a"}
+        // .  .  
+           12 04 
+        // parsed:, offset 8, len 1, h: 0008: return
+        // .  
+           b1 
+        // parsed:, offset 226, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 228, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 230, len 0, h: end attributes[0] 
+// parsed:, offset 230, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 230, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 232, len 0, h:  attributes[0]: 
+    // parsed:, offset 232, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 234, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 238, len 2, h: source: utf8{"T_goto_w_2.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.j b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.j
new file mode 100644
index 0000000..d2c8771
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_w_2.java
+.class public dxc/junit/opcodes/goto_w/jm/T_goto_w_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    goto_w Label0
+    return
+Label0:    
+    ldc "a"
+    return
+.end method
+
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.java b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.java
new file mode 100644
index 0000000..89e57ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.goto_w.jm;
+
+public class T_goto_w_2 {
+
+    public void run() {
+        String a = "a";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.cfh
new file mode 100644
index 0000000..4a45a9c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.cfh
@@ -0,0 +1,191 @@
+//@class:dxc/junit/opcodes/goto_w/jm/T_goto_w_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000f
+// .  .  
+   00 0f 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 3, h: 0004: string{"a"}
+    // .  .  .  
+       08 00 0c 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 65, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 70, len 3, h: 0008: type{dxc.junit.opcodes.goto_w.jm.T_goto_w_3}
+    // .  .  .  
+       07 00 0e 
+    // parsed:, offset 73, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 80, len 18, h: 000a: utf8{"T_goto_w_3.java"}
+    // .  .  .  T  _  g  o  t  o  _  w  _  3  .  j  a  v  a  
+       01 00 0f 54 5f 67 6f 74 6f 5f 77 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 98, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 104, len 4, h: 000c: utf8{"a"}
+    // .  .  .  a  
+       01 00 01 61 
+    // parsed:, offset 108, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 111, len 41, h: 000e: utf8{"dxc/junit/opcodes/goto_w/jm/T_goto_w_3"}
+    // .  .  &  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  g  o  t  o  _  w  /  j  m  /  T  _  g  o  t  o  _  w  _  3  
+       01 00 26 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 67 6f 74 6f 5f 77 2f 6a 6d 2f 54 5f 67 6f 74 6f 5f 77 5f 33 
+// parsed:, offset 152, len 0, h: end constant_pool
+// parsed:, offset 152, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 154, len 2, h: this_class: type{dxc.junit.opcodes.goto_w.jm.T_goto_w_3}
+// .  .  
+   00 08 
+// parsed:, offset 156, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 158, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 160, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 162, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 164, len:76,desc: ()V
+// parsed:, offset 164, len 0, h:  methods[0]: 
+    // parsed:, offset 164, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 168, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 170, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 172, len 0, h:  attributes[0]: 
+        // parsed:, offset 172, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 174, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 178, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 180, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 182, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 191, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 193, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 195, len 0, h: end attributes[0] 
+// parsed:, offset 195, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 195, len:45,desc: ()V
+// parsed:, offset 195, len 0, h:  methods[1]: 
+    // parsed:, offset 195, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 199, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 201, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 203, len 0, h:  attributes[0]: 
+        // parsed:, offset 203, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 205, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 209, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 211, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 213, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 5, h: 0000: goto_w 00000006
+        // .  .  .  .  .  
+//@mod           c8 00 00 00 06 
+           c8 00 ff 00 06 
+        // parsed:, offset 5, len 1, h: 0005: return
+        // .  
+           b1 
+        // parsed:, offset 6, len 2, h: 0006: ldc string{"a"}
+        // .  .  
+           12 04 
+        // parsed:, offset 8, len 1, h: 0008: return
+        // .  
+           b1 
+        // parsed:, offset 226, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 228, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 230, len 0, h: end attributes[0] 
+// parsed:, offset 230, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 230, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 232, len 0, h:  attributes[0]: 
+    // parsed:, offset 232, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 234, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 238, len 2, h: source: utf8{"T_goto_w_3.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.j b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.j
new file mode 100644
index 0000000..040e7ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_w_3.java
+.class public dxc/junit/opcodes/goto_w/jm/T_goto_w_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    goto_w Label0
+    return
+Label0:    
+    ldc "a"
+    return
+.end method
+
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.java b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.java
new file mode 100644
index 0000000..a32670d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.goto_w.jm;
+
+public class T_goto_w_3 {
+
+    public void run() {
+        String a = "a";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.cfh
new file mode 100644
index 0000000..e02cd46
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.cfh
@@ -0,0 +1,182 @@
+//@class:dxc/junit/opcodes/goto_w/jm/T_goto_w_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0a 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 09 
+    // parsed:, offset 67, len 3, h: 0007: type{dxc.junit.opcodes.goto_w.jm.T_goto_w_4}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 70, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 77, len 6, h: 0009: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 83, len 3, h: 000a: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 86, len 41, h: 000b: utf8{"dxc/junit/opcodes/goto_w/jm/T_goto_w_4"}
+    // .  .  &  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  g  o  t  o  _  w  /  j  m  /  T  _  g  o  t  o  _  w  _  4  
+       01 00 26 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 67 6f 74 6f 5f 77 2f 6a 6d 2f 54 5f 67 6f 74 6f 5f 77 5f 34 
+    // parsed:, offset 127, len 18, h: 000c: utf8{"T_goto_w_4.java"}
+    // .  .  .  T  _  g  o  t  o  _  w  _  4  .  j  a  v  a  
+       01 00 0f 54 5f 67 6f 74 6f 5f 77 5f 34 2e 6a 61 76 61 
+// parsed:, offset 145, len 0, h: end constant_pool
+// parsed:, offset 145, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 147, len 2, h: this_class: type{dxc.junit.opcodes.goto_w.jm.T_goto_w_4}
+// .  .  
+   00 07 
+// parsed:, offset 149, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0a 
+// parsed:, offset 151, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 153, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 155, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 157, len:77,desc: ()V
+// parsed:, offset 157, len 0, h:  methods[0]: 
+    // parsed:, offset 157, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 159, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 161, len 2, h: descriptor: ()V
+    // .  .  
+       00 09 
+    // parsed:, offset 163, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 165, len 0, h:  attributes[0]: 
+        // parsed:, offset 165, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 167, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 171, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 173, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 175, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 184, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 186, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 188, len 0, h: end attributes[0] 
+// parsed:, offset 188, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 188, len:46,desc: ()V
+// parsed:, offset 188, len 0, h:  methods[1]: 
+    // parsed:, offset 188, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 192, len 2, h: descriptor: ()V
+    // .  .  
+       00 09 
+    // parsed:, offset 194, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 196, len 0, h:  attributes[0]: 
+        // parsed:, offset 196, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 198, len 4, h: length: 00000016
+        // .  .  .  .  
+           00 00 00 16 
+        // parsed:, offset 202, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 204, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 206, len 4, h: code_length: 0000000a
+        // .  .  .  .  
+           00 00 00 0a 
+        // parsed:, offset 0, len 5, h: 0000: goto_w 00000005
+        // .  .  .  .  .  
+//@mod           c8 00 00 00 05 
+           c8 00 00 00 06 
+        // parsed:, offset 5, len 4, h: 0005: wide aload 0000
+        // .  .  .  .  
+           c4 19 00 00 
+        // parsed:, offset 9, len 1, h: 0009: return
+        // .  
+           b1 
+        // parsed:, offset 220, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 222, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 224, len 0, h: end attributes[0] 
+// parsed:, offset 224, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 224, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 226, len 0, h:  attributes[0]: 
+    // parsed:, offset 226, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 228, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 232, len 2, h: source: utf8{"T_goto_w_4.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 234, len 0, h: end attributes[0] 
+// parsed:, offset 234, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.j b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.j
new file mode 100644
index 0000000..1c0b768
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_w_4.java
+.class public dxc/junit/opcodes/goto_w/jm/T_goto_w_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    goto_w Label0
+Label0:    
+    aload_w 0
+    return
+.end method
+
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.java b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.java
new file mode 100644
index 0000000..3914675
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.goto_w.jm;
+
+public class T_goto_w_4 {
+
+    public void run() {
+        String a = "a";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_5.j b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_5.j
new file mode 100644
index 0000000..97309d9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_w_5.java
+.class public dxc/junit/opcodes/goto_w/jm/T_goto_w_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    goto_w Label1
+Label0:
+    nop
+    nop
+    nop
+    iconst_1
+    ireturn
+Label1:    
+    goto_w Label0
+    iconst_0
+    ireturn
+.end method
+
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_5.java b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_5.java
new file mode 100644
index 0000000..82daea8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.goto_w.jm;
+
+public class T_goto_w_5 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/Test_i2b.java b/tools/dx-tests/src/dxc/junit/opcodes/i2b/Test_i2b.java
new file mode 100644
index 0000000..096b453
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/Test_i2b.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2b;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.i2b.jm.T_i2b_1;
+
+public class Test_i2b extends DxTestCase {
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN1() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN2() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(-1, t.run(-1));
+    }
+
+    /**
+     * @title  Argument = 16
+     */
+    public void testN3() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(16, t.run(16));
+    }
+
+    /**
+     * @title  Argument = -32
+     */
+    public void testN4() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(-32, t.run(-32));
+    }
+
+    /**
+     * @title  Argument = 134
+     */
+    public void testN5() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(-122, t.run(134));
+    }
+
+    /**
+     * @title  Argument = -134
+     */
+    public void testN6() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(122, t.run(-134));
+    }
+
+    /**
+     * @title s. Argument = 127
+     */
+    public void testB1() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(127, t.run(127));
+    }
+
+    /**
+     * @title s. Argument = 128
+     */
+    public void testB2() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(-128, t.run(128));
+    }
+
+    /**
+     * @title s. Argument = 0
+     */
+    public void testB3() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title s. Argument = -128
+     */
+    public void testB4() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(-128, t.run(-128));
+    }
+
+    /**
+     * @title s. Argument = -129
+     */
+    public void testB5() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(127, t.run(-129));
+    }
+
+    /**
+     * @title s. Argument = Integer.MAX_VALUE
+     */
+    public void testB6() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title s. Argument = Integer.MIN_VALUE
+     */
+    public void testB7() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2b.jm.T_i2b_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2b.jm.T_i2b_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2b.jm.T_i2b_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2b.jm.T_i2b_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_1.j b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_1.j
new file mode 100644
index 0000000..6beef3b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2b_1.java
+.class public dxc/junit/opcodes/i2b/jm/T_i2b_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)B
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    i2b
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_1.java b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_1.java
new file mode 100644
index 0000000..ad3dd2b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2b.jm;
+
+public class T_i2b_1 {
+
+    public byte run(int a) {
+        return (byte) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_2.j b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_2.j
new file mode 100644
index 0000000..eb7c2c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2b_2.java
+.class public dxc/junit/opcodes/i2b/jm/T_i2b_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)B
+    .limit stack 1
+    .limit locals 2
+    ; iload_1
+    i2b
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_2.java b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_2.java
new file mode 100644
index 0000000..0a6f16f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2b.jm;
+
+public class T_i2b_2 {
+
+    public byte run(int a) {
+        return (byte) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_3.j b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_3.j
new file mode 100644
index 0000000..3c2b8dd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_3.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2b_3.java
+.class public dxc/junit/opcodes/i2b/jm/T_i2b_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)B
+    .limit stack 2
+    .limit locals 3
+    dload_1
+    i2b
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_3.java b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_3.java
new file mode 100644
index 0000000..f16d916
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2b.jm;
+
+public class T_i2b_3 {
+
+    public byte run(double a) {
+        return (byte) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_4.j b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_4.j
new file mode 100644
index 0000000..93653fa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2b_4.java
+.class public dxc/junit/opcodes/i2b/jm/T_i2b_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)B
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+    i2b
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_4.java b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_4.java
new file mode 100644
index 0000000..10aa70d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2b.jm;
+
+public class T_i2b_4 {
+
+    public byte run(long a) {
+        return (byte) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_5.j b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_5.j
new file mode 100644
index 0000000..85ee243
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2b_5.java
+.class public dxc/junit/opcodes/i2b/jm/T_i2b_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)B
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    i2b
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_5.java b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_5.java
new file mode 100644
index 0000000..a77b9c3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2b.jm;
+
+public class T_i2b_5 {
+    
+    public byte run(int a) {
+        return (byte) a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/Test_i2c.java b/tools/dx-tests/src/dxc/junit/opcodes/i2c/Test_i2c.java
new file mode 100644
index 0000000..c610a6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/Test_i2c.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2c;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.i2c.jm.T_i2c_1;
+
+public class Test_i2c extends DxTestCase {
+
+    /**
+     * @title  Argument = 65
+     */
+    public void testN1() {
+        T_i2c_1 t = new T_i2c_1();
+        assertEquals('A', t.run(65));
+    }
+
+    /**
+     * @title  Argument = 65537
+     */
+    public void testN2() {
+        T_i2c_1 t = new T_i2c_1();
+        assertEquals('\u0001', t.run(65537));
+    }
+
+    /**
+     * @title  Argument = -2
+     */
+    public void testN3() {
+        T_i2c_1 t = new T_i2c_1();
+        assertEquals('\ufffe', t.run(-2));
+    }
+
+    /**
+     * @title  Argument = 0x110000
+     */
+    public void testN4() {
+        T_i2c_1 t = new T_i2c_1();
+        assertEquals('\u0000', t.run(0x110000));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB1() {
+        T_i2c_1 t = new T_i2c_1();
+        assertEquals('\u0000', t.run(0));
+    }
+
+    /**
+     * @title  Argument = 65535
+     */
+    public void testB2() {
+        T_i2c_1 t = new T_i2c_1();
+        assertEquals('\uffff', t.run(65535));
+    }
+
+    /**
+     * @title  Argument = Integer.MAX_VALUE
+     */
+    public void testB3() {
+        T_i2c_1 t = new T_i2c_1();
+        assertEquals('\uffff', t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_i2c_1 t = new T_i2c_1();
+        assertEquals('\u0000', t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * verify test
+     */
+    /**
+     * @constraint 4.8.2
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2c.jm.T_i2c_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2c.jm.T_i2c_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2c.jm.T_i2c_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2c.jm.T_i2c_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_1.j b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_1.j
new file mode 100644
index 0000000..e15178d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2c_1.java
+.class public dxc/junit/opcodes/i2c/jm/T_i2c_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)C
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    i2c
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_1.java b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_1.java
new file mode 100644
index 0000000..a255f60
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2c.jm;
+
+public class T_i2c_1 {
+
+    public char run(int a) {
+        return (char) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_2.j b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_2.j
new file mode 100644
index 0000000..e6dcb12
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2c_2.java
+.class public dxc/junit/opcodes/i2c/jm/T_i2c_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)C
+    .limit stack 1
+    .limit locals 2
+    
+;    iload_1
+    i2c
+    
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_2.java b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_2.java
new file mode 100644
index 0000000..6ee574c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2c.jm;
+
+public class T_i2c_2 {
+
+    public char run(int a) {
+        return (char) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_3.j b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_3.j
new file mode 100644
index 0000000..af0e098
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2c_3.java
+.class public dxc/junit/opcodes/i2c/jm/T_i2c_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(D)C
+    .limit stack 2
+    .limit locals 3
+
+    dload_1
+;    d2i
+    i2c
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_3.java b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_3.java
new file mode 100644
index 0000000..12e7e70
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2c.jm;
+
+public class T_i2c_3 {
+
+    public char run(double a) {
+        return (char) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_4.j b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_4.j
new file mode 100644
index 0000000..0ac4503
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2c_4.java
+.class public dxc/junit/opcodes/i2c/jm/T_i2c_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(J)C
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+;    l2i
+    i2c
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_4.java b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_4.java
new file mode 100644
index 0000000..0583ce8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2c.jm;
+
+public class T_i2c_4 {
+
+    public char run(long a) {
+        return (char) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_5.j b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_5.j
new file mode 100644
index 0000000..54e6ad3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2c_5.java
+.class public dxc/junit/opcodes/i2c/jm/T_i2c_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)C
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    i2c
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_5.java b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_5.java
new file mode 100644
index 0000000..a1d485d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2c.jm;
+
+public class T_i2c_5 {
+    
+    public char run(int a) {
+        return (char) a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/Test_i2d.java b/tools/dx-tests/src/dxc/junit/opcodes/i2d/Test_i2d.java
new file mode 100644
index 0000000..c6e57d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/Test_i2d.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2d;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.i2d.jm.T_i2d_1;
+
+public class Test_i2d extends DxTestCase {
+
+    /**
+     * @title  Argument = 300000000
+     */
+    public void testN1() {
+        T_i2d_1 t = new T_i2d_1();
+        assertEquals(300000000d, t.run(300000000), 0d);
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_i2d_1 t = new T_i2d_1();
+        assertEquals(1d, t.run(1), 0d);
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_i2d_1 t = new T_i2d_1();
+        assertEquals(-1d, t.run(-1), 0d);
+    }
+
+
+    /**
+     * @title  Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_i2d_1 t = new T_i2d_1();
+        assertEquals(2147483647d, t.run(Integer.MAX_VALUE), 0d);
+    }
+
+    /**
+     * @title  Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_i2d_1 t = new T_i2d_1();
+        assertEquals(-2147483648d, t.run(Integer.MIN_VALUE), 0d);
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB3() {
+        T_i2d_1 t = new T_i2d_1();
+        assertEquals(0d, t.run(0), 0d);
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2d.jm.T_i2d_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2d.jm.T_i2d_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2d.jm.T_i2d_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2d.jm.T_i2d_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2d.jm.T_i2d_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_1.j b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_1.j
new file mode 100644
index 0000000..d44d272
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2d_1.java
+.class public dxc/junit/opcodes/i2d/jm/T_i2d_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)D
+    .limit stack 2
+    .limit locals 2
+    iload_1
+    i2d
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_1.java b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_1.java
new file mode 100644
index 0000000..0375f9d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2d.jm;
+
+public class T_i2d_1 {
+
+    public double run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_2.j b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_2.j
new file mode 100644
index 0000000..abd492b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2d_2.java
+.class public dxc/junit/opcodes/i2d/jm/T_i2d_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)D
+    .limit stack 2
+    .limit locals 2
+
+;    iload_1
+    i2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_2.java b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_2.java
new file mode 100644
index 0000000..0b2112d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2d.jm;
+
+public class T_i2d_2 {
+
+    public double run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_3.j b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_3.j
new file mode 100644
index 0000000..7396e0c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2d_3.java
+.class public dxc/junit/opcodes/i2d/jm/T_i2d_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(F)D
+    .limit stack 2
+    .limit locals 2
+
+    fload_1
+;    f2i
+    i2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_3.java b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_3.java
new file mode 100644
index 0000000..39125cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2d.jm;
+
+public class T_i2d_3 {
+
+    public double run(float a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_4.j b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_4.j
new file mode 100644
index 0000000..041aa6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2d_4.java
+.class public dxc/junit/opcodes/i2d/jm/T_i2d_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)D
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+;    l2i
+    i2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_4.java b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_4.java
new file mode 100644
index 0000000..7386ba9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2d.jm;
+
+public class T_i2d_4 {
+
+    public double run(long a) {
+        return (double) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_5.j b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_5.j
new file mode 100644
index 0000000..e9ca3acb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2d_5.java
+.class public dxc/junit/opcodes/i2d/jm/T_i2d_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)D
+    .limit stack 1
+    .limit locals 2
+
+    iload_1
+    i2d
+    
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_5.java b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_5.java
new file mode 100644
index 0000000..5af85bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2d.jm;
+
+public class T_i2d_5 {
+
+    public double run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_6.j b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_6.j
new file mode 100644
index 0000000..00a7b78
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2d_6.java
+.class public dxc/junit/opcodes/i2d/jm/T_i2d_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)D
+    .limit stack 2
+    .limit locals 2
+
+    aload_0
+    i2d
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_6.java b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_6.java
new file mode 100644
index 0000000..a003add
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2d.jm;
+
+public class T_i2d_6 {
+    
+    public double run(int a) {
+        return a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/Test_i2f.java b/tools/dx-tests/src/dxc/junit/opcodes/i2f/Test_i2f.java
new file mode 100644
index 0000000..4a5bcec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/Test_i2f.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2f;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.i2f.jm.T_i2f_1;
+
+public class Test_i2f extends DxTestCase {
+
+    /**
+     * @title  Argument = 123456
+     */
+    public void testN1() {
+        T_i2f_1 t = new T_i2f_1();
+        assertEquals(123456f, t.run(123456), 0f);
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_i2f_1 t = new T_i2f_1();
+        assertEquals(1f, t.run(1), 0f);
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_i2f_1 t = new T_i2f_1();
+        assertEquals(-1f, t.run(-1), 0f);
+    }
+
+    /**
+     * @title  Argument = 33564439
+     */
+    public void testN4() {
+        T_i2f_1 t = new T_i2f_1();
+        assertEquals(3.356444E7f, t.run(33564439), 0f);
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB1() {
+        T_i2f_1 t = new T_i2f_1();
+        assertEquals(0f, t.run(0), 0f);
+    }
+
+    /**
+     * @title  Argument = Argument = Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_i2f_1 t = new T_i2f_1();
+        assertEquals(2147483650f, t.run(Integer.MAX_VALUE), 0f);
+    }
+
+    /**
+     * @title  Argument = Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_i2f_1 t = new T_i2f_1();
+        assertEquals(-2147483650f, t.run(Integer.MIN_VALUE), 0f);
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2f.jm.T_i2f_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2f.jm.T_i2f_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2f.jm.T_i2f_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2f.jm.T_i2f_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_1.j b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_1.j
new file mode 100644
index 0000000..e77cc6d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2f_1.java
+.class public dxc/junit/opcodes/i2f/jm/T_i2f_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)F
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    i2f
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_1.java b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_1.java
new file mode 100644
index 0000000..e985e19
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2f.jm;
+
+public class T_i2f_1 {
+
+    public float run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_2.j b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_2.j
new file mode 100644
index 0000000..f1e729f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2f_2.java
+.class public dxc/junit/opcodes/i2f/jm/T_i2f_2
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)F
+    .limit stack 1
+    .limit locals 2
+
+;    iload_1
+    i2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_2.java b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_2.java
new file mode 100644
index 0000000..ae113ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2f.jm;
+
+public class T_i2f_2 {
+
+    public float run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_3.j b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_3.j
new file mode 100644
index 0000000..fac0ac4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2f_3.java
+.class public dxc/junit/opcodes/i2f/jm/T_i2f_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(D)F
+    .limit stack 2
+    .limit locals 3
+
+    dload_1
+;    d2i
+    i2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_3.java b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_3.java
new file mode 100644
index 0000000..a4f1727
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2f.jm;
+
+public class T_i2f_3 {
+
+    public float run(double a) {
+        return (float)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_4.j b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_4.j
new file mode 100644
index 0000000..3194274
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2f_4.java
+.class public dxc/junit/opcodes/i2f/jm/T_i2f_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(J)F
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+    ;l2i
+    i2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_4.java b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_4.java
new file mode 100644
index 0000000..5aad4ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2f.jm;
+
+public class T_i2f_4 {
+
+    public float run(long a) {
+        return (float) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_5.j b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_5.j
new file mode 100644
index 0000000..9dfed0c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2f_5.java
+.class public dxc/junit/opcodes/i2f/jm/T_i2f_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)F
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    i2f
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_5.java b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_5.java
new file mode 100644
index 0000000..fcbe7e2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2f.jm;
+
+public class T_i2f_5 {
+    
+    public float run(int a) {
+        return a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/Test_i2l.java b/tools/dx-tests/src/dxc/junit/opcodes/i2l/Test_i2l.java
new file mode 100644
index 0000000..8bd6a89
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/Test_i2l.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2l;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.i2l.jm.T_i2l_1;
+
+public class Test_i2l extends DxTestCase {
+
+    /**
+     * @title Argument = 123456
+     */
+    public void testN1() {
+        T_i2l_1 t = new T_i2l_1();
+        assertEquals(123456l, t.run(123456));
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_i2l_1 t = new T_i2l_1();
+        assertEquals(1l, t.run(1));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_i2l_1 t = new T_i2l_1();
+        assertEquals(-1l, t.run(-1));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB1() {
+        T_i2l_1 t = new T_i2l_1();
+        assertEquals(0l, t.run(0));
+    }
+
+    /**
+     * @title  Argument = Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_i2l_1 t = new T_i2l_1();
+        assertEquals(2147483647l, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_i2l_1 t = new T_i2l_1();
+        assertEquals(-2147483648l, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2l.jm.T_i2l_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2l.jm.T_i2l_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2l.jm.T_i2l_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2l.jm.T_i2l_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2l.jm.T_i2l_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_1.j b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_1.j
new file mode 100644
index 0000000..49660c4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2l_1.java
+.class public dxc/junit/opcodes/i2l/jm/T_i2l_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)J
+    .limit stack 2
+    .limit locals 2
+    iload_1
+    i2l
+    lreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_1.java b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_1.java
new file mode 100644
index 0000000..5b03ca0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2l.jm;
+
+public class T_i2l_1 {
+
+    public long run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_2.j b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_2.j
new file mode 100644
index 0000000..0435fb4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2l_2.java
+.class public dxc/junit/opcodes/i2l/jm/T_i2l_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)J
+    .limit stack 2
+    .limit locals 2
+
+;    iload_1
+    i2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_2.java b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_2.java
new file mode 100644
index 0000000..4209cad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2l.jm;
+
+public class T_i2l_2 {
+
+    public long run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_3.j b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_3.j
new file mode 100644
index 0000000..ed8c96a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_3.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2l_3.java
+.class public dxc/junit/opcodes/i2l/jm/T_i2l_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(D)J
+    .limit stack 2
+    .limit locals 3
+ 
+    dload_1
+ ;   d2i
+     i2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_3.java b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_3.java
new file mode 100644
index 0000000..c8b8704
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2l.jm;
+
+public class T_i2l_3 {
+
+    public long run(double a) {
+        return (long)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_4.j b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_4.j
new file mode 100644
index 0000000..a172ce4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2l_4.java
+.class public dxc/junit/opcodes/i2l/jm/T_i2l_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(J)J
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+
+    i2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_4.java b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_4.java
new file mode 100644
index 0000000..cc27bc2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2l.jm;
+
+public class T_i2l_4 {
+
+    public long run(long a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_5.j b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_5.j
new file mode 100644
index 0000000..8dcd481
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2l_5.java
+.class public dxc/junit/opcodes/i2l/jm/T_i2l_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)J
+    .limit stack 1
+    .limit locals 2
+
+    iload_1
+    i2l
+
+    lreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_5.java b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_5.java
new file mode 100644
index 0000000..407650d5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2l.jm;
+
+public class T_i2l_5 {
+
+    public long run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_6.j b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_6.j
new file mode 100644
index 0000000..75c9693
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2l_6.java
+.class public dxc/junit/opcodes/i2l/jm/T_i2l_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)J
+    .limit stack 2
+    .limit locals 2
+
+    aload_0
+    i2l
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_6.java b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_6.java
new file mode 100644
index 0000000..9f2d674
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2l.jm;
+
+public class T_i2l_6 {
+    
+    public long run(int a) {
+        return a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/Test_i2s.java b/tools/dx-tests/src/dxc/junit/opcodes/i2s/Test_i2s.java
new file mode 100644
index 0000000..f0ae1f2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/Test_i2s.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2s;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.i2s.jm.T_i2s_1;
+
+public class Test_i2s extends DxTestCase {
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN1() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN2() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(-1, t.run(-1));
+    }
+
+    /**
+     * @title  Argument = 32767
+     */
+    public void testN3() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(32767, t.run(32767));
+    }
+
+    /**
+     * @title  Argument = -32768
+     */
+    public void testN4() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(-32768, t.run(-32768));
+    }
+
+    /**
+     * @title  Argument = -32769
+     */
+    public void testN5() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(32767, t.run(-32769));
+    }
+
+    /**
+     * @title  Argument = 32768
+     */
+    public void testN6() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(-32768, t.run(32768));
+    }
+
+    /**
+     * @title  Argument = 0x10fedc;
+     */
+    public void testN7() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(0xfffffedc, t.run(0x10fedc));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB1() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title  Argument = Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2s.jm.T_i2s_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2s.jm.T_i2s_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2s.jm.T_i2s_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2s.jm.T_i2s_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_1.j b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_1.j
new file mode 100644
index 0000000..2224057
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2s_1.java
+.class public dxc/junit/opcodes/i2s/jm/T_i2s_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)S
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    i2s
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_1.java b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_1.java
new file mode 100644
index 0000000..f01646d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2s.jm;
+
+public class T_i2s_1 {
+
+    public short run(int a) {
+        return (short)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_2.j b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_2.j
new file mode 100644
index 0000000..c62c56f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2s_2.java
+.class public dxc/junit/opcodes/i2s/jm/T_i2s_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)S
+    .limit stack 1
+    .limit locals 2
+
+;    iload_1
+    i2s
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_2.java b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_2.java
new file mode 100644
index 0000000..73e3134
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2s.jm;
+
+public class T_i2s_2 {
+
+    public short run(int a) {
+        return (short)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_3.j b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_3.j
new file mode 100644
index 0000000..05b14f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2s_3.java
+.class public dxc/junit/opcodes/i2s/jm/T_i2s_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(D)S
+    .limit stack 2
+    .limit locals 3
+ 
+    dload_1
+;    d2i
+    i2s
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_3.java b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_3.java
new file mode 100644
index 0000000..92d6144
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2s.jm;
+
+public class T_i2s_3 {
+
+    public short run(double a) {
+        return (short)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_4.j b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_4.j
new file mode 100644
index 0000000..927254c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2s_4.java
+.class public dxc/junit/opcodes/i2s/jm/T_i2s_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(J)S
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+;    l2i
+    i2s
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_4.java b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_4.java
new file mode 100644
index 0000000..703e103
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2s.jm;
+
+public class T_i2s_4 {
+
+    public short run(long a) {
+        return (short)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_5.j b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_5.j
new file mode 100644
index 0000000..6ee161e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_i2s_5.java
+.class public dxc/junit/opcodes/i2s/jm/T_i2s_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)S
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    i2s
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_5.java b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_5.java
new file mode 100644
index 0000000..85dde1d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.i2s.jm;
+
+public class T_i2s_5 {
+    
+    public short run(int a) {
+        return (short)a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/Test_iadd.java b/tools/dx-tests/src/dxc/junit/opcodes/iadd/Test_iadd.java
new file mode 100644
index 0000000..4e65023
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/Test_iadd.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iadd;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iadd.jm.T_iadd_1;
+
+public class Test_iadd extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(12, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 0, 255
+     */
+    public void testN2() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(255, t.run(0, 255));
+    }
+
+    /**
+     * @title Arguments = 0, -65536
+     */
+    public void testN3() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(-65536, t.run(0, -65536));
+    }
+
+    /**
+     * @title Arguments = 0, -2147483647
+     */
+    public void testN4() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(-2147483647, t.run(0, -2147483647));
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe, 2
+     */
+    public void testN5() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(-2147483648, t.run(0x7ffffffe, 2));
+    }
+
+    /**
+     * @title Arguments = -1, 1
+     */
+    public void testN6() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(0, t.run(-1, 1));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(Integer.MAX_VALUE, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(-2, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(-2147483647, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iadd.jm.T_iadd_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iadd.jm.T_iadd_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iadd.jm.T_iadd_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iadd.jm.T_iadd_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_1.j
new file mode 100644
index 0000000..7d5ab14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iadd_1.java
+.class public dxc/junit/opcodes/iadd/jm/T_iadd_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    iadd
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_1.java
new file mode 100644
index 0000000..63e35c9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iadd.jm;
+
+public class T_iadd_1 {
+
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_2.j
new file mode 100644
index 0000000..4000167
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iadd_2.java
+.class public dxc/junit/opcodes/iadd/jm/T_iadd_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    ; iload_2    
+    iadd
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_2.java
new file mode 100644
index 0000000..249c9de
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iadd.jm;
+
+public class T_iadd_2 {
+
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_3.j
new file mode 100644
index 0000000..61a788f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iadd_3.java
+.class public dxc/junit/opcodes/iadd/jm/T_iadd_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(ID)I
+    .limit stack 3
+    .limit locals 5
+    iload_1
+    dload_2    
+    iadd
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_3.java
new file mode 100644
index 0000000..98ac780
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iadd.jm;
+
+public class T_iadd_3 {
+
+    public int run(int a, double b) {
+        return a+(int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_4.j
new file mode 100644
index 0000000..b80dbca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iadd_4.java
+.class public dxc/junit/opcodes/iadd/jm/T_iadd_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JI)I
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2i
+    iload_3
+    iadd
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_4.java
new file mode 100644
index 0000000..cb97c39
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iadd.jm;
+
+public class T_iadd_4 {
+
+    public int run(long a, int b) {
+        return (int)a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_5.j
new file mode 100644
index 0000000..e815ee4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iadd_5.java
+.class public dxc/junit/opcodes/iadd/jm/T_iadd_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    iadd
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_5.java
new file mode 100644
index 0000000..6d05810
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iadd.jm;
+
+public class T_iadd_5 {
+    
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/Test_iaload.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/Test_iaload.java
new file mode 100644
index 0000000..0b37ac2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/Test_iaload.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iaload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iaload.jm.T_iaload_1;
+
+public class Test_iaload extends DxTestCase {
+
+    /**
+     * @title Normal test/. Trying different indexes
+     */
+    public void testN1() {
+        T_iaload_1 t = new T_iaload_1();
+        int[] arr = new int[2];
+        arr[1] = 100000000;
+        assertEquals(100000000, t.run(arr, 1));
+    }
+
+    /**
+     * @title Normal test/. Trying different indexes
+     */
+    public void testN2() {
+        T_iaload_1 t = new T_iaload_1();
+        int[] arr = new int[2];
+        arr[0] = 100000000;
+        assertEquals(100000000, t.run(arr, 0));
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_iaload_1 t = new T_iaload_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iaload_1 t = new T_iaload_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_iaload_1 t = new T_iaload_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iaload.jm.T_iaload_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iaload.jm.T_iaload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iaload.jm.T_iaload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iaload.jm.T_iaload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.iaload.jm.T_iaload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.iaload.jm.T_iaload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.iaload.jm.T_iaload_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.iaload.jm.T_iaload_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_1.j
new file mode 100644
index 0000000..097f974
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iaload_1.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([II)I
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+
+    iaload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_1.java
new file mode 100644
index 0000000..06baef4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_1 {
+    public int run(int[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_2.j
new file mode 100644
index 0000000..949cf4c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iaload_2.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([II)I
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+;    iload_2
+
+    iaload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_2.java
new file mode 100644
index 0000000..dda4c99
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_2 {
+
+    public int run(int[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_3.j
new file mode 100644
index 0000000..f54bde1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iaload_3.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([II)I
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    iaload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_3.java
new file mode 100644
index 0000000..3ce0959
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_3 {
+
+    public int run(int[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_4.j
new file mode 100644
index 0000000..fd6243c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iaload_4.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([ID)I
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    iaload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_4.java
new file mode 100644
index 0000000..376f303
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_4 {
+
+    public int run(int[] arr, double idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_5.j
new file mode 100644
index 0000000..b29eeae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iaload_5.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([IJ)I
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    lload_2
+;    l2i
+    iaload
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_5.java
new file mode 100644
index 0000000..a1e260b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_5 {
+
+    public int run(int[] arr, long idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_6.j
new file mode 100644
index 0000000..dd84023
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iaload_6.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;[II)I
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_3
+
+    iaload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_6.java
new file mode 100644
index 0000000..b371b7b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_6 {
+
+    public int run(Object a, int[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_7.j
new file mode 100644
index 0000000..5989d3c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iaload_7.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([D[II)I
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    iaload
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_7.java
new file mode 100644
index 0000000..a6ab6ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_7 {
+
+    public int run(double[] a, int[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_8.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_8.j
new file mode 100644
index 0000000..3b83df4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_8.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iaload_8.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([J[II)I
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    iaload
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_8.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_8.java
new file mode 100644
index 0000000..7fc1fd4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_8 {
+
+    public int run(long[] a, int[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_9.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_9.j
new file mode 100644
index 0000000..73c8718
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_9.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iaload_9.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_0
+    iaload
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_9.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_9.java
new file mode 100644
index 0000000..3ac4522
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_9 {
+    
+    public int run(int[] arr, int idx) {
+        return arr[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/Test_iand.java b/tools/dx-tests/src/dxc/junit/opcodes/iand/Test_iand.java
new file mode 100644
index 0000000..3ffc871
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/Test_iand.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iand;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iand.jm.T_iand_1;
+
+public class Test_iand extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_iand_1 t = new T_iand_1();
+        assertEquals(8, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+        T_iand_1 t = new T_iand_1();
+        assertEquals(0xfffffff0, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title  Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_iand_1 t = new T_iand_1();
+        assertEquals(0xcafe, t.run(0xcafe, -1));
+    }
+
+    /**
+     * @title  Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_iand_1 t = new T_iand_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_iand_1 t = new T_iand_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iand.jm.T_iand_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iand.jm.T_iand_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iand.jm.T_iand_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int & reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iand.jm.T_iand_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_1.j
new file mode 100644
index 0000000..8a1bd03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iand_1.java
+.class public dxc/junit/opcodes/iand/jm/T_iand_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    iand
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_1.java
new file mode 100644
index 0000000..e0783a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iand.jm;
+
+public class T_iand_1 {
+
+    public int run(int a, int b) {
+        return a & b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_2.j
new file mode 100644
index 0000000..44323a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iand_2.java
+.class public dxc/junit/opcodes/iand/jm/T_iand_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+;    iload_2
+    iand
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_2.java
new file mode 100644
index 0000000..6eef083
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iand.jm;
+
+public class T_iand_2 {
+
+    public int run(int a, int b) {
+        return a & b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_3.j
new file mode 100644
index 0000000..f5ea270
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iand_3.java
+.class public dxc/junit/opcodes/iand/jm/T_iand_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DI)I
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+;    d2i
+    iload_3
+    iand
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_3.java
new file mode 100644
index 0000000..c87a78f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iand.jm;
+
+public class T_iand_3 {
+
+    public int run(double a, int b) {
+        return (int)a & b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_4.j
new file mode 100644
index 0000000..c849643
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iand_4.java
+.class public dxc/junit/opcodes/iand/jm/T_iand_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(IJ)I
+    .limit stack 3
+    .limit locals 4
+
+    iload_1
+    lload_2
+;    l2i
+    iand
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_4.java
new file mode 100644
index 0000000..bbfe63d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iand.jm;
+
+public class T_iand_4 {
+
+    public int run(int a, long b) {
+        return a & (int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_5.j
new file mode 100644
index 0000000..daa5908
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iand_5.java
+.class public dxc/junit/opcodes/iand/jm/T_iand_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    aload_0
+    iand
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_5.java
new file mode 100644
index 0000000..177c707
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iand.jm;
+
+public class T_iand_5 {
+    
+    public int run(int a, int b) {
+        return a & b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/Test_iastore.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/Test_iastore.java
new file mode 100644
index 0000000..539e8ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/Test_iastore.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iastore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iastore.jm.T_iastore_1;
+
+public class Test_iastore extends DxTestCase {
+
+    /**
+     * @title Normal test/. Trying different indexes
+     */
+    public void testN1() {
+        T_iastore_1 t = new T_iastore_1();
+        int[] arr = new int[2];
+        t.run(arr, 1, 100000000);
+        assertEquals(100000000, arr[1]);
+    }
+
+    /**
+     * @title Normal test/. Trying different indexes
+     */
+    public void testN2() {
+        T_iastore_1 t = new T_iastore_1();
+        int[] arr = new int[2];
+        t.run(arr, 0, 100000000);
+        assertEquals(100000000, arr[0]);
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_iastore_1 t = new T_iastore_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, 2, 100000000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iastore_1 t = new T_iastore_1();
+        try {
+            t.run(null, 2, 100000000);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_iastore_1 t = new T_iastore_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, -1, 100000000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iastore.jm.T_iastore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iastore.jm.T_iastore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double,
+     * int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iastore.jm.T_iastore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iastore.jm.T_iastore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - object, int, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.iastore.jm.T_iastore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int,
+     * int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.iastore.jm.T_iastore_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int, int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.iastore.jm.T_iastore_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference,
+     * long
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.iastore.jm.T_iastore_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_1.j
new file mode 100644
index 0000000..8a2c771
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iastore_1.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([III)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    iload_3
+    iastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_1.java
new file mode 100644
index 0000000..253e9d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_1 {
+    public void run(int[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_2.j
new file mode 100644
index 0000000..7c34197
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iastore_2.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([III)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    ;iload_3
+    iastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_2.java
new file mode 100644
index 0000000..f407f92
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_2 {
+
+    public void run(int[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_3.j
new file mode 100644
index 0000000..cb6cfb5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iastore_3.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([III)V
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    iload_3
+    iastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_3.java
new file mode 100644
index 0000000..0df3ee9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_3 {
+
+    public void run(int[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_4.j
new file mode 100644
index 0000000..0fa6d09
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iastore_4.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([IDI)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    iload 4
+
+    iastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_4.java
new file mode 100644
index 0000000..0706835
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_4 {
+
+    public void run(int[] arr, double idx, int value) {
+        arr[(int)idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_5.j
new file mode 100644
index 0000000..59f0399
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iastore_5.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([IIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+    lload_3
+;    l2i
+    iastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_5.java
new file mode 100644
index 0000000..989da2f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_5 {
+
+    public void run(int[] arr, int idx, long value) {
+        arr[idx] = (int)value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_6.j
new file mode 100644
index 0000000..f3d75dc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iastore_6.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;II)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    iload_3
+    iastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_6.java
new file mode 100644
index 0000000..0f5ea3e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_6 {
+
+    public void run(Object a, int[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_7.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_7.j
new file mode 100644
index 0000000..5ee1b4d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_7.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iastore_7.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([D[III)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    iload 4
+    iastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_7.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_7.java
new file mode 100644
index 0000000..22b4348
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_7 {
+
+    public void run(double a[], int[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_8.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_8.j
new file mode 100644
index 0000000..1de1c74
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_8.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iastore_8.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([J[III)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    iload 4
+    iastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_8.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_8.java
new file mode 100644
index 0000000..5493e4d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_8 {
+
+    public void run(long a[], int[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_9.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_9.j
new file mode 100644
index 0000000..a0b993b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iastore_9.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([III)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    aload_0
+    iload_3
+    iastore
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_9.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_9.java
new file mode 100644
index 0000000..8b30629
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_9 {
+    
+    public void run(int[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/Test_iconst_0.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/Test_iconst_0.java
new file mode 100644
index 0000000..d394385
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/Test_iconst_0.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iconst_0.jm.T_iconst_0_1;
+
+public class Test_iconst_0 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_iconst_0_1 t = new T_iconst_0_1();
+        int b = 1234;
+        int c = 1234;
+        int d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iconst_0.jm.T_iconst_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_1.j
new file mode 100644
index 0000000..9510066
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iconst_0_1.java
+.class public dxc/junit/opcodes/iconst_0/jm/T_iconst_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_1.java
new file mode 100644
index 0000000..112b6d5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_0.jm;
+
+public class T_iconst_0_1 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_2.j
new file mode 100644
index 0000000..90d93a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iconst_0_2.java
+.class public dxc/junit/opcodes/iconst_0/jm/T_iconst_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+;    .limit locals 1
+
+    iconst_0
+    iconst_0
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_2.java
new file mode 100644
index 0000000..9f40962
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_0.jm;
+
+public class T_iconst_0_2 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/Test_iconst_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/Test_iconst_1.java
new file mode 100644
index 0000000..2ceda6d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/Test_iconst_1.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iconst_1.jm.T_iconst_1_1;
+
+public class Test_iconst_1 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_iconst_1_1 t = new T_iconst_1_1();
+        int b = 1235;
+        int c = 1234;
+        int d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iconst_1.jm.T_iconst_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_1.j
new file mode 100644
index 0000000..b7c4558
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iconst_1_1.java
+.class public dxc/junit/opcodes/iconst_1/jm/T_iconst_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_1.java
new file mode 100644
index 0000000..963428c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_1.jm;
+
+public class T_iconst_1_1 {
+
+    public int run() {
+        return 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_2.j
new file mode 100644
index 0000000..10f3e61
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iconst_1_2.java
+.class public dxc/junit/opcodes/iconst_1/jm/T_iconst_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+;    .limit locals 1
+ 
+    iconst_1
+    iconst_1
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_2.java
new file mode 100644
index 0000000..c2f95f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_1.jm;
+
+public class T_iconst_1_2 {
+
+    public int run() {
+        return 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/Test_iconst_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/Test_iconst_2.java
new file mode 100644
index 0000000..fc3b558
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/Test_iconst_2.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iconst_2.jm.T_iconst_2_1;
+
+public class Test_iconst_2 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_iconst_2_1 t = new T_iconst_2_1();
+        int b = 1236;
+        int c = 1234;
+        int d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iconst_2.jm.T_iconst_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_1.j
new file mode 100644
index 0000000..582564e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iconst_2_1.java
+.class public dxc/junit/opcodes/iconst_2/jm/T_iconst_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    iconst_2
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_1.java
new file mode 100644
index 0000000..7a00ed3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_2.jm;
+
+public class T_iconst_2_1 {
+
+    public int run() {
+        return 2;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_2.j
new file mode 100644
index 0000000..d0a6b7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iconst_2_2.java
+.class public dxc/junit/opcodes/iconst_2/jm/T_iconst_2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+;    .limit locals 1
+
+    iconst_2
+    iconst_2    
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_2.java
new file mode 100644
index 0000000..c9b35a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_2.jm;
+
+public class T_iconst_2_2 {
+
+    public int run() {
+        return 2;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/Test_iconst_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/Test_iconst_3.java
new file mode 100644
index 0000000..7c35d71
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/Test_iconst_3.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iconst_3.jm.T_iconst_3_1;
+
+public class Test_iconst_3 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_iconst_3_1 t = new T_iconst_3_1();
+        int b = 1237;
+        int c = 1234;
+        int d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iconst_3.jm.T_iconst_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_1.j
new file mode 100644
index 0000000..ef97813
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iconst_3_1.java
+.class public dxc/junit/opcodes/iconst_3/jm/T_iconst_3_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    iconst_3
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_1.java
new file mode 100644
index 0000000..c3ce680
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_3.jm;
+
+public class T_iconst_3_1 {
+
+    public int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_2.j
new file mode 100644
index 0000000..9c501dd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iconst_3_2.java
+.class public dxc/junit/opcodes/iconst_3/jm/T_iconst_3_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+;    .limit locals 1
+
+    iconst_3
+    iconst_3
+    
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_2.java
new file mode 100644
index 0000000..2e5cfc3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_3.jm;
+
+public class T_iconst_3_2 {
+
+    public int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/Test_iconst_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/Test_iconst_4.java
new file mode 100644
index 0000000..f883f6d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/Test_iconst_4.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_4;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iconst_4.jm.T_iconst_4_1;
+
+public class Test_iconst_4 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_iconst_4_1 t = new T_iconst_4_1();
+        int b = 1238;
+        int c = 1234;
+        int d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iconst_4.jm.T_iconst_4_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_1.j
new file mode 100644
index 0000000..0bc6c6a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_1.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iconst_4_1.java
+.class public dxc/junit/opcodes/iconst_4/jm/T_iconst_4_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    iconst_4
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_1.java
new file mode 100644
index 0000000..b662051
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_4.jm;
+
+public class T_iconst_4_1 {
+
+    public int run() {
+        return 4;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_2.j
new file mode 100644
index 0000000..36ae08b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iconst_4_2.java
+.class public dxc/junit/opcodes/iconst_4/jm/T_iconst_4_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+;    .limit locals 1
+
+    iconst_4
+    iconst_4    
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_2.java
new file mode 100644
index 0000000..effef30
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_4.jm;
+
+public class T_iconst_4_2 {
+
+    public int run() {
+        return 4;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/Test_iconst_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/Test_iconst_5.java
new file mode 100644
index 0000000..6fbe360
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/Test_iconst_5.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_5;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iconst_5.jm.T_iconst_5_1;
+
+public class Test_iconst_5 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_iconst_5_1 t = new T_iconst_5_1();
+        int b = 1239;
+        int c = 1234;
+        int d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iconst_5.jm.T_iconst_5_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_1.j
new file mode 100644
index 0000000..12b2f81
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iconst_5_1.java
+.class public dxc/junit/opcodes/iconst_5/jm/T_iconst_5_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    iconst_5
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_1.java
new file mode 100644
index 0000000..0762065
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_5.jm;
+
+public class T_iconst_5_1 {
+
+    public int run() {
+        return 5;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_2.j
new file mode 100644
index 0000000..307c804
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iconst_5_2.java
+.class public dxc/junit/opcodes/iconst_5/jm/T_iconst_5_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+;    .limit locals 1
+
+    iconst_5
+    iconst_5
+        
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_2.java
new file mode 100644
index 0000000..ec01b76
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_5.jm;
+
+public class T_iconst_5_2 {
+
+    public int run() {
+        return 5;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/Test_iconst_m1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/Test_iconst_m1.java
new file mode 100644
index 0000000..9eb2765
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/Test_iconst_m1.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_m1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iconst_m1.jm.T_iconst_m1_1;
+
+public class Test_iconst_m1 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_iconst_m1_1 t = new T_iconst_m1_1();
+        int b = 1233;
+        int c = 1234;
+        int d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iconst_m1.jm.T_iconst_m1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_1.j
new file mode 100644
index 0000000..4cc89b1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iconst_m1_1.java
+.class public dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_1.java
new file mode 100644
index 0000000..e54eee4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_m1.jm;
+
+public class T_iconst_m1_1 {
+
+    public int run() {
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_2.j
new file mode 100644
index 0000000..68cb7ee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iconst_m1_2.java
+.class public dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+;    .limit locals 1
+
+    iconst_m1
+    iconst_m1    
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_2.java
new file mode 100644
index 0000000..ad1c701
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iconst_m1.jm;
+
+public class T_iconst_m1_2 {
+
+    public int run() {
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/Test_idiv.java b/tools/dx-tests/src/dxc/junit/opcodes/idiv/Test_idiv.java
new file mode 100644
index 0000000..73ca296
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/Test_idiv.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.idiv;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.idiv.jm.T_idiv_1;
+
+public class Test_idiv extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(2, t.run(8, 4));
+    }
+
+    /**
+     * @title  Rounding
+     */
+    public void testN2() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(268435455, t.run(1073741823, 4));
+    }
+
+    /**
+     * @title  Dividend = 0
+     */
+    public void testN3() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(0, t.run(0, 4));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN4() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(-3, t.run(-10, 3));
+    }
+
+    /**
+     * @title  Divisor is negative
+     */
+    public void testN5() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(-357913941, t.run(1073741824, -3));
+    }
+
+    /**
+     * @title  Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(5965, t.run(-17895697, -3000));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_idiv_1 t = new T_idiv_1();
+        // result is MIN_VALUE because overflow occurs in this case
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB4() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 1, Integer.MAX_VALUE
+     */
+    public void testB5() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(0, t.run(1, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(0, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Divisor is 0
+     */
+    public void testE1() {
+        T_idiv_1 t = new T_idiv_1();
+        try {
+            t.run(1, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.idiv.jm.T_idiv_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int / double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.idiv.jm.T_idiv_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.idiv.jm.T_idiv_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference / int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.idiv.jm.T_idiv_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_1.j b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_1.j
new file mode 100644
index 0000000..97b601d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_idiv_1.java
+.class public dxc/junit/opcodes/idiv/jm/T_idiv_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    idiv
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_1.java b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_1.java
new file mode 100644
index 0000000..b3e1ecc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.idiv.jm;
+
+public class T_idiv_1 {
+
+    public int run(int a, int b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_2.j b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_2.j
new file mode 100644
index 0000000..71cd321
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_idiv_2.java
+.class public dxc/junit/opcodes/idiv/jm/T_idiv_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    ; iload_2    
+    idiv
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_2.java b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_2.java
new file mode 100644
index 0000000..ec8834c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.idiv.jm;
+
+public class T_idiv_2 {
+
+    public int run(int a, int b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_3.j b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_3.j
new file mode 100644
index 0000000..897b705
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_idiv_3.java
+.class public dxc/junit/opcodes/idiv/jm/T_idiv_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(ID)I
+    .limit stack 3
+    .limit locals 5
+    iload_1
+    dload_2    
+    idiv
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_3.java b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_3.java
new file mode 100644
index 0000000..a28eb6a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.idiv.jm;
+
+public class T_idiv_3 {
+
+    public int run(int a, double b) {
+        return a/(int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_4.j b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_4.j
new file mode 100644
index 0000000..ddf5f01
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_idiv_4.java
+.class public dxc/junit/opcodes/idiv/jm/T_idiv_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JI)I
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2i
+    iload_3
+    idiv
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_4.java b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_4.java
new file mode 100644
index 0000000..c2cf3dd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.idiv.jm;
+
+public class T_idiv_4 {
+
+    public int run(long a, int b) {
+        return (int)a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_5.j b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_5.j
new file mode 100644
index 0000000..20b4402
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_idiv_5.java
+.class public dxc/junit/opcodes/idiv/jm/T_idiv_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    idiv
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_5.java b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_5.java
new file mode 100644
index 0000000..c5a3579
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.idiv.jm;
+
+public class T_idiv_5 {
+    
+    public int run(int a, int b) {
+        return a/b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/Test_if_acmpeq.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/Test_if_acmpeq.java
new file mode 100644
index 0000000..2591871
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/Test_if_acmpeq.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_acmpeq;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_1;
+
+public class Test_if_acmpeq extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_if_acmpeq_1 t = new T_if_acmpeq_1();
+        String a = "a";
+        String b = "b";
+
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(a, b));
+    }
+
+    /**
+     * @title  normal test
+     */
+    public void testN2() {
+        T_if_acmpeq_1 t = new T_if_acmpeq_1();
+        String a = "a";
+        assertEquals(1, t.run(a, a));
+    }
+
+    /**
+     * @title  Compare with null
+     */
+    public void testB1() {
+        T_if_acmpeq_1 t = new T_if_acmpeq_1();
+        String a = "a";
+        assertEquals(1234, t.run(null, a));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference,
+     * integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_1.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_1.j
new file mode 100644
index 0000000..c31a282
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_acmpeq_1.java
+.class public dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(Ljava/lang/String;Ljava/lang/String;)I
+    .limit stack 2
+    .limit locals 3
+    aload_1
+    aload_2
+    if_acmpeq Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_1.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_1.java
new file mode 100644
index 0000000..e72a4fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_acmpeq.jm;
+
+public class T_if_acmpeq_1 {
+
+    public int run(String a, String b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_2.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_2.j
new file mode 100644
index 0000000..51fb9e4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_2.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_acmpeq_2.java
+.class public dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 2
+    .limit locals 3
+;    aload_1
+    aload_2
+    if_acmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_2.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_2.java
new file mode 100644
index 0000000..f346bae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_acmpeq.jm;
+
+public class T_if_acmpeq_2 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_3.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_3.j
new file mode 100644
index 0000000..cc93549
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_3.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_acmpeq_3.java
+.class public dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 4
+    .limit locals 3
+
+    aload_1
+    dconst_1
+    if_acmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_3.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_3.java
new file mode 100644
index 0000000..2f986fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_acmpeq.jm;
+
+public class T_if_acmpeq_3 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_4.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_4.j
new file mode 100644
index 0000000..3541259
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_4.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_acmpeq_4.java
+.class public dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    iconst_1
+    
+    if_acmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_4.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_4.java
new file mode 100644
index 0000000..995a198
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_acmpeq.jm;
+
+public class T_if_acmpeq_4 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.cfh
new file mode 100644
index 0000000..657c425
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 42, h: 0002: utf8{"(Ljava/lang/String;Ljava/lang/String;)Z"}
+    // .  .  '  (  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  )  Z  
+       01 00 27 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 29 5a 
+    // parsed:, offset 57, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 76, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 89, len 47, h: 0005: utf8{"dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  a  c  m  p  e  q  /  j  m  /  T  _  i  f  _  a  c  m  p  e  q  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 61 63 6d 70 65 71 2f 6a 6d 2f 54 5f 69 66 5f 61 63 6d 70 65 71 5f 35 
+    // parsed:, offset 136, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 145, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 151, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0a 
+    // parsed:, offset 156, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 163, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 169, len 3, h: 000b: type{dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_5}
+    // .  .  .  
+       07 00 05 
+    // parsed:, offset 172, len 21, h: 000c: utf8{"T_if_acmpeq_5.java"}
+    // .  .  .  T  _  i  f  _  a  c  m  p  e  q  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 61 63 6d 70 65 71 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 193, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 196, len 0, h: end constant_pool
+// parsed:, offset 196, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 198, len 2, h: this_class: type{dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_5}
+// .  .  
+   00 0b 
+// parsed:, offset 200, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 202, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 204, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 206, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 208, len:76,desc: ()V
+// parsed:, offset 208, len 0, h:  methods[0]: 
+    // parsed:, offset 208, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 212, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 214, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 0, h:  attributes[0]: 
+        // parsed:, offset 216, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 218, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 222, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 224, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 235, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 237, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 239, len 0, h: end attributes[0] 
+// parsed:, offset 239, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 239, len:45,desc: (Ljava/lang/String;Ljava/lang/String;)Z
+// parsed:, offset 239, len 0, h:  methods[1]: 
+    // parsed:, offset 239, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 241, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 243, len 2, h: descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
+    // .  .  
+       00 02 
+    // parsed:, offset 245, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 247, len 0, h:  attributes[0]: 
+        // parsed:, offset 247, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 249, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 253, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 255, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 257, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 1, h: 0001: aload_2 // 02
+        // ,  
+           2c 
+        // parsed:, offset 2, len 3, h: 0002: if_acmpeq 0007
+        // .  .  .  
+//@mod     a5 00 05    
+           a5 00 ff 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 270, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 272, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 274, len 0, h: end attributes[0] 
+// parsed:, offset 274, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/String;Ljava/lang/String;)Z
+// parsed:, offset 274, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 276, len 0, h:  attributes[0]: 
+    // parsed:, offset 276, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 278, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 282, len 2, h: source: utf8{"T_if_acmpeq_5.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 284, len 0, h: end attributes[0] 
+// parsed:, offset 284, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.j
new file mode 100644
index 0000000..12d77df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_acmpeq_5.java
+.class public dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 2
+    .limit locals 3
+    
+    aload_1
+    aload_2
+    if_acmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.java
new file mode 100644
index 0000000..ec022a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_acmpeq.jm;
+
+public class T_if_acmpeq_5 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.cfh
new file mode 100644
index 0000000..3b400e22
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.cfh
@@ -0,0 +1,205 @@
+//@class:dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 42, h: 0002: utf8{"(Ljava/lang/String;Ljava/lang/String;)Z"}
+    // .  .  '  (  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  )  Z  
+       01 00 27 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 29 5a 
+    // parsed:, offset 57, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 76, len 47, h: 0004: utf8{"dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  a  c  m  p  e  q  /  j  m  /  T  _  i  f  _  a  c  m  p  e  q  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 61 63 6d 70 65 71 2f 6a 6d 2f 54 5f 69 66 5f 61 63 6d 70 65 71 5f 36 
+    // parsed:, offset 123, len 13, h: 0005: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 136, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 145, len 21, h: 0007: utf8{"T_if_acmpeq_6.java"}
+    // .  .  .  T  _  i  f  _  a  c  m  p  e  q  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 61 63 6d 70 65 71 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 166, len 6, h: 0008: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 172, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0b 
+    // parsed:, offset 177, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 184, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 190, len 3, h: 000c: type{dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_6}
+    // .  .  .  
+       07 00 04 
+    // parsed:, offset 193, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 196, len 0, h: end constant_pool
+// parsed:, offset 196, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 198, len 2, h: this_class: type{dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_6}
+// .  .  
+   00 0c 
+// parsed:, offset 200, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 202, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 204, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 206, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 208, len:79,desc: ()V
+// parsed:, offset 208, len 0, h:  methods[0]: 
+    // parsed:, offset 208, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 212, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 214, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 0, h:  attributes[0]: 
+        // parsed:, offset 216, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 218, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 222, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 224, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 235, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 237, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 239, len 0, h: end attributes[0] 
+// parsed:, offset 239, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 239, len:48,desc: (Ljava/lang/String;Ljava/lang/String;)Z
+// parsed:, offset 239, len 0, h:  methods[1]: 
+    // parsed:, offset 239, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 241, len 2, h: name: run
+    // .  .  
+       00 08 
+    // parsed:, offset 243, len 2, h: descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
+    // .  .  
+       00 02 
+    // parsed:, offset 245, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 247, len 0, h:  attributes[0]: 
+        // parsed:, offset 247, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 249, len 4, h: length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 253, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 255, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 257, len 4, h: code_length: 0000000c
+        // .  .  .  .  
+           00 00 00 0c 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 1, h: 0001: aload_2 // 02
+        // ,  
+           2c 
+        // parsed:, offset 2, len 3, h: 0002: if_acmpeq 0008
+        // .  .  .  
+//@mod     a5 00 05    
+           a5 00 06 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: wide
+        // .
+//@mod     00      
+           c4 
+        // parsed:, offset 8, len 2, h: 0008: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 10, len 1, h: 000a: nop
+        // . 
+//@mod     00     
+           02 
+        // parsed:, offset 11, len 1, h: 000b: ireturn
+        // .  
+           ac 
+        // parsed:, offset 273, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 275, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 277, len 0, h: end attributes[0] 
+// parsed:, offset 277, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/String;Ljava/lang/String;)Z
+// parsed:, offset 277, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 279, len 0, h:  attributes[0]: 
+    // parsed:, offset 279, len 2, h: name: SourceFile
+    // .  .  
+       00 05 
+    // parsed:, offset 281, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 285, len 2, h: source: utf8{"T_if_acmpeq_6.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 287, len 0, h: end attributes[0] 
+// parsed:, offset 287, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.j
new file mode 100644
index 0000000..855ba59
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_acmpeq_6.java
+.class public dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 2
+    .limit locals 3
+    aload_1
+    aload_2
+    if_acmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+    ; iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.java
new file mode 100644
index 0000000..3e5bb90
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_acmpeq.jm;
+
+public class T_if_acmpeq_6 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/Test_if_acmpne.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/Test_if_acmpne.java
new file mode 100644
index 0000000..012742d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/Test_if_acmpne.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_acmpne;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_1;
+
+public class Test_if_acmpne extends DxTestCase {
+
+    /**
+     * @title  normal test
+     */
+    public void testN1() {
+        T_if_acmpne_1 t = new T_if_acmpne_1();
+        String a = "a";
+        String b = "b";
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(a, b));
+    }
+
+    /**
+     * @title  normal test
+     */
+    public void testN2() {
+        T_if_acmpne_1 t = new T_if_acmpne_1();
+        String a = "a";
+        assertEquals(1, t.run(a, a));
+    }
+
+    /**
+     * @title  Compare with null
+     */
+    public void testB1() {
+        T_if_acmpne_1 t = new T_if_acmpne_1();
+        String a = "a";
+        assertEquals(1234, t.run(a, null));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference,
+     * integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_1.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_1.j
new file mode 100644
index 0000000..b500b91
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_acmpne_1.java
+.class public dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(Ljava/lang/String;Ljava/lang/String;)I
+    .limit stack 2
+    .limit locals 3
+   
+    aload_1
+    aload_2
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    sipush 1234
+    ireturn
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_1.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_1.java
new file mode 100644
index 0000000..4485e6f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_acmpne.jm;
+
+public class T_if_acmpne_1 {
+
+    public int run(String a, String b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_2.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_2.j
new file mode 100644
index 0000000..1e84a6e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_acmpne_2.java
+.class public dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+;    aload_2
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_2.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_2.java
new file mode 100644
index 0000000..52b734c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_acmpne.jm;
+
+public class T_if_acmpne_2 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_3.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_3.j
new file mode 100644
index 0000000..48c32da
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_3.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_acmpne_3.java
+.class public dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 4
+    .limit locals 3
+   
+    aload_1
+    dconst_1
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_3.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_3.java
new file mode 100644
index 0000000..609e0ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_acmpne.jm;
+
+public class T_if_acmpne_3 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_4.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_4.j
new file mode 100644
index 0000000..b167481
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_4.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_acmpne_4.java
+.class public dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 2
+    .limit locals 3
+   
+    aload_1
+    iconst_1
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_4.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_4.java
new file mode 100644
index 0000000..1abd87a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_acmpne.jm;
+
+public class T_if_acmpne_4 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.cfh
new file mode 100644
index 0000000..85dfc7a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 47, h: 0001: utf8{"dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  a  c  m  p  n  e  /  j  m  /  T  _  i  f  _  a  c  m  p  n  e  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 61 63 6d 70 6e 65 2f 6a 6d 2f 54 5f 69 66 5f 61 63 6d 70 6e 65 5f 35 
+    // parsed:, offset 57, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 62, len 42, h: 0003: utf8{"(Ljava/lang/String;Ljava/lang/String;)Z"}
+    // .  .  '  (  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  )  Z  
+       01 00 27 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 29 5a 
+    // parsed:, offset 104, len 19, h: 0004: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 123, len 13, h: 0005: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 136, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 145, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 151, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0a 
+    // parsed:, offset 156, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 163, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 169, len 3, h: 000b: type{dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_5}
+    // .  .  .  
+       07 00 01 
+    // parsed:, offset 172, len 21, h: 000c: utf8{"T_if_acmpne_5.java"}
+    // .  .  .  T  _  i  f  _  a  c  m  p  n  e  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 61 63 6d 70 6e 65 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 193, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 04 
+// parsed:, offset 196, len 0, h: end constant_pool
+// parsed:, offset 196, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 198, len 2, h: this_class: type{dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_5}
+// .  .  
+   00 0b 
+// parsed:, offset 200, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 202, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 204, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 206, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 208, len:76,desc: ()V
+// parsed:, offset 208, len 0, h:  methods[0]: 
+    // parsed:, offset 208, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 212, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 214, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 0, h:  attributes[0]: 
+        // parsed:, offset 216, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 218, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 222, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 224, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 235, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 237, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 239, len 0, h: end attributes[0] 
+// parsed:, offset 239, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 239, len:45,desc: (Ljava/lang/String;Ljava/lang/String;)Z
+// parsed:, offset 239, len 0, h:  methods[1]: 
+    // parsed:, offset 239, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 241, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 243, len 2, h: descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
+    // .  .  
+       00 03 
+    // parsed:, offset 245, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 247, len 0, h:  attributes[0]: 
+        // parsed:, offset 247, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 249, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 253, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 255, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 257, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 1, h: 0001: aload_2 // 02
+        // ,  
+           2c 
+        // parsed:, offset 2, len 3, h: 0002: if_acmpne 00ff
+        // .  .  .  
+//@mod     a6 00 05    
+           a6 00 ff 
+        // parsed:, offset 5, len 1, h: 0005: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 270, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 272, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 274, len 0, h: end attributes[0] 
+// parsed:, offset 274, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/String;Ljava/lang/String;)Z
+// parsed:, offset 274, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 276, len 0, h:  attributes[0]: 
+    // parsed:, offset 276, len 2, h: name: SourceFile
+    // .  .  
+       00 05 
+    // parsed:, offset 278, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 282, len 2, h: source: utf8{"T_if_acmpne_5.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 284, len 0, h: end attributes[0] 
+// parsed:, offset 284, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.j
new file mode 100644
index 0000000..46a46dd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_acmpne_5.java
+.class public dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 2
+    .limit locals 3
+   
+    aload_1
+    aload_2
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.java
new file mode 100644
index 0000000..1eb6ef6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_acmpne.jm;
+
+public class T_if_acmpne_5 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.cfh
new file mode 100644
index 0000000..ffe5bbf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.cfh
@@ -0,0 +1,204 @@
+//@class:dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 08 
+    // parsed:, offset 15, len 42, h: 0002: utf8{"(Ljava/lang/String;Ljava/lang/String;)Z"}
+    // .  .  '  (  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  )  Z  
+       01 00 27 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 29 5a 
+    // parsed:, offset 57, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 76, len 21, h: 0004: utf8{"T_if_acmpne_6.java"}
+    // .  .  .  T  _  i  f  _  a  c  m  p  n  e  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 61 63 6d 70 6e 65 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 97, len 13, h: 0005: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 110, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 119, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 125, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0a 
+    // parsed:, offset 130, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 137, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 143, len 3, h: 000b: type{dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_6}
+    // .  .  .  
+       07 00 0d 
+    // parsed:, offset 146, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 149, len 47, h: 000d: utf8{"dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  a  c  m  p  n  e  /  j  m  /  T  _  i  f  _  a  c  m  p  n  e  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 61 63 6d 70 6e 65 2f 6a 6d 2f 54 5f 69 66 5f 61 63 6d 70 6e 65 5f 36 
+// parsed:, offset 196, len 0, h: end constant_pool
+// parsed:, offset 196, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 198, len 2, h: this_class: type{dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_6}
+// .  .  
+   00 0b 
+// parsed:, offset 200, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 202, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 204, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 206, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 208, len:79,desc: ()V
+// parsed:, offset 208, len 0, h:  methods[0]: 
+    // parsed:, offset 208, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 212, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 214, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 0, h:  attributes[0]: 
+        // parsed:, offset 216, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 218, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 222, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 224, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 235, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 237, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 239, len 0, h: end attributes[0] 
+// parsed:, offset 239, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 239, len:48,desc: (Ljava/lang/String;Ljava/lang/String;)Z
+// parsed:, offset 239, len 0, h:  methods[1]: 
+    // parsed:, offset 239, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 241, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 243, len 2, h: descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
+    // .  .  
+       00 02 
+    // parsed:, offset 245, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 247, len 0, h:  attributes[0]: 
+        // parsed:, offset 247, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 249, len 4, h: length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 253, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 255, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 257, len 4, h: code_length: 0000000c
+        // .  .  .  .  
+           00 00 00 0c 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 1, h: 0001: aload_2 // 02
+        // ,  
+           2c 
+        // parsed:, offset 2, len 3, h: 0002: if_acmpne 0008
+        // .  .  .  
+//@mod     a6 00 05    
+           a6 00 06 
+        // parsed:, offset 5, len 1, h: 0005: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 8, len 2, h: 0008: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 10, len 1, h: 000a: nop
+        // .  
+           00 
+        // parsed:, offset 11, len 1, h: 000b: ireturn
+        // .  
+           ac 
+        // parsed:, offset 273, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 275, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 277, len 0, h: end attributes[0] 
+// parsed:, offset 277, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/String;Ljava/lang/String;)Z
+// parsed:, offset 277, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 279, len 0, h:  attributes[0]: 
+    // parsed:, offset 279, len 2, h: name: SourceFile
+    // .  .  
+       00 05 
+    // parsed:, offset 281, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 285, len 2, h: source: utf8{"T_if_acmpne_6.java"}
+    // .  .  
+       00 04 
+// parsed:, offset 287, len 0, h: end attributes[0] 
+// parsed:, offset 287, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.j
new file mode 100644
index 0000000..0ff4d66
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_acmpne_6.java
+.class public dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 2
+    .limit locals 3
+   
+    aload_1
+    aload_2
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+     nop
+    iload 1
+    nop    
+;    iconst_0
+    ireturn
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.java
new file mode 100644
index 0000000..24fc8f3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_acmpne.jm;
+
+public class T_if_acmpne_6 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/Test_if_icmpeq.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/Test_if_icmpeq.java
new file mode 100644
index 0000000..b538559
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/Test_if_icmpeq.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpeq;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_1;
+
+public class Test_if_icmpeq extends DxTestCase {
+
+    /**
+     * @title  Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_icmpeq_1 t = new T_if_icmpeq_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(5, 6));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_icmpeq_1 t = new T_if_icmpeq_1();
+        assertEquals(1, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_icmpeq_1 t = new T_if_icmpeq_1();
+        assertEquals(1234, t.run(5, -5));
+    }
+
+    /**
+     * @title  Arguments = 0x01001234, 0x1234
+     */
+    public void testN4() {
+        T_if_icmpeq_1 t = new T_if_icmpeq_1();
+        assertEquals(1234, t.run(0x01001234, 0x1234));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_icmpeq_1 t = new T_if_icmpeq_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_icmpeq_1 t = new T_if_icmpeq_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = 0, 1234567
+     */
+    public void testB3() {
+        T_if_icmpeq_1 t = new T_if_icmpeq_1();
+        assertEquals(1234, t.run(0, 1234567));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB4() {
+        T_if_icmpeq_1 t = new T_if_icmpeq_1();
+        assertEquals(1, t.run(0, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_1.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_1.j
new file mode 100644
index 0000000..d15a155
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpeq_1.java
+.class public dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+    iload_2
+    
+    if_icmpeq Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_1.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_1.java
new file mode 100644
index 0000000..392360e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpeq.jm;
+
+public class T_if_icmpeq_1 {
+
+    public int run(int a, int b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_2.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_2.j
new file mode 100644
index 0000000..ca05c70
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpeq_2.java
+.class public dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    if_icmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_2.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_2.java
new file mode 100644
index 0000000..a437976
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpeq.jm;
+
+public class T_if_icmpeq_2 {
+
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_3.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_3.j
new file mode 100644
index 0000000..fc9e4aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpeq_3.java
+.class public dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 4
+    .limit locals 3
+
+    iload_1
+    dconst_1
+    if_icmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_3.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_3.java
new file mode 100644
index 0000000..bc636ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpeq.jm;
+
+public class T_if_icmpeq_3 {
+
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_4.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_4.j
new file mode 100644
index 0000000..98266e8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpeq_4.java
+.class public dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+    iload_1
+    ;iload_2
+
+    if_icmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_4.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_4.java
new file mode 100644
index 0000000..4923485
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpeq.jm;
+
+public class T_if_icmpeq_4 {
+
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.cfh
new file mode 100644
index 0000000..00dbe44
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 3, h: 0001: type{dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_5}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 13, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 18, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 37, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 50, len 8, h: 0005: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 58, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 67, len 21, h: 0007: utf8{"T_if_icmpeq_5.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  e  q  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 65 71 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 88, len 6, h: 0008: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 94, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0c 
+    // parsed:, offset 99, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 106, len 47, h: 000b: utf8{"dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  e  q  /  j  m  /  T  _  i  f  _  i  c  m  p  e  q  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 65 71 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 65 71 5f 35 
+    // parsed:, offset 153, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_5}
+// .  .  
+   00 01 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:76,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:45,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 08 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 215, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmpeq 0007
+        // .  .  .  
+//@mod     9f 00 05    
+           9f 00 ff 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 236, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 238, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 240, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 242, len 0, h:  attributes[0]: 
+    // parsed:, offset 242, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 244, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 248, len 2, h: source: utf8{"T_if_icmpeq_5.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 250, len 0, h: end attributes[0] 
+// parsed:, offset 250, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.j
new file mode 100644
index 0000000..add33fe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpeq_5.java
+.class public dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.java
new file mode 100644
index 0000000..c720274
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpeq.jm;
+
+public class T_if_icmpeq_5 {
+
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.cfh
new file mode 100644
index 0000000..d1d6b8c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.cfh
@@ -0,0 +1,204 @@
+//@class:dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 8, h: 0004: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 55, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 64, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 70, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 75, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 82, len 47, h: 0009: utf8{"dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  e  q  /  j  m  /  T  _  i  f  _  i  c  m  p  e  q  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 65 71 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 65 71 5f 36 
+    // parsed:, offset 129, len 21, h: 000a: utf8{"T_if_icmpeq_6.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  e  q  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 65 71 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 150, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 156, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 159, len 3, h: 000d: type{dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_6}
+    // .  .  .  
+       07 00 09 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_6}
+// .  .  
+   00 0d 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:79,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:48,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 04 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 215, len 4, h: length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 0000000c
+        // .  .  .  .  
+           00 00 00 0c 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmpeq 0008
+        // .  .  .  
+//@mod     9f 00 05    
+           9f 00 06 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 8, len 2, h: 0008: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 10, len 1, h: 000a: nop
+        // .  
+           00 
+        // parsed:, offset 11, len 1, h: 000b: ireturn
+        // .  
+           ac 
+        // parsed:, offset 239, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 241, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 243, len 0, h: end attributes[0] 
+// parsed:, offset 243, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 243, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 245, len 0, h:  attributes[0]: 
+    // parsed:, offset 245, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 247, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 251, len 2, h: source: utf8{"T_if_icmpeq_6.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 253, len 0, h: end attributes[0] 
+// parsed:, offset 253, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.j
new file mode 100644
index 0000000..2b6a7b8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpeq_6.java
+.class public dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.java
new file mode 100644
index 0000000..ee004b7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpeq.jm;
+
+public class T_if_icmpeq_6 {
+
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_7.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_7.j
new file mode 100644
index 0000000..bee1c6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_7.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpeq_7.java
+.class public dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    aload_0
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_7.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_7.java
new file mode 100644
index 0000000..18aaaf9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpeq.jm;
+
+public class T_if_icmpeq_7 {
+    
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/Test_if_icmpge.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/Test_if_icmpge.java
new file mode 100644
index 0000000..ab38187
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/Test_if_icmpge.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpge;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_1;
+
+public class Test_if_icmpge extends DxTestCase {
+
+    /**
+     * @title  Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(5, 6));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1, t.run(5, -5));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0d, 0x0f0e0d0c
+     */
+    public void testN4() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1, t.run(0x0f0e0d0d, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 0x1234, 0x01001234
+     */
+    public void testN5() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1234, t.run(0x1234, 0x01001234));
+    }
+
+    /**
+     * @title  Arguments = -5, 5
+     */
+    public void testN6() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1234, t.run(-5, 5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = 1234567, 0
+     */
+    public void testB3() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1, t.run(1234567, 0));
+    }
+
+    /**
+     * @title  Arguments = 0, 1234567
+     */
+    public void testB4() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1234, t.run(0, 1234567));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1, t.run(0, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_1.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_1.j
new file mode 100644
index 0000000..e283915
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpge_1.java
+.class public dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+    iload_2
+    
+    if_icmpge Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_1.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_1.java
new file mode 100644
index 0000000..719b6d0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpge.jm;
+
+public class T_if_icmpge_1 {
+
+    public int run(int a, int b) {
+        return a >= b ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_2.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_2.j
new file mode 100644
index 0000000..3c2e871
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpge_2.java
+.class public dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    if_icmpge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_2.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_2.java
new file mode 100644
index 0000000..175e276
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpge.jm;
+
+public class T_if_icmpge_2 {
+
+    public boolean run(int a, int b) {
+        return a >= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_3.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_3.j
new file mode 100644
index 0000000..7f4b515
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpge_3.java
+.class public dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 4
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    dconst_1
+    if_icmpge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_3.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_3.java
new file mode 100644
index 0000000..69addc3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpge.jm;
+
+public class T_if_icmpge_3 {
+
+    public boolean run(int a, int b) {
+        return a >= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_4.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_4.j
new file mode 100644
index 0000000..f8a9ddd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpge_4.java
+.class public dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+    iload_1
+    ;iload_2
+
+    if_icmpge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_4.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_4.java
new file mode 100644
index 0000000..8347b6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpge.jm;
+
+public class T_if_icmpge_4 {
+
+    public boolean run(int a, int b) {
+        return a >= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.cfh
new file mode 100644
index 0000000..16399c0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 8, h: 0004: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 55, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 64, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 70, len 21, h: 0007: utf8{"T_if_icmpge_5.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  g  e  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 67 65 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 91, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0c 
+    // parsed:, offset 96, len 3, h: 0009: type{dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_5}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 99, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 106, len 47, h: 000b: utf8{"dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  g  e  /  j  m  /  T  _  i  f  _  i  c  m  p  g  e  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 67 65 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 67 65 5f 35 
+    // parsed:, offset 153, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_5}
+// .  .  
+   00 09 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:76,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:45,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 04 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 215, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmpge 0007
+        // .  .  .  
+//@mod     a2 00 05    
+           a2 00 ff 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 236, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 238, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 240, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 242, len 0, h:  attributes[0]: 
+    // parsed:, offset 242, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 244, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 248, len 2, h: source: utf8{"T_if_icmpge_5.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 250, len 0, h: end attributes[0] 
+// parsed:, offset 250, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.j
new file mode 100644
index 0000000..30dbd29
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpge_5.java
+.class public dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmpge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.java
new file mode 100644
index 0000000..4ea2d24
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpge.jm;
+
+public class T_if_icmpge_5 {
+
+    public boolean run(int a, int b) {
+        return a >= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.cfh
new file mode 100644
index 0000000..4f67cf3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.cfh
@@ -0,0 +1,204 @@
+//@class:dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 8, h: 0004: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 55, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 64, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 70, len 3, h: 0007: type{dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_6}
+    // .  .  .  
+       07 00 0a 
+    // parsed:, offset 73, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0c 
+    // parsed:, offset 78, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 85, len 47, h: 000a: utf8{"dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  g  e  /  j  m  /  T  _  i  f  _  i  c  m  p  g  e  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 67 65 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 67 65 5f 36 
+    // parsed:, offset 132, len 21, h: 000b: utf8{"T_if_icmpge_6.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  g  e  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 67 65 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 153, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_6}
+// .  .  
+   00 07 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:79,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:48,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 04 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 215, len 4, h: length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 0000000c
+        // .  .  .  .  
+           00 00 00 0c 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmpge 0008
+        // .  .  .  
+//@mod     a2 00 05    
+           a2 00 06 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 8, len 2, h: 0008: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 10, len 1, h: 000a: nop
+        // .  
+           00 
+        // parsed:, offset 11, len 1, h: 000b: ireturn
+        // .  
+           ac 
+        // parsed:, offset 239, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 241, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 243, len 0, h: end attributes[0] 
+// parsed:, offset 243, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 243, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 245, len 0, h:  attributes[0]: 
+    // parsed:, offset 245, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 247, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 251, len 2, h: source: utf8{"T_if_icmpge_6.java"}
+    // .  .  
+       00 0b 
+// parsed:, offset 253, len 0, h: end attributes[0] 
+// parsed:, offset 253, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.j
new file mode 100644
index 0000000..35475dd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpge_6.java
+.class public dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmpge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.java
new file mode 100644
index 0000000..3aafaba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpge.jm;
+
+public class T_if_icmpge_6 {
+
+    public boolean run(int a, int b) {
+        return a >= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_7.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_7.j
new file mode 100644
index 0000000..cf4e418
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_7.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpge_7.java
+.class public dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    if_icmplt Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_7.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_7.java
new file mode 100644
index 0000000..8c98983
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpge.jm;
+
+public class T_if_icmpge_7 {
+    
+    public boolean run(int a, int b) {
+        return a >= b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/Test_if_icmpgt.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/Test_if_icmpgt.java
new file mode 100644
index 0000000..dd19bd9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/Test_if_icmpgt.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpgt;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_1;
+
+public class Test_if_icmpgt extends DxTestCase {
+
+    /**
+     * @title  Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(5, 6));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1234, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1, t.run(5, -5));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0d, 0x0f0e0d0c
+     */
+    public void testN4() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1, t.run(0x0f0e0d0d, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 0x1234, 0x01001234
+     */
+    public void testN5() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1234, t.run(0x1234, 0x01001234));
+    }
+
+    /**
+     * @title  Arguments = -5, 5
+     */
+    public void testN6() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1234, t.run(-5, 5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = 1234567, 0
+     */
+    public void testB3() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1, t.run(1234567, 0));
+    }
+
+    /**
+     * @title  Arguments = 0, 1234567
+     */
+    public void testB4() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1234, t.run(0, 1234567));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1234, t.run(0, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_1.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_1.j
new file mode 100644
index 0000000..8e5abdc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpgt_1.java
+.class public dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+    iload_2
+    
+    if_icmpgt Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_1.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_1.java
new file mode 100644
index 0000000..4cb1f12
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpgt.jm;
+
+public class T_if_icmpgt_1 {
+
+    public int run(int a, int b) {
+        return a > b ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_2.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_2.j
new file mode 100644
index 0000000..75f8000
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpgt_2.java
+.class public dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    if_icmpgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_2.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_2.java
new file mode 100644
index 0000000..bacaba5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpgt.jm;
+
+public class T_if_icmpgt_2 {
+
+    public boolean run(int a, int b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_3.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_3.j
new file mode 100644
index 0000000..0fb8567
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpgt_3.java
+.class public dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 4
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    dconst_1
+    if_icmpgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_3.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_3.java
new file mode 100644
index 0000000..2791fc9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpgt.jm;
+
+public class T_if_icmpgt_3 {
+
+    public boolean run(int a, int b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_4.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_4.j
new file mode 100644
index 0000000..ae3796d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpgt_4.java
+.class public dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+    iload_1
+    ;iload_2
+
+    if_icmpgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_4.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_4.java
new file mode 100644
index 0000000..390bd08
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpgt.jm;
+
+public class T_if_icmpgt_4 {
+
+    public boolean run(int a, int b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.cfh
new file mode 100644
index 0000000..9909d78
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 47, h: 0003: utf8{"dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  g  t  /  j  m  /  T  _  i  f  _  i  c  m  p  g  t  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 67 74 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 67 74 5f 35 
+    // parsed:, offset 81, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 94, len 8, h: 0005: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 102, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 111, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 117, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0b 
+    // parsed:, offset 122, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 129, len 21, h: 000a: utf8{"T_if_icmpgt_5.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  g  t  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 67 74 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 150, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 156, len 3, h: 000c: type{dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_5}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_5}
+// .  .  
+   00 0c 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:76,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:45,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 215, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmpgt 0007
+        // .  .  .  
+//@mod     a3 00 05    
+           a3 00 ff 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 236, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 238, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 240, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 242, len 0, h:  attributes[0]: 
+    // parsed:, offset 242, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 244, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 248, len 2, h: source: utf8{"T_if_icmpgt_5.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 250, len 0, h: end attributes[0] 
+// parsed:, offset 250, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.j
new file mode 100644
index 0000000..b04cb99
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpgt_5.java
+.class public dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmpgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.java
new file mode 100644
index 0000000..74f812f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpgt.jm;
+
+public class T_if_icmpgt_5 {
+
+    public boolean run(int a, int b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.cfh
new file mode 100644
index 0000000..1b032b5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.cfh
@@ -0,0 +1,203 @@
+//@class:dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 47, h: 0002: utf8{"dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  g  t  /  j  m  /  T  _  i  f  _  i  c  m  p  g  t  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 67 74 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 67 74 5f 36 
+    // parsed:, offset 62, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 81, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 94, len 8, h: 0005: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 102, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 111, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 117, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0a 
+    // parsed:, offset 122, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 129, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 135, len 3, h: 000b: type{dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_6}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 138, len 21, h: 000c: utf8{"T_if_icmpgt_6.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  g  t  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 67 74 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_6}
+// .  .  
+   00 0b 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:79,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:48,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 215, len 4, h: length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 0000000c
+        // .  .  .  .  
+           00 00 00 0c 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmpgt 0008
+        // .  .  .  
+           a3 00 05 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 8, len 2, h: 0008: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 10, len 1, h: 000a: nop
+        // .  
+           00 
+        // parsed:, offset 11, len 1, h: 000b: ireturn
+        // .  
+           ac 
+        // parsed:, offset 239, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 241, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 243, len 0, h: end attributes[0] 
+// parsed:, offset 243, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 243, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 245, len 0, h:  attributes[0]: 
+    // parsed:, offset 245, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 247, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 251, len 2, h: source: utf8{"T_if_icmpgt_6.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 253, len 0, h: end attributes[0] 
+// parsed:, offset 253, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.j
new file mode 100644
index 0000000..118b7c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpgt_6.java
+.class public dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmpgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.java
new file mode 100644
index 0000000..438ed36
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpgt.jm;
+
+public class T_if_icmpgt_6 {
+
+    public boolean run(int a, int b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_7.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_7.j
new file mode 100644
index 0000000..f94e884
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_7.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpgt_7.java
+.class public dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    if_icmple Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_7.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_7.java
new file mode 100644
index 0000000..dce8480
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpgt.jm;
+
+public class T_if_icmpgt_7 {
+    
+    public boolean run(int a, int b) {
+        return a > b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/Test_if_icmple.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/Test_if_icmple.java
new file mode 100644
index 0000000..11335e3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/Test_if_icmple.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmple;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.if_icmple.jm.T_if_icmple_1;
+
+public class Test_if_icmple extends DxTestCase {
+
+    /**
+     * @title  Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+
+        assertEquals(1, t.run(5, 6));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(5, -5));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0d, 0x0f0e0d0c
+     */
+    public void testN4() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1234, t.run(0x0f0e0d0d, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 0x1234, 0x01001234
+     */
+    public void testN5() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1, t.run(0x1234, 0x01001234));
+    }
+
+    /**
+     * @title  Arguments = -5, 5
+     */
+    public void testN6() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1, t.run(-5, 5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = 1234567, 0
+     */
+    public void testB3() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1234, t.run(1234567, 0));
+    }
+
+    /**
+     * @title  Arguments = 0, 1234567
+     */
+    public void testB4() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1, t.run(0, 1234567));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1, t.run(0, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmple.jm.T_if_icmple_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmple.jm.T_if_icmple_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmple.jm.T_if_icmple_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmple.jm.T_if_icmple_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmple.jm.T_if_icmple_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmple.jm.T_if_icmple_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_1.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_1.j
new file mode 100644
index 0000000..14d7df0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmple_1.java
+.class public dxc/junit/opcodes/if_icmple/jm/T_if_icmple_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+    iload_2
+    
+    if_icmple Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_1.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_1.java
new file mode 100644
index 0000000..21f0339
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmple.jm;
+
+public class T_if_icmple_1 {
+
+    public int run(int a, int b) {
+        return a <= b ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_2.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_2.j
new file mode 100644
index 0000000..d4c8db7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmple_2.java
+.class public dxc/junit/opcodes/if_icmple/jm/T_if_icmple_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    if_icmple Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_2.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_2.java
new file mode 100644
index 0000000..d426d43
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmple.jm;
+
+public class T_if_icmple_2 {
+
+    public boolean run(int a, int b) {
+        return a <= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_3.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_3.j
new file mode 100644
index 0000000..f2da81e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmple_3.java
+.class public dxc/junit/opcodes/if_icmple/jm/T_if_icmple_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 4
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    dconst_1
+    if_icmple Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_3.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_3.java
new file mode 100644
index 0000000..76b5458
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmple.jm;
+
+public class T_if_icmple_3 {
+
+    public boolean run(int a, int b) {
+        return a <= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_4.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_4.j
new file mode 100644
index 0000000..1a6368b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmple_4.java
+.class public dxc/junit/opcodes/if_icmple/jm/T_if_icmple_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+    iload_1
+    ;iload_2
+
+    if_icmple Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_4.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_4.java
new file mode 100644
index 0000000..b530f67
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmple.jm;
+
+public class T_if_icmple_4 {
+
+    public boolean run(int a, int b) {
+        return a <= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.cfh
new file mode 100644
index 0000000..e83f3b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 3, h: 0003: type{dxc.junit.opcodes.if_icmple.jm.T_if_icmple_5}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 37, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 50, len 8, h: 0005: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 58, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 67, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 73, len 47, h: 0008: utf8{"dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  l  e  /  j  m  /  T  _  i  f  _  i  c  m  p  l  e  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 6c 65 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 6c 65 5f 35 
+    // parsed:, offset 120, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0c 
+    // parsed:, offset 125, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 132, len 21, h: 000b: utf8{"T_if_icmple_5.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  l  e  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 6c 65 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 153, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmple.jm.T_if_icmple_5}
+// .  .  
+   00 03 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:76,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:45,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 215, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmple 0007
+        // .  .  .  
+//@mod     a4 00 05    
+           a4 00 ff 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 236, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 238, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 240, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 242, len 0, h:  attributes[0]: 
+    // parsed:, offset 242, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 244, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 248, len 2, h: source: utf8{"T_if_icmple_5.java"}
+    // .  .  
+       00 0b 
+// parsed:, offset 250, len 0, h: end attributes[0] 
+// parsed:, offset 250, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.j
new file mode 100644
index 0000000..3aacfb3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmple_5.java
+.class public dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmple Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.java
new file mode 100644
index 0000000..09a7272
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmple.jm;
+
+public class T_if_icmple_5 {
+
+    public boolean run(int a, int b) {
+        return a <= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.cfh
new file mode 100644
index 0000000..7f734e7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.cfh
@@ -0,0 +1,204 @@
+//@class:dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 3, h: 0002: type{dxc.junit.opcodes.if_icmple.jm.T_if_icmple_6}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 18, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 37, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 50, len 8, h: 0005: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 58, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 67, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 73, len 47, h: 0008: utf8{"dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  l  e  /  j  m  /  T  _  i  f  _  i  c  m  p  l  e  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 6c 65 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 6c 65 5f 36 
+    // parsed:, offset 120, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0b 
+    // parsed:, offset 125, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 132, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 138, len 21, h: 000c: utf8{"T_if_icmple_6.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  l  e  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 6c 65 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmple.jm.T_if_icmple_6}
+// .  .  
+   00 02 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:79,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:48,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 215, len 4, h: length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 0000000c
+        // .  .  .  .  
+           00 00 00 0c 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmple 0008
+        // .  .  .  
+//@mod     a4 00 05    
+           a4 00 06 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 8, len 2, h: 0008: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 10, len 1, h: 000a: nop
+        // .  
+           00 
+        // parsed:, offset 11, len 1, h: 000b: ireturn
+        // .  
+           ac 
+        // parsed:, offset 239, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 241, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 243, len 0, h: end attributes[0] 
+// parsed:, offset 243, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 243, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 245, len 0, h:  attributes[0]: 
+    // parsed:, offset 245, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 247, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 251, len 2, h: source: utf8{"T_if_icmple_6.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 253, len 0, h: end attributes[0] 
+// parsed:, offset 253, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.j
new file mode 100644
index 0000000..f8c5961
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmple_6.java
+.class public dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmple Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.java
new file mode 100644
index 0000000..9152a6f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmple.jm;
+
+public class T_if_icmple_6 {
+
+    public boolean run(int a, int b) {
+        return a <= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_7.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_7.j
new file mode 100644
index 0000000..13ebcb5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_7.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmple_7.java
+.class public dxc/junit/opcodes/if_icmple/jm/T_if_icmple_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    if_icmpgt Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_7.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_7.java
new file mode 100644
index 0000000..1080ee2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmple.jm;
+
+public class T_if_icmple_7 {
+    public boolean run(int a, int b) {
+        return a <= b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/Test_if_icmplt.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/Test_if_icmplt.java
new file mode 100644
index 0000000..b318512
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/Test_if_icmplt.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmplt;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_1;
+
+public class Test_if_icmplt extends DxTestCase {
+
+    /**
+     * @title  Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1, t.run(5, 6));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1234, t.run(5, -5));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0d, 0x0f0e0d0c
+     */
+    public void testN4() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1234, t.run(0x0f0e0d0d, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 0x1234, 0x01001234
+     */
+    public void testN5() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1, t.run(0x1234, 0x01001234));
+    }
+
+    /**
+     * @title  Arguments = -5, 5
+     */
+    public void testN6() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1, t.run(-5, 5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = 1234567, 0
+     */
+    public void testB3() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1234, t.run(1234567, 0));
+    }
+
+    /**
+     * @title  Arguments = 0, 1234567
+     */
+    public void testB4() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1, t.run(0, 1234567));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1234, t.run(0, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_1.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_1.j
new file mode 100644
index 0000000..91b3ef6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpge_1.java
+.class public dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+    iload_2
+    
+    if_icmplt Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_1.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_1.java
new file mode 100644
index 0000000..5cf6dfa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmplt.jm;
+
+public class T_if_icmplt_1 {
+
+    public int run(int a, int b) {
+        return a < b ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_2.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_2.j
new file mode 100644
index 0000000..a2c9d4c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmplt_2.java
+.class public dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    if_icmplt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_2.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_2.java
new file mode 100644
index 0000000..5c557a0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmplt.jm;
+
+public class T_if_icmplt_2 {
+
+    public boolean run(int a, int b) {
+        return a < b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_3.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_3.j
new file mode 100644
index 0000000..0b80fdc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmplt_3.java
+.class public dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 4
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    dconst_1
+    if_icmplt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_3.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_3.java
new file mode 100644
index 0000000..210bfdf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmplt.jm;
+
+public class T_if_icmplt_3 {
+
+    public boolean run(int a, int b) {
+        return a < b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_4.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_4.j
new file mode 100644
index 0000000..fdf43d5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmplt_4.java
+.class public dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+    iload_1
+    ;iload_2
+
+    if_icmplt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_4.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_4.java
new file mode 100644
index 0000000..323c06c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmplt.jm;
+
+public class T_if_icmplt_4 {
+
+    public boolean run(int a, int b) {
+        return a < b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.cfh
new file mode 100644
index 0000000..96d6e1c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 8, h: 0004: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 55, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 64, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 70, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0a 
+    // parsed:, offset 75, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 82, len 3, h: 0009: type{dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_5}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 85, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 91, len 47, h: 000b: utf8{"dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  l  t  /  j  m  /  T  _  i  f  _  i  c  m  p  l  t  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 6c 74 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 6c 74 5f 35 
+    // parsed:, offset 138, len 21, h: 000c: utf8{"T_if_icmplt_5.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  l  t  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 6c 74 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_5}
+// .  .  
+   00 09 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:76,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:45,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 04 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 215, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmplt 00ff
+        // .  .  .  
+//@mod     a1 00 05    
+           a1 00 ff 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 236, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 238, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 240, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 242, len 0, h:  attributes[0]: 
+    // parsed:, offset 242, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 244, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 248, len 2, h: source: utf8{"T_if_icmplt_5.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 250, len 0, h: end attributes[0] 
+// parsed:, offset 250, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.j
new file mode 100644
index 0000000..3a8cd46
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmplt_5.java
+.class public dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmplt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.java
new file mode 100644
index 0000000..426cfbb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmplt.jm;
+
+public class T_if_icmplt_5 {
+
+    public boolean run(int a, int b) {
+        return a < b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.cfh
new file mode 100644
index 0000000..7722c6b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.cfh
@@ -0,0 +1,204 @@
+//@class:dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 21, h: 0003: utf8{"T_if_icmplt_6.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  l  t  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 6c 74 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 55, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 68, len 8, h: 0005: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 76, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 85, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 91, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0b 
+    // parsed:, offset 96, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 103, len 3, h: 000a: type{dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_6}
+    // .  .  .  
+       07 00 0c 
+    // parsed:, offset 106, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 112, len 47, h: 000c: utf8{"dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  l  t  /  j  m  /  T  _  i  f  _  i  c  m  p  l  t  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 6c 74 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 6c 74 5f 36 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_6}
+// .  .  
+   00 0a 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:79,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:48,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 215, len 4, h: length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 0000000c
+        // .  .  .  .  
+           00 00 00 0c 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmplt 0008
+        // .  .  .  
+//@mod     a1 00 05    
+           a1 00 06 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 8, len 2, h: 0008: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 10, len 1, h: 000a: nop
+        // .  
+           00 
+        // parsed:, offset 11, len 1, h: 000b: ireturn
+        // .  
+           ac 
+        // parsed:, offset 239, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 241, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 243, len 0, h: end attributes[0] 
+// parsed:, offset 243, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 243, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 245, len 0, h:  attributes[0]: 
+    // parsed:, offset 245, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 247, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 251, len 2, h: source: utf8{"T_if_icmplt_6.java"}
+    // .  .  
+       00 03 
+// parsed:, offset 253, len 0, h: end attributes[0] 
+// parsed:, offset 253, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.j
new file mode 100644
index 0000000..e0e56f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmplt_6.java
+.class public dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmplt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.java
new file mode 100644
index 0000000..8f5f94c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmplt.jm;
+
+public class T_if_icmplt_6 {
+
+    public boolean run(int a, int b) {
+        return a < b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_7.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_7.j
new file mode 100644
index 0000000..b702a2d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_7.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmplt_7.java
+.class public dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    if_icmpge Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_7.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_7.java
new file mode 100644
index 0000000..b3cbb72
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmplt.jm;
+
+public class T_if_icmplt_7 {
+    
+    public boolean run(int a, int b) {
+        return a < b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/Test_if_icmpne.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/Test_if_icmpne.java
new file mode 100644
index 0000000..db62187
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/Test_if_icmpne.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpne;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_1;
+
+public class Test_if_icmpne extends DxTestCase {
+
+    /**
+     * @title  Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_icmpne_1 t = new T_if_icmpne_1();
+        assertEquals(1, t.run(5, 6));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_icmpne_1 t = new T_if_icmpne_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_icmpne_1 t = new T_if_icmpne_1();
+        assertEquals(1, t.run(5, -5));
+    }
+
+    /**
+     * @title  Arguments = 0x01001234, 0x1234
+     */
+    public void testN4() {
+        T_if_icmpne_1 t = new T_if_icmpne_1();
+        assertEquals(1, t.run(0x01001234, 0x1234));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_icmpne_1 t = new T_if_icmpne_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_icmpne_1 t = new T_if_icmpne_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = 0, 1234567
+     */
+    public void testB3() {
+        T_if_icmpne_1 t = new T_if_icmpne_1();
+        assertEquals(1, t.run(0, 1234567));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB4() {
+        T_if_icmpne_1 t = new T_if_icmpne_1();
+        assertEquals(1234, t.run(0, 0));
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_1.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_1.j
new file mode 100644
index 0000000..b5aba30
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpne_1.java
+.class public dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+    iload_2
+    
+    if_icmpne Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_1.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_1.java
new file mode 100644
index 0000000..ea94397
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpne.jm;
+
+public class T_if_icmpne_1 {
+
+    public int run(int a, int b) {
+        return a != b ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_2.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_2.j
new file mode 100644
index 0000000..60a57ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpne_2.java
+.class public dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    if_icmpne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_2.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_2.java
new file mode 100644
index 0000000..2d83a4a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpne.jm;
+
+public class T_if_icmpne_2 {
+
+    public boolean run(int a, int b) {
+        return a != b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_3.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_3.j
new file mode 100644
index 0000000..eb4f44c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpne_3.java
+.class public dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 4
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    dconst_1
+    if_icmpne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_3.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_3.java
new file mode 100644
index 0000000..2b53702
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpne.jm;
+
+public class T_if_icmpne_3 {
+
+    public boolean run(int a, int b) {
+        return a != b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_4.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_4.j
new file mode 100644
index 0000000..92c5f2d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpne_4.java
+.class public dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+    iload_1
+    ;iload_2
+
+    if_icmpne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_4.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_4.java
new file mode 100644
index 0000000..beb6454
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpne.jm;
+
+public class T_if_icmpne_4 {
+
+    public boolean run(int a, int b) {
+        return a != b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.cfh
new file mode 100644
index 0000000..f0acc92
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 8, h: 0004: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 55, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 64, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 70, len 21, h: 0007: utf8{"T_if_icmpne_5.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  n  e  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 6e 65 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 91, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 96, len 47, h: 0009: utf8{"dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  n  e  /  j  m  /  T  _  i  f  _  i  c  m  p  n  e  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 6e 65 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 6e 65 5f 35 
+    // parsed:, offset 143, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 150, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 156, len 3, h: 000c: type{dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_5}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_5}
+// .  .  
+   00 0c 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:76,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:45,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 04 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 215, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmpne 00ff
+        // .  .  .  
+//@mod     a0 00 05    
+           a0 00 ff 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 236, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 238, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 240, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 242, len 0, h:  attributes[0]: 
+    // parsed:, offset 242, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 244, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 248, len 2, h: source: utf8{"T_if_icmpne_5.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 250, len 0, h: end attributes[0] 
+// parsed:, offset 250, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.j
new file mode 100644
index 0000000..74d20f3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpne_5.java
+.class public dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmpne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.java
new file mode 100644
index 0000000..157e7f2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpne.jm;
+
+public class T_if_icmpne_5 {
+
+    public boolean run(int a, int b) {
+        return a != b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.cfh
new file mode 100644
index 0000000..1991416
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.cfh
@@ -0,0 +1,204 @@
+//@class:dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 8, h: 0004: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 55, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 64, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 70, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 75, len 47, h: 0008: utf8{"dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  n  e  /  j  m  /  T  _  i  f  _  i  c  m  p  n  e  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 6e 65 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 6e 65 5f 36 
+    // parsed:, offset 122, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 129, len 21, h: 000a: utf8{"T_if_icmpne_6.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  n  e  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 6e 65 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 150, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 156, len 3, h: 000c: type{dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_6}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_6}
+// .  .  
+   00 0c 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:79,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:48,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 04 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 215, len 4, h: length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 0000000c
+        // .  .  .  .  
+           00 00 00 0c 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmpne 0008
+        // .  .  .  
+//@mod     a0 00 05    
+           a0 00 06 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 8, len 2, h: 0008: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 10, len 1, h: 000a: nop
+        // .  
+           00 
+        // parsed:, offset 11, len 1, h: 000b: ireturn
+        // .  
+           ac 
+        // parsed:, offset 239, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 241, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 243, len 0, h: end attributes[0] 
+// parsed:, offset 243, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 243, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 245, len 0, h:  attributes[0]: 
+    // parsed:, offset 245, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 247, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 251, len 2, h: source: utf8{"T_if_icmpne_6.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 253, len 0, h: end attributes[0] 
+// parsed:, offset 253, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.j
new file mode 100644
index 0000000..2344281
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpne_6.java
+.class public dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmpne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.java
new file mode 100644
index 0000000..c0ed691
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpne.jm;
+
+public class T_if_icmpne_6 {
+
+    public boolean run(int a, int b) {
+        return a != b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_7.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_7.j
new file mode 100644
index 0000000..b17f2de
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_7.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpne_7.java
+.class public dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    if_icmpeq Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_7.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_7.java
new file mode 100644
index 0000000..6d777ca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.if_icmpne.jm;
+
+public class T_if_icmpne_7 {
+    
+    public boolean run(int a, int b) {
+        return a != b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/Test_ifeq.java b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/Test_ifeq.java
new file mode 100644
index 0000000..3927098
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/Test_ifeq.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifeq;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ifeq.jm.T_ifeq_1;
+
+public class Test_ifeq extends DxTestCase {
+
+    /**
+     * @title  Argument = 5
+     */
+    public void testN1() {
+        T_ifeq_1 t = new T_ifeq_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(5));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testN2() {
+        T_ifeq_1 t = new T_ifeq_1();
+        assertEquals(1, t.run(0));
+    }
+
+    /**
+     * @title  Arguments = -5
+     */
+    public void testN3() {
+        T_ifeq_1 t = new T_ifeq_1();
+        assertEquals(1234, t.run(-5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_ifeq_1 t = new T_ifeq_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_ifeq_1 t = new T_ifeq_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifeq.jm.T_ifeq_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifeq.jm.T_ifeq_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifeq.jm.T_ifeq_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifeq.jm.T_ifeq_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifeq.jm.T_ifeq_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifeq.jm.T_ifeq_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_1.j
new file mode 100644
index 0000000..ebbf58d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifeq_1.java
+.class public dxc/junit/opcodes/ifeq/jm/T_ifeq_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(I)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+   
+    ifeq Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_1.java
new file mode 100644
index 0000000..4fbd9fe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifeq.jm;
+
+public class T_ifeq_1 {
+
+    public int run(int a) {
+        return a == 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_2.j
new file mode 100644
index 0000000..55b0609
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifeq_2.java
+.class public dxc/junit/opcodes/ifeq/jm/T_ifeq_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+;    iload_1
+    ifeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_2.java
new file mode 100644
index 0000000..86c487b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifeq.jm;
+
+public class T_ifeq_2 {
+
+    public boolean run(int a) {
+        return a == 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_3.j
new file mode 100644
index 0000000..0d57e2f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifeq_3.java
+.class public dxc/junit/opcodes/ifeq/jm/T_ifeq_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 4
+    .limit locals 3
+
+;    iload_1
+    dconst_1
+    ifeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_3.java
new file mode 100644
index 0000000..c511d7f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifeq.jm;
+
+public class T_ifeq_3 {
+
+    public boolean run(int a) {
+        return a == 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_4.j
new file mode 100644
index 0000000..0d3cbb5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_4.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifeq_4.java
+.class public dxc/junit/opcodes/ifeq/jm/T_ifeq_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1
+
+    ifeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_4.java
new file mode 100644
index 0000000..ca0acbb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifeq.jm;
+
+public class T_ifeq_4 {
+
+    public boolean run(int a) {
+        return a == 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.cfh
new file mode 100644
index 0000000..cc71d99
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ifeq/jm/T_ifeq_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 7, h: 0005: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 63, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 69, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0a 
+    // parsed:, offset 74, len 37, h: 0008: utf8{"dxc/junit/opcodes/ifeq/jm/T_ifeq_5"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  e  q  /  j  m  /  T  _  i  f  e  q  _  5  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 65 71 2f 6a 6d 2f 54 5f 69 66 65 71 5f 35 
+    // parsed:, offset 111, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 118, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 124, len 3, h: 000b: type{dxc.junit.opcodes.ifeq.jm.T_ifeq_5}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 127, len 16, h: 000c: utf8{"T_ifeq_5.java"}
+    // .  .  .  T  _  i  f  e  q  _  5  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 65 71 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifeq.jm.T_ifeq_5}
+// .  .  
+   00 0b 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:75,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:44,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 199, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifeq 0006
+        // .  .  .  
+//@mod     99 00 05    
+           99 00 ff 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 219, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 221, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 223, len 0, h: end attributes[0] 
+// parsed:, offset 223, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 223, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 225, len 0, h:  attributes[0]: 
+    // parsed:, offset 225, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 227, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 231, len 2, h: source: utf8{"T_ifeq_5.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 233, len 0, h: end attributes[0] 
+// parsed:, offset 233, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.j
new file mode 100644
index 0000000..004f71c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifeq_5.java
+.class public dxc/junit/opcodes/ifeq/jm/T_ifeq_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.java
new file mode 100644
index 0000000..3ed3f25
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifeq.jm;
+
+public class T_ifeq_5 {
+
+    public boolean run(int a) {
+        return a == 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.cfh
new file mode 100644
index 0000000..32cd5c3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.cfh
@@ -0,0 +1,201 @@
+//@class:dxc/junit/opcodes/ifeq/jm/T_ifeq_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 16, h: 0005: utf8{"T_ifeq_6.java"}
+    // .  .  .  T  _  i  f  e  q  _  6  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 65 71 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 72, len 7, h: 0006: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 79, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 85, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 90, len 37, h: 0009: utf8{"dxc/junit/opcodes/ifeq/jm/T_ifeq_6"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  e  q  /  j  m  /  T  _  i  f  e  q  _  6  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 65 71 2f 6a 6d 2f 54 5f 69 66 65 71 5f 36 
+    // parsed:, offset 127, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 134, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 140, len 3, h: 000c: type{dxc.junit.opcodes.ifeq.jm.T_ifeq_6}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifeq.jm.T_ifeq_6}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:78,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:47,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 06 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 199, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifeq 0007
+        // .  .  .  
+//@mod     99 00 05    
+           99 00 06 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 7, len 2, h: 0007: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 9, len 1, h: 0009: nop
+        // .  
+           00 
+        // parsed:, offset 10, len 1, h: 000a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 222, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 224, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 226, len 0, h: end attributes[0] 
+// parsed:, offset 226, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 226, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 228, len 0, h:  attributes[0]: 
+    // parsed:, offset 228, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 230, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 234, len 2, h: source: utf8{"T_ifeq_6.java"}
+    // .  .  
+       00 05 
+// parsed:, offset 236, len 0, h: end attributes[0] 
+// parsed:, offset 236, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.j
new file mode 100644
index 0000000..03b9e49
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifeq_6.java
+.class public dxc/junit/opcodes/ifeq/jm/T_ifeq_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.java
new file mode 100644
index 0000000..be53931
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifeq.jm;
+
+public class T_ifeq_6 {
+
+    public boolean run(int a) {
+        return a == 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_7.j b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_7.j
new file mode 100644
index 0000000..44eb855
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_7.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifeq_7.java
+.class public dxc/junit/opcodes/ifeq/jm/T_ifeq_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_7.java b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_7.java
new file mode 100644
index 0000000..3bca0e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifeq.jm;
+
+public class T_ifeq_7 {
+    
+    public boolean run(int a) {
+        return a == 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/Test_ifge.java b/tools/dx-tests/src/dxc/junit/opcodes/ifge/Test_ifge.java
new file mode 100644
index 0000000..f5ce7d4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/Test_ifge.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifge;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ifge.jm.T_ifge_1;
+
+public class Test_ifge extends DxTestCase {
+
+    /**
+     * @title  Argument = 5
+     */
+    public void testN1() {
+        T_ifge_1 t = new T_ifge_1();
+        assertEquals(1, t.run(5));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testN2() {
+        T_ifge_1 t = new T_ifge_1();
+        assertEquals(1, t.run(0));
+    }
+
+    /**
+     * @title  Arguments = -5
+     */
+    public void testN3() {
+        T_ifge_1 t = new T_ifge_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(-5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_ifge_1 t = new T_ifge_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_ifge_1 t = new T_ifge_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifge.jm.T_ifge_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifge.jm.T_ifge_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifge.jm.T_ifge_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifge.jm.T_ifge_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifge.jm.T_ifge_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifge.jm.T_ifge_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_1.j
new file mode 100644
index 0000000..5e1064e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifge_1.java
+.class public dxc/junit/opcodes/ifge/jm/T_ifge_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(I)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+   
+    ifge Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_1.java
new file mode 100644
index 0000000..f7f00c4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifge.jm;
+
+public class T_ifge_1 {
+
+    public int run(int a) {
+        return a >= 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_2.j
new file mode 100644
index 0000000..2fa1d3b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifge_2.java
+.class public dxc/junit/opcodes/ifge/jm/T_ifge_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+;    iload_1
+    ifge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_2.java
new file mode 100644
index 0000000..3531b63
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifge.jm;
+
+public class T_ifge_2 {
+
+    public boolean run(int a) {
+        return a >= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_3.j
new file mode 100644
index 0000000..ed463c0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifge_3.java
+.class public dxc/junit/opcodes/ifge/jm/T_ifge_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 4
+    .limit locals 3
+
+;    iload_1
+    dconst_1
+    ifge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_3.java
new file mode 100644
index 0000000..d41e72f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifge.jm;
+
+public class T_ifge_3 {
+
+    public boolean run(int a) {
+        return a >= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_4.j
new file mode 100644
index 0000000..c8931a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_4.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifge_4.java
+.class public dxc/junit/opcodes/ifge/jm/T_ifge_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+;    iload_1
+
+    ifge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_4.java
new file mode 100644
index 0000000..c2f54c3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifge.jm;
+
+public class T_ifge_4 {
+
+    public boolean run(int a) {
+        return a >= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.cfh
new file mode 100644
index 0000000..447a6d0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ifge/jm/T_ifge_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 16, h: 0002: utf8{"T_ifge_5.java"}
+    // .  .  .  T  _  i  f  g  e  _  5  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 67 65 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 31, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 50, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 63, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 72, len 7, h: 0006: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 79, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 85, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 90, len 37, h: 0009: utf8{"dxc/junit/opcodes/ifge/jm/T_ifge_5"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  g  e  /  j  m  /  T  _  i  f  g  e  _  5  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 67 65 2f 6a 6d 2f 54 5f 69 66 67 65 5f 35 
+    // parsed:, offset 127, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 134, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 140, len 3, h: 000c: type{dxc.junit.opcodes.ifge.jm.T_ifge_5}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifge.jm.T_ifge_5}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:75,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:44,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 06 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 199, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifge 00ff
+        // .  .  .  
+//@mod     9c 00 05    
+           9c 00 ff 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 219, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 221, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 223, len 0, h: end attributes[0] 
+// parsed:, offset 223, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 223, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 225, len 0, h:  attributes[0]: 
+    // parsed:, offset 225, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 227, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 231, len 2, h: source: utf8{"T_ifge_5.java"}
+    // .  .  
+       00 02 
+// parsed:, offset 233, len 0, h: end attributes[0] 
+// parsed:, offset 233, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.j
new file mode 100644
index 0000000..fa04b63
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifge_5.java
+.class public dxc/junit/opcodes/ifge/jm/T_ifge_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.java
new file mode 100644
index 0000000..51b8426
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifge.jm;
+
+public class T_ifge_5 {
+
+    public boolean run(int a) {
+        return a >= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.cfh
new file mode 100644
index 0000000..ed3e960
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.cfh
@@ -0,0 +1,201 @@
+//@class:dxc/junit/opcodes/ifge/jm/T_ifge_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 7, h: 0005: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 63, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 69, len 37, h: 0007: utf8{"dxc/junit/opcodes/ifge/jm/T_ifge_6"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  g  e  /  j  m  /  T  _  i  f  g  e  _  6  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 67 65 2f 6a 6d 2f 54 5f 69 66 67 65 5f 36 
+    // parsed:, offset 106, len 16, h: 0008: utf8{"T_ifge_6.java"}
+    // .  .  .  T  _  i  f  g  e  _  6  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 67 65 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 122, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 127, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 134, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 140, len 3, h: 000c: type{dxc.junit.opcodes.ifge.jm.T_ifge_6}
+    // .  .  .  
+       07 00 07 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifge.jm.T_ifge_6}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:78,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:47,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 199, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifge 0007
+        // .  .  .  
+//@mod     9c 00 05    
+           9c 00 06 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 7, len 2, h: 0007: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 9, len 1, h: 0009: nop
+        // .  
+           00 
+        // parsed:, offset 10, len 1, h: 000a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 222, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 224, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 226, len 0, h: end attributes[0] 
+// parsed:, offset 226, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 226, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 228, len 0, h:  attributes[0]: 
+    // parsed:, offset 228, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 230, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 234, len 2, h: source: utf8{"T_ifge_6.java"}
+    // .  .  
+       00 08 
+// parsed:, offset 236, len 0, h: end attributes[0] 
+// parsed:, offset 236, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.j
new file mode 100644
index 0000000..be4599c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifge_6.java
+.class public dxc/junit/opcodes/ifge/jm/T_ifge_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.java
new file mode 100644
index 0000000..fef5eda
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifge.jm;
+
+public class T_ifge_6 {
+
+    public boolean run(int a) {
+        return a >= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_7.j b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_7.j
new file mode 100644
index 0000000..90f73f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_7.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifge_7.java
+.class public dxc/junit/opcodes/ifge/jm/T_ifge_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    iflt Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_7.java b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_7.java
new file mode 100644
index 0000000..045dd72
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifge.jm;
+
+public class T_ifge_7 {
+    
+    public boolean run(int a) {
+        return a >= 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/Test_ifgt.java b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/Test_ifgt.java
new file mode 100644
index 0000000..a23c719
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/Test_ifgt.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifgt;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ifgt.jm.T_ifgt_1;
+
+public class Test_ifgt extends DxTestCase {
+
+    /**
+     * @title  Argument = 5
+     */
+    public void testN1() {
+        T_ifgt_1 t = new T_ifgt_1();
+        assertEquals(1, t.run(5));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testN2() {
+        T_ifgt_1 t = new T_ifgt_1();
+        assertEquals(1234, t.run(0));
+    }
+
+    /**
+     * @title  Arguments = -5
+     */
+    public void testN3() {
+        T_ifgt_1 t = new T_ifgt_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(-5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_ifgt_1 t = new T_ifgt_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_ifgt_1 t = new T_ifgt_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifgt.jm.T_ifgt_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifgt.jm.T_ifgt_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifgt.jm.T_ifgt_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifgt.jm.T_ifgt_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifgt.jm.T_ifgt_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifgt.jm.T_ifgt_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_1.j
new file mode 100644
index 0000000..b259343
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifgt_1.java
+.class public dxc/junit/opcodes/ifgt/jm/T_ifgt_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(I)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+   
+    ifgt Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_1.java
new file mode 100644
index 0000000..5578ce0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifgt.jm;
+
+public class T_ifgt_1 {
+
+    public int run(int a) {
+        return a > 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_2.j
new file mode 100644
index 0000000..16cd6de
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifgt_2.java
+.class public dxc/junit/opcodes/ifgt/jm/T_ifgt_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+;    iload_1
+    ifgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_2.java
new file mode 100644
index 0000000..6b130b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifgt.jm;
+
+public class T_ifgt_2 {
+
+    public boolean run(int a) {
+        return a > 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_3.j
new file mode 100644
index 0000000..986ac04
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifgt_3.java
+.class public dxc/junit/opcodes/ifgt/jm/T_ifgt_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 4
+    .limit locals 3
+
+;    iload_1
+    dconst_1
+    ifgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_3.java
new file mode 100644
index 0000000..3e76835
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifgt.jm;
+
+public class T_ifgt_3 {
+
+    public boolean run(int a) {
+        return a > 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_4.j
new file mode 100644
index 0000000..78a8221
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_4.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifgt_4.java
+.class public dxc/junit/opcodes/ifgt/jm/T_ifgt_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+;    iload_1
+
+    ifgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_4.java
new file mode 100644
index 0000000..5b65155
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifgt.jm;
+
+public class T_ifgt_4 {
+
+    public boolean run(int a) {
+        return a > 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.cfh
new file mode 100644
index 0000000..4ce7be3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ifgt/jm/T_ifgt_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 7, h: 0005: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 63, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 69, len 37, h: 0007: utf8{"dxc/junit/opcodes/ifgt/jm/T_ifgt_5"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  g  t  /  j  m  /  T  _  i  f  g  t  _  5  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 67 74 2f 6a 6d 2f 54 5f 69 66 67 74 5f 35 
+    // parsed:, offset 106, len 16, h: 0008: utf8{"T_ifgt_5.java"}
+    // .  .  .  T  _  i  f  g  t  _  5  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 67 74 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 122, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 127, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 134, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 140, len 3, h: 000c: type{dxc.junit.opcodes.ifgt.jm.T_ifgt_5}
+    // .  .  .  
+       07 00 07 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifgt.jm.T_ifgt_5}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:75,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:44,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 199, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifgt 00ff
+        // .  .  .  
+//@mod     9d 00 05    
+           9d 00 ff 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 219, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 221, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 223, len 0, h: end attributes[0] 
+// parsed:, offset 223, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 223, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 225, len 0, h:  attributes[0]: 
+    // parsed:, offset 225, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 227, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 231, len 2, h: source: utf8{"T_ifgt_5.java"}
+    // .  .  
+       00 08 
+// parsed:, offset 233, len 0, h: end attributes[0] 
+// parsed:, offset 233, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.j
new file mode 100644
index 0000000..ec5cb22
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifgt_5.java
+.class public dxc/junit/opcodes/ifgt/jm/T_ifgt_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.java
new file mode 100644
index 0000000..5153975
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifgt.jm;
+
+public class T_ifgt_5 {
+
+    public boolean run(int a) {
+        return a > 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.cfh
new file mode 100644
index 0000000..0b9b936
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.cfh
@@ -0,0 +1,201 @@
+//@class:dxc/junit/opcodes/ifgt/jm/T_ifgt_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 7, h: 0005: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 63, len 37, h: 0006: utf8{"dxc/junit/opcodes/ifgt/jm/T_ifgt_6"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  g  t  /  j  m  /  T  _  i  f  g  t  _  6  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 67 74 2f 6a 6d 2f 54 5f 69 66 67 74 5f 36 
+    // parsed:, offset 100, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 106, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0c 
+    // parsed:, offset 111, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 118, len 16, h: 000a: utf8{"T_ifgt_6.java"}
+    // .  .  .  T  _  i  f  g  t  _  6  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 67 74 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 134, len 3, h: 000b: type{dxc.junit.opcodes.ifgt.jm.T_ifgt_6}
+    // .  .  .  
+       07 00 06 
+    // parsed:, offset 137, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifgt.jm.T_ifgt_6}
+// .  .  
+   00 0b 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:78,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:47,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 199, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifgt 0007
+        // .  .  .  
+//@mod     9d 00 05    
+           9d 00 06 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 7, len 2, h: 0007: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 9, len 1, h: 0009: nop
+        // .  
+           00 
+        // parsed:, offset 10, len 1, h: 000a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 222, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 224, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 226, len 0, h: end attributes[0] 
+// parsed:, offset 226, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 226, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 228, len 0, h:  attributes[0]: 
+    // parsed:, offset 228, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 230, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 234, len 2, h: source: utf8{"T_ifgt_6.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 236, len 0, h: end attributes[0] 
+// parsed:, offset 236, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.j
new file mode 100644
index 0000000..80abe2d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifgt_6.java
+.class public dxc/junit/opcodes/ifgt/jm/T_ifgt_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.java
new file mode 100644
index 0000000..f56d5e0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifgt.jm;
+
+public class T_ifgt_6 {
+
+    public boolean run(int a) {
+        return a > 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_7.j b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_7.j
new file mode 100644
index 0000000..175e006
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_7.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifgt_7.java
+.class public dxc/junit/opcodes/ifgt/jm/T_ifgt_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    ifle Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_7.java b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_7.java
new file mode 100644
index 0000000..4572fbf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifgt.jm;
+
+public class T_ifgt_7 {
+    
+    public boolean run(int a) {
+        return a > 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/Test_ifle.java b/tools/dx-tests/src/dxc/junit/opcodes/ifle/Test_ifle.java
new file mode 100644
index 0000000..9e722fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/Test_ifle.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifle;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ifle.jm.T_ifle_1;
+
+public class Test_ifle extends DxTestCase {
+
+    /**
+     * @title  Argument = 5
+     */
+    public void testN1() {
+        T_ifle_1 t = new T_ifle_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(5));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testN2() {
+        T_ifle_1 t = new T_ifle_1();
+        assertEquals(1, t.run(0));
+    }
+
+    /**
+     * @title  Arguments = -5
+     */
+    public void testN3() {
+        T_ifle_1 t = new T_ifle_1();
+        assertEquals(1, t.run(-5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_ifle_1 t = new T_ifle_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_ifle_1 t = new T_ifle_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifle.jm.T_ifle_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifle.jm.T_ifle_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifle.jm.T_ifle_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifle.jm.T_ifle_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifle.jm.T_ifle_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifle.jm.T_ifle_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_1.j
new file mode 100644
index 0000000..19942fd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifle_1.java
+.class public dxc/junit/opcodes/ifle/jm/T_ifle_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(I)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+   
+    ifle Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_1.java
new file mode 100644
index 0000000..bef4888
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifle.jm;
+
+public class T_ifle_1 {
+
+    public int run(int a) {
+        return a <= 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_2.j
new file mode 100644
index 0000000..21916f4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifle_2.java
+.class public dxc/junit/opcodes/ifle/jm/T_ifle_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+;    iload_1
+    ifle Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_2.java
new file mode 100644
index 0000000..f5b592b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifle.jm;
+
+public class T_ifle_2 {
+
+    public boolean run(int a) {
+        return a <= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_3.j
new file mode 100644
index 0000000..ce3bacb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifle_3.java
+.class public dxc/junit/opcodes/ifle/jm/T_ifle_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 4
+    .limit locals 3
+
+;    iload_1
+    dconst_1
+    ifle Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_3.java
new file mode 100644
index 0000000..5c5ea8a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifle.jm;
+
+public class T_ifle_3 {
+
+    public boolean run(int a) {
+        return a <= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_4.j
new file mode 100644
index 0000000..1d09835
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_4.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifle_4.java
+.class public dxc/junit/opcodes/ifle/jm/T_ifle_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+;    iload_1
+
+    ifle Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_4.java
new file mode 100644
index 0000000..14731b3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifle.jm;
+
+public class T_ifle_4 {
+
+    public boolean run(int a) {
+        return a <= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.cfh
new file mode 100644
index 0000000..1d1f660
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ifle/jm/T_ifle_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 3, h: 0004: type{dxc.junit.opcodes.ifle.jm.T_ifle_5}
+    // .  .  .  
+       07 00 0c 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 7, h: 0006: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 66, len 16, h: 0007: utf8{"T_ifle_5.java"}
+    // .  .  .  T  _  i  f  l  e  _  5  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 6c 65 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 82, len 6, h: 0008: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 88, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 93, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 100, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 106, len 37, h: 000c: utf8{"dxc/junit/opcodes/ifle/jm/T_ifle_5"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  l  e  /  j  m  /  T  _  i  f  l  e  _  5  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6c 65 2f 6a 6d 2f 54 5f 69 66 6c 65 5f 35 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifle.jm.T_ifle_5}
+// .  .  
+   00 04 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:75,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:44,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 08 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 06 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 199, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifle 00ff
+        // .  .  .  
+//@mod     9e 00 05    
+           9e 00 ff 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 219, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 221, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 223, len 0, h: end attributes[0] 
+// parsed:, offset 223, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 223, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 225, len 0, h:  attributes[0]: 
+    // parsed:, offset 225, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 227, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 231, len 2, h: source: utf8{"T_ifle_5.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 233, len 0, h: end attributes[0] 
+// parsed:, offset 233, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.j
new file mode 100644
index 0000000..8005cf8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifle_5.java
+.class public dxc/junit/opcodes/ifle/jm/T_ifle_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifle Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.java
new file mode 100644
index 0000000..bec3678
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifle.jm;
+
+public class T_ifle_5 {
+
+    public boolean run(int a) {
+        return a <= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.cfh
new file mode 100644
index 0000000..d7097b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.cfh
@@ -0,0 +1,201 @@
+//@class:dxc/junit/opcodes/ifle/jm/T_ifle_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 3, h: 0003: type{dxc.junit.opcodes.ifle.jm.T_ifle_6}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 37, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 7, h: 0006: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 66, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 72, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0c 
+    // parsed:, offset 77, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 84, len 16, h: 000a: utf8{"T_ifle_6.java"}
+    // .  .  .  T  _  i  f  l  e  _  6  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 6c 65 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 100, len 37, h: 000b: utf8{"dxc/junit/opcodes/ifle/jm/T_ifle_6"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  l  e  /  j  m  /  T  _  i  f  l  e  _  6  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6c 65 2f 6a 6d 2f 54 5f 69 66 6c 65 5f 36 
+    // parsed:, offset 137, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifle.jm.T_ifle_6}
+// .  .  
+   00 03 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:78,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:47,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 06 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 199, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifle 0007
+        // .  .  .  
+//@mod     9e 00 05    
+           9e 00 06 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 7, len 2, h: 0007: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 9, len 1, h: 0009: nop
+        // .  
+           00 
+        // parsed:, offset 10, len 1, h: 000a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 222, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 224, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 226, len 0, h: end attributes[0] 
+// parsed:, offset 226, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 226, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 228, len 0, h:  attributes[0]: 
+    // parsed:, offset 228, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 230, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 234, len 2, h: source: utf8{"T_ifle_6.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 236, len 0, h: end attributes[0] 
+// parsed:, offset 236, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.j
new file mode 100644
index 0000000..e6d9d8a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifle_6.java
+.class public dxc/junit/opcodes/ifle/jm/T_ifle_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifle Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.java
new file mode 100644
index 0000000..f3abc61
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifle.jm;
+
+public class T_ifle_6 {
+
+    public boolean run(int a) {
+        return a <= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_7.j b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_7.j
new file mode 100644
index 0000000..649773f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_7.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifle_7.java
+.class public dxc/junit/opcodes/ifle/jm/T_ifle_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    ifgt Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_7.java b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_7.java
new file mode 100644
index 0000000..02ca988f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifle.jm;
+
+public class T_ifle_7 {
+    
+    public boolean run(int a) {
+        return a <= 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/Test_iflt.java b/tools/dx-tests/src/dxc/junit/opcodes/iflt/Test_iflt.java
new file mode 100644
index 0000000..edd37e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/Test_iflt.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iflt;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iflt.jm.T_iflt_1;
+
+public class Test_iflt extends DxTestCase {
+
+    /**
+     * @title  Argument = 5
+     */
+    public void testN1() {
+        T_iflt_1 t = new T_iflt_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(5));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testN2() {
+        T_iflt_1 t = new T_iflt_1();
+        assertEquals(1234, t.run(0));
+    }
+
+    /**
+     * @title  Arguments = -5
+     */
+    public void testN3() {
+        T_iflt_1 t = new T_iflt_1();
+        assertEquals(1, t.run(-5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_iflt_1 t = new T_iflt_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_iflt_1 t = new T_iflt_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iflt.jm.T_iflt_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iflt.jm.T_iflt_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iflt.jm.T_iflt_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iflt.jm.T_iflt_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.iflt.jm.T_iflt_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.iflt.jm.T_iflt_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_1.j
new file mode 100644
index 0000000..c10806b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iflt_1.java
+.class public dxc/junit/opcodes/iflt/jm/T_iflt_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(I)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+   
+    iflt Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_1.java
new file mode 100644
index 0000000..2bc2aff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iflt.jm;
+
+public class T_iflt_1 {
+
+    public int run(int a) {
+        return a < 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_2.j
new file mode 100644
index 0000000..b9d0b34
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iflt_2.java
+.class public dxc/junit/opcodes/iflt/jm/T_iflt_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+;    iload_1
+    iflt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_2.java
new file mode 100644
index 0000000..9f48304
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iflt.jm;
+
+public class T_iflt_2 {
+
+    public boolean run(int a) {
+        return a < 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_3.j
new file mode 100644
index 0000000..eec66c2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iflt_3.java
+.class public dxc/junit/opcodes/iflt/jm/T_iflt_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 4
+    .limit locals 3
+
+;    iload_1
+    dconst_1
+    iflt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_3.java
new file mode 100644
index 0000000..a238c05
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iflt.jm;
+
+public class T_iflt_3 {
+
+    public boolean run(int a) {
+        return a < 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_4.j
new file mode 100644
index 0000000..ba405a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_4.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iflt_4.java
+.class public dxc/junit/opcodes/iflt/jm/T_iflt_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+;    iload_1
+
+    iflt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_4.java
new file mode 100644
index 0000000..38e2c68
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iflt.jm;
+
+public class T_iflt_4 {
+
+    public boolean run(int a) {
+        return a < 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.cfh
new file mode 100644
index 0000000..e2301a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/iflt/jm/T_iflt_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 3, h: 0003: type{dxc.junit.opcodes.iflt.jm.T_iflt_5}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 37, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 7, h: 0006: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 66, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 72, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0c 
+    // parsed:, offset 77, len 37, h: 0009: utf8{"dxc/junit/opcodes/iflt/jm/T_iflt_5"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  l  t  /  j  m  /  T  _  i  f  l  t  _  5  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6c 74 2f 6a 6d 2f 54 5f 69 66 6c 74 5f 35 
+    // parsed:, offset 114, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 121, len 16, h: 000b: utf8{"T_iflt_5.java"}
+    // .  .  .  T  _  i  f  l  t  _  5  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 6c 74 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 137, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.iflt.jm.T_iflt_5}
+// .  .  
+   00 03 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:75,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:44,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 06 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 199, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: iflt 00ff
+        // .  .  .  
+//@mod     9b 00 05    
+           9b 00 ff 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 219, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 221, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 223, len 0, h: end attributes[0] 
+// parsed:, offset 223, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 223, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 225, len 0, h:  attributes[0]: 
+    // parsed:, offset 225, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 227, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 231, len 2, h: source: utf8{"T_iflt_5.java"}
+    // .  .  
+       00 0b 
+// parsed:, offset 233, len 0, h: end attributes[0] 
+// parsed:, offset 233, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.j
new file mode 100644
index 0000000..329d205
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iflt_5.java
+.class public dxc/junit/opcodes/iflt/jm/T_iflt_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iflt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.java
new file mode 100644
index 0000000..519a973
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iflt.jm;
+
+public class T_iflt_5 {
+
+    public boolean run(int a) {
+        return a < 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.cfh
new file mode 100644
index 0000000..ee7a8f3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.cfh
@@ -0,0 +1,201 @@
+//@class:dxc/junit/opcodes/iflt/jm/T_iflt_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 3, h: 0002: type{dxc.junit.opcodes.iflt.jm.T_iflt_6}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 18, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 37, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 7, h: 0006: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 66, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 72, len 37, h: 0008: utf8{"dxc/junit/opcodes/iflt/jm/T_iflt_6"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  l  t  /  j  m  /  T  _  i  f  l  t  _  6  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6c 74 2f 6a 6d 2f 54 5f 69 66 6c 74 5f 36 
+    // parsed:, offset 109, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 114, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 121, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 127, len 16, h: 000c: utf8{"T_iflt_6.java"}
+    // .  .  .  T  _  i  f  l  t  _  6  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 6c 74 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.iflt.jm.T_iflt_6}
+// .  .  
+   00 02 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:78,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:47,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 06 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 199, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: iflt 0007
+        // .  .  .  
+//@mod     9b 00 05    
+           9b 00 06 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 7, len 2, h: 0007: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 9, len 1, h: 0009: nop
+        // .  
+           00 
+        // parsed:, offset 10, len 1, h: 000a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 222, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 224, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 226, len 0, h: end attributes[0] 
+// parsed:, offset 226, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 226, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 228, len 0, h:  attributes[0]: 
+    // parsed:, offset 228, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 230, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 234, len 2, h: source: utf8{"T_iflt_6.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 236, len 0, h: end attributes[0] 
+// parsed:, offset 236, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.j
new file mode 100644
index 0000000..69fa9a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iflt_6.java
+.class public dxc/junit/opcodes/iflt/jm/T_iflt_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iflt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.java
new file mode 100644
index 0000000..5d36ee1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iflt.jm;
+
+public class T_iflt_6 {
+
+    public boolean run(int a) {
+        return a < 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_7.j b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_7.j
new file mode 100644
index 0000000..2e985e9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_7.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iflt_7.java
+.class public dxc/junit/opcodes/iflt/jm/T_iflt_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    ifge Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_7.java b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_7.java
new file mode 100644
index 0000000..ecbf595
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iflt.jm;
+
+public class T_iflt_7 {
+    
+    public boolean run(int a) {
+        return a < 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/Test_ifne.java b/tools/dx-tests/src/dxc/junit/opcodes/ifne/Test_ifne.java
new file mode 100644
index 0000000..fc4551e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/Test_ifne.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifne;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ifne.jm.T_ifne_1;
+
+public class Test_ifne extends DxTestCase {
+
+    /**
+     * @title  Argument = 5
+     */
+    public void testN1() {
+        T_ifne_1 t = new T_ifne_1();
+        assertEquals(1, t.run(5));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testN2() {
+        T_ifne_1 t = new T_ifne_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(0));
+    }
+
+    /**
+     * @title  Arguments = -5
+     */
+    public void testN3() {
+        T_ifne_1 t = new T_ifne_1();
+        assertEquals(1, t.run(-5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_ifne_1 t = new T_ifne_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_ifne_1 t = new T_ifne_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifne.jm.T_ifne_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifne.jm.T_ifne_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifne.jm.T_ifne_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifne.jm.T_ifne_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifne.jm.T_ifne_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifne.jm.T_ifne_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_1.j
new file mode 100644
index 0000000..34204a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifne_1.java
+.class public dxc/junit/opcodes/ifne/jm/T_ifne_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(I)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+   
+    ifne Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_1.java
new file mode 100644
index 0000000..732a1a0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifne.jm;
+
+public class T_ifne_1 {
+
+    public int run(int a) {
+        return a != 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_2.j
new file mode 100644
index 0000000..f5c9b87
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifne_2.java
+.class public dxc/junit/opcodes/ifne/jm/T_ifne_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+;    iload_1
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_2.java
new file mode 100644
index 0000000..ae1a1d5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifne.jm;
+
+public class T_ifne_2 {
+
+    public boolean run(int a) {
+        return a != 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_3.j
new file mode 100644
index 0000000..7fb2fa9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifne_3.java
+.class public dxc/junit/opcodes/ifne/jm/T_ifne_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 4
+    .limit locals 3
+
+;    iload_1
+    dconst_1
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_3.java
new file mode 100644
index 0000000..20722fd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifne.jm;
+
+public class T_ifne_3 {
+
+    public boolean run(int a) {
+        return a != 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_4.j
new file mode 100644
index 0000000..5149438
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_4.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifne_4.java
+.class public dxc/junit/opcodes/ifne/jm/T_ifne_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+;    iload_1
+
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_4.java
new file mode 100644
index 0000000..8dd3ad5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifne.jm;
+
+public class T_ifne_4 {
+
+    public boolean run(int a) {
+        return a != 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.cfh
new file mode 100644
index 0000000..d29f6ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ifne/jm/T_ifne_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 16, h: 0002: utf8{"T_ifne_5.java"}
+    // .  .  .  T  _  i  f  n  e  _  5  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 6e 65 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 31, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 50, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 63, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 72, len 7, h: 0006: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 79, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 85, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 90, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 97, len 37, h: 000a: utf8{"dxc/junit/opcodes/ifne/jm/T_ifne_5"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  n  e  /  j  m  /  T  _  i  f  n  e  _  5  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6e 65 2f 6a 6d 2f 54 5f 69 66 6e 65 5f 35 
+    // parsed:, offset 134, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 140, len 3, h: 000c: type{dxc.junit.opcodes.ifne.jm.T_ifne_5}
+    // .  .  .  
+       07 00 0a 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifne.jm.T_ifne_5}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:75,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:44,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 06 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 199, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifne 00ff
+        // .  .  .  
+//@mod     9a 00 05    
+           9a 00 ff 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 219, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 221, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 223, len 0, h: end attributes[0] 
+// parsed:, offset 223, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 223, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 225, len 0, h:  attributes[0]: 
+    // parsed:, offset 225, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 227, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 231, len 2, h: source: utf8{"T_ifne_5.java"}
+    // .  .  
+       00 02 
+// parsed:, offset 233, len 0, h: end attributes[0] 
+// parsed:, offset 233, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.j
new file mode 100644
index 0000000..96b5869
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifne_5.java
+.class public dxc/junit/opcodes/ifne/jm/T_ifne_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.java
new file mode 100644
index 0000000..13dac02
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifne.jm;
+
+public class T_ifne_5 {
+
+    public boolean run(int a) {
+        return a != 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.cfh
new file mode 100644
index 0000000..d195942
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.cfh
@@ -0,0 +1,201 @@
+//@class:dxc/junit/opcodes/ifne/jm/T_ifne_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 7, h: 0005: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 63, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 69, len 16, h: 0007: utf8{"T_ifne_6.java"}
+    // .  .  .  T  _  i  f  n  e  _  6  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 6e 65 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 85, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 90, len 37, h: 0009: utf8{"dxc/junit/opcodes/ifne/jm/T_ifne_6"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  n  e  /  j  m  /  T  _  i  f  n  e  _  6  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6e 65 2f 6a 6d 2f 54 5f 69 66 6e 65 5f 36 
+    // parsed:, offset 127, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 134, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 140, len 3, h: 000c: type{dxc.junit.opcodes.ifne.jm.T_ifne_6}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifne.jm.T_ifne_6}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:78,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:47,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 199, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifne 0007
+        // .  .  .  
+//@mod     9a 00 05    
+           9a 00 06 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: wide
+        // .  
+//@mod     00
+           c4 
+        // parsed:, offset 7, len 2, h: 0007: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 9, len 1, h: 0009: nop
+        // .  
+           00 
+        // parsed:, offset 10, len 1, h: 000a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 222, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 224, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 226, len 0, h: end attributes[0] 
+// parsed:, offset 226, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 226, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 228, len 0, h:  attributes[0]: 
+    // parsed:, offset 228, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 230, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 234, len 2, h: source: utf8{"T_ifne_6.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 236, len 0, h: end attributes[0] 
+// parsed:, offset 236, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.j
new file mode 100644
index 0000000..9ac3dfc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifne_6.java
+.class public dxc/junit/opcodes/ifne/jm/T_ifne_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.java
new file mode 100644
index 0000000..4c1f04a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifne.jm;
+
+public class T_ifne_6 {
+
+    public boolean run(int a) {
+        return a != 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_7.j b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_7.j
new file mode 100644
index 0000000..4c55236
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_7.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifne_7.java
+.class public dxc/junit/opcodes/ifne/jm/T_ifne_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    ifeq Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_7.java b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_7.java
new file mode 100644
index 0000000..29af909
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifne.jm;
+
+public class T_ifne_7 {
+    
+    public boolean run(int a) {
+        return a != 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/Test_ifnonnull.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/Test_ifnonnull.java
new file mode 100644
index 0000000..d8b5c71
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/Test_ifnonnull.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifnonnull;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_1;
+
+public class Test_ifnonnull extends DxTestCase {
+
+    /**
+     * @title  Argument = this
+     */
+    public void testN1() {
+        T_ifnonnull_1 t = new T_ifnonnull_1();
+        assertEquals(1, t.run(this));
+    }
+
+    /**
+     * @title  Argument = null
+     */
+    public void testN2() {
+        T_ifnonnull_1 t = new T_ifnonnull_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(null));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_1.j
new file mode 100644
index 0000000..2eb0c73
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifne_1.java
+.class public dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(Ljava/lang/Object;)I
+    .limit stack 2
+    .limit locals 3
+    
+    aload_1
+   
+    ifnonnull Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_1.java
new file mode 100644
index 0000000..014b4f9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifnonnull.jm;
+
+public class T_ifnonnull_1 {
+
+    public int run(Object o) {
+        return o != null ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_2.j
new file mode 100644
index 0000000..813c5aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifnonnull_2.java
+.class public dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+;    aload_1
+    ifnonnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_2.java
new file mode 100644
index 0000000..9285306
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifnonnull.jm;
+
+public class T_ifnonnull_2 {
+
+    public boolean run(Object o) {
+        return o != null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_3.j
new file mode 100644
index 0000000..ab9f3ee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifnonnull_3.java
+.class public dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 4
+    .limit locals 3
+
+;    aload_1
+    dconst_1
+    ifnonnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_3.java
new file mode 100644
index 0000000..ae1407f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifnonnull.jm;
+
+public class T_ifnonnull_3 {
+
+    public boolean run(Object o) {
+        return o != null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_4.j
new file mode 100644
index 0000000..396a721
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_4.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifnonnull_4.java
+.class public dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+;    aload_1
+
+    ifnonnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_4.java
new file mode 100644
index 0000000..adba24a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifnonnull.jm;
+
+public class T_ifnonnull_4 {
+
+    public boolean run(Object o) {
+        return o != null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.cfh
new file mode 100644
index 0000000..b430047
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 47, h: 0003: utf8{"dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  n  o  n  n  u  l  l  /  j  m  /  T  _  i  f  n  o  n  n  u  l  l  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6e 6f 6e 6e 75 6c 6c 2f 6a 6d 2f 54 5f 69 66 6e 6f 6e 6e 75 6c 6c 5f 35 
+    // parsed:, offset 81, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 94, len 24, h: 0005: utf8{"(Ljava/lang/Object;)Z"}
+    // .  .  .  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 118, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 127, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 133, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0c 
+    // parsed:, offset 138, len 21, h: 0009: utf8{"T_ifnonnull_5.java"}
+    // .  .  .  T  _  i  f  n  o  n  n  u  l  l  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 6e 6f 6e 6e 75 6c 6c 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 159, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 166, len 3, h: 000b: type{dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_5}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 169, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 175, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 178, len 0, h: end constant_pool
+// parsed:, offset 178, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 180, len 2, h: this_class: type{dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_5}
+// .  .  
+   00 0b 
+// parsed:, offset 182, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 184, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 186, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 188, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 190, len:75,desc: ()V
+// parsed:, offset 190, len 0, h:  methods[0]: 
+    // parsed:, offset 190, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 192, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 194, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 196, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 198, len 0, h:  attributes[0]: 
+        // parsed:, offset 198, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 200, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 204, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 206, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 208, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 217, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 219, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 221, len 0, h: end attributes[0] 
+// parsed:, offset 221, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 221, len:44,desc: (Ljava/lang/Object;)Z
+// parsed:, offset 221, len 0, h:  methods[1]: 
+    // parsed:, offset 221, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 223, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 225, len 2, h: descriptor: (Ljava/lang/Object;)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 227, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 229, len 0, h:  attributes[0]: 
+        // parsed:, offset 229, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 231, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 235, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 237, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 239, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 3, h: 0001: ifnonnull 00ff
+        // .  .  .  
+//@mod     c7 00 05    
+           c7 00 ff 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 251, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 253, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 255, len 0, h: end attributes[0] 
+// parsed:, offset 255, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;)Z
+// parsed:, offset 255, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 257, len 0, h:  attributes[0]: 
+    // parsed:, offset 257, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 259, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 263, len 2, h: source: utf8{"T_ifnonnull_5.java"}
+    // .  .  
+       00 09 
+// parsed:, offset 265, len 0, h: end attributes[0] 
+// parsed:, offset 265, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.j
new file mode 100644
index 0000000..087febb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifnonnull_5.java
+.class public dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    ifnonnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.java
new file mode 100644
index 0000000..8d400cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifnonnull.jm;
+
+public class T_ifnonnull_5 {
+
+    public boolean run(Object o) {
+        return o != null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.cfh
new file mode 100644
index 0000000..913fcfc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.cfh
@@ -0,0 +1,201 @@
+//@class:dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 47, h: 0003: utf8{"dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  n  o  n  n  u  l  l  /  j  m  /  T  _  i  f  n  o  n  n  u  l  l  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6e 6f 6e 6e 75 6c 6c 2f 6a 6d 2f 54 5f 69 66 6e 6f 6e 6e 75 6c 6c 5f 36 
+    // parsed:, offset 81, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 94, len 24, h: 0005: utf8{"(Ljava/lang/Object;)Z"}
+    // .  .  .  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 118, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 127, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 133, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0b 
+    // parsed:, offset 138, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 145, len 3, h: 000a: type{dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_6}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 148, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 154, len 21, h: 000c: utf8{"T_ifnonnull_6.java"}
+    // .  .  .  T  _  i  f  n  o  n  n  u  l  l  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 6e 6f 6e 6e 75 6c 6c 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 175, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 178, len 0, h: end constant_pool
+// parsed:, offset 178, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 180, len 2, h: this_class: type{dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_6}
+// .  .  
+   00 0a 
+// parsed:, offset 182, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 184, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 186, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 188, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 190, len:78,desc: ()V
+// parsed:, offset 190, len 0, h:  methods[0]: 
+    // parsed:, offset 190, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 192, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 194, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 196, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 198, len 0, h:  attributes[0]: 
+        // parsed:, offset 198, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 200, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 204, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 206, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 208, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 217, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 219, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 221, len 0, h: end attributes[0] 
+// parsed:, offset 221, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 221, len:47,desc: (Ljava/lang/Object;)Z
+// parsed:, offset 221, len 0, h:  methods[1]: 
+    // parsed:, offset 221, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 223, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 225, len 2, h: descriptor: (Ljava/lang/Object;)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 227, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 229, len 0, h:  attributes[0]: 
+        // parsed:, offset 229, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 231, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 235, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 237, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 239, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 3, h: 0001: ifnonnull 0007
+        // .  .  .  
+//@mod     c7 00 05    
+           c7 00 06 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 7, len 2, h: 0007: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 9, len 1, h: 0009: nop
+        // .  
+           00 
+        // parsed:, offset 10, len 1, h: 000a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 254, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 256, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 258, len 0, h: end attributes[0] 
+// parsed:, offset 258, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;)Z
+// parsed:, offset 258, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 260, len 0, h:  attributes[0]: 
+    // parsed:, offset 260, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 262, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 266, len 2, h: source: utf8{"T_ifnonnull_6.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 268, len 0, h: end attributes[0] 
+// parsed:, offset 268, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.j
new file mode 100644
index 0000000..10daa6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifnonnull_6.java
+.class public dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    ifnonnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.java
new file mode 100644
index 0000000..062b42a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifnonnull.jm;
+
+public class T_ifnonnull_6 {
+
+    public boolean run(Object o) {
+        return o != null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/Test_ifnull.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/Test_ifnull.java
new file mode 100644
index 0000000..a7b5eac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/Test_ifnull.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifnull;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ifnull.jm.T_ifnull_1;
+
+public class Test_ifnull extends DxTestCase {
+
+    /**
+     * @title  Argument = this
+     */
+    public void testN1() {
+        T_ifnull_1 t = new T_ifnull_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(this));
+    }
+
+    /**
+     * @title  Argument = null
+     */
+    public void testN2() {
+        T_ifnull_1 t = new T_ifnull_1();
+        assertEquals(1, t.run(null));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnull.jm.T_ifnull_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnull.jm.T_ifnull_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnull.jm.T_ifnull_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnull.jm.T_ifnull_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnull.jm.T_ifnull_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_1.j
new file mode 100644
index 0000000..e95e9f4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifne_1.java
+.class public dxc/junit/opcodes/ifnull/jm/T_ifnull_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(Ljava/lang/Object;)I
+    .limit stack 2
+    .limit locals 3
+    
+    aload_1
+   
+    ifnull Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_1.java
new file mode 100644
index 0000000..73d7b4a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifnull.jm;
+
+public class T_ifnull_1 {
+
+    public int run(Object o) {
+        return o == null ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_2.j
new file mode 100644
index 0000000..77cbbd3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifnull_2.java
+.class public dxc/junit/opcodes/ifnull/jm/T_ifnull_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+;    aload_1
+    ifnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_2.java
new file mode 100644
index 0000000..2efb995
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifnull.jm;
+
+public class T_ifnull_2 {
+
+    public boolean run(Object o) {
+        return o == null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_3.j
new file mode 100644
index 0000000..04c94b2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_3.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifnull_3.java
+.class public dxc/junit/opcodes/ifnull/jm/T_ifnull_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 4
+    .limit locals 3
+
+    dconst_1
+    ifnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_3.java
new file mode 100644
index 0000000..44c32e9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifnull.jm;
+
+public class T_ifnull_3 {
+
+    public boolean run(Object o) {
+        return o == null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_4.j
new file mode 100644
index 0000000..780f5bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_4.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifnull_4.java
+.class public dxc/junit/opcodes/ifnull/jm/T_ifnull_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+;    aload_1
+
+    ifnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_4.java
new file mode 100644
index 0000000..0a59962
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifnull.jm;
+
+public class T_ifnull_4 {
+
+    public boolean run(Object o) {
+        return o == null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.cfh
new file mode 100644
index 0000000..b507146
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ifnull/jm/T_ifnull_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 24, h: 0004: utf8{"(Ljava/lang/Object;)Z"}
+    // .  .  .  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 71, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 80, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 86, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 91, len 41, h: 0008: utf8{"dxc/junit/opcodes/ifnull/jm/T_ifnull_5"}
+    // .  .  &  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  n  u  l  l  /  j  m  /  T  _  i  f  n  u  l  l  _  5  
+       01 00 26 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6e 75 6c 6c 2f 6a 6d 2f 54 5f 69 66 6e 75 6c 6c 5f 35 
+    // parsed:, offset 132, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 139, len 3, h: 000a: type{dxc.junit.opcodes.ifnull.jm.T_ifnull_5}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 142, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 148, len 18, h: 000c: utf8{"T_ifnull_5.java"}
+    // .  .  .  T  _  i  f  n  u  l  l  _  5  .  j  a  v  a  
+       01 00 0f 54 5f 69 66 6e 75 6c 6c 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 166, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 169, len 0, h: end constant_pool
+// parsed:, offset 169, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 171, len 2, h: this_class: type{dxc.junit.opcodes.ifnull.jm.T_ifnull_5}
+// .  .  
+   00 0a 
+// parsed:, offset 173, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 175, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 177, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 179, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 181, len:75,desc: ()V
+// parsed:, offset 181, len 0, h:  methods[0]: 
+    // parsed:, offset 181, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 183, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 185, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 187, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 0, h:  attributes[0]: 
+        // parsed:, offset 189, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 191, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 195, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 197, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 199, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 208, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 210, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 212, len 0, h: end attributes[0] 
+// parsed:, offset 212, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 212, len:44,desc: (Ljava/lang/Object;)Z
+// parsed:, offset 212, len 0, h:  methods[1]: 
+    // parsed:, offset 212, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 214, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 216, len 2, h: descriptor: (Ljava/lang/Object;)Z
+    // .  .  
+       00 04 
+    // parsed:, offset 218, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 220, len 0, h:  attributes[0]: 
+        // parsed:, offset 220, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 222, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 226, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 228, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 230, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 3, h: 0001: ifnull 00ff
+        // .  .  .  
+//@mod     c6 00 05    
+           c6 00 ff 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 242, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 244, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 246, len 0, h: end attributes[0] 
+// parsed:, offset 246, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;)Z
+// parsed:, offset 246, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 248, len 0, h:  attributes[0]: 
+    // parsed:, offset 248, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 250, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 254, len 2, h: source: utf8{"T_ifnull_5.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 256, len 0, h: end attributes[0] 
+// parsed:, offset 256, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.j
new file mode 100644
index 0000000..bf01958
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifnull_5.java
+.class public dxc/junit/opcodes/ifnull/jm/T_ifnull_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    ifnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.java
new file mode 100644
index 0000000..4a67ef1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifnull.jm;
+
+public class T_ifnull_5 {
+
+    public boolean run(Object o) {
+        return o == null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.cfh
new file mode 100644
index 0000000..faf3fcd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.cfh
@@ -0,0 +1,201 @@
+//@class:dxc/junit/opcodes/ifnull/jm/T_ifnull_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 18, h: 0003: utf8{"T_ifnull_6.java"}
+    // .  .  .  T  _  i  f  n  u  l  l  _  6  .  j  a  v  a  
+       01 00 0f 54 5f 69 66 6e 75 6c 6c 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 52, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 65, len 24, h: 0005: utf8{"(Ljava/lang/Object;)Z"}
+    // .  .  .  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 89, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 98, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 104, len 41, h: 0008: utf8{"dxc/junit/opcodes/ifnull/jm/T_ifnull_6"}
+    // .  .  &  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  n  u  l  l  /  j  m  /  T  _  i  f  n  u  l  l  _  6  
+       01 00 26 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6e 75 6c 6c 2f 6a 6d 2f 54 5f 69 66 6e 75 6c 6c 5f 36 
+    // parsed:, offset 145, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0c 
+    // parsed:, offset 150, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 157, len 3, h: 000b: type{dxc.junit.opcodes.ifnull.jm.T_ifnull_6}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 160, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 166, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 169, len 0, h: end constant_pool
+// parsed:, offset 169, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 171, len 2, h: this_class: type{dxc.junit.opcodes.ifnull.jm.T_ifnull_6}
+// .  .  
+   00 0b 
+// parsed:, offset 173, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 175, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 177, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 179, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 181, len:78,desc: ()V
+// parsed:, offset 181, len 0, h:  methods[0]: 
+    // parsed:, offset 181, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 183, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 185, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 187, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 0, h:  attributes[0]: 
+        // parsed:, offset 189, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 191, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 195, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 197, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 199, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 208, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 210, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 212, len 0, h: end attributes[0] 
+// parsed:, offset 212, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 212, len:47,desc: (Ljava/lang/Object;)Z
+// parsed:, offset 212, len 0, h:  methods[1]: 
+    // parsed:, offset 212, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 214, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 216, len 2, h: descriptor: (Ljava/lang/Object;)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 218, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 220, len 0, h:  attributes[0]: 
+        // parsed:, offset 220, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 222, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 226, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 228, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 230, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 3, h: 0001: ifnull 0007
+        // .  .  .  
+//@mod     c6 00 05    
+           c6 00 06 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: nop
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 7, len 2, h: 0007: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 9, len 1, h: 0009: nop
+        // .  
+           00 
+        // parsed:, offset 10, len 1, h: 000a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 245, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 247, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 249, len 0, h: end attributes[0] 
+// parsed:, offset 249, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;)Z
+// parsed:, offset 249, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 251, len 0, h:  attributes[0]: 
+    // parsed:, offset 251, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 253, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 257, len 2, h: source: utf8{"T_ifnull_6.java"}
+    // .  .  
+       00 03 
+// parsed:, offset 259, len 0, h: end attributes[0] 
+// parsed:, offset 259, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.j
new file mode 100644
index 0000000..26ed54c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ifnull_6.java
+.class public dxc/junit/opcodes/ifnull/jm/T_ifnull_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    ifnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.java
new file mode 100644
index 0000000..8429521
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ifnull.jm;
+
+public class T_ifnull_6 {
+
+    public boolean run(Object o) {
+        return o == null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/Test_iinc.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/Test_iinc.java
new file mode 100644
index 0000000..f512026
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/Test_iinc.java
@@ -0,0 +1,309 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iinc.jm.T_iinc_1;
+import dxc.junit.opcodes.iinc.jm.T_iinc_1_w;
+import dxc.junit.opcodes.iinc.jm.T_iinc_2;
+import dxc.junit.opcodes.iinc.jm.T_iinc_2_w;
+import dxc.junit.opcodes.iinc.jm.T_iinc_3;
+import dxc.junit.opcodes.iinc.jm.T_iinc_3_w;
+import dxc.junit.opcodes.iinc.jm.T_iinc_4;
+import dxc.junit.opcodes.iinc.jm.T_iinc_4_w;
+import dxc.junit.opcodes.iinc.jm.T_iinc_5;
+import dxc.junit.opcodes.iinc.jm.T_iinc_5_w;
+import dxc.junit.opcodes.iinc.jm.T_iinc_6;
+import dxc.junit.opcodes.iinc.jm.T_iinc_6_w;
+
+public class Test_iinc extends DxTestCase {
+
+    /*
+     * NORMAL IINC VERSION
+     */
+
+    /**
+     * @title  Increment by 1
+     */
+    public void testN1() {
+        T_iinc_1 t = new T_iinc_1();
+        assertEquals(5, t.run(4));
+    }
+
+    /**
+     * @title  Increment by -1
+     */
+    public void testN2() {
+        T_iinc_2 t = new T_iinc_2();
+        assertEquals(3, t.run(4));
+    }
+
+    /**
+     * @title  Increment by 63
+     */
+    public void testN3() {
+        T_iinc_3 t = new T_iinc_3();
+        assertEquals(67, t.run(4));
+    }
+
+    /**
+     * @title  Increment by 0
+     */
+    public void testB1() {
+        T_iinc_4 t = new T_iinc_4();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Increment by 0
+     */
+    public void testB2() {
+        T_iinc_4 t = new T_iinc_4();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Increment by 127
+     */
+    public void testB3() {
+        T_iinc_5 t = new T_iinc_5();
+        assertEquals(128, t.run(1));
+    }
+
+    /**
+     * @title  Increment by 127
+     */
+    public void testB4() {
+        T_iinc_5 t = new T_iinc_5();
+        assertEquals(126, t.run(-1));
+    }
+
+    /**
+     * @title  Increment by 127
+     */
+    public void testB5() {
+        T_iinc_5 t = new T_iinc_5();
+        assertEquals(-2147483521, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Increment by -128
+     */
+    public void testB6() {
+        T_iinc_6 t = new T_iinc_6();
+        assertEquals(-127, t.run(1));
+    }
+
+    /**
+     * @title  Increment by -128
+     */
+    public void testB7() {
+        T_iinc_6 t = new T_iinc_6();
+        assertEquals(-128, t.run(0));
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index must be no greater than
+     * max_locals-1.
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index must be a nonnegative integer.
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE IINC VERSION
+     */
+
+    /**
+     * @title  Increment by 1
+     */
+    public void testN4() {
+        T_iinc_1_w t = new T_iinc_1_w();
+        assertEquals(5, t.run(4));
+    }
+
+    /**
+     * @title  Increment by -1
+     */
+    public void testN5() {
+        T_iinc_2_w t = new T_iinc_2_w();
+        assertEquals(3, t.run(4));
+    }
+
+    /**
+     * @title  Increment by 7763
+     */
+    public void testN6() {
+        T_iinc_3_w t = new T_iinc_3_w();
+        assertEquals(7767, t.run(4));
+    }
+
+    /**
+     * @title  Increment by 0
+     */
+    public void testB8() {
+        T_iinc_4_w t = new T_iinc_4_w();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Increment by 0
+     */
+    public void testB9() {
+        T_iinc_4_w t = new T_iinc_4_w();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Increment by 32767
+     */
+    public void testB10() {
+        T_iinc_5_w t = new T_iinc_5_w();
+        assertEquals(32768, t.run(1));
+    }
+
+    /**
+     * @title  Increment by 32767
+     */
+    public void testB11() {
+        T_iinc_5_w t = new T_iinc_5_w();
+        assertEquals(32766, t.run(-1));
+    }
+
+    /**
+     * @title  Increment by 32767
+     */
+    public void testB12() {
+        T_iinc_5_w t = new T_iinc_5_w();
+        assertEquals(-2147450881, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Increment by -32768
+     */
+    public void testB13() {
+        T_iinc_6_w t = new T_iinc_6_w();
+        assertEquals(-32767, t.run(1));
+    }
+
+    /**
+     * @title  Increment by -32768
+     */
+    public void testB14() {
+        T_iinc_6_w t = new T_iinc_6_w();
+        assertEquals(-32768, t.run(0));
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than
+     * max_locals-1.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_7_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be a nonnegative integer.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_8_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_9_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_10_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1.j
new file mode 100644
index 0000000..403078c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_1.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iinc 1 1
+    iload_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1.java
new file mode 100644
index 0000000..9bcfb92
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_1 {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10.j
new file mode 100644
index 0000000..9d0dfed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_10.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 2
+    .limit locals 4
+
+    lconst_1
+    lstore 2
+    iinc 2 1
+    iload_2
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10.java
new file mode 100644
index 0000000..6e0f42b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_10 {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10_w.j
new file mode 100644
index 0000000..82129ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_10_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_10_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 2
+    .limit locals 300
+
+    lconst_1
+    lstore 260
+    iinc 260 1
+    iload 260
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10_w.java
new file mode 100644
index 0000000..cedfff7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_10_w {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1_w.j
new file mode 100644
index 0000000..5c88a81
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_1.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 300
+    
+    iload_1
+    istore 270
+    iinc 270 1
+    iload 270
+    
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1_w.java
new file mode 100644
index 0000000..1f2348e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_1_w {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2.j
new file mode 100644
index 0000000..3faa1ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_2.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iinc 1 -1
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2.java
new file mode 100644
index 0000000..e4b3725
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_2 {
+
+    public int run(int a) {
+        return --a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2_w.j
new file mode 100644
index 0000000..63ed027
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_2_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_2_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 300
+
+    iload_1
+    istore 270
+    iinc 270 -1
+    iload 270
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2_w.java
new file mode 100644
index 0000000..952321f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_2_w {
+
+    public int run(int a) {
+        return --a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3.j
new file mode 100644
index 0000000..f22fe25
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_3.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iinc 1 63
+    iload_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3.java
new file mode 100644
index 0000000..8b3f2e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_3 {
+
+    public int run(int a) {
+        a += 63;
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3_w.j
new file mode 100644
index 0000000..69d795f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3_w.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_3_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_3_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iinc 1 7763
+    iload_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3_w.java
new file mode 100644
index 0000000..4da58fe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_3_w {
+
+    public int run(int a) {
+        a += 7763;
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4.j
new file mode 100644
index 0000000..e944fa3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_4.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iinc 1 0
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4.java
new file mode 100644
index 0000000..33b93ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_4 {
+
+    public int run(int a) {
+        a += 0;
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4_w.j
new file mode 100644
index 0000000..cb5907e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_4_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_4_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 3000
+
+    iload_1
+    istore 2500
+    iinc 2500 0
+    iload 2500
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4_w.java
new file mode 100644
index 0000000..ea02795
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_4_w {
+
+    public int run(int a) {
+        a += 0;
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5.j
new file mode 100644
index 0000000..4371611
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_5.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 30
+
+    iload_1
+    istore 25
+    iinc 25 127
+    iload 25
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5.java
new file mode 100644
index 0000000..bbeef43
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_5 {
+
+    public int run(int a) {
+        a += 127;
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5_w.j
new file mode 100644
index 0000000..f3b9b52
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_5_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_5_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 300
+
+    iload_1
+    istore 257
+    iinc 257 32767
+    iload 257
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5_w.java
new file mode 100644
index 0000000..b80fab8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_5_w {
+
+    public int run(int a) {
+        a += 32767;
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6.j
new file mode 100644
index 0000000..caaf6ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_6.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iinc 1 -128
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6.java
new file mode 100644
index 0000000..f04d664
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_6 {
+
+     public int run(int a) {
+         a += -128;
+         return a;
+     }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6_w.j
new file mode 100644
index 0000000..5b004ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_6_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_6_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 300
+    
+    iload_1
+    istore 260
+
+    iinc 260 -32768
+    iload 260
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6_w.java
new file mode 100644
index 0000000..47a9fd1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_6_w {
+
+     public int run(int a) {
+         a += -32768;
+         return a;
+     }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7.j
new file mode 100644
index 0000000..acd3e81
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_7.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iinc 2 1
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7.java
new file mode 100644
index 0000000..8915c15
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_7 {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7_w.j
new file mode 100644
index 0000000..a885b87
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7_w.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_7_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_7_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 300
+
+    iinc 300 1
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7_w.java
new file mode 100644
index 0000000..dcdc59e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_7_w {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8.j
new file mode 100644
index 0000000..9af573f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_8.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iinc -2 1
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8.java
new file mode 100644
index 0000000..90b3421
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_8 {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8_w.j
new file mode 100644
index 0000000..6ba8c0a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8_w.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_8_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_8_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iinc -2 32001
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8_w.java
new file mode 100644
index 0000000..2d4fd16
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_8_w {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9.j
new file mode 100644
index 0000000..d41db14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_9.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 2
+    .limit locals 4
+
+    dconst_1
+    dstore 2
+    iinc 2 1
+    iload_2
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9.java
new file mode 100644
index 0000000..64c04d9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_9 {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9_w.j
new file mode 100644
index 0000000..09efab5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iinc_9_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_9_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 2
+    .limit locals 300
+
+    dconst_1
+    dstore 260
+    iinc 260 1
+    iload 260
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9_w.java
new file mode 100644
index 0000000..f2f6934
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_9_w {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/Test_iload.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/Test_iload.java
new file mode 100644
index 0000000..71cf115
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/Test_iload.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iload.jm.T_iload_1;
+import dxc.junit.opcodes.iload.jm.T_iload_1_w;
+import dxc.junit.opcodes.iload.jm.T_iload_2;
+import dxc.junit.opcodes.iload.jm.T_iload_2_w;
+
+public class Test_iload extends DxTestCase {
+
+    /*
+     * NORMAL ILOAD VERSION
+     */
+
+    /**
+     * @title  Test iload 1
+     */
+    public void testN1() {
+        T_iload_1 t = new T_iload_1();
+        assertEquals(4, t.run());
+    }
+
+    /**
+     * @title  Test iload 255
+     */
+    public void testN2() {
+        T_iload_2 t = new T_iload_2();
+        assertEquals(3, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload.jm.T_iload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload.jm.T_iload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload.jm.T_iload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload.jm.T_iload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE ILOAD VERSION
+     */
+
+    /**
+     * @title  Test iload 257
+     */
+    public void testN3() {
+        T_iload_1_w t = new T_iload_1_w();
+        assertEquals(4, t.run());
+    }
+
+    /**
+     * @title  Test iload_w 1
+     */
+    public void testN4() {
+        T_iload_2_w t = new T_iload_2_w();
+        assertEquals(3, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload.jm.T_iload_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload.jm.T_iload_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload.jm.T_iload_5_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload.jm.T_iload_6_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1.j
new file mode 100644
index 0000000..3083ee0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_1.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 2
+    .limit locals 6
+    
+    iconst_4
+    istore 4
+    iconst_3
+    iload 4
+    
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1.java
new file mode 100644
index 0000000..9bef2f2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_1 {
+
+    public int run() {
+        return 4;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1_w.j
new file mode 100644
index 0000000..9e31e93
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_1_w.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_1_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 2
+    .limit locals 300
+    
+    iconst_4
+    istore 257
+    iconst_3
+    iload 257
+    
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1_w.java
new file mode 100644
index 0000000..57842b5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_1_w {
+
+    public int run() {
+        return 4;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2.j
new file mode 100644
index 0000000..dfbad28
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_2.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 2
+    .limit locals 300
+    
+    iconst_3
+    istore 255
+    iconst_2
+    iload 255
+    
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2.java
new file mode 100644
index 0000000..c75bf95
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_2 {
+
+      public int run() {
+            return 3;
+        }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2_w.j
new file mode 100644
index 0000000..d11251f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_2_w.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_2_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 2
+    .limit locals 2
+    
+    iconst_3
+    istore 1
+    iconst_2
+    iload_w 1
+    
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2_w.java
new file mode 100644
index 0000000..fe5b114
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_2_w {
+
+      public int run() {
+            return 3;
+        }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3.j
new file mode 100644
index 0000000..eaa2990
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_3.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    iload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3.java
new file mode 100644
index 0000000..36e8376
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_3 {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3_w.j
new file mode 100644
index 0000000..9e892c3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_3_w.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_3_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 300
+
+    iload 300
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3_w.java
new file mode 100644
index 0000000..6bf6191
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_3_w {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4.j
new file mode 100644
index 0000000..318a2a3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_4.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_0
+    
+    iload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4.java
new file mode 100644
index 0000000..1fe18fa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_4 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4_w.j
new file mode 100644
index 0000000..541c077
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_4_w.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_4_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 300
+
+    dconst_1
+    dstore 260
+    
+    iload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4_w.java
new file mode 100644
index 0000000..c293b5a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_4_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5.j
new file mode 100644
index 0000000..7bf6e93
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_5.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_0
+    
+    iload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5.java
new file mode 100644
index 0000000..67cb0a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_5 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5_w.j
new file mode 100644
index 0000000..91208fd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_5_w.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_5_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 300
+
+    lconst_1
+    lstore 260
+    
+    iload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5_w.java
new file mode 100644
index 0000000..78882d0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_5_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6.j
new file mode 100644
index 0000000..9363f54
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_6.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    iconst_1
+    istore_0
+    
+    iload 0
+    iload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6.java
new file mode 100644
index 0000000..4b0ca5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_6 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6_w.j
new file mode 100644
index 0000000..dd93b27
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_6_w.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_6_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 300
+
+    iconst_1
+    istore 260
+    
+    iload_w 260
+    iload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6_w.java
new file mode 100644
index 0000000..f5e118b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_6_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/Test_iload_0.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/Test_iload_0.java
new file mode 100644
index 0000000..ffb8684
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/Test_iload_0.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iload_0.jm.T_iload_0_1;
+import dxc.junit.opcodes.iload_0.jm.T_iload_0_6;
+
+public class Test_iload_0 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(3, T_iload_0_1.run());
+    }
+
+    /**
+     * @title  equality of iload_<n> and iload <n>
+     */
+    public void testN2() {
+        assertTrue(T_iload_0_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_0.jm.T_iload_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_0.jm.T_iload_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_0.jm.T_iload_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_0.jm.T_iload_0_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_1.j
new file mode 100644
index 0000000..3aa9a54
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_0_1.java
+.class public dxc/junit/opcodes/iload_0/jm/T_iload_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 1
+    
+    iconst_3
+    istore_0
+    iconst_4
+    iload_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_1.java
new file mode 100644
index 0000000..1cb2ba3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_0.jm;
+
+public class T_iload_0_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_2.j
new file mode 100644
index 0000000..703b886
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_0_2.java
+.class public dxc/junit/opcodes/iload_0/jm/T_iload_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    iload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_2.java
new file mode 100644
index 0000000..c3c2c76
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_0.jm;
+
+public class T_iload_0_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_3.j
new file mode 100644
index 0000000..2b1af46
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_0_3.java
+.class public dxc/junit/opcodes/iload_0/jm/T_iload_0_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_0
+    
+    iload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_3.java
new file mode 100644
index 0000000..801d3ba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_0.jm;
+
+public class T_iload_0_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_4.j
new file mode 100644
index 0000000..3df46a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_0_4.java
+.class public dxc/junit/opcodes/iload_0/jm/T_iload_0_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_0
+    
+    iload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_4.java
new file mode 100644
index 0000000..c92ee08
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_0.jm;
+
+public class T_iload_0_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_5.j
new file mode 100644
index 0000000..9505ede
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_0_5.java
+.class public dxc/junit/opcodes/iload_0/jm/T_iload_0_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    iconst_1
+    istore_0
+    
+    iload_0
+    iload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_5.java
new file mode 100644
index 0000000..b86d61f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_0.jm;
+
+public class T_iload_0_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_6.j
new file mode 100644
index 0000000..8029a62
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_6.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_0_6.java
+.class public dxc/junit/opcodes/iload_0/jm/T_iload_0_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 1
+
+    iconst_4
+    istore_0
+
+    iload_0
+    iload 0
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_6.java
new file mode 100644
index 0000000..9c12736
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_0.jm;
+
+public class T_iload_0_6 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/Test_iload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/Test_iload_1.java
new file mode 100644
index 0000000..a41ed26
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/Test_iload_1.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iload_1.jm.T_iload_1_1;
+import dxc.junit.opcodes.iload_1.jm.T_iload_1_6;
+
+public class Test_iload_1 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(3, T_iload_1_1.run());
+    }
+
+    /**
+     * @title equality of iload_<n> and iload <n>
+     */
+    public void testN2() {
+        assertTrue(T_iload_1_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_1.jm.T_iload_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_1.jm.T_iload_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_1.jm.T_iload_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_1.jm.T_iload_1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_1.j
new file mode 100644
index 0000000..79c23dc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_1_1.java
+.class public dxc/junit/opcodes/iload_1/jm/T_iload_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 2
+    
+    iconst_3
+    istore_1
+    iconst_4
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_1.java
new file mode 100644
index 0000000..2ecc1ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_1.jm;
+
+public class T_iload_1_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_2.j
new file mode 100644
index 0000000..8b5e52f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_1_2.java
+.class public dxc/junit/opcodes/iload_1/jm/T_iload_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    iload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_2.java
new file mode 100644
index 0000000..f7fcd5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_1.jm;
+
+public class T_iload_1_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_3.j
new file mode 100644
index 0000000..63d1216
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_1_3.java
+.class public dxc/junit/opcodes/iload_1/jm/T_iload_1_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_1
+    
+    iload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_3.java
new file mode 100644
index 0000000..48dc77c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_1.jm;
+
+public class T_iload_1_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_4.j
new file mode 100644
index 0000000..aebcb4a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_1_4.java
+.class public dxc/junit/opcodes/iload_1/jm/T_iload_1_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_1
+    
+    iload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_4.java
new file mode 100644
index 0000000..a7fc0d1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_1.jm;
+
+public class T_iload_1_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_5.j
new file mode 100644
index 0000000..9dc1a4f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_1_5.java
+.class public dxc/junit/opcodes/iload_1/jm/T_iload_1_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    iconst_1
+    istore_1
+    
+    iload_1
+    iload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_5.java
new file mode 100644
index 0000000..e9bd6c4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_1.jm;
+
+public class T_iload_1_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_6.j
new file mode 100644
index 0000000..019b7a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_6.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_1_6.java
+.class public dxc/junit/opcodes/iload_1/jm/T_iload_1_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 2
+
+    iconst_4
+    istore_1
+
+    iload_1
+    iload 1
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_6.java
new file mode 100644
index 0000000..37f65c2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_1.jm;
+
+public class T_iload_1_6 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/Test_iload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/Test_iload_2.java
new file mode 100644
index 0000000..b42cc97
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/Test_iload_2.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iload_2.jm.T_iload_2_1;
+import dxc.junit.opcodes.iload_2.jm.T_iload_2_6;
+
+public class Test_iload_2 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(3, T_iload_2_1.run());
+    }
+
+    /**
+     * @title equality of iload_<n> and iload <n>
+     */
+    public void testN2() {
+        assertTrue(T_iload_2_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_2.jm.T_iload_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_2.jm.T_iload_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_2.jm.T_iload_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_2.jm.T_iload_2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_1.j
new file mode 100644
index 0000000..4b4acb6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_2_1.java
+.class public dxc/junit/opcodes/iload_2/jm/T_iload_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 3
+    
+    iconst_3
+    istore_2
+    iconst_4
+    iload_2
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_1.java
new file mode 100644
index 0000000..a348490
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_2.jm;
+
+public class T_iload_2_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_2.j
new file mode 100644
index 0000000..aea12fc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_2_2.java
+.class public dxc/junit/opcodes/iload_2/jm/T_iload_2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    iload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_2.java
new file mode 100644
index 0000000..5ebd62f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_2.jm;
+
+public class T_iload_2_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_3.j
new file mode 100644
index 0000000..e3731cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_2_3.java
+.class public dxc/junit/opcodes/iload_2/jm/T_iload_2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 6
+
+    dconst_1
+    dstore_2
+    
+    iload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_3.java
new file mode 100644
index 0000000..72149ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_2.jm;
+
+public class T_iload_2_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_4.j
new file mode 100644
index 0000000..18b80f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_2_4.java
+.class public dxc/junit/opcodes/iload_2/jm/T_iload_2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 6
+
+    lconst_1
+    lstore_2
+    
+    iload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_4.java
new file mode 100644
index 0000000..904c14c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_2.jm;
+
+public class T_iload_2_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_5.j
new file mode 100644
index 0000000..4390cbb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_2_5.java
+.class public dxc/junit/opcodes/iload_2/jm/T_iload_2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 4
+
+    iconst_1
+    istore_2
+    
+    iload_2
+    iload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_5.java
new file mode 100644
index 0000000..db95cae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_2.jm;
+
+public class T_iload_2_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_6.j
new file mode 100644
index 0000000..8ca7a9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_6.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_2_6.java
+.class public dxc/junit/opcodes/iload_2/jm/T_iload_2_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 3
+
+    iconst_4
+    istore_2
+
+    iload_2
+    iload 2
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_6.java
new file mode 100644
index 0000000..737eb18
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_2.jm;
+
+public class T_iload_2_6 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/Test_iload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/Test_iload_3.java
new file mode 100644
index 0000000..ac47b59
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/Test_iload_3.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iload_3.jm.T_iload_3_1;
+import dxc.junit.opcodes.iload_3.jm.T_iload_3_6;
+
+public class Test_iload_3 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(3, T_iload_3_1.run());
+    }
+
+    /**
+     * @title equality of iload_<n> and iload <n>
+     */
+    public void testN2() {
+        assertTrue(T_iload_3_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_3.jm.T_iload_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_3.jm.T_iload_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_3.jm.T_iload_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_3.jm.T_iload_3_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_1.j
new file mode 100644
index 0000000..8b18818
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_3_1.java
+.class public dxc/junit/opcodes/iload_3/jm/T_iload_3_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 4
+    
+    iconst_3
+    istore_3
+    iconst_4
+    iload_3
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_1.java
new file mode 100644
index 0000000..88b4b61
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_3.jm;
+
+public class T_iload_3_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_2.j
new file mode 100644
index 0000000..6e75ed3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_3_2.java
+.class public dxc/junit/opcodes/iload_3/jm/T_iload_3_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    iload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_2.java
new file mode 100644
index 0000000..4ad7106
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_3.jm;
+
+public class T_iload_3_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_3.j
new file mode 100644
index 0000000..8bc3a02
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_3_3.java
+.class public dxc/junit/opcodes/iload_3/jm/T_iload_3_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 6
+
+    dconst_1
+    dstore_3
+    
+    iload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_3.java
new file mode 100644
index 0000000..8660cab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_3.jm;
+
+public class T_iload_3_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_4.j
new file mode 100644
index 0000000..cdd2fa8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_3_4.java
+.class public dxc/junit/opcodes/iload_3/jm/T_iload_3_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 6
+
+    lconst_1
+    lstore_3
+    
+    iload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_4.java
new file mode 100644
index 0000000..86fe370
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_3.jm;
+
+public class T_iload_3_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_5.j
new file mode 100644
index 0000000..94aeec4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_3_5.java
+.class public dxc/junit/opcodes/iload_3/jm/T_iload_3_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 3
+
+    iconst_1
+    istore_3
+    
+    iload_3
+    iload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_5.java
new file mode 100644
index 0000000..8604dce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_3.jm;
+
+public class T_iload_3_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_6.j
new file mode 100644
index 0000000..9267b43
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_6.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iload_3_6.java
+.class public dxc/junit/opcodes/iload_3/jm/T_iload_3_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 4
+
+    iconst_4
+    istore_3
+
+    iload_3
+    iload 3
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_6.java
new file mode 100644
index 0000000..28d17a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iload_3.jm;
+
+public class T_iload_3_6 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/Test_imul.java b/tools/dx-tests/src/dxc/junit/opcodes/imul/Test_imul.java
new file mode 100644
index 0000000..2db80b6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/Test_imul.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.imul;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.imul.jm.T_imul_1;
+
+public class Test_imul extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(32, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = -2, 255
+     */
+    public void testN2() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(-510, t.run(-2, 255));
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe, 2
+     */
+    public void testN3() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(-4, t.run(0x7ffffffe, 2));
+    }
+
+    /**
+     * @title Arguments = 4, 0x80000001
+     */
+    public void testN4() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(4, t.run(4, 0x80000001));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(0, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE,
+                Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.imul.jm.T_imul_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int / double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.imul.jm.T_imul_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.imul.jm.T_imul_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference / int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.imul.jm.T_imul_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_1.j b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_1.j
new file mode 100644
index 0000000..b3ba15a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_imul_1.java
+.class public dxc/junit/opcodes/imul/jm/T_imul_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    imul
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_1.java b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_1.java
new file mode 100644
index 0000000..38b1298
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.imul.jm;
+
+public class T_imul_1 {
+
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_2.j b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_2.j
new file mode 100644
index 0000000..d00f4e0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_imul_2.java
+.class public dxc/junit/opcodes/imul/jm/T_imul_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    ; iload_2    
+    imul
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_2.java b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_2.java
new file mode 100644
index 0000000..123e230
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.imul.jm;
+
+public class T_imul_2 {
+
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_3.j b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_3.j
new file mode 100644
index 0000000..960c58c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_imul_3.java
+.class public dxc/junit/opcodes/imul/jm/T_imul_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(ID)I
+    .limit stack 3
+    .limit locals 5
+    iload_1
+    dload_2    
+    imul
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_3.java b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_3.java
new file mode 100644
index 0000000..cad2df6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.imul.jm;
+
+public class T_imul_3 {
+
+    public int run(int a, double b) {
+        return a+(int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_4.j b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_4.j
new file mode 100644
index 0000000..73d7440
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_imul_4.java
+.class public dxc/junit/opcodes/imul/jm/T_imul_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JI)I
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2i
+    iload_3
+    imul
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_4.java b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_4.java
new file mode 100644
index 0000000..d2da8b7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.imul.jm;
+
+public class T_imul_4 {
+
+    public int run(long a, int b) {
+        return (int)a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_5.j b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_5.j
new file mode 100644
index 0000000..aa3a81a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_imul_5.java
+.class public dxc/junit/opcodes/imul/jm/T_imul_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    iadd
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_5.java b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_5.java
new file mode 100644
index 0000000..e4aa8e9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.imul.jm;
+
+public class T_imul_5 {
+    
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/Test_ineg.java b/tools/dx-tests/src/dxc/junit/opcodes/ineg/Test_ineg.java
new file mode 100644
index 0000000..366a8a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/Test_ineg.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ineg;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ineg.jm.T_ineg_1;
+import dxc.junit.opcodes.ineg.jm.T_ineg_2;
+
+public class Test_ineg extends DxTestCase {
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN1() {
+        T_ineg_1 t = new T_ineg_1();
+        assertEquals(-1, t.run(1));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN2() {
+        T_ineg_1 t = new T_ineg_1();
+        assertEquals(1, t.run(-1));
+    }
+
+    /**
+     * @title  Argument = 32768
+     */
+    public void testN3() {
+        T_ineg_1 t = new T_ineg_1();
+        assertEquals(-32768, t.run(32768));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testN4() {
+        T_ineg_1 t = new T_ineg_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title  Check that -x == (~x + 1)
+     */
+    public void testN5() {
+        T_ineg_2 t = new T_ineg_2();
+        assertTrue(t.run(12345));
+    }
+
+    /**
+     * @title  Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_ineg_1 t = new T_ineg_1();
+        assertEquals(0x80000001, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_ineg_1 t = new T_ineg_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ineg.jm.T_ineg_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ineg.jm.T_ineg_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ineg.jm.T_ineg_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ineg.jm.T_ineg_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_1.j
new file mode 100644
index 0000000..e124957
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ineg_1.java
+.class public dxc/junit/opcodes/ineg/jm/T_ineg_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    ineg
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_1.java
new file mode 100644
index 0000000..3db9480
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ineg.jm;
+
+public class T_ineg_1 {
+
+    public int run(int d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_2.j
new file mode 100644
index 0000000..b4f2140
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_2.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ineg_2.java
+.class public dxc/junit/opcodes/ineg/jm/T_ineg_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)Z
+    .limit stack 3
+    .limit locals 2
+
+    iload_1
+    ineg
+
+    iload_1
+    iconst_m1
+    ixor
+    iconst_1
+    iadd
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_2.java
new file mode 100644
index 0000000..b9ee0b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ineg.jm;
+
+public class T_ineg_2 {
+
+     public boolean run(int d) {
+         return -d == (~d + 1);
+     }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_3.j
new file mode 100644
index 0000000..e850c19
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_3.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ineg_3.java
+.class public dxc/junit/opcodes/ineg/jm/T_ineg_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    ;iload_1
+    ineg
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_3.java
new file mode 100644
index 0000000..306154b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ineg.jm;
+
+public class T_ineg_3 {
+
+    public int run(int d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_4.j
new file mode 100644
index 0000000..7f1d704
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_4.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ineg_4.java
+.class public dxc/junit/opcodes/ineg/jm/T_ineg_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 2
+    .limit locals 3
+    ;iload_1
+    dconst_1
+    ineg
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_4.java
new file mode 100644
index 0000000..8285cbd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ineg.jm;
+
+public class T_ineg_4 {
+
+    public int run(int d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_5.j
new file mode 100644
index 0000000..8ec653d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_5.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ineg_5.java
+.class public dxc/junit/opcodes/ineg/jm/T_ineg_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 2
+    .limit locals 3
+    ;iload_1
+    lconst_1
+    ineg
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_5.java
new file mode 100644
index 0000000..48d4b14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ineg.jm;
+
+public class T_ineg_5 {
+
+    public int run(int d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_6.j
new file mode 100644
index 0000000..8aa2e44
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ineg_6.java
+.class public dxc/junit/opcodes/ineg/jm/T_ineg_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    ineg
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_6.java
new file mode 100644
index 0000000..901bcf4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ineg.jm;
+
+public class T_ineg_6 {
+    
+    public int run(int d) {
+        return -d;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/Test_invokeinterface.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/Test_invokeinterface.java
new file mode 100644
index 0000000..9d27718
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/Test_invokeinterface.java
@@ -0,0 +1,361 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.invokeinterface.jm.ITestImpl;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_1;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_11;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_12;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_13;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_14;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_15;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_16;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_17;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_3;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_7;
+
+public class Test_invokeinterface extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_invokeinterface_1 t = new T_invokeinterface_1();
+        assertEquals(0, t.run("aa", "aa"));
+        assertEquals(-1, t.run("aa", "bb"));
+        assertEquals(1, t.run("bb", "aa"));
+    }
+
+    /**
+     * @title  Check that new frame is created by invokeinterface and
+     * arguments are passed to method
+     */
+    public void testN2() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImpl
+        T_invokeinterface_14 t = new T_invokeinterface_14();
+        ITestImpl impl = new ITestImpl();
+        assertEquals(1, t.run(impl));
+    }
+
+    /**
+     * @title  Check that monitor is acquired if method is synchronized
+     */
+    public void testN3() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        assertTrue(T_invokeinterface_19.execute());
+    }
+
+
+    /**
+     * @title  method doesn't exist
+     */
+    public void testE1() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImpl
+        try {
+            T_invokeinterface_7 t = new T_invokeinterface_7();
+            ITestImpl impl = new ITestImpl();
+            t.run(impl);
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  method has different signature
+     */
+    public void testE2() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImpl
+        try {
+            T_invokeinterface_16 t = new T_invokeinterface_16();
+            ITestImpl impl = new ITestImpl();
+            t.run(impl);
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest        
+        try {
+            new T_invokeinterface_3(null);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  object doesn't implement interface
+     */
+    public void testE4() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImpl
+        T_invokeinterface_11 t = new T_invokeinterface_11();
+        ITestImpl impl = new ITestImpl();
+        try {
+            t.run(impl);
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Native method can't be linked
+     */
+    public void testE5() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImpl
+        T_invokeinterface_12 t = new T_invokeinterface_12();
+        ITestImpl impl = new ITestImpl();
+        try {
+            t.run(impl);
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke abstract method
+     */
+    public void testE6() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImplAbstract
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImpl
+        try {
+            T_invokeinterface_13 t = new T_invokeinterface_13();
+            ITestImpl impl = new ITestImpl();
+            t.run(impl);
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke static method
+     */
+    public void testE7() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImplAbstract
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImpl
+        try {
+            T_invokeinterface_15 t = new T_invokeinterface_15();
+            ITestImpl impl = new ITestImpl();
+            t.run(impl);
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke non-public interface method
+     */
+    public void testE8() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImplAbstract
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImpl
+        try {
+            T_invokeinterface_17 t = new T_invokeinterface_17();
+            ITestImpl impl = new ITestImpl();
+            t.run(impl);
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.15 
+     * @title valid index into constant pool table
+     */
+    public void testVFE1() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.15 
+     * @title invalid index into constant pool table
+     */
+    public void testVFE2() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title number of arguments
+     */
+    public void testVFE5() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title type of argument - int
+     */
+    public void testVFE6() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest        
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.15 
+     * @title args_size value must match number of arguments
+     */
+    public void testVFE7() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.15 
+     * @title 4th operand must be zero
+     */
+    public void testVFE8() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title number of arguments passed to method
+     */
+    public void testVFE9() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14 
+     * @title only invokespecial may be used to call <init>
+     */
+    public void testVFE10() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImplAbstract        
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14 
+     * @title only invokespecial may be used to call <clinit>
+     */
+    public void testVFE11() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.12 
+     * @title types of arguments passed to method
+     */
+    public void testVFE12() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITest.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITest.java
new file mode 100644
index 0000000..080199a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITest.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public interface ITest {
+    public void doit();
+    public void doit(int i);
+    public void doitNative();
+    public int test(int a);
+    public int testArgsOrder(int a, int b);
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImpl.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImpl.java
new file mode 100644
index 0000000..fb20ecc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImpl.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class ITestImpl implements ITest {
+    public void doit() {
+        // impl
+    }
+
+    public void doit(int i) {
+        //
+    }
+
+    public native void doitNative();
+
+    public int test(int a) {
+        if (a == 999) return 195;
+        return 0;
+    }
+
+    public int testArgsOrder(int a, int b) {
+        return a / b;
+    }
+
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract.j
new file mode 100644
index 0000000..6ebe8bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source ITestImplAbstract.java
+.class public dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract
+.super java/lang/Object
+.implements dxc/junit/opcodes/invokeinterface/jm/ITest
+
+.method  <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public abstract doit()V
+.end method
+
+
+
+.method public static doit(I)V
+    .limit locals 2
+    return
+.end method
+
+
+
+.method public native doitNative()V
+.end method
+
+.method protected test(I)I
+    .limit locals 2
+    .limit stack 1
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract.java
new file mode 100644
index 0000000..fdabd89
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+abstract class ITestImplAbstract implements ITest {
+    abstract public void doit();
+    abstract public void doit(int i);
+    public native void doitNative();
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_1.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_1.j
new file mode 100644
index 0000000..ca88c6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_1.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+    .limit stack 2
+    .limit locals 3
+    aload_1
+    aload_2
+    invokeinterface java/lang/Comparable/compareTo(Ljava/lang/Object;)I 2
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_1.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_1.java
new file mode 100644
index 0000000..bb3a112
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_1 {
+
+    public int run(Comparable c, Object o) {
+        return c.compareTo(o);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_10.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_10.j
new file mode 100644
index 0000000..786446d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_10.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_10.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_10
+.super java/lang/Object
+
+.method public <init>(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+;    aload_1
+    iconst_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit()V 1
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_10.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_10.java
new file mode 100644
index 0000000..5fe6f68
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_10 {
+
+    public T_invokeinterface_10 (ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_11.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_11.j
new file mode 100644
index 0000000..e4c7a8b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_11.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_11.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 1
+    .limit locals 2
+
+;    aload_1
+    aload_0
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit()V 1
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_11.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_11.java
new file mode 100644
index 0000000..916eeb3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_11 {
+
+    public void run(ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_12.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_12.j
new file mode 100644
index 0000000..fbd7d7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_12.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_12.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_12
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doitNative()V 1
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_12.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_12.java
new file mode 100644
index 0000000..3418fce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_12 {
+
+    public void run(ITest test) {
+        test.doitNative();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_13.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_13.j
new file mode 100644
index 0000000..7feb097
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_13.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_13.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_13
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract
+    dup
+    invokespecial dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract/<init>()V
+    
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit()V 1
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_13.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_13.java
new file mode 100644
index 0000000..e11df1f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_13 {
+
+    public void run(ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_14.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_14.j
new file mode 100644
index 0000000..94a2710
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_14.j
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_14.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_14
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)I
+    .limit stack 3
+    .limit locals 4
+
+    bipush 123
+    istore_2
+
+    sipush 345
+    istore_3
+
+    aload_1
+    sipush 64
+    sipush 2
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/testArgsOrder(II)I 3
+    sipush 32
+    if_icmpne Label0
+
+    iload_2
+    bipush 123
+    if_icmpne Label0
+
+    iload_3
+    sipush 345
+    if_icmpne Label0
+
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_14.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_14.java
new file mode 100644
index 0000000..4ebf2f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_14.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_14 {
+
+    public int run(ITest test) {
+        int a = 123;
+        int b = 345;
+        if(test.testArgsOrder(64, 2) == 32)
+        {
+            if(a == 123)
+                if(b == 345)
+                    return 1;
+        }
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_15.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_15.j
new file mode 100644
index 0000000..67f5ffb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_15.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_15.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_15
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract
+    dup
+    invokespecial dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract/<init>()V
+    
+    iconst_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit(I)V 2
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_15.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_15.java
new file mode 100644
index 0000000..c4aba4c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_15.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_15 {
+
+    public void run(ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_16.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_16.j
new file mode 100644
index 0000000..796696a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_16.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_16.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_16
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 2
+    .limit locals 2
+
+    aload_1
+    fconst_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit(F)V 2
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_16.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_16.java
new file mode 100644
index 0000000..161aafe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_16 {
+
+    public void run(ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_17.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_17.j
new file mode 100644
index 0000000..38133af
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_17.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_17.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_17
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract
+    dup
+    invokespecial dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract/<init>()V
+    
+    iconst_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/test(I)I 2
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_17.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_17.java
new file mode 100644
index 0000000..c7754ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_17.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_17 {
+
+    public void run(ITest test) {
+        test.test(1);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_18.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_18.j
new file mode 100644
index 0000000..674e491
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_18.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_18.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_18
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 2
+    .limit locals 2
+    
+    new dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract
+    dup
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract/<init>()V 1
+    
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_18.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_18.java
new file mode 100644
index 0000000..12462fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_18.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_18 {
+
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19.j
new file mode 100644
index 0000000..f5a89a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19.j
@@ -0,0 +1,182 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_19.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19
+.super java/lang/Object
+.implements java/lang/Runnable
+.implements dxc/junit/opcodes/invokeinterface/jm/ITest
+
+.field  value I
+.field  failed Z
+
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.value I
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.failed Z
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+
+    iconst_0
+    istore_1
+
+Label1:
+
+    aload_0
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit()V 1
+
+    iinc 1 1
+
+    iload_1
+    sipush 1000
+    if_icmplt Label1
+
+    return
+.end method
+
+
+
+.method public synchronized doit()V
+    .limit stack 3
+    .limit locals 2
+
+    
+    aload_0
+    dup
+    getfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.value I
+    iconst_1
+    iadd
+    putfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.value I
+
+    aload_0
+    getfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.value I
+    istore_1
+
+    invokestatic java/lang/Thread/yield()V
+
+    iload_1
+    aload_0
+    getfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.value I
+    if_icmpeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.failed Z
+
+    Label0:
+    return
+.end method
+
+
+
+.method public doit(I)V
+    .limit stack 0
+    .limit locals 2
+    return
+.end method
+
+.method public doitNative()V
+    .limit stack 0
+    .limit locals 1
+    return
+.end method
+
+.method public test(I)I
+    .limit stack 1
+    .limit locals 2
+    iconst_0
+    ireturn
+.end method
+
+
+
+.method public static execute()Z
+    .limit stack 3
+    .limit locals 4
+
+    new dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19
+    dup
+    invokespecial dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:
+    astore_3
+    iconst_0
+    ireturn
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.value I
+    sipush 2000
+    if_icmpeq Label1
+
+    iconst_0
+    ireturn
+
+Label1:
+    aload_0
+    getfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.failed Z
+    ifeq Label2
+    iconst_0
+    ireturn
+
+Label2:
+    iconst_1
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19.java
new file mode 100644
index 0000000..1aec95b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+
+public class T_invokeinterface_19 implements Runnable, ITest {
+    public final static int CNT = 1000;
+    int value = 0;
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            doit();
+        }
+    }
+    
+    public synchronized void doit(){
+        value++;
+        int c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+    }
+    public void doit(int i){
+    }
+    public void doitNative(){
+    }
+    public  int test(int a) {
+        return 0;
+    }
+    public int testArgsOrder(int a, int b){
+        return 0;
+    }
+    
+    public static boolean execute() {
+        T_invokeinterface_19 test = new T_invokeinterface_19();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.cfh
new file mode 100644
index 0000000..b91b025
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.cfh
@@ -0,0 +1,155 @@
+//@class:dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: ifaceMethod{dxc.junit.opcodes.invokeinterface.jm.ITest.doit:()V}
+    // .  .  .  .  .  
+       0b 00 08 00 0f 
+    // parsed:, offset 15, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 11 00 09 
+    // parsed:, offset 20, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 39, len 3, h: 0004: type{dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_2}
+    // .  .  .  
+       07 00 10 
+    // parsed:, offset 42, len 13, h: 0005: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 55, len 27, h: 0006: utf8{"T_invokeinterface_2.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  _  2  .  j  a  v  a  
+       01 00 18 54 5f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 5f 32 2e 6a 61 76 61 
+    // parsed:, offset 82, len 9, h: 0007: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 91, len 3, h: 0008: type{dxc.junit.opcodes.invokeinterface.jm.ITest}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 94, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 07 00 0e 
+    // parsed:, offset 99, len 7, h: 000a: utf8{"doit"}
+    // .  .  .  d  o  i  t  
+       01 00 04 64 6f 69 74 
+    // parsed:, offset 106, len 45, h: 000b: utf8{"dxc/junit/opcodes/invokeinterface/jm/ITest"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  I  T  e  s  t  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 49 54 65 73 74 
+    // parsed:, offset 151, len 7, h: 000c: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 158, len 50, h: 000d: utf8{"(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V"}
+    // .  .  /  (  L  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  I  T  e  s  t  ;  )  V  
+       01 00 2f 28 4c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 49 54 65 73 74 3b 29 56 
+    // parsed:, offset 208, len 6, h: 000e: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 214, len 5, h: 000f: nat{doit:()V}
+    // .  .  .  .  .  
+       0c 00 0a 00 0e 
+    // parsed:, offset 219, len 59, h: 0010: utf8{"dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2"}
+    // .  .  8  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  T  _  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  _  2  
+       01 00 38 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 5f 32 
+    // parsed:, offset 278, len 3, h: 0011: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 281, len 0, h: end constant_pool
+// parsed:, offset 281, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 283, len 2, h: this_class: type{dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_2}
+// .  .  
+   00 04 
+// parsed:, offset 285, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 11 
+// parsed:, offset 287, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 289, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 291, len 2, h: methods_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:<init>, offset 293, len:47,desc: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+// parsed:, offset 293, len 0, h:  methods[0]: 
+    // parsed:, offset 293, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 295, len 2, h: name: <init>
+    // .  .  
+       00 07 
+    // parsed:, offset 297, len 2, h: descriptor: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    // .  .  
+       00 0d 
+    // parsed:, offset 299, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 301, len 0, h:  attributes[0]: 
+        // parsed:, offset 301, len 2, h: name: Code
+        // .  .  
+           00 0c 
+        // parsed:, offset 303, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 307, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 309, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 311, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 5, len 5, h: 0005: invokeinterface ifaceMethod{dxc.junit.opcodes.invokeinterface.jm.ITest.doit:()V}, 0001
+        // .  .  .  .  .  
+//@mod:    b9 00 01 01 00 
+           b9 00 02 01 00 
+        // parsed:, offset 10, len 1, h: 000a: return
+        // .  
+           b1 
+        // parsed:, offset 326, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 328, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 330, len 0, h: end attributes[0] 
+// parsed:, offset 330, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+// parsed:, offset 330, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 332, len 0, h:  attributes[0]: 
+    // parsed:, offset 332, len 2, h: name: SourceFile
+    // .  .  
+       00 05 
+    // parsed:, offset 334, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 338, len 2, h: source: utf8{"T_invokeinterface_2.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 340, len 0, h: end attributes[0] 
+// parsed:, offset 340, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.j
new file mode 100644
index 0000000..2d3fafc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_2.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2
+.super java/lang/Object
+
+.method public <init>(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit()V 1
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.java
new file mode 100644
index 0000000..6fe011f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_2 {
+
+    public T_invokeinterface_2 (ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_20.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_20.j
new file mode 100644
index 0000000..6da973f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_20.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_20.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_20
+.super java/lang/Object
+
+.field public static i I
+
+.method static <clinit>()V
+    .limit stack 1
+    iconst_0
+    putstatic dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_20.i I
+    return
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 1
+    .limit locals 2
+    
+    aload_0
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_20/<clinit>()V 1
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_20.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_20.java
new file mode 100644
index 0000000..4487726
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_20.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_20 {
+
+    public static int i = 0;
+    
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_21.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_21.j
new file mode 100644
index 0000000..9d28bbf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_21.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_21.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_21
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 3
+    .limit locals 2
+
+    aload_1
+    lconst_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit(I)V 2
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_21.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_21.java
new file mode 100644
index 0000000..0897987
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_21 {
+
+    public void run(ITest test) {
+        test.doit(1);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.cfh
new file mode 100644
index 0000000..57b9e09
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.cfh
@@ -0,0 +1,155 @@
+//@class:dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: ifaceMethod{dxc.junit.opcodes.invokeinterface.jm.ITest.doit:()V}
+    // .  .  .  .  .  
+       0b 00 06 00 10 
+    // parsed:, offset 15, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 11 00 07 
+    // parsed:, offset 20, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 39, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 52, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 61, len 3, h: 0006: type{dxc.junit.opcodes.invokeinterface.jm.ITest}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 64, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0d 
+    // parsed:, offset 69, len 7, h: 0008: utf8{"doit"}
+    // .  .  .  d  o  i  t  
+       01 00 04 64 6f 69 74 
+    // parsed:, offset 76, len 45, h: 0009: utf8{"dxc/junit/opcodes/invokeinterface/jm/ITest"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  I  T  e  s  t  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 49 54 65 73 74 
+    // parsed:, offset 121, len 3, h: 000a: type{dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_23}
+    // .  .  .  
+       07 00 0e 
+    // parsed:, offset 124, len 7, h: 000b: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 131, len 50, h: 000c: utf8{"(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V"}
+    // .  .  /  (  L  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  I  T  e  s  t  ;  )  V  
+       01 00 2f 28 4c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 49 54 65 73 74 3b 29 56 
+    // parsed:, offset 181, len 6, h: 000d: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 187, len 60, h: 000e: utf8{"dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23"}
+    // .  .  9  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  T  _  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  _  2  3  
+       01 00 39 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 5f 32 33 
+    // parsed:, offset 247, len 28, h: 000f: utf8{"T_invokeinterface_23.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  _  2  3  .  j  a  v  a  
+       01 00 19 54 5f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 5f 32 33 2e 6a 61 76 61 
+    // parsed:, offset 275, len 5, h: 0010: nat{doit:()V}
+    // .  .  .  .  .  
+       0c 00 08 00 0d 
+    // parsed:, offset 280, len 3, h: 0011: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 283, len 0, h: end constant_pool
+// parsed:, offset 283, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 285, len 2, h: this_class: type{dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_23}
+// .  .  
+   00 0a 
+// parsed:, offset 287, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 11 
+// parsed:, offset 289, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 291, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 293, len 2, h: methods_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:<init>, offset 295, len:47,desc: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+// parsed:, offset 295, len 0, h:  methods[0]: 
+    // parsed:, offset 295, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 297, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 299, len 2, h: descriptor: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    // .  .  
+       00 0c 
+    // parsed:, offset 301, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 303, len 0, h:  attributes[0]: 
+        // parsed:, offset 303, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 305, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 309, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 311, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 313, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 5, len 5, h: 0005: invokeinterface ifaceMethod{dxc.junit.opcodes.invokeinterface.jm.ITest.doit:()V}, 0001
+        // .  .  .  .  .  
+//@mod           b9 00 01 01 00 
+           b9 01 01 01 00 
+        // parsed:, offset 10, len 1, h: 000a: return
+        // .  
+           b1 
+        // parsed:, offset 328, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 330, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 332, len 0, h: end attributes[0] 
+// parsed:, offset 332, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+// parsed:, offset 332, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 334, len 0, h:  attributes[0]: 
+    // parsed:, offset 334, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 336, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 340, len 2, h: source: utf8{"T_invokeinterface_23.java"}
+    // .  .  
+       00 0f 
+// parsed:, offset 342, len 0, h: end attributes[0] 
+// parsed:, offset 342, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.j
new file mode 100644
index 0000000..6aa596f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_23.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23
+.super java/lang/Object
+
+.method public <init>(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit()V 1
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.java
new file mode 100644
index 0000000..da54e21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_23 {
+
+    public T_invokeinterface_23 (ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_3.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_3.j
new file mode 100644
index 0000000..d1d46c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_3.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_3.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_3
+.super java/lang/Object
+
+.method public <init>(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit locals 2
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit()V 1
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_3.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_3.java
new file mode 100644
index 0000000..5d85c5a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_3 {
+
+    public T_invokeinterface_3 (ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_4.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_4.java
new file mode 100644
index 0000000..fa92a23
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_4 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_5.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_5.j
new file mode 100644
index 0000000..b3d3d59
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_5.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_5.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_5
+.super java/lang/Object
+
+.method public <init>(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+;    aload_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit()V 1
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_5.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_5.java
new file mode 100644
index 0000000..e80580d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_5 {
+
+    public T_invokeinterface_5 (ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.cfh
new file mode 100644
index 0000000..9d6c6f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.cfh
@@ -0,0 +1,206 @@
+//@class:dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0014
+// .  .  
+   00 14 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 19, h: 0001: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 29, len 5, h: 0002: ifaceMethod{dxc.junit.opcodes.invokeinterface.jm.ITest.doit:(I)V}
+    // .  .  .  .  .  
+       0b 00 06 00 0a 
+    // parsed:, offset 34, len 9, h: 0003: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 43, len 3, h: 0004: type{java.lang.Object}
+    // .  .  .  
+       07 00 01 
+    // parsed:, offset 46, len 5, h: 0005: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 03 00 07 
+    // parsed:, offset 51, len 3, h: 0006: type{dxc.junit.opcodes.invokeinterface.jm.ITest}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 54, len 6, h: 0007: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 60, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 67, len 59, h: 0009: utf8{"dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6"}
+    // .  .  8  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  T  _  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  _  6  
+       01 00 38 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 5f 36 
+    // parsed:, offset 126, len 5, h: 000a: nat{doit:(I)V}
+    // .  .  .  .  .  
+       0c 00 0f 00 0d 
+    // parsed:, offset 131, len 45, h: 000b: utf8{"dxc/junit/opcodes/invokeinterface/jm/ITest"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  I  T  e  s  t  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 49 54 65 73 74 
+    // parsed:, offset 176, len 13, h: 000c: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 189, len 7, h: 000d: utf8{"(I)V"}
+    // .  .  .  (  I  )  V  
+       01 00 04 28 49 29 56 
+    // parsed:, offset 196, len 6, h: 000e: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 202, len 7, h: 000f: utf8{"doit"}
+    // .  .  .  d  o  i  t  
+       01 00 04 64 6f 69 74 
+    // parsed:, offset 209, len 5, h: 0010: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 04 00 05 
+    // parsed:, offset 214, len 27, h: 0011: utf8{"T_invokeinterface_6.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  _  6  .  j  a  v  a  
+       01 00 18 54 5f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 241, len 3, h: 0012: type{dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_6}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 244, len 50, h: 0013: utf8{"(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V"}
+    // .  .  /  (  L  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  I  T  e  s  t  ;  )  V  
+       01 00 2f 28 4c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 49 54 65 73 74 3b 29 56 
+// parsed:, offset 294, len 0, h: end constant_pool
+// parsed:, offset 294, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 296, len 2, h: this_class: type{dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_6}
+// .  .  
+   00 12 
+// parsed:, offset 298, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 04 
+// parsed:, offset 300, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 302, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 304, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 306, len:75,desc: ()V
+// parsed:, offset 306, len 0, h:  methods[0]: 
+    // parsed:, offset 306, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 308, len 2, h: name: <init>
+    // .  .  
+       00 03 
+    // parsed:, offset 310, len 2, h: descriptor: ()V
+    // .  .  
+       00 07 
+    // parsed:, offset 312, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 314, len 0, h:  attributes[0]: 
+        // parsed:, offset 314, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 316, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 320, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 322, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 324, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 10 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 333, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 335, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 337, len 0, h: end attributes[0] 
+// parsed:, offset 337, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 337, len:44,desc: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+// parsed:, offset 337, len 0, h:  methods[1]: 
+    // parsed:, offset 337, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 339, len 2, h: name: run
+    // .  .  
+       00 0e 
+    // parsed:, offset 341, len 2, h: descriptor: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    // .  .  
+       00 13 
+    // parsed:, offset 343, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 345, len 0, h:  attributes[0]: 
+        // parsed:, offset 345, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 347, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 351, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 353, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 355, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 1, h: 0001: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 2, len 5, h: 0002: invokeinterface ifaceMethod{dxc.junit.opcodes.invokeinterface.jm.ITest.doit:(I)V}, 0002
+        // .  .  .  .  .  
+//@mod           b9 00 02 02 00 
+           b9 00 02 02 01 
+        // parsed:, offset 7, len 1, h: 0007: return
+        // .  
+           b1 
+        // parsed:, offset 367, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 369, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 371, len 0, h: end attributes[0] 
+// parsed:, offset 371, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+// parsed:, offset 371, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 373, len 0, h:  attributes[0]: 
+    // parsed:, offset 373, len 2, h: name: SourceFile
+    // .  .  
+       00 0c 
+    // parsed:, offset 375, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 379, len 2, h: source: utf8{"T_invokeinterface_6.java"}
+    // .  .  
+       00 11 
+// parsed:, offset 381, len 0, h: end attributes[0] 
+// parsed:, offset 381, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.j
new file mode 100644
index 0000000..8fff18f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_6.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 2
+    .limit locals 2
+
+    aload_1
+    iconst_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit(I)V 2
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.java
new file mode 100644
index 0000000..b2a7846
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_6 {
+
+    public void run(ITest test) {
+        test.doit(1);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_7.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_7.j
new file mode 100644
index 0000000..3001e7d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_7.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit1()V 1
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_7.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_7.java
new file mode 100644
index 0000000..2a04c77
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_7 {
+
+    public void run(ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.cfh
new file mode 100644
index 0000000..7305c39
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.cfh
@@ -0,0 +1,206 @@
+//@class:dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0014
+// .  .  
+   00 14 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 19, h: 0001: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 29, len 27, h: 0002: utf8{"T_invokeinterface_8.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  _  8  .  j  a  v  a  
+       01 00 18 54 5f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 5f 38 2e 6a 61 76 61 
+    // parsed:, offset 56, len 5, h: 0003: ifaceMethod{dxc.junit.opcodes.invokeinterface.jm.ITest.doit:(I)V}
+    // .  .  .  .  .  
+       0b 00 07 00 0b 
+    // parsed:, offset 61, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 70, len 3, h: 0005: type{java.lang.Object}
+    // .  .  .  
+       07 00 01 
+    // parsed:, offset 73, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 08 
+    // parsed:, offset 78, len 3, h: 0007: type{dxc.junit.opcodes.invokeinterface.jm.ITest}
+    // .  .  .  
+       07 00 0c 
+    // parsed:, offset 81, len 6, h: 0008: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 87, len 59, h: 0009: utf8{"dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8"}
+    // .  .  8  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  T  _  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  _  8  
+       01 00 38 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 5f 38 
+    // parsed:, offset 146, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 153, len 5, h: 000b: nat{doit:(I)V}
+    // .  .  .  .  .  
+       0c 00 10 00 0e 
+    // parsed:, offset 158, len 45, h: 000c: utf8{"dxc/junit/opcodes/invokeinterface/jm/ITest"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  I  T  e  s  t  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 49 54 65 73 74 
+    // parsed:, offset 203, len 13, h: 000d: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 216, len 7, h: 000e: utf8{"(I)V"}
+    // .  .  .  (  I  )  V  
+       01 00 04 28 49 29 56 
+    // parsed:, offset 223, len 6, h: 000f: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 229, len 7, h: 0010: utf8{"doit"}
+    // .  .  .  d  o  i  t  
+       01 00 04 64 6f 69 74 
+    // parsed:, offset 236, len 5, h: 0011: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 05 00 06 
+    // parsed:, offset 241, len 3, h: 0012: type{dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_8}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 244, len 50, h: 0013: utf8{"(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V"}
+    // .  .  /  (  L  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  I  T  e  s  t  ;  )  V  
+       01 00 2f 28 4c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 49 54 65 73 74 3b 29 56 
+// parsed:, offset 294, len 0, h: end constant_pool
+// parsed:, offset 294, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 296, len 2, h: this_class: type{dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_8}
+// .  .  
+   00 12 
+// parsed:, offset 298, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 05 
+// parsed:, offset 300, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 302, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 304, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 306, len:75,desc: ()V
+// parsed:, offset 306, len 0, h:  methods[0]: 
+    // parsed:, offset 306, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 308, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 310, len 2, h: descriptor: ()V
+    // .  .  
+       00 08 
+    // parsed:, offset 312, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 314, len 0, h:  attributes[0]: 
+        // parsed:, offset 314, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 316, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 320, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 322, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 324, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 11 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 333, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 335, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 337, len 0, h: end attributes[0] 
+// parsed:, offset 337, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 337, len:44,desc: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+// parsed:, offset 337, len 0, h:  methods[1]: 
+    // parsed:, offset 337, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 339, len 2, h: name: run
+    // .  .  
+       00 0f 
+    // parsed:, offset 341, len 2, h: descriptor: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    // .  .  
+       00 13 
+    // parsed:, offset 343, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 345, len 0, h:  attributes[0]: 
+        // parsed:, offset 345, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 347, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 351, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 353, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 355, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 1, h: 0001: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 2, len 5, h: 0002: invokeinterface ifaceMethod{dxc.junit.opcodes.invokeinterface.jm.ITest.doit:(I)V}, 0002
+        // .  .  .  .  .  
+//@mod           b9 00 03 02 00 
+           b9 00 03 01 00 
+        // parsed:, offset 7, len 1, h: 0007: return
+        // .  
+           b1 
+        // parsed:, offset 367, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 369, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 371, len 0, h: end attributes[0] 
+// parsed:, offset 371, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+// parsed:, offset 371, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 373, len 0, h:  attributes[0]: 
+    // parsed:, offset 373, len 2, h: name: SourceFile
+    // .  .  
+       00 0d 
+    // parsed:, offset 375, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 379, len 2, h: source: utf8{"T_invokeinterface_8.java"}
+    // .  .  
+       00 02 
+// parsed:, offset 381, len 0, h: end attributes[0] 
+// parsed:, offset 381, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.j
new file mode 100644
index 0000000..f96c46b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_8.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 2
+    .limit locals 2
+
+    aload_1
+    iconst_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit(I)V 2
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.java
new file mode 100644
index 0000000..f64dd1f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_8 {
+
+    public void run(ITest test) {
+        test.doit(1);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_9.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_9.j
new file mode 100644
index 0000000..a324d42
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokeinterface_9.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 2
+    .limit locals 2
+
+    aload_1
+;    iconst_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit(I)V 2
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_9.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_9.java
new file mode 100644
index 0000000..8438b83
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_9 {
+
+    public void run(ITest test) {
+        test.doit(1);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/Test_invokespecial.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/Test_invokespecial.java
new file mode 100644
index 0000000..3413c3d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/Test_invokespecial.java
@@ -0,0 +1,393 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_1;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_11;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_12;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_13;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_15;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_16;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_17;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_18;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_19;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_2;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_21;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_7;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_8;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_9;
+
+public class Test_invokespecial extends DxTestCase {
+    /**
+     * @title  Superclass' method call
+     */
+    public void testN1() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        T_invokespecial_1 t = new T_invokespecial_1();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title  private method call
+     */
+    public void testN2() {
+        T_invokespecial_2 t = new T_invokespecial_2();
+        assertEquals(345, t.run());
+    }
+
+    /**
+     * @title  Invoke method of superclass of superclass
+     */
+    public void testN3() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper2
+        T_invokespecial_15 t = new T_invokespecial_15();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title  Invoke protected method of superclass specifying "this"
+     * class
+     */
+    public void testN4() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            T_invokespecial_17 t = new T_invokespecial_17();
+            assertEquals(5, t.run());
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Invoke protected method of superclass if method with the
+     * same name exists in "this" class
+     */
+    public void testN5() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        T_invokespecial_18 t = new T_invokespecial_18();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title  Check that method's arguments are popped from stack
+     */
+    public void testN6() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        T_invokespecial_19 t = new T_invokespecial_19();
+        assertEquals(2, t.run());
+    }
+
+    /**
+     * @title  Check that new frame is created by invokespecial
+     */
+    public void testN7() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        T_invokespecial_21 t = new T_invokespecial_21();
+        assertEquals(1, t.run());
+    }
+
+    /**
+     * @title  Check that monitor is acquired if method is synchronized
+     */
+    public void testN8() {
+        assertTrue(T_invokespecial_22.execute());
+    }
+
+
+
+    /**
+     * @title  method doesn't exist in "this" and superclass
+     */
+    public void testE1() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            T_invokespecial_7 t = new T_invokespecial_7();
+            assertEquals(5, t.run());
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError e) {
+            // expected
+        } catch (VerifyError vfe) {
+            // ok for dalvikvm; early resolution
+            System.out.print("dvmvfe:");
+        }
+    }
+
+    /**
+     * @title  method has different signature
+     */
+    public void testE2() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            T_invokespecial_16 t = new T_invokespecial_16();
+            assertEquals(5, t.run());
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError e) {
+            // expected
+        } catch (VerifyError vfe) {
+            // ok for dalvikvm; early resolution
+            System.out.print("dvmvfe:");
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        T_invokespecial_8 t = new T_invokespecial_8();
+        try {
+            assertEquals(5, t.run());
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke static method
+     */
+    public void testE4() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            T_invokespecial_11 t = new T_invokespecial_11();
+            assertEquals(5, t.run());
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        } catch (VerifyError vfe) {
+            // ok for dalvikvm;
+            System.out.print("dvmvfe:");
+        }
+    }
+
+    /**
+     * @title  Native method can't be linked
+     */
+    public void testE5() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        T_invokespecial_9 t = new T_invokespecial_9();
+        try {
+            assertEquals(5, t.run());
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke private method of superclass
+     */
+    public void testE6() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            T_invokespecial_12 t = new T_invokespecial_12();
+            assertEquals(5, t.run());
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) {
+            // ok for dalvikvm;
+            System.out.print("dvmvfe:");
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke abstract method
+     */
+    public void testE7() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TAbstract
+        T_invokespecial_13 t = new T_invokespecial_13();
+        try {
+            assertEquals(5, t.run());
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.13 
+     * @title valid index into constant pool table
+     */
+    public void testVFE1() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.13 
+     * @title invalid index into constant pool table
+     */
+    public void testVFE2() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.14 
+     * @title only &lt;init&gt; may be called
+     */
+    public void testVFE3() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.7 
+     * @title invokespecial target must be in self or superclass
+     */
+    public void testVFE4() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TPlain
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title number of arguments
+     */
+    public void testVFE5() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title type of argument - int
+     */
+    public void testVFE6() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.7 
+     * @title invokespecial must name method of "this" class or
+     *                 superclass
+     */
+    public void testVFE7() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.7 
+     * @title number of arguments passed to method
+     */
+    public void testVFE8() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.12 
+     * @title types of arguments passed to method
+     */
+    public void testVFE9() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.13 
+     * @title assignment incompatible references when accessing
+     *                  protected method
+     */
+    public void testVFE10() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        //@uses dxc.junit.opcodes.invokespecial.jm.TPlain
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_25");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.13 
+     * @title assignment incompatible references when accessing
+     *                  public method
+     */
+    public void testVFE11() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper2
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_26");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TAbstract.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TAbstract.java
new file mode 100644
index 0000000..b37a275
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TAbstract.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public abstract class TAbstract {
+    public abstract int toInt();
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TPlain.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TPlain.java
new file mode 100644
index 0000000..166c91a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TPlain.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class TPlain {
+    public int toInt() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TSuper.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TSuper.java
new file mode 100644
index 0000000..3abf06f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TSuper.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/** Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dxc.junit.opcodes.invokespecial.jm;
+
+/**
+ * @author fjost
+ *
+ */
+public class TSuper {
+    public int toInt() {
+        return 5;
+    }
+    
+    public int toInt(float v) {
+        return (int)v;
+    }
+    
+    public int testArgsOrder(int a, int b) {
+        return a/b;
+    }
+    
+    public native int toIntNative();
+    
+    public static int toIntStatic() {
+        return 5;
+    }
+    
+    protected int toIntP() {
+        return 5;
+    }
+    
+    private int toIntPvt() {
+        return 5;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TSuper2.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TSuper2.java
new file mode 100644
index 0000000..049cedd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TSuper2.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/** Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dxc.junit.opcodes.invokespecial.jm;
+
+/**
+ * @author fjost
+ *
+ */
+public class TSuper2 extends TSuper {
+    
+    public int test() {
+        return 13;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_1.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_1.j
new file mode 100644
index 0000000..b2bbe6f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_1.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_1.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_1
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toInt()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_1.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_1.java
new file mode 100644
index 0000000..865d81f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_1 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_10.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_10.j
new file mode 100644
index 0000000..ece1dfc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_10.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_10.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_10
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+;    aload_0
+    iconst_1
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toInt()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_10.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_10.java
new file mode 100644
index 0000000..82226b1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_10 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_11.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_11.j
new file mode 100644
index 0000000..7be1c31
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_11.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_11.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_11
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toIntStatic()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_11.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_11.java
new file mode 100644
index 0000000..da69e2f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_11 extends TSuper {
+
+    public int run() {
+        return super.toIntStatic();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_12.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_12.j
new file mode 100644
index 0000000..3396e82
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_12.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_12.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_12
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toIntPvt()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_12.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_12.java
new file mode 100644
index 0000000..3ad0f09
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_12 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_13.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_13.j
new file mode 100644
index 0000000..1e639e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_13.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_13.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_13
+.super dxc/junit/opcodes/invokespecial/jm/TAbstract
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TAbstract/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TAbstract/toInt()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_13.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_13.java
new file mode 100644
index 0000000..9c43cdc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_13 extends TAbstract {
+    
+    public int toInt() {
+        return 5;
+    }
+
+    public int run() {
+        return toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_14.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_14.j
new file mode 100644
index 0000000..983792e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_14.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_14.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_14
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+    aload_0
+;    ldc 5.0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toInt(F)I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_14.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_14.java
new file mode 100644
index 0000000..619f75f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_14.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_14 extends TSuper {
+
+    public int run() {
+        return super.toInt(5f);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_15.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_15.j
new file mode 100644
index 0000000..51650d9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_15.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_15.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_15
+.super dxc/junit/opcodes/invokespecial/jm/TSuper2
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper2/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper2/toInt()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_15.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_15.java
new file mode 100644
index 0000000..cabb444
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_15.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_15 extends TSuper2 {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_16.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_16.j
new file mode 100644
index 0000000..76c397c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_16.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_16.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_16
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toInt()F
+    pop
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_16.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_16.java
new file mode 100644
index 0000000..7cdb15a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_16 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_17.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_17.j
new file mode 100644
index 0000000..6a02a3c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_17.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_17.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_17
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/T_invokespecial_17/toIntP()I
+    ireturn
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_17.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_17.java
new file mode 100644
index 0000000..6c9a6da
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_17.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_17 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_18.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_18.j
new file mode 100644
index 0000000..c12833b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_18.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_18.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_18
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toIntP()I
+    ireturn
+    
+.end method
+
+.method protected toIntP()I
+
+    sipush 10
+    ireturn
+   
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_18.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_18.java
new file mode 100644
index 0000000..7821f26
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_18.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_18 extends TSuper {
+
+    protected int toIntP() {
+        return 10;
+    }
+    
+    public int run() {
+        return super.toIntP();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_19.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_19.j
new file mode 100644
index 0000000..bcbee9b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_19.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_19.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_19
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 4
+    .limit locals 2
+    iconst_1
+    aload_0
+    sipush 128
+    sipush 64
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/testArgsOrder(II)I
+    istore_1
+    iconst_1
+    if_icmpeq Label1
+    iinc 1 1
+Label1:
+    iload_1    
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_19.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_19.java
new file mode 100644
index 0000000..c828ff1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_19.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_19 extends TSuper {
+
+    public int run() {
+        return super.testArgsOrder(128, 64);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_2.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_2.j
new file mode 100644
index 0000000..4dbda7f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_2.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/T_invokespecial_2/getInt()I
+    ireturn
+.end method
+
+.method private getInt()I
+    sipush 345
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_2.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_2.java
new file mode 100644
index 0000000..d7e604e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_2.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_2 {
+
+    public int run() {
+        return getInt();
+    }
+
+    private int getInt() {
+        return 345;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_20.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_20.j
new file mode 100644
index 0000000..b7e0b34
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_20.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_20.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_20
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial toInt()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_20.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_20.java
new file mode 100644
index 0000000..48df5d2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_20.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_20 extends TSuper {
+
+    public int run() {
+        return toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_21.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_21.j
new file mode 100644
index 0000000..961b329
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_21.j
@@ -0,0 +1,67 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_21.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_21
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit locals 3
+    .limit stack 5
+    
+    sipush 123
+    istore_1
+    sipush 456
+    istore_2
+    
+    aload_0
+    iconst_1
+    iconst_2
+    invokespecial dxc/junit/opcodes/invokespecial/jm/T_invokespecial_21/test(II)I
+    
+    sipush 5
+    if_icmpne Label0
+    
+    iload_1
+    sipush 123
+    if_icmpne Label0
+
+    iload_2
+    sipush 456
+    if_icmpne Label0    
+    
+    iconst_1
+    ireturn
+    
+Label0:    
+    iconst_0
+    ireturn
+.end method
+
+.method private test(II)I
+    .limit locals 3
+    sipush 987
+    istore_1
+    sipush 765
+    istore_2
+    
+    sipush 5
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_21.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_21.java
new file mode 100644
index 0000000..2e3ab91
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_21.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_21 extends TSuper {
+
+    
+    private int test(int a, int b) {
+        int i = 0;
+        int j = 0;
+        return 5;
+    }
+    
+    public int run() {
+        int i = 123;
+        int j = 456;
+        test(0, 1);
+        
+        return 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22.j
new file mode 100644
index 0000000..e2bdcbb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22.j
@@ -0,0 +1,159 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_22.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field  value I
+.field  failed Z
+
+.method public <init>()V
+    .limit stack 3
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22.value I
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22.failed Z
+
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+   
+    iconst_0
+    istore_1
+
+Label4:
+    iload_1
+    sipush 1000
+    if_icmpge Label3
+
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22/test()V
+
+    iinc 1 1
+
+    goto Label4
+
+
+Label3:
+    return
+
+.end method
+
+
+
+.method private synchronized test()V
+    .limit stack 3
+    .limit locals 2
+    
+.line 16
+    aload_0
+    dup
+    getfield dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22.value I
+    dup
+    istore_1
+
+    iconst_1
+    iadd
+    putfield dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22.value I
+
+    iinc 1 1
+
+    invokestatic java/lang/Thread/yield()V
+
+    iload_1
+    aload_0
+    getfield dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22.value I
+    if_icmpeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22.failed Z
+
+Label0:
+    return
+.end method
+
+
+
+.method public static execute()Z
+    .limit stack 3
+    .limit locals 4
+
+    new dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22
+    dup
+    invokespecial dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:            ; exception handler
+    astore_3
+    goto Label3
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22.value I
+    sipush 2000
+    if_icmpne Label3
+
+    aload_0
+    getfield dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22.failed Z
+    ifne Label3
+
+    iconst_1
+    ireturn
+
+Label3:
+    iconst_0
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22.java
new file mode 100644
index 0000000..b9cb14f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_22 implements Runnable {
+    public final static int CNT = 1000;
+    int value = 0;
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    private synchronized void test()    {
+        value++;
+        int c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+    }
+    
+    public static boolean execute() {
+        T_invokespecial_22 test = new T_invokespecial_22();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.cfh
new file mode 100644
index 0000000..feb9dcb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.cfh
@@ -0,0 +1,131 @@
+//@class:dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000c
+// .  .  
+   00 0c 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0b 00 05 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 5, h: 0005: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 09 
+    // parsed:, offset 61, len 56, h: 0006: utf8{"dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23"}
+    // .  .  5  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  s  p  e  c  i  a  l  /  j  m  /  T  _  i  n  v  o  k  e  s  p  e  c  i  a  l  _  2  3  
+       01 00 35 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 73 70 65 63 69 61 6c 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 73 70 65 63 69 61 6c 5f 32 33 
+    // parsed:, offset 117, len 7, h: 0007: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 124, len 26, h: 0008: utf8{"T_invokespecial_23.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  s  p  e  c  i  a  l  _  2  3  .  j  a  v  a  
+       01 00 17 54 5f 69 6e 76 6f 6b 65 73 70 65 63 69 61 6c 5f 32 33 2e 6a 61 76 61 
+    // parsed:, offset 150, len 6, h: 0009: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 156, len 3, h: 000a: type{dxc.junit.opcodes.invokespecial.jm.T_invokespecial_23}
+    // .  .  .  
+       07 00 06 
+    // parsed:, offset 159, len 3, h: 000b: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.invokespecial.jm.T_invokespecial_23}
+// .  .  
+   00 0a 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0b 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:<init>, offset 174, len:41,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 09 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+//@mod           b7 00 01 
+           b7 01 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// parsed:, offset 205, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 207, len 0, h:  attributes[0]: 
+    // parsed:, offset 207, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 209, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 213, len 2, h: source: utf8{"T_invokespecial_23.java"}
+    // .  .  
+       00 08 
+// parsed:, offset 215, len 0, h: end attributes[0] 
+// parsed:, offset 215, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.j
new file mode 100644
index 0000000..4e92d44
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.j
@@ -0,0 +1,23 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_23.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.java
new file mode 100644
index 0000000..c4b048e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_23 {
+
+    public T_invokespecial_23() {
+        // only constructor        
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_24.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_24.j
new file mode 100644
index 0000000..487c7c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_24.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_24.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_24
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 3
+    aload_0
+    dconst_1
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toInt(F)I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_24.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_24.java
new file mode 100644
index 0000000..ef62353
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_24.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_24 extends TSuper {
+
+    public int run() {
+        return super.toInt(5f);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_25.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_25.j
new file mode 100644
index 0000000..764c322
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_25.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_25.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_25
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/invokespecial/jm/TPlain
+    dup
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TPlain/<init>()V
+    astore_1
+
+    aload_1
+    invokevirtual dxc/junit/opcodes/invokespecial/jm/TSuper/toIntP()I
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_25.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_25.java
new file mode 100644
index 0000000..9f2a005
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_25.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_25 extends TSuper {
+
+    public int run() {
+        TPlain p = new TPlain();
+        return p.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_26.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_26.j
new file mode 100644
index 0000000..ba28332
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_26.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_26.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_26
+.super dxc/junit/opcodes/invokespecial/jm/TSuper2
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper2/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+    .limit locals 1
+    
+    new dxc/junit/opcodes/invokespecial/jm/TSuper
+    dup
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper2/test()I
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_26.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_26.java
new file mode 100644
index 0000000..ffd72f3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_26.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_26 extends TSuper2 {
+    
+    public int run() {
+        return super.test();
+    }   
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.cfh
new file mode 100644
index 0000000..89ebfae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.cfh
@@ -0,0 +1,132 @@
+//@class:dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000c
+// .  .  
+   00 0c 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0b 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 55, h: 0003: utf8{"dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3"}
+    // .  .  4  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  s  p  e  c  i  a  l  /  j  m  /  T  _  i  n  v  o  k  e  s  p  e  c  i  a  l  _  3  
+       01 00 34 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 73 70 65 63 69 61 6c 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 73 70 65 63 69 61 6c 5f 33 
+    // parsed:, offset 89, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 102, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 111, len 25, h: 0006: utf8{"T_invokespecial_3.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  s  p  e  c  i  a  l  _  3  .  j  a  v  a  
+       01 00 16 54 5f 69 6e 76 6f 6b 65 73 70 65 63 69 61 6c 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 136, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0a 
+    // parsed:, offset 141, len 3, h: 0008: type{dxc.junit.opcodes.invokespecial.jm.T_invokespecial_3}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 144, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 151, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 157, len 3, h: 000b: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 160, len 0, h: end constant_pool
+// parsed:, offset 160, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 162, len 2, h: this_class: type{dxc.junit.opcodes.invokespecial.jm.T_invokespecial_3}
+// .  .  
+   00 08 
+// parsed:, offset 164, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0b 
+// parsed:, offset 166, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 168, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: methods_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:<init>, offset 172, len:41,desc: ()V
+// parsed:, offset 172, len 0, h:  methods[0]: 
+    // parsed:, offset 172, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 174, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 176, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 178, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 180, len 0, h:  attributes[0]: 
+        // parsed:, offset 180, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 182, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 186, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 188, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+    //@mod:b7 00 01 
+           b7 00 02 
+           
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 199, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 201, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 203, len 0, h: end attributes[0] 
+// parsed:, offset 203, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// parsed:, offset 203, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 205, len 0, h:  attributes[0]: 
+    // parsed:, offset 205, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 207, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 211, len 2, h: source: utf8{"T_invokespecial_3.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 213, len 0, h: end attributes[0] 
+// parsed:, offset 213, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.j
new file mode 100644
index 0000000..f62d537
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.j
@@ -0,0 +1,23 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_3.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.java
new file mode 100644
index 0000000..bd1a34e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_3 {
+
+    public T_invokespecial_3() {
+        // only constructor        
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_4.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_4.j
new file mode 100644
index 0000000..072e67d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_4.j
@@ -0,0 +1,23 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_4.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<clinit>()V
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_4.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_4.java
new file mode 100644
index 0000000..04b907f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_4 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_5.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_5.j
new file mode 100644
index 0000000..1a6a6a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_5.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_5.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_5
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+;    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toInt()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_5.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_5.java
new file mode 100644
index 0000000..40b961e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_5 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_6.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_6.j
new file mode 100644
index 0000000..14db5c5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_6.j
@@ -0,0 +1,23 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_6.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TPlain/doit()V
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_6.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_6.java
new file mode 100644
index 0000000..eed67c7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_6.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_6 {
+
+    public void run() {
+        pri();
+        pro();
+    }
+
+    protected void pro() {
+        // TODO Auto-generated method stub
+        
+    }
+
+    private void pri() {
+        // TODO Auto-generated method stub
+        
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_7.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_7.j
new file mode 100644
index 0000000..c1d5d80
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_7.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_7.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_7
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/T_invokespecial_7/toInt1()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_7.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_7.java
new file mode 100644
index 0000000..b62ed8f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_7 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_8.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_8.j
new file mode 100644
index 0000000..e832660
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_8.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_8.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_8
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+;    aload_0
+    aconst_null
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toInt()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_8.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_8.java
new file mode 100644
index 0000000..e11e638
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_8 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_9.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_9.j
new file mode 100644
index 0000000..244fb4b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_9.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokespecial_9.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_9
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toIntNative()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_9.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_9.java
new file mode 100644
index 0000000..4a0b27a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_9 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/TestStubs.java
new file mode 100644
index 0000000..9d5cfea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic;
+
+public class TestStubs {
+
+    protected void TestStub() {
+        // used by testE9
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/Test_invokestatic.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/Test_invokestatic.java
new file mode 100644
index 0000000..e506a30
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/Test_invokestatic.java
@@ -0,0 +1,302 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_1;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_13;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_14;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_15;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_16;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_17;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_18;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_2;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_4;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_5;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_6;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_7;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_8;
+
+public class Test_invokestatic extends DxTestCase {
+
+    /**
+     * @title  Static method from library class Math
+     */
+    public void testN1() {
+        T_invokestatic_1 t = new T_invokestatic_1();
+        assertEquals(1234567, t.run());
+    }
+
+    /**
+     * @title  Static method from user class
+     */
+    public void testN2() {
+        // @uses dxc.junit.opcodes.invokestatic.jm.TestClass
+        T_invokestatic_2 t = new T_invokestatic_2();
+        assertEquals(777, t.run());
+    }
+
+    /**
+     * @title  Check that <clinit> is called
+     */
+    public void testN3() {
+        assertEquals(123456789l, T_invokestatic_4.run());
+    }
+
+    /**
+     * @title  Check that monitor is acquired if method is synchronized
+     */
+    public void testN4() {
+        assertTrue(T_invokestatic_12.execute());
+    }
+
+    /**
+     * @title  Check that new frame is created by invokestatic and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        // @uses dxc.junit.opcodes.invokestatic.jm.TestClass
+        T_invokestatic_15 t = new T_invokestatic_15();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  Static protected method from other class in the same package
+     */
+    public void testN6() {
+        // @uses dxc.junit.opcodes.invokestatic.jm.TestClass
+        T_invokestatic_18 t = new T_invokestatic_18();
+        assertEquals(888, t.run());
+    }
+
+    /**
+     * @title  attempt to call non-static method
+     * 
+     */
+    public void testE1() {
+        try {
+            T_invokestatic_5 t = new T_invokestatic_5();
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError icce) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Native method can't be linked
+     * 
+     */
+    public void testE2() {
+        T_invokestatic_6 t = new T_invokestatic_6();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  NoSuchMethodError
+     */
+    public void testE3() {
+        try {
+            T_invokestatic_7 t = new T_invokestatic_7();
+            t.run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError nsme) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Attempt to call private method of other class
+     * 
+     */
+    public void testE5() {
+        // @uses dxc.junit.opcodes.invokestatic.jm.TestClass
+        try {
+            T_invokestatic_8 t = new T_invokestatic_8();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  method has different signature
+     */
+    public void testE6() {
+        // @uses dxc.junit.opcodes.invokestatic.jm.TestClass
+        try {
+               T_invokestatic_13 t = new T_invokestatic_13();
+            t.run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError nsme) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  initialization of referenced class throws exception
+     */
+    public void testE7() {
+        // @uses dxc.junit.opcodes.invokestatic.jm.TestClassInitError
+        T_invokestatic_14 t = new T_invokestatic_14();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Attempt to call abstract method of other class
+     * 
+     */
+    public void testE8() {
+        // @uses dxc.junit.opcodes.invokestatic.jm.TestClassAbstract
+        try {
+            T_invokestatic_16 t = new T_invokestatic_16();
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Attempt to call protected method of unrelated class
+     * 
+     */
+    public void testE9() {
+        // @uses dxc.junit.opcodes.invokestatic.TestStubs
+        try {
+            T_invokestatic_17 t = new T_invokestatic_17();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.13
+     * @title invalid type into constant pool
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.invokestatic.jm.T_invokestatic_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.13
+     * @title invalid index into constant pool table
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.invokestatic.jm.T_invokestatic_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.14 
+     * @title &lt;clinit&gt; may not be called using invokestatic
+     */
+    public void testVFE3() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokestatic.jm.T_invokestatic_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokestatic.jm.T_invokestatic_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.14 
+     * @title &lt;init&gt; may not be called using invokestatic
+     */
+    public void testVFE5() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokestatic.jm.T_invokestatic_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.12 
+     * @title types of arguments passed to method
+     */
+    public void testVFE6() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokestatic.jm.T_invokestatic_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_1.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_1.j
new file mode 100644
index 0000000..59b7ab8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_1.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_1.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    ldc -1234567
+    invokestatic java/lang/Math/abs(I)I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_1.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_1.java
new file mode 100644
index 0000000..c145a8e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_1 {
+
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_10.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_10.j
new file mode 100644
index 0000000..4a82b56
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_10.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_10.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_10
+.super java/lang/Object
+
+.field static v I
+
+.method static <clinit>()V
+    .limit stack 2
+    .limit locals 0
+
+    ldc 1
+    putstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_10.v I
+    return
+.end method
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    invokestatic dxc/junit/opcodes/invokestatic/jm/T_invokestatic_10/<clinit>()V
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_10.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_10.java
new file mode 100644
index 0000000..aeabf23
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_10 {
+    
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_11.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_11.j
new file mode 100644
index 0000000..49f3b5c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_11.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_11.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+;    ldc -1234567
+    invokestatic java/lang/Math/abs(I)I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_11.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_11.java
new file mode 100644
index 0000000..89cf798
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_11 {
+    
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12.j
new file mode 100644
index 0000000..1b1ab55
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12.j
@@ -0,0 +1,146 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_12.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field static value I
+.field static failed Z
+
+.method static <clinit>()V
+    .limit stack 1
+    iconst_0
+    putstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+
+    iconst_0
+    putstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.failed Z
+
+    return
+.end method
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+
+    iconst_0
+    istore_1
+
+    Label1:
+    invokestatic dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12/test()V
+
+    iinc 1 1
+
+    iload_1
+    sipush 1000
+    if_icmplt Label1
+
+    return
+
+.end method
+
+
+.method private static synchronized test()V
+    .limit stack 2
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+    iconst_1
+    iadd
+    putstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+
+    getstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+    istore_0
+
+    invokestatic java/lang/Thread/yield()V
+
+    iload_0
+    getstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+    if_icmpeq Label0
+
+    iconst_1
+    putstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.failed Z
+
+Label0:
+    return
+.end method
+
+.method public static execute()Z
+    .limit stack 3
+    .limit locals 4
+
+    new dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12
+    dup
+    invokespecial dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:
+    astore_3
+    iconst_0
+    ireturn
+
+Label0:
+    getstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+    sipush 2000
+    if_icmpeq Label1
+
+    iconst_0
+    ireturn
+
+Label1:
+    getstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.failed Z
+    ifeq Label2
+    iconst_0
+    ireturn
+
+Label2:
+    iconst_1
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12.java
new file mode 100644
index 0000000..11fc236
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_12 implements Runnable {
+    public final static int CNT = 1000;
+    static int value = 0;
+    static boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    private synchronized static void test()    {
+        value++;
+        int c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+    }
+    
+    public static boolean execute() {
+        T_invokestatic_12 test = new T_invokestatic_12();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(value != CNT * 2)
+            return false;
+        return !failed;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_13.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_13.j
new file mode 100644
index 0000000..9b008f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_13.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_13.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_13
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    fconst_1
+    invokestatic dxc/junit/opcodes/invokestatic/jm/TestClass/test1(F)I
+    pop
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_13.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_13.java
new file mode 100644
index 0000000..e265d15
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_13.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_13 {
+    
+    public void run(){
+        TestClass.test1(1);
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_14.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_14.j
new file mode 100644
index 0000000..ce3423c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_14.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_14.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_14
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/invokestatic/jm/TestClassInitError/test()V
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_14.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_14.java
new file mode 100644
index 0000000..c003d15
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_14.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_14 {
+    
+    public void run(){
+        TestClassInitError.test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_15.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_15.j
new file mode 100644
index 0000000..dfbf896
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_15.j
@@ -0,0 +1,60 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_15.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_15
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 3
+
+    bipush 123
+    istore_1
+
+    sipush 345
+    istore_2
+
+    sipush 12
+    sipush 6
+    
+    invokestatic dxc/junit/opcodes/invokestatic/jm/TestClass/testArgsOrder(II)I
+
+    iconst_2
+    if_icmpne Label0
+
+    iload_1
+    bipush 123
+    if_icmpne Label0
+
+    iload_2
+    sipush 345
+    if_icmpne Label0
+
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_15.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_15.java
new file mode 100644
index 0000000..26dfe06
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_15.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_15 {
+    
+    public boolean run(){
+        int i = 123;
+        int j = 345;
+        if(TestClass.testArgsOrder(12, 2) == 6)
+            if(i == 123)
+                if(j == 345)
+                    return true;
+        return false;
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_16.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_16.j
new file mode 100644
index 0000000..4b88c39
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_16.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_16.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_16
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/invokestatic/jm/TestClassAbstract/test()V
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_16.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_16.java
new file mode 100644
index 0000000..e59ad78
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_16 {
+    
+    public void run(){
+       // TestClassAbstract.test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_17.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_17.j
new file mode 100644
index 0000000..ce62483
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_17.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_17.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_17
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/invokestatic/TestStubs/TestStub()V
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_17.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_17.java
new file mode 100644
index 0000000..995e4da
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_17.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_17 {
+    
+    public void run(){
+       // TestStubs.TestStub();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_18.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_18.j
new file mode 100644
index 0000000..1089e35
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_18.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_18.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_18
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/invokestatic/jm/TestClass/testP()I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_18.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_18.java
new file mode 100644
index 0000000..7a168c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_18.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+import dxc.junit.opcodes.invokestatic.jm.TestClass;
+
+public class T_invokestatic_18  {
+    
+    public int run() {
+        return TestClass.testP();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_19.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_19.j
new file mode 100644
index 0000000..70b7401
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_19.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_19.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_19
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokestatic java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    iconst_0
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_19.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_19.java
new file mode 100644
index 0000000..0c712c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_19.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_19 {
+    
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_2.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_2.j
new file mode 100644
index 0000000..7eb5362
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_2.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_2.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/invokestatic/jm/TestClass/test()I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_2.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_2.java
new file mode 100644
index 0000000..3ca965e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+import dxc.junit.opcodes.invokestatic.jm.TestClass;
+
+public class T_invokestatic_2  {
+    
+    public int run() {
+        return TestClass.test();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_20.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_20.j
new file mode 100644
index 0000000..638d7a84
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_20.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_20.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_20
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+;    ldc -1234567
+    ldc2_w 1
+    invokestatic java/lang/Math/abs(I)I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_20.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_20.java
new file mode 100644
index 0000000..7aabdc0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_20.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_20 {
+    
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.cfh
new file mode 100644
index 0000000..d3cdaf8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.cfh
@@ -0,0 +1,206 @@
+//@class:dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0015
+// .  .  
+   00 15 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 19, h: 0001: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 29, len 9, h: 0002: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 38, len 3, h: 0003: type{java.lang.Object}
+    // .  .  .  
+       07 00 01 
+    // parsed:, offset 41, len 5, h: 0004: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 02 00 05 
+    // parsed:, offset 46, len 6, h: 0005: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 52, len 7, h: 0006: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 59, len 13, h: 0007: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 72, len 6, h: 0008: utf8{"()I"}
+    // .  .  .  (  )  I  
+       01 00 03 28 29 49 
+    // parsed:, offset 78, len 6, h: 0009: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 84, len 3, h: 000a: type{java.lang.Math}
+    // .  .  .  
+       07 00 11 
+    // parsed:, offset 87, len 6, h: 000b: utf8{"abs"}
+    // .  .  .  a  b  s  
+       01 00 03 61 62 73 
+    // parsed:, offset 93, len 5, h: 000c: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 03 00 04 
+    // parsed:, offset 98, len 5, h: 000d: method{java.lang.Math.abs:(I)I}
+    // .  .  .  .  .  
+       0a 00 0a 00 13 
+    // parsed:, offset 103, len 53, h: 000e: utf8{"dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3"}
+    // .  .  2  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  s  t  a  t  i  c  /  j  m  /  T  _  i  n  v  o  k  e  s  t  a  t  i  c  _  3  
+       01 00 32 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 73 74 61 74 69 63 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 73 74 61 74 69 63 5f 33 
+    // parsed:, offset 156, len 7, h: 000f: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+    // parsed:, offset 163, len 3, h: 0010: type{dxc.junit.opcodes.invokestatic.jm.T_invokestatic_3}
+    // .  .  .  
+       07 00 0e 
+    // parsed:, offset 166, len 17, h: 0011: utf8{"java/lang/Math"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  M  a  t  h  
+       01 00 0e 6a 61 76 61 2f 6c 61 6e 67 2f 4d 61 74 68 
+    // parsed:, offset 183, len 5, h: 0012: int{0xffed2979 / -1234567}
+    // .  .  .  )  y  
+       03 ff ed 29 79 
+    // parsed:, offset 188, len 5, h: 0013: nat{abs:(I)I}
+    // .  .  .  .  .  
+       0c 00 0b 00 0f 
+    // parsed:, offset 193, len 24, h: 0014: utf8{"T_invokestatic_3.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  s  t  a  t  i  c  _  3  .  j  a  v  a  
+       01 00 15 54 5f 69 6e 76 6f 6b 65 73 74 61 74 69 63 5f 33 2e 6a 61 76 61 
+// parsed:, offset 217, len 0, h: end constant_pool
+// parsed:, offset 217, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 219, len 2, h: this_class: type{dxc.junit.opcodes.invokestatic.jm.T_invokestatic_3}
+// .  .  
+   00 10 
+// parsed:, offset 221, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 03 
+// parsed:, offset 223, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 225, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 227, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 229, len:73,desc: ()V
+// parsed:, offset 229, len 0, h:  methods[0]: 
+    // parsed:, offset 229, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 231, len 2, h: name: <init>
+    // .  .  
+       00 02 
+    // parsed:, offset 233, len 2, h: descriptor: ()V
+    // .  .  
+       00 05 
+    // parsed:, offset 235, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 237, len 0, h:  attributes[0]: 
+        // parsed:, offset 237, len 2, h: name: Code
+        // .  .  
+           00 06 
+        // parsed:, offset 239, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 243, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 245, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 247, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 0c 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 256, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 258, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 260, len 0, h: end attributes[0] 
+// parsed:, offset 260, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 260, len:42,desc: ()I
+// parsed:, offset 260, len 0, h:  methods[1]: 
+    // parsed:, offset 260, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 262, len 2, h: name: run
+    // .  .  
+       00 09 
+    // parsed:, offset 264, len 2, h: descriptor: ()I
+    // .  .  
+       00 08 
+    // parsed:, offset 266, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 268, len 0, h:  attributes[0]: 
+        // parsed:, offset 268, len 2, h: name: Code
+        // .  .  
+           00 06 
+        // parsed:, offset 270, len 4, h: length: 00000012
+        // .  .  .  .  
+           00 00 00 12 
+        // parsed:, offset 274, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 276, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 278, len 4, h: code_length: 00000006
+        // .  .  .  .  
+           00 00 00 06 
+        // parsed:, offset 0, len 2, h: 0000: ldc #-0012d687
+        // .  .  
+           12 12 
+        // parsed:, offset 2, len 3, h: 0002: invokestatic method{java.lang.Math.abs:(I)I}
+        // .  .  .  
+//@mod           b8 00 0d           
+           b8 00 0e 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 288, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 290, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 292, len 0, h: end attributes[0] 
+// parsed:, offset 292, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()I
+// parsed:, offset 292, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 294, len 0, h:  attributes[0]: 
+    // parsed:, offset 294, len 2, h: name: SourceFile
+    // .  .  
+       00 07 
+    // parsed:, offset 296, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 300, len 2, h: source: utf8{"T_invokestatic_3.java"}
+    // .  .  
+       00 14 
+// parsed:, offset 302, len 0, h: end attributes[0] 
+// parsed:, offset 302, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.j
new file mode 100644
index 0000000..271a935
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_3.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    ldc -1234567
+    invokestatic java/lang/Math/abs(I)I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.java
new file mode 100644
index 0000000..e6fb064
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_3 {
+
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_4.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_4.j
new file mode 100644
index 0000000..f8c2bb1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_4.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_4.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_4
+.super java/lang/Object
+
+.field static v2 J
+
+.method static <clinit>()V
+    .limit stack 2
+    .limit locals 0
+
+    ldc2_w 123456789
+    putstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_4.v2 J
+    return
+.end method
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()J
+    .limit stack 2
+    .limit locals 2
+
+    getstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_4.v2 J
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_4.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_4.java
new file mode 100644
index 0000000..d87b044
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_4 {
+
+    static long v2 = 123456789l;
+
+    public static long run() {
+        return v2;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_5.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_5.j
new file mode 100644
index 0000000..c75484f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_5.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_5.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    iconst_5
+    invokestatic dxc/junit/opcodes/invokestatic/jm/T_invokestatic_5/test(I)I
+    ireturn
+
+.end method
+
+.method public test(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iload_1
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_5.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_5.java
new file mode 100644
index 0000000..c9448c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_5.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_5 {
+    
+    public int run() {
+        return test(5);
+    }
+    
+    public int test(int i1) {
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_6.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_6.j
new file mode 100644
index 0000000..3ad06d8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_6.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_6.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static native test()V
+.end method
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/invokestatic/jm/T_invokestatic_6/test()V
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_6.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_6.java
new file mode 100644
index 0000000..4d38858
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_6.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_6 {
+
+    public static native void test();
+    
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_7.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_7.j
new file mode 100644
index 0000000..97d9b7b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_7.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_7.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static test()V
+    .limit stack 0
+    .limit locals 0
+    return
+.end method
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/invokestatic/jm/T_invokestatic_7/test1()V
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_7.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_7.java
new file mode 100644
index 0000000..187b33d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_7.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_7 {
+    
+    public static void test(){
+    }
+    
+    public void run(){
+        test();
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_8.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_8.j
new file mode 100644
index 0000000..fdc33e2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_8.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_8.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    invokestatic dxc/junit/opcodes/invokestatic/jm/TestClass/testPvt()V
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_8.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_8.java
new file mode 100644
index 0000000..35a3157
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_8 {
+    
+    public void run(){
+        TestClass.test();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.cfh
new file mode 100644
index 0000000..7add6ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.cfh
@@ -0,0 +1,206 @@
+//@class:dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0015
+// .  .  
+   00 15 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 19, h: 0001: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 29, len 9, h: 0002: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 38, len 3, h: 0003: type{java.lang.Object}
+    // .  .  .  
+       07 00 01 
+    // parsed:, offset 41, len 5, h: 0004: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 02 00 05 
+    // parsed:, offset 46, len 6, h: 0005: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 52, len 7, h: 0006: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 59, len 13, h: 0007: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 72, len 53, h: 0008: utf8{"dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9"}
+    // .  .  2  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  s  t  a  t  i  c  /  j  m  /  T  _  i  n  v  o  k  e  s  t  a  t  i  c  _  9  
+       01 00 32 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 73 74 61 74 69 63 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 73 74 61 74 69 63 5f 39 
+    // parsed:, offset 125, len 6, h: 0009: utf8{"()I"}
+    // .  .  .  (  )  I  
+       01 00 03 28 29 49 
+    // parsed:, offset 131, len 6, h: 000a: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 137, len 3, h: 000b: type{java.lang.Math}
+    // .  .  .  
+       07 00 12 
+    // parsed:, offset 140, len 6, h: 000c: utf8{"abs"}
+    // .  .  .  a  b  s  
+       01 00 03 61 62 73 
+    // parsed:, offset 146, len 5, h: 000d: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 03 00 04 
+    // parsed:, offset 151, len 5, h: 000e: method{java.lang.Math.abs:(I)I}
+    // .  .  .  .  .  
+       0a 00 0b 00 14 
+    // parsed:, offset 156, len 3, h: 000f: type{dxc.junit.opcodes.invokestatic.jm.T_invokestatic_9}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 159, len 24, h: 0010: utf8{"T_invokestatic_9.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  s  t  a  t  i  c  _  9  .  j  a  v  a  
+       01 00 15 54 5f 69 6e 76 6f 6b 65 73 74 61 74 69 63 5f 39 2e 6a 61 76 61 
+    // parsed:, offset 183, len 7, h: 0011: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+    // parsed:, offset 190, len 17, h: 0012: utf8{"java/lang/Math"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  M  a  t  h  
+       01 00 0e 6a 61 76 61 2f 6c 61 6e 67 2f 4d 61 74 68 
+    // parsed:, offset 207, len 5, h: 0013: int{0xffed2979 / -1234567}
+    // .  .  .  )  y  
+       03 ff ed 29 79 
+    // parsed:, offset 212, len 5, h: 0014: nat{abs:(I)I}
+    // .  .  .  .  .  
+       0c 00 0c 00 11 
+// parsed:, offset 217, len 0, h: end constant_pool
+// parsed:, offset 217, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 219, len 2, h: this_class: type{dxc.junit.opcodes.invokestatic.jm.T_invokestatic_9}
+// .  .  
+   00 0f 
+// parsed:, offset 221, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 03 
+// parsed:, offset 223, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 225, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 227, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 229, len:73,desc: ()V
+// parsed:, offset 229, len 0, h:  methods[0]: 
+    // parsed:, offset 229, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 231, len 2, h: name: <init>
+    // .  .  
+       00 02 
+    // parsed:, offset 233, len 2, h: descriptor: ()V
+    // .  .  
+       00 05 
+    // parsed:, offset 235, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 237, len 0, h:  attributes[0]: 
+        // parsed:, offset 237, len 2, h: name: Code
+        // .  .  
+           00 06 
+        // parsed:, offset 239, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 243, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 245, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 247, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 0d 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 256, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 258, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 260, len 0, h: end attributes[0] 
+// parsed:, offset 260, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 260, len:42,desc: ()I
+// parsed:, offset 260, len 0, h:  methods[1]: 
+    // parsed:, offset 260, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 262, len 2, h: name: run
+    // .  .  
+       00 0a 
+    // parsed:, offset 264, len 2, h: descriptor: ()I
+    // .  .  
+       00 09 
+    // parsed:, offset 266, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 268, len 0, h:  attributes[0]: 
+        // parsed:, offset 268, len 2, h: name: Code
+        // .  .  
+           00 06 
+        // parsed:, offset 270, len 4, h: length: 00000012
+        // .  .  .  .  
+           00 00 00 12 
+        // parsed:, offset 274, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 276, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 278, len 4, h: code_length: 00000006
+        // .  .  .  .  
+           00 00 00 06 
+        // parsed:, offset 0, len 2, h: 0000: ldc #-0012d687
+        // .  .  
+           12 13 
+        // parsed:, offset 2, len 3, h: 0002: invokestatic method{java.lang.Math.abs:(I)I}
+        // .  .  .  
+//@mod           b8 00 0e           
+           b8 01 0e 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 288, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 290, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 292, len 0, h: end attributes[0] 
+// parsed:, offset 292, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()I
+// parsed:, offset 292, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 294, len 0, h:  attributes[0]: 
+    // parsed:, offset 294, len 2, h: name: SourceFile
+    // .  .  
+       00 07 
+    // parsed:, offset 296, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 300, len 2, h: source: utf8{"T_invokestatic_9.java"}
+    // .  .  
+       00 10 
+// parsed:, offset 302, len 0, h: end attributes[0] 
+// parsed:, offset 302, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.j
new file mode 100644
index 0000000..edcc8c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokestatic_9.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    ldc -1234567
+    invokestatic java/lang/Math/abs(I)I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.java
new file mode 100644
index 0000000..4944efd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_9 {
+    
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClass.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClass.java
new file mode 100644
index 0000000..ef8723f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClass.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class TestClass {
+    
+    public static int test(){
+        return 777;
+    }
+    
+    public static int test1(int i1){
+        int i = i1 + 5;
+        return i;
+    }
+    
+    public static int testArgsOrder(int i1, int i2){
+        int a = 3454;
+        int b = 2302;
+        int i = i1 / i2;
+        return i;
+    }
+    
+    protected static int testP(){
+        return 888;
+    }
+    
+    private static void testPvt(){
+        
+    }
+}
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClassAbstract.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClassAbstract.java
new file mode 100644
index 0000000..5d24d39
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClassAbstract.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public abstract class TestClassAbstract {
+    
+    public abstract void test();
+}
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClassInitError.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClassInitError.java
new file mode 100644
index 0000000..c2d176e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClassInitError.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class TestClassInitError {
+    static int a = 1 / 0;
+    public static void test() {
+        
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/TProtected.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/TProtected.java
new file mode 100644
index 0000000..78c0ddb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/TProtected.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual;
+
+public class TProtected {
+
+    @SuppressWarnings("unused")
+    private void TestStub() {
+        // used by testE6
+    }
+    
+
+    protected void TestStubP() {
+        // used by testE7
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/Test_invokevirtual.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/Test_invokevirtual.java
new file mode 100644
index 0000000..1726067
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/Test_invokevirtual.java
@@ -0,0 +1,352 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_1;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_13;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_14;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_15;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_17;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_18;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_19;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_20;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_3;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_4;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_5;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_6;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_7;
+
+public class Test_invokevirtual extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_invokevirtual_1 t = new T_invokevirtual_1();
+        int a = 1;
+        String sa = "a" + a;
+        String sb = "a1";
+        assertTrue(t.run(sa, sb));
+        assertFalse(t.run(this, sa));
+        assertFalse(t.run(sb, this));
+    }
+
+    /**
+     * @title  Check that monitor is acquired if method is synchronized
+     */
+    public void testN2() {
+        assertTrue(T_invokevirtual_2.execute());
+    }
+
+    /**
+     * @title  Invoke protected method of superclass
+     */
+    public void testN3() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        T_invokevirtual_7 t = new T_invokevirtual_7();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title  Private method call
+     */
+    public void testN4() {
+        T_invokevirtual_13 t = new T_invokevirtual_13();
+        assertEquals(345, t.run());
+    }
+
+    /**
+     * @title  Check that new frame is created by invokevirtual and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        T_invokevirtual_14 t = new T_invokevirtual_14();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  Recursion of method lookup procedure
+     */
+    public void testN6() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        T_invokevirtual_17 t = new T_invokevirtual_17();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title 
+     */
+    public void testE1() {
+        T_invokevirtual_3 t = new T_invokevirtual_3();
+        String s = "s";
+        try {
+            t.run(null, s);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Native method can't be linked
+     */
+    public void testE2() {
+        T_invokevirtual_4 t = new T_invokevirtual_4();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke static method
+     */
+    public void testE3() {
+        try {
+            T_invokevirtual_5 t = new T_invokevirtual_5();
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError icce) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke abstract method
+     */
+    public void testE4() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.ATest
+        T_invokevirtual_6 t = new T_invokevirtual_6();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke non-existing method
+     */
+    public void testE5() {
+        try {
+            T_invokevirtual_15 t = new T_invokevirtual_15();
+            t.run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke private method of other class
+     */
+    public void testE6() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        // @uses dxc.junit.opcodes.invokevirtual.TProtected
+        try {
+            T_invokevirtual_18 t = new T_invokevirtual_18();
+            t.run(new TProtected());
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke protected method of other class
+     */
+    public void testE7() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        // @uses dxc.junit.opcodes.invokevirtual.TProtected
+        try {
+            T_invokevirtual_20 t = new T_invokevirtual_20();
+            t.run(new TProtected());
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  method has different signature
+     */
+    public void testE8() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        try {
+            T_invokevirtual_19 t = new T_invokevirtual_19();
+            t.run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.13 
+     * @title valid index into constant pool table
+     */
+    public void testVFE1() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.13
+     * @title invalid index into constant pool table
+     */
+    public void testVFE2() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.14 
+     * @title &lt;clinit&gt; may not be called using invokevirtual
+     */
+    public void testVFE3() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title type of argument - int
+     */
+    public void testVFE5() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.14 
+     * @title &lt;init&gt; may not be called using invokevirtual
+     */
+    public void testVFE6() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.12 
+     * @title types of arguments passed to method
+     */
+    public void testVFE7() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.13 
+     * @title assignment incompatible references when accessing
+     *                  protected method
+     */
+    public void testVFE8() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TPlain
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.13 
+     * @title assignment incompatible references when accessing
+     *                  public method
+     */
+    public void testVFE9() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper2
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/ATest.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/ATest.java
new file mode 100644
index 0000000..d0189ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/ATest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public abstract class ATest {
+    
+    public abstract void test();       
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TPlain.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TPlain.java
new file mode 100644
index 0000000..2939359
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TPlain.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/** Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dxc.junit.opcodes.invokevirtual.jm;
+
+/**
+ * @author fjost
+ *
+ */
+public class TPlain {
+    public int toInt() {
+        return 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TSuper.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TSuper.java
new file mode 100644
index 0000000..cc198ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TSuper.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/** Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dxc.junit.opcodes.invokevirtual.jm;
+
+/**
+ * @author fjost
+ *
+ */
+public class TSuper {
+    public int toInt() {
+        return 5;
+    }
+    
+    public int toInt(float v) {
+        return (int)v;
+    }
+    
+    public native int toIntNative();
+    
+    public static int toIntStatic() {
+        return 5;
+    }
+    
+    protected int toIntP() {
+        return 5;
+    }
+    
+    private int toIntPvt() {
+        return 5;
+    }
+    
+    public int testArgsOrder(int a, int b){
+        int i = 349;
+        int j = 344656;
+        return a / b;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TSuper2.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TSuper2.java
new file mode 100644
index 0000000..6fcbefe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TSuper2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+import dxc.junit.opcodes.invokespecial.jm.TSuper;
+
+public class TSuper2 extends TSuper {
+    
+    public int test() {
+        return 13;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_1.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_1.j
new file mode 100644
index 0000000..b64e0c7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_1.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+    aload_1
+    aload_2
+    invokevirtual java/lang/Object/equals(Ljava/lang/Object;)Z
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_1.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_1.java
new file mode 100644
index 0000000..1bbaec3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_1 {
+
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_10.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_10.j
new file mode 100644
index 0000000..e12428b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_10.j
@@ -0,0 +1,23 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_10.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokevirtual java/lang/Object/<clinit>()V
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_10.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_10.java
new file mode 100644
index 0000000..0bdaf58
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_10 {
+    
+    public void run() {
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_11.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_11.j
new file mode 100644
index 0000000..5fb634d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_11.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_11.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+;    aload_1
+    invokevirtual java/lang/Object/equals(Ljava/lang/Object;)Z
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_11.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_11.java
new file mode 100644
index 0000000..7c28cae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_11 {
+    
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_12.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_12.j
new file mode 100644
index 0000000..293a6e5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_12.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_12.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_12
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+    iconst_1
+    aload_1
+    invokevirtual java/lang/Object/equals(Ljava/lang/Object;)Z
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_12.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_12.java
new file mode 100644
index 0000000..62e1971
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_12 {
+
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_13.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_13.j
new file mode 100644
index 0000000..f7f0f0a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_13.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_13.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_13
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_13/getInt()I
+    ireturn
+.end method
+
+.method private getInt()I
+    sipush 345
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_13.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_13.java
new file mode 100644
index 0000000..dfa6179
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_13 {
+    
+    public int run() {
+        return getInt();
+    }
+
+    private int getInt() {
+        return 345;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_14.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_14.j
new file mode 100644
index 0000000..ebbad2c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_14.j
@@ -0,0 +1,59 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_14.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_14
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+    return
+.end method
+
+
+.method public run()Z
+    .limit stack 3
+    .limit locals 3
+
+    bipush 123
+    istore_1
+
+    sipush 659
+    istore_2
+
+    aload_0
+    sipush 300
+    iconst_3
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_14/testArgsOrder(II)I
+
+    bipush 100
+    if_icmpne Label0
+
+    iload_1
+    bipush 123
+    if_icmpne Label0
+
+    iload_2
+    sipush 659
+    if_icmpne Label0
+
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_14.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_14.java
new file mode 100644
index 0000000..d039fbe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_14.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+import dxc.junit.opcodes.invokevirtual.jm.TSuper;
+
+    
+public class T_invokevirtual_14 extends TSuper {
+
+    public boolean run() {
+        int a = 123;
+        int b = 659;
+        if(testArgsOrder(300, 3) == 100)
+            if(a == 123)
+                if(b == 659)
+                    return true;
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_15.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_15.j
new file mode 100644
index 0000000..61a84e0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_15.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_15.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_15
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public test()V
+    .limit stack 0
+    .limit locals 1
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_15/test1()V
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_15.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_15.java
new file mode 100644
index 0000000..fae4bba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_15.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_15 {
+    
+    public void test(){
+    }
+    
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_16.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_16.j
new file mode 100644
index 0000000..fc2d18c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_16.j
@@ -0,0 +1,23 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_16.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_16
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokevirtual java/lang/Object/<init>()V
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_16.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_16.java
new file mode 100644
index 0000000..c30e960
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_16.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_16 {
+    
+    public void run() {
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_17.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_17.j
new file mode 100644
index 0000000..ac29622
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_17.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_17.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_17
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_17/toInt()I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_17.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_17.java
new file mode 100644
index 0000000..639d499
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_17.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+import dxc.junit.opcodes.invokevirtual.jm.TSuper;
+
+    
+public class T_invokevirtual_17 extends TSuper {
+
+    public int run() {
+        return toInt();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_18.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_18.j
new file mode 100644
index 0000000..c38f212
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_18.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_18.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_18
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper
+
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ldxc/junit/opcodes/invokevirtual/TProtected;)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_1
+    invokevirtual dxc/junit/opcodes/invokevirtual/TProtected/TestStub()V
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_18.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_18.java
new file mode 100644
index 0000000..d027bf2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_18.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+import dxc.junit.opcodes.invokevirtual.TProtected;
+
+
+    
+public class T_invokevirtual_18 extends TSuper {
+
+    public void run(TProtected obj) {
+        //obj.TestStub();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_19.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_19.j
new file mode 100644
index 0000000..1214d1b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_19.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_19.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_19
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    iconst_1
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_19/toInt(I)I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_19.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_19.java
new file mode 100644
index 0000000..564c27f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_19.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+import dxc.junit.opcodes.invokevirtual.jm.TSuper;
+
+    
+public class T_invokevirtual_19 extends TSuper {
+
+    public int run() {
+        return toInt(3.14f);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2.j
new file mode 100644
index 0000000..0386883
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2.j
@@ -0,0 +1,158 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_2.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field  value I
+.field  failed Z
+
+.method public <init>()V
+    .limit stack 2
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.value I
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.failed Z
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+
+    iconst_0
+    istore_1
+
+Label1:
+    aload_0
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2/test()V
+
+    iinc 1 1
+
+Label0:
+    iload_1
+    sipush 1000
+    if_icmplt Label1
+
+    return
+.end method
+
+
+
+.method public synchronized test()V
+    .limit stack 3
+    .limit locals 2
+
+    aload_0
+    dup
+    getfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.value I
+    iconst_1
+    iadd
+    putfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.value I
+
+    aload_0
+    getfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.value I
+    istore_1
+
+    invokestatic java/lang/Thread/yield()V
+
+    iload_1
+    aload_0
+    getfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.value I
+    if_icmpeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.failed Z
+
+Label0:
+    return
+.end method
+
+
+
+.method public static execute()Z
+    .limit stack 3
+    .limit locals 4
+
+    new dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2
+    dup
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:
+    astore_3
+
+    iconst_0
+    ireturn
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.value I
+    sipush 2000
+    if_icmpeq Label1
+
+    iconst_0
+    ireturn
+
+Label1:
+
+    aload_0
+    getfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.failed Z
+    ifeq Label2
+    iconst_0
+    ireturn
+
+Label2:
+    iconst_1
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2.java
new file mode 100644
index 0000000..92bb8a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_2 implements Runnable {
+    public final static int CNT = 1000;
+    int value = 0;
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    public synchronized void test()    {
+        value++;
+        int c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+    }
+    
+    public static boolean execute() {
+        T_invokevirtual_2 test = new T_invokevirtual_2();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_20.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_20.j
new file mode 100644
index 0000000..e340162
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_20.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_20.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_20
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper
+
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ldxc/junit/opcodes/invokevirtual/TProtected;)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_1
+    invokevirtual dxc/junit/opcodes/invokevirtual/TProtected/TestStubP()V
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_20.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_20.java
new file mode 100644
index 0000000..aa2c8d8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_20.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+import dxc.junit.opcodes.invokevirtual.TProtected;
+
+    
+public class T_invokevirtual_20 extends TSuper {
+
+    public void run(TProtected obj) {
+        //obj.TestStubP();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_21.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_21.j
new file mode 100644
index 0000000..af0a530
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_21.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_21.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_21
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 3
+    .limit locals 1
+
+    aload_0
+;    ldc 5.0
+    dconst_1
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_21/toInt(F)I
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_21.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_21.java
new file mode 100644
index 0000000..50333e8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_21 extends TSuper {
+
+    public int run() {
+        return toInt(5f);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_22.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_22.j
new file mode 100644
index 0000000..d3c3164
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_22.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_22.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_22
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/invokevirtual/jm/TPlain
+    dup
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TPlain/<init>()V
+
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/TSuper/toIntP()I
+
+    Label1:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_22.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_22.java
new file mode 100644
index 0000000..b002637
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_22.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+import dxc.junit.opcodes.invokevirtual.jm.TSuper;
+
+public class T_invokevirtual_22 extends TSuper {
+
+    public int run() {
+        TPlain p = new TPlain();
+        return p.toInt();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_23.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_23.j
new file mode 100644
index 0000000..8c7eec8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_23.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_23.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_23
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper2
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper2/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+    .limit locals 2
+    
+    new dxc/junit/opcodes/invokevirtual/jm/TSuper
+    dup
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/TSuper2/test()I
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_23.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_23.java
new file mode 100644
index 0000000..b2ef484
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_23.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_23 extends TSuper2 {
+    
+    public int run() {
+        return super.test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_3.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_3.j
new file mode 100644
index 0000000..c1fd20f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_3.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+    aload_1
+    aload_2
+    invokevirtual java/lang/Object/equals(Ljava/lang/Object;)Z
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_3.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_3.java
new file mode 100644
index 0000000..8f0fb67
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_3 {
+
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_4.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_4.j
new file mode 100644
index 0000000..c4efa88
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_4.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public native test()V
+.end method
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_4/test()V
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_4.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_4.java
new file mode 100644
index 0000000..08a969b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_4 {
+    
+    public native void test();
+
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_5.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_5.j
new file mode 100644
index 0000000..d751a75
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_5.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static test()V
+    .limit stack 0
+    .limit locals 1
+    return
+.end method
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_5/test()V
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_5.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_5.java
new file mode 100644
index 0000000..c931ce4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_5.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_5 {
+    
+    public void test(){
+    }
+
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_6.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_6.j
new file mode 100644
index 0000000..56612ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_6.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_6
+.super dxc/junit/opcodes/invokevirtual/jm/ATest
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/ATest/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/ATest/test()V
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_6.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_6.java
new file mode 100644
index 0000000..0d18e83
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_6.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_6 extends ATest {
+    
+    public void test(){
+        int i = 2+5;
+    }
+
+    public void run() {
+        test();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_7.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_7.j
new file mode 100644
index 0000000..07e6f88
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_7.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_7.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_7
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_7/toIntP()I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_7.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_7.java
new file mode 100644
index 0000000..abff1db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_7.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+import dxc.junit.opcodes.invokevirtual.jm.TSuper;
+
+    
+public class T_invokevirtual_7 extends TSuper {
+
+    public int run() {
+        return toIntP();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.cfh
new file mode 100644
index 0000000..d8991a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 25, h: 0001: utf8{"T_invokevirtual_8.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  v  i  r  t  u  a  l  _  8  .  j  a  v  a  
+       01 00 16 54 5f 69 6e 76 6f 6b 65 76 69 72 74 75 61 6c 5f 38 2e 6a 61 76 61 
+    // parsed:, offset 35, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 11 00 09 
+    // parsed:, offset 40, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 59, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 72, len 24, h: 0005: utf8{"(Ljava/lang/Object;)Z"}
+    // .  .  .  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 96, len 9, h: 0006: utf8{"equals"}
+    // .  .  .  e  q  u  a  l  s  
+       01 00 06 65 71 75 61 6c 73 
+    // parsed:, offset 105, len 9, h: 0007: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 114, len 6, h: 0008: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 120, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 07 00 0f 
+    // parsed:, offset 125, len 5, h: 000a: method{java.lang.Object.equals:(Ljava/lang/Object;)Z}
+    // .  .  .  .  .  
+       0a 00 11 00 0e 
+    // parsed:, offset 130, len 7, h: 000b: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 137, len 42, h: 000c: utf8{"(Ljava/lang/Object;Ljava/lang/Object;)Z"}
+    // .  .  '  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 27 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 179, len 55, h: 000d: utf8{"dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8"}
+    // .  .  4  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  v  i  r  t  u  a  l  /  j  m  /  T  _  i  n  v  o  k  e  v  i  r  t  u  a  l  _  8  
+       01 00 34 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 76 69 72 74 75 61 6c 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 76 69 72 74 75 61 6c 5f 38 
+    // parsed:, offset 234, len 5, h: 000e: nat{equals:(Ljava/lang/Object;)Z}
+    // .  .  .  .  .  
+       0c 00 06 00 05 
+    // parsed:, offset 239, len 6, h: 000f: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 245, len 3, h: 0010: type{dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_8}
+    // .  .  .  
+       07 00 0d 
+    // parsed:, offset 248, len 3, h: 0011: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 251, len 0, h: end constant_pool
+// parsed:, offset 251, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 253, len 2, h: this_class: type{dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_8}
+// .  .  
+   00 10 
+// parsed:, offset 255, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 11 
+// parsed:, offset 257, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 259, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 261, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 263, len:73,desc: ()V
+// parsed:, offset 263, len 0, h:  methods[0]: 
+    // parsed:, offset 263, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 265, len 2, h: name: <init>
+    // .  .  
+       00 07 
+    // parsed:, offset 267, len 2, h: descriptor: ()V
+    // .  .  
+       00 0f 
+    // parsed:, offset 269, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 271, len 0, h:  attributes[0]: 
+        // parsed:, offset 271, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 273, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 277, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 279, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 281, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 290, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 292, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 294, len 0, h: end attributes[0] 
+// parsed:, offset 294, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 294, len:42,desc: (Ljava/lang/Object;Ljava/lang/Object;)Z
+// parsed:, offset 294, len 0, h:  methods[1]: 
+    // parsed:, offset 294, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 296, len 2, h: name: run
+    // .  .  
+       00 08 
+    // parsed:, offset 298, len 2, h: descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Z
+    // .  .  
+       00 0c 
+    // parsed:, offset 300, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 302, len 0, h:  attributes[0]: 
+        // parsed:, offset 302, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 304, len 4, h: length: 00000012
+        // .  .  .  .  
+           00 00 00 12 
+        // parsed:, offset 308, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 310, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 312, len 4, h: code_length: 00000006
+        // .  .  .  .  
+           00 00 00 06 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 1, h: 0001: aload_2 // 02
+        // ,  
+           2c 
+        // parsed:, offset 2, len 3, h: 0002: invokevirtual method{java.lang.Object.equals:(Ljava/lang/Object;)Z}
+        // .  .  .  
+//@mod           b6 00 0a
+           b6 00 0b 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 322, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 324, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 326, len 0, h: end attributes[0] 
+// parsed:, offset 326, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;Ljava/lang/Object;)Z
+// parsed:, offset 326, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 328, len 0, h:  attributes[0]: 
+    // parsed:, offset 328, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 330, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 334, len 2, h: source: utf8{"T_invokevirtual_8.java"}
+    // .  .  
+       00 01 
+// parsed:, offset 336, len 0, h: end attributes[0] 
+// parsed:, offset 336, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.j
new file mode 100644
index 0000000..14fc66b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_8.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+    
+    aload_1
+    aload_2
+    invokevirtual java/lang/Object/equals(Ljava/lang/Object;)Z
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.java
new file mode 100644
index 0000000..4c9fac6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_8 {
+    
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.cfh
new file mode 100644
index 0000000..a98e1d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 11 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 24, h: 0004: utf8{"(Ljava/lang/Object;)Z"}
+    // .  .  .  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 71, len 9, h: 0005: utf8{"equals"}
+    // .  .  .  e  q  u  a  l  s  
+       01 00 06 65 71 75 61 6c 73 
+    // parsed:, offset 80, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 89, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 95, len 25, h: 0008: utf8{"T_invokevirtual_9.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  v  i  r  t  u  a  l  _  9  .  j  a  v  a  
+       01 00 16 54 5f 69 6e 76 6f 6b 65 76 69 72 74 75 61 6c 5f 39 2e 6a 61 76 61 
+    // parsed:, offset 120, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0f 
+    // parsed:, offset 125, len 5, h: 000a: method{java.lang.Object.equals:(Ljava/lang/Object;)Z}
+    // .  .  .  .  .  
+       0a 00 11 00 0e 
+    // parsed:, offset 130, len 7, h: 000b: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 137, len 42, h: 000c: utf8{"(Ljava/lang/Object;Ljava/lang/Object;)Z"}
+    // .  .  '  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 27 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 179, len 55, h: 000d: utf8{"dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9"}
+    // .  .  4  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  v  i  r  t  u  a  l  /  j  m  /  T  _  i  n  v  o  k  e  v  i  r  t  u  a  l  _  9  
+       01 00 34 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 76 69 72 74 75 61 6c 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 76 69 72 74 75 61 6c 5f 39 
+    // parsed:, offset 234, len 5, h: 000e: nat{equals:(Ljava/lang/Object;)Z}
+    // .  .  .  .  .  
+       0c 00 05 00 04 
+    // parsed:, offset 239, len 6, h: 000f: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 245, len 3, h: 0010: type{dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_9}
+    // .  .  .  
+       07 00 0d 
+    // parsed:, offset 248, len 3, h: 0011: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 251, len 0, h: end constant_pool
+// parsed:, offset 251, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 253, len 2, h: this_class: type{dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_9}
+// .  .  
+   00 10 
+// parsed:, offset 255, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 11 
+// parsed:, offset 257, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 259, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 261, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 263, len:73,desc: ()V
+// parsed:, offset 263, len 0, h:  methods[0]: 
+    // parsed:, offset 263, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 265, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 267, len 2, h: descriptor: ()V
+    // .  .  
+       00 0f 
+    // parsed:, offset 269, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 271, len 0, h:  attributes[0]: 
+        // parsed:, offset 271, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 273, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 277, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 279, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 281, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 290, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 292, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 294, len 0, h: end attributes[0] 
+// parsed:, offset 294, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 294, len:42,desc: (Ljava/lang/Object;Ljava/lang/Object;)Z
+// parsed:, offset 294, len 0, h:  methods[1]: 
+    // parsed:, offset 294, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 296, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 298, len 2, h: descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Z
+    // .  .  
+       00 0c 
+    // parsed:, offset 300, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 302, len 0, h:  attributes[0]: 
+        // parsed:, offset 302, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 304, len 4, h: length: 00000012
+        // .  .  .  .  
+           00 00 00 12 
+        // parsed:, offset 308, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 310, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 312, len 4, h: code_length: 00000006
+        // .  .  .  .  
+           00 00 00 06 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 1, h: 0001: aload_2 // 02
+        // ,  
+           2c 
+        // parsed:, offset 2, len 3, h: 0002: invokevirtual method{java.lang.Object.equals:(Ljava/lang/Object;)Z}
+        // .  .  .  
+//@mod           b6 00 0a 
+           b6 01 0a           
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 322, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 324, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 326, len 0, h: end attributes[0] 
+// parsed:, offset 326, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;Ljava/lang/Object;)Z
+// parsed:, offset 326, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 328, len 0, h:  attributes[0]: 
+    // parsed:, offset 328, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 330, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 334, len 2, h: source: utf8{"T_invokevirtual_9.java"}
+    // .  .  
+       00 08 
+// parsed:, offset 336, len 0, h: end attributes[0] 
+// parsed:, offset 336, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.j
new file mode 100644
index 0000000..d72271b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invokevirtual_9.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_2
+    invokevirtual java/lang/Object/equals(Ljava/lang/Object;)Z
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.java
new file mode 100644
index 0000000..22b9bb0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_9 {
+    
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/Test_ior.java b/tools/dx-tests/src/dxc/junit/opcodes/ior/Test_ior.java
new file mode 100644
index 0000000..e035cf3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/Test_ior.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ior;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ior.jm.T_ior_1;
+
+public class Test_ior extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_ior_1 t = new T_ior_1();
+        assertEquals(15, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1 
+     */
+    public void testN2() {
+        T_ior_1 t = new T_ior_1();
+        assertEquals(0xfffffff9, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title  Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_ior_1 t = new T_ior_1();
+        assertEquals(-1, t.run(0xcafe, -1));
+    }
+
+    /**
+     * @title  Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ior_1 t = new T_ior_1();
+        assertEquals(-1, t.run(0, -1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_ior_1 t = new T_ior_1();
+        assertEquals(0xffffffff, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ior.jm.T_ior_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ior.jm.T_ior_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ior.jm.T_ior_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ior.jm.T_ior_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_1.j
new file mode 100644
index 0000000..66611f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ior_1.java
+.class public dxc/junit/opcodes/ior/jm/T_ior_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    ior
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_1.java
new file mode 100644
index 0000000..98f023e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ior.jm;
+
+public class T_ior_1 {
+
+    public int run(int a, int b) {
+        return a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_2.j
new file mode 100644
index 0000000..39e9a3d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ior_2.java
+.class public dxc/junit/opcodes/ior/jm/T_ior_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+;    iload_2
+    ior
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_2.java
new file mode 100644
index 0000000..db93a0b6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ior.jm;
+
+public class T_ior_2 {
+
+    public int run(int a, int b) {
+        return a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_3.j
new file mode 100644
index 0000000..fea22c5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ior_3.java
+.class public dxc/junit/opcodes/ior/jm/T_ior_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DI)I
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+    iload_3
+    ior
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_3.java
new file mode 100644
index 0000000..d000987
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ior.jm;
+
+public class T_ior_3 {
+
+    public int run(double a, int b) {
+        return (int)a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_4.j
new file mode 100644
index 0000000..1d21407
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ior_4.java
+.class public dxc/junit/opcodes/ior/jm/T_ior_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(IJ)I
+    .limit stack 3
+    .limit locals 4
+
+    iload_1
+    lload_2
+    ior
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_4.java
new file mode 100644
index 0000000..c8cc013
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ior.jm;
+
+public class T_ior_4 {
+
+    public int run(int a, long b) {
+        return a | (int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_5.j
new file mode 100644
index 0000000..7528958
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ior_5.java
+.class public dxc/junit/opcodes/ior/jm/T_ior_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    ior
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_5.java
new file mode 100644
index 0000000..6dfc5aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ior.jm;
+
+public class T_ior_5 {
+    
+    public int run(int a, int b) {
+        return a | b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/Test_irem.java b/tools/dx-tests/src/dxc/junit/opcodes/irem/Test_irem.java
new file mode 100644
index 0000000..ce72810
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/Test_irem.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.irem;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.irem.jm.T_irem_1;
+
+public class Test_irem extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(0, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 1073741823, 4
+     */
+    public void testN2() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(3, t.run(1073741823, 4));
+    }
+
+    /**
+     * @title  Dividend = 0
+     */
+    public void testN3() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(0, t.run(0, 4));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN4() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(-1, t.run(-10, 3));
+    }
+
+    /**
+     * @title  Divisor is negative
+     */
+    public void testN5() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(1, t.run(1073741824, -3));
+    }
+
+    /**
+     * @title  Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(-697, t.run(-17895697, -3000));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_irem_1 t = new T_irem_1();
+        // result is MIN_VALUE because overflow occurs in this case
+        assertEquals(0, t.run(Integer.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB4() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MAX_VALUE
+     */
+    public void testB5() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(1, t.run(1, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(1, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Divisor is 0
+     */
+    public void testE1() {
+        T_irem_1 t = new T_irem_1();
+        try {
+            t.run(1, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.irem.jm.T_irem_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int / double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.irem.jm.T_irem_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.irem.jm.T_irem_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference / int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.irem.jm.T_irem_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_1.j b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_1.j
new file mode 100644
index 0000000..2f13c91
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_irem_1.java
+.class public dxc/junit/opcodes/irem/jm/T_irem_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    irem
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_1.java b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_1.java
new file mode 100644
index 0000000..e966dea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.irem.jm;
+
+public class T_irem_1 {
+
+    public int run(int a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_2.j b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_2.j
new file mode 100644
index 0000000..9c9bf8b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_irem_2.java
+.class public dxc/junit/opcodes/irem/jm/T_irem_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    ; iload_2    
+    irem
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_2.java b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_2.java
new file mode 100644
index 0000000..4ab9d2d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.irem.jm;
+
+public class T_irem_2 {
+
+    public int run(int a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_3.j b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_3.j
new file mode 100644
index 0000000..e07bfea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_irem_3.java
+.class public dxc/junit/opcodes/irem/jm/T_irem_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(ID)I
+    .limit stack 3
+    .limit locals 5
+    iload_1
+    dload_2    
+    irem
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_3.java b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_3.java
new file mode 100644
index 0000000..a7cbab2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.irem.jm;
+
+public class T_irem_3 {
+
+    public int run(int a, double b) {
+        return a%(int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_4.j b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_4.j
new file mode 100644
index 0000000..7571e37
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_irem_4.java
+.class public dxc/junit/opcodes/irem/jm/T_irem_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JI)I
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2i
+    iload_3
+    irem
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_4.java b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_4.java
new file mode 100644
index 0000000..75b8831
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.irem.jm;
+
+public class T_irem_4 {
+
+    public int run(long a, int b) {
+        return (int)a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_5.j b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_5.j
new file mode 100644
index 0000000..803b81f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_irem_5.java
+.class public dxc/junit/opcodes/irem/jm/T_irem_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    irem
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_5.java b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_5.java
new file mode 100644
index 0000000..397fb9c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.irem.jm;
+
+public class T_irem_5 {
+    
+    public int run(int a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/Test_ireturn.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/Test_ireturn.java
new file mode 100644
index 0000000..cdb6450
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/Test_ireturn.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ireturn;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ireturn.jm.T_ireturn_1;
+import dxc.junit.opcodes.ireturn.jm.T_ireturn_6;
+import dxc.junit.opcodes.ireturn.jm.T_ireturn_7;
+import dxc.junit.opcodes.ireturn.jm.T_ireturn_8;
+import dxc.junit.opcodes.ireturn.jm.T_ireturn_9;
+
+public class Test_ireturn extends DxTestCase {
+
+    /**
+     * @title  simple
+     */
+    public void testN1() {
+        T_ireturn_1 t = new T_ireturn_1();
+        assertEquals(123456, t.run());
+    }
+
+    /**
+     * @title  check that frames are discarded and reinstananted correctly
+     */
+    public void testN2() {
+        T_ireturn_6 t = new T_ireturn_6();
+        assertEquals(123456, t.run());
+    }
+
+    /**
+     * @title  check that monitor is released by ireturn
+     */
+    public void testN3() {
+        assertTrue(T_ireturn_7.execute());
+    }
+
+    /**
+     * @title  Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_ireturn_8 t = new T_ireturn_8();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Lock structural rule 1 is violated
+     */
+    public void testE2() {
+        T_ireturn_9 t = new T_ireturn_9();
+        try {
+            assertEquals(1, t.run());
+            // the JVM spec says that it is optional to implement the structural
+            // lock rules, see JVM spec 8.13 and monitorenter/exit opcodes.
+            System.out.print("dvmvfe:");
+            //fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - void
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ireturn.jm.T_ireturn_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ireturn.jm.T_ireturn_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ireturn.jm.T_ireturn_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ireturn.jm.T_ireturn_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ireturn.jm.T_ireturn_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.ireturn.jm.T_ireturn_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_1.j
new file mode 100644
index 0000000..8ba1daf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ireturn_1.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    ldc 123456
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_1.java
new file mode 100644
index 0000000..fe00032
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_1 {
+
+    public int run() {
+        return 123456;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_10.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_10.j
new file mode 100644
index 0000000..f8779af
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_10.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ireturn_10.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_10
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private static test()I
+    .limit stack 1
+    .limit locals 0
+
+    iconst_1
+    ireturn
+.end method
+
+
+
+.method public run()I
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/ireturn/jm/T_ireturn_10/test()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_10.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_10.java
new file mode 100644
index 0000000..929c22a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_10.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_10 {
+    
+    private static int test() {
+        return 1;
+    }
+    
+    public int run() {
+        return test();
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_11.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_11.j
new file mode 100644
index 0000000..fa54cc5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_11.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ireturn_11.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_11.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_11.java
new file mode 100644
index 0000000..a58a6ba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_11 {
+    
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_2.j
new file mode 100644
index 0000000..c5d10b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ireturn_2.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_2.java
new file mode 100644
index 0000000..074dfd8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_2 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_3.j
new file mode 100644
index 0000000..7afc97d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ireturn_3.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()D
+    .limit stack 1
+    .limit locals 1
+
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_3.java
new file mode 100644
index 0000000..dba74ee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_3 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_4.j
new file mode 100644
index 0000000..961ad40
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_4.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ireturn_4.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    ;iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_4.java
new file mode 100644
index 0000000..9b0b1bc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_4 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_5.j
new file mode 100644
index 0000000..dbd1ac5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ireturn_5.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 2
+    .limit locals 1
+
+    dconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_5.java
new file mode 100644
index 0000000..bdeba53
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_5 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_6.j
new file mode 100644
index 0000000..3ed78c7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_6.j
@@ -0,0 +1,85 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ireturn_6.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit locals 6
+    .limit stack 6
+    
+    iconst_1
+    istore_1
+    iconst_2
+    istore_2
+    iconst_3
+    istore 3
+    
+    iconst_4
+    
+    invokestatic dxc/junit/opcodes/ireturn/jm/T_ireturn_6/test()I
+    
+    ldc 0xcafe
+    if_icmpne Label1
+    
+    iconst_4
+    if_icmpne Label0
+    
+    iload_1
+    iconst_1
+    if_icmpne Label0
+    
+    iload_2
+    iconst_2
+    if_icmpne Label0
+    
+    iload_3
+    iconst_3
+    if_icmpne Label0    
+    
+    ldc 123456
+    ireturn
+
+Label1:
+    pop
+Label0:
+    iconst_0
+    ireturn
+
+.end method
+
+.method private static test()I
+    .limit locals 4
+    .limit stack 4
+    
+    ldc 0xaaa
+    istore_1
+    ldc 0xbbbb
+    istore_2
+    ldc 0xcccc
+    istore_3
+    
+    ldc 0xdddd
+    
+    ldc 0xcafe
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_6.java
new file mode 100644
index 0000000..dbf7438
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_6.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_6 {
+
+    public int run() {
+        return 123456;
+    }
+    
+    private static int test() {
+        int a = 0xaaaa;
+        int b = 0xbbbb;
+        int c = 0xcccc;
+        return 0xcafe;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_7.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_7.j
new file mode 100644
index 0000000..d1b7909
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_7.j
@@ -0,0 +1,161 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ireturn_7.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_7
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field  value I
+.field  failed Z
+
+.method public <init>()V
+    .limit stack 3
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.ireturn.jm.T_ireturn_7.value I
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.ireturn.jm.T_ireturn_7.failed Z
+
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+   
+    iconst_0
+    istore_1
+
+Label4:
+    iload_1
+    sipush 1000
+    if_icmpge Label3
+
+    aload_0
+    invokespecial dxc/junit/opcodes/ireturn/jm/T_ireturn_7/test()I
+    pop
+
+    iinc 1 1
+
+    goto Label4
+
+
+Label3:
+    return
+
+.end method
+
+
+
+.method private synchronized test()I
+    .limit stack 3
+    .limit locals 2
+    
+.line 16
+    aload_0
+    dup
+    getfield dxc.junit.opcodes.ireturn.jm.T_ireturn_7.value I
+    dup
+    istore_1
+
+    iconst_1
+    iadd
+    putfield dxc.junit.opcodes.ireturn.jm.T_ireturn_7.value I
+
+    iinc 1 1
+
+    invokestatic java/lang/Thread/yield()V
+
+    iload_1
+    aload_0
+    getfield dxc.junit.opcodes.ireturn.jm.T_ireturn_7.value I
+    if_icmpeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.ireturn.jm.T_ireturn_7.failed Z
+
+Label0:
+    iload_1
+    ireturn
+.end method
+
+
+
+.method public static execute()Z
+    .limit stack 3
+    .limit locals 4
+
+    new dxc/junit/opcodes/ireturn/jm/T_ireturn_7
+    dup
+    invokespecial dxc/junit/opcodes/ireturn/jm/T_ireturn_7/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:            ; exception handler
+    astore_3
+    goto Label3
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.ireturn.jm.T_ireturn_7.value I
+    sipush 2000
+    if_icmpne Label3
+
+    aload_0
+    getfield dxc.junit.opcodes.ireturn.jm.T_ireturn_7.failed Z
+    ifne Label3
+
+    iconst_1
+    ireturn
+
+Label3:
+    iconst_0
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_7.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_7.java
new file mode 100644
index 0000000..3505f19
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_7.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_7 implements Runnable {
+    public final static int CNT = 1000;
+    int value = 0;
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    private synchronized int test()    {
+        value++;
+        int c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+        return c;
+    }
+    
+    public static boolean execute() {
+        T_ireturn_7 test = new T_ireturn_7();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_8.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_8.j
new file mode 100644
index 0000000..ad9d528
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_8.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ireturn_8.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private synchronized test()I
+    .limit stack 1
+    aload_0
+    monitorexit
+    iconst_0
+    ireturn
+.end method
+
+
+
+.method public run()Z
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial dxc/junit/opcodes/ireturn/jm/T_ireturn_8/test()I
+    pop
+
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_8.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_8.java
new file mode 100644
index 0000000..9ed48af
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_8.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_8 {
+    
+    private synchronized int test() {
+        return 0;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_9.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_9.j
new file mode 100644
index 0000000..42230f3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ireturn_9.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    monitorenter
+
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_9.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_9.java
new file mode 100644
index 0000000..50bc299
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_9 {
+    
+    public int run() {
+        return 1;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/Test_ishl.java b/tools/dx-tests/src/dxc/junit/opcodes/ishl/Test_ishl.java
new file mode 100644
index 0000000..b433c89
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/Test_ishl.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ishl;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ishl.jm.T_ishl_1;
+
+public class Test_ishl extends DxTestCase {
+
+    /**
+     * @title  15 << 1
+     */
+    public void testN1() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(30, t.run(15, 1));
+    }
+
+    /**
+     * @title  33 << 2
+     */
+    public void testN2() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(132, t.run(33, 2));
+    }
+
+    /**
+     * @title  -15 << 1
+     */
+    public void testN3() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(-30, t.run(-15, 1));
+    }
+
+    /**
+     * @title  Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(0x80000000, t.run(1, -1));
+    }
+
+    /**
+     * @title  Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(66, t.run(33, 33));
+    }
+
+    /**
+     * FIXME: do we need to check that all the shift distances (0..31) works
+     * fine?
+     */
+
+    /**
+     * @title  Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(0xfffffffe, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ishl.jm.T_ishl_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ishl.jm.T_ishl_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ishl.jm.T_ishl_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ishl.jm.T_ishl_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_1.j
new file mode 100644
index 0000000..a703b28
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ishl_1.java
+.class public dxc/junit/opcodes/ishl/jm/T_ishl_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    ishl
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_1.java
new file mode 100644
index 0000000..179d4f8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ishl.jm;
+
+public class T_ishl_1 {
+
+    public int run(int a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_2.j
new file mode 100644
index 0000000..015f57f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ishl_2.java
+.class public dxc/junit/opcodes/ishl/jm/T_ishl_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+;    iload_2
+    ishl
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_2.java
new file mode 100644
index 0000000..94479b4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ishl.jm;
+
+public class T_ishl_2 {
+
+    public int run(int a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_3.j
new file mode 100644
index 0000000..d1a4f05
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ishl_3.java
+.class public dxc/junit/opcodes/ishl/jm/T_ishl_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DI)I
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+;    d2i
+    iload_3
+    ishl
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_3.java
new file mode 100644
index 0000000..e29bdcb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ishl.jm;
+
+public class T_ishl_3 {
+
+    public int run(double a, int b) {
+        return (int)a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_4.j
new file mode 100644
index 0000000..bf5cfb7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ishl_4.java
+.class public dxc/junit/opcodes/ishl/jm/T_ishl_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(IJ)I
+    .limit stack 3
+    .limit locals 4
+
+    iload_1
+    lload_2
+;    l2i
+    ishl
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_4.java
new file mode 100644
index 0000000..ea7a5ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ishl.jm;
+
+public class T_ishl_4 {
+
+    public int run(int a, long b) {
+        return a << (int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_5.j
new file mode 100644
index 0000000..f5af8bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ishl_5.java
+.class public dxc/junit/opcodes/ishl/jm/T_ishl_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    ishl
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_5.java
new file mode 100644
index 0000000..6db63ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ishl.jm;
+
+public class T_ishl_5 {
+
+    public int run(int a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/Test_ishr.java b/tools/dx-tests/src/dxc/junit/opcodes/ishr/Test_ishr.java
new file mode 100644
index 0000000..eaed21c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/Test_ishr.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ishr;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ishr.jm.T_ishr_1;
+
+public class Test_ishr extends DxTestCase {
+
+    /**
+     * @title  15 >> 1
+     */
+    public void testN1() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(7, t.run(15, 1));
+    }
+
+    /**
+     * @title  33 >> 2
+     */
+    public void testN2() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(8, t.run(33, 2));
+    }
+
+    /**
+     * @title  -15 >> 1
+     */
+    public void testN3() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(-8, t.run(-15, 1));
+    }
+
+    /**
+     * @title  Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(0, t.run(1, -1));
+    }
+
+    /**
+     * @title  Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(16, t.run(33, 33));
+    }
+
+    /**
+     * @title  Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(0xc0000000, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ishr.jm.T_ishr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ishr.jm.T_ishr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ishr.jm.T_ishr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ishr.jm.T_ishr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_1.j
new file mode 100644
index 0000000..227936c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ishr_1.java
+.class public dxc/junit/opcodes/ishr/jm/T_ishr_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    ishr
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_1.java
new file mode 100644
index 0000000..388f28d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ishr.jm;
+
+public class T_ishr_1 {
+
+    public int run(int a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_2.j
new file mode 100644
index 0000000..21e352f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ishr_2.java
+.class public dxc/junit/opcodes/ishr/jm/T_ishr_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+;    iload_2
+    ishr
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_2.java
new file mode 100644
index 0000000..4e5a4aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ishr.jm;
+
+public class T_ishr_2 {
+
+    public int run(int a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_3.j
new file mode 100644
index 0000000..26d6bd5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ishr_3.java
+.class public dxc/junit/opcodes/ishr/jm/T_ishr_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DI)I
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+;    d2i
+    iload_3
+    ishr
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_3.java
new file mode 100644
index 0000000..bee515f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ishr.jm;
+
+public class T_ishr_3 {
+
+    public int run(double a, int b) {
+        return (int)a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_4.j
new file mode 100644
index 0000000..78f5c70
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ishr_4.java
+.class public dxc/junit/opcodes/ishr/jm/T_ishr_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(IJ)I
+    .limit stack 3
+    .limit locals 4
+
+    iload_1
+    lload_2
+;    l2i
+    ishr
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_4.java
new file mode 100644
index 0000000..c8c90be
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ishr.jm;
+
+public class T_ishr_4 {
+
+    public int run(int a, long b) {
+        return a >> (int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_5.j
new file mode 100644
index 0000000..8abb1ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ishr_5.java
+.class public dxc/junit/opcodes/ishr/jm/T_ishr_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    ishr
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_5.java
new file mode 100644
index 0000000..158f740
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ishr.jm;
+
+public class T_ishr_5 {
+    
+    public int run(int a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/Test_istore.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/Test_istore.java
new file mode 100644
index 0000000..0bf0a72
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/Test_istore.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.istore.jm.T_istore_1;
+import dxc.junit.opcodes.istore.jm.T_istore_1_w;
+import dxc.junit.opcodes.istore.jm.T_istore_5;
+import dxc.junit.opcodes.istore.jm.T_istore_5_w;
+
+public class Test_istore extends DxTestCase {
+
+    /*
+     * NORMAL ISTORE VERSION
+     */
+
+    /**
+     * @title  istore 0
+     */
+    public void testN1() {
+        assertEquals(3, T_istore_1.run());
+    }
+
+    /**
+     * @title  istore 255
+     */
+    public void testN2() {
+        assertEquals(3, T_istore_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore.jm.T_istore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore.jm.T_istore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore.jm.T_istore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE ISTORE VERSION
+     */
+
+    /**
+     * @title  istore_w 0
+     */
+    public void testN3() {
+        assertEquals(3, T_istore_1_w.run());
+    }
+
+    /**
+     * @title  istore 257
+     */
+    public void testN4() {
+        assertEquals(3, T_istore_5_w.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore.jm.T_istore_2_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore.jm.T_istore_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore.jm.T_istore_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1.j
new file mode 100644
index 0000000..2b56c03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_1.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 1
+    
+    iconst_3
+    istore 0
+    iconst_4
+    iload 0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1.java
new file mode 100644
index 0000000..26bb424
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1_w.j
new file mode 100644
index 0000000..fd4e415
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_1_w.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_1_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 1
+    
+    iconst_3
+    istore_w 0
+    iconst_4
+    iload 0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1_w.java
new file mode 100644
index 0000000..4de9c68
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_1_w {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2.j
new file mode 100644
index 0000000..c84ab6f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_2.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    istore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2.java
new file mode 100644
index 0000000..7c31a2f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2_w.j
new file mode 100644
index 0000000..4366807
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_2_w.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_2_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    istore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2_w.java
new file mode 100644
index 0000000..eea683b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_2_w {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3.j
new file mode 100644
index 0000000..d7bd3b6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_3.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    istore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3.java
new file mode 100644
index 0000000..094c6c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3_w.j
new file mode 100644
index 0000000..dfac893
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_3_w.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_3_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    istore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3_w.java
new file mode 100644
index 0000000..9b2f312
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_3_w {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4.j
new file mode 100644
index 0000000..6252b44
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_4.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    istore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4.java
new file mode 100644
index 0000000..c7882a3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4_w.j
new file mode 100644
index 0000000..7050afa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_4_w.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_4_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    istore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4_w.java
new file mode 100644
index 0000000..79d0d0a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_4_w {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5.j
new file mode 100644
index 0000000..41e7c1f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_5.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 300
+    
+    iconst_3
+    istore 255
+    iconst_4
+    iload 255
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5.java
new file mode 100644
index 0000000..51761df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_5 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5_w.j
new file mode 100644
index 0000000..79ddbac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_5_w.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_5_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 300
+    
+    iconst_3
+    istore_w 257
+    iconst_4
+    iload 257
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5_w.java
new file mode 100644
index 0000000..456e1c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_5_w {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/Test_istore_0.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/Test_istore_0.java
new file mode 100644
index 0000000..5db3ee1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/Test_istore_0.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.istore_0.jm.T_istore_0_1;
+import dxc.junit.opcodes.istore_0.jm.T_istore_0_5;
+
+public class Test_istore_0 extends DxTestCase {
+
+    /**
+     * @title 
+     * "The value of local variable at <n> is pushed onto the operand stack."
+     */
+    public void testN1() {
+        assertEquals(3, T_istore_0_1.run());
+    }
+
+    /**
+     * @title 
+     * "Each of the istore_<n> instructions is the same as istore with an index of <n>"
+     */
+    public void testN2() {
+        assertTrue(T_istore_0_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_0.jm.T_istore_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_0.jm.T_istore_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_0.jm.T_istore_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_1.j
new file mode 100644
index 0000000..018b594
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_0_1.java
+.class public dxc/junit/opcodes/istore_0/jm/T_istore_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 1
+    
+    iconst_3
+    istore_0
+    iconst_4
+    iload_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_1.java
new file mode 100644
index 0000000..1674efd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_0.jm;
+
+public class T_istore_0_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_2.j
new file mode 100644
index 0000000..72a9b7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_0_2.java
+.class public dxc/junit/opcodes/istore_0/jm/T_istore_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    istore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_2.java
new file mode 100644
index 0000000..072ea72
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_0.jm;
+
+public class T_istore_0_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_3.j
new file mode 100644
index 0000000..8e48f0c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_0_3.java
+.class public dxc/junit/opcodes/istore_0/jm/T_istore_0_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    istore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_3.java
new file mode 100644
index 0000000..7b4b791
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_0.jm;
+
+public class T_istore_0_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_4.j
new file mode 100644
index 0000000..97a9b31
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_0_4.java
+.class public dxc/junit/opcodes/istore_0/jm/T_istore_0_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    istore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_4.java
new file mode 100644
index 0000000..afe4463
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_0.jm;
+
+public class T_istore_0_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_5.j
new file mode 100644
index 0000000..2d44529
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_5.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_0_5.java
+.class public dxc/junit/opcodes/istore_0/jm/T_istore_0_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 2
+
+    iconst_4
+    istore_0
+    iload_0
+
+    iconst_4
+    istore 0
+    iload_0
+    
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_5.java
new file mode 100644
index 0000000..f1de781
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_0.jm;
+
+public class T_istore_0_5 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/Test_istore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/Test_istore_1.java
new file mode 100644
index 0000000..f19e001
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/Test_istore_1.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.istore_1.jm.T_istore_1_1;
+import dxc.junit.opcodes.istore_1.jm.T_istore_1_5;
+
+public class Test_istore_1 extends DxTestCase {
+
+    /**
+     * @title value of local variable at <n> is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(3, T_istore_1_1.run());
+    }
+
+    /**
+     * @title each of the istore_<n> instructions is the same as istore with an index of <n>
+     */
+    public void testN2() {
+        assertTrue(T_istore_1_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_1.jm.T_istore_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_1.jm.T_istore_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_1.jm.T_istore_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_1.j
new file mode 100644
index 0000000..19950d5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_1_1.java
+.class public dxc/junit/opcodes/istore_1/jm/T_istore_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 2
+    
+    iconst_3
+    istore_1
+    iconst_4
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_1.java
new file mode 100644
index 0000000..862a5ee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_1.jm;
+
+public class T_istore_1_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_2.j
new file mode 100644
index 0000000..5e4ba56
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_1_2.java
+.class public dxc/junit/opcodes/istore_1/jm/T_istore_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    istore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_2.java
new file mode 100644
index 0000000..914e29a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_1.jm;
+
+public class T_istore_1_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_3.j
new file mode 100644
index 0000000..46c9882
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_1_3.java
+.class public dxc/junit/opcodes/istore_1/jm/T_istore_1_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    istore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_3.java
new file mode 100644
index 0000000..4e6c906
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_1.jm;
+
+public class T_istore_1_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_4.j
new file mode 100644
index 0000000..f5d9dd6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_1_4.java
+.class public dxc/junit/opcodes/istore_1/jm/T_istore_1_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    istore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_4.java
new file mode 100644
index 0000000..ef863a0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_1.jm;
+
+public class T_istore_1_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_5.j
new file mode 100644
index 0000000..2f36d55
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_5.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_1_5.java
+.class public dxc/junit/opcodes/istore_1/jm/T_istore_1_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 2
+
+    iconst_4
+    istore_1
+    iload_1
+
+    iconst_4
+    istore 1
+    iload_1
+    
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_5.java
new file mode 100644
index 0000000..1169514
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_1.jm;
+
+public class T_istore_1_5 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_6.java
new file mode 100644
index 0000000..91d705a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_1.jm;
+
+public class T_istore_1_6 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/Test_istore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/Test_istore_2.java
new file mode 100644
index 0000000..5969a29
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/Test_istore_2.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.istore_2.jm.T_istore_2_1;
+import dxc.junit.opcodes.istore_2.jm.T_istore_2_5;
+
+public class Test_istore_2 extends DxTestCase {
+
+    /**
+     * @title value of local variable at <n> is pushed onto the operand stack.
+     */
+    public void testN1() {
+        assertEquals(3, T_istore_2_1.run());
+    }
+
+    /**
+     * @title Each of the istore_<n> instructions is the same as istore with an index of <n>
+     */
+    public void testN2() {
+        assertTrue(T_istore_2_5.run());
+    }
+
+    /**
+     * /** @constraint 4.8.1.22
+     * @title index must be no greater than the
+     * value of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_2.jm.T_istore_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_2.jm.T_istore_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_2.jm.T_istore_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_1.j
new file mode 100644
index 0000000..08ecc36
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_2_1.java
+.class public dxc/junit/opcodes/istore_2/jm/T_istore_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 4
+    
+    iconst_3
+    istore_2
+    iconst_4
+    iload_2
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_1.java
new file mode 100644
index 0000000..ee46237
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_2.jm;
+
+public class T_istore_2_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_2.j
new file mode 100644
index 0000000..a87b68b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_2_2.java
+.class public dxc/junit/opcodes/istore_2/jm/T_istore_2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    istore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_2.java
new file mode 100644
index 0000000..0bd11f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_2.jm;
+
+public class T_istore_2_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_3.j
new file mode 100644
index 0000000..c3a6c6f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_2_3.java
+.class public dxc/junit/opcodes/istore_2/jm/T_istore_2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    istore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_3.java
new file mode 100644
index 0000000..7b1052c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_2.jm;
+
+public class T_istore_2_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_4.j
new file mode 100644
index 0000000..e78662a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_2_4.java
+.class public dxc/junit/opcodes/istore_2/jm/T_istore_2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    istore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_4.java
new file mode 100644
index 0000000..ef0a44b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_2.jm;
+
+public class T_istore_2_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_5.j
new file mode 100644
index 0000000..65212ec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_5.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_2_5.java
+.class public dxc/junit/opcodes/istore_2/jm/T_istore_2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 3
+
+    iconst_4
+    istore_2
+    iload_2
+
+    iconst_4
+    istore 2
+    iload_2
+    
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_5.java
new file mode 100644
index 0000000..3d852d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_2.jm;
+
+public class T_istore_2_5 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/Test_istore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/Test_istore_3.java
new file mode 100644
index 0000000..3935338
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/Test_istore_3.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.istore_3.jm.T_istore_3_1;
+import dxc.junit.opcodes.istore_3.jm.T_istore_3_5;
+
+public class Test_istore_3 extends DxTestCase {
+
+    /**
+     * @title value of local variable at <n> is pushed onto the operand stack.
+     */
+    public void testN1() {
+        assertEquals(3, T_istore_3_1.run());
+    }
+
+    /**
+     * @title Each of the istore_<n> instructions is the same as istore with an index of <n>
+     */
+    public void testN2() {
+        assertTrue(T_istore_3_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_3.jm.T_istore_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_3.jm.T_istore_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_3.jm.T_istore_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_1.j
new file mode 100644
index 0000000..4500a87
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_3_1.java
+.class public dxc/junit/opcodes/istore_3/jm/T_istore_3_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 4
+    
+    iconst_3
+    istore_3
+    iconst_4
+    iload_3
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_1.java
new file mode 100644
index 0000000..6e26dac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_3.jm;
+
+public class T_istore_3_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_2.j
new file mode 100644
index 0000000..0be8ae9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_3_2.java
+.class public dxc/junit/opcodes/istore_3/jm/T_istore_3_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    istore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_2.java
new file mode 100644
index 0000000..cd6cc2e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_3.jm;
+
+public class T_istore_3_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_3.j
new file mode 100644
index 0000000..e481f78
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_3_3.java
+.class public dxc/junit/opcodes/istore_3/jm/T_istore_3_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    istore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_3.java
new file mode 100644
index 0000000..b51534a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_3.jm;
+
+public class T_istore_3_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_4.j
new file mode 100644
index 0000000..0c6e947
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_3_4.java
+.class public dxc/junit/opcodes/istore_3/jm/T_istore_3_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    istore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_4.java
new file mode 100644
index 0000000..9eebda6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_3.jm;
+
+public class T_istore_3_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_5.j
new file mode 100644
index 0000000..6a10077
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_5.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_istore_3_5.java
+.class public dxc/junit/opcodes/istore_3/jm/T_istore_3_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 4
+
+    iconst_4
+    istore_3
+    iload_3
+
+    iconst_4
+    istore 3
+    iload_3
+    
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_5.java
new file mode 100644
index 0000000..dc6c7ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.istore_3.jm;
+
+public class T_istore_3_5 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/Test_isub.java b/tools/dx-tests/src/dxc/junit/opcodes/isub/Test_isub.java
new file mode 100644
index 0000000..a31f856
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/Test_isub.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.isub;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.isub.jm.T_isub_1;
+
+public class Test_isub extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(4, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 0, 255
+     */
+    public void testN2() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(-255, t.run(0, 255));
+    }
+
+    /**
+     * @title Arguments = 0, -65536
+     */
+    public void testN3() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(65536, t.run(0, -65536));
+    }
+
+    /**
+     * @title Arguments = 0, -2147483647
+     */
+    public void testN4() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(Integer.MAX_VALUE, t.run(0, -2147483647));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(-2147483647, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, -1
+     */
+    public void testB3() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(-2147483648, t.run(0, -Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB7() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(2147483646, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB8() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(-2147483647, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB9() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.isub.jm.T_isub_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int / double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.isub.jm.T_isub_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.isub.jm.T_isub_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference / int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.isub.jm.T_isub_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_1.j b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_1.j
new file mode 100644
index 0000000..d406038
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_isub_1.java
+.class public dxc/junit/opcodes/isub/jm/T_isub_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    isub
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_1.java b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_1.java
new file mode 100644
index 0000000..bcb204e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.isub.jm;
+
+public class T_isub_1 {
+
+    public int run(int a, int b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_2.j b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_2.j
new file mode 100644
index 0000000..d9c100a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_isub_2.java
+.class public dxc/junit/opcodes/isub/jm/T_isub_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    ; iload_2    
+    isub
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_2.java b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_2.java
new file mode 100644
index 0000000..b0c22d1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.isub.jm;
+
+public class T_isub_2 {
+
+    public int run(int a, int b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_3.j b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_3.j
new file mode 100644
index 0000000..e8afde9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_isub_3.java
+.class public dxc/junit/opcodes/isub/jm/T_isub_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(ID)I
+    .limit stack 3
+    .limit locals 5
+    iload_1
+    dload_2    
+    isub
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_3.java b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_3.java
new file mode 100644
index 0000000..0bfd571
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.isub.jm;
+
+public class T_isub_3 {
+
+    public int run(int a, double b) {
+        return a-(int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_4.j b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_4.j
new file mode 100644
index 0000000..93d9f1d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_isub_4.java
+.class public dxc/junit/opcodes/isub/jm/T_isub_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JI)I
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2i
+    iload_3
+    isub
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_4.java b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_4.java
new file mode 100644
index 0000000..66b9274
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.isub.jm;
+
+public class T_isub_4 {
+
+    public int run(long a, int b) {
+        return (int)a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_5.j b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_5.j
new file mode 100644
index 0000000..3ec22ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_isub_5.java
+.class public dxc/junit/opcodes/isub/jm/T_isub_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    isub
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_5.java b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_5.java
new file mode 100644
index 0000000..f7660cb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.isub.jm;
+
+public class T_isub_5 {
+    
+    public int run(int a, int b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/Test_iushr.java b/tools/dx-tests/src/dxc/junit/opcodes/iushr/Test_iushr.java
new file mode 100644
index 0000000..2f20baf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/Test_iushr.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iushr;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iushr.jm.T_iushr_1;
+
+public class Test_iushr extends DxTestCase {
+
+    /**
+     * @title  15 >> 1
+     */
+    public void testN1() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(7, t.run(15, 1));
+    }
+
+    /**
+     * @title  33 >> 2
+     */
+    public void testN2() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(8, t.run(33, 2));
+    }
+
+    /**
+     * @title  -15 >> 1
+     */
+    public void testN3() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(0x7FFFFFF8, t.run(-15, 1));
+    }
+
+    /**
+     * @title  Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(0, t.run(1, -1));
+    }
+
+    /**
+     * @title  Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(16, t.run(33, 33));
+    }
+
+    /**
+     * @title  Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(0x40000000, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iushr.jm.T_iushr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iushr.jm.T_iushr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iushr.jm.T_iushr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iushr.jm.T_iushr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_1.j
new file mode 100644
index 0000000..d155b85
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iushr_1.java
+.class public dxc/junit/opcodes/iushr/jm/T_iushr_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    iushr
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_1.java
new file mode 100644
index 0000000..bef0499
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iushr.jm;
+
+public class T_iushr_1 {
+
+    public int run(int a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_2.j
new file mode 100644
index 0000000..211cd49
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iushr_2.java
+.class public dxc/junit/opcodes/iushr/jm/T_iushr_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+;    iload_2
+    iushr
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_2.java
new file mode 100644
index 0000000..951c9db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iushr.jm;
+
+public class T_iushr_2 {
+
+    public int run(int a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_3.j
new file mode 100644
index 0000000..37f6b3c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iushr_3.java
+.class public dxc/junit/opcodes/iushr/jm/T_iushr_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DI)I
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+;    d2i
+    iload_3
+    iushr
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_3.java
new file mode 100644
index 0000000..ede613c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iushr.jm;
+
+public class T_iushr_3 {
+
+    public int run(double a, int b) {
+        return (int)a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_4.j
new file mode 100644
index 0000000..c6e4744
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iushr_4.java
+.class public dxc/junit/opcodes/iushr/jm/T_iushr_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(IJ)I
+    .limit stack 3
+    .limit locals 4
+
+    iload_1
+    lload_2
+;    l2i
+    iushr
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_4.java
new file mode 100644
index 0000000..41c7829
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iushr.jm;
+
+public class T_iushr_4 {
+
+    public int run(int a, long b) {
+        return a >> (int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_5.j
new file mode 100644
index 0000000..4e4ae33
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iushr_5.java
+.class public dxc/junit/opcodes/iushr/jm/T_iushr_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    iushr
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_5.java
new file mode 100644
index 0000000..beb152c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.iushr.jm;
+
+public class T_iushr_5 {
+    
+    public int run(int a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/Test_ixor.java b/tools/dx-tests/src/dxc/junit/opcodes/ixor/Test_ixor.java
new file mode 100644
index 0000000..5425b9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/Test_ixor.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ixor;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ixor.jm.T_ixor_1;
+
+public class Test_ixor extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_ixor_1 t = new T_ixor_1();
+        assertEquals(7, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+        T_ixor_1 t = new T_ixor_1();
+        assertEquals(9, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title  Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_ixor_1 t = new T_ixor_1();
+        assertEquals(0xFFFF3501, t.run(0xcafe, -1));
+    }
+
+    /**
+     * @title  Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ixor_1 t = new T_ixor_1();
+        assertEquals(-1, t.run(0, -1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_ixor_1 t = new T_ixor_1();
+        assertEquals(0xffffffff, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ixor.jm.T_ixor_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ixor.jm.T_ixor_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ixor.jm.T_ixor_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ixor.jm.T_ixor_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_1.j
new file mode 100644
index 0000000..56ae3a0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ixor_1.java
+.class public dxc/junit/opcodes/ixor/jm/T_ixor_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    ixor
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_1.java
new file mode 100644
index 0000000..c4ae6bb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ixor.jm;
+
+public class T_ixor_1 {
+
+    public int run(int a, int b) {
+        return a ^ b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_2.j
new file mode 100644
index 0000000..5d80b38
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ixor_2.java
+.class public dxc/junit/opcodes/ixor/jm/T_ixor_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+;    iload_2
+    ixor
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_2.java
new file mode 100644
index 0000000..57fbb22
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ixor.jm;
+
+public class T_ixor_2 {
+
+    public int run(int a, int b) {
+        return a ^ b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_3.j
new file mode 100644
index 0000000..5773388
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ixor_3.java
+.class public dxc/junit/opcodes/ixor/jm/T_ixor_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DI)I
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+;    d2i
+    iload_3
+    ixor
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_3.java
new file mode 100644
index 0000000..8b968ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ixor.jm;
+
+public class T_ixor_3 {
+
+    public int run(double a, int b) {
+        return (int)a ^ b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_4.j
new file mode 100644
index 0000000..68649a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ixor_4.java
+.class public dxc/junit/opcodes/ixor/jm/T_ixor_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(IJ)I
+    .limit stack 3
+    .limit locals 4
+
+    iload_1
+    lload_2
+;    l2i
+    ixor
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_4.java
new file mode 100644
index 0000000..6406bc9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ixor.jm;
+
+public class T_ixor_4 {
+
+    public int run(int a, long b) {
+        return a ^ (int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_5.j
new file mode 100644
index 0000000..53c64f4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ixor_5.java
+.class public dxc/junit/opcodes/ixor/jm/T_ixor_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    ixor
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_5.java
new file mode 100644
index 0000000..3b52886
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ixor.jm;
+
+public class T_ixor_5 {
+    
+    public int run(int a, int b) {
+        return a ^ b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/Test_jsr.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr/Test_jsr.java
new file mode 100644
index 0000000..5a737a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/Test_jsr.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.jsr;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.jsr.jm.T_jsr_1;
+import dxc.junit.opcodes.jsr.jm.T_jsr_2;
+
+public class Test_jsr extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_jsr_1 t = new T_jsr_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  nested jsrs
+     */
+    public void testN2() {
+        T_jsr_2 t = new T_jsr_2();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.23
+     * @title recursion of jsr
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.jsr.jm.T_jsr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.jsr.jm.T_jsr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target inside wide instruction
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.jsr.jm.T_jsr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_1.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_1.j
new file mode 100644
index 0000000..5e97c77
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_1.j
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_jsr_1.java
+.class public dxc/junit/opcodes/jsr/jm/T_jsr_1
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.jsr.jm.T_jsr_1.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.jsr.jm.T_jsr_1.i1 I
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_1.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_1.java
new file mode 100644
index 0000000..d148104
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.jsr.jm;
+
+public class T_jsr_1 {
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_2.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_2.j
new file mode 100644
index 0000000..ee1ffac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_2.j
@@ -0,0 +1,61 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_jsr_2.java
+.class public dxc/junit/opcodes/jsr/jm/T_jsr_2
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 3
+    
+    jsr SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.jsr.jm.T_jsr_2.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 500
+    putfield dxc.junit.opcodes.jsr.jm.T_jsr_2.i1 I
+    
+    jsr SetField1
+    
+    ret 1
+    
+SetField1:
+    astore_2
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.jsr.jm.T_jsr_2.i1 I
+    ret 2
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_2.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_2.java
new file mode 100644
index 0000000..10e4303
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_2.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.jsr.jm;
+
+public class T_jsr_2 {
+    public int i1;
+    
+    private void setfield() {
+        i1 = 500;
+        setfield1();
+    }
+    
+    private void setfield1() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.cfh
new file mode 100644
index 0000000..6deff56
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.cfh
@@ -0,0 +1,219 @@
+//@class:dxc/junit/opcodes/jsr/jm/T_jsr_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0010
+// .  .  
+   00 10 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 3, h: 0005: type{dxc.junit.opcodes.jsr.jm.T_jsr_3}
+    // .  .  .  
+       07 00 0d 
+    // parsed:, offset 59, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 65, len 5, h: 0007: utf8{"i1"}
+    // .  .  .  i  1  
+       01 00 02 69 31 
+    // parsed:, offset 70, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0c 
+    // parsed:, offset 75, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 82, len 6, h: 000a: utf8{"()Z"}
+    // .  .  .  (  )  Z  
+       01 00 03 28 29 5a 
+    // parsed:, offset 88, len 15, h: 000b: utf8{"T_jsr_3.java"}
+    // .  .  .  T  _  j  s  r  _  3  .  j  a  v  a  
+       01 00 0c 54 5f 6a 73 72 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 103, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 109, len 35, h: 000d: utf8{"dxc/junit/opcodes/jsr/jm/T_jsr_3"}
+    // .  .     d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  j  s  r  /  j  m  /  T  _  j  s  r  _  3  
+       01 00 20 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6a 73 72 2f 6a 6d 2f 54 5f 6a 73 72 5f 33 
+    // parsed:, offset 144, len 4, h: 000e: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 148, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 151, len 0, h: end constant_pool
+// parsed:, offset 151, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 153, len 2, h: this_class: type{dxc.junit.opcodes.jsr.jm.T_jsr_3}
+// .  .  
+   00 05 
+// parsed:, offset 155, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 157, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 159, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:i1, offset 161, len:90,desc: I
+// parsed:, offset 161, len 0, h:  fields[0]: 
+    // parsed:, offset 161, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 163, len 2, h: name: i1
+    // .  .  
+       00 07 
+    // parsed:, offset 165, len 2, h: descriptor: I
+    // .  .  
+       00 0e 
+    // parsed:, offset 167, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 169, len 0, h: end fields[0] 
+// ========== end-ParseMember:i1, desc: I
+// parsed:, offset 169, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 171, len:80,desc: ()V
+// parsed:, offset 171, len 0, h:  methods[0]: 
+    // parsed:, offset 171, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 173, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 175, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 177, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 179, len 0, h:  attributes[0]: 
+        // parsed:, offset 179, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 181, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 185, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 187, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 189, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 198, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 200, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 202, len 0, h: end attributes[0] 
+// parsed:, offset 202, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 202, len:49,desc: ()Z
+// parsed:, offset 202, len 0, h:  methods[1]: 
+    // parsed:, offset 202, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 204, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 206, len 2, h: descriptor: ()Z
+    // .  .  
+       00 0a 
+    // parsed:, offset 208, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 0, h:  attributes[0]: 
+        // parsed:, offset 210, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 212, len 4, h: length: 00000019
+        // .  .  .  .  
+           00 00 00 19 
+        // parsed:, offset 216, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 218, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 220, len 4, h: code_length: 0000000d
+        // .  .  .  .  
+           00 00 00 0d 
+        // parsed:, offset 0, len 3, h: 0000: jsr 0007
+        // .  .  .  
+//@mod           a8 00 07 
+           a8 00 08 
+        // parsed:, offset 3, len 1, h: 0003: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 4, len 1, h: 0004: ireturn
+        // .  
+           ac 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 4, h: 0007: wide astore 0001
+        // .  :  .  .  
+           c4 3a 00 01 
+        // parsed:, offset 11, len 2, h: 000b: ret 01
+        // .  .  
+           a9 01 
+        // parsed:, offset 237, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 239, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 241, len 0, h: end attributes[0] 
+// parsed:, offset 241, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()Z
+// parsed:, offset 241, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 243, len 0, h:  attributes[0]: 
+    // parsed:, offset 243, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 245, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 249, len 2, h: source: utf8{"T_jsr_3.java"}
+    // .  .  
+       00 0b 
+// parsed:, offset 251, len 0, h: end attributes[0] 
+// parsed:, offset 251, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.j
new file mode 100644
index 0000000..f0f987a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_jsr_3.java
+.class public dxc/junit/opcodes/jsr/jm/T_jsr_3
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr SetField
+
+    iconst_0
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_w 1
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.java
new file mode 100644
index 0000000..2d5b6a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.jsr.jm;
+
+public class T_jsr_3 {
+
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_4.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_4.j
new file mode 100644
index 0000000..3282061
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_4.j
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_jsr_4.java
+.class public dxc/junit/opcodes/jsr/jm/T_jsr_4
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr SetField
+    aload_0
+    getfield dxc.junit.opcodes.jsr.jm.T_jsr_4.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.jsr.jm.T_jsr_4.i1 I
+ 
+    jsr SetField
+  
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_4.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_4.java
new file mode 100644
index 0000000..ec13147
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_4.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.jsr.jm;
+
+public class T_jsr_4 {
+
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.cfh
new file mode 100644
index 0000000..6ecea6a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.cfh
@@ -0,0 +1,246 @@
+//@class:dxc/junit/opcodes/jsr/jm/T_jsr_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 3, h: 0004: type{dxc.junit.opcodes.jsr.jm.T_jsr_5}
+    // .  .  .  
+       07 00 0e 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 65, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0d 
+    // parsed:, offset 70, len 5, h: 0008: utf8{"i1"}
+    // .  .  .  i  1  
+       01 00 02 69 31 
+    // parsed:, offset 75, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 82, len 15, h: 000a: utf8{"T_jsr_5.java"}
+    // .  .  .  T  _  j  s  r  _  5  .  j  a  v  a  
+       01 00 0c 54 5f 6a 73 72 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 97, len 6, h: 000b: utf8{"()Z"}
+    // .  .  .  (  )  Z  
+       01 00 03 28 29 5a 
+    // parsed:, offset 103, len 5, h: 000c: field{dxc.junit.opcodes.jsr.jm.T_jsr_5.i1:I}
+    // .  .  .  .  .  
+       09 00 04 00 11 
+    // parsed:, offset 108, len 6, h: 000d: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 114, len 35, h: 000e: utf8{"dxc/junit/opcodes/jsr/jm/T_jsr_5"}
+    // .  .     d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  j  s  r  /  j  m  /  T  _  j  s  r  _  5  
+       01 00 20 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6a 73 72 2f 6a 6d 2f 54 5f 6a 73 72 5f 35 
+    // parsed:, offset 149, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 152, len 4, h: 0010: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 156, len 5, h: 0011: nat{i1:I}
+    // .  .  .  .  .  
+       0c 00 08 00 10 
+// parsed:, offset 161, len 0, h: end constant_pool
+// parsed:, offset 161, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 163, len 2, h: this_class: type{dxc.junit.opcodes.jsr.jm.T_jsr_5}
+// .  .  
+   00 04 
+// parsed:, offset 165, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 167, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 169, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:i1, offset 171, len:104,desc: I
+// parsed:, offset 171, len 0, h:  fields[0]: 
+    // parsed:, offset 171, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 173, len 2, h: name: i1
+    // .  .  
+       00 08 
+    // parsed:, offset 175, len 2, h: descriptor: I
+    // .  .  
+       00 10 
+    // parsed:, offset 177, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 179, len 0, h: end fields[0] 
+// ========== end-ParseMember:i1, desc: I
+// parsed:, offset 179, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 181, len:94,desc: ()V
+// parsed:, offset 181, len 0, h:  methods[0]: 
+    // parsed:, offset 181, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 183, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 185, len 2, h: descriptor: ()V
+    // .  .  
+       00 0d 
+    // parsed:, offset 187, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 0, h:  attributes[0]: 
+        // parsed:, offset 189, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 191, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 195, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 197, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 199, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 208, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 210, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 212, len 0, h: end attributes[0] 
+// parsed:, offset 212, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 212, len:63,desc: ()Z
+// parsed:, offset 212, len 0, h:  methods[1]: 
+    // parsed:, offset 212, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 214, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 216, len 2, h: descriptor: ()Z
+    // .  .  
+       00 0b 
+    // parsed:, offset 218, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 220, len 0, h:  attributes[0]: 
+        // parsed:, offset 220, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 222, len 4, h: length: 00000027
+        // .  .  .  '  
+           00 00 00 27 
+        // parsed:, offset 226, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 228, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 230, len 4, h: code_length: 0000001b
+        // .  .  .  .  
+           00 00 00 1b 
+        // parsed:, offset 0, len 3, h: 0000: jsr 0011
+        // .  .  .  
+//@mod           a8 00 11 
+           a8 00 ff 
+        // parsed:, offset 3, len 1, h: 0003: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 4, len 3, h: 0004: getfield field{dxc.junit.opcodes.jsr.jm.T_jsr_5.i1:I}
+        // .  .  .  
+           b4 00 0c 
+        // parsed:, offset 7, len 3, h: 0007: sipush #+03e8
+        // .  .  .  
+           11 03 e8 
+        // parsed:, offset 10, len 3, h: 000a: if_icmpne 000f
+        // .  .  .  
+           a0 00 05 
+        // parsed:, offset 13, len 1, h: 000d: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 14, len 1, h: 000e: ireturn
+        // .  
+           ac 
+        // parsed:, offset 15, len 1, h: 000f: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 16, len 1, h: 0010: ireturn
+        // .  
+           ac 
+        // parsed:, offset 17, len 1, h: 0011: astore_1 // 01
+        // L  
+           4c 
+        // parsed:, offset 18, len 1, h: 0012: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 19, len 3, h: 0013: sipush #+03e8
+        // .  .  .  
+           11 03 e8 
+        // parsed:, offset 22, len 3, h: 0016: putfield field{dxc.junit.opcodes.jsr.jm.T_jsr_5.i1:I}
+        // .  .  .  
+           b5 00 0c 
+        // parsed:, offset 25, len 2, h: 0019: ret 01
+        // .  .  
+           a9 01 
+        // parsed:, offset 261, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 263, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 265, len 0, h: end attributes[0] 
+// parsed:, offset 265, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()Z
+// parsed:, offset 265, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 267, len 0, h:  attributes[0]: 
+    // parsed:, offset 267, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 269, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 273, len 2, h: source: utf8{"T_jsr_5.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 275, len 0, h: end attributes[0] 
+// parsed:, offset 275, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.j
new file mode 100644
index 0000000..d369389
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_jsr_5.java
+.class public dxc/junit/opcodes/jsr/jm/T_jsr_5
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.jsr.jm.T_jsr_5.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.jsr.jm.T_jsr_5.i1 I
+    
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.java
new file mode 100644
index 0000000..6e99e92
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.jsr.jm;
+
+public class T_jsr_5 {
+
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/Test_jsr_w.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/Test_jsr_w.java
new file mode 100644
index 0000000..65e3320
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/Test_jsr_w.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.jsr_w;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.jsr_w.jm.T_jsr_w_1;
+import dxc.junit.opcodes.jsr_w.jm.T_jsr_w_2;
+
+public class Test_jsr_w extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_jsr_w_1 t = new T_jsr_w_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  nested jsrs
+     */
+    public void testN2() {
+        T_jsr_w_2 t = new T_jsr_w_2();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.23
+     * @title recursion of jsr
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.jsr_w.jm.T_jsr_w_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.jsr_w.jm.T_jsr_w_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target inside wide instruction
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.jsr_w.jm.T_jsr_w_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_1.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_1.j
new file mode 100644
index 0000000..b1e3523
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_1.j
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_jsr_w_1.java
+.class public dxc/junit/opcodes/jsr_w/jm/T_jsr_w_1
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr_w SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_1.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_1.i1 I
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_1.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_1.java
new file mode 100644
index 0000000..7dbb6b5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.jsr_w.jm;
+
+public class T_jsr_w_1 {
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_2.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_2.j
new file mode 100644
index 0000000..c9eb7b5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_2.j
@@ -0,0 +1,61 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_jsr_w_2.java
+.class public dxc/junit/opcodes/jsr_w/jm/T_jsr_w_2
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 3
+    
+    jsr_w SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_2.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 500
+    putfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_2.i1 I
+    
+    jsr_w SetField1
+    
+    ret 1
+    
+SetField1:
+    astore_2
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_2.i1 I
+    ret 2
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_2.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_2.java
new file mode 100644
index 0000000..cd78013
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_2.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.jsr_w.jm;
+
+public class T_jsr_w_2 {
+    public int i1;
+    
+    private void setfield() {
+        i1 = 500;
+        setfield1();
+    }
+    
+    private void setfield1() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.cfh
new file mode 100644
index 0000000..af25bac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.cfh
@@ -0,0 +1,219 @@
+//@class:dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0010
+// .  .  
+   00 10 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 17, h: 0004: utf8{"T_jsr_w_3.java"}
+    // .  .  .  T  _  j  s  r  _  w  _  3  .  j  a  v  a  
+       01 00 0e 54 5f 6a 73 72 5f 77 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 64, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 73, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 79, len 5, h: 0007: utf8{"i1"}
+    // .  .  .  i  1  
+       01 00 02 69 31 
+    // parsed:, offset 84, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0d 
+    // parsed:, offset 89, len 39, h: 0009: utf8{"dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3"}
+    // .  .  $  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  j  s  r  _  w  /  j  m  /  T  _  j  s  r  _  w  _  3  
+       01 00 24 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6a 73 72 5f 77 2f 6a 6d 2f 54 5f 6a 73 72 5f 77 5f 33 
+    // parsed:, offset 128, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 135, len 6, h: 000b: utf8{"()Z"}
+    // .  .  .  (  )  Z  
+       01 00 03 28 29 5a 
+    // parsed:, offset 141, len 3, h: 000c: type{dxc.junit.opcodes.jsr_w.jm.T_jsr_w_3}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 144, len 6, h: 000d: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 150, len 4, h: 000e: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 154, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 157, len 0, h: end constant_pool
+// parsed:, offset 157, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 159, len 2, h: this_class: type{dxc.junit.opcodes.jsr_w.jm.T_jsr_w_3}
+// .  .  
+   00 0c 
+// parsed:, offset 161, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 163, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 165, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:i1, offset 167, len:92,desc: I
+// parsed:, offset 167, len 0, h:  fields[0]: 
+    // parsed:, offset 167, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 169, len 2, h: name: i1
+    // .  .  
+       00 07 
+    // parsed:, offset 171, len 2, h: descriptor: I
+    // .  .  
+       00 0e 
+    // parsed:, offset 173, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 175, len 0, h: end fields[0] 
+// ========== end-ParseMember:i1, desc: I
+// parsed:, offset 175, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 177, len:82,desc: ()V
+// parsed:, offset 177, len 0, h:  methods[0]: 
+    // parsed:, offset 177, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 179, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 181, len 2, h: descriptor: ()V
+    // .  .  
+       00 0d 
+    // parsed:, offset 183, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 185, len 0, h:  attributes[0]: 
+        // parsed:, offset 185, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 187, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 191, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 193, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 195, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 204, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 206, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 208, len 0, h: end attributes[0] 
+// parsed:, offset 208, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 208, len:51,desc: ()Z
+// parsed:, offset 208, len 0, h:  methods[1]: 
+    // parsed:, offset 208, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 212, len 2, h: descriptor: ()Z
+    // .  .  
+       00 0b 
+    // parsed:, offset 214, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 0, h:  attributes[0]: 
+        // parsed:, offset 216, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 218, len 4, h: length: 0000001b
+        // .  .  .  .  
+           00 00 00 1b 
+        // parsed:, offset 222, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 224, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 226, len 4, h: code_length: 0000000f
+        // .  .  .  .  
+           00 00 00 0f 
+        // parsed:, offset 0, len 5, h: 0000: jsr_w 00000009
+        // .  .  .  .  .  
+//@mod           c9 00 00 00 09 
+           c9 00 00 00 0a 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 9, len 4, h: 0009: wide astore 0001
+        // .  :  .  .  
+           c4 3a 00 01 
+        // parsed:, offset 13, len 2, h: 000d: ret 01
+        // .  .  
+           a9 01 
+        // parsed:, offset 245, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 247, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 249, len 0, h: end attributes[0] 
+// parsed:, offset 249, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()Z
+// parsed:, offset 249, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 251, len 0, h:  attributes[0]: 
+    // parsed:, offset 251, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 253, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 257, len 2, h: source: utf8{"T_jsr_w_3.java"}
+    // .  .  
+       00 04 
+// parsed:, offset 259, len 0, h: end attributes[0] 
+// parsed:, offset 259, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.j
new file mode 100644
index 0000000..7be029b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_jsr_w_3.java
+.class public dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr_w SetField
+
+    iconst_0
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_w 1
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.java
new file mode 100644
index 0000000..125de8a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.jsr_w.jm;
+
+public class T_jsr_w_3 {
+
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_4.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_4.j
new file mode 100644
index 0000000..0fdd704
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_4.j
@@ -0,0 +1,54 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_jsr_w_4.java
+.class public dxc/junit/opcodes/jsr_w/jm/T_jsr_w_4
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr_w SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_4.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_4.i1 I
+ 
+    jsr_w SetField
+  
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_4.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_4.java
new file mode 100644
index 0000000..c58f2f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_4.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.jsr_w.jm;
+
+public class T_jsr_w_4 {
+
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.cfh
new file mode 100644
index 0000000..b0bb2e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.cfh
@@ -0,0 +1,246 @@
+//@class:dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 3, h: 0004: type{dxc.junit.opcodes.jsr_w.jm.T_jsr_w_5}
+    // .  .  .  
+       07 00 07 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 65, len 39, h: 0007: utf8{"dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5"}
+    // .  .  $  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  j  s  r  _  w  /  j  m  /  T  _  j  s  r  _  w  _  5  
+       01 00 24 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6a 73 72 5f 77 2f 6a 6d 2f 54 5f 6a 73 72 5f 77 5f 35 
+    // parsed:, offset 104, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0c 
+    // parsed:, offset 109, len 5, h: 0009: utf8{"i1"}
+    // .  .  .  i  1  
+       01 00 02 69 31 
+    // parsed:, offset 114, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 121, len 6, h: 000b: utf8{"()Z"}
+    // .  .  .  (  )  Z  
+       01 00 03 28 29 5a 
+    // parsed:, offset 127, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 133, len 5, h: 000d: field{dxc.junit.opcodes.jsr_w.jm.T_jsr_w_5.i1:I}
+    // .  .  .  .  .  
+       09 00 04 00 11 
+    // parsed:, offset 138, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 141, len 4, h: 000f: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 145, len 17, h: 0010: utf8{"T_jsr_w_5.java"}
+    // .  .  .  T  _  j  s  r  _  w  _  5  .  j  a  v  a  
+       01 00 0e 54 5f 6a 73 72 5f 77 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 162, len 5, h: 0011: nat{i1:I}
+    // .  .  .  .  .  
+       0c 00 09 00 0f 
+// parsed:, offset 167, len 0, h: end constant_pool
+// parsed:, offset 167, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 169, len 2, h: this_class: type{dxc.junit.opcodes.jsr_w.jm.T_jsr_w_5}
+// .  .  
+   00 04 
+// parsed:, offset 171, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 173, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 175, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:i1, offset 177, len:106,desc: I
+// parsed:, offset 177, len 0, h:  fields[0]: 
+    // parsed:, offset 177, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 179, len 2, h: name: i1
+    // .  .  
+       00 09 
+    // parsed:, offset 181, len 2, h: descriptor: I
+    // .  .  
+       00 0f 
+    // parsed:, offset 183, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 185, len 0, h: end fields[0] 
+// ========== end-ParseMember:i1, desc: I
+// parsed:, offset 185, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 187, len:96,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[0]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 197, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 201, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 214, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 216, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 218, len 0, h: end attributes[0] 
+// parsed:, offset 218, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 218, len:65,desc: ()Z
+// parsed:, offset 218, len 0, h:  methods[1]: 
+    // parsed:, offset 218, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 220, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 222, len 2, h: descriptor: ()Z
+    // .  .  
+       00 0b 
+    // parsed:, offset 224, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 226, len 0, h:  attributes[0]: 
+        // parsed:, offset 226, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 228, len 4, h: length: 00000029
+        // .  .  .  )  
+           00 00 00 29 
+        // parsed:, offset 232, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 234, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 236, len 4, h: code_length: 0000001d
+        // .  .  .  .  
+           00 00 00 1d 
+        // parsed:, offset 0, len 5, h: 0000: jsr_w 00000013
+        // .  .  .  .  .  
+//@mod           c9 00 00 00 13 
+           c9 00 00 00 ff         
+        // parsed:, offset 5, len 1, h: 0005: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 6, len 3, h: 0006: getfield field{dxc.junit.opcodes.jsr_w.jm.T_jsr_w_5.i1:I}
+        // .  .  .  
+           b4 00 0d 
+        // parsed:, offset 9, len 3, h: 0009: sipush #+03e8
+        // .  .  .  
+           11 03 e8 
+        // parsed:, offset 12, len 3, h: 000c: if_icmpne 0011
+        // .  .  .  
+           a0 00 05 
+        // parsed:, offset 15, len 1, h: 000f: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 16, len 1, h: 0010: ireturn
+        // .  
+           ac 
+        // parsed:, offset 17, len 1, h: 0011: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 18, len 1, h: 0012: ireturn
+        // .  
+           ac 
+        // parsed:, offset 19, len 1, h: 0013: astore_1 // 01
+        // L  
+           4c 
+        // parsed:, offset 20, len 1, h: 0014: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 21, len 3, h: 0015: sipush #+03e8
+        // .  .  .  
+           11 03 e8 
+        // parsed:, offset 24, len 3, h: 0018: putfield field{dxc.junit.opcodes.jsr_w.jm.T_jsr_w_5.i1:I}
+        // .  .  .  
+           b5 00 0d 
+        // parsed:, offset 27, len 2, h: 001b: ret 01
+        // .  .  
+           a9 01 
+        // parsed:, offset 269, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 271, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 273, len 0, h: end attributes[0] 
+// parsed:, offset 273, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()Z
+// parsed:, offset 273, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 275, len 0, h:  attributes[0]: 
+    // parsed:, offset 275, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 277, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 281, len 2, h: source: utf8{"T_jsr_w_5.java"}
+    // .  .  
+       00 10 
+// parsed:, offset 283, len 0, h: end attributes[0] 
+// parsed:, offset 283, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.j
new file mode 100644
index 0000000..41dd4bb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_jsr_w_5.java
+.class public dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr_w SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_5.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_5.i1 I
+    
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.java
new file mode 100644
index 0000000..4693529
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.jsr_w.jm;
+
+public class T_jsr_w_5 {
+
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/Test_l2d.java b/tools/dx-tests/src/dxc/junit/opcodes/l2d/Test_l2d.java
new file mode 100644
index 0000000..6b27eab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/Test_l2d.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2d;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.l2d.jm.T_l2d_1;
+
+public class Test_l2d extends DxTestCase {
+
+    /**
+     * @title  Argument = 50000000000
+     */
+    public void testN1() {
+        T_l2d_1 t = new T_l2d_1();
+        assertEquals(5.0E10d, t.run(50000000000l), 0d);
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_l2d_1 t = new T_l2d_1();
+        assertEquals(1d, t.run(1l), 0d);
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_l2d_1 t = new T_l2d_1();
+        assertEquals(-1d, t.run(-1l), 0d);
+    }
+
+    /**
+     * @title  Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_l2d_1 t = new T_l2d_1();
+        assertEquals(9.223372036854776E18d, t.run(Long.MAX_VALUE), 0d);
+    }
+
+    /**
+     * @title  Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_l2d_1 t = new T_l2d_1();
+        assertEquals(-9.223372036854776E18, t.run(Long.MIN_VALUE), 0d);
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB3() {
+        T_l2d_1 t = new T_l2d_1();
+        assertEquals(0d, t.run(0), 0d);
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2d.jm.T_l2d_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2d.jm.T_l2d_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2d.jm.T_l2d_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2d.jm.T_l2d_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_1.j b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_1.j
new file mode 100644
index 0000000..0a98eb7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_l2d_1.java
+.class public dxc/junit/opcodes/l2d/jm/T_l2d_1
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(J)D
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+    l2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_1.java b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_1.java
new file mode 100644
index 0000000..0d4f014
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2d.jm;
+
+public class T_l2d_1 {
+
+    public double run(long a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_2.j b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_2.j
new file mode 100644
index 0000000..ecf0bf8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_2.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_l2d_2.java
+.class public dxc/junit/opcodes/l2d/jm/T_l2d_2
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(J)D
+    .limit stack 2
+    .limit locals 3
+
+;    lload_1
+    l2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_2.java b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_2.java
new file mode 100644
index 0000000..fbba547
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2d.jm;
+
+public class T_l2d_2 {
+
+    public double run(long a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_3.j b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_3.j
new file mode 100644
index 0000000..b529402
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_3.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_l2d_3.java
+.class public dxc/junit/opcodes/l2d/jm/T_l2d_3
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(F)D
+    .limit stack 2
+    .limit locals 2
+
+    fload_1
+    l2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_3.java b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_3.java
new file mode 100644
index 0000000..92a342f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2d.jm;
+
+public class T_l2d_3 {
+
+    public double run(float a) {
+        return a;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_4.j b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_4.j
new file mode 100644
index 0000000..42c4e7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_4.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_l2d_4.java
+.class public dxc/junit/opcodes/l2d/jm/T_l2d_4
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(I)D
+    .limit stack 2
+    .limit locals 2
+
+    iload_1
+    l2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_4.java b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_4.java
new file mode 100644
index 0000000..717aedb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2d.jm;
+
+public class T_l2d_4 {
+
+    public double run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_5.java b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_5.java
new file mode 100644
index 0000000..4a3ebb5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2d.jm;
+
+public class T_l2d_5 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_6.java b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_6.java
new file mode 100644
index 0000000..f79957e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2d.jm;
+
+public class T_l2d_6 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_7.j b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_7.j
new file mode 100644
index 0000000..70fbabb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_7.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_l2d_7.java
+.class public dxc/junit/opcodes/l2d/jm/T_l2d_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)D
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    l2d
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_7.java b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_7.java
new file mode 100644
index 0000000..2d04278
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2d.jm;
+
+public class T_l2d_7 {
+    
+    public double run(long a) {
+        return a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/Test_l2f.java b/tools/dx-tests/src/dxc/junit/opcodes/l2f/Test_l2f.java
new file mode 100644
index 0000000..7b1d277
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/Test_l2f.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2f;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.l2f.jm.T_l2f_1;
+
+public class Test_l2f extends DxTestCase {
+
+    /**
+     * @title  Argument = 123456789012345
+     */
+    public void testN1() {
+        T_l2f_1 t = new T_l2f_1();
+        assertEquals(1.23456788E14f, t.run(123456789012345l), 0f);
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_l2f_1 t = new T_l2f_1();
+        assertEquals(1f, t.run(1l), 0f);
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_l2f_1 t = new T_l2f_1();
+        assertEquals(-1f, t.run(-1l), 0f);
+    }
+
+    /**
+     * @title  Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_l2f_1 t = new T_l2f_1();
+        assertEquals(9.223372036854776E18, t.run(Long.MAX_VALUE), 0f);
+    }
+
+    /**
+     * @title  Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_l2f_1 t = new T_l2f_1();
+        assertEquals(-9.223372036854776E18, t.run(Long.MIN_VALUE), 0f);
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB3() {
+        T_l2f_1 t = new T_l2f_1();
+        assertEquals(0f, t.run(0l), 0f);
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2f.jm.T_l2f_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2f.jm.T_l2f_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2f.jm.T_l2f_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2f.jm.T_l2f_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_1.j b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_1.j
new file mode 100644
index 0000000..69cd105
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_l2f_1.java
+.class public dxc/junit/opcodes/l2f/jm/T_l2f_1
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(J)F
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+    l2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_1.java b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_1.java
new file mode 100644
index 0000000..a115daf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2f.jm;
+
+public class T_l2f_1 {
+
+    public float run(long a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_2.j b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_2.j
new file mode 100644
index 0000000..abc3a02
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_2.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_l2f_2.java
+.class public dxc/junit/opcodes/l2f/jm/T_l2f_2
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(J)F
+    .limit stack 2
+    .limit locals 3
+
+;    lload_1
+    l2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_2.java b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_2.java
new file mode 100644
index 0000000..fde8820
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2f.jm;
+
+public class T_l2f_2 {
+
+    public float run(long a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_3.j b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_3.j
new file mode 100644
index 0000000..55b3efd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_3.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_l2f_3.java
+.class public dxc/junit/opcodes/l2f/jm/T_l2f_3
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(D)F
+    .limit stack 2
+    .limit locals 3
+
+    dload_1
+    l2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_3.java b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_3.java
new file mode 100644
index 0000000..e4e0342
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2f.jm;
+
+public class T_l2f_3 {
+
+    public float run(double a) {
+        return (float)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_4.j b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_4.j
new file mode 100644
index 0000000..7fa4036
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_4.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_l2f_4.java
+.class public dxc/junit/opcodes/l2f/jm/T_l2f_4
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(I)F
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    l2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_4.java b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_4.java
new file mode 100644
index 0000000..6bdd0dc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2f.jm;
+
+public class T_l2f_4 {
+
+    public float run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_5.j b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_5.j
new file mode 100644
index 0000000..8addc20
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_l2f_5.java
+.class public dxc/junit/opcodes/l2f/jm/T_l2f_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)F
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    l2f
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_5.java b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_5.java
new file mode 100644
index 0000000..dae1222
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2f.jm;
+
+public class T_l2f_5 {
+    
+    public float run(long a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/Test_l2i.java b/tools/dx-tests/src/dxc/junit/opcodes/l2i/Test_l2i.java
new file mode 100644
index 0000000..627e5fc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/Test_l2i.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2i;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.l2i.jm.T_l2i_1;
+
+public class Test_l2i extends DxTestCase {
+
+    /**
+     * @title  Argument = 0xAAAAFFEEDDCCl
+     */
+    public void testN1() {
+        T_l2i_1 t = new T_l2i_1();
+        assertEquals(0xFFEEDDCC, t.run(0xAAAAFFEEDDCCl));
+    }
+
+    /**
+     * @title  Argument = -123456789
+     */
+    public void testN2() {
+        T_l2i_1 t = new T_l2i_1();
+        assertEquals(-123456789, t.run(-123456789l));
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN3() {
+        T_l2i_1 t = new T_l2i_1();
+        assertEquals(1, t.run(1l));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN4() {
+        T_l2i_1 t = new T_l2i_1();
+        assertEquals(-1, t.run(-1l));
+    }
+
+    /**
+     * @title  Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_l2i_1 t = new T_l2i_1();
+        assertEquals(-1, t.run(Long.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_l2i_1 t = new T_l2i_1();
+        assertEquals(0, t.run(Long.MIN_VALUE));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB3() {
+        T_l2i_1 t = new T_l2i_1();
+        assertEquals(0, t.run(0l));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2i.jm.T_l2i_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2i.jm.T_l2i_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2i.jm.T_l2i_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2i.jm.T_l2i_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_1.j b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_1.j
new file mode 100644
index 0000000..7acd7e2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_l2i_1.java
+.class public dxc/junit/opcodes/l2i/jm/T_l2i_1
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(J)I
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+    l2i
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_1.java b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_1.java
new file mode 100644
index 0000000..a871771
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2i.jm;
+
+public class T_l2i_1 {
+
+    public int run(long a) {
+        return (int) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_2.j b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_2.j
new file mode 100644
index 0000000..d2a23ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_2.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_l2i_2.java
+.class public dxc/junit/opcodes/l2i/jm/T_l2i_2
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(J)I
+    .limit stack 2
+    .limit locals 3
+
+;    lload_1
+    l2i
+
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_2.java b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_2.java
new file mode 100644
index 0000000..beabb5f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2i.jm;
+
+public class T_l2i_2 {
+
+    public int run(long a) {
+        return (int) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_3.j b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_3.j
new file mode 100644
index 0000000..013f9b1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_3.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_l2i_3.java
+.class public dxc/junit/opcodes/l2i/jm/T_l2i_3
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(D)I
+    .limit stack 2
+    .limit locals 3
+
+    dload_1
+    l2i
+
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_3.java b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_3.java
new file mode 100644
index 0000000..edcc6d9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2i.jm;
+
+public class T_l2i_3 {
+
+    public int run(double a) {
+        return (int) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_4.j b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_4.j
new file mode 100644
index 0000000..acc31bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_4.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_l2i_4.java
+.class public dxc/junit/opcodes/l2i/jm/T_l2i_4
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(F)I
+    .limit stack 2
+    .limit locals 3
+
+    fload_1
+    l2i
+
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_4.java b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_4.java
new file mode 100644
index 0000000..af8320c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2i.jm;
+
+public class T_l2i_4 {
+
+    public int run(float a) {
+        return (int) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_5.j b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_5.j
new file mode 100644
index 0000000..8ee7bcd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_l2i_5.java
+.class public dxc/junit/opcodes/l2i/jm/T_l2i_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    l2i
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_5.java b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_5.java
new file mode 100644
index 0000000..1ffbb57
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.l2i.jm;
+
+public class T_l2i_5 {
+    
+    public int run(long a) {
+        return (int) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/Test_ladd.java b/tools/dx-tests/src/dxc/junit/opcodes/ladd/Test_ladd.java
new file mode 100644
index 0000000..7c37739
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/Test_ladd.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ladd;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ladd.jm.T_ladd_1;
+
+public class Test_ladd extends DxTestCase {
+
+    /**
+     * @title Arguments = 12345678l, 87654321l
+     */
+    public void testN1() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(99999999l, t.run(12345678l, 87654321l));
+    }
+
+    /**
+     * @title Arguments = 0l, 87654321l
+     */
+    public void testN2() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(87654321l, t.run(0l, 87654321l));
+    }
+
+    /**
+     * @title Arguments = -12345678l, 0l
+     */
+    public void testN3() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(-12345678l, t.run(-12345678l, 0l));
+    }
+
+    /**
+     * @title  Arguments: 0 + Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(9223372036854775807L, t.run(0l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments: 0 + Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(-9223372036854775808L, t.run(0l, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments: 0 + 0
+     */
+    public void testB3() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(0l, t.run(0l, 0l));
+    }
+
+    /**
+     * @title  Arguments: Long.MAX_VALUE + Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(-2, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments: Long.MAX_VALUE + Long.MIN_VALUE
+     */
+    public void testB5() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments: Long.MIN_VALUE + Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments: Long.MIN_VALUE + 1
+     */
+    public void testB7() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(-9223372036854775807l, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title  Arguments: Long.MAX_VALUE + 1
+     */
+    public void testB8() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(-9223372036854775808l, t.run(Long.MAX_VALUE, 1l));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ladd.jm.T_ladd_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ladd.jm.T_ladd_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ladd.jm.T_ladd_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ladd.jm.T_ladd_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference / long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ladd.jm.T_ladd_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_1.j
new file mode 100644
index 0000000..03b8556
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_1.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ladd_1.java
+.class public dxc/junit/opcodes/ladd/jm/T_ladd_1
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    ladd
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_1.java
new file mode 100644
index 0000000..56c7f9a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ladd.jm;
+
+public class T_ladd_1 {
+
+    public long run(long a, long b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_2.j
new file mode 100644
index 0000000..5757930
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_2.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ladd_2.java
+.class public dxc/junit/opcodes/ladd/jm/T_ladd_2
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+;    lload_1
+    lload_3
+    ladd
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_2.java
new file mode 100644
index 0000000..98d4e78
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ladd.jm;
+
+public class T_ladd_2 {
+
+    public long run(long a, long b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_3.j
new file mode 100644
index 0000000..0fb7885
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ladd_3.java
+.class public dxc/junit/opcodes/ladd/jm/T_ladd_3
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(JD)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    dload_3
+;    d2l    
+    ladd
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_3.java
new file mode 100644
index 0000000..cc306af
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ladd.jm;
+
+public class T_ladd_3 {
+
+    public long run(long a, double b) {
+        return (long)(a+b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_4.j
new file mode 100644
index 0000000..da9d27f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_4.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ladd_4.java
+.class public dxc/junit/opcodes/ladd/jm/T_ladd_4
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(JI)J
+    .limit stack 4
+    .limit locals 4
+
+    lload_1
+    iload_3
+;    i2l
+    ladd
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_4.java
new file mode 100644
index 0000000..0412967
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ladd.jm;
+
+public class T_ladd_4 {
+
+    public long run(long a, int b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_5.j
new file mode 100644
index 0000000..fbb7d16
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_5.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ladd_5.java
+.class public dxc/junit/opcodes/ladd/jm/T_ladd_5
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(JF)J
+    .limit stack 4
+    .limit locals 4
+
+    lload_1
+    fload_3
+;    f2l    
+    ladd
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_5.java
new file mode 100644
index 0000000..0468585
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ladd.jm;
+
+public class T_ladd_5 {
+
+    public long run(long a, float b) {
+        return (long)(a+b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_6.j
new file mode 100644
index 0000000..c82e12e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ladd_6.java
+.class public dxc/junit/opcodes/ladd/jm/T_ladd_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    aload_0
+    lload_3
+    ladd
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_6.java
new file mode 100644
index 0000000..b7fefc4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ladd.jm;
+
+public class T_ladd_6 {
+    
+    public long run(long a, long b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/Test_laload.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/Test_laload.java
new file mode 100644
index 0000000..a4c0b97
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/Test_laload.java
@@ -0,0 +1,203 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.laload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.laload.jm.T_laload_1;
+
+public class Test_laload extends DxTestCase {
+
+    /**
+     * @title normal test. trying different indexes
+     */
+    public void testN1() {
+        T_laload_1 t = new T_laload_1();
+        long[] arr = new long[2];
+        arr[1] = 1000000000000000000l;
+        assertEquals(1000000000000000000l, t.run(arr, 1));
+    }
+
+    /**
+     * @title normal test. trying different indexes
+     */
+    public void testN2() {
+        T_laload_1 t = new T_laload_1();
+        long[] arr = new long[2];
+        arr[0] = 1000000000000000000l;
+        assertEquals(1000000000000000000l, t.run(arr, 0));
+    }
+
+    /**
+     * @title  Exception - ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_laload_1 t = new T_laload_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Exception - NullPointerException
+     */
+    public void testE2() {
+        T_laload_1 t = new T_laload_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException np) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Exception - ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_laload_1 t = new T_laload_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object, long
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], long
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int[], long
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_1.j
new file mode 100644
index 0000000..156aad2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_1.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_laload_1.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_1
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run([JI)J
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    iload_2
+    
+    laload
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_1.java
new file mode 100644
index 0000000..0e06614
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_1 {
+
+    public long run(long[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_10.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_10.j
new file mode 100644
index 0000000..ca6cbcf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_10.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_laload_10.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([JI)J
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_0
+    laload
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_10.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_10.java
new file mode 100644
index 0000000..a6fa4bc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_10 {
+    
+    public long run(long[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_2.j
new file mode 100644
index 0000000..0b1bc5b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_2.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_laload_2.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_2
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run([JI)J
+    .limit stack 2
+    .limit locals 3
+
+;    aload_1
+    iload_2
+    laload
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_2.java
new file mode 100644
index 0000000..93854c9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_2 {
+
+    public long run(long[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_3.j
new file mode 100644
index 0000000..da77288
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_3.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_laload_3.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_3
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run([JI)J
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+;    iload_2
+    laload
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_3.java
new file mode 100644
index 0000000..2230c0d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_3 {
+
+    public long run(long[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_4.j
new file mode 100644
index 0000000..18646c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_4.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_laload_4.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_4
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run([JD)J
+    .limit stack 5
+    .limit locals 4
+
+    aload_1
+    dload_2
+;    d2i
+    laload
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_4.java
new file mode 100644
index 0000000..fbff226
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_4 {
+
+    public long run(long[] arr, double idx) {
+        return arr[(int)idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_5.j
new file mode 100644
index 0000000..5b8fcae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_5.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_laload_5.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_5
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run([JF)J
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    fload_2
+;    f2i
+    laload
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_5.java
new file mode 100644
index 0000000..b3072a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_5 {
+
+    public long run(long[] arr, float idx) {
+        return arr[(int)idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_6.j
new file mode 100644
index 0000000..299b9ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_laload_6.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_6
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run([JJ)J
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    lload_2
+;    l2i
+    laload
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_6.java
new file mode 100644
index 0000000..1d2e294
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_6 {
+
+    public long run(long[] arr, long idx) {
+        return arr[(int)idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_7.j
new file mode 100644
index 0000000..747b974
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_7.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_laload_7.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run(Ljava/lang/Object;[JI)J
+    .limit stack 2
+    .limit locals 4
+
+    aload_1
+    iload_3
+    laload
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_7.java
new file mode 100644
index 0000000..3c54ede
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_7 {
+
+    public long run(Object a, long[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_8.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_8.j
new file mode 100644
index 0000000..8fb0626
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_8.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_laload_8.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run([D[JI)J
+    .limit stack 2
+    .limit locals 4
+
+    aload_1
+    iload_3
+    laload
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_8.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_8.java
new file mode 100644
index 0000000..908c1ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_8 {
+
+    public long run(double[] a, long[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_9.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_9.j
new file mode 100644
index 0000000..152895c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_9.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_laload_9.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_9
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run([I[JI)J
+    .limit stack 2
+    .limit locals 4
+
+    aload_1
+    iload_3
+    laload
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_9.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_9.java
new file mode 100644
index 0000000..e4a0373
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_9 {
+
+    public long run(int[] a, long[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/Test_land.java b/tools/dx-tests/src/dxc/junit/opcodes/land/Test_land.java
new file mode 100644
index 0000000..6902318
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/Test_land.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.land;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.land.jm.T_land_1;
+
+public class Test_land extends DxTestCase {
+
+    /**
+     * @title Arguments = 0xfffffff8aal, 0xfffffff1aal
+     */
+    public void testN1() {
+        T_land_1 t = new T_land_1();
+        assertEquals(0xfffffff0aal, t.run(0xfffffff8aal, 0xfffffff1aal));
+    }
+
+    /**
+     * @title Arguments = 987654321, 123456789
+     */
+    public void testN2() {
+        T_land_1 t = new T_land_1();
+        assertEquals(39471121, t.run(987654321, 123456789));
+    }
+
+    /**
+     * @title  Arguments = 0xABCDEF & -1
+     */
+    public void testN3() {
+        T_land_1 t = new T_land_1();
+        assertEquals(0xABCDEF, t.run(0xABCDEF, -1));
+    }
+
+    /**
+     * @title  Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_land_1 t = new T_land_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title  Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_land_1 t = new T_land_1();
+        assertEquals(0, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.land.jm.T_land_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.land.jm.T_land_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.land.jm.T_land_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.land.jm.T_land_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_1.j b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_1.j
new file mode 100644
index 0000000..ceffcd2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_1.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_land_1.java
+.class public dxc/junit/opcodes/land/jm/T_land_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    land
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_1.java b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_1.java
new file mode 100644
index 0000000..dfb8ce3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.land.jm;
+
+public class T_land_1 {
+
+    public long run(long a, long b) {
+        return a & b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_2.j b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_2.j
new file mode 100644
index 0000000..ca6c6bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_land_2.java
+.class public dxc/junit/opcodes/land/jm/T_land_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+;    lload_3
+    land
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_2.java b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_2.java
new file mode 100644
index 0000000..2eeb88f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.land.jm;
+
+public class T_land_2 {
+
+    public long run(long a, long b) {
+        return a & b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_3.j b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_3.j
new file mode 100644
index 0000000..f2e9b24
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_3.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_land_3.java
+.class public dxc/junit/opcodes/land/jm/T_land_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run(FJ)J
+    .limit stack 4
+    .limit locals 4
+
+    fload_1
+;    f2l
+    lload_2
+    land
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_3.java b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_3.java
new file mode 100644
index 0000000..4d669ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.land.jm;
+
+public class T_land_3 {
+
+    public long run(float a, long b) {
+        return (long)a & b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_4.j b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_4.j
new file mode 100644
index 0000000..8387452
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_land_4.java
+.class public dxc/junit/opcodes/land/jm/T_land_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run(IJ)J
+    .limit stack 4
+    .limit locals 4
+
+    iload_1
+;    i2l
+    lload_2
+    land
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_4.java b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_4.java
new file mode 100644
index 0000000..05240b8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.land.jm;
+
+public class T_land_4 {
+
+    public long run(int a, long b) {
+        return a & b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_5.java b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_5.java
new file mode 100644
index 0000000..71b07b2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.land.jm;
+
+public class T_land_5 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_6.java b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_6.java
new file mode 100644
index 0000000..1320ff8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.land.jm;
+
+public class T_land_6 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_7.j b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_7.j
new file mode 100644
index 0000000..7547338
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_land_7.java
+.class public dxc/junit/opcodes/land/jm/T_land_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    aload_0
+    lload_3
+    land
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_7.java b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_7.java
new file mode 100644
index 0000000..3df40e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.land.jm;
+
+public class T_land_7 {
+    
+    public long run(long a, long b) {
+        return a & b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/Test_lastore.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/Test_lastore.java
new file mode 100644
index 0000000..269cdc7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/Test_lastore.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lastore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lastore.jm.T_lastore_1;
+
+public class Test_lastore extends DxTestCase {
+
+    /**
+     * @title normal test. trying different indexes
+     */
+    public void testN1() {
+        T_lastore_1 t = new T_lastore_1();
+        long[] arr = new long[2];
+        t.run(arr, 1, 100000000000l);
+        assertEquals(100000000000l, arr[1]);
+    }
+
+    /**
+     * @title normal test. trying different indexes
+     */
+    public void testN2() {
+        T_lastore_1 t = new T_lastore_1();
+        long[] arr = new long[2];
+        t.run(arr, 0, 100000000000l);
+        assertEquals(100000000000l, arr[0]);
+    }
+
+    /**
+     * @title  Exception - ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_lastore_1 t = new T_lastore_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, 2, 100000000000l);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Exception - NullPointerException
+     */
+    public void testE2() {
+        T_lastore_1 t = new T_lastore_1();
+        try {
+            t.run(null, 1, 100000000000l);
+            fail("expected NullPointerException");
+        } catch (NullPointerException np) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Exception - ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_lastore_1 t = new T_lastore_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, -1, 100000000000l);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lastore.jm.T_lastore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lastore.jm.T_lastore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double,
+     * long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lastore.jm.T_lastore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lastore.jm.T_lastore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - object, int, long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lastore.jm.T_lastore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int,
+     * long
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.lastore.jm.T_lastore_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int[], int, long
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.lastore.jm.T_lastore_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference,
+     * long
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.lastore.jm.T_lastore_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_1.j
new file mode 100644
index 0000000..84a545d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lastore_1.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([JIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+    lload_3
+    lastore
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_1.java
new file mode 100644
index 0000000..1b99d7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_1 {
+
+    public void run(long[] arr, int idx, long value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_2.j
new file mode 100644
index 0000000..e390ddc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lastore_2.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run([JIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+;    lload_3
+    lastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_2.java
new file mode 100644
index 0000000..5ffe95a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_2 {
+
+    public void run(long[] arr, int idx, long value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_3.j
new file mode 100644
index 0000000..c99fb54
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_3.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lastore_3.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run([JIJ)V
+    .limit stack 4
+    .limit locals 5
+
+;    aload_1
+    iload_2
+    lload_3
+    lastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_3.java
new file mode 100644
index 0000000..49f5b9f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_3 {
+
+    public void run(long[] arr, int idx, long value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_4.j
new file mode 100644
index 0000000..0ad73cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_4.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lastore_4.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run([JDJ)V
+    .limit stack 5
+    .limit locals 6
+
+    aload_1
+    dload_2
+;    d2i
+    lload 4
+    lastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_4.java
new file mode 100644
index 0000000..d18b82f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_4 {
+
+    public void run(long[] arr, double idx, long value) {
+        arr[(int)idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_5.j
new file mode 100644
index 0000000..8c2ffd3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lastore_5.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run([JII)V
+    .limit stack 4
+    .limit locals 4
+    
+    aload_1
+    iload_2
+    iload_3
+;    i2l
+    lastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_5.java
new file mode 100644
index 0000000..091def6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_5 {
+
+    public void run(long[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_6.j
new file mode 100644
index 0000000..0b74d34
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_6.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lastore_6.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run(Ljava/lang/Object;[JIJ)V
+    .limit stack 4
+    .limit locals 6
+
+    aload_1
+    iload_3
+    lload 4
+    lastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_6.java
new file mode 100644
index 0000000..8fd85cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_6 {
+
+    public void run(Object a, long[] arr, int idx, long value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_7.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_7.j
new file mode 100644
index 0000000..fbd9554
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_7.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lastore_7.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run([D[JIJ)V
+    .limit stack 4
+    .limit locals 6
+
+    aload_1
+    iload_3
+    lload 4
+    lastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_7.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_7.java
new file mode 100644
index 0000000..f878359
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_7 {
+    
+    public void run(double[] a, long[] arr, int idx, long value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_8.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_8.j
new file mode 100644
index 0000000..abde74c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_8.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lastore_8.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run([I[JIJ)V
+    .limit stack 4
+    .limit locals 6
+
+    aload_1
+    iload_3
+    lload 4
+    lastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_8.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_8.java
new file mode 100644
index 0000000..21de247
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_8 {
+    
+    public void run(int[] a, long[] arr, int idx, long value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_9.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_9.j
new file mode 100644
index 0000000..dd05a54
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_9.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lastore_9.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([JIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    aload_0
+    lload_3
+    lastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_9.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_9.java
new file mode 100644
index 0000000..2cc91fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_9 {
+    
+    public void run(long[] arr, int idx, long value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/Test_lcmp.java b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/Test_lcmp.java
new file mode 100644
index 0000000..7a5e66a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/Test_lcmp.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lcmp;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lcmp.jm.T_lcmp_1;
+
+public class Test_lcmp extends DxTestCase {
+
+    /**
+     * @title  Arguments = 111234567891l > 111234567890l
+     */
+    public void testN1() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(1, t.run(111234567891l, 111234567890l));
+    }
+
+    /**
+     * @title  Arguments = 112234567890 == 112234567890
+     */
+    public void testN2() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(0, t.run(112234567890l, 112234567890l));
+    }
+
+    /**
+     * @title  Arguments = 112234567890 < 998876543210
+     */
+    public void testN3() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(-1, t.run(112234567890l, 998876543210l));
+    }
+
+    /**
+     * @title  Arguments = Long.MAX_VALUE > Long.MIN_VALUE
+     */
+    public void testB1() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(1, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Long.MIN_VALUE < Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(-1, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = 1 > 0
+     */
+    public void testB3() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(1, t.run(1l, 0l));
+    }
+
+    /**
+     * @title  Arguments = 0 > -1
+     */
+    public void testB4() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(1, t.run(0l, -1l));
+    }
+
+    /**
+     * @title  Arguments = -1 < 0
+     */
+    public void testB5() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(-1, t.run(-1l, 0l));
+    }
+
+    /**
+     * @title  Arguments = 0 = 0
+     */
+    public void testB6() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(0, t.run(0l, 0l));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lcmp.jm.T_lcmp_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lcmp.jm.T_lcmp_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lcmp.jm.T_lcmp_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lcmp.jm.T_lcmp_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lcmp.jm.T_lcmp_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_1.j
new file mode 100644
index 0000000..a37867b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_1.j
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lcmp_1.java
+.class public dxc/junit/opcodes/lcmp/jm/T_lcmp_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run(JJ)I
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    
+    lcmp
+    ifle Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    
+    lload_1
+    lload_3
+    
+    lcmp
+    ifne Label1
+    iconst_0
+    ireturn
+
+    Label1:
+
+    iconst_m1
+
+    Label3:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_1.java
new file mode 100644
index 0000000..648eef6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lcmp.jm;
+
+public class T_lcmp_1 {
+
+    public int run(long a, long b) {
+        if (a > b)   return 1;
+        if (a == b)  return 0;
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_2.j
new file mode 100644
index 0000000..30e358f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_2.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lcmp_2.java
+.class public dxc/junit/opcodes/lcmp/jm/T_lcmp_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run(JJ)I
+    .limit stack 4
+    .limit locals 5
+
+;    lload_1
+    lload_3
+    lcmp
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_2.java
new file mode 100644
index 0000000..9443337
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lcmp.jm;
+
+public class T_lcmp_2 {
+
+    public int run(long a, long b) {
+        if (a > b)   return 1;
+        if (a == b)  return 0;
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_3.j
new file mode 100644
index 0000000..16498e2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lcmp_3.java
+.class public dxc/junit/opcodes/lcmp/jm/T_lcmp_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JD)Z
+    .limit stack 4
+    .limit locals 5
+    
+    lload_1
+    dload_3
+;    d2l
+    lcmp
+
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_3.java
new file mode 100644
index 0000000..6c560b8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lcmp.jm;
+
+public class T_lcmp_3 {
+
+    public boolean run(long a, double b) {
+        return  a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_4.j
new file mode 100644
index 0000000..01d5862
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lcmp_4.java
+.class public dxc/junit/opcodes/lcmp/jm/T_lcmp_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FJ)Z
+    .limit stack 3
+    .limit locals 4
+    
+    fload_1
+;    f2l    
+    lload_2
+    lcmp
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_4.java
new file mode 100644
index 0000000..610f55c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lcmp.jm;
+
+public class T_lcmp_4 {
+
+    public boolean run(float a, long b) {
+        return  a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_5.j
new file mode 100644
index 0000000..e726534
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lcmp_5.java
+.class public dxc/junit/opcodes/lcmp/jm/T_lcmp_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(IJ)Z
+    .limit stack 4
+    .limit locals 4
+
+    iload_1
+;    i2l
+    lload_2
+    lcmp
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_5.java
new file mode 100644
index 0000000..3e6e5a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lcmp.jm;
+
+public class T_lcmp_5 {
+
+    public boolean run(int a, long b) {
+        return  a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_6.j
new file mode 100644
index 0000000..115621e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_6.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lcmp_6.java
+.class public dxc/junit/opcodes/lcmp/jm/T_lcmp_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(IJ)Z
+    .limit stack 4
+    .limit locals 4
+
+    aload_0
+    lload_2
+    lcmp
+    ifle Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_6.java
new file mode 100644
index 0000000..bd3b599
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lcmp.jm;
+
+public class T_lcmp_6 {
+
+    public boolean run(int a, long b) {
+        return  a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/Test_lconst_0.java b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/Test_lconst_0.java
new file mode 100644
index 0000000..7da9440
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/Test_lconst_0.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lconst_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lconst_0.jm.T_lconst_0_1;
+
+public class Test_lconst_0 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_lconst_0_1 t = new T_lconst_0_1();
+        long a = 20l;
+        long b = 20l;
+        assertEquals(a - b, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lconst_0.jm.T_lconst_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_1.j
new file mode 100644
index 0000000..615936c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lconst_0_1.java
+.class public dxc/junit/opcodes/lconst_0/jm/T_lconst_0_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+
+    lconst_0
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_1.java
new file mode 100644
index 0000000..6d20fef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lconst_0.jm;
+
+public class T_lconst_0_1 {
+
+    public long run() {
+        return 0l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_2.j
new file mode 100644
index 0000000..2290ece
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lconst_0_2.java
+.class public dxc/junit/opcodes/lconst_0/jm/T_lconst_0_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+
+    lconst_0
+    lconst_0
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_2.java
new file mode 100644
index 0000000..251f700
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lconst_0.jm;
+
+public class T_lconst_0_2 {
+
+    public long run() {
+        return 0l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/Test_lconst_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/Test_lconst_1.java
new file mode 100644
index 0000000..f486fe8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/Test_lconst_1.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lconst_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lconst_1.jm.T_lconst_1_1;
+
+public class Test_lconst_1 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_lconst_1_1 t = new T_lconst_1_1();
+        long a = 20l;
+        long b = 19l;
+        assertEquals(a - b, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lconst_1.jm.T_lconst_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_1.j
new file mode 100644
index 0000000..3a476e7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_1.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lconst_1_1.java
+.class public dxc/junit/opcodes/lconst_1/jm/T_lconst_1_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+    
+    lconst_1
+    lreturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_1.java
new file mode 100644
index 0000000..f6d01f2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lconst_1.jm;
+
+public class T_lconst_1_1 {
+
+    public long run() {
+        return 1l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_2.j
new file mode 100644
index 0000000..2be8208
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lconst_1_2.java
+.class public dxc/junit/opcodes/lconst_1/jm/T_lconst_1_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+
+    lconst_1
+    lconst_1
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_2.java
new file mode 100644
index 0000000..62d1019
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lconst_1.jm;
+
+public class T_lconst_1_2 {
+
+    public long run() {
+        return 1l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/Test_ldc.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc/Test_ldc.java
new file mode 100644
index 0000000..d83462b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/Test_ldc.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldc;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ldc.jm.T_ldc_1;
+import dxc.junit.opcodes.ldc.jm.T_ldc_2;
+import dxc.junit.opcodes.ldc.jm.T_ldc_3;
+
+public class Test_ldc extends DxTestCase {
+
+    /**
+     * @title push string into stack
+     */
+    public void testN1() {
+        T_ldc_1 t = new T_ldc_1();
+        // lcd is hard to test isolated
+        String res = t.run();
+        assertEquals(5, res.length());
+        assertEquals('h', res.charAt(0));
+    }
+
+    /**
+     * @title push float into stack
+     */
+    public void testN2() {
+        T_ldc_2 t = new T_ldc_2();
+        float a = 1.5f;
+        float b = 0.04f;
+        assertEquals(a + b, t.run(), 0f);
+        assertEquals(1.54f, t.run(), 0f);
+    }
+
+    /**
+     * @title push int into stack
+     */
+    public void testN3() {
+        T_ldc_3 t = new T_ldc_3();
+        int a = 1000000000;
+        int b = 1000000000;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.10
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldc.jm.T_ldc_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.10
+     * @title wrong constant pool entry type (long)
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldc.jm.T_ldc_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_1.j
new file mode 100644
index 0000000..1b9571e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldc_1.java
+.class public dxc/junit/opcodes/ldc/jm/T_ldc_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Ljava/lang/String;
+    ldc "hello"
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_1.java
new file mode 100644
index 0000000..1c1d9ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldc.jm;
+
+public class T_ldc_1 {
+
+    public String run() {
+        return "hello";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_2.j
new file mode 100644
index 0000000..65f5222
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_2.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldc_2.java
+.class public dxc/junit/opcodes/ldc/jm/T_ldc_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    ldc 1.54
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_2.java
new file mode 100644
index 0000000..771174a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldc.jm;
+
+public class T_ldc_2 {
+
+    public float run() {
+        return 1.54f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_3.j
new file mode 100644
index 0000000..08731e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_3.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldc_3.java
+.class public dxc/junit/opcodes/ldc/jm/T_ldc_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    ldc 2000000000
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_3.java
new file mode 100644
index 0000000..5dbec3f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldc.jm;
+
+public class T_ldc_3 {
+
+    public int run() {
+        return 2000000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.cfh
new file mode 100644
index 0000000..ea05bc1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/opcodes/ldc/jm/T_ldc_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000f
+// .  .  
+   00 0f 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 5, h: 0004: int{0x00003039 / 12345}
+    // .  .  .  0  9  
+       03 00 00 30 39 
+    // parsed:, offset 52, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 61, len 6, h: 0006: utf8{"()I"}
+    // .  .  .  (  )  I  
+       01 00 03 28 29 49 
+    // parsed:, offset 67, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 73, len 3, h: 0008: type{dxc.junit.opcodes.ldc.jm.T_ldc_4}
+    // .  .  .  
+       07 00 0d 
+    // parsed:, offset 76, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 81, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 88, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 94, len 15, h: 000c: utf8{"T_ldc_4.java"}
+    // .  .  .  T  _  l  d  c  _  4  .  j  a  v  a  
+       01 00 0c 54 5f 6c 64 63 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 109, len 35, h: 000d: utf8{"dxc/junit/opcodes/ldc/jm/T_ldc_4"}
+    // .  .     d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  d  c  /  j  m  /  T  _  l  d  c  _  4  
+       01 00 20 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 64 63 2f 6a 6d 2f 54 5f 6c 64 63 5f 34 
+    // parsed:, offset 144, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 147, len 0, h: end constant_pool
+// parsed:, offset 147, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 149, len 2, h: this_class: type{dxc.junit.opcodes.ldc.jm.T_ldc_4}
+// .  .  
+   00 08 
+// parsed:, offset 151, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 153, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 155, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 157, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 159, len:70,desc: ()V
+// parsed:, offset 159, len 0, h:  methods[0]: 
+    // parsed:, offset 159, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 161, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 163, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 165, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 167, len 0, h:  attributes[0]: 
+        // parsed:, offset 167, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 169, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 173, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 175, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 177, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 186, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 188, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 190, len 0, h: end attributes[0] 
+// parsed:, offset 190, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 190, len:39,desc: ()I
+// parsed:, offset 190, len 0, h:  methods[1]: 
+    // parsed:, offset 190, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 192, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 194, len 2, h: descriptor: ()I
+    // .  .  
+       00 06 
+    // parsed:, offset 196, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 198, len 0, h:  attributes[0]: 
+        // parsed:, offset 198, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 200, len 4, h: length: 0000000f
+        // .  .  .  .  
+           00 00 00 0f 
+        // parsed:, offset 204, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 206, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 208, len 4, h: code_length: 00000003
+        // .  .  .  .  
+           00 00 00 03 
+        // parsed:, offset 0, len 2, h: 0000: ldc #+00003039
+        // .  .  
+//@mod           12 04 
+           12 14 
+        // parsed:, offset 2, len 1, h: 0002: ireturn
+        // .  
+           ac 
+        // parsed:, offset 215, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 217, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 219, len 0, h: end attributes[0] 
+// parsed:, offset 219, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()I
+// parsed:, offset 219, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 221, len 0, h:  attributes[0]: 
+    // parsed:, offset 221, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 223, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 227, len 2, h: source: utf8{"T_ldc_4.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 229, len 0, h: end attributes[0] 
+// parsed:, offset 229, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.j
new file mode 100644
index 0000000..9d121ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldc_4.java
+.class public dxc/junit/opcodes/ldc/jm/T_ldc_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 2
+
+    ldc 12345
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.java
new file mode 100644
index 0000000..e66c022
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldc.jm;
+
+public class T_ldc_4 {
+
+    public int run() {
+        return 12345;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.cfh
new file mode 100644
index 0000000..a56ea0a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ldc/jm/T_ldc_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0011
+// .  .  
+   00 11 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 0a 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 15, h: 0003: utf8{"T_ldc_5.java"}
+    // .  .  .  T  _  l  d  c  _  5  .  j  a  v  a  
+       01 00 0c 54 5f 6c 64 63 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 49, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 62, len 5, h: 0005: int{0x00003039 / 12345}
+    // .  .  .  0  9  
+       03 00 00 30 39 
+    // parsed:, offset 67, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 76, len 6, h: 0007: utf8{"()I"}
+    // .  .  .  (  )  I  
+       01 00 03 28 29 49 
+    // parsed:, offset 82, len 3, h: 0008: type{dxc.junit.opcodes.ldc.jm.T_ldc_5}
+    // .  .  .  
+       07 00 0d 
+    // parsed:, offset 85, len 6, h: 0009: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 91, len 5, h: 000a: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0c 
+    // parsed:, offset 96, len 7, h: 000b: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 103, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 109, len 35, h: 000d: utf8{"dxc/junit/opcodes/ldc/jm/T_ldc_5"}
+    // .  .     d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  d  c  /  j  m  /  T  _  l  d  c  _  5  
+       01 00 20 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 64 63 2f 6a 6d 2f 54 5f 6c 64 63 5f 35 
+    // parsed:, offset 144, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 147, len 9, h: 000f: long{0x0000000000003039 / 12345}
+    // .  .  .  .  .  .  .  0  9  
+       05 00 00 00 00 00 00 30 39 
+// parsed:, offset 156, len 0, h: end constant_pool
+// parsed:, offset 156, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 158, len 2, h: this_class: type{dxc.junit.opcodes.ldc.jm.T_ldc_5}
+// .  .  
+   00 08 
+// parsed:, offset 160, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 162, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 164, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 166, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 168, len:74,desc: ()V
+// parsed:, offset 168, len 0, h:  methods[0]: 
+    // parsed:, offset 168, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 170, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 172, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 174, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 0, h:  attributes[0]: 
+        // parsed:, offset 176, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 178, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 182, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 184, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 186, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 195, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 197, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 199, len 0, h: end attributes[0] 
+// parsed:, offset 199, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 199, len:43,desc: ()I
+// parsed:, offset 199, len 0, h:  methods[1]: 
+    // parsed:, offset 199, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 201, len 2, h: name: run
+    // .  .  
+       00 09 
+    // parsed:, offset 203, len 2, h: descriptor: ()I
+    // .  .  
+       00 07 
+    // parsed:, offset 205, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 0, h:  attributes[0]: 
+        // parsed:, offset 207, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 209, len 4, h: length: 00000013
+        // .  .  .  .  
+           00 00 00 13 
+        // parsed:, offset 213, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 215, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 217, len 4, h: code_length: 00000007
+        // .  .  .  .  
+           00 00 00 07 
+        // parsed:, offset 0, len 3, h: 0000: ldc2_w #+0000000000003039
+        // .  .  .  
+           14 00 0f 
+        // parsed:, offset 3, len 1, h: 0003: pop2
+        // X  
+           58 
+        // parsed:, offset 4, len 2, h: 0004: ldc #+00003039
+        // .  .  
+//@mod           12 05 
+           12 0f 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 228, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 230, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 232, len 0, h: end attributes[0] 
+// parsed:, offset 232, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()I
+// parsed:, offset 232, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 234, len 0, h:  attributes[0]: 
+    // parsed:, offset 234, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 236, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 240, len 2, h: source: utf8{"T_ldc_5.java"}
+    // .  .  
+       00 03 
+// parsed:, offset 242, len 0, h: end attributes[0] 
+// parsed:, offset 242, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.j
new file mode 100644
index 0000000..5640bdfc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldc_5.java
+.class public dxc/junit/opcodes/ldc/jm/T_ldc_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 2
+
+    ldc2_w 12345
+    pop2
+    ldc 12345
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.java
new file mode 100644
index 0000000..8507910
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldc.jm;
+
+public class T_ldc_5 {
+
+    public int run() {
+        return 12345;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/Test_ldc2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/Test_ldc2_w.java
new file mode 100644
index 0000000..0ad5ca8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/Test_ldc2_w.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldc2_w;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ldc2_w.jm.T_ldc2_w_1;
+import dxc.junit.opcodes.ldc2_w.jm.T_ldc2_w_2;
+
+public class Test_ldc2_w extends DxTestCase {
+
+    /**
+     * @title push long into stack
+     */
+    public void testN1() {
+        T_ldc2_w_1 t = new T_ldc2_w_1();
+        long a = 1234567890122l;
+        long b = 1l;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @title push double into stack
+     */
+    public void testN2() {
+        T_ldc2_w_2 t = new T_ldc2_w_2();
+        double a = 1234567890123232323232232323232323232323232323456788d;
+        double b = 1d;
+        assertEquals(a + b, t.run(), 0d);
+    }
+
+    /**
+     * @constraint 4.8.1.10
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldc2_w.jm.T_ldc2_w_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.10
+     * @title wrong constant pool entry type (float)
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldc2_w.jm.T_ldc2_w_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_1.j
new file mode 100644
index 0000000..35ca464
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_1.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldc2_w_1.java
+.class public dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+    ldc2_w 1234567890123
+    lreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_1.java
new file mode 100644
index 0000000..101a0ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldc2_w.jm;
+
+public class T_ldc2_w_1 {
+
+    public long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_2.j
new file mode 100644
index 0000000..cbca295
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_2.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldc2_w_2.java
+.class public dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()D
+    .limit stack 2
+    .limit locals 1
+    ldc2_w 1.2345678901232324E51
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_2.java
new file mode 100644
index 0000000..bdc6ed9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldc2_w.jm;
+
+public class T_ldc2_w_2 {
+
+    public double run() {
+        return 1234567890123232323232232323232323232323232323456789d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.cfh
new file mode 100644
index 0000000..cf6919f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0010
+// .  .  
+   00 10 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0c 
+    // parsed:, offset 67, len 6, h: 0007: utf8{"()D"}
+    // .  .  .  (  )  D  
+       01 00 03 28 29 44 
+    // parsed:, offset 73, len 3, h: 0008: type{dxc.junit.opcodes.ldc2_w.jm.T_ldc2_w_4}
+    // .  .  .  
+       07 00 0f 
+    // parsed:, offset 76, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 83, len 9, h: 000a: double{0x40091eb860000000 / 3.140000104904175}
+    // .  @  .  .  .  `  .  .  .  
+       06 40 09 1e b8 60 00 00 00 
+    // parsed:, offset 92, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 98, len 18, h: 000d: utf8{"T_ldc2_w_4.java"}
+    // .  .  .  T  _  l  d  c  2  _  w  _  4  .  j  a  v  a  
+       01 00 0f 54 5f 6c 64 63 32 5f 77 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 116, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 119, len 41, h: 000f: utf8{"dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4"}
+    // .  .  &  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  d  c  2  _  w  /  j  m  /  T  _  l  d  c  2  _  w  _  4  
+       01 00 26 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 64 63 32 5f 77 2f 6a 6d 2f 54 5f 6c 64 63 32 5f 77 5f 34 
+// parsed:, offset 160, len 0, h: end constant_pool
+// parsed:, offset 160, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 162, len 2, h: this_class: type{dxc.junit.opcodes.ldc2_w.jm.T_ldc2_w_4}
+// .  .  
+   00 08 
+// parsed:, offset 164, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 166, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 168, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 172, len:71,desc: ()V
+// parsed:, offset 172, len 0, h:  methods[0]: 
+    // parsed:, offset 172, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 174, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 176, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 178, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 180, len 0, h:  attributes[0]: 
+        // parsed:, offset 180, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 182, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 186, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 188, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 199, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 201, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 203, len 0, h: end attributes[0] 
+// parsed:, offset 203, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 203, len:40,desc: ()D
+// parsed:, offset 203, len 0, h:  methods[1]: 
+    // parsed:, offset 203, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 205, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 207, len 2, h: descriptor: ()D
+    // .  .  
+       00 07 
+    // parsed:, offset 209, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 211, len 0, h:  attributes[0]: 
+        // parsed:, offset 211, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 213, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 217, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 219, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 221, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 3, h: 0000: ldc2_w #40091eb860000000 // 3.140000104904175
+        // .  .  .  
+//@mod           14 00 0a 
+           14 01 0a 
+        // parsed:, offset 3, len 1, h: 0003: dreturn
+        // .  
+           af 
+        // parsed:, offset 229, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 231, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 233, len 0, h: end attributes[0] 
+// parsed:, offset 233, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()D
+// parsed:, offset 233, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 235, len 0, h:  attributes[0]: 
+    // parsed:, offset 235, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 237, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 241, len 2, h: source: utf8{"T_ldc2_w_4.java"}
+    // .  .  
+       00 0d 
+// parsed:, offset 243, len 0, h: end attributes[0] 
+// parsed:, offset 243, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.j
new file mode 100644
index 0000000..c3dc2d5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldc2_w_4.java
+.class public dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()D
+    .limit stack 2
+
+    ldc2_w 3.14
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.java
new file mode 100644
index 0000000..f6d7d17
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldc2_w.jm;
+
+public class T_ldc2_w_4 {
+
+    public double run() {
+        return 3.14d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.cfh
new file mode 100644
index 0000000..0a5eb37
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0011
+// .  .  
+   00 11 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 10 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 18, h: 0004: utf8{"T_ldc2_w_5.java"}
+    // .  .  .  T  _  l  d  c  2  _  w  _  5  .  j  a  v  a  
+       01 00 0f 54 5f 6c 64 63 32 5f 77 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 65, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 74, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 80, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0d 
+    // parsed:, offset 85, len 3, h: 0008: type{dxc.junit.opcodes.ldc2_w.jm.T_ldc2_w_5}
+    // .  .  .  
+       07 00 0f 
+    // parsed:, offset 88, len 6, h: 0009: utf8{"()D"}
+    // .  .  .  (  )  D  
+       01 00 03 28 29 44 
+    // parsed:, offset 94, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 101, len 9, h: 000b: double{0x40091eb860000000 / 3.140000104904175}
+    // .  @  .  .  .  `  .  .  .  
+       06 40 09 1e b8 60 00 00 00 
+    // parsed:, offset 110, len 6, h: 000d: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 116, len 5, h: 000e: float{0x4048f5c3 / 3.14}
+    // .  @  H  .  .  
+       04 40 48 f5 c3 
+    // parsed:, offset 121, len 41, h: 000f: utf8{"dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5"}
+    // .  .  &  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  d  c  2  _  w  /  j  m  /  T  _  l  d  c  2  _  w  _  5  
+       01 00 26 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 64 63 32 5f 77 2f 6a 6d 2f 54 5f 6c 64 63 32 5f 77 5f 35 
+    // parsed:, offset 162, len 3, h: 0010: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 165, len 0, h: end constant_pool
+// parsed:, offset 165, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 167, len 2, h: this_class: type{dxc.junit.opcodes.ldc2_w.jm.T_ldc2_w_5}
+// .  .  
+   00 08 
+// parsed:, offset 169, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 10 
+// parsed:, offset 171, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 173, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 175, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 177, len:74,desc: ()V
+// parsed:, offset 177, len 0, h:  methods[0]: 
+    // parsed:, offset 177, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 179, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 181, len 2, h: descriptor: ()V
+    // .  .  
+       00 0d 
+    // parsed:, offset 183, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 185, len 0, h:  attributes[0]: 
+        // parsed:, offset 185, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 187, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 191, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 193, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 195, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 204, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 206, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 208, len 0, h: end attributes[0] 
+// parsed:, offset 208, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 208, len:43,desc: ()D
+// parsed:, offset 208, len 0, h:  methods[1]: 
+    // parsed:, offset 208, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 212, len 2, h: descriptor: ()D
+    // .  .  
+       00 09 
+    // parsed:, offset 214, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 0, h:  attributes[0]: 
+        // parsed:, offset 216, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 218, len 4, h: length: 00000013
+        // .  .  .  .  
+           00 00 00 13 
+        // parsed:, offset 222, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 224, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 4, h: code_length: 00000007
+        // .  .  .  .  
+           00 00 00 07 
+        // parsed:, offset 0, len 2, h: 0000: ldc #4048f5c3 // 3.14
+        // .  .  
+           12 0e 
+        // parsed:, offset 2, len 1, h: 0002: pop
+        // W  
+           57 
+        // parsed:, offset 3, len 3, h: 0003: ldc2_w #40091eb860000000 // 3.140000104904175
+        // .  .  .  
+//@mod           14 00 0b 
+           14 00 0e 
+        // parsed:, offset 6, len 1, h: 0006: dreturn
+        // .  
+           af 
+        // parsed:, offset 237, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 239, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 241, len 0, h: end attributes[0] 
+// parsed:, offset 241, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()D
+// parsed:, offset 241, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 243, len 0, h:  attributes[0]: 
+    // parsed:, offset 243, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 245, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 249, len 2, h: source: utf8{"T_ldc2_w_5.java"}
+    // .  .  
+       00 04 
+// parsed:, offset 251, len 0, h: end attributes[0] 
+// parsed:, offset 251, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.j
new file mode 100644
index 0000000..4001c60
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldc2_w_5.java
+.class public dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()D
+    .limit stack 2
+
+    ldc 3.14
+    pop
+
+    ldc2_w 3.14
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.java
new file mode 100644
index 0000000..3c49374
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldc2_w.jm;
+
+public class T_ldc2_w_5 {
+
+    public double run() {
+        return 3.14d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/Test_ldc_w.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/Test_ldc_w.java
new file mode 100644
index 0000000..2be1dac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/Test_ldc_w.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldc_w;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ldc_w.jm.T_ldc_w_1;
+import dxc.junit.opcodes.ldc_w.jm.T_ldc_w_2;
+
+public class Test_ldc_w extends DxTestCase {
+
+    /**
+     * @title push float into stack
+     */
+    public void testN1() {
+        T_ldc_w_1 t = new T_ldc_w_1();
+        float a = 1.5f;
+        float b = 0.04f;
+        assertEquals(a + b, t.run(), 0f);
+        assertEquals(1.54f, t.run(), 0f);
+    }
+
+    /**
+     * @title push int into stack
+     */
+    public void testN2() {
+        T_ldc_w_2 t = new T_ldc_w_2();
+        int a = 1000000000;
+        int b = 1000000000;
+        assertEquals(a + b, t.run());
+    }
+
+
+    /**
+     * @constraint 4.8.1.10
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldc_w.jm.T_ldc_w_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.10
+     * @title wrong constant pool entry type
+     * (double)
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldc_w.jm.T_ldc_w_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_1.j
new file mode 100644
index 0000000..532bb69
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_1.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldc_w_1.java
+.class public dxc/junit/opcodes/ldc_w/jm/T_ldc_w_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()F
+    ldc_w 1.54
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_1.java
new file mode 100644
index 0000000..d877227
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldc_w.jm;
+
+public class T_ldc_w_1 {
+    
+    public float run(){
+        return 1.54f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_2.j
new file mode 100644
index 0000000..b3f0bc3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_2.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldc_w_2.java
+.class public dxc/junit/opcodes/ldc_w/jm/T_ldc_w_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    ldc_w 2000000000
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_2.java
new file mode 100644
index 0000000..451fa71
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldc_w.jm;
+
+public class T_ldc_w_2 {
+
+    public int run() {
+        return 2000000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.cfh
new file mode 100644
index 0000000..343bc75
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000f
+// .  .  
+   00 0f 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 17, h: 0001: utf8{"T_ldc_w_4.java"}
+    // .  .  .  T  _  l  d  c  _  w  _  4  .  j  a  v  a  
+       01 00 0e 54 5f 6c 64 63 5f 77 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 27, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 08 
+    // parsed:, offset 32, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 51, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 64, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 73, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 79, len 6, h: 0007: utf8{"()F"}
+    // .  .  .  (  )  F  
+       01 00 03 28 29 46 
+    // parsed:, offset 85, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0a 
+    // parsed:, offset 90, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 97, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 103, len 5, h: 000b: float{0x4048f5c3 / 3.14}
+    // .  @  H  .  .  
+       04 40 48 f5 c3 
+    // parsed:, offset 108, len 39, h: 000c: utf8{"dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4"}
+    // .  .  $  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  d  c  _  w  /  j  m  /  T  _  l  d  c  _  w  _  4  
+       01 00 24 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 64 63 5f 77 2f 6a 6d 2f 54 5f 6c 64 63 5f 77 5f 34 
+    // parsed:, offset 147, len 3, h: 000d: type{dxc.junit.opcodes.ldc_w.jm.T_ldc_w_4}
+    // .  .  .  
+       07 00 0c 
+    // parsed:, offset 150, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 153, len 0, h: end constant_pool
+// parsed:, offset 153, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 155, len 2, h: this_class: type{dxc.junit.opcodes.ldc_w.jm.T_ldc_w_4}
+// .  .  
+   00 0d 
+// parsed:, offset 157, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 159, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 161, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 163, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 165, len:71,desc: ()V
+// parsed:, offset 165, len 0, h:  methods[0]: 
+    // parsed:, offset 165, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 167, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 169, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 171, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 173, len 0, h:  attributes[0]: 
+        // parsed:, offset 173, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 175, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 179, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 181, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 183, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 192, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 194, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 196, len 0, h: end attributes[0] 
+// parsed:, offset 196, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 196, len:40,desc: ()F
+// parsed:, offset 196, len 0, h:  methods[1]: 
+    // parsed:, offset 196, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 198, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 200, len 2, h: descriptor: ()F
+    // .  .  
+       00 07 
+    // parsed:, offset 202, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 204, len 0, h:  attributes[0]: 
+        // parsed:, offset 204, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 206, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 210, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 212, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 214, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 3, h: 0000: ldc_w #4048f5c3 // 3.14
+        // .  .  .  
+//@mod           13 00 0b 
+           13 01 0b 
+        // parsed:, offset 3, len 1, h: 0003: freturn
+        // .  
+           ae 
+        // parsed:, offset 222, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 224, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 226, len 0, h: end attributes[0] 
+// parsed:, offset 226, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()F
+// parsed:, offset 226, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 228, len 0, h:  attributes[0]: 
+    // parsed:, offset 228, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 230, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 234, len 2, h: source: utf8{"T_ldc_w_4.java"}
+    // .  .  
+       00 01 
+// parsed:, offset 236, len 0, h: end attributes[0] 
+// parsed:, offset 236, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.j
new file mode 100644
index 0000000..f978b5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldc_w_4.java
+.class public dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()F
+    ldc_w 3.14f
+    freturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.java
new file mode 100644
index 0000000..75eef74
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldc_w.jm;
+
+public class T_ldc_w_4 {
+
+    public float run(String a){
+        return 3.14f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.cfh
new file mode 100644
index 0000000..ecfe634
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0011
+// .  .  
+   00 11 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 10 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 17, h: 0006: utf8{"T_ldc_w_5.java"}
+    // .  .  .  T  _  l  d  c  _  w  _  5  .  j  a  v  a  
+       01 00 0e 54 5f 6c 64 63 5f 77 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 79, len 6, h: 0007: utf8{"()F"}
+    // .  .  .  (  )  F  
+       01 00 03 28 29 46 
+    // parsed:, offset 85, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0c 
+    // parsed:, offset 90, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 97, len 9, h: 000a: double{0x40091eb860000000 / 3.140000104904175}
+    // .  @  .  .  .  `  .  .  .  
+       06 40 09 1e b8 60 00 00 00 
+    // parsed:, offset 106, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 112, len 5, h: 000d: float{0x4048f5c3 / 3.14}
+    // .  @  H  .  .  
+       04 40 48 f5 c3 
+    // parsed:, offset 117, len 39, h: 000e: utf8{"dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5"}
+    // .  .  $  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  d  c  _  w  /  j  m  /  T  _  l  d  c  _  w  _  5  
+       01 00 24 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 64 63 5f 77 2f 6a 6d 2f 54 5f 6c 64 63 5f 77 5f 35 
+    // parsed:, offset 156, len 3, h: 000f: type{dxc.junit.opcodes.ldc_w.jm.T_ldc_w_5}
+    // .  .  .  
+       07 00 0e 
+    // parsed:, offset 159, len 3, h: 0010: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.ldc_w.jm.T_ldc_w_5}
+// .  .  
+   00 0f 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 10 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:75,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:44,desc: ()F
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 209, len 2, h: descriptor: ()F
+    // .  .  
+       00 07 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 215, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 223, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 3, h: 0000: ldc2_w #40091eb860000000 // 3.140000104904175
+        // .  .  .  
+           14 00 0a 
+        // parsed:, offset 3, len 1, h: 0003: pop2
+        // X  
+           58 
+        // parsed:, offset 4, len 3, h: 0004: ldc_w #4048f5c3 // 3.14
+        // .  .  .  
+//@mod           13 00 0d 
+           13 00 0a 
+        // parsed:, offset 7, len 1, h: 0007: freturn
+        // .  
+           ae 
+        // parsed:, offset 235, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 237, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 239, len 0, h: end attributes[0] 
+// parsed:, offset 239, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()F
+// parsed:, offset 239, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 241, len 0, h:  attributes[0]: 
+    // parsed:, offset 241, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 243, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 247, len 2, h: source: utf8{"T_ldc_w_5.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 249, len 0, h: end attributes[0] 
+// parsed:, offset 249, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.j
new file mode 100644
index 0000000..b6be6e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldc_w_5.java
+.class public dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()F
+    .limit stack 2
+    ldc2_w 3.14
+    pop2
+    ldc_w 3.14f
+    freturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.java
new file mode 100644
index 0000000..da51419
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldc_w.jm;
+
+public class T_ldc_w_5 {
+
+    public float run(String a){
+        return 3.14f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/Test_ldiv.java b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/Test_ldiv.java
new file mode 100644
index 0000000..213d28b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/Test_ldiv.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldiv;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ldiv.jm.T_ldiv_1;
+
+public class Test_ldiv extends DxTestCase {
+
+    /**
+     * @title Arguments = 100000000000l, 40000000000l
+     */
+    public void testN1() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(2l, t.run(100000000000l, 40000000000l));
+    }
+
+    /**
+     * @title  Rounding
+     */
+    public void testN2() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(8l, t.run(98765432123456l, 12345678912345l));
+    }
+
+    /**
+     * @title  Dividend = 0
+     */
+    public void testN3() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(0l, t.run(0l, 98765432123456l));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN4() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(-8, t.run(-98765432123456l, 12345678912345l));
+    }
+
+    /**
+     * @title  Divisor is negative
+     */
+    public void testN5() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(-8, t.run(98765432123456l, -12345678912345l));
+    }
+
+    /**
+     * @title  Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(80l, t.run(-98765432123456l, -1234567891234l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, -1));
+    }
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, 1));
+    }
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(9223372036854775807L, t.run(Long.MAX_VALUE, 1));
+    }
+    /**
+     * @title Arguments = Long.MIN_VALUE, Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(-1, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+    /**
+     * @title Arguments = 1, Long.MAX_VALUE
+     */
+    public void testB5() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(0, t.run(1, Long.MAX_VALUE));
+    }
+    /**
+     * @title Arguments = 1, Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(0, t.run(1, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title  Divisor is 0
+     */
+    public void testE1() {
+        T_ldiv_1 t = new T_ldiv_1();
+        try {
+            t.run(12345678912345l, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldiv.jm.T_ldiv_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldiv.jm.T_ldiv_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldiv.jm.T_ldiv_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int / long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldiv.jm.T_ldiv_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float / long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldiv.jm.T_ldiv_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference / long
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldiv.jm.T_ldiv_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_1.j
new file mode 100644
index 0000000..49f0bda
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldiv_1.java
+.class public dxc/junit/opcodes/ldiv/jm/T_ldiv_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    ldiv
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_1.java
new file mode 100644
index 0000000..b33a03d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldiv.jm;
+
+
+public class T_ldiv_1 {
+
+    public long run(long a, long b) {
+        return a/b;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_2.j
new file mode 100644
index 0000000..d1a1bec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldiv_2.java
+.class public dxc/junit/opcodes/ldiv/jm/T_ldiv_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+;    lload_1
+    lload_3
+    ldiv
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_2.java
new file mode 100644
index 0000000..0f92d94
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldiv.jm;
+
+public class T_ldiv_2 {
+
+    public long run(long a, long b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_3.j
new file mode 100644
index 0000000..04592e2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldiv_3.java
+.class public dxc/junit/opcodes/ldiv/jm/T_ldiv_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+;    lload_3
+    ldiv
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_3.java
new file mode 100644
index 0000000..1703f8d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldiv.jm;
+
+public class T_ldiv_3 {
+
+    public long run(long a, long b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_4.j
new file mode 100644
index 0000000..1043a5c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldiv_4.java
+.class public dxc/junit/opcodes/ldiv/jm/T_ldiv_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JD)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    dload_3
+;    d2l    
+    ldiv
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_4.java
new file mode 100644
index 0000000..a9f70ba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldiv.jm;
+
+public class T_ldiv_4 {
+
+    public long run(long a, double b) {
+        return (long)(a/b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_5.j
new file mode 100644
index 0000000..5e0cd21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldiv_5.java
+.class public dxc/junit/opcodes/ldiv/jm/T_ldiv_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(IJ)J
+    .limit stack 4
+    .limit locals 4
+
+    iload_1
+;    i2l
+    lload_2
+    ldiv
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_5.java
new file mode 100644
index 0000000..d413aa6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldiv.jm;
+
+public class T_ldiv_5 {
+
+    public long run(int a, long b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_6.j
new file mode 100644
index 0000000..2bf8741
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_6.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldiv_6.java
+.class public dxc/junit/opcodes/ldiv/jm/T_ldiv_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FJ)J
+    .limit stack 3
+    .limit locals 4
+    
+    fload_1
+    lload_2
+    ldiv
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_6.java
new file mode 100644
index 0000000..bd48c33
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldiv.jm;
+
+public class T_ldiv_6 {
+
+    public long run(float a, long b) {
+        return (long)(a/b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_7.j b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_7.j
new file mode 100644
index 0000000..9bd04a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ldiv_7.java
+.class public dxc/junit/opcodes/ldiv/jm/T_ldiv_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    aload_0
+    lload_3
+    ldiv
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_7.java b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_7.java
new file mode 100644
index 0000000..f859a38
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ldiv.jm;
+
+public class T_ldiv_7 {
+    
+    public long run(long a, long b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/Test_lload.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/Test_lload.java
new file mode 100644
index 0000000..ed06cbb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/Test_lload.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lload.jm.T_lload_1;
+import dxc.junit.opcodes.lload.jm.T_lload_1_w;
+import dxc.junit.opcodes.lload.jm.T_lload_2;
+import dxc.junit.opcodes.lload.jm.T_lload_2_w;
+
+public class Test_lload extends DxTestCase {
+
+    /*
+     * NORMAL ILOAD VERSION
+     */
+
+    /**
+     * @title Test lload 1
+     */
+    public void testN1() {
+        T_lload_1 t = new T_lload_1();
+        assertEquals(1234567890123l, t.run());
+    }
+
+    /**
+     * @title  Test lload 255
+     */
+    public void testN2() {
+        T_lload_2 t = new T_lload_2();
+        assertEquals(9876543210123l, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload.jm.T_lload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload.jm.T_lload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload.jm.T_lload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload.jm.T_lload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE ILOAD VERSION
+     */
+
+    /**
+     * @title  Test lload_w 1
+     */
+    public void testN3() {
+        T_lload_1_w t = new T_lload_1_w();
+        assertEquals(1234567890123l, t.run());
+    }
+
+    /**
+     * @title  Test lload 257
+     */
+    public void testN4() {
+        T_lload_2_w t = new T_lload_2_w();
+        assertEquals(9876543210123l, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload.jm.T_lload_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload.jm.T_lload_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload.jm.T_lload_5_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload.jm.T_lload_6_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1.j
new file mode 100644
index 0000000..7acd2d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_1.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 4
+    .limit locals 4
+
+    ldc2_w 1234567890123
+    lstore 1
+    ldc2_w 3
+    lload 1
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1.java
new file mode 100644
index 0000000..564bc8e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_1 {
+
+    public long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1_w.j
new file mode 100644
index 0000000..db18231
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1_w.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_1_w.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_1_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 4
+    .limit locals 4
+
+    ldc2_w 1234567890123
+    lstore 1
+    ldc2_w 3
+    lload_w 1
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1_w.java
new file mode 100644
index 0000000..e608b1a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_1_w {
+    
+    public long run() {
+        return 1234567890123l;
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2.j
new file mode 100644
index 0000000..2034bcd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_2.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 4
+    .limit locals 300
+    
+    ldc2_w 9876543210123
+    lstore 255
+    ldc2_w 3
+    lload 255
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2.java
new file mode 100644
index 0000000..7149ed5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_2 {
+
+    public long run() {
+        return 9876543210123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2_w.j
new file mode 100644
index 0000000..6ffe007
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_2_w.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_2_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 4
+    .limit locals 300
+    
+    ldc2_w 9876543210123
+    lstore 257
+    ldc2_w 3
+    lload_w 257
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2_w.java
new file mode 100644
index 0000000..2175495
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_2_w {
+    
+    public long run() {
+        return 9876543210123l;
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3.j
new file mode 100644
index 0000000..217bb42
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_3.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 2
+
+    lload 2
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3.java
new file mode 100644
index 0000000..ba729a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_3 {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3_w.j
new file mode 100644
index 0000000..7ad273a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_3_w.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_3_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 300
+
+    lload_w 300
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3_w.java
new file mode 100644
index 0000000..2e0a76f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_3_w {
+    public void run() {
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4.j
new file mode 100644
index 0000000..2d0c1c3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_4.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 4
+    
+    dconst_1
+    dstore_1
+    
+    lload 1
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4.java
new file mode 100644
index 0000000..01231c3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_4 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4_w.j
new file mode 100644
index 0000000..0540f0c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_4_w.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_4_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 300
+
+    dconst_1
+    dstore 260
+    
+    lload_w 260
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4_w.java
new file mode 100644
index 0000000..3a7ebbe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_4_w {
+    
+    public void run() {
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5.j
new file mode 100644
index 0000000..9e1fc59
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_5.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 4
+    
+    iconst_1
+    istore_1
+    iconst_1
+    istore_2
+    
+    lload 1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5.java
new file mode 100644
index 0000000..ee11b04
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_5 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5_w.j
new file mode 100644
index 0000000..cc2476b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5_w.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_5_w.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_5_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 300
+
+    iconst_1
+    istore 257
+    iconst_1
+    istore 258
+    
+    lload_w 257
+    
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5_w.java
new file mode 100644
index 0000000..6d8f81a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_5_w {
+    public void run() {
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6.j
new file mode 100644
index 0000000..e2a6e09
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_6.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 3
+
+    lconst_1
+    lstore_1
+    
+    lload 1
+    lload 1
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6.java
new file mode 100644
index 0000000..13bfa4c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_6 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6_w.j
new file mode 100644
index 0000000..af353ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6_w.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_6_w.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_6_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 300
+
+    lconst_1
+    lstore 257
+    
+    lload_w 257
+    lload_w 257
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6_w.java
new file mode 100644
index 0000000..9f9a392
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_6_w {
+    public void run() {
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/Test_lload_0.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/Test_lload_0.java
new file mode 100644
index 0000000..907b444
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/Test_lload_0.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lload_0.jm.T_lload_0_1;
+import dxc.junit.opcodes.lload_0.jm.T_lload_0_6;
+
+public class Test_lload_0 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lload_0_1.run());
+    }
+
+    /**
+     * @title equality of lload_<n> and lload <n>
+     */
+    public void testN2() {
+        assertTrue(T_lload_0_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_0.jm.T_lload_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_0.jm.T_lload_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_0.jm.T_lload_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_0.jm.T_lload_0_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_1.j
new file mode 100644
index 0000000..880e0f8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_0_1.java
+.class public dxc/junit/opcodes/lload_0/jm/T_lload_0_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 2
+    
+    ldc2_w 1234567890123
+    lstore_0
+    ldc2_w 4
+    lload_0
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_1.java
new file mode 100644
index 0000000..f7c26cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_0.jm;
+
+public class T_lload_0_1 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_2.j
new file mode 100644
index 0000000..410c35d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_0_2.java
+.class public dxc/junit/opcodes/lload_0/jm/T_lload_0_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lload_0
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_2.java
new file mode 100644
index 0000000..965b1c9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_0.jm;
+
+public class T_lload_0_2 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_3.j
new file mode 100644
index 0000000..7fee6f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_0_3.java
+.class public dxc/junit/opcodes/lload_0/jm/T_lload_0_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_0
+    
+    lload_0
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_3.java
new file mode 100644
index 0000000..fffd4b7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_0.jm;
+
+public class T_lload_0_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_4.j
new file mode 100644
index 0000000..d946623
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_0_4.java
+.class public dxc/junit/opcodes/lload_0/jm/T_lload_0_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    iconst_1
+    istore_0
+    iconst_1
+    istore_1
+    
+    lload_0
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_4.java
new file mode 100644
index 0000000..b054db4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_0.jm;
+
+public class T_lload_0_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_5.j
new file mode 100644
index 0000000..43e0600
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_0_5.java
+.class public dxc/junit/opcodes/lload_0/jm/T_lload_0_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    lconst_1
+    lstore_0
+    
+    lload_0
+    lload_0
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_5.java
new file mode 100644
index 0000000..0c71a3e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_0.jm;
+
+public class T_lload_0_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_6.j
new file mode 100644
index 0000000..e1b7d2f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_6.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_0_6.java
+.class public dxc/junit/opcodes/lload_0/jm/T_lload_0_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 3
+
+    ldc2_w 1234567890123
+    lstore_0
+
+    lload_0
+    lload 0
+
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_6.java
new file mode 100644
index 0000000..2f225f9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_0.jm;
+
+public class T_lload_0_6 {
+
+    public static boolean run() {
+        long i = 1234567890123l;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/Test_lload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/Test_lload_1.java
new file mode 100644
index 0000000..161d6d9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/Test_lload_1.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lload_1.jm.T_lload_1_1;
+import dxc.junit.opcodes.lload_1.jm.T_lload_1_6;
+
+public class Test_lload_1 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lload_1_1.run());
+    }
+
+    /**
+     * @title equality of lload_<n> and lload <n>
+     */
+    public void testN2() {
+        assertTrue(T_lload_1_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_1.jm.T_lload_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_1.jm.T_lload_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_1.jm.T_lload_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_1.jm.T_lload_1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_1.j
new file mode 100644
index 0000000..f6f0f2e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_1_1.java
+.class public dxc/junit/opcodes/lload_1/jm/T_lload_1_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 3
+    
+    ldc2_w 1234567890123
+    lstore_1
+    ldc2_w 4
+    lload_1
+    lreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_1.java
new file mode 100644
index 0000000..e111f73
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_1.jm;
+
+public class T_lload_1_1 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_2.j
new file mode 100644
index 0000000..ea2e467
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_1_2.java
+.class public dxc/junit/opcodes/lload_1/jm/T_lload_1_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lload_1
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_2.java
new file mode 100644
index 0000000..6734f21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_1.jm;
+
+public class T_lload_1_2 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_3.j
new file mode 100644
index 0000000..9c50055
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_1_3.java
+.class public dxc/junit/opcodes/lload_1/jm/T_lload_1_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_1
+    
+    lload_1
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_3.java
new file mode 100644
index 0000000..3161c8e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_1.jm;
+
+public class T_lload_1_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_4.j
new file mode 100644
index 0000000..93ec644
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_1_4.java
+.class public dxc/junit/opcodes/lload_1/jm/T_lload_1_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    iconst_1
+    istore_1
+    iconst_1
+    istore_2
+    
+    lload_1
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_4.java
new file mode 100644
index 0000000..7bcdd19
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_1.jm;
+
+public class T_lload_1_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_5.j
new file mode 100644
index 0000000..16e89db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_1_5.java
+.class public dxc/junit/opcodes/lload_1/jm/T_lload_1_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 3
+
+    lconst_1
+    lstore_1
+    
+    lload_1
+    lload_1
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_5.java
new file mode 100644
index 0000000..8e3b949
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_1.jm;
+
+public class T_lload_1_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_6.j
new file mode 100644
index 0000000..2cdbd8a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_6.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_1_6.java
+.class public dxc/junit/opcodes/lload_1/jm/T_lload_1_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 3
+
+    ldc2_w 1234567890123
+    lstore_1
+
+    lload_1
+    lload 1
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_6.java
new file mode 100644
index 0000000..91fc928
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_1.jm;
+
+public class T_lload_1_6 {
+
+    public static boolean run() {
+        long i = 1234567890123l;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/Test_lload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/Test_lload_2.java
new file mode 100644
index 0000000..e8976b8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/Test_lload_2.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lload_2.jm.T_lload_2_1;
+import dxc.junit.opcodes.lload_2.jm.T_lload_2_6;
+
+public class Test_lload_2 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lload_2_1.run());
+    }
+
+    /**
+     * @title equality of lload_<n> and lload <n>
+     */
+    public void testN2() {
+        assertTrue(T_lload_2_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_2.jm.T_lload_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_2.jm.T_lload_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_2.jm.T_lload_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_2.jm.T_lload_2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_1.j
new file mode 100644
index 0000000..753ab6a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_2_1.java
+.class public dxc/junit/opcodes/lload_2/jm/T_lload_2_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 4
+    
+    ldc2_w 1234567890123
+    lstore_2
+    ldc2_w 4
+    lload_2
+    lreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_1.java
new file mode 100644
index 0000000..86720db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_2.jm;
+
+public class T_lload_2_1 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_2.j
new file mode 100644
index 0000000..4ce9a63
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_2_2.java
+.class public dxc/junit/opcodes/lload_2/jm/T_lload_2_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lload_2
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_2.java
new file mode 100644
index 0000000..cd54b1b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_2.jm;
+
+public class T_lload_2_2 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_3.j
new file mode 100644
index 0000000..85c8f7d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_2_3.java
+.class public dxc/junit/opcodes/lload_2/jm/T_lload_2_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_2
+    
+    lload_2
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_3.java
new file mode 100644
index 0000000..866e9a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_2.jm;
+
+public class T_lload_2_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_4.j
new file mode 100644
index 0000000..ee23e5c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_2_4.java
+.class public dxc/junit/opcodes/lload_2/jm/T_lload_2_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    iconst_2
+    istore_2
+    iconst_2
+    istore_3
+    
+    lload_2
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_4.java
new file mode 100644
index 0000000..c6305a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_2.jm;
+
+public class T_lload_2_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_5.j
new file mode 100644
index 0000000..8e0022d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_2_5.java
+.class public dxc/junit/opcodes/lload_2/jm/T_lload_2_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 3
+
+    lconst_1
+    lstore_2
+    
+    lload_2
+    lload_2
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_5.java
new file mode 100644
index 0000000..d21571e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_2.jm;
+
+public class T_lload_2_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_6.j
new file mode 100644
index 0000000..10633f0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_6.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_2_6.java
+.class public dxc/junit/opcodes/lload_2/jm/T_lload_2_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 4
+
+    ldc2_w 1234567890123
+    lstore_2
+
+    lload_2
+    lload 2
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_6.java
new file mode 100644
index 0000000..41fa7ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_2.jm;
+
+public class T_lload_2_6 {
+
+    public static boolean run() {
+        long i = 1234567890123l;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/Test_lload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/Test_lload_3.java
new file mode 100644
index 0000000..16227ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/Test_lload_3.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lload_3.jm.T_lload_3_1;
+import dxc.junit.opcodes.lload_3.jm.T_lload_3_6;
+
+public class Test_lload_3 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lload_3_1.run());
+    }
+
+    /**
+     * @title equality of lload_<n> and lload <n>
+     */
+    public void testN2() {
+        assertTrue(T_lload_3_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_3.jm.T_lload_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_3.jm.T_lload_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_3.jm.T_lload_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_3.jm.T_lload_3_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_1.j
new file mode 100644
index 0000000..987c791
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_3_1.java
+.class public dxc/junit/opcodes/lload_3/jm/T_lload_3_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 5
+    
+    ldc2_w 1234567890123
+    lstore_3
+    ldc2_w 4
+    lload_3
+    lreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_1.java
new file mode 100644
index 0000000..e5436cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_3.jm;
+
+public class T_lload_3_1 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_2.j
new file mode 100644
index 0000000..1e4a2a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_3_2.java
+.class public dxc/junit/opcodes/lload_3/jm/T_lload_3_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lload_3
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_2.java
new file mode 100644
index 0000000..2e12383
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_3.jm;
+
+public class T_lload_3_2 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_3.j
new file mode 100644
index 0000000..0d06391
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_3_3.java
+.class public dxc/junit/opcodes/lload_3/jm/T_lload_3_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    dconst_1
+    dstore_3
+    
+    lload_3
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_3.java
new file mode 100644
index 0000000..add5f68
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_3.jm;
+
+public class T_lload_3_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_4.j
new file mode 100644
index 0000000..6fe0e5c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_3_4.java
+.class public dxc/junit/opcodes/lload_3/jm/T_lload_3_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    iconst_1
+    istore_3
+    iconst_1
+    istore 4
+    
+    lload_3
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_4.java
new file mode 100644
index 0000000..26fb64c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_3.jm;
+
+public class T_lload_3_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_5.j
new file mode 100644
index 0000000..6639760
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_3_5.java
+.class public dxc/junit/opcodes/lload_3/jm/T_lload_3_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 5
+
+    lconst_1
+    lstore_3
+    
+    lload_3
+    lload_3
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_5.java
new file mode 100644
index 0000000..552d7e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_3.jm;
+
+public class T_lload_3_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_6.j
new file mode 100644
index 0000000..ddfb923
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_6.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lload_3_6.java
+.class public dxc/junit/opcodes/lload_3/jm/T_lload_3_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 5
+
+    ldc2_w 1234567890123
+    lstore_3
+
+    lload_3
+    lload 3
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_6.java
new file mode 100644
index 0000000..781ed48
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lload_3.jm;
+
+public class T_lload_3_6 {
+
+    public static boolean run() {
+        long i = 1234567890123l;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/Test_lmul.java b/tools/dx-tests/src/dxc/junit/opcodes/lmul/Test_lmul.java
new file mode 100644
index 0000000..8bd913a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/Test_lmul.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lmul;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lmul.jm.T_lmul_1;
+
+public class Test_lmul extends DxTestCase {
+
+    /**
+     * @title Arguments = 222000000000l, 5000000000l
+     */
+    public void testN1() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(3195355577426903040l, t.run(222000000000l, 5000000000l));
+    }
+
+    /**
+     * @title Arguments = -123456789l, 123456789l
+     */
+    public void testN2() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(-15241578750190521l, t.run(-123456789l, 123456789l));
+    }
+
+    /**
+     * @title Arguments = -123456789l, -123456789l
+     */
+    public void testN3() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(15241578750190521l, t.run(-123456789l, -123456789l));
+    }
+
+    /**
+     * @title Arguments = 0, Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(0, t.run(0, Long.MAX_VALUE));
+    }
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(9223372036854775807L, t.run(Long.MAX_VALUE, 1));
+    }
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, 1));
+    }
+    /**
+     * @title Arguments = Long.MAX_VALUE, Long.MIN_VALUE
+     */
+    public void testB4() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MAX_VALUE,
+                Long.MIN_VALUE));
+    }
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(0, t.run(0, 0));
+    }
+    /**
+     * @title Arguments = Long.MAX_VALUE, -1
+     */
+    public void testB6() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(-9223372036854775807L, t.run(Long.MAX_VALUE, -1));
+    }
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1
+     */
+    public void testB7() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, -1));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lmul.jm.T_lmul_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lmul.jm.T_lmul_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long * double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lmul.jm.T_lmul_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long * int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lmul.jm.T_lmul_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float * long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lmul.jm.T_lmul_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference * long
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.lmul.jm.T_lmul_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_1.j
new file mode 100644
index 0000000..59ba73e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lmul_1.java
+.class public dxc/junit/opcodes/lmul/jm/T_lmul_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    lmul
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_1.java
new file mode 100644
index 0000000..455a293
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lmul.jm;
+
+public class T_lmul_1 {
+
+    public long run(long a, long b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_2.j
new file mode 100644
index 0000000..2965969
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lmul_2.java
+.class public dxc/junit/opcodes/lmul/jm/T_lmul_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+;    lload_1
+    lload_3
+    lmul
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_2.java
new file mode 100644
index 0000000..10a1dce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lmul.jm;
+
+public class T_lmul_2 {
+
+    public long run(long a, long b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_3.j
new file mode 100644
index 0000000..32818bf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lmul_3.java
+.class public dxc/junit/opcodes/lmul/jm/T_lmul_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+;    lload_3
+    lmul
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_3.java
new file mode 100644
index 0000000..44d7e83
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lmul.jm;
+
+public class T_lmul_3 {
+
+    public long run(long a, long b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_4.j
new file mode 100644
index 0000000..b50059e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lmul_4.java
+.class public dxc/junit/opcodes/lmul/jm/T_lmul_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JD)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    dload_3
+    lmul
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_4.java
new file mode 100644
index 0000000..db452a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lmul.jm;
+
+public class T_lmul_4 {
+
+    public long run(long a, double b) {
+        return (long)(a*b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_5.j
new file mode 100644
index 0000000..7fe2ef8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lmul_5.java
+.class public dxc/junit/opcodes/lmul/jm/T_lmul_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JI)J
+    .limit stack 4
+    .limit locals 4
+
+    lload_1
+    iload_3
+    lmul
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_5.java
new file mode 100644
index 0000000..8869241
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lmul.jm;
+
+public class T_lmul_5 {
+
+    public long run(long a, int b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_6.j
new file mode 100644
index 0000000..691a9a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_6.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lmul_6.java
+.class public dxc/junit/opcodes/lmul/jm/T_lmul_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FJ)J
+    .limit stack 3
+    .limit locals 4
+
+    fload_1
+    lload_2
+    lmul
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_6.java
new file mode 100644
index 0000000..46ecbec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lmul.jm;
+
+public class T_lmul_6 {
+
+    public long run(float a, long b) {
+        return (long)(a*b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_7.j b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_7.j
new file mode 100644
index 0000000..fe37744
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lmul_7.java
+.class public dxc/junit/opcodes/lmul/jm/T_lmul_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    aload_0
+    lload_3
+    lmul
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_7.java b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_7.java
new file mode 100644
index 0000000..b30347d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lmul.jm;
+
+public class T_lmul_7 {
+    
+    public long run(long a, long b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/Test_lneg.java b/tools/dx-tests/src/dxc/junit/opcodes/lneg/Test_lneg.java
new file mode 100644
index 0000000..b9d2010
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/Test_lneg.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lneg;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lneg.jm.T_lneg_1;
+import dxc.junit.opcodes.lneg.jm.T_lneg_2;
+
+public class Test_lneg extends DxTestCase {
+
+    /**
+     * @title Argument = 123123123272432432l
+     */
+    public void testN1() {
+        T_lneg_1 t = new T_lneg_1();
+        assertEquals(-123123123272432432l, t.run(123123123272432432l));
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_lneg_1 t = new T_lneg_1();
+        assertEquals(-1l, t.run(1l));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_lneg_1 t = new T_lneg_1();
+        assertEquals(1l, t.run(-1l));
+    }
+
+    /**
+     * @title  Check that -x == (~x + 1)
+     */
+    public void testN4() {
+        T_lneg_2 t = new T_lneg_2();
+        assertTrue(t.run(123123123272432432l));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB1() {
+        T_lneg_1 t = new T_lneg_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title  Argument = Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_lneg_1 t = new T_lneg_1();
+        assertEquals(-9223372036854775807L, t.run(Long.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Long.MIN_VALUE
+     */
+    public void testB3() {
+        T_lneg_1 t = new T_lneg_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lneg.jm.T_lneg_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lneg.jm.T_lneg_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lneg.jm.T_lneg_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lneg.jm.T_lneg_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lneg.jm.T_lneg_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_1.j
new file mode 100644
index 0000000..a92e968
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lneg_1.java
+.class public dxc/junit/opcodes/lneg/jm/T_lneg_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(J)J
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+    lneg
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_1.java
new file mode 100644
index 0000000..662717f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lneg.jm;
+
+public class T_lneg_1 {
+
+    public long run(long d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_2.j
new file mode 100644
index 0000000..3142cdb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_2.j
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lneg_2.java
+.class public dxc/junit/opcodes/lneg/jm/T_lneg_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(J)Z
+    .limit stack 6
+    .limit locals 3
+
+    lload_1
+    lneg
+    lload_1
+    ldc2_w -1
+    lxor
+    lconst_1
+    ladd
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_2.java
new file mode 100644
index 0000000..44b3657
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lneg.jm;
+
+public class T_lneg_2 {
+
+    public boolean run(long d) {
+        return -d == (~d + 1);
+     }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_3.j
new file mode 100644
index 0000000..1fe25a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lneg_3.java
+.class public dxc/junit/opcodes/lneg/jm/T_lneg_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(J)J
+    .limit stack 2
+    .limit locals 3
+
+;    lload_1
+    lneg
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_3.java
new file mode 100644
index 0000000..423f347
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lneg.jm;
+
+public class T_lneg_3 {
+
+    public long run(long d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_4.j
new file mode 100644
index 0000000..5e585ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lneg_4.java
+.class public dxc/junit/opcodes/lneg/jm/T_lneg_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(D)J
+    .limit stack 2
+    .limit locals 3
+
+    dload_1
+    lneg
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_4.java
new file mode 100644
index 0000000..e2bbda3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lneg.jm;
+
+public class T_lneg_4 {
+
+    public long run(double d) {
+        return (long)-d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_5.j
new file mode 100644
index 0000000..bc1a58f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lneg_5.java
+.class public dxc/junit/opcodes/lneg/jm/T_lneg_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)J
+    .limit stack 2
+    .limit locals 2
+
+    iload_1
+    lneg
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_5.java
new file mode 100644
index 0000000..8d80a66
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lneg.jm;
+
+public class T_lneg_5 {
+
+    public long run(int d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_6.j
new file mode 100644
index 0000000..2b5fa6d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lneg_6.java
+.class public dxc/junit/opcodes/lneg/jm/T_lneg_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(F)J
+    .limit stack 2
+    .limit locals 2
+
+    fload_1
+    lneg
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_6.java
new file mode 100644
index 0000000..47b901a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lneg.jm;
+
+public class T_lneg_6 {
+
+    public long run(float d) {
+        return (long)-d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_7.j b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_7.j
new file mode 100644
index 0000000..a5e1696
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_7.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lneg_7.java
+.class public dxc/junit/opcodes/lneg/jm/T_lneg_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)J
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    lneg
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_7.java b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_7.java
new file mode 100644
index 0000000..ccbc868
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lneg.jm;
+
+public class T_lneg_7 {
+    
+    public long run(long d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/Test_lookupswitch.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/Test_lookupswitch.java
new file mode 100644
index 0000000..5b5ced8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/Test_lookupswitch.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lookupswitch;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_1;
+
+public class Test_lookupswitch extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_lookupswitch_1 t = new T_lookupswitch_1();
+        assertEquals(2, t.run(-1));
+
+        assertEquals(-1, t.run(9));
+        assertEquals(20, t.run(10));
+        assertEquals(-1, t.run(11));
+
+        assertEquals(-1, t.run(14));
+        assertEquals(20, t.run(15));
+        assertEquals(-1, t.run(16));
+    }
+
+    /**
+     * @title check Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_lookupswitch_1 t = new T_lookupswitch_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title check Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_lookupswitch_1 t = new T_lookupswitch_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE));
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.9
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.9
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.9
+     * @title npairs shall be >= 0
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.9
+     * @title non-zero padding
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.9
+     * @title pairs shall be sorted in ascending
+     * order
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.9
+     * @title number of entries in jump table
+     */
+    public void testVFE9() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_1.j
new file mode 100644
index 0000000..310c3d1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_1.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lookupswitch_1.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_1.java
new file mode 100644
index 0000000..0f1f657
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_1 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.cfh b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.cfh
new file mode 100644
index 0000000..d4c30e8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 25, h: 0006: utf8{"T_lookupswitch_10.java"}
+    // .  .  .  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  1  0  .  j  a  v  a  
+       01 00 16 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 31 30 2e 6a 61 76 61 
+    // parsed:, offset 87, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 92, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 99, len 54, h: 0009: utf8{"dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10"}
+    // .  .  3  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  o  o  k  u  p  s  w  i  t  c  h  /  j  m  /  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  1  0  
+       01 00 33 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 31 30 
+    // parsed:, offset 153, len 3, h: 000a: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_10}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 156, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 162, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 165, len 0, h: end constant_pool
+// parsed:, offset 165, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 167, len 2, h: this_class: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_10}
+// .  .  
+   00 0a 
+// parsed:, offset 169, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 171, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 173, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 175, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 177, len:89,desc: ()V
+// parsed:, offset 177, len 0, h:  methods[0]: 
+    // parsed:, offset 177, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 179, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 181, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 183, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 185, len 0, h:  attributes[0]: 
+        // parsed:, offset 185, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 187, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 191, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 193, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 195, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 204, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 206, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 208, len 0, h: end attributes[0] 
+// parsed:, offset 208, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 208, len:58,desc: ()V
+// parsed:, offset 208, len 0, h:  methods[1]: 
+    // parsed:, offset 208, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 212, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 214, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 0, h:  attributes[0]: 
+        // parsed:, offset 216, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 218, len 4, h: length: 00000022
+        // .  .  .  "  
+           00 00 00 22 
+        // parsed:, offset 222, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 224, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 4, h: code_length: 00000016
+        // .  .  .  .  
+           00 00 00 16 
+        // parsed:, offset 0, len 1, h: 0000: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 1, len 19, h: 0001: lookupswitch   -00000001: 0014   default: 0015
+        // .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  
+//@mod           ab 00 00 00 00 00 14 00 00 00 01 ff ff ff ff 00 00 00 13 
+           ab 00 00 00 00 00 14 00 00 00 02 ff ff ff ff 00 00 00 13 
+        // parsed:, offset 20, len 1, h: 0014: return
+        // .  
+           b1 
+        // parsed:, offset 21, len 1, h: 0015: return
+        // .  
+           b1 
+        // parsed:, offset 252, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 254, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 256, len 0, h: end attributes[0] 
+// parsed:, offset 256, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 256, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 258, len 0, h:  attributes[0]: 
+    // parsed:, offset 258, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 260, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 264, len 2, h: source: utf8{"T_lookupswitch_10.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 266, len 0, h: end attributes[0] 
+// parsed:, offset 266, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.j
new file mode 100644
index 0000000..73ad264
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lookupswitch_10.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+    iconst_1
+    lookupswitch
+            -1 : Label0
+            default: Label2
+
+ Label0:
+    return
+
+Label2:
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.java
new file mode 100644
index 0000000..ee806f4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_10 {
+
+    public void run() {
+        switch (1) {
+        case -1:
+            return;
+        case 10:
+            return;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_2.j
new file mode 100644
index 0000000..db16d9d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_2.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lookupswitch_2.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+;    iload_1
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_2.java
new file mode 100644
index 0000000..05ec5ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_2.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_2 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_3.j
new file mode 100644
index 0000000..0b96e9d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_3.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lookupswitch_3.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    fconst_1
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_3.java
new file mode 100644
index 0000000..1c777ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_3.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_3 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.cfh
new file mode 100644
index 0000000..436d184
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0a 
+    // parsed:, offset 67, len 3, h: 0007: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_4}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 70, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 77, len 53, h: 0009: utf8{"dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4"}
+    // .  .  2  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  o  o  k  u  p  s  w  i  t  c  h  /  j  m  /  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  4  
+       01 00 32 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 34 
+    // parsed:, offset 130, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 136, len 24, h: 000b: utf8{"T_lookupswitch_4.java"}
+    // .  .  .  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  4  .  j  a  v  a  
+       01 00 15 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 160, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 163, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 170, len 0, h: end constant_pool
+// parsed:, offset 170, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 172, len 2, h: this_class: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_4}
+// .  .  
+   00 07 
+// parsed:, offset 174, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 176, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 178, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 180, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 182, len:110,desc: ()V
+// parsed:, offset 182, len 0, h:  methods[0]: 
+    // parsed:, offset 182, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 184, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 186, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 188, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 0, h:  attributes[0]: 
+        // parsed:, offset 190, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 192, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 196, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 198, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 200, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 209, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 211, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 213, len 0, h: end attributes[0] 
+// parsed:, offset 213, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 213, len:79,desc: (I)I
+// parsed:, offset 213, len 0, h:  methods[1]: 
+    // parsed:, offset 213, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 215, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 217, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 219, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 221, len 0, h:  attributes[0]: 
+        // parsed:, offset 221, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 223, len 4, h: length: 00000037
+        // .  .  .  7  
+           00 00 00 37 
+        // parsed:, offset 227, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 229, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 231, len 4, h: code_length: 0000002b
+        // .  .  .  +  
+           00 00 00 2b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 35, h: 0001: lookupswitch   -00000001: 0024   +0000000a: 0026   +0000000f: 0026   default: 0029
+        // .  .  .  .  .  .  (  .  .  .  .  .  .  .  .  .  .  .  #  .  .  .  .  .  .  .  %  .  .  .  .  .  .  .  %  
+//@mod           ab 00 00 00 00 00 28 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 25 00 00 00 0f 00 00 00 25 
+           ab 00 00 00 00 00 28 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 25 00 00 00 0f 00 00 00 ff 
+        // parsed:, offset 36, len 1, h: 0024: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 37, len 1, h: 0025: ireturn
+        // .  
+           ac 
+        // parsed:, offset 38, len 2, h: 0026: bipush #+14
+        // .  .  
+           10 14 
+        // parsed:, offset 40, len 1, h: 0028: ireturn
+        // .  
+           ac 
+        // parsed:, offset 41, len 1, h: 0029: iconst_m1 // #-01
+        // .  
+           02 
+        // parsed:, offset 42, len 1, h: 002a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 278, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 280, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 282, len 0, h: end attributes[0] 
+// parsed:, offset 282, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 282, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 284, len 0, h:  attributes[0]: 
+    // parsed:, offset 284, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 286, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 290, len 2, h: source: utf8{"T_lookupswitch_4.java"}
+    // .  .  
+       00 0b 
+// parsed:, offset 292, len 0, h: end attributes[0] 
+// parsed:, offset 292, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.j
new file mode 100644
index 0000000..e342dc3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lookupswitch_4.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.java
new file mode 100644
index 0000000..407ccad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_4 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.cfh
new file mode 100644
index 0000000..e578a07
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 24, h: 0001: utf8{"T_lookupswitch_5.java"}
+    // .  .  .  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  5  .  j  a  v  a  
+       01 00 15 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 34, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 39, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 58, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 71, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 80, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 86, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0a 
+    // parsed:, offset 91, len 3, h: 0008: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_5}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 94, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 101, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 107, len 53, h: 000b: utf8{"dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5"}
+    // .  .  2  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  o  o  k  u  p  s  w  i  t  c  h  /  j  m  /  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  5  
+       01 00 32 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 35 
+    // parsed:, offset 160, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 163, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 170, len 0, h: end constant_pool
+// parsed:, offset 170, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 172, len 2, h: this_class: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_5}
+// .  .  
+   00 08 
+// parsed:, offset 174, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 176, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 178, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 180, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 182, len:112,desc: ()V
+// parsed:, offset 182, len 0, h:  methods[0]: 
+    // parsed:, offset 182, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 184, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 186, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 188, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 0, h:  attributes[0]: 
+        // parsed:, offset 190, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 192, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 196, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 198, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 200, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 209, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 211, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 213, len 0, h: end attributes[0] 
+// parsed:, offset 213, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 213, len:81,desc: (I)I
+// parsed:, offset 213, len 0, h:  methods[1]: 
+    // parsed:, offset 213, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 215, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 217, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 219, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 221, len 0, h:  attributes[0]: 
+        // parsed:, offset 221, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 223, len 4, h: length: 00000039
+        // .  .  .  9  
+           00 00 00 39 
+        // parsed:, offset 227, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 229, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 231, len 4, h: code_length: 0000002d
+        // .  .  .  -  
+           00 00 00 2d 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 35, h: 0001: lookupswitch   -00000001: 0024   +0000000a: 0026   +0000000f: 0026   default: 002b
+        // .  .  .  .  .  .  *  .  .  .  .  .  .  .  .  .  .  .  #  .  .  .  .  .  .  .  %  .  .  .  .  .  .  .  %  
+//@mod           ab 00 00 00 00 00 2a 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 25 00 00 00 0f 00 00 00 25 
+           ab 00 00 00 00 00 2a 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 26 00 00 00 0f 00 00 00 25 
+        // parsed:, offset 36, len 1, h: 0024: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 37, len 1, h: 0025: ireturn
+        // .  
+           ac 
+        // parsed:, offset 38, len 4, h: 0026: wide iload 0001
+        // .  .  .  .  
+           c4 15 00 01 
+        // parsed:, offset 42, len 1, h: 002a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 43, len 1, h: 002b: iconst_m1 // #-01
+        // .  
+           02 
+        // parsed:, offset 44, len 1, h: 002c: ireturn
+        // .  
+           ac 
+        // parsed:, offset 280, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 282, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 284, len 0, h: end attributes[0] 
+// parsed:, offset 284, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 284, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 286, len 0, h:  attributes[0]: 
+    // parsed:, offset 286, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 288, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 292, len 2, h: source: utf8{"T_lookupswitch_5.java"}
+    // .  .  
+       00 01 
+// parsed:, offset 294, len 0, h: end attributes[0] 
+// parsed:, offset 294, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.j
new file mode 100644
index 0000000..cd74f87
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lookupswitch_5.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    iload_w 1
+;
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.java
new file mode 100644
index 0000000..9fbeaa4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_5 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.cfh
new file mode 100644
index 0000000..6ea0620
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 24, h: 0006: utf8{"T_lookupswitch_6.java"}
+    // .  .  .  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  6  .  j  a  v  a  
+       01 00 15 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 86, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0a 
+    // parsed:, offset 91, len 3, h: 0008: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_6}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 94, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 101, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 107, len 53, h: 000b: utf8{"dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6"}
+    // .  .  2  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  o  o  k  u  p  s  w  i  t  c  h  /  j  m  /  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  6  
+       01 00 32 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 36 
+    // parsed:, offset 160, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 163, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 170, len 0, h: end constant_pool
+// parsed:, offset 170, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 172, len 2, h: this_class: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_6}
+// .  .  
+   00 08 
+// parsed:, offset 174, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 176, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 178, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 180, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 182, len:110,desc: ()V
+// parsed:, offset 182, len 0, h:  methods[0]: 
+    // parsed:, offset 182, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 184, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 186, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 188, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 0, h:  attributes[0]: 
+        // parsed:, offset 190, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 192, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 196, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 198, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 200, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 209, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 211, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 213, len 0, h: end attributes[0] 
+// parsed:, offset 213, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 213, len:79,desc: (I)I
+// parsed:, offset 213, len 0, h:  methods[1]: 
+    // parsed:, offset 213, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 215, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 217, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 219, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 221, len 0, h:  attributes[0]: 
+        // parsed:, offset 221, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 223, len 4, h: length: 00000037
+        // .  .  .  7  
+           00 00 00 37 
+        // parsed:, offset 227, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 229, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 231, len 4, h: code_length: 0000002b
+        // .  .  .  +  
+           00 00 00 2b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 35, h: 0001: lookupswitch   -00000001: 0024   +0000000a: 0026   +0000000f: 0026   default: 0029
+        // .  .  .  .  .  .  (  .  .  .  .  .  .  .  .  .  .  .  #  .  .  .  .  .  .  .  %  .  .  .  .  .  .  .  %  
+//@mod           ab 00 00 00 00 00 28 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 25 00 00 00 0f 00 00 00 25 
+           ab 00 00 00 00 00 28 ff ff ff ff ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 25 00 00 00 0f 00 00 00 25 
+        // parsed:, offset 36, len 1, h: 0024: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 37, len 1, h: 0025: ireturn
+        // .  
+           ac 
+        // parsed:, offset 38, len 2, h: 0026: bipush #+14
+        // .  .  
+           10 14 
+        // parsed:, offset 40, len 1, h: 0028: ireturn
+        // .  
+           ac 
+        // parsed:, offset 41, len 1, h: 0029: iconst_m1 // #-01
+        // .  
+           02 
+        // parsed:, offset 42, len 1, h: 002a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 278, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 280, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 282, len 0, h: end attributes[0] 
+// parsed:, offset 282, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 282, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 284, len 0, h:  attributes[0]: 
+    // parsed:, offset 284, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 286, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 290, len 2, h: source: utf8{"T_lookupswitch_6.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 292, len 0, h: end attributes[0] 
+// parsed:, offset 292, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.j
new file mode 100644
index 0000000..dde35ca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lookupswitch_6.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.java
new file mode 100644
index 0000000..5fa0f3d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_6 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.cfh b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.cfh
new file mode 100644
index 0000000..278dc9b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0b 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 3, h: 0006: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_7}
+    // .  .  .  
+       07 00 0c 
+    // parsed:, offset 65, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0a 
+    // parsed:, offset 70, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 77, len 24, h: 0009: utf8{"T_lookupswitch_7.java"}
+    // .  .  .  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  7  .  j  a  v  a  
+       01 00 15 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 37 2e 6a 61 76 61 
+    // parsed:, offset 101, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 107, len 3, h: 000b: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 110, len 53, h: 000c: utf8{"dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7"}
+    // .  .  2  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  o  o  k  u  p  s  w  i  t  c  h  /  j  m  /  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  7  
+       01 00 32 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 37 
+    // parsed:, offset 163, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 170, len 0, h: end constant_pool
+// parsed:, offset 170, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 172, len 2, h: this_class: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_7}
+// .  .  
+   00 06 
+// parsed:, offset 174, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0b 
+// parsed:, offset 176, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 178, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 180, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 182, len:110,desc: ()V
+// parsed:, offset 182, len 0, h:  methods[0]: 
+    // parsed:, offset 182, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 184, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 186, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 188, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 0, h:  attributes[0]: 
+        // parsed:, offset 190, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 192, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 196, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 198, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 200, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 209, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 211, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 213, len 0, h: end attributes[0] 
+// parsed:, offset 213, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 213, len:79,desc: (I)I
+// parsed:, offset 213, len 0, h:  methods[1]: 
+    // parsed:, offset 213, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 215, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 217, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 219, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 221, len 0, h:  attributes[0]: 
+        // parsed:, offset 221, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 223, len 4, h: length: 00000037
+        // .  .  .  7  
+           00 00 00 37 
+        // parsed:, offset 227, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 229, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 231, len 4, h: code_length: 0000002b
+        // .  .  .  +  
+           00 00 00 2b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 35, h: 0001: lookupswitch   -00000001: 0024   +0000000a: 0026   +0000000f: 0026   default: 0029
+        // .  .  .  .  .  .  (  .  .  .  .  .  .  .  .  .  .  .  #  .  .  .  .  .  .  .  %  .  .  .  .  .  .  .  %  
+//@mod           ab 00 00 00 00 00 28 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 25 00 00 00 0f 00 00 00 25 
+           ab 01 00 00 00 00 28 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 25 00 00 00 0f 00 00 00 25 
+        // parsed:, offset 36, len 1, h: 0024: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 37, len 1, h: 0025: ireturn
+        // .  
+           ac 
+        // parsed:, offset 38, len 2, h: 0026: bipush #+14
+        // .  .  
+           10 14 
+        // parsed:, offset 40, len 1, h: 0028: ireturn
+        // .  
+           ac 
+        // parsed:, offset 41, len 1, h: 0029: iconst_m1 // #-01
+        // .  
+           02 
+        // parsed:, offset 42, len 1, h: 002a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 278, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 280, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 282, len 0, h: end attributes[0] 
+// parsed:, offset 282, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 282, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 284, len 0, h:  attributes[0]: 
+    // parsed:, offset 284, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 286, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 290, len 2, h: source: utf8{"T_lookupswitch_7.java"}
+    // .  .  
+       00 09 
+// parsed:, offset 292, len 0, h: end attributes[0] 
+// parsed:, offset 292, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.j
new file mode 100644
index 0000000..5dfd4df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lookupswitch_7.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.java
new file mode 100644
index 0000000..105db5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_7 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.cfh b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.cfh
new file mode 100644
index 0000000..b03b95c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0a 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 3, h: 0005: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_8}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 59, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 65, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 09 
+    // parsed:, offset 70, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 77, len 6, h: 0009: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 83, len 3, h: 000a: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 86, len 53, h: 000b: utf8{"dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8"}
+    // .  .  2  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  o  o  k  u  p  s  w  i  t  c  h  /  j  m  /  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  8  
+       01 00 32 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 38 
+    // parsed:, offset 139, len 24, h: 000c: utf8{"T_lookupswitch_8.java"}
+    // .  .  .  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  8  .  j  a  v  a  
+       01 00 15 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 38 2e 6a 61 76 61 
+    // parsed:, offset 163, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 170, len 0, h: end constant_pool
+// parsed:, offset 170, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 172, len 2, h: this_class: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_8}
+// .  .  
+   00 05 
+// parsed:, offset 174, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0a 
+// parsed:, offset 176, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 178, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 180, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 182, len:110,desc: ()V
+// parsed:, offset 182, len 0, h:  methods[0]: 
+    // parsed:, offset 182, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 184, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 186, len 2, h: descriptor: ()V
+    // .  .  
+       00 09 
+    // parsed:, offset 188, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 0, h:  attributes[0]: 
+        // parsed:, offset 190, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 192, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 196, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 198, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 200, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 209, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 211, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 213, len 0, h: end attributes[0] 
+// parsed:, offset 213, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 213, len:79,desc: (I)I
+// parsed:, offset 213, len 0, h:  methods[1]: 
+    // parsed:, offset 213, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 215, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 217, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 219, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 221, len 0, h:  attributes[0]: 
+        // parsed:, offset 221, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 223, len 4, h: length: 00000037
+        // .  .  .  7  
+           00 00 00 37 
+        // parsed:, offset 227, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 229, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 231, len 4, h: code_length: 0000002b
+        // .  .  .  +  
+           00 00 00 2b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 35, h: 0001: lookupswitch   -00000001: 0024   +0000000a: 0026   +0000000f: 0026   default: 0029
+        // .  .  .  .  .  .  (  .  .  .  .  .  .  .  .  .  .  .  #  .  .  .  .  .  .  .  %  .  .  .  .  .  .  .  %  
+//@mod           ab 00 00 00 00 00 28 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 25 00 00 00 0f 00 00 00 25 
+           ab 00 00 00 00 00 28 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0f 00 00 00 25 00 00 00 0a 00 00 00 25 
+        // parsed:, offset 36, len 1, h: 0024: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 37, len 1, h: 0025: ireturn
+        // .  
+           ac 
+        // parsed:, offset 38, len 2, h: 0026: bipush #+14
+        // .  .  
+           10 14 
+        // parsed:, offset 40, len 1, h: 0028: ireturn
+        // .  
+           ac 
+        // parsed:, offset 41, len 1, h: 0029: iconst_m1 // #-01
+        // .  
+           02 
+        // parsed:, offset 42, len 1, h: 002a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 278, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 280, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 282, len 0, h: end attributes[0] 
+// parsed:, offset 282, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 282, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 284, len 0, h:  attributes[0]: 
+    // parsed:, offset 284, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 286, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 290, len 2, h: source: utf8{"T_lookupswitch_8.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 292, len 0, h: end attributes[0] 
+// parsed:, offset 292, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.j
new file mode 100644
index 0000000..9213d50
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lookupswitch_8.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.java
new file mode 100644
index 0000000..13a1255
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_8 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_9.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_9.j
new file mode 100644
index 0000000..9359025
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_9.j
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lookupswitch_9.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+.line 8
+    iconst_2
+    ireturn
+
+    Label1:
+.line 11
+    bipush 20
+    ireturn
+
+    Label3:
+.line 13
+    iconst_m1
+
+    Label5:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_9.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_9.java
new file mode 100644
index 0000000..e6dca83
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_9.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_9 {
+    
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/Test_lor.java b/tools/dx-tests/src/dxc/junit/opcodes/lor/Test_lor.java
new file mode 100644
index 0000000..6c39754
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/Test_lor.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lor;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lor.jm.T_lor_1;
+
+public class Test_lor extends DxTestCase {
+
+    /**
+     * @title Arguments = 123456789121l, 2l
+     */
+    public void testN1() {
+        T_lor_1 t = new T_lor_1();
+        assertEquals(123456789123l, t.run(123456789121l, 2l));
+    }
+
+    /**
+     * @title Arguments = 0xffffffffffffff8l, 0xffffffffffffff1l
+     */
+    public void testN2() {
+        T_lor_1 t = new T_lor_1();
+        assertEquals(0xffffffffffffff9l, t.run(0xffffffffffffff8l,
+                0xffffffffffffff1l));
+    }
+
+    /**
+     * @title  Arguments = 0xabcdefabcdef, -1
+     */
+    public void testN3() {
+        T_lor_1 t = new T_lor_1();
+        assertEquals(-1l, t.run(0xabcdefabcdefl, -1l));
+    }
+
+    /**
+     * @title  Arguments = 0, -1
+     */
+    public void testB1() {
+        T_lor_1 t = new T_lor_1();
+        assertEquals(-1l, t.run(0l, -1l));
+    }
+
+    /**
+     * @title  Arguments = Long.MAX_VALUE, Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_lor_1 t = new T_lor_1();
+        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lor.jm.T_lor_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lor.jm.T_lor_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lor.jm.T_lor_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float & long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lor.jm.T_lor_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lor.jm.T_lor_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_1.j
new file mode 100644
index 0000000..b2bf3b6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lor_1.java
+.class public dxc/junit/opcodes/lor/jm/T_lor_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    lor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_1.java
new file mode 100644
index 0000000..ca5c203
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lor.jm;
+
+public class T_lor_1 {
+
+    public long run(long a, long b) {
+        return a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_2.j
new file mode 100644
index 0000000..f706ad6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lor_2.java
+.class public dxc/junit/opcodes/lor/jm/T_lor_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+;    lload_1
+    lload_3
+    lor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_2.java
new file mode 100644
index 0000000..9124f10
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lor.jm;
+
+public class T_lor_2 {
+
+    public long run(long a, long b) {
+        return a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_3.j
new file mode 100644
index 0000000..da974e4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lor_3.java
+.class public dxc/junit/opcodes/lor/jm/T_lor_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DJ)J
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    lload_3
+    lor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_3.java
new file mode 100644
index 0000000..99cf176
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lor.jm;
+
+public class T_lor_3 {
+
+    public long run(double a, long b) {
+        return (long)a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_4.j
new file mode 100644
index 0000000..b60b092
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lor_4.java
+.class public dxc/junit/opcodes/lor/jm/T_lor_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(IJ)J
+    .limit stack 4
+    .limit locals 4
+
+    iload_1
+    lload_2
+    lor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_4.java
new file mode 100644
index 0000000..e37f8f6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lor.jm;
+
+public class T_lor_4 {
+
+    public long run(int a, long b) {
+        return a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_5.j
new file mode 100644
index 0000000..62376b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lor_5.java
+.class public dxc/junit/opcodes/lor/jm/T_lor_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FJ)J
+    .limit stack 4
+    .limit locals 4
+
+    fload_1
+    lload_2
+    lor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_5.java
new file mode 100644
index 0000000..db49535
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lor.jm;
+
+public class T_lor_5 {
+
+    public long run(float a, long b) {
+        return (long)a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_6.j
new file mode 100644
index 0000000..c03fcc6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lor_6.java
+.class public dxc/junit/opcodes/lor/jm/T_lor_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    aload_0
+    lload_3
+    lor
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_6.java
new file mode 100644
index 0000000..8918dd6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lor.jm;
+
+public class T_lor_6 {
+
+    public long run(long a, long b) {
+        return a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/Test_lrem.java b/tools/dx-tests/src/dxc/junit/opcodes/lrem/Test_lrem.java
new file mode 100644
index 0000000..1c9346d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/Test_lrem.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lrem;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lrem.jm.T_lrem_1;
+
+public class Test_lrem extends DxTestCase {
+
+    /**
+     * @title Arguments = 10000000000l, 4000000000l
+     */
+    public void testN1() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(2000000000l, t.run(10000000000l, 4000000000l));
+    }
+
+    /**
+     * @title Arguments = 1234567890123l, 123456789l
+     */
+    public void testN2() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(123l, t.run(1234567890123l, 123456789l));
+    }
+
+    /**
+     * @title  Dividend = 0
+     */
+    public void testN3() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(0l, t.run(0l, 1234567890123l));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN4() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(-2000000000l, t.run(-10000000000l, 4000000000l));
+    }
+
+    /**
+     * @title  Divisor is negative
+     */
+    public void testN5() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(2000000000l, t.run(10000000000l, -4000000000l));
+    }
+
+    /**
+     * @title  Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(-2000000000l, t.run(-10000000000l, -4000000000l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1l
+     */
+    public void testB1() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, -1l));
+    }
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1l
+     */
+    public void testB2() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, 1l));
+    }
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1l
+     */
+    public void testB3() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(0l, t.run(Long.MAX_VALUE, 1l));
+    }
+    /**
+     * @title Arguments = Long.MIN_VALUE, Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(-1l, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+    /**
+     * @title Arguments = 1l, Long.MAX_VALUE
+     */
+    public void testB5() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(1l, t.run(1l, Long.MAX_VALUE));
+    }
+    /**
+     * @title Arguments = 1l, Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(1l, t.run(1l, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title  Divisor is 0
+     */
+    public void testE1() {
+        T_lrem_1 t = new T_lrem_1();
+        try {
+            t.run(1234567890123l, 0l);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lrem.jm.T_lrem_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lrem.jm.T_lrem_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int / long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lrem.jm.T_lrem_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lrem.jm.T_lrem_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference / float
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lrem.jm.T_lrem_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_1.j
new file mode 100644
index 0000000..c675add
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lrem_1.java
+.class public dxc/junit/opcodes/lrem/jm/T_lrem_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    lrem
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_1.java
new file mode 100644
index 0000000..d4a6114
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lrem.jm;
+
+public class T_lrem_1 {
+
+    public long run(long a, long b) {
+        return a % b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_2.j
new file mode 100644
index 0000000..8612604
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lrem_2.java
+.class public dxc/junit/opcodes/lrem/jm/T_lrem_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+;    lload_1
+    lload_3
+    lrem
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_2.java
new file mode 100644
index 0000000..4f9a924
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lrem.jm;
+
+public class T_lrem_2 {
+
+    public long run(long a, long b) {
+        return a % b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_3.j
new file mode 100644
index 0000000..6b51605
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lrem_3.java
+.class public dxc/junit/opcodes/lrem/jm/T_lrem_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JD)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    dload_3
+    lrem
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_3.java
new file mode 100644
index 0000000..5b6d8df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lrem.jm;
+
+public class T_lrem_3 {
+
+    public long run(long a, double b) {
+        return (long) (a % b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_4.j
new file mode 100644
index 0000000..3fcffc5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lrem_4.java
+.class public dxc/junit/opcodes/lrem/jm/T_lrem_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(IJ)J
+    .limit stack 4
+    .limit locals 4
+
+    iload_1
+    lload_2
+    lrem
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_4.java
new file mode 100644
index 0000000..6e5990d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lrem.jm;
+
+public class T_lrem_4 {
+
+    public long run(int a, long b) {
+        return a % b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_5.j
new file mode 100644
index 0000000..10841d5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lrem_5.java
+.class public dxc/junit/opcodes/lrem/jm/T_lrem_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JF)J
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+    fload_3
+    lrem
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_5.java
new file mode 100644
index 0000000..e3267dd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lrem.jm;
+
+public class T_lrem_5 {
+
+    public long run(long a, float b) {
+        return (long) (a % b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_6.j
new file mode 100644
index 0000000..6b329d6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lrem_6.java
+.class public dxc/junit/opcodes/lrem/jm/T_lrem_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    aload_0
+    lload_3
+    lrem
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_6.java
new file mode 100644
index 0000000..b9d3b17
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lrem.jm;
+
+public class T_lrem_6 {
+
+    public long run(long a, long b) {
+        return a % b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/Test_lreturn.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/Test_lreturn.java
new file mode 100644
index 0000000..805c4a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/Test_lreturn.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lreturn;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lreturn.jm.T_lreturn_1;
+import dxc.junit.opcodes.lreturn.jm.T_lreturn_6;
+import dxc.junit.opcodes.lreturn.jm.T_lreturn_7;
+import dxc.junit.opcodes.lreturn.jm.T_lreturn_8;
+import dxc.junit.opcodes.lreturn.jm.T_lreturn_9;
+
+public class Test_lreturn extends DxTestCase {
+
+    /**
+     * @title  simple
+     */
+    public void testN1() {
+        T_lreturn_1 t = new T_lreturn_1();
+        assertEquals(12345612345l, t.run());
+    }
+
+    /**
+     * @title  check that frames are discarded and reinstananted correctly
+     */
+    public void testN2() {
+        T_lreturn_6 t = new T_lreturn_6();
+        assertEquals(0l, t.run());
+    }
+
+    /**
+     * @title  check that monitor is released by lreturn
+     */
+    public void testN3() {
+        assertTrue(T_lreturn_7.execute());
+    }
+
+
+    /**
+     * @title  Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_lreturn_8 t = new T_lreturn_8();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Lock structural rule 1 is violated
+     */
+// Dalvik currently does not support structured locks, so we remove this test.    
+//    public void testE2() {
+//        T_lreturn_9 t = new T_lreturn_9();
+//        try {
+//            assertEquals(1d, t.run());
+//            // the JVM spec says that it is optional to implement the structural
+//            // lock rules, see JVM spec 8.13 and monitorenter/exit opcodes.
+//            System.out.print("dvmvfe:");
+//            //fail("expected IllegalMonitorStateException");
+//        } catch (IllegalMonitorStateException imse) {
+//            // expected
+//        }
+//    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - void
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lreturn.jm.T_lreturn_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lreturn.jm.T_lreturn_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lreturn.jm.T_lreturn_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lreturn.jm.T_lreturn_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lreturn.jm.T_lreturn_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.lreturn.jm.T_lreturn_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_1.j
new file mode 100644
index 0000000..1049bf3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_1.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lreturn_1.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 2
+    
+    ldc2_w 12345612345
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_1.java
new file mode 100644
index 0000000..5fb565d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_1 {
+
+    public long run() {
+        return 12345612345l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_10.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_10.j
new file mode 100644
index 0000000..d855369
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_10.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lreturn_10.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_10
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private static test()J
+    .limit stack 2
+    .limit locals 0
+    
+    lconst_1
+    lreturn
+    
+.end method
+
+
+.method public run()J
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/lreturn/jm/T_lreturn_10/test()J
+    lreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_10.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_10.java
new file mode 100644
index 0000000..5949439
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_10.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_10 {
+    
+    private static long test() {
+        return 1l;
+    }
+    
+    public long run() {
+        return test();
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_11.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_11.j
new file mode 100644
index 0000000..68dfcd4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_11.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lreturn_11.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_11.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_11.java
new file mode 100644
index 0000000..0b1c976
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_11 {
+    
+    public long run() {
+        return 0l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_2.j
new file mode 100644
index 0000000..117d3fc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lreturn_2.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    lconst_0
+    lreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_2.java
new file mode 100644
index 0000000..778ee8f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_2 {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_3.j
new file mode 100644
index 0000000..b9a758c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lreturn_3.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    return
+.end method
+
+
+.method public run()F
+    .limit stack 2
+    .limit locals 1
+
+    lconst_0
+    lreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_3.java
new file mode 100644
index 0000000..1708e8a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_3 {
+
+   
+    public long run() {
+        return 0l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_4.j
new file mode 100644
index 0000000..1776541
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lreturn_4.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+
+    ;lconst_0
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_4.java
new file mode 100644
index 0000000..c7ad19c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_4 {
+
+    public long run() {
+        return 0l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_5.j
new file mode 100644
index 0000000..16c1340
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lreturn_5.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+
+    fconst_0
+    lreturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_5.java
new file mode 100644
index 0000000..c1cb526
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_5 {
+
+    public long run() {
+        return 0l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_6.j
new file mode 100644
index 0000000..6c7fed7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_6.j
@@ -0,0 +1,93 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lreturn_6.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit locals 12
+    .limit stack 6
+    
+    lconst_1
+    lstore_1
+    ldc2_w 22222222222
+    lstore_3
+    ldc2_w 33333333333
+    lstore 5
+    
+    ldc2_w 44444444444
+    
+    invokestatic dxc/junit/opcodes/lreturn/jm/T_lreturn_6/test()J
+    
+    ldc2_w 4444444444444
+    lcmp
+    ifne Label1
+    
+    ldc2_w 44444444444
+    lcmp
+    ifne Label0
+    
+    lload_1
+    lconst_1
+    lcmp
+    ifne Label0
+    
+    lload_3
+    ldc2_w 22222222222
+    lcmp
+    ifne Label0
+    
+    lload 5
+    ldc2_w 33333333333
+    lcmp
+    ifne Label0    
+    
+    ldc2_w 12345612345
+    lreturn
+
+Label1:
+    pop2
+Label0:
+    lconst_0
+    lreturn
+
+.end method
+
+
+.method private static test()J
+    .limit locals 8
+    .limit stack 4
+    
+    ldc2_w 11111111111
+    lstore_1
+    ldc2_w 22222222222
+    lstore_3
+    ldc2_w 33333333333
+    lstore 5
+    
+    ldc2_w 55555555555
+    
+    ldc2_w 44444444444
+    lreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_6.java
new file mode 100644
index 0000000..2461760
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_6.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_6 {
+
+    public long run() {
+        return 12345612345l;
+    }
+    
+    private static long test() {
+        long a = 11111111111l;
+        long b = 22222222222l;
+        long c = 33333333333l;
+        return 44444444444l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_7.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_7.j
new file mode 100644
index 0000000..70e857c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_7.j
@@ -0,0 +1,164 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lreturn_7.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_7
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field  value J
+.field  failed Z
+
+.method public <init>()V
+    .limit stack 3
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    lconst_0
+    putfield dxc.junit.opcodes.lreturn.jm.T_lreturn_7.value J
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.lreturn.jm.T_lreturn_7.failed Z
+
+    return
+
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+   
+    iconst_0
+    istore_1
+
+Label4:
+    iload_1
+    sipush 1000
+    if_icmpge Label3
+
+    aload_0
+    invokespecial dxc/junit/opcodes/lreturn/jm/T_lreturn_7/test()J
+    pop2
+
+    iinc 1 1
+
+    goto Label4
+
+
+Label3:
+    return
+
+.end method
+
+
+
+.method private synchronized test()J
+    .limit stack 5
+    .limit locals 3
+    
+.line 16
+    aload_0
+    dup
+    getfield dxc.junit.opcodes.lreturn.jm.T_lreturn_7.value J
+    dup2
+    lstore_1
+
+    lconst_1
+    ladd
+    putfield dxc.junit.opcodes.lreturn.jm.T_lreturn_7.value J
+
+    lload_1
+    lconst_1
+    ladd
+    lstore_1
+
+    invokestatic java/lang/Thread/yield()V
+
+    lload_1
+    aload_0
+    getfield dxc.junit.opcodes.lreturn.jm.T_lreturn_7.value J
+    lcmp
+    ifeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.lreturn.jm.T_lreturn_7.failed Z
+
+Label0:
+    lload_1
+    lreturn
+.end method
+
+
+.method public static execute()Z
+    .limit stack 5
+    .limit locals 4
+
+    new dxc/junit/opcodes/lreturn/jm/T_lreturn_7
+    dup
+    invokespecial dxc/junit/opcodes/lreturn/jm/T_lreturn_7/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:            ; exception handler
+    astore_3
+    goto Label3
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.lreturn.jm.T_lreturn_7.value J
+    ldc2_w 2000
+    lcmp
+    ifne Label3
+
+    aload_0
+    getfield dxc.junit.opcodes.lreturn.jm.T_lreturn_7.failed Z
+    ifne Label3
+
+    iconst_1
+    ireturn
+
+Label3:
+    iconst_0
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_7.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_7.java
new file mode 100644
index 0000000..fc97b6e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_7.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+import dxc.junit.opcodes.lreturn.jm.T_lreturn_7;
+
+public class T_lreturn_7 implements Runnable {
+    public final static int CNT = 1000;
+    long value = 0;
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    private synchronized long test()  {
+        value++;
+        long c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+        return c;
+    }
+    
+    public static boolean execute() {
+        T_lreturn_7 test = new T_lreturn_7();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_8.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_8.j
new file mode 100644
index 0000000..6b7597c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_8.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lreturn_8.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private synchronized test()J
+    .limit stack 2
+    
+    aload_0
+    monitorexit
+       lconst_0
+    lreturn
+.end method
+
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial dxc/junit/opcodes/lreturn/jm/T_lreturn_8/test()J
+    pop2
+
+    iconst_1
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_8.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_8.java
new file mode 100644
index 0000000..1653cb1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_8.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_8 {
+    
+    private synchronized long test() {
+        return 0l;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_9.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_9.j
new file mode 100644
index 0000000..17dfe86
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_9.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lreturn_9.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_9
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    monitorenter
+
+    lconst_1
+    lreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_9.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_9.java
new file mode 100644
index 0000000..df514b4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_9 {
+    
+    public long run() {
+        return 1l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/Test_lshl.java b/tools/dx-tests/src/dxc/junit/opcodes/lshl/Test_lshl.java
new file mode 100644
index 0000000..df45a03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/Test_lshl.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lshl;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lshl.jm.T_lshl_1;
+
+public class Test_lshl extends DxTestCase {
+
+    /**
+     * @title Arguments = 5000000000l, 3
+     */
+    public void testN1() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(40000000000l, t.run(5000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 5000000000l, 1
+     */
+    public void testN2() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(10000000000l, t.run(5000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -5000000000l, 1
+     */
+    public void testN3() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(-10000000000l, t.run(-5000000000l, 1));
+    }
+
+    /**
+     * @title  Arguments = 1, -1
+     */
+    public void testN4() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(0x8000000000000000l, t.run(1l, -1));
+    }
+
+    /**
+     * @title  Verify that shift distance is actually in range 0 to 64.
+     */
+    public void testN5() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(130l, t.run(65l, 65));
+    }
+
+    /**
+     * @title  Arguments = 0, -1
+     */
+    public void testB1() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title  Arguments = 1, 0
+     */
+    public void testB2() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @title  Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(0xfffffffe, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshl.jm.T_lshl_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshl.jm.T_lshl_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshl.jm.T_lshl_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshl.jm.T_lshl_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshl.jm.T_lshl_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_1.j
new file mode 100644
index 0000000..47ea4ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lshl_1.java
+.class public dxc/junit/opcodes/lshl/jm/T_lshl_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+    iload_3
+    lshl
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_1.java
new file mode 100644
index 0000000..5855d09
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lshl.jm;
+
+public class T_lshl_1 {
+
+    public long run(long a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_2.j
new file mode 100644
index 0000000..cb0a00c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lshl_2.java
+.class public dxc/junit/opcodes/lshl/jm/T_lshl_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+;    lload_1
+    iload_3
+    lshl
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_2.java
new file mode 100644
index 0000000..42d89f0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lshl.jm;
+
+public class T_lshl_2 {
+
+    public long run(long a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_3.j
new file mode 100644
index 0000000..a5d5200
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lshl_3.java
+.class public dxc/junit/opcodes/lshl/jm/T_lshl_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DI)J
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+    iload_3
+    lshl
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_3.java
new file mode 100644
index 0000000..0de1686
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lshl.jm;
+
+public class T_lshl_3 {
+
+    public long run(double a, int b) {
+        return (long)a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_4.j
new file mode 100644
index 0000000..6ff06c7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lshl_4.java
+.class public dxc/junit/opcodes/lshl/jm/T_lshl_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)J
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    lshl
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_4.java
new file mode 100644
index 0000000..a7a4fcf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lshl.jm;
+
+public class T_lshl_4 {
+
+    public long run(int a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_5.j
new file mode 100644
index 0000000..6461614
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lshl_5.java
+.class public dxc/junit/opcodes/lshl/jm/T_lshl_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FI)J
+    .limit stack 3
+    .limit locals 3
+
+    fload_1
+    iload_2
+    lshl
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_5.java
new file mode 100644
index 0000000..f48ad7d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lshl.jm;
+
+public class T_lshl_5 {
+
+    public long run(float a, int b) {
+        return (long)a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_6.j
new file mode 100644
index 0000000..6b3e135
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lshl_6.java
+.class public dxc/junit/opcodes/lshl/jm/T_lshl_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+    aload_0
+    iload_3
+    lshl
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_6.java
new file mode 100644
index 0000000..b27e156
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lshl.jm;
+
+public class T_lshl_6 {
+
+    public long run(long a, int b) {
+        return a << b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/Test_lshr.java b/tools/dx-tests/src/dxc/junit/opcodes/lshr/Test_lshr.java
new file mode 100644
index 0000000..5f98083
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/Test_lshr.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lshr;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lshr.jm.T_lshr_1;
+
+public class Test_lshr extends DxTestCase {
+
+    /**
+     * @title Arguments = 40000000000l, 3
+     */
+    public void testN1() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(5000000000l, t.run(40000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 40000000000l, 1
+     */
+    public void testN2() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(20000000000l, t.run(40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -40000000000l, 1
+     */
+    public void testN3() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(-20000000000l, t.run(-40000000000l, 1));
+    }
+
+    /**
+     * @title  Arguments = 1, -1
+     */
+    public void testN4() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(0l, t.run(1l, -1));
+    }
+
+    /**
+     * @title  Verify that shift distance is actually in range 0 to 64.
+     */
+    public void testN5() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(32, t.run(65l, 65));
+    }
+
+    /**
+     * @title  Arguments = 0, -1
+     */
+    public void testB1() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(0l, t.run(0l, -1));
+    }
+
+    /**
+     * @title  Arguments = 1, 0
+     */
+    public void testB2() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(1l, t.run(1l, 0));
+    }
+
+    /**
+     * @title  Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(0x3FFFFFFFFFFFFFFFl, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(0xc000000000000000l, t.run(Long.MIN_VALUE, 1));
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshr.jm.T_lshr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshr.jm.T_lshr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshr.jm.T_lshr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshr.jm.T_lshr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshr.jm.T_lshr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_1.j
new file mode 100644
index 0000000..b21e884
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lshr_1.java
+.class public dxc/junit/opcodes/lshr/jm/T_lshr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+    iload_3
+    lshr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_1.java
new file mode 100644
index 0000000..45f4113
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lshr.jm;
+
+public class T_lshr_1 {
+
+    public long run(long a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_2.j
new file mode 100644
index 0000000..21a59a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lshr_2.java
+.class public dxc/junit/opcodes/lshr/jm/T_lshr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+;    lload_1
+    iload_3
+    lshr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_2.java
new file mode 100644
index 0000000..6c0243b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lshr.jm;
+
+public class T_lshr_2 {
+
+    public long run(long a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_3.j
new file mode 100644
index 0000000..3edefd3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lshr_3.java
+.class public dxc/junit/opcodes/lshr/jm/T_lshr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DI)J
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+    iload_3
+    lshr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_3.java
new file mode 100644
index 0000000..8a2132d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lshr.jm;
+
+public class T_lshr_3 {
+
+    public long run(double a, int b) {
+        return (long)a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_4.j
new file mode 100644
index 0000000..58349f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lshr_4.java
+.class public dxc/junit/opcodes/lshr/jm/T_lshr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)J
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    lshr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_4.java
new file mode 100644
index 0000000..322a193b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lshr.jm;
+
+public class T_lshr_4 {
+
+    public long run(int a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_5.j
new file mode 100644
index 0000000..179e48e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lshr_5.java
+.class public dxc/junit/opcodes/lshr/jm/T_lshr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FI)J
+    .limit stack 3
+    .limit locals 3
+
+    fload_1
+    iload_2
+    lshr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_5.java
new file mode 100644
index 0000000..0f97441
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lshr.jm;
+
+public class T_lshr_5 {
+
+    public long run(float a, int b) {
+        return (long)a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_6.j
new file mode 100644
index 0000000..33c9991
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lshr_6.java
+.class public dxc/junit/opcodes/lshr/jm/T_lshr_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+    aload_0
+    iload_3
+    lshr
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_6.java
new file mode 100644
index 0000000..31d5f9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lshr.jm;
+
+public class T_lshr_6 {
+
+    public long run(long a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/Test_lstore.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/Test_lstore.java
new file mode 100644
index 0000000..8d5ba1a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/Test_lstore.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lstore.jm.T_lstore_1;
+import dxc.junit.opcodes.lstore.jm.T_lstore_1_w;
+import dxc.junit.opcodes.lstore.jm.T_lstore_2;
+import dxc.junit.opcodes.lstore.jm.T_lstore_2_w;
+
+public class Test_lstore extends DxTestCase {
+
+    /*
+     * NORMAL ISTORE VERSION
+     */
+
+    /**
+     * @title  lstore 0
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lstore_1.run());
+    }
+
+    /**
+     * @title  lstore 255
+     */
+    public void testN2() {
+        assertEquals(1234567890123l, T_lstore_2.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore.jm.T_lstore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore.jm.T_lstore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore.jm.T_lstore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore.jm.T_lstore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE ISTORE VERSION
+     */
+
+    /**
+     * @title  lstore_w 0
+     */
+    public void testN3() {
+        assertEquals(1234567890123l, T_lstore_1_w.run());
+    }
+
+    /**
+     * @title  lstore 257
+     */
+    public void testN4() {
+        assertEquals(1234567890123l, T_lstore_2_w.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore.jm.T_lstore_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore.jm.T_lstore_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore.jm.T_lstore_5_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore.jm.T_lstore_6_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1.j
new file mode 100644
index 0000000..02f5c5a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_1.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 2
+    
+    ldc2_w 1234567890123
+
+    lstore 0
+    ldc2_w 4
+    lload 0
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1.java
new file mode 100644
index 0000000..7c1c4b7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_1 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1_w.j
new file mode 100644
index 0000000..24666bb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1_w.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_1_w.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_1_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 2
+
+    ldc2_w 1234567890123
+    lstore_w 0
+    ldc2_w 4
+    lload 0
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1_w.java
new file mode 100644
index 0000000..416a4e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_1_w {
+    
+    public static long run() {
+        return 1234567890123l;
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2.j
new file mode 100644
index 0000000..b0501e7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_2.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 300
+
+    ldc2_w 1234567890123
+    lstore 255
+    ldc2_w 4
+    lload 255
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2.java
new file mode 100644
index 0000000..877fd84
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_2 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2_w.j
new file mode 100644
index 0000000..294ea0a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2_w.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_2_w.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_2_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 300
+    
+    ldc2_w 1234567890123
+    lstore_w 257
+    ldc2_w 4
+    lload 257
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2_w.java
new file mode 100644
index 0000000..369e5ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_2_w {
+    
+    public static long run() {
+        return 1234567890123l;
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3.j
new file mode 100644
index 0000000..a3e1c91
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_3.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+    
+    lstore 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3.java
new file mode 100644
index 0000000..a26dc24
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3_w.j
new file mode 100644
index 0000000..782a123
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_3_w.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_3_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lstore_w 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3_w.java
new file mode 100644
index 0000000..717415a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_3_w {
+    public static void run() {
+
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4.j
new file mode 100644
index 0000000..15529ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_4.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+    
+     dconst_1
+    lstore 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4.java
new file mode 100644
index 0000000..566f220
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4_w.j
new file mode 100644
index 0000000..54bb0aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_4_w.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_4_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+     dconst_1
+    lstore_w 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4_w.java
new file mode 100644
index 0000000..cb56b27
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_4_w {
+    public static void run() {
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5.j
new file mode 100644
index 0000000..f4017d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_5.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    iconst_1
+    lstore 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5.java
new file mode 100644
index 0000000..ad183ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5_w.j
new file mode 100644
index 0000000..7ada7ba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_5_w.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_5_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+     iconst_1
+    lstore_w 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5_w.java
new file mode 100644
index 0000000..1a9bbe7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_5_w {
+    public static void run() {
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6.j
new file mode 100644
index 0000000..960f6a4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_6.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+    
+    fconst_1
+    lstore 0
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6.java
new file mode 100644
index 0000000..2417318
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_6 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6_w.j
new file mode 100644
index 0000000..4f32a72
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_6_w.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_6_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+     fconst_1
+    lstore_w 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6_w.java
new file mode 100644
index 0000000..69a7469
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_6_w {
+    
+    public static void run() {
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/Test_lstore_0.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/Test_lstore_0.java
new file mode 100644
index 0000000..9259090
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/Test_lstore_0.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lstore_0.jm.T_lstore_0_1;
+import dxc.junit.opcodes.lstore_0.jm.T_lstore_0_2;
+
+public class Test_lstore_0 extends DxTestCase {
+
+    /**
+     * @title value of local variable at <n> is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lstore_0_1.run());
+    }
+
+    /**
+     * @title Each of the lstore_<n> instructions is the same as lstore with an index of <n>
+     */
+    public void testN2() {
+        assertTrue(T_lstore_0_2.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_0.jm.T_lstore_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_0.jm.T_lstore_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_0.jm.T_lstore_0_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_0.jm.T_lstore_0_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_1.j
new file mode 100644
index 0000000..e6d36c0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_0_1.java
+.class public dxc/junit/opcodes/lstore_0/jm/T_lstore_0_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 2
+    
+    ldc2_w 1234567890123
+    lstore_0
+    ldc2_w 4
+    lload_0
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_1.java
new file mode 100644
index 0000000..3d017ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_0.jm;
+
+public class T_lstore_0_1 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_2.j
new file mode 100644
index 0000000..f61972a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_2.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_0_2.java
+.class public dxc/junit/opcodes/lstore_0/jm/T_lstore_0_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 2
+   
+    ldc2_w 1234567890123
+    lstore_0
+    lload_0
+    
+    ldc2_w 1234567890123
+    lstore 0
+    lload_0
+    
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_2.java
new file mode 100644
index 0000000..15fff7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_0.jm;
+
+public class T_lstore_0_2 {
+
+    public static boolean run() {
+        long i = 1234567890123l;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_3.j
new file mode 100644
index 0000000..115c9d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_0_3.java
+.class public dxc/junit/opcodes/lstore_0/jm/T_lstore_0_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lstore_0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_3.java
new file mode 100644
index 0000000..78bedb4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_0.jm;
+
+public class T_lstore_0_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_4.j
new file mode 100644
index 0000000..212743c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_0_4.java
+.class public dxc/junit/opcodes/lstore_0/jm/T_lstore_0_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    lstore_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_4.java
new file mode 100644
index 0000000..84982cb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_0.jm;
+
+public class T_lstore_0_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_5.j
new file mode 100644
index 0000000..e8653c7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_0_5.java
+.class public dxc/junit/opcodes/lstore_0/jm/T_lstore_0_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    iconst_1
+    lstore_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_5.java
new file mode 100644
index 0000000..82e115b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_0.jm;
+
+public class T_lstore_0_5 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_6.j
new file mode 100644
index 0000000..6722bca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_6.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_0_6.java
+.class public dxc/junit/opcodes/lstore_0/jm/T_lstore_0_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    lstore_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_6.java
new file mode 100644
index 0000000..7a56680
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_0.jm;
+
+public class T_lstore_0_6 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/Test_lstore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/Test_lstore_1.java
new file mode 100644
index 0000000..019721b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/Test_lstore_1.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lstore_1.jm.T_lstore_1_1;
+import dxc.junit.opcodes.lstore_1.jm.T_lstore_1_2;
+
+public class Test_lstore_1 extends DxTestCase {
+
+    /**
+     * @title value of local variable at <n> is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lstore_1_1.run());
+    }
+
+    /**
+     * @title each of the lstore_<n> instructions is the same as lstore with an index of <n>
+     */
+    public void testN2() {
+        assertTrue(T_lstore_1_2.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_1.jm.T_lstore_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_1.jm.T_lstore_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_1.jm.T_lstore_1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_1.jm.T_lstore_1_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_1.j
new file mode 100644
index 0000000..6da940c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_1_1.java
+.class public dxc/junit/opcodes/lstore_1/jm/T_lstore_1_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 4
+    
+    ldc2_w 1234567890123
+    lstore_1
+    ldc2_w 4
+    lload_1
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_1.java
new file mode 100644
index 0000000..406368d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_1.jm;
+
+public class T_lstore_1_1 {
+    
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_2.j
new file mode 100644
index 0000000..cdbae78
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_2.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_1_2.java
+.class public dxc/junit/opcodes/lstore_1/jm/T_lstore_1_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 4
+    
+    ldc2_w 1234567890123
+    lstore_1
+    lload_1
+
+    ldc2_w 1234567890123
+    lstore 1
+    lload_1
+    
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_2.java
new file mode 100644
index 0000000..767fccb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_1.jm;
+
+public class T_lstore_1_2 {
+
+    public static boolean run() {
+        long i = 1234567890123l;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_3.j
new file mode 100644
index 0000000..46567eb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_1_3.java
+.class public dxc/junit/opcodes/lstore_1/jm/T_lstore_1_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lstore_1
+    return
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_3.java
new file mode 100644
index 0000000..2a02047
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_1.jm;
+
+public class T_lstore_1_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_4.j
new file mode 100644
index 0000000..8045824
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_1_4.java
+.class public dxc/junit/opcodes/lstore_1/jm/T_lstore_1_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    lstore_1
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_4.java
new file mode 100644
index 0000000..b27f43f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_1.jm;
+
+public class T_lstore_1_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_5.j
new file mode 100644
index 0000000..4926c01
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_1_5.java
+.class public dxc/junit/opcodes/lstore_1/jm/T_lstore_1_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    iconst_1
+    lstore_1
+    return
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_5.java
new file mode 100644
index 0000000..380b2e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_1.jm;
+
+public class T_lstore_1_5 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_6.j
new file mode 100644
index 0000000..684aa83
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_6.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_1_6.java
+.class public dxc/junit/opcodes/lstore_1/jm/T_lstore_1_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    lstore_1
+    return
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_6.java
new file mode 100644
index 0000000..22b4ec4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_1.jm;
+
+public class T_lstore_1_6 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/Test_lstore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/Test_lstore_2.java
new file mode 100644
index 0000000..e42d3f8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/Test_lstore_2.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lstore_2.jm.T_lstore_2_1;
+import dxc.junit.opcodes.lstore_2.jm.T_lstore_2_2;
+
+public class Test_lstore_2 extends DxTestCase {
+
+    /**
+     * @title value of local variable at <n> is pushed onto the operand stack.
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lstore_2_1.run());
+    }
+
+    /**
+     * @title each of the lstore_<n> instructions is the same as lstore with an index of <n>
+     */
+    public void testN2() {
+        assertTrue(T_lstore_2_2.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_2.jm.T_lstore_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_2.jm.T_lstore_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_2.jm.T_lstore_2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_2.jm.T_lstore_2_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_1.j
new file mode 100644
index 0000000..28b3391
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_2_1.java
+.class public dxc/junit/opcodes/lstore_2/jm/T_lstore_2_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 4
+    
+    ldc2_w 1234567890123
+    lstore_2
+    ldc2_w 4
+    lload_2
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_1.java
new file mode 100644
index 0000000..cf0a9c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_2.jm;
+
+public class T_lstore_2_1 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_2.j
new file mode 100644
index 0000000..7bd36ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_2.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_2_2.java
+.class public dxc/junit/opcodes/lstore_2/jm/T_lstore_2_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 4
+    
+    ldc2_w 1234567890123
+    lstore_2
+    lload_2
+
+    ldc2_w 1234567890123
+    lstore 2
+    lload_2
+    
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_2.java
new file mode 100644
index 0000000..8947807
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_2.jm;
+
+public class T_lstore_2_2 {
+
+    public static boolean run() {
+        long i = 1234567890123l;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_3.j
new file mode 100644
index 0000000..fbd7f42
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_2_3.java
+.class public dxc/junit/opcodes/lstore_2/jm/T_lstore_2_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lstore_2
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_3.java
new file mode 100644
index 0000000..ff83d99
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_2.jm;
+
+public class T_lstore_2_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_4.j
new file mode 100644
index 0000000..d939607
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_2_4.java
+.class public dxc/junit/opcodes/lstore_2/jm/T_lstore_2_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    lstore_2
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_4.java
new file mode 100644
index 0000000..c9b028e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_2.jm;
+
+public class T_lstore_2_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_5.j
new file mode 100644
index 0000000..51d5d5f3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_2_5.java
+.class public dxc/junit/opcodes/lstore_2/jm/T_lstore_2_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    iconst_2
+    lstore_2
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_5.java
new file mode 100644
index 0000000..898c226
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_2.jm;
+
+public class T_lstore_2_5 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_6.j
new file mode 100644
index 0000000..9de277f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_6.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_2_6.java
+.class public dxc/junit/opcodes/lstore_2/jm/T_lstore_2_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_2
+    lstore_2
+    return
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_6.java
new file mode 100644
index 0000000..30c6c25
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_2.jm;
+
+public class T_lstore_2_6 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/Test_lstore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/Test_lstore_3.java
new file mode 100644
index 0000000..b89ca5c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/Test_lstore_3.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lstore_3.jm.T_lstore_3_1;
+import dxc.junit.opcodes.lstore_3.jm.T_lstore_3_2;
+
+public class Test_lstore_3 extends DxTestCase {
+
+    /**
+     * @title value of local variable at <n> is pushed onto the operand stack.
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lstore_3_1.run());
+    }
+
+    /**
+     * @title each of the lstore_<n> instructions is the same as lstore with an index of <n>
+     */
+    public void testN2() {
+        assertTrue(T_lstore_3_2.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_3.jm.T_lstore_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_3.jm.T_lstore_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_3.jm.T_lstore_3_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_3.jm.T_lstore_3_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_1.j
new file mode 100644
index 0000000..d5cafea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_3_1.java
+.class public dxc/junit/opcodes/lstore_3/jm/T_lstore_3_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 5
+    
+    ldc2_w 1234567890123
+    lstore_3
+    ldc2_w 4
+    lload_3
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_1.java
new file mode 100644
index 0000000..a03805a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_3.jm;
+
+public class T_lstore_3_1 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_2.j
new file mode 100644
index 0000000..bd47d6e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_2.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_3_2.java
+.class public dxc/junit/opcodes/lstore_3/jm/T_lstore_3_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 5
+    
+    ldc2_w 1234567890123
+    lstore_3
+    lload_3
+
+    ldc2_w 1234567890123
+    lstore 3
+    lload_3
+    
+    lcmp
+    ifne Label0
+    iconst_3
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+   
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_2.java
new file mode 100644
index 0000000..cbe2c13
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_3.jm;
+
+public class T_lstore_3_2 {
+
+    public static boolean run() {
+        long i = 1234567890123l;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_3.j
new file mode 100644
index 0000000..6ddc10b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_3_3.java
+.class public dxc/junit/opcodes/lstore_3/jm/T_lstore_3_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lstore_3
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_3.java
new file mode 100644
index 0000000..89e037a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_3.jm;
+
+public class T_lstore_3_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_4.j
new file mode 100644
index 0000000..f8266ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_3_4.java
+.class public dxc/junit/opcodes/lstore_3/jm/T_lstore_3_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    dconst_1
+    lstore_3
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_4.java
new file mode 100644
index 0000000..493601a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_3.jm;
+
+public class T_lstore_3_4 {
+    
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_5.j
new file mode 100644
index 0000000..4dd787e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_3_5.java
+.class public dxc/junit/opcodes/lstore_3/jm/T_lstore_3_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    iconst_3
+    lstore_3
+    return
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_5.java
new file mode 100644
index 0000000..70f5f71
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_3.jm;
+
+public class T_lstore_3_5 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_6.j
new file mode 100644
index 0000000..3684396
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_6.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lstore_3_6.java
+.class public dxc/junit/opcodes/lstore_3/jm/T_lstore_3_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    fconst_1
+    lstore_3
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_6.java
new file mode 100644
index 0000000..766386b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lstore_3.jm;
+
+public class T_lstore_3_6 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/Test_lsub.java b/tools/dx-tests/src/dxc/junit/opcodes/lsub/Test_lsub.java
new file mode 100644
index 0000000..e298784
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/Test_lsub.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lsub;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lsub.jm.T_lsub_1;
+
+public class Test_lsub extends DxTestCase {
+
+    /**
+     * @title Arguments = 1111127348242l, 11111111114l
+     */
+    public void testN1() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(1100016237128l, t.run(1111127348242l, 11111111114l));
+    }
+
+    /**
+     * @title Arguments = 0, 1111127348242l
+     */
+    public void testN2() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(-1111127348242l, t.run(0, 1111127348242l));
+    }
+
+    /**
+     * @title Arguments = 0, -11111111114l
+     */
+    public void testN3() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(11111111114l, t.run(0, -11111111114l));
+    }
+
+    /**
+     * @title Arguments = 0l, Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(-9223372036854775807L, t.run(0l, Long.MAX_VALUE));
+    }
+    /**
+     * @title Arguments = 9223372036854775807L, Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(0l, t.run(9223372036854775807L, Long.MAX_VALUE));
+    }
+    /**
+     * @title Arguments = Long.MAX_VALUE, -1l
+     */
+    public void testB3() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MAX_VALUE, -1l));
+    }
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1l
+     */
+    public void testB4() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(9223372036854775807L, t.run(Long.MIN_VALUE, 1l));
+    }
+    /**
+     * @title Arguments = 0l, 0l
+     */
+    public void testB5() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(0l, t.run(0l, 0l));
+    }
+    /**
+     * @title Arguments = 0l, -Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(-9223372036854775808L, t.run(0l, -Long.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lsub.jm.T_lsub_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lsub.jm.T_lsub_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lsub.jm.T_lsub_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lsub.jm.T_lsub_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lsub.jm.T_lsub_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_1.j
new file mode 100644
index 0000000..1afeb41
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lsub_1.java
+.class public dxc/junit/opcodes/lsub/jm/T_lsub_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    lsub
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_1.java
new file mode 100644
index 0000000..047b1bf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lsub.jm;
+
+public class T_lsub_1 {
+    
+    public long run(long a, long b) {
+        return a-b;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_2.j
new file mode 100644
index 0000000..8872c53
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lsub_2.java
+.class public dxc/junit/opcodes/lsub/jm/T_lsub_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+;    lload_1
+    lload_3
+    lsub
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_2.java
new file mode 100644
index 0000000..c509295
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lsub.jm;
+
+public class T_lsub_2 {
+
+    public long run(long a, long b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_3.j
new file mode 100644
index 0000000..f1fa846
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lsub_3.java
+.class public dxc/junit/opcodes/lsub/jm/T_lsub_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JD)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    dload_3
+    lsub
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_3.java
new file mode 100644
index 0000000..d86e773
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lsub.jm;
+
+public class T_lsub_3 {
+
+    public long run(long a, double b) {
+        return (long)(a-b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_4.j
new file mode 100644
index 0000000..1443e48
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lsub_4.java
+.class public dxc/junit/opcodes/lsub/jm/T_lsub_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(IJ)J
+    .limit stack 4
+    .limit locals 4
+
+    iload_1
+    lload_2
+    lsub
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_4.java
new file mode 100644
index 0000000..e3166d0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lsub.jm;
+
+public class T_lsub_4 {
+
+    public long run(int a, long b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_5.j
new file mode 100644
index 0000000..8156f63
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lsub_5.java
+.class public dxc/junit/opcodes/lsub/jm/T_lsub_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FJ)J
+    .limit stack 3
+    .limit locals 4
+
+    fload_1
+    lload_2
+    lsub
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_5.java
new file mode 100644
index 0000000..3e89d5c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lsub.jm;
+
+public class T_lsub_5 {
+
+    public long run(float a, long b) {
+        return (long)(a-b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_6.j
new file mode 100644
index 0000000..0598c05
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lsub_6.java
+.class public dxc/junit/opcodes/lsub/jm/T_lsub_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    aload_0
+    lsub
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_6.java
new file mode 100644
index 0000000..d0fd41b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lsub.jm;
+
+public class T_lsub_6 {
+
+    public long run(long a, long b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/Test_lushr.java b/tools/dx-tests/src/dxc/junit/opcodes/lushr/Test_lushr.java
new file mode 100644
index 0000000..41f41ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/Test_lushr.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lushr;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lushr.jm.T_lushr_1;
+
+public class Test_lushr extends DxTestCase {
+
+    /**
+     * @title Arguments = 40000000000l, 3
+     */
+    public void testN1() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(5000000000l, t.run(40000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 40000000000l, 1
+     */
+    public void testN2() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(20000000000l, t.run(40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -123456789l, 1
+     */
+    public void testN3() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(0x7FFFFFFFFC521975l, t.run(-123456789l, 1));
+    }
+
+    /**
+     * @title  Arguments = 1, -1
+     */
+    public void testN4() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(0l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Arguments = 123456789l, 64
+     */
+    public void testN5() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(123456789l, t.run(123456789l, 64));
+    }
+
+    /**
+     * @title Arguments = 123456789l, 63
+     */
+    public void testN6() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(0l, t.run(123456789l, 63));
+    }
+
+    /**
+     * @title  Arguments = 0, -1
+     */
+    public void testB1() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(0l, t.run(0l, -1));
+    }
+
+    /**
+     * @title  Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(0x3FFFFFFFFFFFFFFFl, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(0x4000000000000000l, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = 1, 0
+     */
+    public void testB4() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(1l, t.run(1l, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lushr.jm.T_lushr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lushr.jm.T_lushr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lushr.jm.T_lushr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lushr.jm.T_lushr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lushr.jm.T_lushr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_1.j
new file mode 100644
index 0000000..4c92f16
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lushr_1.java
+.class public dxc/junit/opcodes/lushr/jm/T_lushr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+    iload_3
+    lushr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_1.java
new file mode 100644
index 0000000..eebd399
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lushr.jm;
+
+public class T_lushr_1 {
+
+    public long run(long a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_2.j
new file mode 100644
index 0000000..fde0760
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lushr_2.java
+.class public dxc/junit/opcodes/lushr/jm/T_lushr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+;    lload_1
+    iload_3
+    lushr
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_2.java
new file mode 100644
index 0000000..2512ad1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lushr.jm;
+
+public class T_lushr_2 {
+
+    public long run(long a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_3.j
new file mode 100644
index 0000000..baeb03f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lushr_3.java
+.class public dxc/junit/opcodes/lushr/jm/T_lushr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DI)J
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+    iload_3
+    lushr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_3.java
new file mode 100644
index 0000000..a349f21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lushr.jm;
+
+public class T_lushr_3 {
+
+    public long run(double a, int b) {
+        return (long)a >>> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_4.j
new file mode 100644
index 0000000..0713473
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lushr_4.java
+.class public dxc/junit/opcodes/lushr/jm/T_lushr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)J
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    lushr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_4.java
new file mode 100644
index 0000000..f2c2dbd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lushr.jm;
+
+public class T_lushr_4 {
+
+    public long run(int a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_5.j
new file mode 100644
index 0000000..2d9f06e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lushr_5.java
+.class public dxc/junit/opcodes/lushr/jm/T_lushr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FI)J
+    .limit stack 3
+    .limit locals 3
+
+    fload_1
+    iload_2
+    lushr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_5.java
new file mode 100644
index 0000000..0ac3afd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lushr.jm;
+
+public class T_lushr_5 {
+
+    public long run(float a, int b) {
+        return (long)a >>> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_6.j
new file mode 100644
index 0000000..6c5158f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lushr_6.java
+.class public dxc/junit/opcodes/lushr/jm/T_lushr_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+    aload_0
+    iload_3
+    lushr
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_6.java
new file mode 100644
index 0000000..cc32717
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lushr.jm;
+
+public class T_lushr_6 {
+
+    public long run(long a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/Test_lxor.java b/tools/dx-tests/src/dxc/junit/opcodes/lxor/Test_lxor.java
new file mode 100644
index 0000000..567c548
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/Test_lxor.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lxor;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lxor.jm.T_lxor_1;
+
+public class Test_lxor extends DxTestCase {
+
+    /**
+     * @title Arguments = 23423432423777l, 23423432423778l
+     */
+    public void testN1() {
+        T_lxor_1 t = new T_lxor_1();
+        assertEquals(3, t.run(23423432423777l, 23423432423778l));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff5, 0xfffffff1
+     */
+    public void testN2() {
+        T_lxor_1 t = new T_lxor_1();
+        assertEquals(4, t.run(0xfffffff5, 0xfffffff1));
+    }
+
+    /**
+     * @title  Arguments = 0xABCDEFAB & -1
+     */
+    public void testN3() {
+        T_lxor_1 t = new T_lxor_1();
+        assertEquals(0x54321054, t.run(0xABCDEFAB, -1l));
+    }
+
+    /**
+     * @title  Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_lxor_1 t = new T_lxor_1();
+        assertEquals(-1l, t.run(0l, -1l));
+    }
+
+    /**
+     * @title  Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_lxor_1 t = new T_lxor_1();
+        assertEquals(0xffffffff, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Long.MAX_VALUE & Long.MAX_VALUE
+     */
+    public void testB3() {
+        T_lxor_1 t = new T_lxor_1();
+        assertEquals(0l, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lxor.jm.T_lxor_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lxor.jm.T_lxor_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lxor.jm.T_lxor_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float & long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lxor.jm.T_lxor_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lxor.jm.T_lxor_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_1.j
new file mode 100644
index 0000000..a6d08d1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lxor_1.java
+.class public dxc/junit/opcodes/lxor/jm/T_lxor_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+    
+    lload_1
+    lload_3
+    lxor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_1.java
new file mode 100644
index 0000000..e7e1c94
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lxor.jm;
+
+public class T_lxor_1 {
+
+    public long run(long a, long b) {
+        return a ^ b; 
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_2.j
new file mode 100644
index 0000000..4510c47
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lxor_2.java
+.class public dxc/junit/opcodes/lxor/jm/T_lxor_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+;    lload_3
+    lxor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_2.java
new file mode 100644
index 0000000..2216760
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lxor.jm;
+
+public class T_lxor_2 {
+
+    public long run(long a, long b) {
+        return a ^ b; 
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_3.j
new file mode 100644
index 0000000..b0ff453
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lxor_3.java
+.class public dxc/junit/opcodes/lxor/jm/T_lxor_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DJ)J
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    lload_3
+    lxor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_3.java
new file mode 100644
index 0000000..7dc6d0a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lxor.jm;
+
+public class T_lxor_3 {
+
+    public long run(double a, long b) {
+        return (long)a ^ b; 
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_4.j
new file mode 100644
index 0000000..2c39d88
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lxor_4.java
+.class public dxc/junit/opcodes/lxor/jm/T_lxor_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(IJ)J
+    .limit stack 4
+    .limit locals 4
+
+    iload_1
+    lload_2
+    lxor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_4.java
new file mode 100644
index 0000000..aeb756e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lxor.jm;
+
+public class T_lxor_4 {
+
+    public long run(int a, long b) {
+        return a ^ b; 
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_5.j
new file mode 100644
index 0000000..72d4a35
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lxor_5.java
+.class public dxc/junit/opcodes/lxor/jm/T_lxor_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FJ)J
+    .limit stack 4
+    .limit locals 4
+
+    fload_1
+    lload_2
+    lxor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_5.java
new file mode 100644
index 0000000..3310cb1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lxor.jm;
+
+public class T_lxor_5 {
+
+    public long run(float a, long b) {
+        return (long)a ^ b; 
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_6.j
new file mode 100644
index 0000000..aaa389b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_lxor_6.java
+.class public dxc/junit/opcodes/lxor/jm/T_lxor_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    aload_0
+    lload_3
+    lxor
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_6.java
new file mode 100644
index 0000000..390a570
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.lxor.jm;
+
+public class T_lxor_6 {
+
+    public long run(long a, long b) {
+        return a ^ b; 
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/Test_monitorenter.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/Test_monitorenter.java
new file mode 100644
index 0000000..a47cc26
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/Test_monitorenter.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.monitorenter;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.monitorenter.jm.T_monitorenter_1;
+import dxc.junit.opcodes.monitorenter.jm.T_monitorenter_2;
+import dxc.junit.opcodes.monitorenter.jm.T_monitorenter_4;
+
+public class Test_monitorenter extends DxTestCase {
+
+    /**
+     * @title normal test
+     * 
+     * @throws InterruptedException
+     */
+    public void testN1() throws InterruptedException {
+        //@uses dxc.junit.opcodes.monitorenter.TestRunnable
+        final T_monitorenter_1 t1 = new T_monitorenter_1();
+        Runnable r1 = new TestRunnable(t1);
+        Runnable r2 = new TestRunnable(t1);
+        Thread tr1 = new Thread(r1);
+        Thread tr2 = new Thread(r2);
+        tr1.start();
+        tr2.start();
+
+        tr1.join();
+        tr2.join();
+        assertEquals(2, t1.counter);
+    }
+
+    /**
+     * @title  Tests behavior when monitor owned by current thread.
+     * 
+     * @throws InterruptedException
+     */
+    public void testN2() throws InterruptedException {
+        //@uses dxc.junit.opcodes.monitorenter.TestRunnable2
+        final T_monitorenter_2 t1 = new T_monitorenter_2();
+        Runnable r1 = new TestRunnable2(t1, 10);
+        Runnable r2 = new TestRunnable2(t1, 20);
+        Thread tr1 = new Thread(r1);
+        Thread tr2 = new Thread(r2);
+        tr1.start();
+        tr2.start();
+
+        tr1.join();
+        tr2.join();
+        assertTrue(t1.result);
+    }
+
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE1() {
+        T_monitorenter_4 t = new T_monitorenter_4();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.monitorenter.jm.T_monitorenter_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.monitorenter.jm.T_monitorenter_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
+
+class TestRunnable implements Runnable {
+    private T_monitorenter_1 t1;
+    TestRunnable(T_monitorenter_1 t1) {
+        this.t1 = t1;
+    }
+    
+    public void run() {
+        try {
+            t1.run();
+        } catch (InterruptedException e) {
+            throw new RuntimeException("interrupted!");
+        }
+    }
+}
+
+class TestRunnable2 implements Runnable {
+    private T_monitorenter_2 t2;
+    private int val;
+    TestRunnable2(T_monitorenter_2 t2, int val) {
+        this.t2 = t2;
+        this.val = val;
+    }
+    
+    public void run() {
+        try {
+            t2.run(val);
+        } catch (InterruptedException e) {
+            throw new RuntimeException("interrupted!");
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_1.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_1.j
new file mode 100644
index 0000000..0ea107d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_1.j
@@ -0,0 +1,83 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitorenter_1.java
+.class public dxc/junit/opcodes/monitorenter/jm/T_monitorenter_1
+.super java/lang/Object
+
+.field public counter I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_1.counter I
+
+    return
+.end method
+
+
+.method public run()V
+    .throws java/lang/InterruptedException
+    .limit stack 3
+    .limit locals 3
+    
+Label1:
+    aload_0
+    dup
+    astore_1
+    monitorenter
+
+Label5:
+    aload_0
+    getfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_1.counter I
+    istore_2
+
+Label3:
+    ldc2_w 500
+    invokestatic java/lang/Thread/sleep(J)V
+
+    aload_0
+    iinc 2 1
+    iload_2
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_1.counter I
+
+Label4:
+    aload_1
+    monitorexit
+
+Label6:
+    goto Label0
+
+Label7:
+    aload_1
+    monitorexit
+
+Label9:
+    aload_0
+    iconst_m1
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_1.counter I
+    athrow
+
+Label0:
+    return
+
+.catch all from Label5 to Label6 using Label7
+.catch all from Label7 to Label9 using Label7
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_1.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_1.java
new file mode 100644
index 0000000..5632c81
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_1.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.monitorenter.jm;
+
+public class T_monitorenter_1 {
+    public int counter = 0;
+    
+    public void run() throws InterruptedException  {
+        synchronized(this) {
+            int a = counter;
+            Thread.sleep(500);
+            counter = ++a;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_2.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_2.j
new file mode 100644
index 0000000..5927fed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_2.j
@@ -0,0 +1,118 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitorenter_2.java
+.class public dxc/junit/opcodes/monitorenter/jm/T_monitorenter_2
+.super java/lang/Object
+
+.field private flg I
+.field public result Z
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_2.flg I
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_2.result Z
+
+    return
+.end method
+
+
+
+.method public run(I)V
+    .throws java/lang/InterruptedException
+    .limit stack 3
+    .limit locals 4
+
+    aload_0
+    dup
+    astore_2
+    monitorenter
+
+Label13:
+    aload_0
+    dup
+    astore_3
+    monitorenter
+
+Label7:
+    aload_0
+    iload_1
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_2.flg I
+
+    aload_3
+    monitorexit
+
+Label8:
+    goto Label0
+
+Label9:
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_2.result Z
+
+    aload_3
+    monitorexit
+
+Label11:
+    athrow
+
+Label0:
+    ldc2_w 500
+    invokestatic java/lang/Thread/sleep(J)V
+
+    aload_0
+    getfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_2.flg I
+    iload_1
+    if_icmpeq Label1
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_2.result Z
+
+Label1:
+    aload_2
+    monitorexit
+
+Label14:
+    goto Label2
+
+Label15:
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_2.result Z
+
+    aload_2
+    monitorexit
+
+Label17:
+    athrow
+
+Label2:
+    return
+
+.catch all from Label7 to Label8 using Label9
+.catch all from Label9 to Label11 using Label9
+.catch all from Label13 to Label14 using Label15
+.catch all from Label15 to Label17 using Label15
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_2.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_2.java
new file mode 100644
index 0000000..ef7387d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_2.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.monitorenter.jm;
+
+public class T_monitorenter_2 {
+
+     private int flg = 0;
+     public boolean result = true;
+        
+     public void run(int v) throws InterruptedException  {
+         synchronized(this) {
+             synchronized(this) {
+                 flg = v;
+             }
+             Thread.sleep(500);
+             if(flg != v) {
+                 result = false;
+             }
+         }
+     }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_4.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_4.j
new file mode 100644
index 0000000..8c08eeb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitorenter_5.java
+.class public dxc/junit/opcodes/monitorenter/jm/T_monitorenter_5
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 2
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .throws java/lang/InterruptedException
+    .limit stack 2
+    .limit locals 3
+
+    aconst_null
+    monitorenter
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_4.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_4.java
new file mode 100644
index 0000000..04b8e6b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.monitorenter.jm;
+
+public class T_monitorenter_4 {
+
+    public void run() {
+        Object o = null;
+        synchronized(o) {
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_5.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_5.j
new file mode 100644
index 0000000..4850486
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitorenter_5.java
+.class public dxc/junit/opcodes/monitorenter/jm/T_monitorenter_5
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 2
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .throws java/lang/InterruptedException
+    .limit stack 2
+    .limit locals 3
+
+;    aload_0    
+    iconst_1
+    monitorenter
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_5.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_5.java
new file mode 100644
index 0000000..02ac602
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.monitorenter.jm;
+
+public class T_monitorenter_5 {
+
+    public void run() {
+        synchronized(this) {
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_6.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_6.j
new file mode 100644
index 0000000..625ec89
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitorenter_6.java
+.class public dxc/junit/opcodes/monitorenter/jm/T_monitorenter_6
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 2
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .throws java/lang/InterruptedException
+    .limit stack 2
+    .limit locals 3
+
+;    aload_0    
+    monitorenter
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_6.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_6.java
new file mode 100644
index 0000000..303a03d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.monitorenter.jm;
+
+public class T_monitorenter_6 {
+    
+    public void run() {
+        synchronized(this) {
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/Test_monitorexit.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/Test_monitorexit.java
new file mode 100644
index 0000000..b4924b6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/Test_monitorexit.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.monitorexit;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.monitorexit.jm.T_monitorexit_2;
+import dxc.junit.opcodes.monitorexit.jm.T_monitorexit_3;
+import dxc.junit.opcodes.monitorexit.jm.T_monitorexit_4;
+
+public class Test_monitorexit extends DxTestCase {
+
+    /**
+     * @title  thread is not monitor owner
+     */
+    public void testE1() throws InterruptedException {
+        //@uses dxc.junit.opcodes.monitorexit.TestRunnable
+        final T_monitorexit_2 t = new T_monitorexit_2();
+        final Object o = new Object();
+
+        Runnable r = new TestRunnable(t, o);
+
+        synchronized (o) {
+            Thread th = new Thread(r);
+            th.start();
+            th.join();
+        }
+        if (t.result == false) {
+            fail("expected IllegalMonitorStateException");
+        }
+    }
+
+
+    /**
+     * @title  structural lock rules violation
+     */
+    public void testE2() {
+        T_monitorexit_3 t = new T_monitorexit_3();
+        try {
+            t.run();
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        T_monitorexit_4 t = new T_monitorexit_4();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.monitorexit.jm.T_monitorexit_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.monitorexit.jm.T_monitorexit_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
+
+
+class TestRunnable implements Runnable {
+    private T_monitorexit_2 t;
+    private Object o;
+
+    public TestRunnable(T_monitorexit_2 t, Object o) {
+        this.t = t;
+        this.o = o;
+    }
+
+    public void run() {
+        try {
+            t.run(o);
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+            t.result = true;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_2.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_2.j
new file mode 100644
index 0000000..a376e05
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_2.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitorexit_2.java
+.class public dxc/junit/opcodes/monitorexit/jm/T_monitorexit_2
+.super java/lang/Object
+
+.field public result Z
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.monitorexit.jm.T_monitorexit_2.result Z
+    
+    return
+.end method
+
+
+.method public run(Ljava/lang/Object;)V
+    .limit stack 2
+    .limit locals 2
+
+    aload_1
+    monitorexit
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_2.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_2.java
new file mode 100644
index 0000000..de7086f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_2.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.monitorexit.jm;
+
+public class T_monitorexit_2 {
+
+    public boolean result = false;
+    
+    public void run(Object o) {
+        synchronized(o) {
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_3.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_3.j
new file mode 100644
index 0000000..8c4be70
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_3.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitorexit_3.java
+.class public dxc/junit/opcodes/monitorexit/jm/T_monitorexit_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    monitorenter
+    aload_0    
+    monitorexit
+
+    aload_0    
+    monitorexit
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_3.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_3.java
new file mode 100644
index 0000000..99aefa4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.monitorexit.jm;
+
+public class T_monitorexit_3 {
+
+    public void run() {
+        synchronized(this) {
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_4.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_4.j
new file mode 100644
index 0000000..9c110b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_4.j
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitorexit_4.java
+.class public dxc/junit/opcodes/monitorexit/jm/T_monitorexit_4
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    monitorenter
+    
+Label1:    
+    aconst_null
+    monitorexit
+Label2:
+    goto Label4
+
+Label3:
+    aload_0
+    monitorexit
+    athrow
+Label4:
+    return
+    
+.catch all from Label1 to Label2 using Label3    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_4.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_4.java
new file mode 100644
index 0000000..14bcbd9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.monitorexit.jm;
+
+public class T_monitorexit_4 {
+
+    public void run() {
+        synchronized(this) {
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_5.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_5.j
new file mode 100644
index 0000000..d60a777
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitorexit_5.java
+.class public dxc/junit/opcodes/monitorexit/jm/T_monitorexit_5
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    monitorenter
+;    aload_0
+    monitorexit
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_5.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_5.java
new file mode 100644
index 0000000..5210071
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.monitorexit.jm;
+
+public class T_monitorexit_5 {
+
+    public void run() {
+        synchronized(this) {
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_6.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_6.j
new file mode 100644
index 0000000..a56c030
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_6.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitorexit_6.java
+.class public dxc/junit/opcodes/monitorexit/jm/T_monitorexit_6
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    monitorenter
+    iconst_1
+    monitorexit
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_6.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_6.java
new file mode 100644
index 0000000..d7e9825
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.monitorexit.jm;
+
+public class T_monitorexit_6 {
+
+    public void run() {
+        synchronized(this) {
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/Test_multianewarray.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/Test_multianewarray.java
new file mode 100644
index 0000000..0d2d0fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/Test_multianewarray.java
@@ -0,0 +1,216 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.multianewarray;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.multianewarray.jm.T_multianewarray_1;
+import dxc.junit.opcodes.multianewarray.jm.T_multianewarray_2;
+import dxc.junit.opcodes.multianewarray.jm.T_multianewarray_7;
+import dxc.junit.opcodes.multianewarray.jm.T_multianewarray_9;
+
+public class Test_multianewarray extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_multianewarray_1 t = new T_multianewarray_1();
+        String[][][] res = t.run(2, 5, 4);
+
+        assertEquals(2, res.length);
+
+        // check default initialization
+        for (int i = 0; i < 2; i++) {
+            assertEquals(5, res[i].length);
+
+            for (int j = 0; j < 5; j++) {
+                assertEquals(4, res[i][j].length);
+
+                for (int k = 0; j < 4; j++) {
+                    assertNull(res[i][j][k]);
+                }
+            }
+        }
+    }
+
+    /**
+     * @title  if count is zero, no subsequent dimensions allocated
+     */
+    public void testN2() {
+        T_multianewarray_1 t = new T_multianewarray_1();
+        String[][][] res = t.run(2, 0, 4);
+
+        try {
+            String s = res[2][0][0];
+            fail("expected ArrayIndexOutOfBoundsException");
+            fail("dummy for s "+s);
+        } catch (ArrayIndexOutOfBoundsException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  multinewarray must only be used to create array with
+     * dimensions specified by dimensions operand
+     */
+    public void testN3() {
+        T_multianewarray_9 t = new T_multianewarray_9();
+        String[][][] res = t.run(2, 1, 4);
+
+        if (res.length != 2) fail("incorrect multiarray length");
+        if (res[0].length != 1) fail("incorrect array length");
+
+        try {
+            int i = res[0][0].length;
+            fail("expected NullPointerException");
+            fail("dummy for i "+i);
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NegativeArraySizeException
+     */
+    public void testE1() {
+        T_multianewarray_1 t = new T_multianewarray_1();
+        try {
+            t.run(2, -5, 3);
+            fail("expected NegativeArraySizeException");
+        } catch (NegativeArraySizeException nase) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected IllegalAccessError
+     */
+    public void testE2() {
+        // @uses dxc.junit.opcodes.multianewarray.jm.sub.TestStubs$TestStub
+        try {
+            T_multianewarray_2 t = new T_multianewarray_2();
+            t.run(2, 5, 3);
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoClassDefFoundError
+     */
+    public void testE3() {
+        try {
+        T_multianewarray_7 t = new T_multianewarray_7();
+            t.run(2, 5, 3);
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.16
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.multianewarray.jm.T_multianewarray_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.multianewarray.jm.T_multianewarray_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE3() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.multianewarray.jm.T_multianewarray_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.19
+     * @title dimension size must not be zero
+     */
+    public void testVFE4() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.multianewarray.jm.T_multianewarray_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.16
+     * @title constant pool type
+     */
+    public void testVFE5() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.multianewarray.jm.T_multianewarray_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE6() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.multianewarray.jm.T_multianewarray_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_1.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_1.j
new file mode 100644
index 0000000..745bb41
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_1.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_multianewarray_1.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(III)[[[Ljava/lang/String;
+    .limit stack 3
+    .limit locals 4
+    iload_1
+    iload_2
+    iload_3
+    multianewarray [[[Ljava/lang/String; 3
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_1.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_1.java
new file mode 100644
index 0000000..8acf7ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_1 {
+
+    public String[][][] run(int d1, int d2, int d3) {
+        return new String[d1][d2][d3];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_10.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_10.j
new file mode 100644
index 0000000..2fc8358
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_10.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_multianewarray_10.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)[[Ljava/lang/String;
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    aload_0
+    multianewarray [[Ljava/lang/String; 2
+    areturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_10.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_10.java
new file mode 100644
index 0000000..3ee7dc1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_10 {
+    
+    public String[][] run(int d1, int d2) {
+        return new String[d1][d2];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_2.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_2.j
new file mode 100644
index 0000000..6fe2d3f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_multianewarray_2.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(III)V
+    .limit stack 3
+    .limit locals 4
+    iload_1
+    iload_2
+    iload_3
+    multianewarray [[[Ldxc/junit/opcodes/multianewarray/jm/sub/TestStubs$TestStub; 3
+    pop
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_2.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_2.java
new file mode 100644
index 0000000..fd248e2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_2 {
+
+    public void run(int d1, int d2, int d3) {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.cfh
new file mode 100644
index 0000000..58462bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0010
+// .  .  
+   00 10 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 08 
+    // parsed:, offset 15, len 57, h: 0002: utf8{"dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3"}
+    // .  .  6  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  m  u  l  t  i  a  n  e  w  a  r  r  a  y  /  j  m  /  T  _  m  u  l  t  i  a  n  e  w  a  r  r  a  y  _  3  
+       01 00 36 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6d 75 6c 74 69 61 6e 65 77 61 72 72 61 79 2f 6a 6d 2f 54 5f 6d 75 6c 74 69 61 6e 65 77 61 72 72 61 79 5f 33 
+    // parsed:, offset 72, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 91, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 104, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 113, len 3, h: 0006: type{dxc.junit.opcodes.multianewarray.jm.T_multianewarray_3}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 116, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 122, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0c 
+    // parsed:, offset 127, len 26, h: 0009: utf8{"T_multianewarray_3.java"}
+    // .  .  .  T  _  m  u  l  t  i  a  n  e  w  a  r  r  a  y  _  3  .  j  a  v  a  
+       01 00 17 54 5f 6d 75 6c 74 69 61 6e 65 77 61 72 72 61 79 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 153, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 160, len 24, h: 000b: utf8{"[[[Ljava/lang/String;"}
+    // .  .  .  [  [  [  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  
+       01 00 15 5b 5b 5b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 
+    // parsed:, offset 184, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 190, len 29, h: 000d: utf8{"(III)[[[Ljava/lang/String;"}
+    // .  .  .  (  I  I  I  )  [  [  [  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  
+       01 00 1a 28 49 49 49 29 5b 5b 5b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 
+    // parsed:, offset 219, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 222, len 3, h: 000f: type{java.lang.String[][][]}
+    // .  .  .  
+       07 00 0b 
+// parsed:, offset 225, len 0, h: end constant_pool
+// parsed:, offset 225, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 227, len 2, h: this_class: type{dxc.junit.opcodes.multianewarray.jm.T_multianewarray_3}
+// .  .  
+   00 06 
+// parsed:, offset 229, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 231, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 233, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 235, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 237, len:75,desc: ()V
+// parsed:, offset 237, len 0, h:  methods[0]: 
+    // parsed:, offset 237, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 239, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 241, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 243, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 245, len 0, h:  attributes[0]: 
+        // parsed:, offset 245, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 247, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 251, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 253, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 255, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 264, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 266, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 268, len 0, h: end attributes[0] 
+// parsed:, offset 268, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 268, len:44,desc: (III)[[[Ljava/lang/String;
+// parsed:, offset 268, len 0, h:  methods[1]: 
+    // parsed:, offset 268, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 270, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 272, len 2, h: descriptor: (III)[[[Ljava/lang/String;
+    // .  .  
+       00 0d 
+    // parsed:, offset 274, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 276, len 0, h:  attributes[0]: 
+        // parsed:, offset 276, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 278, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 282, len 2, h: max_stack: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 284, len 2, h: max_locals: 0004
+        // .  .  
+           00 04 
+        // parsed:, offset 286, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 1, h: 0002: iload_3 // 03
+        // .  
+           1d 
+        // parsed:, offset 3, len 4, h: 0003: multianewarray type{java.lang.String[][][]}, 03
+        // .  .  .  .  
+//@mod           c5 00 0f 03 
+           c5 01 0f 03 
+        // parsed:, offset 7, len 1, h: 0007: areturn
+        // .  
+           b0 
+        // parsed:, offset 298, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 300, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 302, len 0, h: end attributes[0] 
+// parsed:, offset 302, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (III)[[[Ljava/lang/String;
+// parsed:, offset 302, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 304, len 0, h:  attributes[0]: 
+    // parsed:, offset 304, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 306, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 310, len 2, h: source: utf8{"T_multianewarray_3.java"}
+    // .  .  
+       00 09 
+// parsed:, offset 312, len 0, h: end attributes[0] 
+// parsed:, offset 312, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.j
new file mode 100644
index 0000000..7ca4a03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_multianewarray_3.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(III)[[[Ljava/lang/String;
+    .limit stack 3
+    .limit locals 4
+    iload_1
+    iload_2
+    iload_3
+    multianewarray [[[Ljava/lang/String; 3
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.java
new file mode 100644
index 0000000..468ff6e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_3 {
+
+    public String[][][] run(int d1, int d2, int d3) {
+        return new String[d1][d2][d3];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_4.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_4.j
new file mode 100644
index 0000000..3583a5a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_4.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_multianewarray_4.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)[[Ljava/lang/String;
+    .limit stack 2
+    .limit locals 3
+    iload_1
+;    iload_2
+    multianewarray [[Ljava/lang/String; 2
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_4.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_4.java
new file mode 100644
index 0000000..24e7c45
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_4 {
+
+    public String[][] run(int d1, int d2) {
+        return new String[d1][d2];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_5.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_5.j
new file mode 100644
index 0000000..825fd4a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_5.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_multianewarray_5.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)[[Ljava/lang/String;
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    fconst_1
+    multianewarray [[Ljava/lang/String; 2
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_5.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_5.java
new file mode 100644
index 0000000..c213317
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_5 {
+
+    public String[][] run(int d1, int d2) {
+        return new String[d1][d2];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_6.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_6.j
new file mode 100644
index 0000000..ef716e4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_6.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_multianewarray_6.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)[[Ljava/lang/String;
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    multianewarray [[Ljava/lang/String; 0
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_6.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_6.java
new file mode 100644
index 0000000..ce6033c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_6 {
+
+    public String[][] run(int d1, int d2) {
+        return new String[d1][d2];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_7.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_7.j
new file mode 100644
index 0000000..bce3003
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_7.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_multianewarray_7.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(III)V
+    .limit stack 3
+    .limit locals 4
+    iload_1
+    iload_2
+    iload_3
+    ; class not found exception
+    multianewarray [[[Ldxc/junit/opcodes/multianewarray/jm/Foobar1; 3
+    pop
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_7.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_7.java
new file mode 100644
index 0000000..27939ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_7 {
+
+    public void run(int d1, int d2, int d3) {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.cfh b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.cfh
new file mode 100644
index 0000000..9228061
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.cfh
@@ -0,0 +1,206 @@
+//@class:dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0011
+// .  .  
+   00 11 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 09 
+    // parsed:, offset 67, len 7, h: 0007: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 74, len 24, h: 0008: utf8{"[[[Ljava/lang/String;"}
+    // .  .  .  [  [  [  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  
+       01 00 15 5b 5b 5b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 
+    // parsed:, offset 98, len 6, h: 0009: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 104, len 5, h: 000a: float{0x4048f5c3 / 3.14}
+    // .  @  H  .  .  
+       04 40 48 f5 c3 
+    // parsed:, offset 109, len 26, h: 000b: utf8{"T_multianewarray_8.java"}
+    // .  .  .  T  _  m  u  l  t  i  a  n  e  w  a  r  r  a  y  _  8  .  j  a  v  a  
+       01 00 17 54 5f 6d 75 6c 74 69 61 6e 65 77 61 72 72 61 79 5f 38 2e 6a 61 76 61 
+    // parsed:, offset 135, len 3, h: 000c: type{java.lang.String[][][]}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 138, len 57, h: 000d: utf8{"dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8"}
+    // .  .  6  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  m  u  l  t  i  a  n  e  w  a  r  r  a  y  /  j  m  /  T  _  m  u  l  t  i  a  n  e  w  a  r  r  a  y  _  8  
+       01 00 36 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6d 75 6c 74 69 61 6e 65 77 61 72 72 61 79 2f 6a 6d 2f 54 5f 6d 75 6c 74 69 61 6e 65 77 61 72 72 61 79 5f 38 
+    // parsed:, offset 195, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 198, len 29, h: 000f: utf8{"(III)[[[Ljava/lang/String;"}
+    // .  .  .  (  I  I  I  )  [  [  [  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  
+       01 00 1a 28 49 49 49 29 5b 5b 5b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 
+    // parsed:, offset 227, len 3, h: 0010: type{dxc.junit.opcodes.multianewarray.jm.T_multianewarray_8}
+    // .  .  .  
+       07 00 0d 
+// parsed:, offset 230, len 0, h: end constant_pool
+// parsed:, offset 230, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 232, len 2, h: this_class: type{dxc.junit.opcodes.multianewarray.jm.T_multianewarray_8}
+// .  .  
+   00 10 
+// parsed:, offset 234, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 236, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 238, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 240, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 242, len:78,desc: ()V
+// parsed:, offset 242, len 0, h:  methods[0]: 
+    // parsed:, offset 242, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 244, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 246, len 2, h: descriptor: ()V
+    // .  .  
+       00 09 
+    // parsed:, offset 248, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 250, len 0, h:  attributes[0]: 
+        // parsed:, offset 250, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 252, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 256, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 258, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 260, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 269, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 271, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 273, len 0, h: end attributes[0] 
+// parsed:, offset 273, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 273, len:47,desc: (III)[[[Ljava/lang/String;
+// parsed:, offset 273, len 0, h:  methods[1]: 
+    // parsed:, offset 273, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 275, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 277, len 2, h: descriptor: (III)[[[Ljava/lang/String;
+    // .  .  
+       00 0f 
+    // parsed:, offset 279, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 281, len 0, h:  attributes[0]: 
+        // parsed:, offset 281, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 283, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 287, len 2, h: max_stack: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 289, len 2, h: max_locals: 0004
+        // .  .  
+           00 04 
+        // parsed:, offset 291, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 2, h: 0000: ldc #4048f5c3 // 3.14
+        // .  .  
+           12 0a 
+        // parsed:, offset 2, len 1, h: 0002: pop
+        // W  
+           57 
+        // parsed:, offset 3, len 1, h: 0003: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 4, len 1, h: 0004: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 5, len 1, h: 0005: iload_3 // 03
+        // .  
+           1d 
+        // parsed:, offset 6, len 4, h: 0006: multianewarray type{java.lang.String[][][]}, 03
+        // .  .  .  .  
+//@mod           c5 00 0c 03 
+           c5 00 0a 03 
+        // parsed:, offset 10, len 1, h: 000a: areturn
+        // .  
+           b0 
+        // parsed:, offset 306, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 308, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 310, len 0, h: end attributes[0] 
+// parsed:, offset 310, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (III)[[[Ljava/lang/String;
+// parsed:, offset 310, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 312, len 0, h:  attributes[0]: 
+    // parsed:, offset 312, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 314, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 318, len 2, h: source: utf8{"T_multianewarray_8.java"}
+    // .  .  
+       00 0b 
+// parsed:, offset 320, len 0, h: end attributes[0] 
+// parsed:, offset 320, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.j
new file mode 100644
index 0000000..5d315c2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_multianewarray_8.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(III)[[[Ljava/lang/String;
+    .limit stack 3
+    .limit locals 4
+    
+    ldc 3.14
+    pop
+    
+    iload_1
+    iload_2
+    iload_3
+    multianewarray [[[Ljava/lang/String; 3
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.java
new file mode 100644
index 0000000..7b4aa01
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_8 {
+
+    public String[][][] run(int d1, int d2, int d3) {
+        return new String[d1][d2][d3];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_9.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_9.j
new file mode 100644
index 0000000..b814c67
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_9.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_multianewarray_9.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_9
+.super java/lang/Object
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(III)[[[Ljava/lang/String;
+    .limit stack 2
+    .limit locals 4
+
+    iload_1
+    iload_2
+    multianewarray [[[Ljava/lang/String; 2
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_9.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_9.java
new file mode 100644
index 0000000..0df794d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_9 {
+
+    public String[][][] run(int d1, int d2, int d3) {
+        return new String[d1][d2][];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/sub/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/sub/TestStubs.java
new file mode 100644
index 0000000..ee091bb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/sub/TestStubs.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm.sub;
+
+public class TestStubs {
+
+    @SuppressWarnings("unused")
+    private class TestStub {
+        // used by testE2
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/Test_newarray.java b/tools/dx-tests/src/dxc/junit/opcodes/newarray/Test_newarray.java
new file mode 100644
index 0000000..4126bba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/Test_newarray.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.newarray;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.newarray.jm.T_newarray_1;
+import dxc.junit.opcodes.newarray.jm.T_newarray_2;
+
+public class Test_newarray extends DxTestCase {
+
+    /**
+     * @title  Array of ints
+     */
+    public void testN1() {
+        T_newarray_1 t = new T_newarray_1();
+        int[] r = t.run(10);
+        int l = r.length;
+        assertEquals(10, l);
+
+        // check default initialization
+        for (int i = 0; i < l; i++) {
+            assertEquals(0, r[i]);
+        }
+
+    }
+
+    /**
+     * @title  Array of floats
+     */
+    public void testN2() {
+        T_newarray_2 t = new T_newarray_2();
+        float[] r = t.run(10);
+        int l = r.length;
+        assertEquals(10, l);
+
+        // check default initialization
+        for (int i = 0; i < l; i++) {
+            assertEquals(0f, r[i]);
+        }
+    }
+
+    /**
+     * @title expected NegativeArraySizeException
+     */
+    public void testE1() {
+        T_newarray_2 t = new T_newarray_2();
+        try {
+            t.run(-1);
+            fail("expected NegativeArraySizeException");
+        } catch (NegativeArraySizeException nase) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Array size = 0
+     */
+    public void testB1() {
+        T_newarray_1 t = new T_newarray_1();
+        int[] r = t.run(0);
+        assertNotNull(r);
+        assertEquals(0, r.length);
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.newarray.jm.T_newarray_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.newarray.jm.T_newarray_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.20
+     * @title atype must take one of the following
+     * values
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.newarray.jm.T_newarray_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.newarray.jm.T_newarray_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_1.j b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_1.j
new file mode 100644
index 0000000..afe0883
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_newarray_1.java
+.class public dxc/junit/opcodes/newarray/jm/T_newarray_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)[I
+    .limit locals 2
+    .limit stack 2
+    iload_1
+    newarray int
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_1.java b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_1.java
new file mode 100644
index 0000000..0d5d439
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.newarray.jm;
+
+public class T_newarray_1 {
+
+    public int[] run(int sz) {
+        return new int[sz];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_2.j b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_2.j
new file mode 100644
index 0000000..a04589d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_2.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_newarray_2.java
+.class public dxc/junit/opcodes/newarray/jm/T_newarray_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)[F
+    .limit locals 2
+    .limit stack 2
+    iload_1
+    newarray float
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_2.java b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_2.java
new file mode 100644
index 0000000..419f2d5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.newarray.jm;
+
+public class T_newarray_2 {
+
+    public float[] run(int sz) {
+        return new float[sz];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_3.j b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_3.j
new file mode 100644
index 0000000..51c1004
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_3.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_newarray_3.java
+.class public dxc/junit/opcodes/newarray/jm/T_newarray_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)[I
+    .limit locals 2
+    .limit stack 2
+;    iload_1
+    newarray int
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_3.java b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_3.java
new file mode 100644
index 0000000..9de24fc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.newarray.jm;
+
+public class T_newarray_3 {
+
+    public int[] run(int sz) {
+        return new int[sz];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_4.j b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_4.j
new file mode 100644
index 0000000..9f56669
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_4.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_newarray_4.java
+.class public dxc/junit/opcodes/newarray/jm/T_newarray_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)[I
+    .limit locals 2
+    .limit stack 2
+;    iload_1
+    fconst_1
+    newarray int
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_4.java b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_4.java
new file mode 100644
index 0000000..1fcb3b8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.newarray.jm;
+
+public class T_newarray_4 {
+
+    public int[] run(int sz) {
+        return new int[sz];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.cfh
new file mode 100644
index 0000000..b59839a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/opcodes/newarray/jm/T_newarray_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 45, h: 0005: utf8{"dxc/junit/opcodes/newarray/jm/T_newarray_5"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  n  e  w  a  r  r  a  y  /  j  m  /  T  _  n  e  w  a  r  r  a  y  _  5  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6e 65 77 61 72 72 61 79 2f 6a 6d 2f 54 5f 6e 65 77 61 72 72 61 79 5f 35 
+    // parsed:, offset 101, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 107, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0c 
+    // parsed:, offset 112, len 3, h: 0008: type{dxc.junit.opcodes.newarray.jm.T_newarray_5}
+    // .  .  .  
+       07 00 05 
+    // parsed:, offset 115, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 122, len 20, h: 000a: utf8{"T_newarray_5.java"}
+    // .  .  .  T  _  n  e  w  a  r  r  a  y  _  5  .  j  a  v  a  
+       01 00 11 54 5f 6e 65 77 61 72 72 61 79 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 142, len 8, h: 000b: utf8{"(I)[I"}
+    // .  .  .  (  I  )  [  I  
+       01 00 05 28 49 29 5b 49 
+    // parsed:, offset 150, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 156, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 159, len 0, h: end constant_pool
+// parsed:, offset 159, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 161, len 2, h: this_class: type{dxc.junit.opcodes.newarray.jm.T_newarray_5}
+// .  .  
+   00 08 
+// parsed:, offset 163, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 165, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 167, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 169, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 171, len:71,desc: ()V
+// parsed:, offset 171, len 0, h:  methods[0]: 
+    // parsed:, offset 171, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 173, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 175, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 177, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 179, len 0, h:  attributes[0]: 
+        // parsed:, offset 179, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 181, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 185, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 187, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 189, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 198, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 200, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 202, len 0, h: end attributes[0] 
+// parsed:, offset 202, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 202, len:40,desc: (I)[I
+// parsed:, offset 202, len 0, h:  methods[1]: 
+    // parsed:, offset 202, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 204, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 206, len 2, h: descriptor: (I)[I
+    // .  .  
+       00 0b 
+    // parsed:, offset 208, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 0, h:  attributes[0]: 
+        // parsed:, offset 210, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 212, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 216, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 218, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 220, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 2, h: 0001: newarray int
+        // .  .  
+//@mod     bc 0a    
+           bc 03 
+        // parsed:, offset 3, len 1, h: 0003: areturn
+        // .  
+           b0 
+        // parsed:, offset 228, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 230, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 232, len 0, h: end attributes[0] 
+// parsed:, offset 232, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)[I
+// parsed:, offset 232, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 234, len 0, h:  attributes[0]: 
+    // parsed:, offset 234, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 236, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 240, len 2, h: source: utf8{"T_newarray_5.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 242, len 0, h: end attributes[0] 
+// parsed:, offset 242, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.j b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.j
new file mode 100644
index 0000000..06737b4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_newarray_5.java
+.class public dxc/junit/opcodes/newarray/jm/T_newarray_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)[I
+    .limit locals 2
+    .limit stack 2
+    iload_1
+    newarray int
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.java b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.java
new file mode 100644
index 0000000..7ad3257
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.newarray.jm;
+
+public class T_newarray_5 {
+
+    public int[] run(int sz) {
+        return new int[sz];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_6.j b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_6.j
new file mode 100644
index 0000000..db58795
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_newarray_6.java
+.class public dxc/junit/opcodes/newarray/jm/T_newarray_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)[I
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    newarray int
+    areturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_6.java b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_6.java
new file mode 100644
index 0000000..6729fa4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.newarray.jm;
+
+public class T_newarray_6 {
+    
+    public int[] run(int sz) {
+        return new int[sz];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/nop/Test_nop.java b/tools/dx-tests/src/dxc/junit/opcodes/nop/Test_nop.java
new file mode 100644
index 0000000..78e019b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/nop/Test_nop.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.nop;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.opcodes.nop.jm.T_nop_1;
+
+public class Test_nop extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_nop_1 t = new T_nop_1();
+        // how do we test nop - e.g. push some data onto the stack, and
+        // test if nothing has changed
+        assertTrue(t.run());
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/nop/jm/T_nop_1.j b/tools/dx-tests/src/dxc/junit/opcodes/nop/jm/T_nop_1.j
new file mode 100644
index 0000000..d4ddbed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/nop/jm/T_nop_1.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_nop_1.java
+.class public dxc/junit/opcodes/nop/jm/T_nop_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 4
+    ldc2_w 12345678
+    nop
+    nop
+    nop
+    nop
+    nop
+    dup2
+    nop
+    nop
+    nop
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+Label0:
+    iconst_0    
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/nop/jm/T_nop_1.java b/tools/dx-tests/src/dxc/junit/opcodes/nop/jm/T_nop_1.java
new file mode 100644
index 0000000..be36869
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/nop/jm/T_nop_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.nop.jm;
+
+public class T_nop_1 {
+
+    public boolean run() {
+      return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/Test_opc_goto.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/Test_opc_goto.java
new file mode 100644
index 0000000..b4a9ccc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/Test_opc_goto.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_goto;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.opc_goto.jm.T_opc_goto_1;
+import dxc.junit.opcodes.opc_goto.jm.T_opc_goto_5;
+
+public class Test_opc_goto extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_opc_goto_1 t = new T_opc_goto_1();
+        assertEquals(0, t.run(20));
+    }
+
+    /**
+     * @title normal test
+     */
+    public void testN2() {
+        T_opc_goto_1 t = new T_opc_goto_1();
+        assertEquals(-20, t.run(-20));
+    }
+
+    /**
+     * @title  negative offset
+     */
+    public void testN3() {
+        T_opc_goto_5 t = new T_opc_goto_5();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target is inside instruction
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_goto.jm.T_opc_goto_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_goto.jm.T_opc_goto_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_goto.jm.T_opc_goto_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_1.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_1.j
new file mode 100644
index 0000000..17477a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_1.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_goto_1.java
+.class public dxc/junit/opcodes/opc_goto/jm/T_opc_goto_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    goto Label0
+
+    Label1:
+    iinc 1 -1
+
+    Label0:
+    iload_1
+    ifgt Label1
+
+    iload_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_1.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_1.java
new file mode 100644
index 0000000..9e50e31
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_goto.jm;
+
+public class T_opc_goto_1 {
+
+    public int run(int a) {
+        while (a > 0) {
+            a--;
+        }
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.cfh b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.cfh
new file mode 100644
index 0000000..82dbe4f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.cfh
@@ -0,0 +1,193 @@
+//@class:dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000f
+// .  .  
+   00 0f 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 67, len 3, h: 0007: type{dxc.junit.opcodes.opc_goto.jm.T_opc_goto_2}
+    // .  .  .  
+       07 00 0a 
+    // parsed:, offset 70, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 77, len 3, h: 0009: string{"a"}
+    // .  .  .  
+       08 00 0c 
+    // parsed:, offset 80, len 45, h: 000a: utf8{"dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  o  p  c  _  g  o  t  o  /  j  m  /  T  _  o  p  c  _  g  o  t  o  _  2  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6f 70 63 5f 67 6f 74 6f 2f 6a 6d 2f 54 5f 6f 70 63 5f 67 6f 74 6f 5f 32 
+    // parsed:, offset 125, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 131, len 4, h: 000c: utf8{"a"}
+    // .  .  .  a  
+       01 00 01 61 
+    // parsed:, offset 135, len 20, h: 000d: utf8{"T_opc_goto_2.java"}
+    // .  .  .  T  _  o  p  c  _  g  o  t  o  _  2  .  j  a  v  a  
+       01 00 11 54 5f 6f 70 63 5f 67 6f 74 6f 5f 32 2e 6a 61 76 61 
+    // parsed:, offset 155, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 158, len 0, h: end constant_pool
+// parsed:, offset 158, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 160, len 2, h: this_class: type{dxc.junit.opcodes.opc_goto.jm.T_opc_goto_2}
+// .  .  
+   00 07 
+// parsed:, offset 162, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 164, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 166, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 168, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 170, len:74,desc: ()V
+// parsed:, offset 170, len 0, h:  methods[0]: 
+    // parsed:, offset 170, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 172, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 174, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 176, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 178, len 0, h:  attributes[0]: 
+        // parsed:, offset 178, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 180, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 184, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 186, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 188, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 197, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 199, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 201, len 0, h: end attributes[0] 
+// parsed:, offset 201, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 201, len:43,desc: ()V
+// parsed:, offset 201, len 0, h:  methods[1]: 
+    // parsed:, offset 201, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 203, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 205, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 207, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 209, len 0, h:  attributes[0]: 
+        // parsed:, offset 209, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 211, len 4, h: length: 00000013
+        // .  .  .  .  
+           00 00 00 13 
+        // parsed:, offset 215, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 217, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 219, len 4, h: code_length: 00000007
+        // .  .  .  .  
+           00 00 00 07 
+        // parsed:, offset 0, len 3, h: 0000: goto 0004
+        // .  .  .  
+//@mod:    a7 00 04 
+// we jump to the parameter of a byte code (was: ldc, now: string "a"), so this 
+// must be rejected by the verifier            
+           a7 00 05
+        // parsed:, offset 3, len 1, h: 0003: return
+        // .  
+           b1 
+        // parsed:, offset 4, len 2, h: 0004: ldc string{"a"}
+        // .  .  
+           12 09 
+        // parsed:, offset 6, len 1, h: 0006: return
+        // .  
+           b1 
+        // parsed:, offset 230, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 232, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 234, len 0, h: end attributes[0] 
+// parsed:, offset 234, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 234, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 236, len 0, h:  attributes[0]: 
+    // parsed:, offset 236, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 238, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 242, len 2, h: source: utf8{"T_opc_goto_2.java"}
+    // .  .  
+       00 0d 
+// parsed:, offset 244, len 0, h: end attributes[0] 
+// parsed:, offset 244, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.j
new file mode 100644
index 0000000..9a155df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_goto_2.java
+.class public dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    goto Label0
+    return
+Label0:    
+    ldc "a"
+    return
+.end method
+
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.java
new file mode 100644
index 0000000..344523d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_goto.jm;
+
+public class T_opc_goto_2 {
+
+    public void run() {
+        String a = "a";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.cfh
new file mode 100644
index 0000000..89cfde8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.cfh
@@ -0,0 +1,191 @@
+//@class:dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000f
+// .  .  
+   00 0f 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 3, h: 0004: string{"a"}
+    // .  .  .  
+       08 00 0d 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 20, h: 0006: utf8{"T_opc_goto_3.java"}
+    // .  .  .  T  _  o  p  c  _  g  o  t  o  _  3  .  j  a  v  a  
+       01 00 11 54 5f 6f 70 63 5f 67 6f 74 6f 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 79, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 85, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0c 
+    // parsed:, offset 90, len 3, h: 0009: type{dxc.junit.opcodes.opc_goto.jm.T_opc_goto_3}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 93, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 100, len 45, h: 000b: utf8{"dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  o  p  c  _  g  o  t  o  /  j  m  /  T  _  o  p  c  _  g  o  t  o  _  3  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6f 70 63 5f 67 6f 74 6f 2f 6a 6d 2f 54 5f 6f 70 63 5f 67 6f 74 6f 5f 33 
+    // parsed:, offset 145, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 151, len 4, h: 000d: utf8{"a"}
+    // .  .  .  a  
+       01 00 01 61 
+    // parsed:, offset 155, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 158, len 0, h: end constant_pool
+// parsed:, offset 158, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 160, len 2, h: this_class: type{dxc.junit.opcodes.opc_goto.jm.T_opc_goto_3}
+// .  .  
+   00 09 
+// parsed:, offset 162, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 164, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 166, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 168, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 170, len:74,desc: ()V
+// parsed:, offset 170, len 0, h:  methods[0]: 
+    // parsed:, offset 170, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 172, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 174, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 176, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 178, len 0, h:  attributes[0]: 
+        // parsed:, offset 178, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 180, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 184, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 186, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 188, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 197, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 199, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 201, len 0, h: end attributes[0] 
+// parsed:, offset 201, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 201, len:43,desc: ()V
+// parsed:, offset 201, len 0, h:  methods[1]: 
+    // parsed:, offset 201, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 203, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 205, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 207, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 209, len 0, h:  attributes[0]: 
+        // parsed:, offset 209, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 211, len 4, h: length: 00000013
+        // .  .  .  .  
+           00 00 00 13 
+        // parsed:, offset 215, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 217, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 219, len 4, h: code_length: 00000007
+        // .  .  .  .  
+           00 00 00 07 
+        // parsed:, offset 0, len 3, h: 0000: goto 0004
+        // .  .  .  
+//@mod           a7 00 04 
+           a7 00 ff 
+        // parsed:, offset 3, len 1, h: 0003: return
+        // .  
+           b1 
+        // parsed:, offset 4, len 2, h: 0004: ldc string{"a"}
+        // .  .  
+           12 04 
+        // parsed:, offset 6, len 1, h: 0006: return
+        // .  
+           b1 
+        // parsed:, offset 230, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 232, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 234, len 0, h: end attributes[0] 
+// parsed:, offset 234, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 234, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 236, len 0, h:  attributes[0]: 
+    // parsed:, offset 236, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 238, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 242, len 2, h: source: utf8{"T_opc_goto_3.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 244, len 0, h: end attributes[0] 
+// parsed:, offset 244, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.j
new file mode 100644
index 0000000..926612c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_goto_3.java
+.class public dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    goto Label0
+    return
+Label0:    
+    ldc "a"
+    return
+.end method
+
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.java
new file mode 100644
index 0000000..243af4f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_goto.jm;
+
+public class T_opc_goto_3 {
+
+    public void run() {
+        String a = "a";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.cfh
new file mode 100644
index 0000000..1b60dd5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.cfh
@@ -0,0 +1,182 @@
+//@class:dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 67, len 3, h: 0007: type{dxc.junit.opcodes.opc_goto.jm.T_opc_goto_4}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 70, len 45, h: 0008: utf8{"dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  o  p  c  _  g  o  t  o  /  j  m  /  T  _  o  p  c  _  g  o  t  o  _  4  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6f 70 63 5f 67 6f 74 6f 2f 6a 6d 2f 54 5f 6f 70 63 5f 67 6f 74 6f 5f 34 
+    // parsed:, offset 115, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 122, len 20, h: 000a: utf8{"T_opc_goto_4.java"}
+    // .  .  .  T  _  o  p  c  _  g  o  t  o  _  4  .  j  a  v  a  
+       01 00 11 54 5f 6f 70 63 5f 67 6f 74 6f 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 142, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 148, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 151, len 0, h: end constant_pool
+// parsed:, offset 151, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 153, len 2, h: this_class: type{dxc.junit.opcodes.opc_goto.jm.T_opc_goto_4}
+// .  .  
+   00 07 
+// parsed:, offset 155, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 157, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 159, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 161, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 163, len:75,desc: ()V
+// parsed:, offset 163, len 0, h:  methods[0]: 
+    // parsed:, offset 163, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 165, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 167, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 169, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 171, len 0, h:  attributes[0]: 
+        // parsed:, offset 171, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 173, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 177, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 179, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 181, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 190, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 192, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 194, len 0, h: end attributes[0] 
+// parsed:, offset 194, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 194, len:44,desc: ()V
+// parsed:, offset 194, len 0, h:  methods[1]: 
+    // parsed:, offset 194, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 196, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 198, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 200, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 202, len 0, h:  attributes[0]: 
+        // parsed:, offset 202, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 204, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 208, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 210, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 212, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 3, h: 0000: goto 0003
+        // .  .  .  
+//@mod           a7 00 03 
+           a7 00 04 
+        // parsed:, offset 3, len 4, h: 0003: wide aload 0000
+        // .  .  .  .  
+           c4 19 00 00 
+        // parsed:, offset 7, len 1, h: 0007: return
+        // .  
+           b1 
+        // parsed:, offset 224, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 226, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 228, len 0, h: end attributes[0] 
+// parsed:, offset 228, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 228, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 230, len 0, h:  attributes[0]: 
+    // parsed:, offset 230, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 232, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 236, len 2, h: source: utf8{"T_opc_goto_4.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 238, len 0, h: end attributes[0] 
+// parsed:, offset 238, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.j
new file mode 100644
index 0000000..9fda78a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_goto_4.java
+.class public dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    goto Label0
+Label0:    
+    aload_w 0
+    return
+.end method
+
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.java
new file mode 100644
index 0000000..1b6e4ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_goto.jm;
+
+public class T_opc_goto_4 {
+
+    public void run() {
+        String a = "a";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_5.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_5.j
new file mode 100644
index 0000000..12e5804
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_goto_5.java
+.class public dxc/junit/opcodes/opc_goto/jm/T_opc_goto_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    goto Label1
+Label0:
+    nop
+    nop
+    nop
+    iconst_1
+    ireturn
+Label1:    
+    goto Label0
+    iconst_0
+    ireturn
+.end method
+
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_5.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_5.java
new file mode 100644
index 0000000..61d7c4d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_goto.jm;
+
+public class T_opc_goto_5 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/TestStubs.java
new file mode 100644
index 0000000..03fb771
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_instanceof;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private class TestStub {
+        // testE1
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/Test_opc_instanceof.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/Test_opc_instanceof.java
new file mode 100644
index 0000000..b5278df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/Test_opc_instanceof.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_instanceof;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_1;
+import dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_2;
+import dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_3;
+import dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_7;
+
+public class Test_opc_instanceof extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_opc_instanceof_1 t = new T_opc_instanceof_1();
+        assertTrue(t.run(""));
+    }
+
+    /**
+     * @title check null value
+     */
+    public void testN2() {
+        T_opc_instanceof_1 t = new T_opc_instanceof_1();
+        assertFalse(t.run(null));
+    }
+
+    /**
+     * @title normal test
+     */
+    public void testN3() {
+        T_opc_instanceof_1 t = new T_opc_instanceof_1();
+        assertFalse(t.run(this));
+    }
+
+    /**
+     * @title normal test
+     */
+    public void testN4() {
+        // @uses dxc.junit.opcodes.opc_instanceof.jm.SubClass
+        // @uses dxc.junit.opcodes.opc_instanceof.jm.SuperClass
+        // @uses dxc.junit.opcodes.opc_instanceof.jm.SuperInterface
+        // @uses dxc.junit.opcodes.opc_instanceof.jm.SuperInterface2
+        T_opc_instanceof_2 t = new T_opc_instanceof_2();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title expected IllegalAccessError
+     */
+    public void testE1() {
+        // @uses dxc.junit.opcodes.opc_instanceof.jm.TestStubs$TestStub
+        T_opc_instanceof_3 t = new T_opc_instanceof_3();
+        try {
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoClassDefFoundError
+     */
+    public void testE2() {
+        T_opc_instanceof_7 t = new T_opc_instanceof_7();
+        try {
+            t.run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+    
+    /**
+     * @constraint 4.8.1.16
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE3() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.16
+     * @title constant pool type
+     */
+    public void testVFE4() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_1.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_1.j
new file mode 100644
index 0000000..07c0fd9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_instanceof_1.java
+.class public dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 1
+    .limit locals 2
+    aload_1
+    instanceof java/lang/String
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_1.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_1.java
new file mode 100644
index 0000000..c9a44fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class T_opc_instanceof_1 {
+
+    public boolean run(Object o) {
+        return (o instanceof String);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_2.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_2.j
new file mode 100644
index 0000000..f5a5675
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_2.j
@@ -0,0 +1,117 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_instanceof_2.java
+.class public dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+    .limit locals 2
+    
+; (SubClass instanceof SuperClass)    
+    new        dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    dup
+    invokespecial dxc/junit/opcodes/opc_instanceof/jm/SubClass.<init>()V
+    instanceof dxc/junit/opcodes/opc_instanceof/jm/SuperClass
+    ifne Label1
+    iconst_1
+    goto LabelExit
+
+Label1:        
+; !(SuperClass instanceof SubClass)    
+    new dxc/junit/opcodes/opc_instanceof/jm/SuperClass
+    dup
+    invokespecial dxc/junit/opcodes/opc_instanceof/jm/SuperClass.<init>()V
+    instanceof dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    ifeq Label2
+    iconst_2
+    goto LabelExit
+    
+Label2:        
+; (SubClass instanceof SuperInterface)    
+    new dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    dup
+    invokespecial dxc/junit/opcodes/opc_instanceof/jm/SubClass.<init>()V    
+    instanceof dxc/junit/opcodes/opc_instanceof/jm/SuperInterface
+    ifne Label3
+    iconst_3
+    goto LabelExit    
+    
+Label3:        
+; !(SubClass instanceof SuperInterface2)    
+    new dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    dup
+    invokespecial dxc/junit/opcodes/opc_instanceof/jm/SubClass.<init>()V    
+    instanceof dxc/junit/opcodes/opc_instanceof/jm/SuperInterface2
+    ifeq Label4
+    iconst_4
+    goto LabelExit        
+    
+Label4:
+; !(SubClass[] instanceof SuperInterface)    
+    iconst_1
+    anewarray dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    instanceof dxc/junit/opcodes/opc_instanceof/jm/SuperInterface
+    ifeq Label6
+    sipush 5
+    goto LabelExit        
+    
+Label6:        
+; (SubClass[] instanceof Object)    
+    iconst_1
+    anewarray dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    instanceof java/lang/Object
+    ifne Label7
+    sipush 7
+    goto LabelExit        
+
+Label7:        
+; !(SubClass[] instanceof SubClass)    
+    iconst_1
+    anewarray dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    instanceof dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    ifeq Label8
+    sipush 8
+    goto LabelExit    
+    
+Label8:        
+; (SubClass[] instanceof SuperClass[])    
+    iconst_1
+    anewarray dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    instanceof [Ldxc/junit/opcodes/opc_instanceof/jm/SuperClass;
+    ifne Label9
+    sipush 9
+    goto LabelExit
+    
+Label9:        
+; !(SuperClass[] instanceof SubClass[])    
+    iconst_1
+    anewarray dxc/junit/opcodes/opc_instanceof/jm/SuperClass
+    instanceof [Ldxc/junit/opcodes/opc_instanceof/jm/SubClass;
+    ifeq Label0
+    sipush 10
+    goto LabelExit    
+        
+Label0:    
+    iconst_0
+LabelExit:
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_2.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_2.java
new file mode 100644
index 0000000..fa3a477
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class T_opc_instanceof_2 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_3.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_3.j
new file mode 100644
index 0000000..cd0e33a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_instanceof_3.java
+.class public dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 3
+    .limit locals 4
+    aload_0
+    instanceof [[[Ldxc/junit/opcodes/opc_instanceof/TestStubs$TestStub;
+    pop
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_3.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_3.java
new file mode 100644
index 0000000..919d541
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class T_opc_instanceof_3 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.cfh
new file mode 100644
index 0000000..6282aac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.cfh
@@ -0,0 +1,191 @@
+//@class:dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0010
+// .  .  
+   00 10 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 57, h: 0003: utf8{"dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4"}
+    // .  .  6  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  o  p  c  _  i  n  s  t  a  n  c  e  o  f  /  j  m  /  T  _  o  p  c  _  i  n  s  t  a  n  c  e  o  f  _  4  
+       01 00 36 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6f 70 63 5f 69 6e 73 74 61 6e 63 65 6f 66 2f 6a 6d 2f 54 5f 6f 70 63 5f 69 6e 73 74 61 6e 63 65 6f 66 5f 34 
+    // parsed:, offset 91, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 104, len 24, h: 0005: utf8{"(Ljava/lang/Object;)Z"}
+    // .  .  .  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 128, len 19, h: 0006: utf8{"java/lang/String"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 
+    // parsed:, offset 147, len 9, h: 0007: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 156, len 6, h: 0008: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 162, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 07 00 0c 
+    // parsed:, offset 167, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 174, len 3, h: 000b: type{java.lang.String}
+    // .  .  .  
+       07 00 06 
+    // parsed:, offset 177, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 183, len 26, h: 000d: utf8{"T_opc_instanceof_4.java"}
+    // .  .  .  T  _  o  p  c  _  i  n  s  t  a  n  c  e  o  f  _  4  .  j  a  v  a  
+       01 00 17 54 5f 6f 70 63 5f 69 6e 73 74 61 6e 63 65 6f 66 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 209, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 212, len 3, h: 000f: type{dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_4}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 215, len 0, h: end constant_pool
+// parsed:, offset 215, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 217, len 2, h: this_class: type{dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_4}
+// .  .  
+   00 0f 
+// parsed:, offset 219, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 221, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 223, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 225, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 227, len:72,desc: ()V
+// parsed:, offset 227, len 0, h:  methods[0]: 
+    // parsed:, offset 227, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 229, len 2, h: name: <init>
+    // .  .  
+       00 07 
+    // parsed:, offset 231, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 233, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 235, len 0, h:  attributes[0]: 
+        // parsed:, offset 235, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 237, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 241, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 243, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 245, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 254, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 256, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 258, len 0, h: end attributes[0] 
+// parsed:, offset 258, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 258, len:41,desc: (Ljava/lang/Object;)Z
+// parsed:, offset 258, len 0, h:  methods[1]: 
+    // parsed:, offset 258, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 260, len 2, h: name: run
+    // .  .  
+       00 08 
+    // parsed:, offset 262, len 2, h: descriptor: (Ljava/lang/Object;)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 264, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 266, len 0, h:  attributes[0]: 
+        // parsed:, offset 266, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 268, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 272, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 274, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 276, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 3, h: 0001: instanceof type{java.lang.String}
+        // .  .  .  
+//@mod           c1 00 0b 
+           c1 01 0b 
+        // parsed:, offset 4, len 1, h: 0004: ireturn
+        // .  
+           ac 
+        // parsed:, offset 285, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 287, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 289, len 0, h: end attributes[0] 
+// parsed:, offset 289, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;)Z
+// parsed:, offset 289, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 291, len 0, h:  attributes[0]: 
+    // parsed:, offset 291, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 293, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 297, len 2, h: source: utf8{"T_opc_instanceof_4.java"}
+    // .  .  
+       00 0d 
+// parsed:, offset 299, len 0, h: end attributes[0] 
+// parsed:, offset 299, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.j
new file mode 100644
index 0000000..ecef8ec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_instanceof_4.java
+.class public dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 1
+    .limit locals 2
+    aload_1
+    instanceof java/lang/String
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.java
new file mode 100644
index 0000000..decdb1c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class T_opc_instanceof_4 {
+
+    public boolean run(Object o) {
+        return (o instanceof String);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_5.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_5.j
new file mode 100644
index 0000000..9765c16
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_5.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_instanceof_5.java
+.class public dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 1
+    .limit locals 2
+
+    fconst_1
+    instanceof java/lang/String
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_5.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_5.java
new file mode 100644
index 0000000..29b53cd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class T_opc_instanceof_5 {
+
+    public boolean run(Object o) {
+        return (o instanceof String);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_6.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_6.j
new file mode 100644
index 0000000..fcba05c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_6.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_instanceof_6.java
+.class public dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 1
+    .limit locals 2
+;    aload_1
+    instanceof java/lang/String
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_6.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_6.java
new file mode 100644
index 0000000..67ad4b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class T_opc_instanceof_6 {
+
+    public boolean run(Object o) {
+        return (o instanceof String);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_7.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_7.j
new file mode 100644
index 0000000..7010432
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_7.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_instanceof_7.java
+.class public dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 3
+    .limit locals 4
+    aload_0
+    ; next: class not found error
+    instanceof [[[Ldxc/junit/opcodes/opc_instanceof/foobar1;
+    pop
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_7.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_7.java
new file mode 100644
index 0000000..8842de6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class T_opc_instanceof_7 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.cfh b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.cfh
new file mode 100644
index 0000000..a680546
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0011
+// .  .  
+   00 11 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 10 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 3, h: 0003: type{java.lang.String}
+    // .  .  .  
+       07 00 0c 
+    // parsed:, offset 37, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 50, len 24, h: 0005: utf8{"(Ljava/lang/Object;)Z"}
+    // .  .  .  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 74, len 26, h: 0006: utf8{"T_opc_instanceof_8.java"}
+    // .  .  .  T  _  o  p  c  _  i  n  s  t  a  n  c  e  o  f  _  8  .  j  a  v  a  
+       01 00 17 54 5f 6f 70 63 5f 69 6e 73 74 61 6e 63 65 6f 66 5f 38 2e 6a 61 76 61 
+    // parsed:, offset 100, len 9, h: 0007: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 109, len 6, h: 0008: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 115, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 07 00 0e 
+    // parsed:, offset 120, len 57, h: 000a: utf8{"dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8"}
+    // .  .  6  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  o  p  c  _  i  n  s  t  a  n  c  e  o  f  /  j  m  /  T  _  o  p  c  _  i  n  s  t  a  n  c  e  o  f  _  8  
+       01 00 36 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6f 70 63 5f 69 6e 73 74 61 6e 63 65 6f 66 2f 6a 6d 2f 54 5f 6f 70 63 5f 69 6e 73 74 61 6e 63 65 6f 66 5f 38 
+    // parsed:, offset 177, len 7, h: 000b: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 184, len 19, h: 000c: utf8{"java/lang/String"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 
+    // parsed:, offset 203, len 3, h: 000d: type{dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_8}
+    // .  .  .  
+       07 00 0a 
+    // parsed:, offset 206, len 6, h: 000e: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 212, len 5, h: 000f: float{0x4048f5c3 / 3.14}
+    // .  @  H  .  .  
+       04 40 48 f5 c3 
+    // parsed:, offset 217, len 3, h: 0010: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 220, len 0, h: end constant_pool
+// parsed:, offset 220, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 222, len 2, h: this_class: type{dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_8}
+// .  .  
+   00 0d 
+// parsed:, offset 224, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 10 
+// parsed:, offset 226, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 228, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 230, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 232, len:75,desc: ()V
+// parsed:, offset 232, len 0, h:  methods[0]: 
+    // parsed:, offset 232, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 234, len 2, h: name: <init>
+    // .  .  
+       00 07 
+    // parsed:, offset 236, len 2, h: descriptor: ()V
+    // .  .  
+       00 0e 
+    // parsed:, offset 238, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 240, len 0, h:  attributes[0]: 
+        // parsed:, offset 240, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 242, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 246, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 248, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 250, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 259, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 261, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 263, len 0, h: end attributes[0] 
+// parsed:, offset 263, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 263, len:44,desc: (Ljava/lang/Object;)Z
+// parsed:, offset 263, len 0, h:  methods[1]: 
+    // parsed:, offset 263, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 265, len 2, h: name: run
+    // .  .  
+       00 08 
+    // parsed:, offset 267, len 2, h: descriptor: (Ljava/lang/Object;)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 269, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 271, len 0, h:  attributes[0]: 
+        // parsed:, offset 271, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 273, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 277, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 279, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 281, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 2, h: 0000: ldc #4048f5c3 // 3.14
+        // .  .  
+           12 0f 
+        // parsed:, offset 2, len 1, h: 0002: pop
+        // W  
+           57 
+        // parsed:, offset 3, len 1, h: 0003: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 4, len 3, h: 0004: instanceof type{java.lang.String}
+        // .  .  .  
+//@mod           c1 00 03 
+           c1 00 0f 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 293, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 295, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 297, len 0, h: end attributes[0] 
+// parsed:, offset 297, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;)Z
+// parsed:, offset 297, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 299, len 0, h:  attributes[0]: 
+    // parsed:, offset 299, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 301, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 305, len 2, h: source: utf8{"T_opc_instanceof_8.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 307, len 0, h: end attributes[0] 
+// parsed:, offset 307, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.j
new file mode 100644
index 0000000..4dd3200
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_instanceof_8.java
+.class public dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 1
+    .limit locals 2
+    
+    ldc 3.14
+    pop
+    
+    aload_1
+    instanceof java/lang/String
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.java
new file mode 100644
index 0000000..8a4990d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class T_opc_instanceof_8 {
+
+    public boolean run(Object o) {
+        return (o instanceof String);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/TestStubs.java
new file mode 100644
index 0000000..cf54729
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/TestStubs.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private class TestStub {
+        // testE1
+    }
+}
+
+interface SuperInterface{
+    
+}
+
+interface SuperInterface2{
+    
+}
+
+class SuperClass implements SuperInterface{
+    
+}
+
+class SubClass extends SuperClass{
+
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/Test_opc_new.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/Test_opc_new.java
new file mode 100644
index 0000000..14b6c64
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/Test_opc_new.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_new;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.opc_new.jm.T_opc_new_1;
+import dxc.junit.opcodes.opc_new.jm.T_opc_new_3;
+import dxc.junit.opcodes.opc_new.jm.T_opc_new_4;
+import dxc.junit.opcodes.opc_new.jm.T_opc_new_5;
+import dxc.junit.opcodes.opc_new.jm.T_opc_new_8;
+import dxc.junit.opcodes.opc_new.jm.T_opc_new_9;
+
+public class Test_opc_new extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_opc_new_1 t = new T_opc_new_1();
+        String s = t.run();
+        assertNotNull(s);
+        assertEquals(0, s.compareTo("abc"));
+    }
+
+    /**
+     * @title expected Error (exception during class loading)
+     */
+    public void testE1() {
+        try {
+            T_opc_new_3.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected IllegalAccessError
+     */
+    public void testE2() {
+        // @uses dxc.junit.opcodes.opc_new.jm.TestStubs$TestStub
+        try {
+            T_opc_new_4 t = new T_opc_new_4();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoClassDefFoundError
+     */
+    public void testE3() {
+        try {
+            T_opc_new_5 t = new T_opc_new_5();
+            t.run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.18 
+     * @title attempt to instantiate interface
+     */
+    public void testE4() {
+        // @uses dxc.junit.opcodes.opc_new.jm.TestInterface
+        try {
+            T_opc_new_8 t = new T_opc_new_8();
+            t.run();
+            fail("expected InstantiationError");
+        } catch (InstantiationError ie) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.18 
+     * @title attempt to instantiate abstract
+     * class
+     */
+    public void testE5() {
+        // @uses dxc.junit.opcodes.opc_new.jm.TestAbstractClass
+        T_opc_new_9 t = new T_opc_new_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.16
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_new.jm.T_opc_new_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.18
+     * @title attempt to create array using new
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_new.jm.T_opc_new_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title  Attempt to access uninitialized class (before <init> is
+     * called)
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_new.jm.T_opc_new_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.16
+     * @title constant pool type
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_new.jm.T_opc_new_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_1.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_1.j
new file mode 100644
index 0000000..63e9ddc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_new_1.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 3
+    .limit locals 1
+
+    new java/lang/String
+    dup
+    ldc "abc"
+    invokespecial java/lang/String/<init>(Ljava/lang/String;)V
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_1.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_1.java
new file mode 100644
index 0000000..9dffdbd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_1 {
+
+    public String run() {
+        return new String("abc");
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.cfh b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.cfh
new file mode 100644
index 0000000..acc5a5d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/opc_new/jm/T_opc_new_10
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000f
+// .  .  
+   00 0f 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 08 
+    // parsed:, offset 15, len 44, h: 0002: utf8{"dxc/junit/opcodes/opc_new/jm/T_opc_new_10"}
+    // .  .  )  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  o  p  c  _  n  e  w  /  j  m  /  T  _  o  p  c  _  n  e  w  _  1  0  
+       01 00 29 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6f 70 63 5f 6e 65 77 2f 6a 6d 2f 54 5f 6f 70 63 5f 6e 65 77 5f 31 30 
+    // parsed:, offset 59, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 78, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 91, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 100, len 23, h: 0006: utf8{"()Ljava/lang/Object;"}
+    // .  .  .  (  )  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  
+       01 00 14 28 29 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 
+    // parsed:, offset 123, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 129, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 134, len 20, h: 0009: utf8{"T_opc_new_10.java"}
+    // .  .  .  T  _  o  p  c  _  n  e  w  _  1  0  .  j  a  v  a  
+       01 00 11 54 5f 6f 70 63 5f 6e 65 77 5f 31 30 2e 6a 61 76 61 
+    // parsed:, offset 154, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 161, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 167, len 5, h: 000c: float{0x4048f5c3 / 3.14}
+    // .  @  H  .  .  
+       04 40 48 f5 c3 
+    // parsed:, offset 172, len 3, h: 000d: type{dxc.junit.opcodes.opc_new.jm.T_opc_new_10}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 175, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 178, len 0, h: end constant_pool
+// parsed:, offset 178, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 180, len 2, h: this_class: type{dxc.junit.opcodes.opc_new.jm.T_opc_new_10}
+// .  .  
+   00 0d 
+// parsed:, offset 182, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 184, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 186, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 188, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 190, len:78,desc: ()V
+// parsed:, offset 190, len 0, h:  methods[0]: 
+    // parsed:, offset 190, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 192, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 194, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 196, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 198, len 0, h:  attributes[0]: 
+        // parsed:, offset 198, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 200, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 204, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 206, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 208, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 217, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 219, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 221, len 0, h: end attributes[0] 
+// parsed:, offset 221, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 221, len:47,desc: ()Ljava/lang/Object;
+// parsed:, offset 221, len 0, h:  methods[1]: 
+    // parsed:, offset 221, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 223, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 225, len 2, h: descriptor: ()Ljava/lang/Object;
+    // .  .  
+       00 06 
+    // parsed:, offset 227, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 229, len 0, h:  attributes[0]: 
+        // parsed:, offset 229, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 231, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 235, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 237, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 239, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 2, h: 0000: ldc #4048f5c3 // 3.14
+        // .  .  
+           12 0c 
+        // parsed:, offset 2, len 1, h: 0002: pop
+        // W  
+           57 
+        // parsed:, offset 3, len 3, h: 0003: new type{java.lang.Object}
+        // .  .  .  
+//@mod           bb 00 0e 
+           bb 00 0c 
+        // parsed:, offset 6, len 1, h: 0006: dup
+        // Y  
+           59 
+        // parsed:, offset 7, len 3, h: 0007: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 10, len 1, h: 000a: areturn
+        // .  
+           b0 
+        // parsed:, offset 254, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 256, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 258, len 0, h: end attributes[0] 
+// parsed:, offset 258, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()Ljava/lang/Object;
+// parsed:, offset 258, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 260, len 0, h:  attributes[0]: 
+    // parsed:, offset 260, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 262, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 266, len 2, h: source: utf8{"T_opc_new_10.java"}
+    // .  .  
+       00 09 
+// parsed:, offset 268, len 0, h: end attributes[0] 
+// parsed:, offset 268, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.j
new file mode 100644
index 0000000..c55935f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_new_10.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 1
+
+    ldc 3.14
+    pop
+
+    new java/lang/Object
+    dup
+    invokespecial java/lang/Object/<init>()V
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.java
new file mode 100644
index 0000000..7b549bb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_10 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_2.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_2.j
new file mode 100644
index 0000000..4dd2001
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_2.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_new_2.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_2
+.super java/lang/Object
+
+.field  i I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    aload_0
+    bipush 123
+    putfield dxc.junit.opcodes.opc_new.jm.T_opc_new_2.i I
+
+    return
+.end method
+
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/opc_new/jm/T_opc_new_2
+    dup
+;    invokespecial dxc/junit/opcodes/opc_new/jm/T_opc_new_2/<init>()V
+    astore_0
+
+    aload_0
+    getfield dxc.junit.opcodes.opc_new.jm.T_opc_new_2.i I
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_2.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_2.java
new file mode 100644
index 0000000..4fe58d0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_2.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_2 {
+    
+    int i = 123;
+
+    public static int run() {
+        T_opc_new_2 t = new T_opc_new_2();
+        return t.i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_3.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_3.j
new file mode 100644
index 0000000..b7d35f8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_3.j
@@ -0,0 +1,61 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_new_3.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_3
+.super java/lang/Object
+
+.field static i I
+
+.method static <clinit>()V
+    .limit stack 2
+    .limit locals 0
+
+    bipush 123
+    iconst_0
+    idiv
+    putstatic dxc.junit.opcodes.opc_new.jm.T_opc_new_3.i I
+
+    return
+
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/opc_new/jm/T_opc_new_3
+    dup
+    invokespecial dxc/junit/opcodes/opc_new/jm/T_opc_new_3/<init>()V
+    astore_0
+
+    getstatic dxc.junit.opcodes.opc_new.jm.T_opc_new_3.i I
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_3.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_3.java
new file mode 100644
index 0000000..9a75f14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_3.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_3 {
+
+    static int i = 123 / 0;
+
+    public static int run() {
+        T_opc_new_3 t = new T_opc_new_3();
+        return t.i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_4.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_4.j
new file mode 100644
index 0000000..e596e9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_new_4.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/opc_new/jm/TestStubs$TestStub
+    dup
+    invokespecial dxc/junit/opcodes/opc_new/jm/TestStubs$TestStub/<init>()V
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_4.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_4.java
new file mode 100644
index 0000000..2a340fa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_4 {
+
+     public Object run() {
+            return null;
+     }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_5.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_5.j
new file mode 100644
index 0000000..8ddb620
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_new_5.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/opc_new/jm/Foobar
+    dup
+    invokespecial dxc/junit/opcodes/opc_new/jm/Foobar/<init>()V
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_5.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_5.java
new file mode 100644
index 0000000..0892739
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_5 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.cfh
new file mode 100644
index 0000000..10917fa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.cfh
@@ -0,0 +1,188 @@
+//@class:dxc/junit/opcodes/opc_new/jm/T_opc_new_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 67, len 23, h: 0007: utf8{"()Ljava/lang/Object;"}
+    // .  .  .  (  )  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  
+       01 00 14 28 29 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 
+    // parsed:, offset 90, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 97, len 43, h: 0009: utf8{"dxc/junit/opcodes/opc_new/jm/T_opc_new_6"}
+    // .  .  (  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  o  p  c  _  n  e  w  /  j  m  /  T  _  o  p  c  _  n  e  w  _  6  
+       01 00 28 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6f 70 63 5f 6e 65 77 2f 6a 6d 2f 54 5f 6f 70 63 5f 6e 65 77 5f 36 
+    // parsed:, offset 140, len 3, h: 000a: type{dxc.junit.opcodes.opc_new.jm.T_opc_new_6}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 143, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 149, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 152, len 19, h: 000d: utf8{"T_opc_new_6.java"}
+    // .  .  .  T  _  o  p  c  _  n  e  w  _  6  .  j  a  v  a  
+       01 00 10 54 5f 6f 70 63 5f 6e 65 77 5f 36 2e 6a 61 76 61 
+// parsed:, offset 171, len 0, h: end constant_pool
+// parsed:, offset 171, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 173, len 2, h: this_class: type{dxc.junit.opcodes.opc_new.jm.T_opc_new_6}
+// .  .  
+   00 0a 
+// parsed:, offset 175, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 177, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 179, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 181, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 183, len:75,desc: ()V
+// parsed:, offset 183, len 0, h:  methods[0]: 
+    // parsed:, offset 183, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 185, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 187, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 189, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 0, h:  attributes[0]: 
+        // parsed:, offset 191, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 193, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 197, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 199, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 201, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 210, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 212, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 214, len 0, h: end attributes[0] 
+// parsed:, offset 214, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 214, len:44,desc: ()Ljava/lang/Object;
+// parsed:, offset 214, len 0, h:  methods[1]: 
+    // parsed:, offset 214, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 218, len 2, h: descriptor: ()Ljava/lang/Object;
+    // .  .  
+       00 07 
+    // parsed:, offset 220, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 222, len 0, h:  attributes[0]: 
+        // parsed:, offset 222, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 224, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 228, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 230, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 232, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 3, h: 0000: new type{java.lang.Object}
+        // .  .  .  
+//@mod           bb 00 0c 
+           bb 01 0c 
+        // parsed:, offset 3, len 1, h: 0003: dup
+        // Y  
+           59 
+        // parsed:, offset 4, len 3, h: 0004: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 7, len 1, h: 0007: areturn
+        // .  
+           b0 
+        // parsed:, offset 244, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 246, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 248, len 0, h: end attributes[0] 
+// parsed:, offset 248, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()Ljava/lang/Object;
+// parsed:, offset 248, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 250, len 0, h:  attributes[0]: 
+    // parsed:, offset 250, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 252, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 256, len 2, h: source: utf8{"T_opc_new_6.java"}
+    // .  .  
+       00 0d 
+// parsed:, offset 258, len 0, h: end attributes[0] 
+// parsed:, offset 258, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.j
new file mode 100644
index 0000000..a6c2e14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_new_6.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 1
+
+    new java/lang/Object
+    dup
+    invokespecial java/lang/Object/<init>()V
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.java
new file mode 100644
index 0000000..3ff3df7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_6 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_7.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_7.j
new file mode 100644
index 0000000..482b25e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_7.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_new_7.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 1
+
+    new [Ljava/lang/Object;
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_7.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_7.java
new file mode 100644
index 0000000..37256b4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_7 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_8.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_8.j
new file mode 100644
index 0000000..8ca522d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_8.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_new_8.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/opc_new/jm/TestInterface
+    dup
+    invokespecial dxc/junit/opcodes/opc_new/jm/TestInterface/<init>()V
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_8.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_8.java
new file mode 100644
index 0000000..dfe9621
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_8 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_9.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_9.j
new file mode 100644
index 0000000..688c678
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_9.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_new_9.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/opc_new/jm/TestAbstractClass
+    dup
+    invokespecial dxc/junit/opcodes/opc_new/jm/TestAbstractClass/<init>()V
+
+    aload_0
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_9.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_9.java
new file mode 100644
index 0000000..8999e7f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_9 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/TestStubs.java
new file mode 100644
index 0000000..7d8214a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/TestStubs.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+
+interface TestInterface {
+    public abstract void test();
+}
+
+abstract class TestAbstractClass{
+    
+}
+
+public class TestStubs {
+    private static @SuppressWarnings("unused") class TestStub {
+        private TestStub() {
+            
+        }
+        // testE3
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/Test_opc_return.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/Test_opc_return.java
new file mode 100644
index 0000000..98b4c94
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/Test_opc_return.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_return;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.opc_return.jm.T_opc_return_1;
+import dxc.junit.opcodes.opc_return.jm.T_opc_return_2;
+import dxc.junit.opcodes.opc_return.jm.T_opc_return_3;
+import dxc.junit.opcodes.opc_return.jm.T_opc_return_4;
+
+public class Test_opc_return extends DxTestCase {
+
+    /**
+     * @title  check that frames are discarded and reinstananted correctly
+     */
+    public void testN1() {
+        T_opc_return_1 t = new T_opc_return_1();
+        assertEquals(123456, t.run());
+    }
+
+    /**
+     * @title  check that monitor is released by return
+     */
+    public void testN2() {
+        assertTrue(T_opc_return_2.execute());
+    }
+
+
+    /**
+     * @title  Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_opc_return_3 t = new T_opc_return_3();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Lock structural rule 1 is violated
+     */
+    public void testE2() {
+        T_opc_return_4 t = new T_opc_return_4();
+        try {
+            t.run();
+            // the JVM spec says that it is optional to implement the structural
+            // lock rules, see JVM spec 8.13 and monitorenter/exit opcodes.
+            System.out.print("dvmvfe:");
+            //fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_return.jm.T_opc_return_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_return.jm.T_opc_return_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_1.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_1.j
new file mode 100644
index 0000000..fe94d2e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_1.j
@@ -0,0 +1,82 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_1.java
+.class public dxc/junit/opcodes/opc_return/jm/T_opc_return_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit locals 6
+    .limit stack 6
+    
+    iconst_1
+    istore_1
+    iconst_2
+    istore_2
+    iconst_3
+    istore 3
+    
+    iconst_4
+    
+    invokestatic dxc/junit/opcodes/opc_return/jm/T_opc_return_1/test()V
+    
+    iconst_4
+    if_icmpne Label0
+    
+    iload_1
+    iconst_1
+    if_icmpne Label0
+    
+    iload_2
+    iconst_2
+    if_icmpne Label0
+    
+    iload_3
+    iconst_3
+    if_icmpne Label0    
+    
+    ldc 123456
+    ireturn
+
+Label1:
+    pop
+Label0:
+    iconst_0
+    ireturn
+
+.end method
+
+.method private static test()V
+    .limit locals 4
+    .limit stack 4
+    
+    ldc 0xaaa
+    istore_1
+    ldc 0xbbbb
+    istore_2
+    ldc 0xcccc
+    istore_3
+    
+    ldc 0xdddd
+    
+    ldc 0xcafe
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_1.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_1.java
new file mode 100644
index 0000000..b2170ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_1.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_return.jm;
+
+public class T_opc_return_1 {
+
+    public int run() {
+        return 123456;
+    }
+    
+    private static void test() {
+        int a = 0xaaaa;
+        int b = 0xbbbb;
+        int c = 0xcccc;
+        return;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_2.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_2.j
new file mode 100644
index 0000000..b6f383b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_2.j
@@ -0,0 +1,159 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_2.java
+.class public dxc/junit/opcodes/opc_return/jm/T_opc_return_2
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field  value I
+.field  failed Z
+
+.method public <init>()V
+    .limit stack 3
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.opc_return.jm.T_opc_return_2.value I
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.opc_return.jm.T_opc_return_2.failed Z
+
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+   
+    iconst_0
+    istore_1
+
+Label4:
+    iload_1
+    sipush 1000
+    if_icmpge Label3
+
+    aload_0
+    invokespecial dxc/junit/opcodes/opc_return/jm/T_opc_return_2/test()V
+
+    iinc 1 1
+
+    goto Label4
+
+
+Label3:
+    return
+
+.end method
+
+
+
+.method private synchronized test()V
+    .limit stack 3
+    .limit locals 2
+    
+.line 16
+    aload_0
+    dup
+    getfield dxc.junit.opcodes.opc_return.jm.T_opc_return_2.value I
+    dup
+    istore_1
+
+    iconst_1
+    iadd
+    putfield dxc.junit.opcodes.opc_return.jm.T_opc_return_2.value I
+
+    iinc 1 1
+
+    invokestatic java/lang/Thread/yield()V
+
+    iload_1
+    aload_0
+    getfield dxc.junit.opcodes.opc_return.jm.T_opc_return_2.value I
+    if_icmpeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.opc_return.jm.T_opc_return_2.failed Z
+
+Label0:
+    return
+.end method
+
+
+
+.method public static execute()Z
+    .limit stack 3
+    .limit locals 4
+
+    new dxc/junit/opcodes/opc_return/jm/T_opc_return_2
+    dup
+    invokespecial dxc/junit/opcodes/opc_return/jm/T_opc_return_2/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:            ; exception handler
+    astore_3
+    goto Label3
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.opc_return.jm.T_opc_return_2.value I
+    sipush 2000
+    if_icmpne Label3
+
+    aload_0
+    getfield dxc.junit.opcodes.opc_return.jm.T_opc_return_2.failed Z
+    ifne Label3
+
+    iconst_1
+    ireturn
+
+Label3:
+    iconst_0
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_2.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_2.java
new file mode 100644
index 0000000..b70986f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_2.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_return.jm;
+
+public class T_opc_return_2 implements Runnable {
+    public final static int CNT = 1000;
+    int value = 0;
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    private synchronized void test()    {
+        value++;
+        int c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+    }
+    
+    public static boolean execute() {
+        T_opc_return_2 test = new T_opc_return_2();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_3.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_3.j
new file mode 100644
index 0000000..33b99cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_3.java
+.class public dxc/junit/opcodes/opc_return/jm/T_opc_return_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private synchronized test()V
+    .limit stack 1
+    aload_0
+    monitorexit
+    return
+.end method
+
+
+
+.method public run()Z
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial dxc/junit/opcodes/opc_return/jm/T_opc_return_3/test()V
+
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_3.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_3.java
new file mode 100644
index 0000000..1e1ee36
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_3.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_return.jm;
+
+public class T_opc_return_3 {
+    
+    private synchronized void test() {
+        return;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_4.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_4.j
new file mode 100644
index 0000000..80c1778a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_4.java
+.class public dxc/junit/opcodes/opc_return/jm/T_opc_return_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    monitorenter
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_4.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_4.java
new file mode 100644
index 0000000..89dddd5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_return.jm;
+
+public class T_opc_return_4 {
+    
+    public void run() {
+        return;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_5.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_5.j
new file mode 100644
index 0000000..aa2d8bc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_5.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_5.java
+.class public dxc/junit/opcodes/opc_return/jm/T_opc_return_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_5.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_5.java
new file mode 100644
index 0000000..4025b84
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_return.jm;
+
+public class T_opc_return_5 {
+
+    public void run() {
+        return;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_6.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_6.j
new file mode 100644
index 0000000..f286394
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_6.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_6.java
+.class public dxc/junit/opcodes/opc_return/jm/T_opc_return_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Ljava/lang/String;
+    .limit stack 1
+    .limit locals 1
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_6.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_6.java
new file mode 100644
index 0000000..27def5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.opc_return.jm;
+
+public class T_opc_return_6 {
+    
+    public void run() {
+        return;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/Test_pop.java b/tools/dx-tests/src/dxc/junit/opcodes/pop/Test_pop.java
new file mode 100644
index 0000000..893b425
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/Test_pop.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.pop;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.pop.jm.T_pop_1;
+import dxc.junit.opcodes.pop.jm.T_pop_2;
+
+public class Test_pop extends DxTestCase {
+
+    /**
+     * @title  type of argument - int
+     */
+    public void testN1() {
+        T_pop_1 t = new T_pop_1();
+        assertEquals(1234, t.run());
+    }
+
+    /**
+     * @title  type of argument - float
+     */
+    public void testN2() {
+        T_pop_2 t = new T_pop_2();
+        assertEquals(1234f, t.run());
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.pop.jm.T_pop_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.pop.jm.T_pop_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_1.j b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_1.j
new file mode 100644
index 0000000..730d4a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_1.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_pop_1.java
+.class public dxc/junit/opcodes/pop/jm/T_pop_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+    .limit locals 2
+    
+    sipush 1234
+    sipush 5678
+    pop
+    
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_1.java b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_1.java
new file mode 100644
index 0000000..d1f799e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.pop.jm;
+
+public class T_pop_1 {
+
+    public int run() {
+        return 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_2.j b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_2.j
new file mode 100644
index 0000000..19977d2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_pop_2.java
+.class public dxc/junit/opcodes/pop/jm/T_pop_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()F
+    .limit stack 2
+    .limit locals 2
+    ldc 1234.0
+    ldc 5678.0
+    pop
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_2.java b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_2.java
new file mode 100644
index 0000000..b14351a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.pop.jm;
+
+public class T_pop_2 {
+
+    public float run() {
+        return 1234f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_3.j b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_3.j
new file mode 100644
index 0000000..ce81ca5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_pop_3.java
+.class public dxc/junit/opcodes/pop/jm/T_pop_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+    .limit locals 3
+    sipush 1234
+;    sipush 1234    
+    pop
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_3.java b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_3.java
new file mode 100644
index 0000000..46c4574
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.pop.jm;
+
+public class T_pop_3 {
+
+    public int run() {
+        return 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_4.j b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_4.j
new file mode 100644
index 0000000..3f9f52c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_pop_4.java
+.class public dxc/junit/opcodes/pop/jm/T_pop_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 3
+    .limit locals 3
+
+    sipush 1234
+    lconst_1
+
+    pop
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_4.java b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_4.java
new file mode 100644
index 0000000..5c2bd53
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.pop.jm;
+
+public class T_pop_4 {
+
+    public int run() {
+        return 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/Test_pop2.java b/tools/dx-tests/src/dxc/junit/opcodes/pop2/Test_pop2.java
new file mode 100644
index 0000000..01af289
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/Test_pop2.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.pop2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.pop2.jm.T_pop2_1;
+import dxc.junit.opcodes.pop2.jm.T_pop2_2;
+
+public class Test_pop2 extends DxTestCase {
+
+    /**
+     * @title  type of argument - long
+     */
+    public void testN1() {
+        T_pop2_1 t = new T_pop2_1();
+        assertEquals(1234l, t.run());
+    }
+
+    /**
+     * @title  type of argument - double
+     */
+    public void testN2() {
+        T_pop2_2 t = new T_pop2_2();
+        assertEquals(1234d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.pop2.jm.T_pop2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.pop2.jm.T_pop2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_1.j
new file mode 100644
index 0000000..ce2c92a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_1.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_pop2_1.java
+.class public dxc/junit/opcodes/pop2/jm/T_pop2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()J
+    .limit stack 4
+    .limit locals 2
+    
+    ldc2_w 1234
+    ldc2_w 5678
+    pop2
+    
+    lreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_1.java
new file mode 100644
index 0000000..5d21090
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.pop2.jm;
+
+public class T_pop2_1 {
+
+    public long run() {
+        return 1234l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_2.j
new file mode 100644
index 0000000..d184609
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_pop2_2.java
+.class public dxc/junit/opcodes/pop2/jm/T_pop2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 4
+    .limit locals 2
+    ldc2_w 1234.0
+    ldc2_w 5678.0
+    pop2
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_2.java
new file mode 100644
index 0000000..329658a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.pop2.jm;
+
+public class T_pop2_2 {
+
+    public double run() {
+        return 1234d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_3.j
new file mode 100644
index 0000000..82b7a69
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_pop2_3.java
+.class public dxc/junit/opcodes/pop2/jm/T_pop2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()J
+    .limit stack 2
+    .limit locals 3
+    ldc2_w 1234
+;    ldc2_w 1234    
+    pop2
+    lreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_3.java
new file mode 100644
index 0000000..1b5fefc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.pop2.jm;
+
+public class T_pop2_3 {
+
+    public long run() {
+        return 1234l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_4.j
new file mode 100644
index 0000000..5b49788
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_pop2_4.java
+.class public dxc/junit/opcodes/pop2/jm/T_pop2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()J
+    .limit stack 3
+    .limit locals 3
+
+    ldc2_w 1234
+    iconst_1
+
+    pop2
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_4.java
new file mode 100644
index 0000000..9b3c66e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.pop2.jm;
+
+public class T_pop2_4 {
+
+    public long run() {
+        return 1234l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/TPutfield.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/TPutfield.java
new file mode 100644
index 0000000..e417405
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/TPutfield.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield;
+
+class TPutfield {
+    // used by testE2
+    @SuppressWarnings("unused")
+    private int TestStubField = 0;
+
+    // used by testE7
+    protected int TestStubFieldP = 0;
+
+    // used by testE5
+    public final int TestStubFieldFinal = 0;
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/Test_putfield.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/Test_putfield.java
new file mode 100644
index 0000000..dd9b11a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/Test_putfield.java
@@ -0,0 +1,299 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.putfield.jm.T_putfield_1;
+import dxc.junit.opcodes.putfield.jm.T_putfield_10;
+import dxc.junit.opcodes.putfield.jm.T_putfield_11;
+import dxc.junit.opcodes.putfield.jm.T_putfield_12;
+import dxc.junit.opcodes.putfield.jm.T_putfield_13;
+import dxc.junit.opcodes.putfield.jm.T_putfield_14;
+import dxc.junit.opcodes.putfield.jm.T_putfield_15;
+import dxc.junit.opcodes.putfield.jm.T_putfield_16;
+import dxc.junit.opcodes.putfield.jm.T_putfield_18;
+import dxc.junit.opcodes.putfield.jm.T_putfield_2;
+import dxc.junit.opcodes.putfield.jm.T_putfield_7;
+import dxc.junit.opcodes.putfield.jm.T_putfield_8;
+import dxc.junit.opcodes.putfield.jm.T_putfield_9;
+
+public class Test_putfield extends DxTestCase {
+
+    /**
+     * @title  type - int
+     */
+    public void testN1() {
+        T_putfield_1 t = new T_putfield_1();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(1000000, t.st_i1);
+    }
+
+    /**
+     * @title  type - double
+     */
+    public void testN2() {
+        T_putfield_2 t = new T_putfield_2();
+        assertEquals(0d, t.st_d1);
+        t.run();
+        assertEquals(1000000d, t.st_d1);
+    }
+
+    /**
+     * @title  modification of final field
+     */
+    public void testN3() {
+        T_putfield_12 t = new T_putfield_12();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(1000000, t.st_i1);
+    }
+
+    /**
+     * @title  modification of protected field from subclass
+     */
+    public void testN4() {
+        // @uses dxc.junit.opcodes.putfield.jm.T_putfield_1
+        T_putfield_14 t = new T_putfield_14();
+        assertEquals(0, t.getProtectedField());
+        t.run();
+        assertEquals(1000000, t.getProtectedField());
+    }
+
+    /**
+     * @title  assignment compatible object references
+     */
+    public void testN5() {
+        // @uses dxc.junit.opcodes.putfield.jm.TChild
+        // @uses dxc.junit.opcodes.putfield.jm.TSuper
+        T_putfield_18 t = new T_putfield_18();
+        assertEquals(0, t.run().compareTo("xyz"));
+    }
+
+    /**
+     * @title  assignment compatible values
+     */
+    public void testN6() {
+        T_putfield_16 t = new T_putfield_16();
+        assertNull(t.o);
+        t.run();
+        assertEquals("", (String) t.o);
+    }
+
+    /**
+     * @title  attempt to set static field
+     */
+    public void testE1() {
+        try {
+            T_putfield_7 t = new T_putfield_7();
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  modification of non-accessible private field
+     */
+    public void testE2() {
+        // @uses dxc.junit.opcodes.putfield.TPutfield
+        try {
+            T_putfield_8 t = new T_putfield_8();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        T_putfield_9 t = new T_putfield_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NoSuchFieldError
+     */
+    public void testE4() {
+        try {
+        T_putfield_10 t = new T_putfield_10();
+            t.run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Modification of final field in other class
+     */
+    public void testE5() {
+        // @uses dxc.junit.opcodes.putfield.TPutfield
+        try {
+            T_putfield_11 t = new T_putfield_11();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+
+    //  FIXME: "fail" commented out temporarily - check
+    /**
+     * @title  modification of superclass' private field from subclass
+     * FIXME: is this a JVM bug?
+     */
+    public void testE6() {
+        // @uses dxc.junit.opcodes.putfield.jm.T_putfield_1
+        try {
+            T_putfield_15 t = new T_putfield_15();
+            assertEquals(0, t.getPvtField());
+            t.run();
+            assertEquals(10101, t.getPvtField());
+            //fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  modification of non-accessible protected field
+     */
+    public void testE7() {
+        // @uses dxc.junit.opcodes.putfield.TPutfield
+        try {
+            T_putfield_13 t = new T_putfield_13();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.putfield.jm.T_putfield_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.putfield.jm.T_putfield_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.17
+     * @title type of argument - float instead of
+     * int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.putfield.jm.T_putfield_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.17
+     * @title type of argument - assignment
+     * incompatible references
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.putfield.jm.T_putfield_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.17
+     * @title type of argument - assignment
+     * incompatible values
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.putfield.jm.T_putfield_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.16
+     * @title type of argument - assignment
+     * incompatible object references
+     */
+    public void testVFE6() {
+        // @uses dxc.junit.opcodes.putfield.jm.TChild
+        // @uses dxc.junit.opcodes.putfield.jm.TSuper
+        try {
+            Class.forName("dxc.junit.opcodes.putfield.jm.T_putfield_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_1.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_1.j
new file mode 100644
index 0000000..05a16e5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_1.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_1
+.super java/lang/Object
+
+.field public st_i1 I
+.field protected st_p1 I
+.field private st_pvt1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_1.st_i1 I
+    return
+.end method
+
+.method public getPvtField()I
+   aload_0    
+   getfield dxc.junit.opcodes.putfield.jm.T_putfield_1.st_pvt1 I
+   ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_1.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_1.java
new file mode 100644
index 0000000..23ae850
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_1 {
+    public int st_i1;
+    protected int st_p1;
+    private int st_pvt1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+    
+    public int getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_10.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_10.j
new file mode 100644
index 0000000..858ee70
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_10.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_10.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_10
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_10.st_i1N I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_10.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_10.java
new file mode 100644
index 0000000..361e4f8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_10 {
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_11.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_11.j
new file mode 100644
index 0000000..f11374f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_11.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_11.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/putfield/TPutfield
+    dup
+    invokespecial dxc/junit/opcodes/putfield/TPutfield/<init>()V
+
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.TPutfield.TestStubFieldFinal I
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_11.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_11.java
new file mode 100644
index 0000000..e24a160
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+
+public class T_putfield_11 {
+    public void run() {
+        
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_12.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_12.j
new file mode 100644
index 0000000..7650f55
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_12.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_12.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_12
+.super java/lang/Object
+
+.field public final st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_12.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_12.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_12.java
new file mode 100644
index 0000000..c40a5e8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_12 {
+    public int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_13.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_13.j
new file mode 100644
index 0000000..0269325
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_13.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_13.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_13
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    
+    new dxc/junit/opcodes/putfield/TPutfield
+    dup
+    invokespecial dxc/junit/opcodes/putfield/TPutfield/<init>()V
+    
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.TPutfield.TestStubFieldP I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_13.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_13.java
new file mode 100644
index 0000000..3c2708b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_13 {
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_14.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_14.j
new file mode 100644
index 0000000..4a7ef88
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_14.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_14.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_14
+.super dxc/junit/opcodes/putfield/jm/T_putfield_1
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/putfield/jm/T_putfield_1/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_1.st_p1 I
+    return
+.end method
+
+.method public getProtectedField()I
+    .limit stack 2
+    aload_0
+    getfield dxc.junit.opcodes.putfield.jm.T_putfield_1.st_p1 I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_14.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_14.java
new file mode 100644
index 0000000..8ba1e76
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_14 extends T_putfield_1{
+    
+    public void run() {
+        st_p1 = 1000000;
+    }
+    
+    public int getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_15.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_15.j
new file mode 100644
index 0000000..ee2c082
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_15.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_15.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_15
+.super dxc/junit/opcodes/putfield/jm/T_putfield_1
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/putfield/jm/T_putfield_1/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+    ldc 10101
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_1.st_pvt1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_15.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_15.java
new file mode 100644
index 0000000..fabb97a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_15.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_15 extends T_putfield_1{
+    
+    public void run() {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_16.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_16.j
new file mode 100644
index 0000000..d62bb32
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_16.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_16.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_16
+.super java/lang/Object
+
+.field public o Ljava/lang/Object;
+
+
+.method public <init>()V
+    .limit stack 2
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    aconst_null
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_16.o Ljava/lang/Object;
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 2
+
+    aload_0
+    new java/lang/String
+    dup
+    ldc ""
+    invokespecial java/lang/String/<init>(Ljava/lang/String;)V
+
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_16.o Ljava/lang/Object;
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_16.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_16.java
new file mode 100644
index 0000000..3ea025e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_16.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_16 {
+
+    public Object o = null;
+    
+    public void run() {
+        String s = new String("");
+        o = s;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.cfh b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.cfh
new file mode 100644
index 0000000..b32c3df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.cfh
@@ -0,0 +1,216 @@
+//@class:dxc/junit/opcodes/putfield/jm/T_putfield_17
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 11 00 0a 
+    // parsed:, offset 15, len 5, h: 0002: field{dxc.junit.opcodes.putfield.jm.T_putfield_17.st_i1:I}
+    // .  .  .  .  .  
+       09 00 0c 00 10 
+    // parsed:, offset 20, len 46, h: 0003: utf8{"dxc/junit/opcodes/putfield/jm/T_putfield_17"}
+    // .  .  +  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  p  u  t  f  i  e  l  d  /  j  m  /  T  _  p  u  t  f  i  e  l  d  _  1  7  
+       01 00 2b 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 70 75 74 66 69 65 6c 64 2f 6a 6d 2f 54 5f 70 75 74 66 69 65 6c 64 5f 31 37 
+    // parsed:, offset 66, len 19, h: 0004: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 85, len 21, h: 0005: utf8{"T_putfield_17.java"}
+    // .  .  .  T  _  p  u  t  f  i  e  l  d  _  1  7  .  j  a  v  a  
+       01 00 12 54 5f 70 75 74 66 69 65 6c 64 5f 31 37 2e 6a 61 76 61 
+    // parsed:, offset 106, len 5, h: 0006: int{0x000f4240 / 1000000}
+    // .  .  .  B  @  
+       03 00 0f 42 40 
+    // parsed:, offset 111, len 13, h: 0007: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 124, len 9, h: 0008: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 133, len 6, h: 0009: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 139, len 5, h: 000a: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 08 00 0d 
+    // parsed:, offset 144, len 7, h: 000b: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 151, len 3, h: 000c: type{dxc.junit.opcodes.putfield.jm.T_putfield_17}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 154, len 6, h: 000d: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 160, len 8, h: 000e: utf8{"st_i1"}
+    // .  .  .  s  t  _  i  1  
+       01 00 05 73 74 5f 69 31 
+    // parsed:, offset 168, len 4, h: 000f: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 172, len 5, h: 0010: nat{st_i1:I}
+    // .  .  .  .  .  
+       0c 00 0e 00 0f 
+    // parsed:, offset 177, len 3, h: 0011: type{java.lang.Object}
+    // .  .  .  
+       07 00 04 
+// parsed:, offset 180, len 0, h: end constant_pool
+// parsed:, offset 180, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 182, len 2, h: this_class: type{dxc.junit.opcodes.putfield.jm.T_putfield_17}
+// .  .  
+   00 0c 
+// parsed:, offset 184, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 11 
+// parsed:, offset 186, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 188, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:st_i1, offset 190, len:84,desc: I
+// parsed:, offset 190, len 0, h:  fields[0]: 
+    // parsed:, offset 190, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 192, len 2, h: name: st_i1
+    // .  .  
+       00 0e 
+    // parsed:, offset 194, len 2, h: descriptor: I
+    // .  .  
+       00 0f 
+    // parsed:, offset 196, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 198, len 0, h: end fields[0] 
+// ========== end-ParseMember:st_i1, desc: I
+// parsed:, offset 198, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 200, len:74,desc: ()V
+// parsed:, offset 200, len 0, h:  methods[0]: 
+    // parsed:, offset 200, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 202, len 2, h: name: <init>
+    // .  .  
+       00 08 
+    // parsed:, offset 204, len 2, h: descriptor: ()V
+    // .  .  
+       00 0d 
+    // parsed:, offset 206, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 208, len 0, h:  attributes[0]: 
+        // parsed:, offset 208, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 210, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 214, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 216, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 218, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 227, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 229, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 231, len 0, h: end attributes[0] 
+// parsed:, offset 231, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 231, len:43,desc: ()V
+// parsed:, offset 231, len 0, h:  methods[1]: 
+    // parsed:, offset 231, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 233, len 2, h: name: run
+    // .  .  
+       00 09 
+    // parsed:, offset 235, len 2, h: descriptor: ()V
+    // .  .  
+       00 0d 
+    // parsed:, offset 237, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 239, len 0, h:  attributes[0]: 
+        // parsed:, offset 239, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 241, len 4, h: length: 00000013
+        // .  .  .  .  
+           00 00 00 13 
+        // parsed:, offset 245, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 247, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 249, len 4, h: code_length: 00000007
+        // .  .  .  .  
+           00 00 00 07 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 2, h: 0001: ldc #+000f4240
+        // .  .  
+           12 06 
+        // parsed:, offset 3, len 3, h: 0003: putfield field{dxc.junit.opcodes.putfield.jm.T_putfield_17.st_i1:I}
+        // .  .  .  
+//@mod           b5 00 02 
+           b5 00 06 
+        // parsed:, offset 6, len 1, h: 0006: return
+        // .  
+           b1 
+        // parsed:, offset 260, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 262, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 264, len 0, h: end attributes[0] 
+// parsed:, offset 264, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 264, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 266, len 0, h:  attributes[0]: 
+    // parsed:, offset 266, len 2, h: name: SourceFile
+    // .  .  
+       00 07 
+    // parsed:, offset 268, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 272, len 2, h: source: utf8{"T_putfield_17.java"}
+    // .  .  
+       00 05 
+// parsed:, offset 274, len 0, h: end attributes[0] 
+// parsed:, offset 274, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.j
new file mode 100644
index 0000000..03b2c62
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_17.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_17
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_17.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.java
new file mode 100644
index 0000000..be58b94
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_17 {
+
+    public int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_18.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_18.j
new file mode 100644
index 0000000..602550d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_18.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_18.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_18
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/putfield/jm/TChild
+    dup
+    invokespecial dxc/junit/opcodes/putfield/jm/TChild/<init>()V
+    astore_1
+
+    aload_1
+    ldc "xyz"
+    putfield dxc.junit.opcodes.putfield.jm.TSuper.s Ljava/lang/String;
+
+    aload_1
+    getfield dxc.junit.opcodes.putfield.jm.TChild.s Ljava/lang/String;
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_18.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_18.java
new file mode 100644
index 0000000..617bac2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_18.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_18 {
+
+    public String run() {
+        TChild c = new TChild();
+        c.s = "xyz";
+        return c.s;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_19.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_19.j
new file mode 100644
index 0000000..3f61b8c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_19.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_19.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_19
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/putfield/jm/TSuper
+    dup
+    invokespecial dxc/junit/opcodes/putfield/jm/TSuper/<init>()V
+    astore_1
+
+    aload_1
+    getfield dxc.junit.opcodes.putfield.jm.TChild.o Ljava/lang/Object;
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_19.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_19.java
new file mode 100644
index 0000000..fd9d29e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_19.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_19 {
+
+    public Object run() {
+        TChild c = new TChild();
+        return c.o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_2.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_2.j
new file mode 100644
index 0000000..8414dfd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_2.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_2
+.super java/lang/Object
+
+.field public st_d1 D
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 3
+    aload_0
+    ldc2_w 1000000.0
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_2.st_d1 D
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_2.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_2.java
new file mode 100644
index 0000000..bd039eb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_2 {
+
+    public double st_d1;
+    
+    public void run() {
+        st_d1 = 1000000d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_20.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_20.j
new file mode 100644
index 0000000..7aaf9b5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_20.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_20.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_20
+.super java/lang/Object
+
+.field public v I
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    ldc 3.14
+    
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_20.v I
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_20.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_20.java
new file mode 100644
index 0000000..ebe55eb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_20.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_20 {
+
+    public int v;
+    
+    public void run() {
+        v = (int)3.14;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.cfh
new file mode 100644
index 0000000..887ad58
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.cfh
@@ -0,0 +1,216 @@
+//@class:dxc/junit/opcodes/putfield/jm/T_putfield_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 67, len 7, h: 0007: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 74, len 5, h: 0008: field{dxc.junit.opcodes.putfield.jm.T_putfield_3.st_i1:I}
+    // .  .  .  .  .  
+       09 00 0f 00 0d 
+    // parsed:, offset 79, len 5, h: 0009: int{0x000f4240 / 1000000}
+    // .  .  .  B  @  
+       03 00 0f 42 40 
+    // parsed:, offset 84, len 20, h: 000a: utf8{"T_putfield_3.java"}
+    // .  .  .  T  _  p  u  t  f  i  e  l  d  _  3  .  j  a  v  a  
+       01 00 11 54 5f 70 75 74 66 69 65 6c 64 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 104, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 110, len 8, h: 000c: utf8{"st_i1"}
+    // .  .  .  s  t  _  i  1  
+       01 00 05 73 74 5f 69 31 
+    // parsed:, offset 118, len 5, h: 000d: nat{st_i1:I}
+    // .  .  .  .  .  
+       0c 00 0c 00 10 
+    // parsed:, offset 123, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 126, len 3, h: 000f: type{dxc.junit.opcodes.putfield.jm.T_putfield_3}
+    // .  .  .  
+       07 00 11 
+    // parsed:, offset 129, len 4, h: 0010: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 133, len 45, h: 0011: utf8{"dxc/junit/opcodes/putfield/jm/T_putfield_3"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  p  u  t  f  i  e  l  d  /  j  m  /  T  _  p  u  t  f  i  e  l  d  _  3  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 70 75 74 66 69 65 6c 64 2f 6a 6d 2f 54 5f 70 75 74 66 69 65 6c 64 5f 33 
+// parsed:, offset 178, len 0, h: end constant_pool
+// parsed:, offset 178, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 180, len 2, h: this_class: type{dxc.junit.opcodes.putfield.jm.T_putfield_3}
+// .  .  
+   00 0f 
+// parsed:, offset 182, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 184, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 186, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:st_i1, offset 188, len:84,desc: I
+// parsed:, offset 188, len 0, h:  fields[0]: 
+    // parsed:, offset 188, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 2, h: name: st_i1
+    // .  .  
+       00 0c 
+    // parsed:, offset 192, len 2, h: descriptor: I
+    // .  .  
+       00 10 
+    // parsed:, offset 194, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 196, len 0, h: end fields[0] 
+// ========== end-ParseMember:st_i1, desc: I
+// parsed:, offset 196, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 198, len:74,desc: ()V
+// parsed:, offset 198, len 0, h:  methods[0]: 
+    // parsed:, offset 198, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 200, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 202, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 204, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 206, len 0, h:  attributes[0]: 
+        // parsed:, offset 206, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 208, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 212, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 214, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 216, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 225, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 227, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 229, len 0, h: end attributes[0] 
+// parsed:, offset 229, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 229, len:43,desc: ()V
+// parsed:, offset 229, len 0, h:  methods[1]: 
+    // parsed:, offset 229, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 231, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 233, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 235, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 237, len 0, h:  attributes[0]: 
+        // parsed:, offset 237, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 239, len 4, h: length: 00000013
+        // .  .  .  .  
+           00 00 00 13 
+        // parsed:, offset 243, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 245, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 247, len 4, h: code_length: 00000007
+        // .  .  .  .  
+           00 00 00 07 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 2, h: 0001: ldc #+000f4240
+        // .  .  
+           12 09 
+        // parsed:, offset 3, len 3, h: 0003: putfield field{dxc.junit.opcodes.putfield.jm.T_putfield_3.st_i1:I}
+        // .  .  .  
+//@mod:           b5 00 08 
+           b5 01 08 
+        // parsed:, offset 6, len 1, h: 0006: return
+        // .  
+           b1 
+        // parsed:, offset 258, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 260, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 262, len 0, h: end attributes[0] 
+// parsed:, offset 262, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 262, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 264, len 0, h:  attributes[0]: 
+    // parsed:, offset 264, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 266, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 270, len 2, h: source: utf8{"T_putfield_3.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 272, len 0, h: end attributes[0] 
+// parsed:, offset 272, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.j
new file mode 100644
index 0000000..10d3f53
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_3.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_3
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_3.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.java
new file mode 100644
index 0000000..6c7216e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_3 {
+
+    public int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_4.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_4.j
new file mode 100644
index 0000000..5a4195a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_4.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_4.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_4
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+;    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_4.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_4.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_4.java
new file mode 100644
index 0000000..142d193
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_4 {
+
+    public int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_5.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_5.j
new file mode 100644
index 0000000..6ccc8c0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_5.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_5
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+;    ldc 1000000
+    fconst_1
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_5.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_5.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_5.java
new file mode 100644
index 0000000..9be3923
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_5 {
+
+    public int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_6.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_6.j
new file mode 100644
index 0000000..916a084
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_6.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_6.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_6
+.super java/lang/Object
+
+.field public s Ljava/lang/String;
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+
+    new java/lang/Object
+    dup
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_6.s Ljava/lang/String;
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_6.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_6.java
new file mode 100644
index 0000000..63855a0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_6.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_6 {
+
+    public String s;
+    
+    public void run() {
+        Object o = new Object();
+        s = (String)o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_7.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_7.j
new file mode 100644
index 0000000..a3088a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_7.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_7.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_7
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_7.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_7.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_7.java
new file mode 100644
index 0000000..54bd49f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_7 {
+    public int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_8.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_8.j
new file mode 100644
index 0000000..07e9b12
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_8.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_8.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    
+    new dxc/junit/opcodes/putfield/TPutfield
+    dup
+    invokespecial dxc/junit/opcodes/putfield/TPutfield/<init>()V
+    
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.TPutfield.TestStubField I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_8.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_8.java
new file mode 100644
index 0000000..4860faf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_8 {
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_9.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_9.j
new file mode 100644
index 0000000..79bd8114
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_9.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putfield_9.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_9
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aconst_null
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_9.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_9.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_9.java
new file mode 100644
index 0000000..33b7c7a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_9 {
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/TestStubs.java
new file mode 100644
index 0000000..de2dcc6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/TestStubs.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+
+
+class TSuper {
+    public String s = "abc";
+}
+
+class TChild extends TSuper {
+    public Object o = null;    
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/TestStubs.java
new file mode 100644
index 0000000..64a481a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic;
+
+public class TestStubs {
+    // used by testE2
+    static int TestStubField = 0;
+
+    // used by testE5
+    public static final int TestStubFieldFinal = 0;
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/Test_putstatic.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/Test_putstatic.java
new file mode 100644
index 0000000..9d438d8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/Test_putstatic.java
@@ -0,0 +1,286 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_1;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_10;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_11;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_12;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_13;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_14;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_15;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_16;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_2;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_7;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_8;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_9;
+
+public class Test_putstatic extends DxTestCase {
+
+    /**
+     * @title  type - int
+     */
+    public void testN1() {
+        T_putstatic_1 t = new T_putstatic_1();
+        assertEquals(0, T_putstatic_1.st_i1);
+        t.run();
+        assertEquals(1000000, T_putstatic_1.st_i1);
+    }
+
+    /**
+     * @title  type - double
+     */
+    public void testN2() {
+        T_putstatic_2 t = new T_putstatic_2();
+        assertEquals(0d, T_putstatic_2.st_d1);
+        t.run();
+        assertEquals(1000000d, T_putstatic_2.st_d1);
+    }
+
+    /**
+     * @title  modification of final field
+     */
+    public void testN3() {
+        T_putstatic_12 t = new T_putstatic_12();
+        assertEquals(0, T_putstatic_12.st_i1);
+        t.run();
+        assertEquals(1000000, T_putstatic_12.st_i1);
+    }
+
+    /**
+     * @title  modification of protected field from subclass
+     */
+    public void testN4() {
+        // @uses dxc.junit.opcodes.putstatic.jm.T_putstatic_1
+        T_putstatic_14 t = new T_putstatic_14();
+        assertEquals(0, T_putstatic_14.getProtectedField());
+        t.run();
+        assertEquals(1000000, T_putstatic_14.getProtectedField());
+    }
+
+    /**
+     * @title  assignment compatible references
+     */
+    public void testN5() {
+        T_putstatic_16 t = new T_putstatic_16();
+        assertNull(T_putstatic_16.o);
+        t.run();
+        assertEquals("", (String) T_putstatic_16.o);
+    }
+
+    /**
+     * @title  attempt to set non-static field
+     */
+    public void testE1() {
+        try {
+            T_putstatic_7 t = new T_putstatic_7();
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  modification of non-accessible field
+     */
+    public void testE2() {
+        // @uses dxc.junit.opcodes.putstatic.TestStubs
+        try {
+            T_putstatic_8 t = new T_putstatic_8();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoClassDefFoundError
+     */
+    public void testE3() {
+        try {
+            T_putstatic_9 t = new T_putstatic_9();
+            t.run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoSuchFieldError
+     */
+    public void testE4() {
+        try {
+            T_putstatic_10 t = new T_putstatic_10();
+            t.run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Modification of final field in other class
+     */
+    public void testE5() {
+        // @uses dxc.junit.opcodes.putstatic.TestStubs
+        try {
+            T_putstatic_11 t = new T_putstatic_11();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  initialization of referenced class throws exception
+     */
+    public void testE6() {
+        // @uses dxc.junit.opcodes.putstatic.jm.StubInitError
+        T_putstatic_13 t = new T_putstatic_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    //  FIXME: "fail" commented out temporarily - check
+    /**
+     * @title  modification of superclass' private field from subclass
+     * FIXME: is this a bug in JVM?
+     */
+    public void testE7() {
+        // @uses dxc.junit.opcodes.putstatic.jm.T_putstatic_1
+        try {
+            assertEquals(0, T_putstatic_15.getPvtField());
+            T_putstatic_15 t = new T_putstatic_15();
+            t.run();
+            assertEquals(12321, T_putstatic_15.getPvtField());
+            //fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.putstatic.jm.T_putstatic_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.putstatic.jm.T_putstatic_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.17
+     * @title type of argument - float instead of
+     * int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.putstatic.jm.T_putstatic_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.17
+     * @title type of argument - assignment
+     * incompatible references
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.putstatic.jm.T_putstatic_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.17
+     * @title type of argument - assignment
+     * incompatible values
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.putstatic.jm.T_putstatic_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.1.12
+     * @title constant pool type
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.putstatic.jm.T_putstatic_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_1.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_1.j
new file mode 100644
index 0000000..b1a57ba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_1.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_1.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_1
+.super java/lang/Object
+
+.field public static st_i1 I
+.field protected static st_p1 I
+.field private static st_pvt1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_1.st_i1 I
+    return
+.end method
+
+.method public static getPvtField()I
+   getstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_1.st_pvt1 I
+   ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_1.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_1.java
new file mode 100644
index 0000000..4876ea0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_1 {
+    public static int st_i1;
+    protected static int st_p1;
+    private static int st_pvt1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+    
+    public static int getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_10.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_10.j
new file mode 100644
index 0000000..6ffd777
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_10.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_10.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_10
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_10.st_i1N I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_10.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_10.java
new file mode 100644
index 0000000..c1a6d75
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_10 {
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_11.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_11.j
new file mode 100644
index 0000000..c60bb18
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_11.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_11.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.TestStubs.TestStubFieldFinal I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_11.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_11.java
new file mode 100644
index 0000000..6231867
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_11 {
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_12.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_12.j
new file mode 100644
index 0000000..044864b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_12.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_12.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_12
+.super java/lang/Object
+
+.field public final static st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_12.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_12.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_12.java
new file mode 100644
index 0000000..1261528
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_12 {
+    public static int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_13.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_13.j
new file mode 100644
index 0000000..5216b3f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_13.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_13.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_13
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.putstatic.jm.StubInitError.value I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_13.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_13.java
new file mode 100644
index 0000000..16afdc1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_13 {
+    
+    public int run() {
+        return StubInitError.value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_14.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_14.j
new file mode 100644
index 0000000..c781c03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_14.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_14.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_14
+.super dxc/junit/opcodes/putstatic/jm/T_putstatic_1
+
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/putstatic/jm/T_putstatic_1/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_1.st_p1 I
+    return
+.end method
+
+.method public static getProtectedField()I
+   getstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_1.st_p1 I
+   ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_14.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_14.java
new file mode 100644
index 0000000..80296f9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_14 extends T_putstatic_1{
+    
+    public void run() {
+        T_putstatic_1.st_p1 = 1000000;
+    }
+    
+    public static int getProtectedField(){
+        return T_putstatic_1.st_p1;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_15.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_15.j
new file mode 100644
index 0000000..44e8785
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_15.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_15.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_15
+.super dxc/junit/opcodes/putstatic/jm/T_putstatic_1
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/putstatic/jm/T_putstatic_1/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 12321
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_1.st_pvt1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_15.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_15.java
new file mode 100644
index 0000000..b2f4dae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_15.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_15 extends T_putstatic_1{
+    
+    public void run() {
+        //
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_16.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_16.j
new file mode 100644
index 0000000..6b1d154
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_16.j
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_16.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_16
+.super java/lang/Object
+
+.field public static o Ljava/lang/Object;
+
+.method static <clinit>()V
+    .limit stack 1
+    .limit locals 0
+
+    aconst_null
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_16.o Ljava/lang/Object;
+
+    return
+.end method
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 3
+    .limit locals 2
+
+    new java/lang/String
+    dup
+    ldc ""
+    invokespecial java/lang/String/<init>(Ljava/lang/String;)V
+
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_16.o Ljava/lang/Object;
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_16.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_16.java
new file mode 100644
index 0000000..b0d5d14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_16.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_16 {
+
+    public static Object o = null;
+    
+    public void run() {
+        String s = new String("");
+        o = s;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.cfh b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.cfh
new file mode 100644
index 0000000..e5e2de3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.cfh
@@ -0,0 +1,213 @@
+//@class:dxc/junit/opcodes/putstatic/jm/T_putstatic_17
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 11 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 5, h: 0003: int{0x000f4240 / 1000000}
+    // .  .  .  B  @  
+       03 00 0f 42 40 
+    // parsed:, offset 39, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 52, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 61, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 67, len 22, h: 0007: utf8{"T_putstatic_17.java"}
+    // .  .  .  T  _  p  u  t  s  t  a  t  i  c  _  1  7  .  j  a  v  a  
+       01 00 13 54 5f 70 75 74 73 74 61 74 69 63 5f 31 37 2e 6a 61 76 61 
+    // parsed:, offset 89, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 94, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 101, len 48, h: 000a: utf8{"dxc/junit/opcodes/putstatic/jm/T_putstatic_17"}
+    // .  .  -  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  p  u  t  s  t  a  t  i  c  /  j  m  /  T  _  p  u  t  s  t  a  t  i  c  _  1  7  
+       01 00 2d 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 70 75 74 73 74 61 74 69 63 2f 6a 6d 2f 54 5f 70 75 74 73 74 61 74 69 63 5f 31 37 
+    // parsed:, offset 149, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 155, len 8, h: 000c: utf8{"st_i1"}
+    // .  .  .  s  t  _  i  1  
+       01 00 05 73 74 5f 69 31 
+    // parsed:, offset 163, len 4, h: 000d: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 167, len 3, h: 000e: type{dxc.junit.opcodes.putstatic.jm.T_putstatic_17}
+    // .  .  .  
+       07 00 0a 
+    // parsed:, offset 170, len 5, h: 000f: nat{st_i1:I}
+    // .  .  .  .  .  
+       0c 00 0c 00 0d 
+    // parsed:, offset 175, len 5, h: 0010: field{dxc.junit.opcodes.putstatic.jm.T_putstatic_17.st_i1:I}
+    // .  .  .  .  .  
+       09 00 0e 00 0f 
+    // parsed:, offset 180, len 3, h: 0011: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 183, len 0, h: end constant_pool
+// parsed:, offset 183, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 185, len 2, h: this_class: type{dxc.junit.opcodes.putstatic.jm.T_putstatic_17}
+// .  .  
+   00 0e 
+// parsed:, offset 187, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 11 
+// parsed:, offset 189, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 191, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:st_i1, offset 193, len:83,desc: I
+// parsed:, offset 193, len 0, h:  fields[0]: 
+    // parsed:, offset 193, len 2, h: access_flags: public|static
+    // .  .  
+       00 09 
+    // parsed:, offset 195, len 2, h: name: st_i1
+    // .  .  
+       00 0c 
+    // parsed:, offset 197, len 2, h: descriptor: I
+    // .  .  
+       00 0d 
+    // parsed:, offset 199, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 201, len 0, h: end fields[0] 
+// ========== end-ParseMember:st_i1, desc: I
+// parsed:, offset 201, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 203, len:73,desc: ()V
+// parsed:, offset 203, len 0, h:  methods[0]: 
+    // parsed:, offset 203, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 205, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 207, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 209, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 211, len 0, h:  attributes[0]: 
+        // parsed:, offset 211, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 213, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 217, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 219, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 221, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 230, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 232, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 234, len 0, h: end attributes[0] 
+// parsed:, offset 234, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 234, len:42,desc: ()V
+// parsed:, offset 234, len 0, h:  methods[1]: 
+    // parsed:, offset 234, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 236, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 238, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 240, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 242, len 0, h:  attributes[0]: 
+        // parsed:, offset 242, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 244, len 4, h: length: 00000012
+        // .  .  .  .  
+           00 00 00 12 
+        // parsed:, offset 248, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 250, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 252, len 4, h: code_length: 00000006
+        // .  .  .  .  
+           00 00 00 06 
+        // parsed:, offset 0, len 2, h: 0000: ldc #+000f4240
+        // .  .  
+           12 03 
+        // parsed:, offset 2, len 3, h: 0002: putstatic field{dxc.junit.opcodes.putstatic.jm.T_putstatic_17.st_i1:I}
+        // .  .  .  
+//@mod           b3 00 10 
+           b3 00 03 
+        // parsed:, offset 5, len 1, h: 0005: return
+        // .  
+           b1 
+        // parsed:, offset 262, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 264, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 266, len 0, h: end attributes[0] 
+// parsed:, offset 266, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 266, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 268, len 0, h:  attributes[0]: 
+    // parsed:, offset 268, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 270, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 274, len 2, h: source: utf8{"T_putstatic_17.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 276, len 0, h: end attributes[0] 
+// parsed:, offset 276, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.j
new file mode 100644
index 0000000..18b3e14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_17.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_17
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_17.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.java
new file mode 100644
index 0000000..28056a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_17 {
+
+    public static int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_18.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_18.j
new file mode 100644
index 0000000..83d518a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_18.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_18.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_18
+.super java/lang/Object
+
+.field public static v I
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    ldc 3.14
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_18.v I
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_18.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_18.java
new file mode 100644
index 0000000..5293bcf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_18.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_18 {
+
+    public static int v;
+    
+    public void run() {
+        v = (int)3.14f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_2.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_2.j
new file mode 100644
index 0000000..2b2ca2c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_2.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_2.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_2
+.super java/lang/Object
+
+.field public static st_d1 D
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    ldc2_w 1000000.0
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_2.st_d1 D
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_2.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_2.java
new file mode 100644
index 0000000..eb40d35
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_2 {
+
+    public static double st_d1;
+    
+    public void run() {
+        st_d1 = 1000000d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.cfh
new file mode 100644
index 0000000..e200a7c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.cfh
@@ -0,0 +1,213 @@
+//@class:dxc/junit/opcodes/putstatic/jm/T_putstatic_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 21, h: 0005: utf8{"T_putstatic_3.java"}
+    // .  .  .  T  _  p  u  t  s  t  a  t  i  c  _  3  .  j  a  v  a  
+       01 00 12 54 5f 70 75 74 73 74 61 74 69 63 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 77, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 83, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0c 
+    // parsed:, offset 88, len 47, h: 0008: utf8{"dxc/junit/opcodes/putstatic/jm/T_putstatic_3"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  p  u  t  s  t  a  t  i  c  /  j  m  /  T  _  p  u  t  s  t  a  t  i  c  _  3  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 70 75 74 73 74 61 74 69 63 2f 6a 6d 2f 54 5f 70 75 74 73 74 61 74 69 63 5f 33 
+    // parsed:, offset 135, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 142, len 5, h: 000a: int{0x000f4240 / 1000000}
+    // .  .  .  B  @  
+       03 00 0f 42 40 
+    // parsed:, offset 147, len 3, h: 000b: type{dxc.junit.opcodes.putstatic.jm.T_putstatic_3}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 150, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 156, len 8, h: 000d: utf8{"st_i1"}
+    // .  .  .  s  t  _  i  1  
+       01 00 05 73 74 5f 69 31 
+    // parsed:, offset 164, len 5, h: 000e: nat{st_i1:I}
+    // .  .  .  .  .  
+       0c 00 0d 00 10 
+    // parsed:, offset 169, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 172, len 4, h: 0010: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 176, len 5, h: 0011: field{dxc.junit.opcodes.putstatic.jm.T_putstatic_3.st_i1:I}
+    // .  .  .  .  .  
+       09 00 0b 00 0e 
+// parsed:, offset 181, len 0, h: end constant_pool
+// parsed:, offset 181, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 183, len 2, h: this_class: type{dxc.junit.opcodes.putstatic.jm.T_putstatic_3}
+// .  .  
+   00 0b 
+// parsed:, offset 185, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 187, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 189, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:st_i1, offset 191, len:83,desc: I
+// parsed:, offset 191, len 0, h:  fields[0]: 
+    // parsed:, offset 191, len 2, h: access_flags: public|static
+    // .  .  
+       00 09 
+    // parsed:, offset 193, len 2, h: name: st_i1
+    // .  .  
+       00 0d 
+    // parsed:, offset 195, len 2, h: descriptor: I
+    // .  .  
+       00 10 
+    // parsed:, offset 197, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 199, len 0, h: end fields[0] 
+// ========== end-ParseMember:st_i1, desc: I
+// parsed:, offset 199, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 201, len:73,desc: ()V
+// parsed:, offset 201, len 0, h:  methods[0]: 
+    // parsed:, offset 201, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 203, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 205, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 207, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 209, len 0, h:  attributes[0]: 
+        // parsed:, offset 209, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 211, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 215, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 217, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 219, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 228, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 230, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 232, len 0, h: end attributes[0] 
+// parsed:, offset 232, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 232, len:42,desc: ()V
+// parsed:, offset 232, len 0, h:  methods[1]: 
+    // parsed:, offset 232, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 234, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 236, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 238, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 240, len 0, h:  attributes[0]: 
+        // parsed:, offset 240, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 242, len 4, h: length: 00000012
+        // .  .  .  .  
+           00 00 00 12 
+        // parsed:, offset 246, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 248, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 250, len 4, h: code_length: 00000006
+        // .  .  .  .  
+           00 00 00 06 
+        // parsed:, offset 0, len 2, h: 0000: ldc #+000f4240
+        // .  .  
+           12 0a 
+        // parsed:, offset 2, len 3, h: 0002: putstatic field{dxc.junit.opcodes.putstatic.jm.T_putstatic_3.st_i1:I}
+        // .  .  .  
+//@mod           b3 00 11 
+           b3 01 11 
+        // parsed:, offset 5, len 1, h: 0005: return
+        // .  
+           b1 
+        // parsed:, offset 260, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 262, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 264, len 0, h: end attributes[0] 
+// parsed:, offset 264, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 264, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 266, len 0, h:  attributes[0]: 
+    // parsed:, offset 266, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 268, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 272, len 2, h: source: utf8{"T_putstatic_3.java"}
+    // .  .  
+       00 05 
+// parsed:, offset 274, len 0, h: end attributes[0] 
+// parsed:, offset 274, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.j
new file mode 100644
index 0000000..b72a7b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_3.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_3
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_3.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.java
new file mode 100644
index 0000000..1ec204e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_3 {
+
+    public static int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_4.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_4.j
new file mode 100644
index 0000000..24fa5aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_4.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_4.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_4
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+;    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_4.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_4.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_4.java
new file mode 100644
index 0000000..f3c016a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_4 {
+
+    public static int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_5.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_5.j
new file mode 100644
index 0000000..f8cb68d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_5.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_5.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_5
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+;    ldc 1000000
+    fconst_1
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_5.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_5.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_5.java
new file mode 100644
index 0000000..de12995
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_5 {
+
+    public static int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_6.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_6.j
new file mode 100644
index 0000000..baef85a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_6.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_6.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_6
+.super java/lang/Object
+
+.field public static s Ljava/lang/String;
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+
+    new java/lang/Object
+    dup
+    invokespecial java/lang/Object/<init>()V
+
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_6.s Ljava/lang/String;
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_6.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_6.java
new file mode 100644
index 0000000..1a625d6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_6.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_6 {
+
+    public static String s;
+    
+    public void run() {
+        Object o = new Object();
+        s = (String)o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_7.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_7.j
new file mode 100644
index 0000000..806105a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_7.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_7.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_7
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_7.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_7.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_7.java
new file mode 100644
index 0000000..9fec90d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_7 {
+    public static int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_8.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_8.j
new file mode 100644
index 0000000..acab0d1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_8.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_8.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.TestStub.TestStubField I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_8.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_8.java
new file mode 100644
index 0000000..c78048a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_8 {
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_9.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_9.j
new file mode 100644
index 0000000..2a82450
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_9.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_putstatic_9.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_9
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_91.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_9.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_9.java
new file mode 100644
index 0000000..9defac3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_9 {
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/TestStubs.java
new file mode 100644
index 0000000..9cc2aa6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+
+class StubInitError{
+    public static int value = 5 / 0;
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/Test_ret.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/Test_ret.java
new file mode 100644
index 0000000..a8b43ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/Test_ret.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ret;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ret.jm.T_ret_1;
+import dxc.junit.opcodes.ret.jm.T_ret_1_w;
+
+public class Test_ret extends DxTestCase {
+
+    /**
+     * NORMAL RET VERSION
+     */
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_ret_1 t = new T_ret_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index operand
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ret.jm.T_ret_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title variable referenced by index shall
+     * contain returnAddress
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ret.jm.T_ret_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.24
+     * @title each returnAddress can be returned only
+     * once
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ret.jm.T_ret_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.22
+     * @title single ret instruction
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.ret.jm.T_ret_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * WIDE RET VERSION
+     */
+
+    /**
+     * @title 
+     */
+    public void testN2() {
+        T_ret_1_w t = new T_ret_1_w();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index operand
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ret.jm.T_ret_2_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title variable referenced by index shall
+     * contain returnAddress
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ret.jm.T_ret_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.24
+     * @title each returnAddress can be returned only
+     * once
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.ret.jm.T_ret_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.22
+     * @title single ret instruction
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.ret.jm.T_ret_5_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1.j
new file mode 100644
index 0000000..f73f634
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1.j
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ret_1.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_1
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.ret.jm.T_ret_1.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.ret.jm.T_ret_1.i1 I
+    ret 1
+; test that ret returns immediately
+    aload_0
+    sipush 2000
+    putfield dxc.junit.opcodes.ret.jm.T_ret_1.i1 I
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1.java
new file mode 100644
index 0000000..e0ee60c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_1 {
+
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1_w.j
new file mode 100644
index 0000000..fd91e23
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1_w.j
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ret_1_w.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_1_w
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 300
+    
+    jsr_w SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.ret.jm.T_ret_1_w.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore 270
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.ret.jm.T_ret_1_w.i1 I
+    ret_w 270
+; test that ret returns immediately
+    aload_0
+    sipush 2000
+    putfield dxc.junit.opcodes.ret.jm.T_ret_1_w.i1 I
+    ret_w 270
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1_w.java
new file mode 100644
index 0000000..80d159a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1_w.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_1_w {
+
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2.j
new file mode 100644
index 0000000..5850796
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ret_2.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr SetField
+
+    iconst_0
+    ireturn
+    
+SetField:
+    astore_1
+    ret 10
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2.java
new file mode 100644
index 0000000..48719f3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_2 {
+
+    private void setfield() {
+    }
+    
+    public boolean run() {
+       setfield();
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2_w.j
new file mode 100644
index 0000000..c6ecab8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2_w.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ret_2_w.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_2_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 300
+    
+    jsr_w SetField
+
+    iconst_0
+    ireturn
+    
+SetField:
+    astore 269
+    ret_w 300
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2_w.java
new file mode 100644
index 0000000..a10ec49
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2_w.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_2_w {
+
+    private void setfield() {
+    }
+    
+    public boolean run() {
+       setfield();
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3.j
new file mode 100644
index 0000000..1016b02
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ret_3.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 3
+    
+    jsr SetField
+
+    iconst_0
+    ireturn
+    
+SetField:
+    astore_2
+    aload_0
+    astore_1
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3.java
new file mode 100644
index 0000000..106f930
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_3 {
+
+    private void setfield() {
+    }
+    
+    public boolean run() {
+       setfield();
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3_w.j
new file mode 100644
index 0000000..dba7682
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3_w.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ret_3_w.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_3_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 3
+    
+    jsr_w SetField
+
+    iconst_0
+    ireturn
+    
+SetField:
+    astore_2
+    aload_0
+    astore_1
+    ret_w 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3_w.java
new file mode 100644
index 0000000..5c20726
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3_w.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_3_w {
+
+    private void setfield() {
+    }
+    
+    public boolean run() {
+       setfield();
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4.j
new file mode 100644
index 0000000..8c72c1a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ret_4.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit locals 5
+    .limit stack 5
+
+    goto Label1
+    
+Label3:
+    astore_1    
+    ret 1
+    
+Label2:
+    astore_1
+    jsr Label3
+    ret 1    
+    
+Label1:    
+    jsr Label2
+    
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4.java
new file mode 100644
index 0000000..96f1924
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_4 {
+
+    private void f2() {
+    }
+    
+    private void f1() {
+        f2();
+    }
+    
+    public boolean run() {
+       f1();
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4_w.j
new file mode 100644
index 0000000..3cddbb8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4_w.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ret_4_w.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_4_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit locals 5
+    .limit stack 5
+
+    goto Label1
+    
+Label3:
+    astore_1    
+    ret_w 1
+    
+Label2:
+    astore_1
+    jsr_w Label3
+    ret_w 1    
+    
+Label1:    
+    jsr_w Label2
+    
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4_w.java
new file mode 100644
index 0000000..d27e9d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4_w.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_4_w {
+
+    private void f2() {
+    }
+    
+    private void f1() {
+        f2();
+    }
+    
+    public boolean run() {
+       f1();
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5.j
new file mode 100644
index 0000000..d0eb53b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ret_5.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit locals 5
+    .limit stack 5
+
+    iconst_1
+    istore_2
+
+    jsr Label3
+
+    return
+    
+Label3:
+    astore_1    
+    
+    iload_2
+    iconst_0
+    if_icmpeq Label1
+    ret 1
+Label1:
+    ret 1    
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5.java
new file mode 100644
index 0000000..60d0014
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_5 {
+
+    private void setfield() {
+    }
+    
+    public void run() {
+       setfield();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5_w.j
new file mode 100644
index 0000000..b049cae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5_w.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ret_5_w.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_5_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit locals 5
+    .limit stack 5
+
+    iconst_1
+    istore_2
+
+    jsr_w Label3
+
+    return
+    
+Label3:
+    astore_1    
+    
+    iload_2
+    iconst_0
+    if_icmpeq Label1
+    ret_w 1
+Label1:
+    ret_w 1    
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5_w.java
new file mode 100644
index 0000000..dfc10c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5_w.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_5_w {
+
+    private void setfield() {
+    }
+    
+    public void run() {
+       setfield();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/Test_saload.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/Test_saload.java
new file mode 100644
index 0000000..435a117
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/Test_saload.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.saload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.saload.jm.T_saload_1;
+
+public class Test_saload extends DxTestCase {
+
+    /**
+     * @title normal test. trying different indexes 
+     */
+    public void testN1() {
+        T_saload_1 t = new T_saload_1();
+        short[] arr = new short[2];
+        arr[1] = 10000;
+        assertEquals(10000, t.run(arr, 1));
+    }
+
+    /**
+     * @title normal test. trying different indexes
+     */
+    public void testN2() {
+        T_saload_1 t = new T_saload_1();
+        short[] arr = new short[2];
+        arr[0] = 10000;
+        assertEquals(10000, t.run(arr, 0));
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_saload_1 t = new T_saload_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_saload_1 t = new T_saload_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_saload_1 t = new T_saload_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.saload.jm.T_saload_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.saload.jm.T_saload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.saload.jm.T_saload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.saload.jm.T_saload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.saload.jm.T_saload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.saload.jm.T_saload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int[], int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.saload.jm.T_saload_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.saload.jm.T_saload_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_1.j
new file mode 100644
index 0000000..180c180
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_saload_1.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([SI)S
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+
+    saload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_1.java
new file mode 100644
index 0000000..dd3083c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_1 {
+    public short run(short[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_2.j
new file mode 100644
index 0000000..f38e43a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_saload_2.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([SI)S
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+;    iload_2
+
+    saload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_2.java
new file mode 100644
index 0000000..bef1b9b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_2 {
+
+    public short run(short[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_3.j
new file mode 100644
index 0000000..aab2008
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_saload_3.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([SI)S
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    saload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_3.java
new file mode 100644
index 0000000..4d2571c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_3 {
+
+    public short run(short[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_4.j
new file mode 100644
index 0000000..75cbfbf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_saload_4.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([SD)S
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    saload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_4.java
new file mode 100644
index 0000000..c482474
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_4 {
+
+    public short run(short[] arr, double idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_5.j
new file mode 100644
index 0000000..f528968
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_saload_5.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([SJ)S
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    lload_2
+    saload
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_5.java
new file mode 100644
index 0000000..4f95b0d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_5 {
+
+    public short run(short[] arr, long idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_6.j
new file mode 100644
index 0000000..9682e21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_saload_6.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;[SI)S
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+
+    saload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_6.java
new file mode 100644
index 0000000..1c1cf0d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_6 {
+
+    public short run(Object a, short[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_7.j
new file mode 100644
index 0000000..fac34c8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_saload_7.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([D[SI)S
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    saload
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_7.java
new file mode 100644
index 0000000..5036d22
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_7 {
+
+    public short run(double[] a, short[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_8.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_8.j
new file mode 100644
index 0000000..f5d15da
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_8.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_saload_8.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([I[SI)S
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    saload
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_8.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_8.java
new file mode 100644
index 0000000..77bc620
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_8 {
+
+    public short run(int[] a, short[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_9.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_9.j
new file mode 100644
index 0000000..af1e40d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_9.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_saload_9.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([SI)S
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_0
+    saload
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_9.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_9.java
new file mode 100644
index 0000000..05b3f3e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_9 {
+    
+    public short run(short[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/Test_sastore.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/Test_sastore.java
new file mode 100644
index 0000000..f4127c4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/Test_sastore.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.sastore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.sastore.jm.T_sastore_1;
+
+public class Test_sastore extends DxTestCase {
+
+    /**
+     * @title normal test. trying different indexes 
+     */
+    public void testN1() {
+        T_sastore_1 t = new T_sastore_1();
+        short[] arr = new short[2];
+        t.run(arr, 1, (short) 10000);
+        assertEquals(10000, arr[1]);
+    }
+
+    /**
+     * @title normal test. trying different indexes 
+     */
+    public void testN2() {
+        T_sastore_1 t = new T_sastore_1();
+        short[] arr = new short[2];
+        t.run(arr, 0, (short) 10000);
+        assertEquals(10000, arr[0]);
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_sastore_1 t = new T_sastore_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, 2, (short) 10000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_sastore_1 t = new T_sastore_1();
+        try {
+            t.run(null, 2, (short) 10000);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_sastore_1 t = new T_sastore_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, -1, (short) 10000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.sastore.jm.T_sastore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.sastore.jm.T_sastore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double,
+     * int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.sastore.jm.T_sastore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.sastore.jm.T_sastore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - object, int, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.sastore.jm.T_sastore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int,
+     * int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.sastore.jm.T_sastore_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int, int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.sastore.jm.T_sastore_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference,
+     * int
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.sastore.jm.T_sastore_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_1.j
new file mode 100644
index 0000000..239c519
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sastore_1.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([SIS)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    iload_3
+    sastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_1.java
new file mode 100644
index 0000000..d55f755
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_1 {
+    public void run(short[] arr, int idx, short value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_2.j
new file mode 100644
index 0000000..d72eb80
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sastore_2.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([SIS)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    ;iload_3
+    sastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_2.java
new file mode 100644
index 0000000..5072930
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_2 {
+
+    public void run(short[] arr, int idx, short value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_3.j
new file mode 100644
index 0000000..19c93e3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sastore_3.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([SIS)V
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    iload_3
+    sastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_3.java
new file mode 100644
index 0000000..9417fff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_3 {
+
+    public void run(short[] arr, int idx, short value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_4.j
new file mode 100644
index 0000000..2fd5a51
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_4.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sastore_4.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([SDI)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    iload 4
+    sastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_4.java
new file mode 100644
index 0000000..20e5619
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_4 {
+
+    public void run(short[] arr, double idx, short value) {
+        arr[(int)idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_5.j
new file mode 100644
index 0000000..1c26fe8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sastore_5.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([SIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+    lload 3
+;   l2i
+;    i2s    
+    sastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_5.java
new file mode 100644
index 0000000..c235f95
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_5 {
+
+    public void run(short[] arr, int idx, long value) {
+        arr[idx] = (short)value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_6.j
new file mode 100644
index 0000000..e7ba17c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sastore_6.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;IS)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    iload_3
+    sastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_6.java
new file mode 100644
index 0000000..074ad48
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_6 {
+
+    public void run(Object a, short[] arr, int idx, short value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_7.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_7.j
new file mode 100644
index 0000000..b2a3f8a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_7.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sastore_7.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([D[SIS)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    iload 4
+    sastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_7.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_7.java
new file mode 100644
index 0000000..88d61cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_7 {
+
+    public void run(double a[], short[] arr, int idx, short value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_8.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_8.j
new file mode 100644
index 0000000..c6df01d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_8.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sastore_8.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([J[SIS)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    iload 4
+    sastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_8.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_8.java
new file mode 100644
index 0000000..bce0b50
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_8 {
+
+    public void run(long a[], short[] arr, int idx, short value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_9.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_9.j
new file mode 100644
index 0000000..a0a551f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sastore_9.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([SIS)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    aload_0
+    iload_3
+    sastore
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_9.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_9.java
new file mode 100644
index 0000000..444da12
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_9 {
+    
+    public void run(short[] arr, int idx, short value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/Test_sipush.java b/tools/dx-tests/src/dxc/junit/opcodes/sipush/Test_sipush.java
new file mode 100644
index 0000000..2f414c4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/Test_sipush.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.sipush;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.sipush.jm.T_sipush_1;
+import dxc.junit.opcodes.sipush.jm.T_sipush_2;
+import dxc.junit.opcodes.sipush.jm.T_sipush_3;
+
+public class Test_sipush extends DxTestCase {
+
+    /**
+     * @title sipush -13570
+     */
+    public void testN1() {
+        T_sipush_1 t = new T_sipush_1();
+        assertEquals(-13570, t.run());
+    }
+
+    /**
+     * @title sipush 0
+     */
+    public void testB1() {
+        T_sipush_2 t = new T_sipush_2();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title sipush - 1
+     */
+    public void testB2() {
+        T_sipush_3 t = new T_sipush_3();
+        assertEquals(-1, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.sipush.jm.T_sipush_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_1.j b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_1.j
new file mode 100644
index 0000000..93b611e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sipush_1.java
+.class public dxc/junit/opcodes/sipush/jm/T_sipush_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()S
+    sipush -13570
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_1.java b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_1.java
new file mode 100644
index 0000000..32f714e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.sipush.jm;
+
+public class T_sipush_1 {
+
+    public short run() {
+        return (short)0xcafe;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_2.j b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_2.j
new file mode 100644
index 0000000..590d92f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sipush_2.java
+.class public dxc/junit/opcodes/sipush/jm/T_sipush_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()S
+    .limit stack 1
+    .limit locals 1
+
+    sipush 0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_2.java b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_2.java
new file mode 100644
index 0000000..adab916
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.sipush.jm;
+
+public class T_sipush_2 {
+
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_3.j b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_3.j
new file mode 100644
index 0000000..415c159
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sipush_3.java
+.class public dxc/junit/opcodes/sipush/jm/T_sipush_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()S
+    .limit stack 1
+    .limit locals 1
+
+    sipush -1
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_3.java b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_3.java
new file mode 100644
index 0000000..81ff83be
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.sipush.jm;
+
+public class T_sipush_3 {
+
+    public short run() {
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_4.j b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_4.j
new file mode 100644
index 0000000..f852a9a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sipush_4.java
+.class public dxc/junit/opcodes/sipush/jm/T_sipush_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()S
+    .limit stack 1
+;    .limit locals 1
+
+    sipush 1
+    sipush 1
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_4.java b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_4.java
new file mode 100644
index 0000000..e3e540c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.sipush.jm;
+
+public class T_sipush_4 {
+
+    public short run() {
+        return 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/Test_swap.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/Test_swap.java
new file mode 100644
index 0000000..b7d8208
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/Test_swap.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.swap;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.swap.jm.T_swap_1;
+import dxc.junit.opcodes.swap.jm.T_swap_6;
+import dxc.junit.opcodes.swap.jm.T_swap_7;
+import dxc.junit.opcodes.swap.jm.T_swap_8;
+
+public class Test_swap extends DxTestCase {
+
+    /**
+     * @title  Integers
+     */
+    public void testN1() {
+        T_swap_1 t = new T_swap_1();
+        assertEquals(8, t.run(15, 8));
+    }
+
+    /**
+     * @title  Floats
+     */
+    public void testN2() {
+        T_swap_6 t = new T_swap_6();
+        assertEquals(8f, t.run(15f, 8f));
+    }
+
+    /**
+     * @title  References
+     */
+    public void testN3() {
+        T_swap_7 t = new T_swap_7();
+        int tmp[] = new int[1];
+        assertEquals(tmp, t.run(this, tmp));
+    }
+
+    /**
+     * @title  Reference & int
+     */
+    public void testN4() {
+        T_swap_8 t = new T_swap_8();
+        assertEquals(this, t.run(0xff, this));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.swap.jm.T_swap_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.swap.jm.T_swap_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.swap.jm.T_swap_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long & long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.swap.jm.T_swap_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_1.j b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_1.j
new file mode 100644
index 0000000..42cb0cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_swap_1.java
+.class public dxc/junit/opcodes/swap/jm/T_swap_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_2
+    iload_1
+    swap
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_1.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_1.java
new file mode 100644
index 0000000..a662235
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.swap.jm;
+
+public class T_swap_1 {
+
+    public int run(int a, int b) {
+        return b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_2.j b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_2.j
new file mode 100644
index 0000000..77dca55
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_swap_2.java
+.class public dxc/junit/opcodes/swap/jm/T_swap_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+;    iload_2
+    swap
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_2.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_2.java
new file mode 100644
index 0000000..f9ee17f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.swap.jm;
+
+public class T_swap_2 {
+
+    public int run(int a, int b) {
+        return b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_3.j b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_3.j
new file mode 100644
index 0000000..3ea9627
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_swap_3.java
+.class public dxc/junit/opcodes/swap/jm/T_swap_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DI)I
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+;    d2i
+    iload_3
+    swap
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_3.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_3.java
new file mode 100644
index 0000000..34278c5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.swap.jm;
+
+public class T_swap_3 {
+
+    public int run(double a, int b) {
+        return b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_4.j b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_4.j
new file mode 100644
index 0000000..641c256
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_swap_4.java
+.class public dxc/junit/opcodes/swap/jm/T_swap_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(IJ)I
+    .limit stack 3
+    .limit locals 4
+
+    iload_1
+    lload_2
+    swap
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_4.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_4.java
new file mode 100644
index 0000000..ffd75d6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.swap.jm;
+
+public class T_swap_4 {
+
+    public int run(int a, long b) {
+        return (int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_5.j b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_5.j
new file mode 100644
index 0000000..53d03af
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_swap_5.java
+.class public dxc/junit/opcodes/swap/jm/T_swap_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(JJ)I
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    swap
+
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_5.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_5.java
new file mode 100644
index 0000000..d684944
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.swap.jm;
+
+public class T_swap_5 {
+
+    public int run(int a, long b) {
+        return (int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_6.j b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_6.j
new file mode 100644
index 0000000..4b33952
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_6.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_swap_6.java
+.class public dxc/junit/opcodes/swap/jm/T_swap_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(FF)F
+    .limit stack 4
+    .limit locals 5
+
+    fload_2
+    fload_1
+    
+    swap
+
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_6.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_6.java
new file mode 100644
index 0000000..c52c8d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.swap.jm;
+
+public class T_swap_6 {
+
+    public float run(float a, float b) {
+        return b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_7.j b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_7.j
new file mode 100644
index 0000000..615a782
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_7.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_swap_7.java
+.class public dxc/junit/opcodes/swap/jm/T_swap_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+    .limit stack 4
+    .limit locals 5
+
+    aload_2
+    aload_1
+    
+    swap
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_7.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_7.java
new file mode 100644
index 0000000..789077e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.swap.jm;
+
+public class T_swap_7 {
+
+    public Object run(Object a, Object b) {
+        return b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_8.j b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_8.j
new file mode 100644
index 0000000..81a647b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_8.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_swap_8.java
+.class public dxc/junit/opcodes/swap/jm/T_swap_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(ILjava/lang/Object;)Ljava/lang/Object;
+    .limit stack 4
+    .limit locals 5
+
+    aload_2
+    iload_1
+    
+    swap
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_8.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_8.java
new file mode 100644
index 0000000..d4608bb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.swap.jm;
+
+public class T_swap_8 {
+
+    public Object run(int a, Object b) {
+        return b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/Test_tableswitch.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/Test_tableswitch.java
new file mode 100644
index 0000000..459fb72
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/Test_tableswitch.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.tableswitch;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.tableswitch.jm.T_tableswitch_1;
+
+public class Test_tableswitch extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_tableswitch_1 t = new T_tableswitch_1();
+        assertEquals(2, t.run(-1));
+
+        assertEquals(-1, t.run(4));
+        assertEquals(20, t.run(2));
+        assertEquals(-1, t.run(5));
+
+        assertEquals(-1, t.run(6));
+        assertEquals(20, t.run(3));
+        assertEquals(-1, t.run(7));
+    }
+
+    /**
+     * @title check Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_tableswitch_1 t = new T_tableswitch_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title check Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_tableswitch_1 t = new T_tableswitch_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.tableswitch.jm.T_tableswitch_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.tableswitch.jm.T_tableswitch_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.8
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.tableswitch.jm.T_tableswitch_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.8
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.tableswitch.jm.T_tableswitch_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.8
+     * @title low value shall be less than high
+     * value
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.tableswitch.jm.T_tableswitch_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.8
+     * @title non-zero padding
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.tableswitch.jm.T_tableswitch_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.tableswitch.jm.T_tableswitch_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.8
+     * @title number of entries in jump table
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.tableswitch.jm.T_tableswitch_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_1.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_1.j
new file mode 100644
index 0000000..e21d5c3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_1.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_tableswitch_1.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    tableswitch -1 3
+            Label0
+            Label3
+            Label3
+            Label1
+            Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_1.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_1.java
new file mode 100644
index 0000000..6feb6d8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_1 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_2.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_2.j
new file mode 100644
index 0000000..4fbe7d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_2.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_tableswitch_2.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+;    iload_1
+    tableswitch 1 3
+            Label0
+            Label1
+            Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_2.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_2.java
new file mode 100644
index 0000000..dd07d01
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_2.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_2 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_3.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_3.j
new file mode 100644
index 0000000..14f6827
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_3.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_tableswitch_3.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    fconst_1
+    
+    tableswitch 1 3
+            Label0
+            Label1
+            Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_3.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_3.java
new file mode 100644
index 0000000..fe2cfed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_3.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_3 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.cfh
new file mode 100644
index 0000000..f70e16c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 51, h: 0006: utf8{"dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4"}
+    // .  .  0  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  t  a  b  l  e  s  w  i  t  c  h  /  j  m  /  T  _  t  a  b  l  e  s  w  i  t  c  h  _  4  
+       01 00 30 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 74 61 62 6c 65 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 34 
+    // parsed:, offset 113, len 23, h: 0007: utf8{"T_tableswitch_4.java"}
+    // .  .  .  T  _  t  a  b  l  e  s  w  i  t  c  h  _  4  .  j  a  v  a  
+       01 00 14 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 136, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0a 
+    // parsed:, offset 141, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 148, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 154, len 3, h: 000b: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_4}
+    // .  .  .  
+       07 00 06 
+    // parsed:, offset 157, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 160, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 167, len 0, h: end constant_pool
+// parsed:, offset 167, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 169, len 2, h: this_class: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_4}
+// .  .  
+   00 0b 
+// parsed:, offset 171, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 173, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 175, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 177, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 179, len:102,desc: ()V
+// parsed:, offset 179, len 0, h:  methods[0]: 
+    // parsed:, offset 179, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 181, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 183, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 185, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 187, len 0, h:  attributes[0]: 
+        // parsed:, offset 187, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 189, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 193, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 195, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 197, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 206, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 208, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 210, len 0, h: end attributes[0] 
+// parsed:, offset 210, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 210, len:71,desc: (I)I
+// parsed:, offset 210, len 0, h:  methods[1]: 
+    // parsed:, offset 210, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 212, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 214, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 216, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 218, len 0, h:  attributes[0]: 
+        // parsed:, offset 218, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 220, len 4, h: length: 0000002f
+        // .  .  .  /  
+           00 00 00 2f 
+        // parsed:, offset 224, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 228, len 4, h: code_length: 00000023
+        // .  .  .  #  
+           00 00 00 23 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 27, h: 0001: tableswitch   +00000001: 001c   +00000002: 001e   +00000003: 001e   default: 0021
+        // .  .  .  .  .  .     .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  
+//@mod           aa 00 00 00 00 00 20 00 00 00 01 00 00 00 03 00 00 00 1b 00 00 00 1d 00 00 00 1d 
+           aa 00 00 00 00 00 20 00 00 00 01 00 00 00 03 00 00 00 1b 00 00 00 1d 00 00 00 ff 
+        // parsed:, offset 28, len 1, h: 001c: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 29, len 1, h: 001d: ireturn
+        // .  
+           ac 
+        // parsed:, offset 30, len 2, h: 001e: bipush #+14
+        // .  .  
+           10 14 
+        // parsed:, offset 32, len 1, h: 0020: ireturn
+        // .  
+           ac 
+        // parsed:, offset 33, len 1, h: 0021: iconst_m1 // #-01
+        // .  
+           02 
+        // parsed:, offset 34, len 1, h: 0022: ireturn
+        // .  
+           ac 
+        // parsed:, offset 267, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 269, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 271, len 0, h: end attributes[0] 
+// parsed:, offset 271, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 271, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 273, len 0, h:  attributes[0]: 
+    // parsed:, offset 273, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 275, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 279, len 2, h: source: utf8{"T_tableswitch_4.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 281, len 0, h: end attributes[0] 
+// parsed:, offset 281, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.j
new file mode 100644
index 0000000..b527e24
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_tableswitch_4.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    
+    tableswitch 1 3
+            Label0
+            Label1
+            Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.java
new file mode 100644
index 0000000..ab0d8e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_4 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.cfh
new file mode 100644
index 0000000..9d8b286
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 51, h: 0005: utf8{"dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5"}
+    // .  .  0  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  t  a  b  l  e  s  w  i  t  c  h  /  j  m  /  T  _  t  a  b  l  e  s  w  i  t  c  h  _  5  
+       01 00 30 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 74 61 62 6c 65 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 35 
+    // parsed:, offset 107, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 113, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0a 
+    // parsed:, offset 118, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 125, len 23, h: 0009: utf8{"T_tableswitch_5.java"}
+    // .  .  .  T  _  t  a  b  l  e  s  w  i  t  c  h  _  5  .  j  a  v  a  
+       01 00 14 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 148, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 154, len 3, h: 000b: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_5}
+    // .  .  .  
+       07 00 05 
+    // parsed:, offset 157, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 160, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 167, len 0, h: end constant_pool
+// parsed:, offset 167, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 169, len 2, h: this_class: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_5}
+// .  .  
+   00 0b 
+// parsed:, offset 171, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 173, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 175, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 177, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 179, len:105,desc: ()V
+// parsed:, offset 179, len 0, h:  methods[0]: 
+    // parsed:, offset 179, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 181, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 183, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 185, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 187, len 0, h:  attributes[0]: 
+        // parsed:, offset 187, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 189, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 193, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 195, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 197, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 206, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 208, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 210, len 0, h: end attributes[0] 
+// parsed:, offset 210, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 210, len:74,desc: (I)I
+// parsed:, offset 210, len 0, h:  methods[1]: 
+    // parsed:, offset 210, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 212, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 214, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 216, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 218, len 0, h:  attributes[0]: 
+        // parsed:, offset 218, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 220, len 4, h: length: 00000032
+        // .  .  .  2  
+           00 00 00 32 
+        // parsed:, offset 224, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 228, len 4, h: code_length: 00000026
+        // .  .  .  &  
+           00 00 00 26 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 27, h: 0001: tableswitch   +00000001: 001c   +00000002: 001e   +00000003: 001e   default: 0021
+        // .  .  .  .  .  .     .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  
+//@mod           aa 00 00 00 00 00 20 00 00 00 01 00 00 00 03 00 00 00 1b 00 00 00 1d 00 00 00 1d 
+           aa 00 00 00 00 00 21 00 00 00 01 00 00 00 03 00 00 00 1b 00 00 00 1d 00 00 00 1d 
+        // parsed:, offset 28, len 1, h: 001c: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 29, len 1, h: 001d: ireturn
+        // .  
+           ac 
+        // parsed:, offset 30, len 2, h: 001e: bipush #+14
+        // .  .  
+           10 14 
+        // parsed:, offset 32, len 1, h: 0020: ireturn
+        // .  
+           ac 
+        // parsed:, offset 33, len 4, h: 0021: wide iload 0001
+        // .  .  .  .  
+           c4 15 00 01 
+        // parsed:, offset 37, len 1, h: 0025: ireturn
+        // .  
+           ac 
+        // parsed:, offset 270, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 272, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 274, len 0, h: end attributes[0] 
+// parsed:, offset 274, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 274, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 276, len 0, h:  attributes[0]: 
+    // parsed:, offset 276, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 278, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 282, len 2, h: source: utf8{"T_tableswitch_5.java"}
+    // .  .  
+       00 09 
+// parsed:, offset 284, len 0, h: end attributes[0] 
+// parsed:, offset 284, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.j
new file mode 100644
index 0000000..e085f06
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_tableswitch_5.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    
+    tableswitch 1 3
+            Label0
+            Label1
+            Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iload_w 1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.java
new file mode 100644
index 0000000..3702524
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_5 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.cfh
new file mode 100644
index 0000000..51a3fad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0b 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 51, h: 0005: utf8{"dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6"}
+    // .  .  0  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  t  a  b  l  e  s  w  i  t  c  h  /  j  m  /  T  _  t  a  b  l  e  s  w  i  t  c  h  _  6  
+       01 00 30 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 74 61 62 6c 65 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 36 
+    // parsed:, offset 107, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 113, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 09 
+    // parsed:, offset 118, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 125, len 6, h: 0009: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 131, len 3, h: 000a: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_6}
+    // .  .  .  
+       07 00 05 
+    // parsed:, offset 134, len 3, h: 000b: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 137, len 23, h: 000c: utf8{"T_tableswitch_6.java"}
+    // .  .  .  T  _  t  a  b  l  e  s  w  i  t  c  h  _  6  .  j  a  v  a  
+       01 00 14 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 160, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 167, len 0, h: end constant_pool
+// parsed:, offset 167, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 169, len 2, h: this_class: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_6}
+// .  .  
+   00 0a 
+// parsed:, offset 171, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0b 
+// parsed:, offset 173, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 175, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 177, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 179, len:91,desc: ()V
+// parsed:, offset 179, len 0, h:  methods[0]: 
+    // parsed:, offset 179, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 181, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 183, len 2, h: descriptor: ()V
+    // .  .  
+       00 09 
+    // parsed:, offset 185, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 187, len 0, h:  attributes[0]: 
+        // parsed:, offset 187, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 189, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 193, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 195, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 197, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 206, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 208, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 210, len 0, h: end attributes[0] 
+// parsed:, offset 210, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 210, len:60,desc: (I)I
+// parsed:, offset 210, len 0, h:  methods[1]: 
+    // parsed:, offset 210, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 212, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 214, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 216, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 218, len 0, h:  attributes[0]: 
+        // parsed:, offset 218, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 220, len 4, h: length: 00000024
+        // .  .  .  $  
+           00 00 00 24 
+        // parsed:, offset 224, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 228, len 4, h: code_length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 19, h: 0001: tableswitch   +00000001: 0014   default: 0016
+        // .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  
+//@mod           aa 00 00 00 00 00 15 00 00 00 01 00 00 00 01 00 00 00 13 
+                 aa 00 00 00 00 00 15 00 00 00 01 00 00 00 00 00 00 00 13 
+        // parsed:, offset 20, len 1, h: 0014: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 21, len 1, h: 0015: ireturn
+        // .  
+           ac 
+        // parsed:, offset 22, len 1, h: 0016: iconst_m1 // #-01
+        // .  
+           02 
+        // parsed:, offset 23, len 1, h: 0017: ireturn
+        // .  
+           ac 
+        // parsed:, offset 256, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 258, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 260, len 0, h: end attributes[0] 
+// parsed:, offset 260, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 260, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 262, len 0, h:  attributes[0]: 
+    // parsed:, offset 262, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 264, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 268, len 2, h: source: utf8{"T_tableswitch_6.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 270, len 0, h: end attributes[0] 
+// parsed:, offset 270, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.j
new file mode 100644
index 0000000..b290972
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_tableswitch_6.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    
+    tableswitch 1 1
+            Label0
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.java
new file mode 100644
index 0000000..038bd4f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_6 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.cfh b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.cfh
new file mode 100644
index 0000000..74cf765
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 51, h: 0004: utf8{"dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7"}
+    // .  .  0  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  t  a  b  l  e  s  w  i  t  c  h  /  j  m  /  T  _  t  a  b  l  e  s  w  i  t  c  h  _  7  
+       01 00 30 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 74 61 62 6c 65 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 37 
+    // parsed:, offset 98, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 107, len 23, h: 0006: utf8{"T_tableswitch_7.java"}
+    // .  .  .  T  _  t  a  b  l  e  s  w  i  t  c  h  _  7  .  j  a  v  a  
+       01 00 14 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 37 2e 6a 61 76 61 
+    // parsed:, offset 130, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 136, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 141, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 148, len 3, h: 000a: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_7}
+    // .  .  .  
+       07 00 04 
+    // parsed:, offset 151, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 157, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 160, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 167, len 0, h: end constant_pool
+// parsed:, offset 167, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 169, len 2, h: this_class: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_7}
+// .  .  
+   00 0a 
+// parsed:, offset 171, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 173, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 175, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 177, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 179, len:105,desc: ()V
+// parsed:, offset 179, len 0, h:  methods[0]: 
+    // parsed:, offset 179, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 181, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 183, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 185, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 187, len 0, h:  attributes[0]: 
+        // parsed:, offset 187, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 189, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 193, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 195, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 197, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 206, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 208, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 210, len 0, h: end attributes[0] 
+// parsed:, offset 210, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 210, len:74,desc: (I)I
+// parsed:, offset 210, len 0, h:  methods[1]: 
+    // parsed:, offset 210, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 212, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 214, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 216, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 218, len 0, h:  attributes[0]: 
+        // parsed:, offset 218, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 220, len 4, h: length: 00000032
+        // .  .  .  2  
+           00 00 00 32 
+        // parsed:, offset 224, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 228, len 4, h: code_length: 00000026
+        // .  .  .  &  
+           00 00 00 26 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 27, h: 0001: tableswitch   +00000001: 001c   +00000002: 001e   +00000003: 001e   default: 0021
+        // .  .  .  .  .  .     .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  
+//@mod           aa 00 00 00 00 00 20 00 00 00 01 00 00 00 03 00 00 00 1b 00 00 00 1d 00 00 00 1d 
+           aa 00 01 00 00 00 20 00 00 00 01 00 00 00 03 00 00 00 1b 00 00 00 1d 00 00 00 1d 
+        // parsed:, offset 28, len 1, h: 001c: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 29, len 1, h: 001d: ireturn
+        // .  
+           ac 
+        // parsed:, offset 30, len 2, h: 001e: bipush #+14
+        // .  .  
+           10 14 
+        // parsed:, offset 32, len 1, h: 0020: ireturn
+        // .  
+           ac 
+        // parsed:, offset 33, len 4, h: 0021: wide iload 0001
+        // .  .  .  .  
+           c4 15 00 01 
+        // parsed:, offset 37, len 1, h: 0025: ireturn
+        // .  
+           ac 
+        // parsed:, offset 270, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 272, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 274, len 0, h: end attributes[0] 
+// parsed:, offset 274, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 274, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 276, len 0, h:  attributes[0]: 
+    // parsed:, offset 276, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 278, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 282, len 2, h: source: utf8{"T_tableswitch_7.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 284, len 0, h: end attributes[0] 
+// parsed:, offset 284, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.j
new file mode 100644
index 0000000..e944ce0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_tableswitch_7.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    
+    tableswitch 1 3
+            Label0
+            Label1
+            Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iload_w 1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.java
new file mode 100644
index 0000000..e36101b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_7 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_8.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_8.j
new file mode 100644
index 0000000..d9d3f2a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_8.j
@@ -0,0 +1,54 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_tableswitch_8.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    
+    tableswitch 1 3
+            Label0
+            Label1
+            Label1
+            default: Label3
+
+    Label0:
+.line 8
+    iconst_2
+    ireturn
+
+    Label1:
+.line 11
+    bipush 20
+    ireturn
+
+    Label3:
+.line 13
+    iconst_m1
+
+    Label5:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_8.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_8.java
new file mode 100644
index 0000000..205fec9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_8.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_8 {
+    
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.cfh b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.cfh
new file mode 100644
index 0000000..ded5708
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 51, h: 0003: utf8{"dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9"}
+    // .  .  0  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  t  a  b  l  e  s  w  i  t  c  h  /  j  m  /  T  _  t  a  b  l  e  s  w  i  t  c  h  _  9  
+       01 00 30 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 74 61 62 6c 65 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 39 
+    // parsed:, offset 85, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 98, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 107, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 113, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0a 
+    // parsed:, offset 118, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 125, len 3, h: 0009: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_9}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 128, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 134, len 23, h: 000b: utf8{"T_tableswitch_9.java"}
+    // .  .  .  T  _  t  a  b  l  e  s  w  i  t  c  h  _  9  .  j  a  v  a  
+       01 00 14 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 39 2e 6a 61 76 61 
+    // parsed:, offset 157, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 160, len 0, h: end constant_pool
+// parsed:, offset 160, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 162, len 2, h: this_class: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_9}
+// .  .  
+   00 09 
+// parsed:, offset 164, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 166, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 168, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 172, len:89,desc: ()V
+// parsed:, offset 172, len 0, h:  methods[0]: 
+    // parsed:, offset 172, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 174, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 176, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 178, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 180, len 0, h:  attributes[0]: 
+        // parsed:, offset 180, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 182, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 186, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 188, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 199, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 201, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 203, len 0, h: end attributes[0] 
+// parsed:, offset 203, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 203, len:58,desc: ()V
+// parsed:, offset 203, len 0, h:  methods[1]: 
+    // parsed:, offset 203, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 205, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 207, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 209, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 211, len 0, h:  attributes[0]: 
+        // parsed:, offset 211, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 213, len 4, h: length: 00000022
+        // .  .  .  "  
+           00 00 00 22 
+        // parsed:, offset 217, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 219, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 4, h: code_length: 00000016
+        // .  .  .  .  
+           00 00 00 16 
+        // parsed:, offset 0, len 1, h: 0000: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 1, len 19, h: 0001: tableswitch   +00000001: 0014   default: 0015
+        // .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  
+//@mod           aa 00 00 00 00 00 14 00 00 00 01 00 00 00 01 00 00 00 13 
+           aa 00 00 00 00 00 14 00 00 00 01 00 00 00 02 00 00 00 13 
+        // parsed:, offset 20, len 1, h: 0014: return
+        // .  
+           b1 
+        // parsed:, offset 21, len 1, h: 0015: return
+        // .  
+           b1 
+        // parsed:, offset 247, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 249, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 251, len 0, h: end attributes[0] 
+// parsed:, offset 251, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 251, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 253, len 0, h:  attributes[0]: 
+    // parsed:, offset 253, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 255, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 259, len 2, h: source: utf8{"T_tableswitch_9.java"}
+    // .  .  
+       00 0b 
+// parsed:, offset 261, len 0, h: end attributes[0] 
+// parsed:, offset 261, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.j
new file mode 100644
index 0000000..155aae4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_tableswitch_9.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 2
+
+    iconst_1
+    tableswitch 1 1
+            Label0
+            default: Label1
+
+Label0:
+    return
+
+Label1:
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.java
new file mode 100644
index 0000000..39f83b1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_9 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        }
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/wide/Test_wide.java b/tools/dx-tests/src/dxc/junit/opcodes/wide/Test_wide.java
new file mode 100644
index 0000000..c27db48
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/wide/Test_wide.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.wide;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+
+public class Test_wide extends DxTestCase {
+
+    /**
+     * Wide instruction is tested as part of wide version of particular
+     * instructions so here we just test if wide instruction can't be applied to
+     * wrong bytecode.
+     */
+
+    /**
+     * @constraint 4.8.1.5 (?)
+     * @title Wide instruction shall be applied only on defined
+     * instructions 
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.wide.jm.T_wide_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.5 
+     * @title bytecode modified with wide instruction must not be
+     *          reachable directly
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.wide.jm.T_wide_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.cfh b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.cfh
new file mode 100644
index 0000000..0906ca2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.cfh
@@ -0,0 +1,182 @@
+//@class:dxc/junit/opcodes/wide/jm/T_wide_1
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0b 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 37, h: 0003: utf8{"dxc/junit/opcodes/wide/jm/T_wide_1"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  w  i  d  e  /  j  m  /  T  _  w  i  d  e  _  1  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 77 69 64 65 2f 6a 6d 2f 54 5f 77 69 64 65 5f 31 
+    // parsed:, offset 71, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 84, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 93, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 99, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 09 
+    // parsed:, offset 104, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 111, len 6, h: 0009: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 117, len 3, h: 000a: type{dxc.junit.opcodes.wide.jm.T_wide_1}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 120, len 3, h: 000b: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 123, len 16, h: 000c: utf8{"T_wide_1.java"}
+    // .  .  .  T  _  w  i  d  e  _  1  .  j  a  v  a  
+       01 00 0d 54 5f 77 69 64 65 5f 31 2e 6a 61 76 61 
+// parsed:, offset 139, len 0, h: end constant_pool
+// parsed:, offset 139, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 141, len 2, h: this_class: type{dxc.junit.opcodes.wide.jm.T_wide_1}
+// .  .  
+   00 0a 
+// parsed:, offset 143, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0b 
+// parsed:, offset 145, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 147, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 149, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 151, len:70,desc: ()V
+// parsed:, offset 151, len 0, h:  methods[0]: 
+    // parsed:, offset 151, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 153, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 155, len 2, h: descriptor: ()V
+    // .  .  
+       00 09 
+    // parsed:, offset 157, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 159, len 0, h:  attributes[0]: 
+        // parsed:, offset 159, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 161, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 165, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 167, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 169, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 178, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 180, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 182, len 0, h: end attributes[0] 
+// parsed:, offset 182, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 182, len:39,desc: ()V
+// parsed:, offset 182, len 0, h:  methods[1]: 
+    // parsed:, offset 182, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 184, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 186, len 2, h: descriptor: ()V
+    // .  .  
+       00 09 
+    // parsed:, offset 188, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 0, h:  attributes[0]: 
+        // parsed:, offset 190, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 192, len 4, h: length: 0000000f
+        // .  .  .  .  
+           00 00 00 0f 
+        // parsed:, offset 196, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 198, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 200, len 4, h: code_length: 00000003
+        // .  .  .  .  
+           00 00 00 03 
+        // parsed:, offset 0, len 1, h: 0000: nop
+        // .  
+//@mod           00
+           c4 
+        // parsed:, offset 1, len 1, h: 0001: nop
+        // .  
+           00 
+        // parsed:, offset 2, len 1, h: 0002: return
+        // .  
+           b1 
+        // parsed:, offset 207, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 209, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 211, len 0, h: end attributes[0] 
+// parsed:, offset 211, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 211, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 213, len 0, h:  attributes[0]: 
+    // parsed:, offset 213, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 215, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 219, len 2, h: source: utf8{"T_wide_1.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 221, len 0, h: end attributes[0] 
+// parsed:, offset 221, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.j b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.j
new file mode 100644
index 0000000..7269f72
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_wide_1.java
+.class public dxc/junit/opcodes/wide/jm/T_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+
+    nop
+    nop
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.java b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.java
new file mode 100644
index 0000000..a5f3ee0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.wide.jm;
+
+public class T_wide_1 {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.cfh b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.cfh
new file mode 100644
index 0000000..c6717db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.cfh
@@ -0,0 +1,182 @@
+//@class:dxc/junit/opcodes/wide/jm/T_wide_2
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 37, h: 0001: utf8{"dxc/junit/opcodes/wide/jm/T_wide_2"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  w  i  d  e  /  j  m  /  T  _  w  i  d  e  _  2  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 77 69 64 65 2f 6a 6d 2f 54 5f 77 69 64 65 5f 32 
+    // parsed:, offset 47, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 08 
+    // parsed:, offset 52, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 71, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 84, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 93, len 16, h: 0006: utf8{"T_wide_2.java"}
+    // .  .  .  T  _  w  i  d  e  _  2  .  j  a  v  a  
+       01 00 0d 54 5f 77 69 64 65 5f 32 2e 6a 61 76 61 
+    // parsed:, offset 109, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 115, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0a 
+    // parsed:, offset 120, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 127, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 133, len 3, h: 000b: type{dxc.junit.opcodes.wide.jm.T_wide_2}
+    // .  .  .  
+       07 00 01 
+    // parsed:, offset 136, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 139, len 0, h: end constant_pool
+// parsed:, offset 139, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 141, len 2, h: this_class: type{dxc.junit.opcodes.wide.jm.T_wide_2}
+// .  .  
+   00 0b 
+// parsed:, offset 143, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 145, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 147, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 149, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 151, len:75,desc: ()V
+// parsed:, offset 151, len 0, h:  methods[0]: 
+    // parsed:, offset 151, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 153, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 155, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 157, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 159, len 0, h:  attributes[0]: 
+        // parsed:, offset 159, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 161, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 165, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 167, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 169, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 178, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 180, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 182, len 0, h: end attributes[0] 
+// parsed:, offset 182, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 182, len:44,desc: ()V
+// parsed:, offset 182, len 0, h:  methods[1]: 
+    // parsed:, offset 182, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 184, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 186, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 188, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 0, h:  attributes[0]: 
+        // parsed:, offset 190, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 192, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 196, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 198, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 200, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 3, h: 0000: goto 0003
+        // .  .  .  
+//@mod           a7 00 03 
+           a7 00 04 
+        // parsed:, offset 3, len 4, h: 0003: wide aload 0000
+        // .  .  .  .  
+           c4 19 00 00 
+        // parsed:, offset 7, len 1, h: 0007: return
+        // .  
+           b1 
+        // parsed:, offset 212, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 214, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 216, len 0, h: end attributes[0] 
+// parsed:, offset 216, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 216, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 218, len 0, h:  attributes[0]: 
+    // parsed:, offset 218, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 220, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 224, len 2, h: source: utf8{"T_wide_2.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 226, len 0, h: end attributes[0] 
+// parsed:, offset 226, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.j b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.j
new file mode 100644
index 0000000..176ece0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_wide_2.java
+.class public dxc/junit/opcodes/wide/jm/T_wide_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+
+    .limit stack 1
+    
+    goto Label0
+
+Label0:
+    aload_w 0
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.java b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.java
new file mode 100644
index 0000000..50d5d46
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.opcodes.wide.jm;
+
+public class T_wide_2 {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/AllTests.java b/tools/dx-tests/src/dxc/junit/verify/AllTests.java
new file mode 100644
index 0000000..790c0d8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/AllTests.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite("Tests for java vm: test that "
+                + "structurally damaged files are rejected by the verifier");
+        suite.addTestSuite(dxc.junit.verify.t481_1.Test_t481_1.class);
+        suite.addTestSuite(dxc.junit.verify.t481_2.Test_t481_2.class);
+        suite.addTestSuite(dxc.junit.verify.t481_3.Test_t481_3.class);
+        suite.addTestSuite(dxc.junit.verify.t481_4.Test_t481_4.class);
+        suite.addTestSuite(dxc.junit.verify.t481_6.Test_t481_6.class);
+
+        suite.addTestSuite(dxc.junit.verify.t482_2.Test_t482_2.class);
+        suite.addTestSuite(dxc.junit.verify.t482_3.Test_t482_3.class);
+        suite.addTestSuite(dxc.junit.verify.t482_4.Test_t482_4.class);
+        suite.addTestSuite(dxc.junit.verify.t482_8.Test_t482_8.class);
+        suite.addTestSuite(dxc.junit.verify.t482_9.Test_t482_9.class);
+        suite.addTestSuite(dxc.junit.verify.t482_10.Test_t482_10.class);
+        suite.addTestSuite(dxc.junit.verify.t482_11.Test_t482_11.class);
+        suite.addTestSuite(dxc.junit.verify.t482_14.Test_t482_14.class);
+        suite.addTestSuite(dxc.junit.verify.t482_20.Test_t482_20.class);
+
+        return suite;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_1/Test_t481_1.java b/tools/dx-tests/src/dxc/junit/verify/t481_1/Test_t481_1.java
new file mode 100644
index 0000000..cf26b1f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_1/Test_t481_1.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t481_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t481_1 extends DxTestCase {
+
+    /**
+     * @constraint 4.8.1.1
+     * @title code_length must not be zero
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t481_1.jm.T_t481_1_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.cfh b/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.cfh
new file mode 100644
index 0000000..4785bad7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.cfh
@@ -0,0 +1,176 @@
+//@class:dxc/junit/verify/t481_1/jm/T_t481_1_1
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 18, h: 0006: utf8{"T_t481_1_1.java"}
+    // .  .  .  T  _  t  4  8  1  _  1  _  1  .  j  a  v  a  
+       01 00 0f 54 5f 74 34 38 31 5f 31 5f 31 2e 6a 61 76 61 
+    // parsed:, offset 80, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0a 
+    // parsed:, offset 85, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 92, len 40, h: 0009: utf8{"dxc/junit/verify/t481_1/jm/T_t481_1_1"}
+    // .  .  %  d  x  c  /  j  u  n  i  t  /  v  e  r  i  f  y  /  t  4  8  1  _  1  /  j  m  /  T  _  t  4  8  1  _  1  _  1  
+       01 00 25 64 78 63 2f 6a 75 6e 69 74 2f 76 65 72 69 66 79 2f 74 34 38 31 5f 31 2f 6a 6d 2f 54 5f 74 34 38 31 5f 31 5f 31 
+    // parsed:, offset 132, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 138, len 3, h: 000b: type{dxc.junit.verify.t481_1.jm.T_t481_1_1}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 141, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 144, len 0, h: end constant_pool
+// parsed:, offset 144, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 146, len 2, h: this_class: type{dxc.junit.verify.t481_1.jm.T_t481_1_1}
+// .  .  
+   00 0b 
+// parsed:, offset 148, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 152, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 156, len:68,desc: ()V
+// parsed:, offset 156, len 0, h:  methods[0]: 
+    // parsed:, offset 156, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 158, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 160, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 162, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 164, len 0, h:  attributes[0]: 
+        // parsed:, offset 164, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 166, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 170, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 172, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 183, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 185, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 187, len 0, h: end attributes[0] 
+// parsed:, offset 187, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 187, len:37,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[1]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 197, len 4, h: length: 0000000d
+        // .  .  .  .  
+           00 00 00 0d 
+        // parsed:, offset 201, len 2, h: max_stack: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000001
+        // .  .  .  .  
+//@mod           00 00 00 01 
+           00 00 00 00 
+        // parsed:, offset 0, len 1, h: 0000: return
+        // .  
+           b1 
+        // parsed:, offset 210, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 212, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 214, len 0, h: end attributes[0] 
+// parsed:, offset 214, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 214, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 216, len 0, h:  attributes[0]: 
+    // parsed:, offset 216, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 218, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 222, len 2, h: source: utf8{"T_t481_1_1.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 224, len 0, h: end attributes[0] 
+// parsed:, offset 224, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.j b/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.j
new file mode 100644
index 0000000..fc6fad0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t481_1_1.java
+.class public dxc/junit/verify/t481_1/jm/T_t481_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.java b/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.java
new file mode 100644
index 0000000..3da0228
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t481_1.jm;
+
+public class T_t481_1_1{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_2/Test_t481_2.java b/tools/dx-tests/src/dxc/junit/verify/t481_2/Test_t481_2.java
new file mode 100644
index 0000000..4cabc23
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_2/Test_t481_2.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t481_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t481_2 extends DxTestCase {
+
+    /**
+     * @constraint 4.8.1.2
+     * @title code_length must be less than 65536
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t481_2.jm.T_t481_2_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.cfh b/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.cfh
new file mode 100644
index 0000000..049d556
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.cfh
@@ -0,0 +1,176 @@
+//@class:dxc/junit/verify/t481_2/jm/T_t481_2_1
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 40, h: 0004: utf8{"dxc/junit/verify/t481_2/jm/T_t481_2_1"}
+    // .  .  %  d  x  c  /  j  u  n  i  t  /  v  e  r  i  f  y  /  t  4  8  1  _  2  /  j  m  /  T  _  t  4  8  1  _  2  _  1  
+       01 00 25 64 78 63 2f 6a 75 6e 69 74 2f 76 65 72 69 66 79 2f 74 34 38 31 5f 32 2f 6a 6d 2f 54 5f 74 34 38 31 5f 32 5f 31 
+    // parsed:, offset 87, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 96, len 18, h: 0006: utf8{"T_t481_2_1.java"}
+    // .  .  .  T  _  t  4  8  1  _  2  _  1  .  j  a  v  a  
+       01 00 0f 54 5f 74 34 38 31 5f 32 5f 31 2e 6a 61 76 61 
+    // parsed:, offset 114, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 120, len 3, h: 0008: type{dxc.junit.verify.t481_2.jm.T_t481_2_1}
+    // .  .  .  
+       07 00 04 
+    // parsed:, offset 123, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 128, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 135, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 141, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 144, len 0, h: end constant_pool
+// parsed:, offset 144, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 146, len 2, h: this_class: type{dxc.junit.verify.t481_2.jm.T_t481_2_1}
+// .  .  
+   00 08 
+// parsed:, offset 148, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 152, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 156, len:68,desc: ()V
+// parsed:, offset 156, len 0, h:  methods[0]: 
+    // parsed:, offset 156, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 158, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 160, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 162, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 164, len 0, h:  attributes[0]: 
+        // parsed:, offset 164, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 166, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 170, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 172, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 183, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 185, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 187, len 0, h: end attributes[0] 
+// parsed:, offset 187, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 187, len:37,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[1]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 197, len 4, h: length: 0000000d
+        // .  .  .  .  
+           00 00 00 0d 
+        // parsed:, offset 201, len 2, h: max_stack: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000001
+        // .  .  .  .  
+//@mod           00 00 00 01 
+           00 01 00 00 
+        // parsed:, offset 0, len 1, h: 0000: return
+        // .  
+           b1 
+        // parsed:, offset 210, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 212, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 214, len 0, h: end attributes[0] 
+// parsed:, offset 214, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 214, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 216, len 0, h:  attributes[0]: 
+    // parsed:, offset 216, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 218, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 222, len 2, h: source: utf8{"T_t481_2_1.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 224, len 0, h: end attributes[0] 
+// parsed:, offset 224, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.j b/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.j
new file mode 100644
index 0000000..e167ae6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t481_2_1.java
+.class public dxc/junit/verify/t481_2/jm/T_t481_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.java b/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.java
new file mode 100644
index 0000000..712596d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t481_2.jm;
+
+public class T_t481_2_1{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_3/Test_t481_3.java b/tools/dx-tests/src/dxc/junit/verify/t481_3/Test_t481_3.java
new file mode 100644
index 0000000..2180f89
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_3/Test_t481_3.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t481_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t481_3 extends DxTestCase {
+
+    /**
+     * @constraint 4.8.1.3
+     * @title First opcode instruction shall be at offset 0. The idea of
+     * the test is to put invalid opcode at offset 0.
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t481_3.jm.T_t481_3_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.cfh b/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.cfh
new file mode 100644
index 0000000..9fdc97c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/verify/t481_3/jm/T_t481_3_1
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0b 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 08 
+    // parsed:, offset 67, len 7, h: 0007: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 74, len 6, h: 0008: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 80, len 18, h: 0009: utf8{"T_t481_3_1.java"}
+    // .  .  .  T  _  t  4  8  1  _  3  _  1  .  j  a  v  a  
+       01 00 0f 54 5f 74 34 38 31 5f 33 5f 31 2e 6a 61 76 61 
+    // parsed:, offset 98, len 40, h: 000a: utf8{"dxc/junit/verify/t481_3/jm/T_t481_3_1"}
+    // .  .  %  d  x  c  /  j  u  n  i  t  /  v  e  r  i  f  y  /  t  4  8  1  _  3  /  j  m  /  T  _  t  4  8  1  _  3  _  1  
+       01 00 25 64 78 63 2f 6a 75 6e 69 74 2f 76 65 72 69 66 79 2f 74 34 38 31 5f 33 2f 6a 6d 2f 54 5f 74 34 38 31 5f 33 5f 31 
+    // parsed:, offset 138, len 3, h: 000b: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 141, len 3, h: 000c: type{dxc.junit.verify.t481_3.jm.T_t481_3_1}
+    // .  .  .  
+       07 00 0a 
+// parsed:, offset 144, len 0, h: end constant_pool
+// parsed:, offset 144, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 146, len 2, h: this_class: type{dxc.junit.verify.t481_3.jm.T_t481_3_1}
+// .  .  
+   00 0c 
+// parsed:, offset 148, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0b 
+// parsed:, offset 150, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 152, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 156, len:71,desc: ()V
+// parsed:, offset 156, len 0, h:  methods[0]: 
+    // parsed:, offset 156, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 158, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 160, len 2, h: descriptor: ()V
+    // .  .  
+       00 08 
+    // parsed:, offset 162, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 164, len 0, h:  attributes[0]: 
+        // parsed:, offset 164, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 166, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 170, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 172, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 183, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 185, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 187, len 0, h: end attributes[0] 
+// parsed:, offset 187, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 187, len:40,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[1]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 08 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 197, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 201, len 2, h: max_stack: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 1, h: 0000: nop
+        // .  
+//@mod           00 
+           ff 
+        // parsed:, offset 1, len 1, h: 0001: nop
+        // .  
+           00 
+        // parsed:, offset 2, len 1, h: 0002: nop
+        // .  
+           00 
+        // parsed:, offset 3, len 1, h: 0003: return
+        // .  
+           b1 
+        // parsed:, offset 213, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 215, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 217, len 0, h: end attributes[0] 
+// parsed:, offset 217, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 217, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 219, len 0, h:  attributes[0]: 
+    // parsed:, offset 219, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 221, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 225, len 2, h: source: utf8{"T_t481_3_1.java"}
+    // .  .  
+       00 09 
+// parsed:, offset 227, len 0, h: end attributes[0] 
+// parsed:, offset 227, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.j b/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.j
new file mode 100644
index 0000000..fd5258f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t481_3_1.java
+.class public dxc/junit/verify/t481_3/jm/T_t481_3_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+    
+    nop
+    nop
+    nop
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.java b/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.java
new file mode 100644
index 0000000..4cd3dcf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t481_3.jm;
+
+public class T_t481_3_1{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/Test_t481_4.java b/tools/dx-tests/src/dxc/junit/verify/t481_4/Test_t481_4.java
new file mode 100644
index 0000000..d333420
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/Test_t481_4.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t481_4;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t481_4 extends DxTestCase {
+
+    /**
+     * @constraint 4.8.1.4
+     * @title opcode 254 (0xfe) may not appear in code array
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t481_4.jm.T_t481_4_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.4
+     * @title opcode 255 (0xff) may not appear in code array
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.verify.t481_4.jm.T_t481_4_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.4
+     * @title opcode 202 (0xca) may not appear in code array
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.verify.t481_4.jm.T_t481_4_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.4
+     * @title undocumented opcode 240 (F0) may not appear in code array
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.verify.t481_4.jm.T_t481_4_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.cfh b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.cfh
new file mode 100644
index 0000000..6f6a4d2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/verify/t481_4/jm/T_t481_4_1
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 40, h: 0005: utf8{"dxc/junit/verify/t481_4/jm/T_t481_4_1"}
+    // .  .  %  d  x  c  /  j  u  n  i  t  /  v  e  r  i  f  y  /  t  4  8  1  _  4  /  j  m  /  T  _  t  4  8  1  _  4  _  1  
+       01 00 25 64 78 63 2f 6a 75 6e 69 74 2f 76 65 72 69 66 79 2f 74 34 38 31 5f 34 2f 6a 6d 2f 54 5f 74 34 38 31 5f 34 5f 31 
+    // parsed:, offset 96, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 102, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0a 
+    // parsed:, offset 107, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 114, len 3, h: 0009: type{dxc.junit.verify.t481_4.jm.T_t481_4_1}
+    // .  .  .  
+       07 00 05 
+    // parsed:, offset 117, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 123, len 18, h: 000b: utf8{"T_t481_4_1.java"}
+    // .  .  .  T  _  t  4  8  1  _  4  _  1  .  j  a  v  a  
+       01 00 0f 54 5f 74 34 38 31 5f 34 5f 31 2e 6a 61 76 61 
+    // parsed:, offset 141, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 144, len 0, h: end constant_pool
+// parsed:, offset 144, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 146, len 2, h: this_class: type{dxc.junit.verify.t481_4.jm.T_t481_4_1}
+// .  .  
+   00 09 
+// parsed:, offset 148, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 152, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 156, len:71,desc: ()V
+// parsed:, offset 156, len 0, h:  methods[0]: 
+    // parsed:, offset 156, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 158, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 160, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 162, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 164, len 0, h:  attributes[0]: 
+        // parsed:, offset 164, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 166, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 170, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 172, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 183, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 185, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 187, len 0, h: end attributes[0] 
+// parsed:, offset 187, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 187, len:40,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[1]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 197, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 201, len 2, h: max_stack: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 1, h: 0000: nop
+        // .  
+           00 
+        // parsed:, offset 1, len 1, h: 0001: nop
+        // .  
+//@mod           00 
+           fe
+        // parsed:, offset 2, len 1, h: 0002: nop
+        // .  
+           00 
+        // parsed:, offset 3, len 1, h: 0003: return
+        // .  
+           b1 
+        // parsed:, offset 213, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 215, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 217, len 0, h: end attributes[0] 
+// parsed:, offset 217, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 217, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 219, len 0, h:  attributes[0]: 
+    // parsed:, offset 219, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 221, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 225, len 2, h: source: utf8{"T_t481_4_1.java"}
+    // .  .  
+       00 0b 
+// parsed:, offset 227, len 0, h: end attributes[0] 
+// parsed:, offset 227, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.j b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.j
new file mode 100644
index 0000000..f652640
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t481_4_1.java
+.class public dxc/junit/verify/t481_4/jm/T_t481_4_1
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+    
+    nop
+    nop
+    nop
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.java b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.java
new file mode 100644
index 0000000..8caaaca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t481_4.jm;
+
+public class T_t481_4_1{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.cfh b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.cfh
new file mode 100644
index 0000000..13dee05
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/verify/t481_4/jm/T_t481_4_2
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 18, h: 0001: utf8{"T_t481_4_2.java"}
+    // .  .  .  T  _  t  4  8  1  _  4  _  2  .  j  a  v  a  
+       01 00 0f 54 5f 74 34 38 31 5f 34 5f 32 2e 6a 61 76 61 
+    // parsed:, offset 28, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 08 
+    // parsed:, offset 33, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 52, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 65, len 40, h: 0005: utf8{"dxc/junit/verify/t481_4/jm/T_t481_4_2"}
+    // .  .  %  d  x  c  /  j  u  n  i  t  /  v  e  r  i  f  y  /  t  4  8  1  _  4  /  j  m  /  T  _  t  4  8  1  _  4  _  2  
+       01 00 25 64 78 63 2f 6a 75 6e 69 74 2f 76 65 72 69 66 79 2f 74 34 38 31 5f 34 2f 6a 6d 2f 54 5f 74 34 38 31 5f 34 5f 32 
+    // parsed:, offset 105, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 114, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 120, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0b 
+    // parsed:, offset 125, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 132, len 3, h: 000a: type{dxc.junit.verify.t481_4.jm.T_t481_4_2}
+    // .  .  .  
+       07 00 05 
+    // parsed:, offset 135, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 141, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 144, len 0, h: end constant_pool
+// parsed:, offset 144, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 146, len 2, h: this_class: type{dxc.junit.verify.t481_4.jm.T_t481_4_2}
+// .  .  
+   00 0a 
+// parsed:, offset 148, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 152, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 156, len:71,desc: ()V
+// parsed:, offset 156, len 0, h:  methods[0]: 
+    // parsed:, offset 156, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 158, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 160, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 162, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 164, len 0, h:  attributes[0]: 
+        // parsed:, offset 164, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 166, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 170, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 172, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 183, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 185, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 187, len 0, h: end attributes[0] 
+// parsed:, offset 187, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 187, len:40,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[1]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 197, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 201, len 2, h: max_stack: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 1, h: 0000: nop
+        // .  
+           00 
+        // parsed:, offset 1, len 1, h: 0001: nop
+        // .  
+//@mod           00 
+           ff 
+        // parsed:, offset 2, len 1, h: 0002: nop
+        // .  
+           00 
+        // parsed:, offset 3, len 1, h: 0003: return
+        // .  
+           b1 
+        // parsed:, offset 213, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 215, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 217, len 0, h: end attributes[0] 
+// parsed:, offset 217, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 217, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 219, len 0, h:  attributes[0]: 
+    // parsed:, offset 219, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 221, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 225, len 2, h: source: utf8{"T_t481_4_2.java"}
+    // .  .  
+       00 01 
+// parsed:, offset 227, len 0, h: end attributes[0] 
+// parsed:, offset 227, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.j b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.j
new file mode 100644
index 0000000..1b5b83b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t481_4_2.java
+.class public dxc/junit/verify/t481_4/jm/T_t481_4_2
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+    
+    nop
+    nop
+    nop
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.java b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.java
new file mode 100644
index 0000000..bbc58a4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t481_4.jm;
+
+public class T_t481_4_2{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.cfh b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.cfh
new file mode 100644
index 0000000..c195228
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/verify/t481_4/jm/T_t481_4_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 40, h: 0004: utf8{"dxc/junit/verify/t481_4/jm/T_t481_4_3"}
+    // .  .  %  d  x  c  /  j  u  n  i  t  /  v  e  r  i  f  y  /  t  4  8  1  _  4  /  j  m  /  T  _  t  4  8  1  _  4  _  3  
+       01 00 25 64 78 63 2f 6a 75 6e 69 74 2f 76 65 72 69 66 79 2f 74 34 38 31 5f 34 2f 6a 6d 2f 54 5f 74 34 38 31 5f 34 5f 33 
+    // parsed:, offset 87, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 96, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 102, len 18, h: 0007: utf8{"T_t481_4_3.java"}
+    // .  .  .  T  _  t  4  8  1  _  4  _  3  .  j  a  v  a  
+       01 00 0f 54 5f 74 34 38 31 5f 34 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 120, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 125, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 132, len 3, h: 000a: type{dxc.junit.verify.t481_4.jm.T_t481_4_3}
+    // .  .  .  
+       07 00 04 
+    // parsed:, offset 135, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 141, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 144, len 0, h: end constant_pool
+// parsed:, offset 144, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 146, len 2, h: this_class: type{dxc.junit.verify.t481_4.jm.T_t481_4_3}
+// .  .  
+   00 0a 
+// parsed:, offset 148, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 152, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 156, len:71,desc: ()V
+// parsed:, offset 156, len 0, h:  methods[0]: 
+    // parsed:, offset 156, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 158, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 160, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 162, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 164, len 0, h:  attributes[0]: 
+        // parsed:, offset 164, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 166, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 170, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 172, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 183, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 185, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 187, len 0, h: end attributes[0] 
+// parsed:, offset 187, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 187, len:40,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[1]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 197, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 201, len 2, h: max_stack: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 1, h: 0000: nop
+        // .  
+           00 
+        // parsed:, offset 1, len 1, h: 0001: nop
+        // .  
+//@mod           00 
+           ca 
+        // parsed:, offset 2, len 1, h: 0002: nop
+        // .  
+           00 
+        // parsed:, offset 3, len 1, h: 0003: return
+        // .  
+           b1 
+        // parsed:, offset 213, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 215, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 217, len 0, h: end attributes[0] 
+// parsed:, offset 217, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 217, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 219, len 0, h:  attributes[0]: 
+    // parsed:, offset 219, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 221, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 225, len 2, h: source: utf8{"T_t481_4_3.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 227, len 0, h: end attributes[0] 
+// parsed:, offset 227, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.j b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.j
new file mode 100644
index 0000000..06cb586
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t481_4_3.java
+.class public dxc/junit/verify/t481_4/jm/T_t481_4_3
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+    
+    nop
+    nop
+    nop
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.java b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.java
new file mode 100644
index 0000000..bd9df26
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t481_4.jm;
+
+public class T_t481_4_3{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.cfh b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.cfh
new file mode 100644
index 0000000..6b94100
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/verify/t481_4/jm/T_t481_4_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 40, h: 0003: utf8{"dxc/junit/verify/t481_4/jm/T_t481_4_4"}
+    // .  .  %  d  x  c  /  j  u  n  i  t  /  v  e  r  i  f  y  /  t  4  8  1  _  4  /  j  m  /  T  _  t  4  8  1  _  4  _  4  
+       01 00 25 64 78 63 2f 6a 75 6e 69 74 2f 76 65 72 69 66 79 2f 74 34 38 31 5f 34 2f 6a 6d 2f 54 5f 74 34 38 31 5f 34 5f 34 
+    // parsed:, offset 74, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 87, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 96, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 102, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 107, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 114, len 3, h: 0009: type{dxc.junit.verify.t481_4.jm.T_t481_4_4}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 117, len 18, h: 000a: utf8{"T_t481_4_4.java"}
+    // .  .  .  T  _  t  4  8  1  _  4  _  4  .  j  a  v  a  
+       01 00 0f 54 5f 74 34 38 31 5f 34 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 135, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 141, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 144, len 0, h: end constant_pool
+// parsed:, offset 144, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 146, len 2, h: this_class: type{dxc.junit.verify.t481_4.jm.T_t481_4_4}
+// .  .  
+   00 09 
+// parsed:, offset 148, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 152, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 156, len:71,desc: ()V
+// parsed:, offset 156, len 0, h:  methods[0]: 
+    // parsed:, offset 156, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 158, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 160, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 162, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 164, len 0, h:  attributes[0]: 
+        // parsed:, offset 164, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 166, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 170, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 172, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 183, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 185, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 187, len 0, h: end attributes[0] 
+// parsed:, offset 187, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 187, len:40,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[1]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 197, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 201, len 2, h: max_stack: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 1, h: 0000: nop
+        // .  
+           00 
+        // parsed:, offset 1, len 1, h: 0001: nop
+        // .  
+//@mod           00 
+           f0 
+        // parsed:, offset 2, len 1, h: 0002: nop
+        // .  
+           00 
+        // parsed:, offset 3, len 1, h: 0003: return
+        // .  
+           b1 
+        // parsed:, offset 213, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 215, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 217, len 0, h: end attributes[0] 
+// parsed:, offset 217, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 217, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 219, len 0, h:  attributes[0]: 
+    // parsed:, offset 219, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 221, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 225, len 2, h: source: utf8{"T_t481_4_4.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 227, len 0, h: end attributes[0] 
+// parsed:, offset 227, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.j b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.j
new file mode 100644
index 0000000..07e8168
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t481_4_4.java
+.class public dxc/junit/verify/t481_4/jm/T_t481_4_4
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+    
+    nop
+    nop
+    nop
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.java b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.java
new file mode 100644
index 0000000..17fed6f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t481_4.jm;
+
+public class T_t481_4_4{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_6/Test_t481_6.java b/tools/dx-tests/src/dxc/junit/verify/t481_6/Test_t481_6.java
new file mode 100644
index 0000000..7dec5bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_6/Test_t481_6.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t481_6;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t481_6 extends DxTestCase {
+
+    /**
+     * @constraint 4.8.1.6
+     * @title Last opcode instruction shall be at offset code_length -1.
+     * The idea of the test is to put invalid opcode at offset code_length -1.
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t481_6.jm.T_t481_6_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.cfh b/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.cfh
new file mode 100644
index 0000000..188b796
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/verify/t481_6/jm/T_t481_6_1
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 67, len 18, h: 0007: utf8{"T_t481_6_1.java"}
+    // .  .  .  T  _  t  4  8  1  _  6  _  1  .  j  a  v  a  
+       01 00 0f 54 5f 74 34 38 31 5f 36 5f 31 2e 6a 61 76 61 
+    // parsed:, offset 85, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 92, len 40, h: 0009: utf8{"dxc/junit/verify/t481_6/jm/T_t481_6_1"}
+    // .  .  %  d  x  c  /  j  u  n  i  t  /  v  e  r  i  f  y  /  t  4  8  1  _  6  /  j  m  /  T  _  t  4  8  1  _  6  _  1  
+       01 00 25 64 78 63 2f 6a 75 6e 69 74 2f 76 65 72 69 66 79 2f 74 34 38 31 5f 36 2f 6a 6d 2f 54 5f 74 34 38 31 5f 36 5f 31 
+    // parsed:, offset 132, len 3, h: 000a: type{dxc.junit.verify.t481_6.jm.T_t481_6_1}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 135, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 141, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 144, len 0, h: end constant_pool
+// parsed:, offset 144, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 146, len 2, h: this_class: type{dxc.junit.verify.t481_6.jm.T_t481_6_1}
+// .  .  
+   00 0a 
+// parsed:, offset 148, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 152, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 156, len:71,desc: ()V
+// parsed:, offset 156, len 0, h:  methods[0]: 
+    // parsed:, offset 156, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 158, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 160, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 162, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 164, len 0, h:  attributes[0]: 
+        // parsed:, offset 164, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 166, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 170, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 172, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 183, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 185, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 187, len 0, h: end attributes[0] 
+// parsed:, offset 187, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 187, len:40,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[1]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 197, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 201, len 2, h: max_stack: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 1, h: 0000: nop
+        // .  
+           00 
+        // parsed:, offset 1, len 1, h: 0001: nop
+        // .  
+           00 
+        // parsed:, offset 2, len 1, h: 0002: return
+        // .  
+           b1 
+        // parsed:, offset 3, len 1, h: 0003: nop
+        // .  
+//@mod           00 
+           ff 
+        // parsed:, offset 213, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 215, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 217, len 0, h: end attributes[0] 
+// parsed:, offset 217, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 217, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 219, len 0, h:  attributes[0]: 
+    // parsed:, offset 219, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 221, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 225, len 2, h: source: utf8{"T_t481_6_1.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 227, len 0, h: end attributes[0] 
+// parsed:, offset 227, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.j b/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.j
new file mode 100644
index 0000000..1635755
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t481_6_1.java
+.class public dxc/junit/verify/t481_6/jm/T_t481_6_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+    
+    nop
+    nop
+    return
+    nop
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.java b/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.java
new file mode 100644
index 0000000..0a119d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t481_6.jm;
+
+public class T_t481_6_1{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_10/Test_t482_10.java b/tools/dx-tests/src/dxc/junit/verify/t482_10/Test_t482_10.java
new file mode 100644
index 0000000..8e1fa15
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_10/Test_t482_10.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_10;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t482_10 extends DxTestCase {
+    /**
+     * @constraint 4.8.2.10
+     * @title Uninitialized local variable
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t482_10.jm.T_t482_10_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.10
+     * @title Uninitialized local variable
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.verify.t482_10.jm.T_t482_10_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_1.j
new file mode 100644
index 0000000..6abfdb5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_1.j
@@ -0,0 +1,92 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_10_1.java
+.class public dxc/junit/verify/t482_10/jm/T_t482_10_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 5
+
+;    iconst_2
+;    newarray int
+;    astore_1
+
+    iconst_1
+    istore_2
+
+Label8:
+    iconst_3
+    newarray int
+    astore_1
+
+    iload_2
+    iconst_1
+    if_icmpne Label0
+
+    new java/lang/Exception
+    dup
+    invokespecial java/lang/Exception/<init>()V
+    athrow
+
+Label13:
+    goto Label0
+
+Label14:
+    astore_3
+
+Label10:
+    aload_1
+    iconst_0
+    iaload
+    istore_2
+
+Label11:
+    goto Label2
+
+Label16:
+    astore 4
+
+    iconst_1
+    istore_2
+
+    aload 4
+    athrow
+
+Label0:
+    iconst_1
+    istore_2
+
+    goto Label3
+
+Label2:
+    iconst_1
+    istore_2
+
+Label3:
+    return
+
+.catch java/lang/Exception from Label8 to Label13 using Label14
+.catch all from Label8 to Label16 using Label16
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_1.java
new file mode 100644
index 0000000..38933b2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_1.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_10.jm;
+
+public class T_t482_10_1 {
+    
+    public void run(){
+        
+        int arr[];
+        arr = new int[2];
+        int f = 1;
+        
+        try{
+            arr = new int[3];
+            if(f == 1)
+                throw new Exception();
+            
+        }catch(Exception e){
+            f = arr[0];
+        }
+        finally {
+            f = 1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_2.j b/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_2.j
new file mode 100644
index 0000000..c8c7b32
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_2.j
@@ -0,0 +1,54 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_10_2.java
+.class public dxc/junit/verify/t482_10/jm/T_t482_10_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 6
+    .limit locals 2
+
+    iconst_1
+    istore_1
+
+    new java/lang/Object
+    dup
+    invokespecial java/lang/Object/<init>()V
+
+Label1:        
+
+    invokevirtual java/lang/Object/getClass()Ljava/lang/Class;
+    pop
+
+Label3:
+    new java/lang/Object
+
+      iinc 1 1
+      iload_1
+      sipush 10
+      if_icmpne Label1
+
+    return
+
+.end method
+
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_2.java b/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_2.java
new file mode 100644
index 0000000..5c3fa5b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_10.jm;
+
+public class T_t482_10_2 {
+    
+    public void run(){
+        
+        Object o = new Object();
+        o.getClass();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_11/Test_t482_11.java b/tools/dx-tests/src/dxc/junit/verify/t482_11/Test_t482_11.java
new file mode 100644
index 0000000..75b8bf1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_11/Test_t482_11.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_11;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.verify.t482_11.jm.T_t482_11_2;
+
+/**
+ * 
+ */
+public class Test_t482_11 extends DxTestCase {
+
+    /**
+     * @constraint 4.8.2.11
+     * @title  instance fields declared in the class may be accessed before
+     * calling <init>
+     */
+    public void testN1() {
+        // @uses dxc.junit.verify.t482_11.jm.TSuper
+        T_t482_11_2 t = new T_t482_11_2();
+        assertEquals(11, t.v);
+    }
+
+    /**
+     * @constraint 4.8.2.11
+     * @title  super.<init> or another <init> must be called
+     */
+    public void testVFE1() {
+        // @uses dxc.junit.verify.t482_11.jm.TSuper
+        try {
+            Class.forName("dxc.junit.verify.t482_11.jm.T_t482_11_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.11
+     * @title only instance fields declared in the class may be accessed
+     * before calling <init>
+     */
+    public void testVFE2() {
+        // @uses dxc.junit.verify.t482_11.jm.TSuper
+        try {
+            Class.forName("dxc.junit.verify.t482_11.jm.T_t482_11_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/TSuper.java b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/TSuper.java
new file mode 100644
index 0000000..2b3641b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/TSuper.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_11.jm;
+
+public class TSuper {
+    public int s;
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_1.j
new file mode 100644
index 0000000..c773656
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_11_1.java
+.class public dxc/junit/verify/t482_11/jm/T_t482_11_1
+.super dxc/junit/verify/t482_11/jm/TSuper
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+;    aload_0
+;    invokespecial dxc/junit/verify/t482_11/jm/TSuper/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_1.java
new file mode 100644
index 0000000..7262049
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_1.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_11.jm;
+
+public class T_t482_11_1 extends TSuper{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_2.j b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_2.j
new file mode 100644
index 0000000..78b1d64
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_2.j
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_11_2.java
+.class public dxc/junit/verify/t482_11/jm/T_t482_11_2
+.super dxc/junit/verify/t482_11/jm/TSuper
+
+.field public v I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    sipush 11
+    invokespecial dxc/junit/verify/t482_11/jm/T_t482_11_2/<init>(I)V
+
+    return
+.end method
+
+
+.method  <init>(I)V
+    .limit stack 2
+    .limit locals 2
+    
+    aload_0
+    iload_1
+    putfield dxc/junit/verify/t482_11/jm/T_t482_11_2/v I
+    
+    aload_0
+    invokespecial dxc/junit/verify/t482_11/jm/TSuper/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_2.java b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_2.java
new file mode 100644
index 0000000..4d0920a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_2.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_11.jm;
+
+public class T_t482_11_2 extends TSuper{
+    public int v;
+    
+    public T_t482_11_2(){
+        this(11);
+    }
+    
+    T_t482_11_2(int i){
+        v = i;
+    }
+    
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_3.j b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_3.j
new file mode 100644
index 0000000..a25f0bf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_3.j
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_11_3.java
+.class public dxc/junit/verify/t482_11/jm/T_t482_11_3
+.super dxc/junit/verify/t482_11/jm/TSuper
+
+.field public v I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    sipush 11
+    invokespecial dxc/junit/verify/t482_11/jm/T_t482_11_3/<init>(I)V
+
+    return
+.end method
+
+
+.method  <init>(I)V
+    .limit stack 2
+    .limit locals 2
+
+    aload_0
+    iload_1
+    putfield dxc/junit/verify/t482_11/jm/T_t482_11_3/s I
+    
+    aload_0
+    invokespecial dxc/junit/verify/t482_11/jm/TSuper/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_3.java b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_3.java
new file mode 100644
index 0000000..64acc18
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_3.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_11.jm;
+
+public class T_t482_11_3 extends TSuper{
+    public int v;
+    
+    public T_t482_11_3(){
+        this(11);
+    }
+    
+    T_t482_11_3(int i){
+        s = i;
+    }
+    
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_14/Test_t482_14.java b/tools/dx-tests/src/dxc/junit/verify/t482_14/Test_t482_14.java
new file mode 100644
index 0000000..501b2ee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_14/Test_t482_14.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_14;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t482_14 extends DxTestCase {
+    /**
+     * @constraint 4.8.2.14
+     * @title <init> may not return a value
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t482_14.jm.T_t482_14_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title <clinit> may not return a value
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.verify.t482_14.jm.T_t482_14_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_1.j
new file mode 100644
index 0000000..335dfa3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_1.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_14_1.java
+.class public dxc/junit/verify/t482_14/jm/T_t482_14_1
+.super java/lang/Object
+
+.field  v I
+
+.method public <init>()I
+    .limit stack 2
+    .limit locals 1
+    
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.verify.t482_14.jm.T_t482_14_1.v I
+    
+    iconst_1
+    ireturn
+
+.end method
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_1.java
new file mode 100644
index 0000000..94afb9f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_14.jm;
+
+public class T_t482_14_1 {
+    int v = 0;
+
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_2.j b/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_2.j
new file mode 100644
index 0000000..49124fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_2.j
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_14_2.java
+.class public dxc/junit/verify/t482_14/jm/T_t482_14_2
+.super java/lang/Object
+
+.field static v I
+
+
+.method static <clinit>()I
+    .limit stack 1
+    .limit locals 0
+
+    
+    iconst_0
+    putstatic dxc.junit.verify.t482_14.jm.T_t482_14_2.v I
+
+    iconst_1
+    ireturn
+
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_2.java b/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_2.java
new file mode 100644
index 0000000..7ca5de2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_14.jm;
+
+public class T_t482_14_2 {
+    static int v = 0;
+
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_2/Test_t482_2.java b/tools/dx-tests/src/dxc/junit/verify/t482_2/Test_t482_2.java
new file mode 100644
index 0000000..fb6406a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_2/Test_t482_2.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t482_2 extends DxTestCase {
+
+    /**
+     * @constraint 4.8.2.2
+     * @title operand stack depth
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t482_2.jm.T_t482_2_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_2/jm/T_t482_2_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_2/jm/T_t482_2_1.j
new file mode 100644
index 0000000..c180dd8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_2/jm/T_t482_2_1.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_2_1.java
+.class public dxc/junit/verify/t482_2/jm/T_t482_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+
+.end method
+
+
+
+.method public run(I)I
+    .limit stack 3
+    .limit locals 2
+    
+    iload_1
+    ifne Label1
+    iconst_1
+    
+Label1:
+    iconst_2
+    iconst_3
+    iadd    
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_2/jm/T_t482_2_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_2/jm/T_t482_2_1.java
new file mode 100644
index 0000000..8f5146b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_2/jm/T_t482_2_1.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_2.jm;
+
+public class T_t482_2_1{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_20/Test_t482_20.java b/tools/dx-tests/src/dxc/junit/verify/t482_20/Test_t482_20.java
new file mode 100644
index 0000000..963bb0f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_20/Test_t482_20.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_20;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t482_20 extends DxTestCase {
+    /**
+     * @constraint 4.8.2.20
+     * @title no return instruction in the method
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t482_20.jm.T_t482_20_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_20/jm/T_t482_20_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_20/jm/T_t482_20_1.j
new file mode 100644
index 0000000..f803fbd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_20/jm/T_t482_20_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_20_1.java
+.class public dxc/junit/verify/t482_20/jm/T_t482_20_1
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    iconst_1
+    pop
+    
+;    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_20/jm/T_t482_20_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_20/jm/T_t482_20_1.java
new file mode 100644
index 0000000..6e16f99
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_20/jm/T_t482_20_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_20.jm;
+
+public class T_t482_20_1 {
+    
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_3/Test_t482_3.java b/tools/dx-tests/src/dxc/junit/verify/t482_3/Test_t482_3.java
new file mode 100644
index 0000000..af89d34
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_3/Test_t482_3.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t482_3 extends DxTestCase {
+    /**
+     * @constraint 4.8.2.3
+     * @title attempt to split long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t482_3.jm.T_t482_3_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.3
+     * @title attempt to split double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.verify.t482_3.jm.T_t482_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_1.j
new file mode 100644
index 0000000..202e692
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_1.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_3_1.java
+.class public dxc/junit/verify/t482_3/jm/T_t482_3_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 3
+
+    ldc2_w 123
+    lstore_1
+    
+    iload_1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_1.java
new file mode 100644
index 0000000..f61df7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_3.jm;
+
+public class T_t482_3_1 {
+    public void run(){
+        long a = 123;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_2.j b/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_2.j
new file mode 100644
index 0000000..08920f0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_2.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_3_2.java
+.class public dxc/junit/verify/t482_3/jm/T_t482_3_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 3
+
+    ldc2_w 123.0
+    dstore_1
+    
+    fload_2
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_2.java b/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_2.java
new file mode 100644
index 0000000..a3be92e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_3.jm;
+
+public class T_t482_3_2 {
+    public void run(){
+        double a = 123.0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_4/Test_t482_4.java b/tools/dx-tests/src/dxc/junit/verify/t482_4/Test_t482_4.java
new file mode 100644
index 0000000..68f8c7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_4/Test_t482_4.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_4;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t482_4 extends DxTestCase {
+    /**
+     * @constraint 4.8.2.4
+     * @title attempt to access uninitialized int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t482_4.jm.T_t482_4_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.4
+     * @title attempt to access uninitialized double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.verify.t482_4.jm.T_t482_4_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.4
+     * @title attempt to access uninitialized reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.verify.t482_4.jm.T_t482_4_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_1.j
new file mode 100644
index 0000000..1c0bb5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_4_1.java
+.class public dxc/junit/verify/t482_4/jm/T_t482_4_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_1.java
new file mode 100644
index 0000000..82d41c4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_4.jm;
+
+public class T_t482_4_1 {
+    public void run(){
+        long a = 123;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_2.j b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_2.j
new file mode 100644
index 0000000..969c69e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_4_2.java
+.class public dxc/junit/verify/t482_4/jm/T_t482_4_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 3
+
+    dload_1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_2.java b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_2.java
new file mode 100644
index 0000000..8683f50
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_4.jm;
+
+public class T_t482_4_2 {
+    public void run(){
+        double a = 123.0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_3.j b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_3.j
new file mode 100644
index 0000000..3f7c2ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_4_3.java
+.class public dxc/junit/verify/t482_4/jm/T_t482_4_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_3.java b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_3.java
new file mode 100644
index 0000000..d7aa2ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_3.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_4.jm;
+
+public class T_t482_4_3 {
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_8/Test_t482_8.java b/tools/dx-tests/src/dxc/junit/verify/t482_8/Test_t482_8.java
new file mode 100644
index 0000000..2f61e6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_8/Test_t482_8.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_8;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t482_8 extends DxTestCase {
+    /**
+     * @constraint 4.8.2.8
+     * @title uninitialized class instance must be on the stack
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t482_8.jm.T_t482_8_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.8
+     * @title attempt to initialize initialized class
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.verify.t482_8.jm.T_t482_8_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_1.j
new file mode 100644
index 0000000..c52c248
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_1.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_8_1.java
+.class public dxc/junit/verify/t482_8/jm/T_t482_8_1
+.super java/lang/Object
+
+
+.method  <init>(I)V
+    .limit stack 1
+    .limit locals 2
+
+;    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 3
+    .limit locals 2
+
+    new dxc/junit/verify/t482_8/jm/T_t482_8_1
+    dup
+    iconst_1
+    invokespecial dxc/junit/verify/t482_8/jm/T_t482_8_1/<init>(I)V
+    astore_1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_1.java
new file mode 100644
index 0000000..5f658cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_8.jm;
+
+public class T_t482_8_1 {
+    T_t482_8_1(int a){
+        
+    }
+    
+    public void run(){
+        T_t482_8_1 t = new T_t482_8_1(1);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_2.j b/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_2.j
new file mode 100644
index 0000000..8b89868
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_2.j
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_8_2.java
+.class public dxc/junit/verify/t482_8/jm/T_t482_8_2
+.super java/lang/Object
+
+
+.method  <init>(I)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 3
+    .limit locals 2
+
+    new dxc/junit/verify/t482_8/jm/T_t482_8_1
+    dup
+    iconst_1
+    invokespecial dxc/junit/verify/t482_8/jm/T_t482_8_1/<init>(I)V
+    astore_1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_2.java b/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_2.java
new file mode 100644
index 0000000..e14959a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_2.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_8.jm;
+
+public class T_t482_8_2 {
+    T_t482_8_2(int a){
+        
+    }
+    
+    public void run(){
+        T_t482_8_2 t = new T_t482_8_2(1);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_9/Test_t482_9.java b/tools/dx-tests/src/dxc/junit/verify/t482_9/Test_t482_9.java
new file mode 100644
index 0000000..949b772
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_9/Test_t482_9.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_9;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t482_9 extends DxTestCase {
+    /**
+     * @constraint 4.8.2.9
+     * @title attempt to access field of uninitialized class instance
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t482_9.jm.T_t482_9_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.9
+     * @title attempt to use method of uninitialized class instance
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.verify.t482_9.jm.T_t482_9_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_1.j
new file mode 100644
index 0000000..ad10f28
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_1.j
@@ -0,0 +1,50 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_9_1.java
+.class public dxc/junit/verify/t482_9/jm/T_t482_9_1
+.super java/lang/Object
+
+.field  v I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.verify.t482_9.jm.T_t482_9_1.v I
+
+    return
+
+.end method
+
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/verify/t482_9/jm/T_t482_9_1
+;    dup
+;    invokespecial dxc/junit/verify/t482_9/jm/T_t482_9_1/<init>()V
+
+    iconst_1
+    putfield dxc.junit.verify.t482_9.jm.T_t482_9_1.v I
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_1.java
new file mode 100644
index 0000000..2ecbbe5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_9.jm;
+
+public class T_t482_9_1 {
+    int v = 0;
+    
+    public static void run(){
+        T_t482_9_1 t = new T_t482_9_1();
+        t.v = 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_2.j b/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_2.j
new file mode 100644
index 0000000..69a9fed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_2.j
@@ -0,0 +1,57 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_t482_9_2.java
+.class public dxc/junit/verify/t482_9/jm/T_t482_9_2
+.super java/lang/Object
+
+.field  v I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.verify.t482_9.jm.T_t482_9_2.v I
+
+    return
+.end method
+
+
+
+.method  test()V
+    .limit stack 0
+    .limit locals 1
+    return
+.end method
+
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/verify/t482_9/jm/T_t482_9_2
+;    dup
+;    invokespecial dxc/junit/verify/t482_9/jm/T_t482_9_2/<init>()V
+
+    invokevirtual dxc/junit/verify/t482_9/jm/T_t482_9_2/test()V
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_2.java b/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_2.java
new file mode 100644
index 0000000..3ed6819
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_2.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxc.junit.verify.t482_9.jm;
+
+public class T_t482_9_2 {
+    int v = 0;
+    
+    void test() {
+        
+    }
+    
+    public static void run(){
+        T_t482_9_2 t = new T_t482_9_2();
+        t.test();
+    }
+}
diff --git a/tools/dx-tests/src/dxconvext/ClassFileAssembler.java b/tools/dx-tests/src/dxconvext/ClassFileAssembler.java
new file mode 100644
index 0000000..09eec27
--- /dev/null
+++ b/tools/dx-tests/src/dxconvext/ClassFileAssembler.java
@@ -0,0 +1,217 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxconvext;
+
+import dxconvext.util.FileUtils;
+
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.UnsupportedEncodingException;
+import java.security.DigestException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.zip.Adler32;
+
+public class ClassFileAssembler {
+
+    /**
+     * @param args
+     */
+    public static void main(String[] args) {
+        ClassFileAssembler cfa = new ClassFileAssembler();
+        cfa.run(args);
+    }
+
+    private void run(String[] args) {
+        // this class can be used to generate .class files that are somehow
+        // damaged in order to test the dalvik vm verifier.
+        // The input is a .cfh (class file hex) file.
+        // The output is a java vm .class file.
+        // The .cfh files can be generated as follows:
+        // 1. create the initial .cfh file from an existing .class files by using
+        //    the ClassFileParser
+        // 2. modify some bytes to damage the structure of the .class file in a 
+        //    way that would not be possible with e.g. jasmin (otherwise you are
+        //    better off using jasmin).
+        //    Uncomment the original bytes, and write "MOD:" meaning a modified 
+        // entry (with the original commented out)
+        //
+        // Use the ClassFileAssembler to generate the .class file.
+        // this class here simply takes all non-comment lines from the .cfh
+        // file, parses them as hex values and writes the bytes to the class file
+        File cfhF = new File(args[0]);
+        if (!cfhF.getName().endsWith(".cfh") &&
+            !cfhF.getName().endsWith(".dfh")) {
+            System.out.println("file must be a .cfh or .dfh file, and its filename end with .cfh or .dfh");
+            return;
+        }
+        
+        String outBase = args[1];
+        
+        boolean isDex = cfhF.getName().endsWith(".dfh");
+        
+        byte[] cfhbytes = FileUtils.readFile(cfhF);
+        ByteArrayInputStream bais = new ByteArrayInputStream(cfhbytes);
+        // encoding should not matter, since we are skipping comment lines and parsing
+        try {
+            // get the package name
+            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(cfhF)));
+            String firstLine = br.readLine();
+            br.close();
+            String classHdr = "//@class:";
+            String dexHdr = "// Processing '";
+            String hdr;
+            if(isDex)
+                hdr = dexHdr;
+            else
+                hdr = classHdr;
+            
+            if (!firstLine.startsWith(hdr)) throw new RuntimeException("wrong format:"+firstLine +" isDex=" + isDex);
+            String tFile;
+            if(isDex) {
+                tFile = outBase + "/classes.dex";
+            } else {
+                String classO = firstLine.substring(hdr.length()).trim();
+                tFile = outBase +"/"+classO+".class";
+            }
+            File outFile = new File(tFile);
+            System.out.println("outfile:" + outFile);
+            String mkdir = tFile.substring(0, tFile.lastIndexOf("/"));
+            new File(mkdir).mkdirs();
+            
+            Reader r = new InputStreamReader(bais,"utf-8");
+            OutputStream os = new FileOutputStream(outFile);
+            BufferedOutputStream bos = new BufferedOutputStream(os);
+            writeClassFile(r, bos, isDex);
+            bos.close();
+        } catch (UnsupportedEncodingException e) {
+            throw new RuntimeException("problem while parsing .dfh or .cfh file: "+cfhF.getAbsolutePath(), e);
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException("problem while parsing .dfh or .cfh file: "+cfhF.getAbsolutePath(), e);
+        } catch (IOException e) {
+            throw new RuntimeException("problem while parsing .dfh or .cfh file: "+cfhF.getAbsolutePath(), e);
+        } 
+    }
+    
+    /**
+     * Calculates the signature for the <code>.dex</code> file in the
+     * given array, and modify the array to contain it.
+     * 
+     * Originally from com.android.dx.dex.file.DexFile.
+     * 
+     * @param bytes non-null; the bytes of the file
+     */
+    private void calcSignature(byte[] bytes) {
+        MessageDigest md;
+
+        try {
+            md = MessageDigest.getInstance("SHA-1");
+        } catch (NoSuchAlgorithmException ex) {
+            throw new RuntimeException(ex);
+        }
+
+        md.update(bytes, 32, bytes.length - 32);
+
+        try {
+            int amt = md.digest(bytes, 12, 20);
+            if (amt != 20) {
+                throw new RuntimeException("unexpected digest write: " + amt +
+                                           " bytes");
+            }
+        } catch (DigestException ex) {
+            throw new RuntimeException(ex);
+        }
+    }
+
+    /**
+     * Calculates the checksum for the <code>.dex</code> file in the
+     * given array, and modify the array to contain it.
+     * 
+     * Originally from com.android.dx.dex.file.DexFile.
+     * 
+     * @param bytes non-null; the bytes of the file
+     */
+    private void calcChecksum(byte[] bytes) {
+        Adler32 a32 = new Adler32();
+
+        a32.update(bytes, 12, bytes.length - 12);
+
+        int sum = (int) a32.getValue();
+
+        bytes[8]  = (byte) sum;
+        bytes[9]  = (byte) (sum >> 8);
+        bytes[10] = (byte) (sum >> 16);
+        bytes[11] = (byte) (sum >> 24);
+    }   
+
+    public void writeClassFile(Reader r, OutputStream rOs, boolean isDex) {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream(8192);
+        BufferedReader br = new BufferedReader(r);
+        String line;
+        String secondLine = null;
+        int lineCnt = 0;
+        try {
+            while ((line = br.readLine()) != null) {
+                if (isDex && lineCnt++ == 1) {
+                    secondLine = line;
+                }
+                // skip it if it is a comment
+                if (!line.trim().startsWith("//")) {
+                    // we have a row like "    ae 08 21 ff" etc.
+                    String[] parts = line.split("\\s+");
+                    for (int i = 0; i < parts.length; i++) {
+                        String part = parts[i].trim();
+                        if (!part.equals("")) {
+                            int res = Integer.parseInt(part, 16);
+                            baos.write(res);
+                        }
+                    }
+                }
+            }
+            
+            // now for dex, update the checksum and the signature.
+            // special case:
+            // for two tests (currently T_f1_9.dfh and T_f1_10.dfh), we need
+            // to keep the checksum or the signature, respectively.
+            byte[] outBytes = baos.toByteArray();
+            if (isDex) {
+                boolean leaveChecksum = secondLine.contains("//@leaveChecksum");
+                boolean leaveSignature= secondLine.contains("//@leaveSignature");
+                // update checksum and signature for dex file            
+                if(!leaveSignature)
+                    calcSignature(outBytes);
+                if(!leaveChecksum)
+                    calcChecksum(outBytes);
+            }
+            rOs.write(outBytes);
+            rOs.close();
+        } catch (IOException e) {
+            throw new RuntimeException("problem while writing file",e);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxconvext/ClassFileParser.java b/tools/dx-tests/src/dxconvext/ClassFileParser.java
new file mode 100644
index 0000000..8a43396
--- /dev/null
+++ b/tools/dx-tests/src/dxconvext/ClassFileParser.java
@@ -0,0 +1,283 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxconvext;
+
+import com.android.dx.cf.direct.ClassPathOpener;
+import com.android.dx.cf.direct.DirectClassFile;
+import com.android.dx.cf.direct.StdAttributeFactory;
+import com.android.dx.cf.iface.Member;
+import com.android.dx.cf.iface.ParseObserver;
+import com.android.dx.util.ByteArray;
+import com.android.dx.util.FileUtils;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+
+public class ClassFileParser {
+
+    private BufferedWriter bw; // the writer to write the result to.
+
+    /**
+     * Parses a .class file and outputs a .cfh (class file in hex format) file.
+     * 
+     * args[0] is the absolute path to the java src directory e.g.
+     * /home/fjost/android/workspace/dxconverter/src
+     * 
+     * args[1] is the absolute path to the classes directory e.g.
+     * /home/fjost/android/workspace/out/classes_javac this is the place where
+     * 
+     * args[2] is the absolute path to the java source file, e.g.
+     * /home/fjost/android/workspace/dxconverter/src/test/MyTest.java
+     * 
+     * 
+     * 
+     * @param args
+     */
+    public static void main(String[] args) throws IOException {
+        ClassFileParser cfp = new ClassFileParser();
+        cfp.process(args[0], args[1], args[2]);
+    }
+
+    private void process(final String srcDir, final String classesDir,
+            final String absSrcFilePath) throws IOException {
+        ClassPathOpener opener;
+
+        String fileName = absSrcFilePath;
+        // e.g. test/p1/MyTest.java
+        String pckPath = fileName.substring(srcDir.length() + 1);
+        // e.g. test/p1
+        String pck = pckPath.substring(0, pckPath.lastIndexOf("/"));
+        // e.g. MyTest
+        String cName = pckPath.substring(pck.length() + 1);
+        cName = cName.substring(0, cName.lastIndexOf("."));
+        String cfName = pck+"/"+cName+".class";
+        // 2. calculate the target file name:
+        // e.g. <out-path>/test/p1/MyTest.class
+        String inFile = classesDir + "/" + pck + "/" + cName + ".class";
+        if (!new File(inFile).exists()) {
+            throw new RuntimeException("cannot read:" + inFile);
+        }
+        byte[] bytes = FileUtils.readFile(inFile);
+        // write the outfile to the same directory as the corresponding .java
+        // file
+        String outFile = absSrcFilePath.substring(0, absSrcFilePath
+                .lastIndexOf("/"))+ "/" + cName + ".cfh";
+        Writer w;
+        try {
+            w = new OutputStreamWriter(new FileOutputStream(new File(outFile)));
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException("cannot write to file:"+outFile, e);
+        }
+        // Writer w = new OutputStreamWriter(System.out);
+        ClassFileParser.this.processFileBytes(w, cfName, bytes);
+
+    }
+
+    /**
+     * 
+     * @param w the writer to write the generated .cfh file to
+     * @param name the relative name of the java src file, e.g.
+     *        dxc/util/Util.java
+     * @param allbytes the bytes of this java src file
+     * @return true if everthing went alright
+     */
+    void processFileBytes(Writer w, String name, final byte[] allbytes) throws IOException {
+        String fixedPathName = fixPath(name);
+        DirectClassFile cf = new DirectClassFile(allbytes, fixedPathName, true);
+        bw = new BufferedWriter(w);
+        String className = fixedPathName.substring(0, fixedPathName.lastIndexOf("."));
+        out("//@class:" + className, 0);
+        cf.setObserver(new ParseObserver() {
+            private int cur_indent = 0;
+            private int checkpos = 0;
+
+            /**
+             * Indicate that the level of indentation for a dump should increase
+             * or decrease (positive or negative argument, respectively).
+             * 
+             * @param indentDelta the amount to change indentation
+             */
+            public void changeIndent(int indentDelta) {
+                cur_indent += indentDelta;
+            }
+
+            /**
+             * Indicate that a particular member is now being parsed.
+             * 
+             * @param bytes non-null; the source that is being parsed
+             * @param offset offset into <code>bytes</code> for the start of
+             *        the member
+             * @param name non-null; name of the member
+             * @param descriptor non-null; descriptor of the member
+             */
+            public void startParsingMember(ByteArray bytes, int offset,
+                    String name, String descriptor) {
+                // ByteArray ba = bytes.slice(offset, bytes.size());
+                out("// ========== start-ParseMember:" + name + ", offset "
+                        + offset + ", len:" + (bytes.size() - offset)
+                        + ",desc: " + descriptor);
+                // out("// "+dumpReadableString(ba));
+                // out(" "+dumpBytes(ba));
+            }
+
+            /**
+             * Indicate that a particular member is no longer being parsed.
+             * 
+             * @param bytes non-null; the source that was parsed
+             * @param offset offset into <code>bytes</code> for the end of the
+             *        member
+             * @param name non-null; name of the member
+             * @param descriptor non-null; descriptor of the member
+             * @param member non-null; the actual member that was parsed
+             */
+            public void endParsingMember(ByteArray bytes, int offset,
+                    String name, String descriptor, Member member) {
+                ByteArray ba = bytes.slice(offset, bytes.size());
+                out("// ========== end-ParseMember:" + name + ", desc: "
+                        + descriptor);
+                // out("// "+dumpReadableString(ba));
+                // out(" "+dumpBytes(ba));
+            }
+
+            /**
+             * Indicate that some parsing happened.
+             * 
+             * @param bytes non-null; the source that was parsed
+             * @param offset offset into <code>bytes</code> for what was
+             *        parsed
+             * @param len number of bytes parsed
+             * @param human non-null; human form for what was parsed
+             */
+            public void parsed(ByteArray bytes, int offset, int len,
+                    String human) {
+                human = human.replace('\n', ' ');
+                out("// parsed:" + ", offset " + offset + ", len " + len
+                        + ", h: " + human);
+                if (len > 0) {
+                    ByteArray ba = bytes.slice(offset, offset + len);
+                    check(ba);
+                    out("// " + dumpReadableString(ba));
+                    out("   " + dumpBytes(ba));
+                }
+            }
+
+            private void out(String msg) {
+                ClassFileParser.this.out(msg, cur_indent);
+
+            }
+
+            private void check(ByteArray ba) {
+                int len = ba.size();
+                int offset = checkpos;
+                for (int i = 0; i < len; i++) {
+                    int b = ba.getByte(i);
+                    byte b2 = allbytes[i + offset];
+                    if (b != b2)
+                        throw new RuntimeException("byte dump mismatch at pos "
+                                + (i + offset));
+                }
+                checkpos += len;
+            }
+
+
+
+            private String dumpBytes(ByteArray ba) {
+                String s = "";
+                for (int i = 0; i < ba.size(); i++) {
+                    int byt = ba.getUnsignedByte(i);
+                    String hexVal = Integer.toHexString(byt);
+                    if (hexVal.length() == 1) {
+                        hexVal = "0" + hexVal;
+                    }
+                    s += hexVal + " ";
+                }
+                return s;
+            }
+
+            private String dumpReadableString(ByteArray ba) {
+                String s = "";
+                for (int i = 0; i < ba.size(); i++) {
+                    int bb = ba.getUnsignedByte(i);
+                    if (bb > 31 && bb < 127) {
+                        s += (char) bb;
+                    } else {
+                        s += ".";
+                    }
+                    s += "  ";
+                }
+                return s;
+            }
+
+
+        });
+        cf.setAttributeFactory(StdAttributeFactory.THE_ONE);
+        // what is needed to force parsing to the end?
+        cf.getMagic();
+        // cf.getFields();
+        // cf.getAttributes();
+        // cf.getMethods();        
+        bw.close();
+    }
+
+
+    private String getIndent(int indent) {
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < indent * 4; i++) {
+            sb.append(' ');
+        }
+        return sb.toString();
+    }
+
+    private void out(String msg, int cur_indent) {
+        try {
+            bw.write(getIndent(cur_indent) + msg);
+            bw.newLine();
+        } catch (IOException ioe) {
+            throw new RuntimeException("error while writing to the writer", ioe);
+        }
+    }
+
+    private static String fixPath(String path) {
+        /*
+         * If the path separator is \ (like on windows), we convert the path to
+         * a standard '/' separated path.
+         */
+        if (File.separatorChar == '\\') {
+            path = path.replace('\\', '/');
+        }
+
+        int index = path.lastIndexOf("/./");
+
+        if (index != -1) {
+            return path.substring(index + 3);
+        }
+
+        if (path.startsWith("./")) {
+            return path.substring(2);
+        }
+
+        return path;
+    }
+
+
+
+}
diff --git a/tools/dx-tests/src/dxconvext/util/FileUtils.java b/tools/dx-tests/src/dxconvext/util/FileUtils.java
new file mode 100644
index 0000000..7b7003d
--- /dev/null
+++ b/tools/dx-tests/src/dxconvext/util/FileUtils.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dxconvext.util;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+/**
+ * File I/O utilities.
+ */
+public final class FileUtils {
+    /**
+     * This class is uninstantiable.
+     */
+    private FileUtils() {
+        // This space intentionally left blank.
+    }
+
+    /**
+     * Reads the named file, translating {@link IOException} to a
+     * {@link RuntimeException} of some sort.
+     * 
+     * @param fileName non-null; name of the file to read
+     * @return non-null; contents of the file
+     */
+    public static byte[] readFile(String fileName) {
+        File file = new File(fileName);
+        return readFile(file);
+    }
+
+    /**
+     * Reads the given file, translating {@link IOException} to a
+     * {@link RuntimeException} of some sort.
+     * 
+     * @param file non-null; the file to read
+     * @return non-null; contents of the file
+     */
+    public static byte[] readFile(File file) {
+        if (!file.exists()) {
+            throw new RuntimeException(file + ": file not found");
+        }
+
+        if (!file.isFile()) {
+            throw new RuntimeException(file + ": not a file");
+        }
+
+        if (!file.canRead()) {
+            throw new RuntimeException(file + ": file not readable");
+        }
+
+        long longLength = file.length();
+        int length = (int) longLength;
+        if (length != longLength) {
+            throw new RuntimeException(file + ": file too long");
+        }
+
+        byte[] result = new byte[length];
+
+        try {
+            FileInputStream in = new FileInputStream(file);
+            int at = 0;
+            while (length > 0) {
+                int amt = in.read(result, at, length);
+                if (amt == -1) {
+                    throw new RuntimeException(file + ": unexpected EOF");
+                }
+                at += amt;
+                length -= amt;
+            }
+            in.close();
+        } catch (IOException ex) {
+            throw new RuntimeException(file + ": trouble reading", ex);
+        }
+
+        return result;
+    }
+}
diff --git a/tools/dx-tests/src/util/CollectAllTests.java b/tools/dx-tests/src/util/CollectAllTests.java
new file mode 100644
index 0000000..fa09662
--- /dev/null
+++ b/tools/dx-tests/src/util/CollectAllTests.java
@@ -0,0 +1,521 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package util;
+
+import dxc.junit.AllTests;
+
+import junit.framework.TestCase;
+import junit.framework.TestResult;
+import junit.textui.TestRunner;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Scanner;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.Map.Entry;
+import java.util.regex.MatchResult;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Main class to generate data from the test suite to later run from a shell
+ * script. the project's home folder.<br>
+ * <project-home>/src must contain the java sources<br>
+ * <project-home>/data/scriptdata will be generated<br>
+ * <project-home>/src/<for-each-package>/Main_testN1.java will be generated<br>
+ * (one Main class for each test method in the Test_... class
+ */
+public class CollectAllTests {
+
+    private static String PROJECT_FOLDER = "";
+    private static String PROJECT_FOLDER_OUT = "missing out folder!";
+    private static String JAVASRC_FOLDER = PROJECT_FOLDER + "/src";
+    private static HashSet<String> OPCODES = null;
+
+    /*
+     * a map. key: fully qualified class name, value: a list of test methods for
+     * the given class
+     */
+    private TreeMap<String, List<String>> map = new TreeMap<String, List<String>>();
+
+    private int testClassCnt = 0;
+    private int testMethodsCnt = 0;
+
+    private class MethodData {
+        String methodBody, constraint, title;
+    }
+
+    /**
+     * @param args
+     *            args 0 must be the project root folder (where src, lib etc.
+     *            resides)
+     *            args 1 must be the project out root folder (where the Main_*.java files
+     *            are put, and also data/scriptdata)
+     */
+    public static void main(String[] args) {
+        if (args.length >= 2) {
+            PROJECT_FOLDER = args[0];
+            PROJECT_FOLDER_OUT = args[1];
+            JAVASRC_FOLDER = PROJECT_FOLDER + "/src";
+        } else {
+            System.out.println("usage: args 0 must be the project root folder (where src, lib etc. resides)" +
+                    "and args 1 must be the project out root folder (where the Main_*.java file" +
+                    " are put, and also data/scriptdata)");
+            return;
+        }
+        
+
+        for (int i = 2; i < args.length; i++) {
+            if (OPCODES == null) {
+                OPCODES = new HashSet<String>();
+            }
+            OPCODES.add(args[i]);
+        }
+        
+        System.out.println("using java src:"+JAVASRC_FOLDER);
+        CollectAllTests cat = new CollectAllTests();
+        cat.compose();
+    }
+
+    public void compose() {
+        System.out.println("Collecting all junit tests...");
+        new TestRunner() {
+            @Override
+            protected TestResult createTestResult() {
+                return new TestResult() {
+                    @Override
+                    protected void run(TestCase test) {
+                        addToTests(test);
+                    }
+
+                };
+            }
+        }.doRun(AllTests.suite());
+
+        // for each combination of TestClass and method, generate a Main_testN1
+        // etc.
+        // class in the respective package.
+        // for the report make sure all N... tests are called first, then B,
+        // then
+        // E, then VFE test methods.
+        // so we need x Main_xxxx methods in a package, and x entries in the
+        // global scriptdata file (read by a bash script for the tests)
+        // e.g. dxc.junit.opcodes.aaload.Test_aaload - testN1() ->
+        // File Main_testN1.java in package dxc.junit.opcodes.aaload
+        // and entry dxc.junit.opcodes.aaload.Main_testN1 in class execution
+        // table.
+        //
+        handleTests();
+    }
+
+    private void addToTests(TestCase test) {
+        
+        String packageName = test.getClass().getPackage().getName();
+        packageName = packageName.substring(packageName.lastIndexOf('.')+1);
+        if (OPCODES != null && !OPCODES.contains(packageName)) {
+            return;
+        }
+
+        
+        String method = test.getName(); // e.g. testVFE2
+        String fqcn = test.getClass().getName(); // e.g.
+        // dxc.junit.opcodes.iload_3.Test_iload_3
+        // order: take the order of the test-suites for the classes,
+        // TODO and for methods: take Nx, then Bx, then Ex, then VFEx
+        //System.out.println("collecting test:" + test.getName() + ", class "
+        //        + test.getClass().getName());
+        testMethodsCnt++;
+        List<String> li = map.get(fqcn);
+        if (li == null) {
+            testClassCnt++;
+            li = new ArrayList<String>();
+            map.put(fqcn, li);
+        }
+        li.add(method);
+    }
+
+    private void handleTests() {
+        System.out.println("collected "+testMethodsCnt+" test methods in "+testClassCnt+" junit test classes");
+        String datafileContent = "";
+
+        for (Entry<String, List<String>> entry : map.entrySet()) {
+            
+            String fqcn = entry.getKey();
+            int lastDotPos = fqcn.lastIndexOf('.');
+            String pName = fqcn.substring(0, lastDotPos);
+            String classOnlyName = fqcn.substring(lastDotPos + 1);
+            String instPrefix = "new " + classOnlyName + "()";
+            
+            String[] nameParts = pName.split("\\.");
+            if (nameParts.length != 4) {
+                throw new RuntimeException(
+                        "package name does not comply to naming scheme: " + pName);
+            }
+            
+           
+            List<String> methods = entry.getValue();
+            Collections.sort(methods, new Comparator<String>() {
+                public int compare(String s1, String s2) {
+                    // TODO sort according: test ... N, B, E, VFE
+                    return s1.compareTo(s2);
+                }
+            });
+            for (String method : methods) {
+                // e.g. testN1
+                if (!method.startsWith("test")) {
+                    throw new RuntimeException("no test method: " + method);
+                }
+                
+                // generate the Main_xx java class
+
+                // a Main_testXXX.java contains:
+                // package <packagenamehere>;
+                // public class Main_testxxx {
+                // public static void main(String[] args) {
+                // new dxc.junit.opcodes.aaload.Test_aaload().testN1();
+                // }
+                // }
+
+                MethodData md = parseTestMethod(pName, classOnlyName, method);
+                String methodContent = md.methodBody;
+
+                Set<String> dependentTestClassNames = parseTestClassName(pName,
+                        classOnlyName, methodContent);
+                
+                if (dependentTestClassNames.isEmpty())
+                {
+                    continue;
+                }
+                
+
+                String content = "//autogenerated by "
+                        + this.getClass().getName()
+                        + ", do not change\n"
+                        + "package "
+                        + pName
+                        + ";\n"
+                        + "import "
+                        + pName
+                        + ".jm.*;\n"
+                        + "import dxc.junit.*;\n"
+                        + "public class Main_"
+                        + method
+                        + " extends DxAbstractMain {\n"
+                        + "public static void main(String[] args) throws Exception {\n"
+                        + "new Main_" + method + "()." + method + "();\n"
+                        + "}\n" + methodContent + "\n}\n";
+
+                writeToFile(getFileFromPackage(pName, method), content);
+
+                // prepare the entry in the data file for the bash script.
+                // e.g.
+                // main class to execute; opcode/constraint; test purpose
+                // dxc.junit.opcodes.aaload.Main_testN1;aaload;normal case test
+                // (#1)
+
+                char ca = method.charAt("test".length()); // either N,B,E, oradd_double
+                // V (VFE)
+                String comment;
+                switch (ca) {
+                case 'N':
+                    comment = "Normal #" + method.substring(5);
+                    break;
+                case 'B':
+                    comment = "Boundary #" + method.substring(5);
+                    break;
+                case 'E':
+                    comment = "Exception #" + method.substring(5);
+                    break;
+                case 'V':
+                    comment = "Verifier #" + method.substring(7);
+                    break;
+                default:
+                    throw new RuntimeException("unknown test abbreviation:"
+                            + method + " for " + fqcn);
+                }
+
+                String opcConstr = pName.substring(pName.lastIndexOf('.') + 1);
+                // beautify test title
+                if (opcConstr.startsWith("t4")) {
+                    opcConstr = "verifier"; //  + opcConstr.substring(1);
+                } else if (opcConstr.startsWith("pargs")) {
+                    opcConstr = "sanity";
+                } else if (opcConstr.startsWith("opc_")) {
+                    // unescape reserved words
+                    opcConstr = opcConstr.substring(4);
+                }
+                
+                String line = pName + ".Main_" + method + ";";                
+                for (String className : dependentTestClassNames) {
+                    try {
+                        Class.forName(className);
+                    } catch (ClassNotFoundException e) {
+                        throw new RuntimeException(
+                                "dependent class not found : " + className);
+                    } catch (Throwable e) {
+                        // ignore
+                    }
+                    
+                    line += className + " ";
+                }
+                
+                String details = (md.title != null ? md.title : "");
+                if (md.constraint != null) {
+                    details = "Constraint " + md.constraint + ", " + details;
+                }
+                if (details.length() != 0) {
+                    details = details.substring(0, 1).toUpperCase() 
+                            + details.substring(1);
+                }
+
+                line += ";" + opcConstr + ";"+ comment + ";" + details;
+                
+                datafileContent += line + "\n";
+                
+            }
+
+
+        }
+        new File(PROJECT_FOLDER_OUT + "/data").mkdirs();
+        writeToFile(new File(PROJECT_FOLDER_OUT + "/data/scriptdata"),
+                datafileContent);
+    }
+
+
+
+    /**
+     * 
+     * @param pName
+     * @param classOnlyName
+     * @param methodSource
+     * @return a set
+     */
+    private Set<String> parseTestClassName(String pName, String classOnlyName,
+            String methodSource) {
+        Set<String> entries = new HashSet<String>();
+        String opcodeName = classOnlyName.substring(5);
+
+        Scanner scanner = new Scanner(methodSource);
+
+        String[] patterns = new String[] {
+                "new\\s(T_" + opcodeName + "\\w*)",
+                "(T_" + opcodeName + "\\w*)", "new\\s(T\\w*)"};
+
+        String token = null;
+        for (String pattern : patterns) {
+            token = scanner.findWithinHorizon(pattern, methodSource.length());
+            if (token != null) {
+                break;
+            }
+        }
+
+        if (token == null) {
+            System.err.println("warning: failed to find dependent test class name: "+pName+", "+classOnlyName);
+            return entries;
+        }
+
+        MatchResult result = scanner.match();
+
+        entries.add((pName + ".jm." + result.group(1)).trim());
+        
+        // search additional @uses directives
+        Pattern p = Pattern.compile("@uses\\s+(.*)\\s+", Pattern.MULTILINE);
+        Matcher m = p.matcher(methodSource);
+        while (m.find()) {
+            String res = m.group(1);
+            entries.add(res.trim());
+        }
+        
+        //lines with the form @uses dx.junit.opcodes.add_double.jm.T_add_double_2
+        // one dependency per one @uses
+        //TODO
+        
+        return entries;
+    }
+
+    private MethodData parseTestMethod(String pname, String classOnlyName,
+            String method) {
+
+        String path = pname.replaceAll("\\.", "/");
+        String absPath = JAVASRC_FOLDER + "/" + path + "/" + classOnlyName
+                + ".java";
+        File f = new File(absPath);
+
+        Scanner scanner;
+        try {
+            scanner = new Scanner(f);
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException("error while reading from file: "
+                    + e.getClass().getName() + ", msg:" + e.getMessage());
+        }
+
+        String methodPattern = "public\\s+void\\s+" + method + "[^\\{]+\\{";
+
+        String token = scanner.findWithinHorizon(methodPattern, (int) f
+                .length());
+        if (token == null) {
+            throw new RuntimeException(
+                    "cannot find method source of 'public void" + method
+                            + "' in file '" + absPath + "'");
+        }
+
+        MatchResult result = scanner.match();
+        result.start();
+        result.end();
+
+        StringBuilder builder = new StringBuilder();
+        builder.append(token);
+
+        try {
+            FileReader reader = new FileReader(f);
+            reader.skip(result.end());
+
+            char currentChar;
+            int blocks = 1;
+            while ((currentChar = (char) reader.read()) != -1 && blocks > 0) {
+                switch (currentChar) {
+                case '}': {
+                    blocks--;
+                    builder.append(currentChar);
+                    break;
+                }
+                case '{': {
+                    blocks++;
+                    builder.append(currentChar);
+                    break;
+                }
+                default: {
+                    builder.append(currentChar);
+                    break;
+                }
+                }
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("failed to parse", e);
+        }
+
+        // find the @title/@constraint in javadoc comment for this method
+        Scanner scanner2;
+        try {
+            // using platform's default charset
+            scanner2 = new Scanner(f);
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException("error while reading from file: "
+                    + e.getClass().getName() + ", msg:" + e.getMessage());
+        }
+        
+        // using platform's default charset
+        String all = new String(readFile(f));
+        // System.out.println("grepping javadoc found for method "+method +
+        // " in "+pname+","+classOnlyName);
+        String commentPattern = "/\\*\\*([^{]*)\\*/\\s*" + methodPattern;
+        Pattern p = Pattern.compile(commentPattern, Pattern.DOTALL);
+        Matcher m = p.matcher(all);
+        String title = null, constraint = null;
+        if (m.find()) {
+            String res = m.group(1);
+            // System.out.println("res: "+res);
+            // now grep @title and @constraint
+            Matcher titleM = Pattern.compile("@title (.*)", Pattern.DOTALL)
+                    .matcher(res);
+            if (titleM.find()) {
+                title = titleM.group(1).replaceAll("\\n     \\*", "");
+                title = title.replaceAll("\\n", " ");
+                title = title.trim();
+                // System.out.println("title: " + title);
+            } else {
+                System.err.println("warning: no @title found for method "
+                        + method + " in " + pname + "," + classOnlyName);
+            }
+            // constraint can be one line only
+            Matcher constraintM = Pattern.compile("@constraint (.*)").matcher(
+                    res);
+            if (constraintM.find()) {
+                constraint = constraintM.group(1);
+                constraint = constraint.trim();
+                // System.out.println("constraint: " + constraint);
+            } else if (method.contains("VFE")) {
+                System.err
+                        .println("warning: no @constraint for for a VFE method:"
+                                + method + " in " + pname + "," + classOnlyName);
+            }
+        } else {
+            System.err.println("warning: no javadoc found for method " + method
+                    + " in " + pname + "," + classOnlyName);
+        }
+        MethodData md = new MethodData();
+        md.methodBody = builder.toString();
+        md.constraint = constraint;
+        md.title = title;
+        return md;
+    }
+
+    private void writeToFile(File file, String content) {
+        //System.out.println("writing file " + file.getAbsolutePath());
+        try {
+            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
+                    new FileOutputStream(file), "utf-8"));
+            bw.write(content);
+            bw.close();
+        } catch (Exception e) {
+            throw new RuntimeException("error while writing to file: "
+                    + e.getClass().getName() + ", msg:" + e.getMessage());
+        }
+    }
+
+    private File getFileFromPackage(String pname, String methodName) {
+        // e.g. dxc.junit.argsreturns.pargsreturn
+        String path = pname.replaceAll("\\.", "/");
+        String absPath = PROJECT_FOLDER_OUT + "/" + path;
+        new File(absPath).mkdirs();
+        return new File(absPath + "/Main_" + methodName + ".java");
+    }
+    
+    private byte[] readFile(File file) {
+        int len = (int) file.length();
+        byte[] res = new byte[len];
+        try {
+            FileInputStream in = new FileInputStream(file);
+            int pos = 0;
+            while (len > 0) {
+                int br = in.read(res, pos, len);
+                if (br == -1) {
+                    throw new RuntimeException("unexpected EOF for file: "+file);
+                }
+                pos += br;
+                len -= br;
+            }
+            in.close();
+        } catch (IOException ex) {
+            throw new RuntimeException("error reading file:"+file, ex);
+        }
+        return res;
+    }
+}
diff --git a/tools/dx-tests/src/util/CompileAllJasmin.java b/tools/dx-tests/src/util/CompileAllJasmin.java
new file mode 100644
index 0000000..834662b
--- /dev/null
+++ b/tools/dx-tests/src/util/CompileAllJasmin.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package util;
+
+import java.io.FileInputStream;
+import java.util.Iterator;
+import java.util.Properties;
+
+import jasmin.Main;
+
+public class CompileAllJasmin {
+
+    /**
+     * @param args args[0] the (absolute or relative to the working dir) 
+     * path to the (properties) file containing line by line
+     * all jasmin files which need to be compiled.
+     * args[1] is the target directory where to put the compiled .class files to
+     */
+    public static void main(String[] args) throws Exception {
+        System.out.println("reading from "+args[0]+" and writing to "+args[1]);
+        Properties p = new Properties();
+        p.load(new FileInputStream(args[0]));
+        
+        //System.out.println("p:::"+p.toString());
+        int i=0;
+        for (Iterator<Object> it_keys = p.keySet().iterator(); it_keys.hasNext();) {
+            String file = (String) it_keys.next();
+            Main m = new jasmin.Main();
+            //java -jar $project_lib/jasmin.jar -d $javac_out $ajasminfile
+            if (i ==0) {
+                m.main(new String[] {"-d" ,args[1], file });
+            } else {
+                // leave away -d option since saved into static field
+                m.main(new String[] {file });
+            }
+            i++;
+        }
+    }
+
+}
diff --git a/tools/dx-tests/utilclasses/util/CompileAllJasmin.class b/tools/dx-tests/utilclasses/util/CompileAllJasmin.class
new file mode 100644
index 0000000..2b866b2
--- /dev/null
+++ b/tools/dx-tests/utilclasses/util/CompileAllJasmin.class
Binary files differ
diff --git a/tools/host/Android.mk b/tools/host/Android.mk
new file mode 100644
index 0000000..4798233
--- /dev/null
+++ b/tools/host/Android.mk
@@ -0,0 +1,17 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+CTS_LOCAL_DIR := $(call my-dir)
+include $(CTS_LOCAL_DIR)/etc/Android.mk
+include $(CTS_LOCAL_DIR)/src/Android.mk
diff --git a/tools/host/etc/Android.mk b/tools/host/etc/Android.mk
new file mode 100644
index 0000000..993f4ac
--- /dev/null
+++ b/tools/host/etc/Android.mk
@@ -0,0 +1,20 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_PREBUILT_EXECUTABLES := cts
+include $(BUILD_HOST_PREBUILT)
+
diff --git a/tools/host/etc/cts b/tools/host/etc/cts
new file mode 100755
index 0000000..8c82a2d
--- /dev/null
+++ b/tools/host/etc/cts
@@ -0,0 +1,74 @@
+#!/bin/bash
+
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+CTS_SH=cts
+CTS_LIB=cts.jar
+DDMS_LIB=ddmlib.jar
+
+# Checking if "adb" is known by the system
+PATH=.:${PATH}
+ADB_TOOLS=adb
+ADB_PATH=`which ${ADB_TOOLS}`
+if [ "${ANDROID_ROOT}" == "" ] && [ -f "${ADB_PATH}" ]; then
+    ANDROID_ROOT=`dirname ${ADB_PATH}`/..
+fi;
+
+# Checking Android dependancies
+BINARY_DIR=bin
+JAR_DIR=framework
+if [ -f ${ANDROID_ROOT}/tools/${ADB_TOOLS} ]; then
+    # Default SDK paths
+    BINARY_DIR=tools
+    JAR_DIR=tools/lib
+else if [ ! -f ${ANDROID_ROOT}/bin/${ADB_TOOLS} ]; then
+    echo "Please set your Android Framework root path."
+    echo "Define \"ANDROID_ROOT\" variable"
+    exit -1;
+fi;
+fi;
+
+if [ ! -f ${ANDROID_ROOT}/${JAR_DIR}/${DDMS_LIB} ]; then
+    echo "Please set your Android Framework root path."
+    echo "Define \"ANDROID_ROOT\" variable"
+    exit -1;
+fi;
+
+
+# -------------------------------------------------------------------------
+
+CTS_PATH=`which ${CTS_SH}`
+if [ ! -f "${CTS_PATH}" ]; then
+    CTS_PATH=$0
+fi;
+
+CTS_DIR=`dirname ${CTS_PATH}`
+# Setup the correct path for getting "adb"
+PATH=${PATH}:${ANDROID_ROOT}/${BINARY_DIR}
+# Add paths to JAR files in Android framework
+CTS_LIBS=${ANDROID_ROOT}/${JAR_DIR}/${DDMS_LIB}:${ANDROID_ROOT}/${JAR_DIR}/${CTS_LIB}
+# Add path to CTS JAR file in the CTS archive
+CTS_LIBS=${CTS_LIBS}:${CTS_DIR}/${CTS_LIB}
+
+# Default location of the repository
+CTS_REPO=${CTS_DIR}/../cts/android-cts/repository
+
+# Try to locate CTS repository
+if [ -z "$@" ] && [ -z "${CTS_HOST_CFG}" ] && \
+   [ -d "${CTS_REPO}" ]; then
+    CTS_HOST_CFG=${CTS_REPO}/host_config.xml
+fi;
+java -cp ${CTS_LIBS} -DHOST_CONFIG=${CTS_HOST_CFG} com.android.cts.TestHost "$@"
diff --git a/tools/host/etc/cts.bat b/tools/host/etc/cts.bat
new file mode 100644
index 0000000..fe346c4
--- /dev/null
+++ b/tools/host/etc/cts.bat
@@ -0,0 +1,64 @@
+@echo off
+rem Copyright (C) 2008 The Android Open Source Project
+rem
+rem Licensed under the Apache License, Version 2.0 (the "License");
+rem you may not use this file except in compliance with the License.
+rem You may obtain a copy of the License at
+rem
+rem      http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem Unless required by applicable law or agreed to in writing, software
+rem distributed under the License is distributed on an "AS IS" BASIS,
+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+rem See the License for the specific language governing permissions and
+rem limitations under the License.
+
+rem don't modify the caller's environment
+setlocal
+
+rem Set up prog to be the path of this script, including following symlinks,
+rem and set up progdir to be the fully-qualified pathname of its directory.
+set prog=%~f0
+
+set curdir=%CD%
+
+rem Change current directory to where cts is, to avoid issues with directories
+rem containing whitespaces.
+cd %~dp0
+
+set jarfile=cts.jar
+set frameworkdir=
+set libdir=
+
+rem parse the argument
+if (%1)==() (
+    set argument=%CTS_HOST_CFG%
+    goto ArgumentOk
+) else (
+    set argument=%1
+)
+
+if not "%argument:~1,1%"==":" (
+    set argument=%curdir%\%argument%
+)
+
+:ArgumentOk
+
+if exist %frameworkdir%%jarfile% goto JarFileOk
+    set frameworkdir=lib\
+    set libdir=lib\
+
+if exist %frameworkdir%%jarfile% goto JarFileOk
+    set frameworkdir=..\framework\
+    set libdir=..\lib\
+
+:JarFileOk
+
+if debug NEQ "%1" goto NoDebug
+    set java_debug=-agentlib:jdwp=transport=dt_socket,server=y,address=8050,suspend=y
+    shift 1
+:NoDebug
+
+set jarpath=%frameworkdir%%jarfile%
+
+call java %java_debug% -Djava.ext.dirs=%frameworkdir% -Djava.library.path=%libdir% -Dcom.android.cts.bindir= -jar %jarpath% %argument%
diff --git a/tools/host/etc/manifest.txt b/tools/host/etc/manifest.txt
new file mode 100644
index 0000000..c212928
--- /dev/null
+++ b/tools/host/etc/manifest.txt
@@ -0,0 +1 @@
+Main-Class: com.android.cts.TestHost
diff --git a/tools/host/src/Android.mk b/tools/host/src/Android.mk
new file mode 100644
index 0000000..2164e3f
--- /dev/null
+++ b/tools/host/src/Android.mk
@@ -0,0 +1,28 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(call all-subdir-java-files)
+
+LOCAL_JAVA_RESOURCE_DIRS := res
+
+LOCAL_JAR_MANIFEST := ../etc/manifest.txt
+LOCAL_JAVA_LIBRARIES := \
+    ddmlib
+
+LOCAL_MODULE := cts
+
+include $(BUILD_HOST_JAVA_LIBRARY)
diff --git a/tools/host/src/com/android/cts/CTSCommand.java b/tools/host/src/com/android/cts/CTSCommand.java
new file mode 100644
index 0000000..78c5840
--- /dev/null
+++ b/tools/host/src/com/android/cts/CTSCommand.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+/**
+ * Constant value for CTS command
+ */
+public interface CTSCommand {
+    // Define the commands
+    static final String EXIT = "exit";
+    static final String HELP = "help";
+    static final String ADD = "add";
+    static final String REMOVE = "rm";
+    static final String START = "start";
+    static final String LIST = "ls";
+    static final String H = "h";
+    static final String HISTORY = "history";
+
+    // Define command options
+    static final String OPTION_D = "-d";
+    static final String OPTION_DEVICE = "--device";
+    static final String OPTION_P = "-p";
+    static final String OPTION_PACKAGE = "--package";
+    static final String OPTION_R = "-r";
+    static final String OPTION_RESULT = "--result";
+    static final String OPTION_PLAN = "--plan";
+    static final String OPTION_T = "-t";
+    static final String OPTION_TEST = "--test";
+    static final String OPTION_E = "-e";
+    static final String OPTION_S = "-s";
+    static final String OPTION_SESSION = "--session";
+    static final String OPTION_CFG = "--config";
+}
diff --git a/tools/host/src/com/android/cts/CUIOutputStream.java b/tools/host/src/com/android/cts/CUIOutputStream.java
new file mode 100644
index 0000000..6f9b957
--- /dev/null
+++ b/tools/host/src/com/android/cts/CUIOutputStream.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.io.PrintStream;
+
+/**
+ * CTS UI output stream. Handle all output of CTS UI
+ */
+final class CUIOutputStream {
+
+    private static PrintStream sOutput = System.out;
+    public static final String CTS_PROMPT_SIGN = "cts_host > ";
+
+    /**
+     * Print a line of message onto the CTS host console.
+     *
+     * @param msg The message to be print.
+     */
+    static public void print(final String msg) {
+        sOutput.print(msg);
+
+        Log.log(msg);
+    }
+
+    /**
+     * Print a line of message onto the CTS host console with a carriage return.
+     *
+     * @param msg The message to be print.
+     */
+    static public void println(final String msg) {
+        sOutput.println(msg);
+
+        Log.log(msg);
+    }
+
+    /**
+     * Write the buffer with given offset and length.
+     *
+     * @param buf The buffer.
+     * @param off The offset to start writing.
+     * @param len The length in byte to write.
+     */
+    static public void write(byte[] buf, int off, int len) {
+        sOutput.write(buf, off, len);
+    }
+
+    /**
+     * Write a byte.
+     *
+     * @param c The byte to write.
+     */
+    static public void write(int c) {
+        sOutput.write(c);
+    }
+
+    /**
+     * Flush the write buffer.
+     */
+    static public void flush() {
+        sOutput.flush();
+    }
+
+    /**
+     * Print prompt.
+     */
+    static public void printPrompt() {
+        print(CTS_PROMPT_SIGN);
+
+        Log.log(CTS_PROMPT_SIGN);
+    }
+}
diff --git a/tools/host/src/com/android/cts/CommandHistory.java b/tools/host/src/com/android/cts/CommandHistory.java
new file mode 100644
index 0000000..b86506e
--- /dev/null
+++ b/tools/host/src/com/android/cts/CommandHistory.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * CommandHistory holds max 50 executed command.
+ * User can view what has been input and select one to execute again.
+ * Example:
+ * <ul>
+ *    <li> "cts_host > h"  to view latest 50 executed command.
+ *    <li> "cts_host > h 10" to view latest 10 executed command.
+ *    <li> "cts_host > h -e 5" to execute the 5th executed command.
+ * </ul>
+ */
+public class CommandHistory {
+    private static final int CMD_RECORD_DEPTH = 50;
+
+    private List<String> mCmdRecords;
+
+    public CommandHistory() {
+        mCmdRecords = new ArrayList<String>();
+    }
+
+    /**
+     * Check if the command is history command.
+     *
+     * @param cmd The command string.
+     * @return If it's history command, return true; else return false.
+     */
+    public boolean isHistoryCommand(final String cmd) {
+        return CTSCommand.HISTORY.equals(cmd) || CTSCommand.H.equals(cmd);
+    }
+
+    /**
+     * Get the number of commands recorded.
+     *
+     * @return The number of commands recorded.
+     */
+    public int size() {
+        return mCmdRecords.size();
+    }
+
+    /**
+     * Get command by index from command history cache.
+     *
+     * @param index The command index.
+     * @return The command corresponding to the command index.
+     */
+    public String get(final int index) {
+        return mCmdRecords.get(index);
+    }
+
+    /**
+     * display specified number of commands from command history cache onto CTS console.
+     *
+     * @param cmdCount The command count requested.
+     */
+    public void show(final int cmdCount) {
+        int cmdSize = mCmdRecords.size();
+        int start = 0;
+
+        if (cmdSize == 0) {
+            CUIOutputStream.println("no history command list");
+            return;
+        }
+        if (cmdCount < cmdSize) {
+            start = cmdSize - cmdCount;
+        }
+
+        for (; start < cmdSize; start ++) {
+            String cmdLine = mCmdRecords.get(start);
+            CUIOutputStream.println("  " + Long.toString(start) + "\t" + cmdLine);
+        }
+    }
+
+    /**
+     * Add a command to the command cache.
+     *
+     * @param cp The command container.
+     * @param cmdLine The command line.
+     */
+    public void addCommand(final CommandParser cp,
+            final String cmdLine) {
+        if ((cmdLine == null) || (cmdLine.length() == 0)) {
+            return;
+        }
+
+        if (isValidCommand(cp.getAction()) && (!hasCommand(cmdLine))) {
+            mCmdRecords.add(cmdLine);
+            if (mCmdRecords.size() > CMD_RECORD_DEPTH) {
+                mCmdRecords.remove(0);
+            }
+        }
+    }
+
+    /**
+     * Check if the command contains valid action.
+     *
+     * @param action The action contained in the command.
+     * @return If valid, return true; else, return false.
+     */
+    private boolean isValidCommand(final String action) {
+        if (!(CTSCommand.HISTORY.equals(action) || CTSCommand.H.equals(action))) {
+            if (CTSCommand.ADD.equals(action)
+                    || CTSCommand.EXIT.equals(action)
+                    || CTSCommand.HELP.equals(action)
+                    || CTSCommand.LIST.equals(action)
+                    || CTSCommand.REMOVE.equals(action)
+                    || CTSCommand.START.equals(action)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Check if the command is a duplicate one.
+     *
+     * @param cmdLine The command to be checked against the commands recorded.
+     * @return If duplicated, return true; else, return false.
+     */
+    private boolean hasCommand(final String cmdLine) {
+        for(String cmd : mCmdRecords) {
+            if (cmd.equals(cmdLine)) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
diff --git a/tools/host/src/com/android/cts/CommandNotFoundException.java b/tools/host/src/com/android/cts/CommandNotFoundException.java
new file mode 100644
index 0000000..ebaa5ae
--- /dev/null
+++ b/tools/host/src/com/android/cts/CommandNotFoundException.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+/**
+ * Throw out CommandNotFoundException if no command action.
+ */
+public class CommandNotFoundException extends Exception {
+
+    private static final long serialVersionUID = -9101779063189977021L;
+
+    public CommandNotFoundException() {
+        super();
+    }
+
+    public CommandNotFoundException(String message) {
+        super(message);
+    }
+}
diff --git a/tools/host/src/com/android/cts/CommandParser.java b/tools/host/src/com/android/cts/CommandParser.java
new file mode 100644
index 0000000..80c5cfc
--- /dev/null
+++ b/tools/host/src/com/android/cts/CommandParser.java
@@ -0,0 +1,291 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * CommandParser is responsible for parsing command line arguments. To get
+ * action, option or values easy via functions.
+ * For example:
+ * <ul>
+ *    <li> CommandParser cp = CommandParser.parse("start -plan test_plan")
+ *    <li> cp.getAction() will get "start"
+ *    <li> cp.getValue("-plan") will get "test_plan"
+ *    <li> cp.containsKey("-noplan") will get null
+ * </ul>
+ *
+ */
+public class CommandParser {
+
+    /**
+     * The hash map mapping the options and option values.
+     */
+    private HashMap<String, String> mValues = new HashMap<String, String>();
+
+    /**
+     * The action the user chose to ask CTS host to take.
+     */
+    private String mAction;
+    private ArrayList<String> mActionValues = new ArrayList<String>();
+    private int mArgLength;
+    private static final String COMMAND_PARSE_EXPRESSION = "(((\\\\\\s)|[\\S&&[^\"]])+|\".+\")";
+
+    private static Set<String> sOptionsSet = new HashSet<String>(Arrays.asList(
+            CTSCommand.OPTION_CFG, CTSCommand.OPTION_PACKAGE, CTSCommand.OPTION_PLAN,
+            CTSCommand.OPTION_DEVICE, CTSCommand.OPTION_RESULT, CTSCommand.OPTION_E,
+            CTSCommand.OPTION_SESSION, CTSCommand.OPTION_TEST));
+    private static HashMap<String, String> sOptionMap = new HashMap<String, String>();
+    static {
+        final String[] keys = new String[] {
+                CTSCommand.OPTION_CFG,
+                CTSCommand.OPTION_P,
+                CTSCommand.OPTION_PACKAGE,
+                CTSCommand.OPTION_PLAN,
+                CTSCommand.OPTION_D,
+                CTSCommand.OPTION_DEVICE,
+                CTSCommand.OPTION_R,
+                CTSCommand.OPTION_RESULT,
+                CTSCommand.OPTION_E,
+                CTSCommand.OPTION_S,
+                CTSCommand.OPTION_SESSION,
+                CTSCommand.OPTION_T,
+                CTSCommand.OPTION_TEST};
+
+        final String[] values = new String[] {
+                CTSCommand.OPTION_CFG,
+                CTSCommand.OPTION_PACKAGE,
+                CTSCommand.OPTION_PACKAGE,
+                CTSCommand.OPTION_PLAN,
+                CTSCommand.OPTION_DEVICE,
+                CTSCommand.OPTION_DEVICE,
+                CTSCommand.OPTION_RESULT,
+                CTSCommand.OPTION_RESULT,
+                CTSCommand.OPTION_E,
+                CTSCommand.OPTION_SESSION,
+                CTSCommand.OPTION_SESSION,
+                CTSCommand.OPTION_TEST,
+                CTSCommand.OPTION_TEST};
+
+        for (int i = 0; i < keys.length; i++) {
+            sOptionMap.put(keys[i], values[i]);
+        }
+    }
+
+    /**
+     * Parse the command line into array of argument.
+     *
+     * @param line The original command line.
+     * @return The command container.
+     */
+    public static CommandParser parse(final String line)
+            throws UnknownCommandException, CommandNotFoundException {
+        ArrayList<String> arglist = new ArrayList<String>();
+
+        Pattern p = Pattern.compile(COMMAND_PARSE_EXPRESSION);
+        Matcher m = p.matcher(line);
+        while (m.find()) {
+            arglist.add(m.group(1));
+        }
+        CommandParser cp = new CommandParser();
+        if (arglist.size() == 0) {
+            throw new CommandNotFoundException("No command");
+        }
+        cp.parse(arglist);
+        return cp;
+    }
+
+    /**
+     * Parse the argument list.
+     *
+     * @param arglist The argument list.
+     */
+    private void parse(ArrayList<String> arglist)
+            throws UnknownCommandException {
+        mArgLength = arglist.size();
+        int currentArgIndex = 0;
+        mAction = arglist.get(currentArgIndex).toLowerCase();
+        String originalOption = null;
+        String option = null;
+
+        // parse action values
+        while (++currentArgIndex < arglist.size()) {
+            originalOption = arglist.get(currentArgIndex).trim();
+            if (originalOption.startsWith("-")) {
+                if (isNumber(originalOption)) {
+                    mActionValues.add(originalOption);
+                } else {
+                    --currentArgIndex;
+                    break;
+                }
+            } else {
+                mActionValues.add(originalOption);
+            }
+        }
+
+        // parse option
+        while (++currentArgIndex < arglist.size()) {
+            originalOption = arglist.get(currentArgIndex).trim().toLowerCase();
+            option = originalOption;
+            if (!option.startsWith("-")) {
+                throw new UnknownCommandException(
+                        "Option should start with '-'");
+            }
+
+            option = inputToOption(option);
+            if (!sOptionsSet.contains(option)) {
+                throw new UnknownCommandException("Unknown option :"
+                        + originalOption);
+            }
+
+            if (mValues.containsKey(option)) {
+                throw new UnknownCommandException("Duplicate option: "
+                         + originalOption);
+            }
+
+            if (currentArgIndex + 1 == arglist.size()) {
+                mValues.put(option, "");
+                continue;
+            }
+
+            String value = arglist.get(++currentArgIndex).trim();
+            if (value.startsWith("-")) {
+                if (!isNumber(value)) {
+                    value = "";
+                    currentArgIndex--;
+                }
+            }
+
+            mValues.put(option, value);
+        }
+    }
+
+    /**
+     * Translate the input to option.
+     *
+     * @param option The option typed in.
+     * @return The option found.
+     */
+    private String inputToOption(String option) throws UnknownCommandException {
+        String op = sOptionMap.get(option);
+        if (op == null) {
+            throw new UnknownCommandException("Unknow option " + option);
+        }
+
+        return op;
+    }
+
+    /**
+     * Check if the option is a number.
+     *
+     * @param option The option.
+     * @return If the option is a number, return true; else, return false.
+     */
+    private boolean isNumber(String option) {
+        try {
+            Integer.parseInt(option);
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
+    /**
+     * Get the arguments size.
+     *
+     * @return The argument size.
+     */
+    public int getArgSize() {
+        return mArgLength;
+    }
+
+    /**
+     * Get the action.
+     *
+     * @return The action.
+     */
+    public String getAction() {
+        return mAction;
+    }
+
+    /**
+     * Get the option size.
+     *
+     * @return The option size.
+     */
+    public int getOptionSize() {
+        return mValues.size();
+    }
+
+    /**
+     * Get command option by hash key from parsed argument list.
+     *
+     * @param key The key.
+     * @return The value according to the key.
+     */
+    public String getValue(String key) {
+        if (mValues.containsKey(key)) {
+            return mValues.get(key);
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Check if option list contains the key.
+     *
+     * @param key The key.
+     * @return If containing the key, return true; else, return false.
+     */
+    public boolean containsKey(String key) {
+        return mValues.containsKey(key);
+    }
+
+    /**
+     * Get all of the option keys.
+     *
+     * @return All of the option keys.
+     */
+    public Set<String> getOptionKeys() {
+        return mValues.keySet();
+    }
+
+    /**
+     * Get action list.
+     *
+     * @return The action list.
+     */
+    public ArrayList<String> getActionValues() {
+        return mActionValues;
+    }
+
+    /**
+     * Remove a specific key.
+     *
+     * @param key The key to be removed.
+     */
+    public void removeKey(String key) {
+        mValues.remove(key);
+    }
+
+}
diff --git a/tools/host/src/com/android/cts/ConsoleUi.java b/tools/host/src/com/android/cts/ConsoleUi.java
new file mode 100644
index 0000000..a9df72b
--- /dev/null
+++ b/tools/host/src/com/android/cts/ConsoleUi.java
@@ -0,0 +1,1178 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import com.android.cts.TestHost.ActionType;
+
+import org.xml.sax.SAXException;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+/**
+ * Main console of CTS providing user with the interface to interact. <BR>
+ * Using CommandParser to parse command line argument and process.
+ * <ul>
+ *    <li> start a test plan
+ *    <li> remove a test plan
+ *    <li> add a test package
+ *    <li> remove a test package
+ *    <li> list current available devices
+ *    <li> list current available test plan
+ *    <li> list current available package
+ *    <li> list current test result
+ *    <li> view CTS' status, uninitialized, idle or running
+ *    <li> view command history
+ *    <li> select a history command to run
+ * </ul>
+ */
+public class ConsoleUi {
+
+    private static final String OS_NAME_LINUX = "Linux";
+    private static final String LS_PLAN_SEPARATOR = "=================================";
+    private static final String CMD_TYPE_LEADING_SPACE = "  ";
+    private static final String CMD_OPT_LEADING_SPACE = "    ";
+    private static final String CREATE_SESSION = "create a new session";
+    private static final String CHOOSE_SESSION = "choose a session";
+
+    private TestHost mHost;
+    private boolean mKeepRunning;
+    private BufferedReader mCommandInput;
+    // private static ConsoleInputStream sConsoleReader;
+    private CommandHistory mCommandHistory = new CommandHistory();
+    private String mOsName = "none";
+
+    // Define test case name pattern
+    static final String CASE_NAME_PATTERN_STR = "((\\S+\\.)+\\S+)\\.(\\S+):(\\S+)";
+    private static HashMap<String, Integer> mResultCodeMap;
+
+    static {
+        mResultCodeMap = new HashMap<String, Integer>();
+        mResultCodeMap.put(TestSessionLog.TestResult.CTS_RESULT_STR_PASS,
+                TestSessionLog.CTS_RESULT_CODE_PASS);
+        mResultCodeMap.put(TestSessionLog.TestResult.CTS_RESULT_STR_FAIL,
+                TestSessionLog.CTS_RESULT_CODE_FAIL);
+        mResultCodeMap.put(TestSessionLog.TestResult.CTS_RESULT_STR_ERROR,
+                TestSessionLog.CTS_RESULT_CODE_ERROR);
+        mResultCodeMap.put(TestSessionLog.TestResult.CTS_RESULT_STR_NOT_EXECUTED,
+                TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED);
+        mResultCodeMap.put(TestSessionLog.TestResult.CTS_RESULT_STR_TIMEOUT,
+                TestSessionLog.CTS_RESULT_CODE_TIMEOUT);
+    }
+
+    public ConsoleUi(TestHost host) {
+        mHost = host;
+        mCommandInput = new BufferedReader(new InputStreamReader(System.in));
+        mKeepRunning = true;
+
+        initInputStream();
+    }
+
+    /**
+     * Start the console user interface.
+     *
+     */
+    public void startUi() {
+        while (mKeepRunning) {
+            try {
+                String cmdLine = readLine(CUIOutputStream.CTS_PROMPT_SIGN);
+                CommandParser cp = CommandParser.parse(cmdLine);
+                processCommand(cp);
+                mCommandHistory.addCommand(cp, cmdLine);
+            } catch (CommandNotFoundException e) {
+                // avoid displaying help message for empty
+                // command by pressing ENTER over console directly
+            } catch (Exception e) {
+                Log.e("Got exception while processing command.", e);
+                showHelp();
+            }
+        }
+    }
+
+    /**
+     * Initialize the CommandProcessor.
+     */
+    private void initInputStream() {
+        // mOsName = System.getProperty("os.name");
+        if (mOsName.equals(OS_NAME_LINUX)) {
+            // sConsoleReader = new ConsoleInputStream(new FileInputStream(
+            // FileDescriptor.in), mCommandHistory);
+            // sConsoleReader.setup();
+        } else {
+            mCommandInput = new BufferedReader(new InputStreamReader(System.in));
+        }
+    }
+
+    /**
+     * Read a message line from console.
+     *
+     * @param prompt The notification message print out to console before reading.
+     * @return The string user typed in.
+     */
+    private String readLine(String prompt) throws IOException {
+        String cmdLine = null;
+        if (mOsName.equals(OS_NAME_LINUX)) {
+            // cmdLine = sConsoleReader.readLine(prompt).trim();
+        } else {
+            CUIOutputStream.print(prompt);
+            cmdLine = mCommandInput.readLine().trim();
+        }
+        return cmdLine;
+    }
+
+    /**
+     * Display the help message.
+     */
+    private void showHelp() {
+        CUIOutputStream.println("Usage: command options");
+        CUIOutputStream.println("Avaiable commands and options:");
+        showHostCmdHelp();
+        showPlanCmdHelp();
+        showPackageCmdHelp();
+        showResultCmdHelp();
+        showHistoryCmdHelp();
+        showDeviceCmdHelp();
+    }
+
+    /**
+     * Display the help message related to history commands.
+     */
+    private void showHistoryCmdHelp() {
+        final String cmdStr = CTSCommand.HISTORY + "/" + CTSCommand.H;
+
+        CUIOutputStream.println(CMD_TYPE_LEADING_SPACE + "History:");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + cmdStr + ": list all commands in command history");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + cmdStr + " count: list the latest count records in command history");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + cmdStr + " " + CTSCommand.OPTION_E
+                + " num: run the command designated by 'num' in command history");
+    }
+
+    /**
+     * Display the help message related to result commands.
+     */
+    private void showResultCmdHelp() {
+        final String cmdStr = CTSCommand.LIST + " " + CTSCommand.OPTION_R
+                + "/" + CTSCommand.OPTION_RESULT;
+        final String sessionStr = CTSCommand.OPTION_S + "/" + CTSCommand.OPTION_SESSION;
+        final String resultsStr =" [" + TestSessionLog.TestResult.CTS_RESULT_STR_PASS
+                       + "/" + TestSessionLog.TestResult.CTS_RESULT_STR_FAIL
+                       + "/" + TestSessionLog.TestResult.CTS_RESULT_STR_NOT_EXECUTED
+                       + "/" + TestSessionLog.TestResult.CTS_RESULT_STR_TIMEOUT
+                       + "] ";
+
+        CUIOutputStream.println(CMD_TYPE_LEADING_SPACE + "Result:");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + cmdStr + ": list all result of sessions");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + cmdStr + " " + sessionStr
+                + " session_id: list detail case result of a specified session");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + cmdStr + resultsStr + sessionStr
+                + " session_id: list detail cases of a specified"
+                + " session by the specified result.");
+    }
+
+    /**
+     * Display the help message related to package commands.
+     */
+    private void showPackageCmdHelp() {
+        final String cmdStr = CTSCommand.LIST + " " + CTSCommand.OPTION_P
+                + "/" + CTSCommand.OPTION_PACKAGE;
+        final String pkgStr = CTSCommand.OPTION_P + "/" + CTSCommand.OPTION_PACKAGE;
+
+        CUIOutputStream.println(CMD_TYPE_LEADING_SPACE + "Package:");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + cmdStr + ": list available packages");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE + cmdStr + " package_name: "
+                + "list contents of the package with specified name");
+
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + CTSCommand.ADD + " " + pkgStr
+                + " root: add packages from root to repository");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + CTSCommand.REMOVE + " " + pkgStr + " package_name/all: "
+                + "remove a package or all packages from repository");
+    }
+
+    /**
+     * Display the help message related to plan commands.
+     */
+    private void showPlanCmdHelp() {
+        final String lsPlanStr = CTSCommand.LIST + " " + CTSCommand.OPTION_PLAN;
+        final String addPlanStr = CTSCommand.ADD + " " + CTSCommand.OPTION_PLAN;
+        final String rmPlanStr = CTSCommand.REMOVE + " " + CTSCommand.OPTION_PLAN;
+
+        CUIOutputStream.println(CMD_TYPE_LEADING_SPACE + "Plan:");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + lsPlanStr + ": list available plans");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + lsPlanStr + " plan_name: list contents of the plan with specified name");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + addPlanStr + " plan_name: add a new plan with specified name");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + rmPlanStr + " plan_name/all: remove a plan or all plans from repository");
+        showStartSessionHelp();
+    }
+
+    /**
+     * Display the help message related to start session command.
+     */
+    private void showStartSessionHelp() {
+        final String cmdStr = CTSCommand.START + " " + CTSCommand.OPTION_PLAN;
+        final String testStr = CTSCommand.OPTION_T + "/" + CTSCommand.OPTION_TEST;
+        final String deviceStr = CTSCommand.OPTION_D + "/" + CTSCommand.OPTION_DEVICE;
+        final String pkgStr = CTSCommand.OPTION_P + "/" + CTSCommand.OPTION_PACKAGE;
+
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + cmdStr + " test_plan_name: run a test plan");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + cmdStr + " test_plan_name " + deviceStr + " device_ID: "
+                + "run a test plan using the specified device");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+            + cmdStr + " test_plan_name " + testStr + " test_name: run a specific test");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + cmdStr + " test_plan_name " + pkgStr + " java_package_name: "
+                + "run a specific java package");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + cmdStr + " test_plan_name " + testStr + " test_name "
+                + deviceStr + " device_ID: run a specific test using the specified device");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + cmdStr + " test_plan_name " + pkgStr + " java_package_name "
+                + deviceStr + " device_ID: "
+                + "run a specific java package using the specified device");
+    }
+
+    /**
+     * Display the help message related to host commands.
+     */
+    private void showHostCmdHelp() {
+        CUIOutputStream.println(CMD_TYPE_LEADING_SPACE + "Host:");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + CTSCommand.HELP + ": show this message");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + CTSCommand.EXIT + ": exit cts command line");
+    }
+
+    /**
+     * Display the help message related to device commands.
+     */
+    private void showDeviceCmdHelp() {
+        final String deviceStr = CTSCommand.OPTION_D + "/" + CTSCommand.OPTION_DEVICE;
+
+        CUIOutputStream.println(CMD_TYPE_LEADING_SPACE + "Device:");
+        CUIOutputStream.println(CMD_OPT_LEADING_SPACE
+                + CTSCommand.LIST + " " + deviceStr + ": list available devices");
+    }
+
+    /**
+     * Process the command from user's input.
+     *
+     * @param cp Command container.
+     */
+    public void processCommand(final CommandParser cp) throws Exception {
+        String action = cp.getAction();
+
+        if (action.equals(CTSCommand.EXIT)) {
+            if (cp.getArgSize() != 1) {
+                showHelp();
+                return;
+            }
+            Log.d("exit cts host");
+            mKeepRunning = false;
+            mHost.tearDown();
+        } else if (action.equals(CTSCommand.HELP)) {
+            showHelp();
+        } else if (mCommandHistory.isHistoryCommand(action)) {
+            processHistoryCommands(cp);
+        } else if (action.equals(CTSCommand.ADD)) {
+            processAddCommand(cp);
+        } else if (action.equals(CTSCommand.START)) {
+            processStartCommand(cp);
+        } else if (action.equals(CTSCommand.REMOVE)) {
+            processRmCommand(cp);
+        } else if (action.equals(CTSCommand.LIST)) {
+            processListCommand(cp);
+        } else {
+            showHelp();
+        }
+    }
+
+    /**
+     * Process start command.
+     *
+     * @param cp Command container.
+     */
+    private void processStartCommand(CommandParser cp) throws SAXException,
+            ParserConfigurationException {
+        if (cp.containsKey(CTSCommand.OPTION_PLAN)) {
+            processStartSessionCommand(cp);
+        } else if (cp.containsKey(CTSCommand.OPTION_P)
+                || cp.containsKey(CTSCommand.OPTION_PACKAGE)) {
+            processStartPackageCommand(cp);
+        } else {
+            showHelp();
+        }
+    }
+
+    /**
+     * Process start package command.
+     *
+     * <ul>
+     *     <li> Syntax:
+     *            start --package zipped-package-file
+     * </ul>
+     * @param cp Command container.
+     */
+    private void processStartPackageCommand(CommandParser cp) {
+        try {
+            String pathName = cp.getValue(CTSCommand.OPTION_PACKAGE);
+            mHost.startZippedPackage(pathName);
+        } catch (DeviceDisconnectedException e) {
+          Log.e("Device " + e.getMessage() + " disconnected", e);
+        } catch (Exception e) {
+            Log.e("Met exception during running zipped package.", e);
+        }
+    }
+
+    /**
+     * Validate the command parameters used to activate CTS.
+     *
+     * @param cp Command container.
+     * @return If command parameters are valid, return true; else, return false.
+     */
+    public boolean validateCommandParams(CommandParser cp) {
+        if (cp == null) {
+            return false;
+        }
+
+        if (cp.getAction() == null) {
+            return true;
+        } else if (isValidCommandOption(cp, CTSCommand.START,
+                CTSCommand.OPTION_PLAN)) {
+            return true;
+        } else if (isValidCommandOption(cp, CTSCommand.START,
+                CTSCommand.OPTION_PACKAGE)) {
+            return true;
+        } else if (isValidCommandOption(cp, CTSCommand.START,
+                CTSCommand.OPTION_P)) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Check if the command option is valid.
+     *
+     * @param cp CommandParser which contains the command and options.
+     * @param command Command the user typed in.
+     * @param option Option the user typed in.
+     * @return If command option valid, return true; else, return false.
+     */
+    private static boolean isValidCommandOption(CommandParser cp,
+            String command, String option) {
+        return (cp.getAction().equals(command)) && (cp.containsKey(option))
+                && (cp.getValue(option) != null)
+                && (cp.getValue(option).length() != 0);
+    }
+
+    /**
+     * Process start session command.
+     * <ul>
+     *     <li> Syntax 1:
+     *            start --plan plan-name
+     *              [ --device device-id ]
+     *              [ --test test-name ]
+     *     <li> Syntax 2:
+     *            start --plan plan-name
+     *              [ --device device-id ]
+     *              [ --package java-package-name ]
+     * </ul>
+     * @param cp container which contained start command options and values
+     *           Process the list commands.
+     */
+    private void processStartSessionCommand(CommandParser cp)
+            throws SAXException, ParserConfigurationException {
+
+        if (mHost.getDeviceList().length == 0) {
+            Log.e("No device connected", null);
+            return;
+        }
+
+        String testPlanPath = null;
+        String deviceId = null;
+        String testName = null;
+        String javaPkgName = null;
+        String testPlanName = mHost.getPlanName(cp.getValue(CTSCommand.OPTION_PLAN));
+        try {
+            if (cp.getActionValues().size() != 0 || cp.getOptionSize() < 1
+                    || cp.getOptionSize() > 3) {
+                showStartSessionHelp();
+                return;
+            }
+            testPlanName = mHost.getPlanName(cp
+                    .getValue(CTSCommand.OPTION_PLAN));
+            testPlanPath = HostConfig.getInstance().getPlanRepository()
+                    .getPlanPath(testPlanName);
+            if (testPlanPath == null) {
+                CUIOutputStream.println("Plan " + testPlanName
+                        + " is not in repository, please create it!");
+                return;
+            }
+
+            if (cp.containsKey(CTSCommand.OPTION_DEVICE)) {
+                deviceId = cp.getValue(CTSCommand.OPTION_DEVICE);
+                String[] deviceIdList = deviceId.trim().split(",");
+                if (deviceIdList.length > 1) {
+                    Log.e("Just allow choosing one device ID.", null);
+                    return;
+                }                
+            }
+
+            ActionType actionType = ActionType.START_NEW_SESSION;
+            if (cp.containsKey(CTSCommand.OPTION_TEST)) {
+                testName = cp.getValue(CTSCommand.OPTION_TEST);
+                if (-1 == testName.indexOf(Test.METHOD_SEPARATOR)) {
+                    Log.e("Test full name must be in the form of:"
+                            + " java_package_name.class_name#method_name.", null);
+                    return;
+                }
+                actionType = ActionType.RUN_SINGLE_TEST;
+            } else if (cp.containsKey(CTSCommand.OPTION_PACKAGE)) {
+                javaPkgName = cp.getValue(CTSCommand.OPTION_PACKAGE);
+                actionType = ActionType.RUN_SINGLE_JAVA_PACKAGE;
+            }
+
+            TestSession ts = null;
+            ArrayList<TestSession> sessionList = mHost.getSessionList(testPlanName);
+            if ((sessionList != null) && (sessionList.size() > 0)) {
+                if ((testName == null) || (testName.length() == 0)) {
+                    String mode = chooseMode(sessionList);
+                    if (CREATE_SESSION.equals(mode)) {
+                        ts = TestHost.createSession(testPlanName);
+                    }
+                }
+                if (ts == null) {
+                    ts = chooseTestSession(sessionList);
+                    deviceId = ts.getDeviceId();
+                    if ((actionType != ActionType.RUN_SINGLE_TEST)
+                            && (actionType != ActionType.RUN_SINGLE_JAVA_PACKAGE)) {
+                        actionType = ActionType.RESUME_SESSION;
+                    }
+                }
+            } else {
+                if ((testName != null) && (testName.length() != 0)) {
+                    Log.e("Running single test is just allowed when the session for the"
+                            + " plan existed by executing the test plan.", null);
+                    return;
+                }
+            }
+            
+            if (deviceId == null) {
+                TestDevice td = mHost.getFirstAvailableDevice();
+                if (td == null) {
+                    // no devices attached
+                    CUIOutputStream.println("No idle devices found.");
+                    return;
+                }
+                deviceId = td.getSerialNumber();
+            }
+
+            if (!checkDeviceExists(mHost.getDeviceList(), deviceId)) {
+                CUIOutputStream.println("Can't find specified device id.  Is it attached?");
+                return;
+            }            
+
+            if (ts == null) {
+                ts = TestHost.createSession(testPlanName);
+            }
+            mHost.startSession(ts, deviceId, testName, javaPkgName, actionType);
+        } catch (IOException e) {
+            Log.e("Can't create test session", e);
+        } catch (DeviceNotAvailableException e) {
+            CUIOutputStream.println("Test plan(" + testPlanName + ") "
+                    + e.getMessage());
+            showStartSessionHelp();
+        } catch (TestNotFoundException e) {
+            CUIOutputStream.println(e.getMessage());
+        } catch (TestPlanNotFoundException e) {
+            CUIOutputStream.println("Can't find test plan " + testPlanName);
+        } catch (IllegalTestNameException e) {
+            CUIOutputStream.println("Illegal case name: " + testName);
+        } catch (DeviceDisconnectedException e) {
+            Log.e("Device " + e.getMessage() + " disconnected ", null);
+        } catch (NoSuchAlgorithmException e) {
+            Log.e("Fail to initialise SHA-1 algorithm", e);
+        }
+    }
+
+    /**
+     * Choose test session among the available test session list.
+     *
+     * @param sessionList The available test session list.
+     * @return The test session chosen.
+     */
+    private TestSession chooseTestSession(ArrayList<TestSession> sessionList) throws IOException {
+        if ((sessionList == null) || (sessionList.size() == 0)) {
+            return null;
+        }
+
+        if (sessionList.size() == 1) {
+            return sessionList.get(0);
+        }
+
+        int index = 0;
+        String notification = "Please choose a session from the existed session(s):\n";
+        for (TestSession session : sessionList) {
+            notification += "  " + session.getId() + "  [" + index + "] \n";
+            index ++;
+        }
+
+        return sessionList.get(getUserInputId(notification, 0, index));
+    }
+
+    /**
+     * Choose  between creating a new session and choosing a session among available ones.
+     *
+     * @param sessionList The available test session list.
+     * @return If choose to create a new session, return CREATE_SESSION;
+     *         else return CHOOSE_SESSION.
+     */
+    private String chooseMode(ArrayList<TestSession> sessionList) throws IOException {
+        if ((sessionList == null) || (sessionList.size() == 0)) {
+            return CREATE_SESSION;
+        }
+
+        String planName = sessionList.get(0).getSessionLog().getTestPlanName();
+        String notification = "There are " + sessionList.size()
+            + " session(s) existed for plan " + planName + ".\n"
+            + "Please select to create a new session or choose a session from the existed ones:\n"
+            + "  Create a new session [0]\n"
+            + "  Choose a session     [1]\n";
+
+        int indexSelected = getUserInputId(notification, 0, 2);
+        if (indexSelected == 0) {
+            return CREATE_SESSION;
+        } else {
+            return CHOOSE_SESSION;
+        }
+    }
+
+    /**
+     * Validate the specified device ID against the available device array.
+     *
+     * @param availableDevices The available device array.
+     * @param specifiedId The specified device ID list.
+     * @return true if the id is valid
+     */
+    public boolean checkDeviceExists(TestDevice[] availableDevices, String specifiedId) {
+        for (TestDevice dev : availableDevices) {
+            if (specifiedId.equals(dev.getSerialNumber())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Get device ID from the device ID string against the available devices.
+     *
+     * @param availableDevices The available devices.
+     * @param idStr The device ID string.
+     * @return The device ID.
+     */
+    public int getDeviceId(TestDevice[] availableDevices, String idStr) {
+        for (int i = 0; i < availableDevices.length; i++) {
+            TestDevice dev = availableDevices[i];
+            if (idStr.equals(dev.getSerialNumber())) {
+                return i;
+            }
+        }
+        return -1;
+    }
+
+    /**
+     * Get the ID input by the against the specified range.
+     *
+     * @param notification The notification message to notify the user.
+     * @param startIndex The start index.
+     * @param endIndex The end index.
+     * @return The selected index of the ID the user chosen.
+     */
+    private int getUserInputId(String notification, int startIndex, int endIndex)
+                throws IOException {
+        int indexSelected = 0;
+        boolean success = false;
+        while (!success) {
+            String answer = readLine(notification);
+            try {
+                indexSelected = Integer.parseInt(answer);
+                if ((indexSelected >= 0) && (indexSelected < endIndex)) {
+                    success = true;
+                } else {
+                    CUIOutputStream.println("" + indexSelected
+                            + " is out of range [0," + (endIndex -1 ) + "].");
+                }
+            } catch (NumberFormatException e) {
+                CUIOutputStream.println("Invalid nuber is typed in.");
+            }
+        }
+        return indexSelected;
+    }
+
+    /**
+     * Check if the specified device ID is valid.
+     *
+     * @param numOfAvailableDevices The number of available devices.
+     * @param specifiedId The specified device ID.
+     * @return If the specified ID contained in available ID list,
+     *         return true; else, return false.
+     */
+    public boolean isValidDeviceId(int numOfAvailableDevices, int specifiedId) {
+        if (specifiedId < 0 || specifiedId >= numOfAvailableDevices) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Process list commands.
+     * <ul>
+     *     <li> Syntax 1:
+     *            ls --device
+     *     <li> Syntax 2:
+     *            ls --plan [ plan-name ]
+     *     <li> Syntax 3:
+     *            ls --package [ package-name ]
+     *     <li> Syntax 4:
+     *            ls --result
+     *              [ pass/fail/notExecuted/timeout ]
+     *              [ --session session_id ]
+     * </ul>
+     *
+     * @param cp Command container.
+     */
+    private void processListCommand(CommandParser cp) throws SAXException,
+            IOException, ParserConfigurationException {
+        if (cp.containsKey(CTSCommand.OPTION_DEVICE)) {
+            if (cp.getActionValues().size() != 0 || cp.getOptionSize() != 1) {
+                showDeviceCmdHelp();
+                return;
+            }
+            if (cp.getValue(CTSCommand.OPTION_DEVICE).equals("")) {
+                listDevices();
+            } else {
+                showDeviceCmdHelp();
+            }
+        } else if (cp.containsKey(CTSCommand.OPTION_PLAN)) {
+            if (cp.getActionValues().size() != 0 || cp.getOptionSize() != 1) {
+                showPlanCmdHelp();
+                return;
+            }
+            String planValue = cp.getValue(CTSCommand.OPTION_PLAN);
+            if (planValue.equals("")) {
+                listPlans();
+            } else {
+                listSinglePlan(mHost.getPlanName(planValue));
+            }
+        } else if (cp.containsKey(CTSCommand.OPTION_RESULT)) {
+            if (cp.getActionValues().size() != 0
+                    || (cp.getOptionSize() < 1 || cp.getOptionSize() > 2)) {
+                showResultCmdHelp();
+                return;
+            }
+            String resultValue = cp.getValue(CTSCommand.OPTION_RESULT);
+            String sessionId = cp.getValue(CTSCommand.OPTION_SESSION);
+            Integer resultCode = null;
+
+            if (sessionId != null) {
+                if (resultValue.length() != 0
+                        && !mResultCodeMap.containsKey(resultValue)) {
+                    showResultCmdHelp();
+                } else {
+                    resultCode = mResultCodeMap.get(resultValue);
+                    listSessionResult(sessionId, resultCode);
+                }
+            } else if (resultValue.length() == 0) {
+                listResults();
+            } else {
+                showHelp();
+            }
+        } else if (cp.containsKey(CTSCommand.OPTION_PACKAGE)) {
+            if (cp.getActionValues().size() != 0 || cp.getOptionSize() != 1) {
+                showPackageCmdHelp();
+                return;
+            }
+            listPackages(cp);
+        } else {
+            showHelp();
+        }
+    }
+
+    /**
+     * Process the removing commands.
+     * <ul>
+     *     <li> Syntax 1:
+     *            rm --plan [ plan-name ] [ all ]
+     *     <li> Syntax 2:
+     *            rm --package [ package-name ] [ all ]
+     * </ul>
+     *
+     * @param cp Command container.
+     */
+    private void processRmCommand(CommandParser cp) throws IOException {
+        if (cp.containsKey(CTSCommand.OPTION_PLAN)) {
+            if (cp.getActionValues().size() != 0 || cp.getOptionSize() != 1) {
+                showPlanCmdHelp();
+                return;
+            }
+
+            String planName = mHost.getPlanName(cp.getValue(CTSCommand.OPTION_PLAN));
+            if (HostConfig.ALL.equals(planName)) {
+                String prompt = "Remove all of the plans?([y/N])";
+                String answer = readLine(prompt).trim();
+                if (!isConfirmation(answer, false)) {
+                    return;
+                }
+            }
+
+            mHost.removePlans(planName);
+        } else if (cp.containsKey(CTSCommand.OPTION_PACKAGE)) {
+            if (cp.getActionValues().size() != 0 || cp.getOptionSize() != 1) {
+                showPackageCmdHelp();
+                return;
+            }
+
+            String packageName = cp.getValue(CTSCommand.OPTION_PACKAGE);
+            if (HostConfig.ALL.equals(packageName)) {
+                String prompt = "Remove all of the packages?([y/N])";
+                String answer = readLine(prompt).trim();
+                if (!isConfirmation(answer, false)) {
+                    return;
+                }
+            }
+
+            mHost.removePackages(packageName);
+        } else {
+            showHelp();
+        }
+    }
+
+    /**
+     * Check if the answer is confirmation.
+     *
+     * @param answer The answer user typed in.
+     * @param defaultResult If true, default to yes; else, default to no.
+     * @return If confirmation, return true; else, return false.
+     */
+    public static boolean isConfirmation(String answer, boolean defaultResult) {
+        if ("".equals(answer)) {
+            return defaultResult;
+        }
+
+        return ("y".equals(answer.toLowerCase()) || "yes".equals(answer.toLowerCase()));
+    }
+
+    /**
+     * Process the add commands.
+     * <ul>
+     *     <li> Syntax 1:
+     *            add --plan plan-name
+     *     <li> Syntax 2:
+     *            add --package package-name
+     * </ul>
+     *
+     * @param cp Command container.
+     */
+    private void processAddCommand(CommandParser cp) {
+        if (cp.containsKey(CTSCommand.OPTION_PLAN)) {
+            if (cp.getArgSize() == 3 && cp.getActionValues().size() == 0
+                    && cp.getOptionSize() == 1) {
+                addPlan(cp);
+            } else {
+                showPlanCmdHelp();
+            }
+        } else if (cp.containsKey(CTSCommand.OPTION_PACKAGE)) {
+            try {
+                addPackage(cp);
+            } catch (IOException e) {
+                Log.e("Can't add package", e);
+            } catch (IndexOutOfBoundsException e) {
+                Log.e("Can't add package", e);
+            } catch (NoSuchAlgorithmException e) {
+                Log.e("Can't add package", e);
+            }
+        } else {
+            showHelp();
+        }
+    }
+
+    /**
+     * Process the history commands.
+     * <ul>
+     *     <li> Syntax:
+     *            history [ -e ] [ number]
+     * </ul>
+     *
+     * @param cp Command container.
+     */
+    private void processHistoryCommands(final CommandParser cp)
+            throws Exception {
+        try {
+            if ((cp.getOptionSize() == 0) && (cp.getActionValues().size() == 0)) {
+                mCommandHistory.show(mCommandHistory.size());
+            } else if (cp.containsKey(CTSCommand.OPTION_E)
+                    && (cp.getActionValues().size() == 0)) {
+                int cmdNum = 0;
+                cmdNum = Integer.parseInt(cp.getValue(CTSCommand.OPTION_E));
+                if (cmdNum >= 0 && cmdNum < mCommandHistory.size()) {
+                    String cmdLine = mCommandHistory.get(cmdNum);
+                    CommandParser cpH = CommandParser.parse(cmdLine);
+                    CUIOutputStream.printPrompt();
+                    CUIOutputStream.println(cmdLine);// print(CTS_PROMPT_SIGN
+                                                        // + cmdLine);
+                    processCommand(cpH);
+                    mCommandHistory.addCommand(cpH, cmdLine);
+                } else {
+                    if (mCommandHistory.size() > 0) {
+                        Log.e("Command index " + cmdNum
+                                + " is out of command history range [0,"
+                                + (mCommandHistory.size() - 1) + "].", null);
+                    } else {
+                        Log.e("No command exists in command history.", null);
+                    }
+                }
+            } else if ((cp.getOptionSize() == 0)
+                    && (cp.getActionValues().size() == 1)) {
+                int cmdCount = Integer.parseInt(cp.getActionValues().iterator()
+                        .next());
+                if (cmdCount < 0 || cmdCount > mCommandHistory.size()) {
+                    cmdCount = mCommandHistory.size();
+                }
+                mCommandHistory.show(cmdCount);
+            } else {
+                showHistoryCmdHelp();
+            }
+
+        } catch (NumberFormatException e) {
+            showHistoryCmdHelp();
+        }
+    }
+
+    /**
+     * List a single plan by the plan name given.
+     *
+     * @param name The plan name.
+     */
+    private void listSinglePlan(String name) throws SAXException, IOException,
+            ParserConfigurationException {
+        String planName = null;
+        for (String str : mHost.getPlanRepository().getAllPlanNames()) {
+            if (str.startsWith(name)) {
+                planName = str;
+                break;
+            }
+        }
+
+        if (planName == null) {
+            Log.e("No plan named " + name + " in repository!", null);
+            return;
+        }
+
+        String planPath = mHost.getPlanRepository().getPlanPath(planName);
+        ArrayList<String> removedPkgList = new ArrayList<String>();
+        Collection<String> pkgNames = TestPlan.getEntries(planPath, removedPkgList);
+
+        if (removedPkgList.size() != 0) {
+            CUIOutputStream.println("The following package(s) contained in plan "
+                    + planName + " have been removed:");
+            for (String pkgName : removedPkgList) {
+                CUIOutputStream.println("    " + pkgName);
+            }
+        }
+
+        if (pkgNames.size() > 0) {
+            CUIOutputStream.println("Packages of plan " + planName
+                    + " (" + pkgNames.size() + " in total):");
+            CUIOutputStream.println(LS_PLAN_SEPARATOR);
+            for (String pkgName : pkgNames) {
+                CUIOutputStream.println(pkgName);
+            }
+        }
+    }
+
+    /**
+     * Add a plan by the plan name given.
+     *
+     * @param cp Command container.
+     */
+    private void addPlan(final CommandParser cp) {
+        final String name = cp.getValue(CTSCommand.OPTION_PLAN);
+        if (HostUtils.isFileExist(HostConfig.getInstance().getPlanRepository()
+                .getPlanPath(name)) == true) {
+            Log.e("Plan " + name + " already exist, please use another name!", null);
+            return;
+        }
+
+        if (!name.matches("\\w+")) {
+            CUIOutputStream.println("Only letter of the alphabet, number and '_'"
+                            + " are available for test plan name");
+            return;
+        }
+
+        ArrayList<String> packageNames =
+            HostConfig.getInstance().getCaseRepository().getPackageNames();
+        Collection<TestPackage> testPackages = HostConfig.getInstance().getTestPackages();
+        if (testPackages.size() == 0) {
+            CUIOutputStream.println("No package found in repository, please add package first!");
+            return;
+        }
+
+        try {
+            PlanBuilder planBuilder = new PlanBuilder(packageNames);
+
+            if (mOsName.equals(OS_NAME_LINUX)) {
+                // planBuilder.setInputStream(sConsoleReader);
+            } else {
+                planBuilder.setInputStream(mCommandInput);
+            }
+
+            HashMap<String, ArrayList<String>> selectedResult = planBuilder.doSelect();
+            if (selectedResult != null) {
+                TestSessionBuilder.getInstance().serialize(name, packageNames, selectedResult);
+            } else {
+                Log.i("Selected nothing for the plan of " + name + ". The plan is not created!");
+            }
+        } catch (Exception e) {
+            Log.e("Got exception while trying to add a plan!", e);
+            return;
+        }
+
+    }
+
+    /**
+     * List all of the plans in the plan repository.
+     */
+    private void listPlans() {
+        ArrayList<String> plans = mHost.getPlanRepository().getAllPlanNames();
+
+        if (plans.size() == 0) {
+            CUIOutputStream.println("No plan created!");
+        } else {
+            CUIOutputStream.println("List of plans (" + plans.size() + " in total):");
+            for (String name : plans) {
+                CUIOutputStream.println(name);
+            }
+        }
+    }
+
+    /**
+     * List detailed case result of specified session. The result can be
+     * filtered, if resultType isn't null, by the specified resultType.
+     *
+     * @param idStr the session id.
+     * @param resultType the type of result, [pass, fail, notExecuted, timeout, null].
+     */
+    private void listSessionResult(final String idStr, final Integer resultType) {
+        if (!idStr.matches("\\d+")) {
+            showResultCmdHelp();
+            return;
+        }
+
+        int sessionId = Integer.parseInt(idStr);
+
+        TestSession ts = mHost.getSession(sessionId);
+        if (null == ts) {
+            Log.e("Can't find specified session", null);
+            return;
+        }
+
+        TestSessionLog log = ts.getSessionLog();
+        CUIOutputStream.println("Result of session " + ts.getId());
+        CUIOutputStream.println("Result\t\tCase name");
+        CUIOutputStream
+                .println("==============================================================");
+        for (Test test : log.getAllResults()) {
+            if (resultType != null
+                    && test.getResultCode() != resultType.intValue()) {
+                continue;
+            }
+            CUIOutputStream.println(test.getResultStr() + "\t\t"
+                    + test.getFullName());
+        }
+    }
+
+    /**
+     * List all of the test results.
+     */
+    private void listResults() {
+        Collection<TestSession> sessions = mHost.getSessions();
+        if (sessions.isEmpty()) {
+            CUIOutputStream.println("There isn't any test result!");
+        } else {
+            CUIOutputStream.println("List of all results: ");
+            CUIOutputStream.println(
+                    "Session\t\tTest result\t\t\t\tStart time\t\tEnd time\t\tTest plan name");
+            CUIOutputStream.println("\t\tPass\tFail\tTimeout\tNotExecuted");
+
+            for (TestSession session : sessions) {
+                TestSessionLog log = session.getSessionLog();
+                int passNum = log.getTestList(
+                        TestSessionLog.CTS_RESULT_CODE_PASS).size();
+                int failNum = log.getTestList(
+                        TestSessionLog.CTS_RESULT_CODE_FAIL).size();
+                int notExecutedNum = log.getTestList(
+                        TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED).size();
+                int timeOutNum = log.getTestList(
+                        TestSessionLog.CTS_RESULT_CODE_TIMEOUT).size();
+
+                String resStr = Long.toString(passNum) + "\t" + failNum;
+                resStr += "\t" + timeOutNum;
+                resStr += "\t" + notExecutedNum;
+
+                String startTimeStr =
+                    HostUtils.getFormattedTimeString(log.getStartTime().getTime(), " ", ".", ":");
+                String endTimeStr =
+                    HostUtils.getFormattedTimeString(log.getEndTime().getTime(), " ", ".", ":");
+                CUIOutputStream.println(Long.toString(session.getId()) + "\t\t"
+                        + resStr + "\t\t" + startTimeStr
+                        + "\t" + endTimeStr + "\t" + log.getTestPlanName());
+            }
+        }
+    }
+
+    /**
+     * Add a package by the path and package name.
+     *
+     * @param cp Command container. 
+     */
+    private void addPackage(final CommandParser cp) throws IOException,
+            IndexOutOfBoundsException, NoSuchAlgorithmException {
+        if (cp.getActionValues().size() != 0 || cp.getOptionSize() != 1) {
+            showPackageCmdHelp();
+            return;
+        }
+        String pathName = cp.getValue(CTSCommand.OPTION_PACKAGE);
+        mHost.addPackage(pathName);
+    }
+
+    /**
+     * List current package in the case repository.
+     *
+     * @param cp Command container
+     */
+    private void listPackages(final CommandParser cp) {
+        // walk through the case root path
+        // and list available packages
+        String expectPackage = cp.getValue(CTSCommand.OPTION_PACKAGE);
+        String caseRoot = mHost.getCaseRepository().getRoot();
+        if (caseRoot == null) {
+            Log.e("Case repository is null", null);
+            return;
+        }
+
+        File root = new File(caseRoot);
+        if (!root.isDirectory()) {
+            Log.e("Case repository must be a directory!", null);
+            return;
+        }
+
+        Collection<TestPackage> testPackages = HostConfig.getInstance().getTestPackages();
+
+        if (testPackages.size() == 0) {
+            CUIOutputStream
+                    .println("No package available under case repository!");
+        } else {
+            if (expectPackage.equals("")) {
+                CUIOutputStream.println("Available packages ("
+                        + testPackages.size() + " in total):");
+                for (TestPackage pkg : testPackages) {
+                    CUIOutputStream.println(pkg.getAppPackageName());
+                }
+            } else {
+                List<ArrayList<String>> list = mHost.getCaseRepository()
+                        .listAvailablePackage(expectPackage);
+                ArrayList<String> packageList = list.get(0);
+                ArrayList<String> suiteList = list.get(1);
+                ArrayList<String> caseList = list.get(2);
+                ArrayList<String> testList = list.get(3);
+                if ((packageList.size() == 0) && (suiteList.size() == 0)
+                        && (caseList.size() == 0) && (testList.size() == 0)) {
+                    CUIOutputStream
+                            .println("Not available test package, suite, cases or tests: "
+                                    + expectPackage);
+                } else {
+                    if (packageList.size() != 0) {
+                        CUIOutputStream.println(
+                                "Test packages (" + packageList.size() + " in total):");
+                        for (String packageName : packageList) {
+                            CUIOutputStream.println(packageName);
+                        }
+                    }
+                    if (suiteList.size() != 0) {
+                        CUIOutputStream.println(
+                                "Test suites (" + suiteList.size() + " in total):");
+                        for (String suiteName : suiteList) {
+                            CUIOutputStream.println(suiteName);
+                        }
+                    }
+                    if (caseList.size() != 0) {
+                        CUIOutputStream.println("Test cases (" + caseList.size() + " in total):");
+                        for (String caseName : caseList) {
+                            CUIOutputStream.println(caseName);
+                        }
+                    }
+                    if (testList.size() != 0) {
+                        CUIOutputStream.println("Tests (" + testList.size() + " in total):");
+                        for (String testName : testList) {
+                            CUIOutputStream.println(testName);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * List all of the devices connected.
+     */
+    private void listDevices() {
+        String[] deviceNames = mHost.listDevices();
+        if (deviceNames.length == 0) {
+            CUIOutputStream.println("No device connected.");
+            return;
+        }
+
+        CUIOutputStream.println("Id\t\tDevice Name\t\tStatus");
+
+        for (int i = 0; i < deviceNames.length; i++) {
+            CUIOutputStream.println(i + "\t\t" + deviceNames[i]);
+        }
+    }
+}
diff --git a/tools/host/src/com/android/cts/DeviceDisconnectedException.java b/tools/host/src/com/android/cts/DeviceDisconnectedException.java
new file mode 100644
index 0000000..9a9c134
--- /dev/null
+++ b/tools/host/src/com/android/cts/DeviceDisconnectedException.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+/**
+ * Throw out DeviceDisconnectedException if detected that the device is disconnected.
+ */
+public class DeviceDisconnectedException extends Exception {
+
+    public DeviceDisconnectedException(String message) {
+        super(message);
+    }
+}
diff --git a/tools/host/src/com/android/cts/DeviceManager.java b/tools/host/src/com/android/cts/DeviceManager.java
new file mode 100644
index 0000000..0f771cb
--- /dev/null
+++ b/tools/host/src/com/android/cts/DeviceManager.java
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.util.ArrayList;
+
+import com.android.ddmlib.AndroidDebugBridge;
+import com.android.ddmlib.Device;
+import com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener;
+
+/**
+ * Initializing and managing devices.
+ */
+public class DeviceManager implements IDeviceChangeListener {
+
+    ArrayList<TestDevice> mDevices;
+
+    public DeviceManager() {
+        mDevices = new ArrayList<TestDevice>();
+    }
+
+    /**
+     * Initialize Android debug bridge. This function should be called after
+     * {@link DeviceManager} initialized.
+     */
+    public void initAdb() {
+        String adbLocation = getAdbLocation();
+
+        Log.d("init adb...");
+        AndroidDebugBridge.init(true);
+        AndroidDebugBridge.addDeviceChangeListener(this);
+        AndroidDebugBridge.createBridge(adbLocation, true);
+    }
+
+    /**
+     * Get the location of the adb command.
+     *
+     * @return The location of the adb location.
+     */
+    public static String getAdbLocation() {
+        return "adb";
+    }
+
+    /**
+     * Allocate devices by specified number for testing.
+     * @param num the number of required device
+     * @return the specified number of devices.
+     */
+    public TestDevice[] allocateDevices(final int num) throws DeviceNotAvailableException {
+
+        ArrayList<TestDevice> deviceList;
+        TestDevice td;
+        int index = 0;
+
+        if (num < 0) {
+            throw new IllegalArgumentException();
+        }
+        if (num > mDevices.size()) {
+            throw new DeviceNotAvailableException("The number of connected device("
+                    + mDevices.size() + " is less than the specified number("
+                    + num + "). Please plug in enough devices");
+        }
+        deviceList = new ArrayList<TestDevice>();
+
+        while (index < mDevices.size() && deviceList.size() != num) {
+            td = mDevices.get(index);
+            if (td.getStatus() == TestDevice.STATUS_IDLE) {
+                deviceList.add(td);
+            }
+            index++;
+        }
+        if (deviceList.size() != num) {
+            throw new DeviceNotAvailableException("Can't get the specified number("
+                    + num + ") of idle device(s).");
+        }
+        return deviceList.toArray(new TestDevice[num]);
+    }
+
+    /**
+     * Get TestDevice list that available for executing tests.
+     *
+     * @return The device list.
+     */
+    public final TestDevice[] getDeviceList() {
+        return mDevices.toArray(new TestDevice[mDevices.size()]);
+    }
+
+    /**
+     * Get the number of all free devices.
+     *
+     * @return the number of all free devices
+     */
+    public int getCountOfFreeDevices() {
+        int count =0;
+        for (TestDevice td : mDevices) {
+            if (td.getStatus() == TestDevice.STATUS_IDLE) {
+                count++;
+            }
+        }
+        return count;
+    }
+
+    /**
+     * Append the device to the device list.
+     *
+     * @param device The devie to be appended to the device list.
+     */
+    private void appendDevice(final Device device) {
+        if (-1 == searchDevice(device)) {
+            TestDevice td = new TestDevice(device);
+            mDevices.add(td);
+        }
+    }
+
+    /**
+     * Remove specified TestDevice from managed list.
+     *
+     * @param device The device to be removed from the device list.
+     */
+    private void removeDevice(final Device device) {
+        int index = searchDevice(device);
+        if (index == -1) {
+            Log.d("Can't find " + device + " in device list of DeviceManager");
+            return;
+        }
+        mDevices.get(index).disconnected();
+        mDevices.remove(index);
+    }
+
+    /**
+     * Search a specific device.
+     *
+     * @param device The device to be found.
+     * @return The index of the specific device if exits; else -1.
+     */
+    private int searchDevice(final Device device) {
+        TestDevice td;
+
+        for (int index = 0; index < mDevices.size(); index++) {
+            td = mDevices.get(index);
+            if (td.getSerialNumber().equals(device.getSerialNumber())) {
+                return index;
+            }
+        }
+        return -1;
+    }
+
+    /** {@inheritDoc} */
+    public void deviceChanged(Device device, int changeMask) {
+        Log.d("device " + device.getSerialNumber() + " changed with changeMask=" + changeMask);
+    }
+
+    /** {@inheritDoc} */
+    public void deviceConnected(Device device) {
+        new DeviceServiceMonitor(device).start();
+    }
+
+    /**
+     * To make sure that connection between {@link AndroidDebugBridge}
+     * and {@link Device} is initialized properly. In fact, it just make sure
+     * the sync service isn't null and device's build values are collected
+     * before appending device.
+     */
+    private class DeviceServiceMonitor extends Thread {
+        private Device mDevice;
+
+        public DeviceServiceMonitor(Device device) {
+            mDevice = device;
+        }
+
+        public void run() {
+            while (mDevice.getSyncService() == null || mDevice.getPropertyCount() == 0) {
+                try {
+                    Thread.sleep(100);
+                } catch (InterruptedException e) {
+                    Log.e("", e);
+                }
+            }
+            CUIOutputStream.println("Device(" + mDevice + ") connected");
+            CUIOutputStream.printPrompt();
+            appendDevice(mDevice);
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void deviceDisconnected(Device device) {
+        removeDevice(device);
+    }
+
+    /**
+     * Allocate device by specified Id for testing.
+     * @param deviceId the ID of the test device.
+     * @return a {@link TestDevice} if the specified device is free.
+     */
+    public TestDevice allocateFreeDeviceById(String deviceId) throws DeviceNotAvailableException {
+        for (TestDevice td : mDevices) {
+            if (td.getSerialNumber().equals(deviceId)) {
+                if (td.getStatus() != TestDevice.STATUS_IDLE) {
+                    String msg = "The specifed device(" + deviceId + ") is " +
+                    td.getStatusAsString();
+                    throw new DeviceNotAvailableException(msg);
+                }
+                return td;
+            }
+        }
+        throw new DeviceNotAvailableException("The specified device(" +
+                deviceId + "cannot be found");
+    }
+
+    /**
+     * Reset the online {@link TestDevice} to STATUS_IDLE
+     *
+     * @param device of the specified {@link TestDevice}
+     */
+    public void resetTestDevice(final TestDevice device) {
+        if (device.getStatus() != TestDevice.STATUS_OFFLINE) {
+            device.setStatus(TestDevice.STATUS_IDLE);
+        }
+    }
+}
diff --git a/tools/host/src/com/android/cts/DeviceNotAvailableException.java b/tools/host/src/com/android/cts/DeviceNotAvailableException.java
new file mode 100644
index 0000000..416950b
--- /dev/null
+++ b/tools/host/src/com/android/cts/DeviceNotAvailableException.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      httprunPackage://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+/**
+ * Exception reporting that the device is not available.
+ *
+ */
+public class DeviceNotAvailableException extends Exception {
+
+    private static final long serialVersionUID = -5747916746880520094L;
+
+    public DeviceNotAvailableException() {
+        super();
+    }
+
+    public DeviceNotAvailableException(final String msg) {
+        super(msg);
+    }
+
+}
diff --git a/tools/host/src/com/android/cts/DeviceObserver.java b/tools/host/src/com/android/cts/DeviceObserver.java
new file mode 100644
index 0000000..e0b7914
--- /dev/null
+++ b/tools/host/src/com/android/cts/DeviceObserver.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+public interface DeviceObserver {
+
+    public static final int FAIL = -1;
+    public static final int SUCCESS = 1;
+
+    /**
+     * Update Test running status when running in batch mode.
+     *
+     * @param test The Test to update.
+     * @param status The status to be updated.
+     */
+    void notifyTestStatus(final Test test, final String status);
+
+    /**
+     * Update result code and failed message.
+     *
+     * @param resCode test result code value.
+     * @param failedMessage failed message content.
+     * @param stackTrace stack trace information.
+     */
+    void notifyUpdateResult(final int resCode, final String failedMessage,
+            final String stackTrace);
+
+    /**
+     * Notify after installing apk complete on the {@link TestDevice}
+     * no matter succeeded or failed.
+     *
+     * @param resultCode the result code of installation.
+     */
+    void notifyInstallingComplete(final int resultCode);
+
+    /**
+     * Notify after uninstalling apk complete on the {@link TestDevice}.
+     *
+     * @param resultCode the result code of uninstallation.
+     */
+    void notifyUninstallingComplete(final int resultCode);
+
+    /**
+     * Notify after installing apk timeout on the {@link TestDevice}
+     *
+     * @param testDevice the {@link TestDevice} whose install action timeout.
+     */
+    void notifyInstallingTimeout(final TestDevice testDevice);
+
+    /**
+     * Notify after uninstalling apk timeout.
+     *
+     * @param testDevice the {@link TestDevice} whose install action timeout
+     */
+    void notifyUninstallingTimeout(final TestDevice testDevice);
+
+    /**
+     * Notify after a {@link TestDevice}, which is used in testing,
+     * is disconnected to the {@link TestHost}.
+     *
+     */
+    void notifyTestingDeviceDisconnected();
+}
diff --git a/tools/host/src/com/android/cts/HostConfig.java b/tools/host/src/com/android/cts/HostConfig.java
new file mode 100644
index 0000000..5625840
--- /dev/null
+++ b/tools/host/src/com/android/cts/HostConfig.java
@@ -0,0 +1,933 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.cts;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
+
+/**
+ * Holds CTS host configuration information, such as:
+ * <ul>
+ *    <li> test case repository
+ *    <li> test plan repository
+ *    <li> test result repository
+ * </ul>
+ */
+public class HostConfig extends XMLResourceHandler {
+    public static boolean DEBUG = false;
+
+    public static final String ALL = "all";
+
+    static final String SIGNATURE_TEST_PACKAGE_NAME = "SignatureTest";
+    static final String DEFAULT_HOST_CONFIG_FILE_NAME = "host_config.xml";
+    static final String FILE_SUFFIX_XML = ".xml";
+    static final String FILE_SUFFIX_APK = ".apk";
+    static final String FILE_SUFFIX_ZIP = ".zip";
+    static final String FILE_SUFFIX_JAR = ".jar";
+    static final String[] CTS_RESULT_RESOURCES = {"cts_result.xsl", "cts_result.css",
+                                                  "logo.gif", "newrule-green.png"};
+
+    private String mConfigRoot;
+    private CaseRepository mCaseRepos;
+    private Repository mResultRepos;
+    private PlanRepository mPlanRepos;
+    private HashMap<String, TestPackage> mTestPackageMap;
+
+    private final static HostConfig sInstance = new HostConfig();
+
+    private HostConfig() {
+        mTestPackageMap = new HashMap<String, TestPackage>();
+    }
+
+    public static HostConfig getInstance() {
+        return sInstance;
+    }
+
+    /**
+     * Load configuration.
+     *
+     * @param configPath The configuration path.
+     * @return If succeed in loading, return true; else, return false.
+     */
+    public boolean load(String configPath) throws SAXException, IOException,
+            ParserConfigurationException, NoSuchAlgorithmException {
+
+        String fileName = null;
+        String[] subDirs = configPath.split("\\" + File.separator);
+        for (String d : subDirs) {
+            if (d.contains(FILE_SUFFIX_XML)) {
+                fileName = d;
+            }
+        }
+
+        String configFile = null;
+        if (fileName == null) {
+            //remove the possible trailing "/" of the path
+            if (File.separatorChar == configPath.charAt(configPath.length() - 1)) {
+                configPath = configPath.substring(0, configPath.length() - 1);
+            }
+            mConfigRoot = configPath;
+            fileName = DEFAULT_HOST_CONFIG_FILE_NAME;
+        } else {
+            mConfigRoot = configPath.substring(0, configPath.length() - fileName.length() - 1);
+        }
+        configFile = mConfigRoot + File.separator + fileName;
+
+        Document doc = DocumentBuilderFactory.newInstance()
+                .newDocumentBuilder().parse(new File(configFile));
+
+        String repositoryRoot = getStringAttributeValue(doc
+                .getElementsByTagName("Repository").item(0), "root");
+        if ((null == repositoryRoot) || (repositoryRoot.length() == 0)) {
+            repositoryRoot = mConfigRoot;
+        }
+
+        String caseCfg = getStringAttributeValue(doc, "TestCase", "path", fileName);
+        String planCfg = getStringAttributeValue(doc, "TestPlan", "path", fileName);
+        String resCfg = getStringAttributeValue(doc, "TestResult", "path", fileName);
+        if ((caseCfg == null) || (planCfg == null) || (resCfg == null)) {
+            return false;
+        }
+
+        String caseRoot = repositoryRoot + File.separator + caseCfg;
+        String planRoot = repositoryRoot + File.separator + planCfg;
+        String resRoot = repositoryRoot + File.separator + resCfg;
+
+        boolean validCase = true;
+        if (!validateDirectory(caseRoot)) {
+            validCase = new File(caseRoot).mkdirs();
+        }
+        boolean validRes = true;
+        if (!validateDirectory(resRoot)) {
+            validRes = new File(resRoot).mkdirs();
+        }
+        if (validRes) {
+            for (String res: CTS_RESULT_RESOURCES) {
+                extractResource(res, resRoot);
+            }
+        }
+        boolean validPlan = true;
+        if (!validateDirectory(planRoot)) {
+            validPlan = new File(planRoot).mkdirs();
+        }
+
+        mCaseRepos = new CaseRepository(caseRoot);
+        mResultRepos = new Repository(resRoot);
+        mPlanRepos = new PlanRepository(planRoot);
+
+        boolean validConfig = validCase && validRes && validPlan;
+        if (validConfig) {
+            loadTestPackages();
+        }
+
+        return validConfig;
+    }
+
+    /**
+     * Get the test packages.
+     *
+     * @return The test packages.
+     */
+    public Collection<TestPackage> getTestPackages() {
+        return mTestPackageMap.values();
+    }
+
+    /**
+     * Get the test package by the JAVA package name of the test package.
+     *
+     * @param packageName The JAVA package name.
+     * @return The test package.
+     */
+    public TestPackage getTestPackage(final String packageName) {
+        return mTestPackageMap.get(packageName);
+    }
+
+    /**
+     * Load all of the test packages. 
+     */
+    public void loadTestPackages() throws NoSuchAlgorithmException {
+        if (mTestPackageMap.size() == 0) {
+            mCaseRepos.loadTestPackages();
+        }
+    }
+
+    /**
+     * Remove all of the test packages.
+     */
+    public void removeTestPacakges() {
+        mTestPackageMap.clear();
+    }
+
+    /**
+     * Get the package binary name.
+     *
+     * @param appPackageName The JAVA package name.
+     * @return The binary name of the package.
+     */
+    public String getPackageBinaryName(String appPackageName) {
+        for (TestPackage pkg : mTestPackageMap.values()) {
+            if ((appPackageName.startsWith(pkg.getAppPackageName()))
+                    || (appPackageName.equals(pkg.getAppBinaryName()))) {
+                return pkg.getAppBinaryName();
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Get the root directory of configuration.
+     *
+     * @return The root directory of configuration.
+     */
+    public String getConfigRoot() {
+        return mConfigRoot;
+    }
+
+    /**
+     * Get string attribute value.
+     *
+     * @param doc The document.
+     * @param tagName The tag name.
+     * @param attrName The attribute name.
+     * @param fileName The file name.
+     * @return The attribute value.
+     */
+    private String getStringAttributeValue(final Document doc,
+            final String tagName, final String attrName, final String fileName) {
+
+        String cfgStr = null;
+        try {
+            cfgStr = getStringAttributeValue(doc
+                    .getElementsByTagName(tagName).item(0), attrName);
+            if ((null == cfgStr) || (cfgStr.length() == 0)) {
+                Log.e("Configure error (in " + fileName
+                        + "), pls make sure <" + tagName + ">'s attribute <"
+                        + attrName + ">'s value is correctly set.", null);
+                return null;
+            }
+        } catch (Exception e) {
+            Log.e("Configure error (in " + fileName
+                    + "), pls make sure <" + tagName
+                    + ">'s value is correctly set.", null);
+            return null;
+        }
+
+        return cfgStr;
+    }
+
+    /**
+     * Validate the directory.
+     *
+     * @param path The path to be validated.
+     * @return If valid directory, return true; else, return false.
+     */
+    private boolean validateDirectory(final String path) {
+
+        File pathFile = new File(path);
+        if ((null == pathFile) || (pathFile.exists() == false)
+                || (pathFile.isDirectory() == false)) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Extract a resource into the given destination directory. This is used
+     * for resource files such as images and CSS.
+     *
+     * @param name The name of the resource.
+     * @param dest The directory the resource should be extracted to.
+     * @return true, if successful, or the file already existed.
+     */
+    private boolean extractResource(String name, String dest) {
+        File file = new File(dest, name);
+        if (!file.exists()) {
+            // do not extract again if the file is already there
+            InputStream in = getClass().getResourceAsStream(File.separator + name);
+            if (in != null) {
+                try {
+                    FileOutputStream fout = new FileOutputStream(file);
+                    byte[] data = new byte[512];
+                    int len = in.read(data);
+                    while (len > 0) {
+                        fout.write(data, 0, len);
+                        len = in.read(data);
+                    }
+                    fout.flush();
+                    fout.close();
+                    in.close();
+                } catch (FileNotFoundException e) {
+                    return false;
+                } catch (IOException e) {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Get the case repository.
+     *
+     * @return The case repository.
+     */
+    public CaseRepository getCaseRepository() {
+        return mCaseRepos;
+    }
+
+    /**
+     * Get the plan repository.
+     *
+     * @return The plan repository.
+     */
+    public PlanRepository getPlanRepository() {
+        return mPlanRepos;
+    }
+
+    /**
+     * Get the result repository.
+     *
+     * @return The result repository.
+     */
+    public Repository getResultRepository() {
+        return mResultRepos;
+    }
+
+    /**
+     * Storing the root information of some repository.
+     *
+     */
+    class Repository {
+        protected String mRoot;
+
+        Repository(String root) {
+            mRoot = root;
+        }
+
+        /**
+         * Get the root of the repository.
+         *
+         * @return The root of the repository.
+         */
+        public String getRoot() {
+            return mRoot;
+        }
+    }
+
+    /**
+     * Storing the information of case repository.
+     *
+     */
+    class CaseRepository extends Repository {
+        CaseRepository(String root) {
+            super(root);
+        }
+
+        /**
+         * Get package names.
+         *
+         * @return The JAVA package names.
+         */
+        public ArrayList<String> getPackageNames() {
+            ArrayList<String> packageNames = new ArrayList<String>();
+            for (TestPackage pkg : mTestPackageMap.values()) {
+                String binaryName = pkg.getAppBinaryName();
+                if (binaryName.equals(SIGNATURE_TEST_PACKAGE_NAME)) {
+                    packageNames.add(0, binaryName);
+                } else {
+                    packageNames.add(pkg.getAppPackageName());
+                }
+            }
+
+            return packageNames;
+        }
+
+        /**
+         * Get package binary names.
+         *
+         * @return The package binary names.
+         */
+        public ArrayList<String> getPackageBinaryNames() {
+            ArrayList<String> pkgBinaryNames = new ArrayList<String>();
+            for (TestPackage pkg : mTestPackageMap.values()) {
+                String pkgBinaryName = pkg.getAppBinaryName();
+                if (pkgBinaryName.equals(SIGNATURE_TEST_PACKAGE_NAME)) {
+                    pkgBinaryNames.add(0, pkgBinaryName);
+                } else {
+                    pkgBinaryNames.add(pkg.getAppBinaryName());
+                }
+            }
+
+            return pkgBinaryNames;
+        }
+
+        /**
+         * Load package XML file names.
+         *
+         * @return The package XML file names.
+         */
+        public List<String> loadPackageXmlFileNames() {
+            ArrayList<String> packageXmlFileNames = new ArrayList<String>();
+
+            for (File f : new File(mRoot).listFiles()) {
+                if (isValidXmlFile(f)) {
+                    String fileName = f.getName();
+                    String name = fileName.substring(0, fileName.lastIndexOf("."));
+                    packageXmlFileNames.add(name);
+                }
+            }
+
+            return packageXmlFileNames;
+        }
+
+        /**
+         * Load test packages.
+         */
+        public void loadTestPackages() throws NoSuchAlgorithmException {
+            List<String> pkgXmlFileNameList = loadPackageXmlFileNames();
+            for (String pkgXmlFileName : pkgXmlFileNameList) {
+                String xmlPath = getRoot() + File.separator
+                        + pkgXmlFileName + FILE_SUFFIX_XML;
+                TestPackage pkg = loadPackage(xmlPath);
+                if (isValidPackage(pkg)) {
+                    mTestPackageMap.put(pkg.getAppPackageName(), pkg);
+                }
+            }
+        }
+
+        /**
+         * Get package binary name.
+         *
+         * @param packagePath The package path.
+         * @return The package binary name.
+         */
+        private String getPackageBinaryName(String packagePath) {
+            return packagePath.substring(packagePath.lastIndexOf(File.separator) + 1,
+                    packagePath.lastIndexOf("."));
+        }
+
+        /**
+         * Check if the specified package is a valid package.
+         *
+         * @param pkg The specified package to be checked.
+         * @return If valid package, return true; else, return false.
+         */
+        private boolean isValidPackage(TestPackage pkg) {
+            if (pkg == null) {
+                return false;
+            }
+
+            String pkgFileName = pkg.getAppBinaryName();
+            String apkFilePath = mRoot + File.separator + pkgFileName + FILE_SUFFIX_APK;
+            String xmlFilePath = mRoot + File.separator + pkgFileName + FILE_SUFFIX_XML;
+            File xmlFile = new File(xmlFilePath);
+            if (pkg.isHostSideOnly()) {
+                if (xmlFile.exists() && xmlFile.isFile()) {
+                    return true;
+                }
+            } else {
+                File apkFile = new File(apkFilePath);
+                if (xmlFile.exists() && xmlFile.isFile()
+                        && apkFile.exists() && apkFile.isFile()) {
+                    return true;
+                }
+            }
+
+            return false;
+        }
+
+        /**
+         * Check if the specified file is a valid XML file.
+         *
+         * @param f The file to be valid.
+         * @return If valid XML file, return true; else, return false.
+         */
+        private boolean isValidXmlFile(File f) {
+            String filePath = f.getPath();
+            if (!filePath.endsWith(FILE_SUFFIX_XML)) {
+                return false;
+            }
+
+            return true;
+        }
+
+        /**
+         * Add package to case repository.
+         *
+         * @param packagePath The package to be added.
+         * @return If valid package and succeed in add it, return true; else, return false.
+         */
+        public boolean addPackage(String packagePath) throws FileNotFoundException,
+                IOException, NoSuchAlgorithmException {
+            ZipFile zipFile = new ZipFile(packagePath);
+            Enumeration<? extends ZipEntry> entries = zipFile.entries();
+
+            ArrayList<String> filePathList = new ArrayList<String>();
+            String xmlFilePath = null;
+            while (entries.hasMoreElements()) {
+                ZipEntry entry = entries.nextElement();
+
+                String name = entry.getName();
+                if (name.endsWith(FILE_SUFFIX_APK)
+                        || name.endsWith(FILE_SUFFIX_XML)
+                        || name.endsWith(FILE_SUFFIX_JAR)) {
+                    int index = name.lastIndexOf(File.separator);
+                    String fileName = name;
+                    if (index != -1) {
+                        fileName = name.substring(index + 1);
+                    }
+                    String filePath = mRoot + File.separator + fileName;
+                    writeToFile(zipFile.getInputStream(entry), filePath);
+                    filePathList.add(filePath);
+                    if (name.endsWith(FILE_SUFFIX_XML)) {
+                        xmlFilePath = filePath;
+                    }
+                }
+            }
+
+            String packageName = getPackageBinaryName(packagePath);
+            PackageZipFileValidator zipValidator = new PackageZipFileValidator();
+            if (zipValidator.validate(filePathList, packageName, xmlFilePath) == false) {
+                for (String filePath : filePathList) {
+                    deleteFile(filePath);
+                }
+                return false;
+            }
+
+            TestPackage pkg = loadPackage(xmlFilePath);
+            if (pkg != null) {
+                mTestPackageMap.put(pkg.getAppPackageName(), pkg);
+            }
+
+            return true;
+        }
+
+        /**
+         * Load the package from the package description XML file.
+         *
+         * @param xmlFileName The package description XML file.
+         * @return The TestPackage. 
+         */
+        private TestPackage loadPackage(String xmlFileName) throws NoSuchAlgorithmException {
+            if ((xmlFileName == null) || (xmlFileName.length() == 0)) {
+                return null;
+            }
+
+            File xmlFile = new File(xmlFileName);
+            TestSessionBuilder sessionBuilder;
+            TestPackage pkg = null;
+            try {
+                sessionBuilder = TestSessionBuilder.getInstance();
+                pkg = sessionBuilder.loadPackage(xmlFile, null);
+            } catch (ParserConfigurationException e) {
+            } catch (SAXException e) {
+            } catch (IOException e) {
+            }
+            return pkg;
+        }
+
+        /**
+         * check if the packagePath is valid against the case repository
+         *
+         * @param packagePath the path to be checked
+         * @return if the path isn't suffixed with .zip, return false;
+         *         if the package name exists in case repository, return false;
+         *         for other conditions, return true;
+         */
+        public boolean isValidPackageName(String packagePath) {
+            if (!packagePath.endsWith(FILE_SUFFIX_ZIP)) {
+                Log.e("Package error: package name " + packagePath + " is not a zip file.", null);
+                return false;
+            }
+
+            String fileName = packagePath.substring(packagePath.lastIndexOf(File.separator) + 1,
+                       packagePath.length() - FILE_SUFFIX_ZIP.length());
+
+            String path = mRoot + File.separator + fileName;
+            if (HostUtils.isFileExist(path + FILE_SUFFIX_APK)
+                    || HostUtils.isFileExist(path + FILE_SUFFIX_XML)) {
+                Log.e("Package error: package name " + fileName + " exists already.", null);
+                return false;
+            }
+
+            return true;
+        }
+
+        /**
+         * Validate zipped package file against package logic
+         */
+        class PackageZipFileValidator {
+            /**
+             * validate the package content to see if it contains enough data
+             **
+             * @param filePathList The file path list contained in the package zip file.
+             * @param packageName The package name.
+             * @param xmlFilePath The description XML file path.
+             * @return If valid, return true; else, return false.
+             */
+            public boolean validate(ArrayList<String> filePathList, String packageName,
+                    String xmlFilePath) throws NoSuchAlgorithmException {
+                if (xmlFilePath == null) {
+                    Log.e("Package error: package doesn't contain XML file: "
+                            + packageName + FILE_SUFFIX_XML, null);
+                    return false;
+                } else {
+                    TestPackage pkg = loadPackage(xmlFilePath);
+                    if (pkg == null) {
+                        Log.e("Package error: the description XML file contained in : "
+                                + packageName + FILE_SUFFIX_APK + " is invalid.", null);
+                        return false;
+                    } else {
+                        if (!validateTargetApk(filePathList, pkg.getTargetBinaryName())) {
+                            return false;
+                        }
+
+                        if (!validateHostControllerJar(filePathList, pkg.getJarPath())) {
+                            return false;
+                        }
+
+                        String apkFilePath = mRoot + File.separator
+                                + packageName + FILE_SUFFIX_APK;
+                        if (!filePathList.contains(apkFilePath)) {
+                            Log.e("Package error: package doesn't contain APK file: "
+                                            + packageName + FILE_SUFFIX_APK, null);
+                            return false;
+                        }
+                    }
+                }
+
+                return true;
+            }
+
+            /**
+             * Validate host controller jar file described in the package description XML file.
+             *
+             * @param filePathList  The files contained in the zipped package file.
+             * @param hostControllerJarPath The host controller jar file path.
+             * @return If the host controller jar file contained in the zipped package,
+             *         return true; else, return false.
+             */
+            private boolean validateHostControllerJar(ArrayList<String> filePathList,
+                    String hostControllerJarPath) {
+                if ((hostControllerJarPath != null) && (hostControllerJarPath.length() != 0)) {
+                    String targetFilePath =
+                        mRoot + File.separator + hostControllerJarPath + FILE_SUFFIX_JAR;
+                    if (filePathList.contains(targetFilePath)) {
+                        return true;
+                    }
+                } else {
+                    return true;
+                }
+
+                //String jarFileName = getPackageName(hostControllerJarPath);
+                Log.e("Package error: host controler jar file "
+                        + hostControllerJarPath + FILE_SUFFIX_JAR
+                        + " is not contained in the package zip file.", null);
+                return false;
+            }
+
+            /**
+             * Validate target APK file described in the package description XML file.
+             *
+             * @param filePathList The files contained in the zipped package file.
+             * @param targetName The target APK name.
+             * @return If the target APK file contained in the zipped package file, return true;
+             *         else, return false.
+             */
+            private boolean validateTargetApk(ArrayList<String> filePathList, String targetName) {
+                if ((targetName != null) && (targetName.length() != 0)) {
+                    String targetFileName = mRoot + File.separator + targetName + FILE_SUFFIX_APK;
+                    if (filePathList.contains(targetFileName)) {
+                        return true;
+                    }
+                } else {
+                    return true;
+                }
+
+                Log.e("Package error: target file " + targetName + FILE_SUFFIX_APK
+                        + " is not contained in the package zip file.", null);
+                return false;
+            }
+        }
+
+        /**
+         * Write the input stream to file.
+         *
+         * @param in The input stream.
+         * @param path The file to write to.
+         */
+        private void writeToFile(InputStream in, String path) throws IOException {
+            OutputStream out = new BufferedOutputStream(new FileOutputStream(path));
+            byte[] buffer = new byte[1024];
+            int len;
+
+            while ((len = in.read(buffer)) >= 0) {
+                out.write(buffer, 0, len);
+            }
+
+            in.close();
+            out.close();
+        }
+
+        /**
+         * Remove packages from case repository.
+         *
+         * @param packageName Package to be removed.
+         */
+        public void removePackages(String packageName) {
+            if ((packageName == null) || (packageName.length() == 0)) {
+                return;
+            }
+
+            if (packageName.equals(ALL)) {
+                ArrayList<String> packageNames = getCaseRepository().getPackageNames();
+                for (String pkgName : packageNames) {
+                    removePackage(pkgName);
+                }
+            } else {
+                if (!getPackageNames().contains(packageName)) {
+                    Log.e("Package " + packageName + " doesn't exist in repository!", null);
+                    return;
+                }
+                removePackage(packageName);
+            }
+        }
+
+        /**
+         * Remove the specified package.
+         *
+         * @param packageName The package name.
+         */
+        private void removePackage(String packageName) {
+            TestPackage pkg = getTestPackage(packageName);
+            if (pkg != null) {
+                ArrayList<String> targetBinaryNames = getTargetBinaryNames();
+                String targetBinaryName = pkg.getTargetBinaryName();
+                if ((targetBinaryName != null) && (targetBinaryName.length() != 0)
+                        && (getReferenceCount(targetBinaryNames, targetBinaryName) == 1)) {
+                    String targetBinaryFileName = mRoot + File.separator + targetBinaryName
+                            + FILE_SUFFIX_APK;
+                    deleteFile(targetBinaryFileName);
+                }
+
+                ArrayList<String> hostControllers = getHostControllers();
+                String hostControllerPath = pkg.getJarPath();
+                if ((hostControllerPath != null) && (hostControllerPath.length() != 0)
+                        && (getReferenceCount(hostControllers, hostControllerPath) == 1)) {
+                    String jarFilePath = mRoot + File.separator
+                            + hostControllerPath + FILE_SUFFIX_JAR;
+                    deleteFile(jarFilePath);
+                }
+            }
+
+            String packageBinaryName = pkg.getAppBinaryName();
+            mTestPackageMap.remove(pkg.getAppPackageName());
+
+            String apkPath = mRoot + File.separator + packageBinaryName + FILE_SUFFIX_APK;
+            String xmlPath = mRoot + File.separator + packageBinaryName + FILE_SUFFIX_XML;
+            deleteFile(apkPath);
+            deleteFile(xmlPath);
+        }
+
+        /**
+         * Get the reference count of the specific value against the value list.
+         *
+         * @param list The value list to be checked against.
+         * @param value The value to be checked.
+         * @return The reference count.
+         */
+        private int getReferenceCount(ArrayList<String> list, String value) {
+            if ((list == null) || (list.size() == 0) || (value == null)) {
+                return 0;
+            }
+
+            int count = 0;
+            for (String str : list) {
+                if (value.equals(str)) {
+                    count ++;
+                }
+            }
+
+            return count;
+        }
+
+        /**
+         * Get the target binary names contained with the test package description XML files.
+         *
+         * @return The target binary names.
+         */
+        private ArrayList<String> getTargetBinaryNames() {
+            ArrayList<String> targetBinaryNames = new ArrayList<String>();
+            for (TestPackage pkg : mTestPackageMap.values()) {
+                targetBinaryNames.add(pkg.getTargetBinaryName());
+            }
+            return targetBinaryNames;
+        }
+
+        /**
+         * Get the host controllers contained with the test package description XML files.
+         *
+         * @return The host controllers.
+         */
+        private ArrayList<String> getHostControllers() {
+            ArrayList<String> hostControllers = new ArrayList<String>();
+            for (TestPackage pkg : mTestPackageMap.values()) {
+                hostControllers.add(pkg.getJarPath());
+            }
+            return hostControllers;
+        }
+
+        /**
+         * Delete the specific file.
+         *
+         * @param filepath The file to be deleted.
+         */
+        private void deleteFile(String filepath) {
+            File file = new File(filepath);
+            if (file.exists() && file.isFile()) {
+                file.delete();
+            }
+        }
+
+        /**
+         * Get package's APK file path via the package name.
+         *
+         * @param packageName The package name.
+         * @return The package's APK file path.
+         */
+        public String getApkPath(String packageName) {
+            return mRoot + File.separator + packageName + FILE_SUFFIX_APK;
+        }
+
+        /**
+         * Get package's XML file path via the package name.
+         * @param packageName The package name.
+         * @return The package's XML file path.
+         */
+        public String getXmlPath(String packageName) {
+            return mRoot + File.separator + packageName + FILE_SUFFIX_XML;
+        }
+
+        /**
+         * List available package and suite.
+         *
+         * @param expectPackage expected package name
+         * @return list which contains available packages, suites and cases.
+         */
+        @SuppressWarnings("unchecked")
+        public List<ArrayList<String>> listAvailablePackage(String expectPackage) {
+            ArrayList<String> packageList = new ArrayList<String>();
+            ArrayList<String> suiteList = new ArrayList<String>();
+            ArrayList<String> caseList = new ArrayList<String>();
+            ArrayList<String> testList = new ArrayList<String>();
+
+            for (TestPackage testPackage : mTestPackageMap.values()) {
+                String appPackageName = testPackage.getAppPackageName();
+                if (expectPackage.equals(appPackageName)) {
+                    testPackage.getTestSuiteNames(appPackageName, suiteList, caseList);
+                } else if (appPackageName.startsWith(expectPackage)) {
+                    packageList.add(appPackageName);
+                } else {
+                    if (expectPackage.indexOf(Test.METHOD_SEPARATOR) == -1) {
+                        testPackage.getTestCaseNames(expectPackage, caseList, testList);
+                    } else {
+                        testPackage.getTestNames(expectPackage, testList);
+                    }
+                }
+            }
+
+            return Arrays.asList(packageList, suiteList, caseList, testList);
+        }
+    }
+
+    /**
+     * Storing information of test plans.
+     *
+     */
+    class PlanRepository extends Repository {
+
+        PlanRepository(String root) {
+            super(root);
+        }
+
+        /**
+         * Get the path of the specified plan.
+         *
+         * @param name The plan name.
+         * @return The plan path.
+         */
+        public String getPlanPath(String name) {
+            if (mRoot == null) {
+                Log.e("Repository uninitialized!", null);
+                return null;
+            }
+
+            return mRoot + File.separator + name + FILE_SUFFIX_XML;
+        }
+
+        /**
+         * Get all plan names in the plan repository.
+         * @return Plan names.
+         */
+        public ArrayList<String> getAllPlanNames() {
+            ArrayList<String> plans = new ArrayList<String>();
+
+            if (mRoot == null) {
+                Log.e("Not specify repository, please check your cts config",
+                        null);
+                return plans;
+            }
+
+            File planRepository = new File(mRoot);
+            if (!planRepository.exists()) {
+                Log.e("Plan Repository doesn't exist: " + mRoot, null);
+                return null;
+            }
+
+            for (File f : planRepository.listFiles()) {
+                String name = f.getName();
+
+                if (name.endsWith(FILE_SUFFIX_XML)) {
+                    plans.add(name.substring(0, name.length() - FILE_SUFFIX_XML.length()));
+                }
+            }
+
+            return plans;
+        }
+    }
+}
diff --git a/tools/host/src/com/android/cts/HostLock.java b/tools/host/src/com/android/cts/HostLock.java
new file mode 100644
index 0000000..16750bf
--- /dev/null
+++ b/tools/host/src/com/android/cts/HostLock.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.channels.FileLock;
+
+/**
+ * Host lock to make sure just one CTS host is running.
+ */
+public class HostLock {
+    private static FileOutputStream mFileOs;
+    private static FileLock mLock;
+    private static File mFile;
+
+    /**
+     * Lock the host.
+     *
+     * @return If succeed in locking the host, return true; else , return false.
+     */
+    public static boolean lock() {
+        try {
+            String tmpdir = System.getProperty("java.io.tmpdir");
+            mFile = new File(tmpdir + File.separator + "ctsLockFile.txt");
+            mFileOs = new FileOutputStream(mFile);
+            mLock = mFileOs.getChannel().tryLock();
+            if (mLock != null) {
+                return true;
+            } else {
+                return false;
+            }
+        } catch (FileNotFoundException e1) {
+            return false;
+        }catch (IOException e1) {
+            return false;
+        }
+    }
+
+    /**
+     * Release the host lock.
+     */
+    public static void release() {
+        try {
+            if (mLock != null) {
+                mLock.release();
+            }
+
+            if (mFileOs != null) {
+                mFileOs.close();
+            }
+            // On systems with permissions, it's possible for this lock file
+            // (depending on the default permissions set) to lock other users 
+            // out from using CTS on the same host.  So remove the file and 
+            // play nice with others.
+            mFile.delete();
+        } catch (IOException e) {
+        }
+    }
+}
diff --git a/tools/host/src/com/android/cts/HostSideOnlyPackage.java b/tools/host/src/com/android/cts/HostSideOnlyPackage.java
new file mode 100644
index 0000000..67bcb84
--- /dev/null
+++ b/tools/host/src/com/android/cts/HostSideOnlyPackage.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+
+/**
+ * The host side only package.
+ */
+public class HostSideOnlyPackage extends TestPackage {
+
+    /**
+     * Construct a host side only package with given necessary information.
+     *
+     * @param testPkgBinaryName The binary name of the TestPackage.
+     * @param version The version of the CTS Host allowed.
+     * @param androidVersion The version of the Android platform allowed.
+     * @param jarPath The host controller's jar path and file.
+     * @param appPackageName The Java package name of the test package.
+     */
+    public HostSideOnlyPackage(final String testPkgBinaryName, final String version,
+            final String androidVersion, final String jarPath,
+            final String appPackageName) throws NoSuchAlgorithmException {
+        super(null, testPkgBinaryName, null, null, version,
+                androidVersion, jarPath, null, appPackageName);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public boolean isHostSideOnly() {
+        return true;
+    }
+
+    /** {@inheritDoc} */
+    protected void runImpl(final String javaPkgName)
+            throws IOException, DeviceDisconnectedException {
+        try {
+            if (!mTestStop) {
+                Log.d("run in individual mode...");
+                runInIndividualMode(javaPkgName);
+            }
+        } catch (DeviceDisconnectedException e) {
+            cleanUp();
+            throw e;
+        }
+    }
+
+    /** {@inheritDoc} */
+    protected void runTestImpl(final Test test) throws DeviceDisconnectedException {
+        try {
+            if (!mTestStop) {
+                mCurrentTestSuite = test.getTestSuite();
+                mCurrentTestSuite.run(mDevice, test);
+            }
+        } catch (DeviceDisconnectedException e) {
+            cleanUp();
+            throw e;
+        }
+    }
+}
diff --git a/tools/host/src/com/android/cts/HostSideOnlyTest.java b/tools/host/src/com/android/cts/HostSideOnlyTest.java
new file mode 100644
index 0000000..1bf643a
--- /dev/null
+++ b/tools/host/src/com/android/cts/HostSideOnlyTest.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.net.MalformedURLException;
+import java.util.Enumeration;
+
+import junit.framework.TestFailure;
+import junit.framework.TestResult;
+
+/**
+ * Host side only test.
+ */
+public class HostSideOnlyTest extends Test {
+    private HostSideTestRunner mHostSideTestRunner;
+
+    public HostSideOnlyTest(final TestCase parentCase, final String name,
+            final String type, final String knownFailure, final int resCode) {
+
+        super(parentCase, name, type, knownFailure, resCode);
+        mHostSideTestRunner = null;
+    }
+
+    /**
+     * The Thread to be run host side unit test.
+     */
+    class HostSideTestRunner extends Thread {
+
+        private Test mTest;
+        private TestResult mTestResult;
+
+        public HostSideTestRunner(final Test test) {
+            mTest = test;
+            mTestResult = null;
+        }
+
+        /**
+         * Get the result of host side unit test.
+         *
+         * @return The result of host side unit test.
+         */
+        public Result getTestResult() {
+            Result result = new Result();
+            result.addResult(TestSessionLog.CTS_RESULT_CODE_PASS);
+
+            if (mTestResult.failureCount() > 0) {
+                result.addResult(TestSessionLog.CTS_RESULT_CODE_FAIL);
+                Enumeration<TestFailure> falures = mTestResult.failures();
+                TestFailure failure = null;
+                while ((failure = falures.nextElement()) != null) {
+                    result.setFailedMessage(failure.exceptionMessage());
+                    result.setStackTrace(failure.trace());
+                }
+            }
+
+            return result;
+        }
+
+        @Override
+        public void run() {
+            HostUnitTestRunner runner = new HostUnitTestRunner();
+            TestController controller = mTest.getTestController();
+            try {
+                mTestResult = runner.runTest(controller.getJarPath(),
+                        controller.getPackageName(), controller.getClassName(),
+                        controller.getMethodName());
+            } catch (MalformedURLException e) {
+                mTestResult = null;
+                Log.e("The host controller jar file is invalid. Please choose a correct one.",
+                        null);
+            } catch (ClassNotFoundException e) {
+                mTestResult = null;
+                Log.e("The host controller JAR file doesn't contain class: "
+                        + controller.getPackageName() + "."
+                        + controller.getClassName(), null);
+            }
+
+            synchronized (mTimeOutTimer) {
+                if (!mTimeOutTimer.isTimeOut()) {
+                    Log.d("HostSideTestRunnerThread() detects that it needs to "
+                            + "cancel mTimeOutTimer");
+                    mTimeOutTimer.sendNotify();
+                }
+            }
+        }
+    }
+
+    /** {@inheritDoc} */
+    protected Result getTestResult() {
+        return mHostSideTestRunner.getTestResult();
+    }
+
+    /** {@inheritDoc} */
+    protected void runImpl() {
+        mHostSideTestRunner = new HostSideTestRunner(this);
+        mHostSideTestRunner.start();
+    }
+}
diff --git a/tools/host/src/com/android/cts/HostTimer.java b/tools/host/src/com/android/cts/HostTimer.java
new file mode 100644
index 0000000..2cd2a29
--- /dev/null
+++ b/tools/host/src/com/android/cts/HostTimer.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+/**
+ * Host timer.
+ * Generally, there are two use cases of this general host timer:
+ * <ul>
+ *    <li> Use it as general timer to guard host from running for
+ *         too long under some situations.
+ *    <li> Use it as special timer where host needs to run very
+ *         long to communicate with device to fetch result section
+ *         by section which requires restarting the timer.
+ * </ul>
+ */
+public class HostTimer {
+    private final static int INIT = 0;
+    private final static int RUNNING = 1;
+    private final static int CANCELLED = 2;
+    private final static int TIMEOUT = 3;
+
+    private boolean mIsNotified;
+    private int mStatus;
+    private int mDelay;
+    private TimerTask mTimerTask;
+    private Timer mTimer;
+
+    public HostTimer(TimerTask task, int delay) {
+        mDelay = delay;
+        mTimerTask = task;
+        mStatus = INIT;
+        mIsNotified = false;
+        mTimer = null;
+    }
+
+    /**
+     * Mark notified.
+     */
+    public void setNotified() {
+        mIsNotified = true;
+    }
+
+    /**
+     * Get the notification status.
+     *
+     * @return The notification status.
+     */
+    public boolean isNotified() {
+        return mIsNotified;
+    }
+
+    /**
+     * Clear the status of notification.
+     */
+    public void resetNotified() {
+        mIsNotified = false;
+    }
+
+    /**
+     * Wait on.
+     */
+    public void waitOn() throws InterruptedException {
+        Log.d("HostTimer.waitOn(): mIsNotified=" + mIsNotified + ", this=" + this);
+        if (!mIsNotified) {
+            wait();
+        }
+        mIsNotified = false;
+    }
+
+    /**
+     * Set the time to delay.
+     *
+     * @param delay The time to delay.
+     */
+    public void setDelay(int delay) {
+        mDelay = delay;
+    }
+
+    /**
+     * Set the timer task.
+     *
+     * @param task The timer task.
+     */
+    public void setTimerTask(TimerTask task) {
+        mTimerTask = task;
+    }
+
+    /**
+     * Check if the watch dog timer timed out.
+     *
+     * @return If timeout, return true; else return false.
+     */
+    public boolean isTimeOut() {
+        return (mStatus == TIMEOUT);
+    }
+
+    /**
+     * Start the watch dog timer.
+     */
+    public void start() {
+        mTimer = new Timer();
+        mTimer.schedule(mTimerTask, mDelay);
+        mStatus = RUNNING;
+    }
+
+    /**
+     * Restart the watch dog timer.
+     */
+    public void restart(TimerTask task, int delay) {
+        mTimer.cancel();
+        mTimerTask = task;
+        mDelay = delay;
+        start();
+    }
+
+    /**
+     * Send notify to thread waiting on this object.
+     */
+    public void sendNotify() {
+        Log.d("HostTimer.sendNotify(): mIsNotified=" + mIsNotified + ", this=" + this);
+        mIsNotified = true;
+        notify();
+    }
+
+    /**
+     * Cancel the timer. To keep the status info, call this
+     * cancel in stead of the one inherited from parent.
+     *
+     * @param timeout If true, the cancellation is caused by timer timing out;
+     *                If false, the cancellation is no caused by timer timing out.
+     */
+    public void cancel(boolean timeout) {
+        mTimer.cancel();
+        if (mStatus == RUNNING) {
+            if (timeout) {
+                mStatus = TIMEOUT;
+            } else {
+                mStatus = CANCELLED;
+            }
+        }
+    }
+}
diff --git a/tools/host/src/com/android/cts/HostUnitTestRunner.java b/tools/host/src/com/android/cts/HostUnitTestRunner.java
new file mode 100644
index 0000000..f7a579c
--- /dev/null
+++ b/tools/host/src/com/android/cts/HostUnitTestRunner.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestResult;
+import junit.runner.BaseTestRunner;
+
+/**
+ * Unit test runner running host side unit test.
+ *
+ */
+public class HostUnitTestRunner extends BaseTestRunner{
+    private static String JAR_SUFFIX = ".jar";
+
+    private TestCase mTestCase;
+
+    public HostUnitTestRunner() {
+        mTestCase = null;
+    }
+
+    /**
+     * Run the specified test.
+     *
+     * @param jarPath The jar file.
+     * @param testPkgName The package name.
+     * @param testClassName The class name.
+     * @param testMethodName The method name.
+     * @return The test result.
+     */
+    public TestResult runTest(final String jarPath, final String testPkgName,
+            String testClassName, String testMethodName)
+            throws MalformedURLException, ClassNotFoundException {
+
+        TestResult result = new TestResult();
+        loadTestCase(jarPath, testPkgName, testClassName, testMethodName);
+
+        if (mTestCase != null) {
+            mTestCase.run(result);
+        }
+        return result;
+    }
+
+    /**
+     * Load test case via test class name and test method.
+     *
+     * @param testClassName The class name.
+     * @param testMethodName The method name.
+     */
+    @SuppressWarnings("unchecked")
+    public TestCase loadTestCase(final String jarPath,
+            final String testPkgName, final String testClassName,
+            final String testMethodName) throws MalformedURLException,
+            ClassNotFoundException {
+
+        Log.d("jarPath=" + jarPath + ",testPkgName=" + testPkgName
+                + ",testClassName=" + testClassName);
+
+        Class testClass = null;
+        if ((jarPath != null) && (jarPath.endsWith(JAR_SUFFIX))) {
+            testClass = loadClass(jarPath, testPkgName, testClassName);
+        } else {
+            testClass = Class.forName(testPkgName + "." + testClassName);
+        }
+
+        if ((testMethodName != null) && TestCase.class.isAssignableFrom(testClass)) {
+            mTestCase = buildTestMethod(testClass, testMethodName);
+        }
+
+        return mTestCase;
+    }
+
+    /**
+     * Load class from jar file.
+     *
+     * @param jarPath The jar file.
+     * @param testPkgName The package name.
+     * @param testClassName The class name.
+     * @return The class.
+     */
+    @SuppressWarnings("unchecked")
+    public Class loadClass(final String jarPath,
+            final String testPkgName, final String testClassName)
+            throws MalformedURLException, ClassNotFoundException {
+
+        URL urls[] = {};
+        JarFileLoader cl = new JarFileLoader(urls);
+        cl.addFile(jarPath);
+        Class testClass = cl.loadClass(testPkgName + "." + testClassName);
+        Log.d("succeed in load jarred class: " + jarPath + "." + testPkgName
+                + "." + testClassName);
+
+        return testClass;
+    }
+
+    /**
+     * Build test method.
+     *
+     * @param testClass The test class.
+     * @param testMethodName The method name.
+     * @return The test case.
+     */
+    @SuppressWarnings("unchecked")
+    private TestCase buildTestMethod(Class testClass,
+            String testMethodName) {
+        try {
+            TestCase testCase = (TestCase) testClass.newInstance();
+            testCase.setName(testMethodName);
+            return testCase;
+        } catch (IllegalAccessException e) {
+            runFailed("Could not access test class. Class: "
+                    + testClass.getName());
+        } catch (InstantiationException e) {
+            runFailed("Could not instantiate test class. Class: "
+                    + testClass.getName());
+        }
+
+        return null;
+    }
+
+    /** {@inheritDoc} */
+    public void testStarted(String testName) {
+
+    }
+
+    /** {@inheritDoc} */
+    public void testEnded(String testName) {
+
+    }
+
+    /** {@inheritDoc} */
+    public void testFailed(int status, Test test, Throwable t) {
+    }
+
+    /** {@inheritDoc} */
+    protected void runFailed(String message) {
+        throw new RuntimeException(message);
+    }
+
+    /**
+     * Jar file loader.
+     *
+     */
+    class JarFileLoader extends URLClassLoader {
+        public JarFileLoader(URL[] urls) {
+            super(urls);
+        }
+
+        /**
+         * Add jar file path.
+         *
+         * @param path the path to the specified jar file.
+         */
+        public void addFile(String path) throws MalformedURLException {
+            String urlPath = "jar:file://" + path + "!/";
+            addURL(new URL(urlPath));
+        }
+    }
+}
diff --git a/tools/host/src/com/android/cts/HostUtils.java b/tools/host/src/com/android/cts/HostUtils.java
new file mode 100644
index 0000000..e147f2a
--- /dev/null
+++ b/tools/host/src/com/android/cts/HostUtils.java
@@ -0,0 +1,277 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import com.android.ddmlib.RawImage;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferUShort;
+import java.awt.image.Raster;
+import java.awt.image.SampleModel;
+import java.awt.image.SinglePixelPackedSampleModel;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Calendar;
+import java.util.Formatter;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+/**
+ * Utilities for CTS host.
+ *
+ */
+public class HostUtils {
+
+    /**
+     * Check if the given file exists
+     *
+     * @param name the file name to be checked
+     * @return if the file exists, return true;
+     *         else, return false
+     */
+    public static boolean isFileExist(final String name) {
+        return new File(name).exists();
+    }
+
+    /**
+     * Convert a 16bpp RawImage into a BufferedImage.
+     *
+     * @param rawImage the image to convert.
+     * @return the BufferedImage.
+     */
+    public static BufferedImage convertRawImageToBufferedImage(RawImage rawImage) {
+        assert rawImage.bpp == 16;
+
+        BufferedImage im = new BufferedImage(rawImage.width,
+                rawImage.height, BufferedImage.TYPE_USHORT_565_RGB);
+        SampleModel sampleModel = new SinglePixelPackedSampleModel(DataBuffer.TYPE_USHORT,
+                rawImage.width,
+                rawImage.height,
+                // RGB565
+                new int[] { 0xf800, 0x07e0, 0x001f });
+
+        // It would be more efficient to just subclass DataBuffer and provide a
+        // TYPE_USHORT interface to the byte array.  But Raster.createRaster at
+        // some point uses instanceof(DataBufferUShort) to verify that the DataBuffer
+        // is of the right type (instead of just checking DataBuffer.getDataType).
+        // And since DataBufferUShort is final, it can't be subclassed to get around
+        // the check either.  So copy the data into a short[] instead to work around the problem.
+        short shortData[] = new short[rawImage.size / 2];
+        for (int x = 0; x < shortData.length; x++) {
+            int rawImageOffset = x * 2;
+            int a = 0xff & rawImage.data[rawImageOffset];
+            int b = 0xff & rawImage.data[rawImageOffset + 1];
+            shortData[x] = (short)((b << 8) | a);
+        }
+        DataBuffer db = new DataBufferUShort(shortData, shortData.length);
+        Raster raster = Raster.createRaster(sampleModel,
+                db, null);
+        im.setData(raster);
+        return im;
+    }
+
+    /**
+     * Interface used with visitAllFilesUnder
+     */
+    public interface FileVisitor {
+        /**
+         * Gets called on every file visited.
+         * @param f the File for the file being visited.
+         */
+        void visitFile(File f);
+    }
+
+    /**
+     * Recursively visit all files under a given path.
+     *
+     * @param root the path to start at.
+     * @param filter the file filter to match.  null means to visit all files.
+     * @param visitor the visitor to visit with.
+     */
+    public static void visitAllFilesUnder(File root, FilenameFilter filter, FileVisitor visitor) {
+        File[] files = root.listFiles(filter);
+        // A null file may indicate not having enough permissions to view that directory
+        if (files != null) {
+            for (File f : files) {
+                visitor.visitFile(f);
+
+                if (f.isDirectory()) {
+                    visitAllFilesUnder(f, filter, visitor);
+                }
+            }
+        }
+    }
+
+    /**
+     * Recursively visit all files under a given path.
+     *
+     * @param path the path to start at.
+     * @param filter the file filter to match.  null means to visit all files.
+     * @param visitor the visitor to visit with.
+     */
+    public static void visitAllFilesUnder(String path, FilenameFilter filter, FileVisitor visitor) {
+        visitAllFilesUnder(new File(path), filter, visitor);
+    }
+
+    // Private class to help zipUpDirectory
+    private static class ZipFileVisitor implements FileVisitor {
+        private final ZipOutputStream zipOutputStream;
+        private boolean ok = true;
+        private IOException caughtException;
+        private final ZipFilenameTransformer transformer;
+
+        public ZipFileVisitor(ZipOutputStream zipOutputStream,
+                ZipFilenameTransformer transformer) {
+            this.zipOutputStream = zipOutputStream;
+            this.transformer = transformer;
+        }
+
+        public void visitFile(File f) {
+            String path = f.getPath();
+            if (transformer != null) {
+                path = transformer.transform(path);
+            }
+            ZipEntry ze = new ZipEntry(path);
+            try {
+                zipOutputStream.putNextEntry(ze);
+                InputStream is = new BufferedInputStream(new FileInputStream(f));
+                byte[] buffer = new byte[4096];
+                int bytesRead = is.read(buffer);
+                while (bytesRead > 0) {
+                    zipOutputStream.write(buffer, 0, bytesRead);
+                    bytesRead = is.read(buffer);
+                }
+                zipOutputStream.closeEntry();
+            } catch (IOException e) {
+                ok = false;
+                caughtException = e;
+            }
+        }
+
+        /**
+         * Indicates that the visitor ran without errors
+         * @return true if everything ran OK.
+         */
+        boolean isOk() {
+            return ok;
+        }
+
+        /**
+         * If an IOException was thrown while zipping, it gets kept here.
+         *
+         * @return the IOException that was caught, or null if none was.
+         */
+        IOException getCaughtException() {
+            return caughtException;
+        }
+
+    }
+
+    /**
+     * Indicates some issue with zipping up the file.
+     */
+    static class ZipFileException extends Exception {
+        ZipFileException(IOException ioException) {
+            super("Caught wrapped exception", ioException);
+        }
+    }
+
+    /**
+     * Interface provided to rename files before they get zipped.
+     */
+    public interface ZipFilenameTransformer {
+        /**
+         * Transform a local filesystem filename into a zipfile filename.
+         *
+         * @param filename the input filename
+         * @return the filename to be saved to the zipfile as.
+         */
+        String transform(String filename);
+    }
+
+    /**
+     * Recursively zip up a directory into a zip file.
+     *
+     * @param sourceDir the directory to zip up
+     * @param outputFilePath the zipfile to create.
+     * @param transformer filepath transformer.  can be null.
+     * @throws IOException if there were issues writing the zipfile.
+     */
+    public static void zipUpDirectory(String sourceDir,
+            String outputFilePath,
+            ZipFilenameTransformer transformer)
+    throws IOException, ZipFileException {
+        // I <3 abstractions
+        FileOutputStream fileOut = new FileOutputStream(outputFilePath);
+        BufferedOutputStream bufOut = new BufferedOutputStream(fileOut);
+        final ZipOutputStream zipOutputStream = new ZipOutputStream(bufOut);
+
+        ZipFileVisitor zfv = new ZipFileVisitor(zipOutputStream, transformer);
+        visitAllFilesUnder(sourceDir, null, zfv);
+        zipOutputStream.close();
+        if (!zfv.isOk()) {
+            throw new ZipFileException(zfv.getCaughtException());
+        }
+    }
+
+    /**
+     * Get the formatted time string.
+     *
+     * @param milliSec The time in milliseconds.
+     * @param separator The separator between the date information and time information.
+     * @param dateSeparator The date separator separating the date information nibbles.
+     * @param timeSeparator The time separator separating the time information nibbles.
+     * @return The formated time string.
+     */
+    public static String getFormattedTimeString(long milliSec, String separator,
+            String dateSeparator, String timeSeparator) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTimeInMillis(milliSec);
+        int year  = cal.get(Calendar.YEAR);
+        int month = cal.get(Calendar.MONTH) + 1;
+        int date  = cal.get(Calendar.DATE);
+        int hour  = cal.get(Calendar.HOUR_OF_DAY);
+        int min   = cal.get(Calendar.MINUTE);
+        int sec   = cal.get(Calendar.SECOND);
+
+        Formatter fmt = new Formatter();
+        if ((separator == null) || (separator.length() == 0)) {
+            separator = "_";
+        }
+
+        if ((dateSeparator == null) || (dateSeparator.length() == 0)) {
+            dateSeparator = ".";
+        }
+
+        if ((timeSeparator == null) || (timeSeparator.length() == 0)) {
+            timeSeparator = ".";
+        }
+
+        final String formatStr = "%4d" + dateSeparator + "%02d" + dateSeparator + "%02d"
+                         + separator + "%02d" + timeSeparator + "%02d" + timeSeparator + "%02d";
+        fmt.format(formatStr, year, month, date, hour, min, sec);
+
+        return fmt.toString();
+    }
+}
diff --git a/tools/host/src/com/android/cts/IllegalTestNameException.java b/tools/host/src/com/android/cts/IllegalTestNameException.java
new file mode 100644
index 0000000..ac016fd
--- /dev/null
+++ b/tools/host/src/com/android/cts/IllegalTestNameException.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      httprunPackage://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+/**
+ * Exception when user input illegal test name
+ */
+public class IllegalTestNameException extends Exception {
+
+    private static final long serialVersionUID = -6128222419050301306L;
+
+    public IllegalTestNameException() {
+        super();
+    }
+
+    public IllegalTestNameException(String message) {
+        super(message);
+    }
+
+}
diff --git a/tools/host/src/com/android/cts/InvalidDeviceException.java b/tools/host/src/com/android/cts/InvalidDeviceException.java
new file mode 100644
index 0000000..da1803c
--- /dev/null
+++ b/tools/host/src/com/android/cts/InvalidDeviceException.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      httprunPackage://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+/**
+ * Exception reporting that the device is invalid.
+ *
+ */
+public class InvalidDeviceException extends Exception {
+
+    private static final long serialVersionUID = 0L;
+
+    public InvalidDeviceException() {
+        super();
+    }
+
+    public InvalidDeviceException(final String msg) {
+        super(msg);
+    }
+}
diff --git a/tools/host/src/com/android/cts/Log.java b/tools/host/src/com/android/cts/Log.java
new file mode 100644
index 0000000..40b0f3b
--- /dev/null
+++ b/tools/host/src/com/android/cts/Log.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintStream;
+
+/**
+ * Utility class to help the CTS logging
+ */
+public class Log {
+    private static final String INFO_PREFIX = "\nCTS_INFO >>> ";
+    private static final String ERROR_PREFIX = "\nCTS_ERROR >>> ";
+    private static final String DEBUG_PREFIX = "\nCTS_DEBUG >>> ";
+    private static final String LOG_FNAME_PREFIX = "log_";
+    private static final String LOG_FNAME_SURFIX = "_.txt";
+
+    private static PrintStream mOut = System.err;
+
+    private static boolean TRACE = true;
+    private static BufferedWriter mTraceOutput = null;
+
+    private static boolean LOG = true;
+    private static BufferedWriter mLogOutput = null;
+    private static String mLogFileName;
+
+    /**
+     * Add the message to the information stream.
+     *
+     * @param msg the message to be added to the information stream.
+     */
+    public static void i(final String msg) {
+        log(INFO_PREFIX + msg);
+
+        mOut.println(INFO_PREFIX + msg);
+    }
+
+    /**
+     * Add the message to the error message stream.
+     * @param msg The message to be added to the error message stream.
+     * @param e The exception.
+     */
+    public static void e(final String msg, Exception e) {
+        log(ERROR_PREFIX + msg);
+
+        if (!HostConfig.DEBUG) {
+            CUIOutputStream.println(ERROR_PREFIX + msg);
+            if (e != null) {
+                CUIOutputStream.println(e.getMessage());
+            }
+            return;
+        }
+
+        mOut.println(ERROR_PREFIX + msg);
+        if (e != null) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Add the message to the debugging stream.
+     *
+     * @param msg The message to be added to the debugging stream.
+     */
+    public static void d(final String msg) {
+        log(DEBUG_PREFIX + msg);
+
+        if (HostConfig.DEBUG) {
+            mOut.println(DEBUG_PREFIX + msg);
+        }
+    }
+
+    /**
+     * Set the output stream.
+     *
+     * @param out The output stream.
+     */
+    public static void setOutput(PrintStream out) {
+        if (out != null) {
+            mOut = out;
+        }
+    }
+
+    /**
+     * Reset the output stream.
+     */
+    public static void resetOutput() {
+        mOut = System.out;
+    }
+
+    /**
+     * Initialize the log stream.
+     *
+     * @param path The path to add the log file.
+     */
+    public static void initLog(String path) {
+        mLogFileName = path + File.separator + LOG_FNAME_PREFIX
+            + HostUtils.getFormattedTimeString(System.currentTimeMillis(), "_", ".", ".")
+            + LOG_FNAME_SURFIX;
+        try {
+            if (mLogOutput == null) {
+                mLogOutput = new BufferedWriter(new FileWriter(mLogFileName));
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Close the log stream.
+     */
+    public static void closeLog() {
+        if (mLogOutput != null) {
+            try {
+                mLogOutput.close();
+                mLogOutput = null;
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * Log the message.
+     *
+     * @param msg The message to be logged.
+     */
+    public static void log(String msg) {
+        if (LOG && (mLogOutput != null)) {
+            try {
+                if (msg != null) {
+                    mLogOutput.write(msg + "\n");
+                    mLogOutput.flush();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * Add the message to the trace stream.
+     *
+     * @param msg The message to be added to the trace stream.
+     */
+    public static void t(String msg) {
+        if (TRACE) {
+            try {
+                if (mTraceOutput == null) {
+                    mTraceOutput = new BufferedWriter(new FileWriter("debug.txt"));
+                }
+                if (msg != null) {
+                    mTraceOutput.write(msg + "\n");
+                    mTraceOutput.flush();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * Close the trace stream.
+     */
+    public static void closeTrace() {
+        if (mTraceOutput != null) {
+            try {
+                mTraceOutput.close();
+                mTraceOutput = null;
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+}
diff --git a/tools/host/src/com/android/cts/ProgressObserver.java b/tools/host/src/com/android/cts/ProgressObserver.java
new file mode 100644
index 0000000..d7110fe
--- /dev/null
+++ b/tools/host/src/com/android/cts/ProgressObserver.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+/**
+ * Observes test progressing status.
+ *
+ */
+public class ProgressObserver {
+    private Timer mNotifyTimer;
+
+    /**
+     * Start a process displayer.
+     */
+    public void start() {
+        mNotifyTimer = new Timer();
+        mNotifyTimer.schedule(new ProgressPrinter(),
+                ProgressPrinter.DELAY, ProgressPrinter.TIMEOUT);
+    }
+
+    /**
+     * Stop a process displayer.
+     */
+    public void stop() {
+        if (mNotifyTimer != null) {
+            mNotifyTimer.cancel();
+        }
+        mNotifyTimer = null;
+    }
+
+    /**
+     * Display running notification when a test/package is executing, </br>
+     * especially for the ones running for a very long time.
+     */
+    class ProgressPrinter extends TimerTask {
+        public final static int DELAY = 2000;
+        public final static int TIMEOUT = 2000;
+
+        /** {@inheritDoc} */
+        @Override
+        public void run() {
+            CUIOutputStream.print(".");
+        }
+    }
+}
diff --git a/tools/host/src/com/android/cts/ReferenceAppTestPackage.java b/tools/host/src/com/android/cts/ReferenceAppTestPackage.java
new file mode 100644
index 0000000..ad6645e
--- /dev/null
+++ b/tools/host/src/com/android/cts/ReferenceAppTestPackage.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import com.android.ddmlib.MultiLineReceiver;
+
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+
+public class ReferenceAppTestPackage extends TestPackage {
+
+    private static final String ACTION_REFERENCE_APP_TEST = "ReferenceAppTest";
+    private final String apkToTestName;
+    private final String packageUnderTest;
+    private ArrayList<String> testOutputLines = new ArrayList<String>();
+
+    /**
+     * Construct a ReferenceAppTest package with given necessary information.
+     *
+     * @param instrumentationRunner The instrumentation runner.
+     * @param testPkgBinaryName The binary name of the TestPackage.
+     * @param targetNameSpace The package name space of the dependent package, if available.
+     * @param targetBinaryName The binary name of the dependent package, if available.
+     * @param version The version of the CTS Host allowed.
+     * @param androidVersion The version of the Android platform allowed.
+     * @param jarPath The host controller's jar path and file.
+     * @param appNameSpace The package name space used to uninstall the TestPackage.
+     * @param appPackageName The Java package name of the test package.
+     * @param apkToTestName the apk pacakge that contains the ReferenceApp to be tested.
+     * @param packageUnderTest the Java package name of the ReferenceApp to be tested.
+     * @throws NoSuchAlgorithmException
+     */
+    public ReferenceAppTestPackage(String instrumentationRunner, String testPkgBinaryName, String targetNameSpace,
+            String targetBinaryName, String version, String androidVersion, String jarPath,
+            String appNameSpace, String appPackageName, String apkToTestName, String packageUnderTest) throws NoSuchAlgorithmException {
+        super(instrumentationRunner, testPkgBinaryName, targetNameSpace, targetBinaryName, version,
+                androidVersion, jarPath, appNameSpace, appPackageName);
+        this.apkToTestName = apkToTestName;
+        this.packageUnderTest = packageUnderTest;
+    }
+
+    /**
+     * Run the package over the device.
+     *
+     * @param device The device to run the package.
+     * @param javaPkgName The java package name.
+     * @throws DeviceDisconnectedException if the device disconnects during the test
+     */
+    @Override
+    public void run(final TestDevice device, final String javaPkgName) throws DeviceDisconnectedException {
+        Test test = getTests().iterator().next();
+        if ((test != null)
+                && (test.getResultCode() == TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED)) {
+
+            String appToTestApkPath =
+                HostConfig.getInstance().getCaseRepository().getApkPath(apkToTestName);
+
+            // TODO: This is non-obvious and should be cleaned up
+            device.setRuntimeListener(device);
+
+            // Install the Reference App
+            device.installAPK(appToTestApkPath);
+            device.waitForCommandFinish();
+
+            // Install the Reference App Tests
+            String testApkPath = HostConfig.getInstance().getCaseRepository().getApkPath(getAppBinaryName());
+            device.installAPK(testApkPath);
+            device.waitForCommandFinish();
+
+            runTests(device);
+
+            // Uninstall the Reference App Tests
+            device.uninstallAPK(getAppPackageName());
+            device.waitForCommandFinish();
+
+            // Uninstall the Reference App
+            device.uninstallAPK(packageUnderTest);
+            device.waitForCommandFinish();
+
+            verifyTestResults(test);
+        }
+    }
+
+    private void verifyTestResults(Test test) {
+        // Now go through the results of the test and see if it ran OK
+        boolean testRanOk = false;
+        String numberOfTestsRan = "unknown";
+        for (String line : testOutputLines) {
+            if (line.startsWith("OK")) {
+                testRanOk = true;
+                int startIndex = 4; // OK (5 tests)
+                int endIndex = line.indexOf(' ', 4);
+                numberOfTestsRan = line.substring(4, endIndex);
+                break;
+            }
+        }
+        if (!testRanOk) {
+            test.setResult(TestSessionLog.CTS_RESULT_CODE_FAIL, null, null);
+        } else {
+            test.setResult(TestSessionLog.CTS_RESULT_CODE_PASS, numberOfTestsRan + " tests passed", null);
+        }
+    }
+
+    private void runTests(TestDevice device) throws DeviceDisconnectedException {
+        Log.i("Running reference tests for " + apkToTestName);
+
+        final String commandStr = "am instrument -w -e package "+ getAppPackageName() + " "
+        + getAppPackageName() + "/" + getInstrumentationRunner();
+        Log.d(commandStr);
+
+        device.startActionTimer(ACTION_REFERENCE_APP_TEST);
+        device.executeShellCommand(commandStr, new ReferenceAppResultsObserver(device));
+        device.waitForCommandFinish();
+    }
+
+    /**
+     * Reference app result observer.
+     */
+    class ReferenceAppResultsObserver extends MultiLineReceiver {
+
+        private final TestDevice device;
+
+        public ReferenceAppResultsObserver(TestDevice td) {
+            this.device = td;
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        public void processNewLines(String[] lines) {
+            for (String line : lines) {
+                testOutputLines.add(line);
+            }
+        }
+
+        /** {@inheritDoc} */
+        public boolean isCancelled() {
+            return false;
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        public void done() {
+            device.stopActionTimer();
+            device.notifyExternalTestComplete();
+        }
+    }
+}
diff --git a/tools/host/src/com/android/cts/Selector.java b/tools/host/src/com/android/cts/Selector.java
new file mode 100644
index 0000000..aa5fdc1
--- /dev/null
+++ b/tools/host/src/com/android/cts/Selector.java
@@ -0,0 +1,346 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+
+/**
+ * Interact with user to select from optional items.
+ *
+ */
+abstract public class Selector {
+    public static final String PACKAGE_SELECTOR = "packageSelector";
+    public static final String SUITE_SELECTOR   = "suiteSelector";
+    public static final String CASE_SELECTOR    = "caseSelector";
+    public static final String TEST_SELECTOR    = "testSelector";
+
+    public static final String PACKAGE_HDR  = "[Choose package] ";
+    public static final String PACKAGE_TAIL =
+        ": select[Y], reject[n], or choose suite in it[m]?  [Y/n/m] ";
+
+    public static final String SUITE_HDR    = "[Choose suite]   ";
+    public static final String SUITE_TAIL   =
+        ": select[Y], reject[n], or choose case in it[m]?  [Y/n/m] ";
+
+    public static final String CASE_HDR  = "[Choose case]    ";
+    public static final String CASE_TAIL =
+        ": select[Y], reject[n], or choose method in it[m]?  [Y/n/m] ";
+
+    public static final String TEST_HDR     = "[Choose test]    ";
+    public static final String TEST_TAIL    = "?: [Y/n] ";
+
+    /**
+     * Define user's possible selections.
+     *
+     */
+    public enum Selection {
+        ACCEPT, REJECT, MORE
+    }
+
+    public Collection<String> mRecords;
+
+    public String mHdr;
+    public String mTail;
+    public String mType;
+
+    public BufferedReader mBufferedReader;
+
+    public Selector(String type, Collection<String> records) {
+        mRecords = records;
+        mBufferedReader = null;
+        mType = type;
+
+        if (type.equals(PACKAGE_SELECTOR)) {
+            mHdr  = PACKAGE_HDR;
+            mTail = PACKAGE_TAIL;
+        } else if (type.equals(SUITE_SELECTOR)) {
+            mHdr  = SUITE_HDR;
+            mTail = SUITE_TAIL;
+        } else if (type.equals(CASE_SELECTOR)) {
+            mHdr  = CASE_HDR;
+            mTail = CASE_TAIL;
+        } else if (type.equals(TEST_SELECTOR)) {
+            mHdr  = TEST_HDR;
+            mTail = TEST_TAIL;
+        }
+    }
+
+    /**
+     * Set the input stream of BufferedReader type.
+     *
+     * @param in The input stream.
+     */
+    public void setInputStream(BufferedReader in) {
+        mBufferedReader = in;
+    }
+
+    /**
+     * Read a specific line from the input stream.
+     *
+     * @param prompt The prompt displayed on the console to notify the user.
+     * @return The string the user typed in over the console.
+     */
+    public String readLine(String prompt) throws IOException {
+        String str = null;
+        if (mBufferedReader != null) {
+            CUIOutputStream.print(prompt);
+            str = mBufferedReader.readLine().trim();
+        }
+
+        return str;
+    }
+
+    /**
+     * Interact with the user to decide what are included and what
+     * others are not.
+     *
+     * @param name The specific name.
+     * @return The selection by the user.
+     */
+    public Selection doAccept(final String name) throws IOException {
+        Selection selection = Selection.REJECT;
+
+        if (mType.equals(TEST_SELECTOR)) {
+            String prompt = mHdr + "Include " + name + mTail;
+            String answer = readLine(prompt);
+            while (!answer.matches("[yn]?")) {
+                CUIOutputStream.println(
+                           "Invalid input. Please chose 'y' or 'n' (default is 'y')");
+                answer = readLine(prompt);
+            }
+
+            if (ConsoleUi.isConfirmation(answer, true)) {
+                selection = Selection.ACCEPT;
+            }
+        } else {
+            String prompt = mHdr + name + mTail;
+            String answer = readLine(prompt);
+            while (!answer.matches("[ynm]?")) {
+                CUIOutputStream.println(
+                           "Invalid input. Please chose 'y', 'n', or 'm' (default is 'y')");
+                answer = readLine(prompt);
+            }
+
+            if (ConsoleUi.isConfirmation(answer, true)) {
+                selection = Selection.ACCEPT;
+            } else if (0 == "m".compareToIgnoreCase(answer)) {
+                selection = Selection.MORE;
+            }
+        }
+
+        return selection;
+    }
+
+    /**
+     * Check if the specified name has been selected against the selected list.
+     *
+     * @param selectedList The selected list.
+     * @param name The specified name to be checked.
+     * @return If selected, return true; else, return false.
+     */
+    public boolean isSelected(ArrayList<String> selectedList, String name) {
+        for (String str : selectedList) {
+            if (name.startsWith(str)) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
+
+/**
+ * Building the specific plan by following user's selection.
+ */
+class PlanBuilder extends Selector{
+    private SuiteSelector mSuiteSelector;
+
+    public PlanBuilder(Collection<String> records) {
+        super(PACKAGE_SELECTOR, records);
+    }
+
+    /**
+     * Interact with user to select over packages.
+     *
+     * @return The selected result with excluded lists.
+     */
+    public HashMap<String, ArrayList<String>> doSelect() throws IOException {
+        HashMap<String, ArrayList<String>> packages = new HashMap<String, ArrayList<String>>();
+        for (String javaPkgName : mRecords) {
+            Selection select = doAccept(javaPkgName);
+            TestPackage testPackage =
+                HostConfig.getInstance().getTestPackage(javaPkgName);
+            if (select == Selection.ACCEPT) {
+                packages.put(javaPkgName, null);
+            } else if (select == Selection.MORE) {
+                Collection<String> suiteNames = testPackage.getAllTestSuiteNames();
+                mSuiteSelector = new SuiteSelector(suiteNames, testPackage);
+
+                if (mBufferedReader != null) {
+                    mSuiteSelector.setInputStream(mBufferedReader);
+                }
+
+                ArrayList<String> excludedSuites = new ArrayList<String>();
+                ArrayList<String> excludedCases = new ArrayList<String>();
+                mSuiteSelector.doSelect(excludedSuites, excludedCases);
+                if (suiteNames.size() == excludedSuites.size()) {
+                    Log.i("package=" + javaPkgName + " has been removed all.");
+                } else {
+                    excludedSuites.addAll(excludedCases);
+                    packages.put(javaPkgName, excludedSuites);
+                }
+            }
+        }
+
+        if (packages.size() == 0) {
+            return null;
+        } else {
+            return packages;
+        }
+    }
+
+    /**
+     * Suite selector.
+     *
+     */
+    class SuiteSelector extends Selector{
+        private TestCaseSelector mCaseSelector;
+        private TestPackage mTestPackage;
+
+        public SuiteSelector(Collection<String> suites, TestPackage testPackage) {
+            super(SUITE_SELECTOR, suites);
+            mTestPackage = testPackage;
+        }
+
+        /**
+         * Interact with user to select over suites.
+         *
+         * @param excludedTestSuites The fully excluded test suite list.
+         * @param excludedTestCases The excluded test case list.
+         */
+        public void doSelect(ArrayList<String> excludedTestSuites,
+                ArrayList<String> excludedTestCases) throws IOException {
+            ArrayList<String> selectedList = new ArrayList<String>();
+            for (String suiteName : mRecords) {
+                if (!isSelected(selectedList, suiteName)) {
+                    Selection select = doAccept(suiteName);
+                    if (select == Selection.REJECT) {
+                        excludedTestSuites.add(suiteName);
+                    } else if (select == Selection.MORE) {
+                        Collection<String> testCaseNames =
+                            mTestPackage.getAllTestCaseNames(suiteName);
+                        mCaseSelector = new TestCaseSelector(testCaseNames, mTestPackage);
+
+                        if (mBufferedReader != null) {
+                            mCaseSelector.setInputStream(mBufferedReader);
+                        }
+
+                        ArrayList<String> notIncludedTestCases = new ArrayList<String>();
+                        ArrayList<String> notIncludedTests = new ArrayList<String>();
+                        mCaseSelector.doSelect(notIncludedTestCases, notIncludedTests);
+                        if (testCaseNames.size() == notIncludedTestCases.size()) {
+                            Log.i("suite=" + suiteName + " has been removed all");
+                            excludedTestSuites.add(suiteName);
+                        } else {
+                            excludedTestCases.addAll(notIncludedTestCases);
+                            excludedTestCases.addAll(notIncludedTests);
+                        }
+                    }
+                    selectedList.add(suiteName);
+                }
+            }
+        }
+    }
+
+    /**
+     * TestCase selector.
+     */
+    class TestCaseSelector extends Selector{
+        private TestSelector mTestSelector;
+        private TestPackage mTestPackage;
+
+        public TestCaseSelector(Collection<String> testCases, TestPackage testPackage) {
+            super(CASE_SELECTOR, testCases);
+            mTestPackage = testPackage;
+        }
+
+        /**
+         * Interact with user to select over test cases.
+         *
+         * @param excludedTestCases The fully excluded test case list.
+         * @param excludedTests The excluded test list.
+         */
+        public void doSelect(ArrayList<String> excludedTestCases,
+                ArrayList<String> excludedTests) throws IOException {
+            ArrayList<String> selectedList = new ArrayList<String>();
+            for (String testCaseName : mRecords) {
+                if (!isSelected(selectedList, testCaseName)) {
+                    Selection select = doAccept(testCaseName);
+                    if (select == Selection.REJECT) {
+                        excludedTestCases.add(testCaseName);
+                    } else if (select == Selection.MORE) {
+                        Collection<String> testNames = mTestPackage.getAllTestNames(testCaseName);
+                        mTestSelector = new TestSelector(testNames);
+
+                        if (mBufferedReader != null) {
+                            mTestSelector.setInputStream(mBufferedReader);
+                        }
+
+                        ArrayList<String> notIncludedTests = mTestSelector.doSelect();
+                        if (notIncludedTests.size() == testNames.size()) {
+                            Log.i("testCase=" + testCaseName + " has been removed all");
+                            excludedTestCases.add(testCaseName);
+                        } else {
+                            excludedTests.addAll(notIncludedTests);
+                        }
+                    }
+                    selectedList.add(testCaseName);
+                }
+            }
+        }
+    }
+
+    /**
+     * Test selector.
+     *
+     */
+    class TestSelector extends Selector{
+        public TestSelector(Collection<String> records) {
+            super(TEST_SELECTOR, records);
+        }
+
+        /**
+         * Interact with user to select over tests.
+         *
+         * @return The selected result with excluded lists.
+         */
+        public ArrayList<String> doSelect() throws IOException {
+            ArrayList<String> records = new ArrayList<String>();
+            for (String test : mRecords) {
+                Selection select = doAccept(test);
+                if (select == Selection.REJECT) {
+                    records.add(test);
+                }
+            }
+
+            return records;
+        }
+    }
+}
diff --git a/tools/host/src/com/android/cts/SessionObserver.java b/tools/host/src/com/android/cts/SessionObserver.java
new file mode 100644
index 0000000..788483f
--- /dev/null
+++ b/tools/host/src/com/android/cts/SessionObserver.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+public interface SessionObserver {
+    public void notifyFinished(TestSession ts);
+}
diff --git a/tools/host/src/com/android/cts/SignatureCheckPackage.java b/tools/host/src/com/android/cts/SignatureCheckPackage.java
new file mode 100644
index 0000000..c420a33
--- /dev/null
+++ b/tools/host/src/com/android/cts/SignatureCheckPackage.java
@@ -0,0 +1,248 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import com.android.cts.TestDevice.ObjectSync;
+import com.android.ddmlib.MultiLineReceiver;
+
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.regex.Matcher;
+
+/**
+ * Class which holds signature check package content.
+ */
+public class SignatureCheckPackage extends TestPackage {
+
+    private static final String CHECK_API_APP_PACKAGE_NAME = "android.tests.sigtest";
+    private static final String MISMATCH_CLASS_SIGNATURE = "mismatch_class_signature";
+    private static final String MISSING_INTERFACE = "missing_interface";
+    private static final String MISSING_FIELD = "missing_field";
+    private static final String MISMATCH_INTERFACE_SIGNATURE = "mismatch_interface_signature";
+    private static final String MISMATCH_FIELD_SIGNATURE = "mismatch_field_signature";
+    private static final String MISSING_METHOD = "missing_method";
+    private static final String MISMATCH_METHOD_SIGNATURE = "mismatch_method_signature";
+    private static final String MISSING_CLASS = "missing_class";
+    private static final String CAUGHT_EXCEPTION = "caught_exception";
+    private static final String ACTION_CHECKAPI = "checkapi";
+
+    private ObjectSync mObjectSync;
+    private ArrayList<String> mAPICheckResult;
+
+    /**
+     * Construct a Signature check package with given necessary information.
+     *
+     * @param instrumentationRunner The instrumentation runner.
+     * @param testPkgBinaryName The binary name of the TestPackage.
+     * @param targetNameSpace The package name space of the dependent package, if available.
+     * @param targetBinaryName The binary name of the dependent package, if available.
+     * @param version The version of the CTS Host allowed.
+     * @param androidVersion The version of the Android platform allowed.
+     * @param jarPath The host controller's jar path and file.
+     * @param appNameSpace The package name space used to uninstall the TestPackage.
+     * @param appPackageName The Java package name of the test package.
+     */
+    public SignatureCheckPackage(final String instrumentationRunner,
+            final String testPkgBinaryName, final String targetNameSpace,
+            final String targetBinaryName, final String version,
+            final String androidVersion, final String jarPath, final String appNameSpace,
+            final String appPackageName) throws NoSuchAlgorithmException {
+        super(instrumentationRunner, testPkgBinaryName, targetNameSpace, targetBinaryName, version,
+                androidVersion, jarPath, appNameSpace, appPackageName);
+    }
+
+    /**
+     * Run the package over the device.
+     *
+     * @param device The device to run the package.
+     * @param javaPkgName The java package name.
+     */
+    @Override
+    public void run(final TestDevice device, final String javaPkgName)
+                throws DeviceDisconnectedException {
+        Test test = getTests().iterator().next();
+        if ((test != null)
+                && (test.getResultCode() == TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED)) {
+
+            ArrayList<String> result = startSignatureTest(device);
+            if (result != null) {
+                StringBuffer formattedResult = new StringBuffer();
+                int resultCode = processSignatureResult(result, formattedResult);
+                if (resultCode == TestSessionLog.CTS_RESULT_CODE_PASS) {
+                    test.setResult(resultCode, null, null);
+                } else {
+                    test.setResult(resultCode, formattedResult.toString(), null);
+                }
+            }
+        }
+    }
+
+
+    /**
+     * Start signature test.
+     *
+     * @param device the device under test.
+     * @return test result
+     */
+    public ArrayList<String> startSignatureTest(TestDevice device)
+                throws DeviceDisconnectedException {
+        Log.d("installing APICheck apk");
+        mObjectSync = device.new ObjectSync();
+        mAPICheckResult = new ArrayList<String>();
+        // TODO: This is non-obvious and should be cleaned up
+        device.setRuntimeListener(device);
+
+        String apkPath =
+            HostConfig.getInstance().getCaseRepository().getApkPath(getAppBinaryName());
+        if (!HostUtils.isFileExist(apkPath)) {
+            Log.e("File doesn't exist: " + apkPath, null);
+            return null;
+        }
+
+        device.installAPK(apkPath);
+        device.waitForCommandFinish();
+
+        runSignatureTestCommand(device);
+        device.waitForCommandFinish();
+
+        device.uninstallAPK(CHECK_API_APP_PACKAGE_NAME);
+        device.waitForCommandFinish();
+
+        device.removeRuntimeListener();
+
+        return mAPICheckResult;
+    }
+
+    /**
+     * Run signature test command.
+     *
+     * @param device the device to run against.
+     */
+    private void runSignatureTestCommand(TestDevice device)
+                throws DeviceDisconnectedException {
+        Log.i("Checking API... ");
+        Log.i("This might take several minutes, please be patient...");
+
+        final String commandStr = "am instrument -w -e bundle true "
+            + getAppPackageName() + "/" + getInstrumentationRunner();
+        Log.d(commandStr);
+
+        device.startActionTimer(ACTION_CHECKAPI);
+        device.executeShellCommand(commandStr, new SignatureTestResultObserver(device));
+    }
+
+    /**
+     * Signature result observer.
+     */
+    class SignatureTestResultObserver extends MultiLineReceiver {
+
+        private final TestDevice device;
+
+        public SignatureTestResultObserver(TestDevice td) {
+            this.device = td;
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        public void processNewLines(String[] lines) {
+            for (int i = 0; i < lines.length; i++) {
+                mAPICheckResult.add(lines[i]);
+            }
+        }
+
+        /** {@inheritDoc} */
+        public boolean isCancelled() {
+            return false;
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        public void done() {
+            device.stopActionTimer();
+            device.notifyExternalTestComplete();
+        }
+    }
+
+    /**
+     * Process signature result.
+     *
+     * @param apiCheckResult The result of API checking.
+     * @param formattedResult The formated result of API checking.
+     * @return  PASS or FAIL according to the check result.
+     */
+    public int processSignatureResult(ArrayList<String> apiCheckResult,
+                StringBuffer formattedResult) {
+
+        HashMap<String, String> resMap = new HashMap<String, String>();
+        for (String res : apiCheckResult) {
+            Matcher matcher = TestDevice.INSTRUMENT_RESULT_PATTERN.matcher(res);
+            if (matcher.matches()) {
+                resMap.put(matcher.group(1), matcher.group(2));
+            }
+        }
+
+        String result = resMap.get("result");
+        if ((result != null) && (result.equals("true"))) {
+            CUIOutputStream.println("API Check PASS.");
+            return TestSessionLog.CTS_RESULT_CODE_PASS;
+        } else {
+            CUIOutputStream.println("API Check FAIL!");
+            if (result != null) {
+                for (String key : resMap.keySet()) {
+                    if (key.equals("result")) {
+                        // ignore the result string
+                        continue;
+                    }
+
+                    String resStr = resMap.get(key);
+                    String leadingSpace = "      ";
+                    if ((resStr != null) && (resStr.length() > 2)) {
+                        formattedResult.append(key +":\n");
+                        if (MISMATCH_CLASS_SIGNATURE.equals(key)
+                                || MISMATCH_INTERFACE_SIGNATURE.equals(key)
+                                || MISMATCH_FIELD_SIGNATURE.equals(key)
+                                || MISSING_FIELD.equals(key)
+                                || MISSING_METHOD.equals(key)
+                                || MISMATCH_METHOD_SIGNATURE.equals(key)) {
+                            resStr = resStr.substring(1, resStr.length() - 1);
+                            String[] details = resStr.split("\\), ");
+                            for (String detail : details) {
+                                formattedResult.append(leadingSpace + detail + ")\n");
+                            }
+                            formattedResult.append("\n");
+                        } else if (MISSING_INTERFACE.equals(key)
+                                || MISSING_CLASS.equals(key)) {
+                            resStr = resStr.substring(1, resStr.length() - 1);
+                            String[] details = resStr.split(", ");
+                            for (String detail : details) {
+                                formattedResult.append(leadingSpace + detail + "\n");
+                            }
+                            formattedResult.append("\n");
+                        } else if (CAUGHT_EXCEPTION.equals(key)) {
+                            resStr = resStr.substring(1, resStr.length() - 1);
+                            formattedResult.append(resStr);
+                            formattedResult.append("\n");
+                        }
+                    }
+                }
+            }
+            return TestSessionLog.CTS_RESULT_CODE_FAIL;
+        }
+    }
+}
+
diff --git a/tools/host/src/com/android/cts/Test.java b/tools/host/src/com/android/cts/Test.java
new file mode 100644
index 0000000..fb35fe2
--- /dev/null
+++ b/tools/host/src/com/android/cts/Test.java
@@ -0,0 +1,531 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.util.ArrayList;
+import java.util.TimerTask;
+
+import com.android.cts.TestSession.ResultObserver;
+
+/**
+ * Correspond to junit's test method, provide functions on storing
+ * and executing a test from CTS test harness.
+ */
+public class Test implements DeviceObserver {
+    public static final String METHOD_SEPARATOR = "#";
+
+    private TestController mTestController;
+    private TestCase mParentCase;
+    private String mName;
+    private String mType;
+    private String mKnownFailure;
+    private int mResCode;
+    private String mFailedMessage;
+    private long mStartTime;
+    private long mEndTime;
+    private String mStackTrace;
+
+    protected boolean mTestStop;
+    protected TestDevice mDevice;
+    protected HostTimer mTimeOutTimer;
+    protected ProgressObserver mProgressObserver;
+    protected Result mResult;
+
+    public Test(final TestCase parentCase, final String name,
+            final String type, final String knownFailure, final int resCode) {
+        mParentCase = parentCase;
+        mName = name;
+        mType = type;
+        mKnownFailure = knownFailure;
+        mResCode = resCode;
+
+        mTestController = null;
+
+        mProgressObserver = null;
+        mTestStop = false;
+        mResult = null;
+    }
+
+    /**
+     * Check if it's known failure test.
+     *
+     * @return If known failure test, return true; else, return false.
+     */
+    public boolean isKnownFailure() {
+        return (mKnownFailure != null);
+    }
+
+    /**
+     * Get the known failure description.
+     *
+     * @return The known failure description.
+     */
+    public String getKnownFailure() {
+        return mKnownFailure;
+    }
+
+    /**
+     * Set the test controller.
+     *
+     * @param testController The test controller.
+     */
+    public void setTestController(final TestController testController) {
+        mTestController = testController;
+    }
+
+    /**
+     * Get the test controller.
+     *
+     * @return The test controller.
+     */
+    public TestController getTestController() {
+        return mTestController;
+    }
+
+    /**
+     * Get the instrumentation runner.
+     *
+     * @return The instrumentation runner.
+     */
+    public String getInstrumentationRunner() {
+        TestPackage pkg = mParentCase.getParent().getParent();
+        return pkg.getInstrumentationRunner();
+    }
+
+    /**
+     * Get result code of the test.
+     *
+     * @return The result code of the test.
+     *         The following is the possible result codes:
+     * <ul>
+     *    <li> notExecuted
+     *    <li> pass
+     *    <li> fail
+     *    <li> error
+     *    <li> timeout
+     * </ul>
+     */
+    public int getResultCode() {
+        return mResCode;
+    }
+
+    /**
+     * Get the result string of this test.
+     *
+     * @return The result string of this test.
+     */
+    public String getResultStr() {
+        return TestSessionLog.getResultString(mResCode);
+    }
+
+    /**
+     * Get the test name of this test.
+     *
+     * @return The test name of this test.
+     */
+    public String getName() {
+        return mName;
+    }
+
+    /**
+     * Get the test type of this test.
+     *
+     * @return The test type of this test.
+     */
+    public String getType() {
+        return mType;
+    }
+
+    /**
+     * Get the parent TestCase containing the test.
+     *
+     * @return The parent TestCase.
+     */
+    public TestCase getTestCase() {
+        return mParentCase;
+    }
+
+    /**
+     * Get the parent TestSuite containing the test.
+     *
+     * @return The parent TestSuite.
+     */
+    public TestSuite getTestSuite() {
+        return mParentCase.getParent();
+    }
+
+    /**
+     * Get the parent TestPackage containing the test.
+     *
+     * @return The parent TestPackage.
+     */
+    public TestPackage getTestPackage() {
+        return mParentCase.getParent().getParent();
+    }
+
+    /**
+     * Get the app package name space of this test.
+     *
+     * @return The app package name space of this test.
+     */
+    public String getAppNameSpace() {
+        TestPackage pkg = mParentCase.getParent().getParent();
+        return pkg.getAppNameSpace();
+    }
+
+    /**
+     * Get the full name of this test.
+     *
+     * @return The full name of this test.
+     */
+    public String getFullName() {
+        TestSuite suite = mParentCase.getParent();
+        return suite.getFullName() + "." + mParentCase.getName()
+                + METHOD_SEPARATOR + mName;
+    }
+
+    /**
+     * Set test result.
+     *
+     * @param resCode test result code.
+     * @param failedMessage The failed message string.
+     * @param stackTrace stack trace content.
+     */
+    public void setResult(final int resCode,
+            final String failedMessage, final String stackTrace) {
+
+        mResCode = resCode;
+        if (isKnownFailure()) {
+            if (mResCode == TestSessionLog.CTS_RESULT_CODE_PASS) {
+                mResCode = TestSessionLog.CTS_RESULT_CODE_FAIL;
+            } else if (mResCode == TestSessionLog.CTS_RESULT_CODE_FAIL){
+                mResCode = TestSessionLog.CTS_RESULT_CODE_PASS;
+            }
+        }
+
+        CUIOutputStream.println("(" + TestSessionLog.getResultString(mResCode) + ")");
+        mFailedMessage = failedMessage;
+        mStackTrace = stackTrace;
+        if (mResCode != TestSessionLog.CTS_RESULT_CODE_PASS) {
+            if (failedMessage != null) {
+                CUIOutputStream.println(mFailedMessage);
+            }
+            if (stackTrace != null) {
+                CUIOutputStream.println(mStackTrace);
+            }
+        }
+        setEndTime(System.currentTimeMillis());
+
+        ResultObserver.getInstance().notifyUpdate();
+    }
+
+    /**
+     * Get failed message when output test result to XML file. And Record failed
+     * information
+     *
+     * @return failed message
+     */
+    public String getFailedMessage() {
+        return mFailedMessage;
+    }
+
+    /**
+     * Set start Test time.
+     *
+     * @param time The start time.
+     */
+    public void setStartTime(final long time) {
+        mStartTime = time;
+    }
+
+    /**
+     * Set end Test time.
+     *
+     * @param time The end time.
+     */
+    public void setEndTime(final long time) {
+        mEndTime = time;
+    }
+
+    /**
+     * Get Test start time.
+     *
+     * @return The start time.
+     */
+    public long getStartTime() {
+        return mStartTime;
+    }
+
+    /**
+     * Get Test end time.
+     *
+     * @return The end time.
+     */
+    public long getEndTime() {
+        return mEndTime;
+    }
+
+    /**
+     * Get stack trace.
+     *
+     * @return   stack trace.
+     */
+    public String getStackTrace() {
+        return mStackTrace;
+    }
+
+    /**
+     * Print the message without appending the new line mark.
+     *
+     * @param msg the message to be print.
+     */
+    protected void print(final String msg) {
+        if (!mTestStop) {
+            CUIOutputStream.print(msg);
+        }
+    }
+
+    /**
+     * The timer task which aids in guarding the running test
+     * with the guarding timer. If the executing of the test
+     * is not finished, and the guarding timer is expired,
+     * this task will be executed to force the finish of the
+     * running test.
+     */
+    class TimeOutTask extends TimerTask {
+        protected final static int DELAY = 60000;
+
+        private Test mTest;
+
+        public TimeOutTask(final Test testResult) {
+            mTest = testResult;
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        public void run() {
+            mProgressObserver.stop();
+            synchronized (mTimeOutTimer) {
+                mTimeOutTimer.cancel(true);
+                mTimeOutTimer.sendNotify();
+            }
+
+            Log.d("mTimeOutTimer timed out");
+
+            if (!mTestStop) {
+                mTest.setResult(TestSessionLog.CTS_RESULT_CODE_TIMEOUT, null, null);
+            }
+
+            killDeviceProcess(mTest.getAppNameSpace());
+        }
+    }
+
+    /**
+     * Kill the device process.
+     *
+     * @param packageName The package name.
+     */
+    private void killDeviceProcess(final String packageName) {
+        mDevice.killProcess(packageName);
+    }
+
+    /**
+     * Set test stopped.
+     *
+     * @param testStopped If true, it's stopped. Else, still running.
+     */
+    public void setTestStopped(final boolean testStopped) {
+        mTestStop = testStopped;
+    }
+
+    /**
+     * Run the test over device given.
+     *
+     * @param device the device to run the test.
+     */
+    public void run(final TestDevice device) throws DeviceDisconnectedException {
+        if ((getName() == null) || (getName().length() == 0)) {
+            return;
+        }
+
+        mTestStop = false;
+        mDevice = device;
+        mTimeOutTimer = new HostTimer(new TimeOutTask(this), TimeOutTask.DELAY);
+        mTimeOutTimer.start();
+        mProgressObserver = new ProgressObserver();
+        mProgressObserver.start();
+
+        setStartTime(System.currentTimeMillis());
+        String testFullName = getFullName();
+        print(testFullName + "...");
+
+        runImpl();
+
+        synchronized (mTimeOutTimer) {
+            if (!mTestStop) {
+                try {
+                    mTimeOutTimer.waitOn();
+                } catch (InterruptedException e) {
+                    Log.d("time out object interrupted");
+                }
+            }
+
+            mProgressObserver.stop();
+            if (mTimeOutTimer.isTimeOut()) {
+                return;
+            } else {
+                //not caused by timer timing out
+                //need to cancel timer
+                mTimeOutTimer.cancel(false);
+            }
+        }
+
+        mResult = getTestResult();
+        processTestResult();
+    }
+
+    /**
+     * Get the test result.
+     *
+     * @return The test result.
+     */
+    protected Result getTestResult() {
+        return mResult;
+    }
+
+    /**
+     * Implementation of running test.
+     */
+    protected void runImpl() throws DeviceDisconnectedException {
+        mResult = new Result();
+        mDevice.runTest(this);
+    }
+
+    /**
+     * Process the test result of the test.
+     */
+    protected void processTestResult() {
+        int resultCode = TestSessionLog.CTS_RESULT_CODE_PASS;
+        String failedMsg = mResult.mFailureMsg;
+        String stackTrace = mResult.mStackTrc;
+
+        if (mResult.mResults.contains(TestSessionLog.CTS_RESULT_CODE_FAIL)) {
+            resultCode = TestSessionLog.CTS_RESULT_CODE_FAIL;
+        }
+
+        setResult(resultCode, failedMsg, stackTrace);
+    }
+
+    /**
+     * Store the runtime result.
+     *
+     */
+    final class Result {
+
+        ArrayList<Integer> mResults = new ArrayList<Integer>();
+
+        String mFailureMsg;
+        String mStackTrc;
+
+        /**
+         * Add result code.
+         *
+         * @param resCode The result type code.
+         */
+        public void addResult(final int resCode) {
+            mResults.add(resCode);
+        }
+
+        /**
+         * Set failed message.
+         *
+         * @param message The failed message.
+         */
+        public void setFailedMessage(final String message) {
+            if (message != null) {
+                mFailureMsg = message;
+            }
+        }
+
+        /**
+         * Set stack trace.
+         *
+         * @param stackTrace The stack trace.
+         */
+        public void setStackTrace(final String stackTrace) {
+            if (stackTrace != null) {
+                mStackTrc = stackTrace;
+            }
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyUpdateResult(final int resCode,
+            final String failedMessage, final String stackTrace) {
+
+        Log.d("Test.notifyUpdateResult() is called");
+        synchronized (mResult) {
+            mResult.addResult(resCode);
+            mResult.setFailedMessage(failedMessage);
+            mResult.setStackTrace(stackTrace);
+
+            Log.d("notifyUpdateResult() detects that it needs to cancel mTimeOutTimer");
+            synchronized (mTimeOutTimer) {
+                mTimeOutTimer.sendNotify();
+            }
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyInstallingComplete(final int resultCode) {
+    }
+
+    /** {@inheritDoc} */
+    public void notifyUninstallingComplete(final int resultCode) {
+    }
+
+    /** {@inheritDoc} */
+    public void notifyInstallingTimeout(final TestDevice testDevice) {
+    }
+
+    /** {@inheritDoc} */
+    public void notifyUninstallingTimeout(final TestDevice testDevice) {
+    }
+
+    /** {@inheritDoc} */
+    public void notifyTestingDeviceDisconnected() {
+        Log.d("Test.notifyTestingDeviceDisconnected() is called");
+        if (mProgressObserver != null) {
+            mProgressObserver.stop();
+        }
+
+        synchronized (mTimeOutTimer) {
+            mTimeOutTimer.cancel(false);
+            mTimeOutTimer.sendNotify();
+        }
+    }
+
+    /**
+     * Inherited API which is used for batch mode only. No need to
+     * implement it here since this is running in individual mode.
+     */
+    /** {@inheritDoc} */
+    public void notifyTestStatus(final Test test, final String status) {
+
+    }
+}
+
diff --git a/tools/host/src/com/android/cts/TestCase.java b/tools/host/src/com/android/cts/TestCase.java
new file mode 100644
index 0000000..ee62023
--- /dev/null
+++ b/tools/host/src/com/android/cts/TestCase.java
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+/**
+ * Correspond to junit's test case, provide functions on
+ * storing and executing a test case from CTS test harness.
+ */
+public class TestCase implements DeviceObserver {
+    private TestSuite mParentSuite;
+    private Collection<Test> mTests;
+    private String mName;
+    private String mPriority;
+
+    private Test mCurrentTest;
+    private boolean mTestStop;
+
+    public TestCase(final TestSuite suite, final String name, final String priority) {
+        mParentSuite = suite;
+        mName = name;
+        mPriority = priority;
+        mTests = new ArrayList<Test>();
+
+        mTestStop = false;
+        mCurrentTest = null;
+    }
+
+    /**
+     * Get parent suite;
+     *
+     * @return Parent suite.
+     */
+    public TestSuite getParent() {
+        return mParentSuite;
+    }
+
+    /**
+     * Get the case name of this case.
+     *
+     * @return The case name of this test case.
+     */
+    public String getName() {
+        return mName;
+    }
+
+    /**
+     * Get the full name of this test case.
+     *
+     * @return The full name of this test case.
+     */
+    public String getFullName() {
+        TestSuite suite = getParent();
+        return suite.getFullName() + "." + getName();
+    }
+
+    /**
+     * Get the priority of this test case.
+     *
+     * @return The priority of this test case.
+     */
+    public String getPriority() {
+        return mPriority;
+    }
+
+    /**
+     * Add a specific test.
+     *
+     * @param test The test to be added.
+     */
+    public void addTest(Test test) {
+        mTests.add(test);
+    }
+
+    /**
+     * Get the tests under this test case.
+     *
+     * @return The tests under this test case.
+     */
+    public Collection<Test> getTests() {
+        return mTests;
+    }
+
+    /**
+     * Get all test names contained in the test case.
+     *
+     * @return All test names.
+     */
+    public ArrayList<String> getAllTestNames() {
+        ArrayList<String> testNameList = new ArrayList<String>();
+        for (Test test : getTests()) {
+            testNameList.add(test.getFullName());
+        }
+        return testNameList;
+    }
+
+    /**
+     * Search test in this test case.
+     *
+     * @param testName The test name to be searched against.
+     * @return null if not found, or return founded test
+     */
+    public Test searchTest(final String testName) {
+        String sName = mParentSuite.getFullName();
+        String caseFullName = sName + "." + mName;
+        int index = 0;
+        int testNameStartIndex = testName.lastIndexOf('#') + 1;
+
+        Log.d("searchTest(): testName=" + testName + ",caseFullName=" + caseFullName);
+
+        if (testName.substring(index).startsWith(caseFullName + Test.METHOD_SEPARATOR)) {
+            index += caseFullName.length() + 1;
+        } else {
+            return null;
+        }
+
+        if (index == testNameStartIndex) {
+            String name = testName.substring(testNameStartIndex);
+            for (Test test : mTests) {
+                if (test.getName().equals(name)) {
+                    return test;
+                }
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Set test stopped.
+     *
+     * @param testStopped If true, it's stopped. Else, still running.
+     */
+    public void setTestStopped(final boolean testStopped) {
+        mTestStop = testStopped;
+        if (mCurrentTest != null) {
+            mCurrentTest.setTestStopped(mTestStop);
+        }
+    }
+
+    /**
+     * Run the test case over device given.
+     *
+     * @param device The device to run the test case over.
+     */
+    public void run(final TestDevice device) throws DeviceDisconnectedException {
+        mTestStop = false;
+        Iterator<Test> tests = getTests().iterator();
+        while (tests.hasNext() && (!mTestStop)) {
+            mCurrentTest = tests.next();
+            if (mCurrentTest.getResultCode() == TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED) {
+                mCurrentTest.run(device);
+            }
+        }
+    }
+
+    /**
+     * Run the the specific test contained in the test case over device given.
+     *
+     * @param device The device to run the test over.
+     * @param test The specific test to be run.
+     */
+    public void run(final TestDevice device, final Test test)
+            throws DeviceDisconnectedException {
+        mTestStop = false;
+        mCurrentTest = test;
+        mCurrentTest.run(device);
+    }
+
+    /** {@inheritDoc} */
+    public void notifyUpdateResult(final int resCode,
+            final String failedMessage, final String stackTrace) {
+        if (mCurrentTest != null) {
+            mCurrentTest.notifyUpdateResult(resCode, failedMessage, stackTrace);
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyInstallingComplete(final int resultCode) {
+        if (mCurrentTest != null) {
+            mCurrentTest.notifyInstallingComplete(resultCode);
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyUninstallingComplete(final int resultCode) {
+        if (mCurrentTest != null) {
+            mCurrentTest.notifyUninstallingComplete(resultCode);
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyInstallingTimeout(final TestDevice testDevice) {
+        if (mCurrentTest != null) {
+            mCurrentTest.notifyInstallingTimeout(testDevice);
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyUninstallingTimeout(final TestDevice testDevice) {
+        if (mCurrentTest != null) {
+            mCurrentTest.notifyUninstallingTimeout(testDevice);
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyTestingDeviceDisconnected() {
+        if (mCurrentTest != null) {
+            mCurrentTest.notifyTestingDeviceDisconnected();
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyTestStatus(final Test test, final String status) {
+
+    }
+}
diff --git a/tools/host/src/com/android/cts/TestController.java b/tools/host/src/com/android/cts/TestController.java
new file mode 100644
index 0000000..d2943b0
--- /dev/null
+++ b/tools/host/src/com/android/cts/TestController.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+/**
+ * Store the information of a test controller.
+ *
+ */
+public class TestController {
+    private String mJarPath;
+    private String mPackageName;
+    private String mClassName;
+    private String mMethodName;
+
+    public TestController(final String jarPath, final String packageName,
+            final String className, final String methodName) {
+        mJarPath = jarPath;
+        mPackageName = packageName;
+        mClassName = className;
+        mMethodName = methodName;
+    }
+
+    /**
+     * Get the jar file path of the controller.
+     *
+     * @return The jar file path of the controller.
+     */
+    public String getJarPath() {
+        return mJarPath;
+    }
+
+    /**
+     * Get the package name.
+     *
+     * @return The package name.
+     */
+    public String getPackageName() {
+        return mPackageName;
+    }
+
+    /**
+     * Get the class name.
+     *
+     * @return The class name.
+     */
+    public String getClassName() {
+        return mClassName;
+    }
+
+    /**
+     * Get the method name.
+     *
+     * @return The method name.
+     */
+    public String getMethodName() {
+        return mMethodName;
+    }
+
+    /**
+     * Get the full name of this test controller.
+     *
+     * @return The case name of this test.
+     */
+    public String getFullName() {
+        return mPackageName + "." + mClassName + Test.METHOD_SEPARATOR + mMethodName;
+    }
+
+    /**
+     * Check if it's a valid test controller.
+     *
+     * @return true if it's valid, else return false.
+     */
+    public boolean isValid() {
+        if ((mJarPath == null) || (mJarPath.length() == 0)
+                || (mPackageName == null) || (mPackageName.length() == 0)
+                || (mClassName == null) || (mClassName.length() == 0)
+                || (mMethodName == null) || (mMethodName.length() == 0)) {
+            return false;
+        } else {
+            return true;
+        }
+    }
+}
diff --git a/tools/host/src/com/android/cts/TestDevice.java b/tools/host/src/com/android/cts/TestDevice.java
new file mode 100644
index 0000000..8275b1c
--- /dev/null
+++ b/tools/host/src/com/android/cts/TestDevice.java
@@ -0,0 +1,1583 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import com.android.ddmlib.Client;
+import com.android.ddmlib.ClientData;
+import com.android.ddmlib.Device;
+import com.android.ddmlib.IShellOutputReceiver;
+import com.android.ddmlib.MultiLineReceiver;
+import com.android.ddmlib.SyncService;
+import com.android.ddmlib.SyncService.ISyncProgressMonitor;
+import com.android.ddmlib.SyncService.SyncResult;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Manage the testing target device for<br>
+ * <ul>
+ *    <li> install/uninstall test package, and
+ *    <li> execute command on device
+ *    <li> get command feedback from standard output
+ * </ul>
+ */
+public class TestDevice implements DeviceObserver {
+    private static final String GET_INFO_APP_PACKAGE_NAME = "android.tests.getinfo";
+    private static final String DEFAULT_TEST_RUNNER_NAME =
+                                  "android.test.InstrumentationTestRunner";
+    private static final String ACTION_INSTALL = "install";
+    private static final String ACTION_UNINSTALL = "uninstall";
+    private static final String ACTION_GET_DEV_INFO = "getDeviceInfo";
+    private static final String sInstrumentResultExpr = "INSTRUMENTATION_RESULT: (\\S+)=(.+)";
+
+    public static final int STATUS_IDLE = 0;
+    public static final int STATUS_BUSY = STATUS_IDLE + 1;
+    public static final int STATUS_OFFLINE = STATUS_IDLE + 2;
+    private static final String STATUS_STR_IDLE = "idle";
+    private static final String STATUS_STR_IN_USE = "in use";
+    private static final String STATUS_STR_OFFLINE = "offline";
+
+    public static final Pattern INSTRUMENT_RESULT_PATTERN;
+
+    private IndividualModeResultParser mIndividualModeResultParser;
+    private BatchModeResultParser mBatchModeResultParser;
+
+    private DeviceObserver mDeviceObserver;
+    private Device mDevice;
+    private DeviceParameterCollector mDeviceInfo;
+
+    private SyncService mSyncService;
+
+    private PackageActionObserver mUninstallObserver;
+
+    private int mStatus;
+    private static HashMap<Integer, String> mStatusMap;
+    private PackageActionTimer mPackageActionTimer;
+
+    private ObjectSync mObjectSync;
+
+    static {
+        INSTRUMENT_RESULT_PATTERN = Pattern.compile(sInstrumentResultExpr);
+        mStatusMap = new HashMap<Integer, String>();
+        mStatusMap.put(STATUS_IDLE, STATUS_STR_IDLE);
+        mStatusMap.put(STATUS_BUSY, STATUS_STR_IN_USE);
+        mStatusMap.put(STATUS_OFFLINE, STATUS_STR_OFFLINE);
+    }
+
+    // This constructor just for unit test
+    TestDevice(final String serialNumber) {
+        mDeviceInfo = new DeviceParameterCollector();
+        mDeviceInfo.setSerialNumber(serialNumber);
+    }
+
+    public TestDevice(Device device) {
+        mDevice = device;
+        mSyncService = mDevice.getSyncService();
+        mIndividualModeResultParser = null;
+        mBatchModeResultParser = null;
+        mUninstallObserver = new PackageActionObserver(ACTION_UNINSTALL);
+        mStatus = STATUS_IDLE;
+        mDeviceInfo = new DeviceParameterCollector();
+        mPackageActionTimer = new PackageActionTimer();
+        mObjectSync = new ObjectSync();
+    }
+
+    /**
+     * get the information of this device
+     *
+     * @return information of this device
+     */
+    public DeviceParameterCollector getDeviceInfo()
+                throws DeviceDisconnectedException {
+        if (mDeviceInfo.size() == 0) {
+            genDeviceInfo();
+        }
+        return mDeviceInfo;
+    }
+
+    /**
+     * Run device information collector apk to got the device info.
+     */
+    private void genDeviceInfo() throws DeviceDisconnectedException {
+        String apkName = "DeviceInfoCollector";
+
+        String apkPath = HostConfig.getInstance().getCaseRepository().getApkPath(apkName);
+        if (!HostUtils.isFileExist(apkPath)) {
+            Log.e("File doesn't exist: " + apkPath, null);
+            return;
+        }
+
+        mDeviceInfo.set(DeviceParameterCollector.SERIAL_NUMBER, getSerialNumber());
+        Log.d("installing " + apkName + " apk");
+        mObjectSync = new ObjectSync();
+
+        // reset device observer
+        DeviceObserver tmpDeviceObserver = mDeviceObserver;
+        mDeviceObserver = this;
+
+        Log.d("install get info ...");
+        installAPK(apkPath);
+        waitForCommandFinish();
+
+        // run shell command to run device information collector
+        Log.d("run device information collector");
+        runDeviceInfoCollectorCommand();
+        waitForCommandFinish();
+
+        Log.d("uninstall get info ...");
+        uninstallAPK(GET_INFO_APP_PACKAGE_NAME);
+        waitForCommandFinish();
+        Log.d("uninstall device information collector successfully");
+
+        mDeviceObserver = tmpDeviceObserver;
+    }
+
+    /**
+     * Run command to collect device info.
+     */
+    private void runDeviceInfoCollectorCommand() throws DeviceDisconnectedException {
+        final String commandStr = "am instrument -w -e bundle"
+            + " true android.tests.getinfo/.DeviceInfoInstrument";
+        Log.d(commandStr);
+
+        mPackageActionTimer.start(ACTION_GET_DEV_INFO, this);
+        executeShellCommand(commandStr, new DeviceInfoReceiver(mDeviceInfo));
+    }
+
+    /**
+     * Receiver which receives and parses the device information.
+     */
+    final class DeviceInfoReceiver extends MultiLineReceiver {
+
+        private ArrayList<String> mResultLines = new ArrayList<String>();
+        private DeviceParameterCollector mDeviceParamCollector;
+
+        public DeviceInfoReceiver(DeviceParameterCollector paramCollector) {
+            super();
+            mDeviceParamCollector = paramCollector;
+            setTrimLine(false);
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        public void processNewLines(String[] lines) {
+            for (String line : lines) {
+                mResultLines.add(line);
+            }
+        }
+
+        /** {@inheritDoc} */
+        public boolean isCancelled() {
+            return false;
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        public void done() {
+            super.done();
+            String key, value;
+            for (String line : mResultLines) {
+                Matcher matcher = INSTRUMENT_RESULT_PATTERN.matcher(line);
+                if (matcher.matches()) {
+                    key = matcher.group(1);
+                    value = matcher.group(2);
+                    mDeviceParamCollector.set(key, value);
+                }
+            }
+
+            synchronized(mObjectSync) {
+                mObjectSync.sendNotify();
+            }
+        }
+
+    }
+
+    /**
+     * Store the build information of a device
+     */
+    public static final class DeviceParameterCollector{
+        public static final String PRODUCT_NAME = "product_name";
+        public static final String BUILD_VERSION = "version_release";
+        public static final String BUILD_ID = "build_id";
+        public static final String BUILD_FINGERPRINT = "build_fingerprint";
+        public static final String BUILD_TAGS = "build_tags";
+        public static final String BUILD_TYPE = "build_type";
+        public static final String BUILD_MODEL = "build_model";
+        public static final String BUILD_BRAND = "build_brand";
+        public static final String BUILD_BOARD = "build_board";
+        public static final String BUILD_DEVICE = "build_device";
+        public static final String SCREEN_HEIGHT = "screen_height";
+        public static final String SCREEN_WIDTH = "screen_width";
+        public static final String SCREEN_DENSITY = "screen_density";
+        public static final String SERIAL_NUMBER = "serialNumber";
+        public static final String VERSION_SDK = "version_sdk";
+        public static final String LOCALES = "locales";
+        public static final String SCREEN_Y_DENSITY = "screen_Y_density";
+        public static final String SCREEN_X_DENSITY = "screen_X_density";
+        public static final String TOUCH_SCREEN = "touch_screen";
+        public static final String NAVIGATION = "navigation";
+        public static final String KEYPAD = "keypad";
+        public static final String NETWORK = "network";
+        public static final String IMEI = "imei";
+        public static final String IMSI = "imsi";
+        public static final String PHONE_NUMBER = "phoneNumber";
+
+        private HashMap<String, String> mInfoMap;
+
+        public DeviceParameterCollector() {
+            mInfoMap = new HashMap<String, String>();
+        }
+
+        /**
+         * Set the pair of key and value of device information.
+         *
+         * @param key The key of the pair.
+         * @param value The value of the pair.
+         */
+        public void set(final String key, final String value) {
+            mInfoMap.put(key, value);
+        }
+
+        /**
+         * Return the number of device info items which stored in.
+         *
+         * @return the number of device info items which stored in.
+         */
+        public int size() {
+            return mInfoMap.size();
+        }
+
+        /**
+         * Set the build finger print.
+         *
+         * @param buildFingerPrint The build finger print.
+         */
+        public void setBuildFingerPrint(final String buildFingerPrint) {
+            mInfoMap.put(BUILD_FINGERPRINT, buildFingerPrint);
+        }
+
+        /**
+         * Set the build tags.
+         *
+         * @param buildTags The build tags.
+         */
+        public void setBuildTags(final String buildTags) {
+            mInfoMap.put(BUILD_TAGS, buildTags);
+        }
+
+        /**
+         * Set build type.
+         *
+         * @param buildType The build type.
+         */
+        public void setBuildType(final String buildType) {
+            mInfoMap.put(BUILD_TYPE, buildType);
+        }
+
+        /**
+         * Set the build model.
+         *
+         * @param buildModel The build model.
+         */
+        public void setBuildModel(final String buildModel) {
+            mInfoMap.put(BUILD_MODEL, buildModel);
+        }
+
+        /**
+         * Set the build brand.
+         *
+         * @param buildBrand The build brand.
+         */
+        public void setBuildBrand(final String buildBrand) {
+            mInfoMap.put(BUILD_BRAND, buildBrand);
+        }
+
+        /**
+         * Set the build board.
+         *
+         * @param buildBoard The build board.
+         */
+        public void setBuildBoard(final String buildBoard) {
+            mInfoMap.put(BUILD_BOARD, buildBoard);
+        }
+
+        /**
+         * Set the build device.
+         *
+         * @param buildDevice The build device.
+         */
+        public void setBuildDevice(final String buildDevice) {
+            mInfoMap.put(BUILD_DEVICE, buildDevice);
+        }
+
+        /**
+         * set the serialNumber of this device
+         *
+         * @param serialNumber The serial number.
+         */
+        public void setSerialNumber(final String serialNumber) {
+            mInfoMap.put(SERIAL_NUMBER, serialNumber);
+        }
+
+        /**
+         * set the build id
+         *
+         * @param bldId The build ID.
+         */
+        public void setBuildId(final String bldId) {
+            mInfoMap.put(BUILD_ID, bldId);
+        }
+
+        /**
+         * set the build version
+         *
+         * @param bldVer The build version.
+         */
+        public void setBuildVersion(final String bldVer) {
+            mInfoMap.put(BUILD_VERSION, bldVer);
+        }
+
+        /**
+         * set the product name
+         **
+         * @param productName The product name.
+         */
+        public void setProductName(final String productName) {
+            mInfoMap.put(PRODUCT_NAME, productName);
+        }
+
+        /**
+         * Get the build finger print.
+         *
+         * @return The build finger print.
+         */
+        public String getBuildFingerPrint() {
+            return mInfoMap.get(BUILD_FINGERPRINT);
+        }
+
+        /**
+         * Get the build tags.
+         *
+         * @return The build tags.
+         */
+        public String getBuildTags() {
+            return mInfoMap.get(BUILD_TAGS);
+        }
+
+        /**
+         * Get build type.
+         *
+         * @return The build type.
+         */
+        public String getBuildType() {
+            return mInfoMap.get(BUILD_TYPE);
+        }
+
+        /**
+         * Get the build model.
+         *
+         * @return The build model.
+         */
+        public String getBuildModel() {
+            return mInfoMap.get(BUILD_MODEL);
+        }
+
+        /**
+         * Get the build brand.
+         *
+         * @return The build brand.
+         */
+        public String getBuildBrand() {
+            return mInfoMap.get(BUILD_BRAND);
+        }
+
+        /**
+         * Get the build board.
+         *
+         * @return The build board.
+         */
+        public String getBuildBoard() {
+            return mInfoMap.get(BUILD_BOARD);
+        }
+
+        /**
+         * Get the build device.
+         *
+         * @return The build device.
+         */
+        public String getBuildDevice() {
+            return mInfoMap.get(BUILD_DEVICE);
+        }
+
+        /**
+         * get the build id
+         **
+         * @return The build ID.
+         */
+        public String getBuildId() {
+            return mInfoMap.get(BUILD_ID);
+        }
+
+        /**
+         * get the build version
+         **
+         * @return The build version.
+         */
+        public String getBuildVersion() {
+            return mInfoMap.get(BUILD_VERSION);
+        }
+
+        /**
+         * get the product name
+         *
+         * @return The product name.
+         */
+        public String getProductName() {
+            return mInfoMap.get(PRODUCT_NAME);
+        }
+
+        /**
+         * get the serial number
+         *
+         * @return The serial number.
+         */
+        public String getSerialNumber() {
+            return mInfoMap.get(SERIAL_NUMBER);
+        }
+
+        /**
+         * Return screen resolution(width x height)
+         *
+         * @return The screen resolution.
+         */
+        public String getScreenResolution() {
+            return mInfoMap.get(SCREEN_WIDTH) + "x" + mInfoMap.get(SCREEN_HEIGHT);
+        }
+
+        /**
+         * Get Android platform version.
+         *
+         * @return The Android platform version.
+         */
+        public String getAndroidPlatformVersion() {
+            return mInfoMap.get(VERSION_SDK);
+        }
+
+        /**
+         * Get supported locales.
+         *
+         * @return The supported locales.
+         */
+        public String getLocales() {
+            return mInfoMap.get(LOCALES);
+        }
+
+        /**
+         * Get x dip
+         *
+         * @return The X dip.
+         */
+        public String getXdpi() {
+            return mInfoMap.get(SCREEN_X_DENSITY);
+        }
+
+        /**
+         * Get y dip
+         *
+         * @return The y dip.
+         */
+        public String getYdpi() {
+            return mInfoMap.get(SCREEN_Y_DENSITY);
+        }
+
+        /**
+         * Get touch information
+         *
+         * @return The touch screen information.
+         */
+        public String getTouchInfo() {
+            return mInfoMap.get(TOUCH_SCREEN);
+        }
+
+        /**
+         * Get navigation information
+         *
+         * @return The navigation information.
+         */
+        public String getNavigation() {
+            return mInfoMap.get(NAVIGATION);
+        }
+
+        /**
+         * Get keypad information
+         *
+         * @return The keypad information.
+         */
+        public String getKeypad() {
+            return mInfoMap.get(KEYPAD);
+        }
+
+        /**
+         * Get network information
+         *
+         * @return The network information.
+         */
+        public String getNetwork() {
+            return mInfoMap.get(NETWORK);
+        }
+
+        /**
+         * Get IMEI
+         *
+         * @return IMEI.
+         */
+        public String getIMEI() {
+            return mInfoMap.get(IMEI);
+        }
+
+        /**
+         * Get IMSI
+         *
+         * @return IMSI.
+         */
+        public String getIMSI() {
+            return mInfoMap.get(IMSI);
+        }
+
+        /**
+         * Get phone number
+         *
+         * @return Phone number.
+         */
+        public String getPhoneNumber() {
+            return mInfoMap.get(PHONE_NUMBER);
+        }
+    }
+
+    /**
+     * Get the serial number of the  {@link TestDevice}.
+     *
+     * @return the serial number of the {@link TestDevice}
+     */
+    public String getSerialNumber() {
+        if (mDevice == null) {
+            return mDeviceInfo.getSerialNumber();
+        }
+        return mDevice.getSerialNumber();
+    }
+
+    /**
+     * Run a specified test.
+     *
+     * @param test The test to be run.
+     */
+    public void runTest(Test test) throws DeviceDisconnectedException {
+
+        final String appNameSpace = test.getAppNameSpace();
+        String runner = test.getInstrumentationRunner();
+        if (runner == null) {
+            runner = DEFAULT_TEST_RUNNER_NAME;
+        }
+
+        final String commandStr = "am instrument -w -r -e class "
+                + test.getFullName() + " " + appNameSpace + "/" + runner;
+        Log.d(commandStr);
+
+        mIndividualModeResultParser = new IndividualModeResultParser(test);
+        executeShellCommand(commandStr, mIndividualModeResultParser);
+    }
+
+    /**
+     * Run a test package in batch mode.
+     *
+     * @param testPackage The testPackage to be run.
+     * @param javaPkgName The java package name. If null, run the whole test package;
+     *              else, run the specified java package contained in the test package
+     */
+    public void runInBatchMode(TestPackage testPackage, final String javaPkgName)
+                throws DeviceDisconnectedException {
+        String appNameSpace = testPackage.getAppNameSpace();
+        String runner = testPackage.getInstrumentationRunner();
+        if (runner == null) {
+            runner = DEFAULT_TEST_RUNNER_NAME;
+        }
+
+        String name = testPackage.getAppPackageName();
+        if ((javaPkgName != null) && (javaPkgName.length() != 0)) {
+            name = javaPkgName;
+        }
+
+        String cmdHeader = "am instrument -w -r -e package " + name + " ";
+        final String commandStr = cmdHeader + appNameSpace + "/" + runner;
+        Log.d(commandStr);
+
+        mBatchModeResultParser = new BatchModeResultParser(testPackage);
+        executeShellCommand(commandStr, mBatchModeResultParser);
+    }
+
+    /**
+     * Run a in batch mode of a TestPackage.
+     *
+     * @param testPackage The testPackage to be run.
+     * @param javaClassName The java class name.
+     */
+    public void runTestCaseInBatchMode(TestPackage testPackage, final String javaClassName)
+                throws DeviceDisconnectedException {
+        if (javaClassName == null) {
+            return;
+        }
+
+        String appNameSpace = testPackage.getAppNameSpace();
+        String runner = testPackage.getInstrumentationRunner();
+        if (runner == null) {
+            runner = DEFAULT_TEST_RUNNER_NAME;
+        }
+
+        String cmdHeader = "am instrument -w -r -e class " + javaClassName + " ";
+        final String commandStr = cmdHeader + appNameSpace + "/" + runner;
+        Log.d(commandStr);
+
+        mBatchModeResultParser = new BatchModeResultParser(testPackage);
+        executeShellCommand(commandStr, mBatchModeResultParser);
+    }
+
+    /**
+     * Get clients.
+     *
+     * @return The clients.
+     */
+    public Client[] getClients() {
+        return mDevice.getClients();
+    }
+
+    /**
+     * Push a file to a given path.
+     *
+     * @param localPath The local path.
+     * @param remotePath The remote path.
+     */
+    public void pushFile(String localPath, String remotePath) {
+        SyncResult result = mSyncService.pushFile(localPath, remotePath,
+                new PushMonitor());
+        if (result.getCode() != SyncService.RESULT_OK) {
+            Log.e("Uploading file failed: " + result.getMessage(), null);
+        }
+    }
+
+    /**
+     * Install a specified APK using adb command install.
+     *
+     * @param apkPath Name of the package to be installed.
+     */
+    public void installAPK(final String apkPath) throws DeviceDisconnectedException {
+        if ((apkPath == null) || (apkPath.length() == 0) || (!HostUtils.isFileExist(apkPath))) {
+            return;
+        }
+
+        // Use re-install directly
+        final String cmd = DeviceManager.getAdbLocation() + " -s "
+                + getSerialNumber() + " install -r " + apkPath;
+        Log.d(cmd);
+
+        mPackageActionTimer.start(ACTION_INSTALL, this);
+        executeCommand(cmd, new PackageActionObserver(ACTION_INSTALL));
+    }
+
+    /**
+     * Execute the given command.
+     *
+     * @param command The command to be executed.
+     * @param stdOutReceiver The receiver for handling the output from the device.
+     */
+    private void executeCommand(String command, StdOutObserver stdOutReceiver)
+                    throws DeviceDisconnectedException {
+        if (mStatus != STATUS_OFFLINE) {
+            try {
+                Process proc = Runtime.getRuntime().exec(command);
+
+                if (stdOutReceiver != null) {
+                    stdOutReceiver.setInputStream(proc.getInputStream());
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        } else {
+            throw new DeviceDisconnectedException(getSerialNumber());
+        }
+    }
+
+    /**
+     * Standard output observer.
+     *
+     */
+    interface StdOutObserver {
+        /**
+         * set the input Stream.
+         */
+        public void setInputStream(InputStream is);
+
+        /**
+         * Process lines.
+         */
+        public void processLines() throws IOException;
+    }
+
+    /**
+     * Un-install APK.
+     *
+     * @param packageName The package to be un-installed.
+     */
+    public void uninstallAPK(String packageName) throws DeviceDisconnectedException {
+        if (packageName == null) {
+            return;
+        }
+
+        uninstallAPKImpl(packageName, mUninstallObserver);
+    }
+
+    /**
+     * The implementation of uninstalling APK.
+     *
+     * @param packageName The package to be uninstalled.
+     * @param observer The uninstall observer
+     */
+    private void uninstallAPKImpl(final String packageName, final PackageActionObserver observer)
+                throws DeviceDisconnectedException {
+        final String cmdStr = DeviceManager.getAdbLocation() + " -s "
+                      + getSerialNumber() + " uninstall " + packageName;
+        Log.d(cmdStr);
+        mPackageActionTimer.start(ACTION_UNINSTALL, this);
+        executeCommand(cmdStr, observer);
+    }
+
+    /**
+     * Package action(install/uninstall) timeout task
+     */
+    class PackageActionTimeoutTask extends TimerTask {
+
+        private static final int DELAY = 120000;
+        private String mAction;
+        private TestDevice mTargetDevice;
+
+        /**
+         * Task of package action timeout.
+         *
+         * @param action string of action
+         * @param testDevice the {@TestDevice} which got the timeout.
+         */
+        public PackageActionTimeoutTask(final String action,
+                TestDevice testDevice) {
+            mAction = action;
+            mTargetDevice = testDevice;
+        }
+
+        /** {@inheritDoc}*/
+        @Override
+        public void run() {
+            Log.d("PackageActionTimeoutTask.run(): mAction=" + mAction);
+            synchronized (mObjectSync) {
+                mObjectSync.sendNotify();
+            }
+
+            if (mAction.toLowerCase().equals(ACTION_INSTALL)) {
+                mDeviceObserver.notifyInstallingTimeout(mTargetDevice);
+            } else if (mAction.toLowerCase().equals(ACTION_UNINSTALL)) {
+                mDeviceObserver.notifyUninstallingTimeout(mTargetDevice);
+            } else if (mAction.toLowerCase().equals(ACTION_GET_DEV_INFO)) {
+                Log.e("Get device information timeout", null);
+            } else {
+                Log.e("Timeout: " + mAction, null);
+            }
+        }
+    }
+
+    /**
+     * Package action timer monitors the package action.
+     *
+     */
+    class PackageActionTimer {
+        private Timer mTimer;
+
+        /**
+         * Start the timer while package install/uninstall/getDeviceInfo/checkAPI.
+         *
+         * @param action The action of package.
+         * @param device The TestDevice the action is taken over.
+         */
+        private void start(final String action, final TestDevice device) {
+            Log.d("start(), action=" + action + ",mTimer=" + mTimer);
+            synchronized (this) {
+                if (mTimer != null) {
+                    mTimer.cancel();
+                }
+
+                mTimer = new Timer();
+                mTimer.schedule(new PackageActionTimeoutTask(action, device),
+                                PackageActionTimeoutTask.DELAY);
+            }
+        }
+
+        /**
+         * Stop the action timer.
+         */
+        private void stop() {
+            synchronized (this) {
+                Log.d("stop() , mTimer=" + mTimer);
+                if (mTimer != null) {
+                    mTimer.cancel();
+                    mTimer = null;
+                }
+            }
+        }
+    }
+
+    /**
+     * The observer of package action, currently including installing and uninstalling.
+     */
+    final class PackageActionObserver implements StdOutObserver, Runnable {
+
+        private BufferedReader mReader;
+        private String mAction;
+
+        public PackageActionObserver(final String action) {
+            mAction = action;
+        }
+
+        /** {@inheritDoc} */
+        public void run() {
+            try {
+                processLines();
+            } catch (IOException e) {
+                e.printStackTrace();
+            } finally {
+                try {
+                    mReader.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+
+        /**
+         * Parse the standard out to judge where the installation is complete.
+         */
+        public void processLines() throws IOException {
+            String line = mReader.readLine();
+            int statusCode = DeviceObserver.FAIL;
+            boolean gotResult = false;
+
+            while (line != null) {
+                line = line.toLowerCase();
+                if (line.indexOf("success") != -1) {
+                    statusCode = DeviceObserver.SUCCESS;
+                    gotResult = true;
+                } else if (line.indexOf("failure") != -1) {
+                    statusCode = DeviceObserver.FAIL;
+                    CUIOutputStream.println(mAction.toLowerCase() + " met " + line);
+                    gotResult = true;
+                } else if (line.indexOf("error") != -1) {
+                    CUIOutputStream.println(mAction.toLowerCase() + " met " + line);
+                    statusCode = DeviceObserver.FAIL;
+                    gotResult = true;
+                }
+
+                if (gotResult) {
+                    Log.d(mAction + " calls stopPackageActionTimer()");
+                    mPackageActionTimer.stop();
+
+                    if (mDeviceObserver != null) {
+                        mDeviceObserver.notifyInstallingComplete(statusCode);
+                    }
+                    break;
+                }
+                line = mReader.readLine();
+            }
+        }
+
+        /** {@inheritDoc} */
+        public void setInputStream(InputStream is) {
+            mReader = new BufferedReader(new InputStreamReader(is));
+            new Thread(this).start();
+        }
+    }
+
+    /**
+     * Raw mode result parser.
+     */
+    abstract class RawModeResultParser extends MultiLineReceiver {
+        public final static String EQ_MARK = "=";
+        public final static String COMMA_MARK = ":";
+        public final static String AT_MARK = "at ";
+
+        public final static String STATUS_STREAM = "INSTRUMENTATION_STATUS: stream=";
+        public final static String STATUS_TEST = "INSTRUMENTATION_STATUS: test=";
+        public final static String STATUS_CLASS = "INSTRUMENTATION_STATUS: class=";
+        public final static String STATUS_CODE = "INSTRUMENTATION_STATUS_CODE:";
+        public final static String STATUS_STACK = "INSTRUMENTATION_STATUS: stack=";
+        public final static String STATUS_CURRENT = "INSTRUMENTATION_STATUS: current=";
+        public final static String STATUS_NUM = "INSTRUMENTATION_STATUS: numtests=";
+        public final static String STATUS_ERROR_STR = "INSTRUMENTATION_STATUS: Error=";
+
+        public final static String FAILURE = "Failure in ";
+        public final static String ASSERTION = "junit.framework.Assertion";
+
+        public final static String RESULT_STREAM = "INSTRUMENTATION_RESULT: stream=";
+        public final static String RESULT_CODE = "INSTRUMENTATION_CODE:";
+        public final static String RESULT = "Test results";
+        public final static String RESULT_TIME = "Time:";
+        public final static String RESULT_SUMMARY = "Tests run:";
+
+        public final static int STATUS_STARTING = 1;
+        public final static int STATUS_PASS = 0;
+        public final static int STATUS_FAIL = -1;
+        public final static int STATUS_ERROR = -2;
+
+        private ArrayList<String> mResultLines;
+
+        public String mStackTrace;
+        public String mFailedMsg;
+        public int mResultCode;
+
+        public Test mTest;
+
+        public RawModeResultParser(Test test) {
+            super();
+
+            setTrimLine(false);
+
+            mTest = test;
+            mResultLines = new ArrayList<String>();
+            mStackTrace = null;
+            mFailedMsg = null;
+            mResultCode = TestSessionLog.CTS_RESULT_CODE_PASS;
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        public void processNewLines(String[] lines) {
+            for (String line : lines) {
+                processNewLine(line.trim());
+            }
+        }
+
+        /**
+         * Process the new line.
+         *
+         * @param line The new line.
+         */
+        abstract public void processNewLine(final String line);
+
+        /**
+         * Get the result lines.
+         *
+         * @return The result lines.
+         */
+        public ArrayList<String> getResultLines() {
+            return mResultLines;
+        }
+
+        /**
+         * Get the named string from the string containing the mark.
+         *
+         * @param mark The mark to search against the results.
+         * @return The test name.
+         */
+        public String getNamedString(String mark) {
+            for (String line : mResultLines) {
+                if (line.startsWith(mark)) {
+                    String name = line.substring(line.indexOf(EQ_MARK) + 1);
+                    return name.trim();
+                }
+            }
+
+            return null;
+        }
+
+        /**
+         * Parse the int from the string containing the mark.
+         *
+         * @param mark The mark to search against the results.
+         * @return The number.
+         */
+        public int parseIntWithMark(String mark) {
+            for (String line : mResultLines) {
+                if (line.startsWith(mark)) {
+                    String code = line.substring(line.indexOf(EQ_MARK) + 1);
+                    return Integer.parseInt(code.trim());
+                }
+            }
+
+            return 0;
+        }
+
+        /**
+         * Get failed message.
+         *
+         * @return The failed message.
+         */
+        public String getFailedMessage() {
+            Iterator<String> iterator = mResultLines.iterator();
+            while (iterator.hasNext()) {
+                String line = iterator.next();
+                if (line.startsWith(STATUS_STACK)) {
+                    String failedMsg = line.substring(STATUS_STACK.length());
+                    if (iterator.hasNext()) {
+                        failedMsg += " " + iterator.next();
+                    }
+                    return failedMsg;
+                }
+            }
+            return null;
+        }
+
+        /**
+         * Get stack trace from output result.
+         *
+         * @return The stack trace message.
+         */
+        public String getStackTrace() {
+            StringBuilder sb = new StringBuilder();
+            for (String line : mResultLines) {
+                line = line.trim();
+                if (line.startsWith(AT_MARK) && line.endsWith(")")) {
+                    sb.append(line + "\n");
+                }
+            }
+            return sb.toString();
+        }
+
+        /**
+         * Get the status code of the test result.
+         *
+         * @param line The string contains the status code of the test result.
+         * @return The status code of the test result.
+         */
+        public int getStatusCode(String line) {
+            String codeStr = line.substring(line.indexOf(COMMA_MARK) + 1);
+            return Integer.parseInt(codeStr.trim());
+        }
+
+        /** {@inheritDoc} */
+        public boolean isCancelled() {
+            return false;
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        public void done() {
+            super.done();
+        }
+    }
+
+    /**
+     * Individual mode result parser. <br>
+     * Individual mode means that the host sends request
+     * to the device method by method. And the device
+     * reactions and outputs the result to each request.
+     */
+    final class IndividualModeResultParser extends RawModeResultParser {
+
+        public IndividualModeResultParser(Test test) {
+            super(test);
+        }
+
+        /**
+         * Process a new line.
+         *
+         * @param line The new line.
+         */
+        @Override
+        public void processNewLine(final String line) {
+            if ((line == null) || (line.trim().length() == 0)) {
+                return;
+            }
+
+            ArrayList<String> resultLines = getResultLines();
+            resultLines.add(line);
+
+            if (line.startsWith(STATUS_CODE)) {
+                int statusCode = getStatusCode(line);
+                processTestResult(statusCode);
+                resultLines.removeAll(resultLines);
+            }
+        }
+
+        /**
+         * Process the test result of a single test.
+         *
+         * @param statusCode The status code of a single test's test result.
+         */
+        public void processTestResult(int statusCode) {
+            String testName = getNamedString(STATUS_TEST);
+            String className = getNamedString(STATUS_CLASS);
+            String testFullName = className + Test.METHOD_SEPARATOR + testName;
+            String errorMessage = getNamedString(STATUS_ERROR_STR);
+
+            mFailedMsg = null;
+            mStackTrace = null;
+            if ((statusCode == STATUS_FAIL) || (statusCode == STATUS_ERROR)) {
+                mFailedMsg = getFailedMessage();
+                mStackTrace = getStackTrace();
+            }
+
+            if ((errorMessage != null) && (errorMessage.length() != 0)) {
+                if (mFailedMsg == null) {
+                    mFailedMsg = errorMessage;
+                } else {
+                    mFailedMsg += " : " + errorMessage;
+                }
+            }
+
+            Log.d(testFullName + "...(" + statusCode + ")");
+            Log.d("errorMessage= " + errorMessage);
+            Log.d("mFailedMsg=" + mFailedMsg);
+            Log.d("mStackTrace=" + mStackTrace);
+
+            switch (statusCode) {
+            case STATUS_STARTING:
+                break;
+
+            case STATUS_PASS:
+                mResultCode = TestSessionLog.CTS_RESULT_CODE_PASS;
+                break;
+
+            case STATUS_FAIL:
+            case STATUS_ERROR:
+                mResultCode = TestSessionLog.CTS_RESULT_CODE_FAIL;
+                break;
+            }
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        public void done() {
+            super.done();
+            mDeviceObserver.notifyUpdateResult(mResultCode, mFailedMsg, mStackTrace);
+        }
+    }
+
+    /**
+     * Batch mode result parser.
+     * Batch mode means that the host sends only one request
+     * for all of the methods contained in the package to the
+     * device. And then, the device runs the method one by one
+     * and outputs the result method by method.
+     */
+    final class BatchModeResultParser extends RawModeResultParser {
+        private TestPackage mTestPackage;
+        private Collection<Test> mTests;
+        public int mCurrentTestNum;
+        public int mTotalNum;
+
+        public BatchModeResultParser(TestPackage testPackage) {
+            super(null);
+
+            mTestPackage = testPackage;
+            if (mTestPackage != null) {
+                mTests = mTestPackage.getTests();
+            }
+        }
+
+        /**
+         * Process a new line.
+         *
+         * @param line The new line.
+         */
+        @Override
+        public void processNewLine(final String line) {
+            if ((line == null) || (line.trim().length() == 0)) {
+                return;
+            }
+
+            ArrayList<String> resultLines = getResultLines();
+            resultLines.add(line);
+
+            if (line.startsWith(STATUS_CODE)) {
+                int statusCode = getStatusCode(line);
+                processTestResult(statusCode);
+                resultLines.removeAll(resultLines);
+            } else if (line.startsWith(RESULT_CODE)) {
+                int resultCode = getStatusCode(line);
+                switch(resultCode) {
+                case STATUS_STARTING:
+                    break;
+
+                case STATUS_FAIL:
+                case STATUS_ERROR:
+                    mResultCode = TestSessionLog.CTS_RESULT_CODE_FAIL;
+                    break;
+
+                case STATUS_PASS:
+                    mResultCode = TestSessionLog.CTS_RESULT_CODE_PASS;
+                    break;
+                }
+                resultLines.removeAll(resultLines);
+            }
+        }
+
+        /**
+         * Process the test result of a single test.
+         *
+         * @param statusCode The status code of a single test's test result.
+         */
+        public void processTestResult(int statusCode) {
+            String testName = getNamedString(STATUS_TEST);
+            String className = getNamedString(STATUS_CLASS);
+            String testFullName = className + Test.METHOD_SEPARATOR + testName;
+            mCurrentTestNum = parseIntWithMark(STATUS_CURRENT);
+            mTotalNum = parseIntWithMark(STATUS_NUM);
+
+            mFailedMsg = null;
+            mStackTrace = null;
+            if ((statusCode == STATUS_FAIL) || ((statusCode == STATUS_ERROR))) {
+                mFailedMsg = getFailedMessage();
+                mStackTrace = getStackTrace();
+            }
+
+            Log.d(testFullName + "...(" + statusCode + ")");
+            Log.d("mFailedMsg=" + mFailedMsg);
+            Log.d("mStackTrace=" + mStackTrace);
+
+            String status = TestPackage.FINISH;
+
+            if (statusCode == STATUS_STARTING) {
+                status = TestPackage.START;
+            }
+
+            mTest = searchTest(testFullName);
+            if (mTest != null) {
+                switch(statusCode) {
+                case STATUS_STARTING:
+                    status = TestPackage.START;
+                    break;
+
+                case STATUS_PASS:
+                    mTest.setResult(TestSessionLog.CTS_RESULT_CODE_PASS, null, null);
+                    break;
+
+                case STATUS_ERROR:
+                case STATUS_FAIL:
+                    mTest.setResult(TestSessionLog.CTS_RESULT_CODE_FAIL, mFailedMsg, mStackTrace);
+                    break;
+                }
+                mDeviceObserver.notifyTestStatus(mTest, status);
+            }
+        }
+
+        /**
+         * Search Test with given test full name.
+         *
+         * @param testFullName The test full name.
+         * @return The Test matches the test full name given.
+         */
+        private Test searchTest(String testFullName) {
+            for (Test test : mTests) {
+                if (testFullName.equals(test.getFullName())) {
+                    return test;
+                }
+            }
+            return null;
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        public void done() {
+            super.done();
+            mDeviceObserver.notifyUpdateResult(mResultCode, null, null);
+        }
+    }
+
+    /**
+     * Remove the run time listener.
+     */
+    public void removeRuntimeListener() {
+        mDeviceObserver = null;
+    }
+
+    /**
+     * Set the run time listener.
+     *
+     * @param listener The run time listener.
+     */
+    public void setRuntimeListener(DeviceObserver listener) {
+        mDeviceObserver = listener;
+    }
+
+    /**
+     * Push monitor monitoring the status of pushing a file.
+     */
+    class PushMonitor implements ISyncProgressMonitor {
+
+        public PushMonitor() {
+        }
+
+        /** {@inheritDoc} */
+        public void advance(int arg0) {
+        }
+
+        /** {@inheritDoc} */
+        public boolean isCanceled() {
+            return false;
+        }
+
+        /** {@inheritDoc} */
+        public void start(int arg0) {
+        }
+
+        /** {@inheritDoc} */
+        public void startSubTask(String arg0) {
+        }
+
+        /** {@inheritDoc} */
+        public void stop() {
+        }
+    }
+
+    /**
+     * Execute Adb shell command on {@link Device}
+     *
+     * @param cmd the string of command.
+     * @param receiver {@link IShellOutputReceiver}
+     */
+    public void executeShellCommand(final String cmd, final IShellOutputReceiver receiver)
+            throws DeviceDisconnectedException {
+        if (mStatus == STATUS_OFFLINE) {
+            throw new DeviceDisconnectedException(getSerialNumber());
+        }
+
+        new Thread() {
+            @Override
+            public void run() {
+                try {
+                    mDevice.executeShellCommand(cmd, receiver);
+                } catch (IOException e) {
+                    Log.e("", e);
+                }
+            }
+        }.start();
+    }
+
+    /**
+     * Kill {@link Client} which running the test on the {@link Device}
+     *
+     * @param packageName the test package name
+     */
+    public void killProcess(String packageName) {
+        if (mStatus == STATUS_OFFLINE) {
+            return;
+        }
+        Client[] clients = mDevice.getClients();
+
+        for (Client c : clients) {
+            ClientData cd = c.getClientData();
+            if (cd.getClientDescription() == null) {
+                continue;
+            }
+            if (cd.getClientDescription().equals(packageName)) {
+                c.kill();
+                break;
+            }
+        }
+    }
+
+    /**
+     * Called when the {@link TestDevice} disconnected.
+     */
+    public void disconnected() {
+        CUIOutputStream.println("Device(" + getSerialNumber() + ") disconnected");
+        mStatus = STATUS_OFFLINE;
+        mDevice = null;
+        mSyncService = null;
+
+        synchronized (mObjectSync) {
+            mObjectSync.sendNotify();
+            mPackageActionTimer.stop();
+        }
+
+        if (mStatus == STATUS_BUSY) {
+            mDeviceObserver.notifyTestingDeviceDisconnected();
+        } else {
+            CUIOutputStream.printPrompt();
+        }
+    }
+
+    /**
+     * Set the status of the {@link TestDevice}
+     *
+     * @param statusCode the status code of {@link TestDevice}
+     */
+    public void setStatus(final int statusCode) {
+        if (statusCode != STATUS_IDLE && statusCode != STATUS_BUSY
+                && statusCode != STATUS_OFFLINE) {
+            throw new IllegalArgumentException("Invalid status code");
+        }
+        mStatus = statusCode;
+    }
+
+    /**
+     * Get the status code of the {@link TestDevice}.
+     *
+     * @return get the status code of the {@link TestDevice}
+     */
+    public int getStatus() {
+        return mStatus;
+    }
+
+    /**
+     * Get the status of the {@link TestDevice} as string.
+     *
+     * @return the status of the {@link TestDevice} as string.
+     */
+    public String getStatusAsString() {
+        return mStatusMap.get(mStatus);
+    }
+
+    /**
+     * Wait for command finish.
+     */
+    public void waitForCommandFinish() {
+        synchronized (mObjectSync) {
+            try {
+                mObjectSync.waitOn();
+            } catch (InterruptedException e) {
+            }
+        }
+    }
+    
+    /**
+     * Start the action timer.  
+     * 
+     * @param action the action to start the timer.
+     */
+    void startActionTimer(String action) {
+       mPackageActionTimer.start(action, this); 
+    }
+    
+    /**
+     * Stop the action timer.
+     */
+    void stopActionTimer() {
+        mPackageActionTimer.stop();        
+    }
+    
+    /**
+     * Allows an external test to signal that it's command is complete.
+     */
+    void notifyExternalTestComplete() {
+        synchronized (mObjectSync) {
+            mObjectSync.sendNotify();
+        }
+    }
+
+    /**
+     * Notify install complete.
+     */
+    public void notifyInstallingComplete(int resultCode) {
+        synchronized (mObjectSync) {
+            mObjectSync.sendNotify();
+            mPackageActionTimer.stop();
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyInstallingTimeout(TestDevice testDevice) {
+        synchronized (mObjectSync) {
+            mObjectSync.sendNotify();
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyTestingDeviceDisconnected() {
+        synchronized (mObjectSync) {
+            mObjectSync.sendNotify();
+            if (mPackageActionTimer != null) {
+                mPackageActionTimer.stop();
+            }
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyTestStatus(final Test test, final String status) {
+    }
+
+    /** {@inheritDoc} */
+    public void notifyUninstallingComplete(int resultCode) {
+        synchronized (mObjectSync) {
+            mObjectSync.sendNotify();
+            mPackageActionTimer.stop();
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyUninstallingTimeout(TestDevice testDevice) {
+        synchronized (mObjectSync) {
+            mObjectSync.sendNotify();
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyUpdateResult(int resCode, String failedMessage, String stackTrace) {
+    }
+
+    /**
+     * Synchronization object for communication between threads.
+     */
+    class ObjectSync {
+        private boolean mNotifySent = false;
+
+        /**
+         * Send notify to the waiting thread.
+         */
+        public void sendNotify() {
+            Log.d("ObjectSync.sendNotify() is called, mNotifySent=" + mNotifySent);
+            mNotifySent = true;
+            notify();
+        }
+
+        /**
+         * Wait on.
+         */
+        public void waitOn() throws InterruptedException {
+            Log.d("ObjectSync.waitOn() is called, mNotifySent=" + mNotifySent);
+            if (!mNotifySent) {
+                wait();
+            }
+
+            mNotifySent = false;
+        }
+
+        /**
+         * Check if notify has been sent to the waiting thread.
+         *
+         * @return If sent, return true; else, return false.
+         */
+        public boolean isNotified() {
+            return mNotifySent;
+        }
+    }
+}
diff --git a/tools/host/src/com/android/cts/TestHost.java b/tools/host/src/com/android/cts/TestHost.java
new file mode 100644
index 0000000..218afa7
--- /dev/null
+++ b/tools/host/src/com/android/cts/TestHost.java
@@ -0,0 +1,674 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      httprunPackage://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+
+import org.xml.sax.SAXException;
+
+import com.android.cts.HostConfig.CaseRepository;
+import com.android.cts.HostConfig.PlanRepository;
+import com.android.ddmlib.AndroidDebugBridge;
+
+/**
+ * Act as the host for the device connections, also provides management of
+ * sessions.
+ */
+public class TestHost extends XMLResourceHandler implements SessionObserver {
+    public static final String TEMP_PLAN_NAME = "tempPlan";
+
+    enum ActionType {
+        RUN_SINGLE_TEST, RUN_SINGLE_JAVA_PACKAGE, START_NEW_SESSION, RESUME_SESSION
+    }
+    /**
+     * Definition of the modes the TestHost will run with.
+     * <ul>
+     *    <li> RUN: For this mode, the TestHost will run the plan or
+     *              package directly without starting the UI.
+     *    <li> CONSOLE: For this mode, the TestHost will start the UI
+     *                  and wait for input from user.
+     * </ul>
+     */
+    enum MODE {
+        UNINITIALIZED, RUN, CONSOLE
+    }
+
+    static private ArrayList<TestSession> sSessions = new ArrayList<TestSession>();
+    static private DeviceManager sDeviceManager = new DeviceManager();
+    static private Object sTestSessionSync = new Object();
+
+    static private ConsoleUi sConsoleUi;
+
+    static private HostConfig sConfig;
+
+    private static TestHost sInstance;
+    static MODE sMode = MODE.UNINITIALIZED;
+
+    public static void main(final String[] mainArgs) {
+        if (HostLock.lock() == false) {
+            Log.e("Error: CTS is being used at the moment."
+                    + " No more than one CTS instance is allowed simultaneously", null);
+            exit();
+        }
+
+        sDeviceManager.initAdb();
+
+        sConsoleUi = new ConsoleUi(getInstance());
+        CommandParser cp = init(sConsoleUi, mainArgs);
+
+        if (sMode == MODE.RUN) {
+            try {
+                /* After booting up, the connection between
+                 * CTS host and device isn't ready. It's needed
+                 * to wait for 3 seconds for device ready to
+                 * start the the mode of no console UI.
+                 */
+                Thread.sleep(3000);
+                cp.removeKey(CTSCommand.OPTION_CFG);
+                sConsoleUi.processCommand(cp);
+            } catch (InterruptedException e) {
+                Log.e("Met InterruptedException", e);
+            } catch (Exception e) {
+                Log.e("Met exception when processing command", e);
+            }
+        } else if (sMode == MODE.CONSOLE) {
+            sConsoleUi.startUi();
+        }
+
+        exit();
+    }
+
+    /**
+     * Release host lock and then exit.
+     */
+    private static void exit() {
+        Log.closeLog();
+        HostLock.release();
+        System.exit(-1);
+    }
+
+    /**
+     * Extract mode from the options used to activating CTS.
+     *
+     * @param cp Command container.
+     * @return The mode.
+     */
+    static private MODE getMode(final CommandParser cp) {
+        String action = cp.getAction();
+        if ((action != null) && (action.equals(CTSCommand.START))) {
+            return MODE.RUN;
+        } else {
+            return MODE.CONSOLE;
+        }
+    }
+
+    /**
+     * Start zipped package.
+     *
+     * @param pathName  The path name of the zipped package.
+     */
+    public void startZippedPackage(final String pathName)
+                throws FileNotFoundException,
+                       IOException,
+                       ParserConfigurationException,
+                       TransformerFactoryConfigurationError,
+                       TransformerException,
+                       DeviceNotAvailableException,
+                       TestNotFoundException,
+                       SAXException,
+                       TestPlanNotFoundException,
+                       IllegalTestNameException,
+                       InterruptedException, DeviceDisconnectedException,
+                       NoSuchAlgorithmException {
+
+        // step 1: add package
+        if (!addPackage(pathName)) {
+            return;
+        }
+
+        // step 2: create plan
+        ArrayList<String> packages = new ArrayList<String>();
+        String pkgName = pathName.substring(pathName
+                .lastIndexOf(File.separator) + 1, pathName.lastIndexOf("."));
+        packages.add(pkgName);
+        HashMap<String, ArrayList<String>> selectedResult =
+                       new HashMap<String, ArrayList<String>>();
+        selectedResult.put(pkgName, null);
+        TestSessionBuilder.getInstance().serialize(TEMP_PLAN_NAME, packages, selectedResult);
+
+        // step 3: start the plan
+        TestSession ts = startSession(TEMP_PLAN_NAME, getFirstAvailableDevice().getSerialNumber(),
+                null);
+
+        // step 4: copy the result xml file
+        String resultName = pathName.substring(0, pathName.lastIndexOf("."))
+                + "_result.xml";
+        TestSessionLog log = ts.getSessionLog();
+        copyFile(log.getResultPath(), resultName);
+
+        // step 5: clear the temporary working environment
+        removePlans(TEMP_PLAN_NAME);
+        //give the system some time to avoid asserting
+        Thread.sleep(1000);
+
+        removePackages(pkgName);
+        //give the system some time to avoid asserting
+        Thread.sleep(1000);
+    }
+
+    /**
+     * Copy the source file to the destination file.
+     *
+     * @param srcFileName The name of the source file.
+     * @param dstFileName The name of the destination file.
+     */
+    private void copyFile(final String srcFileName, final String dstFileName) throws IOException {
+        FileReader input = new FileReader(new File(srcFileName));
+        BufferedWriter output = new BufferedWriter(new FileWriter(dstFileName));
+
+        int c;
+        while ((c = input.read()) != -1) {
+            output.write(c);
+        }
+
+        input.close();
+        output.flush();
+        output.close();
+    }
+
+    /**
+     * Add a package by the path and package name.
+     *
+     * @param pathName The path name.
+     * @return If succeed in adding package, return true; else, return false.
+     */
+    public boolean addPackage(final String pathName) throws FileNotFoundException,
+            IOException, NoSuchAlgorithmException {
+
+        CaseRepository caseRepo = sConfig.getCaseRepository();
+        if (!HostUtils.isFileExist(pathName)) {
+            Log.e("Package error: package file " + pathName + " doesn't exist.", null);
+            return false;
+        }
+
+        if (!caseRepo.isValidPackageName(pathName)) {
+            return false;
+        }
+
+        caseRepo.addPackage(pathName);
+        return true;
+    }
+
+    /**
+     * Remove plans from the plan repository according to the specific plan name.
+     *
+     * @param name The plan name.
+     */
+    public void removePlans(final String name) {
+        if ((name == null) || (name.length() == 0)) {
+            CUIOutputStream.println("Please add plan name or all as parameter.");
+            return;
+        }
+
+        PlanRepository planRepo = sConfig.getPlanRepository();
+        if (name.equals(HostConfig.ALL)) {
+            ArrayList<String> plans = planRepo.getAllPlanNames();
+            for (String plan : plans) {
+                removePlan(plan, planRepo);
+            }
+        } else {
+            if (!planRepo.getAllPlanNames().contains(name)) {
+                Log.e("No plan named " + name + " in repository!", null);
+                return;
+            }
+            removePlan(name, planRepo);
+        }
+    }
+
+    /**
+     * Remove a specified plan from the plan repository.
+     *
+     * @param planName The plan name.
+     * @param planRepo The plan repository.
+     */
+    private void removePlan(final String planName, final PlanRepository planRepo) {
+        File planFile = new File(planRepo.getPlanPath(planName));
+        if (!planFile.isFile() || !planFile.exists()) {
+            Log.e("Can't locate the file of the plan, please check your repository!", null);
+            return;
+        }
+
+        if (!planFile.canWrite()) {
+            Log.e("Can't delete this plan, permission denied!", null);
+            return;
+        }
+
+        if (!planFile.delete()) {
+            Log.e(planName + " plan file delete failed", null);
+        }
+    }
+
+    /**
+     * Remove packages from the case repository..
+     *
+     * @param packageName The java package name to be removed from the case repository.
+     */
+    public void removePackages(final String packageName)
+            throws IndexOutOfBoundsException {
+        CaseRepository caseRepo = sConfig.getCaseRepository();
+
+        if ((packageName == null) || (packageName.length() == 0)) {
+            CUIOutputStream.println("Please add package name or all as parameter.");
+            return;
+        }
+
+        caseRepo.removePackages(packageName);
+    }
+
+    /**
+     * Initialize TestHost with the arguments passed in.
+     *
+     * @param mainArgs The arguments.
+     * @return CommandParser which contains the command and options.
+     */
+    static CommandParser init(final ConsoleUi cui, final String[] mainArgs) {
+        CommandParser cp = null;
+        String cfgPath= null;
+
+        if (mainArgs.length == 0) {
+            sMode = MODE.CONSOLE;
+            cfgPath = System.getProperty("HOST_CONFIG");
+            if ((cfgPath == null) || (cfgPath.length() == 0)) {
+                Log.e("Please make sure environment variable CTS_HOST_CFG is "
+                       + "set as {cts install path}[/host_config.xml].", null);
+                exit();
+            }
+        } else if (mainArgs.length == 1) {
+            sMode = MODE.CONSOLE;
+            cfgPath = mainArgs[0];
+        } else {
+            String cmdLine = "";
+            for (int i = 0; i < mainArgs.length; i ++) {
+                cmdLine += mainArgs[i] + " ";
+            }
+
+            try {
+                cp = CommandParser.parse(cmdLine);
+                if (!cui.validateCommandParams(cp)) {
+                    Log.e("Please type in arguments correctly to activate CTS.", null);
+                    exit();
+                }
+            } catch (UnknownCommandException e1) {
+                Log.e("Please type in arguments correctly to activate CTS.", null);
+                exit();
+            } catch (CommandNotFoundException e1) {
+                Log.e("Please type in arguments correctly to activate CTS.", null);
+                exit();
+            }
+
+            sMode = getMode(cp);
+            if (sMode == MODE.RUN) {
+                if (cp.containsKey(CTSCommand.OPTION_CFG)) {
+                    cfgPath = cp.getValue(CTSCommand.OPTION_CFG);
+                } else {
+                    cfgPath = System.getProperty("HOST_CONFIG");
+                    if ((cfgPath == null) || (cfgPath.length() == 0)) {
+                        Log.e("Please make sure environment variable CTS_HOST_CFG "
+                               + "is set as {cts install path}[/host_config.xml].", null);
+                        exit();
+                    }
+                }
+            }
+        }
+
+        if ((cfgPath == null) || (cfgPath.length() == 0)) {
+            Log.e("Please type in arguments correctly to activate CTS.", null);
+            exit();
+        }
+
+        String filePath = getConfigFilePath(cfgPath);
+        try {
+            if (loadConfig(filePath) == false) {
+                exit();
+            }
+        } catch (Exception e) {
+            Log.e("Error while parsing cts config file", e);
+            exit();
+        }
+
+        Log.initLog(sConfig.getConfigRoot());
+        return cp;
+    }
+
+    /**
+     * Singleton generator.
+     *
+     * @return The TestHost.
+     */
+    public static TestHost getInstance() {
+        if (sInstance == null) {
+            sInstance = new TestHost();
+        }
+
+        return sInstance;
+    }
+
+    /**
+     * Get configuration file from the arguments given.
+     *
+     * @param filePath The file path.
+     * @return The the path of the configuration file.
+     */
+    static private String getConfigFilePath(final String filePath) {
+        if (filePath != null) {
+            if (!HostUtils.isFileExist(filePath)) {
+                Log.e("Configuration file \"" + filePath + "\" doesn't exist.", null);
+                exit();
+            }
+        } else {
+            Log.e("Configuration file doesn't exist.", null);
+            exit();
+        }
+
+        return filePath;
+    }
+
+    /**
+     * Load configuration from the given file.
+     *
+     * @param configPath The configuration path.
+     * @return If succeed, return true; else, return false.
+     */
+    static boolean loadConfig(final String configPath) throws SAXException,
+            IOException, ParserConfigurationException, NoSuchAlgorithmException {
+        sConfig = HostConfig.getInstance();
+
+        return sConfig.load(configPath);
+    }
+
+    /**
+     * Get case repository.
+     *
+     * @return The case repository.
+     */
+    public HostConfig.CaseRepository getCaseRepository() {
+        return sConfig.getCaseRepository();
+    }
+
+    /**
+     * Get plan repository.
+     *
+     * @return The plan repository.
+     */
+    public HostConfig.PlanRepository getPlanRepository() {
+        return sConfig.getPlanRepository();
+    }
+
+    /**
+     * Run the specified {@link TestSession} on the specified {@link TestDevice}(s)
+     *
+     * @param ts the specified {@link TestSession}
+     * @param deviceId the ID of the specified {@link TestDevice}
+     * @param testFullName The full name of the test to be run.
+     * @param javaPkgName The specific java package name to be run.
+     * @param type The action type to activate the test session.
+     */
+    static private void runTest(final TestSession ts, final String deviceId,
+            final String testFullName, final String javaPkgName, ActionType type) throws
+            DeviceNotAvailableException, TestNotFoundException, IllegalTestNameException,
+            DeviceDisconnectedException {
+        if (ts == null) {
+            return;
+        }
+
+        TestDevice device = sDeviceManager.allocateFreeDeviceById(deviceId);
+        TestSessionLog sessionLog = ts.getSessionLog();
+        ts.setTestDevice(device);
+
+        sessionLog.setDeviceInfo(device.getDeviceInfo());
+
+        switch (type) {
+        case RUN_SINGLE_TEST:
+            ts.start(testFullName);
+            break;
+
+        case RUN_SINGLE_JAVA_PACKAGE:
+            ts.start(javaPkgName);
+            break;
+
+        case START_NEW_SESSION:
+            ts.start();
+            break;
+
+        case RESUME_SESSION:
+            ts.resume();
+            break;
+        }
+
+        synchronized (sTestSessionSync) {
+            try {
+                sTestSessionSync.wait();
+            } catch (InterruptedException e) {
+                Log.e("", e);
+            }
+        }
+
+        sDeviceManager.resetTestDevice(device);
+    }
+
+    /**
+     * Create {@link TestSession} according to the specified test plan.
+     *
+     * @param testPlanName the name of the specified test plan
+     * @return a {@link TestSession} 
+     */
+    static public TestSession createSession(final String testPlanName)
+            throws IOException, TestNotFoundException, SAXException,
+            ParserConfigurationException, TestPlanNotFoundException, NoSuchAlgorithmException {
+
+        String testPlanPath = sConfig.getPlanRepository().getPlanPath(testPlanName);
+        TestSession ts = TestSessionBuilder.getInstance().build(testPlanPath);
+        ts.setObserver(getInstance());
+        sSessions.add(ts);
+
+        return ts;
+    }
+
+    /** {@inheritDoc} */
+    public void notifyFinished(final TestSession ts) {
+        // As test run on a session, so just keep session info in debug level
+        Log.d("Session " + ts.getId() + " finished.");
+
+        synchronized (sTestSessionSync) {
+            sTestSessionSync.notify();
+        }
+        ts.getSessionLog().dumpToFile();
+    }
+
+    /**
+     * Tear down ADB connection.
+     */
+    public void tearDown() {
+        AndroidDebugBridge.disconnectBridge();
+        AndroidDebugBridge.terminate();
+    }
+
+    /**
+     * Get the sessions connected with devices.
+     *
+     * @return The sessions.
+     */
+    public Collection<TestSession> getSessions() {
+        return sSessions;
+    }
+
+    /**
+     * Get session by session ID.
+     *
+     * @param sessionId The session ID.
+     * @return The session.
+     */
+    public TestSession getSession(final int sessionId) {
+        for (TestSession session : sSessions) {
+            if (session.getId() == sessionId) {
+                return session;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Get session by test plan name.
+     *
+     * @param testPlanName Test plan name.
+     * @return The session corresponding to the test plan name.
+     */
+    public ArrayList<TestSession> getSessionList(final String testPlanName) {
+        ArrayList<TestSession> list = new ArrayList<TestSession>();
+        for (TestSession session : sSessions) {
+            if (testPlanName.equals(session.getSessionLog().getTestPlanName())) {
+                list.add(session);
+            }
+        }
+        return list;
+    }
+
+    /**
+     * List the ID, name and status of all {@link TestDevice} which connected to
+     * the {@link TestHost}.
+     *
+     * @return a string list of {@link TestDevice}'s id, name and status.
+     */
+    public String[] listDevices() {
+        ArrayList<String> deviceList = new ArrayList<String>();
+        TestDevice[] devices = sDeviceManager.getDeviceList();
+
+        for (TestDevice device : devices) {
+            deviceList.add(device.getSerialNumber() + "\t" + device.getStatusAsString());
+        }
+        return deviceList.toArray(new String[deviceList.size()]);
+    }
+
+    /**
+     * Get device list connected with the host.
+     *
+     * @return The device list connected with the host.
+     */
+    public TestDevice[] getDeviceList() {
+        return sDeviceManager.getDeviceList();
+    }
+
+    /**
+     * Get the first available device.
+     * 
+     * @return the first available device or null if none are available.
+     */
+    public TestDevice getFirstAvailableDevice() {
+        for (TestDevice td : sDeviceManager.getDeviceList()) {
+            if (td.getStatus() == TestDevice.STATUS_IDLE) {
+                return td;
+            }
+        }
+        return null;
+    }
+    
+    /**
+     * Get session logs.
+     *
+     * @return Session logs.
+     */
+    public Collection<TestSessionLog> getSessionLogs() {
+        ArrayList<TestSessionLog> sessionLogs = new ArrayList<TestSessionLog>();
+        for (TestSession session : sSessions) {
+            sessionLogs.add(session.getSessionLog());
+        }
+        return sessionLogs;
+    }
+    /**
+     * Start a test session.
+     *
+     * @param testPlanName TestPlan config file name
+     * @param deviceId Target device ID
+     * @param javaPkgName The specific java package name to be run.
+     */
+    public TestSession startSession(final String testPlanName,
+            String deviceId, final String javaPkgName)
+            throws IOException, DeviceNotAvailableException,
+            TestNotFoundException, SAXException, ParserConfigurationException,
+            TestPlanNotFoundException, IllegalTestNameException,
+            DeviceDisconnectedException, NoSuchAlgorithmException {
+
+        TestSession ts = createSession(testPlanName);
+        if ((javaPkgName != null) && (javaPkgName.length() != 0)) {
+            runTest(ts, deviceId, null, javaPkgName, ActionType.RUN_SINGLE_JAVA_PACKAGE);
+        } else {
+            runTest(ts, deviceId, null, javaPkgName, ActionType.START_NEW_SESSION);
+        }
+
+        ts.getSessionLog().dumpToFile();
+        return ts;
+    }
+
+    /**
+     * Start a test session.
+     *
+     * @param ts The test session.
+     * @param deviceId Target device ID.
+     * @param testFullName Specific test full name.
+     * @param javaPkgName The specific java package name to be run.
+     * @param type The action type to activate the test session.
+     */
+    public TestSession startSession(final TestSession ts, String deviceId,
+            final String testFullName, final String javaPkgName, ActionType type)
+            throws DeviceNotAvailableException,
+            TestNotFoundException, IllegalTestNameException,
+            DeviceDisconnectedException {
+
+        runTest(ts, deviceId, testFullName, javaPkgName, type);
+        ts.getSessionLog().dumpToFile();
+        return ts;
+    }
+
+    /**
+     * Get plan name from what is typed in by the user.
+     *
+     * @param rawPlanName The raw plan name.
+     * @return The plan name.
+     */
+    public String getPlanName(final String rawPlanName) {
+        if (rawPlanName.indexOf("\\") != -1) {
+            return rawPlanName.replaceAll("\\\\", "");
+        }
+        if (rawPlanName.indexOf("\"") != -1) {
+            return rawPlanName.replaceAll("\"", "");
+        }
+        return rawPlanName;
+    }
+}
diff --git a/tools/host/src/com/android/cts/TestNotFoundException.java b/tools/host/src/com/android/cts/TestNotFoundException.java
new file mode 100644
index 0000000..1990743
--- /dev/null
+++ b/tools/host/src/com/android/cts/TestNotFoundException.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+/**
+ * Exception on test not found.
+ *
+ */
+public class TestNotFoundException extends Exception {
+
+    private static final long serialVersionUID = 167003945777574277L;
+
+    public TestNotFoundException() {
+        super();
+    }
+
+    public TestNotFoundException(final String msg) {
+        super(msg);
+    }
+}
diff --git a/tools/host/src/com/android/cts/TestPackage.java b/tools/host/src/com/android/cts/TestPackage.java
new file mode 100644
index 0000000..be9e6ab
--- /dev/null
+++ b/tools/host/src/com/android/cts/TestPackage.java
@@ -0,0 +1,1038 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.TimerTask;
+
+import sun.misc.BASE64Encoder;
+
+import com.android.cts.TestSession.TestSessionThread;
+
+/**
+ * Correspond to an APK, provide functions on
+ * representing and executing an APK from CTS test harness.
+ */
+public class TestPackage implements DeviceObserver {
+    protected static final String PKG_LOG_SEPARATOR =
+              "==============================================================";
+
+    /**
+     * For batch mode, there is just one command sent to the device
+     * for the whole package, and the device will feed back the result
+     * test by test. To guard the command, a timeout timer is started
+     * to prevent it from running forever. And to make the timeout time
+     * not too long, it's better choice to restart the timer each time
+     * received the feedback from device. The following two variables
+     * are used to restart/stop the timer, START for restarting and
+     * FINISH for stopping. 
+     */
+    public static final String FINISH = "finish";
+    public static final String START = "start";
+
+    private String mName, mVersion, mAndroidVersion;
+    private String mTargetNameSpace, mTargetBinaryName, mInstrumentationRunner;
+    private Collection<TestSuite> mSuites;
+    private String mDigest;
+    private String mJarPath;
+    private String mAppNameSpace;
+    private String mAppPackageName;
+
+    protected TestSuite mCurrentTestSuite;
+
+    protected TestDevice mDevice;
+    private MessageDigest mMsgDigest;
+
+    protected boolean mTestStop;
+    private TestSessionThread mTestThread;
+    private boolean mEnableBatchMode = true;
+
+    private HostTimer mTimeOutTimer;
+    private ProgressObserver mProgressObserver;
+    private boolean mIsInBatchMode;
+    private Test mCurrentTest;
+
+    /**
+     * Construct a test package with given necessary information.
+     *
+     * @param instrumentationRunner The instrumentation runner.
+     * @param testPkgBinaryName The binary name of the TestPackage.
+     * @param targetNameSpace The target name space of the dependent package, if available.
+     * @param version The version of the CTS Host allowed.
+     * @param androidVersion The version of the Anroid platform allowed.
+     * @param jarPath The host controller's jar path and file.
+     * @param appNameSpace The package name space.
+     * @param appPackageName The Java package name of the test package.
+     */
+    public TestPackage(final String instrumentationRunner,
+            final String testPkgBinaryName, final String targetNameSpace,
+            final String targetBinaryName, final String version,
+            final String androidVersion, final String jarPath, final String appNameSpace,
+            final String appPackageName) throws NoSuchAlgorithmException {
+        mInstrumentationRunner = instrumentationRunner;
+        mName = testPkgBinaryName;
+        mTargetNameSpace = targetNameSpace;
+        mTargetBinaryName = targetBinaryName;
+        mVersion = version;
+        mAndroidVersion = androidVersion;
+        mSuites = new ArrayList<TestSuite>();
+        mJarPath = jarPath;
+        mAppNameSpace = appNameSpace;
+        mAppPackageName = appPackageName;
+
+        mDevice = null;
+        mTestStop = false;
+        mTestThread = null;
+        mIsInBatchMode = false;
+        mCurrentTest = null;
+        mMsgDigest = MessageDigest.getInstance("SHA-1");
+    }
+
+    /**
+     * Get the app package name space.
+     *
+     * @return The app package name space.
+     */
+    public String getAppNameSpace() {
+        return mAppNameSpace;
+    }
+
+    /**
+     * Get the app JAVA package name.
+     *
+     * @return The app JAVA package name.
+     */
+    public String getAppPackageName() {
+        return mAppPackageName;
+    }
+
+    /**
+     * Returns whether this is a host side test package.
+     */
+    public boolean isHostSideOnly() {
+        return false;
+    }
+
+    /**
+     * Add a TestSuite.
+     *
+     * @param suite The TestSuite to be added.
+     */
+    public void addTestSuite(final TestSuite suite) {
+        mSuites.add(suite);
+    }
+
+    /**
+     * Get test suites under this package.
+     *
+     * @return The test suites under this package.
+     */
+    public Collection<TestSuite> getTestSuites() {
+        return mSuites;
+    }
+
+    /**
+     * Get the specific test suite by the full suite name.
+     *
+     * @param suiteFullName The full suite name.
+     * @return The test suite.
+     */
+    public TestSuite getTestSuiteByName(final String suiteFullName) {
+        for (TestSuite suite : getAllTestSuites()) {
+            if (suite.getFullName().equals(suiteFullName)) {
+                return suite;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Get the specific test case by the full test case name.
+     *
+     * @param testCaseFullName The full test case name.
+     * @return The test case.
+     */
+    public TestCase getTestCaseByName(final String testCaseFullName) {
+        for (TestCase testCase : getAllTestCases()) {
+            if (testCase.getFullName().equals(testCaseFullName)) {
+                return testCase;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Get all of test suites under this package.
+     *
+     * @return All of the test suites under this package.
+     */
+    public Collection<TestSuite> getAllTestSuites() {
+        Collection<TestSuite> suites = new ArrayList<TestSuite>();
+        for (TestSuite suite : mSuites) {
+            suites.addAll(suite.getAllSuites());
+        }
+        return suites;
+    }
+
+    /**
+     * Get suite/case names contained in this test package, searched against the expected name.
+     *
+     * @param expectName The expected name.
+     * @param suiteNameList The suite names list.
+     * @param caseNameList The case names list.
+     */
+    public void getTestSuiteNames(final String expectName,
+            ArrayList<String> suiteNameList, ArrayList<String> caseNameList) {
+
+        for (TestCase testCase : getAllTestCases()) {
+            String testCaseName = testCase.getFullName();
+            if (testCaseName.startsWith(expectName)) {
+                String suiteName = testCaseName.substring(0, testCaseName.lastIndexOf("."));
+                if (suiteName.equals(expectName)) {
+                    if (!caseNameList.contains(testCaseName)) {
+                        caseNameList.add(testCaseName);
+                    }
+                } else {
+                    if (!suiteNameList.contains(suiteName)) {
+                        suiteNameList.add(suiteName);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Get all test suite names contained in this test package.
+     *
+     * @return The test suite name list.
+     */
+    public ArrayList<String> getAllTestSuiteNames() {
+        ArrayList<String> suiteNameList = new ArrayList<String>();
+        for (TestCase testCase : getAllTestCases()) {
+            String testCaseName = testCase.getFullName();
+            String suiteName = testCaseName.substring(0, testCaseName.lastIndexOf("."));
+            if (!suiteNameList.contains(suiteName)) {
+                suiteNameList.add(suiteName);
+            }
+        }
+        return suiteNameList;
+    }
+
+    /**
+     * Get all test case names contained in the suite in this test package.
+     *
+     * @param suiteFullName The full suite name.
+     * @return All test case names.
+     */
+    public ArrayList<String> getAllTestCaseNames(final String suiteFullName) {
+        ArrayList<String> caseNameList = new ArrayList<String>();
+        TestSuite suite = getTestSuiteByName(suiteFullName);
+        if (suite != null) {
+            caseNameList.addAll(suite.getAllTestCaseNames());
+        }
+        return caseNameList;
+    }
+
+    /**
+     * Get all test names contained in the test case in this test package.
+     *
+     * @param testCaseFullName The full test case name.
+     * @return All test names.
+     */
+    public ArrayList<String> getAllTestNames(final String testCaseFullName) {
+        ArrayList<String> testNameList = new ArrayList<String>();
+        TestCase testCase = getTestCaseByName(testCaseFullName);
+        if (testCase != null) {
+            testNameList.addAll(testCase.getAllTestNames());
+        }
+        return testNameList;
+    }
+
+    /**
+     * Get test case names list.
+     *
+     * @param expectPackage The expected package name.
+     * @param caseList The searched test case result.
+     * @param testList The searched test result.
+     */
+    public void getTestCaseNames(final String expectPackage, ArrayList<String> caseList,
+            ArrayList<String> testList) {
+
+        for (TestCase testCase : getAllTestCases()) {
+            String testCaseName = testCase.getFullName();
+            if (testCaseName.equals(expectPackage)) {
+                for (Test test : testCase.getTests()) {
+                    testList.add(test.getFullName());
+                }
+                return;
+            } else if (testCaseName.startsWith(expectPackage)) {
+                caseList.add(testCaseName);
+            }
+        }
+    }
+
+    /**
+     * Get test names list.
+     *
+     * @param expectPackage The expected package name.
+     * @param testList The searched test result.
+     */
+    public void getTestNames(final String expectPackage, ArrayList<String> testList) {
+
+        for (Test test : getTests()) {
+            String testName = test.getFullName();
+            if (testName.startsWith(expectPackage)) {
+                testList.add(testName);
+            }
+        }
+    }
+
+    /**
+     * Get the binary name of this package.
+     *
+     * @return The binary name of this package.
+     */
+    public String getAppBinaryName() {
+        return mName;
+    }
+
+    /**
+     * Get the version string of this package.
+     *
+     * @return The version string of this package.
+     */
+    public String getVersion() {
+        return mVersion;
+    }
+
+    /**
+     * Get the version information of Android.
+     *
+     * @return The version information of Android.
+     */
+    public String getAndroidVersion() {
+        return mAndroidVersion;
+    }
+
+    /**
+     * Get the target name space of this package.
+     *
+     * @return The target name space of the package.
+     */
+    public String getTargetNameSpace() {
+        return mTargetNameSpace;
+    }
+
+    /**
+     * Get the target binary name.
+     *
+     * @return The target binary name.
+     */
+    public String getTargetBinaryName() {
+        return mTargetBinaryName;
+    }
+
+    /**
+     * Get the instrumentation runner.
+     *
+     * @return The instrumentation runner.
+     */
+    public String getInstrumentationRunner() {
+        return mInstrumentationRunner;
+    }
+
+    /**
+     * Search a specific Test within this package.
+     *
+     * @param testName The test name to be searched against.
+     * @return The Test matches the given name.
+     */
+    public Test searchTest(final String testName) {
+        Test test = null;
+        for (TestSuite suite : mSuites) {
+            test = suite.searchTest(testName);
+            if (test != null) {
+                break;
+            }
+        }
+
+        return test;
+    }
+
+    /**
+     * Get all tests of this test package.
+     *
+     * @return The tests of this test package.
+     */
+    public Collection<Test> getTests() {
+        ArrayList<Test> tests = new ArrayList<Test>();
+        for (TestSuite s : mSuites) {
+            tests.addAll(s.getTests());
+        }
+
+        return tests;
+    }
+
+    /**
+     * Get all test cases of this test package.
+     *
+     * @return The test cases of this test package.
+     */
+    public Collection<TestCase> getAllTestCases() {
+        ArrayList<TestCase> testCases = new ArrayList<TestCase>();
+        for (TestSuite s : mSuites) {
+            testCases.addAll(s.getAllTestCases());
+        }
+
+        return testCases;
+    }
+
+    /**
+     * Set the message digest of the test package.
+     *
+     * @param digest the string of the package's message digest.
+     */
+    private void setMessageDigest(final String digest) {
+        mDigest = digest;
+    }
+
+    /**
+     * Get the string of package's message digest.
+     *
+     * @return message digest string.
+     */
+    public String getMessageDigest() {
+        return mDigest;
+    }
+
+    /**
+     * Get the the path of the controller jar file.
+     *
+     * @return message digest string.
+     */
+    public String getJarPath() {
+        return mJarPath;
+    }
+
+    /**
+     * Print the message by appending the new line mark.
+     *
+     * @param msg The message to be print.
+     */
+    protected void println(final String msg) {
+        if (!mTestStop) {
+            CUIOutputStream.println(msg);
+        }
+    }
+
+    /**
+     * Print the message without appending the new line mark.
+     *
+     * @param msg The message to be print.
+     */
+    protected void print(final String msg) {
+        if (!mTestStop) {
+            CUIOutputStream.print(msg);
+        }
+    }
+
+    /**
+     * Handle the missing FINISH event.
+     */
+    private void handleMissingFinishEvent() {
+        mProgressObserver.stop();
+        mTimeOutTimer.cancel(false);
+        mCurrentTest.setResult(TestSessionLog.CTS_RESULT_CODE_FAIL, null, null);
+        mCurrentTest = null;
+    }
+
+    /** {@inheritDoc} */
+    public void notifyTestStatus(final Test test, final String status) {
+        if (mTestStop) {
+            return;
+        }
+
+        if (mIsInBatchMode) {
+            if (status.equals(START)) {
+                if ((mCurrentTest != null)
+                        && (mCurrentTest.getResultCode()
+                                == TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED)) {
+                    Log.d("Err: not received FINISH msg for test " + mCurrentTest.getFullName());
+                    handleMissingFinishEvent();
+                }
+                mCurrentTest = test;
+                print(mCurrentTest.getFullName() + "...");
+                mProgressObserver.start();
+                mTimeOutTimer.restart(new TimeOutTask(this), TimeOutTask.DELAY);
+            } else{
+                mProgressObserver.stop();
+                mTimeOutTimer.cancel(false);
+                mCurrentTest = null;
+            }
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyUpdateResult(final int resCode,
+            final String failedMessage, final String stackTrace) {
+        Log.d("notifyUpdateResult() is called, mTestStop=" + mTestStop);
+        if (mTestStop) {
+            return;
+        }
+
+        if (mIsInBatchMode) {
+            if (mCurrentTest != null) {
+                handleMissingFinishEvent();
+            }
+            synchronized (mTimeOutTimer) {
+                mTimeOutTimer.sendNotify();
+            }
+        } else {
+            mCurrentTestSuite.notifyUpdateResult(resCode, failedMessage, stackTrace);
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyInstallingComplete(final int resultCode) {
+        Log.d("notifyInstallingComplete() is called with resultCode=" + resultCode);
+        sendNotify();
+
+        if (resultCode == FAIL) {
+            Log.d("install failed");
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyUninstallingComplete(final int resultCode) {
+        Log.d("notifyUninstallingComplete() is called with resultCode=" + resultCode);
+        sendNotify();
+
+        if (resultCode == FAIL) {
+            Log.d("uninstall failed");
+        }
+    }
+
+    /**
+     * Send notify to wake up the thread waiting on the object.
+     */
+    private void sendNotify() {
+        synchronized (this) {
+            notify();
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyInstallingTimeout(final TestDevice testDevice) {
+        Log.d("TestPackage.notifyInstallingTimeout() is called");
+        mTestStop = true;
+        synchronized (this) {
+            notify();
+        }
+
+        genPackageActionTimeoutCause(testDevice, "Installing");
+    }
+
+    /** {@inheritDoc} */
+    public void notifyUninstallingTimeout(final TestDevice testDevice) {
+        Log.d("TestPackage.notifyUninstallingTimeout() is called");
+        mTestStop = true;
+        synchronized (this) {
+            notify();
+        }
+
+        genPackageActionTimeoutCause(testDevice, "Uninstalling");
+    }
+
+    /**
+     * Generate the cause of package action timeout.
+     *
+     * @param testDevice The {@link TestDevice} which got timeout.
+     * @param type Install or Uninstall.
+     */
+    private void genPackageActionTimeoutCause(final TestDevice testDevice, String type) {
+        String cause;
+        if (testDevice.getStatus() == TestDevice.STATUS_OFFLINE) {
+            cause = testDevice.getSerialNumber() + " is offline.";
+        } else {
+            cause = "Unknown reason.";
+        }
+
+        if (type == null) {
+            type = "Unknown timer";
+        }
+        Log.e(type + " met timeout due to " + cause, null);
+    }
+
+    /** {@inheritDoc} */
+    public void notifyTestingDeviceDisconnected() {
+        Log.d("busyDeviceDisconnected invoked");
+        mTestStop = true;
+        synchronized (this) {
+            notify();
+        }
+
+        cleanUp();
+
+        try {
+            CUIOutputStream.println("Test stoped.");
+            mTestThread.join();
+        } catch (InterruptedException e) {
+            Log.e("", e);
+        }
+    }
+
+    /**
+     * Set the {@link TestDevice} which will run the test.
+     *
+     * @param device The {@link TestDevice} will run the test.
+     */
+    public void setTestDevice(final TestDevice device) {
+        mDevice = device;
+        device.setRuntimeListener(this);
+        device.setStatus(TestDevice.STATUS_BUSY);
+    }
+
+    /**
+     * Get the full path information.
+     *
+     * @param binaryFileName The binary file name.
+     * @return The full path information.
+     */
+    private String getFullPath(String binaryFileName) {
+        String packagePath = null;
+        if ((binaryFileName != null) && (binaryFileName.length() != 0)) {
+            packagePath = HostConfig.getInstance().getCaseRepository()
+                .getApkPath(binaryFileName);
+        }
+        return packagePath;
+    }
+    /**
+     * Load(install) test package and target package(if it exists).
+     *
+     * @return If succeed in installing, return true; else, return false.
+     */
+    private boolean install() throws DeviceDisconnectedException {
+        String packageBinaryName = getAppBinaryName();
+        String targetBinaryName = getTargetBinaryName();
+        String packagePath = getFullPath(packageBinaryName);
+        String targetApkPath = getFullPath(targetBinaryName);
+
+        boolean success = true;
+        if (packagePath != null) {
+            if (HostUtils.isFileExist(packagePath)) {
+                installAPK(packagePath);
+                if (!mTestStop) {
+                    if (targetApkPath != null) {
+                        if (HostUtils.isFileExist(targetApkPath)) {
+                            installAPK(targetApkPath);
+                        } else {
+                            success = false;
+                            Log.e("The following APK file doesn't exist: " + targetApkPath, null);
+                        }
+                    }
+                }
+            } else {
+                success = false;
+                Log.e("The following APK file doesn't exist: " + packagePath, null);
+            }
+        } else {
+            success = false;
+            Log.e("The package binary name contains nothing!", null);
+        }
+
+        if (mTestStop) {
+            success = false;
+            println("Install package " + packageBinaryName + "failed");
+        }
+
+        return success;
+    }
+
+    /**
+     * Uninstall test package and target package(if it exists)
+     */
+    private void uninstall() throws DeviceDisconnectedException {
+
+        String testPkgBinaryName = getAppBinaryName();
+        String appNameSpace = getAppNameSpace();
+        String targetNameSpace = getTargetNameSpace();
+        String packagePath = getFullPath(testPkgBinaryName);
+        String targetApkPath = getFullPath(targetNameSpace);
+
+        if ((packagePath != null) && HostUtils.isFileExist(packagePath)) {
+            uninstallAPK(appNameSpace);
+            if ((!mTestStop) && (targetNameSpace != null)
+                    && ((targetApkPath != null) && (HostUtils.isFileExist(targetApkPath)))) {
+                uninstallAPK(targetNameSpace);
+            }
+        }
+    }
+
+    /**
+     * Uninstall the specified package(.apk)
+     */
+    private void uninstallAPK(final String packageName) throws DeviceDisconnectedException {
+        Log.d("Uninstall: " + packageName);
+        mDevice.uninstallAPK(packageName);
+        waitPackageActionComplete();
+    }
+
+    /**
+     * Install the test package on the devices attached to this session.
+     *
+     * @param apkPath The test package to be installed.
+     */
+    private void installAPK(final String apkPath) throws DeviceDisconnectedException {
+        Log.d("installAPK " + apkPath + " ...");
+        mDevice.installAPK(apkPath);
+        waitPackageActionComplete();
+        Log.d("installAPK " + apkPath + " finish");
+    }
+
+    /**
+     * Wait for package action to complete.
+     */
+    private void waitPackageActionComplete() {
+        Log.d("Enter waitPackageActionComplete()");
+        synchronized (this) {
+            if (!mTestStop) {
+                try {
+                    wait();
+                } catch (InterruptedException e) {
+                    Log.e("", e);
+                }
+            }
+        }
+        Log.d("Leave waitPackageActionComplete()");
+    }
+
+    /**
+     * Generate the message digest of the specified package
+     *
+     * @param packagePath path to the package.
+     * @return message digest string(base64 encoded).
+     */
+    private String genMessageDigest(final String packagePath) throws IOException {
+
+        BASE64Encoder base64Encoder = new BASE64Encoder();
+        FileInputStream fin = new FileInputStream(packagePath);
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        byte[] buffer = new byte[1024];
+        int len;
+        while ((len = fin.read(buffer)) != -1) {
+            bos.write(buffer, 0, len);
+        }
+        fin.close();
+
+        mMsgDigest.update(bos.toByteArray());
+        return base64Encoder.encodeBuffer(mMsgDigest.digest());
+    }
+
+    /**
+     * Set the test session thread.
+     *
+     * @param thread
+     */
+    public void setSessionThread(TestSessionThread thread) {
+        mTestThread = thread;
+    }
+
+    /**
+     * Check if it's valid to use batch mode.
+     *
+     * @return If each test under this package doesn't depend on any host controller, return true;
+     *         else, return false;
+     */
+    private boolean isInBatchMode() {
+        for (Test test : getTests()) {
+            if (test.getResultCode() != TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED) {
+                // if any test has been run, use individual mode
+                return false;
+            }
+
+            if ((test.getTestController() != null)
+                && (test.getTestController().getFullName() != null)) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Run this package or the java package contained in this package in batch mode.
+     *
+     * @param javaPkgName The java package name. If null, run the whole package;
+     *              else, run the specified java package contained in this package
+     */
+    private void runInBatchMode(final String javaPkgName)
+            throws DeviceDisconnectedException {
+        mTimeOutTimer = new HostTimer(new TimeOutTask(this), TimeOutTask.DELAY);
+        mTimeOutTimer.start();
+        mProgressObserver = new ProgressObserver();
+
+        mDevice.runInBatchMode(this, javaPkgName);
+
+        synchronized (mTimeOutTimer) {
+            if (!mTestStop) {
+                try {
+                    mTimeOutTimer.waitOn();
+                } catch (InterruptedException e) {
+                    Log.d("time out object interrupted");
+                }
+            }
+
+            mProgressObserver.stop();
+            if (mTimeOutTimer.isTimeOut()) {
+                return;
+            } else {
+                // not caused by watch dog timer timing out,
+                // need to cancel timer
+                mTimeOutTimer.cancel(false);
+            }
+        }
+    }
+
+    /**
+     * Run this package in individual mode.
+     *
+     * @param javaPkgName The java package name.
+     */
+    protected void runInIndividualMode(final String javaPkgName) throws IOException,
+                    DeviceDisconnectedException {
+        Iterator<TestSuite> suites = getTestSuites().iterator();
+        while (suites.hasNext() && (!mTestStop)) {
+            mCurrentTestSuite = suites.next();
+            mCurrentTestSuite.run(mDevice, javaPkgName);
+        }
+    }
+
+    /**
+     * The timer task which aids in guarding the running package with the
+     * guarding timer. If the executing of the package is not finished, and the
+     * guarding timer is expired, this task will be executed to force the finish
+     * of the running package.
+     */
+    class TimeOutTask extends TimerTask {
+        private final static int DELAY = 60000;
+
+        private TestPackage mTestPackage;
+
+        public TimeOutTask(final TestPackage testPackage) {
+            mTestPackage = testPackage;
+        }
+
+        @Override
+        public void run() {
+            mProgressObserver.stop();
+            synchronized (mTimeOutTimer) {
+                mTimeOutTimer.cancel(true);
+                mTimeOutTimer.sendNotify();
+            }
+
+            if ((mIsInBatchMode) && (mCurrentTest != null)) {
+                mCurrentTest.setResult(TestSessionLog.CTS_RESULT_CODE_TIMEOUT, null, null);
+            }
+
+            Log.d("mTimeOutTimer timed out");
+            killDeviceProcess(mTestPackage.getAppPackageName());
+        }
+    }
+
+    /**
+     * Kill the device process.
+     *
+     * @param packageName
+     */
+    private void killDeviceProcess(final String packageName) {
+        mDevice.killProcess(packageName);
+    }
+
+    /**
+     * Check if all of the tests contained in this package have been run.
+     *
+     * @return If all tests have been run, return true; else, return false.
+     */
+    protected boolean isAllTestsRun(){
+        for (Test test : getTests()) {
+            if (test.getResultCode() == TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Run the java package contained within this package over device.
+     *
+     * @param device The device to run this package.getName
+     */
+    public void run(final TestDevice device, final String javaPkgName)
+            throws IOException, DeviceDisconnectedException {
+        if (isAllTestsRun()) {
+            return;
+        }
+
+        setup(device, javaPkgName);
+        runImpl(javaPkgName);
+    }
+
+    /**
+     * Implementation of running the test package.
+     *
+     * @param javaPkgName
+     * @throws IOException
+     * @throws DeviceDisconnectedException
+     */
+    protected void runImpl(final String javaPkgName) throws IOException,
+            DeviceDisconnectedException {
+        try {
+            if (!install()) {
+                return;
+            }
+
+            if (!mTestStop) {
+                Log.d("install " + getAppBinaryName() + " succeed!");
+
+                setMessageDigest(genMessageDigest(HostConfig.getInstance()
+                        .getCaseRepository().getApkPath(getAppBinaryName())));
+
+                if ((mEnableBatchMode) && isInBatchMode()) {
+                    mIsInBatchMode = true;
+                    Log.d("run in batch mode...");
+                    runInBatchMode(javaPkgName);
+
+                    //if there is any test not run after the batch mode,
+                    //start another round of test in individual mode
+                    if (!isAllTestsRun()) {
+                        mIsInBatchMode = false;
+                        Log.d("run in individual mode...");
+                        runInIndividualMode(javaPkgName);
+                    }
+                } else {
+                    Log.d("run in individual mode...");
+                    runInIndividualMode(javaPkgName);
+                }
+            }
+
+            if (!mTestStop) {
+                uninstall();
+                println(PKG_LOG_SEPARATOR);
+            }
+        } catch (DeviceDisconnectedException e) {
+            cleanUp();
+            throw e;
+        }
+    }
+
+    /**
+     * Set up before running.
+     *
+     * @param device The device to run this package.getName
+     * @param javaPkgName The JAVA package name.
+     */
+    protected void setup(final TestDevice device, final String javaPkgName) {
+        println(PKG_LOG_SEPARATOR);
+        if ((javaPkgName == null) || (javaPkgName.length() == 0)) {
+            println("Test package: " + getAppPackageName());
+        } else {
+            println("Test java package contained in test package "
+                    + getAppPackageName() + ": " + javaPkgName);
+        }
+
+        mTestStop = false;
+        mIsInBatchMode = false;
+        mCurrentTest = null;
+        mCurrentTestSuite = null;
+
+        setTestDevice(device);
+    }
+
+    /**
+     * Clean up.
+     */
+    public void cleanUp() {
+        if (mCurrentTestSuite != null) {
+            mCurrentTestSuite.setTestStopped(mTestStop);
+            mCurrentTestSuite.notifyTestingDeviceDisconnected();
+        }
+
+        if (mProgressObserver != null) {
+            mProgressObserver.stop();
+        }
+
+        if (mTimeOutTimer != null) {
+            mTimeOutTimer.cancel(false);
+        }
+    }
+
+    /**
+     * Run the specific test contained in the package over device.
+     *
+     * @param device The device to run the specific test.
+     * @param test The specific test to be run.
+     */
+    public void runTest(final TestDevice device, final Test test)
+            throws DeviceDisconnectedException {
+        if (test == null) {
+            return;
+        }
+
+        mTestStop = false;
+        mIsInBatchMode = false;
+
+        println(PKG_LOG_SEPARATOR);
+        println("Test package: " + getAppPackageName());
+        setTestDevice(device);
+
+        runTestImpl(test);
+    }
+
+    /**
+     * Implementation of running test.
+     *
+     * @param test
+     */
+    protected void runTestImpl(final Test test) throws DeviceDisconnectedException {
+        try {
+            if (!install()) {
+                return;
+            }
+
+            if (!mTestStop) {
+                Log.d("install " + getAppPackageName() + " succeed!");
+                mCurrentTestSuite = test.getTestSuite();
+                mCurrentTestSuite.run(mDevice, test);
+            }
+
+            if (!mTestStop) {
+                uninstall();
+                println(PKG_LOG_SEPARATOR);
+            }
+        } catch (DeviceDisconnectedException e) {
+            cleanUp();
+            throw e;
+        }
+    }
+}
diff --git a/tools/host/src/com/android/cts/TestPlan.java b/tools/host/src/com/android/cts/TestPlan.java
new file mode 100644
index 0000000..9eb4d5b
--- /dev/null
+++ b/tools/host/src/com/android/cts/TestPlan.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+/**
+ * Define TestPlan tags and attributes.
+ */
+public class TestPlan extends XMLResourceHandler{
+    public static final String EXCLUDE_SEPARATOR = ";";
+
+    public interface Tag {
+        public static final String TEST_SUITE = "TestSuite";
+        public static final String ENTRY = "Entry";
+        public static final String TEST_PLAN = "TestPlan";
+        public static final String PLAN_SETTING = "PlanSettings";
+        public static final String REQUIRED_DEVICE = "RequiredDevice";
+        public static final String TEST_CASE = "TestCase";
+    }
+
+    public interface Attribute {
+        public static final String NAME = "name";
+        public static final String URI = "uri";
+        public static final String EXCLUDE = "exclude";
+        public static final String AMOUNT = "amount";
+    }
+
+    /**
+     * Get test package names via test plan file path.
+     *
+     * @param planPath TestPlan configuration file path
+     * @param removedPkgList The removed package list.
+     * @return The package names.
+     */
+    public static Collection<String> getEntries(String planPath,
+            ArrayList<String> removedPkgList)
+            throws SAXException, IOException, ParserConfigurationException {
+        ArrayList<String> entries = new ArrayList<String>();
+
+        DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+        File planFile = new File(planPath);
+        Document doc = builder.parse(planFile);
+
+        NodeList pkgEntries = doc.getElementsByTagName(TestPlan.Tag.ENTRY);
+        for (int i = 0; i < pkgEntries.getLength(); i++) {
+            Node pkgEntry = pkgEntries.item(i);
+            String uri = getStringAttributeValue(pkgEntry, TestPlan.Attribute.URI);
+
+            String packageBinaryName = HostConfig.getInstance().getPackageBinaryName(uri);
+            if (packageBinaryName != null) {
+                entries.add(getStringAttributeValue(pkgEntry, TestPlan.Attribute.URI));
+            } else {
+                removedPkgList.add(uri);
+            }
+        }
+
+        return entries;
+    }
+
+    /**
+     * Check if the given package name is valid in the case repository.
+     *
+     * @param pkgName
+     * @return if both the apk file and xml file exist, return true;
+     *         else, return false.
+     */
+    public static boolean isValidPackageName(String pkgName) {
+        String xmlPath = HostConfig.getInstance().getCaseRepository().getXmlPath(pkgName);
+        String apkPath = HostConfig.getInstance().getCaseRepository().getApkPath(pkgName);
+        File xmlFile = new File(xmlPath);
+        File apkFile = new File(apkPath);
+
+        if (xmlFile.exists() && apkFile.exists()) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+}
diff --git a/tools/host/src/com/android/cts/TestPlanNotFoundException.java b/tools/host/src/com/android/cts/TestPlanNotFoundException.java
new file mode 100644
index 0000000..bbe1132
--- /dev/null
+++ b/tools/host/src/com/android/cts/TestPlanNotFoundException.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+/**
+ * Exception if input a nonexistent test plan.
+ */
+public class TestPlanNotFoundException extends Exception {
+
+    private static final long serialVersionUID = -2311532206911427651L;
+
+    public TestPlanNotFoundException() {
+        super();
+    }
+
+    public TestPlanNotFoundException(String message) {
+        super(message);
+    }
+}
diff --git a/tools/host/src/com/android/cts/TestSession.java b/tools/host/src/com/android/cts/TestSession.java
new file mode 100644
index 0000000..6db24e7
--- /dev/null
+++ b/tools/host/src/com/android/cts/TestSession.java
@@ -0,0 +1,458 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.io.IOException;
+import java.util.Collection;
+
+/**
+ * Represents a runtime session for a test plan, takes charge in running a
+ * plan and the setup&tear-downs.
+ */
+public class TestSession {
+    static final String SIGNATURE_TEST_PACKAGE = "SignatureTestPackage";
+
+    private SessionObserver mSessionObserver;
+    private TestSessionLog mSessionLog;
+    private TestDevice mDevice;
+
+    private int mId;
+    private STATUS mStatus;
+
+    private static int sIdCounter = 0;
+
+    enum STATUS {
+        INIT, STARTED, INSTALLING, RUNNING, PAUSED, RESUMED, STOPPED, FINISHED
+    }
+
+    private int mRequiredDeviceNumber;
+    private boolean mTestStop;
+    private TestSessionThread mTestThread;
+
+    public TestSession(final TestSessionLog sessionLog,
+            final int requiredDeviceNum) {
+        mStatus = STATUS.INIT;
+
+        mSessionLog = sessionLog;
+        mDevice = null;
+        mRequiredDeviceNumber = requiredDeviceNum;
+        mTestStop = false;
+        mId = sIdCounter ++;
+    }
+
+    /**
+     * Get status.
+     *
+     * @return The status.
+     */
+    public STATUS getStatus() {
+        return mStatus;
+    }
+
+    /**
+     * Get device ID.
+     *
+     * @return device ID.
+     */
+    public String getDeviceId() {
+        return mDevice.getSerialNumber();
+    }
+
+    /**
+     * Get the number of required devices.
+     *
+     * @return The number of required devices.
+     */
+    public int getNumOfRequiredDevices() {
+        return mRequiredDeviceNumber;
+    }
+
+    /**
+     * Get ID.
+     *
+     * @return ID.
+     */
+    public int getId() {
+        return mId;
+    }
+
+    /**
+     * Start the single test with full name.
+     *
+     * @param testFullName The test full name.
+     */
+    public void start(final String testFullName) throws TestNotFoundException,
+            IllegalTestNameException {
+
+        if ((testFullName == null) || (testFullName.length() == 0)) {
+            throw new IllegalArgumentException();
+        }
+
+        // The test full name follows the following rule:
+        //     java_package_name.class_name#method_name.
+        // Other forms will be treated as illegal.
+        if (!testFullName.matches("(\\w+.)+\\w+")) {
+            throw new IllegalTestNameException(testFullName);
+        }
+
+        Test test = null;
+        TestPackage pkg = null;
+        if (-1 != testFullName.indexOf(Test.METHOD_SEPARATOR)) {
+            test = searchTest(testFullName);
+            if (test == null) {
+                throw new TestNotFoundException(
+                        "The specific test does not exist: " + testFullName);
+            }
+
+            mTestThread = new TestSessionThread(this, test);
+            CUIOutputStream.println("start test " + testFullName);
+        } else {
+            pkg = searchTestPackage(testFullName);
+            if (pkg == null) {
+                throw new TestNotFoundException(
+                        "The specific test package does not exist: " + testFullName);
+            }
+
+            mTestThread = new TestSessionThread(this, pkg, testFullName);
+            CUIOutputStream.println("start java package " + testFullName);
+        }
+
+        mStatus = STATUS.STARTED;
+        String resultPath = mSessionLog.getResultPath();
+        if ((resultPath == null) || (resultPath.length() == 0)) {
+            mSessionLog.setStartTime(System.currentTimeMillis());
+        }
+        mTestThread.start();
+    }
+
+    /**
+     * Resume the test session.
+     */
+    public void resume() {
+        mStatus = STATUS.RESUMED;
+        mTestThread = new TestSessionThread(this);
+        CUIOutputStream.println("resume test plan " + getSessionLog().getTestPlanName()
+                + " (session id = " + mId + ")");
+        mTestThread.start();
+    }
+
+    /**
+     * Search the test with the test full name given among the test
+     * packages contained within this session.
+     *
+     * @param testFullName The full name of the test.
+     * @return The test with the full name given.
+     */
+    private Test searchTest(final String testFullName) {
+        Test test = null;
+        for (TestPackage pkg : mSessionLog.getTestPackages()) {
+            test = pkg.searchTest(testFullName);
+            if (test != null) {
+                break;
+            }
+        }
+
+        return test;
+    }
+
+    /**
+     * Search the test package with the specified java package name.
+     *
+     * @param javaPkgName The java package name.
+     * @return The test package with the specified java package name.
+     */
+    private TestPackage searchTestPackage(String javaPkgName) {
+        for (TestPackage pkg : mSessionLog.getTestPackages()) {
+            Collection<Test> tests = pkg.getTests();
+            for (Test test : tests) {
+                String testFullName = test.getFullName();
+                if (testFullName.startsWith(javaPkgName)) {
+                    //adjust the java package name to make it equal to some java package name
+                    if (testFullName.charAt(javaPkgName.length()) != '.') {
+                        javaPkgName = javaPkgName.substring(0, javaPkgName.lastIndexOf("."));
+                    }
+                    return pkg;
+                }
+            }
+        }
+
+        return null;
+    }
+    /**
+     * Start a new test session thread to execute the specific test plan.
+     */
+    public void start() {
+        mStatus = STATUS.STARTED;
+        mSessionLog.setStartTime(System.currentTimeMillis());
+        mTestThread = new TestSessionThread(this);
+
+        CUIOutputStream.println("start test plan " + getSessionLog().getTestPlanName());
+        mTestThread.start();
+    }
+
+    /**
+     * Set observer.
+     *
+     * @param so Session observer.
+     */
+    public void setObserver(final SessionObserver so) {
+        mSessionObserver = so;
+    }
+
+    /**
+     * Print the message by appending the new line mark.
+     *
+     * @param msg The message to be print.
+     */
+    private void println(final String msg) {
+        if (!mTestStop) {
+            CUIOutputStream.println(msg);
+        }
+    }
+
+    /**
+     * Set the {@link TestDevice} which will run the test.
+     *
+     * @param device The {@link TestDevice} will run the test.
+     */
+    public void setTestDevice(final TestDevice device) {
+        mDevice = device;
+    }
+
+    /**
+     * Get the session log of this session.
+     *
+     * @return The session log of this session.
+     */
+    public TestSessionLog getSessionLog() {
+        return mSessionLog;
+    }
+
+    /**
+     * Get the test packages contained within this session.
+     *
+     * @return The test packages contained within this session.
+     */
+    public Collection<TestPackage> getTestPackages() {
+        return mSessionLog.getTestPackages();
+    }
+
+    /**
+     * The Thread to be run the {@link TestSession}
+     */
+    class TestSessionThread extends Thread {
+        private final int MSEC_PER_SECOND = 1000;
+
+        private TestSession mTestSession;
+        private Test mTest;
+        private TestPackage mTestPackage;
+        private String mJavaPackageName;
+        private ResultObserver mResultObserver;
+
+        public TestSessionThread(final TestSession ts) {
+            mTestSession = ts;
+            mResultObserver = ResultObserver.getInstance();
+        }
+
+        public TestSessionThread(final TestSession ts, final Test test) {
+            mTestSession = ts;
+            mResultObserver = ResultObserver.getInstance();
+            mTest = test;
+        }
+
+        public TestSessionThread(final TestSession ts,
+                final TestPackage pkg, final String javaPkgName) {
+            mTestSession = ts;
+            mResultObserver = ResultObserver.getInstance();
+            mTestPackage = pkg;
+            mJavaPackageName = javaPkgName;
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        public void run() {
+            Log.d("Start a test session.");
+            mResultObserver.setTestSessionLog(getSessionLog());
+            long startTime = System.currentTimeMillis();
+            mResultObserver.start();
+
+            try {
+                if (mTest != null) {
+                    TestPackage pkg = mTest.getTestPackage();
+                    pkg.setSessionThread(this);
+                    pkg.runTest(mDevice, mTest);
+                } else if (mTestPackage != null) {
+                    mTestPackage.setSessionThread(this);
+                    mTestPackage.run(mDevice, mJavaPackageName);
+                } else {
+                    for (TestPackage pkg : mSessionLog.getTestPackages()) {
+                        pkg.setSessionThread(this);
+                        pkg.run(mDevice, null);
+                    }
+                    displayTestResultSummary();
+                }
+            } catch (IOException e) {
+                Log.e("Got exception when running the package", e);
+            } catch (DeviceDisconnectedException e) {
+                Log.e("Device " + e.getMessage() + " disconnected ", null);
+            }
+
+            displayTimeInfo(startTime, System.currentTimeMillis());
+
+            mStatus = STATUS.FINISHED;
+            mTestSession.getSessionLog().setEndTime(System.currentTimeMillis());
+            mSessionObserver.notifyFinished(mTestSession);
+
+            mResultObserver.notifyUpdate();
+            mResultObserver.finish();
+        }
+
+        /**
+         * Display the summary of test result.
+         */
+        private void displayTestResultSummary() {
+            int passNum = mSessionLog.getTestList(TestSessionLog.CTS_RESULT_CODE_PASS).size();
+            int failNum = mSessionLog.getTestList(TestSessionLog.CTS_RESULT_CODE_FAIL).size();
+            int notExecutedNum =
+                mSessionLog.getTestList(TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED).size();
+            int timeOutNum = mSessionLog.getTestList(
+                             TestSessionLog.CTS_RESULT_CODE_TIMEOUT).size();
+            int total = passNum + failNum + notExecutedNum + timeOutNum;
+
+            println("Test summary:   pass=" + passNum
+                    + "   fail=" + failNum
+                    + "   timeOut=" + timeOutNum
+                    + "   notExecuted=" + notExecutedNum
+                    + "   Total=" + total);
+        }
+
+        /**
+         * Display the time information of running a test plan.
+         *
+         * @param startTime start time in milliseconds.
+         * @param endTime end time in milliseconds.
+         */
+        private void displayTimeInfo(final long startTime, final long endTime) {
+            long diff = endTime - startTime;
+            long seconds = diff / MSEC_PER_SECOND;
+            long millisec = diff % MSEC_PER_SECOND;
+            println("Time: " + seconds + "." + millisec + "s\n");
+        }
+    }
+
+    /**
+     * Update test result after executing each test.
+     * During running test, the process may be interrupted. To avoid
+     * test result losing, it's needed to update the test result into
+     * xml file after executing each test, which is done by this observer.
+     * The possible reasons causing interruption to the process include:
+     * <ul>
+     *    <li> Device disconnected
+     *    <li> Run time exception
+     *    <li> System crash
+     *    <li> User action to cause the system exit
+     * </ul>
+     *
+     */
+   static class ResultObserver {
+        static private boolean mFinished = false;
+        static private boolean mNotified = false; //used for avoiding race condition
+        static private boolean mNeedUpdate = true;
+        static private TestSessionLog mSessionLog;
+        static final ResultObserver sInstance = new ResultObserver();
+
+        private Observer mObserver;
+        /**
+         * Get the static instance.
+         *
+         * @return The static instance.
+         */
+        public static final ResultObserver getInstance() {
+            return sInstance;
+        }
+
+        /**
+         * Set TestSessionLog.
+         *
+         * @param log The TestSessionLog.
+         */
+        public void setTestSessionLog(TestSessionLog log) {
+            mSessionLog = log;
+        }
+
+        /**
+         * Notify this updating thread to update the test result to xml file.
+         */
+        public void notifyUpdate() {
+            synchronized (this) {
+                mNotified = true;
+                notify();
+            }
+        }
+
+        /**
+         * Start the observer.
+         */
+        public void start() {
+            mFinished = false;
+            mNeedUpdate = true;
+            mObserver = new Observer();
+            mObserver.start();
+        }
+
+        /**
+         * Finish updating.
+         */
+        public void finish() {
+            mFinished = true;
+            mNeedUpdate = false;
+            notifyUpdate();
+            try {
+                mObserver.join();
+            } catch (InterruptedException e) {
+            }
+        }
+
+        /**
+         * Observer which updates the test result to result XML file.
+         *
+         */
+        class Observer extends Thread {
+
+            /** {@inheritDoc} */
+            @Override
+            public void run() {
+                while (!mFinished) {
+                    try {
+                        synchronized (this) {
+                            if (!mNotified) {
+                                wait();
+                            }
+
+                            mNotified = false;
+                        }
+
+                        if (mNeedUpdate && (mSessionLog != null)) {
+                            mSessionLog.dumpToFile();
+                        }
+                    } catch (InterruptedException e) {
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/tools/host/src/com/android/cts/TestSessionBuilder.java b/tools/host/src/com/android/cts/TestSessionBuilder.java
new file mode 100644
index 0000000..b705cc7
--- /dev/null
+++ b/tools/host/src/com/android/cts/TestSessionBuilder.java
@@ -0,0 +1,504 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.cts;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+/**
+ * Builder of test plan and also provides serialization for a test plan.
+ */
+public class TestSessionBuilder extends XMLResourceHandler {
+    // defined for external document, which is from the configuration files
+    // this should keep synchronized with the format of the configuration files
+
+    private static final String TAG_TEST_SUITE = "TestSuite";
+    private static final String TAG_TEST_CASE = "TestCase";
+    public static final String TAG_TEST = "Test";
+
+    // attribute name define
+    public static final String ATTRIBUTE_SIGNATURE_CHECK = "signatureCheck";
+    public static final String ATTRIBUTE_REFERENCE_APP_TEST = "referenceAppTest";
+    public static final String ATTRIBUTE_PRIORITY = "priority";
+
+    private static final String ATTRIBUTE_NAME = "name";
+    private static final String ATTRIBUTE_RUNNER = "runner";
+    private static final String ATTRIBUTE_JAR_PATH = "jarPath";
+    private static final String ATTRIBUTE_APP_NAME_SPACE = "appNameSpace";
+    private static final String ATTRIBUTE_APP_PACKAGE_NAME = "appPackageName";
+    private static final String ATTRIBUTE_TARGET_NAME_SPACE = "targetNameSpace";
+    private static final String ATTRIBUTE_TARGET_BINARY_NAME = "targetBinaryName";
+    private static final String ATTRIBUTE_TYPE = "type";
+    private static final String ATTRIBUTE_METHOD = "method";
+    private static final String ATTRIBUTE_CONTROLLER = "HostController";
+    private static final String ATTRIBUTE_KNOWN_FAILURE = "KnownFailure";
+    private static final String ATTRIBUTE_HOST_SIDE_ONLY = "hostSideOnly";
+    private static final String ATTRIBUTE_VERSION = "version";
+    private static final String ATTRIBUTE_FRAMEWORK_VERSION = "AndroidFramework";
+    private static final String ATTRIBUTE_APK_TO_TEST_NAME = "apkToTestName";
+    private static final String ATTRIBUTE_PACKAGE_TO_TEST = "packageToTest";
+    private static TestSessionBuilder sInstance;
+
+    private DocumentBuilder mDocBuilder;
+
+    public static TestSessionBuilder getInstance()
+            throws ParserConfigurationException {
+        if (sInstance == null) {
+            sInstance = new TestSessionBuilder();
+        }
+
+        return sInstance;
+    }
+
+    private TestSessionBuilder() throws ParserConfigurationException {
+        mDocBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+    }
+
+    /**
+     * Create TestSession via TestPlan XML configuration file.
+     *
+     * @param config TestPlan XML configuration file
+     * @return TestSession 
+     */
+    public TestSession build(final String config) throws SAXException, IOException,
+            TestPlanNotFoundException, TestNotFoundException, NoSuchAlgorithmException {
+        File file = new File(config);
+        if (!file.exists()) {
+            throw new TestPlanNotFoundException();
+        }
+        Document doc = mDocBuilder.parse(file);
+
+        // parse device configuration
+        int numOfRequiredDevices = 1; // default is 1
+        try {
+            Node deviceConfigNode = doc.getElementsByTagName(
+                    TestPlan.Tag.REQUIRED_DEVICE).item(0);
+            numOfRequiredDevices = getAttributeValue(deviceConfigNode,
+                    TestPlan.Attribute.AMOUNT);
+        } catch (Exception e) {
+        }
+
+        Collection<TestPackage> packages = loadPackages(doc);
+        if (packages.size() == 0) {
+            throw new TestNotFoundException("No valid package in test plan.");
+        }
+
+        String planFileName = file.getName();
+        int index = planFileName.indexOf(".");
+        String planName;
+        if (index != -1) {
+            planName = planFileName.substring(0, planFileName.indexOf("."));
+        } else{
+            planName = planFileName;
+        }
+
+        TestSessionLog sessionLog = new TestSessionLog(packages, planName);
+        TestSession ts = new TestSession(sessionLog, numOfRequiredDevices);
+        return ts;
+    }
+
+    /**
+     * Load TestPackages from a TestPlan DOM doc.
+     *
+     * @param doc TestPlan DOM Document
+     * @return loaded test package from TestPlan DOM Document
+     */
+    private Collection<TestPackage> loadPackages(Document doc)
+                throws SAXException, IOException, NoSuchAlgorithmException {
+
+        ArrayList<TestPackage> packages = new ArrayList<TestPackage>();
+        NodeList packageList = doc.getElementsByTagName(TestPlan.Tag.ENTRY);
+        ArrayList<String> removedPkgList = new ArrayList<String>();
+        for (int i = 0; i < packageList.getLength(); i++) {
+            Node pNode = packageList.item(i);
+            String uri = getStringAttributeValue(pNode, TestPlan.Attribute.URI);
+            String list = getStringAttributeValue(pNode, TestPlan.Attribute.EXCLUDE);
+            ArrayList<String> excludedList = null;
+            if ((list != null) && (list.length() != 0)) {
+                excludedList = getStrArrayList(list);
+            }
+
+            String packageBinaryName = HostConfig.getInstance().getPackageBinaryName(uri);
+            if (packageBinaryName != null) {
+                String xmlConfigFilePath =
+                       HostConfig.getInstance().getCaseRepository().getXmlPath(packageBinaryName);
+                File xmlFile = new File(xmlConfigFilePath);
+                TestPackage pkg = loadPackage(xmlFile, excludedList);
+                if (pkg instanceof SignatureCheckPackage) {
+                    // insert the signature check package
+                    // to the head of the list
+                    packages.add(0, pkg);
+                } else {
+                    packages.add(pkg);
+                }
+            } else{
+                removedPkgList.add(uri);
+            }
+        }
+        if (removedPkgList.size() != 0) {
+            CUIOutputStream.println("The following package(s) doesn't exist:");
+            for (String pkgName : removedPkgList) {
+                CUIOutputStream.println("    " + pkgName);
+            }
+        }
+        return packages;
+    }
+
+    /**
+     * Load TestPackage via Package XML configuration file.
+     *
+     * @param packageConfigFile test package XML file
+     * @param excludedList The list containing the excluded suites and sub types.
+     * @return loaded TestPackage from test package XML configuration file
+     */
+    public TestPackage loadPackage(final File packageConfigFile, ArrayList<String> excludedList)
+                                throws SAXException, IOException, NoSuchAlgorithmException {
+        Node pNode = mDocBuilder.parse(packageConfigFile).getDocumentElement();
+
+        String appBinaryName, targetNameSpace, targetBinaryName, version, frameworkVersion,
+               runner, jarPath, appNameSpace, appPackageName, hostSideOnly;
+        NodeList suiteList = pNode.getChildNodes();
+
+        appBinaryName = getStringAttributeValue(pNode, ATTRIBUTE_NAME);
+        targetNameSpace = getStringAttributeValue(pNode, ATTRIBUTE_TARGET_NAME_SPACE);
+        targetBinaryName = getStringAttributeValue(pNode, ATTRIBUTE_TARGET_BINARY_NAME);
+        version = getStringAttributeValue(pNode, ATTRIBUTE_VERSION);
+        frameworkVersion = getStringAttributeValue(pNode, ATTRIBUTE_FRAMEWORK_VERSION);
+        runner = getStringAttributeValue(pNode, ATTRIBUTE_RUNNER);
+        jarPath = getStringAttributeValue(pNode, ATTRIBUTE_JAR_PATH);
+        appNameSpace = getStringAttributeValue(pNode, ATTRIBUTE_APP_NAME_SPACE);
+        appPackageName = getStringAttributeValue(pNode, ATTRIBUTE_APP_PACKAGE_NAME);
+        hostSideOnly = getStringAttributeValue(pNode, ATTRIBUTE_HOST_SIDE_ONLY);
+        String signature = getStringAttributeValue(pNode, ATTRIBUTE_SIGNATURE_CHECK);
+        String referenceAppTest = getStringAttributeValue(pNode, ATTRIBUTE_REFERENCE_APP_TEST);
+        TestPackage pkg = null;
+
+        if ("true".equals(referenceAppTest)) {
+            String apkToTestName = getStringAttributeValue(pNode, ATTRIBUTE_APK_TO_TEST_NAME);
+            String packageUnderTest = getStringAttributeValue(pNode, ATTRIBUTE_PACKAGE_TO_TEST);
+            pkg = new ReferenceAppTestPackage(runner, appBinaryName, targetNameSpace,
+                    targetBinaryName, version, frameworkVersion, jarPath,
+                    appNameSpace, appPackageName, 
+                    apkToTestName, packageUnderTest);
+        } else if ("true".equals(signature)) {
+            pkg = new SignatureCheckPackage(runner, appBinaryName, targetNameSpace,
+                    targetBinaryName, version, frameworkVersion, jarPath,
+                    appNameSpace, appPackageName);
+        } else if ("true".equals(hostSideOnly)) {
+            pkg = new HostSideOnlyPackage(appBinaryName, version, frameworkVersion,
+                    jarPath, appPackageName);
+        } else {
+            pkg = new TestPackage(runner, appBinaryName, targetNameSpace, targetBinaryName,
+                    version, frameworkVersion, jarPath, appNameSpace, appPackageName);
+        }
+
+        for (int i = 0; i < suiteList.getLength(); i++) {
+            Node sNode = suiteList.item(i);
+            if (sNode.getNodeType() == Document.ELEMENT_NODE
+                    && TAG_TEST_SUITE.equals(sNode.getNodeName())) {
+                String fullSuiteName = getFullSuiteName(sNode);
+                if (checkFullMatch(excludedList, fullSuiteName) == false) {
+                    ArrayList<String> excludedCaseList =
+                                          getExcludedList(excludedList, fullSuiteName);
+                    TestSuite suite = loadSuite(pkg, sNode, excludedCaseList);
+                    if ((suite.getTestCases().size() != 0) || (suite.getSubSuites().size() != 0)) {
+                        pkg.addTestSuite(suite);
+                    }
+                } else {
+                    Log.d("suite=" + fullSuiteName + " is fully excluded");
+                }
+            }
+        }
+
+        return pkg;
+    }
+
+    /**
+     * Get string ArrayList from string.
+     *
+     * @param str The given string.
+     * @return The list.
+     */
+    private ArrayList<String> getStrArrayList(String str) {
+        if ((str == null) || (str.length() == 0)) {
+            return null;
+        }
+
+        String[] list = str.split(TestPlan.EXCLUDE_SEPARATOR);
+        if ((list == null) || (list.length == 0)) {
+            return null;
+        }
+
+        ArrayList<String> result = new ArrayList<String>();
+        for (String s : list) {
+            result.add(s);
+        }
+
+        return result;
+    }
+
+    /**
+     * Get excluded list from a list by offered expectation.
+     *
+     * @param excludedList The list containing excluded items.
+     * @param expectation The expectations.
+     * @return The excluded list.
+     */
+    private ArrayList<String> getExcludedList(ArrayList<String> excludedList, String expectation) {
+        if ((excludedList == null) || (excludedList.size() == 0)) {
+            return null;
+        }
+
+        ArrayList<String> list = new ArrayList<String>();
+        for (String str : excludedList) {
+            if (str.startsWith(expectation)) {
+                list.add(str);
+            }
+        }
+
+        if (list.size() == 0) {
+            return null;
+        } else {
+            return list;
+        }
+    }
+
+    /**
+     * Check if the expectation is fully matched among a list.
+     *
+     * @param list The array list.
+     * @param expectation The expectation.
+     * @return If there is full match of expectation among the list, return true;
+     *         else, return false.
+     */
+    private boolean checkFullMatch(ArrayList<String> list, String expectation) {
+        if ((list == null) || (list.size() == 0)) {
+            return false;
+        }
+
+        for (String str : list) {
+            if (str.equals(expectation)) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Load TestSuite via suite node. Package Name is used to output test result.
+     *
+     * @param pkg TestPackage
+     * @param sNode suite node
+     * @param excludedCaseList The list containing the excluded cases and sub types.
+     * @return TestSuite
+     */
+    private TestSuite loadSuite(final TestPackage pkg, Node sNode,
+                                ArrayList<String> excludedCaseList) {
+        NodeList cNodes = sNode.getChildNodes();
+        String fullSuiteName = getFullSuiteName(sNode);
+        String suiteName = getStringAttributeValue(sNode, TestPlan.Attribute.NAME);
+        TestSuite suite = new TestSuite(pkg, suiteName, fullSuiteName);
+
+        for (int i = 0; i < cNodes.getLength(); i++) {
+            Node cNode = cNodes.item(i);
+            if (cNode.getNodeType() == Document.ELEMENT_NODE) {
+                if (cNode.getNodeName().equals(TAG_TEST_SUITE)) {
+                    String subSuiteName = getFullSuiteName(cNode);
+                    if (checkFullMatch(excludedCaseList, subSuiteName) == false) {
+                        ArrayList<String> excludedList = getExcludedList(excludedCaseList,
+                                                             subSuiteName);
+                        TestSuite subSuite = loadSuite(pkg, cNode, excludedList);
+                        if ((subSuite.getTestCases().size() != 0)
+                            || (subSuite.getSubSuites().size() != 0)) {
+                            suite.addSubSuite(subSuite);
+                        }
+                    } else {
+                        Log.d("suite=" + subSuiteName + " is fully excluded");
+                    }
+                } else if (cNode.getNodeName().equals(TAG_TEST_CASE)) {
+                    String cName = getStringAttributeValue(cNode, ATTRIBUTE_NAME);
+                    String priority = getStringAttributeValue(cNode, ATTRIBUTE_PRIORITY);
+
+                    TestCase testCase = new TestCase(suite, cName, priority);
+                    String fullCaseName = fullSuiteName + "." + testCase.getName();
+                    if (checkFullMatch(excludedCaseList, fullCaseName) == false) {
+                        NodeList mNodes = cNode.getChildNodes();
+                        for (int t = 0; t < mNodes.getLength(); t ++) {
+                            Node testNode = mNodes.item(t);
+                            if ((testNode.getNodeType() == Document.ELEMENT_NODE)
+                                    && (testNode.getNodeName().equals(TAG_TEST))) {
+                                String cType = getStringAttributeValue(testNode, ATTRIBUTE_TYPE);
+                                String name = getStringAttributeValue(testNode, ATTRIBUTE_METHOD);
+                                String description = getStringAttributeValue(testNode,
+                                        ATTRIBUTE_CONTROLLER);
+                                String knownFailure = getStringAttributeValue(testNode,
+                                        ATTRIBUTE_KNOWN_FAILURE);
+                                String fullJarPath =
+                                    HostConfig.getInstance().getCaseRepository().getRoot()
+                                    + File.separator + pkg.getJarPath();
+
+                                Test test = null;
+                                if (pkg.isHostSideOnly()) {
+                                    test = new HostSideOnlyTest(testCase, name, cType,
+                                            knownFailure,
+                                            TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED);
+                                    description = test.getFullName();
+                                } else {
+                                    test = new Test(testCase, name, cType,
+                                            knownFailure,
+                                            TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED);
+                                }
+
+                                TestController controller =
+                                    genTestControler(fullJarPath, description);
+                                test.setTestController(controller);
+                                if (!checkFullMatch(excludedCaseList, test.getFullName())) {
+                                    testCase.addTest(test);
+                                } else {
+                                    Log.d("Test=" + test.getFullName() + " is excluded");
+                                }
+                            }
+                        }
+                        if (testCase.getTests().size() != 0) {
+                            suite.addTestCase(testCase);
+                        }
+                    } else {
+                        Log.d("case=" + fullCaseName + " is fully excluded");
+                    }
+                }
+            }
+        }
+
+        return suite;
+    }
+
+    /**
+     * Generate controller according to the description string.
+     *
+     * @return The test controller.
+     */
+    public TestController genTestControler(String jarPath, String description) {
+        if ((jarPath == null) || (jarPath.length() == 0)
+                || (description == null) || (description.length() == 0)) {
+            return null;
+        }
+
+        String packageName = description.substring(0, description.lastIndexOf("."));
+        String className   = description.substring(packageName.length() + 1,
+                             description.lastIndexOf(Test.METHOD_SEPARATOR));
+        String methodName  = description.substring(
+                             description.lastIndexOf(Test.METHOD_SEPARATOR) + 1,
+                             description.length());
+
+        return new TestController(jarPath, packageName, className, methodName);
+    }
+
+    /**
+     * Get the full suite name of the specified suite node. Since the test
+     * suite can be nested, so the full name of a tests suite is combined
+     * with his name and his ancestor suite's names.
+     *
+     * @param node The specified suite node.
+     * @return The full name of the given suite node.
+     */
+    private String getFullSuiteName(Node node) {
+        StringBuilder buf = new StringBuilder();
+        buf.append(getStringAttributeValue(node, TestPlan.Attribute.NAME));
+ 
+        Node parent = node.getParentNode();
+        while (parent != null) {
+            if (parent.getNodeType() == Document.ELEMENT_NODE
+                    && parent.getNodeName() == TAG_TEST_SUITE) {
+                buf.insert(0, ".");
+                buf.insert(0, getStringAttributeValue(parent, TestPlan.Attribute.NAME));
+            }
+
+            parent = parent.getParentNode();
+        }
+
+        return buf.toString();
+    }
+
+    /**
+     * Create TestPlan which contain a series TestPackages.
+     *
+     * @param planName test plan name
+     * @param packageNames Package names to be added
+     * @param selectedResult The selected result mapping selected
+     *                       package with selected removal result.
+     */
+    public void serialize(String planName,
+            ArrayList<String> packageNames, HashMap<String, ArrayList<String>> selectedResult)
+            throws ParserConfigurationException, FileNotFoundException,
+            TransformerFactoryConfigurationError, TransformerException {
+        File plan = new File(HostConfig.getInstance().getPlanRepository()
+                .getPlanPath(planName));
+        if (plan.exists()) {
+            Log.e("Plan " + planName + " already exist, please use another name!",
+                    null);
+            return;
+        }
+
+        Document doc = DocumentBuilderFactory.newInstance()
+                .newDocumentBuilder().newDocument();
+        Node root = doc.createElement(TestPlan.Tag.TEST_PLAN);
+        setAttribute(doc, root, ATTRIBUTE_VERSION, "1.0");
+        doc.appendChild(root);
+
+        // append device configure node
+        Node deviceConfigNode = doc.createElement(TestPlan.Tag.PLAN_SETTING);
+
+        root.appendChild(deviceConfigNode);
+
+        // append test packages
+        for (String pName : packageNames) {
+            if (selectedResult.containsKey(pName)) {
+                Node entryNode = doc.createElement(TestPlan.Tag.ENTRY);
+
+                setAttribute(doc, entryNode, TestPlan.Attribute.URI, pName);
+                ArrayList<String> excluded = selectedResult.get(pName);
+                if ((excluded != null) && (excluded.size() != 0)) {
+                    String excludedList = "";
+                    for (String str : excluded) {
+                        excludedList += str + TestPlan.EXCLUDE_SEPARATOR;
+                    }
+                    setAttribute(doc, entryNode, TestPlan.Attribute.EXCLUDE, excludedList);
+                }
+                root.appendChild(entryNode);
+            }
+        }
+
+        writeToFile(plan, doc);
+    }
+
+}
diff --git a/tools/host/src/com/android/cts/TestSessionLog.java b/tools/host/src/com/android/cts/TestSessionLog.java
new file mode 100644
index 0000000..bbf99d8
--- /dev/null
+++ b/tools/host/src/com/android/cts/TestSessionLog.java
@@ -0,0 +1,465 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.ProcessingInstruction;
+
+import com.android.cts.TestDevice.DeviceParameterCollector;
+
+/**
+ * Store the information of a test plan.
+ */
+public class TestSessionLog extends XMLResourceHandler {
+    private static final String EXPR_TEST_FAILED = ".+\\((\\S+):(\\d+)\\)";
+    private static Pattern mTestFailedPattern = Pattern.compile(EXPR_TEST_FAILED);
+    private static final String ATTRIBUTE_NAME = "name";
+    private static final String ATTRIBUTE_RESULT = "result";
+    private static final String ATTRIBUTE_VERSION = "version";
+    private static final String ATTRIBUTE_DIGEST = "digest";
+    private static final String ATTRIBUTE_KNOWN_FAILURE = "KnownFailure";
+
+    public static final int CTS_RESULT_CODE_INIT = -1;
+    public static final int CTS_RESULT_CODE_NOT_EXECUTED = 0;
+    public static final int CTS_RESULT_CODE_PASS = 1;
+    public static final int CTS_RESULT_CODE_FAIL = 2;
+    public static final int CTS_RESULT_CODE_ERROR = 3;
+    public static final int CTS_RESULT_CODE_TIMEOUT = 4;
+    public static final int CTS_RESULT_CODE_FIRST = CTS_RESULT_CODE_INIT;
+    public static final int CTS_RESULT_CODE_LAST = CTS_RESULT_CODE_TIMEOUT;
+
+    class TestResult {
+        public static final String CTS_RESULT_STR_ERROR = "error";
+        public static final String CTS_RESULT_STR_TIMEOUT = "timeout";
+        public static final String CTS_RESULT_STR_NOT_EXECUTED = "notExecuted";
+        public static final String CTS_RESULT_STR_FAIL = "fail";
+        public static final String CTS_RESULT_STR_PASS = "pass";
+    }
+
+    private static final String CTS_RESULT_FILE_NAME = "testResult.xml";
+    private static HashMap<Integer, String> sCodeToResultMap;
+    static {
+        sCodeToResultMap = new HashMap<Integer, String>();
+        sCodeToResultMap.put(TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED,
+                             TestResult.CTS_RESULT_STR_NOT_EXECUTED);
+        sCodeToResultMap.put(TestSessionLog.CTS_RESULT_CODE_PASS,
+                             TestResult.CTS_RESULT_STR_PASS);
+        sCodeToResultMap.put(TestSessionLog.CTS_RESULT_CODE_FAIL,
+                             TestResult.CTS_RESULT_STR_FAIL);
+        sCodeToResultMap.put(TestSessionLog.CTS_RESULT_CODE_ERROR,
+                             TestResult.CTS_RESULT_STR_ERROR);
+        sCodeToResultMap.put(TestSessionLog.CTS_RESULT_CODE_TIMEOUT,
+                             TestResult.CTS_RESULT_STR_TIMEOUT);
+    }
+
+    // define the possible format of the result file format
+    public static final int CTS_RESULT_FORMAT_INVALID = 100;
+    public static final int CTS_RESULT_FORMAT_XML = 101;
+
+    static final String ATTRIBUTE_STARTTIME = "starttime";
+    static final String ATTRIBUTE_ENDTIME = "endtime";
+    static final String ATTRIBUTE_TESTPLAN = "testPlan";
+    static final String ATTRIBUTE_RESOLUTION = "resolution";
+    static final String ATTRIBUTE_SUBSCRIBER_ID = "subscriberId";
+    static final String ATTRIBUTE_DEVICE_ID = "deviceID";
+    static final String ATTRIBUTE_BUILD_ID = "buildID";
+    static final String ATTRIBUTE_BUILD_VERSION = "buildVersion";
+    static final String ATTRIBUTE_ANDROID_PLATFORM_VERSION = "androidPlatformVersion";
+    static final String ATTRIBUTE_LOCALES = "locales";
+    static final String ATTRIBUTE_XDPI = "Xdpi";
+    static final String ATTRIBUTE_YDPI = "Ydpi";
+    static final String ATTRIBUTE_TOUCH = "touch";
+    static final String ATTRIBUTE_NAVIGATION = "navigation";
+    static final String ATTRIBUTE_KEYPAD = "keypad";
+    static final String ATTRIBUTE_NETWORK = "network";
+    static final String ATTRIBUTE_IMEI = "imei";
+    static final String ATTRIBUTE_IMSI = "imsi";
+    static final String ATTRIBUTE_BUILD_NAME = "buildName";
+
+    static final String ATTRIBUTE_PASS = "pass";
+    static final String ATTRIBUTE_FAILED = "failed";
+    static final String ATTRIBUTE_TIMEOUT = "timeout";
+    static final String ATTRIBUTE_NOT_EXECUTED = "notExecuted";
+
+    static final String TAG_DEVICEINFO = "DeviceInfo";
+    static final String TAG_SUMMARY = "Summary";
+    static final String TAG_SCREEN = "Screen";
+    static final String TAG_BUILD_INFO = "BuildInfo";
+    static final String TAG_PHONE_SUB_INFO = "PhoneSubInfo";
+    static final String TAG_TESTPACKAGE = "TestPackage";
+    static final String TAG_TESTSUITE = "TestSuite";
+    static final String TAG_TESTCASE = "TestCase";
+    static final String TAG_FAILED_SCENE = "FailedScene";
+    static final String TAG_STACK_TRACE = "StackTrace";
+    static final String TAG_FAILED_MESSAGE = "message";
+
+    private Collection<TestPackage> mTestPackages;
+    private Date mSessionStartTime;
+    private Date mSessionEndTime;
+    private String mResultPath;
+    private int mResultFormat;
+    private String mTestPlanName;
+
+    private ArrayList<DeviceParameterCollector> mDeviceParameterBase;
+
+    public TestSessionLog(final Collection<TestPackage> packages, final String testPlanName) {
+        mTestPackages = packages;
+
+        mResultFormat = CTS_RESULT_FORMAT_XML;
+        mDeviceParameterBase = new ArrayList<TestDevice.DeviceParameterCollector>();
+        mTestPlanName = testPlanName;
+
+        mSessionStartTime = new Date();
+        mSessionEndTime = new Date();
+    }
+
+    /**
+     * Get the test plan name.
+     *
+     * @return The test plan name.
+     */
+    public String getTestPlanName() {
+        return mTestPlanName;
+    }
+
+    /**
+     * Get all result of this session.
+     *
+     * @return All the tests with a result code of this session.
+     */
+    public Collection<Test> getAllResults() {
+        if (mTestPackages == null || mTestPackages.size() == 0) {
+            return null;
+        }
+
+        ArrayList<Test> results = new ArrayList<Test>();
+        for (TestPackage p : mTestPackages) {
+            results.addAll(p.getTests());
+        }
+
+        return results;
+    }
+
+    /**
+     * Get test list according to the result type code.
+     *
+     * @param resCode The result code.
+     * @return The list of {@link Test}.
+     */
+    public Collection<Test> getTestList(int resCode) {
+        if (resCode < CTS_RESULT_CODE_FIRST || resCode > CTS_RESULT_CODE_LAST) {
+            return null;
+        }
+
+        ArrayList<Test> results = new ArrayList<Test>();
+        for (Test res : getAllResults()) {
+            if (resCode == res.getResultCode()) {
+                results.add(res);
+            }
+        }
+
+        return results;
+    }
+
+    /**
+     * Get TestSession start time
+     *
+     * @return The start time.
+     */
+    public Date getStartTime() {
+        return mSessionStartTime;
+    }
+
+    /**
+     * Get TestSession end time
+     *
+     * @return The end time.
+     */
+    public Date getEndTime() {
+        return mSessionEndTime;
+    }
+
+    /**
+     * Get test packages.
+     *
+     * @return The test packages.
+     */
+    public Collection<TestPackage> getTestPackages() {
+        return mTestPackages;
+    }
+
+    /**
+     * Get the result path.
+     *
+     * @return The result path.
+     */
+    public String getResultPath() {
+        return mResultPath;
+    }
+
+    /**
+     * set TestSession start time
+     *
+     * @param time The start time.
+     */
+    public void setStartTime(final long time) {
+        mSessionStartTime.setTime(time);
+
+        String startTimeStr = HostUtils.getFormattedTimeString(time, "_", ".", ".");
+        mResultPath = HostConfig.getInstance().getResultRepository().getRoot()
+                + File.separator + startTimeStr + "_" + CTS_RESULT_FILE_NAME;
+    }
+
+    /**
+     * set TestSession end time
+     *
+     * @param time The end time.
+     */
+    public void setEndTime(final long time) {
+        mSessionEndTime.setTime(time);
+    }
+
+    /**
+     * Dump result to file.
+     */
+    public void dumpToFile() {
+        switch (mResultFormat) {
+        case CTS_RESULT_FORMAT_XML:
+            try {
+                writeToFile(new File(mResultPath), createResultDoc());
+            } catch (Exception e) {
+                Log.e("Got exception when trying to write to result file", e);
+            }
+            break;
+
+        default:
+            Log.e("Unrecognized result format" + mResultFormat, null);
+            break;
+        }
+    }
+
+    /**
+     * Create result Doc in XML format.
+     *
+     * @return Result document.
+     */
+    protected Document createResultDoc() {
+        try {
+
+            Document doc = DocumentBuilderFactory.newInstance()
+                    .newDocumentBuilder().newDocument();
+            ProcessingInstruction pr = doc.createProcessingInstruction(
+                    "xml-stylesheet", "type=\"text/xsl\"  href=\"cts_result.xsl\"");
+            doc.appendChild(pr);
+            Node root = doc.createElement("TestResult");
+            doc.appendChild(root);
+
+            setAttribute(doc, root, ATTRIBUTE_VERSION, "1.0");
+            setAttribute(doc, root, ATTRIBUTE_STARTTIME, mSessionStartTime.toString());
+            setAttribute(doc, root, ATTRIBUTE_ENDTIME, mSessionEndTime.toString());
+            setAttribute(doc, root, ATTRIBUTE_TESTPLAN, mTestPlanName);
+
+            // set device information
+            for (int i = 0; i < mDeviceParameterBase.size(); i ++) {
+                DeviceParameterCollector bldInfo = mDeviceParameterBase.get(i);
+                // set device setting
+                Node deviceSettingNode = doc.createElement(TAG_DEVICEINFO);
+
+                Node screenNode = doc.createElement(TAG_SCREEN);
+                setAttribute(doc, screenNode, ATTRIBUTE_RESOLUTION, bldInfo.getScreenResolution());
+                deviceSettingNode.appendChild(screenNode);
+                Node simCardNode = doc.createElement(TAG_PHONE_SUB_INFO);
+                setAttribute(doc, simCardNode, ATTRIBUTE_SUBSCRIBER_ID, bldInfo.getPhoneNumber());
+                deviceSettingNode.appendChild(simCardNode);
+                root.appendChild(deviceSettingNode);
+
+                Node devInfoNode = doc.createElement(TAG_BUILD_INFO);
+                setAttribute(doc, devInfoNode, ATTRIBUTE_DEVICE_ID, bldInfo.getSerialNumber());
+                setAttribute(doc, devInfoNode, ATTRIBUTE_BUILD_ID, bldInfo.getBuildId());
+                setAttribute(doc, devInfoNode, ATTRIBUTE_BUILD_NAME, bldInfo.getProductName());
+                setAttribute(doc, devInfoNode, ATTRIBUTE_BUILD_VERSION,
+                             bldInfo.getBuildVersion());
+                setAttribute(doc, devInfoNode, ATTRIBUTE_ANDROID_PLATFORM_VERSION,
+                             bldInfo.getAndroidPlatformVersion());
+                setAttribute(doc, devInfoNode, ATTRIBUTE_LOCALES, bldInfo.getLocales());
+                setAttribute(doc, devInfoNode, ATTRIBUTE_XDPI, bldInfo.getXdpi());
+                setAttribute(doc, devInfoNode, ATTRIBUTE_YDPI, bldInfo.getYdpi());
+                setAttribute(doc, devInfoNode, ATTRIBUTE_TOUCH, bldInfo.getTouchInfo());
+                setAttribute(doc, devInfoNode, ATTRIBUTE_NAVIGATION, bldInfo.getNavigation());
+                setAttribute(doc, devInfoNode, ATTRIBUTE_KEYPAD, bldInfo.getKeypad());
+                setAttribute(doc, devInfoNode, ATTRIBUTE_NETWORK, bldInfo.getNetwork());
+                setAttribute(doc, devInfoNode, ATTRIBUTE_IMEI, bldInfo.getIMEI());
+                setAttribute(doc, devInfoNode, ATTRIBUTE_IMSI, bldInfo.getIMSI());
+
+                setAttribute(doc, devInfoNode,
+                        DeviceParameterCollector.BUILD_FINGERPRINT, bldInfo.getBuildFingerPrint());
+                setAttribute(doc, devInfoNode,
+                        DeviceParameterCollector.BUILD_TYPE, bldInfo.getBuildType());
+                setAttribute(doc, devInfoNode,
+                        DeviceParameterCollector.BUILD_MODEL, bldInfo.getBuildModel());
+                setAttribute(doc, devInfoNode,
+                        DeviceParameterCollector.BUILD_BRAND, bldInfo.getBuildBrand());
+                setAttribute(doc, devInfoNode,
+                        DeviceParameterCollector.BUILD_BOARD, bldInfo.getBuildBoard());
+                setAttribute(doc, devInfoNode,
+                        DeviceParameterCollector.BUILD_DEVICE, bldInfo.getBuildDevice());
+
+                deviceSettingNode.appendChild(devInfoNode);
+            }
+
+            int passNum = getTestList(CTS_RESULT_CODE_PASS).size();
+            int failNum = getTestList(CTS_RESULT_CODE_FAIL).size();
+            int notExecutedNum = getTestList(CTS_RESULT_CODE_NOT_EXECUTED).size();
+            int timeOutNum = getTestList(CTS_RESULT_CODE_TIMEOUT).size();
+            Node summaryNode = doc.createElement(TAG_SUMMARY);
+            root.appendChild(summaryNode);
+            setAttribute(doc, summaryNode, ATTRIBUTE_PASS, passNum);
+            setAttribute(doc, summaryNode, ATTRIBUTE_FAILED, failNum);
+            setAttribute(doc, summaryNode, ATTRIBUTE_NOT_EXECUTED, notExecutedNum);
+            setAttribute(doc, summaryNode, ATTRIBUTE_TIMEOUT, timeOutNum);
+
+            for (TestPackage testPackage : mTestPackages) {
+                Node testPackageNode = doc.createElement(TAG_TESTPACKAGE);
+                setAttribute(doc, testPackageNode, ATTRIBUTE_NAME, testPackage.getAppPackageName());
+                setAttribute(doc, testPackageNode, ATTRIBUTE_DIGEST,
+                             testPackage.getMessageDigest());
+
+                if (testPackage instanceof SignatureCheckPackage) {
+                    setAttribute(doc, testPackageNode,
+                              TestSessionBuilder.ATTRIBUTE_SIGNATURE_CHECK, "true");
+                }
+
+                for (TestSuite testSuite : testPackage.getTestSuites()) {
+                    outputTestSuite(doc, testPackage, testPackageNode, testSuite);
+                }
+                root.appendChild(testPackageNode);
+            }
+
+            return doc;
+        } catch (Exception e) {
+            Log.e("create result doc failed", e);
+        }
+        return null;
+    }
+
+    /**
+     * Output TestSuite and result to XML DOM Document.
+     *
+     * @param doc The document.
+     * @param parentNode The parent node.
+     * @param testSuite The test suite.
+     */
+    private void outputTestSuite(final Document doc,
+            final TestPackage testPackage, final Node parentNode,
+            TestSuite testSuite) {
+
+        Collection<TestSuite> subSuites = testSuite.getSubSuites();
+        Collection<TestCase> testCases = testSuite.getTestCases();
+
+        Node testSuiteNode = doc.createElement(TAG_TESTSUITE);
+        setAttribute(doc, testSuiteNode, ATTRIBUTE_NAME, testSuite.getName());
+
+        for (TestCase testCase : testCases) {
+            Node testCaseNode = doc.createElement(TAG_TESTCASE);
+            testSuiteNode.appendChild(testCaseNode);
+            setAttribute(doc, testCaseNode, ATTRIBUTE_NAME, testCase.getName());
+            setAttribute(doc, testCaseNode, TestSessionBuilder.ATTRIBUTE_PRIORITY,
+                    testCase.getPriority());
+
+            Collection<Test> tests = testCase.getTests();
+            for (Test test : tests) {
+                Node testNode = doc.createElement(TestSessionBuilder.TAG_TEST);
+                testCaseNode.appendChild(testNode);
+
+                if (test.isKnownFailure()) {
+                    setAttribute(doc, testNode, ATTRIBUTE_KNOWN_FAILURE, test.getKnownFailure());
+                }
+                setAttribute(doc, testNode, ATTRIBUTE_NAME, test.getName());
+                setAttribute(doc, testNode, ATTRIBUTE_RESULT, test.getResultStr());
+                setAttribute(doc, testNode, ATTRIBUTE_STARTTIME,
+                             new Date(test.getStartTime()).toString());
+                setAttribute(doc, testNode, ATTRIBUTE_ENDTIME,
+                             new Date(test.getEndTime()).toString());
+
+                String failedMessage = test.getFailedMessage();
+
+                if (failedMessage != null) {
+                    Node failedMessageNode = doc.createElement(TAG_FAILED_SCENE);
+                    testNode.appendChild(failedMessageNode);
+                    setAttribute(doc, failedMessageNode,TAG_FAILED_MESSAGE, failedMessage);
+
+                    String stackTrace = test.getStackTrace();
+                    if (stackTrace != null) {
+                        Node stackTraceNode = doc.createElement(TAG_STACK_TRACE);
+                        failedMessageNode.appendChild(stackTraceNode);
+                        Node stackTraceTextNode = doc.createTextNode(stackTrace);
+                        stackTraceNode.appendChild(stackTraceTextNode);
+                    }
+                }
+            }
+        }
+
+        for (TestSuite subSuite : subSuites) {
+            outputTestSuite(doc, testPackage, testSuiteNode, subSuite);
+            parentNode.appendChild(testSuiteNode);
+        }
+        parentNode.appendChild(testSuiteNode);
+    }
+
+    /**
+     * Fetch failed file name and line number
+     *
+     * @param failedResult failed message
+     * @return failed file name and line number
+     */
+    public final static String[] getFailedLineNumber(final String failedResult) {
+        Matcher m = mTestFailedPattern.matcher(failedResult);
+        if (m.matches()) {
+            return new String[]{m.group(1), m.group(2)};
+        }
+        return null;
+    }
+
+    /**
+     * set the device information of a specific device
+     *
+     * @param dInfo The device information.
+     */
+    public void setDeviceInfo(final TestDevice.DeviceParameterCollector dInfo) {
+        mDeviceParameterBase.add(dInfo);
+    }
+
+    /**
+     * Get the test result as string. Just translate result code to readable string.
+     * @param resultCode The result code.
+     * @return The readable result string.
+     */
+    public static String getResultString(final int resultCode) {
+        return sCodeToResultMap.get(resultCode);
+    }
+}
diff --git a/tools/host/src/com/android/cts/TestSuite.java b/tools/host/src/com/android/cts/TestSuite.java
new file mode 100644
index 0000000..71ea905
--- /dev/null
+++ b/tools/host/src/com/android/cts/TestSuite.java
@@ -0,0 +1,344 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+/**
+ * Hold information for a suite of test case, provide functions
+ * on storing and executing a test suite from CTS test harness.
+ *
+ */
+public class TestSuite implements DeviceObserver {
+    private TestPackage mParentPackage;
+    private Collection<TestCase> mTestCases;
+    private String mName;
+    private String mFullName;
+    private Collection<TestSuite> mSubSuites;
+
+    private TestCase mCurrentTestCase;
+    private TestSuite mCurrentSubSuite;
+    private boolean mTestStop;
+
+    /**
+     * Construct a test suite.
+     *
+     * @param pkg TestPakcage as the reference to the parent package.
+     * @param suiteName The current suite name, not the full name.
+     * @param fullName The full suite name along the nested suite path.
+     */
+    public TestSuite(final TestPackage pkg, final String suiteName, final String fullName) {
+        mParentPackage = pkg;
+        mName = suiteName;
+        mFullName = fullName;
+        mTestCases = new ArrayList<TestCase>();
+        mSubSuites = new ArrayList<TestSuite>();
+
+        mTestStop = false;
+        mCurrentTestCase = null;
+        mCurrentSubSuite = null;
+    }
+
+    /**
+     * Get parent package.
+     *
+     * @return Parent package.
+     */
+    public TestPackage getParent() {
+        return mParentPackage;
+    }
+
+    /**
+     * Add a specific test case.
+     *
+     * @param tc The test case to be added.
+     */
+    public void addTestCase(final TestCase tc) {
+        mTestCases.add(tc);
+    }
+
+    /**
+     * Add a specific test suite.
+     *
+     * @param suite The test suite to be added.
+     */
+    public void addSubSuite(final TestSuite suite) {
+        mSubSuites.add(suite);
+    }
+
+    /**
+     * Get TestCases.
+     *
+     * @return TestCases
+     */
+    public Collection<TestCase> getTestCases() {
+        return mTestCases;
+    }
+
+    /**
+     * Get the suite name of this TestSuite.
+     *
+     * @return The suite name of this TestCase.
+     */
+    public String getName() {
+        return mName;
+    }
+
+    /**
+     * Get the full suite name of this TestSuite.
+     *
+     * @return The full suite name of this TestCase.
+     */
+    public String getFullName() {
+        return mFullName;
+    }
+
+    /**
+     * Get the nested test suites of this test suite.
+     *
+     * @return The nested test suites.
+     */
+    public Collection<TestSuite> getSubSuites() {
+        return mSubSuites;
+    }
+
+    /**
+     * Get all of the test suites contained in this test suite.
+     *
+     * @return All of the test suites.
+     */
+    public Collection<TestSuite> getAllSuites() {
+        Collection<TestSuite> testSuites = new ArrayList<TestSuite>();
+        testSuites.add(this);
+        for (TestSuite suite : mSubSuites) {
+            testSuites.addAll(suite.getAllSuites());
+        }
+        return testSuites;
+    }
+
+    /**
+     * Search test in this test suite.
+     *
+     * @param testName The test name to be searched against.
+     * @return null if not found, or return founded test
+     */
+    public Test searchTest(final String testName) {
+        Test test = null;
+        for (TestCase testCase : mTestCases) {
+            test = testCase.searchTest(testName);
+            if (test != null) {
+                return test;
+            }
+        }
+
+        if (mSubSuites.size() != 0) {
+            for (TestSuite subSuite : mSubSuites) {
+                test = subSuite.searchTest(testName);
+                if (test != null) {
+                    return test;
+                }
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Get all tests of this test suite.
+     *
+     * @return The tests of this suite.
+     */
+    public Collection<Test> getTests() {
+        ArrayList<Test> tests = new ArrayList<Test>();
+        for (TestSuite subSuite : mSubSuites) {
+            tests.addAll(subSuite.getTests());
+        }
+
+        for (TestCase testCase : mTestCases) {
+            tests.addAll(testCase.getTests());
+        }
+
+        return tests;
+    }
+
+    /**
+     * Get all test cases of this test suite.
+     *
+     * @return The test cases of this suite.
+     */
+    public Collection<TestCase> getAllTestCases() {
+        ArrayList<TestCase> testCases = new ArrayList<TestCase>();
+        testCases.addAll(mTestCases);
+        for (TestSuite subSuite : mSubSuites) {
+            testCases.addAll(subSuite.getAllTestCases());
+        }
+
+        return testCases;
+    }
+
+    /**
+     * Get all test case names contained in the suite.
+     *
+     * @return All test case names.
+     */
+    public ArrayList<String> getAllTestCaseNames() {
+        ArrayList<String> caseNameList = new ArrayList<String>();
+        for (TestCase testCase : getAllTestCases()) {
+            caseNameList.add(testCase.getFullName());
+        }
+        return caseNameList;
+    }
+
+    /**
+     * Set test stopped;
+     *
+     * @param testStopped If true, it's stopped. Else, still running.
+     */
+    public void setTestStopped(final boolean testStopped) {
+        mTestStop = testStopped;
+        if (mCurrentTestCase != null) {
+            mCurrentTestCase.setTestStopped(mTestStop);
+        }
+
+        if (mCurrentSubSuite != null) {
+            mCurrentSubSuite.setTestStopped(mTestStop);
+        }
+    }
+
+    /**
+     * Run the this test suite or the specific java package contained
+     * in the test suite over device given.
+     *
+     * @param device The device to run the test over.
+     * @param javaPkgName The java package name.
+     */
+    public void run(final TestDevice device, final String javaPkgName)
+            throws IOException, DeviceDisconnectedException {
+        Iterator<TestSuite> subSuites = getSubSuites().iterator();
+        Iterator<TestCase> testCases = getTestCases().iterator();
+
+        mTestStop = false;
+        mCurrentTestCase = null;
+        mCurrentSubSuite = null;
+
+        while (subSuites.hasNext() && (!mTestStop)) {
+            mCurrentSubSuite = subSuites.next();
+            mCurrentSubSuite.run(device, javaPkgName);
+        }
+
+        while (testCases.hasNext() && (!mTestStop)) {
+            mCurrentTestCase = testCases.next();
+            String fullName = mFullName + "." + mCurrentTestCase.getName();
+            if ((javaPkgName == null) || (javaPkgName.length() == 0)
+                    || fullName.startsWith(javaPkgName)) {
+                mCurrentTestCase.run(device);
+            }
+        }
+    }
+
+    /**
+     * Run the specific test contained in the test suite over device given.
+     *
+     * @param device The device to run the test over.
+     * @param test The specific test to be run.
+     */
+    public void run(final TestDevice device, final Test test)
+            throws DeviceDisconnectedException {
+        mTestStop = false;
+        mCurrentTestCase = null;
+        mCurrentSubSuite = null;
+
+        mCurrentTestCase = test.getTestCase();
+        mCurrentTestCase.run(device, test);
+    }
+
+    /** {@inheritDoc} */
+    public void notifyUpdateResult(final int resCode,
+            final String failedMessage, final String stackTrace) {
+
+        if (mCurrentTestCase != null) {
+            mCurrentTestCase.notifyUpdateResult(resCode, failedMessage, stackTrace);
+        }
+
+        if (mCurrentSubSuite != null) {
+            mCurrentSubSuite.notifyUpdateResult(resCode, failedMessage, stackTrace);
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyInstallingComplete(final int resultCode) {
+        if (mCurrentTestCase != null) {
+            mCurrentTestCase.notifyInstallingComplete(resultCode);
+        }
+
+        if (mCurrentSubSuite != null) {
+            mCurrentSubSuite.notifyInstallingComplete(resultCode);
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyUninstallingComplete(final int resultCode) {
+        if (mCurrentTestCase != null) {
+            mCurrentTestCase.notifyUninstallingComplete(resultCode);
+        }
+
+        if (mCurrentSubSuite != null) {
+            mCurrentSubSuite.notifyUninstallingComplete(resultCode);
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyInstallingTimeout(final TestDevice testDevice) {
+        if (mCurrentTestCase != null) {
+            mCurrentTestCase.notifyInstallingTimeout(testDevice);
+        }
+
+        if (mCurrentSubSuite != null) {
+            mCurrentSubSuite.notifyInstallingTimeout(testDevice);
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyUninstallingTimeout(final TestDevice testDevice) {
+        if (mCurrentTestCase != null) {
+            mCurrentTestCase.notifyUninstallingTimeout(testDevice);
+        }
+
+        if (mCurrentSubSuite != null) {
+            mCurrentSubSuite.notifyUninstallingTimeout(testDevice);
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyTestingDeviceDisconnected() {
+        if (mCurrentTestCase != null) {
+            mCurrentTestCase.notifyTestingDeviceDisconnected();
+        }
+
+        if (mCurrentSubSuite != null) {
+            mCurrentSubSuite.notifyTestingDeviceDisconnected();
+        }
+    }
+
+    /** {@inheritDoc} */
+    public void notifyTestStatus(final Test test, final String status) {
+
+    }
+}
diff --git a/tools/host/src/com/android/cts/UnknownCommandException.java b/tools/host/src/com/android/cts/UnknownCommandException.java
new file mode 100644
index 0000000..585d532
--- /dev/null
+++ b/tools/host/src/com/android/cts/UnknownCommandException.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+/**
+ * Exception threw out if CommandParser encounter unknown command.
+ */
+public class UnknownCommandException extends Exception{
+
+    private static final long serialVersionUID = -23012571004369516L;
+
+    public UnknownCommandException() {
+        super();
+    }
+    public UnknownCommandException(String message) {
+        super(message);
+    }
+}
diff --git a/tools/host/src/com/android/cts/XMLResourceHandler.java b/tools/host/src/com/android/cts/XMLResourceHandler.java
new file mode 100644
index 0000000..f77b27b
--- /dev/null
+++ b/tools/host/src/com/android/cts/XMLResourceHandler.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.cts;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * An abstract class to deal with the XML information using DOM.
+ */
+public abstract class XMLResourceHandler {
+
+    protected String getElementContent(Node elem) {
+        return elem.getChildNodes().item(0).getNodeValue().trim();
+    }
+
+    /**
+     * Get string from DOM node by attribute name.
+     *
+     * @param elem a node from DOM tree.
+     * @param attrName the attribute name.
+     * @return string value of the attribute name from the DOM node.
+     */
+    static public String getStringAttributeValue(Node elem, String attrName) {
+        Node node = elem.getAttributes().getNamedItem(attrName);
+        if (node == null) {
+            return null;
+        }
+        return node.getNodeValue().trim();
+    }
+
+    /**
+     * Get integer attribute value.
+     *
+     * @param elem The element node.
+     * @param attrName The attribute name.
+     * @return The attribute value in integer.
+     */
+    protected int getAttributeValue(Node elem, String attrName) {
+        return Integer.parseInt(getStringAttributeValue(elem, attrName));
+    }
+
+    /**
+     * Get child by attribute.
+     *
+     * @param parent The parent node.
+     * @param attrName The attribute name.
+     * @param attrValue The attribute value.
+     * @return The child node.
+     */
+    protected Node getChildByAttribute(Node parent, String attrName, String attrValue) {
+        if (parent == null || attrName == null || attrValue == null) {
+            return null;
+        }
+        NodeList children = parent.getChildNodes();
+        for (int i = 0; i < children.getLength(); i++) {
+            Node child = children.item(i);
+            if (child.getNodeType() == Node.ELEMENT_NODE) {
+                if (attrValue.equals(getStringAttributeValue(child, attrName))) {
+                    return child;
+                }
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Set the attribute value.
+     *
+     * @param doc The document.
+     * @param elem The element node.
+     * @param name The attribute name.
+     * @param value The attribute value in integer.
+     */
+    protected void setAttribute(Document doc, Node elem, String name, int value) {
+        setAttribute(doc, elem, name, Integer.toString(value));
+    }
+
+    /**
+     * Set the attribute value.
+     *
+     * @param doc The document.
+     * @param elem The element node.
+     * @param name The attribute name.
+     * @param value The attribute value in string.
+     */
+    protected void setAttribute(Document doc, Node elem, String name, String value) {
+        Attr attrNode = doc.createAttribute(name);
+        attrNode.setNodeValue(value);
+
+        elem.getAttributes().setNamedItem(attrNode);
+    }
+
+    /**
+     * Write a DOM Document object into a file.
+     *
+     * @param file XML file to be written
+     * @param doc DOM Document
+     */
+    protected static void writeToFile(File file, Document doc) throws FileNotFoundException,
+            TransformerFactoryConfigurationError, TransformerException {
+        Transformer t = TransformerFactory.newInstance().newTransformer();
+        // enable indent in result file
+        t.setOutputProperty("indent", "yes");
+        t.transform(new DOMSource(doc),
+                new StreamResult(new FileOutputStream(file)));
+    }
+}
diff --git a/tools/host/src/junit/MODULE_LICENSE_CPL b/tools/host/src/junit/MODULE_LICENSE_CPL
new file mode 100644
index 0000000..541dbb5
--- /dev/null
+++ b/tools/host/src/junit/MODULE_LICENSE_CPL
@@ -0,0 +1 @@
+http://www.opensource.org/licenses/cpl1.0.php
diff --git a/tools/host/src/junit/framework/Assert.java b/tools/host/src/junit/framework/Assert.java
new file mode 100644
index 0000000..2e88486
--- /dev/null
+++ b/tools/host/src/junit/framework/Assert.java
@@ -0,0 +1,286 @@
+package junit.framework;
+
+/**
+ * A set of assert methods.  Messages are only displayed when an assert fails.
+ */
+
+public class Assert {
+    /**
+     * Protect constructor since it is a static only class
+     */
+    protected Assert() {
+    }
+
+    /**
+     * Asserts that a condition is true. If it isn't it throws
+     * an AssertionFailedError with the given message.
+     */
+    static public void assertTrue(String message, boolean condition) {
+        if (!condition)
+            fail(message);
+    }
+    /**
+     * Asserts that a condition is true. If it isn't it throws
+     * an AssertionFailedError.
+     */
+    static public void assertTrue(boolean condition) {
+        assertTrue(null, condition);
+    }
+    /**
+     * Asserts that a condition is false. If it isn't it throws
+     * an AssertionFailedError with the given message.
+     */
+    static public void assertFalse(String message, boolean condition) {
+        assertTrue(message, !condition);
+    }
+    /**
+     * Asserts that a condition is false. If it isn't it throws
+     * an AssertionFailedError.
+     */
+    static public void assertFalse(boolean condition) {
+        assertFalse(null, condition);
+    }
+    /**
+     * Fails a test with the given message.
+     */
+    static public void fail(String message) {
+        throw new AssertionFailedError(message);
+    }
+    /**
+     * Fails a test with no message.
+     */
+    static public void fail() {
+        fail(null);
+    }
+    /**
+     * Asserts that two objects are equal. If they are not
+     * an AssertionFailedError is thrown with the given message.
+     */
+    static public void assertEquals(String message, Object expected, Object actual) {
+        if (expected == null && actual == null)
+            return;
+        if (expected != null && expected.equals(actual))
+            return;
+        failNotEquals(message, expected, actual);
+    }
+    /**
+     * Asserts that two objects are equal. If they are not
+     * an AssertionFailedError is thrown.
+     */
+    static public void assertEquals(Object expected, Object actual) {
+        assertEquals(null, expected, actual);
+    }
+    /**
+     * Asserts that two Strings are equal.
+     */
+    static public void assertEquals(String message, String expected, String actual) {
+        if (expected == null && actual == null)
+            return;
+        if (expected != null && expected.equals(actual))
+            return;
+        throw new ComparisonFailure(message, expected, actual);
+    }
+    /**
+     * Asserts that two Strings are equal.
+     */
+    static public void assertEquals(String expected, String actual) {
+        assertEquals(null, expected, actual);
+    }
+    /**
+     * Asserts that two doubles are equal concerning a delta.  If they are not
+     * an AssertionFailedError is thrown with the given message.  If the expected
+     * value is infinity then the delta value is ignored.
+     */
+    static public void assertEquals(String message, double expected, double actual, double delta) {
+        if (Double.compare(expected, actual) == 0)
+            return;
+        if (!(Math.abs(expected-actual) <= delta))
+            failNotEquals(message, new Double(expected), new Double(actual));
+    }
+    /**
+     * Asserts that two doubles are equal concerning a delta. If the expected
+     * value is infinity then the delta value is ignored.
+     */
+    static public void assertEquals(double expected, double actual, double delta) {
+        assertEquals(null, expected, actual, delta);
+    }
+    /**
+     * Asserts that two floats are equal concerning a positive delta. If they
+     * are not an AssertionFailedError is thrown with the given message. If the
+     * expected value is infinity then the delta value is ignored.
+     */
+    static public void assertEquals(String message, float expected, float actual, float delta) {
+        if (Float.compare(expected, actual) == 0)
+            return;
+        if (!(Math.abs(expected - actual) <= delta))
+                failNotEquals(message, new Float(expected), new Float(actual));
+    }
+    /**
+     * Asserts that two floats are equal concerning a delta. If the expected
+     * value is infinity then the delta value is ignored.
+     */
+    static public void assertEquals(float expected, float actual, float delta) {
+        assertEquals(null, expected, actual, delta);
+    }
+    /**
+     * Asserts that two longs are equal. If they are not
+     * an AssertionFailedError is thrown with the given message.
+     */
+    static public void assertEquals(String message, long expected, long actual) {
+        assertEquals(message, new Long(expected), new Long(actual));
+    }
+    /**
+     * Asserts that two longs are equal.
+     */
+    static public void assertEquals(long expected, long actual) {
+        assertEquals(null, expected, actual);
+    }
+    /**
+     * Asserts that two booleans are equal. If they are not
+     * an AssertionFailedError is thrown with the given message.
+     */
+    static public void assertEquals(String message, boolean expected, boolean actual) {
+            assertEquals(message, Boolean.valueOf(expected), Boolean.valueOf(actual));
+    }
+    /**
+     * Asserts that two booleans are equal.
+     */
+    static public void assertEquals(boolean expected, boolean actual) {
+        assertEquals(null, expected, actual);
+    }
+    /**
+     * Asserts that two bytes are equal. If they are not
+     * an AssertionFailedError is thrown with the given message.
+     */
+    static public void assertEquals(String message, byte expected, byte actual) {
+        assertEquals(message, new Byte(expected), new Byte(actual));
+    }
+    /**
+     * Asserts that two bytes are equal.
+     */
+    static public void assertEquals(byte expected, byte actual) {
+        assertEquals(null, expected, actual);
+    }
+    /**
+     * Asserts that two chars are equal. If they are not
+     * an AssertionFailedError is thrown with the given message.
+     */
+    static public void assertEquals(String message, char expected, char actual) {
+            assertEquals(message, new Character(expected), new Character(actual));
+    }
+    /**
+     * Asserts that two chars are equal.
+     */
+    static public void assertEquals(char expected, char actual) {
+        assertEquals(null, expected, actual);
+    }
+    /**
+     * Asserts that two shorts are equal. If they are not
+     * an AssertionFailedError is thrown with the given message.
+     */
+    static public void assertEquals(String message, short expected, short actual) {
+            assertEquals(message, new Short(expected), new Short(actual));
+    }
+    /**
+     * Asserts that two shorts are equal.
+     */
+    static public void assertEquals(short expected, short actual) {
+        assertEquals(null, expected, actual);
+    }
+    /**
+     * Asserts that two ints are equal. If they are not
+     * an AssertionFailedError is thrown with the given message.
+     */
+    static public void assertEquals(String message, int expected, int actual) {
+        assertEquals(message, new Integer(expected), new Integer(actual));
+    }
+    /**
+     * Asserts that two ints are equal.
+     */
+    static public void assertEquals(int expected, int actual) {
+        assertEquals(null, expected, actual);
+    }
+    /**
+     * Asserts that an object isn't null.
+     */
+    static public void assertNotNull(Object object) {
+        assertNotNull(null, object);
+    }
+    /**
+     * Asserts that an object isn't null. If it is
+     * an AssertionFailedError is thrown with the given message.
+     */
+    static public void assertNotNull(String message, Object object) {
+        assertTrue(message, object != null);
+    }
+    /**
+     * Asserts that an object is null.
+     */
+    static public void assertNull(Object object) {
+        assertNull(null, object);
+    }
+    /**
+     * Asserts that an object is null.  If it is not
+     * an AssertionFailedError is thrown with the given message.
+     */
+    static public void assertNull(String message, Object object) {
+        assertTrue(message, object == null);
+    }
+    /**
+     * Asserts that two objects refer to the same object. If they are not
+     * an AssertionFailedError is thrown with the given message.
+     */
+    static public void assertSame(String message, Object expected, Object actual) {
+        if (expected == actual)
+            return;
+        failNotSame(message, expected, actual);
+    }
+    /**
+     * Asserts that two objects refer to the same object. If they are not
+     * the same an AssertionFailedError is thrown.
+     */
+    static public void assertSame(Object expected, Object actual) {
+        assertSame(null, expected, actual);
+    }
+    /**
+     * Asserts that two objects do not refer to the same object. If they do
+     * refer to the same object an AssertionFailedError is thrown with the
+     * given message.
+     */
+    static public void assertNotSame(String message, Object expected, Object actual) {
+        if (expected == actual)
+            failSame(message);
+    }
+    /**
+     * Asserts that two objects do not refer to the same object. If they do
+     * refer to the same object an AssertionFailedError is thrown.
+     */
+    static public void assertNotSame(Object expected, Object actual) {
+        assertNotSame(null, expected, actual);
+    }
+
+    static public void failSame(String message) {
+        String formatted= "";
+        if (message != null)
+            formatted= message+" ";
+        fail(formatted+"expected not same");
+    }
+
+    static public void failNotSame(String message, Object expected, Object actual) {
+        String formatted= "";
+        if (message != null)
+            formatted= message+" ";
+        fail(formatted+"expected same:<"+expected+"> was not:<"+actual+">");
+    }
+
+    static public void failNotEquals(String message, Object expected, Object actual) {
+        fail(format(message, expected, actual));
+    }
+
+    public static String format(String message, Object expected, Object actual) {
+        String formatted= "";
+        if (message != null)
+            formatted= message+" ";
+        return formatted+"expected:<"+expected+"> but was:<"+actual+">";
+    }
+}
diff --git a/tools/host/src/junit/framework/AssertionFailedError.java b/tools/host/src/junit/framework/AssertionFailedError.java
new file mode 100644
index 0000000..aaf1414
--- /dev/null
+++ b/tools/host/src/junit/framework/AssertionFailedError.java
@@ -0,0 +1,16 @@
+package junit.framework;
+
+/**
+ * Thrown when an assertion failed.
+ */
+public class AssertionFailedError extends AssertionError {
+
+    private static final long serialVersionUID= 1L;
+
+    public AssertionFailedError() {
+    }
+
+    public AssertionFailedError(String message) {
+        super(message);
+    }
+}
diff --git a/tools/host/src/junit/framework/ComparisonCompactor.java b/tools/host/src/junit/framework/ComparisonCompactor.java
new file mode 100644
index 0000000..0bccceb
--- /dev/null
+++ b/tools/host/src/junit/framework/ComparisonCompactor.java
@@ -0,0 +1,72 @@
+package junit.framework;
+
+public class ComparisonCompactor {
+
+    private static final String ELLIPSIS= "...";
+    private static final String DELTA_END= "]";
+    private static final String DELTA_START= "[";
+
+    private int fContextLength;
+    private String fExpected;
+    private String fActual;
+    private int fPrefix;
+    private int fSuffix;
+
+    public ComparisonCompactor(int contextLength, String expected, String actual) {
+        fContextLength= contextLength;
+        fExpected= expected;
+        fActual= actual;
+    }
+
+    public String compact(String message) {
+        if (fExpected == null || fActual == null || areStringsEqual())
+            return Assert.format(message, fExpected, fActual);
+
+        findCommonPrefix();
+        findCommonSuffix();
+        String expected= compactString(fExpected);
+        String actual= compactString(fActual);
+        return Assert.format(message, expected, actual);
+    }
+
+    private String compactString(String source) {
+        String result= DELTA_START + source.substring(fPrefix, source.length() - fSuffix + 1) + DELTA_END;
+        if (fPrefix > 0)
+            result= computeCommonPrefix() + result;
+        if (fSuffix > 0)
+            result= result + computeCommonSuffix();
+        return result;
+    }
+
+    private void findCommonPrefix() {
+        fPrefix= 0;
+        int end= Math.min(fExpected.length(), fActual.length());
+        for (; fPrefix < end; fPrefix++) {
+            if (fExpected.charAt(fPrefix) != fActual.charAt(fPrefix))
+                break;
+        }
+    }
+
+    private void findCommonSuffix() {
+        int expectedSuffix= fExpected.length() - 1;
+        int actualSuffix= fActual.length() - 1;
+        for (; actualSuffix >= fPrefix && expectedSuffix >= fPrefix; actualSuffix--, expectedSuffix--) {
+            if (fExpected.charAt(expectedSuffix) != fActual.charAt(actualSuffix))
+                break;
+        }
+        fSuffix=  fExpected.length() - expectedSuffix;
+    }
+
+    private String computeCommonPrefix() {
+        return (fPrefix > fContextLength ? ELLIPSIS : "") + fExpected.substring(Math.max(0, fPrefix - fContextLength), fPrefix);
+    }
+
+    private String computeCommonSuffix() {
+        int end= Math.min(fExpected.length() - fSuffix + 1 + fContextLength, fExpected.length());
+        return fExpected.substring(fExpected.length() - fSuffix + 1, end) + (fExpected.length() - fSuffix + 1 < fExpected.length() - fContextLength ? ELLIPSIS : "");
+    }
+
+    private boolean areStringsEqual() {
+        return fExpected.equals(fActual);
+    }
+}
diff --git a/tools/host/src/junit/framework/ComparisonFailure.java b/tools/host/src/junit/framework/ComparisonFailure.java
new file mode 100644
index 0000000..2fd7069
--- /dev/null
+++ b/tools/host/src/junit/framework/ComparisonFailure.java
@@ -0,0 +1,52 @@
+package junit.framework;
+
+/**
+ * Thrown when an assert equals for Strings failed.
+ *
+ * Inspired by a patch from Alex Chaffee mailto:alex@purpletech.com
+ */
+public class ComparisonFailure extends AssertionFailedError {
+    private static final int MAX_CONTEXT_LENGTH= 20;
+    private static final long serialVersionUID= 1L;
+
+    private String fExpected;
+    private String fActual;
+
+    /**
+     * Constructs a comparison failure.
+     * @param message the identifying message or null
+     * @param expected the expected string value
+     * @param actual the actual string value
+     */
+    public ComparisonFailure (String message, String expected, String actual) {
+        super (message);
+        fExpected= expected;
+        fActual= actual;
+    }
+
+    /**
+     * Returns "..." in place of common prefix and "..." in
+     * place of common suffix between expected and actual.
+     *
+     * @see Throwable#getMessage()
+     */
+    @Override
+    public String getMessage() {
+        return new ComparisonCompactor(MAX_CONTEXT_LENGTH, fExpected, fActual).compact(super.getMessage());
+    }
+
+    /**
+     * Gets the actual string value
+     * @return the actual string value
+     */
+    public String getActual() {
+        return fActual;
+    }
+    /**
+     * Gets the expected string value
+     * @return the expected string value
+     */
+    public String getExpected() {
+        return fExpected;
+    }
+}
diff --git a/tools/host/src/junit/framework/Protectable.java b/tools/host/src/junit/framework/Protectable.java
new file mode 100644
index 0000000..9a63c96
--- /dev/null
+++ b/tools/host/src/junit/framework/Protectable.java
@@ -0,0 +1,14 @@
+package junit.framework;
+
+/**
+ * A <em>Protectable</em> can be run and can throw a Throwable.
+ *
+ * @see TestResult
+ */
+public interface Protectable {
+
+    /**
+     * Run the the following method protected.
+     */
+    public abstract void protect() throws Throwable;
+}
diff --git a/tools/host/src/junit/framework/Test.java b/tools/host/src/junit/framework/Test.java
new file mode 100644
index 0000000..94f25cf
--- /dev/null
+++ b/tools/host/src/junit/framework/Test.java
@@ -0,0 +1,17 @@
+package junit.framework;
+
+/**
+ * A <em>Test</em> can be run and collect its results.
+ *
+ * @see TestResult
+ */
+public interface Test {
+    /**
+     * Counts the number of test cases that will be run by this test.
+     */
+    public abstract int countTestCases();
+    /**
+     * Runs a test and collects its result in a TestResult instance.
+     */
+    public abstract void run(TestResult result);
+}
diff --git a/tools/host/src/junit/framework/TestCase.java b/tools/host/src/junit/framework/TestCase.java
new file mode 100644
index 0000000..05a02ac
--- /dev/null
+++ b/tools/host/src/junit/framework/TestCase.java
@@ -0,0 +1,212 @@
+package junit.framework;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+
+/**
+ * A test case defines the fixture to run multiple tests. To define a test case<br/>
+ * <ol>
+ *   <li>implement a subclass of <code>TestCase</code></li>
+ *   <li>define instance variables that store the state of the fixture</li>
+ *   <li>initialize the fixture state by overriding {@link #setUp()}</li>
+ *   <li>clean-up after a test by overriding {@link #tearDown()}.</li>
+ * </ol>
+ * Each test runs in its own fixture so there
+ * can be no side effects among test runs.
+ * Here is an example:
+ * <pre>
+ * public class MathTest extends TestCase {
+ *    protected double fValue1;
+ *    protected double fValue2;
+ *
+ *    protected void setUp() {
+ *       fValue1= 2.0;
+ *       fValue2= 3.0;
+ *    }
+ * }
+ * </pre>
+ *
+ * For each test implement a method which interacts
+ * with the fixture. Verify the expected results with assertions specified
+ * by calling {@link junit.framework.Assert#assertTrue(String, boolean)} with a boolean.
+ * <pre>
+ *    public void testAdd() {
+ *       double result= fValue1 + fValue2;
+ *       assertTrue(result == 5.0);
+ *    }
+ * </pre>
+ *
+ * Once the methods are defined you can run them. The framework supports
+ * both a static type safe and more dynamic way to run a test.
+ * In the static way you override the runTest method and define the method to
+ * be invoked. A convenient way to do so is with an anonymous inner class.
+ * <pre>
+ * TestCase test= new MathTest("add") {
+ *    public void runTest() {
+ *       testAdd();
+ *    }
+ * };
+ * test.run();
+ * </pre>
+ *
+ * The dynamic way uses reflection to implement {@link #runTest()}. It dynamically finds
+ * and invokes a method.
+ * In this case the name of the test case has to correspond to the test method
+ * to be run.
+ * <pre>
+ * TestCase test= new MathTest("testAdd");
+ * test.run();
+ * </pre>
+ *
+ * The tests to be run can be collected into a TestSuite. JUnit provides
+ * different <i>test runners</i> which can run a test suite and collect the results.
+ * A test runner either expects a static method <code>suite</code> as the entry
+ * point to get a test to run or it will extract the suite automatically.
+ * <pre>
+ * public static Test suite() {
+ *    suite.addTest(new MathTest("testAdd"));
+ *    suite.addTest(new MathTest("testDivideByZero"));
+ *    return suite;
+ * }
+ * </pre>
+ * @see TestResult
+ * @see TestSuite
+ */
+public abstract class TestCase extends Assert implements Test {
+    /**
+     * the name of the test case
+     */
+    private String fName;
+
+    /**
+     * No-arg constructor to enable serialization. This method
+     * is not intended to be used by mere mortals without calling setName().
+     */
+    public TestCase() {
+        fName= null;
+    }
+    /**
+     * Constructs a test case with the given name.
+     */
+    public TestCase(String name) {
+        fName= name;
+    }
+    /**
+     * Counts the number of test cases executed by run(TestResult result).
+     */
+    public int countTestCases() {
+        return 1;
+    }
+    /**
+     * Creates a default TestResult object
+     *
+     * @see TestResult
+     */
+    protected TestResult createResult() {
+        return new TestResult();
+    }
+    /**
+     * A convenience method to run this test, collecting the results with a
+     * default TestResult object.
+     *
+     * @see TestResult
+     */
+    public TestResult run() {
+        TestResult result= createResult();
+        run(result);
+        return result;
+    }
+    /**
+     * Runs the test case and collects the results in TestResult.
+     */
+    public void run(TestResult result) {
+        result.run(this);
+    }
+    /**
+     * Runs the bare test sequence.
+     * @throws Throwable if any exception is thrown
+     */
+    public void runBare() throws Throwable {
+        Throwable exception= null;
+        setUp();
+        try {
+            runTest();
+        } catch (Throwable running) {
+            exception= running;
+        }
+        finally {
+            try {
+                tearDown();
+            } catch (Throwable tearingDown) {
+                if (exception == null) exception= tearingDown;
+            }
+        }
+        if (exception != null) throw exception;
+    }
+    /**
+     * Override to run the test and assert its state.
+     * @throws Throwable if any exception is thrown
+     */
+    protected void runTest() throws Throwable {
+        assertNotNull("TestCase.fName cannot be null", fName); // Some VMs crash when calling getMethod(null,null);
+        Method runMethod= null;
+        try {
+            // use getMethod to get all public inherited
+            // methods. getDeclaredMethods returns all
+            // methods of this class but excludes the
+            // inherited ones.
+            runMethod= getClass().getMethod(fName, (Class[])null);
+        } catch (NoSuchMethodException e) {
+            fail("Method \""+fName+"\" not found");
+        }
+        if (!Modifier.isPublic(runMethod.getModifiers())) {
+            fail("Method \""+fName+"\" should be public");
+        }
+
+        try {
+            runMethod.invoke(this);
+        }
+        catch (InvocationTargetException e) {
+            e.fillInStackTrace();
+            throw e.getTargetException();
+        }
+        catch (IllegalAccessException e) {
+            e.fillInStackTrace();
+            throw e;
+        }
+    }
+    /**
+     * Sets up the fixture, for example, open a network connection.
+     * This method is called before a test is executed.
+     */
+    protected void setUp() throws Exception {
+    }
+    /**
+     * Tears down the fixture, for example, close a network connection.
+     * This method is called after a test is executed.
+     */
+    protected void tearDown() throws Exception {
+    }
+    /**
+     * Returns a string representation of the test case
+     */
+    @Override
+    public String toString() {
+        return getName() + "(" + getClass().getName() + ")";
+    }
+    /**
+     * Gets the name of a TestCase
+     * @return the name of the TestCase
+     */
+    public String getName() {
+        return fName;
+    }
+    /**
+     * Sets the name of a TestCase
+     * @param name the name to set
+     */
+    public void setName(String name) {
+        fName= name;
+    }
+}
diff --git a/tools/host/src/junit/framework/TestFailure.java b/tools/host/src/junit/framework/TestFailure.java
new file mode 100644
index 0000000..d1afabd
--- /dev/null
+++ b/tools/host/src/junit/framework/TestFailure.java
@@ -0,0 +1,56 @@
+package junit.framework;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+/**
+ * A <code>TestFailure</code> collects a failed test together with
+ * the caught exception.
+ * @see TestResult
+ */
+public class TestFailure extends Object {
+    protected Test fFailedTest;
+    protected Throwable fThrownException;
+
+    /**
+     * Constructs a TestFailure with the given test and exception.
+     */
+    public TestFailure(Test failedTest, Throwable thrownException) {
+        fFailedTest= failedTest;
+        fThrownException= thrownException;
+    }
+    /**
+     * Gets the failed test.
+     */
+    public Test failedTest() {
+        return fFailedTest;
+    }
+    /**
+     * Gets the thrown exception.
+     */
+    public Throwable thrownException() {
+        return fThrownException;
+    }
+    /**
+     * Returns a short description of the failure.
+     */
+    @Override
+    public String toString() {
+        StringBuffer buffer= new StringBuffer();
+        buffer.append(fFailedTest+": "+fThrownException.getMessage());
+        return buffer.toString();
+    }
+    public String trace() {
+        StringWriter stringWriter= new StringWriter();
+        PrintWriter writer= new PrintWriter(stringWriter);
+        thrownException().printStackTrace(writer);
+        StringBuffer buffer= stringWriter.getBuffer();
+        return buffer.toString();
+    }
+    public String exceptionMessage() {
+        return thrownException().getMessage();
+    }
+    public boolean isFailure() {
+        return thrownException() instanceof AssertionFailedError;
+    }
+}
diff --git a/tools/host/src/junit/framework/TestListener.java b/tools/host/src/junit/framework/TestListener.java
new file mode 100644
index 0000000..cde0691
--- /dev/null
+++ b/tools/host/src/junit/framework/TestListener.java
@@ -0,0 +1,23 @@
+package junit.framework;
+
+/**
+ * A Listener for test progress
+ */
+public interface TestListener {
+    /**
+     * An error occurred.
+     */
+    public void addError(Test test, Throwable t);
+    /**
+     * A failure occurred.
+     */
+    public void addFailure(Test test, AssertionFailedError t);
+    /**
+     * A test ended.
+     */
+    public void endTest(Test test);
+    /**
+     * A test started.
+     */
+    public void startTest(Test test);
+}
diff --git a/tools/host/src/junit/framework/TestResult.java b/tools/host/src/junit/framework/TestResult.java
new file mode 100644
index 0000000..f0b1266
--- /dev/null
+++ b/tools/host/src/junit/framework/TestResult.java
@@ -0,0 +1,168 @@
+package junit.framework;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.List;
+
+/**
+ * A <code>TestResult</code> collects the results of executing
+ * a test case. It is an instance of the Collecting Parameter pattern.
+ * The test framework distinguishes between <i>failures</i> and <i>errors</i>.
+ * A failure is anticipated and checked for with assertions. Errors are
+ * unanticipated problems like an {@link ArrayIndexOutOfBoundsException}.
+ *
+ * @see Test
+ */
+public class TestResult extends Object {
+    protected List<TestFailure> fFailures;
+    protected List<TestFailure> fErrors;
+    protected List<TestListener> fListeners;
+    protected int fRunTests;
+    private boolean fStop;
+
+    public TestResult() {
+        fFailures= new ArrayList<TestFailure>();
+        fErrors= new ArrayList<TestFailure>();
+        fListeners= new ArrayList<TestListener>();
+        fRunTests= 0;
+        fStop= false;
+    }
+    /**
+     * Adds an error to the list of errors. The passed in exception
+     * caused the error.
+     */
+    public synchronized void addError(Test test, Throwable t) {
+        fErrors.add(new TestFailure(test, t));
+        for (TestListener each : cloneListeners())
+            each.addError(test, t);
+    }
+    /**
+     * Adds a failure to the list of failures. The passed in exception
+     * caused the failure.
+     */
+    public synchronized void addFailure(Test test, AssertionFailedError t) {
+        fFailures.add(new TestFailure(test, t));
+        for (TestListener each : cloneListeners())
+            each.addFailure(test, t);
+    }
+    /**
+     * Registers a TestListener
+     */
+    public synchronized void addListener(TestListener listener) {
+        fListeners.add(listener);
+    }
+    /**
+     * Unregisters a TestListener
+     */
+    public synchronized void removeListener(TestListener listener) {
+        fListeners.remove(listener);
+    }
+    /**
+     * Returns a copy of the listeners.
+     */
+    private synchronized List<TestListener> cloneListeners() {
+        List<TestListener> result= new ArrayList<TestListener>();
+        result.addAll(fListeners);
+        return result;
+    }
+    /**
+     * Informs the result that a test was completed.
+     */
+    public void endTest(Test test) {
+        for (TestListener each : cloneListeners())
+            each.endTest(test);
+    }
+    /**
+     * Gets the number of detected errors.
+     */
+    public synchronized int errorCount() {
+        return fErrors.size();
+    }
+    /**
+     * Returns an Enumeration for the errors
+     */
+    public synchronized Enumeration<TestFailure> errors() {
+        return Collections.enumeration(fErrors);
+    }
+
+    /**
+     * Gets the number of detected failures.
+     */
+    public synchronized int failureCount() {
+        return fFailures.size();
+    }
+    /**
+     * Returns an Enumeration for the failures
+     */
+    public synchronized Enumeration<TestFailure> failures() {
+        return Collections.enumeration(fFailures);
+    }
+
+    /**
+     * Runs a TestCase.
+     */
+    protected void run(final TestCase test) {
+        startTest(test);
+        Protectable p= new Protectable() {
+            public void protect() throws Throwable {
+                test.runBare();
+            }
+        };
+        runProtected(test, p);
+
+        endTest(test);
+    }
+    /**
+     * Gets the number of run tests.
+     */
+    public synchronized int runCount() {
+        return fRunTests;
+    }
+    /**
+     * Runs a TestCase.
+     */
+    public void runProtected(final Test test, Protectable p) {
+        try {
+            p.protect();
+        }
+        catch (AssertionFailedError e) {
+            addFailure(test, e);
+        }
+        catch (ThreadDeath e) { // don't catch ThreadDeath by accident
+            throw e;
+        }
+        catch (Throwable e) {
+            addError(test, e);
+        }
+    }
+    /**
+     * Checks whether the test run should stop
+     */
+    public synchronized boolean shouldStop() {
+        return fStop;
+    }
+    /**
+     * Informs the result that a test will be started.
+     */
+    public void startTest(Test test) {
+        final int count= test.countTestCases();
+        synchronized(this) {
+            fRunTests+= count;
+        }
+        for (TestListener each : cloneListeners())
+            each.startTest(test);
+    }
+    /**
+     * Marks that the test run should stop.
+     */
+    public synchronized void stop() {
+        fStop= true;
+    }
+    /**
+     * Returns whether the entire test was successful or not.
+     */
+    public synchronized boolean wasSuccessful() {
+        return failureCount() == 0 && errorCount() == 0;
+    }
+}
diff --git a/tools/host/src/junit/framework/TestSuite.java b/tools/host/src/junit/framework/TestSuite.java
new file mode 100644
index 0000000..7516bfd
--- /dev/null
+++ b/tools/host/src/junit/framework/TestSuite.java
@@ -0,0 +1,296 @@
+package junit.framework;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Vector;
+
+/**
+ * <p>A <code>TestSuite</code> is a <code>Composite</code> of Tests.
+ * It runs a collection of test cases. Here is an example using
+ * the dynamic test definition.
+ * <pre>
+ * TestSuite suite= new TestSuite();
+ * suite.addTest(new MathTest("testAdd"));
+ * suite.addTest(new MathTest("testDivideByZero"));
+ * </pre>
+ * </p>
+ *
+ * <p>Alternatively, a TestSuite can extract the tests to be run automatically.
+ * To do so you pass the class of your TestCase class to the
+ * TestSuite constructor.
+ * <pre>
+ * TestSuite suite= new TestSuite(MathTest.class);
+ * </pre>
+ * </p>
+ *
+ * <p>This constructor creates a suite with all the methods
+ * starting with "test" that take no arguments.</p>
+ *
+ * <p>A final option is to do the same for a large array of test classes.
+ * <pre>
+ * Class[] testClasses = { MathTest.class, AnotherTest.class }
+ * TestSuite suite= new TestSuite(testClasses);
+ * </pre>
+ * </p>
+ *
+ * @see Test
+ */
+public class TestSuite implements Test {
+
+    /**
+     * ...as the moon sets over the early morning Merlin, Oregon
+     * mountains, our intrepid adventurers type...
+     */
+    static public Test createTest(Class<? extends TestCase> theClass, String name) {
+        Constructor<? extends TestCase> constructor;
+        try {
+            constructor= getTestConstructor(theClass);
+        } catch (NoSuchMethodException e) {
+            return warning("Class "+theClass.getName()+" has no public constructor TestCase(String name) or TestCase()");
+        }
+        Object test;
+        try {
+            if (constructor.getParameterTypes().length == 0) {
+                test= constructor.newInstance(new Object[0]);
+                if (test instanceof TestCase)
+                    ((TestCase) test).setName(name);
+            } else {
+                test= constructor.newInstance(new Object[]{name});
+            }
+        } catch (InstantiationException e) {
+            return(warning("Cannot instantiate test case: "+name+" ("+exceptionToString(e)+")"));
+        } catch (InvocationTargetException e) {
+            return(warning("Exception in constructor: "+name+" ("+exceptionToString(e.getTargetException())+")"));
+        } catch (IllegalAccessException e) {
+            return(warning("Cannot access test case: "+name+" ("+exceptionToString(e)+")"));
+        }
+        return (Test) test;
+    }
+
+    /**
+     * Gets a constructor which takes a single String as
+     * its argument or a no arg constructor.
+     */
+    public static Constructor<? extends TestCase> getTestConstructor(Class<? extends TestCase> theClass) throws NoSuchMethodException {
+        try {
+            return theClass.getConstructor(String.class);
+        } catch (NoSuchMethodException e) {
+            // fall through
+        }
+        return theClass.getConstructor(new Class[0]);
+    }
+
+    /**
+     * Returns a test which will fail and log a warning message.
+     */
+    public static Test warning(final String message) {
+        return new TestCase("warning") {
+            @Override
+            protected void runTest() {
+                fail(message);
+            }
+        };
+    }
+
+    /**
+     * Converts the stack trace into a string
+     */
+    private static String exceptionToString(Throwable t) {
+        StringWriter stringWriter= new StringWriter();
+        PrintWriter writer= new PrintWriter(stringWriter);
+        t.printStackTrace(writer);
+        return stringWriter.toString();
+    }
+
+    private String fName;
+
+    private Vector<Test> fTests= new Vector<Test>(10); // Cannot convert this to List because it is used directly by some test runners
+
+    /**
+     * Constructs an empty TestSuite.
+     */
+    public TestSuite() {
+    }
+
+    /**
+     * Constructs a TestSuite from the given class. Adds all the methods
+     * starting with "test" as test cases to the suite.
+     * Parts of this method were written at 2337 meters in the Hueffihuette,
+     * Kanton Uri
+     */
+     public TestSuite(final Class<? extends TestCase> theClass) {
+        fName= theClass.getName();
+        try {
+            getTestConstructor(theClass); // Avoid generating multiple error messages
+        } catch (NoSuchMethodException e) {
+            addTest(warning("Class "+theClass.getName()+" has no public constructor TestCase(String name) or TestCase()"));
+            return;
+        }
+
+        if (!Modifier.isPublic(theClass.getModifiers())) {
+            addTest(warning("Class "+theClass.getName()+" is not public"));
+            return;
+        }
+
+        Class<?> superClass= theClass;
+        List<String> names= new ArrayList<String>();
+        while (Test.class.isAssignableFrom(superClass)) {
+            for (Method each : superClass.getDeclaredMethods())
+                addTestMethod(each, names, theClass);
+            superClass= superClass.getSuperclass();
+        }
+        if (fTests.size() == 0)
+            addTest(warning("No tests found in "+theClass.getName()));
+    }
+
+    /**
+     * Constructs a TestSuite from the given class with the given name.
+     * @see TestSuite#TestSuite(Class)
+     */
+    public TestSuite(Class<? extends TestCase>  theClass, String name) {
+        this(theClass);
+        setName(name);
+    }
+
+    /**
+     * Constructs an empty TestSuite.
+     */
+    public TestSuite(String name) {
+        setName(name);
+    }
+
+    /**
+     * Constructs a TestSuite from the given array of classes.
+     * @param classes {@link TestCase}s
+     */
+    public TestSuite (Class<?>... classes) {
+        for (Class<?> each : classes)
+            addTest(new TestSuite(each.asSubclass(TestCase.class)));
+    }
+
+    /**
+     * Constructs a TestSuite from the given array of classes with the given name.
+     * @see TestSuite#TestSuite(Class[])
+     */
+    public TestSuite(Class<? extends TestCase>[] classes, String name) {
+        this(classes);
+        setName(name);
+    }
+
+    /**
+     * Adds a test to the suite.
+     */
+    public void addTest(Test test) {
+        fTests.add(test);
+    }
+
+    /**
+     * Adds the tests from the given class to the suite
+     */
+    public void addTestSuite(Class<? extends TestCase> testClass) {
+        addTest(new TestSuite(testClass));
+    }
+
+    /**
+     * Counts the number of test cases that will be run by this test.
+     */
+    public int countTestCases() {
+        int count= 0;
+        for (Test each : fTests)
+            count+=  each.countTestCases();
+        return count;
+    }
+
+    /**
+     * Returns the name of the suite. Not all
+     * test suites have a name and this method
+     * can return null.
+     */
+    public String getName() {
+        return fName;
+    }
+
+    /**
+     * Runs the tests and collects their result in a TestResult.
+     */
+    public void run(TestResult result) {
+        for (Test each : fTests) {
+            if (result.shouldStop() )
+                break;
+            runTest(each, result);
+        }
+    }
+
+    public void runTest(Test test, TestResult result) {
+        test.run(result);
+    }
+
+    /**
+     * Sets the name of the suite.
+     * @param name the name to set
+     */
+    public void setName(String name) {
+        fName= name;
+    }
+
+    /**
+     * Returns the test at the given index
+     */
+    public Test testAt(int index) {
+        return fTests.get(index);
+    }
+
+    /**
+     * Returns the number of tests in this suite
+     */
+    public int testCount() {
+        return fTests.size();
+    }
+
+    /**
+     * Returns the tests as an enumeration
+     */
+    public Enumeration<Test> tests() {
+        return fTests.elements();
+    }
+
+    /**
+     */
+    @Override
+    public String toString() {
+        if (getName() != null)
+            return getName();
+        return super.toString();
+     }
+
+    private void addTestMethod(Method m, List<String> names, Class<? extends TestCase> theClass) {
+        String name= m.getName();
+        if (names.contains(name))
+            return;
+        if (! isPublicTestMethod(m)) {
+            if (isTestMethod(m))
+                addTest(warning("Test method isn't public: "+m.getName()));
+            return;
+        }
+        names.add(name);
+        addTest(createTest(theClass, name));
+    }
+
+    private boolean isPublicTestMethod(Method m) {
+        return isTestMethod(m) && Modifier.isPublic(m.getModifiers());
+     }
+
+    private boolean isTestMethod(Method m) {
+        return
+            m.getParameterTypes().length == 0 &&
+            m.getName().startsWith("test") &&
+            m.getReturnType().equals(Void.TYPE);
+     }
+}
diff --git a/tools/host/src/junit/framework/package-info.java b/tools/host/src/junit/framework/package-info.java
new file mode 100644
index 0000000..c552eba
--- /dev/null
+++ b/tools/host/src/junit/framework/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * Provides JUnit v3.x core classes.
+ */
+package junit.framework;
diff --git a/tools/host/src/junit/runner/BaseTestRunner.java b/tools/host/src/junit/runner/BaseTestRunner.java
new file mode 100644
index 0000000..97a25a3
--- /dev/null
+++ b/tools/host/src/junit/runner/BaseTestRunner.java
@@ -0,0 +1,319 @@
+package junit.runner;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.text.NumberFormat;
+import java.util.Properties;
+
+import junit.framework.AssertionFailedError;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestListener;
+import junit.framework.TestSuite;
+
+/**
+ * Base class for all test runners.
+ * This class was born live on stage in Sardinia during XP2000.
+ */
+public abstract class BaseTestRunner implements TestListener {
+    public static final String SUITE_METHODNAME= "suite";
+
+    private static Properties fPreferences;
+    static int fgMaxMessageLength= 500;
+    static boolean fgFilterStack= true;
+    boolean fLoading= true;
+
+    /*
+    * Implementation of TestListener
+    */
+    public synchronized void startTest(Test test) {
+        testStarted(test.toString());
+    }
+
+    protected static void setPreferences(Properties preferences) {
+        fPreferences= preferences;
+    }
+
+    protected static Properties getPreferences() {
+        if (fPreferences == null) {
+            fPreferences= new Properties();
+            fPreferences.put("loading", "true");
+            fPreferences.put("filterstack", "true");
+            readPreferences();
+        }
+        return fPreferences;
+    }
+
+    public static void savePreferences() throws IOException {
+        FileOutputStream fos= new FileOutputStream(getPreferencesFile());
+        try {
+            getPreferences().store(fos, "");
+        } finally {
+            fos.close();
+        }
+    }
+
+    public static void setPreference(String key, String value) {
+        getPreferences().put(key, value);
+    }
+
+    public synchronized void endTest(Test test) {
+        testEnded(test.toString());
+    }
+
+    public synchronized void addError(final Test test, final Throwable t) {
+        testFailed(TestRunListener.STATUS_ERROR, test, t);
+    }
+
+    public synchronized void addFailure(final Test test, final AssertionFailedError t) {
+        testFailed(TestRunListener.STATUS_FAILURE, test, t);
+    }
+
+    // TestRunListener implementation
+
+    public abstract void testStarted(String testName);
+
+    public abstract void testEnded(String testName);
+
+    public abstract void testFailed(int status, Test test, Throwable t);
+
+    /**
+     * Returns the Test corresponding to the given suite. This is
+     * a template method, subclasses override runFailed(), clearStatus().
+     */
+    public Test getTest(String suiteClassName) {
+        if (suiteClassName.length() <= 0) {
+            clearStatus();
+            return null;
+        }
+        Class<? extends TestCase> testClass= null;
+        try {
+            testClass= loadSuiteClass(suiteClassName);
+        } catch (ClassNotFoundException e) {
+            String clazz= e.getMessage();
+            if (clazz == null)
+                clazz= suiteClassName;
+            runFailed("Class not found \""+clazz+"\"");
+            return null;
+        } catch(Exception e) {
+            runFailed("Error: "+e.toString());
+            return null;
+        }
+        Method suiteMethod= null;
+        try {
+            suiteMethod= testClass.getMethod(SUITE_METHODNAME, new Class[0]);
+        } catch(Exception e) {
+            // try to extract a test suite automatically
+            clearStatus();
+            return new TestSuite(testClass);
+        }
+        if (! Modifier.isStatic(suiteMethod.getModifiers())) {
+            runFailed("Suite() method must be static");
+            return null;
+        }
+        Test test= null;
+        try {
+            test= (Test)suiteMethod.invoke(null, (Object[])new Class[0]); // static method
+            if (test == null)
+                return test;
+        }
+        catch (InvocationTargetException e) {
+            runFailed("Failed to invoke suite():" + e.getTargetException().toString());
+            return null;
+        }
+        catch (IllegalAccessException e) {
+            runFailed("Failed to invoke suite():" + e.toString());
+            return null;
+        }
+
+        clearStatus();
+        return test;
+    }
+
+    /**
+     * Returns the formatted string of the elapsed time.
+     */
+    public String elapsedTimeAsString(long runTime) {
+        return NumberFormat.getInstance().format((double)runTime/1000);
+    }
+
+    /**
+     * Processes the command line arguments and
+     * returns the name of the suite class to run or null
+     */
+    protected String processArguments(String[] args) {
+        String suiteName= null;
+        for (int i= 0; i < args.length; i++) {
+            if (args[i].equals("-noloading")) {
+                setLoading(false);
+            } else if (args[i].equals("-nofilterstack")) {
+                fgFilterStack= false;
+            } else if (args[i].equals("-c")) {
+                if (args.length > i+1)
+                    suiteName= extractClassName(args[i+1]);
+                else
+                    System.out.println("Missing Test class name");
+                i++;
+            } else {
+                suiteName= args[i];
+            }
+        }
+        return suiteName;
+    }
+
+    /**
+     * Sets the loading behaviour of the test runner
+     */
+    public void setLoading(boolean enable) {
+        fLoading= enable;
+    }
+    /**
+     * Extract the class name from a String in VA/Java style
+     */
+    public String extractClassName(String className) {
+        if(className.startsWith("Default package for"))
+            return className.substring(className.lastIndexOf(".")+1);
+        return className;
+    }
+
+    /**
+     * Truncates a String to the maximum length.
+     */
+    public static String truncate(String s) {
+        if (fgMaxMessageLength != -1 && s.length() > fgMaxMessageLength)
+            s= s.substring(0, fgMaxMessageLength)+"...";
+        return s;
+    }
+
+    /**
+     * Override to define how to handle a failed loading of
+     * a test suite.
+     */
+    protected abstract void runFailed(String message);
+
+    /**
+     * Returns the loaded Class for a suite name.
+     */
+    protected Class<? extends TestCase> loadSuiteClass(String suiteClassName) throws ClassNotFoundException {
+        return Class.forName(suiteClassName).asSubclass(TestCase.class);
+    }
+
+    /**
+     * Clears the status message.
+     */
+    protected void clearStatus() { // Belongs in the GUI TestRunner class
+    }
+
+    protected boolean useReloadingTestSuiteLoader() {
+        return getPreference("loading").equals("true") && fLoading;
+    }
+
+    private static File getPreferencesFile() {
+        String home= System.getProperty("user.home");
+        return new File(home, "junit.properties");
+    }
+
+    private static void readPreferences() {
+        InputStream is= null;
+        try {
+            is= new FileInputStream(getPreferencesFile());
+            setPreferences(new Properties(getPreferences()));
+            getPreferences().load(is);
+        } catch (IOException e) {
+            try {
+                if (is != null)
+                    is.close();
+            } catch (IOException e1) {
+            }
+        }
+    }
+
+    public static String getPreference(String key) {
+        return getPreferences().getProperty(key);
+    }
+
+    public static int getPreference(String key, int dflt) {
+        String value= getPreference(key);
+        int intValue= dflt;
+        if (value == null)
+            return intValue;
+        try {
+            intValue= Integer.parseInt(value);
+        } catch (NumberFormatException ne) {
+        }
+        return intValue;
+    }
+
+    /**
+     * Returns a filtered stack trace
+     */
+    public static String getFilteredTrace(Throwable t) {
+        StringWriter stringWriter= new StringWriter();
+        PrintWriter writer= new PrintWriter(stringWriter);
+        t.printStackTrace(writer);
+        StringBuffer buffer= stringWriter.getBuffer();
+        String trace= buffer.toString();
+        return BaseTestRunner.getFilteredTrace(trace);
+    }
+
+    /**
+     * Filters stack frames from internal JUnit classes
+     */
+    public static String getFilteredTrace(String stack) {
+        if (showStackRaw())
+            return stack;
+
+        StringWriter sw= new StringWriter();
+        PrintWriter pw= new PrintWriter(sw);
+        StringReader sr= new StringReader(stack);
+        BufferedReader br= new BufferedReader(sr);
+
+        String line;
+        try {
+            while ((line= br.readLine()) != null) {
+                if (!filterLine(line))
+                    pw.println(line);
+            }
+        } catch (Exception IOException) {
+            return stack; // return the stack unfiltered
+        }
+        return sw.toString();
+    }
+
+    protected static boolean showStackRaw() {
+        return !getPreference("filterstack").equals("true") || fgFilterStack == false;
+    }
+
+    static boolean filterLine(String line) {
+        String[] patterns= new String[] {
+            "junit.framework.TestCase",
+            "junit.framework.TestResult",
+            "junit.framework.TestSuite",
+            "junit.framework.Assert.", // don't filter AssertionFailure
+            "junit.swingui.TestRunner",
+            "junit.awtui.TestRunner",
+            "junit.textui.TestRunner",
+            "java.lang.reflect.Method.invoke("
+        };
+        for (int i= 0; i < patterns.length; i++) {
+            if (line.indexOf(patterns[i]) > 0)
+                return true;
+        }
+        return false;
+    }
+
+    static {
+        fgMaxMessageLength= getPreference("maxmessage", fgMaxMessageLength);
+    }
+
+}
diff --git a/tools/host/src/junit/runner/TestRunListener.java b/tools/host/src/junit/runner/TestRunListener.java
new file mode 100644
index 0000000..b11ef07
--- /dev/null
+++ b/tools/host/src/junit/runner/TestRunListener.java
@@ -0,0 +1,19 @@
+package junit.runner;
+/**
+ * A listener interface for observing the
+ * execution of a test run. Unlike TestListener,
+ * this interface using only primitive objects,
+ * making it suitable for remote test execution.
+ */
+ public interface TestRunListener {
+     /* test status constants*/
+     public static final int STATUS_ERROR= 1;
+     public static final int STATUS_FAILURE= 2;
+
+     public void testRunStarted(String testSuiteName, int testCount);
+     public void testRunEnded(long elapsedTime);
+     public void testRunStopped(long elapsedTime);
+     public void testStarted(String testName);
+     public void testEnded(String testName);
+     public void testFailed(int status, String testName, String trace);
+}
diff --git a/tools/host/src/junit/runner/Version.java b/tools/host/src/junit/runner/Version.java
new file mode 100644
index 0000000..6173572
--- /dev/null
+++ b/tools/host/src/junit/runner/Version.java
@@ -0,0 +1,18 @@
+package junit.runner;
+
+/**
+ * This class defines the current version of JUnit
+ */
+public class Version {
+    private Version() {
+        // don't instantiate
+    }
+
+    public static String id() {
+        return "4.4";
+    }
+
+    public static void main(String[] args) {
+        System.out.println(id());
+    }
+}
diff --git a/tools/host/src/junit/runner/package-info.java b/tools/host/src/junit/runner/package-info.java
new file mode 100644
index 0000000..8deda95
--- /dev/null
+++ b/tools/host/src/junit/runner/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * Provides JUnit v3.x test runners.
+ */
+package junit.runner;
diff --git a/tools/host/src/res/cts_result.css b/tools/host/src/res/cts_result.css
new file mode 100644
index 0000000..9732361
--- /dev/null
+++ b/tools/host/src/res/cts_result.css
@@ -0,0 +1,227 @@
+/* Copyright (C) 2008 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+*/
+
+body {
+    font-family:arial,sans-serif;
+    color:#000;
+    font-size:13px;
+    color:#333;
+    padding:10;
+    margin:10;
+}
+
+table {
+    font-size:1em;
+    margin:0 0 1em;
+    padding:0;
+    border-collapse:collapse;
+    border-width:0;
+    empty-cells:show;
+    width: 95%;
+}
+
+/* Report logo and device name */
+#title table {
+    padding:5px;
+    border-width: 0px;
+    margin-left:auto;
+    margin-right:auto;
+    vertical-align:middle;
+}
+
+/* Device and test plan summary below the title */
+#summary table {
+    background-color: rgb(212, 233, 169);
+    -moz-border-radius:5px;
+    border-radius:5px;
+    padding:5px;
+    border-color: #A5C639 #A5C639 #A5C639 #A5C639;
+    border-width: 0px 0px 0px 0px;
+    margin-left:auto;
+    margin-right:auto;
+    width:80%;
+}
+
+#summary th {
+    background-color: #A5C639;
+    font-size:1.2em;
+    height: 2em;
+    width: 50%;
+}
+
+#summary td {
+    border-width: 0px 0px 0px 0px;
+    border-color: gray;
+    border-style: inset;
+    font-size:1em;
+}
+
+#summaryinfo table {
+    background-color: rgb(212, 233, 169);
+    padding:5px;
+    border-width:0;
+    margin-left:auto;
+    margin-right:auto;
+}
+
+#summaryinfo td {
+    padding:1px;
+    border-width: 0px 0px 0px 0px;
+}
+
+/* The test summary */
+#testsummary table {
+    background-color: rgb(212, 233, 169);
+    padding:5px;
+    border-width:1;
+    border-color: #A5C639;
+    margin-left:auto;
+    margin-right:auto;
+    width: 40%;
+}
+
+#testsummary th {
+    background-color: #A5C639;
+    border-width: 1px;
+    border-color: gray;
+    border-style: outset;
+    height: 2em;
+}
+
+#testsummary td {
+    border-width: 1px;
+    border-color: #A5C639;
+    border-style: outset;
+    text-align: center;
+}
+
+/* The test details */
+#testdetail table {
+    background-color: rgb(212, 233, 169);
+    padding:5px;
+    border-width:1;
+    border-color: #A5C639;
+    margin-left:auto;
+    margin-right:auto;
+    width: 95%;
+    table-layout:fixed;
+    vertical-align: top;
+}
+
+#testdetail th {
+    background-color: #A5C639;
+    border-width: 1px;
+    border-color: gray;
+    border-style: outset;
+    height: 2em;
+}
+
+#testdetail td {
+    border-width: 1px;
+    border-color: #A5C639;
+    border-style: outset;
+    text-align: left;
+    vertical-align: top;
+    padding:1;
+}
+
+/* The test package name */
+#none table {
+    border-width:0;
+    border-color: white;
+    background-color: white;
+    text-align:left;
+    border-collapse:collapse;
+}
+
+#none td {
+    border-width:0;
+    border-color: white;
+    background-color: white;
+    text-align:left;
+    border-collapse:collapse;
+    font-weight:bold;
+}
+
+/* Test cell details */
+td.failed {
+    background-color: #A5C639;
+    font-weight:bold;
+    vertical-align: top;
+    text-align: center;
+}
+
+td.failuredetails {
+    text-align: left;
+}
+
+td.pass {
+    text-align: center;
+    margin-left:auto;
+    margin-right:auto;
+}
+
+td.timeout {
+    background-color: #A5C639;
+    vertical-align: top;
+    text-align: center;
+}
+
+td.notExecuted {
+    background-color: #A5C639;
+    vertical-align: top;
+    text-align: center;
+}
+
+td.testname {
+    border-width: 1px;
+    border-color: #A5C639;
+    border-style: outset;
+    text-align: left;
+    vertical-align: top;
+    padding:1;
+    overflow:hidden;
+}
+
+td.testcase {
+    border-width: 1px;
+    border-color: #A5C639;
+    border-style: outset;
+    text-align: left;
+    vertical-align: top;
+    padding:1;
+    overflow:hidden;
+    font-weight:bold;
+}
+
+td.testsuite {
+    border-width: 1px;
+    border-color: #A5C639;
+    border-style: outset;
+    text-align: left;
+    vertical-align: top;
+    padding:1;
+    overflow:hidden;
+    font-weight:bold;
+}
+
+#details {
+    white-space: pre-wrap;       /* css-3 */
+    white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
+    white-space: -pre-wrap;      /* Opera 4-6 */
+    white-space: -o-pre-wrap;    /* Opera 7 */
+    word-wrap: break-word;       /* Internet Explorer 5.5+ */
+    overflow:auto;
+}
diff --git a/tools/host/src/res/cts_result.xsl b/tools/host/src/res/cts_result.xsl
new file mode 100644
index 0000000..537b44e
--- /dev/null
+++ b/tools/host/src/res/cts_result.xsl
@@ -0,0 +1,332 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#160;"> ]>
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
+
+    <xsl:template match="/">
+
+        <html>
+            <STYLE type="text/css">
+                @import "cts_result.css";
+            </STYLE>
+
+            <body>
+                <!-- Title of the Report -->
+                <DIV id="title">
+                    <TABLE>
+                        <TR>
+                            <TD width="40%" align="left"><img src="logo.gif"></img></TD>
+                            <TD width="60%" align="left">
+                                <h1>Test Report for <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@buildName"/> -
+                                <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@deviceID"/>
+                            </h1>
+                        </TD>
+                    </TR>
+                </TABLE>
+            </DIV>
+            <img src="newrule-green.png" align="left"></img>
+
+            <br></br>
+            <br></br>
+
+            <!-- Header with phone and plan information -->
+            <DIV id="summary">
+                <TABLE width="90%" frame="none">
+                    <TR>
+                        <TH>Device Information</TH>
+                        <TH>Test Summary</TH>
+                    </TR>
+
+                    <TR>
+                        <TD>
+                            <!-- Device information -->
+                            <div id="summaryinfo">
+                                <TABLE width="75%">
+                                    <TR>
+                                        <TD class="rowtitle">Device Make</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@buildName"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Build model</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@deviceID"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Firmware Version</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@buildVersion"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Firmware Build Number</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@buildID"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Android Platform Version</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@androidPlatformVersion"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Supported Locales</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@locales"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Screen size</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/Screen/@resolution"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Phone number</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/PhoneSubInfo/@subscriberId"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">x dpi</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@Xdpi"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">y dpi</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@Ydpi"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Touch</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@touch"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Navigation</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@navigation"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Keypad</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@keypad"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Network</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@network"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">IMEI</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@imei"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">IMSI</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/DeviceInfo/BuildInfo/@imsi"/>
+                                        </TD>
+                                    </TR>
+                                </TABLE>
+                            </div>
+                        </TD>
+
+                        <!-- plan information -->
+                        <TD>
+                            <div id="summaryinfo">
+                                <TABLE width="75%">
+                                    <TR>
+                                        <TD class="rowtitle">Plan name</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/@testPlan"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Start time</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/@starttime"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">End time</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/@endtime"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Version</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/@version"/>
+                                        </TD>
+                                    </TR>
+
+                                    <!-- Test Summary -->
+                                    <TR><TD><BR></BR></TD><TD></TD></TR>
+                                    <TR><TD><BR></BR></TD><TD></TD></TR>
+                                    <TR>
+                                        <TD class="rowtitle">Tests Passed</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/Summary/@pass"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Tests Failed</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/Summary/@failed"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Tests Timed out</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/Summary/@timeout"/>
+                                        </TD>
+                                    </TR>
+                                    <TR>
+                                        <TD class="rowtitle">Tests Not Executed</TD>
+                                        <TD>
+                                            <xsl:value-of select="TestResult/Summary/@notExecuted"/>
+                                        </TD>
+                                    </TR>
+                                </TABLE>
+                            </div>
+                        </TD>
+                    </TR>
+                </TABLE>
+            </DIV>
+
+            <!-- High level summary of test execution -->
+            <h2 align="center">Test Summary by Package</h2>
+            <DIV id="testsummary">
+                <TABLE>
+                    <TR>
+                        <TH>Test Package</TH>
+                        <TH>Tests Passed</TH>
+                    </TR>
+                    <xsl:for-each select="TestResult/TestPackage">
+                        <TR>
+                            <TD> <xsl:value-of select="@name"/> </TD>
+                            <TD>
+                                <xsl:value-of select="count(TestSuite//Test[@result = 'pass'])"/> / <xsl:value-of select="count(TestSuite//Test)"/>
+                            </TD>
+                        </TR>
+                    </xsl:for-each> <!-- end package -->
+                </TABLE>
+            </DIV>
+
+            <!-- Details of all the executed tests -->
+            <h2 align="center">Detailed Test Report</h2>
+
+            <!-- test package -->
+            <DIV id="testdetail">
+                <xsl:for-each select="TestResult/TestPackage">
+                    <DIV id="none">
+                        <TABLE>
+                            <TR>
+                                <TD class="none" align="left"> Compatibility Test Package: <xsl:value-of select="@name"/> </TD>
+                            </TR>
+                        </TABLE>
+                    </DIV>
+
+                    <TABLE>
+                        <TR>
+                            <TH width="25%">Test</TH>
+                            <TH width="5%">Result</TH>
+                            <TH width="70%">Failure Details</TH>
+                        </TR>
+
+                        <TR>
+                            <TD class="testsuite">Suite: <xsl:for-each select=".//TestSuite"><xsl:value-of select="@name"/>.</xsl:for-each></TD>
+                            <TD></TD>
+                            <TD></TD>
+                        </TR>
+                        <!-- test case -->
+                        <xsl:for-each select="TestSuite//TestCase">
+                            <TR>
+                                <TD class="testcase"> - <xsl:value-of select="@name"/></TD>
+                                <TD></TD>
+                                <TD></TD>
+                            </TR>
+                            <!-- test -->
+                            <xsl:for-each select="Test">
+                                <TR>
+                                    <TD class="testname"> -- <xsl:value-of select="@name"/></TD>
+
+                                    <!-- test results -->
+                                    <xsl:if test="@result='pass'">
+                                        <TD class="pass">
+                                            <div style="text-align: center; margin-left:auto; margin-right:auto;">
+                                                <xsl:value-of select="@result"/>
+                                            </div>
+                                        </TD>
+                                    </xsl:if>
+
+                                    <xsl:if test="@result='fail'">
+                                        <TD class="failed">
+                                            <div style="text-align: center; margin-left:auto; margin-right:auto;">
+                                                <xsl:value-of select="@result"/>
+                                            </div>
+                                        </TD>
+                                    </xsl:if>
+
+                                    <xsl:if test="@result='timeout'">
+                                        <TD class="timeout">
+                                            <div style="text-align: center; margin-left:auto; margin-right:auto;">
+                                                <xsl:value-of select="@result"/>
+                                            </div>
+                                        </TD>
+                                    </xsl:if>
+
+                                    <xsl:if test="@result='notExecuted'">
+                                        <TD class="notExecuted">
+                                            <div style="text-align: center; margin-left:auto; margin-right:auto;">
+                                                <xsl:value-of select="@result"/>
+                                            </div>
+                                        </TD>
+                                    </xsl:if>
+
+                                    <TD class="failuredetails">
+                                        <xsl:if test="@result='fail'">
+                                            <div id="details">
+                                                <xsl:value-of select="FailedScene/@message"/>
+                                            </div>
+                                        </xsl:if>
+                                    </TD>
+                                </TR>
+                            </xsl:for-each> <!-- end test -->
+                        </xsl:for-each> <!-- end test case -->
+                    </TABLE>
+                </xsl:for-each> <!-- end test package -->
+            </DIV>
+
+        </body>
+    </html>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/tools/host/src/res/logo.gif b/tools/host/src/res/logo.gif
new file mode 100644
index 0000000..61970b3
--- /dev/null
+++ b/tools/host/src/res/logo.gif
Binary files differ
diff --git a/tools/host/src/res/newrule-green.png b/tools/host/src/res/newrule-green.png
new file mode 100644
index 0000000..10a4194
--- /dev/null
+++ b/tools/host/src/res/newrule-green.png
Binary files differ
diff --git a/tools/host/test/com/android/cts/CommandParserTest.java b/tools/host/test/com/android/cts/CommandParserTest.java
new file mode 100644
index 0000000..95a0fc0
--- /dev/null
+++ b/tools/host/test/com/android/cts/CommandParserTest.java
@@ -0,0 +1,282 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.util.ArrayList;
+import java.util.Set;
+
+/**
+ * Test the logic of parsing the command, option, and parameters.
+ */
+public class CommandParserTest extends CtsTestBase {
+
+    /**
+     * Test parsing the simple normal command.
+     */
+    public void testParseSimpleCommand()
+                throws UnknownCommandException, CommandNotFoundException {
+        final String action = "start";
+        final String option = "--plan";
+        final String value = "test_plan";
+        CommandParser cp;
+        cp = CommandParser.parse(action + " " + option + " " + value);
+        assertEquals(1, cp.getOptionSize());
+        assertEquals(action, cp.getAction());
+        assertTrue(cp.containsKey(CTSCommand.OPTION_PLAN));
+        assertEquals(value, cp.getValue(CTSCommand.OPTION_PLAN));
+    }
+
+    /**
+     * Test parsing command with multiple options.
+     */
+    public void testParseMultiOptionsCommand()
+                throws UnknownCommandException, CommandNotFoundException {
+        final String action = "start";
+        final String option1 = "--plan";
+        final String value1 = "test_plan";
+        final String option2 = "-d";
+        final String value2 = "0";
+        final String unexistOption = "unexist";
+        CommandParser cp;
+        cp = CommandParser.parse(action + " " + option1 + " " + value1
+                + " " + option2 + " " + value2);
+        assertEquals(2, cp.getOptionSize());
+        assertEquals(action, cp.getAction());
+        assertTrue(cp.containsKey(CTSCommand.OPTION_PLAN));
+        assertEquals(value1, cp.getValue(CTSCommand.OPTION_PLAN));
+        assertTrue(cp.containsKey(CTSCommand.OPTION_DEVICE));
+        assertEquals(value2, cp.getValue(CTSCommand.OPTION_DEVICE));
+        assertFalse(cp.containsKey(unexistOption));
+    }
+
+    /**
+     * Test parsing command with multiple same options.
+     */
+    public void testParseSameOptionCommand() throws CommandNotFoundException{
+        final String action = "ls";
+        final String option1 = "-d";
+        final String value1 = "test_plan";
+        final String option2 = "-d";
+        final String value2 = "0";
+        try {
+            CommandParser.parse(action + " " + option1 + " "
+                    + value1 + " " + option2 + " " + value2);
+            fail("no exception");
+        } catch (UnknownCommandException e) {
+        }
+    }
+
+    /**
+     * Test parsing command with option without value.
+     */
+    public void testParseNoValueForOptionCommand()
+                throws UnknownCommandException, CommandNotFoundException {
+        final String action = "ls";
+        final String option1 = "-d";
+
+        CommandParser cp;
+        cp = CommandParser.parse(action + " " + option1);
+        assertEquals(1, cp.getOptionSize());
+        assertEquals(action, cp.getAction());
+        assertTrue(cp.containsKey(CTSCommand.OPTION_DEVICE));
+        assertEquals("", cp.getValue(CTSCommand.OPTION_DEVICE));
+    }
+
+    /**
+     * Test parsing command with single illegal option.
+     */
+    public void testParseIllOptionCommand()
+                throws UnknownCommandException, CommandNotFoundException {
+        final String action = "ls";
+        final String actionValue = "devices";
+        CommandParser cp = CommandParser.parse(action + " " + actionValue);
+        assertEquals(action, cp.getAction());
+        ArrayList<String> actionValues = cp.getActionValues();
+        assertEquals(1, actionValues.size());
+        assertTrue(actionValues.contains(actionValue));
+    }
+
+    /**
+     * Test parsing command with multiple illegal options.
+     */
+    public void testParseMultiIllOptionCommand() throws CommandNotFoundException {
+        final String action = "ls";
+        final String option1 = "-devices";
+        final String value1 = "v1";
+        final String option2 = "op2";
+        final String value2 = "v2";
+        try {
+            CommandParser.parse(action + " " + option1 + " " + value1 + " "
+                    + option2 + " " + value2);
+            fail("no exception");
+        } catch (UnknownCommandException e) {
+        }
+    }
+
+    /**
+     * Test parsing command and then get the options.
+     */
+    public void testGetOptions()
+                throws UnknownCommandException, CommandNotFoundException {
+        final String action = "ls";
+        final String option1 = "-d";
+        final String value1 = "v1";
+        final String option2 = "--plan";
+        final String value2 = "v2";
+        CommandParser cp;
+        cp = CommandParser.parse(action + " " + option1 + " " + value1
+                + " " + option2 + " " + value2);
+        assertEquals(2, cp.getOptionSize());
+        Set<String> set = cp.getOptionKeys();
+        assertEquals(2, set.size());
+        assertTrue(set.contains(CTSCommand.OPTION_DEVICE));
+        assertTrue(set.contains(CTSCommand.OPTION_PLAN));
+    }
+
+    /**
+     * Test parsing empty command.
+     */
+    public void testParseEmptyCommand() throws UnknownCommandException {
+        try {
+            CommandParser.parse("");
+            CommandParser.parse("             ");
+            fail("should throw out exception");
+        } catch (CommandNotFoundException e) {
+        }
+    }
+
+    /**
+     * Test parsing command without option.
+     */
+    public void testParseSingleCommand()
+                throws UnknownCommandException, CommandNotFoundException {
+        final String action = "exit";
+        CommandParser cp;
+        cp = CommandParser.parse(action);
+        assertEquals(action, cp.getAction());
+        assertEquals(0, cp.getOptionSize());
+        assertEquals(0, cp.getOptionKeys().size());
+    }
+
+    /**
+     * Test parsing command with number.
+     */
+    public void testParseNumberOption()
+                throws UnknownCommandException, CommandNotFoundException {
+        final String action = "h";
+        final String actionValue = "1234";
+        CommandParser cp;
+        cp = CommandParser.parse(action + " " + actionValue);
+        assertEquals(action, cp.getAction());
+        ArrayList<String> actionValues = cp.getActionValues();
+        assertEquals(1, actionValues.size());
+        assertTrue(actionValues.contains(actionValue));
+        assertEquals(0, cp.getOptionSize());
+        Set<String> set = cp.getOptionKeys();
+        assertEquals(0, set.size());
+    }
+
+    /**
+     * Test parsing command with negative number.
+     */
+    public void testParseValueNegative()
+                throws UnknownCommandException, CommandNotFoundException {
+        final String action = "ls";
+        final String resultOption = "-r";
+        final String resultValue = "-13";
+        CommandParser cp;
+        cp = CommandParser.parse(action + " " + resultOption + " "
+                + resultValue);
+        assertEquals(action, cp.getAction());
+        assertEquals(1, cp.getOptionSize());
+        assertTrue(cp.containsKey(CTSCommand.OPTION_RESULT));
+        assertEquals(resultValue, cp.getValue(CTSCommand.OPTION_RESULT));
+    }
+
+    /**
+     * Test parsing command with capital letter.
+     */
+    public void testParseCapitalLetter()
+                throws UnknownCommandException, CommandNotFoundException {
+        final String action = "LS";
+        final String resultOption = "-R";
+        final String resultValue = "-13";
+        CommandParser cp;
+        cp = CommandParser.parse(action + " " + resultOption + " "
+                + resultValue);
+        assertEquals(action.toLowerCase(), cp.getAction());
+        assertEquals(1, cp.getOptionSize());
+        assertTrue(cp.containsKey(CTSCommand.OPTION_RESULT));
+        assertEquals(resultValue, cp.getValue(CTSCommand.OPTION_RESULT));
+    }
+
+    /**
+     * Test parsing command with multiple action values.
+     */
+    public void testParseActionValue()
+                throws UnknownCommandException, CommandNotFoundException {
+        final String action = "h";
+        final String actionValue1 = "192";
+        final String actionValue2 = "e";
+        CommandParser cp = CommandParser.parse(action + " " + actionValue1 + " "
+                + actionValue2);
+        assertEquals(action, cp.getAction());
+        assertEquals(0, cp.getOptionKeys().size());
+        ArrayList<String> actionValues = cp.getActionValues();
+        assertEquals(2, actionValues.size());
+        assertTrue(actionValues.contains(actionValue1));
+        assertTrue(actionValues.contains(actionValue2));
+    }
+
+    /**
+     * Test parsing command of list result.
+     */
+    public void testParseListResultCmd() throws UnknownCommandException,
+            CommandNotFoundException {
+        final String action = "ls";
+        final String resultOpt = "-r";
+        final String resultValue = "pass";
+        final String sessionOpt = "-s";
+        final String sessionOptComplete = "--session";
+        final String sessionId = "1";
+        String cmdStr;
+        CommandParser cp;
+
+        cmdStr = action + " " + resultOpt + " " + sessionOpt + " " + sessionId;
+        cp = CommandParser.parse(cmdStr);
+        assertEquals(action, cp.getAction());
+        assertEquals(2, cp.getOptionSize());
+        assertEquals("", cp.getValue(CTSCommand.OPTION_RESULT));
+        assertEquals(sessionId, cp.getValue(CTSCommand.OPTION_SESSION));
+
+        cmdStr = action + " " + resultOpt + " " + sessionOptComplete + " "
+                + sessionId;
+        cp = CommandParser.parse(cmdStr);
+        assertEquals(action, cp.getAction());
+        assertEquals(2, cp.getOptionSize());
+        assertEquals("", cp.getValue(CTSCommand.OPTION_RESULT));
+        assertEquals(sessionId, cp.getValue(CTSCommand.OPTION_SESSION));
+
+        cmdStr = action + " " + resultOpt + " " + resultValue + " " + sessionOptComplete + " "
+                + sessionId;
+        cp = CommandParser.parse(cmdStr);
+        assertEquals(action, cp.getAction());
+        assertEquals(2, cp.getOptionSize());
+        assertEquals(resultValue, cp.getValue(CTSCommand.OPTION_RESULT));
+        assertEquals(sessionId, cp.getValue(CTSCommand.OPTION_SESSION));
+    }
+}
diff --git a/tools/host/test/com/android/cts/ConsoleTests.java b/tools/host/test/com/android/cts/ConsoleTests.java
new file mode 100644
index 0000000..ed44a24
--- /dev/null
+++ b/tools/host/test/com/android/cts/ConsoleTests.java
@@ -0,0 +1,522 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+import com.android.cts.HostConfig.CaseRepository;
+
+/**
+ * Test the console commands.
+ */
+public class ConsoleTests extends CtsTestBase {
+
+    private String mPath1;
+    private String mPath2;
+    private String mPath3;
+
+    /** {@inheritDoc} */
+    @Override
+    public void tearDown() {
+        HostConfig.getInstance().removeTestPacakges();
+        deleteTestPackage(mPath1);
+        deleteTestPackage(mPath2);
+        deleteTestPackage(mPath3);
+
+        super.tearDown();
+    }
+
+    /**
+     * Test adding package to test case repository and then getting the package names.
+     */
+    public void testAddPackage() throws Exception {
+        ConsoleUi cui = new ConsoleUi(TestHost.getInstance());
+
+        mPath1 = ROOT + File.separator + "com.google.android.cts.p1.zip";
+        mPath2 = ROOT + File.separator + "com.google.android.cts.p2.zip";
+        mPath3 = ROOT + File.separator + "net.sf.jlee.cts.p3.zip";
+
+        final String expPackageName1 = "com.google.android.cts.p1";
+        final String expPackageName2 = "com.google.android.cts.p2";
+        final String expPackageName3 = "net.sf.jlee.cts.p3";
+
+        HostConfig.getInstance().removeTestPacakges();
+
+        ArrayList<String> pNames = HostConfig.getInstance().getCaseRepository()
+                .getPackageBinaryNames();
+
+        assertEquals(0, pNames.size());
+        createTestPackageZip(mPath1, expPackageName1);
+        createTestPackageZip(mPath2, expPackageName2);
+        createTestPackageZip(mPath3, expPackageName3);
+
+        // add package 1
+        String cmdline = CTSCommand.ADD + " " + "-p" + " "
+                + mPath1;
+        cui.processCommand(CommandParser.parse(cmdline));
+
+        pNames = HostConfig.getInstance().getCaseRepository().getPackageBinaryNames();
+        assertEquals(1, pNames.size());
+        assertTrue(pNames.contains(expPackageName1));
+
+        // add package 2
+        cmdline = CTSCommand.ADD + " " + "-p" + " " + mPath2;
+        cui.processCommand(CommandParser.parse(cmdline));
+
+        pNames = HostConfig.getInstance().getCaseRepository().getPackageBinaryNames();
+        assertEquals(2, pNames.size());
+        assertTrue(pNames.contains(expPackageName1));
+        assertTrue(pNames.contains(expPackageName2));
+
+        // add package 2
+        cmdline = CTSCommand.ADD + " " + "-p" + " " + mPath3;
+        cui.processCommand(CommandParser.parse(cmdline));
+
+        pNames = HostConfig.getInstance().getCaseRepository().getPackageBinaryNames();
+        assertEquals(3, pNames.size());
+        assertTrue(pNames.contains(expPackageName1));
+        assertTrue(pNames.contains(expPackageName2));
+        assertTrue(pNames.contains(expPackageName3));
+
+        deleteTestPackage(expPackageName1);
+        deleteTestPackage(expPackageName2);
+        deleteTestPackage(expPackageName3);
+    }
+
+    /**
+     * Test removing package after adding the packages into the test case repository.
+     */
+    public void testRemovePackage() throws Exception {
+        ConsoleUi cui = new ConsoleUi(TestHost.getInstance());
+        mPath1 = ROOT + File.separator + "com.google.android.cts.p1.zip";
+        mPath2 = ROOT + File.separator + "com.google.android.cts.p2.zip";
+        mPath3 = ROOT + File.separator + "net.sf.jlee.cts.p3.zip";
+
+        final String expPackageName1 = "com.google.android.cts.p1";
+        final String expPackageName2 = "com.google.android.cts.p2";
+        final String expPackageName3 = "net.sf.jlee.cts.p3";
+
+        HostConfig.getInstance().removeTestPacakges();
+        createTestPackageZip(mPath1, expPackageName1);
+        createTestPackageZip(mPath2, expPackageName2);
+        createTestPackageZip(mPath3, expPackageName3);
+
+        // add package 1
+        String cmdLine = CTSCommand.ADD + " -p " + mPath1;
+        cui.processCommand(CommandParser.parse(cmdLine));
+        cmdLine = CTSCommand.ADD + " -p " + mPath2;
+        cui.processCommand(CommandParser.parse(cmdLine));
+        cmdLine = CTSCommand.ADD + " -p " + mPath3;
+        cui.processCommand(CommandParser.parse(cmdLine));
+
+        ArrayList<String> pNames = HostConfig.getInstance().getCaseRepository()
+                .getPackageBinaryNames();
+        assertEquals(3, pNames.size());
+        assertTrue(pNames.contains(expPackageName1));
+        assertTrue(pNames.contains(expPackageName2));
+        assertTrue(pNames.contains(expPackageName3));
+
+        cmdLine = CTSCommand.REMOVE + " " + "-p" + " "
+                + expPackageName1;
+        cui.processCommand(CommandParser.parse(cmdLine));
+        pNames = HostConfig.getInstance().getCaseRepository().getPackageBinaryNames();
+        assertEquals(2, pNames.size());
+        assertTrue(pNames.contains(expPackageName2));
+        assertTrue(pNames.contains(expPackageName3));
+
+        cmdLine = CTSCommand.REMOVE + " " + "-p" + " "
+                + expPackageName2;
+        cui.processCommand(CommandParser.parse(cmdLine));
+        pNames = HostConfig.getInstance().getCaseRepository().getPackageBinaryNames();
+        assertEquals(1, pNames.size());
+        assertTrue(pNames.contains(expPackageName3));
+
+        cmdLine = CTSCommand.REMOVE + " " + "-p" + " "
+                + expPackageName3;
+        cui.processCommand(CommandParser.parse(cmdLine));
+        pNames = HostConfig.getInstance().getCaseRepository().getPackageBinaryNames();
+        assertEquals(0, pNames.size());
+
+        deleteTestPackage(expPackageName1);
+        deleteTestPackage(expPackageName2);
+        deleteTestPackage(expPackageName3);
+    }
+
+    /**
+     * Test validating partial zipped package when adding package..
+     */
+    public void testValidatePartialZipPackageName() throws Exception {
+        final String pkgName1 = "com.google.android.cts.apkPartial.zip";
+        final String pkgName2 = "com.google.android.cts.xmlPartial.zip";
+        mPath1 = ROOT + File.separator + pkgName1;
+        mPath2 = ROOT + File.separator + pkgName2;
+
+        HostConfig config = HostConfig.getInstance();
+        HostConfig.CaseRepository caseRepos = config.getCaseRepository();
+
+        createPartialTestPackageZip(mPath1, HostConfig.FILE_SUFFIX_APK);
+        assertFalse(caseRepos.addPackage(mPath1));
+
+        createPartialTestPackageZip(mPath2, HostConfig.FILE_SUFFIX_XML);
+        assertFalse(caseRepos.addPackage(mPath2));
+    }
+
+    /**
+     * Test validating package file suffix when adding package.
+     */
+    public void testValidatePackageSuffix() throws Exception {
+        final String content = "test test test";
+        final String pkgName1 = "com.google.android.cts.invalidSuffix.txt";
+        mPath1 = ROOT + File.separator + pkgName1;
+
+        createFile(content, mPath1);
+
+        HostConfig config = HostConfig.getInstance();
+        HostConfig.CaseRepository caseRepos = config.getCaseRepository();
+
+        assertFalse(caseRepos.isValidPackageName(mPath1));
+    }
+
+    /**
+     * Test validate duplicate package name by adding the same package twice.
+     */
+    public void testValidateDuplicatePackageName() throws Exception {
+        final String name = "com.google.android.cts.mypackage";
+        mPath1 = ROOT + File.separator + name + HostConfig.FILE_SUFFIX_ZIP;
+
+        HostConfig config = HostConfig.getInstance();
+        HostConfig.CaseRepository caseRepos = config.getCaseRepository();
+        createTestPackageZip(mPath1, name);
+
+        caseRepos.removePackages(name);
+        assertTrue(caseRepos.addPackage(mPath1));
+        assertFalse(caseRepos.isValidPackageName(mPath1));
+        caseRepos.removePackages(name);
+
+        deleteTestPackage(name);
+    }
+
+    /**
+     * Create zipped test package.
+     *
+     * @param zipFilePath The file name with path.
+     * @param packageName The package name.
+     */
+    private void createTestPackageZip(String zipFilePath, final String packageName)
+            throws IOException {
+        final String descriptionConfigStr = "<TestPackage name=\""
+            + packageName + "\" " + "appPackageName=\"" + packageName
+            + "\""
+            + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
+            + " runner=\"android.test.InstrumentationTestRunner\" jarPath=\"\">\n"
+            + "  <Description>something extracted from java doc</Description>\n"
+            + "  <TestSuite name=\"com.google\">\n"
+            + "     <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
+            + "         <Description>" + "something extracted from java doc"
+            + "         </Description>\n"
+            + "         <!-- Test Methods -->\n"
+            + "         <Test method=\"testName1\" type=\"automatic\"/>\n"
+            + "     </TestCase>\n"
+            + "  </TestSuite>\n" + "</TestPackage>\n";
+
+        createTestPackage(descriptionConfigStr, packageName);
+        String apkFile = ROOT + File.separator + packageName + HostConfig.FILE_SUFFIX_APK;
+        String xmlFile = ROOT + File.separator + packageName + HostConfig.FILE_SUFFIX_XML;
+        String zipFile = ROOT + File.separator + packageName + ".zip";
+        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile));
+        addEntry(out, apkFile);
+        addEntry(out, xmlFile);
+        out.close();
+
+        deleteTestPackage(packageName);
+    }
+
+    /**
+     * Add entry into the zip ouput stream.
+     *
+     * @param out The zip output stream.
+     * @param filePath The entry to be added into the zip output stream.
+     */
+    private void addEntry(ZipOutputStream out, String filePath) throws IOException {
+        byte[] buf = new byte[1024];
+        FileInputStream in = new FileInputStream(filePath);
+        out.putNextEntry(new ZipEntry(filePath));
+        int len;
+        while ((len = in.read(buf)) > 0) {
+            out.write(buf, 0, len);
+        }
+        out.closeEntry();
+        in.close();
+    }
+
+    /**
+     * Create test package with the package name and the xml message as the content.
+     *
+     * @param xmlMsg The message as the content of the package.
+     * @param packageName The package name.
+     */
+    protected void createTestPackage(String xmlMsg, String packageName) throws IOException {
+        String caseRoot = ROOT;
+
+        String apkPath = caseRoot + File.separator + packageName + APK_SUFFIX;
+        String xmlPath = caseRoot + File.separator + packageName + DESCRITION_SUFFIX;
+
+        createFile(null, apkPath);
+        createFile(xmlMsg, xmlPath);
+    }
+    /**
+     * Create partial test package.
+     *
+     * @param zipFilePath The file name with path.
+     * @param suffix The file suffix.
+     */
+    private void createPartialTestPackageZip(String zipFilePath, String suffix)
+                 throws IOException {
+        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
+                zipFilePath));
+
+        String packageName = zipFilePath.substring(zipFilePath
+                .lastIndexOf(File.separator), zipFilePath.lastIndexOf("."));
+        String file = packageName + suffix;
+
+        addFileToZip(file, out);
+
+        out.close();
+    }
+
+    /**
+     * Add file to zip output stream.
+     *
+     * @param filename The file to be added to the zip output stream.
+     * @param out The zip output stream.
+     */
+    private void addFileToZip(String filename, ZipOutputStream out)
+            throws IOException {
+        out.putNextEntry(new ZipEntry(filename));
+
+        out.closeEntry();
+    }
+
+    /**
+     * Test listing package contents with different levels of expectation.
+     */
+    public void testListPackage() throws IOException, NoSuchAlgorithmException {
+
+        List<ArrayList<String>> list = null;
+        ArrayList<String> packageList = null;
+        ArrayList<String> suiteList = null;
+        ArrayList<String> caseList = null;
+        ArrayList<String> testList = null;
+
+        final String packageName = "com.google";
+        final String suiteName   = "com.google.cts";
+        final String caseName    = "CtsTest";
+        final String testName    = "testHello";
+
+        final String expect1 = "com";
+        final String expect2 = "com.google";
+        final String expect3 = "com.google.cts";
+        final String expect4 = "com.google.cts.CtsTest";
+        final String expect5 = "com.google.cts.CtsTest#testHello";
+        final String expect6 = "com.google.cts.CtsTest#test";
+        final CaseRepository caseRepository = HostConfig.getInstance()
+                .getCaseRepository();
+
+        final String descriptionConfigStr = "<TestPackage name=\""
+                + packageName + "\" appPackageName=\"" + packageName
+                + "\""
+                + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
+                + " runner=\"android.test.InstrumentationTestRunner\">\n"
+                + "  <Description>something extracted from java doc</Description>\n"
+                + "      <TestSuite name=\"" + suiteName + "\">\n"
+                + "         <TestCase name=\"" + caseName + "\" priority=\"mandatory\">\n"
+                + "             <Description>" + "something extracted from java doc"
+                + "             </Description>\n"
+                + "             <!-- Test Cases -->\n"
+                + "             <Test method=\"" + testName + "\"" + " type=\"automatic\"" + ">\n"
+                + "                 <Description>Simple deadloop test</Description>"
+                + "             </Test>"
+                + "        </TestCase>"
+                + "     </TestSuite>\n"
+                + "</TestPackage>\n";
+
+        final String caseDescPath = caseRepository.getXmlPath(packageName);
+        final String caseAPK = caseRepository.getApkPath(packageName);
+
+        try {
+            createFile(descriptionConfigStr, caseDescPath);
+            createFile("", caseAPK);
+
+            HostConfig.getInstance().loadTestPackages();
+
+            list = caseRepository.listAvailablePackage(expect1);
+            packageList = list.get(0);
+            suiteList = list.get(1);
+            caseList = list.get(2);
+            testList = list.get(3);
+            assertEquals(1, packageList.size());
+            assertEquals(expect2, packageList.get(0));
+            assertEquals(0, suiteList.size());
+            assertEquals(0, caseList.size());
+            assertEquals(0, testList.size());
+
+            list = caseRepository.listAvailablePackage(expect2);
+            packageList = list.get(0);
+            suiteList = list.get(1);
+            caseList = list.get(2);
+            testList = list.get(3);
+            assertEquals(0, packageList.size());
+            assertEquals(1, suiteList.size());
+            assertEquals(expect3, suiteList.get(0));
+            assertEquals(0, caseList.size());
+            assertEquals(0, testList.size());
+
+            list = caseRepository.listAvailablePackage(expect3);
+            packageList = list.get(0);
+            suiteList = list.get(1);
+            caseList = list.get(2);
+            testList = list.get(3);
+            assertEquals(0, packageList.size());
+            assertEquals(0, suiteList.size());
+            assertEquals(1, caseList.size());
+            assertEquals(expect4, caseList.get(0));
+            assertEquals(0, testList.size());
+
+            list = caseRepository.listAvailablePackage(expect4);
+            packageList = list.get(0);
+            suiteList = list.get(1);
+            caseList = list.get(2);
+            testList = list.get(3);
+            assertEquals(0, packageList.size());
+            assertEquals(0, suiteList.size());
+            assertEquals(0, caseList.size());
+            assertEquals(1, testList.size());
+            assertEquals(expect5, testList.get(0));
+
+            list = caseRepository.listAvailablePackage(expect6);
+            packageList = list.get(0);
+            suiteList = list.get(1);
+            caseList = list.get(2);
+            testList = list.get(3);
+            assertEquals(0, packageList.size());
+            assertEquals(0, suiteList.size());
+            assertEquals(0, caseList.size());
+            assertEquals(1, testList.size());
+            assertEquals(expect5, testList.get(0));
+        } finally {
+            deleteFile(caseDescPath);
+            deleteFile(caseAPK);
+        }
+    }
+
+    /**
+     * Test starting console UI.
+     */
+    public void testStartUi() throws Exception {
+        String cmdLine = CONFIG_PATH;
+        ConsoleUi cui = new ConsoleUi(TestHost.getInstance());
+        CommandParser cp = TestHost.init(cui, cmdLine.split(" "));
+        assertEquals(null, cp);
+        assertEquals(TestHost.MODE.CONSOLE, TestHost.sMode);
+
+        cmdLine = ROOT;
+        cp = TestHost.init(cui, cmdLine.split(" "));
+        assertEquals(null, cp);
+        assertEquals(TestHost.MODE.CONSOLE, TestHost.sMode);
+    }
+
+    /**
+     * Test starting test plan directly when activating CTS from console.
+     */
+    public void testStartPlanDirectly() throws Exception {
+        String cmdLine = "start --plan demo --config " + CONFIG_PATH;
+        ConsoleUi cui = new ConsoleUi(TestHost.getInstance());
+        CommandParser cp = TestHost.init(cui, cmdLine.split(" "));
+        assertEquals(CTSCommand.START, cp.getAction());
+        assertTrue(cp.containsKey(CTSCommand.OPTION_CFG));
+        assertTrue(cp.getValue(CTSCommand.OPTION_CFG) != null);
+        assertTrue(cp.containsKey(CTSCommand.OPTION_PLAN));
+        assertTrue(cp.getValue(CTSCommand.OPTION_PLAN) != null);
+        cp.removeKey(CTSCommand.OPTION_CFG);
+        assertFalse(cp.containsKey(CTSCommand.OPTION_CFG));
+        assertEquals(null, cp.getValue(CTSCommand.OPTION_CFG));
+
+        cmdLine = "start --plan demo --config " + ROOT;
+        cp = TestHost.init(cui, cmdLine.split(" "));
+        assertTrue(cp.containsKey(CTSCommand.OPTION_CFG));
+        assertTrue(cp.getValue(CTSCommand.OPTION_CFG) != null);
+        assertTrue(cp.containsKey(CTSCommand.OPTION_PLAN));
+        assertTrue(cp.getValue(CTSCommand.OPTION_PLAN) != null);
+        cp.removeKey(CTSCommand.OPTION_CFG);
+        assertFalse(cp.containsKey(CTSCommand.OPTION_CFG));
+        assertEquals(null, cp.getValue(CTSCommand.OPTION_CFG));
+    }
+
+    /**
+     * Test starting package directly when activating CTS from console.
+     */
+    public void testStartPackageDirectly() throws Exception {
+        String cmdLine = "start -p demo.zip --config " + CONFIG_PATH;
+        ConsoleUi cui = new ConsoleUi(TestHost.getInstance());
+        CommandParser cp = TestHost.init(cui, cmdLine.split(" "));
+        assertEquals(CTSCommand.START, cp.getAction());
+        assertTrue(cp.containsKey(CTSCommand.OPTION_CFG));
+        assertTrue(cp.getValue(CTSCommand.OPTION_CFG) != null);
+        assertTrue(cp.containsKey(
+                CTSCommand.OPTION_PACKAGE) || cp.containsKey(CTSCommand.OPTION_P));
+        assertEquals("demo.zip", cp.getValue(CTSCommand.OPTION_PACKAGE));
+        cp.removeKey(CTSCommand.OPTION_CFG);
+        assertFalse(cp.containsKey(CTSCommand.OPTION_CFG));
+        assertEquals(null, cp.getValue(CTSCommand.OPTION_CFG));
+
+        cmdLine = "start --package demo.zip --config " + ROOT;
+        cp = TestHost.init(cui, cmdLine.split(" "));
+        assertTrue(cp.containsKey(CTSCommand.OPTION_CFG));
+        assertTrue(cp.getValue(CTSCommand.OPTION_CFG) != null);
+        assertTrue(cp.containsKey(
+                CTSCommand.OPTION_PACKAGE) || cp.containsKey(CTSCommand.OPTION_P));
+        assertEquals("demo.zip", cp.getValue(CTSCommand.OPTION_PACKAGE));
+        cp.removeKey(CTSCommand.OPTION_CFG);
+        assertFalse(cp.containsKey(CTSCommand.OPTION_CFG));
+        assertEquals(null, cp.getValue(CTSCommand.OPTION_CFG));
+    }
+
+    /**
+     * Test getting device ID from the device ID string list.
+     */
+    public void testGetDeviceId() {
+        ConsoleUi cui = new ConsoleUi(TestHost.getInstance());
+        ArrayList<TestDevice> devList = new ArrayList<TestDevice>();
+        devList.add(new TestDevice("dev-100"));
+        devList.add(new TestDevice("dev-101"));
+        TestDevice[] devices = devList.toArray(new TestDevice[4]);
+
+        int deviceId = cui.getDeviceId(devices, "dev-100");
+        assertEquals(0, deviceId);
+
+        deviceId = cui.getDeviceId(devices, "dev-101");
+        assertEquals(1, deviceId);
+    }
+}
diff --git a/tools/host/test/com/android/cts/CtsTestBase.java b/tools/host/test/com/android/cts/CtsTestBase.java
new file mode 100644
index 0000000..1df40a7
--- /dev/null
+++ b/tools/host/test/com/android/cts/CtsTestBase.java
@@ -0,0 +1,182 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.cts;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+/**
+ * Set up the test environment and offer the utility APIs.
+ */
+public abstract class CtsTestBase extends TestCase {
+    public static final String APK_SUFFIX = ".apk";
+    public static final String DESCRITION_SUFFIX = ".xml";
+
+    protected static final String ROOT = "tmp";
+    protected static final String CONFIG_PATH = ROOT + File.separator + "host_config.xml";
+
+    private static final String CASE_REPOSITORY = "case_rep_demo";
+    private static final String RESULT_REPOSITORY = "result_rep_demo";
+    private static final String PLAN_REPOSITORY = "plan_rep_demo";
+
+    /** {@inheritDoc} */
+    @Override
+    public void setUp() {
+        // create root direcoty for the test
+        new File(ROOT).mkdirs();
+
+        initConfig();
+        Log.initLog(ROOT);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void tearDown() {
+        Log.closeLog();
+        clearDirectory(ROOT);
+    }
+
+    /**
+     * Initialize the configuration for tests.
+     */
+    private void initConfig() {
+        StringBuilder buf = new StringBuilder();
+
+        buf.append("<HostConfiguration>");
+        buf.append("\t<Repository root=\"" + ROOT + "\" >");
+        buf.append("\t\t<TestPlan path=\"" + PLAN_REPOSITORY + "\" />");
+        buf.append("\t\t<TestCase path=\"" + CASE_REPOSITORY + "\" />");
+        buf.append("\t\t<TestResult path=\"" + RESULT_REPOSITORY + "\" />");
+        buf.append("\t</Repository>");
+        buf.append("</HostConfiguration>");
+        try {
+            new File(ROOT + File.separator + PLAN_REPOSITORY).mkdirs();
+            new File(ROOT + File.separator + CASE_REPOSITORY).mkdirs();
+            new File(ROOT + File.separator + RESULT_REPOSITORY).mkdirs();
+            createFile(buf.toString(), CONFIG_PATH);
+
+        } catch (IOException e1) {
+            fail("Can't create config file");
+        }
+
+        try {
+            TestHost.loadConfig(CONFIG_PATH);
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Can't initiate config");
+        }
+    }
+
+    /**
+     * Create test package with the package name and the xml message as the content.
+     * 
+     * @param xmlMsg The message as the content of the package.
+     * @param packageName The package name.
+     */
+    protected void createTestPackage(String xmlMsg, String packageName) throws IOException {
+        String caseRoot = HostConfig.getInstance().getCaseRepository()
+                .getRoot();
+
+        String apkPath = caseRoot + File.separator + packageName + APK_SUFFIX;
+        String xmlPath = caseRoot + File.separator + packageName
+                + DESCRITION_SUFFIX;
+
+        createFile(null, apkPath);
+        createFile(xmlMsg, xmlPath);
+    }
+
+    /**
+     * Delete the test package.
+     */
+    protected void deleteTestPackage(String path) {
+        String apkPath = path + File.separator + APK_SUFFIX;
+        String desPath = path + File.separator + DESCRITION_SUFFIX;
+
+        deleteFile(apkPath);
+        deleteFile(desPath);
+    }
+
+    /**
+     * Create the specified file with the specified content.
+     * 
+     * @param content The content written into the file.
+     * @param filePath The file to be created.
+     */
+    protected void createFile(String content, String filePath)
+            throws IOException {
+        BufferedWriter out = new BufferedWriter(new FileWriter(filePath));
+        if (content != null) {
+            out.write(content);
+        }
+
+        out.close();
+    }
+
+    /**
+     * Delete the specified file.
+     * 
+     * @param path The file to be deleted.
+     */
+    protected void deleteFile(String path) {
+        File f = new File(path);
+
+        if (f.exists() && f.canWrite()) {
+            f.delete();
+        }
+    }
+
+    /**
+     * Clear the directory by deleting the files and directories under it.
+     * 
+     * @param path The directory to be cleared.
+     */
+    private void clearDirectory(String path) {
+        File root = new File(path);
+        for (File f : root.listFiles()) {
+            if (f.isFile()) {
+                f.delete();
+            } else {
+                deleteDirectory(f);
+            }
+        }
+
+        root.delete();
+    }
+
+    /**
+     * Deleted the directory, including the files and sub-directories under it.
+     * 
+     * @param path The directory to be deleted.
+     */
+    private void deleteDirectory(File path) {
+        if (path.exists()) {
+            File[] files = path.listFiles();
+            for (int i = 0; i < files.length; i++) {
+                if (files[i].isDirectory()) {
+                    deleteDirectory(files[i]);
+                } else {
+                    files[i].delete();
+                }
+            }
+
+            path.delete();
+        }
+    }
+}
diff --git a/tools/host/test/com/android/cts/DeviceManagerTests.java b/tools/host/test/com/android/cts/DeviceManagerTests.java
new file mode 100644
index 0000000..6fed9ec
--- /dev/null
+++ b/tools/host/test/com/android/cts/DeviceManagerTests.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+/**
+ * Test the device manager.
+ */
+public class DeviceManagerTests extends CtsTestBase {
+
+    private TestDevice d1, d2, d3;
+    private static String d1SerialNumber = "mock_device1";
+    private static String d2SerialNumber = "mock_device2";
+    private static String d3SerialNumber = "mock_device3";
+
+    /** {@inheritDoc} */
+    @Override
+    public void setUp() {
+        d1 = new TestDevice(d1SerialNumber);
+        d2 = new TestDevice(d2SerialNumber);
+        d3 = new TestDevice(d3SerialNumber);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void tearDown() {
+        d1 = d2 = d3 = null;
+    }
+
+    /**
+     * Test allocating devices.
+     */
+    public void testAllocateDevices() throws DeviceNotAvailableException {
+        DeviceManager dm = new DeviceManager();
+        TestDevice[] devices;
+
+        try {
+            devices = dm.allocateDevices(1);
+            fail();
+        } catch (DeviceNotAvailableException e) {
+            // pass
+        }
+        dm.mDevices.add(d1);
+        dm.mDevices.add(d2);
+        dm.mDevices.add(d3);
+
+        try {
+            devices = dm.allocateDevices(-1);
+            fail();
+        } catch (IllegalArgumentException e) {
+            // pass
+        }
+
+        devices = dm.allocateDevices(0);
+        assertEquals(0, devices.length);
+
+        try {
+            devices = dm.allocateDevices(4);
+            fail();
+        } catch (DeviceNotAvailableException e) {
+            // pass
+        }
+
+        devices = dm.allocateDevices(2);
+        assertEquals(2, devices.length);
+        assertEquals(d1SerialNumber, devices[0].getSerialNumber());
+        assertEquals(d2SerialNumber, devices[1].getSerialNumber());
+
+        d1.setStatus(TestDevice.STATUS_BUSY);
+        d3.setStatus(TestDevice.STATUS_OFFLINE);
+        try {
+            devices = dm.allocateDevices(2);
+            fail();
+        } catch (DeviceNotAvailableException e) {
+            // pass
+        }
+        devices = dm.allocateDevices(1);
+        assertEquals(1, devices.length);
+        assertEquals(d2SerialNumber, devices[0].getSerialNumber());
+    }
+
+    /**
+     * Test getting device list.
+     */
+    public void testGetDeviceList() {
+        DeviceManager dm = new DeviceManager();
+        TestDevice[] devices;
+
+        dm.mDevices.add(d1);
+        dm.mDevices.add(d2);
+        dm.mDevices.add(d3);
+        devices = dm.getDeviceList();
+        assertEquals(3, devices.length);
+        assertEquals(d1SerialNumber, devices[0].getSerialNumber());
+        assertEquals(d2SerialNumber, devices[1].getSerialNumber());
+        assertEquals(d3SerialNumber, devices[2].getSerialNumber());
+    }
+
+    /**
+     * Test getting the number of all available devices.
+     */
+    public void testGetNumOfAllAvailableDevices() {
+        DeviceManager dm = new DeviceManager();
+        assertEquals(0, dm.getCountOfFreeDevices());
+
+        d1.setStatus(TestDevice.STATUS_BUSY);
+        d2.setStatus(TestDevice.STATUS_OFFLINE);
+        dm.mDevices.add(d1);
+        dm.mDevices.add(d2);
+        dm.mDevices.add(d3);
+        assertEquals(1, dm.getCountOfFreeDevices());
+    }
+
+    /**
+     * Test the default status of test device.
+     */
+    public void testDeviceDefaultStatus() {
+        assertEquals(TestDevice.STATUS_IDLE, d1.getStatus());
+        assertEquals(TestDevice.STATUS_IDLE, d2.getStatus());
+        assertEquals(TestDevice.STATUS_IDLE, d3.getStatus());
+    }
+
+    /**
+     * Test allocating device by the specified ID.
+     */
+    public void testAllocateDeviceById() throws DeviceNotAvailableException {
+        DeviceManager dm = new DeviceManager();
+        TestDevice device;
+
+        d1.setStatus(TestDevice.STATUS_BUSY);
+        d2.setStatus(TestDevice.STATUS_OFFLINE);
+        dm.mDevices.add(d1);
+        dm.mDevices.add(d2);
+        dm.mDevices.add(d3);
+
+        try {
+            device = dm.allocateFreeDeviceById("fake device");
+            fail();
+        } catch (DeviceNotAvailableException e) {
+            // pass
+        }
+
+        device = dm.allocateFreeDeviceById(d3SerialNumber);
+        assertEquals(d3SerialNumber, device.getSerialNumber());
+    }
+
+    /**
+     * Test resetting test devices.
+     */
+    public void testResetTestDevices() {
+        DeviceManager dm = new DeviceManager();
+
+        d1.setStatus(TestDevice.STATUS_BUSY);
+        d2.setStatus(TestDevice.STATUS_OFFLINE);
+        dm.resetTestDevice(d1);
+        dm.resetTestDevice(d2);
+        dm.resetTestDevice(d3);
+        assertEquals(d1.getStatus(), TestDevice.STATUS_IDLE);
+        assertEquals(d2.getStatus(), TestDevice.STATUS_OFFLINE);
+        assertEquals(d3.getStatus(), TestDevice.STATUS_IDLE);
+    }
+}
diff --git a/tools/host/test/com/android/cts/TestPlanBuilderTests.java b/tools/host/test/com/android/cts/TestPlanBuilderTests.java
new file mode 100644
index 0000000..75386853
--- /dev/null
+++ b/tools/host/test/com/android/cts/TestPlanBuilderTests.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+
+/**
+ * Test the test plan builder.
+ *
+ */
+public class TestPlanBuilderTests extends CtsTestBase {
+    public static boolean DEBUG = false;
+
+    private String mTestPackageBinaryName = "CtsTestPackage";
+
+    /** {@inheritDoc} */
+    @Override
+    public void tearDown() {
+        HostConfig.getInstance().removeTestPacakges();
+        deleteTestPackage(mTestPackageBinaryName);
+
+        super.tearDown();
+    }
+
+    /**
+     * Test getting test suite name list contained within a test package.
+     */
+    public void testGetTestSuiteNames() throws IOException, NoSuchAlgorithmException {
+        final String appPackageName = "com.google.android.cts";
+        final String fullName = mTestPackageBinaryName + ".CtsTest";
+        final String caseName = "CtsTestHello";
+        final String testName = "testHello";
+
+        final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
+                + " appPackageName=\"" + appPackageName + "\""
+                + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
+                + " runner=\"android.test.InstrumentationTestRunner\" >\n"
+                + "  <Description>something extracted from java doc</Description>\n"
+                + "  <TestSuite name=\"com.google\">\n"
+                + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
+                + "         <Description>" + "something extracted from java doc"
+                + "         </Description>\n"
+                + "         <!-- Test Methods -->\n"
+                + "         <Test method=\"testHello\"" + " type=\"automatic\"" + "/>\n"
+                + "     </TestCase>\n"
+                + "     <TestSuite name=\"TestSuiteName\">\n"
+                + "         <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
+                + "             <Description>" + "something extracted from java doc"
+                + "             </Description>\n"
+                + "             <!-- Test Methods -->\n"
+                + "             <Test method=\"testName1\"" + " type=\"automatic\"" + "/>\n"
+                + "         </TestCase>\n"
+                + "     </TestSuite>\n"
+                + "  </TestSuite>\n"
+                + "</TestPackage>\n";
+
+        HostConfig.getInstance().removeTestPacakges();
+        createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+
+        HostConfig.getInstance().loadTestPackages();
+        Collection<TestPackage> testPackages = HostConfig.getInstance().getTestPackages();
+        assertEquals(1, testPackages.size());
+        TestPackage testPackage = testPackages.iterator().next();
+
+        String suiteFullName = "com.google";
+        TestSuite suite = testPackage.getTestSuiteByName(suiteFullName);
+        assertEquals(suiteFullName, suite.getFullName());
+
+        String caseFullName = "com.google.CtsTestHello";
+        TestCase cazz = testPackage.getTestCaseByName(caseFullName);
+        assertEquals(caseFullName, cazz.getFullName());
+
+        ArrayList<String> testNames = testPackage.getAllTestNames(caseFullName);
+        String testFullName = "com.google.CtsTestHello#testHello";
+        assertEquals(1, testNames.size());
+        assertEquals(testFullName, testNames.get(0));
+
+        suiteFullName = "com.google.TestSuiteName";
+        suite = testPackage.getTestSuiteByName(suiteFullName);
+        assertEquals(suiteFullName, suite.getFullName());
+
+        caseFullName = "com.google.TestSuiteName.TestCaseName";
+        cazz = testPackage.getTestCaseByName(caseFullName);
+        assertEquals(caseFullName, cazz.getFullName());
+
+        testNames = testPackage.getAllTestNames(caseFullName);
+        testFullName = "com.google.TestSuiteName.TestCaseName#testName1";
+        assertEquals(1, testNames.size());
+        assertEquals(testFullName, testNames.get(0));
+    }
+
+    /**
+     * Test building test plan.
+     */
+    public void testPlanBuilder() throws IOException,
+            ParserConfigurationException,
+            TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException {
+
+        if (DEBUG) {
+            final String appPackageName = "com.google";
+            final String suiteName1 = "com.google.SuiteName1";
+            final String caseName1 = "CtsTestHello";
+            final String testName1 = "testHello";
+
+            final String cName2 = "CtsTestHello2";
+            final String testName2 = "testHello2";
+            final String testName3 = "testHello3";
+            final String testName4 = "testHello4";
+            final String testName5 = "testHello5";
+            final String nestedSuiteName1 = "com.google";
+            final String nestedSuiteName2 = "CtsTest.SuiteName2";
+
+            final String descriptionConfigStr =
+                    "<TestPackage name=\"" + mTestPackageBinaryName + "\""
+                    + " appPackageName=\"" + appPackageName + "\""
+                    + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
+                    + " runner=\"android.test.InstrumentationTestRunner\" >\n"
+                    + " <Description>something extracted from java doc</Description>\n"
+                    + " <TestSuite name=\"" + suiteName1 + "\"" + ">\n"
+                    + "     <TestCase name=\"" + caseName1 + "\"" + " category=\"mandatory\">\n"
+                    + "         <Description>" + "something extracted from java doc"
+                    + "         </Description>\n"
+                    + "         <!-- Test Methods -->\n"
+                    + "         <Test method=\"" + testName1 + "\" type=\"automatic\"" + "/>\n"
+                    + "     </TestCase>\n"
+                    + " </TestSuite>\n"
+                    + " <TestSuite name=\"" + nestedSuiteName1+ "\"" + ">\n"
+                    + "     <TestSuite name=\"" + nestedSuiteName2+ "\"" + ">\n"
+                    + "         <TestCase name=\"" + cName2 + "\"" + " priority=\"mandatory\">\n"
+                    + "             <Test method=\"" + testName2 +"\" type=\"automatic\" />\n"
+                    + "             <Test method=\"" + testName3 +"\" type=\"automatic\" />\n"
+                    + "             <Test method=\"" + testName4 +"\" type=\"automatic\" />\n"
+                    + "             <Test method=\"" + testName5 +"\" type=\"automatic\" />\n"
+                    + "         </TestCase>\n"
+                    + "     </TestSuite>\n"
+                    + " </TestSuite>\n"
+                    + "</TestPackage>\n";
+
+            createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+            HostConfig.getInstance().loadTestPackages();
+            ArrayList<String> packageNames = new ArrayList<String>();
+            packageNames.add(appPackageName);
+            PlanBuilder planBuilder = new PlanBuilder(packageNames);
+            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
+            planBuilder.setInputStream(in);
+            HashMap<String, ArrayList<String>> results = planBuilder.doSelect();
+            String planName = "plan_test";
+            if (results != null) {
+                Log.i("result=" + results.toString());
+                ArrayList<String> excludedList = results.get(appPackageName);
+                if (excludedList != null) {
+                    for(String str : excludedList) {
+                        Log.i(str);
+                    }
+                } else {
+                    Log.i("Nothing is excluded at all!");
+                }
+
+                String planPath =
+                              HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
+                TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
+                Log.i("planPath=" + planPath);
+            } else {
+                Log.i("Selected nothing for the plan of "
+                        + planName + ". The plan is not created!");
+            }
+        }
+    }
+}
diff --git a/tools/host/test/com/android/cts/TestSessionBuilderTests.java b/tools/host/test/com/android/cts/TestSessionBuilderTests.java
new file mode 100644
index 0000000..1315b89
--- /dev/null
+++ b/tools/host/test/com/android/cts/TestSessionBuilderTests.java
@@ -0,0 +1,1443 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
+
+import com.android.cts.TestDevice.DeviceParameterCollector;
+
+/**
+ * Test the session builder.
+ */
+public class TestSessionBuilderTests extends CtsTestBase {
+    private static final String mTmpPlanFileName = "plan";
+
+    private static final String ATTRIBUTE_DEVICE_ID = "deviceID";
+    private static final String ATTRIBUTE_BUILD_ID = "buildID";
+    private static final String ATTRIBUTE_BUILD_VERSION = "buildVersion";
+    private static final String ATTRIBUTE_BUILD_NAME = "buildName";
+
+    private String mTestPackageBinaryName = "CtsTestPackage";
+
+    /** {@inheritDoc} */
+    @Override
+    public void tearDown() {
+        HostConfig.getInstance().removeTestPacakges();
+        deleteTestPackage(mTestPackageBinaryName);
+
+        super.tearDown();
+    }
+
+    /**
+     * Test building simple test session.
+     */
+    public void testBuildSimpleSession() throws IOException,
+            ParserConfigurationException, SAXException, TestPlanNotFoundException,
+            TestNotFoundException, NoSuchAlgorithmException {
+        final String appPackageName = "com.google.android.cts" + ".CtsTest";
+        final String suiteName = appPackageName;
+        final String caseName = "CtsTestHello";
+        final String runner = "android.test.InstrumentationTestRunner";
+
+        final String serialNum = "serialNum";
+        final String buildID = "buildid";
+        final String buildName = "buildname";
+        final String buildVersion = "buildVersion";
+        final String testPlanConfigStr = "<TestPlan version=\"1.0\">\n"
+                + "\t<Description>Demo test plan</Description>\n"
+                + "\t\t<PlanSettings>\n"
+                + "\t\t\t<RequiredDevice amount=\"" + 1 + "\"" + "/>\n"
+                + "\t\t</PlanSettings>\n"
+                + "\t<Entry uri=\""
+                + appPackageName
+                + "\"/>\n"
+                + "</TestPlan>";
+
+        final String descriptionConfigStr = "<TestPackage name=\""
+                + mTestPackageBinaryName+ "\" "
+                + "appPackageName=\"" + appPackageName
+                + "\" version=\"1.0\" AndroidFramework=\"Android 1.0\""
+                + " runner=\"" + runner + "\">\n"
+                + " <Description>something extracted from java doc</Description>\n"
+                + " <TestSuite name=\"" + suiteName + "\"" + ">\n"
+                + "     <TestCase name=\"" + caseName + "\"" + " priority=\"mandatory\">\n"
+                + "         <Description>" + "something extracted from java doc"
+                + "         </Description>\n"
+                + "         <!-- Test Methods -->\n"
+                + "         <Test method=\"testHello\"" + " type=\"automatic\"" + "/>\n"
+                + "     </TestCase>\n"
+                + " </TestSuite>\n"
+                + "</TestPackage>\n";
+
+        HostConfig.getInstance().removeTestPacakges();
+        String planPath =
+            HostConfig.getInstance().getPlanRepository().getPlanPath(mTmpPlanFileName);
+        createFile(testPlanConfigStr, planPath);
+
+        createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+        HostConfig.getInstance().loadTestPackages();
+
+        TestSession ts = TestSessionBuilder.getInstance().build(planPath);
+        assertEquals(1, ts.getNumOfRequiredDevices());
+
+        TestSessionLog tsl = ts.getSessionLog();
+        assertEquals(1, tsl.getTestPackages().size());
+
+        TestPackage testPackage = tsl.getTestPackages().iterator().next();
+        assertEquals(1, testPackage.getTestSuites().size());
+        assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
+        assertEquals(appPackageName, testPackage.getAppPackageName());
+        assertEquals("1.0", testPackage.getVersion());
+        assertEquals("Android 1.0", testPackage.getAndroidVersion());
+        assertEquals(runner, testPackage.getInstrumentationRunner());
+
+        TestSuite testSuite = testPackage.getTestSuites().iterator().next();
+        assertEquals(1, testSuite.getTestCases().size());
+        assertEquals(suiteName, testSuite.getFullName());
+
+        TestCase testCase = testSuite.getTestCases().iterator().next();
+        assertEquals(caseName, testCase.getName());
+        assertEquals("mandatory", testCase.getPriority());
+
+        Test test = testCase.getTests().iterator().next();
+        assertEquals("automatic", test.getType());
+        assertEquals(TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED, test.getResultCode());
+        assertEquals(runner, test.getInstrumentationRunner());
+
+        // test build information
+        DeviceParameterCollector deviceParam = new DeviceParameterCollector();
+        deviceParam.setSerialNumber(serialNum);
+        deviceParam.setBuildId(buildID);
+        deviceParam.setBuildVersion(buildVersion);
+        deviceParam.setProductName(buildName);
+        tsl.setDeviceInfo(deviceParam);
+        Document doc = tsl.createResultDoc();
+
+        Node buildInfoNode = doc.getElementsByTagName("BuildInfo").item(0);
+        assertEquals(serialNum, buildInfoNode.getAttributes().getNamedItem(
+                ATTRIBUTE_DEVICE_ID).getNodeValue().trim());
+        assertEquals(buildID, buildInfoNode.getAttributes().getNamedItem(
+                ATTRIBUTE_BUILD_ID).getNodeValue().trim());
+        assertEquals(buildVersion, buildInfoNode.getAttributes().getNamedItem(
+                ATTRIBUTE_BUILD_VERSION).getNodeValue().trim());
+        assertEquals(buildName, buildInfoNode.getAttributes().getNamedItem(
+                ATTRIBUTE_BUILD_NAME).getNodeValue().trim());
+
+        deleteTestPackage(mTestPackageBinaryName);
+    }
+
+    /**
+     * Test getting and removing entries from plan file.
+     */
+    public void testGetAndRemoveEntriesFromPlanFile() throws UnknownCommandException,
+                    CommandNotFoundException, Exception {
+
+        final String appPackageName = "com.google.android.cts";
+        final String suiteName = appPackageName;
+        final String caseName = "CtsTestHello";
+        final String runner = "android.test.InstrumentationTestRunner";
+
+        final String testPlanConfigStr = "<TestPlan version=\"1.0\">\n"
+                + "\t<Description>Demo test plan</Description>\n"
+                + "\t\t<PlanSettings>\n"
+                + "\t\t\t<RequiredDevice amount=\"" + 1 + "\"" + "/>\n"
+                + "\t\t</PlanSettings>\n"
+                + "\t<Entry uri=\""
+                + appPackageName
+                + "\"/>\n"
+                + "</TestPlan>";
+
+        final String descriptionConfigStr = "<TestPackage name=\""
+                + mTestPackageBinaryName+ "\" "
+                + "appPackageName=\"" + appPackageName
+                + "\" version=\"1.0\" AndroidFramework=\"Android 1.0\""
+                + " runner=\"" + runner + "\">\n"
+                + " <Description>something extracted from java doc</Description>\n"
+                + " <TestSuite name=\"" + suiteName + "\"" + ">\n"
+                + "     <TestCase name=\"" + caseName + "\"" + " priority=\"mandatory\">\n"
+                + "         <Description>" + "something extracted from java doc"
+                + "         </Description>\n"
+                + "         <!-- Test Methods -->\n"
+                + "         <Test method=\"testHello\"" + " type=\"automatic\"" + "/>\n"
+                + "     </TestCase>\n"
+                + " </TestSuite>\n"
+                + "</TestPackage>\n";
+
+        HostConfig.getInstance().removeTestPacakges();
+        createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+        HostConfig.getInstance().loadTestPackages();
+
+        String planPath = HostConfig.getInstance().getPlanRepository()
+                .getPlanPath(mTmpPlanFileName);
+        createFile(testPlanConfigStr, planPath);
+
+        ArrayList<String> removedPkgList = new ArrayList<String>();
+        Collection<String> entries = TestPlan.getEntries(planPath, removedPkgList);
+        Iterator<String> it = entries.iterator();
+
+        assertEquals(1, entries.size());
+        assertEquals(appPackageName, it.next());
+        ConsoleUi cui = new ConsoleUi(TestHost.getInstance());
+        String cmdLine = CTSCommand.REMOVE + " " + "-p" + " "
+                + appPackageName;
+        cui.processCommand(CommandParser.parse(cmdLine));
+        entries = TestPlan.getEntries(planPath, removedPkgList);
+        assertEquals(1, removedPkgList.size());
+
+        deleteTestPackage(mTestPackageBinaryName);
+    }
+
+    /**
+     * Test validating package name.
+     */
+    public void testValidatePackageName() throws IOException {
+        final String packageName = "com.google.android.testname";
+        String testPackageXmlFilePath =
+            HostConfig.getInstance().getCaseRepository().getXmlPath(packageName);
+        String testpackageAPKFilePath =
+            HostConfig.getInstance().getCaseRepository().getApkPath(packageName);
+
+        HostConfig.getInstance().removeTestPacakges();
+        createTestPackage("", packageName);
+
+        assertEquals(true, TestPlan.isValidPackageName(packageName));
+
+        deleteFile(testPackageXmlFilePath);
+        assertEquals(false, TestPlan.isValidPackageName(packageName));
+
+        deleteFile(testpackageAPKFilePath);
+        assertEquals(false, TestPlan.isValidPackageName(packageName));
+    }
+
+    /**
+     * Test building test session with dependency.
+     */
+    public void testBuildSessionWithDependency() throws IOException,
+            ParserConfigurationException, SAXException, TestPlanNotFoundException,
+            TestNotFoundException, NoSuchAlgorithmException {
+
+        final String targetNameSpace = "i don't want to be the target!";
+        final String appPackageName = "com.google.android.cts";
+        final String suiteName = appPackageName + ".CtsTest";
+        final String caseName = "CtsTestHello";
+        final String runner = "android.test.InstrumentationTestRunner";
+
+        final String testPlanConfigStr = "<TestPlan version=\"1.0\">\n"
+                + "\t<Description>Demo test plan</Description>\n"
+                + "\t\t<PlanSettings>\n"
+                + "\t\t\t<RequiredDevice amount=\"" + 1 + "\"" + "/>\n"
+                + "\t\t</PlanSettings>\n"
+                + "\t<Entry uri=\""
+                + appPackageName
+                + "\"/>\n"
+                + "</TestPlan>";
+
+        final String descriptionConfigStr = "<TestPackage name=\""
+                + mTestPackageBinaryName + "\" "
+                + "appPackageName=\"" + appPackageName
+                + "\" targetNameSpace=\"" + targetNameSpace
+                + "\" version=\"1.0\" AndroidFramework=\"Android 1.0\""
+                + " runner=\"" +runner + "\">\n"
+                + " <Description>something extracted from java doc</Description>\n"
+                + " <TestSuite name=\"" + suiteName + "\"" + ">\n"
+                + "     <TestCase name=\"" + caseName + "\"" + " priority=\"mandatory\">\n"
+                + "         <Description>" + "something extracted from java doc"
+                + "         </Description>\n"
+                + "         <!-- Test Methods -->\n"
+                + "         <Test method=\"testHello\"" + " type=\"automatic\"" + "/>\n"
+                + "     </TestCase>\n"
+                + " </TestSuite>\n"
+                + "</TestPackage>\n";
+
+        HostConfig.getInstance().removeTestPacakges();
+
+        String planPath =
+            HostConfig.getInstance().getPlanRepository().getPlanPath(mTmpPlanFileName);
+        createFile(testPlanConfigStr, planPath);
+
+        createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+        HostConfig.getInstance().loadTestPackages();
+
+        TestSession ts = TestSessionBuilder.getInstance().build(planPath);
+        assertEquals(1, ts.getNumOfRequiredDevices());
+
+        TestSessionLog tsl = ts.getSessionLog();
+        assertEquals(1, tsl.getTestPackages().size());
+
+        TestPackage testPackage = tsl.getTestPackages().iterator().next();
+        assertEquals(1, testPackage.getTestSuites().size());
+        assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
+        assertEquals(targetNameSpace, testPackage.getTargetNameSpace());
+        assertEquals("1.0", testPackage.getVersion());
+        assertEquals("Android 1.0", testPackage.getAndroidVersion());
+        assertEquals(runner, testPackage.getInstrumentationRunner());
+
+        TestSuite testSuite = testPackage.getTestSuites().iterator().next();
+        assertEquals(1, testSuite.getTestCases().size());
+        assertEquals(suiteName, testSuite.getFullName());
+
+        TestCase testCase = testSuite.getTestCases().iterator().next();
+        assertEquals(caseName, testCase.getName());
+        assertEquals("mandatory", testCase.getPriority());
+
+        Test test = testCase.getTests().iterator().next();
+        assertEquals("automatic", test.getType());
+        assertEquals(TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED, test.getResultCode());
+        assertEquals(runner, test.getInstrumentationRunner());
+
+        deleteTestPackage(mTestPackageBinaryName);
+    }
+
+    /**
+     * Test building test session from embedded suites.
+     */
+    public void testBuildSessionFromEmbeddedSuites() throws IOException,
+            ParserConfigurationException, SAXException, TestPlanNotFoundException,
+            TestNotFoundException, NoSuchAlgorithmException {
+
+        final String appPackageName = "com.google.android.cts";
+        final String caseName = "CtsTestHello";
+        final String testName = "testHello";
+
+        final String testPlanConfigStr = "<TestPlan version=\"1.0\">\n"
+                + "<Description>Demo test plan</Description>\n"
+                + "<PlanSettings>\n"
+                + "    <RequiredDevice amount=\"" + 1 + "\"" + "/>\n"
+                + "</PlanSettings>\n"
+                + "<Entry uri=\"" + appPackageName + "\"/>\n"
+                + "</TestPlan>";
+
+        final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
+                + " appPackageName=\"" + appPackageName + "\""
+                + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
+                + " runner=\"android.test.InstrumentationTestRunner\" >\n"
+                + "  <Description>something extracted from java doc</Description>\n"
+                + "  <TestSuite name=\"com.google\">\n"
+                + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
+                + "         <Description>" + "something extracted from java doc"
+                + "         </Description>\n"
+                + "         <!-- Test Methods -->\n"
+                + "         <Test method=\"testHello\"" + " type=\"automatic\"" + "/>\n"
+                + "     </TestCase>\n"
+                + "     <TestSuite name=\"TestSuiteName\">\n"
+                + "         <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
+                + "             <Description>" + "something extracted from java doc"
+                + "             </Description>\n"
+                + "             <!-- Test Methods -->\n"
+                + "             <Test method=\"testName\"" + " type=\"automatic\"" + "/>\n"
+                + "         </TestCase>\n"
+                + "     </TestSuite>\n"
+                + "  </TestSuite>\n"
+                + "</TestPackage>\n";
+
+        HostConfig.getInstance().removeTestPacakges();
+
+        String planPath =
+            HostConfig.getInstance().getPlanRepository().getPlanPath(mTmpPlanFileName);
+        createFile(testPlanConfigStr, planPath);
+
+        createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+        HostConfig.getInstance().loadTestPackages();
+
+        TestSession ts = TestSessionBuilder.getInstance().build(planPath);
+        assertEquals(1, ts.getNumOfRequiredDevices());
+
+        TestSessionLog tsl = ts.getSessionLog();
+        assertEquals(1, tsl.getTestPackages().size());
+
+        TestPackage testPackage = tsl.getTestPackages().iterator().next();
+        assertEquals(1, testPackage.getTestSuites().size());
+        assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
+        assertEquals("1.0", testPackage.getVersion());
+        assertEquals("Android 1.0", testPackage.getAndroidVersion());
+
+        TestSuite testSuite;
+        testSuite = testPackage.getTestSuites().iterator().next();
+        assertEquals(1, testSuite.getSubSuites().size());
+        assertEquals(1, testSuite.getTestCases().size());
+        assertEquals("com.google", testSuite.getFullName());
+        assertEquals("com.google", testSuite.getName());
+
+        TestCase testCase = testSuite.getTestCases().iterator().next();
+        assertEquals(caseName, testCase.getName());
+        assertEquals("mandatory", testCase.getPriority());
+
+        Test test = testCase.getTests().iterator().next();
+        assertEquals("com.google.CtsTestHello#testHello", test.getFullName());
+        assertEquals("automatic", test.getType());
+        assertEquals(testName, test.getName());
+        assertEquals(TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED, test.getResultCode());
+
+        testSuite = testSuite.getSubSuites().iterator().next();
+        assertEquals(0, testSuite.getSubSuites().size());
+        assertEquals(1, testSuite.getTestCases().size());
+        assertEquals("com.google.TestSuiteName", testSuite.getFullName());
+        assertEquals("TestSuiteName", testSuite.getName());
+
+        testCase = testSuite.getTestCases().iterator().next();
+        assertEquals("TestCaseName", testCase.getName());
+        assertEquals("mandatory", testCase.getPriority());
+
+        test = testCase.getTests().iterator().next();
+        assertEquals("com.google.TestSuiteName.TestCaseName#testName", test.getFullName());
+        assertEquals("automatic", test.getType());
+        assertEquals("testName", test.getName());
+        assertEquals(TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED, test.getResultCode());
+
+        deleteTestPackage(mTestPackageBinaryName);
+    }
+
+    /**
+     * Test loading plan with excluded list from the xml file.
+     */
+    public void testExcludingFromXmlFile() throws IOException,
+                ParserConfigurationException,
+                SAXException,
+                TestPlanNotFoundException,
+                TestNotFoundException, NoSuchAlgorithmException {
+
+        final String appPackageName = "com.google.android.cts";
+        final String caseName = "CtsTestHello";
+        final String testName = "testHello";
+        final String excludedList = "com.google.TestSuiteName";
+
+        final String testPlanConfigStr = "<TestPlan version=\"1.0\">\n"
+                + "<Description>Demo test plan</Description>\n"
+                + "<PlanSettings>\n"
+                + "    <RequiredDevice amount=\"" + 1 + "\"" + "/>\n"
+                + "</PlanSettings>\n"
+                + "     <Entry uri=\"" + appPackageName
+                + "\" " + "exclude=\"" + excludedList + "\"/>\n"
+                + "</TestPlan>";
+
+        final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
+                + " appPackageName=\"" + appPackageName + "\""
+                + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
+                + " runner=\"android.test.InstrumentationTestRunner\" >\n"
+                + "  <Description>something extracted from java doc</Description>\n"
+                + "  <TestSuite name=\"com.google\">\n"
+                + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
+                + "         <Description>" + "something extracted from java doc"
+                + "         </Description>\n"
+                + "         <!-- Test Methods -->\n"
+                + "         <Test method=\"testHello\"" + " type=\"automatic\"" + "/>\n"
+                + "         <Test method=\"testHello2\"" + " type=\"automatic\"" + "/>\n"
+                + "     </TestCase>\n"
+                + "     <TestSuite name=\"TestSuiteName\">\n"
+                + "         <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
+                + "             <Description>" + "something extracted from java doc"
+                + "             </Description>\n"
+                + "             <!-- Test Methods -->\n"
+                + "             <Test method=\"testName1\"" + " type=\"automatic\"" + "/>\n"
+                + "             <Test method=\"testName2\"" + " type=\"automatic\"" + "/>\n"
+                + "         </TestCase>\n"
+                + "     </TestSuite>\n"
+                + "  </TestSuite>\n"
+                + "</TestPackage>\n";
+
+        HostConfig.getInstance().removeTestPacakges();
+
+        String planPath =
+            HostConfig.getInstance().getPlanRepository().getPlanPath(mTmpPlanFileName);
+        createFile(testPlanConfigStr, planPath);
+
+        createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+        HostConfig.getInstance().loadTestPackages();
+
+        TestSession ts = TestSessionBuilder.getInstance().build(planPath);
+        assertEquals(1, ts.getNumOfRequiredDevices());
+
+        TestSessionLog tsl = ts.getSessionLog();
+        assertEquals(1, tsl.getTestPackages().size());
+
+        TestPackage testPackage = tsl.getTestPackages().iterator().next();
+        assertEquals(1, testPackage.getTestSuites().size());
+        assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
+        assertEquals("1.0", testPackage.getVersion());
+        assertEquals("Android 1.0", testPackage.getAndroidVersion());
+
+        TestSuite testSuite;
+        testSuite = testPackage.getTestSuites().iterator().next();
+        assertEquals(0, testSuite.getSubSuites().size());
+        assertEquals(1, testSuite.getTestCases().size());
+        assertEquals("com.google", testSuite.getFullName());
+
+        TestCase testCase = testSuite.getTestCases().iterator().next();
+        assertEquals(caseName, testCase.getName());
+        assertEquals("mandatory", testCase.getPriority());
+
+        Test test = testCase.getTests().iterator().next();
+        assertEquals("com.google.CtsTestHello#testHello", test.getFullName());
+        assertEquals("automatic", test.getType());
+        assertEquals(testName, test.getName());
+        assertEquals(TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED, test.getResultCode());
+
+        deleteTestPackage(mTestPackageBinaryName);
+    }
+
+    /**
+     * Test building and loading plan with excluding list of embedded suite.
+     */
+    public void testExcludingEmbeddedSuite() throws IOException,
+            ParserConfigurationException, SAXException, TestPlanNotFoundException,
+            TestNotFoundException,
+            TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException {
+
+        final String appPackageName = "com.google.android.cts";
+        final String caseName = "CtsTestHello";
+        final String testName = "testHello";
+        final String excludedList = "com.google.TestSuiteName";
+
+        final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
+                + " appPackageName=\"" + appPackageName + "\""
+                + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
+                + " runner=\"android.test.InstrumentationTestRunner\" >\n"
+                + "  <Description>something extracted from java doc</Description>\n"
+                + "  <TestSuite name=\"com.google\">\n"
+                + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
+                + "         <Description>" + "something extracted from java doc"
+                + "         </Description>\n"
+                + "         <!-- Test Methods -->\n"
+                + "         <Test method=\"testHello\"" + " type=\"automatic\"" + "/>\n"
+                + "         <Test method=\"testHello2\"" + " type=\"automatic\"" + "/>\n"
+                + "     </TestCase>\n"
+                + "     <TestSuite name=\"TestSuiteName\">\n"
+                + "         <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
+                + "             <Description>" + "something extracted from java doc"
+                + "             </Description>\n"
+                + "             <!-- Test Methods -->\n"
+                + "             <Test method=\"testName1\"" + " type=\"automatic\"" + "/>\n"
+                + "             <Test method=\"testName2\"" + " type=\"automatic\"" + "/>\n"
+                + "         </TestCase>\n"
+                + "     </TestSuite>\n"
+                + "  </TestSuite>\n"
+                + "</TestPackage>\n";
+
+        HostConfig.getInstance().removeTestPacakges();
+        createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+        HostConfig.getInstance().loadTestPackages();
+
+        ArrayList<String> packageNames = new ArrayList<String>();
+        packageNames.add(appPackageName);
+
+        HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
+        ArrayList<String> list = new ArrayList<String>();
+        list.add(excludedList);
+        results.put(appPackageName, list);
+        String planName = "plan_test_excluding";
+        String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
+        TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
+
+        TestSession ts = TestSessionBuilder.getInstance().build(planPath);
+        assertEquals(1, ts.getNumOfRequiredDevices());
+
+        TestSessionLog tsl = ts.getSessionLog();
+        assertEquals(1, tsl.getTestPackages().size());
+
+        TestPackage testPackage = tsl.getTestPackages().iterator().next();
+        assertEquals(1, testPackage.getTestSuites().size());
+        assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
+        assertEquals("1.0", testPackage.getVersion());
+        assertEquals("Android 1.0", testPackage.getAndroidVersion());
+
+        TestSuite testSuite;
+        testSuite = testPackage.getTestSuites().iterator().next();
+        assertEquals(0, testSuite.getSubSuites().size());
+        assertEquals(1, testSuite.getTestCases().size());
+        assertEquals("com.google", testSuite.getFullName());
+
+        TestCase testCase = testSuite.getTestCases().iterator().next();
+        assertEquals(caseName, testCase.getName());
+        assertEquals("mandatory", testCase.getPriority());
+
+        Test test = testCase.getTests().iterator().next();
+        assertEquals("com.google.CtsTestHello#testHello", test.getFullName());
+        assertEquals("automatic", test.getType());
+        assertEquals(testName, test.getName());
+        assertEquals(TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED, test.getResultCode());
+
+        deleteTestPackage(mTestPackageBinaryName);
+    }
+
+    /**
+     * Test building and loading plan with excluding list of the top suite.
+     */
+    public void testExcludingTopSuite() throws IOException,
+            ParserConfigurationException, SAXException, TestPlanNotFoundException,
+            TestNotFoundException,
+            TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException {
+
+        final String appPackageName = "com.google.android.cts";
+        final String excludedList = "com.google";
+
+        final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
+                + " appPackageName=\"" + appPackageName + "\""
+                + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
+                + " runner=\"android.test.InstrumentationTestRunner\" >\n"
+                + "  <Description>something extracted from java doc</Description>\n"
+                + "  <TestSuite name=\"com.google\">\n"
+                + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
+                + "         <Description>" + "something extracted from java doc"
+                + "         </Description>\n"
+                + "         <!-- Test Methods -->\n"
+                + "         <Test method=\"testHello\"" + " type=\"automatic\"" + "/>\n"
+                + "         <Test method=\"testHello2\"" + " type=\"automatic\"" + "/>\n"
+                + "     </TestCase>\n"
+                + "     <TestSuite name=\"TestSuiteName\">\n"
+                + "         <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
+                + "             <Description>" + "something extracted from java doc"
+                + "             </Description>\n"
+                + "             <!-- Test Methods -->\n"
+                + "             <Test method=\"testName1\"" + " type=\"automatic\"" + "/>\n"
+                + "             <Test method=\"testName2\"" + " type=\"automatic\"" + "/>\n"
+                + "         </TestCase>\n"
+                + "     </TestSuite>\n"
+                + "  </TestSuite>\n"
+                + "</TestPackage>\n";
+
+        HostConfig.getInstance().removeTestPacakges();
+        createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+        HostConfig.getInstance().loadTestPackages();
+
+        ArrayList<String> packageNames = new ArrayList<String>();
+        packageNames.add(appPackageName);
+
+        HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
+        ArrayList<String> list = new ArrayList<String>();
+        list.add(excludedList);
+        results.put(appPackageName, list);
+        String planName = "plan_test_excluding";
+        String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
+        TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
+
+        TestSession ts = TestSessionBuilder.getInstance().build(planPath);
+        assertEquals(1, ts.getNumOfRequiredDevices());
+
+        TestSessionLog tsl = ts.getSessionLog();
+        assertEquals(1, tsl.getTestPackages().size());
+
+        TestPackage testPackage = tsl.getTestPackages().iterator().next();
+        assertEquals(0, testPackage.getTestSuites().size());
+        assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
+        assertEquals("1.0", testPackage.getVersion());
+        assertEquals("Android 1.0", testPackage.getAndroidVersion());
+
+        deleteTestPackage(mTestPackageBinaryName);
+    }
+
+    /**
+     * Test building and loading plan with excluded list of test case.
+     */
+    public void testExcludingTestCase() throws IOException,
+            ParserConfigurationException, SAXException, TestPlanNotFoundException,
+            TestNotFoundException,
+            TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException {
+
+        final String appPackageName = "com.google.android.cts";
+        final String caseName = "CtsTestHello";
+        final String testName = "testHello";
+        final String excludedList = "com.google.TestCaseName";
+
+        final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
+                + " appPackageName=\"" + appPackageName + "\""
+                + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
+                + " runner=\"android.test.InstrumentationTestRunner\" >\n"
+                + "  <Description>something extracted from java doc</Description>\n"
+                + "  <TestSuite name=\"com.google\">\n"
+                + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
+                + "         <Description>" + "something extracted from java doc"
+                + "         </Description>\n"
+                + "         <!-- Test Methods -->\n"
+                + "         <Test method=\"testHello\"" + " type=\"automatic\"" + "/>\n"
+                + "         <Test method=\"testHello2\"" + " type=\"automatic\"" + "/>\n"
+                + "     </TestCase>\n"
+                + "     <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
+                + "         <Description>" + "something extracted from java doc"
+                + "         </Description>\n"
+                + "         <!-- Test Methods -->\n"
+                + "         <Test method=\"testName1\"" + " type=\"automatic\"" + "/>\n"
+                + "         <Test method=\"testName2\"" + " type=\"automatic\"" + "/>\n"
+                + "     </TestCase>\n"
+                + "  </TestSuite>\n"
+                + "</TestPackage>\n";
+
+        HostConfig.getInstance().removeTestPacakges();
+        createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+        HostConfig.getInstance().loadTestPackages();
+
+        ArrayList<String> packageNames = new ArrayList<String>();
+        packageNames.add(appPackageName);
+
+        HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
+        ArrayList<String> list = new ArrayList<String>();
+        list.add(excludedList);
+        results.put(appPackageName, list);
+        String planName = "plan_test_excluding";
+        String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
+        TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
+
+        TestSession ts = TestSessionBuilder.getInstance().build(planPath);
+        assertEquals(1, ts.getNumOfRequiredDevices());
+
+        TestSessionLog tsl = ts.getSessionLog();
+        assertEquals(1, tsl.getTestPackages().size());
+
+        TestPackage testPackage = tsl.getTestPackages().iterator().next();
+        assertEquals(1, testPackage.getTestSuites().size());
+        assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
+        assertEquals("1.0", testPackage.getVersion());
+        assertEquals("Android 1.0", testPackage.getAndroidVersion());
+
+        TestSuite testSuite;
+        testSuite = testPackage.getTestSuites().iterator().next();
+        assertEquals(1, testSuite.getTestCases().size());
+        assertEquals("com.google", testSuite.getFullName());
+
+        assertEquals(1, testSuite.getTestCases().size());
+
+        TestCase testCase = testSuite.getTestCases().iterator().next();
+        assertEquals(caseName, testCase.getName());
+        assertEquals("mandatory", testCase.getPriority());
+
+        Test test = testCase.getTests().iterator().next();
+        assertEquals("com.google.CtsTestHello#testHello", test.getFullName());
+        assertEquals("automatic", test.getType());
+        assertEquals(testName, test.getName());
+        assertEquals(TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED, test.getResultCode());
+
+        deleteTestPackage(mTestPackageBinaryName);
+    }
+
+    /**
+     * Test building and loading plan with excluded list of all of the test cases.
+     */
+    public void testExcludingAllTestCases() throws IOException,
+            ParserConfigurationException, SAXException, TestPlanNotFoundException,
+            TestNotFoundException,
+            TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException {
+
+        final String appPackageName = "com.google.android.cts";
+        final String excludedList = "com.google.TestCaseName;com.google.CtsTestHello";
+
+        final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
+                + " appPackageName=\"" + appPackageName + "\""
+                + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
+                + " runner=\"android.test.InstrumentationTestRunner\" >\n"
+                + "  <Description>something extracted from java doc</Description>\n"
+                + "  <TestSuite name=\"com.google\">\n"
+                + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
+                + "         <Description>" + "something extracted from java doc"
+                + "         </Description>\n"
+                + "         <!-- Test Methods -->\n"
+                + "         <Test method=\"testHello\"" + " type=\"automatic\"" + "/>\n"
+                + "         <Test method=\"testHello2\"" + " type=\"automatic\"" + "/>\n"
+                + "     </TestCase>\n"
+                + "     <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
+                + "         <Description>" + "something extracted from java doc"
+                + "         </Description>\n"
+                + "         <!-- Test Methods -->\n"
+                + "         <Test method=\"testName1\"" + " type=\"automatic\"" + "/>\n"
+                + "         <Test method=\"testName2\"" + " type=\"automatic\"" + "/>\n"
+                + "     </TestCase>\n"
+                + "  </TestSuite>\n"
+                + "</TestPackage>\n";
+
+        HostConfig.getInstance().removeTestPacakges();
+        createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+        HostConfig.getInstance().loadTestPackages();
+
+        ArrayList<String> packageNames = new ArrayList<String>();
+        packageNames.add(appPackageName);
+
+        HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
+        ArrayList<String> list = new ArrayList<String>();
+        list.add(excludedList);
+        results.put(appPackageName, list);
+        String planName = "plan_test_excluding";
+        String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
+        TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
+
+        TestSession ts = TestSessionBuilder.getInstance().build(planPath);
+        assertEquals(1, ts.getNumOfRequiredDevices());
+
+        TestSessionLog tsl = ts.getSessionLog();
+        assertEquals(1, tsl.getTestPackages().size());
+
+        TestPackage testPackage = tsl.getTestPackages().iterator().next();
+        assertEquals(0, testPackage.getTestSuites().size());
+        assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
+        assertEquals("1.0", testPackage.getVersion());
+        assertEquals("Android 1.0", testPackage.getAndroidVersion());
+
+        assertEquals(0, testPackage.getTestSuites().size());
+
+        deleteTestPackage(mTestPackageBinaryName);
+    }
+
+    /**
+     * Test building and loading plan with excluded list of test.
+     */
+    public void testExcludingTest() throws IOException,
+            ParserConfigurationException, SAXException, TestPlanNotFoundException,
+            TestNotFoundException,
+            TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException {
+
+        final String appPackageName = "com.google.android.cts";
+        final String caseName = "CtsTestHello";
+        final String testName = "testHello";
+        final String excludedList = "com.google.CtsTestHello#testHello2";
+
+        final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
+                + " appPackageName=\"" + appPackageName + "\""
+                + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
+                + " runner=\"android.test.InstrumentationTestRunner\" >\n"
+                + "  <Description>something extracted from java doc</Description>\n"
+                + "  <TestSuite name=\"com.google\">\n"
+                + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
+                + "         <Description>" + "something extracted from java doc"
+                + "         </Description>\n"
+                + "         <!-- Test Methods -->\n"
+                + "         <Test method=\"testHello\"" + " type=\"automatic\"" + "/>\n"
+                + "         <Test method=\"testHello2\"" + " type=\"automatic\"" + "/>\n"
+                + "     </TestCase>\n"
+                + "  </TestSuite>\n"
+                + "</TestPackage>\n";
+
+        HostConfig.getInstance().removeTestPacakges();
+        createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+        HostConfig.getInstance().loadTestPackages();
+
+        ArrayList<String> packageNames = new ArrayList<String>();
+        packageNames.add(appPackageName);
+
+        HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
+        ArrayList<String> list = new ArrayList<String>();
+        list.add(excludedList);
+        results.put(appPackageName, list);
+        String planName = "plan_test_excluding";
+        String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
+        TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
+
+        TestSession ts = TestSessionBuilder.getInstance().build(planPath);
+        assertEquals(1, ts.getNumOfRequiredDevices());
+
+        TestSessionLog tsl = ts.getSessionLog();
+        assertEquals(1, tsl.getTestPackages().size());
+
+        TestPackage testPackage = tsl.getTestPackages().iterator().next();
+        assertEquals(1, testPackage.getTestSuites().size());
+        assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
+        assertEquals("1.0", testPackage.getVersion());
+        assertEquals("Android 1.0", testPackage.getAndroidVersion());
+
+        TestSuite testSuite;
+        testSuite = testPackage.getTestSuites().iterator().next();
+        assertEquals(1, testSuite.getTestCases().size());
+        assertEquals("com.google", testSuite.getFullName());
+
+        assertEquals(1, testSuite.getTestCases().size());
+
+        TestCase testCase = testSuite.getTestCases().iterator().next();
+        assertEquals(caseName, testCase.getName());
+        assertEquals("mandatory", testCase.getPriority());
+
+        Test test = testCase.getTests().iterator().next();
+        assertEquals("com.google.CtsTestHello#testHello", test.getFullName());
+        assertEquals("automatic", test.getType());
+        assertEquals(testName, test.getName());
+        assertEquals(TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED, test.getResultCode());
+
+        deleteTestPackage(mTestPackageBinaryName);
+    }
+
+    /**
+     * Test building and loading plan with excluded list of all of the tests.
+     */
+    public void testExcludingAllTests() throws IOException,
+            ParserConfigurationException, SAXException, TestPlanNotFoundException,
+            TestNotFoundException,
+            TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException {
+
+        final String appPackageName = "com.google.android.cts";
+        final String excludedList =
+            "com.google.CtsTestHello#testHello;com.google.CtsTestHello#testHello2;";
+
+        final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
+                + " appPackageName=\"" + appPackageName + "\""
+                + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
+                + " runner=\"android.test.InstrumentationTestRunner\" >\n"
+                + "  <Description>something extracted from java doc</Description>\n"
+                + "  <TestSuite name=\"com.google\">\n"
+                + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
+                + "         <Description>" + "something extracted from java doc"
+                + "         </Description>\n"
+                + "         <!-- Test Methods -->\n"
+                + "         <Test method=\"testHello\"" + " type=\"automatic\"" + "/>\n"
+                + "         <Test method=\"testHello2\"" + " type=\"automatic\"" + "/>\n"
+                + "     </TestCase>\n"
+                + "  </TestSuite>\n"
+                + "</TestPackage>\n";
+
+        HostConfig.getInstance().removeTestPacakges();
+        createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+        HostConfig.getInstance().loadTestPackages();
+
+        ArrayList<String> packageNames = new ArrayList<String>();
+        packageNames.add(appPackageName);
+
+        HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
+        ArrayList<String> list = new ArrayList<String>();
+        list.add(excludedList);
+        results.put(appPackageName, list);
+        String planName = "plan_test_excluding";
+        String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
+        TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
+
+        TestSession ts = TestSessionBuilder.getInstance().build(planPath);
+        assertEquals(1, ts.getNumOfRequiredDevices());
+
+        TestSessionLog tsl = ts.getSessionLog();
+        assertEquals(1, tsl.getTestPackages().size());
+
+        TestPackage testPackage = tsl.getTestPackages().iterator().next();
+        assertEquals(0, testPackage.getTestSuites().size());
+        assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
+        assertEquals("1.0", testPackage.getVersion());
+        assertEquals("Android 1.0", testPackage.getAndroidVersion());
+
+        deleteTestPackage(mTestPackageBinaryName);
+    }
+
+    /**
+     * Test creating plan with excluded list.
+     */
+    public void testCreatePlanWithExcludedList() throws IOException,
+          ParserConfigurationException, SAXException,
+          TestPlanNotFoundException, TestNotFoundException,
+          TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException{
+
+        final String appPackageName = "com.google.android.cts";
+        final String suiteName1 = appPackageName + "." + "SuiteName1";
+        final String caseName1 = "CtsTestHello";
+        final String testName1 = "testHello";
+
+        final String caseName2 = "CtsTestHello2";
+        final String testName2 = "testHello2";
+        final String testName3 = "testHello3";
+        final String suiteName2 = "com.google.android.cts.CtsTest.SuiteName2";
+
+        final String descriptionConfigStr = "<TestPackage name=\""
+              + mTestPackageBinaryName + "\""
+              + " appPackageName=\"" + appPackageName + "\""
+              + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
+              + " runner=\"android.test.InstrumentationTestRunner\" >\n"
+              + " <Description>something extracted from java doc</Description>\n"
+              + " <TestSuite name=\"" + suiteName1 + "\"" + ">\n"
+              + "     <TestCase name=\"" + caseName1 + "\"" + " category=\"mandatory\">\n"
+              + "         <Description>" + "something extracted from java doc"
+              + "         </Description>\n"
+              + "         <!-- Test Methods -->\n"
+              + "         <Test method=\"" + testName1 + "\" type=\"automatic\"" + "/>\n"
+              + "     </TestCase>\n"
+              + " </TestSuite>\n"
+              + " <TestSuite name=\"" + suiteName2 + "\"" + ">\n"
+              + "     <TestCase name=\"" + caseName2 + "\"" + " priority=\"mandatory\">\n"
+              + "         <Test method=\"" + testName2 +"\" type=\"automatic\" />\n"
+              + "         <Test method=\"" + testName3 +"\" type=\"automatic\" />\n"
+              + "     </TestCase>\n"
+              + " </TestSuite>\n"
+              + "</TestPackage>\n";
+
+        HostConfig.getInstance().removeTestPacakges();
+        createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+        HostConfig.getInstance().loadTestPackages();
+
+        ArrayList<String> packageNames = new ArrayList<String>();
+        packageNames.add(appPackageName);
+
+        HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
+        ArrayList<String> list = new ArrayList<String>();
+        String excludedList = suiteName1 + "." + caseName1 + TestPlan.EXCLUDE_SEPARATOR;
+        excludedList += suiteName2 + "." + caseName2 + Test.METHOD_SEPARATOR + testName2;
+        list.add(excludedList);
+        results.put(appPackageName, list);
+
+        String planName = "plan_test_excluding";
+        String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
+        TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
+
+        TestSession ts = TestSessionBuilder.getInstance().build(planPath);
+        assertEquals(1, ts.getNumOfRequiredDevices());
+
+        TestSessionLog tsl = ts.getSessionLog();
+        assertEquals(1, tsl.getTestPackages().size());
+
+        TestPackage testPackage = tsl.getTestPackages().iterator().next();
+        assertEquals(1, testPackage.getTestSuites().size());
+        assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
+        assertEquals("1.0", testPackage.getVersion());
+        assertEquals("Android 1.0", testPackage.getAndroidVersion());
+
+        TestSuite testSuite;
+        testSuite = testPackage.getTestSuites().iterator().next();
+        assertEquals(1, testSuite.getTestCases().size());
+        assertEquals(suiteName2, testSuite.getFullName());
+
+        assertEquals(1, testSuite.getTestCases().size());
+
+        TestCase testCase = testSuite.getTestCases().iterator().next();
+        assertEquals(caseName2, testCase.getName());
+        assertEquals("mandatory", testCase.getPriority());
+        assertEquals(1, testCase.getTests().size());
+
+        Test test = testCase.getTests().iterator().next();
+        String testName = suiteName2 + "." + caseName2 + Test.METHOD_SEPARATOR + testName3;
+        assertEquals(testName, test.getFullName());
+        assertEquals("automatic", test.getType());
+        assertEquals(TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED, test.getResultCode());
+
+        deleteTestPackage(mTestPackageBinaryName);
+    }
+
+    /**
+     * Test creating plan with excluded list of nested suites.
+     */
+    public void testCreatePlanWithExcludedListForNestedSuite() throws IOException,
+          ParserConfigurationException, SAXException,
+          TestPlanNotFoundException, TestNotFoundException,
+          TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException{
+
+        final String appPackageName = "com.google.android.cts";
+        final String fullName = mTestPackageBinaryName + ".CtsTest";
+        final String suiteName1 = fullName + "." + "SuiteName1";
+        final String caseName1 = "CtsTestHello";
+        final String testName1 = "testHello";
+
+        final String caseName2 = "CtsTestHello2";
+        final String testName2 = "testHello2";
+        final String testName3 = "testHello3";
+        final String nestedSuiteName1 = "com.google";
+        final String nestedSuiteName2 = "android.cts.CtsTest.SuiteName2";
+
+        final String descriptionConfigStr = "<TestPackage name=\""
+            + mTestPackageBinaryName + "\""
+            + " appPackageName=\"" + appPackageName + "\""
+            + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
+              + " runner=\"android.test.InstrumentationTestRunner\" >\n"
+              + " <Description>something extracted from java doc</Description>\n"
+              + " <TestSuite name=\"" + suiteName1 + "\"" + ">\n"
+              + "     <TestCase name=\"" + caseName1 + "\"" + " category=\"mandatory\">\n"
+              + "         <Description>" + "something extracted from java doc" + "</Description>\n"
+              + "         <!-- Test Methods -->\n"
+              + "         <Test method=\"" + testName1 + "\" type=\"automatic\"" + "/>\n"
+              + "     </TestCase>\n"
+              + " </TestSuite>\n"
+              + " <TestSuite name=\"" + nestedSuiteName1 + "\"" + ">\n"
+              + "     <TestSuite name=\"" + nestedSuiteName2 + "\"" + ">\n"
+              + "         <TestCase name=\"" + caseName2 + "\"" + " priority=\"mandatory\">\n"
+              + "             <Test method=\"" + testName2 +"\" type=\"automatic\" />\n"
+              + "             <Test method=\"" + testName3 +"\" type=\"automatic\" />\n"
+              + "         </TestCase>\n"
+              + "     </TestSuite>\n"
+              + " </TestSuite>\n"
+              + "</TestPackage>\n";
+
+        HostConfig.getInstance().removeTestPacakges();
+        createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+        HostConfig.getInstance().loadTestPackages();
+
+        ArrayList<String> packageNames = new ArrayList<String>();
+        packageNames.add(appPackageName);
+
+        HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
+        ArrayList<String> list = new ArrayList<String>();
+        String excludedList = suiteName1 + "." + caseName1 + TestPlan.EXCLUDE_SEPARATOR;
+        excludedList += nestedSuiteName1 + "." + nestedSuiteName2
+                        + "." + caseName2 + Test.METHOD_SEPARATOR + testName2;
+        list.add(excludedList);
+        results.put(appPackageName, list);
+
+        String planName = "plan_test_excluding";
+        String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
+        TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
+
+        TestSession ts = TestSessionBuilder.getInstance().build(planPath);
+        assertEquals(1, ts.getNumOfRequiredDevices());
+
+        TestSessionLog tsl = ts.getSessionLog();
+        assertEquals(1, tsl.getTestPackages().size());
+
+        TestPackage testPackage = tsl.getTestPackages().iterator().next();
+        assertEquals(1, testPackage.getTestSuites().size());
+        assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
+        assertEquals("1.0", testPackage.getVersion());
+        assertEquals("Android 1.0", testPackage.getAndroidVersion());
+
+        TestSuite testSuite;
+        testSuite = testPackage.getTestSuites().iterator().next();
+        assertEquals(0, testSuite.getTestCases().size());
+        assertEquals(nestedSuiteName1, testSuite.getFullName());
+
+        assertEquals(1, testSuite.getSubSuites().size());
+        TestSuite testSubSuite = testSuite.getSubSuites().iterator().next();
+        assertEquals(1, testSubSuite.getTestCases().size());
+        String suiteName = nestedSuiteName1 + "." + nestedSuiteName2;
+        assertEquals(suiteName, testSubSuite.getFullName());
+
+        assertEquals(1, testSubSuite.getTestCases().size());
+
+        TestCase testCase = testSubSuite.getTestCases().iterator().next();
+        assertEquals(caseName2, testCase.getName());
+        assertEquals("mandatory", testCase.getPriority());
+        assertEquals(1, testCase.getTests().size());
+
+        Test test = testCase.getTests().iterator().next();
+        String testName = nestedSuiteName1 + "." + nestedSuiteName2 + "." +caseName2
+                          + Test.METHOD_SEPARATOR + testName3;
+        assertEquals(testName, test.getFullName());
+        assertEquals("automatic", test.getType());
+        assertEquals(TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED, test.getResultCode());
+
+        deleteTestPackage(mTestPackageBinaryName);
+    }
+
+    /**
+     * Test building plan of protocol type.
+     */
+    public void testBuildProtocolPlan() throws IOException,
+            ParserConfigurationException, SAXException, TestPlanNotFoundException,
+            TestNotFoundException, NoSuchAlgorithmException {
+
+        final String appPackageName = "com.google.android.cts";
+
+        final String testPlanConfigStr = "<TestPlan version=\"1.0\">\n"
+                + "\t<Description>Demo test plan</Description>\n"
+                + "\t\t<PlanSettings>\n"
+                + "\t\t\t<RequiredDevice amount=\"" + 2 + "\"" + "/>\n"
+                + "\t\t</PlanSettings>\n"
+                + "\t<Entry uri=\""
+                + appPackageName
+                + "\"/>\n"
+                + "</TestPlan>";
+
+        final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName +"\" "
+                + " appPackageName=\"" + appPackageName + "\""
+                + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
+                + " runner=\"android.test.InstrumentationTestRunner\" >\n"
+                + " <Description>something extracted from java doc</Description>\n"
+                + " <TestSuite name=\"com.google.android.cts\"" + ">\n"
+                + "     <TestCase name=\"CtsTestHello\"" + " priority=\"mandatory\">\n"
+                + "         <Description>" + "something extracted from java doc"
+                + "         </Description>\n"
+                + "         <Test method=\"testHello\"" + " type=\"automatic\"" + "/>\n"
+                + "     </TestCase>\n"
+                + " </TestSuite>\n"
+                + "</TestPackage>\n";
+
+        HostConfig.getInstance().removeTestPacakges();
+        String planPath = HostConfig.getInstance().getPlanRepository()
+                .getPlanPath(mTmpPlanFileName);
+        createFile(testPlanConfigStr, planPath);
+
+        createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+        HostConfig.getInstance().loadTestPackages();
+
+        TestSession ts = TestSessionBuilder.getInstance().build(planPath);
+        assertEquals(2, ts.getNumOfRequiredDevices());
+
+        TestSessionLog tsl = ts.getSessionLog();
+        assertEquals(1, tsl.getTestPackages().size());
+
+        TestPackage testPackage = tsl.getTestPackages().iterator().next();
+        assertEquals(1, testPackage.getTestSuites().size());
+        assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
+        assertEquals("1.0", testPackage.getVersion());
+        assertEquals("Android 1.0", testPackage.getAndroidVersion());
+
+        TestSuite testSuite = testPackage.getTestSuites().iterator().next();
+        assertEquals(1, testSuite.getTestCases().size());
+        assertEquals("com.google.android.cts", testSuite.getFullName());
+
+        TestCase testCase = testSuite.getTestCases().iterator().next();
+        Test test = testCase.getTests().iterator().next();
+        assertEquals("testHello", test.getName());
+        assertEquals("automatic", test.getType());
+        assertEquals(TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED, test.getResultCode());
+
+        deleteTestPackage(mTestPackageBinaryName);
+    }
+
+    /**
+     * Test serializing the test plan.
+     */
+    public void testSerialize() throws Exception {
+        final String srcStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+            + "<TestPlan version=\"1.0\">\n"
+            + "<PlanSettings/>\n"
+            + "<Entry uri=\"com.google.android.cts.CtsTest\"/>\n"
+            + "</TestPlan>";
+
+        final String package1 = "com.google.android.cts.CtsTest";
+        ArrayList<String> packageNames = new ArrayList<String>();
+        packageNames.add(package1);
+        HashMap<String, ArrayList<String>> selectedResult =
+                      new HashMap<String, ArrayList<String>>();
+        selectedResult.put(package1, null);
+
+        HostConfig.getInstance().removeTestPacakges();
+        String planName = "plan_test";
+        String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
+        TestSessionBuilder.getInstance().serialize(planName, packageNames, selectedResult);
+
+        File file = new File(planPath);
+        assertTrue(file.exists());
+        assertTrue(file.isFile());
+
+        FileReader dstInput = new FileReader(file);
+        BufferedReader dstBufReader = new BufferedReader(dstInput);
+
+        char[] resChars = new char[1024];
+        dstBufReader.read(resChars);
+        assertEquals(srcStr, new String(resChars).trim());
+
+        dstBufReader.close();
+        deleteFile(planPath);
+
+    }
+
+    /**
+     * Test loading plan with sub suites.
+     */
+    public void testLoadPlanWithSubSuite() throws IOException,
+            ParserConfigurationException, SAXException, TestPlanNotFoundException,
+            TestNotFoundException,
+            TransformerFactoryConfigurationError, TransformerException, NoSuchAlgorithmException {
+
+        final String appPackageName = "com.google.android.cts";
+        final String fullName = mTestPackageBinaryName + ".CtsTest";
+        final String caseName = "CtsTestHello";
+        final String testName = "testHello";
+
+        final String descriptionConfigStr = "<TestPackage name=\"" + mTestPackageBinaryName + "\""
+                + " appPackageName=\"" + appPackageName + "\""
+                + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
+                + " runner=\"android.test.InstrumentationTestRunner\" >\n"
+                + "  <Description>something extracted from java doc</Description>\n"
+                + "  <TestSuite name=\"com.google\">\n"
+                + "     <TestCase name=\"CtsTestHello\" priority=\"mandatory\">\n"
+                + "         <Description>" + "something extracted from java doc"
+                + "         </Description>\n"
+                + "         <!-- Test Methods -->\n"
+                + "         <Test method=\"testHello\"" + " type=\"automatic\"" + "/>\n"
+                + "     </TestCase>\n"
+                + "     <TestSuite name=\"TestSuiteName\">\n"
+                + "         <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
+                + "             <Description>" + "something extracted from java doc"
+                + "             </Description>\n"
+                + "             <!-- Test Methods -->\n"
+                + "             <Test method=\"testName1\"" + " type=\"automatic\"" + "/>\n"
+                + "         </TestCase>\n"
+                + "     </TestSuite>\n"
+                + "  </TestSuite>\n"
+                + "</TestPackage>\n";
+
+        HostConfig.getInstance().removeTestPacakges();
+        createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+        HostConfig.getInstance().loadTestPackages();
+
+        ArrayList<String> packageNames = new ArrayList<String>();
+        packageNames.add(appPackageName);
+
+        HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
+        results.put(appPackageName, null);
+        String planName = "plan_test_excluding";
+        String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
+        TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
+
+        TestSession ts = TestSessionBuilder.getInstance().build(planPath);
+        assertEquals(1, ts.getNumOfRequiredDevices());
+
+        ts.getSessionLog().setStartTime(System.currentTimeMillis());
+        TestSessionLog tsl = ts.getSessionLog();
+        tsl.dumpToFile();
+        assertEquals(1, tsl.getTestPackages().size());
+
+        TestPackage testPackage = tsl.getTestPackages().iterator().next();
+        assertEquals(1, testPackage.getTestSuites().size());
+        assertEquals(mTestPackageBinaryName, testPackage.getAppBinaryName());
+        assertEquals("1.0", testPackage.getVersion());
+        assertEquals("Android 1.0", testPackage.getAndroidVersion());
+
+        TestSuite testSuite;
+        testSuite = testPackage.getTestSuites().iterator().next();
+        assertEquals(1, testSuite.getSubSuites().size());
+        assertEquals(1, testSuite.getTestCases().size());
+        assertEquals("com.google", testSuite.getFullName());
+
+        TestCase testCase = testSuite.getTestCases().iterator().next();
+        assertEquals(caseName, testCase.getName());
+        assertEquals("mandatory", testCase.getPriority());
+
+        Test test = testCase.getTests().iterator().next();
+        assertEquals("com.google.CtsTestHello#testHello", test.getFullName());
+        assertEquals("automatic", test.getType());
+        assertEquals(testName, test.getName());
+        assertEquals(TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED, test.getResultCode());
+
+        TestSuite subTestSuite;
+        subTestSuite = testSuite.getSubSuites().iterator().next();
+        assertEquals(1, subTestSuite.getTestCases().size());
+        assertEquals("com.google.TestSuiteName", subTestSuite.getFullName());
+        assertEquals("TestSuiteName", subTestSuite.getName());
+
+        testCase = subTestSuite.getTestCases().iterator().next();
+        assertEquals("TestCaseName", testCase.getName());
+        assertEquals("mandatory", testCase.getPriority());
+
+        test = testCase.getTests().iterator().next();
+        assertEquals("com.google.TestSuiteName.TestCaseName#testName1", test.getFullName());
+        assertEquals("automatic", test.getType());
+        assertEquals("testName1", test.getName());
+        assertEquals(TestSessionLog.CTS_RESULT_CODE_NOT_EXECUTED, test.getResultCode());
+
+        deleteTestPackage(mTestPackageBinaryName);
+    }
+
+    /**
+     * Test validating test controller.
+     */
+    public void testValidateTestController() {
+        String jarPath = "test.jar";
+        String packageName = "com.android.tests";
+        String className = "ConsoleTests";
+        String methodName = "testMethod";
+
+        TestController controller = new TestController(null, null, null, null);
+        assertFalse(controller.isValid());
+
+        controller = new TestController(jarPath, null, null, null);
+        assertFalse(controller.isValid());
+
+        controller = new TestController(null, packageName, null, null);
+        assertFalse(controller.isValid());
+
+        controller = new TestController(null, null, className, null);
+        assertFalse(controller.isValid());
+
+        controller = new TestController(null, null, null, methodName);
+        assertFalse(controller.isValid());
+
+        controller = new TestController("", "", "", "");
+        assertFalse(controller.isValid());
+
+        controller = new TestController("", packageName, className, methodName);
+        assertFalse(controller.isValid());
+
+        controller = new TestController(jarPath, "", className, methodName);
+        assertFalse(controller.isValid());
+
+        controller = new TestController(jarPath, packageName, "", methodName);
+        assertFalse(controller.isValid());
+
+        controller = new TestController(jarPath, packageName, className, "");
+        assertFalse(controller.isValid());
+
+        controller = new TestController(jarPath, packageName, className, methodName);
+        assertTrue(controller.isValid());
+    }
+
+    /**
+     * Test loading plan with test controller.
+     */
+    public void testLoadPlanWithTestController() throws IOException,
+            ParserConfigurationException, SAXException,
+            TestPlanNotFoundException, TestNotFoundException,
+            TransformerFactoryConfigurationError,
+            TransformerException, NoSuchAlgorithmException {
+
+        final String appPackageName = "com.google.android.cts";
+        final String jarPath = "test.jar";
+        final String controllerPackageName = "com.android.tests";
+        final String className = "ConsoleTests";
+        final String methodName = "testMethod";
+        final String description = controllerPackageName + "." + className
+                + Test.METHOD_SEPARATOR + methodName;
+
+        final String descriptionConfigStr = "<TestPackage name=\""
+                + mTestPackageBinaryName + "\" "
+                + " appPackageName=\"" + appPackageName + "\""
+                + " version=\"1.0\" AndroidFramework=\"Android 1.0\""
+                + " runner=\"android.test.InstrumentationTestRunner\" jarPath=\"" + jarPath
+                + "\">\n"
+                + "  <Description>something extracted from java doc</Description>\n"
+                + "  <TestSuite name=\"com.google\">\n"
+                + "     <TestCase name=\"TestCaseName\" priority=\"mandatory\">\n"
+                + "         <Description>"
+                + "something extracted from java doc" + "</Description>\n"
+                + "         <!-- Test Methods -->\n"
+                + "         <Test method=\"testName1\""
+                + " type=\"automatic\"" + " HostController=\""
+                + description + "\"" + "/>\n" + "     </TestCase>\n"
+                + "  </TestSuite>\n" + "</TestPackage>\n";
+
+        createTestPackage(descriptionConfigStr, mTestPackageBinaryName);
+        HostConfig.getInstance().loadTestPackages();
+
+        ArrayList<String> packageNames = new ArrayList<String>();
+        packageNames.add(appPackageName);
+
+        HashMap<String, ArrayList<String>> results = new HashMap<String, ArrayList<String>>();
+        results.put(appPackageName, null);
+
+        String planName = "plan_test";
+        String planPath = HostConfig.getInstance().getPlanRepository().getPlanPath(planName);
+        TestSessionBuilder.getInstance().serialize(planName, packageNames, results);
+
+        TestSession ts = TestSessionBuilder.getInstance().build(planPath);
+        ts.getSessionLog().setStartTime(System.currentTimeMillis());
+        TestSessionLog tsl = ts.getSessionLog();
+        TestPackage testPackage = tsl.getTestPackages().iterator().next();
+
+        assertEquals(jarPath, testPackage.getJarPath());
+
+        TestSuite testSuite;
+        testSuite = testPackage.getTestSuites().iterator().next();
+        TestCase testCase = testSuite.getTestCases().iterator().next();
+        Test test = testCase.getTests().iterator().next();
+        assertEquals(controllerPackageName, test.getTestController().getPackageName());
+        assertEquals(className, test.getTestController().getClassName());
+        assertEquals(methodName, test.getTestController().getMethodName());
+
+        deleteTestPackage(mTestPackageBinaryName);
+    }
+}
diff --git a/tools/plugin/Android.mk b/tools/plugin/Android.mk
new file mode 100644
index 0000000..0a05aed
--- /dev/null
+++ b/tools/plugin/Android.mk
@@ -0,0 +1,15 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+include $(call all-subdir-makefiles)
diff --git a/tools/plugin/DeviceInfoCollector/Android.mk b/tools/plugin/DeviceInfoCollector/Android.mk
new file mode 100644
index 0000000..3930fdf
--- /dev/null
+++ b/tools/plugin/DeviceInfoCollector/Android.mk
@@ -0,0 +1,27 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := tests
+
+LOCAL_SRC_FILES := $(call all-subdir-java-files)
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_PACKAGE_NAME := DeviceInfoCollector
+
+include $(BUILD_PACKAGE)
+
diff --git a/tools/plugin/DeviceInfoCollector/AndroidManifest.xml b/tools/plugin/DeviceInfoCollector/AndroidManifest.xml
new file mode 100644
index 0000000..7eacb1a
--- /dev/null
+++ b/tools/plugin/DeviceInfoCollector/AndroidManifest.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+* Copyright (C) 2008 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.tests.getinfo">
+
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+        <activity android:name="DeviceInfoActivity" android:label="DeviceInfoActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+        </activity>
+    </application>
+
+    <instrumentation android:name=".DeviceInfoInstrument"
+                     android:targetPackage="android.tests.getinfo"
+                     android:label="app to get info from device"/>
+
+</manifest>
diff --git a/tools/plugin/DeviceInfoCollector/src/android/tests/getinfo/DeviceInfoActivity.java b/tools/plugin/DeviceInfoCollector/src/android/tests/getinfo/DeviceInfoActivity.java
new file mode 100644
index 0000000..521e5b9
--- /dev/null
+++ b/tools/plugin/DeviceInfoCollector/src/android/tests/getinfo/DeviceInfoActivity.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.tests.getinfo;
+
+import java.util.Locale;
+
+import android.app.Activity;
+import android.app.ActivityThread;
+import android.content.res.Configuration;
+import android.os.Bundle;
+import android.widget.TextView;
+
+
+/**
+ * Collect device information on target device.
+ */
+public class DeviceInfoActivity extends Activity {
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        TextView view = new TextView(this);
+        view.setText("hello");
+        setContentView(view);
+        ActivityThread t = ActivityThread.currentActivityThread();
+        Configuration con = t.getConfiguration();
+        String touchScreen = null;
+        if (con.touchscreen == Configuration.TOUCHSCREEN_UNDEFINED) {
+            touchScreen = "undefined";
+        } else if (con.touchscreen == Configuration.TOUCHSCREEN_NOTOUCH) {
+            touchScreen = "notouch";
+        } else if (con.touchscreen == Configuration.TOUCHSCREEN_STYLUS) {
+            touchScreen = "stylus";
+        } else if (con.touchscreen == Configuration.TOUCHSCREEN_FINGER) {
+            touchScreen = "finger";
+        }
+        if (touchScreen != null) {
+            DeviceInfoInstrument.addResult(DeviceInfoInstrument.TOUCH_SCREEN,
+                    touchScreen);
+        }
+
+        String navigation = null;
+        if (con.navigation == Configuration.NAVIGATION_UNDEFINED) {
+            navigation = "undefined";
+        } else if (con.navigation == Configuration.NAVIGATION_NONAV) {
+            navigation = "nonav";
+        } else if (con.navigation == Configuration.NAVIGATION_DPAD) {
+            navigation = "drap";
+        } else if (con.navigation == Configuration.NAVIGATION_TRACKBALL) {
+            navigation = "trackball";
+        } else if (con.navigation == Configuration.NAVIGATION_WHEEL) {
+            navigation = "wheel";
+        }
+
+        if (navigation != null) {
+            DeviceInfoInstrument.addResult(DeviceInfoInstrument.NAVIGATION,
+                    navigation);
+        }
+
+        String keypad = null;
+        if (con.keyboard == Configuration.KEYBOARD_UNDEFINED) {
+            keypad = "undefined";
+        } else if (con.keyboard == Configuration.KEYBOARD_NOKEYS) {
+            keypad = "nokeys";
+        } else if (con.keyboard == Configuration.KEYBOARD_QWERTY) {
+            keypad = "qwerty";
+        } else if (con.keyboard == Configuration.KEYBOARD_12KEY) {
+            keypad = "12key";
+        }
+        if (keypad != null) {
+            DeviceInfoInstrument.addResult(DeviceInfoInstrument.KEYPAD, keypad);
+        }
+
+        String[] locales = getAssets().getLocales();
+        StringBuilder localeList = new StringBuilder();
+        for (String s : locales) {
+            if (s.length() == 0) { // default locale
+                localeList.append(new Locale("en", "US").toString());
+            } else {
+                localeList.append(s);
+            }
+            localeList.append(";");
+        }
+        DeviceInfoInstrument.addResult(DeviceInfoInstrument.LOCALES,
+                localeList.toString());
+
+        synchronized (DeviceInfoInstrument.sSync) {
+            DeviceInfoInstrument.sSync.notify();
+            DeviceInfoInstrument.sIsFinishActivity = true;
+        }
+    }
+}
diff --git a/tools/plugin/DeviceInfoCollector/src/android/tests/getinfo/DeviceInfoInstrument.java b/tools/plugin/DeviceInfoCollector/src/android/tests/getinfo/DeviceInfoInstrument.java
new file mode 100644
index 0000000..c6bc762
--- /dev/null
+++ b/tools/plugin/DeviceInfoCollector/src/android/tests/getinfo/DeviceInfoInstrument.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2008 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.tests.getinfo;
+
+import android.app.Activity;
+import android.app.Instrumentation;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import android.os.Bundle;
+import android.util.DisplayMetrics;
+import android.view.Display;
+import android.view.WindowManager;
+
+public class DeviceInfoInstrument extends Instrumentation {
+    private static final String PHONE_NUMBER = "phoneNumber";
+    public static final String LOCALES = "locales";
+    private static final String IMSI = "imsi";
+    private static final String IMEI = "imei";
+    private static final String NETWORK = "network";
+    public static final String KEYPAD = "keypad";
+    public static final String NAVIGATION = "navigation";
+    public static final String TOUCH_SCREEN = "touch_screen";
+    private static final String SCREEN_Y_DENSITY = "screen_Y_density";
+    private static final String SCREEN_X_DENSITY = "screen_X_density";
+    private static final String SCREEN_DENSITY = "screen_density";
+    private static final String SCREEN_HEIGHT = "screen_height";
+    private static final String SCREEN_WIDTH = "screen_width";
+    private static final String VERSION_SDK = "version_sdk";
+    private static final String VERSION_RELEASE = "version_release";
+    private static final String VERSION_INCREMENTAL = "version_incremental";
+    private static final String BUILD_FINGERPRINT = "build_fingerprint";
+    private static final String BUILD_TAGS = "build_tags";
+    private static final String BUILD_TYPE = "build_type";
+    private static final String BUILD_MODEL = "build_model";
+    private static final String BUILD_BRAND = "build_brand";
+    private static final String BUILD_BOARD = "build_board";
+    private static final String BUILD_DEVICE = "build_device";
+    private static final String PRODUCT_NAME = "product_name";
+    private static final String BUILD_ID = "build_id";
+    private static Bundle mResults = new Bundle();
+
+    public static boolean sIsFinishActivity = false;
+    public static Object sSync = new Object();
+
+    public DeviceInfoInstrument() {
+        super();
+    }
+
+    @Override
+    public void onCreate(Bundle arguments) {
+        start();
+    }
+
+    @Override
+    public void onStart() {
+
+        addResult(BUILD_ID, Build.ID);
+        addResult(PRODUCT_NAME, Build.PRODUCT);
+        addResult(BUILD_DEVICE, Build.DEVICE);
+        addResult(BUILD_BOARD, Build.BOARD);
+        addResult(BUILD_BRAND, Build.BRAND);
+        addResult(BUILD_MODEL, Build.MODEL);
+        addResult(BUILD_TYPE, Build.TYPE);
+        addResult(BUILD_TAGS, Build.TAGS);
+        addResult(BUILD_FINGERPRINT, Build.FINGERPRINT);
+
+        addResult(VERSION_INCREMENTAL, Build.VERSION.INCREMENTAL);
+        addResult(VERSION_RELEASE, Build.VERSION.RELEASE);
+        addResult(VERSION_SDK, Build.VERSION.SDK);
+
+        DisplayMetrics metrics = new DisplayMetrics();
+        WindowManager wm = (WindowManager) getContext().getSystemService(
+                Context.WINDOW_SERVICE);
+        Display d = wm.getDefaultDisplay();
+        d.getMetrics(metrics);
+        addResult(SCREEN_WIDTH, metrics.widthPixels);
+        addResult(SCREEN_HEIGHT, metrics.heightPixels);
+        addResult(SCREEN_DENSITY, metrics.density);
+        addResult(SCREEN_X_DENSITY, metrics.xdpi);
+        addResult(SCREEN_Y_DENSITY, metrics.ydpi);
+
+        Intent intent = new Intent();
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        intent.setClass(this.getContext(), DeviceInfoActivity.class);
+
+        startActivitySync(intent);
+        synchronized (sSync) {
+            if (!sIsFinishActivity) {
+                try {
+                    sSync.wait();
+                } catch (InterruptedException e) {
+                }
+            }
+        }
+
+        // network
+        String network = android.telephony.TelephonyManager.getDefault().getNetworkOperatorName();
+        addResult(NETWORK, network);
+
+        // imei
+        String imei = android.telephony.TelephonyManager.getDefault().getDeviceId();
+        addResult(IMEI, imei);
+
+        // imsi
+        String imsi = android.telephony.TelephonyManager.getDefault().getSubscriberId();
+        addResult(IMSI, imsi);
+
+        // phone number
+        String phoneNumber = android.telephony.TelephonyManager.getDefault().getLine1Number();
+        addResult(PHONE_NUMBER, phoneNumber);
+
+        finish(Activity.RESULT_OK, mResults);
+    }
+
+    /**
+     * Add string result.
+     *
+     * @param key the string of the key name.
+     * @param value string value.
+     */
+    static void addResult(final String key, final String value){
+        mResults.putString(key, value);
+    }
+
+    /**
+     * Add integer result.
+     *
+     * @param key the string of the key name.
+     * @param value integer value.
+     */
+    private void addResult(final String key, final int value){
+        mResults.putInt(key, value);
+    }
+
+    /**
+     * Add float result.
+     *
+     * @param key the string of the key name.
+     * @param value float value.
+     */
+    private void addResult(final String key, final float value){
+        mResults.putFloat(key, value);
+    }
+}
diff --git a/tools/signature-tools/Android.mk b/tools/signature-tools/Android.mk
new file mode 100644
index 0000000..cf9e053
--- /dev/null
+++ b/tools/signature-tools/Android.mk
@@ -0,0 +1,66 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH := $(call my-dir)
+
+# signature-tools java library
+# ============================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under,src)
+LOCAL_JAVA_RESOURCE_DIRS := templates
+
+LOCAL_MODULE := signature-tools
+LOCAL_JAVA_LIBRARIES := dx dex-tools
+LOCAL_STATIC_JAVA_LIBRARIES := stringtemplate antlr-2.7.7
+LOCAL_CLASSPATH := $(HOST_JDK_TOOLS_JAR)
+
+include $(BUILD_HOST_JAVA_LIBRARY)
+
+# prebuilt stringtemplate.jar
+# ============================================================
+include $(CLEAR_VARS)
+
+LOCAL_PREBUILT_JAVA_LIBRARIES := stringtemplate:lib/stringtemplate.jar
+
+include $(BUILD_HOST_PREBUILT)
+
+# prebuilt antlr-2.7.7.jar
+# ============================================================
+include $(CLEAR_VARS)
+
+LOCAL_PREBUILT_JAVA_LIBRARIES := antlr-2.7.7:lib/antlr-2.7.7.jar
+
+include $(BUILD_HOST_PREBUILT)
+
+# signature-tool script
+# ============================================================
+include $(CLEAR_VARS)
+
+LOCAL_PREBUILT_EXECUTABLES := sig
+include $(BUILD_HOST_PREBUILT)
+
+# signature-create script
+# ============================================================
+include $(CLEAR_VARS)
+
+LOCAL_PREBUILT_EXECUTABLES := sig-create
+include $(BUILD_HOST_PREBUILT)
+
+# signature-check script
+# ============================================================
+include $(CLEAR_VARS)
+
+LOCAL_PREBUILT_EXECUTABLES := sig-check
+include $(BUILD_HOST_PREBUILT)
diff --git a/tools/signature-tools/README.txt b/tools/signature-tools/README.txt
new file mode 100644
index 0000000..b4198b9
--- /dev/null
+++ b/tools/signature-tools/README.txt
@@ -0,0 +1,55 @@
+__signature-tools__
+
+This project contains the source code and tests for API signature comparison tools.
+It consists roughly of five parts:
+
+#Signature model : A generic model to represent the structure of an API
+
+#Converters      : A dex -> signature model converter (utilizing the dex-tools parser)
+                   A java source -> signature model converter (utilizing the doclet tools)
+
+#Delta model     : A model to represent differences between two signature models
+    
+#Comparator      : Put two signature models into the comparator and you get a delta model
+
+#Report engine   : Translates a delta model to a html output based on templates (utilizing the StringTemplate framework)
+
+
+Since this folder contains a .project file, it can be imported directly into eclipse as a java project.
+
+Feel free to improve!
+
+_Structure_
+
+dex.reader
+  |
+  src : source code
+  |  |
+  |	 signature :  the driver classes
+  |  		|
+  |     compare : the comparator code
+  |     |   |
+  |     |   model : the delta model
+  |     |
+  |     converter : the converters
+  |     |
+  |     io : common io interfaces
+  |     |   |
+  |     |   html : html report generator
+  |     |
+  |     model : signature model
+  |
+  test : source code of the test suite
+  |
+  templates : templates for html output generation
+  |
+  launches : eclipse launches for the tools
+  |
+  lib : required libraries
+  |
+  spec : various input files to try the tool 
+  |
+  README.txt : you are here
+  |
+  TODO.txt   : tasks which are still open
+ 
diff --git a/tools/signature-tools/TODO.txt b/tools/signature-tools/TODO.txt
new file mode 100644
index 0000000..fd20800
--- /dev/null
+++ b/tools/signature-tools/TODO.txt
@@ -0,0 +1,5 @@
+__Todo__
+
+Add more complex tests
+Add more spec
+Add "plugin system" to enable different loader / differ / report engines. This can be simple as register the class name of the available loaders in a property file
diff --git a/tools/signature-tools/lib/antlr-2.7.7.jar b/tools/signature-tools/lib/antlr-2.7.7.jar
new file mode 100644
index 0000000..5e5f14b
--- /dev/null
+++ b/tools/signature-tools/lib/antlr-2.7.7.jar
Binary files differ
diff --git a/tools/signature-tools/lib/stringtemplate.jar b/tools/signature-tools/lib/stringtemplate.jar
new file mode 100644
index 0000000..8e41531
--- /dev/null
+++ b/tools/signature-tools/lib/stringtemplate.jar
Binary files differ
diff --git a/tools/signature-tools/sig b/tools/signature-tools/sig
new file mode 100755
index 0000000..19b57fa
--- /dev/null
+++ b/tools/signature-tools/sig
@@ -0,0 +1,47 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Set up prog to be the path of this script, including following symlinks,
+# and set up progdir to be the fully-qualified pathname of its directory.
+
+prog="$0"
+while [ -h "${prog}" ]; do
+    newProg=`/bin/ls -ld "${prog}"`
+    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
+    if expr "x${newProg}" : 'x/' >/dev/null; then
+        prog="${newProg}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${newProg}"
+    fi
+done
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+libdir=`dirname $progdir`/framework
+
+javaOpts=""
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "$1" : '-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    shift
+done
+
+exec java $javaOpts -classpath $libdir/signature-tools.jar:$libdir/dex-tools.jar:$libdir/stringtemplate.jar:$libdir/antlr-2.7.7.jar signature.Main "$@"
\ No newline at end of file
diff --git a/tools/signature-tools/sig-check b/tools/signature-tools/sig-check
new file mode 100755
index 0000000..0c1cbce
--- /dev/null
+++ b/tools/signature-tools/sig-check
@@ -0,0 +1,114 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Set up prog to be the path of this script, including following symlinks,
+# and set up progdir to be the fully-qualified pathname of its directory.
+
+prog="$0"
+while [ -h "${prog}" ]; do
+    newProg=`/bin/ls -ld "${prog}"`
+    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
+    if expr "x${newProg}" : 'x/' >/dev/null; then
+        prog="${newProg}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${newProg}"
+    fi
+done
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+libdir=`dirname $progdir`/framework
+classpath=$libdir/signature-tools.jar:$libdir/dex-tools.jar:\
+$libdir/stringtemplate.jar:$libdir/antlr-2.7.7.jar
+
+javaOpts=""
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "$1" : '-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    shift
+done
+
+COREDEX=${ANDROID_PRODUCT_OUT}/../../common/obj/JAVA_LIBRARIES/core_intermediates/classes.dex
+
+if [ ! -f ${COREDEX} ]; then
+    echo ERROR: $COREDEX not found
+    exit -1;
+fi
+
+sig --compare \
+--from sig ${ANDROID_BUILD_TOP}/cts/tools/signature-tools/spec/android.spec \
+--name android cupcake reference \
+--to dex ${COREDEX} \
+--name Android 1.0 \(current build\) \
+--out ${ANDROID_BUILD_TOP}/out/delta \
+--packages \
+java.beans \
+java.io \
+java.lang \
+java.lang.annotation \
+java.lang.ref \
+java.lang.reflect \
+java.math \
+java.net \
+java.nio \
+java.nio.channels \
+java.nio.channels.spi \
+java.nio.charset \
+java.nio.charset.spi \
+java.security \
+java.security.acl \
+java.security.cert \
+java.security.interfaces \
+java.security.spec \
+java.sql \
+java.text \
+java.util \
+java.util.concurrent \
+java.util.concurrent.atomic \
+java.util.concurrent.locks \
+java.util.jar \
+java.util.logging \
+java.util.prefs \
+java.util.regex \
+java.util.zip \
+javax.crypto \
+javax.crypto.interfaces \
+javax.crypto.spec \
+javax.imageio \
+javax.imageio.event \
+javax.imageio.metadata \
+javax.imageio.plugins.bmp \
+javax.imageio.plugins.jpeg \
+javax.imageio.spi \
+javax.imageio.stream \
+javax.net \
+javax.net.ssl \
+javax.security.auth \
+javax.security.auth.callback \
+javax.security.auth.login \
+javax.security.auth.x500 \
+javax.security.cert \
+javax.sql \
+javax.xml.parsers \
+org.w3c.dom \
+org.xml.sax \
+org.xml.sax.ext \
+org.xml.sax.helpers
diff --git a/tools/signature-tools/sig-create b/tools/signature-tools/sig-create
new file mode 100755
index 0000000..4049e69
--- /dev/null
+++ b/tools/signature-tools/sig-create
@@ -0,0 +1,111 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Set up prog to be the path of this script, including following symlinks,
+# and set up progdir to be the fully-qualified pathname of its directory.
+
+prog="$0"
+while [ -h "${prog}" ]; do
+    newProg=`/bin/ls -ld "${prog}"`
+    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
+    if expr "x${newProg}" : 'x/' >/dev/null; then
+        prog="${newProg}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${newProg}"
+    fi
+done
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+libdir=`dirname $progdir`/framework
+classpath=$libdir/signature-tools.jar:$libdir/dex-tools.jar:\
+$libdir/stringtemplate.jar:$libdir/antlr-2.7.7.jar
+
+javaOpts=""
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "$1" : '-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    shift
+done
+
+COREDEX=${ANDROID_PRODUCT_OUT}/../../common/obj/JAVA_LIBRARIES/core_intermediates/classes.dex
+
+if [ ! -f ${COREDEX} ]; then
+    echo ERROR: $COREDEX not found
+    exit -1;
+fi
+
+sig --create dex ${COREDEX} \
+--out ${ANDROID_BUILD_TOP}/out/dex \
+--name cts_dex_1.0.1 \
+--packages           \
+java.beans \
+java.io \
+java.lang \
+java.lang.annotation \
+java.lang.ref \
+java.lang.reflect \
+java.math \
+java.net \
+java.nio \
+java.nio.channels \
+java.nio.channels.spi \
+java.nio.charset \
+java.nio.charset.spi \
+java.security \
+java.security.acl \
+java.security.cert \
+java.security.interfaces \
+java.security.spec \
+java.sql \
+java.text \
+java.util \
+java.util.concurrent \
+java.util.concurrent.atomic \
+java.util.concurrent.locks \
+java.util.jar \
+java.util.logging \
+java.util.prefs \
+java.util.regex \
+java.util.zip \
+javax.crypto \
+javax.crypto.interfaces \
+javax.crypto.spec \
+javax.imageio \
+javax.imageio.event \
+javax.imageio.metadata \
+javax.imageio.plugins.bmp \
+javax.imageio.plugins.jpeg \
+javax.imageio.spi \
+javax.imageio.stream \
+javax.net \
+javax.net.ssl \
+javax.security.auth \
+javax.security.auth.callback \
+javax.security.auth.login \
+javax.security.auth.x500 \
+javax.security.cert \
+javax.sql \
+javax.xml.parsers \
+org.w3c.dom \
+org.xml.sax \
+org.xml.sax.ext \
+org.xml.sax.helpers
\ No newline at end of file
diff --git a/tools/signature-tools/spec/android.spec b/tools/signature-tools/spec/android.spec
new file mode 100644
index 0000000..fbbf53a
--- /dev/null
+++ b/tools/signature-tools/spec/android.spec
Binary files differ
diff --git a/tools/signature-tools/src/signature/Main.java b/tools/signature-tools/src/signature/Main.java
new file mode 100644
index 0000000..5b1c9ff
--- /dev/null
+++ b/tools/signature-tools/src/signature/Main.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature;
+
+/**
+ * The main entry point for the signature tool. If invoked with
+ * <code>--create</code> the call is delegated to
+ * {@link signature.converter.Main}. If invoked with <code>--compare</code> the
+ * call is delegated to {@link signature.compare.Main}.
+ * 
+ * @see signature.converter.Main
+ * @see signature.compare.Main
+ */
+public class Main {
+
+    private static final String USAGE_MESSAGE = "usage:\n"
+            + "  sig --create (doclet | dex) sourcefiles --out directory"
+            + " --name <name> --packages packageName{ packageName}\n"
+            + "  sig --compare --from=(doclet | dex | sig) <sourcefiles>"
+            + " --name <name> --to=(doclet | dex | sig) <sourcefiles>"
+            + " --name <name> --out directory"
+            + " --packages packageName{ packageName}\n  sig --help";
+
+    /**
+     * This class is uninstantiable.
+     */
+    private Main() {
+        // This space intentionally left blank.
+    }
+
+    /**
+     * Run!
+     */
+    public static void main(String[] args) {
+        boolean gotCmd = false;
+        boolean showUsage = false;
+
+        try {
+            for (int i = 0; i < args.length; i++) {
+                String arg = args[i];
+                if (arg.equals("--") || !arg.startsWith("--")) {
+                    gotCmd = false;
+                    showUsage = true;
+                    break;
+                }
+
+                gotCmd = true;
+                if (arg.equals("--create")) {
+                    signature.converter.Main.main(without(args, i));
+                    break;
+                } else if (arg.equals("--compare")) {
+                    signature.compare.Main.main(without(args, i));
+                    break;
+                } else if (arg.equals("--version")) {
+                    version();
+                    break;
+                } else if (arg.equals("--help")) {
+                    showUsage = true;
+                    break;
+                } else {
+                    gotCmd = false;
+                }
+            }
+        } catch (UsageException ex) {
+            showUsage = true;
+        } catch (RuntimeException ex) {
+            System.err.println("\nUNEXPECTED TOP-LEVEL EXCEPTION:");
+            ex.printStackTrace();
+            System.exit(2);
+        } catch (Throwable ex) {
+            System.err.println("\nUNEXPECTED TOP-LEVEL ERROR:");
+            ex.printStackTrace();
+            System.exit(3);
+        }
+
+        if (!gotCmd) {
+            System.err.println("error: no command specified");
+            showUsage = true;
+        }
+
+        if (showUsage) {
+            usage();
+            System.exit(1);
+        }
+    }
+
+    /**
+     * Prints the version message.
+     */
+    private static void version() {
+        System.err.println("android sigtools version " + Version.VERSION);
+        System.exit(0);
+    }
+
+    /**
+     * Prints the usage message.
+     */
+    private static void usage() {
+        System.err.println(USAGE_MESSAGE);
+    }
+
+    /**
+     * Returns a copy of the given argument array, but without the indicated
+     * element.
+     * 
+     * @param orig
+     *            non-null; original array
+     * @param n
+     *            which element to omit
+     * @return non-null; new array
+     */
+    private static String[] without(String[] orig, int n) {
+        int len = orig.length - 1;
+        String[] newa = new String[len];
+        System.arraycopy(orig, 0, newa, 0, n);
+        System.arraycopy(orig, n + 1, newa, n, len - n);
+        return newa;
+    }
+
+}
diff --git a/tools/signature-tools/src/signature/UsageException.java b/tools/signature-tools/src/signature/UsageException.java
new file mode 100644
index 0000000..6cdf9cf
--- /dev/null
+++ b/tools/signature-tools/src/signature/UsageException.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature;
+
+/**
+ * Simple exception class used to communicate that the command-line tool should
+ * print the usage message.
+ */
+@SuppressWarnings("serial")
+public class UsageException extends RuntimeException {
+    // This space intentionally left blank.
+}
diff --git a/tools/signature-tools/src/signature/Version.java b/tools/signature-tools/src/signature/Version.java
new file mode 100644
index 0000000..d20e81f
--- /dev/null
+++ b/tools/signature-tools/src/signature/Version.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature;
+
+/**
+ * {@code Version} defines the VERSION constant of the signature tools.
+ */
+public class Version {
+    /**
+     * The program version of the signature tools.
+     */
+    public static final String VERSION = "0.1";
+}
diff --git a/tools/signature-tools/src/signature/compare/ApiComparator.java b/tools/signature-tools/src/signature/compare/ApiComparator.java
new file mode 100644
index 0000000..9232d2d
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/ApiComparator.java
@@ -0,0 +1,1705 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare;
+
+import signature.compare.model.IAnnotationDelta;
+import signature.compare.model.IAnnotationElementDelta;
+import signature.compare.model.IAnnotationFieldDelta;
+import signature.compare.model.IApiDelta;
+import signature.compare.model.IClassDefinitionDelta;
+import signature.compare.model.IConstructorDelta;
+import signature.compare.model.IDelta;
+import signature.compare.model.IEnumConstantDelta;
+import signature.compare.model.IFieldDelta;
+import signature.compare.model.IGenericDeclarationDelta;
+import signature.compare.model.IMethodDelta;
+import signature.compare.model.IModifierDelta;
+import signature.compare.model.IPackageDelta;
+import signature.compare.model.IParameterDelta;
+import signature.compare.model.IParameterizedTypeDelta;
+import signature.compare.model.IPrimitiveTypeDelta;
+import signature.compare.model.ITypeReferenceDelta;
+import signature.compare.model.ITypeVariableDefinitionDelta;
+import signature.compare.model.IUpperBoundsDelta;
+import signature.compare.model.IValueDelta;
+import signature.compare.model.IWildcardTypeDelta;
+import signature.compare.model.impl.SigAnnotationDelta;
+import signature.compare.model.impl.SigAnnotationElementDelta;
+import signature.compare.model.impl.SigAnnotationFieldDelta;
+import signature.compare.model.impl.SigApiDelta;
+import signature.compare.model.impl.SigArrayTypeDelta;
+import signature.compare.model.impl.SigClassDefinitionDelta;
+import signature.compare.model.impl.SigClassReferenceDelta;
+import signature.compare.model.impl.SigConstructorDelta;
+import signature.compare.model.impl.SigEnumConstantDelta;
+import signature.compare.model.impl.SigFieldDelta;
+import signature.compare.model.impl.SigGenericDeclarationDelta;
+import signature.compare.model.impl.SigMethodDelta;
+import signature.compare.model.impl.SigModifierDelta;
+import signature.compare.model.impl.SigPackageDelta;
+import signature.compare.model.impl.SigParameterDelta;
+import signature.compare.model.impl.SigParameterizedTypeDelta;
+import signature.compare.model.impl.SigPrimitiveTypeDelta;
+import signature.compare.model.impl.SigTypeDelta;
+import signature.compare.model.impl.SigTypeVariableDefinitionDelta;
+import signature.compare.model.impl.SigTypeVariableReferenceDelta;
+import signature.compare.model.impl.SigUpperBoundsDelta;
+import signature.compare.model.impl.SigValueDelta;
+import signature.compare.model.impl.SigWildcardTypeDelta;
+import signature.compare.model.subst.ClassProjection;
+import signature.compare.model.subst.ViewpointAdapter;
+import signature.model.IAnnotation;
+import signature.model.IAnnotationElement;
+import signature.model.IAnnotationField;
+import signature.model.IApi;
+import signature.model.IArrayType;
+import signature.model.IClassDefinition;
+import signature.model.IClassReference;
+import signature.model.IConstructor;
+import signature.model.IEnumConstant;
+import signature.model.IExecutableMember;
+import signature.model.IField;
+import signature.model.IGenericDeclaration;
+import signature.model.IMethod;
+import signature.model.IPackage;
+import signature.model.IParameter;
+import signature.model.IParameterizedType;
+import signature.model.IPrimitiveType;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+import signature.model.ITypeVariableReference;
+import signature.model.IWildcardType;
+import signature.model.Kind;
+import signature.model.Modifier;
+import signature.model.impl.SigAnnotationElement;
+import signature.model.impl.SigArrayType;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * {@code ApiComparator} takes two signature models as input and creates a delta
+ * model describing the differences between those.
+ */
+public class ApiComparator implements IApiComparator {
+
+    public IApiDelta compare(IApi from, IApi to) {
+        assert from.getVisibility() == to.getVisibility();
+
+        Set<IPackage> fromPackages = from.getPackages();
+        Set<IPackage> toPackages = to.getPackages();
+
+        Set<IPackageDelta> packageDeltas = compareSets(fromPackages,
+                toPackages, new SigComparator<IPackage, IPackageDelta>() {
+                    public IPackageDelta createChangedDelta(IPackage from,
+                            IPackage to) {
+                        return comparePackage(from, to);
+                    }
+
+                    public IPackageDelta createAddRemoveDelta(IPackage from,
+                            IPackage to) {
+                        return new SigPackageDelta(from, to);
+                    }
+
+                    public boolean considerEqualElement(IPackage from,
+                            IPackage to) {
+                        return from.getName().equals(to.getName());
+                    }
+                });
+
+        SigApiDelta delta = null;
+        if (packageDeltas != null) {
+            delta = new SigApiDelta(from, to);
+            delta.setPackageDeltas(packageDeltas);
+        }
+        return delta;
+    }
+
+    private IPackageDelta comparePackage(IPackage from, IPackage to) {
+        assert from.getName().equals(to.getName());
+
+        Set<IClassDefinition> fromClasses = from.getClasses();
+        Set<IClassDefinition> toClasses = to.getClasses();
+
+        Set<IClassDefinitionDelta> classDeltas = compareSets(fromClasses,
+                toClasses,
+                new SigComparator<IClassDefinition, IClassDefinitionDelta>() {
+                    public boolean considerEqualElement(IClassDefinition from,
+                            IClassDefinition to) {
+                        return sameClassDefinition(from, to);
+                    }
+
+                    public IClassDefinitionDelta createChangedDelta(
+                            IClassDefinition from, IClassDefinition to) {
+                        return compareClass(from, to);
+                    }
+
+                    public IClassDefinitionDelta createAddRemoveDelta(
+                            IClassDefinition from, IClassDefinition to) {
+                        return new SigClassDefinitionDelta(from, to);
+                    }
+                });
+
+        SigPackageDelta delta = null;
+        if (classDeltas != null) {
+            delta = new SigPackageDelta(from, to);
+            delta.setClassDeltas(classDeltas);
+        }
+
+        // Annotations
+        Set<IAnnotationDelta> annotationDeltas = compareAnnotations(from
+                .getAnnotations(), to.getAnnotations());
+        if (annotationDeltas != null) {
+            if (delta != null) {
+                delta = new SigPackageDelta(from, to);
+            }
+            delta.setAnnotationDeltas(annotationDeltas);
+        }
+        return delta;
+    }
+
+    private IClassDefinitionDelta compareClass(IClassDefinition from,
+            IClassDefinition to) {
+        assert from.getKind() == to.getKind();
+        assert from.getName().equals(to.getName());
+        assert from.getPackageName().equals(to.getPackageName());
+
+        SigClassDefinitionDelta classDelta = null;
+
+        // modifiers
+        Set<IModifierDelta> modifierDeltas = compareModifiers(from
+                .getModifiers(), to.getModifiers());
+        if (modifierDeltas != null) {
+            if (classDelta == null) {
+                classDelta = new SigClassDefinitionDelta(from, to);
+            }
+            classDelta.setModifierDeltas(modifierDeltas);
+        }
+
+        // super class
+        ITypeReferenceDelta<?> superTypeDelta = compareType(from
+                .getSuperClass(), to.getSuperClass(), false);
+        if (superTypeDelta != null) {
+            if (classDelta == null) {
+                classDelta = new SigClassDefinitionDelta(from, to);
+            }
+            classDelta.setSuperClassDelta(superTypeDelta);
+        }
+
+        // interfaces
+        Set<ITypeReferenceDelta<?>> interfaceDeltas = compareInterfaces(from,
+                to);
+        if (interfaceDeltas != null) {
+            if (classDelta == null) {
+                classDelta = new SigClassDefinitionDelta(from, to);
+            }
+            classDelta.setInterfaceDeltas(interfaceDeltas);
+        }
+
+        // type variables
+        Set<ITypeVariableDefinitionDelta> typeVariableDeltas =
+                compareTypeVariableSequence(from.getTypeParameters(),
+                        to.getTypeParameters());
+        if (typeVariableDeltas != null) {
+            if (classDelta == null) {
+                classDelta = new SigClassDefinitionDelta(from, to);
+            }
+            classDelta.setTypeVariableDeltas(typeVariableDeltas);
+        }
+
+        // constructors
+        Set<IConstructorDelta> constructorDeltas = compareConstructors(from
+                .getConstructors(), to.getConstructors());
+        if (constructorDeltas != null) {
+            if (classDelta == null) {
+                classDelta = new SigClassDefinitionDelta(from, to);
+            }
+            classDelta.setConstructorDeltas(constructorDeltas);
+        }
+
+        // methods
+        Set<IMethodDelta> methodDeltas = compareMethods(from, to);
+        if (methodDeltas != null) {
+            if (classDelta == null) {
+                classDelta = new SigClassDefinitionDelta(from, to);
+            }
+            classDelta.setMethodDeltas(methodDeltas);
+        }
+
+        // fields
+        Set<IFieldDelta> fieldDeltas = compareFields(from.getFields(), to
+                .getFields());
+        if (fieldDeltas != null) {
+            if (classDelta == null) {
+                classDelta = new SigClassDefinitionDelta(from, to);
+            }
+            classDelta.setFieldDeltas(fieldDeltas);
+        }
+
+        // enum constants
+        if (from.getKind() == Kind.ENUM) {
+            Set<IEnumConstantDelta> enumDeltas = compareEnumConstants(from
+                    .getEnumConstants(), to.getEnumConstants());
+            if (enumDeltas != null) {
+                if (classDelta == null) {
+                    classDelta = new SigClassDefinitionDelta(from, to);
+                }
+                classDelta.setEnumConstantDeltas(enumDeltas);
+            }
+        } else if (from.getKind() == Kind.ANNOTATION) {
+            Set<IAnnotationFieldDelta> annotationFieldDeltas =
+                    compareAnnotationFields(from.getAnnotationFields(),
+                            to.getAnnotationFields());
+            if (annotationFieldDeltas != null) {
+                if (classDelta == null) {
+                    classDelta = new SigClassDefinitionDelta(from, to);
+                }
+                classDelta.setAnnotationFieldDeltas(annotationFieldDeltas);
+            }
+        }
+
+        Set<IAnnotationDelta> annotationDeltas = compareAnnotations(from
+                .getAnnotations(), to.getAnnotations());
+        if (annotationDeltas != null) {
+            if (classDelta == null) {
+                classDelta = new SigClassDefinitionDelta(from, to);
+            }
+            classDelta.setAnnotationDeltas(annotationDeltas);
+        }
+        return classDelta;
+    }
+
+    private Set<ITypeReferenceDelta<?>> compareInterfaces(
+            IClassDefinition from, IClassDefinition to) {
+        Set<ITypeReference> fromClosure = getInterfaceClosure(from);
+        Set<ITypeReference> toClosure = getInterfaceClosure(to);
+
+        Set<ITypeReference> fromInterfaces = from.getInterfaces();
+        Set<ITypeReference> toInterfaces = to.getInterfaces();
+
+        Set<ITypeReferenceDelta<?>> deltas =
+                new HashSet<ITypeReferenceDelta<?>>();
+
+        // check whether all from interfaces are directly or indirectly
+        // implemented by the to method
+        for (ITypeReference type : fromInterfaces) {
+            if (!containsType(type, toInterfaces)) {
+                if (!(containsType(type, toClosure) /*
+                                                     * && !containsType(type,
+                                                     * toInterfaces)
+                                                     */)) {
+                    deltas.add(new SigTypeDelta<ITypeReference>(type, null));
+                }
+            }
+        }
+
+        // check whether all interfaces to are directly or indirectly
+        // implemented by the from method
+        for (ITypeReference type : toInterfaces) {
+            if (!containsType(type, fromInterfaces)) {
+                if (!(containsType(type, fromClosure) /*
+                                                       * && !containsType(type,
+                                                       * fromInterfaces)
+                                                       */)) {
+                    deltas.add(new SigTypeDelta<ITypeReference>(null, type));
+                }
+            }
+        }
+        return deltas.isEmpty() ? null : deltas;
+    }
+
+
+    private boolean containsType(ITypeReference type,
+            Set<ITypeReference> setOfTypes) {
+        for (ITypeReference other : setOfTypes) {
+            if (compareType(type, other, false) == null) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private Set<ITypeReference> getInterfaceClosure(IClassDefinition clazz) {
+        Set<ITypeReference> closure = new HashSet<ITypeReference>();
+        collectInterfaceClosure(ViewpointAdapter.getReferenceTo(clazz),
+                closure);
+        return closure;
+    }
+
+    private void collectInterfaceClosure(ITypeReference clazz,
+            Set<ITypeReference> closure) {
+
+        IClassDefinition classDefinition = getClassDefinition(clazz);
+        Set<ITypeReference> interfaces = classDefinition.getInterfaces();
+        if (interfaces == null) {
+            return;
+        }
+        for (ITypeReference interfaze : interfaces) {
+            closure.add(interfaze);
+        }
+
+        ITypeReference superclass = classDefinition.getSuperClass();
+        if (superclass != null) {
+            if (superclass instanceof IParameterizedType) {
+                collectInterfaceClosure(((IParameterizedType) superclass)
+                        .getRawType(), closure);
+            } else {
+                collectInterfaceClosure(superclass, closure);
+            }
+        }
+        for (ITypeReference interfaze : interfaces) {
+            if (interfaze instanceof IParameterizedType) {
+                collectInterfaceClosure(((IParameterizedType) interfaze)
+                        .getRawType(), closure);
+            } else {
+                collectInterfaceClosure(interfaze, closure);
+            }
+        }
+    }
+
+    private Set<IAnnotationDelta> compareAnnotations(Set<IAnnotation> from,
+            Set<IAnnotation> to) {
+        return compareSets(from, to,
+                new SigComparator<IAnnotation, IAnnotationDelta>() {
+                    public IAnnotationDelta createAddRemoveDelta(
+                            IAnnotation from, IAnnotation to) {
+                        return new SigAnnotationDelta(from, to);
+                    }
+
+                    public boolean considerEqualElement(IAnnotation from,
+                            IAnnotation to) {
+                        return sameClassDefinition(from.getType()
+                                .getClassDefinition(), to.getType()
+                                .getClassDefinition());
+                    }
+
+                    public IAnnotationDelta createChangedDelta(
+                            IAnnotation from, IAnnotation to) {
+                        return compareAnnotation(from, to);
+                    }
+                });
+    }
+
+    private Set<IAnnotationFieldDelta> compareAnnotationFields(
+            Set<IAnnotationField> from, Set<IAnnotationField> to) {
+        return compareSets(from, to,
+                new SigComparator<IAnnotationField, IAnnotationFieldDelta>() {
+                    public boolean considerEqualElement(IAnnotationField from,
+                            IAnnotationField to) {
+                        return from.getName().equals(to.getName());
+                    }
+
+                    public IAnnotationFieldDelta createAddRemoveDelta(
+                            IAnnotationField from, IAnnotationField to) {
+                        return new SigAnnotationFieldDelta(from, to);
+                    }
+
+                    public IAnnotationFieldDelta createChangedDelta(
+                            IAnnotationField from, IAnnotationField to) {
+                        return compareAnnotationField(from, to);
+                    }
+                });
+    }
+
+    private Set<IEnumConstantDelta> compareEnumConstants(
+            Set<IEnumConstant> from, Set<IEnumConstant> to) {
+        return compareSets(from, to,
+                new SigComparator<IEnumConstant, IEnumConstantDelta>() {
+                    public boolean considerEqualElement(IEnumConstant from,
+                            IEnumConstant to) {
+                        return from.getName().equals(to.getName());
+                    }
+
+                    public IEnumConstantDelta createAddRemoveDelta(
+                            IEnumConstant from, IEnumConstant to) {
+                        return new SigEnumConstantDelta(from, to);
+                    }
+
+                    public IEnumConstantDelta createChangedDelta(
+                            IEnumConstant from, IEnumConstant to) {
+                        return compareEnumConstant(from, to);
+                    }
+                });
+    }
+
+    private Set<IFieldDelta> compareFields(Set<IField> from, Set<IField> to) {
+        return compareSets(from, to, new SigComparator<IField, IFieldDelta>() {
+            public boolean considerEqualElement(IField from, IField to) {
+                return from.getName().equals(to.getName());
+            }
+
+            public IFieldDelta createAddRemoveDelta(IField from, IField to) {
+                return new SigFieldDelta(from, to);
+            }
+
+            public IFieldDelta createChangedDelta(IField from, IField to) {
+                return compareField(from, to);
+            }
+        });
+    }
+
+    private Set<IMethodDelta> compareMethods(IClassDefinition from,
+            IClassDefinition to) {
+        assert from != null;
+        assert to != null;
+
+        Set<IMethod> toMethods = new HashSet<IMethod>(to.getMethods());
+        Set<IMethod> toClosure = getMethodClosure(to);
+        Set<IMethod> fromMethods = new HashSet<IMethod>(from.getMethods());
+        Set<IMethod> fromClosure = getMethodClosure(from);
+
+        Set<IMethodDelta> deltas = new HashSet<IMethodDelta>();
+
+        for (IMethod method : fromMethods) {
+            IMethod compatibleMethod = findCompatibleMethod(method, toMethods);
+            if (compatibleMethod == null) {
+                compatibleMethod = findCompatibleMethod(method, toClosure);
+                if (compatibleMethod == null) {
+                    deltas.add(new SigMethodDelta(method, null));
+                }
+            }
+
+            if (compatibleMethod != null) {
+                IMethodDelta delta = compareMethod(method, compatibleMethod);
+                if (delta != null) {
+                    deltas.add(delta);
+                }
+            }
+        }
+
+        for (IMethod method : toMethods) {
+            IMethod compatibleMethod = findCompatibleMethod(method, fromMethods);
+            if (compatibleMethod == null) {
+                compatibleMethod = findCompatibleMethod(method, fromClosure);
+                if (compatibleMethod == null) {
+                    deltas.add(new SigMethodDelta(null, method));
+                }
+            }
+        }
+        return deltas.isEmpty() ? null : deltas;
+    }
+
+    private IMethod findCompatibleMethod(IMethod method, Set<IMethod> set) {
+        for (IMethod methodFromSet : set) {
+            if (equalsSignature(method, methodFromSet)) {
+                return methodFromSet;
+            }
+        }
+        return null;
+    }
+
+
+    private Set<IMethod> getMethodClosure(IClassDefinition clazz) {
+        Set<IMethod> closure = new HashSet<IMethod>();
+        collectMethods(new ClassProjection(clazz,
+                new HashMap<ITypeVariableDefinition, ITypeReference>()),
+                closure);
+        return closure;
+    }
+
+    private void collectMethods(IClassDefinition clazz, Set<IMethod> closure) {
+        if (clazz == null) {
+            return;
+        }
+        if (clazz.getMethods() != null) {
+            closure.addAll(clazz.getMethods());
+        }
+        if (clazz.getSuperClass() != null) {
+            collectMethods(getClassDefinition(clazz.getSuperClass()), closure);
+        }
+        if (clazz.getInterfaces() != null) {
+            for (ITypeReference interfaze : clazz.getInterfaces()) {
+                collectMethods(getClassDefinition(interfaze), closure);
+            }
+        }
+    }
+
+    private Set<IConstructorDelta> compareConstructors(Set<IConstructor> from,
+            Set<IConstructor> to) {
+        return compareSets(from, to,
+                new SigComparator<IConstructor, IConstructorDelta>() {
+                    public boolean considerEqualElement(IConstructor from,
+                            IConstructor to) {
+                        return equalsSignature(from, to);
+                    }
+
+                    public IConstructorDelta createAddRemoveDelta(
+                            IConstructor from, IConstructor to) {
+                        return new SigConstructorDelta(from, to);
+                    }
+
+                    public IConstructorDelta createChangedDelta(
+                            IConstructor from, IConstructor to) {
+                        return compareConstructor(from, to);
+                    }
+                });
+    }
+
+    // compares names and parameter types
+    private boolean equalsSignature(IExecutableMember from,
+            IExecutableMember to) {
+        if (from.getName().equals(to.getName())) {
+            return compareTypeSequence(getParameterList(from.getParameters()),
+                    getParameterList(to.getParameters()), true) == null;
+        }
+        return false;
+    }
+
+    private List<ITypeReference> getParameterList(List<IParameter> parameters) {
+        List<ITypeReference> parameterTypes = new LinkedList<ITypeReference>();
+        for (IParameter parameter : parameters) {
+            parameterTypes.add(parameter.getType());
+        }
+        return parameterTypes;
+    }
+
+    private IAnnotationDelta compareAnnotation(IAnnotation from,
+            IAnnotation to) {
+        assert sameClassDefinition(from.getType().getClassDefinition(), to
+                .getType().getClassDefinition());
+
+        Set<IAnnotationElement> fromAnnotationElement =
+                getNormalizedAnnotationElements(from);
+        Set<IAnnotationElement> toAnnotationElement =
+                getNormalizedAnnotationElements(to);
+
+        Set<IAnnotationElementDelta> annotationElementDeltas =
+                compareAnnotationElements(
+                        fromAnnotationElement, toAnnotationElement);
+        SigAnnotationDelta delta = null;
+
+        if (annotationElementDeltas != null) {
+            delta = new SigAnnotationDelta(from, to);
+            delta.setAnnotationElementDeltas(annotationElementDeltas);
+        }
+        return delta;
+    }
+
+    /**
+     * Returns the annotation elements for the given annotation. The returned
+     * set contains all declared elements plus all elements with default values.
+     * 
+     * @param annotation
+     *            the annotation to return the elements for
+     * @return the default enriched annotation elements
+     */
+    private Set<IAnnotationElement> getNormalizedAnnotationElements(
+            IAnnotation annotation) {
+        Set<IAnnotationElement> elements = new HashSet<IAnnotationElement>(
+                annotation.getElements());
+
+        Set<String> names = new HashSet<String>();
+        for (IAnnotationElement annotationElement : elements) {
+            names.add(annotationElement.getDeclaringField().getName());
+        }
+
+        for (IAnnotationField field : annotation.getType().getClassDefinition()
+                .getAnnotationFields()) {
+            if (!names.contains(field.getName())) {
+                SigAnnotationElement sigAnnotationElement =
+                        new SigAnnotationElement();
+                sigAnnotationElement.setDeclaringField(field);
+                sigAnnotationElement.setValue(field.getDefaultValue());
+                elements.add(sigAnnotationElement);
+            }
+        }
+        return elements;
+    }
+
+    private Set<IAnnotationElementDelta> compareAnnotationElements(
+            Set<IAnnotationElement> from, Set<IAnnotationElement> to) {
+        return compareSets(from, to,
+                new SigComparator<IAnnotationElement, IAnnotationElementDelta>() {
+                    public boolean considerEqualElement(
+                            IAnnotationElement from, IAnnotationElement to) {
+                        return from.getDeclaringField().getName().equals(
+                                to.getDeclaringField().getName());
+                    }
+
+                    public IAnnotationElementDelta createAddRemoveDelta(
+                            IAnnotationElement from, IAnnotationElement to) {
+                        return new SigAnnotationElementDelta(from, to);
+                    }
+
+                    public IAnnotationElementDelta createChangedDelta(
+                            IAnnotationElement from, IAnnotationElement to) {
+                        return compareAnnotationElement(from, to);
+                    }
+                });
+    }
+
+    private IAnnotationElementDelta compareAnnotationElement(
+            IAnnotationElement from, IAnnotationElement to) {
+        SigAnnotationElementDelta delta = null;
+        SigValueDelta valueDelta = compareValue(from.getValue(), to.getValue());
+
+        if (valueDelta != null) {
+            delta = new SigAnnotationElementDelta(from, to);
+            delta.setValueDelta(valueDelta);
+        }
+        return delta;
+    }
+
+    /**
+     * Removes the {@link Modifier#ABSTRACT} modifier.
+     */
+    private Set<Modifier> prepareMethodModifiers(IMethod method) {
+        Set<Modifier> modifierCopy = new HashSet<Modifier>(method
+                .getModifiers());
+        modifierCopy.remove(Modifier.ABSTRACT);
+        return modifierCopy;
+    }
+
+    private IMethodDelta compareMethod(IMethod from, IMethod to) {
+        assert from != null && to != null;
+
+        SigMethodDelta methodDelta = null;
+        Set<IModifierDelta> modiferDeltas = compareModifiers(
+                prepareMethodModifiers(from), prepareMethodModifiers(to));
+        if (modiferDeltas != null) {
+            methodDelta = new SigMethodDelta(from, to);
+            methodDelta.setModifierDeltas(modiferDeltas);
+        }
+
+        Set<IParameterDelta> parameterDeltas = compareParameterSequence(from
+                .getParameters(), to.getParameters());
+        if (parameterDeltas != null) {
+            if (methodDelta == null) {
+                methodDelta = new SigMethodDelta(from, to);
+            }
+            methodDelta.setParameterDeltas(parameterDeltas);
+        }
+
+        Set<IAnnotationDelta> annotationDeltas = compareAnnotations(from
+                .getAnnotations(), to.getAnnotations());
+        if (annotationDeltas != null) {
+            if (methodDelta == null) {
+                methodDelta = new SigMethodDelta(from, to);
+            }
+            methodDelta.setAnnotationDeltas(annotationDeltas);
+        }
+
+        Set<ITypeVariableDefinitionDelta> typeParameterDeltas =
+                compareTypeVariableSequence(from.getTypeParameters(),
+                        to.getTypeParameters());
+        if (typeParameterDeltas != null) {
+            if (methodDelta == null) {
+                methodDelta = new SigMethodDelta(from, to);
+            }
+            methodDelta.setTypeVariableDeltas(typeParameterDeltas);
+        }
+
+        Set<ITypeReferenceDelta<?>> exceptionDeltas = compareTypes(
+                normalizeExceptions(from.getExceptions()),
+                normalizeExceptions(to.getExceptions()));
+        if (exceptionDeltas != null) {
+            if (methodDelta == null) {
+                methodDelta = new SigMethodDelta(from, to);
+            }
+            methodDelta.setExceptionDeltas(exceptionDeltas);
+        }
+
+        ITypeReferenceDelta<?> returnTypeDelta = compareType(from
+                .getReturnType(), to.getReturnType(), false);
+        if (returnTypeDelta != null) {
+            if (methodDelta == null) {
+                methodDelta = new SigMethodDelta(from, to);
+            }
+            methodDelta.setReturnTypeDelta(returnTypeDelta);
+        }
+
+        return methodDelta;
+    }
+
+    // remove runtime exceptions,
+    // remove sub types of containing exception
+    private Set<ITypeReference> normalizeExceptions(
+            Set<ITypeReference> exceptions) {
+        Set<ITypeReference> exceptionCopy = new HashSet<ITypeReference>(
+                exceptions);
+
+        Iterator<ITypeReference> iterator = exceptionCopy.iterator();
+        while (iterator.hasNext()) {
+            ITypeReference exception = iterator.next();
+            if (isRuntimeExceptionOrErrorSubtype(exception)) {
+                iterator.remove();
+            }
+        }
+        exceptionCopy = removeSpecializations(exceptionCopy);
+        return exceptionCopy;
+    }
+
+    private Set<ITypeReference> removeSpecializations(
+            Set<ITypeReference> exceptions) {
+        Set<ITypeReference> exceptionCopy = new HashSet<ITypeReference>(
+                exceptions);
+        for (ITypeReference type : exceptions) {
+            Iterator<ITypeReference> it = exceptionCopy.iterator();
+            while (it.hasNext()) {
+                ITypeReference subType = it.next();
+                if (isSuperClass(getClassDefinition(type),
+                        getClassDefinition(subType))) {
+                    it.remove();
+                }
+            }
+        }
+        return exceptionCopy;
+    }
+
+    /**
+     * Returns true if superC is a super class of subC.
+     */
+    private boolean isSuperClass(IClassDefinition superC,
+            IClassDefinition subC) {
+        if (superC == null || subC == null) {
+            return false;
+        }
+
+        if (subC.getSuperClass() == null) {
+            return false;
+        } else {
+            if (getClassDefinition(subC.getSuperClass()).equals(superC)) {
+                return true;
+            } else {
+                return isSuperClass(superC, getClassDefinition(subC
+                        .getSuperClass()));
+            }
+        }
+    }
+
+    private boolean isSuperInterface(IClassDefinition superClass,
+            IClassDefinition subClass) {
+        if (superClass == null || subClass == null) {
+            return false;
+        }
+
+        if (subClass.getInterfaces() == null) {
+            return false;
+        } else {
+            if (getClassDefinitions(subClass.getInterfaces()).contains(
+                    superClass)) {
+                return true;
+            } else {
+                for (ITypeReference subType : subClass.getInterfaces()) {
+                    if (isSuperInterface(superClass,
+                            getClassDefinition(subType))) {
+                        return true;
+                    }
+                }
+                return false;
+            }
+        }
+    }
+
+    private Set<IClassDefinition> getClassDefinitions(
+            Set<ITypeReference> references) {
+        Set<IClassDefinition> definitions = new HashSet<IClassDefinition>();
+        for (ITypeReference ref : references) {
+            definitions.add(getClassDefinition(ref));
+        }
+        return definitions;
+    }
+
+    /**
+     * Returns null if type is not one of:
+     * <ul>
+     * <li>IClassReference</li>
+     * <li>IParameterizedType</li>
+     * </ul>
+     */
+    private IClassDefinition getClassDefinition(ITypeReference type) {
+        assert type != null;
+
+        IClassDefinition returnValue = null;
+        if (type instanceof IClassReference) {
+            returnValue = ((IClassReference) type).getClassDefinition();
+        } else if (type instanceof IParameterizedType) {
+            returnValue = ((IParameterizedType) type).getRawType()
+                    .getClassDefinition();
+        }
+        return returnValue;
+    }
+
+    private boolean isRuntimeExceptionOrErrorSubtype(ITypeReference exception) {
+
+        IClassDefinition clazz = getClassDefinition(exception);
+        if (clazz != null) {
+            if (isRuntimeExceptionOrError(clazz)) {
+                return true;
+            } else if (clazz.getSuperClass() != null) {
+                return isRuntimeExceptionOrErrorSubtype(clazz.getSuperClass());
+            } else {
+                return false;
+            }
+        }
+        return false;
+    }
+
+    private boolean isRuntimeExceptionOrError(IClassDefinition exception) {
+        if (exception == null) {
+            return false;
+        }
+        String packageName = exception.getPackageName();
+        String className = exception.getName();
+
+        if (packageName != null && className != null
+                && "java.lang".equals(packageName)) {
+            return "RuntimeException".equals(className)
+                    || "Error".equals(className);
+        }
+        return false;
+    }
+
+    private IConstructorDelta compareConstructor(IConstructor from,
+            IConstructor to) {
+        SigConstructorDelta constructorDelta = null;
+        Set<IModifierDelta> modiferDeltas = compareModifiers(from
+                .getModifiers(), to.getModifiers());
+        if (modiferDeltas != null) {
+            constructorDelta = new SigConstructorDelta(from, to);
+            constructorDelta.setModifierDeltas(modiferDeltas);
+        }
+
+        Set<IParameterDelta> parameterDeltas = compareParameterSequence(from
+                .getParameters(), to.getParameters());
+        if (parameterDeltas != null) {
+            if (constructorDelta == null) {
+                constructorDelta = new SigConstructorDelta(from, to);
+            }
+            constructorDelta.setParameterDeltas(parameterDeltas);
+        }
+
+        Set<IAnnotationDelta> annotationDeltas = compareAnnotations(from
+                .getAnnotations(), to.getAnnotations());
+        if (annotationDeltas != null) {
+            if (constructorDelta == null) {
+                constructorDelta = new SigConstructorDelta(from, to);
+            }
+            constructorDelta.setAnnotationDeltas(annotationDeltas);
+        }
+
+        Set<ITypeVariableDefinitionDelta> typeParameterDeltas =
+                compareTypeVariableSequence(from.getTypeParameters(),
+                        to.getTypeParameters());
+        if (typeParameterDeltas != null) {
+            if (constructorDelta == null) {
+                constructorDelta = new SigConstructorDelta(from, to);
+            }
+            constructorDelta.setTypeVariableDeltas(typeParameterDeltas);
+        }
+
+        Set<ITypeReferenceDelta<?>> exceptionDeltas = compareTypes(
+                normalizeExceptions(from.getExceptions()),
+                normalizeExceptions(to.getExceptions()));
+        if (exceptionDeltas != null) {
+            if (constructorDelta == null) {
+                constructorDelta = new SigConstructorDelta(from, to);
+            }
+            constructorDelta.setExceptionDeltas(exceptionDeltas);
+        }
+        return constructorDelta;
+    }
+
+    private Set<IParameterDelta> compareParameterSequence(
+            List<IParameter> from, List<IParameter> to) {
+        assert from.size() == to.size();
+        Set<IParameterDelta> deltas = new HashSet<IParameterDelta>();
+        Iterator<IParameter> fromIterator = from.iterator();
+        Iterator<IParameter> toIterator = to.iterator();
+        while (fromIterator.hasNext() && toIterator.hasNext()) {
+            IParameterDelta delta = compareParameter(fromIterator.next(),
+                    toIterator.next());
+            if (delta != null) {
+                deltas.add(delta);
+            }
+        }
+        return deltas.isEmpty() ? null : deltas;
+    }
+
+    private IParameterDelta compareParameter(IParameter from, IParameter to) {
+        SigParameterDelta delta = null;
+        ITypeReferenceDelta<?> typeDelta = compareType(from.getType(), to
+                .getType(), false);
+        if (typeDelta != null) {
+            if (delta == null) {
+                delta = new SigParameterDelta(from, to);
+            }
+            delta.setTypeDelta(typeDelta);
+        }
+
+        Set<IAnnotationDelta> annotationDeltas = compareAnnotations(from
+                .getAnnotations(), to.getAnnotations());
+        if (annotationDeltas != null) {
+            if (delta == null) {
+                delta = new SigParameterDelta(from, to);
+            }
+            delta.setAnnotationDeltas(annotationDeltas);
+        }
+        return delta;
+    }
+
+    private Set<ITypeVariableDefinitionDelta> compareTypeVariableSequence(
+            List<ITypeVariableDefinition> from,
+            List<ITypeVariableDefinition> to) {
+        Set<ITypeVariableDefinitionDelta> deltas =
+                new HashSet<ITypeVariableDefinitionDelta>();
+        if (from.size() != to.size()) {
+            for (ITypeVariableDefinition fromVariable : from) {
+                deltas.add(new SigTypeVariableDefinitionDelta(fromVariable,
+                        null));
+            }
+            for (ITypeVariableDefinition toVariable : to) {
+                deltas
+                        .add(new SigTypeVariableDefinitionDelta(null,
+                                toVariable));
+            }
+        }
+
+        Iterator<ITypeVariableDefinition> fromIterator = from.iterator();
+        Iterator<ITypeVariableDefinition> toIterator = to.iterator();
+        while (fromIterator.hasNext() && toIterator.hasNext()) {
+            ITypeVariableDefinitionDelta delta = compareTypeVariableDefinition(
+                    fromIterator.next(), toIterator.next());
+            if (delta != null) {
+                deltas.add(delta);
+            }
+        }
+        return deltas.isEmpty() ? null : deltas;
+    }
+
+    private ITypeVariableDefinitionDelta compareTypeVariableDefinition(
+            ITypeVariableDefinition from, ITypeVariableDefinition to) {
+        IGenericDeclarationDelta declarationDelta = compareGenericDeclaration(
+                from, to);
+
+        if (declarationDelta != null) {
+            SigTypeVariableDefinitionDelta delta =
+                    new SigTypeVariableDefinitionDelta(from, to);
+            delta.setGenericDeclarationDelta(declarationDelta);
+            return delta;
+        }
+        IUpperBoundsDelta upperBoundDelta = compareUpperBounds(from
+                .getUpperBounds(), to.getUpperBounds());
+
+        if (upperBoundDelta != null) {
+            SigTypeVariableDefinitionDelta delta =
+                    new SigTypeVariableDefinitionDelta(from, to);
+            delta.setUpperBoundsDelta(upperBoundDelta);
+            return delta;
+        }
+        return null;
+    }
+
+    private ITypeReferenceDelta<ITypeVariableReference> compareTypeVariableReference(
+            ITypeVariableReference from, ITypeVariableReference to) {
+        IGenericDeclarationDelta declarationDelta = compareGenericDeclaration(
+                from.getTypeVariableDefinition(), to
+                        .getTypeVariableDefinition());
+        if (declarationDelta != null) {
+            SigTypeVariableReferenceDelta delta =
+                    new SigTypeVariableReferenceDelta(from, to);
+            delta.setGenericDeclarationDelta(declarationDelta);
+            return delta;
+        }
+        return null;
+    }
+
+    private Set<IModifierDelta> compareModifiers(Set<Modifier> from,
+            Set<Modifier> to) {
+        return compareSets(from, to,
+                new SigComparator<Modifier, IModifierDelta>() {
+                    public boolean considerEqualElement(Modifier from,
+                            Modifier to) {
+                        return from.equals(to);
+                    }
+
+                    public IModifierDelta createAddRemoveDelta(Modifier from,
+                            Modifier to) {
+                        return new SigModifierDelta(from, to);
+                    }
+
+                    public IModifierDelta createChangedDelta(Modifier from,
+                            Modifier to) {
+                        return null;
+                    }
+                });
+    }
+
+
+    private IFieldDelta compareField(IField from, IField to) {
+        SigFieldDelta fieldDelta = null;
+
+        Set<IModifierDelta> modiferDeltas = compareModifiers(from
+                .getModifiers(), to.getModifiers());
+        if (modiferDeltas != null) {
+            fieldDelta = new SigFieldDelta(from, to);
+            fieldDelta.setModifierDeltas(modiferDeltas);
+        }
+
+        Set<IAnnotationDelta> annotationDeltas = compareAnnotations(from
+                .getAnnotations(), to.getAnnotations());
+        if (annotationDeltas != null) {
+            if (fieldDelta == null) {
+                fieldDelta = new SigFieldDelta(from, to);
+            }
+            fieldDelta.setAnnotationDeltas(annotationDeltas);
+        }
+
+        ITypeReferenceDelta<?> typeDelta = compareType(from.getType(), to
+                .getType(), false);
+        if (typeDelta != null) {
+            if (fieldDelta == null) {
+                fieldDelta = new SigFieldDelta(from, to);
+            }
+            fieldDelta.setTypeDelta(typeDelta);
+        }
+        return fieldDelta;
+    }
+
+    private IEnumConstantDelta compareEnumConstant(IEnumConstant from,
+            IEnumConstant to) {
+        SigEnumConstantDelta enumConstantDelta = null;
+
+        Set<IModifierDelta> modiferDeltas = compareModifiers(from
+                .getModifiers(), to.getModifiers());
+        if (modiferDeltas != null) {
+            enumConstantDelta = new SigEnumConstantDelta(from, to);
+            enumConstantDelta.setModifierDeltas(modiferDeltas);
+        }
+
+        Set<IAnnotationDelta> annotationDeltas = compareAnnotations(from
+                .getAnnotations(), to.getAnnotations());
+        if (annotationDeltas != null) {
+            if (enumConstantDelta == null) {
+                enumConstantDelta = new SigEnumConstantDelta(from, to);
+            }
+            enumConstantDelta.setAnnotationDeltas(annotationDeltas);
+        }
+
+        ITypeReferenceDelta<?> typeDelta = compareType(from.getType(), to
+                .getType(), false);
+        if (typeDelta != null) {
+            if (enumConstantDelta == null) {
+                enumConstantDelta = new SigEnumConstantDelta(from, to);
+            }
+            enumConstantDelta.setTypeDelta(typeDelta);
+        }
+
+        // FIXME ordinal not supported in dex
+        // ValueDelta ordinalDelta = compareValue(from.getOrdinal(),
+        // to.getOrdinal());
+        // if (ordinalDelta != null) {
+        // if (enumConstantDelta == null) {
+        // enumConstantDelta = new SigEnumConstantDelta(from, to);
+        // }
+        // enumConstantDelta.setOrdinalDelta(ordinalDelta);
+        // }
+
+        return enumConstantDelta;
+    }
+
+    private IAnnotationFieldDelta compareAnnotationField(IAnnotationField from,
+            IAnnotationField to) {
+        SigAnnotationFieldDelta annotationFieldDelta = null;
+
+        Set<IModifierDelta> modiferDeltas = compareModifiers(from
+                .getModifiers(), to.getModifiers());
+        if (modiferDeltas != null) {
+            annotationFieldDelta = new SigAnnotationFieldDelta(from, to);
+            annotationFieldDelta.setModifierDeltas(modiferDeltas);
+        }
+
+        Set<IAnnotationDelta> annotationDeltas = compareAnnotations(from
+                .getAnnotations(), to.getAnnotations());
+        if (annotationDeltas != null) {
+            if (annotationFieldDelta == null) {
+                annotationFieldDelta = new SigAnnotationFieldDelta(from, to);
+            }
+            annotationFieldDelta.setAnnotationDeltas(annotationDeltas);
+        }
+
+        ITypeReferenceDelta<?> typeDelta = compareType(from.getType(), to
+                .getType(), false);
+        if (typeDelta != null) {
+            if (annotationFieldDelta == null) {
+                annotationFieldDelta = new SigAnnotationFieldDelta(from, to);
+            }
+            annotationFieldDelta.setTypeDelta(typeDelta);
+        }
+
+        IValueDelta defaultValueDelta = compareValue(from.getDefaultValue(), to
+                .getDefaultValue());
+        if (defaultValueDelta != null) {
+            if (annotationFieldDelta == null) {
+                annotationFieldDelta = new SigAnnotationFieldDelta(from, to);
+            }
+            annotationFieldDelta.setDefaultValueDelta(defaultValueDelta);
+        }
+
+        return annotationFieldDelta;
+    }
+
+    private SigValueDelta compareValue(Object from, Object to) {
+        // same value
+        if (from == null && to == null) {
+            return null;
+        }
+
+        // one of both is null and other is not
+        if (from == null || to == null) {
+            return new SigValueDelta(from, to);
+        }
+
+        SigValueDelta delta = null;
+        // different types
+        if (from.getClass() == to.getClass()) {
+            if (from.getClass().isArray()) {
+                Object[] fromArray = (Object[]) from;
+                Object[] toArray = (Object[]) from;
+                if (!Arrays.equals(fromArray, toArray)) {
+                    delta = new SigValueDelta(from, to);
+                }
+            } else if (from instanceof IEnumConstant) {
+                IEnumConstantDelta enumConstantDelta = compareEnumConstant(
+                        (IEnumConstant) from, (IEnumConstant) to);
+                if (enumConstantDelta != null) {
+                    delta = new SigValueDelta(from, to);
+                }
+            } else if (from instanceof IAnnotation) {
+                IAnnotationDelta annotationDelta = compareAnnotation(
+                        (IAnnotation) from, (IAnnotation) to);
+                if (annotationDelta != null) {
+                    delta = new SigValueDelta(from, to);
+                }
+            } else if (from instanceof IField) {
+                IFieldDelta fieldDelta = compareField((IField) from,
+                        (IField) to);
+                if (fieldDelta != null) {
+                    delta = new SigValueDelta(from, to);
+                }
+            } else if (from instanceof ITypeReference) {
+                ITypeReferenceDelta<? extends ITypeReference> typeDelta =
+                        compareType((ITypeReference) from, (ITypeReference) to,
+                                false);
+                if (typeDelta != null) {
+                    delta = new SigValueDelta(from, to);
+                }
+            } else if (!from.equals(to)) {
+                delta = new SigValueDelta(from, to);
+            }
+
+        } else if (!(from == null && to == null)) {
+            delta = new SigValueDelta(from, to);
+        }
+        return delta;
+    }
+
+    private boolean considerEqualTypes(ITypeReference from, ITypeReference to) {
+        assert from != null && to != null;
+
+        if (implementInterface(from, to, IPrimitiveType.class)) {
+            return comparePrimitiveType((IPrimitiveType) from,
+                    (IPrimitiveType) to) == null;
+        }
+        if (implementInterface(from, to, IClassReference.class)) {
+            return sameClassDefinition(((IClassReference) from)
+                    .getClassDefinition(), ((IClassReference) to)
+                    .getClassDefinition());
+        }
+        if (implementInterface(from, to, IArrayType.class)) {
+            return considerEqualTypes(((IArrayType) from).getComponentType(),
+                    ((IArrayType) to).getComponentType());
+        }
+        if (implementInterface(from, to, IParameterizedType.class)) {
+            return compareClassReference(((IParameterizedType) from)
+                    .getRawType(), ((IParameterizedType) to)
+                    .getRawType()) == null;
+        }
+        if (implementInterface(from, to, ITypeVariableReference.class)) {
+            return compareTypeVariableReference((ITypeVariableReference) from,
+                    (ITypeVariableReference) to) == null;
+        }
+
+        return false;
+    }
+
+    private Set<ITypeReference> fromComparison = new HashSet<ITypeReference>();
+    private Set<ITypeReference> toComparison = new HashSet<ITypeReference>();
+
+
+    private boolean areInComparison(ITypeReference from, ITypeReference to) {
+        return fromComparison.contains(from) && toComparison.contains(to);
+    }
+
+    private void markInComparison(ITypeReference from, ITypeReference to) {
+        fromComparison.add(from);
+        toComparison.add(to);
+    }
+
+    private void markFinishedComparison(ITypeReference from,
+            ITypeReference to) {
+        fromComparison.remove(from);
+        toComparison.remove(to);
+    }
+
+    private ITypeReferenceDelta<? extends ITypeReference> compareType(
+            ITypeReference from, ITypeReference to, boolean acceptErasedTypes) {
+
+        if (from == null && to == null) {
+            return null;
+        }
+        if ((from == null && to != null) || (from != null && to == null)) {
+            return new SigTypeDelta<ITypeReference>(from, to);
+        }
+        if (areInComparison(from, to)) {
+            return null;
+        }
+        try {
+            markInComparison(from, to);
+
+            if (implementInterface(from, to, IPrimitiveType.class)) {
+                return comparePrimitiveType((IPrimitiveType) from,
+                        (IPrimitiveType) to);
+            }
+            if (implementInterface(from, to, IClassReference.class)) {
+                return compareClassReference((IClassReference) from,
+                        (IClassReference) to);
+            }
+            if (implementInterface(from, to, IArrayType.class)) {
+                return compareArrayType((IArrayType) from, (IArrayType) to);
+            }
+            if (implementInterface(from, to, IParameterizedType.class)) {
+                return compareParameterizedType((IParameterizedType) from,
+                        (IParameterizedType) to, acceptErasedTypes);
+            }
+            if (implementInterface(from, to, ITypeVariableReference.class)) {
+                return compareTypeVariableReference(
+                        (ITypeVariableReference) from,
+                        (ITypeVariableReference) to);
+            }
+            if (implementInterface(from, to, IWildcardType.class)) {
+                return compareWildcardType((IWildcardType) from,
+                        (IWildcardType) to);
+            }
+
+            if (acceptErasedTypes) {
+                if (isGeneric(from) && !isGeneric(to)) {
+                    return compareType(getErasedType(from), to, false);
+                }
+
+                if (!isGeneric(from) && isGeneric(to)) {
+                    return compareType(from, getErasedType(to), false);
+                }
+            }
+            return new SigTypeDelta<ITypeReference>(from, to);
+        } finally {
+            markFinishedComparison(from, to);
+        }
+    }
+
+    private boolean isGeneric(ITypeReference reference) {
+        if (reference instanceof IParameterizedType
+                || reference instanceof ITypeVariableReference
+                || reference instanceof IWildcardType) {
+            return true;
+        }
+        if (reference instanceof IArrayType) {
+            return isGeneric(((IArrayType) reference).getComponentType());
+        }
+        return false;
+    }
+
+    private ITypeReference getErasedType(ITypeReference reference) {
+
+        if (reference instanceof IParameterizedType) {
+            return ((IParameterizedType) reference).getRawType();
+        }
+        if (reference instanceof ITypeVariableReference) {
+            ITypeVariableDefinition typeVariableDefinition =
+                    ((ITypeVariableReference) reference)
+                            .getTypeVariableDefinition();
+            return getErasedType(
+                    typeVariableDefinition.getUpperBounds().get(0));
+        }
+        if (reference instanceof IWildcardType) {
+            return getErasedType(((IWildcardType) reference).getUpperBounds()
+                    .get(0));
+        }
+        if (reference instanceof IArrayType) {
+            // FIXME implement with erasure projection?
+            return new SigArrayType(getErasedType(((IArrayType) reference)
+                    .getComponentType()));
+        }
+        if (reference instanceof IPrimitiveType) {
+            return reference;
+        }
+        if (reference instanceof IClassReference) {
+            return reference;
+        }
+        throw new IllegalArgumentException("Unexpected type: " + reference);
+    }
+
+    private boolean implementInterface(ITypeReference from, ITypeReference to,
+            Class<?> check) {
+        return check.isAssignableFrom(from.getClass())
+                && check.isAssignableFrom(to.getClass());
+    }
+
+    private IWildcardTypeDelta compareWildcardType(IWildcardType from,
+            IWildcardType to) {
+        SigWildcardTypeDelta delta = null;
+
+        ITypeReference fromLowerBound = from.getLowerBound();
+        ITypeReference toLowerBound = to.getLowerBound();
+
+        ITypeReferenceDelta<?> lowerBoundDelta = compareType(fromLowerBound,
+                toLowerBound, false);
+        if (lowerBoundDelta != null) {
+            delta = new SigWildcardTypeDelta(from, to);
+            delta.setLowerBoundDelta(lowerBoundDelta);
+        }
+
+        IUpperBoundsDelta upperBoundsDelta = compareUpperBounds(from
+                .getUpperBounds(), to.getUpperBounds());
+        if (upperBoundsDelta != null) {
+            if (delta == null) {
+                delta = new SigWildcardTypeDelta(from, to);
+            }
+            delta.setUpperBoundDelta(upperBoundsDelta);
+        }
+        return delta;
+    }
+
+    private IGenericDeclarationDelta compareGenericDeclaration(
+            ITypeVariableDefinition fromVariable,
+            ITypeVariableDefinition toVariable) {
+        IGenericDeclarationDelta delta = null;
+
+        IGenericDeclaration from = fromVariable.getGenericDeclaration();
+        IGenericDeclaration to = toVariable.getGenericDeclaration();
+
+        if (from != null && to != null) {
+
+            if (from.getClass() != to.getClass()) {
+                delta = new SigGenericDeclarationDelta(from, to);
+            } else if (from instanceof IClassDefinition) {
+                IClassDefinition fromDeclaringClass = (IClassDefinition) from;
+                IClassDefinition toDeclaringClass = (IClassDefinition) to;
+
+                if (!sameClassDefinition(fromDeclaringClass,
+                        toDeclaringClass)) {
+                    delta = new SigGenericDeclarationDelta(from, to);
+                }
+
+            } else if (from instanceof IConstructor) {
+                IConstructor fromConstructor = (IConstructor) from;
+                IConstructor toConstructor = (IConstructor) from;
+
+                String fromConstructorName = fromConstructor.getName();
+                String fromClassName = fromConstructor.getDeclaringClass()
+                        .getQualifiedName();
+
+                String toConstructorName = toConstructor.getName();
+                String toClassName = toConstructor.getDeclaringClass()
+                        .getQualifiedName();
+
+                if ((!fromConstructorName.equals(toConstructorName))
+                        || (!fromClassName.equals(toClassName))) {
+                    delta = new SigGenericDeclarationDelta(from, to);
+                }
+
+            } else if (from instanceof IMethod) {
+                IMethod fromMethod = (IMethod) from;
+                IMethod toMethod = (IMethod) from;
+
+                String fromConstructorName = fromMethod.getName();
+                String fromClassName = fromMethod.getDeclaringClass()
+                        .getQualifiedName();
+
+                String toConstructorName = toMethod.getName();
+                String toClassName = toMethod.getDeclaringClass()
+                        .getQualifiedName();
+
+                if ((!fromConstructorName.equals(toConstructorName))
+                        || (!fromClassName.equals(toClassName))) {
+                    delta = new SigGenericDeclarationDelta(from, to);
+                }
+            } else {
+                throw new IllegalStateException("Invlaid eclaration site: "
+                        + from);
+            }
+
+            // check position
+            int fromPosition = getPositionOf(fromVariable, from);
+            int toPosition = getPositionOf(toVariable, to);
+
+            if (fromPosition != toPosition) {
+                delta = new SigGenericDeclarationDelta(from, to);
+            }
+
+
+        } else {
+            // one of both is null
+            delta = new SigGenericDeclarationDelta(from, to);
+        }
+        return delta;
+    }
+
+    private int getPositionOf(ITypeVariableDefinition variable,
+            IGenericDeclaration declaration) {
+        return declaration.getTypeParameters().indexOf(variable);
+    }
+
+    private IUpperBoundsDelta compareUpperBounds(List<ITypeReference> from,
+            List<ITypeReference> to) {
+        if (from.isEmpty() && to.isEmpty()) {
+            return null;
+        }
+        SigUpperBoundsDelta delta = null;
+
+        ITypeReference fromFirstUpperBound = from.get(0);
+        ITypeReference toFirstUpperBound = to.get(0);
+
+        ITypeReferenceDelta<?> firstUpperBoundDelta = compareType(
+                fromFirstUpperBound, toFirstUpperBound, false);
+        if (firstUpperBoundDelta != null) {
+            delta = new SigUpperBoundsDelta(from, to);
+            delta.setFirstUpperBoundDelta(firstUpperBoundDelta);
+        } else {
+            // normalize
+            Set<ITypeReference> normalizedfrom = removeGeneralizations(
+                    new HashSet<ITypeReference>(from));
+            Set<ITypeReference> normalizedto = removeGeneralizations(
+                    new HashSet<ITypeReference>(to));
+
+            Set<ITypeReferenceDelta<?>> remainingUpperBoundsDelta =
+                    compareTypes(normalizedfrom, normalizedto);
+            if (remainingUpperBoundsDelta != null) {
+                delta = new SigUpperBoundsDelta(from, to);
+                delta.setRemainingUpperBoundDeltas(remainingUpperBoundsDelta);
+            }
+        }
+        return delta;
+    }
+
+    private Set<ITypeReference> removeGeneralizations(
+            Set<ITypeReference> bounds) {
+        Set<ITypeReference> boundsCopy = new HashSet<ITypeReference>(bounds);
+        for (ITypeReference type : bounds) {
+            Iterator<ITypeReference> it = boundsCopy.iterator();
+            while (it.hasNext()) {
+                ITypeReference superType = it.next();
+                if (isSuperClass(getClassDefinition(superType),
+                        getClassDefinition(type))
+                        || isSuperInterface(getClassDefinition(superType),
+                                getClassDefinition(type))) {
+                    it.remove();
+                }
+            }
+        }
+        return boundsCopy;
+    }
+
+    private IParameterizedTypeDelta compareParameterizedType(
+            IParameterizedType from, IParameterizedType to,
+            boolean ignoreTypeArguments) {
+
+        SigParameterizedTypeDelta delta = null;
+        // check raw type
+        ITypeReferenceDelta<?> rawTypeDelta = compareType(from.getRawType(), to
+                .getRawType(), false);
+        if (rawTypeDelta != null) {
+            delta = new SigParameterizedTypeDelta(from, to);
+            delta.setRawTypeDelta(rawTypeDelta);
+        } else {
+            // check owner type
+            ITypeReferenceDelta<?> ownerTypeDelta = compareType(from
+                    .getOwnerType(), to.getOwnerType(), false);
+            if (ownerTypeDelta != null) {
+                delta = new SigParameterizedTypeDelta(from, to);
+                delta.setOwnerTypeDelta(ownerTypeDelta);
+            } else {
+                // check argument type
+                if (!ignoreTypeArguments) {
+                    Set<ITypeReferenceDelta<?>> argumentTypeDeltas =
+                            compareTypeSequence(from.getTypeArguments(),
+                                    to.getTypeArguments(), false);
+                    if (argumentTypeDeltas != null) {
+                        delta = new SigParameterizedTypeDelta(from, to);
+                        delta.setArgumentTypeDeltas(argumentTypeDeltas);
+                    }
+                }
+            }
+        }
+        return delta;
+    }
+
+    private Set<ITypeReferenceDelta<? extends ITypeReference>> compareTypeSequence(
+            List<ITypeReference> from, List<ITypeReference> to,
+            boolean ignoreTypeArguments) {
+        Set<ITypeReferenceDelta<?>> deltas =
+                new HashSet<ITypeReferenceDelta<?>>();
+        if (from.size() != to.size()) {
+
+            for (ITypeReference type : from) {
+                deltas.add(new SigTypeDelta<ITypeReference>(type, null));
+            }
+            for (ITypeReference type : to) {
+                deltas.add(new SigTypeDelta<ITypeReference>(null, type));
+            }
+            return deltas;
+        }
+
+        Iterator<? extends ITypeReference> fromIterator = from.iterator();
+        Iterator<? extends ITypeReference> toIterator = to.iterator();
+        while (fromIterator.hasNext() && toIterator.hasNext()) {
+            ITypeReferenceDelta<?> delta = compareType(fromIterator.next(),
+                    toIterator.next(), ignoreTypeArguments);
+            if (delta != null) {
+                deltas.add(delta);
+            }
+        }
+        return deltas.isEmpty() ? null : deltas;
+    }
+
+    private Set<ITypeReferenceDelta<? extends ITypeReference>> compareTypes(
+            Set<ITypeReference> from, Set<ITypeReference> to) {
+        return compareSets(from, to,
+                new SigComparator<ITypeReference, ITypeReferenceDelta<? extends ITypeReference>>() {
+                    public ITypeReferenceDelta<? extends ITypeReference> createAddRemoveDelta(
+                            ITypeReference from, ITypeReference to) {
+                        return new SigTypeDelta<ITypeReference>(from, to);
+                    }
+
+                    public boolean considerEqualElement(ITypeReference from,
+                            ITypeReference to) {
+                        return considerEqualTypes(from, to);
+                    }
+
+                    public ITypeReferenceDelta<? extends ITypeReference> createChangedDelta(
+                            ITypeReference from, ITypeReference to) {
+                        return compareType(from, to, false);
+                    }
+                });
+    }
+
+    private static interface SigComparator<T, S extends IDelta<? extends T>> {
+        boolean considerEqualElement(T from, T to);
+
+        S createChangedDelta(T from, T to);
+
+        /**
+         * If null is returned, it will be ignored.
+         */
+        S createAddRemoveDelta(T from, T to);
+    }
+
+
+    private <T, S extends IDelta<? extends T>> Set<S> compareSets(Set<T> from,
+            Set<T> to, SigComparator<T, S> comparator) {
+
+        Set<T> toCopy = new HashSet<T>(to);
+        Set<S> deltas = new HashSet<S>();
+
+        for (T fromType : from) {
+            Iterator<T> toIterator = toCopy.iterator();
+            boolean equals = false;
+            boolean hasNext = toIterator.hasNext();
+
+            while (hasNext && !equals) {
+                T toElement = toIterator.next();
+                equals = comparator.considerEqualElement(fromType, toElement);
+                if (equals) {
+                    S compare = comparator.createChangedDelta(fromType,
+                            toElement);
+                    if (compare != null) {
+                        deltas.add(compare);
+                    }
+                }
+                hasNext = toIterator.hasNext();
+            }
+
+            if (equals) {
+                toIterator.remove();
+            } else {
+                S delta = comparator.createAddRemoveDelta(fromType, null);
+                if (delta != null) {
+                    deltas.add(delta);
+                }
+            }
+        }
+
+        for (T type : toCopy) {
+            S delta = comparator.createAddRemoveDelta(null, type);
+            if (delta != null) {
+                deltas.add(delta);
+            }
+        }
+        return deltas.isEmpty() ? null : deltas;
+    }
+
+
+    private ITypeReferenceDelta<?> compareArrayType(IArrayType from,
+            IArrayType to) {
+        ITypeReferenceDelta<?> componentTypeDelta = compareType(from
+                .getComponentType(), to.getComponentType(), false);
+        if (componentTypeDelta != null) {
+            SigArrayTypeDelta delta = new SigArrayTypeDelta(from, to);
+            delta.setComponentTypeDelta(componentTypeDelta);
+            return delta;
+        }
+        return null;
+    }
+
+    private ITypeReferenceDelta<IClassReference> compareClassReference(
+            IClassReference fromRef, IClassReference toRef) {
+        IClassDefinition from = fromRef.getClassDefinition();
+        IClassDefinition to = toRef.getClassDefinition();
+
+        if (!sameClassDefinition(from, to)) {
+            return new SigClassReferenceDelta(fromRef, toRef);
+        }
+        return null;
+    }
+
+
+    private boolean sameClassDefinition(IClassDefinition from,
+            IClassDefinition to) {
+        boolean sameName = from.getName().equals(to.getName());
+        boolean samePackage = from.getPackageName().equals(to.getPackageName());
+
+        Kind fromKind = from.getKind();
+        Kind toKind = to.getKind();
+        boolean sameKind = (fromKind == null || toKind == null)
+                || fromKind.equals(toKind);
+
+        return sameName && samePackage && sameKind;
+    }
+
+    private IPrimitiveTypeDelta comparePrimitiveType(IPrimitiveType from,
+            IPrimitiveType to) {
+        if (!from.equals(to)) {
+            return new SigPrimitiveTypeDelta(from, to);
+        }
+        return null;
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/IApiComparator.java b/tools/signature-tools/src/signature/compare/IApiComparator.java
new file mode 100644
index 0000000..08ed97f
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/IApiComparator.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare;
+
+import signature.compare.model.IApiDelta;
+import signature.model.IApi;
+
+/**
+ * {@code IApiComparator} defines the functionality of a signature comparator.
+ */
+public interface IApiComparator {
+
+    /**
+     * Returns a difference model which describes the differences from {@code
+     * fromApi} to {@code toApi}.
+     * 
+     * @param fromApi
+     *            differences are computed relative to {@code fromApi}
+     * @param toApi
+     *            the target signature model
+     * @return a difference model which describes the differences from {@code
+     *         fromApi} to {@code toApi}
+     */
+    IApiDelta compare(IApi fromApi, IApi toApi);
+}
diff --git a/tools/signature-tools/src/signature/compare/Main.java b/tools/signature-tools/src/signature/compare/Main.java
new file mode 100644
index 0000000..80edb45
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/Main.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare;
+
+import signature.UsageException;
+import signature.compare.model.IApiDelta;
+import signature.compare.model.IPackageDelta;
+import signature.compare.model.impl.SigDelta;
+import signature.converter.Visibility;
+import signature.converter.dex.DexFactory;
+import signature.converter.doclet.DocletFactory;
+import signature.io.IApiDeltaExternalizer;
+import signature.io.IApiLoader;
+import signature.io.html.HtmlDeltaExternalizer;
+import signature.io.impl.BinaryApi;
+import signature.model.IApi;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Driver class for the --compare option.
+ */
+public class Main {
+
+    /**
+     * <pre>
+     * --from=(doclet | dex | sig) <sourcefiles>
+     * --name <name>
+     * --to=(doclet | dex | sig) <sourcefiles>
+     * --name <name>
+     * --out directory
+     * --packages packageName{ packageName}
+     * </pre>
+     */
+    public static void main(String[] args) throws IOException {
+        int at = 0;
+
+        if (!"--from".equals(args[at])) {
+            throw new UsageException();
+        }
+        String fromType = args[++at];
+
+        boolean hasName = false;
+        Set<String> fromFiles = new HashSet<String>();
+        ++at;
+        for (/* at */; at < args.length; at++) {
+            if ("--name".equals(args[at])) {
+                hasName = true;
+                break;
+            }
+            if ("--to".equals(args[at])) {
+                break;
+            }
+            fromFiles.add(args[at]);
+        }
+
+        String nameFrom = null;
+        if (hasName) {
+            nameFrom = "";
+            if (!"--name".equals(args[at])) {
+                throw new UsageException();
+            }
+            ++at;
+            for (/* at */; at < args.length; at++) {
+                if ("--to".equals(args[at])) {
+                    break;
+                }
+                nameFrom += args[at];
+                nameFrom += " ";
+            }
+            nameFrom = nameFrom.trim();
+        }
+
+        if (!"--to".equals(args[at])) {
+            throw new UsageException();
+        }
+        String toType = args[++at];
+
+        hasName = false;
+        Set<String> toFiles = new HashSet<String>();
+        ++at;
+        for (/* at */; at < args.length; at++) {
+            if ("--name".equals(args[at])) {
+                hasName = true;
+                break;
+            }
+            if ("--out".equals(args[at])) {
+                break;
+            }
+            toFiles.add(args[at]);
+        }
+
+        String nameTo = null;
+        if (hasName) {
+            nameTo = "";
+            if (!"--name".equals(args[at])) {
+                throw new UsageException();
+            }
+            ++at;
+            for (/* at */; at < args.length; at++) {
+                if ("--out".equals(args[at])) {
+                    break;
+                }
+                nameTo += args[at];
+                nameTo += " ";
+            }
+            nameTo = nameTo.trim();
+        }
+
+        if (!"--out".equals(args[at])) {
+            throw new UsageException();
+        }
+        String output = args[++at];
+
+        if (!"--packages".equals(args[++at])) {
+            throw new UsageException();
+        }
+        Set<String> packages = new HashSet<String>();
+        ++at;
+        for (/* at */; at < args.length; at++) {
+            packages.add(args[at]);
+        }
+
+        IApiComparator comparator = new ApiComparator();
+        IApi fromApi = getApi(fromType, nameFrom, fromFiles, packages);
+        IApi toApi = getApi(toType, nameTo, toFiles, packages);
+
+        IApiDeltaExternalizer externalizer = new HtmlDeltaExternalizer();
+        System.out.println("Writing delta report to " + output);
+        IApiDelta delta = comparator.compare(fromApi, toApi);
+        if (delta == null) {
+            delta = new EmptyDelta(fromApi, toApi);
+        }
+
+        externalizer.externalize(output, delta);
+    }
+
+    private static class EmptyDelta extends SigDelta<IApi> implements
+            IApiDelta {
+        public EmptyDelta(IApi from, IApi to) {
+            super(from, to);
+        }
+
+        public Set<IPackageDelta> getPackageDeltas() {
+            return Collections.emptySet();
+        }
+    }
+
+    private static IApi getApi(String specType, String name,
+            Set<String> fileNames, Set<String> packageNames) throws
+            IOException {
+        System.out.println("Loading " + name + " of type " + specType
+                + " from " + fileNames);
+        IApiLoader factory = null;
+        if ("doclet".equals(specType)) {
+            checkName(name);
+            factory = new DocletFactory();
+        } else if ("dex".equals(specType)) {
+            checkName(name);
+            factory = new DexFactory();
+        } else if ("sig".equals(specType)) {
+            factory = new BinaryApi();
+        } else {
+            throw new UsageException();
+        }
+        return factory.loadApi(name, Visibility.PROTECTED, fileNames,
+                packageNames);
+    }
+
+    private static void checkName(String name) {
+        if (name == null) {
+            throw new UsageException();
+        }
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/DeltaType.java b/tools/signature-tools/src/signature/compare/model/DeltaType.java
new file mode 100644
index 0000000..a3aad2c
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/DeltaType.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+/**
+ * {@code DeltaType} defines the three possible types of a delta.
+ */
+public enum DeltaType {
+    /**
+     * States that an element was added to the toApi.
+     */
+    ADDED,
+    /**
+     * States that an element was removed from the toApi.
+     */
+    REMOVED,
+    /**
+     * States that an element changed.
+     */
+    CHANGED
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IAnnotatableElementDelta.java b/tools/signature-tools/src/signature/compare/model/IAnnotatableElementDelta.java
new file mode 100644
index 0000000..dd41c60
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IAnnotatableElementDelta.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import java.util.Set;
+
+/**
+ * {@code IAnnotatableElementDelta} is the common base interface for deltas
+ * which may have {@link IAnnotationDelta}s.
+ */
+public interface IAnnotatableElementDelta {
+
+    /**
+     * Returns a set of annotation deltas or {@code null} if no deltas are
+     * available.
+     * 
+     * @return a set of annotation deltas, maybe {@code null}
+     */
+    Set<IAnnotationDelta> getAnnotationDeltas();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IAnnotationDelta.java b/tools/signature-tools/src/signature/compare/model/IAnnotationDelta.java
new file mode 100644
index 0000000..2e29358
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IAnnotationDelta.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import java.util.Set;
+
+import signature.model.IAnnotation;
+
+/**
+ * {@code IAnnotationDelta} models the delta between two {@link IAnnotation}
+ * instances.
+ */
+public interface IAnnotationDelta extends IDelta<IAnnotation> {
+
+    /**
+     * Returns a set of annotation element deltas or {@code null} if no deltas
+     * are available.
+     * 
+     * @return a set of annotation element deltas, maybe {@code null}
+     */
+    Set<IAnnotationElementDelta> getAnnotationElementDeltas();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IAnnotationElementDelta.java b/tools/signature-tools/src/signature/compare/model/IAnnotationElementDelta.java
new file mode 100644
index 0000000..4355fdb
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IAnnotationElementDelta.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import signature.model.IAnnotationElement;
+
+/**
+ * {@code IAnnotationElementDelta} models the delta between two
+ * {@link IAnnotationElement} instances.
+ */
+public interface IAnnotationElementDelta extends IDelta<IAnnotationElement> {
+
+    /**
+     * Returns a value delta or {@code null} if no delta is available.
+     * 
+     * @return a value delta, maybe {@code null}
+     */
+    IValueDelta getValueDelta();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IAnnotationFieldDelta.java b/tools/signature-tools/src/signature/compare/model/IAnnotationFieldDelta.java
new file mode 100644
index 0000000..223072a
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IAnnotationFieldDelta.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import signature.model.IAnnotationField;
+
+/**
+ * {@code IAnnotationFieldDelta} models the delta between two
+ * {@link IAnnotationField} instances.
+ */
+public interface IAnnotationFieldDelta extends IMemberDelta<IAnnotationField> {
+
+    /**
+     * Returns the default value delta or {@code null} if no delta is available.
+     * 
+     * @return the default value delta, maybe {@code null}
+     */
+    IValueDelta getDefaultValueDelta();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IApiDelta.java b/tools/signature-tools/src/signature/compare/model/IApiDelta.java
new file mode 100644
index 0000000..78a8c34
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IApiDelta.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import java.util.Set;
+
+import signature.model.IApi;
+
+/**
+ * {@code IApiDelta} models the delta between two {@link IApi} instances.
+ */
+public interface IApiDelta extends IDelta<IApi> {
+
+    /**
+     * Returns a set of package deltas or {@code null} if no deltas are
+     * available.
+     * 
+     * @return a set of package deltas, maybe {@code null}
+     */
+    Set<IPackageDelta> getPackageDeltas();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IArrayTypeDelta.java b/tools/signature-tools/src/signature/compare/model/IArrayTypeDelta.java
new file mode 100644
index 0000000..bb29bcd
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IArrayTypeDelta.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import signature.model.IArrayType;
+
+/**
+ * {@code IArrayTypeDelta} models the delta between two {@link IArrayType}
+ * instances.
+ */
+public interface IArrayTypeDelta extends ITypeReferenceDelta<IArrayType> {
+
+    /**
+     * Returns a component type delta or {@code null} if no delta is available.
+     * 
+     * @return a component type delta, maybe {@code null}
+     */
+    ITypeReferenceDelta<?> getComponentTypeDelta();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IClassDefinitionDelta.java b/tools/signature-tools/src/signature/compare/model/IClassDefinitionDelta.java
new file mode 100644
index 0000000..5cbaf9b
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IClassDefinitionDelta.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import java.util.Set;
+
+import signature.model.IClassDefinition;
+
+/**
+ * {@code IClassDefinitionDelta} models the delta between two
+ * {@link IClassDefinition} instances.
+ */
+public interface IClassDefinitionDelta extends
+        ITypeDefinitionDelta<IClassDefinition>, IAnnotatableElementDelta,
+        ITypeVariableDeltas {
+
+    /**
+     * Returns a set of field deltas or {@code null} if no deltas are available.
+     * 
+     * @return a set of field deltas, maybe {@code null}
+     */
+    Set<IFieldDelta> getFieldDeltas();
+
+    /**
+     * Returns a set of enum constant deltas or {@code null} if no deltas are
+     * available.
+     * 
+     * @return a set of enum constant deltas, maybe {@code null}
+     */
+    Set<IEnumConstantDelta> getEnumConstantDeltas();
+
+    /**
+     * Returns a set of annotation field deltas or {@code null} if no deltas are
+     * available.
+     * 
+     * @return a set of annotation field deltas, maybe {@code null}
+     */
+    Set<IAnnotationFieldDelta> getAnnotationFieldDeltas();
+
+    /**
+     * Returns a set of method deltas or {@code null} if no deltas are
+     * available.
+     * 
+     * @return a set of method deltas, maybe {@code null}
+     */
+    Set<IMethodDelta> getMethodDeltas();
+
+    /**
+     * Returns a set of constructor deltas or {@code null} if no deltas are
+     * available.
+     * 
+     * @return a set of constructor deltas, maybe {@code null}
+     */
+    Set<IConstructorDelta> getConstructorDeltas();
+
+    /**
+     * Returns a set of modifier deltas or {@code null} if no deltas are
+     * available.
+     * 
+     * @return a set of modifier deltas, maybe {@code null}
+     */
+    Set<IModifierDelta> getModifierDeltas();
+
+    /**
+     * Returns a super class delta or {@code null} if no delta is available.
+     * 
+     * @return a super class delta, maybe {@code null}
+     */
+    ITypeReferenceDelta<?> getSuperClassDelta();
+
+    /**
+     * Returns a set of interface deltas or {@code null} if no deltas are
+     * available.
+     * 
+     * @return a set of interface deltas, maybe {@code null}
+     */
+    Set<ITypeReferenceDelta<?>> getInterfaceDeltas();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IConstructorDelta.java b/tools/signature-tools/src/signature/compare/model/IConstructorDelta.java
new file mode 100644
index 0000000..64ba993
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IConstructorDelta.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import signature.model.IConstructor;
+
+/**
+ * {@code IConstructorDelta} models the delta between two {@link IConstructor}
+ * instances.
+ */
+public interface IConstructorDelta extends
+        IExecutableMemberDelta<IConstructor> {
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IDelta.java b/tools/signature-tools/src/signature/compare/model/IDelta.java
new file mode 100644
index 0000000..bd94388
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IDelta.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+/**
+ * {@code IDelta} is the common base interface for all delta model elements. It
+ * describes a delta from a "from" element to a "to" element.
+ * 
+ * @param <T>
+ *            the type of the compared elements
+ */
+public interface IDelta<T> {
+
+    /**
+     * Returns the type of this delta.
+     * 
+     * @return the type of this delta
+     */
+    DeltaType getType();
+
+    /**
+     * Returns the "from" element. Is null if type is {@link DeltaType#ADDED}
+     * 
+     * @return the "from" element
+     */
+    T getFrom();
+
+    /**
+     * Returns the "to" element. Is null if type is {@link DeltaType#REMOVED}
+     * 
+     * @return the "to" element
+     */
+    T getTo();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IEnumConstantDelta.java b/tools/signature-tools/src/signature/compare/model/IEnumConstantDelta.java
new file mode 100644
index 0000000..6590c5a
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IEnumConstantDelta.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import signature.model.IEnumConstant;
+
+/**
+ * {@code IEnumConstantDelta} models the delta between two {@link IEnumConstant}
+ * instances.
+ */
+public interface IEnumConstantDelta extends IMemberDelta<IEnumConstant> {
+    IValueDelta getOrdinalDelta();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IExecutableMemberDelta.java b/tools/signature-tools/src/signature/compare/model/IExecutableMemberDelta.java
new file mode 100644
index 0000000..30f7038
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IExecutableMemberDelta.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import java.util.Set;
+
+import signature.model.IExecutableMember;
+
+/**
+ * {@code IExecutableMemberDelta} models the delta between two
+ * {@link IExecutableMember} instances.
+ */
+public interface IExecutableMemberDelta<T extends IExecutableMember> extends
+        IDelta<T>, ITypeVariableDeltas, IAnnotatableElementDelta {
+
+    /**
+     * Returns a set of modifier deltas or {@code null} if no deltas are
+     * available.
+     * 
+     * @return a set of modifier deltas, maybe {@code null}
+     */
+    Set<IModifierDelta> getModifierDeltas();
+
+    /**
+     * Returns a set of exception deltas or {@code null} if no deltas are
+     * available.
+     * 
+     * @return a set of exception deltas, maybe {@code null}
+     */
+    Set<ITypeReferenceDelta<?>> getExceptionDeltas();
+
+    /**
+     * Returns a set of parameter deltas or {@code null} if no deltas are
+     * available.
+     * 
+     * @return a set of parameter deltas, maybe {@code null}
+     */
+    Set<IParameterDelta> getParameterDeltas();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IFieldDelta.java b/tools/signature-tools/src/signature/compare/model/IFieldDelta.java
new file mode 100644
index 0000000..ab9bf76
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IFieldDelta.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import signature.model.IField;
+
+/**
+ * {@code IFieldDelta} models the delta between two {@link IField} instances.
+ */
+public interface IFieldDelta extends IMemberDelta<IField> {
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IGenericDeclarationDelta.java b/tools/signature-tools/src/signature/compare/model/IGenericDeclarationDelta.java
new file mode 100644
index 0000000..5cd518c
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IGenericDeclarationDelta.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import signature.model.IGenericDeclaration;
+
+/**
+ * {@code IGenericDeclarationDelta} models the delta between two
+ * {@link IGenericDeclaration} instances.
+ */
+public interface IGenericDeclarationDelta extends IDelta<IGenericDeclaration> {
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IMemberDelta.java b/tools/signature-tools/src/signature/compare/model/IMemberDelta.java
new file mode 100644
index 0000000..df78307
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IMemberDelta.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import java.util.Set;
+
+import signature.model.IField;
+
+/**
+ * {@code IMemberDelta} models the delta between two {@link IField} subclass
+ * instances.
+ */
+public interface IMemberDelta<T extends IField> extends IDelta<T>,
+        IAnnotatableElementDelta {
+
+    /**
+     * Returns a type delta or {@code null} if no delta is available.
+     * 
+     * @return a type delta, maybe {@code null}
+     */
+    ITypeReferenceDelta<?> getTypeDelta();
+
+    /**
+     * Returns a set of modifier deltas or {@code null} if no deltas are
+     * available.
+     * 
+     * @return a set of modifier deltas, maybe {@code null}
+     */
+    Set<IModifierDelta> getModifierDeltas();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IMethodDelta.java b/tools/signature-tools/src/signature/compare/model/IMethodDelta.java
new file mode 100644
index 0000000..3e94d26
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IMethodDelta.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import signature.model.IMethod;
+
+/**
+ * {@code IMethodDelta} models the delta between two {@link IMethod} subclass
+ * instances.
+ */
+public interface IMethodDelta extends IExecutableMemberDelta<IMethod> {
+
+    /**
+     * Returns a return type delta or {@code null} if no delta is available.
+     * 
+     * @return a return type delta, maybe {@code null}
+     */
+    ITypeReferenceDelta<?> getReturnTypeDelta();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IModifierDelta.java b/tools/signature-tools/src/signature/compare/model/IModifierDelta.java
new file mode 100644
index 0000000..4553e10
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IModifierDelta.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import signature.model.Modifier;
+
+/**
+ * {@code IModifierDelta} models the delta between two {@link Modifier}
+ * instances.
+ */
+public interface IModifierDelta extends IDelta<Modifier> {
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IPackageDelta.java b/tools/signature-tools/src/signature/compare/model/IPackageDelta.java
new file mode 100644
index 0000000..8c697c3
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IPackageDelta.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import java.util.Set;
+
+import signature.model.IPackage;
+
+/**
+ * {@code IPackageDelta} models the delta between two {@link IPackage}
+ * instances.
+ */
+public interface IPackageDelta extends IDelta<IPackage>,
+        IAnnotatableElementDelta {
+
+    /**
+     * Returns a set of class definition deltas or {@code null} if no deltas are
+     * available.
+     * 
+     * @return a set of class definition deltas, maybe {@code null}
+     */
+    Set<IClassDefinitionDelta> getClassDeltas();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IParameterDelta.java b/tools/signature-tools/src/signature/compare/model/IParameterDelta.java
new file mode 100644
index 0000000..b2a6a80
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IParameterDelta.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import signature.model.IParameter;
+
+/**
+ * {@code IParameterDelta} models the delta between two {@link IParameter}
+ * instances.
+ */
+public interface IParameterDelta extends IDelta<IParameter>,
+        IAnnotatableElementDelta {
+
+    /**
+     * Returns a parameter type delta or {@code null} if no delta is available.
+     * 
+     * @return a parameter type delta, maybe {@code null}
+     */
+    public ITypeReferenceDelta<?> getTypeDelta();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IParameterizedTypeDelta.java b/tools/signature-tools/src/signature/compare/model/IParameterizedTypeDelta.java
new file mode 100644
index 0000000..be54a01
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IParameterizedTypeDelta.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import java.util.Set;
+
+import signature.model.IParameterizedType;
+
+/**
+ * {@code IParameterizedTypeDelta} models the delta between two
+ * {@link IParameterizedType} instances.
+ */
+public interface IParameterizedTypeDelta extends
+        ITypeReferenceDelta<IParameterizedType> {
+
+    /**
+     * Returns a raw type delta or {@code null} if no delta is available.
+     * 
+     * @return a raw type delta, maybe {@code null}
+     */
+    ITypeReferenceDelta<?> getRawTypeDelta();
+
+    /**
+     * Returns a owner type delta or {@code null} if no delta is available.
+     * 
+     * @return a owner type delta, maybe {@code null}
+     */
+    ITypeReferenceDelta<?> getOwnerTypeDelta();
+
+    /**
+     * Returns a set of argument type deltas or {@code null} if no deltas are
+     * available.
+     * 
+     * @return a set of argument type deltas, maybe {@code null}
+     */
+    Set<ITypeReferenceDelta<?>> getArgumentTypeDeltas();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IPrimitiveTypeDelta.java b/tools/signature-tools/src/signature/compare/model/IPrimitiveTypeDelta.java
new file mode 100644
index 0000000..f729435
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IPrimitiveTypeDelta.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import signature.model.IPrimitiveType;
+
+/**
+ * {@code IPrimitiveTypeDelta} models the delta between two
+ * {@link IPrimitiveType} instances.
+ */
+public interface IPrimitiveTypeDelta extends
+        ITypeReferenceDelta<IPrimitiveType> {
+}
diff --git a/tools/signature-tools/src/signature/compare/model/ITypeDefinitionDelta.java b/tools/signature-tools/src/signature/compare/model/ITypeDefinitionDelta.java
new file mode 100644
index 0000000..932cc39
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/ITypeDefinitionDelta.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import signature.model.ITypeDefinition;
+
+/**
+ * {@code ITypeDefinitionDelta} is the common base interface for deltas which
+ * model differences between type definitions.
+ */
+public interface ITypeDefinitionDelta<T extends ITypeDefinition> extends
+        IDelta<T> {
+}
diff --git a/tools/signature-tools/src/signature/compare/model/ITypeReferenceDelta.java b/tools/signature-tools/src/signature/compare/model/ITypeReferenceDelta.java
new file mode 100644
index 0000000..fba52f0
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/ITypeReferenceDelta.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import signature.model.ITypeReference;
+
+/**
+ * {@code ITypeReferenceDelta} is the common base interface for deltas which
+ * model differences between type references.
+ */
+public interface ITypeReferenceDelta<T extends ITypeReference> extends
+        IDelta<T> {
+}
diff --git a/tools/signature-tools/src/signature/compare/model/ITypeVariableDefinitionDelta.java b/tools/signature-tools/src/signature/compare/model/ITypeVariableDefinitionDelta.java
new file mode 100644
index 0000000..1e8f3cd
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/ITypeVariableDefinitionDelta.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import signature.model.ITypeVariableDefinition;
+
+/**
+ * {@code ITypeVariableDefinitionDelta} models the delta between two
+ * {@link ITypeVariableDefinition} instances.
+ */
+public interface ITypeVariableDefinitionDelta extends
+        ITypeDefinitionDelta<ITypeVariableDefinition> {
+
+    /**
+     * Returns an upper bound delta or {@code null} if no delta is available.
+     * 
+     * @return an upper bound delta, maybe {@code null}
+     */
+    IUpperBoundsDelta getUpperBoundsDelta();
+
+    /**
+     * Returns a generic declaration delta or {@code null} if no delta is
+     * available.
+     * 
+     * @return a generic declaration delta, maybe {@code null}
+     */
+    IGenericDeclarationDelta getGenericDeclarationDelta();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/ITypeVariableDeltas.java b/tools/signature-tools/src/signature/compare/model/ITypeVariableDeltas.java
new file mode 100644
index 0000000..a88ea30
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/ITypeVariableDeltas.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import java.util.Set;
+
+/**
+ * Common interface for all deltas which may have {@code
+ * ITypeVariableDefinitionDelta}s. Type variable deltas can occur, where type
+ * variables can be defined. On classes, constructors and methods.
+ * 
+ * @see IClassDefinitionDelta
+ * @see IExecutableMemberDelta (common super interface of the following two
+ *      interfaces)
+ * @see IConstructorDelta
+ * @see IMethodDelta
+ */
+public interface ITypeVariableDeltas {
+
+    /**
+     * Returns a set of type variable deltas or {@code null} if no deltas are
+     * available.
+     * 
+     * @return a set of type variable deltas, maybe {@code null}
+     */
+    Set<ITypeVariableDefinitionDelta> getTypeVariableDeltas();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IUpperBoundsDelta.java b/tools/signature-tools/src/signature/compare/model/IUpperBoundsDelta.java
new file mode 100644
index 0000000..44bd39a
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IUpperBoundsDelta.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import java.util.List;
+import java.util.Set;
+
+import signature.model.ITypeReference;
+
+/**
+ * {@code IUpperBoundsDelta} models the delta between two {@link List
+ * &lt;ITypeReference&gt;} instances.
+ * <p>
+ * This interface is aware, that for the first argument, the order of the upper
+ * bounds is relevant (for erasure).
+ */
+public interface IUpperBoundsDelta extends IDelta<List<ITypeReference>> {
+    
+    /**
+     * Returns the upper bound delta of the first upper bound or {@code null} if
+     * no delta is available.
+     *
+     * @return the upper bound delta of the first upper bound, maybe {@code
+     *         null}
+     */
+    ITypeReferenceDelta<?> getFirstUpperBoundDelta();
+
+    /**
+     * Returns a set of remaining upper bound deltas or {@code null} if no
+     * deltas are available.
+     *
+     * @return a set of remaining upper bound deltas, maybe {@code null}
+     */
+    Set<ITypeReferenceDelta<?>> getRemainingUpperBoundDeltas();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/IValueDelta.java b/tools/signature-tools/src/signature/compare/model/IValueDelta.java
new file mode 100644
index 0000000..abd1f59
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IValueDelta.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+
+/**
+ * {@code IValueDelta} models the delta between two
+ * {@link Object} instances.
+ */
+public interface IValueDelta extends IDelta<Object> {}
diff --git a/tools/signature-tools/src/signature/compare/model/IWildcardTypeDelta.java b/tools/signature-tools/src/signature/compare/model/IWildcardTypeDelta.java
new file mode 100644
index 0000000..1fda09c
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/IWildcardTypeDelta.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model;
+
+import signature.model.IWildcardType;
+
+/**
+ * {@code IWildcardTypeDelta} models the delta between two
+ * {@link IWildcardType} instances.
+ */
+public interface IWildcardTypeDelta extends ITypeReferenceDelta<IWildcardType> {
+    
+    /**
+     * Returns the upper bound delta or {@code null} if no delta is available.
+     *
+     * @return the upper bound delta, maybe {@code null}
+     */
+    IUpperBoundsDelta getUpperBoundDelta();
+
+    /**
+     * Returns the lower bound delta or {@code null} if no delta is available.
+     *
+     * @return the lower bound delta, maybe {@code null}
+     */
+    ITypeReferenceDelta<?> getLowerBoundDelta();
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigAnnotationDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigAnnotationDelta.java
new file mode 100644
index 0000000..78e515f
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigAnnotationDelta.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import java.util.Set;
+
+import signature.compare.model.IAnnotationDelta;
+import signature.compare.model.IAnnotationElementDelta;
+import signature.model.IAnnotation;
+
+public class SigAnnotationDelta extends SigDelta<IAnnotation> implements
+        IAnnotationDelta {
+
+    private Set<IAnnotationElementDelta> annotationElementDeltas;
+
+    public SigAnnotationDelta(IAnnotation from, IAnnotation to) {
+        super(from, to);
+    }
+
+    public Set<IAnnotationElementDelta> getAnnotationElementDeltas() {
+        return annotationElementDeltas;
+    }
+
+    public void setAnnotationElementDeltas(
+            Set<IAnnotationElementDelta> annotationElementDeltas) {
+        this.annotationElementDeltas = annotationElementDeltas;
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigAnnotationElementDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigAnnotationElementDelta.java
new file mode 100644
index 0000000..cc7a6fc
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigAnnotationElementDelta.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.IAnnotationElementDelta;
+import signature.compare.model.IValueDelta;
+import signature.model.IAnnotationElement;
+
+public class SigAnnotationElementDelta extends SigDelta<IAnnotationElement>
+        implements IAnnotationElementDelta {
+
+    private IValueDelta valueDelta;
+
+    public SigAnnotationElementDelta(IAnnotationElement from,
+            IAnnotationElement to) {
+        super(from, to);
+    }
+
+    public IValueDelta getValueDelta() {
+        return valueDelta;
+    }
+
+    public void setValueDelta(IValueDelta valueDelta) {
+        this.valueDelta = valueDelta;
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigAnnotationFieldDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigAnnotationFieldDelta.java
new file mode 100644
index 0000000..90fcd7b
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigAnnotationFieldDelta.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.IAnnotationFieldDelta;
+import signature.compare.model.IValueDelta;
+import signature.model.IAnnotationField;
+
+public class SigAnnotationFieldDelta extends SigMemberDelta<IAnnotationField>
+        implements IAnnotationFieldDelta {
+
+    private IValueDelta defaultValueDelta;
+
+    public SigAnnotationFieldDelta(IAnnotationField from, IAnnotationField to) {
+        super(from, to);
+    }
+
+    public IValueDelta getDefaultValueDelta() {
+        return defaultValueDelta;
+    }
+
+    public void setDefaultValueDelta(IValueDelta valueDelta) {
+        this.defaultValueDelta = valueDelta;
+    }
+
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigApiDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigApiDelta.java
new file mode 100644
index 0000000..bc2bd56
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigApiDelta.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.IApiDelta;
+import signature.compare.model.IPackageDelta;
+import signature.model.IApi;
+
+import java.util.Set;
+
+public class SigApiDelta extends SigDelta<IApi> implements IApiDelta {
+
+    private Set<IPackageDelta> packageDeltas;
+
+    public SigApiDelta(IApi from, IApi to) {
+        super(from, to);
+    }
+
+    public Set<IPackageDelta> getPackageDeltas() {
+        return packageDeltas;
+    }
+
+    public void setPackageDeltas(Set<IPackageDelta> packageDeltas) {
+        this.packageDeltas = packageDeltas;
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigArrayTypeDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigArrayTypeDelta.java
new file mode 100644
index 0000000..5d47293
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigArrayTypeDelta.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.IArrayTypeDelta;
+import signature.compare.model.ITypeReferenceDelta;
+import signature.model.IArrayType;
+
+public class SigArrayTypeDelta extends SigTypeDelta<IArrayType> implements
+        IArrayTypeDelta {
+
+    private ITypeReferenceDelta<?> componentTypeDelta;
+
+    public SigArrayTypeDelta(IArrayType from, IArrayType to) {
+        super(from, to);
+    }
+
+    public ITypeReferenceDelta<?> getComponentTypeDelta() {
+        return componentTypeDelta;
+    }
+
+    public void setComponentTypeDelta(
+            ITypeReferenceDelta<?> componentTypeDelta) {
+        this.componentTypeDelta = componentTypeDelta;
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigClassDefinitionDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigClassDefinitionDelta.java
new file mode 100644
index 0000000..4034351
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigClassDefinitionDelta.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.IAnnotationDelta;
+import signature.compare.model.IAnnotationFieldDelta;
+import signature.compare.model.IClassDefinitionDelta;
+import signature.compare.model.IConstructorDelta;
+import signature.compare.model.IEnumConstantDelta;
+import signature.compare.model.IFieldDelta;
+import signature.compare.model.IMethodDelta;
+import signature.compare.model.IModifierDelta;
+import signature.compare.model.ITypeReferenceDelta;
+import signature.compare.model.ITypeVariableDefinitionDelta;
+import signature.model.IClassDefinition;
+
+import java.util.Set;
+
+public class SigClassDefinitionDelta extends
+        SigTypeDefinitionDelta<IClassDefinition> implements
+        IClassDefinitionDelta {
+
+    public SigClassDefinitionDelta(IClassDefinition from, IClassDefinition to) {
+        super(from, to);
+    }
+
+    private Set<IAnnotationFieldDelta> annotationFieldDeltas;
+    private Set<IConstructorDelta> constructorDeltas;
+    private Set<IEnumConstantDelta> enumConstantDeltas;
+    private Set<IFieldDelta> fieldDeltas;
+    private Set<ITypeReferenceDelta<?>> interfaceDeltas;
+    private Set<IMethodDelta> methodDeltas;
+    private Set<IModifierDelta> modifierDeltas;
+    private ITypeReferenceDelta<?> superClassDelta;
+    private Set<IAnnotationDelta> annotationDeltas;
+    private Set<ITypeVariableDefinitionDelta> typeVariableDeltas;
+
+    public Set<IAnnotationFieldDelta> getAnnotationFieldDeltas() {
+        return annotationFieldDeltas;
+    }
+
+    public void setAnnotationFieldDeltas(
+            Set<IAnnotationFieldDelta> annotationFieldDeltas) {
+        this.annotationFieldDeltas = annotationFieldDeltas;
+    }
+
+    public Set<IConstructorDelta> getConstructorDeltas() {
+        return constructorDeltas;
+    }
+
+    public void setConstructorDeltas(
+            Set<IConstructorDelta> constructorDeltas) {
+        this.constructorDeltas = constructorDeltas;
+    }
+
+    public Set<IEnumConstantDelta> getEnumConstantDeltas() {
+        return enumConstantDeltas;
+    }
+
+    public void setEnumConstantDeltas(
+            Set<IEnumConstantDelta> enumConstantDeltas) {
+        this.enumConstantDeltas = enumConstantDeltas;
+    }
+
+    public Set<IFieldDelta> getFieldDeltas() {
+        return fieldDeltas;
+    }
+
+    public void setFieldDeltas(Set<IFieldDelta> fieldDeltas) {
+        this.fieldDeltas = fieldDeltas;
+    }
+
+    public Set<ITypeReferenceDelta<?>> getInterfaceDeltas() {
+        return interfaceDeltas;
+    }
+
+    public void setInterfaceDeltas(
+            Set<ITypeReferenceDelta<?>> interfaceDeltas) {
+        this.interfaceDeltas = interfaceDeltas;
+    }
+
+    public Set<IMethodDelta> getMethodDeltas() {
+        return methodDeltas;
+    }
+
+    public void setMethodDeltas(Set<IMethodDelta> methodDeltas) {
+        this.methodDeltas = methodDeltas;
+    }
+
+    public Set<IModifierDelta> getModifierDeltas() {
+        return modifierDeltas;
+    }
+
+    public void setModifierDeltas(Set<IModifierDelta> modifierDeltas) {
+        this.modifierDeltas = modifierDeltas;
+    }
+
+    public ITypeReferenceDelta<?> getSuperClassDelta() {
+        return superClassDelta;
+    }
+
+    public void setSuperClassDelta(ITypeReferenceDelta<?> superClassDelta) {
+        this.superClassDelta = superClassDelta;
+    }
+
+    public Set<IAnnotationDelta> getAnnotationDeltas() {
+        return annotationDeltas;
+    }
+
+    public void setAnnotationDeltas(Set<IAnnotationDelta> annotationDeltas) {
+        this.annotationDeltas = annotationDeltas;
+    }
+
+    public Set<ITypeVariableDefinitionDelta> getTypeVariableDeltas() {
+        return typeVariableDeltas;
+    }
+
+    public void setTypeVariableDeltas(
+            Set<ITypeVariableDefinitionDelta> typeVariableDeltas) {
+        this.typeVariableDeltas = typeVariableDeltas;
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigClassReferenceDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigClassReferenceDelta.java
new file mode 100644
index 0000000..18741eb
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigClassReferenceDelta.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.ITypeReferenceDelta;
+import signature.model.IClassReference;
+
+public class SigClassReferenceDelta extends SigDelta<IClassReference>
+        implements ITypeReferenceDelta<IClassReference> {
+
+    public SigClassReferenceDelta(IClassReference from, IClassReference to) {
+        super(from, to);
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigConstructorDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigConstructorDelta.java
new file mode 100644
index 0000000..9a7cf70
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigConstructorDelta.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.IConstructorDelta;
+import signature.model.IConstructor;
+
+public class SigConstructorDelta extends SigExecutableMemberDelta<IConstructor>
+        implements IConstructorDelta {
+
+    public SigConstructorDelta(IConstructor from, IConstructor to) {
+        super(from, to);
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigDelta.java
new file mode 100644
index 0000000..933bf00
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigDelta.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import signature.compare.model.IDelta;
+import signature.compare.model.DeltaType;
+
+public abstract class SigDelta<T> implements IDelta<T> {
+    private T from;
+    private T to;
+
+    public SigDelta(T from, T to) {
+        this.from = from;
+        this.to = to;
+    }
+
+    public final T getFrom() {
+        return from;
+    }
+
+    public final T getTo() {
+        return to;
+    }
+
+    public final DeltaType getType() {
+        if (from == null && to != null) {
+            return DeltaType.ADDED;
+        }
+        if (from != null && to == null) {
+            return DeltaType.REMOVED;
+        }
+        return DeltaType.CHANGED;
+    }
+
+    private static <T extends IDelta<?>> Set<T> getDeltas(Set<T> deltas,
+            DeltaType type) {
+        Set<T> addedElements = new HashSet<T>();
+        for (T delta : deltas) {
+            if (type.equals(delta.getType())) {
+                addedElements.add(delta);
+            }
+        }
+        return addedElements;
+    }
+
+    public static <T extends IDelta<?>> Set<T> getAdded(Set<T> deltas) {
+        return getDeltas(deltas, DeltaType.ADDED);
+    }
+
+    public static <T extends IDelta<?>> Set<T> getRemoved(Set<T> deltas) {
+        return getDeltas(deltas, DeltaType.REMOVED);
+    }
+
+    public static <T extends IDelta<?>> Set<T> getChanged(Set<T> deltas) {
+        return getDeltas(deltas, DeltaType.CHANGED);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append(getClass().getSimpleName());
+        builder.append(":\n");
+
+        List<Field> allFields = new LinkedList<Field>();
+
+        Class<?> actualClass = getClass();
+
+        // add all fields / super classes also
+        do {
+            allFields.addAll(Arrays.asList(actualClass.getDeclaredFields()));
+            actualClass = actualClass.getSuperclass();
+        } while (actualClass != Object.class);
+
+        builder.append("from: ");
+        builder.append(from);
+        builder.append("\nto:    ");
+        builder.append(to);
+        builder.append("\n");
+        try {
+            for (Field field : allFields) {
+                if (!ignore.contains(field.getName())) {
+                    field.setAccessible(true);
+                    Object delta = field.get(this);
+                    if (delta != null) {
+                        builder.append(field.getName());
+                        builder.append(":\n");
+                        builder.append(delta);
+                    }
+                }
+            }
+        } catch (IllegalArgumentException e) {
+            e.printStackTrace();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        } catch (SecurityException e) {
+            e.printStackTrace();
+        }
+
+        return builder.toString();
+    }
+
+    private static Set<String> ignore = new HashSet<String>();
+    {
+        ignore.add("from");
+        ignore.add("to");
+        ignore.add("reason");
+        ignore.add("ignore"); // =)
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigEnumConstantDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigEnumConstantDelta.java
new file mode 100644
index 0000000..3a7f9e7
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigEnumConstantDelta.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.IEnumConstantDelta;
+import signature.compare.model.IValueDelta;
+import signature.model.IEnumConstant;
+
+public class SigEnumConstantDelta extends SigMemberDelta<IEnumConstant>
+        implements IEnumConstantDelta {
+
+    private IValueDelta ordinalDelta;
+
+    public SigEnumConstantDelta(IEnumConstant from, IEnumConstant to) {
+        super(from, to);
+    }
+
+    public IValueDelta getOrdinalDelta() {
+        return ordinalDelta;
+    }
+
+    public void setOrdinalDelta(IValueDelta ordinalDelta) {
+        this.ordinalDelta = ordinalDelta;
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigExecutableMemberDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigExecutableMemberDelta.java
new file mode 100644
index 0000000..1d871e4
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigExecutableMemberDelta.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.IAnnotationDelta;
+import signature.compare.model.IExecutableMemberDelta;
+import signature.compare.model.IModifierDelta;
+import signature.compare.model.IParameterDelta;
+import signature.compare.model.ITypeReferenceDelta;
+import signature.compare.model.ITypeVariableDefinitionDelta;
+import signature.model.IExecutableMember;
+
+import java.util.Set;
+
+public abstract class SigExecutableMemberDelta<T extends IExecutableMember>
+        extends SigDelta<T> implements IExecutableMemberDelta<T> {
+
+    private Set<ITypeReferenceDelta<?>> exceptionDeltas;
+    private Set<IModifierDelta> modifierDeltas;
+    private Set<ITypeVariableDefinitionDelta> typeVariableDeltas;
+    private Set<IAnnotationDelta> annotationDeltas;
+    private Set<IParameterDelta> parameterDeltas;
+
+    public SigExecutableMemberDelta(T from, T to) {
+        super(from, to);
+    }
+
+    public Set<ITypeReferenceDelta<?>> getExceptionDeltas() {
+        return exceptionDeltas;
+    }
+
+    public void setExceptionDeltas(
+            Set<ITypeReferenceDelta<?>> exceptionDeltas) {
+        this.exceptionDeltas = exceptionDeltas;
+    }
+
+    public Set<IModifierDelta> getModifierDeltas() {
+        return modifierDeltas;
+    }
+
+    public void setModifierDeltas(Set<IModifierDelta> modifierDeltas) {
+        this.modifierDeltas = modifierDeltas;
+    }
+
+    public Set<ITypeVariableDefinitionDelta> getTypeVariableDeltas() {
+        return typeVariableDeltas;
+    }
+
+    public void setTypeVariableDeltas(
+            Set<ITypeVariableDefinitionDelta> typeVariableDeltas) {
+        this.typeVariableDeltas = typeVariableDeltas;
+    }
+
+    public Set<IAnnotationDelta> getAnnotationDeltas() {
+        return annotationDeltas;
+    }
+
+    public void setAnnotationDeltas(Set<IAnnotationDelta> annotationDeltas) {
+        this.annotationDeltas = annotationDeltas;
+    }
+
+    public Set<IParameterDelta> getParameterDeltas() {
+        return parameterDeltas;
+    }
+
+    public void setParameterDeltas(Set<IParameterDelta> parameterDeltas) {
+        this.parameterDeltas = parameterDeltas;
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigFieldDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigFieldDelta.java
new file mode 100644
index 0000000..6807eea
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigFieldDelta.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.IFieldDelta;
+import signature.model.IField;
+
+public class SigFieldDelta extends SigMemberDelta<IField> implements
+        IFieldDelta {
+
+    public SigFieldDelta(IField from, IField to) {
+        super(from, to);
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigGenericDeclarationDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigGenericDeclarationDelta.java
new file mode 100644
index 0000000..d377b95
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigGenericDeclarationDelta.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.IGenericDeclarationDelta;
+import signature.model.IGenericDeclaration;
+
+public class SigGenericDeclarationDelta extends SigDelta<IGenericDeclaration>
+        implements IGenericDeclarationDelta {
+
+    public SigGenericDeclarationDelta(IGenericDeclaration from,
+            IGenericDeclaration to) {
+        super(from, to);
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigMemberDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigMemberDelta.java
new file mode 100644
index 0000000..2c5e9cb
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigMemberDelta.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import java.util.Set;
+
+import signature.compare.model.IAnnotationDelta;
+import signature.compare.model.IMemberDelta;
+import signature.compare.model.IModifierDelta;
+import signature.compare.model.ITypeReferenceDelta;
+import signature.model.IField;
+
+public abstract class SigMemberDelta<T extends IField> extends SigDelta<T>
+        implements IMemberDelta<T> {
+
+    private Set<IModifierDelta> modifierDeltas;
+    private ITypeReferenceDelta<?> typeDelta;
+    private Set<IAnnotationDelta> annotationDeltas;
+
+
+    public SigMemberDelta(T from, T to) {
+        super(from, to);
+    }
+
+    public Set<IModifierDelta> getModifierDeltas() {
+        return modifierDeltas;
+    }
+
+    public void setModifierDeltas(Set<IModifierDelta> modifierDeltas) {
+        this.modifierDeltas = modifierDeltas;
+    }
+
+    public ITypeReferenceDelta<?> getTypeDelta() {
+        return typeDelta;
+    }
+
+    public void setTypeDelta(ITypeReferenceDelta<?> typeDelta) {
+        this.typeDelta = typeDelta;
+    }
+
+    public Set<IAnnotationDelta> getAnnotationDeltas() {
+        return annotationDeltas;
+    }
+
+    public void setAnnotationDeltas(Set<IAnnotationDelta> annotationDeltas) {
+        this.annotationDeltas = annotationDeltas;
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigMethodDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigMethodDelta.java
new file mode 100644
index 0000000..0a3fb2f
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigMethodDelta.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.IMethodDelta;
+import signature.compare.model.ITypeReferenceDelta;
+import signature.model.IMethod;
+
+public class SigMethodDelta extends SigExecutableMemberDelta<IMethod> implements
+        IMethodDelta {
+
+    private ITypeReferenceDelta<?> returnTypeDelta;
+
+    public SigMethodDelta(IMethod from, IMethod to) {
+        super(from, to);
+    }
+
+    public ITypeReferenceDelta<?> getReturnTypeDelta() {
+        return returnTypeDelta;
+    }
+
+    public void setReturnTypeDelta(ITypeReferenceDelta<?> returnTypeDelta) {
+        this.returnTypeDelta = returnTypeDelta;
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigModifierDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigModifierDelta.java
new file mode 100644
index 0000000..aa5e380
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigModifierDelta.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.IModifierDelta;
+import signature.model.Modifier;
+
+public class SigModifierDelta extends SigDelta<Modifier> implements
+        IModifierDelta {
+
+    public SigModifierDelta(Modifier from, Modifier to) {
+        super(from, to);
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigPackageDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigPackageDelta.java
new file mode 100644
index 0000000..0f368f6
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigPackageDelta.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import java.util.Set;
+
+import signature.compare.model.IAnnotationDelta;
+import signature.compare.model.IClassDefinitionDelta;
+import signature.compare.model.IPackageDelta;
+import signature.model.IPackage;
+
+public class SigPackageDelta extends SigDelta<IPackage> implements
+        IPackageDelta {
+
+    private Set<IClassDefinitionDelta> classDeltas;
+    private Set<IAnnotationDelta> annotationDeltas;
+
+    public SigPackageDelta(IPackage from, IPackage to) {
+        super(from, to);
+    }
+
+    public Set<IClassDefinitionDelta> getClassDeltas() {
+        return classDeltas;
+    }
+
+    public void setClassDeltas(Set<IClassDefinitionDelta> classDeltas) {
+        this.classDeltas = classDeltas;
+    }
+
+    public Set<IAnnotationDelta> getAnnotationDeltas() {
+        return annotationDeltas;
+    }
+
+    public void setAnnotationDeltas(Set<IAnnotationDelta> annotationDeltas) {
+        this.annotationDeltas = annotationDeltas;
+    }
+
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigParameterDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigParameterDelta.java
new file mode 100644
index 0000000..aee6466
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigParameterDelta.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import java.util.Set;
+
+import signature.compare.model.IAnnotationDelta;
+import signature.compare.model.IParameterDelta;
+import signature.compare.model.ITypeReferenceDelta;
+import signature.model.IParameter;
+
+public class SigParameterDelta extends SigDelta<IParameter> implements
+        IParameterDelta {
+
+    private ITypeReferenceDelta<?> typeDelta;
+    private Set<IAnnotationDelta> annotationDeltas;
+
+    public SigParameterDelta(IParameter from, IParameter to) {
+        super(from, to);
+    }
+
+    public ITypeReferenceDelta<?> getTypeDelta() {
+        return typeDelta;
+    }
+
+    public void setTypeDelta(ITypeReferenceDelta<?> typeDelta) {
+        this.typeDelta = typeDelta;
+    }
+
+    public Set<IAnnotationDelta> getAnnotationDeltas() {
+        return annotationDeltas;
+    }
+
+    public void setAnnotationDeltas(Set<IAnnotationDelta> annotationDeltas) {
+        this.annotationDeltas = annotationDeltas;
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigParameterizedTypeDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigParameterizedTypeDelta.java
new file mode 100644
index 0000000..08fbc21
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigParameterizedTypeDelta.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import java.util.Set;
+
+import signature.compare.model.IParameterizedTypeDelta;
+import signature.compare.model.ITypeReferenceDelta;
+import signature.model.IParameterizedType;
+
+public class SigParameterizedTypeDelta extends SigTypeDelta<IParameterizedType>
+        implements IParameterizedTypeDelta {
+
+    private ITypeReferenceDelta<?> ownerTypeDelta;
+    private ITypeReferenceDelta<?> rawTypeDelta;
+    private Set<ITypeReferenceDelta<?>> argumentTypeDeltas;
+
+    public SigParameterizedTypeDelta(IParameterizedType from,
+            IParameterizedType to) {
+        super(from, to);
+    }
+
+    public ITypeReferenceDelta<?> getOwnerTypeDelta() {
+        return ownerTypeDelta;
+    }
+
+    public void setOwnerTypeDelta(ITypeReferenceDelta<?> ownerTypeDelta) {
+        this.ownerTypeDelta = ownerTypeDelta;
+    }
+
+    public ITypeReferenceDelta<?> getRawTypeDelta() {
+        return rawTypeDelta;
+    }
+
+    public void setRawTypeDelta(ITypeReferenceDelta<?> rawTypeDelta) {
+        this.rawTypeDelta = rawTypeDelta;
+    }
+
+    public Set<ITypeReferenceDelta<?>> getArgumentTypeDeltas() {
+        return argumentTypeDeltas;
+    }
+
+    public void setArgumentTypeDeltas(
+            Set<ITypeReferenceDelta<?>> argumentTypeDeltas) {
+        this.argumentTypeDeltas = argumentTypeDeltas;
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigPrimitiveTypeDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigPrimitiveTypeDelta.java
new file mode 100644
index 0000000..03be8fa
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigPrimitiveTypeDelta.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.IPrimitiveTypeDelta;
+import signature.model.IPrimitiveType;
+
+public class SigPrimitiveTypeDelta extends SigTypeDelta<IPrimitiveType>
+        implements IPrimitiveTypeDelta {
+
+    public SigPrimitiveTypeDelta(IPrimitiveType from, IPrimitiveType to) {
+        super(from, to);
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigTypeDefinitionDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigTypeDefinitionDelta.java
new file mode 100644
index 0000000..c0bff8e
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigTypeDefinitionDelta.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.ITypeDefinitionDelta;
+import signature.model.ITypeDefinition;
+
+public abstract class SigTypeDefinitionDelta<T extends ITypeDefinition> extends
+        SigDelta<T> implements ITypeDefinitionDelta<T> {
+
+    public SigTypeDefinitionDelta(T from, T to) {
+        super(from, to);
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigTypeDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigTypeDelta.java
new file mode 100644
index 0000000..718258c
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigTypeDelta.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.ITypeReferenceDelta;
+import signature.model.ITypeReference;
+
+public class SigTypeDelta<T extends ITypeReference> extends SigDelta<T>
+        implements ITypeReferenceDelta<T> {
+
+    public SigTypeDelta(T from, T to) {
+        super(from, to);
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigTypeVariableDefinitionDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigTypeVariableDefinitionDelta.java
new file mode 100644
index 0000000..348c728
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigTypeVariableDefinitionDelta.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.IGenericDeclarationDelta;
+import signature.compare.model.ITypeVariableDefinitionDelta;
+import signature.compare.model.IUpperBoundsDelta;
+import signature.model.ITypeVariableDefinition;
+
+public class SigTypeVariableDefinitionDelta extends
+        SigDelta<ITypeVariableDefinition> implements
+        ITypeVariableDefinitionDelta {
+
+    private IUpperBoundsDelta upperBoundsDelta;
+    private IGenericDeclarationDelta genericDeclarationDelta;
+
+    public SigTypeVariableDefinitionDelta(ITypeVariableDefinition from,
+            ITypeVariableDefinition to) {
+        super(from, to);
+    }
+
+    public IUpperBoundsDelta getUpperBoundsDelta() {
+        return upperBoundsDelta;
+    }
+
+    public void setUpperBoundsDelta(IUpperBoundsDelta upperBoundsDelta) {
+        this.upperBoundsDelta = upperBoundsDelta;
+    }
+
+    public IGenericDeclarationDelta getGenericDeclarationDelta() {
+        return genericDeclarationDelta;
+    }
+
+    public void setGenericDeclarationDelta(
+            IGenericDeclarationDelta genericDeclarationDelta) {
+        this.genericDeclarationDelta = genericDeclarationDelta;
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigTypeVariableReferenceDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigTypeVariableReferenceDelta.java
new file mode 100644
index 0000000..4414a16
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigTypeVariableReferenceDelta.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.IGenericDeclarationDelta;
+import signature.compare.model.ITypeReferenceDelta;
+import signature.model.ITypeVariableReference;
+
+public class SigTypeVariableReferenceDelta extends
+        SigDelta<ITypeVariableReference> implements
+        ITypeReferenceDelta<ITypeVariableReference> {
+
+    private IGenericDeclarationDelta genericDeclarationDelta;
+
+    public SigTypeVariableReferenceDelta(ITypeVariableReference from,
+            ITypeVariableReference to) {
+        super(from, to);
+    }
+
+    public IGenericDeclarationDelta getGenericDeclarationDelta() {
+        return genericDeclarationDelta;
+    }
+
+    public void setGenericDeclarationDelta(
+            IGenericDeclarationDelta genericDeclarationDelta) {
+        this.genericDeclarationDelta = genericDeclarationDelta;
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigUpperBoundsDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigUpperBoundsDelta.java
new file mode 100644
index 0000000..8822b26
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigUpperBoundsDelta.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import java.util.List;
+import java.util.Set;
+
+import signature.compare.model.ITypeReferenceDelta;
+import signature.compare.model.IUpperBoundsDelta;
+import signature.model.ITypeReference;
+
+public class SigUpperBoundsDelta extends SigDelta<List<ITypeReference>>
+        implements IUpperBoundsDelta {
+
+    private ITypeReferenceDelta<?> firstUpperBoundDelta;
+    private Set<ITypeReferenceDelta<?>> remainingUpperBoundDeltas;
+
+    public SigUpperBoundsDelta(List<ITypeReference> from,
+            List<ITypeReference> to) {
+        super(from, to);
+    }
+
+
+    public ITypeReferenceDelta<?> getFirstUpperBoundDelta() {
+        return firstUpperBoundDelta;
+    }
+
+    public void setFirstUpperBoundDelta(
+            ITypeReferenceDelta<?> firstUpperBoundDelta) {
+        this.firstUpperBoundDelta = firstUpperBoundDelta;
+    }
+
+    public Set<ITypeReferenceDelta<?>> getRemainingUpperBoundDeltas() {
+        return remainingUpperBoundDeltas;
+    }
+
+    public void setRemainingUpperBoundDeltas(
+            Set<ITypeReferenceDelta<?>> remainingUpperBoundDeltas) {
+        this.remainingUpperBoundDeltas = remainingUpperBoundDeltas;
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigValueDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigValueDelta.java
new file mode 100644
index 0000000..9521f0e
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigValueDelta.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.IValueDelta;
+
+public class SigValueDelta extends SigDelta<Object> implements IValueDelta {
+
+    public SigValueDelta(Object from, Object to) {
+        super(from, to);
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/impl/SigWildcardTypeDelta.java b/tools/signature-tools/src/signature/compare/model/impl/SigWildcardTypeDelta.java
new file mode 100644
index 0000000..e6cafcb
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/impl/SigWildcardTypeDelta.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.impl;
+
+import signature.compare.model.ITypeReferenceDelta;
+import signature.compare.model.IUpperBoundsDelta;
+import signature.compare.model.IWildcardTypeDelta;
+import signature.model.IWildcardType;
+
+public class SigWildcardTypeDelta extends SigTypeDelta<IWildcardType>
+        implements IWildcardTypeDelta {
+
+    private ITypeReferenceDelta<?> lowerBoundDelta;
+    private IUpperBoundsDelta upperBoundDelta;
+
+    public SigWildcardTypeDelta(IWildcardType from, IWildcardType to) {
+        super(from, to);
+    }
+
+    public ITypeReferenceDelta<?> getLowerBoundDelta() {
+        return lowerBoundDelta;
+    }
+
+    public void setLowerBoundDelta(ITypeReferenceDelta<?> lowerBoundDelta) {
+        this.lowerBoundDelta = lowerBoundDelta;
+    }
+
+    public IUpperBoundsDelta getUpperBoundDelta() {
+        return upperBoundDelta;
+    }
+
+    public void setUpperBoundDelta(IUpperBoundsDelta upperBoundDelta) {
+        this.upperBoundDelta = upperBoundDelta;
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/subst/ArrayTypeProjection.java b/tools/signature-tools/src/signature/compare/model/subst/ArrayTypeProjection.java
new file mode 100644
index 0000000..428146e
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/subst/ArrayTypeProjection.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.subst;
+
+import java.util.Map;
+
+import signature.model.IArrayType;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+import signature.model.impl.SigArrayType;
+
+public class ArrayTypeProjection implements IArrayType {
+
+    private final IArrayType original;
+    private final Map<ITypeVariableDefinition, ITypeReference> mappings;
+
+    public ArrayTypeProjection(IArrayType original,
+            Map<ITypeVariableDefinition, ITypeReference> mappings) {
+        this.original = original;
+        this.mappings = mappings;
+    }
+
+    public ITypeReference getComponentType() {
+        return ViewpointAdapter.substitutedTypeReference(original
+                .getComponentType(), mappings);
+    }
+
+    @Override
+    public int hashCode() {
+        return SigArrayType.hashCode(this);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        return SigArrayType.equals(this, obj);
+    }
+
+    @Override
+    public String toString() {
+        return "(" + SigArrayType.toString(this) + " : " + mappings + " )";
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/subst/ClassProjection.java b/tools/signature-tools/src/signature/compare/model/subst/ClassProjection.java
new file mode 100644
index 0000000..630d102
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/subst/ClassProjection.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.subst;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import signature.model.IAnnotation;
+import signature.model.IAnnotationField;
+import signature.model.IClassDefinition;
+import signature.model.IConstructor;
+import signature.model.IEnumConstant;
+import signature.model.IField;
+import signature.model.IMethod;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+import signature.model.Kind;
+import signature.model.Modifier;
+import signature.model.impl.SigClassDefinition;
+
+public class ClassProjection implements IClassDefinition {
+
+    private final IClassDefinition original;
+    private final Map<ITypeVariableDefinition, ITypeReference> substitutions;
+
+    public ClassProjection(IClassDefinition original,
+            Map<ITypeVariableDefinition, ITypeReference> mapping) {
+        this.original = original;
+        this.substitutions = mapping;
+    }
+
+    public Set<IAnnotationField> getAnnotationFields() {
+        throw new UnsupportedOperationException();
+    }
+
+    public Set<IAnnotation> getAnnotations() {
+        throw new UnsupportedOperationException();
+    }
+
+    public Set<IConstructor> getConstructors() {
+        throw new UnsupportedOperationException();
+    }
+
+    public IClassDefinition getDeclaringClass() {
+        throw new UnsupportedOperationException();
+    }
+
+    public Set<IEnumConstant> getEnumConstants() {
+        throw new UnsupportedOperationException();
+    }
+
+    public Set<IField> getFields() {
+        throw new UnsupportedOperationException();
+    }
+
+    public Set<IClassDefinition> getInnerClasses() {
+        throw new UnsupportedOperationException();
+    }
+
+    Set<ITypeReference> interfaces = null;
+
+    public Set<ITypeReference> getInterfaces() {
+        if (interfaces == null) {
+            Set<ITypeReference> originalInterfaces = original.getInterfaces();
+            if (originalInterfaces == null) {
+                interfaces = Collections.emptySet();
+            } else {
+                interfaces = new HashSet<ITypeReference>();
+                for (ITypeReference interfaze : originalInterfaces) {
+                    interfaces.add(ViewpointAdapter.substitutedTypeReference(
+                            interfaze, substitutions));
+                }
+                interfaces = Collections.unmodifiableSet(interfaces);
+            }
+        }
+        return interfaces;
+    }
+
+    public Kind getKind() {
+        return original.getKind();
+    }
+
+
+    Set<IMethod> methods = null;
+
+    public Set<IMethod> getMethods() {
+        if (methods == null) {
+            Set<IMethod> originalMethods = original.getMethods();
+            if (originalMethods == null) {
+                methods = Collections.emptySet();
+            } else {
+                methods = new HashSet<IMethod>();
+                for (IMethod m : original.getMethods()) {
+                    methods.add(new MethodProjection(m, substitutions));
+                }
+                methods = Collections.unmodifiableSet(methods);
+            }
+        }
+        return methods;
+    }
+
+    public Set<Modifier> getModifiers() {
+        return original.getModifiers();
+    }
+
+    public String getName() {
+        return original.getName();
+    }
+
+    public List<String> getPackageFragments() {
+        return original.getPackageFragments();
+    }
+
+    public String getPackageName() {
+        return original.getPackageName();
+    }
+
+    public String getQualifiedName() {
+        return original.getQualifiedName();
+    }
+
+    private boolean superClassInit = false;
+    private ITypeReference superClass = null;
+
+    public ITypeReference getSuperClass() {
+        if (!superClassInit) {
+            ITypeReference originalSuperClass = original.getSuperClass();
+            if (originalSuperClass != null) {
+                superClass = ViewpointAdapter.substitutedTypeReference(original
+                        .getSuperClass(), substitutions);
+            }
+            superClassInit = true;
+        }
+        return superClass;
+    }
+
+    // Definitions of type variables are not substituted
+    public List<ITypeVariableDefinition> getTypeParameters() {
+        return original.getTypeParameters();
+    }
+
+    @Override
+    public int hashCode() {
+        return SigClassDefinition.hashCode(this);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        return SigClassDefinition.equals(this, obj);
+    }
+
+    @Override
+    public String toString() {
+        return "(" + SigClassDefinition.toString(this) + " : " + substitutions
+                + " )";
+    }
+
+}
diff --git a/tools/signature-tools/src/signature/compare/model/subst/ClassReferenceProjection.java b/tools/signature-tools/src/signature/compare/model/subst/ClassReferenceProjection.java
new file mode 100644
index 0000000..648ccf8
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/subst/ClassReferenceProjection.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.subst;
+
+import signature.model.IClassDefinition;
+import signature.model.IClassReference;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+import signature.model.impl.SigClassReference;
+
+import java.util.Map;
+
+public class ClassReferenceProjection implements IClassReference {
+
+    private final IClassReference original;
+    private final Map<ITypeVariableDefinition, ITypeReference> mappings;
+
+    public ClassReferenceProjection(IClassReference original,
+            Map<ITypeVariableDefinition, ITypeReference> mappings) {
+        this.original = original;
+        this.mappings = mappings;
+    }
+
+    public IClassDefinition getClassDefinition() {
+        return new ClassProjection(original.getClassDefinition(), mappings);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        return SigClassReference.equals(this, obj);
+    }
+
+    @Override
+    public int hashCode() {
+        return SigClassReference.hashCode(this);
+    }
+
+    @Override
+    public String toString() {
+        return "(" + SigClassReference.toString(this) + " : " + mappings + " )";
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/subst/ConstructorProjection.java b/tools/signature-tools/src/signature/compare/model/subst/ConstructorProjection.java
new file mode 100644
index 0000000..1ffd616
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/subst/ConstructorProjection.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.subst;
+
+import signature.model.IConstructor;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+
+import java.util.Map;
+
+public class ConstructorProjection extends ExecutableMemberProjection implements
+        IConstructor {
+
+    public ConstructorProjection(IConstructor original,
+            Map<ITypeVariableDefinition, ITypeReference> mappings) {
+        super(original, mappings);
+    }
+
+}
diff --git a/tools/signature-tools/src/signature/compare/model/subst/ExecutableMemberProjection.java b/tools/signature-tools/src/signature/compare/model/subst/ExecutableMemberProjection.java
new file mode 100644
index 0000000..f96ac54
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/subst/ExecutableMemberProjection.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.subst;
+
+import signature.model.IAnnotation;
+import signature.model.IClassDefinition;
+import signature.model.IExecutableMember;
+import signature.model.IParameter;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+import signature.model.Modifier;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public abstract class ExecutableMemberProjection implements IExecutableMember {
+
+    private final IExecutableMember original;
+    private final Map<ITypeVariableDefinition, ITypeReference> mappings;
+
+    public ExecutableMemberProjection(IExecutableMember original,
+            Map<ITypeVariableDefinition, ITypeReference> mappings) {
+        this.original = original;
+        this.mappings = mappings;
+    }
+
+    public Set<IAnnotation> getAnnotations() {
+        return original.getAnnotations();
+    }
+
+    public IClassDefinition getDeclaringClass() {
+        throw new UnsupportedOperationException();
+    }
+
+    public Set<ITypeReference> getExceptions() {
+        return ViewpointAdapter.substitutedTypeReferences(original
+                .getExceptions(), mappings);
+    }
+
+    public Set<Modifier> getModifiers() {
+        return original.getModifiers();
+    }
+
+    public String getName() {
+        return original.getName();
+    }
+
+    public List<IParameter> getParameters() {
+        List<IParameter> result = new LinkedList<IParameter>();
+        for (IParameter parameter : original.getParameters()) {
+            result.add(new ParameterProjection(parameter, mappings));
+        }
+        return result;
+    }
+
+    public List<ITypeVariableDefinition> getTypeParameters() {
+        // FIXME bounds need to be substituted ?
+        return original.getTypeParameters();
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/subst/MethodProjection.java b/tools/signature-tools/src/signature/compare/model/subst/MethodProjection.java
new file mode 100644
index 0000000..c98fb09
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/subst/MethodProjection.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.subst;
+
+import signature.model.IMethod;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+import signature.model.impl.SigMethod;
+
+import java.util.Map;
+
+public class MethodProjection extends ExecutableMemberProjection implements
+        IMethod {
+
+    private final IMethod original;
+    private Map<ITypeVariableDefinition, ITypeReference> mappings;
+
+    public MethodProjection(IMethod original,
+            Map<ITypeVariableDefinition, ITypeReference> mappings) {
+        super(original, mappings);
+        this.mappings = mappings;
+        this.original = original;
+    }
+
+    public ITypeReference getReturnType() {
+        return ViewpointAdapter.substitutedTypeReference(original
+                .getReturnType(), mappings);
+    }
+
+    @Override
+    public String toString() {
+        return "(" + SigMethod.toString(this) + " : " + mappings + " )";
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/subst/ParameterProjection.java b/tools/signature-tools/src/signature/compare/model/subst/ParameterProjection.java
new file mode 100644
index 0000000..9c48ab7
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/subst/ParameterProjection.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.subst;
+
+import signature.model.IAnnotation;
+import signature.model.IParameter;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+
+import java.util.Map;
+import java.util.Set;
+
+public class ParameterProjection implements IParameter {
+    private IParameter original;
+    private Map<ITypeVariableDefinition, ITypeReference> mappings;
+
+    public ParameterProjection(IParameter original,
+            Map<ITypeVariableDefinition, ITypeReference> mappings) {
+        this.original = original;
+        this.mappings = mappings;
+    }
+
+    public Set<IAnnotation> getAnnotations() {
+        return original.getAnnotations();
+    }
+
+    public ITypeReference getType() {
+        return ViewpointAdapter.substitutedTypeReference(original.getType(),
+                mappings);
+    }
+
+    @Override
+    public String toString() {
+        return getType().toString();
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/subst/ParameterizedTypeProjection.java b/tools/signature-tools/src/signature/compare/model/subst/ParameterizedTypeProjection.java
new file mode 100644
index 0000000..59836db
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/subst/ParameterizedTypeProjection.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.subst;
+
+import signature.model.IClassReference;
+import signature.model.IParameterizedType;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+import signature.model.impl.SigParameterizedType;
+
+import java.util.List;
+import java.util.Map;
+
+public class ParameterizedTypeProjection implements IParameterizedType {
+
+    private final IParameterizedType original;
+
+    private final Map<ITypeVariableDefinition, ITypeReference> mappings;
+
+    public ParameterizedTypeProjection(IParameterizedType original,
+            Map<ITypeVariableDefinition, ITypeReference> mappings) {
+        this.original = original;
+        this.mappings = mappings;
+    }
+
+    public ITypeReference getOwnerType() {
+        ITypeReference ownerType = original.getOwnerType();
+        if (ownerType == null) {
+            return null;
+        }
+        return ViewpointAdapter.substitutedTypeReference(ownerType, mappings);
+    }
+
+    private IClassReference rawType = null;
+
+    /**
+     * Returns the raw type with substituted type variables.
+     * 
+     * @return the raw type with substituted type variables
+     */
+    public IClassReference getRawType() {
+        if (rawType == null) {
+            rawType = (IClassReference) ViewpointAdapter
+                    .substitutedTypeReference(original.getRawType(),
+                            ViewpointAdapter.createTypeMapping(this, original
+                                    .getRawType().getClassDefinition()));
+        }
+        return rawType;
+    }
+
+    private List<ITypeReference> arguments = null;
+
+    public List<ITypeReference> getTypeArguments() {
+        if (arguments == null) {
+            arguments = ViewpointAdapter.substitutedTypeReferences(original
+                    .getTypeArguments(), mappings);
+        }
+        return arguments;
+    }
+
+    @Override
+    public int hashCode() {
+        return SigParameterizedType.hashCode(this);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        return SigParameterizedType.equals(this, obj);
+    }
+
+    @Override
+    public String toString() {
+        return SigParameterizedType.toString(this);
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/subst/ViewpointAdapter.java b/tools/signature-tools/src/signature/compare/model/subst/ViewpointAdapter.java
new file mode 100644
index 0000000..88f457f
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/subst/ViewpointAdapter.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.subst;
+
+import signature.model.IArrayType;
+import signature.model.IClassDefinition;
+import signature.model.IClassReference;
+import signature.model.IParameterizedType;
+import signature.model.IPrimitiveType;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+import signature.model.ITypeVariableReference;
+import signature.model.IWildcardType;
+import signature.model.impl.SigClassReference;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class ViewpointAdapter {
+
+    static Map<ITypeVariableDefinition, ITypeReference> createTypeMapping(
+            IParameterizedType paramameterizedType,
+            IClassDefinition parameterizedTypeDefinition) {
+        List<ITypeVariableDefinition> typeParameters =
+                parameterizedTypeDefinition.getTypeParameters();
+        List<ITypeReference> actualTypeArguments = paramameterizedType
+                .getTypeArguments();
+        if (actualTypeArguments == null || typeParameters == null) {
+            return Collections.emptyMap();
+        }
+        Map<ITypeVariableDefinition, ITypeReference> substitution =
+                new HashMap<ITypeVariableDefinition, ITypeReference>();
+        Iterator<ITypeVariableDefinition> paramsIterator = typeParameters
+                .iterator();
+        Iterator<ITypeReference> argumentsIterator = actualTypeArguments
+                .iterator();
+        while (paramsIterator.hasNext() && argumentsIterator.hasNext()) {
+            substitution.put(paramsIterator.next(), argumentsIterator.next());
+        }
+        return substitution;
+    }
+
+    public static Set<ITypeReference> substitutedTypeReferences(
+            Set<ITypeReference> original,
+            Map<ITypeVariableDefinition, ITypeReference> mappings) {
+        List<ITypeReference> result = new ArrayList<ITypeReference>(original);
+        return new HashSet<ITypeReference>(substitutedTypeReferences(result,
+                mappings));
+    }
+
+    public static List<ITypeReference> substitutedTypeReferences(
+            List<ITypeReference> original,
+            Map<ITypeVariableDefinition, ITypeReference> mappings) {
+        List<ITypeReference> result = new ArrayList<ITypeReference>(original
+                .size());
+        for (ITypeReference typeReference : original) {
+            result.add(substitutedTypeReference(typeReference, mappings));
+        }
+        return result;
+    }
+
+    public static ITypeReference substitutedTypeReference(
+            ITypeReference original,
+            Map<ITypeVariableDefinition, ITypeReference> mappings) {
+        ITypeReference type = original;
+        if (type instanceof IClassReference) {
+            return new ClassReferenceProjection((IClassReference) original,
+                    mappings);
+        } else if (type instanceof IPrimitiveType) {
+            return type;
+        } else if (type instanceof IArrayType) {
+            return new ArrayTypeProjection((IArrayType) type, mappings);
+        } else if (type instanceof IParameterizedType) {
+            return new ParameterizedTypeProjection((IParameterizedType) type,
+                    mappings);
+        } else if (type instanceof IWildcardType) {
+            return new WildcardTypeProjection((IWildcardType) type, mappings);
+        } else if (type instanceof ITypeVariableReference) {
+            // here happens the substitution
+            ITypeReference subst = mappings.get(((ITypeVariableReference) type)
+                    .getTypeVariableDefinition());
+            return subst != null ? subst : type;
+        }
+        throw new IllegalStateException();
+    }
+
+    public static IClassReference getReferenceTo(IClassDefinition definition) {
+        return new SigClassReference(new ClassProjection(definition,
+                new HashMap<ITypeVariableDefinition, ITypeReference>()));
+    }
+}
diff --git a/tools/signature-tools/src/signature/compare/model/subst/WildcardTypeProjection.java b/tools/signature-tools/src/signature/compare/model/subst/WildcardTypeProjection.java
new file mode 100644
index 0000000..a59873c
--- /dev/null
+++ b/tools/signature-tools/src/signature/compare/model/subst/WildcardTypeProjection.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.compare.model.subst;
+
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+import signature.model.IWildcardType;
+import signature.model.impl.SigWildcardType;
+
+import java.util.List;
+import java.util.Map;
+
+public class WildcardTypeProjection implements IWildcardType {
+
+    private final IWildcardType original;
+
+    private final Map<ITypeVariableDefinition, ITypeReference> mappings;
+
+    public WildcardTypeProjection(IWildcardType original,
+            Map<ITypeVariableDefinition, ITypeReference> mappings) {
+        this.original = original;
+        this.mappings = mappings;
+    }
+
+    public ITypeReference getLowerBound() {
+        return ViewpointAdapter.substitutedTypeReference(original
+                .getLowerBound(), mappings);
+    }
+
+    public List<ITypeReference> getUpperBounds() {
+        return ViewpointAdapter.substitutedTypeReferences(original
+                .getUpperBounds(), mappings);
+    }
+
+    @Override
+    public int hashCode() {
+        return SigWildcardType.hashCode(this);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        return SigWildcardType.equals(this, obj);
+    }
+
+    @Override
+    public String toString() {
+        return SigWildcardType.toString(this);
+    }
+}
diff --git a/tools/signature-tools/src/signature/converter/Main.java b/tools/signature-tools/src/signature/converter/Main.java
new file mode 100644
index 0000000..f426877
--- /dev/null
+++ b/tools/signature-tools/src/signature/converter/Main.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter;
+
+import signature.UsageException;
+import signature.converter.dex.DexFactory;
+import signature.converter.doclet.DocletFactory;
+import signature.io.IApiLoader;
+import signature.io.IApiExternalizer;
+import signature.io.impl.BinaryApi;
+
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+
+public class Main {
+    // (doclet | dex) sourcefiles --out file --name name --packages packageName{
+    // packageName}" +
+    public static void main(String[] args) throws IOException {
+        String type = args[0];
+        Set<String> sources = new HashSet<String>();
+        int at = 1;
+        for (/* at */; at < args.length; at++) {
+            if ("--out".equals(args[at])) {
+                break;
+            }
+            sources.add(args[at]);
+        }
+
+        if (!"--out".equals(args[at])) {
+            throw new UsageException();
+        }
+        String targetFile = args[++at];
+
+        if (!"--name".equals(args[++at])) {
+            throw new UsageException();
+        }
+        String name = args[++at];
+
+        if (!"--packages".equals(args[++at])) {
+            throw new UsageException();
+        }
+        Set<String> packages = new HashSet<String>();
+        ++at;
+        for (/* at */; at < args.length; at++) {
+            packages.add(args[at]);
+        }
+
+        IApiExternalizer externalizer = new BinaryApi();
+        IApiLoader factory = null;
+
+        if ("doclet".equals(type)) {
+            factory = new DocletFactory();
+        } else if ("dex".equals(type)) {
+            factory = new DexFactory();
+        } else {
+            throw new UsageException();
+        }
+
+        externalizer.externalizeApi(targetFile, factory.loadApi(name,
+                Visibility.PROTECTED, sources, packages));
+    }
+}
diff --git a/tools/signature-tools/src/signature/converter/Visibility.java b/tools/signature-tools/src/signature/converter/Visibility.java
new file mode 100644
index 0000000..653c617
--- /dev/null
+++ b/tools/signature-tools/src/signature/converter/Visibility.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter;
+
+/**
+ * This enum defines which members are part of the API.
+ * 
+ * <ul>
+ * <li><code>PUBLIC</code> only the public classes and members are included.
+ * <li><code>PROTECTED</code> the public and protected classes members are
+ * included.
+ * <li><code>PACKAGE</code> the public, protected and package visible classes
+ * and members are included.
+ * <li><code>PRIVATE</code> all classes and members are included.
+ * </ul>
+ * <p>
+ * The default visibility mode is <code>PROTECTED</code>.
+ * 
+ */
+public enum Visibility {
+    PUBLIC, PROTECTED, PACKAGE, PRIVATE;
+}
diff --git a/tools/signature-tools/src/signature/converter/dex/DexFactory.java b/tools/signature-tools/src/signature/converter/dex/DexFactory.java
new file mode 100644
index 0000000..b7cc00e
--- /dev/null
+++ b/tools/signature-tools/src/signature/converter/dex/DexFactory.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter.dex;
+
+import dex.structure.DexFile;
+import signature.converter.Visibility;
+import signature.io.IApiLoader;
+import signature.model.IApi;
+import signature.model.IPackage;
+import signature.model.impl.SigApi;
+
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.Set;
+
+public class DexFactory implements IApiLoader {
+
+    public IApi loadApi(String name, Visibility visibility,
+            Set<String> fileNames, Set<String> packageNames) throws
+            IOException {
+        DexToSigConverter converter = new DexToSigConverter();
+        Set<DexFile> files = DexUtil.getDexFiles(fileNames);
+        SigApi api = converter.convertApi(name, files, visibility);
+
+        Iterator<IPackage> it = api.getPackages().iterator();
+        while (it.hasNext()) {
+            IPackage aPackage = it.next();
+            boolean found = false;
+            for (String packageName : packageNames) {
+                if (aPackage.getName().equals(packageName)) {
+                    found = true;
+                }
+            }
+            if (!found) {
+                it.remove();
+            }
+        }
+        return api;
+    }
+}
diff --git a/tools/signature-tools/src/signature/converter/dex/DexToSigConverter.java b/tools/signature-tools/src/signature/converter/dex/DexToSigConverter.java
new file mode 100644
index 0000000..13312bd
--- /dev/null
+++ b/tools/signature-tools/src/signature/converter/dex/DexToSigConverter.java
@@ -0,0 +1,938 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter.dex;
+
+import static signature.converter.dex.DexUtil.convertAnyWay;
+import static signature.converter.dex.DexUtil.declaresExceptions;
+import static signature.converter.dex.DexUtil.declaresMemberClasses;
+import static signature.converter.dex.DexUtil.findPackageInfo;
+import static signature.converter.dex.DexUtil.getClassModifiers;
+import static signature.converter.dex.DexUtil.getClassName;
+import static signature.converter.dex.DexUtil.getDefaultMappingsAnnotation;
+import static signature.converter.dex.DexUtil.getDexName;
+import static signature.converter.dex.DexUtil.getEnclosingClassName;
+import static signature.converter.dex.DexUtil.getExceptionSignature;
+import static signature.converter.dex.DexUtil.getGenericSignature;
+import static signature.converter.dex.DexUtil.getKind;
+import static signature.converter.dex.DexUtil.getMemberClassNames;
+import static signature.converter.dex.DexUtil.getModifier;
+import static signature.converter.dex.DexUtil.getPackageName;
+import static signature.converter.dex.DexUtil.getQualifiedName;
+import static signature.converter.dex.DexUtil.hasAnnotationDefaultSignature;
+import static signature.converter.dex.DexUtil.hasGenericSignature;
+import static signature.converter.dex.DexUtil.isAnnotation;
+import static signature.converter.dex.DexUtil.isConstructor;
+import static signature.converter.dex.DexUtil.isEnclosingClass;
+import static signature.converter.dex.DexUtil.isEnum;
+import static signature.converter.dex.DexUtil.isInternalAnnotation;
+import static signature.converter.dex.DexUtil.isJavaLangObject;
+import static signature.converter.dex.DexUtil.isMethod;
+import static signature.converter.dex.DexUtil.isVisible;
+import static signature.converter.dex.DexUtil.splitTypeList;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import signature.converter.Visibility;
+import signature.model.IAnnotation;
+import signature.model.IAnnotationElement;
+import signature.model.IAnnotationField;
+import signature.model.IClassDefinition;
+import signature.model.IClassReference;
+import signature.model.IConstructor;
+import signature.model.IEnumConstant;
+import signature.model.IField;
+import signature.model.IMethod;
+import signature.model.IPackage;
+import signature.model.IParameter;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+import signature.model.Kind;
+import signature.model.Modifier;
+import signature.model.impl.SigAnnotation;
+import signature.model.impl.SigAnnotationElement;
+import signature.model.impl.SigAnnotationField;
+import signature.model.impl.SigApi;
+import signature.model.impl.SigClassDefinition;
+import signature.model.impl.SigClassReference;
+import signature.model.impl.SigConstructor;
+import signature.model.impl.SigEnumConstant;
+import signature.model.impl.SigExecutableMember;
+import signature.model.impl.SigField;
+import signature.model.impl.SigMethod;
+import signature.model.impl.SigPackage;
+import signature.model.impl.SigParameter;
+import signature.model.impl.Uninitialized;
+import signature.model.util.TypePool;
+import dex.structure.DexAnnotation;
+import dex.structure.DexAnnotationAttribute;
+import dex.structure.DexClass;
+import dex.structure.DexEncodedAnnotation;
+import dex.structure.DexEncodedValue;
+import dex.structure.DexField;
+import dex.structure.DexFile;
+import dex.structure.DexMethod;
+import dex.structure.DexParameter;
+
+/**
+ * Converts a set of dex files to the signature compare api.
+ */
+public final class DexToSigConverter implements IClassInitializer {
+
+    private final FieldPool elementPool;
+    private final TypePool factory;
+    private static final Set<IField> EMPTY_FIELDS = Collections.emptySet();
+    private static final Set<IEnumConstant> EMPTY_ENUM_CONSTANTS = Collections
+            .emptySet();
+    private static final Set<IAnnotationField> EMPTY_ANNOTATION_FIELDS =
+            Collections.emptySet();
+    private static final List<ITypeVariableDefinition> EMPTY_TYPE_VARIABLES =
+            Collections.emptyList();
+    private static final Set<IClassDefinition> EMPTY_INNER_CLASSES =
+            Collections.emptySet();
+    private static final Set<ITypeReference> EMPTY_EXCEPTIONS = Collections
+            .emptySet();
+    private Visibility visibility;
+    private Map<String, DexClass> dexNameToDexClass;
+
+
+    /**
+     * Creates a new instance of {@link DexToSigConverter}.
+     */
+    public DexToSigConverter() {
+        factory = new TypePool();
+        elementPool = new FieldPool();
+    }
+
+
+    public SigApi convertApi(String apiName, Set<DexFile> dexFiles,
+            Visibility visibility) {
+        this.visibility = visibility;
+        SigApi api = new SigApi(apiName, visibility);
+        api.setPackages(convertPackages(dexFiles));
+        factory.replaceAllUninitialiezWithNull();
+        return api;
+    }
+
+    /**
+     * Converts the given {@link DexFile}s into the corresponding (packages
+     * including their (classes and their members, etc.))E
+     * 
+     * @param parsedFiles
+     *            the dex files to convert
+     * @return the converted packages
+     */
+    /* package */Set<IPackage> convertPackages(Set<DexFile> parsedFiles) {
+        Map<String, SigPackage> packageNameToPackage =
+                new HashMap<String, SigPackage>();
+        Map<SigPackage, Set<DexClass>> packageToDexClasses =
+                new HashMap<SigPackage, Set<DexClass>>();
+
+        dexNameToDexClass = new HashMap<String, DexClass>();
+
+        for (DexFile dexFile : parsedFiles) {
+            List<DexClass> definedClasses = dexFile.getDefinedClasses();
+            for (DexClass dexClass : definedClasses) {
+
+                dexNameToDexClass.put(dexClass.getName(), dexClass);
+
+                String dexName = dexClass.getName();
+                String packageName = getPackageName(dexName);
+                SigPackage aPackage = packageNameToPackage.get(packageName);
+                if (aPackage == null) {
+                    aPackage = convertPackage(packageName);
+                    packageNameToPackage.put(packageName, aPackage);
+
+                    Set<DexClass> classes = new HashSet<DexClass>();
+                    packageToDexClasses.put(aPackage, classes);
+                }
+                Set<DexClass> classes = packageToDexClasses.get(aPackage);
+                classes.add(dexClass);
+            }
+        }
+
+        Set<SigClassDefinition> allClasses = new HashSet<SigClassDefinition>();
+
+        for (SigPackage aPackage : packageToDexClasses.keySet()) {
+            Set<SigClassDefinition> classes = convertClasses(packageToDexClasses
+                    .get(aPackage));
+            allClasses.addAll(classes);
+            aPackage.setClasses(new HashSet<IClassDefinition>(classes));
+        }
+
+        // remove package info
+        for (SigPackage aPackage : packageToDexClasses.keySet()) {
+            IClassDefinition packageInfo = findPackageInfo(aPackage);
+            if (packageInfo != null) {
+                aPackage.setAnnotations(packageInfo.getAnnotations());
+                aPackage.getClasses().remove(packageInfo);
+            }
+        }
+
+        // link enclosed classes only if they are part of visible api
+        for (SigClassDefinition sigClass : allClasses) {
+            String dexName = getDexName(sigClass);
+            DexClass dexClass = dexNameToDexClass.get(dexName);
+
+            if (declaresMemberClasses(dexClass)) {
+                Set<String> enclosedClassesNames =
+                        getMemberClassNames(dexClass);
+                Set<IClassDefinition> memberClasses =
+                        new HashSet<IClassDefinition>();
+                for (String enclosedClassName : enclosedClassesNames) {
+                    SigClassDefinition memberClass = factory.getClass(
+                            getPackageName(enclosedClassName),
+                            getClassName(enclosedClassName));
+                    // add inner class only if parsed
+                    if (allClasses.contains(memberClass)) {
+                        memberClasses.add(memberClass);
+                    }
+                }
+                sigClass.setInnerClasses(memberClasses);
+            } else {
+                sigClass.setInnerClasses(EMPTY_INNER_CLASSES);
+            }
+        }
+
+        // remove inner classes, is outer class is not visible
+        for (SigClassDefinition sigClass : allClasses) {
+            if (hasInvisibleParent(sigClass, dexNameToDexClass)) {
+                SigPackage sigPackage = packageNameToPackage.get(sigClass
+                        .getPackageName());
+                sigPackage.getClasses().remove(sigClass);
+            }
+        }
+        return new HashSet<IPackage>(packageToDexClasses.keySet());
+    }
+
+    private boolean hasInvisibleParent(IClassDefinition sigClass,
+            Map<String, DexClass> dexNameToDexClass) {
+
+        do {
+            String dexName = getDexName(sigClass);
+            DexClass dexClass = dexNameToDexClass.get(dexName);
+            if (isEnclosingClass(dexClass)) {
+                IClassDefinition declaringClass = sigClass.getDeclaringClass();
+                DexClass declaringDexClass = dexNameToDexClass
+                        .get(getDexName(declaringClass));
+                if (!isVisible(declaringDexClass, visibility)) {
+                    return true;
+                }
+            }
+        } while ((sigClass = sigClass.getDeclaringClass()) != null);
+        return false;
+    }
+
+    /**
+     * Converts a simple string to the corresponding {@link SigPackage}.<br>
+     * Format: "a.b.c"
+     * 
+     * @param packageName
+     *            the name of the package
+     * @return the package
+     */
+    protected SigPackage convertPackage(String packageName) {
+        SigPackage sigPackage = new SigPackage(packageName);
+        return sigPackage;
+    }
+
+    /**
+     * Converts a set of {@link DexClass} objects to a set of the corresponding
+     * {@link SigClassDefinition} objects.
+     * 
+     * @param dexClasses
+     *            the {@link DexClass} objects
+     * @return a set of {@link DexClass} objects
+     */
+    protected Set<SigClassDefinition> convertClasses(Set<DexClass> dexClasses) {
+        Set<SigClassDefinition> classes = new HashSet<SigClassDefinition>();
+        for (DexClass dexClass : dexClasses) {
+            // convert all classes but synthetic, return only initialized
+            if (convertAnyWay(dexClass)) {
+                SigClassDefinition sigCLass = convertClass(dexClass);
+                if (isVisible(dexClass, visibility)) {
+                    classes.add(sigCLass);
+                }
+            }
+        }
+        return classes;
+    }
+
+    /**
+     * Converts a {@link DexClass} to the corresponding
+     * {@link SigClassDefinition}.
+     * 
+     * @param dexClass
+     *            the {@link DexClass} to convert
+     * @return the corresponding {@link SigClassDefinition}
+     */
+    protected SigClassDefinition convertClass(DexClass dexClass) {
+        assert dexClass != null;
+
+        String packageName = getPackageName(dexClass.getName());
+        String className = getClassName(dexClass.getName());
+        SigClassDefinition sigClass = factory.getClass(packageName, className);
+        // Kind
+        sigClass.setKind(getKind(dexClass));
+        // modifiers
+        Set<Modifier> modifiers = getModifier(getClassModifiers(dexClass));
+        sigClass.setModifiers(modifiers);
+
+        if (isEnclosingClass(dexClass)) {
+            String declaringClassDexName = getEnclosingClassName(dexClass);
+            declaringClassDexName = getClassName(declaringClassDexName);
+            // declaring class is in same package
+            sigClass.setDeclaringClass(factory.getClass(sigClass
+                    .getPackageName(), declaringClassDexName));
+        } else {
+            sigClass.setDeclaringClass(null);
+        }
+
+        if (hasGenericSignature(dexClass)) {
+            GenericSignatureParser parser = new GenericSignatureParser(factory,
+                    this);
+            parser.parseForClass(sigClass, getGenericSignature(dexClass));
+            sigClass.setTypeParameters(parser.formalTypeParameters);
+
+            if (Kind.INTERFACE.equals(sigClass.getKind())) {
+                sigClass.setSuperClass(null);
+            } else {
+                sigClass.setSuperClass(parser.superclassType);
+            }
+
+            sigClass.setInterfaces(new HashSet<ITypeReference>(
+                    parser.interfaceTypes));
+        } else {
+
+            // Type parameters
+            sigClass.setTypeParameters(EMPTY_TYPE_VARIABLES);
+
+            // java.lang.Object has no super class
+            if (isJavaLangObject(dexClass)) {
+                sigClass.setSuperClass(null);
+            } else {
+
+                if (Kind.INTERFACE.equals(sigClass.getKind())
+                        || Kind.ANNOTATION.equals(sigClass.getKind())) {
+                    sigClass.setSuperClass(null);
+                } else {
+                    String superClassPackageName = getPackageName(dexClass
+                            .getSuperClass());
+                    String superClassName = getClassName(dexClass
+                            .getSuperClass());
+                    sigClass.setSuperClass(factory.getClassReference(
+                            superClassPackageName, superClassName));
+                }
+            }
+
+            List<String> interfaceDexNames = dexClass.getInterfaces();
+            Set<ITypeReference> interfaces = new HashSet<ITypeReference>();
+            for (String interfaceDexName : interfaceDexNames) {
+                String interfacePackageName = getPackageName(interfaceDexName);
+                String interfaceName = getClassName(interfaceDexName);
+                SigClassDefinition interfaze = factory.getClass(
+                        interfacePackageName, interfaceName);
+                interfaze.setKind(Kind.INTERFACE);
+                interfaces.add(new SigClassReference(interfaze));
+            }
+            sigClass.setInterfaces(interfaces);
+        }
+
+        // constructors
+        Set<SigConstructor> constructors = convertConstructors(dexClass
+                .getMethods());
+        for (SigConstructor constructor : constructors) {
+            constructor.setDeclaringClass(sigClass);
+        }
+        sigClass.setConstructors(new HashSet<IConstructor>(constructors));
+
+        // methods
+        Set<SigMethod> methods = Collections.emptySet();
+
+
+        if (isAnnotation(dexClass)) {
+            Map<String, Object> mappings = getDefaultValueMapping(dexClass);
+            Set<SigAnnotationField> annotationFields = convertAnnotationFields(
+                    dexClass.getMethods(), mappings);
+            sigClass.setAnnotationFields(new HashSet<IAnnotationField>(
+                    annotationFields));
+            addAnnotationsToAnnotationFields(dexClass.getMethods(),
+                    annotationFields);
+
+            sigClass.setEnumConstants(EMPTY_ENUM_CONSTANTS);
+            sigClass.setFields(EMPTY_FIELDS);
+
+            // sigClass.setAnnotationFields(new
+            // HashSet<IAnnotationField>(convertAnnotationFields(dexClass)));
+        } else if (isEnum(dexClass)) {
+            Set<IField> fields = new HashSet<IField>();
+            Set<IEnumConstant> enumConstants = new HashSet<IEnumConstant>();
+
+            for (DexField dexField : dexClass.getFields()) {
+                if (isVisible(dexField, visibility)) {
+                    if (dexField.isEnumConstant()) {
+                        enumConstants.add(convertEnumConstant(dexField));
+                    } else {
+                        fields.add(convertField(dexField));
+                    }
+                }
+            }
+
+            sigClass.setFields(fields);
+            sigClass.setEnumConstants(enumConstants);
+            sigClass.setAnnotationFields(EMPTY_ANNOTATION_FIELDS);
+            methods = convertMethods(dexClass.getMethods());
+        } else {
+            // fields
+            sigClass.setFields(new HashSet<IField>(convertFields(dexClass
+                    .getFields())));
+            sigClass.setEnumConstants(EMPTY_ENUM_CONSTANTS);
+            sigClass.setAnnotationFields(EMPTY_ANNOTATION_FIELDS);
+            methods = convertMethods(dexClass.getMethods());
+        }
+
+        for (SigMethod method : methods) {
+            method.setDeclaringClass(sigClass);
+        }
+        sigClass.setMethods(new HashSet<IMethod>(methods));
+
+        // Annotations
+        sigClass.setAnnotations(convertAnnotations(dexClass.getAnnotations()));
+
+        return sigClass;
+    }
+
+    @SuppressWarnings("unchecked")
+    private Map<String, Object> getDefaultValueMapping(DexClass dexClass) {
+        HashMap<String, Object> mappings = new HashMap<String, Object>();
+        if (hasAnnotationDefaultSignature(dexClass)) {
+            // read mapping to defaults from annotation
+            DexAnnotation annotation = getDefaultMappingsAnnotation(dexClass);
+            DexAnnotationAttribute dexAnnotationAttribute = annotation
+                    .getAttributes().get(0);
+            if ("value".equals(dexAnnotationAttribute.getName())) {
+                DexEncodedValue encodedValue = dexAnnotationAttribute
+                        .getEncodedValue();
+                DexEncodedValue value = (DexEncodedValue) encodedValue
+                        .getValue();
+                List<DexAnnotationAttribute> defaults = 
+                        (List<DexAnnotationAttribute>) value.getValue();
+                for (DexAnnotationAttribute defaultAttribute : defaults) {
+                    mappings.put(defaultAttribute.getName(),
+                            convertEncodedValue(defaultAttribute
+                                    .getEncodedValue()));
+                }
+            }
+        }
+        return mappings;
+    }
+
+
+    private void addAnnotationsToAnnotationFields(List<DexMethod> methods,
+            Set<SigAnnotationField> annotationFields) {
+        Map<String, SigAnnotationField> nameToAnnotationField =
+                new HashMap<String, SigAnnotationField>();
+
+        for (SigAnnotationField annotationField : annotationFields) {
+            nameToAnnotationField.put(annotationField.getName(),
+                    annotationField);
+        }
+
+        for (DexMethod method : methods) {
+            SigAnnotationField annotationField = nameToAnnotationField
+                    .get(method.getName());
+            annotationField.setAnnotations(convertAnnotations(method
+                    .getAnnotations()));
+        }
+    }
+
+
+    private Set<SigAnnotationField> convertAnnotationFields(
+            List<DexMethod> list, Map<String, Object> mappings) {
+        Set<SigAnnotationField> annotationfields =
+                new HashSet<SigAnnotationField>();
+        for (DexMethod dexMethod : list) {
+            if (isVisible(dexMethod, visibility)) {
+                annotationfields.add(convertAnnotationField(dexMethod, mappings
+                        .get(dexMethod.getName())));
+            }
+        }
+        return annotationfields;
+    }
+
+    private SigAnnotationField convertAnnotationField(DexMethod dexMethod,
+            Object defaultValue) {
+        SigAnnotationField annotationField = new SigAnnotationField(dexMethod
+                .getName());
+        annotationField.setDefaultValue(defaultValue);
+        annotationField.setModifiers(getModifier(dexMethod.getModifiers()));
+        GenericSignatureParser parser = new GenericSignatureParser(factory,
+                this);
+        annotationField.setType(parser.parseNonGenericType(dexMethod
+                .getReturnType()));
+        return annotationField;
+    }
+
+    private IEnumConstant convertEnumConstant(DexField dexField) {
+        String qualifiedTypeName = getQualifiedName(dexField
+                .getDeclaringClass().getName());
+        SigEnumConstant enumConstant = elementPool.getEnumConstant(
+                qualifiedTypeName, dexField.getName());
+        Set<Modifier> modifiers = getModifier(dexField.getModifiers());
+        modifiers.add(Modifier.STATIC);
+        enumConstant.setModifiers(modifiers);
+
+        String typePackageName = getPackageName(dexField.getType());
+        String typeName = getClassName(dexField.getType());
+        enumConstant.setType(factory.getClassReference(typePackageName,
+                typeName));
+        enumConstant.setAnnotations(convertAnnotations(dexField
+                .getAnnotations()));
+        return enumConstant;
+    }
+
+    private Set<SigField> convertFields(List<DexField> dexFields) {
+        Set<SigField> fields = new HashSet<SigField>();
+        for (DexField dexField : dexFields) {
+            if (isVisible(dexField, visibility)) {
+                fields.add(convertField(dexField));
+            }
+        }
+        return fields;
+    }
+
+    private SigField convertField(DexField dexField) {
+        String qualTypeName = getQualifiedName(dexField.getDeclaringClass()
+                .getName());
+        SigField field = elementPool.getField(qualTypeName, dexField.getName());
+
+        field.setModifiers(getModifier(dexField.getModifiers()));
+
+        field.setAnnotations(convertAnnotations(dexField.getAnnotations()));
+
+        if (hasGenericSignature(dexField)) {
+            GenericSignatureParser parser = new GenericSignatureParser(factory,
+                    this);
+            String declaringClassPackageName = getPackageName(dexField
+                    .getDeclaringClass().getName());
+            String declaringClassName = getClassName(dexField
+                    .getDeclaringClass().getName());
+
+            parser.parseForField(factory.getClass(declaringClassPackageName,
+                    declaringClassName), getGenericSignature(dexField));
+            field.setType(parser.fieldType);
+        } else {
+            GenericSignatureParser parser = new GenericSignatureParser(factory,
+                    this);
+            field.setType(parser.parseNonGenericType(dexField.getType()));
+        }
+
+        return field;
+    }
+
+    /**
+     * Converts a set of {@link DexMethod} to a set of corresponding
+     * {@link IConstructor}. This method ignores methods which are not
+     * constructors.
+     * 
+     * @param methods
+     *            the {@link DexMethod}s to convert
+     * @return the corresponding {@link IConstructor}s
+     */
+    private Set<SigConstructor> convertConstructors(List<DexMethod> methods) {
+        Set<SigConstructor> constructors = new HashSet<SigConstructor>();
+        for (DexMethod method : methods) {
+            if (isConstructor(method) && isVisible(method, visibility)) {
+                constructors.add(convertConstructor(method));
+            }
+        }
+        return constructors;
+    }
+
+    /**
+     * Converts a set of {@link DexMethod} to a set of corresponding
+     * {@link DexMethod}. This method ignores methods which are constructors.
+     * 
+     * @param methods
+     *            the {@link DexMethod}s to convert
+     * @return the corresponding {@link IConstructor}s
+     */
+    private Set<SigMethod> convertMethods(List<DexMethod> methods) {
+        Set<SigMethod> sigMethods = new HashSet<SigMethod>();
+        for (DexMethod method : methods) {
+            if (isMethod(method) && isVisible(method, visibility)) {
+                sigMethods.add(convertMethod(method));
+            }
+        }
+        return sigMethods;
+    }
+
+    /**
+     * Converts a dexMethod which must be a constructor to the corresponding
+     * {@link SigConstructor} instance.
+     * 
+     * @param dexMethod
+     *            the dex constructor to convert
+     * @return the corresponding {@link SigConstructor}
+     */
+    public SigConstructor convertConstructor(DexMethod dexMethod) {
+        String declaringClassName = getClassName(dexMethod.getDeclaringClass()
+                .getName());
+
+        SigConstructor constructor = new SigConstructor(declaringClassName);
+        constructor.setModifiers(getModifier(dexMethod.getModifiers()));
+        String declaringClassPackageName = getPackageName(dexMethod
+                .getDeclaringClass().getName());
+
+
+        SigClassDefinition declaringClass = factory.getClass(
+                declaringClassPackageName, declaringClassName);
+        constructor.setDeclaringClass(declaringClass);
+
+        // Annotations
+        constructor.setAnnotations(convertAnnotations(dexMethod
+                .getAnnotations()));
+
+        if (hasGenericSignature(dexMethod)) {
+            GenericSignatureParser parser = new GenericSignatureParser(factory,
+                    this);
+            parser.parseForConstructor(constructor,
+                    getGenericSignature(dexMethod));
+
+            // type parameters
+            constructor.setTypeParameters(parser.formalTypeParameters);
+
+            // parameters
+            // generic parameter types parameters
+            List<DexParameter> dexParameters = dexMethod.getParameters();
+            List<IParameter> parameters = new ArrayList<IParameter>(
+                    parser.parameterTypes.size());
+            Iterator<DexParameter> iterator = dexParameters.iterator();
+            for (ITypeReference parameterType : parser.parameterTypes) {
+                SigParameter parameter = new SigParameter(parameterType);
+                iterator.hasNext();
+                DexParameter dexParam = iterator.next();
+                parameter.setAnnotations(convertAnnotations(dexParam
+                        .getAnnotations()));
+                parameters.add(parameter);
+            }
+
+            constructor.setParameters(parameters);
+
+            // exceptions
+            constructor.setExceptions(new HashSet<ITypeReference>(
+                    parser.exceptionTypes));
+
+        } else {
+            convertNonGenericExecutableMember(constructor, dexMethod);
+
+            // remove first parameter of non static inner class constructors
+            // implicit outer.this reference
+            if (declaringClass.getDeclaringClass() != null) {
+                if (!declaringClass.getModifiers().contains(Modifier.STATIC)) {
+                    if (constructor.getParameters().isEmpty()) {
+                        throw new IllegalStateException(
+                                "Expected at least one parameter!");
+                    }
+                    IParameter first = constructor.getParameters().remove(0);
+                    String enclosingName = declaringClass.getDeclaringClass()
+                            .getName();
+                    String firstParameterTypeName = ((IClassReference) first
+                            .getType()).getClassDefinition().getName();
+                    if (!enclosingName.equals(firstParameterTypeName))
+                        throw new IllegalStateException(
+                                "Expected first constructor parameter of type "
+                                        + enclosingName);
+                }
+            }
+        }
+
+        addExceptions(constructor, dexMethod);
+        return constructor;
+    }
+
+    public SigMethod convertMethod(DexMethod dexMethod) {
+        SigMethod method = new SigMethod(dexMethod.getName());
+        method.setModifiers(getModifier(dexMethod.getModifiers()));
+
+        String declaringClassPackageName = getPackageName(dexMethod
+                .getDeclaringClass().getName());
+        String declaringClassName = getClassName(dexMethod.getDeclaringClass()
+                .getName());
+
+        method.setDeclaringClass(factory.getClass(declaringClassPackageName,
+                declaringClassName));
+
+        // Annotations
+        method.setAnnotations(convertAnnotations(dexMethod.getAnnotations()));
+
+        if (hasGenericSignature(dexMethod)) {
+            GenericSignatureParser parser = new GenericSignatureParser(factory,
+                    this);
+            parser.parseForMethod(method, getGenericSignature(dexMethod));
+
+            // type parameters
+            method.setTypeParameters(parser.formalTypeParameters);
+
+            // generic parameter types parameters
+            List<DexParameter> dexParameters = dexMethod.getParameters();
+            List<IParameter> parameters = new ArrayList<IParameter>(
+                    parser.parameterTypes.size());
+            Iterator<DexParameter> iterator = dexParameters.iterator();
+            for (ITypeReference parameterType : parser.parameterTypes) {
+                SigParameter parameter = new SigParameter(parameterType);
+                iterator.hasNext();
+                DexParameter dexParam = iterator.next();
+                parameter.setAnnotations(convertAnnotations(dexParam
+                        .getAnnotations()));
+                parameters.add(parameter);
+            }
+            method.setParameters(parameters);
+
+            // exceptions
+            method.setExceptions(new HashSet<ITypeReference>(
+                    parser.exceptionTypes));
+            method.setReturnType(parser.returnType);
+
+        } else {
+            convertNonGenericExecutableMember(method, dexMethod);
+            GenericSignatureParser parser = new GenericSignatureParser(factory,
+                    this);
+            ITypeReference type = parser.parseNonGenericReturnType(dexMethod
+                    .getReturnType());
+            method.setReturnType(type);
+        }
+        addExceptions(method, dexMethod);
+        return method;
+    }
+
+    private void addExceptions(SigExecutableMember member,
+            DexMethod dexMethod) {
+        if (declaresExceptions(dexMethod)) {
+            String exceptionSignature = getExceptionSignature(dexMethod);
+            Set<String> exceptionTypeNames = splitTypeList(exceptionSignature);
+            Set<ITypeReference> exceptions = new HashSet<ITypeReference>();
+
+            for (String exTypeName : exceptionTypeNames) {
+                String packageName = getPackageName(exTypeName);
+                String className = getClassName(exTypeName);
+                exceptions.add(factory
+                        .getClassReference(packageName, className));
+            }
+            member.setExceptions(exceptions);
+        } else {
+            member.setExceptions(EMPTY_EXCEPTIONS);
+        }
+    }
+
+    private void convertNonGenericExecutableMember(SigExecutableMember member,
+            DexMethod dexMethod) {
+        List<DexParameter> dexParameters = dexMethod.getParameters();
+        List<IParameter> parameters = new ArrayList<IParameter>(dexParameters
+                .size());
+
+        for (DexParameter dexParameter : dexParameters) {
+            GenericSignatureParser parser = new GenericSignatureParser(factory,
+                    this);
+            ITypeReference type = parser.parseNonGenericType(dexParameter
+                    .getTypeName());
+            SigParameter parameter = new SigParameter(type);
+            parameters.add(parameter);
+            // Annotations
+            parameter.setAnnotations(convertAnnotations(dexParameter
+                    .getAnnotations()));
+        }
+        member.setParameters(parameters);
+
+        member.setTypeParameters(EMPTY_TYPE_VARIABLES);
+
+        // if (declaresExceptions(dexMethod)) {
+        // String exceptionSignature = getExceptionSignature(dexMethod);
+        // Set<String> exceptionTypeNames = splitTypeList(exceptionSignature);
+        // Set<IType> exceptions = new HashSet<IType>();
+        //
+        // for (String exTypeName : exceptionTypeNames) {
+        // String packageName = getPackageName(exTypeName);
+        // String className = getClassName(exTypeName);
+        // exceptions.add(factory.getClass(packageName, className));
+        // }
+        // member.setExceptions(exceptions);
+        // } else {
+        // member.setExceptions(EMPTY_EXCEPTIONS);
+        // }
+    }
+
+    /**
+     * Converts a set of {@link DexAnnotation} to a set of corresponding
+     * {@link SigAnnotation}.
+     * 
+     * @param dexAnnotations
+     *            the {@link DexAnnotation}s to convert
+     * @return the corresponding {@link SigAnnotation}s
+     */
+    private Set<IAnnotation> convertAnnotations(
+            Set<DexAnnotation> dexAnnotations) {
+        Set<IAnnotation> annotations = new HashSet<IAnnotation>();
+        for (DexAnnotation dexAnnotation : dexAnnotations) {
+            if (!isInternalAnnotation(dexAnnotation)) {
+                annotations.add(convertAnnotation(dexAnnotation));
+            }
+        }
+        return annotations;
+    }
+
+    /**
+     * Converts a {@link DexAnnotation} to the corresponding
+     * {@link SigAnnotation}.
+     * 
+     * @param dexAnnotation
+     *            the {@link DexAnnotation} to convert
+     * @return the corresponding {@link SigAnnotation}
+     */
+    protected SigAnnotation convertAnnotation(DexAnnotation dexAnnotation) {
+        SigAnnotation sigAnnotation = new SigAnnotation();
+        String packageName = getPackageName(dexAnnotation.getTypeName());
+        String className = getClassName(dexAnnotation.getTypeName());
+        sigAnnotation
+                .setType(factory.getClassReference(packageName, className));
+        sigAnnotation.setElements(convertAnnotationElements(dexAnnotation
+                .getAttributes()));
+        return sigAnnotation;
+    }
+
+    private Set<IAnnotationElement> convertAnnotationElements(
+            List<DexAnnotationAttribute> attributes) {
+        Set<IAnnotationElement> annotationAttributes =
+                new HashSet<IAnnotationElement>();
+        for (DexAnnotationAttribute dexAnnotationAttribute : attributes) {
+            annotationAttributes
+                    .add(convertAnnotationAttribute(dexAnnotationAttribute));
+        }
+        return annotationAttributes;
+    }
+
+    private IAnnotationElement convertAnnotationAttribute(
+            DexAnnotationAttribute dexAnnotationAttribute) {
+
+        SigAnnotationElement sigElement = new SigAnnotationElement();
+        String nameOfField = dexAnnotationAttribute.getName();
+
+
+        String typeName = dexAnnotationAttribute.getAnnotation().getTypeName();
+        SigClassDefinition annotationClass = factory.getClass(
+                getPackageName(typeName), getClassName(typeName));
+        if (!Uninitialized.isInitialized(
+                annotationClass.getAnnotationFields())) {
+            initializeClass(getPackageName(typeName), getClassName(typeName));
+        }
+        for (IAnnotationField field : annotationClass.getAnnotationFields()) {
+            if (nameOfField.equals(field.getName())) {
+                sigElement.setDeclaringField(field);
+            }
+        }
+
+        sigElement.setValue(convertEncodedValue(dexAnnotationAttribute
+                .getEncodedValue()));
+        return sigElement;
+    }
+
+    @SuppressWarnings("unchecked")
+    private Object convertEncodedValue(DexEncodedValue dexEnodedValue) {
+        Object value = null;
+        switch (dexEnodedValue.getType()) {
+        case VALUE_INT:
+        case VALUE_BOOLEAN:
+        case VALUE_BYTE:
+        case VALUE_CHAR:
+        case VALUE_DOUBLE:
+        case VALUE_FLOAT:
+        case VALUE_LONG:
+        case VALUE_NULL:
+        case VALUE_STRING:
+        case VALUE_SHORT:
+            value = dexEnodedValue.getValue();
+            break;
+        case VALUE_ARRAY: {
+            List<DexEncodedValue> dexValues =
+                    (List<DexEncodedValue>) dexEnodedValue.getValue();
+            Object[] arrayValues = new Object[dexValues.size()];
+            int i = 0;
+            for (DexEncodedValue dexValue : dexValues) {
+                arrayValues[i++] = convertEncodedValue(dexValue);
+            }
+            value = arrayValues;
+            break;
+        }
+        case VALUE_ANNOTATION: {
+            DexEncodedAnnotation annotation =
+                    (DexEncodedAnnotation) dexEnodedValue.getValue();
+            SigAnnotation sigAnnotation = new SigAnnotation();
+            String packageName = getPackageName(annotation.getTypeName());
+            String className = getClassName(annotation.getTypeName());
+            sigAnnotation.setType(factory.getClassReference(packageName,
+                    className));
+
+            sigAnnotation.setElements(convertAnnotationElements(annotation
+                    .getValue()));
+            value = sigAnnotation;
+            break;
+        }
+        case VALUE_FIELD: {
+            String fieldDesc = (String) dexEnodedValue.getValue();
+            // FORMAT La/b/E;!CONSTANT
+            String[] typeAndFieldName = fieldDesc.split("!");
+            String typeName = typeAndFieldName[0];
+            String fieldName = typeAndFieldName[1];
+            value = elementPool.getField(getQualifiedName(typeName), fieldName);
+            break;
+        }
+        case VALUE_ENUM: {
+            String fieldDesc = (String) dexEnodedValue.getValue();
+            // FORMAT La/b/E;!CONSTANT
+            String[] typeAndFieldName = fieldDesc.split("!");
+            String typeName = typeAndFieldName[0];
+            String fieldName = typeAndFieldName[1];
+            value = elementPool.getEnumConstant(getQualifiedName(typeName),
+                    fieldName);
+            break;
+        }
+        case VALUE_TYPE: {
+            String typeName = (String) dexEnodedValue.getValue();
+            GenericSignatureParser parser = new GenericSignatureParser(factory,
+                    this);
+            value = parser.parseNonGenericReturnType(typeName);
+            break;
+        }
+        default:
+            throw new IllegalStateException();
+        }
+        return value;
+    }
+
+    public IClassDefinition initializeClass(String packageName,
+            String className) {
+        String dexName = getDexName(packageName, className);
+        DexClass dexClass = dexNameToDexClass.get(dexName);
+        return convertClass(dexClass);
+    }
+}
diff --git a/tools/signature-tools/src/signature/converter/dex/DexUtil.java b/tools/signature-tools/src/signature/converter/dex/DexUtil.java
new file mode 100644
index 0000000..f661af2
--- /dev/null
+++ b/tools/signature-tools/src/signature/converter/dex/DexUtil.java
@@ -0,0 +1,600 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter.dex;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import signature.converter.Visibility;
+import signature.model.IClassDefinition;
+import signature.model.Kind;
+import signature.model.Modifier;
+import signature.model.impl.SigPackage;
+import signature.model.util.ModelUtil;
+import dex.reader.DexBuffer;
+import dex.reader.DexFileReader;
+import dex.structure.DexAnnotatedElement;
+import dex.structure.DexAnnotation;
+import dex.structure.DexAnnotationAttribute;
+import dex.structure.DexClass;
+import dex.structure.DexEncodedValue;
+import dex.structure.DexField;
+import dex.structure.DexFile;
+import dex.structure.DexMethod;
+
+
+public class DexUtil {
+
+    private static final String PACKAGE_INFO = "package-info";
+    private static final String THROWS_ANNOTATION =
+            "Ldalvik/annotation/Throws;";
+    private static final String SIGNATURE_ANNOTATION =
+            "Ldalvik/annotation/Signature;";
+    private static final String ANNOTATION_DEFAULT_ANNOTATION =
+            "Ldalvik/annotation/AnnotationDefault;";
+    private static final String ENCLOSING_CLASS_ANNOTATION =
+            "Ldalvik/annotation/EnclosingClass;";
+    private static final String ENCLOSING_METHOD_ANNOTATION =
+            "Ldalvik/annotation/EnclosingMethod;";
+    private static final String INNER_CLASS_ANNOTATION =
+            "Ldalvik/annotation/InnerClass;";
+    private static final String MEMBER_CLASS_ANNOTATION =
+            "Ldalvik/annotation/MemberClasses;";
+    private static final String JAVA_LANG_OBJECT = "Ljava/lang/Object;";
+
+    private static final Set<String> INTERNAL_ANNOTATION_NAMES;
+
+    static {
+        Set<String> tmp = new HashSet<String>();
+        tmp.add(THROWS_ANNOTATION);
+        tmp.add(SIGNATURE_ANNOTATION);
+        tmp.add(ANNOTATION_DEFAULT_ANNOTATION);
+        tmp.add(ENCLOSING_CLASS_ANNOTATION);
+        tmp.add(ENCLOSING_METHOD_ANNOTATION);
+        tmp.add(INNER_CLASS_ANNOTATION);
+        tmp.add(MEMBER_CLASS_ANNOTATION);
+        INTERNAL_ANNOTATION_NAMES = Collections.unmodifiableSet(tmp);
+    }
+
+    private DexUtil() {
+        // not constructable from outside
+    }
+
+    /**
+     * "La/b/c/A;" -> "a.b.c" "LA;" -> "" empty string
+     * 
+     * @param classIdentifier
+     * @return the package name
+     */
+    public static String getPackageName(String classIdentifier) {
+        String name = removeTrailingSemicolon(removeHeadingL(classIdentifier));
+        return ModelUtil.getPackageName(name.replace("/", "."));
+    }
+
+    /**
+     * "La/b/c/A;" -> "A" "LA;" -> "A"
+     * 
+     * @param classIdentifier
+     *            the dalvik internal identifier
+     * @return the class name
+     */
+    public static String getClassName(String classIdentifier) {
+        String name = removeTrailingSemicolon(removeHeadingL(classIdentifier));
+        return ModelUtil.getClassName(name.replace("/", ".")).replace('$', '.');
+    }
+
+    public static String getQualifiedName(String classIdentifier) {
+        String name = removeTrailingSemicolon(removeHeadingL(classIdentifier));
+        return name.replace('/', '.');
+    }
+
+    private static String removeHeadingL(String className) {
+        assert className.startsWith("L");
+        return className.substring(1);
+    }
+
+    private static String removeTrailingSemicolon(String className) {
+        assert className.endsWith(";");
+        return className.substring(0, className.length() - 1);
+    }
+
+    public static String getDexName(String packageName, String className) {
+        return "L" + packageName.replace('.', '/') + "/"
+                + className.replace('.', '$') + ";";
+    }
+
+    public static String getDexName(IClassDefinition sigClass) {
+        return getDexName(sigClass.getPackageName(), sigClass.getName());
+    }
+
+    /**
+     * Returns correct modifiers for inner classes
+     */
+    public static int getClassModifiers(DexClass clazz) {
+        int modifiers = 0;
+        if (isInnerClass(clazz)) {
+            Integer accessFlags = (Integer) getAnnotationAttributeValue(
+                    getAnnotation(clazz, INNER_CLASS_ANNOTATION),
+                            "accessFlags");
+            modifiers = accessFlags.intValue();
+        } else {
+            modifiers = clazz.getModifiers();
+        }
+        return modifiers;
+    }
+
+    /**
+     * Returns a set containing all modifiers for the given int.
+     * 
+     * @param mod
+     *            the original bit coded modifiers as specified by
+     *            {@link java.lang.reflect.Modifier}
+     * @return a set containing {@link signature.model.Modifier} elements
+     */
+    public static Set<Modifier> getModifier(int mod) {
+        Set<Modifier> modifiers = EnumSet.noneOf(Modifier.class);
+        if (java.lang.reflect.Modifier.isAbstract(mod))
+            modifiers.add(Modifier.ABSTRACT);
+        if (java.lang.reflect.Modifier.isFinal(mod))
+            modifiers.add(Modifier.FINAL);
+        // if (java.lang.reflect.Modifier.isNative(mod))
+        // modifiers.add(Modifier.NATIVE);
+        if (java.lang.reflect.Modifier.isPrivate(mod))
+            modifiers.add(Modifier.PRIVATE);
+        if (java.lang.reflect.Modifier.isProtected(mod))
+            modifiers.add(Modifier.PROTECTED);
+        if (java.lang.reflect.Modifier.isPublic(mod))
+            modifiers.add(Modifier.PUBLIC);
+        if (java.lang.reflect.Modifier.isStatic(mod))
+            modifiers.add(Modifier.STATIC);
+        // if (java.lang.reflect.Modifier.isStrict(mod))
+        // modifiers.add(Modifier.STRICT);
+        // if (java.lang.reflect.Modifier.isSynchronized(mod))
+        // modifiers.add(Modifier.SYNCHRONIZED);
+        // if (java.lang.reflect.Modifier.isTransient(mod))
+        // modifiers.add(Modifier.TRANSIENT);
+        if (java.lang.reflect.Modifier.isVolatile(mod))
+            modifiers.add(Modifier.VOLATILE);
+
+        return modifiers;
+    }
+
+    /**
+     * Returns true if the given class is an enumeration, false otherwise.
+     * 
+     * @param dexClass
+     *            the DexClass under test
+     * @return true if the given class is an enumeration, false otherwise
+     */
+    public static boolean isEnum(DexClass dexClass) {
+        return (getClassModifiers(dexClass) & 0x4000) > 0;
+    }
+
+    /**
+     * Returns true if the given class is an interface, false otherwise.
+     * 
+     * @param dexClass
+     *            the DexClass under test
+     * @return true if the given class is an interface, false otherwise
+     */
+    public static boolean isInterface(DexClass dexClass) {
+        int modifiers = getClassModifiers(dexClass);
+        return java.lang.reflect.Modifier.isInterface(modifiers);
+    }
+
+    /**
+     * Returns true if the given class is an annotation, false otherwise.
+     * 
+     * @param dexClass
+     *            the DexClass under test
+     * @return true if the given class is an annotation, false otherwise
+     */
+    public static boolean isAnnotation(DexClass dexClass) {
+        return (getClassModifiers(dexClass) & 0x2000) > 0;
+    }
+
+    public static boolean isSynthetic(int modifier) {
+        return (modifier & 0x1000) > 0;
+    }
+
+    /**
+     * Returns the Kind of the given DexClass.
+     * 
+     * @param dexClass
+     *            the DexClass under test
+     * @return the Kind of the given class
+     */
+    public static Kind getKind(DexClass dexClass) {
+        // order of branches is crucial since a annotation is also an interface
+        if (isEnum(dexClass)) {
+            return Kind.ENUM;
+        } else if (isAnnotation(dexClass)) {
+            return Kind.ANNOTATION;
+        } else if (isInterface(dexClass)) {
+            return Kind.INTERFACE;
+        } else {
+            return Kind.CLASS;
+        }
+    }
+
+    /**
+     * Returns whether the specified annotated element has an annotation with
+     * type "Ldalvik/annotation/Throws;".
+     * 
+     * @param annotatedElement
+     *            the annotated element to check
+     * @return <code>true</code> if the given annotated element has the
+     *         mentioned annotation, false otherwise
+     */
+    public static boolean declaresExceptions(
+            DexAnnotatedElement annotatedElement) {
+        return getAnnotation(annotatedElement, THROWS_ANNOTATION) != null;
+    }
+
+    /**
+     * Returns the throws signature if the given element has such an annotation,
+     * null otherwise.
+     * 
+     * @param annotatedElement
+     *            the annotated element
+     * @return he generic signature if the given element has such an annotation,
+     *         null otherwise
+     */
+    @SuppressWarnings("unchecked")
+    public static String getExceptionSignature(
+            DexAnnotatedElement annotatedElement) {
+        DexAnnotation annotation = getAnnotation(annotatedElement,
+                THROWS_ANNOTATION);
+        if (annotation != null) {
+            List<DexEncodedValue> value =
+                    (List<DexEncodedValue>) getAnnotationAttributeValue(
+                            annotation, "value");
+            return concatEncodedValues(value);
+        }
+        return null;
+    }
+
+    /**
+     * Splits a list of types:
+     * "Ljava/io/IOException;Ljava/lang/IllegalStateException;" <br>
+     * into separate type designators: <br>
+     * "Ljava/io/IOException;" , "Ljava/lang/IllegalStateException;"
+     * 
+     * @param typeList
+     *            the type list
+     * @return a set of type designators
+     */
+    public static Set<String> splitTypeList(String typeList) {
+        String[] split = typeList.split(";");
+        Set<String> separateTypes = new HashSet<String>();
+        for (String string : split) {
+            separateTypes.add(string + ";");// add semicolon again
+        }
+        return separateTypes;
+    }
+
+    /**
+     * Returns whether the specified annotated element has an annotation with
+     * type "Ldalvik/annotation/Signature;".
+     * 
+     * @param annotatedElement
+     *            the annotated element to check
+     * @return <code>true</code> if the given annotated element has the
+     *         mentioned annotation, false otherwise
+     */
+    public static boolean hasGenericSignature(
+            DexAnnotatedElement annotatedElement) {
+        return getAnnotation(annotatedElement, SIGNATURE_ANNOTATION) != null;
+    }
+
+    /**
+     * Returns the generic signature if the given element has such an
+     * annotation, null otherwise.
+     * 
+     * @param annotatedElement
+     *            the annotated element
+     * @return he generic signature if the given element has such an annotation,
+     *         null otherwise
+     */
+    @SuppressWarnings("unchecked")
+    public static String getGenericSignature(
+            DexAnnotatedElement annotatedElement) {
+        DexAnnotation annotation = getAnnotation(annotatedElement,
+                SIGNATURE_ANNOTATION);
+        if (annotation != null) {
+            List<DexEncodedValue> value =
+                    (List<DexEncodedValue>) getAnnotationAttributeValue(
+                            annotation, "value");
+            return concatEncodedValues(value);
+        }
+        return null;
+    }
+
+    /**
+     * Returns whether the specified annotated element has an annotation with
+     * type "Ldalvik/annotation/AnnotationDefault;".
+     * 
+     * @param annotatedElement
+     *            the annotated element to check
+     * @return <code>true</code> if the given annotated element has the
+     *         mentioned annotation, false otherwise
+     */
+    public static boolean hasAnnotationDefaultSignature(
+            DexAnnotatedElement annotatedElement) {
+        return getAnnotation(
+                annotatedElement, ANNOTATION_DEFAULT_ANNOTATION)!= null;
+    }
+
+    /**
+     * Returns a mapping form annotation attribute name to its default value.
+     * 
+     * @param dexClass
+     *            the class defining a annotation
+     * @return a mapping form annotation attribute name to its default value
+     */
+    public static DexAnnotation getDefaultMappingsAnnotation(
+            DexClass dexClass) {
+        return getAnnotation(dexClass, ANNOTATION_DEFAULT_ANNOTATION);
+    }
+
+    /**
+     * Returns the annotation with the specified type from the given element or
+     * null if no such annotation is available.
+     * 
+     * @param element
+     *            the annotated element
+     * @param annotationType
+     *            the dex internal name of the annotation type
+     * @return the annotation with the specified type or null if not present
+     */
+    public static DexAnnotation getAnnotation(DexAnnotatedElement element,
+            String annotationType) {
+        assert element != null;
+        assert annotationType != null;
+
+        for (DexAnnotation anno : element.getAnnotations()) {
+            if (annotationType.equals(anno.getTypeName())) {
+                return anno;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Returns the value for the specified attribute name of the given
+     * annotation or null if not present.
+     * 
+     * @param annotation
+     *            the annotation
+     * @param attributeName
+     *            the name of the attribute
+     * @return the value for the specified attribute
+     */
+    public static Object getAnnotationAttributeValue(DexAnnotation annotation,
+            String attributeName) {
+        for (DexAnnotationAttribute dexAnnotationAttribute : annotation
+                .getAttributes()) {
+            if (attributeName.equals(dexAnnotationAttribute.getName())) {
+                return dexAnnotationAttribute.getEncodedValue().getValue();
+            }
+        }
+        return null;
+    }
+
+    private static String concatEncodedValues(List<DexEncodedValue> values) {
+        StringBuilder builder = new StringBuilder();
+        for (DexEncodedValue string : values) {
+            builder.append(string.getValue());
+        }
+        return builder.toString();
+    }
+
+    /**
+     * Returns true if the given method is a constructor, false otherwise.
+     * 
+     * @param method
+     *            the method to test
+     * @return true if the given method is a constructor, false otherwise
+     */
+    public static boolean isConstructor(DexMethod method) {
+        return "<init>".equals(method.getName());
+    }
+
+    /**
+     * Returns true if the given method is a static constructor, false
+     * otherwise.
+     * 
+     * @param method
+     *            the method to test
+     * @return true if the given method is a static constructor, false otherwise
+     */
+    public static boolean isStaticConstructor(DexMethod method) {
+        return "<clinit>".equals(method.getName());
+    }
+
+    public static boolean isMethod(DexMethod method) {
+        return !isConstructor(method) && !isStaticConstructor(method);
+    }
+
+    /**
+     * Returns the package-info class for the given package.
+     * 
+     * @param aPackage
+     *            the package
+     * @return the class called "package-info" or null, if not available
+     */
+    public static IClassDefinition findPackageInfo(SigPackage aPackage) {
+        for (IClassDefinition clazz : aPackage.getClasses()) {
+            if (PACKAGE_INFO.equals(clazz.getName())) {
+                return clazz;
+            }
+        }
+        return null;
+    }
+
+    public static boolean isPackageInfo(DexClass clazz) {
+        return PACKAGE_INFO.equals(getClassName(clazz.getName()));
+    }
+
+    public static boolean isInternalAnnotation(DexAnnotation dexAnnotation) {
+        return INTERNAL_ANNOTATION_NAMES.contains(dexAnnotation.getTypeName());
+    }
+
+    /**
+     * An InnerClass annotation is attached to each class which is defined in
+     * the lexical scope of another class's definition. Any class which has this
+     * annotation must also have either an EnclosingClass annotation or an
+     * EnclosingMethod annotation.
+     */
+    public static boolean isInnerClass(DexClass clazz) {
+        return getAnnotation(clazz, INNER_CLASS_ANNOTATION) != null;
+    }
+
+    /**
+     * An EnclosingClass annotation is attached to each class which is either
+     * defined as a member of another class, per se, or is anonymous but not
+     * defined within a method body (e.g., a synthetic inner class). Every class
+     * that has this annotation must also have an InnerClass annotation.
+     * Additionally, a class may not have both an EnclosingClass and an
+     * EnclosingMethod annotation.
+     */
+    public static boolean isEnclosingClass(DexClass clazz) {
+        return getAnnotation(clazz, ENCLOSING_CLASS_ANNOTATION) != null;
+    }
+
+    public static boolean declaresMemberClasses(DexClass dexClass) {
+        return getAnnotation(dexClass, MEMBER_CLASS_ANNOTATION) != null;
+    }
+
+    @SuppressWarnings("unchecked")
+    public static Set<String> getMemberClassNames(DexClass dexClass) {
+        DexAnnotation annotation = getAnnotation(dexClass,
+                MEMBER_CLASS_ANNOTATION);
+        List<DexEncodedValue> enclosedClasses =
+                (List<DexEncodedValue>) getAnnotationAttributeValue(
+                        annotation, "value");
+        Set<String> enclosedClassesNames = new HashSet<String>();
+        for (DexEncodedValue string : enclosedClasses) {
+            enclosedClassesNames.add((String) string.getValue());
+        }
+        return enclosedClassesNames;
+    }
+
+
+    public static String getEnclosingClassName(DexClass dexClass) {
+        DexAnnotation annotation = getAnnotation(dexClass,
+                ENCLOSING_CLASS_ANNOTATION);
+        String value = (String) getAnnotationAttributeValue(annotation,
+                "value");
+        return value;
+    }
+
+    public static boolean convertAnyWay(DexClass dexClass) {
+        return !isSynthetic(getClassModifiers(dexClass))
+                && !isAnonymousClassName(dexClass.getName())
+                || isPackageInfo(dexClass);
+    }
+
+    public static boolean isVisible(DexClass dexClass, Visibility visibility) {
+        // package info is always visible
+        if (isPackageInfo(dexClass)) {
+            return true;
+        }
+
+        if (isDeclaredInMethod(dexClass)) {
+            return false;
+        }
+
+        if (isAnonymousClassName(dexClass.getName())) {
+            return false;
+        }
+
+        int modifiers = getClassModifiers(dexClass);
+
+        return isVisible(modifiers, visibility);
+    }
+
+    private static boolean isDeclaredInMethod(DexClass dexClass) {
+        return getAnnotation(dexClass, ENCLOSING_METHOD_ANNOTATION) != null;
+    }
+
+    /**
+     * Returns whether the given dex identifier is an anonymous class name.
+     * Format: La/b/C$1;
+     * 
+     * @param dexName
+     *            the name to analyze
+     * @return whether the given dex identifier is an anonymous class name
+     */
+    public static boolean isAnonymousClassName(String dexName) {
+        int index = dexName.lastIndexOf('$');
+        return (index != 0) ? Character.isDigit(dexName.charAt(index + 1))
+                : false;
+    }
+
+    public static boolean isVisible(DexField dexField, Visibility visibility) {
+        return isVisible(dexField.getModifiers(), visibility);
+    }
+
+    public static boolean isVisible(DexMethod dexMethod,
+            Visibility visibility) {
+        return isVisible(dexMethod.getModifiers(), visibility);
+    }
+
+    private static boolean isVisible(int modifiers, Visibility visibility) {
+
+        if (isSynthetic(modifiers)) {
+            return false;
+        }
+
+        Set<Modifier> elementModifiers = getModifier(modifiers);
+        if (elementModifiers.contains(Modifier.PUBLIC)) {
+            return true;
+        } else if (elementModifiers.contains(Modifier.PROTECTED)) {
+            return visibility == Visibility.PROTECTED
+                    || visibility == Visibility.PACKAGE
+                    || visibility == Visibility.PRIVATE;
+        } else if (elementModifiers.contains(Modifier.PRIVATE)) {
+            return visibility == Visibility.PRIVATE;
+        } else {
+            return visibility == Visibility.PACKAGE
+                    || visibility == Visibility.PRIVATE;
+        }
+    }
+
+    public static Set<DexFile> getDexFiles(Set<String> fileNames)
+            throws IOException {
+        Set<DexFile> parsedFiles = new HashSet<DexFile>();
+
+        for (String dexFile : fileNames) {
+            DexFileReader reader = new DexFileReader();
+            DexBuffer dexBuffer = new DexBuffer(dexFile);
+            parsedFiles.add(reader.read(dexBuffer));
+        }
+        return parsedFiles;
+    }
+
+
+    public static boolean isJavaLangObject(DexClass dexClass) {
+        assert dexClass != null;
+        return JAVA_LANG_OBJECT.equals(dexClass.getName());
+    }
+}
diff --git a/tools/signature-tools/src/signature/converter/dex/FieldPool.java b/tools/signature-tools/src/signature/converter/dex/FieldPool.java
new file mode 100644
index 0000000..6587820
--- /dev/null
+++ b/tools/signature-tools/src/signature/converter/dex/FieldPool.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter.dex;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import signature.model.impl.SigEnumConstant;
+import signature.model.impl.SigField;
+
+public class FieldPool {
+
+    private Map<FieldKey, SigField> fieldStore;
+    private Map<FieldKey, SigEnumConstant> constantStore;
+
+    public FieldPool() {
+        fieldStore = new HashMap<FieldKey, SigField>();
+        constantStore = new HashMap<FieldKey, SigEnumConstant>();
+    }
+
+    private static class FieldKey {
+        private final String qualifiedClassName;
+        private final String fieldName;
+
+        public FieldKey(String qualifiedClassName, String fieldName) {
+            this.qualifiedClassName = qualifiedClassName;
+            this.fieldName = fieldName;
+        }
+
+        @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = prime * fieldName.hashCode();
+            result = prime * result + qualifiedClassName.hashCode();
+            return result;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            FieldKey other = (FieldKey) obj;
+            if (!fieldName.equals(other.fieldName)) {
+                return false;
+            }
+            if (!qualifiedClassName.equals(other.qualifiedClassName)) {
+                return false;
+            }
+            return true;
+        }
+    }
+
+    public SigField getField(String qualifiedClassName, String fieldName) {
+        FieldKey key = new FieldKey(qualifiedClassName, fieldName);
+        SigField sigField = fieldStore.get(key);
+        if (sigField == null) {
+            sigField = new SigField(fieldName);
+            fieldStore.put(key, sigField);
+        }
+        return sigField;
+    }
+
+    public SigEnumConstant getEnumConstant(String qualifiedName,
+            String fieldName) {
+        FieldKey key = new FieldKey(qualifiedName, fieldName);
+        SigEnumConstant sigField = constantStore.get(key);
+        if (sigField == null) {
+            sigField = new SigEnumConstant(fieldName);
+            constantStore.put(key, sigField);
+        }
+        return sigField;
+    }
+
+}
diff --git a/tools/signature-tools/src/signature/converter/dex/GenericSignatureParser.java b/tools/signature-tools/src/signature/converter/dex/GenericSignatureParser.java
new file mode 100644
index 0000000..773e2fc
--- /dev/null
+++ b/tools/signature-tools/src/signature/converter/dex/GenericSignatureParser.java
@@ -0,0 +1,651 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter.dex;
+
+import static signature.converter.dex.DexUtil.getClassName;
+import static signature.converter.dex.DexUtil.getPackageName;
+import signature.model.IClassDefinition;
+import signature.model.IClassReference;
+import signature.model.IConstructor;
+import signature.model.IGenericDeclaration;
+import signature.model.IMethod;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+import signature.model.ITypeVariableReference;
+import signature.model.impl.SigArrayType;
+import signature.model.impl.SigParameterizedType;
+import signature.model.impl.SigPrimitiveType;
+import signature.model.impl.SigTypeVariableDefinition;
+import signature.model.impl.SigWildcardType;
+import signature.model.impl.Uninitialized;
+import signature.model.util.ITypeFactory;
+
+import java.lang.reflect.GenericSignatureFormatError;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Implements a parser for the generics signature attribute. Uses a top-down,
+ * recursive descent parsing approach for the following grammar:
+ * 
+ * <pre>
+ * ClassSignature ::=
+ *     OptFormalTypeParams SuperclassSignature {SuperinterfaceSignature}.
+ * SuperclassSignature ::= ClassTypeSignature.
+ * SuperinterfaceSignature ::= ClassTypeSignature.
+ *
+ * OptFormalTypeParams ::=
+ *     ["<" FormalTypeParameter {FormalTypeParameter} ">"].
+ *
+ * FormalTypeParameter ::= Ident ClassBound {InterfaceBound}.
+ * ClassBound ::= ":" [FieldTypeSignature].
+ * InterfaceBound ::= ":" FieldTypeSignature.
+ *
+ * FieldTypeSignature ::=
+ *     ClassTypeSignature | ArrayTypeSignature | TypeVariableSignature.
+ * ArrayTypeSignature ::= "[" TypSignature.
+ *
+ * ClassTypeSignature ::=
+ *     "L" {Ident "/"} Ident OptTypeArguments {"." Ident OptTypeArguments} ";".
+ *
+ * OptTypeArguments ::= "<" TypeArgument {TypeArgument} ">".
+ *
+ * TypeArgument ::= ([WildcardIndicator] FieldTypeSignature) | "*".
+ * WildcardIndicator ::= "+" | "-".
+ *
+ * TypeVariableSignature ::= "T" Ident ";".
+ *
+ * TypSignature ::= FieldTypeSignature | BaseType.
+ * BaseType ::= "B" | "C" | "D" | "F" | "I" | "J" | "S" | "Z".
+ *
+ * MethodTypeSignature ::=
+ *     OptFormalTypeParams "(" {TypeSignature} ")" ReturnType {ThrowsSignature}.
+ * ThrowsSignature ::= ("^" ClassTypeSignature) | ("^" TypeVariableSignature).
+ *
+ * ReturnType ::= TypSignature | VoidDescriptor.
+ * VoidDescriptor ::= "V".
+ * </pre>
+ */
+public class GenericSignatureParser {
+
+    public List<ITypeReference> exceptionTypes;
+    public List<ITypeReference> parameterTypes;
+    public List<ITypeVariableDefinition> formalTypeParameters;
+    public ITypeReference returnType;
+    public ITypeReference fieldType;
+    public List<ITypeReference> interfaceTypes;
+    public ITypeReference superclassType;
+
+    private IGenericDeclaration genericDecl;
+
+    /*
+     * Parser:
+     */
+    private char symbol; // 0: eof; else valid term symbol or first char of
+    // identifier.
+    private String identifier;
+
+
+    /*
+     * Scanner: eof is private to the scan methods and it's set only when a scan
+     * is issued at the end of the buffer.
+     */
+    private boolean eof;
+
+    private char[] buffer;
+    private int pos;
+
+    private final ITypeFactory factory;
+    private final IClassInitializer classFinder;
+    private boolean parseForField;
+
+
+    public GenericSignatureParser(ITypeFactory factory,
+            IClassInitializer classFinder) {
+        this.factory = factory;
+        this.classFinder = classFinder;
+    }
+
+    private void setInput(IGenericDeclaration genericDecl, String input) {
+        if (input != null) {
+            this.genericDecl = genericDecl;
+            this.buffer = input.toCharArray();
+            this.eof = false;
+            scanSymbol();
+        } else {
+            this.eof = true;
+        }
+    }
+
+    public ITypeReference parseNonGenericType(String typeSignature) {
+        setInput(null, typeSignature);
+        ITypeReference type = parsePrimitiveType();
+        if (type == null) {
+            type = parseFieldTypeSignature();
+        }
+        return type;
+    }
+
+    public ITypeReference parseNonGenericReturnType(String typeSignature) {
+        setInput(null, typeSignature);
+        ITypeReference returnType = parsePrimitiveType();
+        if (returnType == null) {
+            returnType = parseReturnType();
+        }
+        return returnType;
+    }
+
+    private ITypeReference parsePrimitiveType() {
+        switch (symbol) {
+        case 'B':
+            scanSymbol();
+            return SigPrimitiveType.BYTE_TYPE;
+        case 'C':
+            scanSymbol();
+            return SigPrimitiveType.CHAR_TYPE;
+        case 'D':
+            scanSymbol();
+            return SigPrimitiveType.DOUBLE_TYPE;
+        case 'F':
+            scanSymbol();
+            return SigPrimitiveType.FLOAT_TYPE;
+        case 'I':
+            scanSymbol();
+            return SigPrimitiveType.INT_TYPE;
+        case 'J':
+            scanSymbol();
+            return SigPrimitiveType.LONG_TYPE;
+        case 'S':
+            scanSymbol();
+            return SigPrimitiveType.SHORT_TYPE;
+        case 'Z':
+            scanSymbol();
+            return SigPrimitiveType.BOOLEAN_TYPE;
+        default:
+            return null;
+        }
+    }
+
+    /**
+     * Parses the generic signature of a class and creates the data structure
+     * representing the signature.
+     * 
+     * @param classToProcess
+     *            the GenericDeclaration calling this method
+     * @param signature
+     *            the generic signature of the class
+     */
+    public void parseForClass(IClassDefinition classToProcess,
+            String signature) {
+        setInput(classToProcess, signature);
+        if (!eof) {
+            parseClassSignature();
+        } else {
+            throw new IllegalStateException("Generic signature is invalid!");
+        }
+    }
+
+    /**
+     * Parses the generic signature of a method and creates the data structure
+     * representing the signature.
+     * 
+     * @param genericDecl
+     *            the GenericDeclaration calling this method
+     * @param signature
+     *            the generic signature of the class
+     */
+    public void parseForMethod(IMethod genericDecl, String signature) {
+        setInput(genericDecl, signature);
+        if (!eof) {
+            parseMethodTypeSignature();
+        } else {
+            throw new IllegalStateException("Generic signature is invalid!");
+        }
+    }
+
+    /**
+     * Parses the generic signature of a constructor and creates the data
+     * structure representing the signature.
+     * 
+     * @param genericDecl
+     *            the GenericDeclaration calling this method
+     * @param signature
+     *            the generic signature of the class
+     */
+    public void parseForConstructor(IConstructor genericDecl,
+            String signature) {
+        setInput(genericDecl, signature);
+        if (!eof) {
+            parseMethodTypeSignature();
+        } else {
+            throw new IllegalStateException("Generic signature is invalid!");
+        }
+    }
+
+    /**
+     * Parses the generic signature of a field and creates the data structure
+     * representing the signature.
+     * 
+     * @param genericDecl
+     *            the GenericDeclaration calling this method
+     * @param signature
+     *            the generic signature of the class
+     */
+    public void parseForField(IClassDefinition genericDecl, String signature) {
+        parseForField = true;
+        setInput(genericDecl, signature);
+        try {
+            if (!eof) {
+                this.fieldType = parseFieldTypeSignature();
+            } else {
+                throw new IllegalStateException(
+                        "Generic signature is invalid!");
+            }
+        } finally {
+            parseForField = false;
+        }
+    }
+
+    private void parseClassSignature() {
+        // ClassSignature ::=
+        // OptFormalTypeParameters SuperclassSignature
+        // {SuperinterfaceSignature}.
+
+        parseOptFormalTypeParameters();
+
+        // SuperclassSignature ::= ClassTypeSignature.
+        this.superclassType = parseClassTypeSignature();
+
+        interfaceTypes = new ArrayList<ITypeReference>(16);
+        while (symbol > 0) {
+            // SuperinterfaceSignature ::= ClassTypeSignature.
+            interfaceTypes.add(parseClassTypeSignature());
+        }
+    }
+
+    private void parseOptFormalTypeParameters() {
+        // OptFormalTypeParameters ::=
+        // ["<" FormalTypeParameter {FormalTypeParameter} ">"].
+
+        List<ITypeVariableDefinition> typeParameters =
+                new ArrayList<ITypeVariableDefinition>();
+
+        if (symbol == '<') {
+            scanSymbol();
+            typeParameters.add(parseFormalTypeParameter());
+            while ((symbol != '>') && (symbol > 0)) {
+                typeParameters.add(parseFormalTypeParameter());
+            }
+            expect('>');
+        }
+
+        formalTypeParameters = typeParameters;
+    }
+
+    private SigTypeVariableDefinition parseFormalTypeParameter() {
+        // FormalTypeParameter ::= Ident ClassBound {InterfaceBound}.
+
+        scanIdentifier();
+        String name = identifier.intern();
+        SigTypeVariableDefinition typeVariable = factory.getTypeVariable(name,
+                genericDecl);
+
+        List<ITypeReference> bounds = new ArrayList<ITypeReference>();
+
+        // ClassBound ::= ":" [FieldTypeSignature].
+        expect(':');
+        if (symbol == 'L' || symbol == '[' || symbol == 'T') {
+            bounds.add(parseFieldTypeSignature());
+        }
+
+        while (symbol == ':') {
+            // InterfaceBound ::= ":" FieldTypeSignature.
+            scanSymbol();
+            bounds.add(parseFieldTypeSignature());
+        }
+        typeVariable.setUpperBounds(bounds);
+        return typeVariable;
+    }
+
+    /**
+     * Returns the generic declaration for the type variable with the specified
+     * name.
+     * 
+     * @param variableName
+     *            the name of the type variable
+     * @param declaration
+     *            the declaration to start searching
+     * @return the declaration which defines the specified type variable
+     */
+    private IGenericDeclaration getDeclarationOfTypeVariable(
+            String variableName, IClassDefinition declaration) {
+        assert variableName != null;
+        assert declaration != null;
+
+        if (!Uninitialized.isInitialized(declaration.getTypeParameters())) {
+            declaration = classFinder.initializeClass(declaration
+                    .getPackageName(), declaration.getName());
+        }
+
+        for (ITypeVariableDefinition typeVariable : declaration
+                .getTypeParameters()) {
+            if (variableName.equals(typeVariable.getName())) {
+                return declaration;
+            }
+        }
+        return getDeclarationOfTypeVariable(variableName, declaration
+                .getDeclaringClass());
+    }
+
+    private ITypeReference parseFieldTypeSignature() {
+        // FieldTypeSignature ::= ClassTypeSignature | ArrayTypeSignature
+        // | TypeVariableSignature.
+
+        switch (symbol) {
+        case 'L':
+            return parseClassTypeSignature();
+        case '[':
+            // ArrayTypeSignature ::= "[" TypSignature.
+            scanSymbol();
+            SigArrayType arrayType = factory.getArrayType(parseTypeSignature());
+            return arrayType;
+        case 'T':
+            return parseTypeVariableSignature();
+        default:
+            throw new GenericSignatureFormatError();
+        }
+    }
+
+    private ITypeReference parseClassTypeSignature() {
+        // ClassTypeSignature ::= "L" {Ident "/"} Ident
+        // OptTypeArguments {"." Ident OptTypeArguments} ";".
+
+        expect('L');
+
+        StringBuilder qualIdent = new StringBuilder("L");
+        scanIdentifier();
+        while (symbol == '/') {
+            scanSymbol();
+            qualIdent.append(identifier).append("/");
+            scanIdentifier();
+        }
+
+        qualIdent.append(this.identifier);
+
+
+        List<ITypeReference> typeArgs = parseOptTypeArguments();
+
+        ITypeReference parentType = null;
+
+        String packageName = getPackageName(qualIdent.toString() + ";");
+        String className = getClassName(qualIdent.toString() + ";");
+
+        if (typeArgs.isEmpty()) {
+            parentType = factory.getClassReference(packageName, className);
+        } else {
+            IClassReference rawType = factory.getClassReference(packageName,
+                    className);
+            SigParameterizedType parameterizedType = factory
+                    .getParameterizedType(null, rawType, typeArgs);
+            parentType = parameterizedType;
+        }
+
+        ITypeReference typeToReturn = parentType;
+
+
+        // if owner type is a parameterized type, the types are separated by '.'
+        while (symbol == '.') {
+            // Deal with Member Classes:
+            scanSymbol();
+            scanIdentifier();
+            qualIdent.append("$").append(identifier);
+            typeArgs = parseOptTypeArguments();
+            ITypeReference memberType = null;
+
+            packageName = getPackageName(qualIdent.toString() + ";");
+            className = getClassName(qualIdent.toString() + ";");
+
+            if (typeArgs.isEmpty()) {
+                memberType = factory.getClassReference(packageName, className);
+            } else {
+                IClassReference rawType = factory.getClassReference(
+                        packageName, className);
+                SigParameterizedType parameterizedType = factory
+                        .getParameterizedType(parentType, rawType, typeArgs);
+                memberType = parameterizedType;
+            }
+            typeToReturn = memberType;
+        }
+
+        expect(';');
+
+        return typeToReturn;
+    }
+
+    private List<ITypeReference> parseOptTypeArguments() {
+        // OptTypeArguments ::= "<" TypeArgument {TypeArgument} ">".
+
+        List<ITypeReference> typeArgs = new ArrayList<ITypeReference>(8);
+        if (symbol == '<') {
+            scanSymbol();
+
+            typeArgs.add(parseTypeArgument());
+            while ((symbol != '>') && (symbol > 0)) {
+                typeArgs.add(parseTypeArgument());
+            }
+            expect('>');
+        }
+        return typeArgs;
+    }
+
+    private ITypeReference parseTypeArgument() {
+        // TypeArgument ::= (["+" | "-"] FieldTypeSignature) | "*".
+        List<ITypeReference> extendsBound = new ArrayList<ITypeReference>(1);
+        ITypeReference superBound = null;
+        if (symbol == '*') {
+            scanSymbol();
+            extendsBound.add(factory.getClassReference("java.lang", "Object"));
+            SigWildcardType wildcardType = factory.getWildcardType(superBound,
+                    extendsBound);
+            return wildcardType;
+        } else if (symbol == '+') {
+            scanSymbol();
+            extendsBound.add(parseFieldTypeSignature());
+            SigWildcardType wildcardType = factory.getWildcardType(superBound,
+                    extendsBound);
+            return wildcardType;
+        } else if (symbol == '-') {
+            scanSymbol();
+            superBound = parseFieldTypeSignature();
+            extendsBound.add(factory.getClassReference("java.lang", "Object"));
+            SigWildcardType wildcardType = factory.getWildcardType(superBound,
+                    extendsBound);
+            return wildcardType;
+        } else {
+            return parseFieldTypeSignature();
+        }
+    }
+
+    private ITypeVariableReference parseTypeVariableSignature() {
+        // TypeVariableSignature ::= "T" Ident ";".
+        expect('T');
+        scanIdentifier();
+        expect(';');
+
+        IGenericDeclaration declaration = genericDecl;
+
+        if (!factory.containsTypeVariableDefinition(identifier, declaration)) {
+            // since a field is not a generic declaration, i need to treat it
+            // differently.
+            // the generic declaration
+            if (parseForField) {
+                declaration = getDeclarationOfTypeVariable(identifier,
+                        (IClassDefinition) genericDecl);
+            } else {
+                declaration = getDeclarationOfTypeVariable(identifier,
+                        genericDecl.getDeclaringClass());
+            }
+            // just create type variable
+            factory.getTypeVariable(identifier, declaration);
+        }
+
+        return factory.getTypeVariableReference(identifier, declaration);
+    }
+
+    private ITypeReference parseTypeSignature() {
+        switch (symbol) {
+        case 'B':
+            scanSymbol();
+            return SigPrimitiveType.BYTE_TYPE;
+        case 'C':
+            scanSymbol();
+            return SigPrimitiveType.CHAR_TYPE;
+        case 'D':
+            scanSymbol();
+            return SigPrimitiveType.DOUBLE_TYPE;
+        case 'F':
+            scanSymbol();
+            return SigPrimitiveType.FLOAT_TYPE;
+        case 'I':
+            scanSymbol();
+            return SigPrimitiveType.INT_TYPE;
+        case 'J':
+            scanSymbol();
+            return SigPrimitiveType.LONG_TYPE;
+        case 'S':
+            scanSymbol();
+            return SigPrimitiveType.SHORT_TYPE;
+        case 'Z':
+            scanSymbol();
+            return SigPrimitiveType.BOOLEAN_TYPE;
+        default:
+            // Not an elementary type, but a FieldTypeSignature.
+            return parseFieldTypeSignature();
+        }
+    }
+
+    private void parseMethodTypeSignature() {
+        // MethodTypeSignature ::= [FormalTypeParameters]
+        // "(" {TypeSignature} ")" ReturnType {ThrowsSignature}.
+
+        parseOptFormalTypeParameters();
+
+        parameterTypes = new ArrayList<ITypeReference>(16);
+        expect('(');
+        while (symbol != ')' && (symbol > 0)) {
+            parameterTypes.add(parseTypeSignature());
+        }
+        expect(')');
+
+        returnType = parseReturnType();
+
+        exceptionTypes = new ArrayList<ITypeReference>(8);
+        while (symbol == '^') {
+            scanSymbol();
+
+            // ThrowsSignature ::= ("^" ClassTypeSignature) |
+            // ("^" TypeVariableSignature).
+            if (symbol == 'T') {
+                exceptionTypes.add(parseTypeVariableSignature());
+            } else {
+                exceptionTypes.add(parseClassTypeSignature());
+            }
+        }
+    }
+
+    private ITypeReference parseReturnType() {
+        // ReturnType ::= TypeSignature | "V".
+        if (symbol != 'V') {
+            return parseTypeSignature();
+        } else {
+            scanSymbol();
+            return SigPrimitiveType.VOID_TYPE;
+        }
+    }
+
+
+    //
+    // Scanner:
+    //
+
+    private void scanSymbol() {
+        if (!eof) {
+            if (pos < buffer.length) {
+                symbol = buffer[pos];
+                pos++;
+            } else {
+                symbol = 0;
+                eof = true;
+            }
+        } else {
+            throw new GenericSignatureFormatError();
+        }
+    }
+
+    private void expect(char c) {
+        if (symbol == c) {
+            scanSymbol();
+        } else {
+            throw new GenericSignatureFormatError();
+        }
+    }
+
+    private boolean isStopSymbol(char ch) {
+        switch (ch) {
+        case ':':
+        case '/':
+        case ';':
+        case '<':
+        case '.':
+            return true;
+        }
+        return false;
+    }
+
+    // PRE: symbol is the first char of the identifier.
+    // POST: symbol = the next symbol AFTER the identifier.
+    private void scanIdentifier() {
+        if (!eof) {
+            StringBuilder identBuf = new StringBuilder(32);
+            if (!isStopSymbol(symbol)) {
+                identBuf.append(symbol);
+                do {
+                    char ch = buffer[pos];
+                    if ((ch >= 'a') && (ch <= 'z') || (ch >= 'A')
+                            && (ch <= 'Z') || !isStopSymbol(ch)) {
+                        identBuf.append(buffer[pos]);
+                        pos++;
+                    } else {
+                        identifier = identBuf.toString();
+                        scanSymbol();
+                        return;
+                    }
+                } while (pos != buffer.length);
+                identifier = identBuf.toString();
+                symbol = 0;
+                eof = true;
+            } else {
+                // Ident starts with incorrect char.
+                symbol = 0;
+                eof = true;
+                throw new GenericSignatureFormatError();
+            }
+        } else {
+            throw new GenericSignatureFormatError();
+        }
+    }
+}
diff --git a/tools/signature-tools/src/signature/converter/dex/IClassInitializer.java b/tools/signature-tools/src/signature/converter/dex/IClassInitializer.java
new file mode 100644
index 0000000..935ca49
--- /dev/null
+++ b/tools/signature-tools/src/signature/converter/dex/IClassInitializer.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter.dex;
+
+import signature.model.IClassDefinition;
+
+public interface IClassInitializer {
+    IClassDefinition initializeClass(String packageName, String className);
+}
diff --git a/tools/signature-tools/src/signature/converter/doclet/DocletFactory.java b/tools/signature-tools/src/signature/converter/doclet/DocletFactory.java
new file mode 100644
index 0000000..ea757db
--- /dev/null
+++ b/tools/signature-tools/src/signature/converter/doclet/DocletFactory.java
@@ -0,0 +1,124 @@
+/*

+ * Copyright (C) 2009 The Android Open Source Project

+ *

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file except in compliance with the License.

+ * You may obtain a copy of the License at

+ *

+ *      http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ */

+

+package signature.converter.doclet;

+

+import java.io.IOException;

+import java.io.PrintWriter;

+import java.io.StringWriter;

+import java.lang.reflect.Constructor;

+import java.util.Set;

+

+import signature.converter.Visibility;

+import signature.io.IApiLoader;

+import signature.model.IApi;

+

+import com.sun.javadoc.RootDoc;

+import com.sun.tools.javac.util.Context;

+import com.sun.tools.javac.util.ListBuffer;

+import com.sun.tools.javac.util.Options;

+import com.sun.tools.javadoc.JavadocTool;

+import com.sun.tools.javadoc.Messager;

+import com.sun.tools.javadoc.ModifierFilter;

+import com.sun.tools.javadoc.RootDocImpl;

+

+public class DocletFactory implements IApiLoader {

+

+    public IApi loadApi(String name, Visibility visibility,

+            Set<String> fileNames, Set<String> packageNames) throws

+            IOException {

+        for (String packageName : packageNames) {

+            if (packageName.length() == 0)

+                throw new IllegalArgumentException(

+                        "default package not supported by DocletFactory");

+        }

+        StringBuffer buf = new StringBuffer();

+        for (String filename : fileNames) {

+            buf.append(filename);

+            buf.append(":");

+        }

+        String sourcepath = buf.substring(0, buf.length() - 1);

+        RootDoc root = getRootDoc(visibility, sourcepath, packageNames);

+        DocletToSigConverter converter = new DocletToSigConverter();

+        IApi api = converter.convertDocletRoot(name, root, visibility,

+                packageNames);

+        return api;

+    }

+

+    private static RootDoc getRootDoc(Visibility visibility, String sourcepath,

+            java.util.Set<String> packages) throws IOException {

+        long accessModifier = 0;

+        switch (visibility) {

+        case PRIVATE:

+            accessModifier |= com.sun.tools.javac.code.Flags.PRIVATE; // 0x2

+        case PACKAGE:                                              // 0x80000000

+            accessModifier |= com.sun.tools.javadoc.ModifierFilter.PACKAGE;

+        case PROTECTED:

+            accessModifier |= com.sun.tools.javac.code.Flags.PROTECTED; // 0x4

+        case PUBLIC:

+            accessModifier |= com.sun.tools.javac.code.Flags.PUBLIC; // 0x1

+        }

+

+        ModifierFilter showAccess = new ModifierFilter(accessModifier);

+        boolean breakiterator = false;

+        boolean quiet = false;

+        boolean legacy = false;

+        boolean docClasses = false;

+

+        String docLocale = "";

+        String encoding = null;

+        ListBuffer<String> javaNames = new ListBuffer<String>();

+        for (String p : packages)

+            javaNames.append(p);

+

+        ListBuffer<String[]> options = new ListBuffer<String[]>();

+

+        options.append(new String[] {"-sourcepath", sourcepath});

+

+        ListBuffer<String> subPackages = new ListBuffer<String>();

+        ListBuffer<String> excludedPackages = new ListBuffer<String>();

+

+        Context context = new Context();

+        Options compOpts = Options.instance(context);

+        compOpts.put("-sourcepath", sourcepath);

+

+        Constructor<Messager> c;

+        try {

+            // c = Messager.class.getDeclaredConstructor(Context.class,

+            // String.class);

+            // c.setAccessible(true);

+            // c.newInstance(context, "SigTest");

+            c = Messager.class.getDeclaredConstructor(Context.class,

+                    String.class, PrintWriter.class, PrintWriter.class,

+                    PrintWriter.class);

+            c.setAccessible(true);

+            PrintWriter err = new PrintWriter(new StringWriter());

+            PrintWriter warn = new PrintWriter(new StringWriter());

+            PrintWriter notice = new PrintWriter(new StringWriter());

+            c.newInstance(context, "SigTest", err, warn, notice);

+        } catch (Exception e) {

+            throw new RuntimeException(e);

+        }

+

+        JavadocTool comp = JavadocTool.make0(context);

+        RootDocImpl root = comp.getRootDocImpl(docLocale, encoding, showAccess,

+                javaNames.toList(), options.toList(), breakiterator,

+                subPackages.toList(), excludedPackages.toList(), docClasses,

+                legacy, quiet);

+        return root;

+    }

+

+}

diff --git a/tools/signature-tools/src/signature/converter/doclet/DocletToSigConverter.java b/tools/signature-tools/src/signature/converter/doclet/DocletToSigConverter.java
new file mode 100644
index 0000000..f9ebe77
--- /dev/null
+++ b/tools/signature-tools/src/signature/converter/doclet/DocletToSigConverter.java
@@ -0,0 +1,636 @@
+/*

+ * Copyright (C) 2009 The Android Open Source Project

+ *

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file except in compliance with the License.

+ * You may obtain a copy of the License at

+ *

+ *      http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ */

+

+package signature.converter.doclet;

+

+import java.util.EnumSet;

+import java.util.HashMap;

+import java.util.HashSet;

+import java.util.LinkedList;

+import java.util.List;

+import java.util.Map;

+import java.util.Set;

+import java.util.Stack;

+import java.util.Map.Entry;

+

+import signature.converter.Visibility;

+import signature.model.IAnnotation;

+import signature.model.IAnnotationElement;

+import signature.model.IAnnotationField;

+import signature.model.IApi;

+import signature.model.IClassDefinition;

+import signature.model.IClassReference;

+import signature.model.IConstructor;

+import signature.model.IEnumConstant;

+import signature.model.IField;

+import signature.model.IGenericDeclaration;

+import signature.model.IMethod;

+import signature.model.IPackage;

+import signature.model.IParameter;

+import signature.model.ITypeReference;

+import signature.model.ITypeVariableDefinition;

+import signature.model.ITypeVariableReference;

+import signature.model.Kind;

+import signature.model.Modifier;

+import signature.model.impl.SigAnnotation;

+import signature.model.impl.SigAnnotationElement;

+import signature.model.impl.SigAnnotationField;

+import signature.model.impl.SigApi;

+import signature.model.impl.SigClassDefinition;

+import signature.model.impl.SigClassReference;

+import signature.model.impl.SigConstructor;

+import signature.model.impl.SigEnumConstant;

+import signature.model.impl.SigExecutableMember;

+import signature.model.impl.SigField;

+import signature.model.impl.SigMethod;

+import signature.model.impl.SigPackage;

+import signature.model.impl.SigParameter;

+import signature.model.impl.SigPrimitiveType;

+import signature.model.impl.SigTypeVariableDefinition;

+import signature.model.impl.SigTypeVariableReference;

+import signature.model.util.TypePool;

+

+import com.sun.javadoc.AnnotationDesc;

+import com.sun.javadoc.AnnotationTypeDoc;

+import com.sun.javadoc.AnnotationTypeElementDoc;

+import com.sun.javadoc.AnnotationValue;

+import com.sun.javadoc.ClassDoc;

+import com.sun.javadoc.ConstructorDoc;

+import com.sun.javadoc.ExecutableMemberDoc;

+import com.sun.javadoc.FieldDoc;

+import com.sun.javadoc.MethodDoc;

+import com.sun.javadoc.PackageDoc;

+import com.sun.javadoc.Parameter;

+import com.sun.javadoc.ParameterizedType;

+import com.sun.javadoc.ProgramElementDoc;

+import com.sun.javadoc.RootDoc;

+import com.sun.javadoc.Type;

+import com.sun.javadoc.TypeVariable;

+import com.sun.javadoc.WildcardType;

+import com.sun.javadoc.AnnotationDesc.ElementValuePair;

+

+public class DocletToSigConverter {

+

+    TypePool pool;

+    Set<String> packageNames;

+

+    /**

+     * Converts the signature information javadoc knows about into a

+     * signature.model.ISources structure.

+     */

+    public IApi convertDocletRoot(String name, RootDoc root,

+            Visibility visibility, Set<String> packageNames) {

+        this.pool = new TypePool();

+        this.packageNames = packageNames;

+

+        Set<IPackage> packages = new HashSet<IPackage>();

+

+        for (PackageDoc pack : root.specifiedPackages()) {

+            assert packageNames.contains(pack.name());

+            packages.add(convertPackage(pack));

+        }

+

+        SigApi sources = new SigApi(name, visibility);

+        sources.setPackages(packages);

+        return sources;

+    }

+

+    private IPackage convertPackage(PackageDoc packageDoc) {

+        Set<IClassDefinition> classes = new HashSet<IClassDefinition>();

+        for (ClassDoc clazz : packageDoc.allClasses()) {

+            // classes.add((IClass)convertType(clazz));

+            classes.add(convertClass(clazz));

+        }

+

+        SigPackage p = new SigPackage(packageDoc.name());

+        p.setClasses(classes);

+        p.setAnnotations(convertAnnotations(packageDoc.annotations()));

+        return p;

+    }

+

+    private SigClassDefinition convertClass(ClassDoc classDoc) {

+

+        SigClassDefinition c = pool.getClass(classDoc.containingPackage()

+                .name(), classDoc.name());

+        if (c.getKind() != Kind.UNINITIALIZED) return c;

+

+        if (classDoc.isEnum())

+            c.setKind(Kind.ENUM);

+        else if (classDoc.isInterface())

+            c.setKind(Kind.INTERFACE);

+        else if (classDoc.isClass())

+            c.setKind(Kind.CLASS);

+        else if (classDoc.isAnnotationType()) c.setKind(Kind.ANNOTATION);

+

+        if (!packageNames.contains(c.getPackageName())) {

+            // no additional conversion for this class is necessary

+            initializeClass(c);

+            return c;

+        }

+

+        c.setModifiers(convertModifiers(classDoc.modifierSpecifier()));

+        if (Kind.INTERFACE.equals(c.getKind())

+                || Kind.ANNOTATION.equals(c.getKind())) {

+            c.getModifiers().add(Modifier.ABSTRACT);

+        }

+

+        // superclass may be a class or a parameterized type (e.g. extends

+        // List<String>),

+        // may also be null if classDoc is an interface

+        Type superclassType = classDoc.superclassType();

+        if (superclassType != null) {

+            c.setSuperClass(convertTypeReference(classDoc.superclassType()));

+        } else {

+            c.setSuperClass(null);

+        }

+

+        Set<ITypeReference> interfaces = new HashSet<ITypeReference>();

+        for (Type interfaceType : classDoc.interfaceTypes()) {

+            interfaces.add(convertTypeReference(interfaceType));

+        }

+        c.setInterfaces(interfaces);

+

+        ClassDoc containingClass = classDoc.containingClass();

+        if (containingClass != null)

+            c.setDeclaringClass(convertClass(containingClass));

+        else

+            c.setDeclaringClass(null);

+

+        Set<IClassDefinition> innerClasses = new HashSet<IClassDefinition>();

+        for (ClassDoc innerClass : classDoc.innerClasses()) {

+            innerClasses.add(convertClass(innerClass));

+        }

+        c.setInnerClasses(innerClasses);

+

+        Set<IConstructor> constructors = new HashSet<IConstructor>();

+        for (ConstructorDoc constructor : classDoc.constructors()) {

+            constructors.add(convertConstructor(constructor));

+        }

+        c.setConstructors(constructors);

+

+        Set<IMethod> methods = new HashSet<IMethod>();

+        for (MethodDoc method : classDoc.methods()) {

+            methods.add(convertMethod(method));

+        }

+        c.setMethods(methods);

+

+        Set<IField> fields = new HashSet<IField>();

+        for (FieldDoc field : classDoc.fields()) {

+            fields.add(convertField(field));

+        }

+        c.setFields(fields);

+

+        Set<IEnumConstant> enumConstants = new HashSet<IEnumConstant>();

+        int ordinal = 0;

+        for (FieldDoc enumConstant : classDoc.enumConstants()) {

+            enumConstants.add(convertEnumConstant(enumConstant, ordinal++));

+        }

+        c.setEnumConstants(enumConstants);

+

+        List<ITypeVariableDefinition> typeParameters =

+                new LinkedList<ITypeVariableDefinition>();

+        for (TypeVariable typeVariable : classDoc.typeParameters()) {

+            typeParameters

+                    .add(((ITypeVariableReference) convertTypeReference(

+                            typeVariable)).getTypeVariableDefinition());

+        }

+        c.setTypeParameters(typeParameters);

+

+        if (classDoc.isAnnotationType()) {

+            Map<SigAnnotationField, AnnotationTypeElementDoc> annotationFieldAnnotations =

+                    new HashMap<SigAnnotationField, AnnotationTypeElementDoc>();

+

+            // AnnotationTypeDoc annotationType =

+            // classDoc.asAnnotationTypeDoc(); // bug in Doclet Implementation,

+            // has been reported to sun

+            AnnotationTypeDoc annotationType = (AnnotationTypeDoc) classDoc;

+

+            Set<IAnnotationField> annotationFields =

+                    new HashSet<IAnnotationField>();

+            for (AnnotationTypeElementDoc annotationElement : annotationType

+                    .elements()) {

+                SigAnnotationField annotationField = new SigAnnotationField(

+                        annotationElement.name());

+                annotationField.setModifiers(convertModifiers(annotationElement

+                        .modifierSpecifier()));

+                annotationField.setType(convertTypeReference(annotationElement

+                        .returnType()));

+                annotationField

+                        .setDefaultValue(convertAnnotationValue(

+                                annotationElement.defaultValue()));

+

+                // the annotations on fields are set later because these

+                // annotations may be of

+                // the same type and may use fields which are not yet defined

+                annotationFieldAnnotations.put(annotationField,

+                        annotationElement);

+

+                annotationFields.add(annotationField);

+            }

+            c.setAnnotationFields(annotationFields);

+

+            // set annotation field annotations

+            for (Entry<SigAnnotationField, AnnotationTypeElementDoc> entry :

+                    annotationFieldAnnotations.entrySet()) {

+                entry.getKey().setAnnotations(

+                        convertAnnotations(entry.getValue().annotations()));

+            }

+        } else { // no annotation type

+            c.setAnnotationFields(null);

+        }

+

+        // set class annotations

+        c.setAnnotations(convertAnnotations(classDoc.annotations()));

+

+        return c;

+

+    }

+

+    private Object convertAnnotationValue(AnnotationValue annotationValue) {

+        if (annotationValue == null) {

+            return null;

+        }

+        Object value = annotationValue.value();

+        if (value instanceof Type) {

+            // Type contains primitive types as well, e.g. void.class

+            return convertTypeReference((Type) value);

+        } else if (value instanceof String) {

+            return value;

+        } else if (value instanceof Double || value instanceof Float

+                || value instanceof Long || value instanceof Integer

+                || value instanceof Short || value instanceof Byte

+                || value instanceof Character || value instanceof Boolean) {

+            return value;

+        } else if (value instanceof FieldDoc) {

+            FieldDoc field = (FieldDoc) value;

+            String name = field.name();

+            ITypeReference fieldType = convertTypeReference(field.type());

+            IClassReference fieldClassRef = (IClassReference) fieldType;

+            IClassDefinition fieldClass = fieldClassRef.getClassDefinition();

+

+            assert fieldClass.getKind() == Kind.ENUM;

+            Set<IEnumConstant> constants = fieldClass.getEnumConstants();

+            for (IEnumConstant enumConstant : constants) {

+                if (enumConstant.getName().equals(name)) value = enumConstant;

+            }

+            assert value instanceof IEnumConstant;

+            return value;

+        } else if (value instanceof AnnotationDesc) {

+            return convertAnnotation((AnnotationDesc) value);

+        } else if (value instanceof AnnotationValue) {

+            return convertAnnotationValue((AnnotationValue) value);

+        } else if (value instanceof AnnotationValue[]) {

+            AnnotationValue[] arr = (AnnotationValue[]) value;

+            int length = arr.length;

+            Object[] annotationArray = new Object[length];

+            for (int i = 0; i < length; i++) {

+                annotationArray[i] = convertAnnotationValue(arr[i]);

+            }

+            return annotationArray;

+        } else {

+            throw new RuntimeException("not expected case");

+        }

+    }

+

+    private ITypeReference convertArrayType(Type type) {

+        assert type.asWildcardType() == null;

+        assert type.asAnnotationTypeDoc() == null;

+

+        ITypeReference baseType = null;

+        if (type.asTypeVariable() != null) {

+            baseType = convertTypeReference(type.asTypeVariable());

+        } else if (type.asParameterizedType() != null) {

+            baseType = convertTypeReference(type.asParameterizedType());

+        } else if (type.asClassDoc() != null) {

+            baseType = new SigClassReference(convertClass(type.asClassDoc()));

+        } else if (type.isPrimitive()) {

+            baseType = SigPrimitiveType.valueOfTypeName(type.typeName());

+        } else {

+            throw new RuntimeException(type.toString());

+        }

+

+        ITypeReference arrayType = baseType;

+        int dimension = type.dimension().length() / 2;

+        while (dimension > 0) {

+            arrayType = pool.getArrayType(arrayType);

+            dimension--;

+        }

+

+        return arrayType;

+    }

+

+    private SigTypeVariableDefinition currentTypeVariableDefinition = null;

+

+    private ITypeReference convertTypeReference(Type type) {

+        assert type != null;

+

+        if (!"".equals(type.dimension())) {

+            return convertArrayType(type);

+        }

+

+        ParameterizedType pType = type.asParameterizedType();

+        if (pType != null) {

+            ITypeReference ownerType = null;

+            Type containingType = pType.containingType();

+            if (containingType != null)

+                ownerType = convertTypeReference(containingType);

+            IClassReference rawType = new SigClassReference(convertClass(pType

+                    .asClassDoc()));

+

+            List<ITypeReference> typeArguments =

+                    new LinkedList<ITypeReference>();

+            for (Type typeArgument : pType.typeArguments()) {

+                typeArguments.add(convertTypeReference(typeArgument));

+            }

+

+            if (typeArguments.size() > 0) {

+                return pool.getParameterizedType(ownerType, rawType,

+                        typeArguments);

+            } else {

+                return rawType;

+            }

+        }

+

+        TypeVariable tv = type.asTypeVariable();

+        if (tv != null) {

+            String name = tv.typeName();

+

+            if (currentTypeVariableDefinition != null

+                    && name.equals(currentTypeVariableDefinition.getName()))

+                return new SigTypeVariableReference(

+                        currentTypeVariableDefinition);

+

+            IGenericDeclaration genericDeclaration = null;

+            ProgramElementDoc programElement = tv.owner();

+            if (programElement instanceof ClassDoc) {

+                genericDeclaration = convertClass((ClassDoc) programElement);

+            } else if (programElement instanceof MethodDoc

+                    && currentMethod.size() > 0) {

+                genericDeclaration = currentMethod.peek();

+            } else if (programElement instanceof ConstructorDoc

+                    && currentConstructor.size() > 0) {

+                genericDeclaration = currentConstructor.peek();

+            } else {

+                throw new IllegalStateException("situation not expected");

+            }

+            SigTypeVariableDefinition typeVariable = pool.getTypeVariable(name,

+                    genericDeclaration);

+

+            List<ITypeReference> upperBounds = new LinkedList<ITypeReference>();

+            for (Type upperBound : tv.bounds()) {

+                // we are converting a type variable declaration which is stored

+                // in the

+                // field currentTypeVariableDefinition

+                assert currentTypeVariableDefinition == null;

+                currentTypeVariableDefinition = typeVariable;

+                upperBounds.add(convertTypeReference(upperBound));

+                currentTypeVariableDefinition = null;

+            }

+            if (upperBounds.size() == 0) {

+                // no explicit bounds, use java.lang.Object

+                upperBounds.add(pool.getClassReference("java.lang", "Object"));

+            }

+            typeVariable.setUpperBounds(upperBounds);

+

+            return new SigTypeVariableReference(typeVariable);

+        }

+

+        WildcardType wt = type.asWildcardType();

+        if (wt != null) {

+            ITypeReference lowerBound = null;

+            for (Type superBound : wt.superBounds()) {

+                lowerBound = convertTypeReference(superBound);

+            }

+

+            List<ITypeReference> upperBounds = new LinkedList<ITypeReference>();

+            for (Type upperBound : wt.extendsBounds()) {

+                upperBounds.add(convertTypeReference(upperBound));

+            }

+            if (upperBounds.size() == 0) {

+                // no explicit bounds, use java.lang.Object

+                upperBounds.add(pool.getClassReference("java.lang", "Object"));

+            }

+

+            return pool.getWildcardType(lowerBound, upperBounds);

+        }

+

+        ClassDoc c = type.asClassDoc();

+        if (c != null) {

+            return new SigClassReference(convertClass(c));

+        }

+

+        if (type.isPrimitive()) {

+            return SigPrimitiveType.valueOfTypeName(type.typeName());

+        }

+

+        throw new IllegalStateException(type.toString());

+    }

+

+    private void convertExecutableMember(ExecutableMemberDoc member,

+            SigExecutableMember m) {

+        Set<Modifier> modifiers = convertModifiers(member.modifierSpecifier());

+

+        // Doclet Bug: final values method is not considered as final

+        if (member.containingClass().isEnum() && member.name().equals("values")

+                && member.parameters().length == 0) {

+            modifiers.add(Modifier.FINAL);

+        }

+

+        if (member.containingClass().isInterface()) {

+            modifiers.add(Modifier.ABSTRACT);

+        }

+

+        m.setModifiers(modifiers);

+        m.setAnnotations(convertAnnotations(member.annotations()));

+        m.setDeclaringClass(convertClass(member.containingClass()));

+

+        List<ITypeVariableDefinition> typeParameters =

+                new LinkedList<ITypeVariableDefinition>();

+        for (TypeVariable typeParameter : member.typeParameters()) {

+            String name = typeParameter.typeName();

+            IGenericDeclaration genericDeclaration = null;

+            if (currentMethod.size() > 0)

+                genericDeclaration = currentMethod.peek();

+            else if (currentConstructor.size() > 0)

+                genericDeclaration = currentConstructor.peek();

+            else

+                throw new RuntimeException();

+            SigTypeVariableDefinition p = pool.getTypeVariable(name,

+                    genericDeclaration);

+

+            List<ITypeReference> upperBounds = new LinkedList<ITypeReference>();

+            for (Type u : typeParameter.bounds()) {

+                upperBounds.add(convertTypeReference(u));

+            }

+            p.setUpperBounds(upperBounds);

+            typeParameters.add(p);

+        }

+        m.setTypeParameters(typeParameters);

+

+        List<IParameter> parameters = new LinkedList<IParameter>();

+        for (Parameter parameter : member.parameters()) {

+            SigParameter p = new SigParameter(convertTypeReference(parameter

+                    .type()));

+            p.setAnnotations(convertAnnotations(parameter.annotations()));

+            parameters.add(p);

+        }

+        m.setParameters(parameters);

+

+        Set<ITypeReference> exceptions = new HashSet<ITypeReference>();

+        for (Type exceptionType : member.thrownExceptionTypes()) {

+            exceptions.add(convertTypeReference(exceptionType));

+        }

+        m.setExceptions(exceptions);

+    }

+

+    private Stack<SigMethod> currentMethod = new Stack<SigMethod>();

+

+    private IMethod convertMethod(MethodDoc method) {

+        SigMethod m = new SigMethod(method.name());

+        currentMethod.push(m);

+        convertExecutableMember(method, m);

+        m.setReturnType(convertTypeReference(method.returnType()));

+        currentMethod.pop();

+        return m;

+    }

+

+    private Stack<SigConstructor> currentConstructor =

+            new Stack<SigConstructor>();

+

+    private IConstructor convertConstructor(ConstructorDoc constructor) {

+        SigConstructor c = new SigConstructor(constructor.name());

+        currentConstructor.push(c);

+        convertExecutableMember(constructor, c);

+        currentConstructor.pop();

+        return c;

+    }

+

+    private IField convertField(FieldDoc field) {

+        SigField f = new SigField(field.name());

+        f.setAnnotations(convertAnnotations(field.annotations()));

+        f.setModifiers(convertModifiers(field.modifierSpecifier()));

+        f.setType(convertTypeReference(field.type()));

+        return f;

+    }

+

+    private IEnumConstant convertEnumConstant(FieldDoc enumConstant,

+            int ordinal) {

+        SigEnumConstant ec = new SigEnumConstant(enumConstant.name());

+        ec.setOrdinal(ordinal);

+        ec.setAnnotations(convertAnnotations(enumConstant.annotations()));

+        ec.setModifiers(convertModifiers(enumConstant.modifierSpecifier()));

+        ec.setType(convertTypeReference(enumConstant.type()));

+        return ec;

+    }

+

+    private Set<IAnnotation> convertAnnotations(

+            AnnotationDesc[] annotationDescs) {

+        Set<IAnnotation> annotations = new HashSet<IAnnotation>();

+        for (AnnotationDesc annotationDesc : annotationDescs) {

+            if (!annotationRetentionIsSource(annotationDesc))

+                annotations.add(convertAnnotation(annotationDesc));

+        }

+        return annotations;

+    }

+

+    private boolean annotationRetentionIsSource(AnnotationDesc annotationDesc) {

+        AnnotationTypeDoc type = annotationDesc.annotationType();

+        AnnotationDesc[] annotations = type.annotations();

+        for (AnnotationDesc d : annotations) {

+            if ("java.lang.annotation.Retention".equals(d.annotationType()

+                    .qualifiedName())) {

+                for (ElementValuePair value : d.elementValues()) {

+                    if ("value".equals(value.element().name())) {

+                        return "java.lang.annotation.RetentionPolicy.SOURCE"

+                                .equals(value.value().value().toString());

+                    }

+                }

+            }

+        }

+        // default retention policy is CLASS

+        return false;

+    }

+

+    private IAnnotation convertAnnotation(AnnotationDesc annotationDesc) {

+        SigAnnotation a = new SigAnnotation();

+

+        IClassReference annotationType = (IClassReference) convertTypeReference(

+                annotationDesc.annotationType());

+        a.setType(annotationType);

+

+        Set<IAnnotationElement> elements = new HashSet<IAnnotationElement>();

+        for (AnnotationDesc.ElementValuePair pair : annotationDesc

+                .elementValues()) {

+            SigAnnotationElement element = new SigAnnotationElement();

+            elements.add(element);

+

+            element.setValue(convertAnnotationValue(pair.value()));

+            String name = pair.element().name();

+            for (IAnnotationField field : annotationType.getClassDefinition()

+                    .getAnnotationFields()) {

+                if (field.getName().equals(name)) {

+                    element.setDeclaringField(field);

+                }

+            }

+        }

+        a.setElements(elements);

+        return a;

+    }

+

+    private void initializeClass(SigClassDefinition c) {

+        c.setAnnotationFields(null);

+        c.setAnnotations(null);

+        c.setConstructors(null);

+        c.setDeclaringClass(null);

+        c.setEnumConstants(null);

+        c.setFields(null);

+        c.setInnerClasses(null);

+        c.setInterfaces(null);

+        c.setMethods(null);

+        c.setModifiers(null);

+        c.setSuperClass(null);

+        c.setTypeParameters(null);

+    }

+

+    private Set<Modifier> convertModifiers(int mod) {

+        Set<Modifier> modifiers = EnumSet.noneOf(Modifier.class);

+        if (java.lang.reflect.Modifier.isAbstract(mod))

+            modifiers.add(Modifier.ABSTRACT);

+        if (java.lang.reflect.Modifier.isFinal(mod))

+            modifiers.add(Modifier.FINAL);

+        // if (java.lang.reflect.Modifier.isNative(mod))

+        // modifiers.add(Modifier.NATIVE);

+        if (java.lang.reflect.Modifier.isPrivate(mod))

+            modifiers.add(Modifier.PRIVATE);

+        if (java.lang.reflect.Modifier.isProtected(mod))

+            modifiers.add(Modifier.PROTECTED);

+        if (java.lang.reflect.Modifier.isPublic(mod))

+            modifiers.add(Modifier.PUBLIC);

+        if (java.lang.reflect.Modifier.isStatic(mod))

+            modifiers.add(Modifier.STATIC);

+        // if (java.lang.reflect.Modifier.isStrict(mod))

+        // modifiers.add(Modifier.STRICT);

+        // if (java.lang.reflect.Modifier.isSynchronized(mod))

+        // modifiers.add(Modifier.SYNCHRONIZED);

+        // if (java.lang.reflect.Modifier.isTransient(mod))

+        // modifiers.add(Modifier.TRANSIENT);

+        if (java.lang.reflect.Modifier.isVolatile(mod))

+            modifiers.add(Modifier.VOLATILE);

+

+        return modifiers;

+    }

+

+}

diff --git a/tools/signature-tools/src/signature/io/IApiDeltaExternalizer.java b/tools/signature-tools/src/signature/io/IApiDeltaExternalizer.java
new file mode 100644
index 0000000..bf3cb8b
--- /dev/null
+++ b/tools/signature-tools/src/signature/io/IApiDeltaExternalizer.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.io;
+
+import java.io.IOException;
+
+import signature.compare.model.IApiDelta;
+
+public interface IApiDeltaExternalizer {
+    void externalize(String location, IApiDelta delta) throws IOException;
+}
diff --git a/tools/signature-tools/src/signature/io/IApiExternalizer.java b/tools/signature-tools/src/signature/io/IApiExternalizer.java
new file mode 100644
index 0000000..3bbfbe5
--- /dev/null
+++ b/tools/signature-tools/src/signature/io/IApiExternalizer.java
@@ -0,0 +1,30 @@
+/*

+ * Copyright (C) 2009 The Android Open Source Project

+ *

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file except in compliance with the License.

+ * You may obtain a copy of the License at

+ *

+ *      http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ */

+

+package signature.io;

+

+import signature.model.IApi;

+

+import java.io.IOException;

+

+/**

+ * This interface is used to write API definitions. Possible implementations of

+ * this interface use Java serialization to store the API in binary form on the

+ * disk. An alternative implementation can use ASCII files.

+ */

+public interface IApiExternalizer {

+    void externalizeApi(String loacation, IApi signature) throws IOException;

+}

diff --git a/tools/signature-tools/src/signature/io/IApiLoader.java b/tools/signature-tools/src/signature/io/IApiLoader.java
new file mode 100644
index 0000000..a38fa1a
--- /dev/null
+++ b/tools/signature-tools/src/signature/io/IApiLoader.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.io;
+
+import java.io.IOException;
+import java.util.Set;
+
+import signature.converter.Visibility;
+import signature.model.IApi;
+
+public interface IApiLoader {
+    IApi loadApi(String name, Visibility visibility, Set<String> fileNames,
+            Set<String> packageNames) throws IOException;
+}
diff --git a/tools/signature-tools/src/signature/io/html/ApiOverviewPage.java b/tools/signature-tools/src/signature/io/html/ApiOverviewPage.java
new file mode 100644
index 0000000..d97c092
--- /dev/null
+++ b/tools/signature-tools/src/signature/io/html/ApiOverviewPage.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.io.html;
+
+import org.antlr.stringtemplate.StringTemplate;
+
+import signature.compare.model.IApiDelta;
+import signature.compare.model.IPackageDelta;
+import signature.compare.model.impl.SigDelta;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+public class ApiOverviewPage implements IEmitter {
+
+    private final IApiDelta apiDelta;
+
+    private List<IPackageDelta> removedPackages;
+    private List<IPackageDelta> addedPackages;
+    private List<IPackageDelta> changedPackages;
+    private Map<String, String> commonInfos;
+
+    public ApiOverviewPage(IApiDelta apiDelta,
+            Map<String, String> commonInfos) {
+        this.apiDelta = apiDelta;
+        this.commonInfos = commonInfos;
+        prepareData();
+    }
+
+    private void prepareData() {
+        if (apiDelta.getPackageDeltas().isEmpty()) {
+            commonInfos.put("no_delta", "no_delta");
+        }
+        removedPackages = new ArrayList<IPackageDelta>(SigDelta
+                .getRemoved(apiDelta.getPackageDeltas()));
+        Collections.sort(removedPackages, new PackageByNameComparator());
+
+        addedPackages = new ArrayList<IPackageDelta>(SigDelta.getAdded(apiDelta
+                .getPackageDeltas()));
+        Collections.sort(addedPackages, new PackageByNameComparator());
+
+        changedPackages = new ArrayList<IPackageDelta>(SigDelta
+                .getChanged(apiDelta.getPackageDeltas()));
+        Collections.sort(changedPackages, new PackageByNameComparator());
+    }
+
+    public void writeTo(StringBuilder b) {
+        StringTemplate template = TemplateStore
+                .getStringTemplate("ApiOverviewPage");
+        template.setArgumentContext(commonInfos);
+        template.setAttribute("removed_packages", removedPackages);
+        template.setAttribute("added_packages", addedPackages);
+        template.setAttribute("changed_packages", changedPackages);
+        b.append(template.toString());
+    }
+}
diff --git a/tools/signature-tools/src/signature/io/html/ClassByNameComparator.java b/tools/signature-tools/src/signature/io/html/ClassByNameComparator.java
new file mode 100644
index 0000000..8e23434
--- /dev/null
+++ b/tools/signature-tools/src/signature/io/html/ClassByNameComparator.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.io.html;
+
+import signature.compare.model.IClassDefinitionDelta;
+
+import java.util.Comparator;
+
+public class ClassByNameComparator implements
+        Comparator<IClassDefinitionDelta> {
+
+    public int compare(IClassDefinitionDelta a, IClassDefinitionDelta b) {
+        assert a.getType() == b.getType();
+        if (a.getFrom() != null) {
+            return a.getFrom().getName().compareTo(b.getFrom().getName());
+        } else {
+            return a.getTo().getName().compareTo(b.getTo().getName());
+        }
+    }
+}
diff --git a/tools/signature-tools/src/signature/io/html/ClassOverviewPage.java b/tools/signature-tools/src/signature/io/html/ClassOverviewPage.java
new file mode 100644
index 0000000..6951fb3
--- /dev/null
+++ b/tools/signature-tools/src/signature/io/html/ClassOverviewPage.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.io.html;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Map;
+
+import org.antlr.stringtemplate.StringTemplate;
+
+import signature.compare.model.IAnnotationFieldDelta;
+import signature.compare.model.IClassDefinitionDelta;
+import signature.compare.model.IConstructorDelta;
+import signature.compare.model.IEnumConstantDelta;
+import signature.compare.model.IFieldDelta;
+import signature.compare.model.IMethodDelta;
+import signature.compare.model.impl.SigDelta;
+
+public class ClassOverviewPage implements IEmitter {
+
+    private static final String PAGE = "ClassOverviewPage";
+
+    private final IClassDefinitionDelta classDelta;
+
+    private FieldByNameComparator<IFieldDelta> fieldComparator =
+            new FieldByNameComparator<IFieldDelta>();
+    private ArrayList<IFieldDelta> removedFields;
+    private ArrayList<IFieldDelta> addedFields;
+    private ArrayList<IFieldDelta> changedFields;
+
+    private FieldByNameComparator<IAnnotationFieldDelta> annotationfieldComparator =
+            new FieldByNameComparator<IAnnotationFieldDelta>();
+    private ArrayList<IAnnotationFieldDelta> removedAnnotationFields;
+    private ArrayList<IAnnotationFieldDelta> addedAnnotationFields;
+    private ArrayList<IAnnotationFieldDelta> changedAnnotationFields;
+
+    private FieldByNameComparator<IEnumConstantDelta> enumConstantComparator =
+            new FieldByNameComparator<IEnumConstantDelta>();
+    private ArrayList<IEnumConstantDelta> removedEnumConstants;
+    private ArrayList<IEnumConstantDelta> addedEnumConstants;
+    private ArrayList<IEnumConstantDelta> changedEnumConstants;
+
+    private ExecutableMemberComparator constructorComparator =
+            new ExecutableMemberComparator();
+    private ArrayList<IConstructorDelta> removedConstructors;
+    private ArrayList<IConstructorDelta> addedConstructors;
+    private ArrayList<IConstructorDelta> changedConstructors;
+
+    private ExecutableMemberComparator methodComparator =
+            new ExecutableMemberComparator();
+    private ArrayList<IMethodDelta> removedMethods;
+    private ArrayList<IMethodDelta> addedMethods;
+    private ArrayList<IMethodDelta> changedMethods;
+
+    private final Map<String, String> commonInfos;
+
+    public ClassOverviewPage(IClassDefinitionDelta classDelta,
+            Map<String, String> commonInfos) {
+        this.classDelta = classDelta;
+        this.commonInfos = commonInfos;
+        prepareData();
+    }
+
+    private void prepareData() {
+        if (classDelta.getFieldDeltas() != null) {
+            prepareFieldDeltas();
+        }
+        if (classDelta.getAnnotationFieldDeltas() != null) {
+            prepareAnnotationFieldDeltas();
+        }
+        if (classDelta.getEnumConstantDeltas() != null) {
+            prepareEnumConstantDeltas();
+        }
+        if (classDelta.getConstructorDeltas() != null) {
+            prepareConstructorDeltas();
+        }
+        if (classDelta.getMethodDeltas() != null) {
+            prepareMethodDeltas();
+        }
+    }
+
+    private void prepareFieldDeltas() {
+        removedFields = new ArrayList<IFieldDelta>(SigDelta
+                .getRemoved(classDelta.getFieldDeltas()));
+        Collections.sort(removedFields, fieldComparator);
+
+        addedFields = new ArrayList<IFieldDelta>(SigDelta.getAdded(classDelta
+                .getFieldDeltas()));
+        Collections.sort(addedFields, fieldComparator);
+
+        changedFields = new ArrayList<IFieldDelta>(SigDelta
+                .getChanged(classDelta.getFieldDeltas()));
+        Collections.sort(changedFields, fieldComparator);
+    }
+
+    private void prepareAnnotationFieldDeltas() {
+        removedAnnotationFields = new ArrayList<IAnnotationFieldDelta>(SigDelta
+                .getRemoved(classDelta.getAnnotationFieldDeltas()));
+        Collections.sort(removedAnnotationFields, annotationfieldComparator);
+
+        addedAnnotationFields = new ArrayList<IAnnotationFieldDelta>(SigDelta
+                .getAdded(classDelta.getAnnotationFieldDeltas()));
+        Collections.sort(addedAnnotationFields, annotationfieldComparator);
+
+        changedAnnotationFields = new ArrayList<IAnnotationFieldDelta>(SigDelta
+                .getChanged(classDelta.getAnnotationFieldDeltas()));
+        Collections.sort(changedAnnotationFields, annotationfieldComparator);
+    }
+
+    private void prepareEnumConstantDeltas() {
+        removedEnumConstants = new ArrayList<IEnumConstantDelta>(SigDelta
+                .getRemoved(classDelta.getEnumConstantDeltas()));
+        Collections.sort(removedEnumConstants, enumConstantComparator);
+
+        addedEnumConstants = new ArrayList<IEnumConstantDelta>(SigDelta
+                .getAdded(classDelta.getEnumConstantDeltas()));
+        Collections.sort(addedEnumConstants, enumConstantComparator);
+
+        changedEnumConstants = new ArrayList<IEnumConstantDelta>(SigDelta
+                .getChanged(classDelta.getEnumConstantDeltas()));
+        Collections.sort(changedEnumConstants, enumConstantComparator);
+    }
+
+    private void prepareConstructorDeltas() {
+        removedConstructors = new ArrayList<IConstructorDelta>(SigDelta
+                .getRemoved(classDelta.getConstructorDeltas()));
+        Collections.sort(removedConstructors, constructorComparator);
+
+        addedConstructors = new ArrayList<IConstructorDelta>(SigDelta
+                .getAdded(classDelta.getConstructorDeltas()));
+        Collections.sort(addedConstructors, constructorComparator);
+
+        changedConstructors = new ArrayList<IConstructorDelta>(SigDelta
+                .getChanged(classDelta.getConstructorDeltas()));
+        Collections.sort(changedConstructors, constructorComparator);
+    }
+
+    private void prepareMethodDeltas() {
+        removedMethods = new ArrayList<IMethodDelta>(SigDelta
+                .getRemoved(classDelta.getMethodDeltas()));
+        Collections.sort(removedMethods, methodComparator);
+
+        addedMethods = new ArrayList<IMethodDelta>(SigDelta.getAdded(classDelta
+                .getMethodDeltas()));
+        Collections.sort(addedMethods, methodComparator);
+
+        changedMethods = new ArrayList<IMethodDelta>(SigDelta
+                .getChanged(classDelta.getMethodDeltas()));
+        Collections.sort(changedMethods, methodComparator);
+    }
+
+    public void writeTo(StringBuilder b) {
+        StringTemplate template = TemplateStore.getStringTemplate(PAGE);
+
+        template.setAttribute("class_delta", classDelta);
+        boolean annotationDelta = classDelta.getAnnotationDeltas() != null;
+        boolean modifierDelta = classDelta.getModifierDeltas() != null;
+        boolean typeVariableDelta = classDelta.getTypeVariableDeltas() != null;
+        boolean superClassDelta = classDelta.getSuperClassDelta() != null;
+        boolean interfaceDelta = classDelta.getInterfaceDeltas() != null;
+        boolean hasSignatureDelta = annotationDelta || modifierDelta
+                || typeVariableDelta || superClassDelta || interfaceDelta;
+
+        template.setAttribute("has_class_signature_delta", hasSignatureDelta);
+
+        template.setAttribute("removed_fields", removedFields);
+        template.setAttribute("added_fields", addedFields);
+        template.setAttribute("changed_fields", changedFields);
+
+        template.setAttribute("removed_annotation_fields",
+                removedAnnotationFields);
+        template.setAttribute("added_annotation_fields", addedAnnotationFields);
+        template.setAttribute("changed_annotation_fields",
+                changedAnnotationFields);
+
+        template.setAttribute("removed_enum_constants", removedEnumConstants);
+        template.setAttribute("added_enum_constants", addedEnumConstants);
+        template.setAttribute("changed_enum_constants", changedEnumConstants);
+
+        template.setAttribute("removed_constructors", removedConstructors);
+        template.setAttribute("added_constructors", addedConstructors);
+        template.setAttribute("changed_constructors", changedConstructors);
+
+        template.setAttribute("removed_methods", removedMethods);
+        template.setAttribute("added_methods", addedMethods);
+        template.setAttribute("changed_methods", changedMethods);
+
+        template.setArgumentContext(commonInfos);
+        b.append(template.toString());
+    }
+}
diff --git a/tools/signature-tools/src/signature/io/html/ExecutableMemberComparator.java b/tools/signature-tools/src/signature/io/html/ExecutableMemberComparator.java
new file mode 100644
index 0000000..e342342
--- /dev/null
+++ b/tools/signature-tools/src/signature/io/html/ExecutableMemberComparator.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.io.html;
+
+import signature.compare.model.IExecutableMemberDelta;
+import signature.model.IArrayType;
+import signature.model.IClassDefinition;
+import signature.model.IClassReference;
+import signature.model.IExecutableMember;
+import signature.model.IParameter;
+import signature.model.IParameterizedType;
+import signature.model.IPrimitiveType;
+import signature.model.ITypeDefinition;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+import signature.model.ITypeVariableReference;
+
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+
+public class ExecutableMemberComparator implements
+        Comparator<IExecutableMemberDelta<? extends IExecutableMember>> {
+
+    public int compare(IExecutableMemberDelta<? extends IExecutableMember> a,
+            IExecutableMemberDelta<? extends IExecutableMember> b) {
+        assert a.getType() == b.getType();
+        IExecutableMember aMember = null;
+        IExecutableMember bMember = null;
+
+        if (a.getFrom() != null) {
+            aMember = a.getFrom();
+            bMember = b.getFrom();
+        } else {
+            aMember = a.getTo();
+            bMember = b.getTo();
+        }
+
+        int returnValue = aMember.getName().compareTo(bMember.getName());
+        return returnValue != 0 ? returnValue : compareParameterLists(aMember
+                .getParameters(), bMember.getParameters());
+    }
+
+    private int compareParameterLists(List<IParameter> a, List<IParameter> b) {
+        if (a.size() != b.size()) {
+            return a.size() - b.size();
+        }
+        Iterator<IParameter> aIt = a.iterator();
+        Iterator<IParameter> bIt = b.iterator();
+        int returnValue = 0;
+        while (aIt.hasNext() && bIt.hasNext()) {
+            returnValue += getTypeName(aIt.next().getType()).compareTo(
+                    getTypeName(bIt.next().getType()));
+        }
+        return returnValue;
+    }
+
+    private String getTypeName(ITypeReference type) {
+        if (type instanceof IClassReference) {
+            return getTypeName(((IClassReference) type).getClassDefinition());
+        }
+        if (type instanceof ITypeVariableReference) {
+            return getTypeName(((ITypeVariableReference) type)
+                    .getTypeVariableDefinition());
+        }
+        if (type instanceof IParameterizedType) {
+            return getTypeName(((IParameterizedType) type).getRawType());
+        }
+        if (type instanceof IArrayType) {
+            return getTypeName(((IArrayType) type).getComponentType());
+        }
+        if (type instanceof IPrimitiveType) {
+            return ((IPrimitiveType) type).getName();
+        }
+        return type.toString();
+    }
+
+    private String getTypeName(ITypeDefinition type) {
+        if (type instanceof IClassDefinition) {
+            return ((IClassDefinition) type).getName();
+        }
+        if (type instanceof ITypeVariableDefinition) {
+            return ((ITypeVariableDefinition) type).getName();
+        }
+        return type.toString();
+    }
+
+}
diff --git a/tools/signature-tools/src/signature/io/html/FieldByNameComparator.java b/tools/signature-tools/src/signature/io/html/FieldByNameComparator.java
new file mode 100644
index 0000000..9aaf1f8
--- /dev/null
+++ b/tools/signature-tools/src/signature/io/html/FieldByNameComparator.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.io.html;
+
+import java.util.Comparator;
+
+import signature.compare.model.IMemberDelta;
+import signature.model.IField;
+
+public class FieldByNameComparator<T extends IMemberDelta<?>> implements
+        Comparator<T> {
+
+    public int compare(T a, T b) {
+        assert a.getType() == b.getType();
+        IField aField = null;
+        IField bField = null;
+
+        // FIXME File javac or jdt bug.
+        // Note: Casts are required by javac 1.5.0_16.
+        if (a.getFrom() != null) {
+            aField = (IField) a.getFrom();
+            bField = (IField) b.getFrom();
+        } else {
+            aField = (IField) a.getTo();
+            bField = (IField) b.getTo();
+        }
+        return aField.getName().compareTo(bField.getName());
+    }
+}
diff --git a/tools/signature-tools/src/signature/io/html/HtmlDeltaExternalizer.java b/tools/signature-tools/src/signature/io/html/HtmlDeltaExternalizer.java
new file mode 100644
index 0000000..1ba5cba
--- /dev/null
+++ b/tools/signature-tools/src/signature/io/html/HtmlDeltaExternalizer.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.io.html;
+
+import org.antlr.stringtemplate.StringTemplate;
+
+import signature.Version;
+import signature.compare.model.IApiDelta;
+import signature.compare.model.IClassDefinitionDelta;
+import signature.compare.model.IDelta;
+import signature.compare.model.IPackageDelta;
+import signature.compare.model.impl.SigDelta;
+import signature.io.IApiDeltaExternalizer;
+import signature.model.IClassDefinition;
+import signature.model.IPackage;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.DateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+public class HtmlDeltaExternalizer implements IApiDeltaExternalizer {
+
+    private static final String OVERVIEW_PAGE_NAME = "changes.html";
+    private static final String STYLE_SHEET_NAME = "styles.css";
+    private static final String DELTA_FOLDER = "changes" + File.separator;
+
+    public void externalize(String location, IApiDelta apiDelta)
+            throws IOException {
+        if (!location.endsWith(File.separator)) {
+            location += File.separator;
+        }
+
+        File directory = new File(location);
+        if (!directory.exists()) {
+            directory.mkdirs();
+        }
+
+        copyStyleSheet(location);
+
+        Map<String, String> commonInfos = new HashMap<String, String>();
+        commonInfos.put("creation_time", DateFormat.getDateTimeInstance()
+                .format(new Date()));
+        commonInfos.put("from_desc", apiDelta.getFrom().getName());
+        commonInfos.put("to_desc", apiDelta.getTo().getName());
+
+        // write overview page
+        StringBuilder content = new StringBuilder();
+        ApiOverviewPage apiOverviewPage = new ApiOverviewPage(apiDelta,
+                commonInfos);
+        apiOverviewPage.writeTo(content);
+        writeToFile(location + OVERVIEW_PAGE_NAME, content.toString());
+
+        // write package overview
+        Set<IPackageDelta> changedPackages = SigDelta.getChanged(apiDelta
+                .getPackageDeltas());
+        if (!changedPackages.isEmpty()) {
+
+            File file = new File(location + DELTA_FOLDER);
+            if (!file.exists()) {
+                file.mkdir();
+            }
+
+            for (IPackageDelta packageDelta : changedPackages) {
+                content = new StringBuilder();
+                PackageOverviewPage packagePage = new PackageOverviewPage(
+                        packageDelta, commonInfos);
+                packagePage.writeTo(content);
+                IPackage aPackage = getAnElement(packageDelta);
+                String packageOverviewFileName = location + DELTA_FOLDER
+                        + "pkg_" + aPackage.getName() + ".html";
+                writeToFile(packageOverviewFileName, content.toString());
+
+                // write class overviews
+                for (IClassDefinitionDelta classDelta : packageDelta
+                        .getClassDeltas()) {
+                    content = new StringBuilder();
+                    ClassOverviewPage classPage = new ClassOverviewPage(
+                            classDelta, commonInfos);
+                    classPage.writeTo(content);
+                    IClassDefinition aClass = getAnElement(classDelta);
+                    String classOverviewFileName = location + DELTA_FOLDER
+                            + aPackage.getName() + "." + aClass.getName()
+                            + ".html";
+                    writeToFile(classOverviewFileName, content.toString());
+                }
+            }
+        }
+        // write class overview
+    }
+
+    private static <T> T getAnElement(IDelta<T> delta) {
+        if (delta.getFrom() != null) {
+            return delta.getFrom();
+        } else {
+            return delta.getTo();
+        }
+    }
+
+    private void copyStyleSheet(String directory) throws IOException {
+        StringTemplate template = TemplateStore.getStringTemplate("Styles");
+        template.setAttribute("version", Version.VERSION);
+        writeToFile(directory + STYLE_SHEET_NAME, template.toString());
+    }
+
+    private void writeToFile(String fileName, String content)
+            throws IOException {
+        FileOutputStream fileOutputStream = new FileOutputStream(fileName);
+        fileOutputStream.write(content.getBytes());
+        fileOutputStream.flush();
+        fileOutputStream.close();
+    }
+}
diff --git a/tools/signature-tools/src/signature/io/html/IEmitter.java b/tools/signature-tools/src/signature/io/html/IEmitter.java
new file mode 100644
index 0000000..db73e66
--- /dev/null
+++ b/tools/signature-tools/src/signature/io/html/IEmitter.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.io.html;
+
+public interface IEmitter {
+    void writeTo(StringBuilder b);
+}
diff --git a/tools/signature-tools/src/signature/io/html/PackageByNameComparator.java b/tools/signature-tools/src/signature/io/html/PackageByNameComparator.java
new file mode 100644
index 0000000..3bbff71
--- /dev/null
+++ b/tools/signature-tools/src/signature/io/html/PackageByNameComparator.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.io.html;
+
+import signature.compare.model.IPackageDelta;
+import signature.model.IPackage;
+
+import java.util.Comparator;
+
+public class PackageByNameComparator implements Comparator<IPackageDelta> {
+
+    public int compare(IPackageDelta a, IPackageDelta b) {
+        assert a.getType() == b.getType();
+        IPackage aPackage = null;
+        IPackage bPackage = null;
+
+        if (a.getFrom() != null) {
+            aPackage = a.getFrom();
+            bPackage = b.getFrom();
+        } else {
+            aPackage = a.getTo();
+            bPackage = b.getTo();
+        }
+        return aPackage.getName().compareTo(bPackage.getName());
+    }
+}
diff --git a/tools/signature-tools/src/signature/io/html/PackageOverviewPage.java b/tools/signature-tools/src/signature/io/html/PackageOverviewPage.java
new file mode 100644
index 0000000..ccfe3cc
--- /dev/null
+++ b/tools/signature-tools/src/signature/io/html/PackageOverviewPage.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.io.html;
+
+import org.antlr.stringtemplate.StringTemplate;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import signature.compare.model.IClassDefinitionDelta;
+import signature.compare.model.IPackageDelta;
+import signature.compare.model.impl.SigDelta;
+
+public class PackageOverviewPage implements IEmitter {
+
+    private static final String PACGE = "PackageOverviewPage";
+
+    private final IPackageDelta delta;
+
+    private List<IClassDefinitionDelta> removedClasses;
+    private List<IClassDefinitionDelta> addedClasses;
+    private List<IClassDefinitionDelta> changedClasses;
+    private final Map<String, String> commonInfos;
+
+
+    public PackageOverviewPage(IPackageDelta delta,
+            Map<String, String> commonInfos) {
+        this.delta = delta;
+        this.commonInfos = commonInfos;
+        prepareData();
+    }
+
+    private void prepareData() {
+        removedClasses = new ArrayList<IClassDefinitionDelta>(SigDelta
+                .getRemoved(delta.getClassDeltas()));
+        Collections.sort(removedClasses, new ClassByNameComparator());
+
+        addedClasses = new ArrayList<IClassDefinitionDelta>(SigDelta
+                .getAdded(delta.getClassDeltas()));
+        Collections.sort(addedClasses, new ClassByNameComparator());
+
+        changedClasses = new ArrayList<IClassDefinitionDelta>(SigDelta
+                .getChanged(delta.getClassDeltas()));
+        Collections.sort(changedClasses, new ClassByNameComparator());
+    }
+
+    public void writeTo(StringBuilder b) {
+        StringTemplate template = TemplateStore.getStringTemplate(PACGE);
+        template.setArgumentContext(commonInfos);
+        template.setAttribute("package_delta", delta);
+        template.setAttribute("removed_classes", removedClasses);
+        template.setAttribute("added_classes", addedClasses);
+        template.setAttribute("changed_classes", changedClasses);
+        b.append(template.toString());
+    }
+
+
+
+}
diff --git a/tools/signature-tools/src/signature/io/html/TemplateStore.java b/tools/signature-tools/src/signature/io/html/TemplateStore.java
new file mode 100644
index 0000000..a161bf7
--- /dev/null
+++ b/tools/signature-tools/src/signature/io/html/TemplateStore.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.io.html;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import org.antlr.stringtemplate.StringTemplate;
+import org.antlr.stringtemplate.StringTemplateGroup;
+import org.antlr.stringtemplate.language.DefaultTemplateLexer;
+
+public class TemplateStore {
+
+    private static StringTemplateGroup group = initialize();
+
+
+    private static StringTemplateGroup initialize() {
+        InputStream modelStream = TemplateStore.class.getClassLoader()
+                .getResourceAsStream("model/model.stg");
+        InputStreamReader modelReader = new InputStreamReader(modelStream);
+        StringTemplateGroup modelGroup = new StringTemplateGroup(modelReader,
+                DefaultTemplateLexer.class);
+
+        InputStream stream = TemplateStore.class.getClassLoader()
+                .getResourceAsStream("delta/deltas.stg");
+        InputStreamReader reader = new InputStreamReader(stream);
+        StringTemplateGroup deltaGroup = new StringTemplateGroup(reader,
+                DefaultTemplateLexer.class);
+
+        StringTemplateGroup group = new StringTemplateGroup("signature", null,
+                DefaultTemplateLexer.class);
+        group.setSuperGroup(deltaGroup);
+
+        deltaGroup.setSuperGroup(modelGroup);
+        return group;
+    }
+
+    private TemplateStore() {/* no instances allowed */
+    }
+
+    public static StringTemplate getStringTemplate(String name) {
+        return group.getInstanceOf(name);
+    }
+}
diff --git a/tools/signature-tools/src/signature/io/impl/BinaryApi.java b/tools/signature-tools/src/signature/io/impl/BinaryApi.java
new file mode 100644
index 0000000..f12cf6a7
--- /dev/null
+++ b/tools/signature-tools/src/signature/io/impl/BinaryApi.java
@@ -0,0 +1,83 @@
+/*

+ * Copyright (C) 2009 The Android Open Source Project

+ *

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file except in compliance with the License.

+ * You may obtain a copy of the License at

+ *

+ *      http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ */

+

+package signature.io.impl;

+

+import signature.converter.Visibility;

+import signature.io.IApiExternalizer;

+import signature.io.IApiLoader;

+import signature.model.IApi;

+import java.io.File;

+import java.io.FileInputStream;

+import java.io.FileOutputStream;

+import java.io.IOException;

+import java.io.ObjectInputStream;

+import java.io.ObjectOutputStream;

+import java.util.Set;

+

+public class BinaryApi implements IApiExternalizer, IApiLoader {

+

+    public void externalizeApi(String fileName, IApi api) throws IOException {

+

+        File directory = new File(fileName);

+        if (!directory.exists()) {

+            directory.mkdirs();

+        }

+

+        File file = new File(directory, getFileName(api));

+        file.createNewFile();

+

+        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(

+                file));

+        oos.writeObject(api);

+

+        oos.flush();

+        oos.close();

+    }

+

+    private String getFileName(IApi api) {

+        return api.getName().replaceAll(" ", "_").concat(".sig");

+    }

+

+    public IApi loadApi(String name, Visibility visibility,

+            Set<String> fileNames, Set<String> packageNames) throws

+            IOException {

+        System.err

+                .println("Binary signature loader ignores visibility and " +

+                        "package names.");

+        if (fileNames.size() != 1) {

+            throw new IllegalArgumentException(

+                    "Only one file can be processed by the binary signature " +

+                    "loader.");

+        }

+        String fileName = fileNames.iterator().next();

+        File file = new File(fileName);

+        ObjectInputStream ois = new ObjectInputStream(

+                new FileInputStream(file));

+        IApi sig = null;

+        try {

+            sig = (IApi) ois.readObject();

+        } catch (ClassNotFoundException e) {

+            throw new IllegalArgumentException(e);

+        }

+        if (name != null) {

+            sig.setName(name);

+        }

+

+        ois.close();

+        return sig;

+    }

+}

diff --git a/tools/signature-tools/src/signature/io/impl/ToStringExternalizer.java b/tools/signature-tools/src/signature/io/impl/ToStringExternalizer.java
new file mode 100644
index 0000000..62615af
--- /dev/null
+++ b/tools/signature-tools/src/signature/io/impl/ToStringExternalizer.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.io.impl;
+
+import signature.compare.model.IApiDelta;
+import signature.io.IApiDeltaExternalizer;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+
+public class ToStringExternalizer implements IApiDeltaExternalizer {
+
+    public void externalize(String location, IApiDelta delta)
+            throws IOException {
+
+        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(
+                new FileOutputStream(location));
+
+        if (delta == null) {
+            outputStreamWriter.write("No delta found!");
+        } else {
+            outputStreamWriter.write(delta.toString());
+        }
+        outputStreamWriter.close();
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/IAnnotatableElement.java b/tools/signature-tools/src/signature/model/IAnnotatableElement.java
new file mode 100644
index 0000000..53d6c38
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IAnnotatableElement.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+import java.util.Set;
+
+/**
+ * Common interface for model elements which may be annotated. Annotations can
+ * be attached to:
+ * <ul>
+ * <li>Classes (IClass), including annotations which are also classes
+ * <li>Methods and Constructors (IExecutableMember)
+ * <li>Fields (IField), including the annotation fields and enum constants
+ * <li>Parameters (IParameter)
+ * </ul>
+ */
+public interface IAnnotatableElement {
+
+    /**
+     * Returns a set of annotations of a model element.
+     * 
+     * @return a set of annotations of a model element
+     */
+    Set<IAnnotation> getAnnotations();
+}
diff --git a/tools/signature-tools/src/signature/model/IAnnotation.java b/tools/signature-tools/src/signature/model/IAnnotation.java
new file mode 100644
index 0000000..c31689d
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IAnnotation.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+import java.util.Set;
+
+/**
+ * {@code IAnnotation} models an <em>instance</em> of an annotation which is
+ * attached to a program element. The definition of an annotation type is
+ * modeled as an {@link IClassDefinition} with the {@link Kind#ANNOTATION}.
+ */
+public interface IAnnotation {
+    /**
+     * Returns the annotation type of this annotation.
+     * 
+     * @return the annotation type of this annotation
+     */
+    IClassReference getType();
+
+    /**
+     * Returns the elements declared in this annotation. The values which are
+     * not declared are not contained in this list. Each element consists of its
+     * name and its value.
+     * 
+     * @return elements declared in this annotation
+     */
+    Set<IAnnotationElement> getElements();
+}
diff --git a/tools/signature-tools/src/signature/model/IAnnotationElement.java b/tools/signature-tools/src/signature/model/IAnnotationElement.java
new file mode 100644
index 0000000..5637fd6
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IAnnotationElement.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+/**
+ * {@code IAnnotationElement} models an annotation element which consist of a
+ * name and a value.
+ */
+public interface IAnnotationElement {
+    /**
+     * Returns the value of this annotation element. The type of this value is
+     * restricted to the possible value types for annotation elements.
+     * <p>
+     * The following types are possible:
+     * <ul>
+     * <li>a wrapper class for a primitive type
+     * <li>String (for String values)
+     * <li>IType (representing a class literal) FIXME Reference? Def?
+     * <li>IEnumConstant (representing an enum constant)
+     * <li>IAnnotation
+     * </ul>
+     * and (one-dimensional) arrays of the above types.
+     * 
+     * @return the value of this annotation element
+     */
+    Object getValue();
+
+    /**
+     * Returns the corresponding annotation field declaration. This declaration
+     * contains e.g. the name of this element, its type and its modifiers. The
+     * declaration also contains the default value of this element which is
+     * overwritten by this annotation element.
+     * 
+     * @return the corresponding annotation field declaration
+     */
+    IAnnotationField getDeclaringField();
+
+}
diff --git a/tools/signature-tools/src/signature/model/IAnnotationField.java b/tools/signature-tools/src/signature/model/IAnnotationField.java
new file mode 100644
index 0000000..c40707f
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IAnnotationField.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+/**
+ * {@code IAnnotationField} models a field in a annotation definition. The
+ * following example shows an annotation field <code>androField</code> of type
+ * String and the default value "droid".
+ * 
+ * <pre>
+ * 
+ * @interface A { String androField() default "droid"; }
+ * 
+ *            </pre>
+ */
+public interface IAnnotationField extends IField {
+
+    /**
+     * Returns the default value. If no default value is set then null is
+     * returned.
+     * 
+     * The type of the returned object is one of the following:
+     * <ul>
+     * <li>a wrapper class for a primitive type
+     * <li>String (for String values)
+     * <li>IType (representing a class literal)
+     * <li>IEnumConstant (representing an enum constant)
+     * <li>IAnnotation
+     * </ul>
+     * and (one-dimensional) arrays of the above types. If an array is returned,
+     * then the type of the result is Object[]. The elements of this array are
+     * of the above listed types.
+     */
+    Object getDefaultValue();
+}
diff --git a/tools/signature-tools/src/signature/model/IApi.java b/tools/signature-tools/src/signature/model/IApi.java
new file mode 100644
index 0000000..de51938
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IApi.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+import signature.converter.Visibility;
+
+import java.util.Set;
+
+/**
+ * {@code IApi} models the root of an api.
+ */
+public interface IApi {
+    /**
+     * Returns the name of this api.
+     * 
+     * @return the name of this api
+     */
+    String getName();
+
+    /**
+     * Sets the name of this api.
+     * 
+     * @param name
+     *            the name of this api
+     */
+    void setName(String name);
+
+    /**
+     * Returns the set of packages which constitute this api.
+     * 
+     * @return the set of packages which constitute this api
+     */
+    Set<IPackage> getPackages();
+
+    /**
+     * Returns the visibility of this api. The visibility describes which
+     * elements are visible. Only elements with a visibility greater or equal
+     * this visibility are contained in this api model.
+     * 
+     * @return the visibility of this api
+     * @see Visibility
+     */
+    Visibility getVisibility();
+}
diff --git a/tools/signature-tools/src/signature/model/IArrayType.java b/tools/signature-tools/src/signature/model/IArrayType.java
new file mode 100644
index 0000000..bb63e67
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IArrayType.java
@@ -0,0 +1,30 @@
+/*

+ * Copyright (C) 2009 The Android Open Source Project

+ *

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file except in compliance with the License.

+ * You may obtain a copy of the License at

+ *

+ *      http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ */

+

+package signature.model;

+

+/**

+ * {@code IArrayType} models an array type.

+ */

+public interface IArrayType extends ITypeReference {

+

+    /**

+     * Returns the component type of this array type.

+     * 

+     * @return component type of this array type

+     */

+    ITypeReference getComponentType();

+}

diff --git a/tools/signature-tools/src/signature/model/IClassDefinition.java b/tools/signature-tools/src/signature/model/IClassDefinition.java
new file mode 100644
index 0000000..1bd5401
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IClassDefinition.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * {@code IClassDefinition} models a class definition. This is the model
+ * equivalent to a class.
+ */
+public interface IClassDefinition extends ITypeDefinition, IGenericDeclaration,
+        IAnnotatableElement {
+
+    /**
+     * Returns the kind of this class definition.
+     * 
+     * @return the kind of this class definition
+     */
+    Kind getKind();
+
+    /**
+     * Returns the name of this class definition.
+     * 
+     * @return the name of this class definition
+     */
+    String getName();
+
+    /**
+     * Returns the '.' separated package name of this class.
+     * 
+     * @return the '.' separated package name of this class
+     */
+    String getPackageName();
+
+    /**
+     * Returns a list containing each package fragment.
+     * <p>
+     * If {@link #getPackageName()} returns : "a.b.c" this method returns a list
+     * containing the three elements "a", "b", "c".
+     * <p>
+     * Note: this method exists only for convenience in output templating.
+     * 
+     * @return a list containing each package fragment
+     */
+    List<String> getPackageFragments();
+
+    /**
+     * Returns the qualified name of this class definition. The qualified name
+     * is composed of {@link #getPackageName()} '.' {@link #getName()}
+     * 
+     * @return the qualified name of this class definition
+     */
+    String getQualifiedName();
+
+    /**
+     * Returns the super class for this class definition. May return {@code
+     * null} if this class definition does not have any superclass. This is the
+     * case if the kind of this class definition is {@link Kind#INTERFACE} or
+     * this class definition is {@link Object}.
+     * 
+     * @return the super class for this class definition or {@code null}
+     */
+    ITypeReference getSuperClass();
+
+    /**
+     * Returns the declared interfaces this class definition implements . If no
+     * interfaces are declared, an empty set is returned.
+     * 
+     * @return the declared interfaces for this class definition
+     */
+    Set<ITypeReference> getInterfaces();
+
+    /**
+     * Returns the modifiers for this class definition.
+     * 
+     * @return the modifiers for this class definition
+     */
+    Set<Modifier> getModifiers();
+
+    /**
+     * Returns all declared methods of this class definition.
+     * 
+     * @return all declared methods of this class definition
+     */
+    Set<IMethod> getMethods();
+
+    /**
+     * Returns all declared constructors of this class definition.
+     * 
+     * @return all declared constructors of this class definition
+     */
+    Set<IConstructor> getConstructors();
+
+    /**
+     * Returns all declared fields of this class definition.
+     * 
+     * @return all declared fields of this class definition
+     */
+    Set<IField> getFields();
+
+    /**
+     * Returns all declared enumeration constant definitions of this class
+     * definition. The returned set may only contain elements if the kind of
+     * this class definition is {@link Kind#ENUM}.
+     * 
+     * @return all declared enumeration constants of this class definition
+     */
+    Set<IEnumConstant> getEnumConstants();
+
+    /**
+     * Returns all declared annotation field definitions of this class
+     * definition. The returned set may only contain elements if the kind of
+     * this class definition is {@link Kind#ANNOTATION}.
+     * 
+     * @return all declared annotation fields of this class definition
+     */
+    Set<IAnnotationField> getAnnotationFields();
+
+    /**
+     * Returns all classes which where defined in the lexical scope of this
+     * class definition. Anonymous classes are never returned.
+     * 
+     * @return all classes which where defined in the lexical scope of this
+     *         class definition
+     */
+    Set<IClassDefinition> getInnerClasses();
+}
diff --git a/tools/signature-tools/src/signature/model/IClassReference.java b/tools/signature-tools/src/signature/model/IClassReference.java
new file mode 100644
index 0000000..bcb2c55
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IClassReference.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+/**
+ * {@code IClassReference} models a reference to an {@link IClassDefinition}. If
+ * the referenced {@link IClassDefinition} defines
+ * {@link ITypeVariableDefinition}s, this reference can be seen as a raw type.
+ */
+public interface IClassReference extends ITypeReference {
+
+    /**
+     * Returns the definition this class reference is referencing.
+     * 
+     * @return the definition this class reference is referencing
+     */
+    IClassDefinition getClassDefinition();
+}
diff --git a/tools/signature-tools/src/signature/model/IConstructor.java b/tools/signature-tools/src/signature/model/IConstructor.java
new file mode 100644
index 0000000..29f5275
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IConstructor.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+/**
+ * {@code IConstructor} models a constructor.
+ */
+public interface IConstructor extends IExecutableMember {
+}
diff --git a/tools/signature-tools/src/signature/model/IEnumConstant.java b/tools/signature-tools/src/signature/model/IEnumConstant.java
new file mode 100644
index 0000000..681e62b
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IEnumConstant.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+/**
+ * {@code IEnumConstant} models an enumeration constant.
+ */
+public interface IEnumConstant extends IField {
+
+    /**
+     * Returns the ordinal of this enum constant.
+     * 
+     * @return the ordinal of this enum constant.
+     */
+    int getOrdinal();
+}
diff --git a/tools/signature-tools/src/signature/model/IExecutableMember.java b/tools/signature-tools/src/signature/model/IExecutableMember.java
new file mode 100644
index 0000000..ef7f7ba
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IExecutableMember.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * {@code IExecutableMember} is the common super interface for methods an
+ * constructors.
+ */
+public interface IExecutableMember extends IGenericDeclaration,
+        IAnnotatableElement {
+
+    /**
+     * Returns the name of this executable member.
+     * 
+     * @return the name of this executable member
+     */
+    String getName();
+
+    /**
+     * Returns the parameters of this executable member.
+     * 
+     * @return the parameters of this executable member
+     */
+    List<IParameter> getParameters();
+
+    /**
+     * Returns the declared exceptions of this executable member.
+     * 
+     * @return the declared exceptions of this executable member
+     */
+    Set<ITypeReference> getExceptions();
+
+    /**
+     * Returns the modifiers of this executable member.
+     * 
+     * @return the modifiers of this executable member
+     */
+    Set<Modifier> getModifiers();
+}
diff --git a/tools/signature-tools/src/signature/model/IField.java b/tools/signature-tools/src/signature/model/IField.java
new file mode 100644
index 0000000..3cf7593
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IField.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+import java.util.Set;
+
+/**
+ * {@code IField} models a field.
+ */
+public interface IField extends IAnnotatableElement {
+
+    /**
+     * Returns the name of this field.
+     * 
+     * @return the name of this field
+     */
+    String getName();
+
+    /**
+     * Returns the type of this field.
+     * 
+     * @return the type of this field
+     */
+    ITypeReference getType();
+
+    /**
+     * Returns the modifiers of this field.
+     * 
+     * @return the modifiers of this field
+     */
+    Set<Modifier> getModifiers();
+}
diff --git a/tools/signature-tools/src/signature/model/IGenericDeclaration.java b/tools/signature-tools/src/signature/model/IGenericDeclaration.java
new file mode 100644
index 0000000..d7f4683
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IGenericDeclaration.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+import java.util.List;
+
+/**
+ * {@code IGenericDeclaration} is the common base interface for elements which
+ * can define type variables.
+ */
+public interface IGenericDeclaration {
+
+    /**
+     * Returns a list of all defined type variables on this generic declaration.
+     * 
+     * @return a list of all defined type variables
+     */
+    List<ITypeVariableDefinition> getTypeParameters();
+
+    /**
+     * Returns the class definition which declares this element or {@code null}
+     * if this declaration is a top level class definition.
+     * 
+     * @return the class definition which declares this element or {@code null}
+     */
+    IClassDefinition getDeclaringClass();
+}
diff --git a/tools/signature-tools/src/signature/model/IMethod.java b/tools/signature-tools/src/signature/model/IMethod.java
new file mode 100644
index 0000000..e205db1
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IMethod.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+import signature.model.impl.SigPrimitiveType;
+
+/**
+ * {@code IMethod} models a method.
+ */
+public interface IMethod extends IExecutableMember {
+
+    /**
+     * Returns the return type of this method.
+     * <p>
+     * If the declared return type is {@code void}
+     * {@link SigPrimitiveType#VOID_TYPE} is returned.
+     * 
+     * @return the return type of this method
+     */
+    ITypeReference getReturnType();
+}
diff --git a/tools/signature-tools/src/signature/model/IPackage.java b/tools/signature-tools/src/signature/model/IPackage.java
new file mode 100644
index 0000000..78b14ce
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IPackage.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * {@code IPackage} models a package.
+ */
+public interface IPackage extends IAnnotatableElement {
+
+    /**
+     * Returns the name of this package.
+     * 
+     * @return the name of this package
+     */
+    String getName();
+
+    /**
+     * Returns a list containing each package fragment.
+     * <p>
+     * If {@link #getName()} returns : "a.b.c" this method returns a list
+     * containing the three elements "a", "b", "c".
+     * <p>
+     * Note: this method exists only for convenience in output templating.
+     * 
+     * @return a list containing each package fragment
+     */
+    List<String> getPackageFragments();
+
+    /**
+     * Returns all classes declared in this package, including ordinary classes,
+     * interfaces, enum types and annotation types. Nested classes are returned
+     * as well.
+     * 
+     * @return all classes declared in this package
+     */
+    Set<IClassDefinition> getClasses();
+}
diff --git a/tools/signature-tools/src/signature/model/IParameter.java b/tools/signature-tools/src/signature/model/IParameter.java
new file mode 100644
index 0000000..bd359d5
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IParameter.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+/**
+ * {@code IParameter} models a parameter of an {@link IExecutableMember}.
+ */
+public interface IParameter extends IAnnotatableElement {
+
+    /**
+     * Returns the type of this parameter.
+     * 
+     * @return the type of this parameter
+     */
+    ITypeReference getType();
+}
diff --git a/tools/signature-tools/src/signature/model/IParameterizedType.java b/tools/signature-tools/src/signature/model/IParameterizedType.java
new file mode 100644
index 0000000..59f5692
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IParameterizedType.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+import java.util.List;
+
+/**
+ * {@code IParameterizedType} models a parameterized type. A parameterized type
+ * instantiates a generic class definition with actual type arguments.
+ * 
+ * <pre>
+ * IClassDefinition:
+ * public class A<T> {}
+ *
+ * public class XXX {
+ * IParameterizedType (raw type: A , type arguments: Number)
+ *   public A<Number> fields;
+ * }
+ * </pre>
+ */
+public interface IParameterizedType extends ITypeReference {
+
+    /**
+     * Returns the actual type arguments of this parameterized type.
+     * 
+     * @return the actual type arguments of this parameterized type
+     */
+    List<ITypeReference> getTypeArguments();
+
+    /**
+     * Returns the raw type of this parameterized type.
+     * 
+     * @return the raw type of this parameterized type
+     */
+    IClassReference getRawType();
+
+    /**
+     * Returns the owner type of this parameterized type or {@code null}.
+     * 
+     * <pre>
+     * class Y&lt;T&gt; {
+     *     class Z&lt;S&gt; {
+     *     }
+     *
+     *     Y&lt;Integer&gt;.Z&lt;String&gt; a;
+     * }
+     * </pre>
+     */
+    ITypeReference getOwnerType(); // A.B<String> -> A
+}
diff --git a/tools/signature-tools/src/signature/model/IPrimitiveType.java b/tools/signature-tools/src/signature/model/IPrimitiveType.java
new file mode 100644
index 0000000..917b96b
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IPrimitiveType.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+/**
+ * {@code IPrimitiveType} models a primitive type.
+ */
+public interface IPrimitiveType extends ITypeReference {
+
+    /**
+     * Returns the name of this primitive type, i.e. one of the following
+     * strings:
+     * <ul>
+     * <li><code>boolean</code>
+     * <li><code>byte</code>
+     * <li><code>char</code>
+     * <li><code>short</code>
+     * <li><code>int</code>
+     * <li><code>float</code>
+     * <li><code>double</code>
+     * <li><code>void</code>
+     * </ul>
+     * 
+     * @return the name of this primitive type
+     */
+    public String getName();
+}
diff --git a/tools/signature-tools/src/signature/model/ITypeDefinition.java b/tools/signature-tools/src/signature/model/ITypeDefinition.java
new file mode 100644
index 0000000..b182f21
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/ITypeDefinition.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+/**
+ * {@code ITypeDefinition} is the common interface for type definitions. A type
+ * definition is either an {@link ITypeVariableDefinition} or an
+ * {@link IClassDefinition}.
+ */
+public interface ITypeDefinition {
+}
diff --git a/tools/signature-tools/src/signature/model/ITypeReference.java b/tools/signature-tools/src/signature/model/ITypeReference.java
new file mode 100644
index 0000000..f17f172
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/ITypeReference.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+/**
+ * {@code ITypeReference} is the common interface for type references.
+ */
+public interface ITypeReference {
+}
diff --git a/tools/signature-tools/src/signature/model/ITypeVariableDefinition.java b/tools/signature-tools/src/signature/model/ITypeVariableDefinition.java
new file mode 100644
index 0000000..df0ead0
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/ITypeVariableDefinition.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+import java.util.List;
+
+/**
+ * {@code ITypeVariableDefinition} models a type variable definition.
+ */
+public interface ITypeVariableDefinition extends ITypeDefinition {
+
+    /**
+     * Returns the upper bounds for this type variable as specified by the
+     * extends clause. If no upper bounds are explicitly specified then
+     * java.lang.Object is returned as upper bound.
+     * 
+     * @return the upper bounds for this type variable
+     */
+    List<ITypeReference> getUpperBounds();
+
+    /**
+     * Returns the name of this type variable.
+     * 
+     * @return the name of this type variable
+     */
+    String getName();
+
+    /**
+     * Returns the element on which this type variable is declared.
+     * 
+     * @return the element on which this type variable is declared
+     */
+    IGenericDeclaration getGenericDeclaration();
+}
diff --git a/tools/signature-tools/src/signature/model/ITypeVariableReference.java b/tools/signature-tools/src/signature/model/ITypeVariableReference.java
new file mode 100644
index 0000000..64e0657
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/ITypeVariableReference.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+/**
+ * {@code ITypeVariableReference} models a reference to an
+ * {@link ITypeVariableDefinition}.
+ */
+public interface ITypeVariableReference extends ITypeReference {
+
+    /**
+     * Returns the definition this type variable reference is referencing.
+     * 
+     * @return the definition this type variable reference is referencing
+     */
+    ITypeVariableDefinition getTypeVariableDefinition();
+}
diff --git a/tools/signature-tools/src/signature/model/IWildcardType.java b/tools/signature-tools/src/signature/model/IWildcardType.java
new file mode 100644
index 0000000..02a0d2d
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/IWildcardType.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+import java.util.List;
+
+/**
+ * {@code IWildcardType} models a wildcard type.
+ */
+public interface IWildcardType extends ITypeReference {
+
+    /**
+     * Returns the upper bounds for this type variable as specified by the
+     * extends clause. If no upper bounds are explicitly specified then
+     * java.lang.Object is returned as upper bound.
+     * 
+     * @return the upper bounds for this type variable
+     */
+    List<ITypeReference> getUpperBounds();
+
+    /**
+     * Returns the lower bounds for this type variable as specified by the super
+     * clause. If no lower bounds are explicitly specified then null is returned
+     * as lower bound.
+     * 
+     * @return the lower bounds for this type variable
+     */
+    ITypeReference getLowerBound();
+
+}
diff --git a/tools/signature-tools/src/signature/model/Kind.java b/tools/signature-tools/src/signature/model/Kind.java
new file mode 100644
index 0000000..219e039
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/Kind.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+/**
+ * Type of the modeled class.
+ */
+public enum Kind {
+    CLASS("class"), INTERFACE("interface"), ANNOTATION("@interface"), ENUM(
+            "enum"), UNINITIALIZED("UNINITIALIZED");
+
+    private final String name;
+
+    Kind(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String toString() {
+        return name;
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/Modifier.java b/tools/signature-tools/src/signature/model/Modifier.java
new file mode 100644
index 0000000..223e88f
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/Modifier.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model;
+
+import java.util.Set;
+
+/**
+ * {@class Modifier} models a modifer.
+ */
+public enum Modifier {
+    PUBLIC("public"), PRIVATE("private"), PROTECTED("protected"), STATIC(
+            "static"), FINAL("final"), SYNCHRONIZED("synchronized"), VOLATILE(
+            "volatile"), TRANSIENT("transient"), NATIVE("native"), ABSTRACT(
+            "abstract"), STRICT("strict");
+
+    private final String printableName;
+
+    private Modifier(String printableName) {
+        this.printableName = printableName;
+    }
+
+    @Override
+    public String toString() {
+        return printableName;
+    }
+
+    public static String toString(Set<Modifier> modifiers) {
+        StringBuilder s = new StringBuilder();
+
+        for (Modifier modifier : values()) {
+            if (modifiers.contains(modifier)) {
+                s.append(modifier.printableName);
+                s.append(" ");
+            }
+        }
+
+        return s.toString();
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigAnnotatableElement.java b/tools/signature-tools/src/signature/model/impl/SigAnnotatableElement.java
new file mode 100644
index 0000000..53f021e
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigAnnotatableElement.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Set;
+
+import signature.model.IAnnotatableElement;
+import signature.model.IAnnotation;
+
+@SuppressWarnings("serial")
+public abstract class SigAnnotatableElement implements IAnnotatableElement,
+        Serializable {
+    private Set<IAnnotation> annotations;
+
+    public SigAnnotatableElement() {
+        annotations = Collections.emptySet();
+    }
+
+    public Set<IAnnotation> getAnnotations() {
+        return annotations;
+    }
+
+    public void setAnnotations(Set<IAnnotation> annotations) {
+        this.annotations = annotations;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        for (IAnnotation annotation : getAnnotations()) {
+            builder.append(annotation);
+        }
+        return builder.toString();
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigAnnotation.java b/tools/signature-tools/src/signature/model/impl/SigAnnotation.java
new file mode 100644
index 0000000..b7d0354
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigAnnotation.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import signature.model.IAnnotation;
+import signature.model.IAnnotationElement;
+import signature.model.IClassReference;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Set;
+
+@SuppressWarnings("serial")
+public class SigAnnotation implements IAnnotation, Serializable {
+
+    private Set<IAnnotationElement> elements;
+    private IClassReference type;
+
+    public SigAnnotation() {
+        elements = Collections.emptySet();
+    }
+
+    public IClassReference getType() {
+        return type;
+    }
+
+    public void setType(IClassReference type) {
+        this.type = type;
+    }
+
+    public Set<IAnnotationElement> getElements() {
+        return elements;
+    }
+
+    public void setElements(Set<IAnnotationElement> elements) {
+        this.elements = elements;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("@");
+        builder.append(getType());
+        if (!getElements().isEmpty()) {
+            builder.append("{");
+            for (IAnnotationElement element : getElements()) {
+                builder.append("\n");
+                builder.append(element.toString());
+            }
+            builder.append("}");
+        }
+        return builder.toString();
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigAnnotationElement.java b/tools/signature-tools/src/signature/model/impl/SigAnnotationElement.java
new file mode 100644
index 0000000..3d676a7
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigAnnotationElement.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import java.io.Serializable;
+
+import signature.model.IAnnotationElement;
+import signature.model.IAnnotationField;
+
+@SuppressWarnings("serial")
+public class SigAnnotationElement implements IAnnotationElement, Serializable {
+
+    private IAnnotationField declaringField;
+    private Object value;
+
+    public IAnnotationField getDeclaringField() {
+        return declaringField;
+    }
+
+    public void setDeclaringField(IAnnotationField declaringField) {
+        this.declaringField = declaringField;
+    }
+
+    public Object getValue() {
+        return value;
+    }
+
+    public void setValue(Object value) {
+        this.value = value;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append(getDeclaringField().getName());
+        builder.append(" = ");
+        builder.append(getValue());
+        return builder.toString();
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigAnnotationField.java b/tools/signature-tools/src/signature/model/impl/SigAnnotationField.java
new file mode 100644
index 0000000..5dd6faf
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigAnnotationField.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import java.io.Serializable;
+
+import signature.model.IAnnotationField;
+
+@SuppressWarnings("serial")
+public class SigAnnotationField extends SigField implements IAnnotationField,
+        Serializable {
+
+    private Object defaultValue = Uninitialized.unset();
+
+    public SigAnnotationField(String name) {
+        super(name);
+    }
+
+    public Object getDefaultValue() {
+        return defaultValue;
+    }
+
+    public void setDefaultValue(Object defaultValue) {
+        this.defaultValue = defaultValue;
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigApi.java b/tools/signature-tools/src/signature/model/impl/SigApi.java
new file mode 100644
index 0000000..b573f8f
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigApi.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import java.io.Serializable;
+import java.util.Set;
+
+import signature.converter.Visibility;
+import signature.model.IApi;
+import signature.model.IPackage;
+
+@SuppressWarnings("serial")
+public class SigApi implements IApi, Serializable {
+
+    private Set<IPackage> packages = Uninitialized.unset();
+    private String description;
+    private Visibility visibility;
+
+    public SigApi(String description, Visibility visibility) {
+        this.description = description;
+        this.visibility = visibility;
+    }
+
+    public String getName() {
+        return description;
+    }
+
+    public void setName(String description) {
+        this.description = description;
+    }
+
+    public Set<IPackage> getPackages() {
+        return packages;
+    }
+
+    public void setPackages(Set<IPackage> packages) {
+        this.packages = packages;
+    }
+
+    public Visibility getVisibility() {
+        return visibility;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append(getName());
+        return builder.toString();
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigArrayType.java b/tools/signature-tools/src/signature/model/impl/SigArrayType.java
new file mode 100644
index 0000000..3d20824e
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigArrayType.java
@@ -0,0 +1,69 @@
+/*

+ * Copyright (C) 2009 The Android Open Source Project

+ *

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file except in compliance with the License.

+ * You may obtain a copy of the License at

+ *

+ *      http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ */

+

+package signature.model.impl;

+

+import java.io.Serializable;

+

+import signature.model.IArrayType;

+import signature.model.ITypeReference;

+

+@SuppressWarnings("serial")

+public class SigArrayType implements IArrayType, Serializable {

+    private ITypeReference componentType;

+

+    public SigArrayType(ITypeReference componentType) {

+        this.componentType = componentType;

+    }

+

+    public ITypeReference getComponentType() {

+        return componentType;

+    }

+

+    @Override

+    public int hashCode() {

+        return SigArrayType.hashCode(this);

+    }

+

+    public static int hashCode(IArrayType type) {

+        return type.getComponentType().hashCode();

+    }

+

+    @Override

+    public boolean equals(Object obj) {

+        return SigArrayType.equals(this, obj);

+    }

+

+    public static boolean equals(IArrayType thiz, Object that) {

+        if (!(that instanceof IArrayType)) {

+            return false;

+        }

+        IArrayType other = (IArrayType) that;

+        return thiz.getComponentType().equals(other.getComponentType());

+    }

+

+    @Override

+    public String toString() {

+        return SigArrayType.toString(this);

+    }

+

+    public static String toString(IArrayType type) {

+        StringBuilder builder = new StringBuilder();

+        builder.append(type.getComponentType().toString());

+        builder.append("[]");

+        return builder.toString();

+    }

+}

diff --git a/tools/signature-tools/src/signature/model/impl/SigClassDefinition.java b/tools/signature-tools/src/signature/model/impl/SigClassDefinition.java
new file mode 100644
index 0000000..fe7c7ab
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigClassDefinition.java
@@ -0,0 +1,231 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
+import signature.model.IAnnotationField;
+import signature.model.IClassDefinition;
+import signature.model.IConstructor;
+import signature.model.IEnumConstant;
+import signature.model.IField;
+import signature.model.IMethod;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+import signature.model.Kind;
+import signature.model.Modifier;
+import signature.model.util.ModelUtil;
+
+@SuppressWarnings("serial")
+public class SigClassDefinition extends SigAnnotatableElement implements
+        IClassDefinition, Serializable {
+
+    private String name;
+    private Kind kind = Kind.UNINITIALIZED;
+    private ITypeReference superClass = Uninitialized.unset();
+    private Set<ITypeReference> interfaces = Uninitialized.unset();
+    private Set<Modifier> modifiers = Uninitialized.unset();
+    private Set<IMethod> methods = Uninitialized.unset();
+    private Set<IConstructor> constructors = Uninitialized.unset();
+    private Set<IClassDefinition> innerClasses = Uninitialized.unset();
+    private Set<IAnnotationField> annotationFields = Uninitialized.unset();
+    private Set<IField> fields = Uninitialized.unset();
+    private Set<IEnumConstant> enumConstants = Uninitialized.unset();
+    private IClassDefinition declaringClass = Uninitialized.unset();
+    private List<ITypeVariableDefinition> typeParameters = Uninitialized
+            .unset();
+    private String packageName;
+
+    public SigClassDefinition(String packageName, String name) {
+        this.packageName = packageName;
+        this.name = name;
+    }
+
+    public Kind getKind() {
+        return kind;
+    }
+
+    public void setKind(Kind kind) {
+        this.kind = kind;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getPackageName() {
+        return packageName;
+    }
+
+    public List<String> getPackageFragments() {
+        return Arrays.asList(packageName.split("\\."));
+    }
+
+    public String getQualifiedName() {
+        return packageName + "." + name;
+    }
+
+    public Set<Modifier> getModifiers() {
+        return modifiers;
+    }
+
+    public void setModifiers(Set<Modifier> modifiers) {
+        this.modifiers = modifiers;
+    }
+
+    public Set<IClassDefinition> getInnerClasses() {
+        return innerClasses;
+    }
+
+    public void setInnerClasses(Set<IClassDefinition> innerClasses) {
+        this.innerClasses = innerClasses;
+    }
+
+    public Set<ITypeReference> getInterfaces() {
+        return interfaces;
+    }
+
+    public void setInterfaces(Set<ITypeReference> interfaces) {
+        this.interfaces = interfaces;
+    }
+
+    public Set<IMethod> getMethods() {
+        return methods;
+    }
+
+    public void setMethods(Set<IMethod> methods) {
+        this.methods = methods;
+    }
+
+    public Set<IConstructor> getConstructors() {
+        return constructors;
+    }
+
+    public void setConstructors(Set<IConstructor> constructors) {
+        this.constructors = constructors;
+    }
+
+    public ITypeReference getSuperClass() {
+        return superClass;
+    }
+
+    public void setSuperClass(ITypeReference superClass) {
+        this.superClass = superClass;
+    }
+
+    public IClassDefinition getDeclaringClass() {
+        return declaringClass;
+    }
+
+    public void setDeclaringClass(IClassDefinition declaringClass) {
+        this.declaringClass = declaringClass;
+    }
+
+    public Set<IAnnotationField> getAnnotationFields() {
+        return annotationFields;
+    }
+
+    public void setAnnotationFields(Set<IAnnotationField> annotationFields) {
+        this.annotationFields = annotationFields;
+    }
+
+    public Set<IField> getFields() {
+        return fields;
+    }
+
+    public void setFields(Set<IField> fields) {
+        this.fields = fields;
+    }
+
+    public Set<IEnumConstant> getEnumConstants() {
+        return enumConstants;
+    }
+
+    public void setEnumConstants(Set<IEnumConstant> enumConstants) {
+        this.enumConstants = enumConstants;
+    }
+
+    public List<ITypeVariableDefinition> getTypeParameters() {
+        return typeParameters;
+    }
+
+    public void setTypeParameters(
+            List<ITypeVariableDefinition> typeParameters) {
+        this.typeParameters = typeParameters;
+    }
+
+    @Override
+    public int hashCode() {
+        return SigClassDefinition.hashCode(this);
+    }
+
+    public static int hashCode(IClassDefinition definition) {
+        // FIXME find out why name and packageName are null during
+        // de-serialization some cases
+        // replace the following lines with:
+        // return definition.getQualifiedName().hashCode();
+        final int prime = 31;
+        int result = 1;
+        result = prime
+                + ((definition.getName() == null) ? 0 : definition.getName()
+                        .hashCode());
+        result = prime
+                * result
+                + ((definition.getPackageName() == null) ? 0 : definition
+                        .getPackageName().hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        return SigClassDefinition.equals(this, obj);
+    }
+
+    public static boolean equals(IClassDefinition thiz, Object obj) {
+        if (thiz == obj) return true;
+        if (obj instanceof IClassDefinition) {
+            IClassDefinition that = (IClassDefinition) obj;
+            return thiz.getName().equals(that.getName())
+                    && thiz.getPackageName().equals(that.getPackageName());
+        }
+        return false;
+    }
+
+    @Override
+    public String toString() {
+        return SigClassDefinition.toString(this);
+    }
+
+    public static String toString(IClassDefinition type) {
+        StringBuilder builder = new StringBuilder();
+        if (type.getAnnotations() != null && !type.getAnnotations().isEmpty()) {
+            // FIXME print annotations builder.append(super.toString());
+            builder.append("\n");
+        }
+        builder.append(type.getQualifiedName());
+        if (type.getTypeParameters() != null
+                && (!type.getTypeParameters().isEmpty())) {
+            builder.append("<");
+            ModelUtil.separate(type.getTypeParameters(), ", ");
+            builder.append(">");
+        }
+        return builder.toString();
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigClassReference.java b/tools/signature-tools/src/signature/model/impl/SigClassReference.java
new file mode 100644
index 0000000..d4336de
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigClassReference.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import signature.model.IClassDefinition;
+import signature.model.IClassReference;
+
+import java.io.Serializable;
+
+@SuppressWarnings("serial")
+public class SigClassReference implements IClassReference, Serializable {
+
+    private final IClassDefinition definition;
+
+    public SigClassReference(IClassDefinition definition) {
+        this.definition = definition;
+    }
+
+    public IClassDefinition getClassDefinition() {
+        return definition;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        return SigClassReference.equals(this, obj);
+    }
+
+    public static boolean equals(IClassReference thiz, Object that) {
+        if (that instanceof IClassReference) {
+            return thiz.getClassDefinition().equals(
+                    ((IClassReference) that).getClassDefinition());
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return SigClassReference.hashCode(this);
+    }
+
+    public static int hashCode(IClassReference thiz) {
+        return thiz.getClassDefinition().hashCode();
+    }
+
+    @Override
+    public String toString() {
+        return SigClassReference.toString(this);
+    }
+
+    public static String toString(IClassReference thiz) {
+        return "-> " + thiz.getClassDefinition().getQualifiedName();
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigConstructor.java b/tools/signature-tools/src/signature/model/impl/SigConstructor.java
new file mode 100644
index 0000000..1da3026
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigConstructor.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import java.io.Serializable;
+
+import signature.model.IConstructor;
+import signature.model.Modifier;
+import signature.model.util.ModelUtil;
+
+@SuppressWarnings("serial")
+public class SigConstructor extends SigExecutableMember implements
+        IConstructor, Serializable {
+
+    public SigConstructor(String name) {
+        super(name);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append(super.toString());
+        builder.append(" ");
+        builder.append(Modifier.toString(getModifiers()));
+        if (getTypeParameters() != null && !getTypeParameters().isEmpty()) {
+            builder.append("<");
+            builder.append(ModelUtil.separate(getTypeParameters(), ", "));
+            builder.append("> ");
+        }
+        builder.append(getName());
+        builder.append("(");
+        builder.append(getParameters().isEmpty() ? "" : ModelUtil.separate(
+                getParameters(), ", "));
+        builder.append(")");
+        if (getExceptions() != null && !getExceptions().isEmpty()) {
+            builder.append(" throws ");
+            builder.append(ModelUtil.separate(getExceptions(), " "));
+        }
+        return builder.toString();
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigEnumConstant.java b/tools/signature-tools/src/signature/model/impl/SigEnumConstant.java
new file mode 100644
index 0000000..2878988
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigEnumConstant.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import signature.model.IEnumConstant;
+
+@SuppressWarnings("serial")
+public class SigEnumConstant extends SigField implements IEnumConstant {
+
+    private static final int UNKNOWN = -1;
+
+    private int ordinal = UNKNOWN;
+
+    public SigEnumConstant(String name) {
+        super(name);
+    }
+
+    public int getOrdinal() {
+        if (ordinal == UNKNOWN) {
+            throw new UnsupportedOperationException();
+        }
+        return ordinal;
+    }
+
+    public void setOrdinal(int ordinal) {
+        this.ordinal = ordinal;
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigExecutableMember.java b/tools/signature-tools/src/signature/model/impl/SigExecutableMember.java
new file mode 100644
index 0000000..3203d59
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigExecutableMember.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import signature.model.IClassDefinition;
+import signature.model.IExecutableMember;
+import signature.model.IParameter;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+import signature.model.Modifier;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Set;
+
+@SuppressWarnings("serial")
+public abstract class SigExecutableMember extends SigAnnotatableElement
+        implements IExecutableMember, Serializable {
+
+    private String name;
+    private List<IParameter> parameters = Uninitialized.unset();
+    private Set<ITypeReference> exceptions = Uninitialized.unset();
+    private Set<Modifier> modifiers = Uninitialized.unset();
+    private List<ITypeVariableDefinition> typeParameters = Uninitialized
+            .unset();
+    private IClassDefinition declaringClass = Uninitialized.unset();
+
+    public SigExecutableMember(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public List<IParameter> getParameters() {
+        return parameters;
+    }
+
+    public void setParameters(List<IParameter> parameters) {
+        this.parameters = parameters;
+    }
+
+    public Set<ITypeReference> getExceptions() {
+        return exceptions;
+    }
+
+    public void setExceptions(Set<ITypeReference> exceptions) {
+        this.exceptions = exceptions;
+    }
+
+    public Set<Modifier> getModifiers() {
+        return modifiers;
+    }
+
+    public void setModifiers(Set<Modifier> modifiers) {
+        this.modifiers = modifiers;
+    }
+
+    public List<ITypeVariableDefinition> getTypeParameters() {
+        return typeParameters;
+    }
+
+    public void setTypeParameters(
+            List<ITypeVariableDefinition> typeParameters) {
+        this.typeParameters = typeParameters;
+    }
+
+    public IClassDefinition getDeclaringClass() {
+        return declaringClass;
+    }
+
+    public void setDeclaringClass(IClassDefinition declaringClass) {
+        this.declaringClass = declaringClass;
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigField.java b/tools/signature-tools/src/signature/model/impl/SigField.java
new file mode 100644
index 0000000..e305566
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigField.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import signature.model.IField;
+import signature.model.ITypeReference;
+import signature.model.Modifier;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Set;
+
+@SuppressWarnings("serial")
+public class SigField extends SigAnnotatableElement implements IField,
+        Serializable {
+
+    private String name;
+    private ITypeReference type = Uninitialized.unset();
+    private Set<Modifier> modifiers = Uninitialized.unset();
+
+    public SigField(String name) {
+        this.name = name;
+        modifiers = Collections.emptySet();
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public Set<Modifier> getModifiers() {
+        return modifiers;
+    }
+
+    public void setModifiers(Set<Modifier> modifiers) {
+        this.modifiers = modifiers;
+    }
+
+    public ITypeReference getType() {
+        return type;
+    }
+
+    public void setType(ITypeReference type) {
+        this.type = type;
+    }
+
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        if (getAnnotations() != null && !getAnnotations().isEmpty()) {
+            builder.append(super.toString());
+            builder.append("\n");
+        }
+        builder.append(Modifier.toString(getModifiers()));
+        builder.append(getType().toString());
+        builder.append(" ");
+        builder.append(getName());
+        return builder.toString();
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigMethod.java b/tools/signature-tools/src/signature/model/impl/SigMethod.java
new file mode 100644
index 0000000..489397f
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigMethod.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import java.io.Serializable;
+
+import signature.model.IMethod;
+import signature.model.ITypeReference;
+import signature.model.Modifier;
+import signature.model.util.ModelUtil;
+
+@SuppressWarnings("serial")
+public class SigMethod extends SigExecutableMember implements IMethod,
+        Serializable {
+
+    private ITypeReference returnType = Uninitialized.unset();
+
+    public SigMethod(String name) {
+        super(name);
+    }
+
+
+    public ITypeReference getReturnType() {
+        return returnType;
+    }
+
+    public void setReturnType(ITypeReference returnType) {
+        this.returnType = returnType;
+    }
+
+    @Override
+    public String toString() {
+        return SigMethod.toString(this);
+    }
+
+    public static String toString(IMethod method) {
+        StringBuilder builder = new StringBuilder();
+        builder.append(Modifier.toString(method.getModifiers()));
+        builder.append(method.getReturnType());
+        builder.append(" ");
+        if (method.getTypeParameters() != null
+                && !method.getTypeParameters().isEmpty()) {
+            builder.append("<");
+            builder
+                    .append(ModelUtil
+                            .separate(method.getTypeParameters(), ", "));
+            builder.append("> ");
+        }
+        builder.append(method.getName());
+        builder.append("(");
+        builder.append(method.getParameters().isEmpty() ? "" : ModelUtil
+                .separate(method.getParameters(), ", "));
+        builder.append(")");
+        if (method.getExceptions() != null
+                && !method.getExceptions().isEmpty()) {
+            builder.append(" throws ");
+            builder.append(ModelUtil.separate(method.getExceptions(), " "));
+        }
+        return builder.toString();
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigPackage.java b/tools/signature-tools/src/signature/model/impl/SigPackage.java
new file mode 100644
index 0000000..686917c
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigPackage.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import signature.model.IClassDefinition;
+import signature.model.IPackage;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
+@SuppressWarnings("serial")
+public class SigPackage extends SigAnnotatableElement implements IPackage,
+        Serializable {
+
+    private String name;
+    private Set<IClassDefinition> classes = Uninitialized.unset();
+
+    public SigPackage(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public List<String> getPackageFragments() {
+        return Arrays.asList(name.split("\\."));
+    }
+
+    public Set<IClassDefinition> getClasses() {
+        return classes;
+    }
+
+    public void setClasses(Set<IClassDefinition> classes) {
+        this.classes = classes;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("package: ");
+        builder.append(getName());
+        return builder.toString();
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigParameter.java b/tools/signature-tools/src/signature/model/impl/SigParameter.java
new file mode 100644
index 0000000..d9d3369
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigParameter.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import signature.model.IParameter;
+import signature.model.ITypeReference;
+
+import java.io.Serializable;
+
+@SuppressWarnings("serial")
+public class SigParameter extends SigAnnotatableElement implements IParameter,
+        Serializable {
+
+    private ITypeReference type;
+
+    public SigParameter(ITypeReference type) {
+        this.type = type;
+    }
+
+    public ITypeReference getType() {
+        return type;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append(super.toString());
+        builder.append(" ");
+        builder.append(getType().toString());
+        return builder.toString();
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigParameterizedType.java b/tools/signature-tools/src/signature/model/impl/SigParameterizedType.java
new file mode 100644
index 0000000..d726135
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigParameterizedType.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import signature.model.IClassReference;
+import signature.model.IParameterizedType;
+import signature.model.ITypeReference;
+import signature.model.util.ModelUtil;
+
+import java.io.Serializable;
+import java.util.List;
+
+@SuppressWarnings("serial")
+public class SigParameterizedType implements IParameterizedType, Serializable {
+
+    private ITypeReference ownerType;
+    private IClassReference rawType;
+    private List<ITypeReference> typeArguments;
+
+    public SigParameterizedType(ITypeReference ownerType,
+            IClassReference rawType, List<ITypeReference> typeArguments) {
+        this.ownerType = ownerType;
+        this.rawType = rawType;
+        this.typeArguments = typeArguments;
+    }
+
+    public ITypeReference getOwnerType() {
+        ITypeReference returnValue = ownerType;
+        if (returnValue == null) {
+            if (rawType.getClassDefinition().getDeclaringClass() != null) {
+                returnValue = new SigClassReference(rawType
+                        .getClassDefinition().getDeclaringClass());
+            }
+        }
+        return returnValue;
+    }
+
+    public IClassReference getRawType() {
+        return rawType;
+    }
+
+    public List<ITypeReference> getTypeArguments() {
+        return typeArguments;
+    }
+
+    @Override
+    public int hashCode() {
+        return hashCode(this);
+    }
+
+    public static int hashCode(IParameterizedType type) {
+        final int prime = 31;
+        int result = 1;
+        result = prime * type.getRawType().hashCode();
+        result = prime * result + type.getTypeArguments().hashCode();
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        return equals(this, obj);
+    }
+
+    public static boolean equals(IParameterizedType thiz, Object that) {
+        if (!(that instanceof IParameterizedType)) {
+            return false;
+        }
+        IParameterizedType other = (IParameterizedType) that;
+        if (thiz.getOwnerType() == null) {
+            if (other.getOwnerType() != null) {
+                return false;
+            }
+        } else if (Uninitialized.isInitialized(thiz.getOwnerType())) {
+            if (!Uninitialized.isInitialized(other.getOwnerType())) {
+                return false;
+            }
+        } else if (!thiz.getOwnerType().equals(other.getOwnerType())) {
+            return false;
+        }
+        if (!thiz.getRawType().equals(other.getRawType())) {
+            return false;
+        }
+        if (!thiz.getTypeArguments().equals(other.getTypeArguments())) {
+            return false;
+        }
+        return true;
+    }
+
+
+    @Override
+    public String toString() {
+        return SigParameterizedType.toString(this);
+    }
+
+    public static String toString(IParameterizedType type) {
+        StringBuilder builder = new StringBuilder();
+        if (type.getOwnerType() != null) {
+            builder.append(type.getOwnerType().toString());
+            builder.append("::");
+        }
+        builder.append(type.getRawType());
+        builder.append("<");
+        builder.append(ModelUtil.separate(type.getTypeArguments(), ", "));
+        builder.append(">");
+        return builder.toString();
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigPrimitiveType.java b/tools/signature-tools/src/signature/model/impl/SigPrimitiveType.java
new file mode 100644
index 0000000..2786169
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigPrimitiveType.java
@@ -0,0 +1,49 @@
+/*

+ * Copyright (C) 2009 The Android Open Source Project

+ *

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file except in compliance with the License.

+ * You may obtain a copy of the License at

+ *

+ *      http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ */

+

+package signature.model.impl;

+

+import signature.model.IPrimitiveType;

+

+public enum SigPrimitiveType implements IPrimitiveType {

+    VOID_TYPE("void"), BOOLEAN_TYPE("boolean"), BYTE_TYPE("byte"), CHAR_TYPE(

+            "char"), SHORT_TYPE("short"), INT_TYPE("int"), LONG_TYPE("long"),

+            FLOAT_TYPE("float"), DOUBLE_TYPE("double");

+

+    private String name;

+

+    private SigPrimitiveType(String name) {

+        this.name = name;

+    }

+

+    public static SigPrimitiveType valueOfTypeName(String name) {

+        for (SigPrimitiveType primitive : values()) {

+            if (primitive.name.equals(name)) {

+                return primitive;

+            }

+        }

+        throw new IllegalArgumentException(name + " is not a primitive type");

+    }

+

+    public String getName() {

+        return name;

+    }

+

+    @Override

+    public String toString() {

+        return name;

+    }

+}

diff --git a/tools/signature-tools/src/signature/model/impl/SigTypeVariableDefinition.java b/tools/signature-tools/src/signature/model/impl/SigTypeVariableDefinition.java
new file mode 100644
index 0000000..e0f918e
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigTypeVariableDefinition.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import signature.model.IGenericDeclaration;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+import signature.model.util.ModelUtil;
+
+import java.io.Serializable;
+import java.util.List;
+
+@SuppressWarnings("serial")
+public class SigTypeVariableDefinition implements ITypeVariableDefinition,
+        Serializable {
+
+    private String name;
+    private IGenericDeclaration genericDeclaration;
+    private List<ITypeReference> upperBounds = Uninitialized.unset();
+
+    public SigTypeVariableDefinition(String name,
+            IGenericDeclaration genericDeclaration) {
+        this.name = name;
+        this.genericDeclaration = genericDeclaration;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public IGenericDeclaration getGenericDeclaration() {
+        return genericDeclaration;
+    }
+
+    public List<ITypeReference> getUpperBounds() {
+        return upperBounds;
+    }
+
+    public void setUpperBounds(List<ITypeReference> upperBounds) {
+        this.upperBounds = upperBounds;
+    }
+
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append(name);
+        if (getUpperBounds().size() != 1) {
+            builder.append(ModelUtil.separate(getUpperBounds(), ", "));
+        } else {
+            if (!ModelUtil.isJavaLangObject(getUpperBounds().get(0))) {
+                builder.append(getUpperBounds().get(0));
+            }
+        }
+        return builder.toString();
+    }
+
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigTypeVariableReference.java b/tools/signature-tools/src/signature/model/impl/SigTypeVariableReference.java
new file mode 100644
index 0000000..6bd2593
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigTypeVariableReference.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import java.io.Serializable;
+
+import signature.model.ITypeVariableDefinition;
+import signature.model.ITypeVariableReference;
+
+@SuppressWarnings("serial")
+public class SigTypeVariableReference implements ITypeVariableReference,
+        Serializable {
+
+    private ITypeVariableDefinition definition;
+
+    public SigTypeVariableReference(ITypeVariableDefinition definition) {
+        this.definition = definition;
+    }
+
+    public ITypeVariableDefinition getTypeVariableDefinition() {
+        return definition;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (getClass() == obj.getClass()) {
+            return getTypeVariableDefinition().equals(
+                    ((ITypeVariableReference) obj).getTypeVariableDefinition());
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return getTypeVariableDefinition().hashCode();
+    }
+
+    @Override
+    public String toString() {
+        return getTypeVariableDefinition().getName();
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/SigWildcardType.java b/tools/signature-tools/src/signature/model/impl/SigWildcardType.java
new file mode 100644
index 0000000..c24ac23
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/SigWildcardType.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import signature.model.ITypeReference;
+import signature.model.IWildcardType;
+
+import java.io.Serializable;
+import java.util.List;
+
+@SuppressWarnings("serial")
+public class SigWildcardType implements IWildcardType, Serializable {
+
+    private ITypeReference lowerBound;
+    private List<ITypeReference> upperBounds;
+
+    public SigWildcardType(ITypeReference lowerBound,
+            List<ITypeReference> upperBounds) {
+        this.lowerBound = lowerBound;
+        this.upperBounds = upperBounds;
+    }
+
+    public ITypeReference getLowerBound() {
+        return lowerBound;
+    }
+
+    public List<ITypeReference> getUpperBounds() {
+        return upperBounds;
+    }
+
+    @Override
+    public int hashCode() {
+        return SigWildcardType.hashCode(this);
+    }
+
+    public static int hashCode(IWildcardType type) {
+        final int prime = 31;
+        int result = 1;
+        result = prime
+                + ((type.getLowerBound() == null) ? 0 : type.getLowerBound()
+                        .hashCode());
+        result = prime * result + type.getUpperBounds().hashCode();
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        return SigWildcardType.equals(this, obj);
+    }
+
+    public static boolean equals(IWildcardType thiz, Object obj) {
+        if (thiz == obj) return true;
+        if (obj == null) return false;
+        if (!(obj instanceof IWildcardType)) return false;
+        IWildcardType that = (IWildcardType) obj;
+        if (thiz.getLowerBound() == null) {
+            if (that.getLowerBound() != null) return false;
+        } else if (!thiz.getLowerBound().equals(that.getLowerBound()))
+            return false;
+        if (!thiz.getUpperBounds().equals(that.getUpperBounds())) return false;
+        return true;
+    }
+
+
+    @Override
+    public String toString() {
+        return SigWildcardType.toString(this);
+    }
+
+    public static String toString(IWildcardType thiz) {
+        StringBuilder builder = new StringBuilder();
+        builder.append("?");
+        if (thiz.getLowerBound() != null) {
+            builder.append(" ");
+            builder.append(" super ");
+            builder.append(thiz.getLowerBound());
+        }
+        if (!thiz.getUpperBounds().isEmpty()) {
+            builder.append(" extends ");
+            builder.append(thiz.getUpperBounds());
+        }
+        return builder.toString();
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/impl/Uninitialized.java b/tools/signature-tools/src/signature/model/impl/Uninitialized.java
new file mode 100644
index 0000000..cc88479
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/impl/Uninitialized.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.impl;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.List;
+import java.util.Set;
+
+import signature.model.IAnnotationField;
+import signature.model.IClassDefinition;
+import signature.model.IClassReference;
+import signature.model.IPackage;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+import signature.model.ITypeVariableReference;
+import signature.model.Kind;
+
+/**
+ *
+ */
+public class Uninitialized {
+
+    private static final Object UNINITIALIZED;
+
+    static {
+        UNINITIALIZED = Proxy.newProxyInstance(Uninitialized.class
+                .getClassLoader(), new Class[] {
+                ITypeReference.class, IPackage.class, IClassDefinition.class,
+                IClassReference.class, ITypeVariableReference.class,
+                ITypeVariableDefinition.class, IAnnotationField.class,
+                Set.class, List.class}, new InvocationHandler() {
+            public Object invoke(Object proxy, Method method, Object[] args)
+                    throws Throwable {
+                if (method.getName().equals("toString")) {
+                    return "Uninitialized";
+                }
+
+                throw new UnsupportedOperationException();
+            }
+        });
+    }
+
+    @SuppressWarnings("unchecked")
+    public static <T> T unset() {
+        return (T) UNINITIALIZED;
+    }
+
+    public static boolean isInitialized(Object o) {
+        return o != UNINITIALIZED && o != Kind.UNINITIALIZED;
+    }
+}
diff --git a/tools/signature-tools/src/signature/model/util/ITypeFactory.java b/tools/signature-tools/src/signature/model/util/ITypeFactory.java
new file mode 100644
index 0000000..af3e3a9
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/util/ITypeFactory.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.util;
+
+import signature.model.IClassReference;
+import signature.model.IGenericDeclaration;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableReference;
+import signature.model.impl.SigArrayType;
+import signature.model.impl.SigClassDefinition;
+import signature.model.impl.SigParameterizedType;
+import signature.model.impl.SigTypeVariableDefinition;
+import signature.model.impl.SigWildcardType;
+
+import java.util.List;
+
+public interface ITypeFactory {
+
+    public static final String JAVA_LANG_OBJECT = "java.lang.Object";
+
+    /**
+     * Returns the existing type or creates a new one.<br>
+     * Format: java.lang.Object
+     */
+    public SigClassDefinition getClass(String packageName, String className);
+
+    public IClassReference getClassReference(String packageName,
+            String className);
+
+    /**
+     * Returns the existing array type or creates a new one.
+     * 
+     * @param componentType
+     *            the component type of the array
+     * @return the array type
+     */
+    public SigArrayType getArrayType(ITypeReference componentType);
+
+    /**
+     * Returns the existing parameterized type or creates a new one.
+     * 
+     * @param ownerType
+     *            the owner of the parameterized type
+     * @param rawType
+     *            the type which is parameterized
+     * @param typeArguments
+     *            the type arguments
+     * @return the parameterized type
+     */
+    public SigParameterizedType getParameterizedType(ITypeReference ownerType,
+            IClassReference rawType, List<ITypeReference> typeArguments);
+
+
+    public boolean containsTypeVariableDefinition(String name,
+            IGenericDeclaration genericDeclaration);
+
+    /**
+     * Returns the existing type variable or creates a new one.
+     * 
+     * @param genericDeclaration
+     *            the declaration site of the variable
+     * @param name
+     *            the name of the type variable
+     * @return the type variable
+     */
+    public SigTypeVariableDefinition getTypeVariable(String name,
+            IGenericDeclaration genericDeclaration);
+
+    public ITypeVariableReference getTypeVariableReference(String name,
+            IGenericDeclaration genericDeclaration);
+
+    /**
+     * Returns the existing wildcard type or creates a new one. Wildcard types
+     * are equal if they have the same lower bound and have the same upper
+     * bounds. The order of the upper bounds is irrelevant except for the first
+     * element. <br>
+     * Note: This does not mean that two values with equal wildcard type can be
+     * assigned to each other!
+     * 
+     * @param lowerBound
+     *            the lower bound
+     * @param upperBounds
+     *            the upper bounds
+     * @return the wildcard type
+     */
+    public SigWildcardType getWildcardType(ITypeReference lowerBound,
+            List<ITypeReference> upperBounds);
+
+}
diff --git a/tools/signature-tools/src/signature/model/util/ModelUtil.java b/tools/signature-tools/src/signature/model/util/ModelUtil.java
new file mode 100644
index 0000000..f66fd2c
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/util/ModelUtil.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.util;
+
+import signature.model.IAnnotatableElement;
+import signature.model.IAnnotation;
+import signature.model.IAnnotationElement;
+import signature.model.IAnnotationField;
+import signature.model.IApi;
+import signature.model.IClassDefinition;
+import signature.model.IField;
+import signature.model.IPackage;
+import signature.model.ITypeReference;
+
+import java.util.Collection;
+
+public class ModelUtil {
+    private ModelUtil() {
+    }
+
+    /**
+     * Returns the IClass for the given className.<br>
+     * Format: a.b.C
+     * 
+     * @param qualifiedClassName
+     *            the fully qualified class name
+     * @return the IClass instance or null;
+     */
+    public static IClassDefinition getClass(IPackage aPackage,
+            String qualifiedClassName) {
+        for (IClassDefinition clazz : aPackage.getClasses()) {
+            if (qualifiedClassName.equals(clazz.getName())) {
+                return clazz;
+            }
+        }
+        return null;
+    }
+
+    public static IAnnotation getAnnotation(IAnnotatableElement element,
+            String qualifiedTypeName) {
+        for (IAnnotation annotation : element.getAnnotations()) {
+            if (qualifiedTypeName.equals(annotation.getType()
+                    .getClassDefinition().getQualifiedName())) {
+                return annotation;
+            }
+        }
+        return null;
+    }
+
+    public static IAnnotationElement getAnnotationElement(
+            IAnnotation annotation, String elementName) {
+        for (IAnnotationElement element : annotation.getElements()) {
+            if (elementName.equals(element.getDeclaringField().getName())) {
+                return element;
+            }
+        }
+        return null;
+    }
+
+    public static IField getField(IClassDefinition clazz, String fieldName) {
+        for (IField field : clazz.getFields()) {
+            if (fieldName.equals(field.getName())) {
+                return field;
+            }
+        }
+        return null;
+    }
+
+    public static IAnnotationField getAnnotationField(
+            IClassDefinition annotation, String fieldName) {
+        for (IAnnotationField field : annotation.getAnnotationFields()) {
+            if (fieldName.equals(field.getName())) {
+                return field;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Returns the IPackage for the given className.<br>
+     * Format: a.b
+     * 
+     * @param api
+     *            the api
+     * @param packageName
+     *            the name of the package
+     * @return the IClass instance or null;
+     */
+    public static IPackage getPackage(IApi api, String packageName) {
+        for (IPackage aPackage : api.getPackages()) {
+            if (packageName.equals(aPackage.getName())) {
+                return aPackage;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * "a.b.c.A;" -> "a.b.c" "A" -> "" empty string
+     * 
+     * @param classIdentifier
+     * @return the package name
+     */
+    public static String getPackageName(String classIdentifier) {
+        int lastIndexOfSlash = classIdentifier.lastIndexOf('.');
+        String packageName = null;
+        if (lastIndexOfSlash == -1) {
+            packageName = "";
+        } else {
+            packageName = classIdentifier.substring(0, lastIndexOfSlash);
+        }
+        return packageName;
+    }
+
+    /**
+     * "a.b.c.A;" -> "A" "A" -> "A"
+     * 
+     * @param classIdentifier
+     *            fully qualified class name
+     * @return the class name
+     */
+    public static String getClassName(String classIdentifier) {
+        int lastIndexOfDot = classIdentifier.lastIndexOf('.');
+        String className = null;
+        if (lastIndexOfDot == -1) {
+            className = classIdentifier;
+        } else {
+            className = classIdentifier.substring(lastIndexOfDot + 1);
+        }
+        return className;
+    }
+
+
+    public static String separate(Collection<? extends Object> elements,
+            String separator) {
+        StringBuilder s = new StringBuilder();
+        boolean first = true;
+        for (Object object : elements) {
+            if (!first) {
+                s.append(separator);
+            }
+            s.append(object.toString());
+            first = false;
+        }
+        return s.toString();
+    }
+
+    public static boolean isJavaLangObject(ITypeReference type) {
+        if (type instanceof IClassDefinition) {
+            IClassDefinition clazz = (IClassDefinition) type;
+            if ("java.lang".equals(clazz.getPackageName())) {
+                return "Object".equals(clazz.getName());
+            }
+        }
+        return false;
+    }
+
+}
diff --git a/tools/signature-tools/src/signature/model/util/TypePool.java b/tools/signature-tools/src/signature/model/util/TypePool.java
new file mode 100644
index 0000000..dc48113
--- /dev/null
+++ b/tools/signature-tools/src/signature/model/util/TypePool.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.model.util;
+
+import static signature.model.impl.Uninitialized.isInitialized;
+import signature.model.IClassReference;
+import signature.model.IGenericDeclaration;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableReference;
+import signature.model.impl.SigArrayType;
+import signature.model.impl.SigClassDefinition;
+import signature.model.impl.SigClassReference;
+import signature.model.impl.SigParameterizedType;
+import signature.model.impl.SigTypeVariableDefinition;
+import signature.model.impl.SigTypeVariableReference;
+import signature.model.impl.SigWildcardType;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Pool and factory for all {@link ITypeReference} instances.<br>
+ * Note: This class is not thread save
+ */
+public class TypePool implements ITypeFactory {
+
+    /**
+     * Pool for all SigClass objects. Key format: "java.lang.Object", "a.b.C$D
+     */
+    private Map<String, SigClassDefinition> classPool;
+    /** Pool for all SigTypeVariable objects */
+    private Map<TypeVariableKey, SigTypeVariableDefinition> typeVariablePool;
+
+    public TypePool() {
+        classPool = new HashMap<String, SigClassDefinition>();
+        typeVariablePool =
+                new HashMap<TypeVariableKey, SigTypeVariableDefinition>();
+    }
+
+    public SigClassDefinition getClass(String packageName, String className) {
+        String key = packageName + "<>" + className;
+        SigClassDefinition clazz = classPool.get(key);
+        if (clazz == null) {
+            clazz = new SigClassDefinition(packageName, className);
+            classPool.put(key, clazz);
+        }
+        return clazz;
+    }
+
+    public IClassReference getClassReference(String packageName,
+            String className) {
+        return new SigClassReference(getClass(packageName, className));
+    }
+
+    public SigArrayType getArrayType(ITypeReference componentType) {
+        assert componentType != null;
+        return new SigArrayType(componentType);
+    }
+
+    public SigParameterizedType getParameterizedType(ITypeReference ownerType,
+            IClassReference rawType, List<ITypeReference> typeArguments) {
+        assert rawType != null;
+        assert typeArguments != null;
+        return new SigParameterizedType(ownerType, rawType, typeArguments);
+    }
+
+    private static class TypeVariableKey {
+        private String name;
+        private IGenericDeclaration genericDeclaration;
+
+        public TypeVariableKey(String name,
+                IGenericDeclaration genericDeclaration) {
+            this.genericDeclaration = genericDeclaration;
+            this.name = name;
+        }
+
+        @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + genericDeclaration.hashCode();
+            result = prime * result + name.hashCode();
+            return result;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            TypeVariableKey other = (TypeVariableKey) obj;
+            if (genericDeclaration != other.genericDeclaration) {
+                return false;
+            }
+            if (!name.equals(other.name)) {
+                return false;
+            }
+            return true;
+        }
+    }
+
+    public boolean containsTypeVariableDefinition(String name,
+            IGenericDeclaration genericDeclaration) {
+        TypeVariableKey key = new TypeVariableKey(name, genericDeclaration);
+        return typeVariablePool.get(key) != null;
+    }
+
+    public SigTypeVariableDefinition getTypeVariable(String name,
+            IGenericDeclaration genericDeclaration) {
+        assert name != null;
+        assert genericDeclaration != null;
+
+        TypeVariableKey key = new TypeVariableKey(name, genericDeclaration);
+        SigTypeVariableDefinition sigTypeVariable = typeVariablePool.get(key);
+        if (sigTypeVariable == null) {
+            sigTypeVariable = new SigTypeVariableDefinition(name,
+                    genericDeclaration);
+            typeVariablePool.put(key, sigTypeVariable);
+        }
+        return sigTypeVariable;
+    }
+
+    public ITypeVariableReference getTypeVariableReference(String name,
+            IGenericDeclaration genericDeclaration) {
+        return new SigTypeVariableReference(getTypeVariable(name,
+                genericDeclaration));
+    }
+
+    public SigWildcardType getWildcardType(ITypeReference lowerBound,
+            List<ITypeReference> upperBounds) {
+        assert upperBounds != null;
+
+        SigWildcardType sigWildcardType = new SigWildcardType(lowerBound,
+                upperBounds);
+        return sigWildcardType;
+    }
+
+    public void replaceAllUninitialiezWithNull() {
+        for (SigClassDefinition clazz : classPool.values()) {
+            replaceUninitializedWithNull(clazz);
+        }
+    }
+
+    private static void replaceUninitializedWithNull(
+            SigClassDefinition clazz) {
+        if (clazz == null) {
+            return;
+        }
+        if (!isInitialized(clazz.getAnnotationFields())) {
+            clazz.setAnnotationFields(null);
+        }
+        if (!isInitialized(clazz.getAnnotations())) {
+            clazz.setAnnotations(null);
+        }
+        if (!isInitialized(clazz.getAnnotations())) {
+            clazz.setAnnotations(null);
+        }
+        if (!isInitialized(clazz.getConstructors())) {
+            clazz.setConstructors(null);
+        }
+        if (!isInitialized(clazz.getDeclaringClass())) {
+            clazz.setDeclaringClass(null);
+        }
+
+        if (!isInitialized(clazz.getEnumConstants())) {
+            clazz.setEnumConstants(null);
+        }
+        if (!isInitialized(clazz.getFields())) {
+            clazz.setFields(null);
+        }
+        if (!isInitialized(clazz.getInnerClasses())) {
+            clazz.setInnerClasses(null);
+        }
+        if (!isInitialized(clazz.getInterfaces())) {
+            clazz.setInterfaces(null);
+        }
+        if (!isInitialized(clazz.getKind())) {
+            clazz.setKind(null);
+        }
+        if (!isInitialized(clazz.getMethods())) {
+            clazz.setMethods(null);
+        }
+        if (!isInitialized(clazz.getModifiers())) {
+            clazz.setModifiers(null);
+        }
+        if (!isInitialized(clazz.getSuperClass())) {
+            clazz.setSuperClass(null);
+        }
+        if (!isInitialized(clazz.getTypeParameters())) {
+            clazz.setTypeParameters(null);
+        }
+    }
+}
diff --git a/tools/signature-tools/templates/ApiOverviewPage.st b/tools/signature-tools/templates/ApiOverviewPage.st
new file mode 100644
index 0000000..4faa193
--- /dev/null
+++ b/tools/signature-tools/templates/ApiOverviewPage.st
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
+<html>
+<head>
+$Common_meta()$
+<title>
+Android API Differences Report
+</title>
+<body>
+<div class="body">
+
+$Header()$
+
+
+<div class="content">
+<h2>Android API Differences Report</h2>
+<p>This document details the changes in the Android framework API. It shows 
+additions, modifications, and removals for packages, classes, methods, and 
+fields. Each reference to an API change includes a brief description of the 
+API and an explanation of the change and suggested workaround, where available.</p>
+
+<p>The differences described in this report are based a comparison of the APIs 
+whose versions are specified in the upper-right corner of this page. It compares a 
+newer "to" API to an older "from" version, noting any changes relative to the 
+older API. So, for example, indicated API removals are no longer present in the "to" 
+API.</p>
+<p>For more information about the Android framework API and SDK, 
+see the <a href="http://code.google.com/android/index.html" target="_top">Android product site</a>.</p>
+
+$if(no_delta)$
+<h3>Congratulation!</h3>
+No differences were detected between the two provided APIs.
+$endif$
+
+
+$if(removed_packages)$
+$Table(name="Removed Packages", rows=removed_packages:{$it.from:ModelElementRow()$})$
+<br/>
+$endif$
+
+
+$if(added_packages)$
+$Table(name="Added Packages", rows=added_packages:{$it.to:PackageAddedLink()$}:SimpleTableRow())$
+<br/>
+$endif$
+
+$if(changed_packages)$
+$Table(name="Changed Packages", rows=changed_packages:{$it.to:PackageChangedLink()$}:SimpleTableRow())$
+<br/>
+$endif$
+</div>
+
+
+</div>
+</body>
+</html>
+
+
+
+
+
diff --git a/tools/signature-tools/templates/ClassChangedLink.st b/tools/signature-tools/templates/ClassChangedLink.st
new file mode 100644
index 0000000..20e0ed9
--- /dev/null
+++ b/tools/signature-tools/templates/ClassChangedLink.st
@@ -0,0 +1 @@
+$Link(url={$it.packageName$.$it.name$.html}, name={<tt>$it.name$</tt>})$
diff --git a/tools/signature-tools/templates/ClassOverviewPage.st b/tools/signature-tools/templates/ClassOverviewPage.st
new file mode 100644
index 0000000..45b4c1c
--- /dev/null
+++ b/tools/signature-tools/templates/ClassOverviewPage.st
@@ -0,0 +1,131 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
+<html>
+<head>
+$Common_meta()$
+<title>
+$class_delta.to.packageName$.$class_delta.to.name$
+</title>
+</head>
+<body>
+
+<div class="body">
+
+$Header()$
+
+<div class="content">
+<h2>Class $class_delta.to.packageName$.$class_delta.to:ClassReferenceLink()$</h2>
+<br/>
+
+$if(has_class_signature_delta)$
+<table summary="Signature Difference" border="1" width="100%">
+  <tr>
+    <th colspan=3>Signature Difference</th>
+  </tr>
+  <tbody>
+    <tr class="default">
+      <td>$SigClassDefinition(element=class_delta.to)$</td>
+      <td>
+        $if(class_delta.annotationDeltas)$   $MultiSubDelta(desc="Annotations Changed:", deltas=class_delta.annotationDeltas)$      $endif$
+        $if(class_delta.modifierDeltas)$     $MultiSubDelta(desc="Modifiers Changed:", deltas=class_delta.modifierDeltas)$          $endif$
+        $if(class_delta.typeVariableDeltas)$ $MultiSubDelta(desc="Type Variables Changed:", deltas=class_delta.typeVariableDeltas)$ $endif$
+        $if(class_delta.superClassDelta)$    $SingleSubDelta(desc="Superclass Changed", delta=class_delta.superClassDelta)$               $endif$
+        $if(class_delta.interfaceDeltas)$    $MultiSubDelta(desc="Interfaces Changed:", deltas=class_delta.interfaceDeltas)$        $endif$
+      </td>
+    </tr>
+  </tbody>
+</table>
+<br/>
+$endif$
+
+$! Annotation Fields !$
+
+$if(removed_annotation_fields)$
+$Table(name="Removed Annotation Fields", rows=removed_annotation_fields:{$it.from:ModelElementRow()$})$
+<br/>
+$endif$
+
+$if(added_annotation_fields)$
+$Table(name="Added Annotation Fields", rows=added_annotation_fields:{$it.to:ModelElementRow()$})$
+<br/>
+$endif$
+
+$if(changed_annotation_fields)$
+$Table(name="Changed Annotation Fields", rows=changed_annotation_fields:DeltaTableRow())$
+<br/>
+$endif$
+
+
+$! --------Enum Constants-------- !$
+
+$if(removed_enum_constants)$
+$Table(name="Removed Enum Constants", rows=removed_enum_constants:{$it.from:ModelElementRow()$})$
+<br/>
+$endif$
+
+$if(added_enum_constants)$
+$Table(name="Added Enum Constants", rows=added_enum_constants:{$it.to:ModelElementRow()$})$
+<br/>
+$endif$
+
+$if(changed_enum_constants)$
+$Table(name="Changed Enum Constants", rows=changed_enum_constants:DeltaTableRow())$
+<br/>
+$endif$
+
+
+$! Fields !$
+
+$if(removed_fields)$
+$Table(name="Removed Fields", rows=removed_fields:{$it.from:ModelElementRow()$})$
+<br/>
+$endif$
+
+$if(added_fields)$
+$Table(name="Added Fields", rows=added_fields:{$it.to:ModelElementRow()$})$
+<br/>
+$endif$
+
+$if(changed_fields)$
+$Table(name="Changed Fields", rows=changed_fields:DeltaTableRow())$
+<br/>
+$endif$
+
+
+$! Constructors !$
+
+$if(removed_constructors)$
+$Table(name="Removed Constructors", rows=removed_constructors:{$it.from:ModelElementRow()$})$
+<br/>
+$endif$
+
+$if(added_constructors)$
+$Table(name="Added Constructors", rows=added_constructors:{$it.to:ModelElementRow()$})$
+<br/>
+$endif$
+
+$if(changed_constructors)$
+$Table(name="Changed Constructors", rows=changed_constructors:DeltaTableRow())$
+<br/>
+$endif$
+
+
+$! Methods !$
+
+$if(removed_methods)$
+$Table(name="Removed Methods", rows=removed_methods:{$it.from:ModelElementRow()$})$
+<br/>
+$endif$
+
+$if(added_methods)$
+$Table(name="Added Methods", rows=added_methods:{$it.to:ModelElementRow()$})$
+<br/>
+$endif$
+
+$if(changed_methods)$
+$Table(name="Changed Methods", rows=changed_methods:DeltaTableRow())$
+<br/>
+$endif$
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/tools/signature-tools/templates/ClassReferenceLink.st b/tools/signature-tools/templates/ClassReferenceLink.st
new file mode 100644
index 0000000..c22e9b5
--- /dev/null
+++ b/tools/signature-tools/templates/ClassReferenceLink.st
@@ -0,0 +1 @@
+$Link(url={http://code.google.com/android/reference/$it.packageFragments; separator="/"$/$it.name$.html}, name={<tt>$it.name$</tt>})$
diff --git a/tools/signature-tools/templates/Common_meta.st b/tools/signature-tools/templates/Common_meta.st
new file mode 100644
index 0000000..8663781
--- /dev/null
+++ b/tools/signature-tools/templates/Common_meta.st
@@ -0,0 +1,12 @@
+<meta name="generator" content="Android signature tools v 1.0">
+<meta name="keywords" content="API difference, difference between two APIs, API diff">
+<link type="text/css" rel="stylesheet" href="../styles.css" title="Stylesheet"/>
+<link type="text/css" rel="stylesheet" href="styles.css" title="Stylesheet"/>
+
+<link rel="stylesheet" type="text/css" href="http://code.google.com/android/assets/codesite/codesite.css"/>
+<link rel="stylesheet" type="text/css" href="http://code.google.com/android/assets/codesite/semantic_headers.css"/>
+<link rel="stylesheet" type="text/css" href="http://code.google.com/android/assets/style.css"/> 
+
+
+
+
diff --git a/tools/signature-tools/templates/DeltaTableRow.st b/tools/signature-tools/templates/DeltaTableRow.st
new file mode 100644
index 0000000..4d0974c
--- /dev/null
+++ b/tools/signature-tools/templates/DeltaTableRow.st
@@ -0,0 +1,8 @@
+<tr class="deltaTableRow">
+  <td class="element">
+    $ElementType(element=it.to):{<tt>$it$</tt>}$
+  </td>
+  <td class="delta">
+    $DeltaTypeSwitch(delta=it)$
+  </td>
+</tr>
diff --git a/tools/signature-tools/templates/Header.st b/tools/signature-tools/templates/Header.st
new file mode 100644
index 0000000..9aa8e2f
--- /dev/null
+++ b/tools/signature-tools/templates/Header.st
@@ -0,0 +1,21 @@
+<div class="header">
+  <div class="logo">
+    <a href="http://code.google.com/android/documentation.html"><img style="border: 0;" src="http://code.google.com/android/images/android_icon_125.png"/></a>
+  </div>
+  <div class="specbox">
+    <table>
+      <tr>
+        <th colspan="2"> API Diff Specification </th>
+      </tr>
+      <tr>
+        <td>To Version:</td> <td>$to_desc$</td>
+      </tr>
+      <tr>
+        <td>From Version:</td> <td>$from_desc$</td>
+      </tr>
+      <tr>
+        <td>Generated</td> <td>$creation_time$</td>
+      </tr>
+    </table>
+  </div>
+</div>
\ No newline at end of file
diff --git a/tools/signature-tools/templates/Link.st b/tools/signature-tools/templates/Link.st
new file mode 100644
index 0000000..2421094
--- /dev/null
+++ b/tools/signature-tools/templates/Link.st
@@ -0,0 +1 @@
+<a class="$link_style; null="default"$" href="$url$">$name$</a>
\ No newline at end of file
diff --git a/tools/signature-tools/templates/ModelElementRow.st b/tools/signature-tools/templates/ModelElementRow.st
new file mode 100644
index 0000000..54b20c6
--- /dev/null
+++ b/tools/signature-tools/templates/ModelElementRow.st
@@ -0,0 +1,6 @@
+<tr class="deltaTableRow">
+  <td class="element">
+    $ElementType(element=it):{<tt>$it$</tt>}$
+  </td>
+</tr>
+
diff --git a/tools/signature-tools/templates/PackageAddedLink.st b/tools/signature-tools/templates/PackageAddedLink.st
new file mode 100644
index 0000000..eb352da
--- /dev/null
+++ b/tools/signature-tools/templates/PackageAddedLink.st
@@ -0,0 +1 @@
+$Link(url={http://code.google.com/android/reference/$it.packageFragments; separator="/"$/package-summary.html}, name={<tt>$it.name$</tt>})$
diff --git a/tools/signature-tools/templates/PackageChangedLink.st b/tools/signature-tools/templates/PackageChangedLink.st
new file mode 100644
index 0000000..5951f2a
--- /dev/null
+++ b/tools/signature-tools/templates/PackageChangedLink.st
@@ -0,0 +1 @@
+$Link(url={changes/pkg_$it.name$.html}, name={<tt>$it.name$</tt>})$
\ No newline at end of file
diff --git a/tools/signature-tools/templates/PackageOverviewPage.st b/tools/signature-tools/templates/PackageOverviewPage.st
new file mode 100644
index 0000000..ebeded0
--- /dev/null
+++ b/tools/signature-tools/templates/PackageOverviewPage.st
@@ -0,0 +1,39 @@
+<!doctype html public "-//w3c//dtd html 4.0 frameset//en""http://www.w3.org/tr/rec-html40/frameset.dtd">
+<html>
+<head>
+$Common_meta()$
+<title>
+Android API Differences Report
+</title>
+<body>
+
+<div class="body">
+
+$Header()$
+
+<div class="content">
+
+<h2>
+Package $Link(url={http://code.google.com/android/reference/$package_delta.to.packageFragments; separator="/"$/package-summary.html}, name=package_delta.to.name)$
+</h2>
+
+
+$if(removed_classes)$
+$Table(name="Removed Classes and Interfaces", rows=removed_classes:{$it.from:{<tt>$it.name$</tt>}$}:SimpleTableRow())$
+<br/>
+$endif$
+
+
+$if(added_classes)$
+$Table(name="Added Classes and Interfaces", rows=added_classes:{$it.to:ClassReferenceLink()$}:SimpleTableRow())$
+<br/>
+$endif$
+
+$if(changed_classes)$
+$Table(name="Changed Classes and Interfaces", rows=changed_classes:{$it.to:ClassChangedLink()$}:SimpleTableRow())$
+<br/>
+$endif$
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/tools/signature-tools/templates/SimpleTableRow.st b/tools/signature-tools/templates/SimpleTableRow.st
new file mode 100644
index 0000000..3e7e7c2
--- /dev/null
+++ b/tools/signature-tools/templates/SimpleTableRow.st
@@ -0,0 +1,5 @@
+<tr class="default">
+  <td>
+    $it$
+  </td>
+</tr>
diff --git a/tools/signature-tools/templates/Styles.st b/tools/signature-tools/templates/Styles.st
new file mode 100644
index 0000000..4294eb3
--- /dev/null
+++ b/tools/signature-tools/templates/Styles.st
@@ -0,0 +1,44 @@
+/*
+ * Noser signature html output v$version$
+ */
+
+/* default link style*/
+a.default:link      {color: blue; text-decoration: none}
+a.default:hover     {color: blue; text-decoration: underline;}
+a.default:visited   {color: blue; text-decoration: none}
+
+/* discreet link style */
+a.discreet:link     {color: black; text-decoration: none}
+a.discreet:visited  {color: black; text-decoration: none}
+a.discreet:hover    {color: black; text-decoration: underline;}
+
+ul { 
+	list-style-type: none 
+}
+
+.body {
+	margin: 10px;
+}
+
+.header {
+    position:relative;
+	width: 100%;
+	
+}
+
+.logo {
+	left:0px;
+}
+.specbox {
+    position:absolute;
+	right:0px;
+	top:0px;
+}
+
+.content {
+	width: 100%;
+	position: relative;
+	top:75px;
+}
+
+
diff --git a/tools/signature-tools/templates/Table.st b/tools/signature-tools/templates/Table.st
new file mode 100644
index 0000000..2eecb8e
--- /dev/null
+++ b/tools/signature-tools/templates/Table.st
@@ -0,0 +1,9 @@
+<table summary="$name$" border="1" width="100%">
+<tr>
+  <th COLSPAN=2>$name$</th>
+</tr>
+<tbody>
+$rows$
+</tbody>
+</table>
+
diff --git a/tools/signature-tools/templates/delta/deltas.stg b/tools/signature-tools/templates/delta/deltas.stg
new file mode 100644
index 0000000..a27d641
--- /dev/null
+++ b/tools/signature-tools/templates/delta/deltas.stg
@@ -0,0 +1,149 @@
+group deltas;
+
+
+ADDED(delta)  ::= "Added $ElementType(element=delta.to)$"
+
+
+REMOVED(delta) ::= "Removed $ElementType(element=delta.from)$"
+
+
+CHANGED(delta) ::= "$DeltaType(delta)$"
+
+
+DeltaType(delta) ::= "$({$delta.class.simpleName$})(delta)$"
+
+
+DeltaTypeSwitch(delta) ::= "$delta:({$delta.type$})(delta)$"
+
+
+MultiSubDelta(desc, deltas) ::= <<
+$if(deltas)$
+$if(!deltas.empty)$
+$desc$
+<ul>
+$deltas:{<li>$DeltaTypeSwitch(delta=it)$</li>}$
+</ul>
+$endif$
+$endif$ 
+>>
+
+
+SigAnnotationDelta(delta) ::= <<
+$MultiSubDelta(desc="Annotation Elements changed:", deltas=delta.annotationElementDeltas)$
+>>
+
+
+
+SigAnnotationElementDelta(delta) ::= <<
+$SingleSubDelta(desc="Value changed:", delta=delta.valueDelta)$
+>>
+
+
+SigArrayTypeDelta(delta) ::= <<
+$SingleSubDelta(desc="Component Type of array changed:", delta=delta.componentTypeDelta)$
+>>
+
+
+SigClassReferenceDelta(delta) ::= "from $SigClass(element=delta.from)$ to $SigClass(element=delta.to)$"
+
+
+SigConstructorDelta(delta) ::= "$SigExecutableMemberDelta(delta=delta)$"
+
+SigMethodDelta(delta) ::= <<
+$SigExecutableMemberDelta(delta=delta)$
+$if(delta.returnTypeDelta)$
+$SingleSubDelta(desc="Return Type changed:", delta=delta.returnTypeDelta)$
+$endif$
+>>
+
+
+SigExecutableMemberDelta(delta) ::= <<
+$if(delta.annotationDeltas)$
+$MultiSubDelta(desc="Annotations changed:", deltas=delta.annotationDeltas)$
+$endif$
+
+$if(delta.modifierDeltas)$
+$MultiSubDelta(desc="Modifiers changed:", deltas=delta.modifierDeltas)$
+$endif$
+
+$if(delta.typeVariableDeltas)$
+$MultiSubDelta(desc="Type Variables changed:", deltas=delta.typeVariableDeltas)$
+$endif$
+
+$if(delta.exceptionDeltas)$
+$MultiSubDelta(desc="Exceptions changed:", deltas=delta.exceptionDeltas)$
+$endif$
+
+$if(delta.parameterDeltas)$
+$MultiSubDelta(desc="Parameters changed:", deltas=delta.parameterDeltas)$
+$endif$
+>>
+
+SigFieldDelta(delta) ::= <<
+$SingleSubDelta(desc="Type changed:", delta=delta.typeDelta)$
+$MultiSubDelta(desc="Modifiers changed:", deltas=delta.modifierDeltas)$
+$MultiSubDelta(desc="Annotations changed:", deltas=delta.annotationDeltas)$
+>>
+
+SigGenericDelclarationDelta(delta) ::= "GenericDelclarationDelta $delta$"
+
+SigModifierDelta(delta) ::= "SigModifierDelta.st: Please file a bug if you see this message"
+
+
+SigParameterDelta(delta) ::= <<
+$if(delta.annotationDeltas)$
+$MultiSubDelta(desc="Annotations changed:", deltas=delta.annotationDeltas)$
+$endif$
+
+$if(delta.typeDelta)$
+$SingleSubDelta(desc="Type changed:", delta=delta.typeDelta)$
+$endif$
+>>
+
+
+SigParameterizedTypeDelta(delta) ::= <<
+$SingleSubDelta(desc="Owner Type changed:", delta=delta.ownerTypeDelta)$
+$SingleSubDelta(desc="Raw Type changed:", delta=delta.rawTypeDelta)$
+$MultiSubDelta(desc="Type Arguments changed:", deltas=delta.argumentTypeDeltas)$
+>>
+
+
+SigPrimitiveTypeDelta(delta) ::= "from $delta.from$ to $delta.to$"
+
+SigTypeDelta(delta) ::= "from $ElementType(element=delta.from)$ to $ElementType(element=delta.to)$"
+
+SigTypeVariableReferenceDelta(delta) ::= <<
+SigTypeVariableReferenceDelta:
+$delta$
+>>
+
+SigTypeVariableDefinitionDelta(delta) ::= <<
+$SingleSubDelta(desc="Upper Bound changed:", delta=delta.upperBoundsDelta)$
+$SingleSubDelta(desc="Declaration changed:", delta=delta.genericDeclarationDelta)$
+>>
+
+SigUpperBoundsDelta(delta) ::= <<
+$SingleSubDelta(desc="First Upper Bound changed:", delta=delta.firstUpperBoundDelta)$
+$MultiSubDelta(desc="Upper Bounds changed:", deltas=delta.remainingUpperBoundDeltas)$
+>>
+
+SigWildcardTypeDelta(delta) ::= <<
+$SingleSubDelta(desc="Lower Bound changed:", delta=delta.lowerBoundDelta)$
+$SingleSubDelta(desc="Upper Bounds changed:", delta=delta.upperBoundDelta)$
+>>
+
+SigAnnotationFieldDelta(delta) ::= <<
+$SigFieldDelta(delta = delta)$
+$SingleSubDelta(desc="Default value changed:", delta=delta.defaultValueDelta)$
+>>
+
+SingleSubDelta(desc, delta) ::= <<
+$if(delta)$
+$desc$
+<ul>
+  <li>$DeltaTypeSwitch(delta=delta)$</li>
+</ul>
+$endif$
+>>
+
+
diff --git a/tools/signature-tools/templates/model/model.stg b/tools/signature-tools/templates/model/model.stg
new file mode 100644
index 0000000..425ad36
--- /dev/null
+++ b/tools/signature-tools/templates/model/model.stg
@@ -0,0 +1,135 @@
+group model;
+
+ElementType(element) ::= <<
+$({$element.class.simpleName$})(element = element)$
+>>
+
+Modifier(element) ::= <<
+$element$
+>>
+
+SigAnnotation(element) ::= <<
+@$ElementType(element = element.type)$
+$if(element.elements)$
+{$element.elements:{$SigAnnotationElement(element=it)$}$}
+$endif$
+>>
+
+SigAnnotationElement(element) ::= <<
+$element.declaringField.name$=$element.value$
+>>
+
+SigAnnotationField(element) ::= <<
+$SigField(element = element)$ $if(element.defaultValue)$ default=$element.defaultValue$$endif$
+>>
+
+SigArrayType(element) ::= <<
+$ElementType(element = element.componentType)$[]
+>>
+
+
+SigClassDefinition(element) ::= <<
+$Annotations(element = element)$
+$Modifiers(element = element)$$element.kind$ $element:ClassReferenceLink(link_style="discreet")$
+$TypeParameters(element = element)$
+$if(element.superClass)$ extends $ElementType(element=element.superClass)$$endif$
+$if(element.interfaces)$ implements $element.interfaces:{$ElementType(element=it)$}; separator=", "$$endif$
+>>
+
+ClassReferenceProjection(element) ::= <<
+$SigClassReference(element= element)$
+>>
+
+SigClassReference(element) ::= <<
+$ClassReferenceLink(it = element.classDefinition, link_style="discreet")$
+>>
+
+SigConstructor(element) ::= <<
+$Annotations(element= element, separator=" ")$
+$Modifiers(element= element)$
+$TypeParameters(element= element)$
+$SigExecutableMember(element= element)$
+>>
+
+//FIXME add SigEnumConstantReference to format correct in either case
+SigEnumConstant(element) ::= <<
+enum constant $ElementType(element=element.type)$.$element.name$
+>>
+
+SigExecutableMember(element) ::= <<
+$element.name$($element.parameters:{$SigParameter(element=it)$}; separator=", "$)
+$if(element.exceptions)$ throws $element.exceptions:{$ElementType(element=it)$}; separator=", "$$endif$
+>>
+
+SigField(element) ::= <<
+$Annotations(element = element, separator="<br/>")$
+$Modifiers(element = element)$$ElementType(element=element.type)$ $element.name$
+>>
+
+MethodProjection(element) ::= <<
+$SigMethod(element=element)$
+>>
+
+SigMethod(element) ::= <<
+$Annotations(element=element)$
+$Modifiers(element=element)$
+$TypeParameters(element=element)$
+$ElementType(element=element.returnType)$ $SigExecutableMember(element = element)$
+>>
+
+SigPackage(element) ::= <<
+$element.name$
+>>
+
+SigParameter(element) ::= <<
+$Annotations(element = element, separator=" ")$
+$ElementType(element=element.type)$
+>>
+
+ParameterizedTypeProjection(element) ::= <<
+$SigParameterizedType(element = element)$
+>>
+
+SigParameterizedType(element) ::= <<
+$if(element.ownerType)$$ElementType(element=element.ownerType)$$endif$
+$SigClassReference(element=element.rawType)$
+$if(element.typeArguments)$&lt;$element.typeArguments:{$ElementType(element=it)$}$&gt;$endif$
+>>
+
+SigPrimitiveType(element) ::= <<
+$element.name$
+>>
+
+SigTypeVariableDefinition(element) ::= <<
+$element.name$$if(!element.upperBounds.empty)$ extends $element.upperBounds:{$ElementType(element=it)$}; separator=", "$$endif$
+>>
+
+SigTypeVariableReference(element) ::= <<
+$element.typeVariableDefinition.name$
+>>
+
+SigWildcardType(element) ::= <<
+?
+$if(element.lowerBound)$ super $ElementType(element=element.lowerBound)$$endif$
+$if(!element.upperBounds.empty)$ extends $element.upperBounds:{$ElementType(element=it)$}; separator=", "$$endif$
+>>
+
+
+/* helper templates*/
+
+Modifiers(element) ::= <<
+$if(element.modifiers)$
+$element.modifiers; separator=" "$$\ $
+$endif$
+>>
+
+Annotations(element, separator) ::= <<
+$if(element.annotations)$
+$element.annotations:{$SigAnnotation(element=it)$}; separator=separator$
+$separator$
+$endif$
+>>
+
+TypeParameters(element) ::= <<
+$if(element.typeParameters)$ &lt;$element.typeParameters:{$SigTypeVariableDefinition(element=it)$}; separator=", "$&gt;$endif$
+>>
diff --git a/tools/signature-tools/test/signature/comparator/AllDexTests.java b/tools/signature-tools/test/signature/comparator/AllDexTests.java
new file mode 100644
index 0000000..b44dcb6
--- /dev/null
+++ b/tools/signature-tools/test/signature/comparator/AllDexTests.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.comparator;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+import signature.converter.dex.DexTestConverter;
+import signature.converter.util.ITestSourceConverter;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+    AllDexTests.DexPackageCompareTest.class,
+    AllDexTests.DexClassCompareTest.class,
+    AllDexTests.DexMethodCompareTests.class,
+    AllDexTests.DexAnnotationCompareTest.class
+})
+public class AllDexTests {
+    private static ITestSourceConverter newConverter(){
+        return new DexTestConverter();
+    }
+    
+    public static class DexPackageCompareTest extends PackageCompareTest {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+    
+    public static class DexClassCompareTest extends ClassCompareTest {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+    
+    public static class DexMethodCompareTests extends MethodCompareTests {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+    
+    public static class DexAnnotationCompareTest extends AnnotationCompareTest{
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+    
+    
+}
\ No newline at end of file
diff --git a/tools/signature-tools/test/signature/comparator/AllDocletTests.java b/tools/signature-tools/test/signature/comparator/AllDocletTests.java
new file mode 100644
index 0000000..327d931
--- /dev/null
+++ b/tools/signature-tools/test/signature/comparator/AllDocletTests.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.comparator;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+import signature.converter.doclet.DocletTestConverter;
+import signature.converter.util.ITestSourceConverter;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+    AllDocletTests.DocletPackageCompareTest.class,
+    AllDocletTests.DocletClassCompareTest.class,
+    AllDocletTests.DocletMethodCompareTests.class
+})
+public class AllDocletTests {
+    private static ITestSourceConverter newConverter(){
+        return new DocletTestConverter();
+    }
+    
+    public static class DocletPackageCompareTest extends PackageCompareTest {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+    
+    public static class DocletClassCompareTest extends ClassCompareTest {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+    
+    public static class DocletMethodCompareTests extends MethodCompareTests {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+}
\ No newline at end of file
diff --git a/tools/signature-tools/test/signature/comparator/AnnotationCompareTest.java b/tools/signature-tools/test/signature/comparator/AnnotationCompareTest.java
new file mode 100644
index 0000000..c72b637
--- /dev/null
+++ b/tools/signature-tools/test/signature/comparator/AnnotationCompareTest.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.comparator;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Test;
+
+import signature.comparator.util.AbstractComparatorTest;
+import signature.converter.util.CompilationUnit;
+import signature.model.IApi;
+
+import java.io.IOException;
+
+public abstract class AnnotationCompareTest extends AbstractComparatorTest {
+
+    @Test
+    public void testAnnotationValue() throws IOException{
+        CompilationUnit A0 = new CompilationUnit("a.A0", 
+                "package a; " +
+                "public @interface A0 {" +
+                "  A1 value() default @A1;" + 
+                "}");
+        CompilationUnit A1 = new CompilationUnit("a.A1", 
+                "package a; " +
+                "public @interface A1 {" +
+                "}");
+         CompilationUnit AnnotBDefault = new CompilationUnit("a.B", 
+                    "package a; " +
+                    "@A0 " +
+                    "public class B {}");
+         CompilationUnit AnnotB = new CompilationUnit("a.B", 
+                    "package a; " +
+                    "@A0 " +
+                    "public class B {}");
+          IApi fromApi = convert(A0, A1, AnnotBDefault);
+          IApi toApi = convert(A0, A1, AnnotB);
+          assertNull(compare(fromApi, toApi));
+    }
+    
+       @Test
+        public void testDefaultAnnotationValue() throws IOException{
+             CompilationUnit A0 = new CompilationUnit("a.A0", 
+                    "package a; " +
+                    "public @interface A0 {" +
+                    "  String value() default \"bla\";" +
+                    "}");
+             CompilationUnit A1 = new CompilationUnit("a.A0", 
+                    "package a; " +
+                    "public @interface A0 {" +
+                    "  String value();" + 
+                    "}");
+              IApi fromApi = convert(A0);
+              IApi toApi = convert(A1);
+              assertNotNull(compare(fromApi, toApi));
+        }
+}
diff --git a/tools/signature-tools/test/signature/comparator/ClassCompareTest.java b/tools/signature-tools/test/signature/comparator/ClassCompareTest.java
new file mode 100644
index 0000000..7171978
--- /dev/null
+++ b/tools/signature-tools/test/signature/comparator/ClassCompareTest.java
@@ -0,0 +1,388 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.comparator;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+
+import org.junit.Test;
+
+import signature.comparator.util.AbstractComparatorTest;
+import signature.compare.model.IAnnotationDelta;
+import signature.compare.model.IApiDelta;
+import signature.compare.model.IClassDefinitionDelta;
+import signature.compare.model.DeltaType;
+import signature.compare.model.ITypeReferenceDelta;
+import signature.converter.util.CompilationUnit;
+import signature.model.IApi;
+
+import java.io.IOException;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
+import java.util.Set;
+
+public abstract class ClassCompareTest extends AbstractComparatorTest {
+
+    @Test
+    public void compareEqualClasses() throws IOException{
+         CompilationUnit A = new CompilationUnit("a.A", 
+                    "package a; " +
+                    "public class A {}");
+         CompilationUnit B = new CompilationUnit("a.B", 
+                    "package a; " +
+                    "public class B {}");
+          IApi fromApi = convert(A, B);
+          IApi toApi = convert(A, B);
+          assertNull(compare(fromApi, toApi));
+    }
+
+    @Test
+    public void compareMissingClass() throws IOException{
+         CompilationUnit A = new CompilationUnit("a.A", 
+                    "package a; " +
+                    "public class A {}");
+         CompilationUnit B = new CompilationUnit("a.B", 
+                    "package a; " +
+                    "public class B {}");
+          IApi fromApi = convert(A, B);
+          IApi toApi = convert(A);
+          
+          IApiDelta delta = compare(fromApi, toApi);
+          IClassDefinitionDelta classDelta = getSingleClassDelta(delta);
+          assertSame(DeltaType.REMOVED, classDelta.getType());
+    }
+    
+    @Test
+    public void compareAddedClass() throws IOException{
+         CompilationUnit A = new CompilationUnit("a.A", 
+                    "package a; " +
+                    "public class A {}");
+         CompilationUnit B = new CompilationUnit("a.B", 
+                    "package a; " +
+                    "public class B {}");
+          IApi fromApi = convert(A);
+          IApi toApi = convert(A, B);
+          
+          IApiDelta delta = compare(fromApi, toApi);
+          IClassDefinitionDelta classDelta = getSingleClassDelta(delta);
+          assertSame(DeltaType.ADDED, classDelta.getType());
+    }
+    
+    @Test
+    public void compareAnnotationsOnClass() throws IOException{
+         CompilationUnit A = new CompilationUnit("a.A", 
+                    "package a; " +
+                    "public class A {}");
+         CompilationUnit AnnotA = new CompilationUnit("a.A", 
+                    "package a; " +
+                    "@Deprecated " +
+                    "public class A {}");
+          IApi fromApi = convert(A);
+          IApi toApi = convert(AnnotA);
+          
+          IApiDelta delta = compare(fromApi, toApi);
+          IClassDefinitionDelta classDelta = getSingleClassDelta(delta);
+          
+          System.out.println(classDelta);
+          
+          Set<IAnnotationDelta> annotationDeltas = classDelta.getAnnotationDeltas();
+          assertEquals(1, annotationDeltas.size());
+          
+          IAnnotationDelta annotationDelta = annotationDeltas.iterator().next();
+          assertSame(DeltaType.ADDED, annotationDelta.getType());
+    }
+    
+    @Test
+    public void compareDefaultedAnnotationElementOnClass() throws IOException{
+        CompilationUnit annot = new CompilationUnit("a.A", 
+                "package a; " +
+                "public @interface A {" +
+                "  String name() default \"NAME\" ;" + 
+                "}");
+         CompilationUnit AnnotBDefault = new CompilationUnit("a.B", 
+                    "package a; " +
+                    "@A " +
+                    "public class B {}");
+         CompilationUnit AnnotB = new CompilationUnit("a.B", 
+                    "package a; " +
+                    "@A(name=\"NAME\") " +
+                    "public class B {}");
+          IApi fromApi = convert(annot, AnnotBDefault);
+          IApi toApi = convert(annot, AnnotB);
+          assertNull(compare(fromApi, toApi));
+    }
+    
+    @Test
+    public void compareSameInterfaces() throws IOException{
+         CompilationUnit A = new CompilationUnit("a.A", 
+                    "package a; " +
+                    "public class A implements Comparable<String>{ " +
+                    "  public int compareTo(String another){return 0;}" +
+                    "}");
+          IApi fromApi = convert(A);
+          IApi toApi = convert(A);
+          assertNull(compare(fromApi, toApi));
+    }
+    
+    @Test
+    public void compareMissingInterface() throws IOException{
+         CompilationUnit A0 = new CompilationUnit("a.A", 
+                 "package a; " +
+                 "public class A implements Cloneable{}");
+         CompilationUnit A1 = new CompilationUnit("a.A", 
+                 "package a; " +
+                 "public class A {}");
+          IApi fromApi = convert(A0);
+          IApi toApi = convert(A1);
+          IApiDelta apiDelta = compare(fromApi, toApi);
+          IClassDefinitionDelta classDelta =  getSingleClassDelta(apiDelta);
+          assertEquals(1, classDelta.getInterfaceDeltas().size());
+          ITypeReferenceDelta<?> interfaceDelta = classDelta.getInterfaceDeltas().iterator().next();
+          assertNotNull(interfaceDelta);
+    }
+    
+    @Test
+    public void compareMissingGenericInterface0() throws IOException{
+        CompilationUnit I = new CompilationUnit("a.I", 
+                "package a; " +
+                "public interface I<T>{}");
+        CompilationUnit B = new CompilationUnit("a.B", 
+                "package a; " +
+                "public class B implements I<String>{}");
+         CompilationUnit A0 = new CompilationUnit("a.A", 
+                "package a; " +
+                "public class A extends B implements I<String>{}");
+         CompilationUnit A1 = new CompilationUnit("a.A", 
+                 "package a; " +
+                 "public class A extends B {}");
+          IApi fromApi = convert(I, B, A0);
+          IApi toApi = convert(I, B, A1);
+          IApiDelta apiDelta = compare(fromApi, toApi);
+          assertNull(apiDelta);
+    }
+    
+    @Test
+    public void compareMissingGenericInterface1() throws IOException{
+        CompilationUnit I = new CompilationUnit("a.I", 
+                "package a; " +
+                "public interface I<T>{}");
+        CompilationUnit B = new CompilationUnit("a.B", 
+                "package a; " +
+                "public class B<T> implements I<T>{}");
+         CompilationUnit A0 = new CompilationUnit("a.A", 
+                "package a; " +
+                "public class A<T> extends B<T> implements I<T>{}");
+                 //generic declaration of 'T' in I<T> is A<T>
+         CompilationUnit A1 = new CompilationUnit("a.A", 
+                 "package a; " +
+                 "public class A<T> extends B<T> {}");
+                 //generic declaration of 'T' in I<T> is B<T>
+          IApi fromApi = convert(I, B, A0);
+          IApi toApi = convert(I, B, A1);
+          IApiDelta apiDelta = compare(fromApi, toApi);
+          assertNull(apiDelta);
+    }
+    
+    static interface I<T>{}
+    static class B<T> implements I<T>{}
+    static class A0<E extends Number> extends B<E> implements I<E>{}
+    static class A1<S extends Number> extends B<S>{}
+    
+    @Test
+    public void compareMissingGenericInterfaceReflection() {
+        ParameterizedType sC = (ParameterizedType)A0.class.getGenericSuperclass();
+        Type[] bounds = ((TypeVariable<?>)sC.getActualTypeArguments()[0]).getBounds();
+        Type[] a1Int = A1.class.getGenericInterfaces();
+        assertEquals(0,a1Int.length);
+    }
+    
+    @Test
+    public void compareInterfaceClosure() throws IOException{
+         CompilationUnit I0 = new CompilationUnit("a.I0", 
+                 "package a; " +
+                 "public interface I0{}");
+         CompilationUnit I1 = new CompilationUnit("a.I1", 
+                 "package a; " +
+                 "public interface I1 extends I0{}");
+         CompilationUnit C0 = new CompilationUnit("a.C0", 
+                 "package a; " +
+                 "public class C0 implements I1{}");
+         CompilationUnit C0_I1 = new CompilationUnit("a.C0", 
+                 "package a; " +
+                 "public class C0 implements I1, I0{}");
+          IApi fromApi = convert(I0, I1, C0);
+          IApi toApi = convert(I0, I1, C0_I1);
+          IApiDelta apiDelta = compare(fromApi, toApi);
+          assertNull(apiDelta);
+    }
+    
+    @Test
+    public void compareUpperBounds0() throws IOException{
+        CompilationUnit Number = new CompilationUnit("a.Number", 
+                    "package a; " +
+                    "public class Number implements java.io.Serializable{}");
+         CompilationUnit I0 = new CompilationUnit("a.I", 
+                    "package a; " +
+                    "public interface I<T extends Number & java.io.Serializable>{}");
+         CompilationUnit I1 = new CompilationUnit("a.I", 
+                     "package a; " +
+                     "public interface I<T extends Number>{}");
+          IApi fromApi = convert(I0,Number);
+          IApi toApi = convert(I1,Number);
+          IApiDelta apiDelta = compare(fromApi, toApi);
+          assertNull(apiDelta);
+    }
+    
+    @Test
+    public void compareUpperBounds1() throws IOException{
+        CompilationUnit Number = new CompilationUnit("a.Number", 
+                    "package a; " +
+                    "public class Number {}");
+         CompilationUnit I0 = new CompilationUnit("a.I", 
+                    "package a; " +
+                    "public interface I<T extends Number & java.io.Serializable>{}");
+         CompilationUnit I1 = new CompilationUnit("a.I", 
+                     "package a; " +
+                     "public interface I<T extends Number>{}");
+          IApi fromApi = convert(I0,Number);
+          IApi toApi = convert(I1,Number);
+          IApiDelta apiDelta = compare(fromApi, toApi);
+          assertNotNull(apiDelta);
+    }
+    
+    @Test
+    public void compareTypeVariables0() throws IOException{
+        CompilationUnit C0 = new CompilationUnit("a.C", 
+                    "package a; " +
+                    "public class C<T,S> {}");
+        CompilationUnit C1 = new CompilationUnit("a.C", 
+                    "package a; " +
+                    "public class C<S,T> {}");
+          IApi fromApi = convert(C0);
+          IApi toApi = convert(C1);
+          IApiDelta apiDelta = compare(fromApi, toApi);
+          assertNull(apiDelta);
+    }
+    
+    @Test
+    public void compareTypeVariables1() throws IOException{
+        CompilationUnit C0 = new CompilationUnit("a.C", 
+                    "package a; " +
+                    "public class C<T,S> {}");
+        CompilationUnit C1 = new CompilationUnit("a.C", 
+                    "package a; " +
+                    "public class C<T,S,R> {}");
+          IApi fromApi = convert(C0);
+          IApi toApi = convert(C1);
+          IApiDelta apiDelta = compare(fromApi, toApi);
+          assertNotNull(apiDelta);
+    }
+    
+    @Test
+    public void compareTypeVariables2() throws IOException{
+        CompilationUnit C0 = new CompilationUnit("a.C", 
+                    "package a; " +
+                    "public class C<T,S> {" +
+                    "  public void m(T t, S s){} " +
+                    "}");
+        CompilationUnit C1 = new CompilationUnit("a.C", 
+                    "package a; " +
+                    "public class C<S,T> {" +
+                    "  public void m(S s, T t){} " +
+                    "}");
+          IApi fromApi = convert(C0);
+          IApi toApi = convert(C1);
+          IApiDelta apiDelta = compare(fromApi, toApi);
+          assertNull(apiDelta);
+    }
+    
+    @Test
+    public void compareTypeVariables3() throws IOException{
+        CompilationUnit C0 = new CompilationUnit("a.C", 
+                    "package a; " +
+                    "public class C<T,S> {" +
+                    "  public void m(T t, S s){} " +
+                    "}");
+        CompilationUnit C1 = new CompilationUnit("a.C", 
+                    "package a; " +
+                    "public class C<S,T> {" +
+                    "  public void m(T t, S s){} " +
+                    "}");
+          IApi fromApi = convert(C0);
+          IApi toApi = convert(C1);
+          IApiDelta apiDelta = compare(fromApi, toApi);
+          assertNotNull(apiDelta);
+    }
+    
+    @Test
+    public void compareTypeVariables4() throws IOException{
+        CompilationUnit C0 = new CompilationUnit("a.C", 
+                    "package a; " +
+                    "public class C<T> {" +
+                    "  public class I{" +
+                    "    public void m(T t){}" +
+                    "  } " +
+                    "}");
+        CompilationUnit C1 = new CompilationUnit("a.C", 
+                    "package a; " +
+                    "public class C {" +
+                    "  public class I<T>{" +
+                    "    public void m(T t){}" +
+                    "  } " +
+                    "}");
+          IApi fromApi = convert(C0);
+          IApi toApi = convert(C1);
+          IApiDelta apiDelta = compare(fromApi, toApi);
+          assertNotNull(apiDelta);
+    }
+    
+    @Test
+    public void interfaceClosureTest() throws IOException{
+        CompilationUnit B = new CompilationUnit("a.B", 
+                    "package a; " +
+                    "public class  B<S> {}");
+        CompilationUnit C = new CompilationUnit("a.C", 
+                "package a; " +
+                "public class C<R> extends B<R>  {}");
+        CompilationUnit E = new CompilationUnit("a.E", 
+                "package a; " +
+                "public class E<Q> extends C<Q> {}");
+        CompilationUnit F = new CompilationUnit("a.F", 
+                "package a; " +
+                "public class F<P> extends E<P> {}");
+        CompilationUnit G = new CompilationUnit("a.G", 
+                "package a; " +
+                "public class G<O> extends F<O> {}");
+        CompilationUnit H = new CompilationUnit("a.H", 
+                "package a; " +
+                "public class H<R> extends G<R> {}");
+//        IApi fromApi = convert(B,C, E, F);
+//        IApi toApi = convert(B,C,E, F);
+          IApi fromApi = convert(B,C, E,F, G, H);
+          IApi toApi = convert(B,C,E,F, G, H);
+          
+          
+          long start = System.currentTimeMillis();
+          IApiDelta apiDelta = compare(fromApi, toApi);
+          System.out.println("compare took :" + (System.currentTimeMillis() -start) + "ms");
+          assertNull(apiDelta);
+    }
+    
+}
\ No newline at end of file
diff --git a/tools/signature-tools/test/signature/comparator/MethodCompareTests.java b/tools/signature-tools/test/signature/comparator/MethodCompareTests.java
new file mode 100644
index 0000000..3e94506
--- /dev/null
+++ b/tools/signature-tools/test/signature/comparator/MethodCompareTests.java
@@ -0,0 +1,495 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.comparator;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import java.io.IOException;
+
+import org.junit.Test;
+
+import signature.comparator.util.AbstractComparatorTest;
+import signature.compare.model.IApiDelta;
+import signature.compare.model.IClassDefinitionDelta;
+import signature.compare.model.DeltaType;
+import signature.converter.util.CompilationUnit;
+import signature.model.IApi;
+
+public abstract class MethodCompareTests extends AbstractComparatorTest {
+
+    
+    @Test
+    public void compareEqualClasses() throws IOException{
+        CompilationUnit A = new CompilationUnit("a.A", 
+                      "package a; " +
+                      "public class A {" +
+                      "  public void m(){}" +
+                      "}");
+        IApi fromApi = convert(A);
+        IApi toApi = convert(A);
+        assertNull(compare(fromApi, toApi));
+    }
+      
+    @Test
+    public void compareMissingMethod() throws IOException{
+        CompilationUnit A = new CompilationUnit("a.A", 
+                      "package a; " +
+                      "public class A {" +
+                      "  public void m(){}" +
+                      "}");
+        CompilationUnit AMissing = new CompilationUnit("a.A", 
+                      "package a; " +
+                      "public class A {" +
+                      "}");
+        IApi fromApi = convert(A);
+        IApi toApi = convert(AMissing);
+        IApiDelta delta = compare(fromApi, toApi);
+        assertNotNull(delta);
+        IClassDefinitionDelta classDelta = delta.getPackageDeltas().iterator().next().getClassDeltas().iterator().next();
+        assertEquals(1, classDelta.getMethodDeltas().size());
+        assertEquals(DeltaType.REMOVED, classDelta.getMethodDeltas().iterator().next().getType());
+    }
+      
+    @Test 
+    public void compareAddedMethod() throws IOException{
+        CompilationUnit A = new CompilationUnit("a.A", 
+                  "package a; " +
+                  "public class A {" +
+                  "  public void m(){}" +
+                  "}");
+        CompilationUnit AMissing = new CompilationUnit("a.A", 
+                  "package a; " +
+                  "public class A {" +
+                  "}");
+        IApi fromApi = convert(AMissing);
+        IApi toApi = convert(A);
+        IApiDelta delta = compare(fromApi, toApi);
+        assertNotNull(delta);
+        IClassDefinitionDelta classDelta = delta.getPackageDeltas().iterator().next().getClassDeltas().iterator().next();
+        assertEquals(1, classDelta.getMethodDeltas().size());
+        assertEquals(DeltaType.ADDED, classDelta.getMethodDeltas().iterator().next().getType());
+    }
+      
+    @Test
+    public void compareChangedMethod() throws IOException{
+        CompilationUnit A = new CompilationUnit("a.A", 
+                  "package a; " +
+                  "public class A {" +
+                  "  public void m(){}" +
+                  "}");
+        CompilationUnit AMissing = new CompilationUnit("a.A", 
+                  "package a; " +
+                  "public class A {" +
+                  "  public void m() throws Exception {}" +
+                  "}");
+        IApi fromApi = convert(AMissing);
+        IApi toApi = convert(A);
+        IApiDelta delta = compare(fromApi, toApi);
+        assertNotNull(delta);
+        IClassDefinitionDelta classDelta = delta.getPackageDeltas().iterator().next().getClassDeltas().iterator().next();
+        assertEquals(1, classDelta.getMethodDeltas().size());
+        assertEquals(DeltaType.CHANGED, classDelta.getMethodDeltas().iterator().next().getType());
+    }
+      
+    @Test
+    public void compareAddedParameterMethod() throws IOException{
+        CompilationUnit A = new CompilationUnit("a.A", 
+                  "package a; " +
+                  "public class A {" +
+                  "  public void m(){}" +
+                  "}");
+        CompilationUnit AMissing = new CompilationUnit("a.A", 
+                  "package a; " +
+                  "public class A {" +
+                  "  public void m(int i) {}" +
+                  "}");
+        IApi fromApi = convert(AMissing);
+        IApi toApi = convert(A);
+        IApiDelta delta = compare(fromApi, toApi);
+        assertNotNull(delta);
+        IClassDefinitionDelta classDelta = delta.getPackageDeltas().iterator().next().getClassDeltas().iterator().next();
+        assertEquals(2, classDelta.getMethodDeltas().size()); //one added , one removed
+    }
+      
+    @Test
+    public void compareExceptions0() throws IOException{
+        CompilationUnit E0 = new CompilationUnit("a.E0", 
+                "package a; " +
+                "public class E0 extends Exception {}");
+        CompilationUnit E1 = new CompilationUnit("a.E1", 
+                "package a; " +
+                "public class E1 extends E0 {}");
+        CompilationUnit C0 = new CompilationUnit("a.C0", 
+                 "package a; " +
+                 "public class C0 {" +
+                 "  public void m() throws E0 {}" +
+                 "}");
+        CompilationUnit C0_E1 = new CompilationUnit("a.C0", 
+                 "package a; " +
+                 "public class C0{" +
+                 "  public void m() throws E0, E1 {}" +
+                 "}");
+        IApi fromApi = convert(E0, E1, C0);
+        IApi toApi = convert(E0, E1, C0_E1);
+        IApiDelta apiDelta = compare(fromApi, toApi);
+        assertNull(apiDelta);
+    }
+    
+    @Test
+    public void compareExceptions1() throws IOException{
+        CompilationUnit E0 = new CompilationUnit("a.E0", 
+                "package a; " +
+                "public class E0 extends Exception {}");
+        CompilationUnit E1 = new CompilationUnit("a.E1", 
+                "package a; " +
+                "public class E1 extends Exception {}");
+        CompilationUnit C0 = new CompilationUnit("a.C0", 
+                 "package a; " +
+                 "public class C0 {" +
+                 "  public void m() throws E0 {}" +
+                 "}");
+        CompilationUnit C0_E1 = new CompilationUnit("a.C0", 
+                 "package a; " +
+                 "public class C0{" +
+                 "  public void m() throws E0, E1 {}" +
+                 "}");
+        IApi fromApi = convert(E0, E1, C0);
+        IApi toApi = convert(E0, E1, C0_E1);
+        IApiDelta apiDelta = compare(fromApi, toApi);
+        assertNotNull(apiDelta);
+    }
+    
+    @Test
+    public void compareRuntimeExceptions() throws IOException{
+        CompilationUnit E0 = new CompilationUnit("a.E0", 
+                 "package a; " +
+                 "public class E0 extends RuntimeException {}");
+        CompilationUnit C0 = new CompilationUnit("a.C0", 
+                 "package a; " +
+                 "public class C0{" +
+                 "  public void m() {}" +
+                 "}");
+        CompilationUnit C0_E0 = new CompilationUnit("a.C0", 
+                 "package a; " +
+                 "public class C0 {" +
+                 "  public void m() throws E0 {}" +
+                 "}");
+        IApi fromApi = convert(E0, C0);
+        IApi toApi = convert(E0, C0_E0);
+        IApiDelta apiDelta = compare(fromApi, toApi);
+        assertNull(apiDelta);
+    }
+    
+    @Test
+    public void compareAnnotations() throws IOException{
+        CompilationUnit C0 = new CompilationUnit("a.C0", 
+                 "package a; " +
+                 "public class C0{" +
+                 "  public void m(int i) {}" +
+                 "}");
+        CompilationUnit C1 = new CompilationUnit("a.C0", 
+                 "package a; " +
+                 "public class C0 {" +
+                 "  public void m(@Deprecated  int i) {}" +
+                 "}");
+        IApi fromApi = convert(C0);
+        IApi toApi = convert(C1);
+        IApiDelta apiDelta = compare(fromApi, toApi);
+        assertNotNull(apiDelta);
+    }
+    
+    @Test
+    public void compareMissingDefaultConstructor() throws IOException{
+        CompilationUnit C0 = new CompilationUnit("a.C0", 
+                 "package a; " +
+                 "public class C0{" +
+                 "  public C0() {}" +
+                 "}");
+        CompilationUnit C1 = new CompilationUnit("a.C0", 
+                 "package a; " +
+                 "public class C0 {}");
+        IApi fromApi = convert(C0);
+        IApi toApi = convert(C1);
+        IApiDelta apiDelta = compare(fromApi, toApi);
+        assertNull(apiDelta);
+    }
+        
+    @Test
+    public void compareMissingAbstractMethod() throws IOException{
+        CompilationUnit I = new CompilationUnit("a.I", 
+                 "package a; " +
+                 "public interface I{" +
+                 "  void m();" + 
+                   "}");
+        CompilationUnit C0 = new CompilationUnit("a.C0", 
+                 "package a; " +
+                 "public abstract class C0 implements I{" +
+                 "  public abstract void m(); " +
+                 "}");
+        CompilationUnit C1 = new CompilationUnit("a.C0", 
+                 "package a; " +
+                 "public abstract class C0 implements I{}");
+        IApi fromApi = convert(C0, I);
+        IApi toApi = convert(C1, I);
+        IApiDelta apiDelta = compare(fromApi, toApi);
+        assertNull(apiDelta);
+    }
+           
+    @Test
+    public void compareMissingInheritedMethod() throws IOException{
+        CompilationUnit I = new CompilationUnit("a.I", 
+                "package a; " +
+                "public class I{" +
+                "  public void m(){};" + 
+                "}");
+        CompilationUnit C0 = new CompilationUnit("a.C0", 
+                "package a; " +
+                "public class C0 extends I{" +
+                "  public void m(){}; " +
+                "}");
+        CompilationUnit C1 = new CompilationUnit("a.C0", 
+                "package a; " +
+                "public class C0 extends I{}");
+        IApi fromApi = convert(C0, I);
+        IApi toApi = convert(C1, I);
+        IApiDelta apiDelta = compare(fromApi, toApi);
+        assertNull(apiDelta);
+     }
+       
+    @Test
+    public void compareMissingInheritedMethodGeneric0() throws IOException{
+        CompilationUnit I = new CompilationUnit("a.I", 
+                "package a; " +
+                "public class I<T>{" +
+                "  public void m(T t){};" + 
+                "}");
+        CompilationUnit C0 = new CompilationUnit("a.C0", 
+                "package a; " +
+                "public class C0<T> extends I<T>{" +
+                "  public void m(T t){}; " +
+                "}");
+        CompilationUnit C1 = new CompilationUnit("a.C0", 
+                "package a; " +
+                "public class C0<T> extends I<T>{}");
+        IApi fromApi = convert(C0, I);
+        IApi toApi = convert(C1, I);
+        IApiDelta apiDelta = compare(fromApi, toApi);
+        assertNull(apiDelta);
+    }
+           
+    @Test
+    public void compareMissingInheritedMethodGeneric1() throws IOException{
+        CompilationUnit I = new CompilationUnit("a.I", 
+                "package a; " +
+                "public class I<T,S>{" +
+                "  public void m(S s){};" + 
+                "}");
+        CompilationUnit C0 = new CompilationUnit("a.C0", 
+                "package a; " +
+                "public class C0<Q, R> extends I<Q,R>{" +
+                "  public void m(R t){}; " +
+                "}");
+        CompilationUnit C1 = new CompilationUnit("a.C0", 
+                "package a; " +
+                "public class C0<Y,Z> extends I<Y,Z>{}");
+         IApi fromApi = convert(C0, I);
+         IApi toApi = convert(C1, I);
+         IApiDelta apiDelta = compare(fromApi, toApi);
+         assertNull(apiDelta);
+    }
+           
+    @Test
+    public void compareMissingInheritedMethodGeneric2() throws IOException{
+        CompilationUnit I = new CompilationUnit("a.I", 
+                "package a; " +
+                "public class I<T,S>{" +
+                "  public void m(S s){};" + 
+                "}");
+        CompilationUnit J = new CompilationUnit("a.J", 
+                "package a; " +
+                "public class J<W> extends I<Number,W>{" +
+                "  public void m(W w){};" + 
+                "}");
+        CompilationUnit C0 = new CompilationUnit("a.C0", 
+                "package a; " +
+                "public class C0<Q> extends J<Q>{" +
+                "  public void m(Q t){}; " +
+                "}");
+        CompilationUnit C1 = new CompilationUnit("a.C0", 
+                "package a; " +
+                "public class C0<Y> extends J<Y>{}");
+        IApi fromApi = convert(C0, I, J);
+        IApi toApi = convert(C1, I, J);
+        IApiDelta apiDelta = compare(fromApi, toApi);
+        assertNull(apiDelta);
+    }
+    
+    
+
+    @Test
+    public void compareMissingInheritedMethodGeneric3() throws IOException{
+        CompilationUnit Q = new CompilationUnit("a.Q", 
+                "package a; " +
+                "public class Q<S,T>{ " +
+                "  public void m(T s){} " +
+                "}");
+        
+        CompilationUnit W = new CompilationUnit("a.W", 
+                "package a; " +
+                "public class W<A,B> extends Q<A,A>{}");
+        CompilationUnit E0 = new CompilationUnit("a.E", 
+                "package a; " +
+                "public class E<C,D> extends W<C,C>{" +
+                "  public void m(C s){}" +
+                "}");
+        CompilationUnit E1 = new CompilationUnit("a.E", 
+                "package a; " +
+                "public class E<C,D> extends W<C,C>{}");
+        IApi fromApi = convert(E0, Q, W);
+        IApi toApi = convert(E1, Q, W);
+        IApiDelta apiDelta = compare(fromApi, toApi);
+        assertNull(apiDelta);
+    }
+    
+    @Test
+    public void compareMissingInheritedMethodGeneric4() throws IOException{
+        CompilationUnit Q = new CompilationUnit("a.Q", 
+                "package a; " +
+                "public class Q<S,T>{ " +
+                "  public void m(T t, S s){} " +
+                "}");
+        
+        CompilationUnit W = new CompilationUnit("a.W", 
+                "package a; " +
+                "public class W<A,B> extends Q<A,A>{}");
+        CompilationUnit E0 = new CompilationUnit("a.E", 
+                "package a; " +
+                "public class E<C,D> extends W<C,C>{" +
+                "  public void m(C s, C c){}" +
+                "}");
+        CompilationUnit E1 = new CompilationUnit("a.E", 
+                "package a; " +
+                "public class E<C,D> extends W<C,C>{}");
+        IApi fromApi = convert(E0, Q, W);
+        IApi toApi = convert(E1, Q, W);
+        IApiDelta apiDelta = compare(fromApi, toApi);
+        assertNull(apiDelta);
+    }
+    
+    @Test
+    public void compareMissingInheritedMethodGeneric5() throws IOException{
+        CompilationUnit Q = new CompilationUnit("a.Q", 
+                "package a; " +
+                "public class Q{}");
+        
+        CompilationUnit I = new CompilationUnit("a.I", 
+                "package a; " +
+                "public class I<S,T>{" +
+                "  public void m(T s){};" + 
+                "}");
+        CompilationUnit C0 = new CompilationUnit("a.C0", 
+                "package a; " +
+                "public class C0<P> extends I<P, Q>{" +
+                "  public void m(Q t){}; " +
+                "}");
+        CompilationUnit C1 = new CompilationUnit("a.C0", 
+                "package a; " +
+                "public class C0<Y> extends I<Y, Q>{}");
+        IApi fromApi = convert(C0, I, Q);
+        IApi toApi = convert(C1, I, Q);
+        IApiDelta apiDelta = compare(fromApi, toApi);
+        assertNull(apiDelta);
+    }
+    
+    
+    @Test
+    public void substitutionTest() throws IOException{
+        CompilationUnit NUMBER = new CompilationUnit("a.Number", 
+                "package a; " +
+                "public class Number{}");
+        CompilationUnit Q = new CompilationUnit("a.A", 
+                "package a; " +
+                "public class A<T>{ " +
+                "  public void m(T t){} " +
+                "}");
+        CompilationUnit E0 = new CompilationUnit("a.E", 
+                "package a; " +
+                "public class E extends A<Number>{" +
+                "  public void m(Number n){}" +
+                "}");
+        CompilationUnit E1 = new CompilationUnit("a.E", 
+                "package a; " +
+                "public class E extends A<Number>{}");
+        IApi fromApi = convert(E0, Q, NUMBER);
+        IApi toApi = convert(E1, Q, NUMBER);
+        
+        IApiDelta apiDelta = compare(fromApi, toApi);
+        assertNull(apiDelta);
+    }
+    
+    @Test
+    public void substitutionArrayTest() throws IOException{
+        CompilationUnit NUMBER = new CompilationUnit("a.Number", 
+                "package a; " +
+                "public class Number{}");
+        CompilationUnit Q = new CompilationUnit("a.A", 
+                "package a; " +
+                "public class A<T>{ " +
+                "  public void m(T[] t){} " +
+                "}");
+        CompilationUnit E0 = new CompilationUnit("a.E", 
+                "package a; " +
+                "public class E extends A<Number>{" +
+                "  public void m(Number[] n){}" +
+                "}");
+        CompilationUnit E1 = new CompilationUnit("a.E", 
+                "package a; " +
+                "public class E extends A<Number>{}");
+        IApi fromApi = convert(E0, Q, NUMBER);
+        IApi toApi = convert(E1, Q, NUMBER);
+        
+        IApiDelta apiDelta = compare(fromApi, toApi);
+        assertNull(apiDelta);
+    }
+    
+    @Test
+    public void substitutionNestedTypes() throws IOException{
+        CompilationUnit NUMBER = new CompilationUnit("a.Number", 
+                "package a; " +
+                "public class Number{}");
+        CompilationUnit Q = new CompilationUnit("a.A", 
+                "package a; " +
+                "public class A<T>{ " +
+                "  public void m(A<A<T[]>> t){} " +
+                "}");
+        CompilationUnit E0 = new CompilationUnit("a.E", 
+                "package a; " +
+                "public class E extends A<Number>{" +
+                "  public void m(A<A<Number[]>> n){}" +
+                "}");
+        CompilationUnit E1 = new CompilationUnit("a.E", 
+                "package a; " +
+                "public class E extends A<Number>{}");
+        IApi fromApi = convert(E0, Q, NUMBER);
+        IApi toApi = convert(E1, Q, NUMBER);
+        
+        IApiDelta apiDelta = compare(fromApi, toApi);
+        assertNull(apiDelta);
+    }
+}
diff --git a/tools/signature-tools/test/signature/comparator/PackageCompareTest.java b/tools/signature-tools/test/signature/comparator/PackageCompareTest.java
new file mode 100644
index 0000000..d522186
--- /dev/null
+++ b/tools/signature-tools/test/signature/comparator/PackageCompareTest.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.comparator;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Test;
+
+import signature.comparator.util.AbstractComparatorTest;
+import signature.compare.model.IApiDelta;
+import signature.compare.model.DeltaType;
+import signature.compare.model.IPackageDelta;
+import signature.converter.util.CompilationUnit;
+import signature.model.IApi;
+
+import java.io.IOException;
+
+public abstract class PackageCompareTest extends AbstractComparatorTest{
+
+    @Test
+    public void compareEqualPackageTest0() throws IOException{
+         CompilationUnit from = new CompilationUnit("a.A", 
+                    "package a; " +
+                    "public class A {}");
+          IApi fromApi = convert(from);
+          IApi toApi = convert(from);
+          IApiDelta delta = compare(fromApi, toApi);
+          assertNull(delta);
+    }
+
+    @Test
+    public void compareEqualPackageTest1() throws IOException{
+         CompilationUnit from0 = new CompilationUnit("a.A", 
+                    "package a; " +
+                    "public class A {}");
+         CompilationUnit from1 = new CompilationUnit("a.b.A", 
+                    "package a.b; " +
+                    "public class A {}");
+          IApi fromApi = convert(from0, from1);
+          IApi toApi = convert(from0, from1);
+          assertNull(compare(fromApi, toApi));
+    }
+
+    @Test
+    public void compareRemovedPackagePackageTest1() throws IOException{
+         CompilationUnit packageA = new CompilationUnit("a.A", 
+                    "package a; " +
+                    "public class A {}");
+         CompilationUnit packageB = new CompilationUnit("a.b.A", 
+                    "package a.b; " +
+                    "public class A {}");
+          IApi fromApi = convert(packageA, packageB);
+          IApi toApi = convert(packageA);
+          IApiDelta apiDelta = compare(fromApi, toApi);
+          assertNotNull(apiDelta);
+          
+          assertEquals(1, apiDelta.getPackageDeltas().size());
+          IPackageDelta packageDelta = apiDelta.getPackageDeltas().iterator().next();
+          assertEquals(DeltaType.REMOVED, packageDelta.getType());
+    }
+
+    @Test
+    public void compareAddedPackagePackageTest1() throws IOException{
+         CompilationUnit packageA = new CompilationUnit("a.A", 
+                    "package a; " +
+                    "public class A {}");
+         CompilationUnit packageB = new CompilationUnit("a.b.A", 
+                    "package a.b; " +
+                    "public class A {}");
+          IApi fromApi = convert(packageA);
+          IApi toApi = convert(packageA, packageB);
+          IApiDelta apiDelta = compare(fromApi, toApi);
+          assertNotNull(apiDelta);
+          
+          assertEquals(1, apiDelta.getPackageDeltas().size());
+          IPackageDelta packageDelta = apiDelta.getPackageDeltas().iterator().next();
+          assertEquals(DeltaType.ADDED, packageDelta.getType());
+    }
+}
diff --git a/tools/signature-tools/test/signature/comparator/util/AbstractComparatorTest.java b/tools/signature-tools/test/signature/comparator/util/AbstractComparatorTest.java
new file mode 100644
index 0000000..6392dc9
--- /dev/null
+++ b/tools/signature-tools/test/signature/comparator/util/AbstractComparatorTest.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.comparator.util;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Before;
+
+import signature.compare.ApiComparator;
+import signature.compare.IApiComparator;
+import signature.compare.model.IApiDelta;
+import signature.compare.model.IClassDefinitionDelta;
+import signature.compare.model.IPackageDelta;
+import signature.converter.util.AbstractConvertTest;
+import signature.model.IApi;
+public abstract class AbstractComparatorTest extends AbstractConvertTest{
+
+    private IApiComparator comparator;
+
+    @Before
+    public void setupComparator() {
+        comparator = new ApiComparator();
+    }
+    
+    public IApiDelta compare(IApi from, IApi to){
+        return comparator.compare(from, to);
+    }
+
+    public IPackageDelta getSinglePackageDelta(IApiDelta apiDelta){
+        assertNotNull(apiDelta);
+        assertEquals(1, apiDelta.getPackageDeltas().size());
+        return apiDelta.getPackageDeltas().iterator().next();
+    }
+    
+    public IClassDefinitionDelta getSingleClassDelta(IApiDelta apiDelta){
+        IPackageDelta packageDelta = getSinglePackageDelta(apiDelta);
+        assertEquals(1, packageDelta.getClassDeltas().size());
+        return packageDelta.getClassDeltas().iterator().next();
+    }
+
+}
diff --git a/tools/signature-tools/test/signature/converter/AllDexTests.java b/tools/signature-tools/test/signature/converter/AllDexTests.java
new file mode 100644
index 0000000..84d26a8
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/AllDexTests.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+import signature.converter.dex.DexTestConverter;
+import signature.converter.util.ITestSourceConverter;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+    AllDexTests.ClassTest.class,
+    AllDexTests.PackageTest.class,
+    AllDexTests.AnnotationTest.class,
+    AllDexTests.VisibilityTest.class,
+    AllDexTests.WildcardTest.class,
+    AllDexTests.EnumTest.class
+})
+public class AllDexTests {
+    private static ITestSourceConverter newConverter(){
+        return new DexTestConverter();
+    }
+    
+    public static class ClassTest extends ConvertClassTest {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+    public static class AnnotationTest extends ConvertAnnotationTest {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+    public static class PackageTest extends ConvertPackageTest {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+    public static class VisibilityTest extends ConvertVisibilityTest {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+    
+    public static class WildcardTest extends ConvertWildcardTest {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+    
+    public static class EnumTest extends ConvertEnumTest {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+    
+    public static class ParameterizedTypeTest extends ConvertParameterizedTypeTest {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+}
+
diff --git a/tools/signature-tools/test/signature/converter/AllDocletTests.java b/tools/signature-tools/test/signature/converter/AllDocletTests.java
new file mode 100644
index 0000000..610917e
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/AllDocletTests.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+import signature.converter.doclet.DocletTestConverter;
+import signature.converter.util.ITestSourceConverter;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+    AllDocletTests.ClassTest.class,
+    AllDocletTests.PackageTest.class,
+    AllDocletTests.AnnotationTest.class,
+    AllDocletTests.VisibilityTest.class,
+    AllDocletTests.WildcardTest.class,
+    AllDocletTests.EnumTest.class
+})
+public class AllDocletTests {
+    private static ITestSourceConverter newConverter(){
+        return new DocletTestConverter();
+    }
+    
+    public static class ClassTest extends ConvertClassTest {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+    public static class AnnotationTest extends ConvertAnnotationTest {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+    public static class PackageTest extends ConvertPackageTest {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+    public static class VisibilityTest extends ConvertVisibilityTest {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+    public static class WildcardTest extends ConvertWildcardTest {
+        @Override
+        public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+    public static class EnumTest extends ConvertEnumTest {
+        @Override public ITestSourceConverter createConverter() {
+            return newConverter();
+        }
+    }
+}
+
diff --git a/tools/signature-tools/test/signature/converter/ConvertAnnotationTest.java b/tools/signature-tools/test/signature/converter/ConvertAnnotationTest.java
new file mode 100644
index 0000000..f53f403
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/ConvertAnnotationTest.java
@@ -0,0 +1,761 @@
+/*

+ * Copyright (C) 2009 The Android Open Source Project

+ *

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file except in compliance with the License.

+ * You may obtain a copy of the License at

+ *

+ *      http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ */

+

+package signature.converter;

+

+import static org.junit.Assert.assertEquals;

+import static org.junit.Assert.assertSame;

+import static org.junit.Assert.assertTrue;

+

+import java.io.IOException;

+import java.util.Set;

+

+import org.junit.Test;

+

+import signature.converter.util.AbstractConvertTest;

+import signature.converter.util.CompilationUnit;

+import signature.model.IAnnotation;

+import signature.model.IAnnotationField;

+import signature.model.IApi;

+import signature.model.IArrayType;

+import signature.model.IClassDefinition;

+import signature.model.IClassReference;

+import signature.model.IEnumConstant;

+import signature.model.IPackage;

+import signature.model.IPrimitiveType;

+import signature.model.ITypeReference;

+import signature.model.Kind;

+import signature.model.impl.SigClassReference;

+import signature.model.impl.SigPrimitiveType;

+import signature.model.util.ModelUtil;

+

+public abstract class ConvertAnnotationTest extends AbstractConvertTest {

+

+    // Tests whether an annotation declaration element may be annotated with 

+    // the declared annotation.

+    @Test

+    public void convertAnnotationDefinition1() throws IOException {

+        CompilationUnit classSrc = new CompilationUnit("a.ToDo", 

+                "package a; " +

+                "public @interface ToDo {" +

+                "    @ToDo(name=\"ToDo\")" +

+                "   String name() default \"nobody\";" +

+                "}");

+        IApi api = convert(classSrc);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "ToDo");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        assertEquals(0, sigClass.getConstructors().size());

+        assertEquals(0, sigClass.getMethods().size());

+        assertEquals(0, sigClass.getFields().size());

+        Set<IAnnotationField> annotationFields = sigClass.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("name", field.getName());

+        assertEquals("String", ((IClassReference)field.getType()).getClassDefinition().getName());

+        assertEquals("nobody", field.getDefaultValue());

+        Set<IAnnotation> annotations = field.getAnnotations();

+        assertEquals(1, annotations.size());

+        IAnnotation annotation = annotations.iterator().next();

+        assertSame(sigClass, annotation.getType().getClassDefinition());

+        // TODO TEST add additional assert for annotation.getElements()

+    }

+

+    // Tests whether an annotation declaration may be annotated with 

+    // the declared annotation.

+    @Test

+    public void convertAnnotationDefinition2() throws IOException {

+        CompilationUnit classSrc = new CompilationUnit("a.ToDo", 

+                "package a; " +

+                "@ToDo\n" +

+                "public @interface ToDo {" +

+                "   String name() default \"nobody\";" +

+                "}");

+        IApi api = convert(classSrc);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "ToDo");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        assertEquals(0, sigClass.getConstructors().size());

+        assertEquals(0, sigClass.getMethods().size());

+        assertEquals(0, sigClass.getFields().size());

+        Set<IAnnotation> annotations = sigClass.getAnnotations();

+        assertEquals(1, annotations.size());

+        IAnnotation annotation = annotations.iterator().next();

+        assertSame(sigClass, ((SigClassReference)annotation.getType()).getClassDefinition());

+        assertEquals(0, annotation.getElements().size());

+    }

+

+    @Test

+    public void convertAnnotationDefinition3() throws IOException {

+        CompilationUnit classSrc = new CompilationUnit("a.ToDo", 

+                "package a; " +

+                "public @interface ToDo {" +

+                "   String name() default \"nobody\";" +

+                "   int num() default 3;" +

+                "}");

+        IApi api = convert(classSrc);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "ToDo");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        assertEquals(0, sigClass.getConstructors().size());

+        assertEquals(0, sigClass.getMethods().size());

+        assertEquals(0, sigClass.getFields().size());

+        Set<IAnnotationField> annotationFields = sigClass.getAnnotationFields();

+        assertEquals(2, annotationFields.size());

+        IAnnotationField name = ModelUtil.getAnnotationField(sigClass, "name");

+        IAnnotationField num = ModelUtil.getAnnotationField(sigClass, "num");

+        

+        assertEquals("name", name.getName());

+        assertEquals("num", num.getName());

+        

+        assertEquals("nobody", name.getDefaultValue());

+        assertEquals(3, num.getDefaultValue());

+    }

+    

+    

+    // tests whether default int value has the correct type and defaultValue

+    @Test

+    public void testAnnotationDefaultsInt1() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.A", 

+                "package a; " +

+                "public @interface A {" +

+                "    int value() default 1;" +

+                "}");

+        IApi api = convert(src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = sigClass.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField annotationField = annotationFields.iterator().next();

+        assertEquals("value", annotationField.getName());

+        assertTrue(annotationField.getType() instanceof IPrimitiveType);

+        IPrimitiveType annotationFieldType = (IPrimitiveType)annotationField.getType();

+        assertSame(SigPrimitiveType.INT_TYPE, annotationFieldType);

+        

+        assertTrue(annotationField.getDefaultValue() instanceof Integer);

+        Integer defaultValue = (Integer)annotationField.getDefaultValue();

+        assertEquals(1, defaultValue.intValue());

+    }

+

+    // tests whether default int[] value has the correct type and defaultValue

+    @Test

+    public void testAnnotationDefaultsInt2() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.A", 

+                "package a; " +

+                "public @interface A {" +

+                "    int[] value() default {};" +

+                "}");

+        IApi api = convert(src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = sigClass.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("value", field.getName());

+        

+        assertTrue(field.getType() instanceof IArrayType);

+        assertTrue(field.getDefaultValue() instanceof Object[]);

+        assertSame(field.getDefaultValue().getClass(), Object[].class);

+        Object[] defaultValue = (Object[])field.getDefaultValue();

+        assertEquals(0, defaultValue.length);

+    }

+

+    // tests whether default int[] value has the correct type and defaultValue

+    @Test

+    public void testAnnotationDefaultsInt3() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.A", 

+                "package a; " +

+                "public @interface A {" +

+                "    int[] value() default {1,2};" +

+                "}");

+        IApi api = convert(src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = sigClass.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("value", field.getName());

+        

+        assertTrue(field.getType() instanceof IArrayType);

+        assertTrue(field.getDefaultValue() instanceof Object[]);

+        assertSame(field.getDefaultValue().getClass(), Object[].class);

+        Object[] defaultValue = (Object[])field.getDefaultValue();

+        assertEquals(2, defaultValue.length);

+        

+        Object defaultValue0 = defaultValue[0];

+        assertTrue(defaultValue0 instanceof Integer);

+        Integer defaultValue0int = (Integer)defaultValue0;

+        assertEquals(1, defaultValue0int.intValue());

+

+        Object defaultValue1 = defaultValue[1];

+        assertTrue(defaultValue1 instanceof Integer);

+        Integer defaultValue1int = (Integer)defaultValue1;

+        assertEquals(2, defaultValue1int.intValue());

+    }

+

+

+    // tests whether default double value has the correct type and defaultValue

+    @Test

+    public void testAnnotationDefaultsDouble1() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.A", 

+                "package a; " +

+                "public @interface A {" +

+                "    double value() default 1;" +

+                "}");

+        IApi api = convert(src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = sigClass.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField annotationField = annotationFields.iterator().next();

+        assertEquals("value", annotationField.getName());

+        assertTrue(annotationField.getType() instanceof IPrimitiveType);

+        IPrimitiveType annotationFieldType = (IPrimitiveType)annotationField.getType();

+        assertSame(SigPrimitiveType.DOUBLE_TYPE, annotationFieldType);

+        

+        

+        assertTrue(annotationField.getDefaultValue() instanceof Double);

+        Double defaultValue = (Double)annotationField.getDefaultValue();

+        assertEquals(1.0, defaultValue.doubleValue());

+    }

+

+    // tests whether default int[] value has the correct type and defaultValue

+    @Test

+    public void testAnnotationDefaultsDouble2() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.A", 

+                "package a; " +

+                "public @interface A {" +

+                "    double[] value() default {};" +

+                "}");

+        IApi api = convert(src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = sigClass.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("value", field.getName());

+        

+        assertTrue(field.getType() instanceof IArrayType);

+        assertTrue(field.getDefaultValue() instanceof Object[]);

+        assertSame(field.getDefaultValue().getClass(), Object[].class);

+        Object[] defaultValue = (Object[])field.getDefaultValue();

+        assertEquals(0, defaultValue.length);

+    }

+

+    // tests whether default int[] value has the correct type and defaultValue

+    @Test

+    public void testAnnotationDefaultsDouble3() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.A", 

+                "package a; " +

+                "public @interface A {" +

+                "    double[] value() default {1,2.5};" +

+                "}");

+        IApi api = convert(src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = sigClass.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("value", field.getName());

+        

+        assertTrue(field.getType() instanceof IArrayType);

+        assertTrue(field.getDefaultValue() instanceof Object[]);

+        assertSame(field.getDefaultValue().getClass(), Object[].class);

+        Object[] defaultValue = (Object[])field.getDefaultValue();

+        assertEquals(2, defaultValue.length);

+        

+        Object defaultValue0 = defaultValue[0];

+        assertTrue(defaultValue0 instanceof Double);

+        Double defaultValue0int = (Double)defaultValue0;

+        assertEquals(1, defaultValue0int.doubleValue());

+

+        Object defaultValue1 = defaultValue[1];

+        assertTrue(defaultValue1 instanceof Double);

+        Double defaultValue1int = (Double)defaultValue1;

+        assertEquals(2.5, defaultValue1int.doubleValue());

+    }

+

+

+    // tests whether default enum value has the correct type

+    @Test

+    public void testAnnotationDefaultsEnum1() throws IOException {

+        CompilationUnit src1 = new CompilationUnit("a.A", 

+                "package a; " +

+                "public @interface A {" +

+                "    Kind value() default Kind.TWO;" +

+                "}");

+        CompilationUnit src2 = new CompilationUnit("a.Kind", 

+                "package a; " +

+                "public enum Kind {" +

+                "    ONE, TWO, THREE" +

+                "}");

+        IApi api = convert(src1, src2);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = sigClass.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("value", field.getName());

+        assertEquals("Kind", ((IClassReference)field.getType()).getClassDefinition().getName());

+        assertTrue(field.getDefaultValue() instanceof IEnumConstant);

+        IEnumConstant defaultValue = (IEnumConstant)field.getDefaultValue();

+//        assertEquals(1, defaultValue.getOrdinal());

+        assertEquals("TWO", defaultValue.getName());

+        

+        IClassDefinition enumClass = ModelUtil.getClass(sigPackage, "Kind");

+        assertTrue(enumClass.getKind() == Kind.ENUM);

+        IEnumConstant enumTWO = null;

+        Set<IEnumConstant> enumConstants = enumClass.getEnumConstants();

+        for(IEnumConstant c : enumConstants){

+            if("TWO".equals(c.getName())) enumTWO = c;

+        }

+        assertSame(enumTWO, defaultValue);

+    }

+

+    // tests whether default enum value has the correct type

+    @Test

+    public void testAnnotationDefaultsEnum2() throws IOException {

+        CompilationUnit src1 = new CompilationUnit("a.A", 

+                "package a; " +

+                "public @interface A {" +

+                "    Kind[] value() default {};" +

+                "}");

+        CompilationUnit src2 = new CompilationUnit("a.Kind", 

+                "package a; " +

+                "public enum Kind {" +

+                "    ONE, TWO, THREE" +

+                "}");

+        IApi api = convert(src1, src2);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = sigClass.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("value", field.getName());

+        assertTrue(field.getType() instanceof IArrayType);

+        assertTrue(field.getDefaultValue() instanceof Object[]);

+        assertSame(field.getDefaultValue().getClass(), Object[].class);

+        Object[] defaultValue = (Object[])field.getDefaultValue();

+        assertEquals(0, defaultValue.length);

+    }

+

+    // tests whether default enum value has the correct type

+    @Test

+    public void testAnnotationDefaultsEnum3() throws IOException {

+        CompilationUnit src1 = new CompilationUnit("a.A", 

+                "package a; " +

+                "public @interface A {" +

+                "    Kind[] value() default {Kind.ONE,Kind.TWO};" +

+                "}");

+        CompilationUnit src2 = new CompilationUnit("a.Kind", 

+                "package a; " +

+                "public enum Kind {" +

+                "    ONE, TWO, THREE" +

+                "}");

+        IApi api = convert(src1, src2);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        

+        Set<IAnnotationField> annotationFields = sigClass.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("value", field.getName());

+        

+        assertTrue(field.getType() instanceof IArrayType);

+        assertTrue(field.getDefaultValue() instanceof Object[]);

+        assertSame(field.getDefaultValue().getClass(), Object[].class);

+        Object[] defaultValue = (Object[])field.getDefaultValue();

+        assertEquals(2, defaultValue.length);

+        

+        IClassDefinition enumClass = ModelUtil.getClass(sigPackage, "Kind");

+        assertTrue(enumClass.getKind() == Kind.ENUM);

+        IEnumConstant enumONE = null;

+        IEnumConstant enumTWO = null;

+        Set<IEnumConstant> enumConstants = enumClass.getEnumConstants();

+        for(IEnumConstant c : enumConstants){

+            if("ONE".equals(c.getName())) enumONE = c;

+            if("TWO".equals(c.getName())) enumTWO = c;

+        }

+

+        Object defaultValue0 = defaultValue[0];

+        assertTrue(defaultValue0 instanceof IEnumConstant);

+        IEnumConstant defaultValue0enum = (IEnumConstant)defaultValue0;

+//        assertEquals(0, defaultValue0enum.getOrdinal());

+        assertEquals("ONE", defaultValue0enum.getName());

+        assertSame(enumONE, defaultValue0enum);

+

+        Object defaultValue1 = defaultValue[1];

+        assertTrue(defaultValue1 instanceof IEnumConstant);

+        IEnumConstant defaultValue1enum = (IEnumConstant)defaultValue1;

+//        assertEquals(1, defaultValue1enum.getOrdinal());

+        assertEquals("TWO", defaultValue1enum.getName());

+        assertSame(enumTWO, defaultValue1enum);

+    }

+

+    

+    @Test

+    public void testAnnotationDefaultsAnnotation1() throws IOException {

+        CompilationUnit src1 = new CompilationUnit("a.A", 

+                "package a; " +

+                "public @interface A {" +

+                "    AA aa() default @AA;" +

+                "}");

+        CompilationUnit src2 = new CompilationUnit("a.AA", 

+                "package a; " +

+                "public @interface AA {}");

+        IApi api = convert(src1, src2);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = sigClass.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("aa", field.getName());

+        IClassReference fieldType = (IClassReference)field.getType();

+        assertEquals("AA", fieldType.getClassDefinition().getName());

+        

+        IClassDefinition aaType = ModelUtil.getClass(sigPackage, "AA");

+        assertTrue(aaType.getKind() == Kind.ANNOTATION);

+        assertSame(aaType, fieldType.getClassDefinition());

+        

+        assertTrue(field.getDefaultValue() instanceof IAnnotation);

+        IAnnotation defaultValue = (IAnnotation)field.getDefaultValue();

+        assertEquals(0, defaultValue.getElements().size());

+        assertSame(aaType, defaultValue.getType().getClassDefinition());

+    }

+

+    @Test

+    public void testAnnotationDefaultsAnnotation2() throws IOException {

+        CompilationUnit src1 = new CompilationUnit("a.A", 

+                "package a; " +

+                "public @interface A {" +

+                "    AA[] aa() default {};" +

+                "}");

+        CompilationUnit src2 = new CompilationUnit("a.AA", 

+                "package a; " +

+                "public @interface AA {}");

+        

+        IApi api = convert(src1, src2);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = sigClass.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("aa", field.getName());

+        

+        assertTrue(field.getType() instanceof IArrayType);

+        assertTrue(field.getDefaultValue() instanceof Object[]);

+        assertSame(field.getDefaultValue().getClass(), Object[].class);

+        Object[] defaultValue = (Object[])field.getDefaultValue();

+        assertEquals(0, defaultValue.length);

+    }

+

+    @Test

+    public void testAnnotationDefaultsAnnotation3() throws IOException {

+        CompilationUnit src1 = new CompilationUnit("a.A", 

+                "package a; " +

+                "public @interface A {" +

+                "    AA[] aa() default {@AA,@AA};" +

+                "}");

+        CompilationUnit src2 = new CompilationUnit("a.AA", 

+                "package a; " +

+                "public @interface AA {}");

+        

+        IApi api = convert(src1, src2);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = sigClass.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("aa", field.getName());

+        

+        assertTrue(field.getType() instanceof IArrayType);

+        assertTrue(field.getDefaultValue() instanceof Object[]);

+        assertSame(field.getDefaultValue().getClass(), Object[].class);

+        Object[] defaultValue = (Object[])field.getDefaultValue();

+        assertEquals(2, defaultValue.length);

+        

+        IClassDefinition aaType = ModelUtil.getClass(sigPackage, "AA");

+        assertTrue(aaType.getKind() == Kind.ANNOTATION);

+        

+        Object defaultValue0 = defaultValue[0];

+        assertTrue(defaultValue0 instanceof IAnnotation);

+        IAnnotation defaultValue0ann = (IAnnotation)defaultValue0;

+        assertSame(aaType, defaultValue0ann.getType().getClassDefinition());

+        assertEquals(0, defaultValue0ann.getElements().size());

+        

+        Object defaultValue1 = defaultValue[1];

+        assertTrue(defaultValue1 instanceof IAnnotation);

+        IAnnotation defaultValue1ann = (IAnnotation)defaultValue1;

+        assertSame(aaType, defaultValue1ann.getType().getClassDefinition());

+        assertEquals(0, defaultValue1ann.getElements().size());  

+    }

+

+

+

+    @Test

+    public void testAnnotationDefaultsString1() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.A", 

+                "package a;" +

+                "public @interface A {" +

+                "    String str() default \"xxx\";" +

+                "}");

+        IApi api = convert(src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = sigClass.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("str", field.getName());

+        

+        assertTrue(field.getType() instanceof IClassReference);

+        assertEquals("String", ((IClassReference)field.getType()).getClassDefinition().getName());

+        

+        assertTrue(field.getDefaultValue() instanceof String);

+        String defaultValue = (String)field.getDefaultValue();

+        assertEquals("xxx", defaultValue);

+    }

+

+    @Test    

+    public void testAnnotationDefaultsString2() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.A", 

+                "package a;" +

+                "public @interface A {" +

+                "    String[] str() default {};" +

+                "}");

+        IApi api = convert(src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = sigClass.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("str", field.getName());

+        

+        assertTrue(field.getType() instanceof IArrayType);

+        Object defaultValue = field.getDefaultValue();

+        assertTrue(defaultValue instanceof Object[]);

+        assertSame(defaultValue.getClass(), Object[].class);

+        assertEquals(0, ((Object[])defaultValue).length);

+    }

+

+    @Test    

+    public void testAnnotationDefaultsString3() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.A", 

+                "package a;" +

+                "public @interface A {" +

+                "    String[] str() default {\"ONE\", \"TWO\"};" +

+                "}");

+        IApi api = convert(src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(sigClass.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = sigClass.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("str", field.getName());

+        

+        assertTrue(field.getType() instanceof IArrayType);

+        assertTrue(field.getDefaultValue() instanceof Object[]);

+        assertSame(field.getDefaultValue().getClass(), Object[].class);

+        Object[] defaultValue = (Object[])field.getDefaultValue();

+        assertEquals(2, defaultValue.length);

+        

+        Object defaultValue0 = defaultValue[0];

+        assertTrue(defaultValue0 instanceof String);

+        String defaultValue0str = (String)defaultValue0;

+        assertEquals("ONE", defaultValue0str);

+

+        Object defaultValue1 = defaultValue[1];

+        assertTrue(defaultValue1 instanceof String);

+        String defaultValue1str = (String)defaultValue1;

+        assertEquals("TWO", defaultValue1str);

+    }

+

+    @Test

+    public void testAnnotationDefaultsClass1() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.A", 

+                "package a;" +

+                "public @interface A {" +

+                "    Class cc() default A.class;" +

+                "}");

+        IApi api = convert(src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition aType = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(aType.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = aType.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("cc", field.getName());

+        

+        assertTrue(field.getType() instanceof IClassReference);

+        assertEquals("Class", ((IClassReference)field.getType()).getClassDefinition().getName());

+        Object defaultValue = field.getDefaultValue();

+        assertSame(aType, ((IClassReference)defaultValue).getClassDefinition());

+    }

+

+    @Test

+    public void testAnnotationDefaultsClass2() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.A", 

+                "package a;" +

+                "public @interface A {" +

+                "    Class cc() default void.class;" +

+                "}");

+        IApi api = convert(src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition aType = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(aType.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = aType.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("cc", field.getName());

+        

+        assertTrue(field.getType() instanceof IClassReference);

+        assertEquals("Class", ((IClassReference)field.getType()).getClassDefinition().getName());

+        

+        Object defaultValue = field.getDefaultValue();

+        assertTrue(defaultValue instanceof IPrimitiveType);

+        assertEquals("void", ((IPrimitiveType)defaultValue).getName());

+        assertSame(SigPrimitiveType.VOID_TYPE, defaultValue);

+    }

+

+    @Test

+    public void testAnnotationDefaultsClass3() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.A", 

+                "package a;" +

+                "public @interface A {" +

+                "    Class[] cc() default {};" +

+                "}");

+        IApi api = convert(src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition aType = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(aType.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = aType.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("cc", field.getName());

+        

+        assertTrue(field.getDefaultValue() instanceof Object[]);

+        assertSame(field.getDefaultValue().getClass(), Object[].class);

+        Object[] defaultValue = (Object[])field.getDefaultValue();

+        assertEquals(0, defaultValue.length);

+    }

+

+    @Test

+    public void testAnnotationDefaultsClass4() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.A", 

+                "package a;" +

+                "public @interface A {" +

+                "    Class[] cc() default {A.class, void.class};" +

+                "}");

+        IApi api = convert(src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition aType = ModelUtil.getClass(sigPackage, "A");

+        assertTrue(aType.getKind() == Kind.ANNOTATION);

+        Set<IAnnotationField> annotationFields = aType.getAnnotationFields();

+        assertEquals(1, annotationFields.size());

+        IAnnotationField field = annotationFields.iterator().next();

+        assertEquals("cc", field.getName());

+        

+        assertTrue(field.getDefaultValue() instanceof Object[]);

+        assertSame(field.getDefaultValue().getClass(), Object[].class);

+        Object[] defaultValue = (Object[])field.getDefaultValue();

+        assertEquals(2, defaultValue.length);

+        

+        Object defaultValue0 = defaultValue[0];

+        assertTrue(defaultValue0 instanceof ITypeReference);

+        ITypeReference defaultValue0type = (ITypeReference)defaultValue0;

+        assertSame(aType, ((IClassReference)defaultValue0type).getClassDefinition());

+

+        Object defaultValue1 = defaultValue[1];

+        assertTrue(defaultValue1 instanceof ITypeReference);

+        assertTrue(defaultValue1 instanceof IPrimitiveType);

+        IPrimitiveType defaultValue1type = (IPrimitiveType)defaultValue1;

+        assertEquals("void", defaultValue1type.getName());

+        assertSame(SigPrimitiveType.VOID_TYPE, defaultValue1type);

+    }

+    

+    @Test

+    public void testAnnotationRetentionRuntime() throws IOException {

+        CompilationUnit retention = new CompilationUnit("java.lang.annotation.Retention", 

+                "package java.lang.annotation; " +

+                "@Retention(RetentionPolicy.RUNTIME) " + 

+                //"@Target(ElementType.ANNOTATION_TYPE) " + 

+                "public @interface Retention { " +

+                "   RetentionPolicy value() default RetentionPolicy.CLASS; " +

+                "}");

+        CompilationUnit retentionPolicy = new CompilationUnit("java.lang.annotation.RetentionPolicy", 

+                "package java.lang.annotation; " +

+                "public enum RetentionPolicy { " + 

+                "    SOURCE," + 

+                "    CLASS," + 

+                "    RUNTIME" + 

+                "}");

+        CompilationUnit anno = new CompilationUnit("a.A", 

+                "package a;" +

+                "@java.lang.annotation.Retention(value=java.lang.annotation.RetentionPolicy.SOURCE)" +

+                "public @interface A{}");

+        CompilationUnit cla = new CompilationUnit("a.B",  

+                "package a;" +

+                "@A public class B{}");

+        IApi api = convert(anno, cla, retention, retentionPolicy);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition aType = ModelUtil.getClass(sigPackage, "B");

+        assertTrue(aType.getAnnotations().isEmpty());

+    }

+    

+    @Test

+    public void testAnnotationRetentionClass() throws IOException {

+        CompilationUnit retention = new CompilationUnit("java.lang.annotation.Retention", 

+                "package java.lang.annotation; " +

+                "@Retention(RetentionPolicy.RUNTIME) " + 

+                //"@Target(ElementType.ANNOTATION_TYPE) " + 

+                "public @interface Retention { " +

+                "   RetentionPolicy value() default RetentionPolicy.CLASS; " +

+                "}");

+        CompilationUnit retentionPolicy = new CompilationUnit("java.lang.annotation.RetentionPolicy", 

+                "package java.lang.annotation; " +

+                "public enum RetentionPolicy { " + 

+                "    SOURCE," + 

+                "    CLASS," + 

+                "    RUNTIME" + 

+                "}");

+        CompilationUnit anno = new CompilationUnit("a.A", 

+                "package a;" +

+                "@java.lang.annotation.Retention(value=java.lang.annotation.RetentionPolicy.CLASS)" +

+                "public @interface A{}");

+        CompilationUnit cla = new CompilationUnit("a.B",  

+                "package a;" +

+                "@A public class B{}");

+        IApi api = convert(anno, cla, retention, retentionPolicy);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        IClassDefinition aType = ModelUtil.getClass(sigPackage, "B");

+        assertEquals(1, aType.getAnnotations().size());

+    }

+

+}

diff --git a/tools/signature-tools/test/signature/converter/ConvertClassTest.java b/tools/signature-tools/test/signature/converter/ConvertClassTest.java
new file mode 100644
index 0000000..5bcdcb4
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/ConvertClassTest.java
@@ -0,0 +1,668 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.junit.Test;
+
+import signature.converter.util.AbstractConvertTest;
+import signature.converter.util.CompilationUnit;
+import signature.model.IAnnotation;
+import signature.model.IApi;
+import signature.model.IArrayType;
+import signature.model.IClassDefinition;
+import signature.model.IClassReference;
+import signature.model.IConstructor;
+import signature.model.IField;
+import signature.model.IMethod;
+import signature.model.IPackage;
+import signature.model.IParameter;
+import signature.model.IParameterizedType;
+import signature.model.ITypeReference;
+import signature.model.ITypeVariableDefinition;
+import signature.model.ITypeVariableReference;
+import signature.model.Kind;
+import signature.model.Modifier;
+import signature.model.impl.SigPrimitiveType;
+import signature.model.util.ModelUtil;
+
+public abstract class ConvertClassTest extends AbstractConvertTest {
+    
+    @Test
+    public void convertPackageClassTest() throws IOException {
+        IApi api = convert(new CompilationUnit("a.b.A", "package a.b; public class A{}"));
+        IPackage sigPackage = ModelUtil.getPackage(api, "a.b");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals("a.b.A", sigClass.getQualifiedName());
+        assertEquals("A", sigClass.getName());
+        assertEquals("a.b", sigPackage.getName());
+        assertEquals(1, sigPackage.getClasses().size());
+    }
+    
+    @Test
+    public void convertClassClassTest() throws IOException {
+        IApi api = convert(new CompilationUnit("a.A", "package a; public class A{}"));
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals("a.A", sigClass.getQualifiedName());
+        assertEquals("A", sigClass.getName());
+        assertEquals(Kind.CLASS, sigClass.getKind());
+        assertTrue(sigClass.getModifiers().contains(Modifier.PUBLIC));
+    }
+    
+    @Test
+    public void convertClassInterfaceTest() throws IOException {
+        IApi api = convert(new CompilationUnit("a.A", "package a; public interface A{}"));
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals("a.A", sigClass.getQualifiedName());
+        assertEquals("A", sigClass.getName());
+        assertEquals(Kind.INTERFACE, sigClass.getKind());
+        assertTrue(sigClass.getModifiers().contains(Modifier.PUBLIC));
+    }
+    
+    @Test
+    public void convertClassEnumTest() throws IOException {
+        IApi api = convert(new CompilationUnit("a.A", "package a; public enum A{}"));
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals("a.A", sigClass.getQualifiedName());
+        assertEquals("A", sigClass.getName());
+        assertEquals(Kind.ENUM, sigClass.getKind());
+        assertTrue(sigClass.getModifiers().contains(Modifier.PUBLIC));
+    }
+    
+    @Test
+    public void convertClassAnnotationTest() throws IOException {
+        IApi api = convert(new CompilationUnit("a.A", "package a; public @interface A{}"));
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals("a.A", sigClass.getQualifiedName());
+        assertEquals("A", sigClass.getName());
+        assertEquals(Kind.ANNOTATION, sigClass.getKind());
+        assertTrue(sigClass.getModifiers().contains(Modifier.PUBLIC));
+    }
+    
+    @Test
+    public void convertAnnotationTest() throws IOException {
+        IApi api = convert(new CompilationUnit("a.A", "package a; @Deprecated public class A{}"));
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals("a.A", sigClass.getQualifiedName());
+        assertEquals("A", sigClass.getName());
+        assertEquals(Kind.CLASS, sigClass.getKind());
+        assertTrue(sigClass.getModifiers().contains(Modifier.PUBLIC));
+        assertEquals(1, sigClass.getAnnotations().size());
+        IAnnotation annotation = sigClass.getAnnotations().iterator().next();        
+        assertEquals("java.lang.Deprecated", annotation.getType().getClassDefinition().getQualifiedName());
+    }
+    
+    @Test
+    public void convertAnnotationOnFieldTest() throws IOException {
+        IApi api = convert(new CompilationUnit("a.A", 
+                "package a; " +
+                "public class A{" +
+                "  @Deprecated" +
+                "  public int f;" +
+                "}"));
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals("a.A", sigClass.getQualifiedName());
+        assertEquals("A", sigClass.getName());
+        assertEquals(Kind.CLASS, sigClass.getKind());
+        assertTrue(sigClass.getModifiers().contains(Modifier.PUBLIC));
+        assertEquals(1, sigClass.getFields().size());
+        IField field = sigClass.getFields().iterator().next(); 
+        assertEquals("f", field.getName());
+        assertEquals(1, field.getAnnotations().size());
+        IAnnotation annotation = field.getAnnotations().iterator().next();        
+        assertEquals("java.lang.Deprecated", annotation.getType().getClassDefinition().getQualifiedName());
+    }
+    
+    @Test
+    public void convertGenericClass0() throws IOException {
+        IApi api = convert(new CompilationUnit("a.A", "package a; public class A<T> {}"));
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+       assertEquals("a.A", sigClass.getQualifiedName());
+        assertEquals("A", sigClass.getName());
+        assertEquals(Kind.CLASS, sigClass.getKind());
+        assertTrue(sigClass.getModifiers().contains(Modifier.PUBLIC));
+        //test type variable
+        assertEquals(1, sigClass.getTypeParameters().size());
+        ITypeVariableDefinition variable = sigClass.getTypeParameters().get(0);
+        assertEquals("T", variable.getName());
+        //test type variable bound 
+        assertEquals(1, variable.getUpperBounds().size());
+        IClassReference bound = (IClassReference) variable.getUpperBounds().get(0);
+        assertEquals("java.lang.Object", bound.getClassDefinition().getQualifiedName());
+    }
+    
+    @Test
+    public void convertGenericClass00() throws IOException {
+        IApi api = convert(new CompilationUnit("a.A", "package a; public class A<T extends Integer> {}"));
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals("a.A", sigClass.getQualifiedName());
+        assertEquals("A", sigClass.getName());
+        assertEquals(Kind.CLASS, sigClass.getKind());
+        assertTrue(sigClass.getModifiers().contains(Modifier.PUBLIC));
+        //test type variable
+        assertEquals(1, sigClass.getTypeParameters().size());
+        ITypeVariableDefinition variable = sigClass.getTypeParameters().get(0);
+        assertEquals("T", variable.getName());
+        //test type variable bound 
+        assertEquals(1, variable.getUpperBounds().size());
+        IClassReference bound = (IClassReference) variable.getUpperBounds().get(0);
+        assertEquals("java.lang.Integer", bound.getClassDefinition().getQualifiedName());
+    }
+    
+    @Test
+    public void convertGenericClass1() throws IOException {
+        IApi api = convert(new CompilationUnit("a.A", "package a; public class A<S,T> {}"));
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals("a.A", sigClass.getQualifiedName());
+        assertEquals("A", sigClass.getName());
+        assertEquals(Kind.CLASS, sigClass.getKind());
+        assertTrue(sigClass.getModifiers().contains(Modifier.PUBLIC));
+        //test type variable
+        assertEquals(2, sigClass.getTypeParameters().size());
+        ITypeVariableDefinition variableS = sigClass.getTypeParameters().get(0);
+        assertEquals("S", variableS.getName());
+        //test type variable bound 
+        assertEquals(1, variableS.getUpperBounds().size());
+        IClassReference boundS = (IClassReference) variableS.getUpperBounds().get(0);
+        assertEquals("java.lang.Object", boundS.getClassDefinition().getQualifiedName());
+        
+        ITypeVariableDefinition variableT = sigClass.getTypeParameters().get(1);
+        assertEquals("T", variableT.getName());
+        //test type variable bound 
+        assertEquals(1, variableT.getUpperBounds().size());
+        IClassReference boundT = (IClassReference) variableT.getUpperBounds().get(0);
+        assertEquals("java.lang.Object", boundT.getClassDefinition().getQualifiedName());
+    }
+    
+    @Test
+    public void convertGenericClass2() throws IOException {
+        IApi api = convert(new CompilationUnit("a.A", "package a; public class A<S,T extends S> {}"));
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals("a.A", sigClass.getQualifiedName());
+        assertEquals("A", sigClass.getName());
+        assertEquals(Kind.CLASS, sigClass.getKind());
+        assertTrue(sigClass.getModifiers().contains(Modifier.PUBLIC));
+        //test type variable
+        assertEquals(2, sigClass.getTypeParameters().size());
+        ITypeVariableDefinition variableS = sigClass.getTypeParameters().get(0);
+        assertEquals("S", variableS.getName());
+        //test type variable bound 
+        assertEquals(1, variableS.getUpperBounds().size());
+        IClassReference boundS = (IClassReference) variableS.getUpperBounds().get(0);
+        assertEquals("java.lang.Object", boundS.getClassDefinition().getQualifiedName());
+        
+        ITypeVariableDefinition variableT = sigClass.getTypeParameters().get(1);
+        assertEquals("T", variableT.getName());
+        //test type variable bound 
+        assertEquals(1, variableT.getUpperBounds().size());
+        ITypeVariableReference boundT = (ITypeVariableReference) variableT.getUpperBounds().get(0);
+        assertSame(variableS, boundT.getTypeVariableDefinition());
+    }
+    
+    @Test
+    public void convertClassImplementsInterface0() throws IOException {
+        IApi api = convert(new CompilationUnit("a.A", "package a; public class A implements Cloneable {}"));
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals("a.A", sigClass.getQualifiedName());
+        assertEquals("A", sigClass.getName());
+        assertEquals(Kind.CLASS, sigClass.getKind());
+        assertTrue(sigClass.getModifiers().contains(Modifier.PUBLIC));
+        
+        assertEquals(1, sigClass.getInterfaces().size());
+        IClassDefinition clonable = ((IClassReference) sigClass.getInterfaces().iterator().next()).getClassDefinition();
+        assertEquals("java.lang.Cloneable", clonable.getQualifiedName());
+        assertEquals(Kind.INTERFACE, clonable.getKind());
+    }
+    
+    @Test
+    public void convertClassImplementsInterface1() throws IOException {
+        CompilationUnit classSrc = new CompilationUnit("a.A", "package a; public class A implements I {}");
+        CompilationUnit interfaceSrc = new CompilationUnit("a.I", "package a; public interface I {}");
+        IApi api = convert(classSrc, interfaceSrc);
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals("a.A", sigClass.getQualifiedName());
+        assertEquals("A", sigClass.getName());
+        assertEquals(Kind.CLASS, sigClass.getKind());
+        assertTrue(sigClass.getModifiers().contains(Modifier.PUBLIC));
+        
+        IClassDefinition sigInterface = ModelUtil.getClass(sigPackage, "I");
+        assertEquals("a.I", sigInterface.getQualifiedName());
+        assertEquals("I", sigInterface.getName());
+        assertEquals(Kind.INTERFACE, sigInterface.getKind());
+        assertTrue(sigInterface.getModifiers().contains(Modifier.PUBLIC));
+        
+        assertEquals(1, sigClass.getInterfaces().size());
+        IClassReference interfaze = (IClassReference) sigClass.getInterfaces().iterator().next();
+        assertEquals(Kind.INTERFACE, interfaze.getClassDefinition().getKind());
+        assertSame(sigInterface, interfaze.getClassDefinition());
+    }
+    
+    @Test
+    public void convertClassImplementsGenericInterface0() throws IOException {
+        CompilationUnit classSrc = new CompilationUnit("a.A", "package a; public class A implements I<String> {}");
+        CompilationUnit interfaceSrc = new CompilationUnit("a.I", "package a; public interface I<T> {}");
+        IApi api = convert(classSrc, interfaceSrc);
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals("a.A", sigClass.getQualifiedName());
+        assertEquals("A", sigClass.getName());
+        assertEquals(Kind.CLASS, sigClass.getKind());
+        assertTrue(sigClass.getModifiers().contains(Modifier.PUBLIC));
+        
+        IClassDefinition sigInterface = ModelUtil.getClass(sigPackage, "I");
+        assertEquals("a.I", sigInterface.getQualifiedName());
+        assertEquals("I", sigInterface.getName());
+        assertEquals(Kind.INTERFACE, sigInterface.getKind());
+        assertTrue(sigInterface.getModifiers().contains(Modifier.PUBLIC));
+        
+        assertEquals(1, sigClass.getInterfaces().size());
+        IParameterizedType interfaze = (IParameterizedType) sigClass.getInterfaces().iterator().next();
+        //compare raw type "I"
+        assertSame(sigInterface, interfaze.getRawType().getClassDefinition());
+        //test type argument string
+        assertEquals(1,  interfaze.getTypeArguments().size());
+        IClassReference string = (IClassReference) interfaze.getTypeArguments().get(0);
+        assertEquals("java.lang.String", string.getClassDefinition().getQualifiedName());
+    }
+    
+    @Test
+    public void convertGenericClassImplementsGenericInterface() throws IOException {
+        CompilationUnit classSrc = new CompilationUnit("a.A", "package a; public class A<T> implements I<T> {}");
+        CompilationUnit interfaceSrc = new CompilationUnit("a.I", "package a; public interface I<T> {}");
+        IApi api = convert(classSrc, interfaceSrc);
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals("a.A", sigClass.getQualifiedName());
+        assertEquals("A", sigClass.getName());
+        assertEquals(Kind.CLASS, sigClass.getKind());
+        assertTrue(sigClass.getModifiers().contains(Modifier.PUBLIC));
+        
+        //get type variable from class
+        assertEquals(1, sigClass.getTypeParameters().size());
+        ITypeVariableDefinition classTypeVar = sigClass.getTypeParameters().get(0);
+        assertEquals("T", classTypeVar.getName());
+        assertSame(sigClass, classTypeVar.getGenericDeclaration());
+        
+        //inspect interface
+        IClassDefinition sigInterface = ModelUtil.getClass(sigPackage, "I");
+        assertEquals("a.I", sigInterface.getQualifiedName());
+        assertEquals("I", sigInterface.getName());
+        assertEquals(Kind.INTERFACE, sigInterface.getKind());
+        assertTrue(sigInterface.getModifiers().contains(Modifier.PUBLIC));
+        
+        //get type variable from interface
+        assertEquals(1, sigInterface.getTypeParameters().size());
+        ITypeVariableDefinition interfaceTypeVar = sigInterface.getTypeParameters().get(0);
+        
+        //get implemented interface from A
+        assertEquals(1, sigClass.getInterfaces().size());
+        IParameterizedType interfaze = (IParameterizedType) sigClass.getInterfaces().iterator().next();
+        
+        //compare raw type "I"
+        assertSame(sigInterface, interfaze.getRawType().getClassDefinition());
+        
+        //test if type variable of A is type argument of I
+        assertEquals(1,  interfaze.getTypeArguments().size());
+        ITypeVariableReference argument = (ITypeVariableReference) interfaze.getTypeArguments().get(0);
+        assertSame(sigClass, argument.getTypeVariableDefinition().getGenericDeclaration());
+        assertEquals(classTypeVar, argument.getTypeVariableDefinition());
+        
+        //test that the two type parameters are not equal
+        assertNotSame(classTypeVar, interfaceTypeVar);
+        assertEquals(classTypeVar.getName(), interfaceTypeVar.getName());
+        assertNotSame(classTypeVar.getGenericDeclaration(), interfaceTypeVar.getGenericDeclaration());
+    }
+    
+    @Test
+    public void convertConstructor0() throws IOException {
+        CompilationUnit classSrc = new CompilationUnit("a.A", "package a; public class A { public A(){} }");
+        IApi api = convert(classSrc);
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals(1, sigClass.getConstructors().size());
+        IConstructor constructor = sigClass.getConstructors().iterator().next();
+        assertTrue(constructor.getModifiers().contains(Modifier.PUBLIC));
+    }
+    
+    @Test
+    public void convertConstructor1a() throws IOException {
+        CompilationUnit classSrc = new CompilationUnit("a.A", "package a; public class A { public class B{ } }");
+        IApi api = convert(classSrc);
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A.B");
+        assertEquals(1, sigClass.getConstructors().size());
+        IConstructor constructor = sigClass.getConstructors().iterator().next();
+        assertTrue(constructor.getModifiers().contains(Modifier.PUBLIC));
+    }
+    
+    @Test
+    public void convertConstructor1b() throws IOException {
+        CompilationUnit classSrc = new CompilationUnit("a.A", "package a; public class A { protected class B{ } }");
+        IApi api = convert(classSrc);
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A.B");
+        assertEquals(1, sigClass.getConstructors().size());
+        IConstructor constructor = sigClass.getConstructors().iterator().next();
+        assertTrue(constructor.getModifiers().contains(Modifier.PROTECTED));
+    }
+    
+    @Test
+    public void convertConstructor2() throws IOException {
+        CompilationUnit classSrc = new CompilationUnit("a.A", "package a; public class A {}");
+        IApi api = convert(classSrc);
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals(1, sigClass.getConstructors().size());
+    }
+    
+    @Test
+    public void convertConstructor3() throws IOException {
+        CompilationUnit classSrc = new CompilationUnit("a.A", "package a; public class A { public class B { public B(){}} }");
+        IApi api = convert(classSrc);
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A.B");
+        assertEquals(1, sigClass.getConstructors().size());
+    }
+    
+    @Test
+    public void convertConstructorWithException() throws IOException {
+        CompilationUnit classSrc = new CompilationUnit("a.A", "package a; public class A { public A() throws NullPointerException{} }");
+        IApi api = convert(classSrc);
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals(1, sigClass.getConstructors().size());
+        IConstructor constructor = sigClass.getConstructors().iterator().next();
+        assertTrue(constructor.getModifiers().contains(Modifier.PUBLIC));
+        assertEquals(1, constructor.getExceptions().size());
+        IClassReference exception = (IClassReference) constructor.getExceptions().iterator().next();
+        assertEquals("java.lang.NullPointerException", exception.getClassDefinition().getQualifiedName());
+    }
+    
+    @Test
+    public void convertConstructorWithParameter() throws IOException {
+        CompilationUnit classSrc = new CompilationUnit("a.A", "package a; public class A { public A(String param){} }");
+        IApi api = convert(classSrc);
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals(1, sigClass.getConstructors().size());
+        IConstructor constructor = sigClass.getConstructors().iterator().next();
+        assertTrue(constructor.getModifiers().contains(Modifier.PUBLIC));
+        assertEquals(1, constructor.getParameters().size());
+        IParameter param = constructor.getParameters().get(0);
+        assertEquals("java.lang.String", ((IClassReference)param.getType()).getClassDefinition().getQualifiedName());
+    }
+    
+    @Test
+    public void convertConstructorWithGenericParameter() throws IOException {
+        CompilationUnit classSrc = new CompilationUnit("a.A", "package a; public class A<T> { public A(T param){} }");
+        IApi api = convert(classSrc);
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals(1, sigClass.getConstructors().size());
+        IConstructor constructor = sigClass.getConstructors().iterator().next();
+        assertTrue(constructor.getModifiers().contains(Modifier.PUBLIC));
+        assertEquals(1, constructor.getParameters().size());
+        IParameter param = constructor.getParameters().get(0);
+        ITypeVariableDefinition paramType = ((ITypeVariableReference)param.getType()).getTypeVariableDefinition();
+        assertEquals("T", paramType.getName());
+        assertSame(sigClass, paramType.getGenericDeclaration());
+    }
+    
+    @Test
+    public void convertVoidMethod() throws IOException {
+        CompilationUnit classSrc = new CompilationUnit("a.A", "package a; public class A { public void m(){} }");
+        IApi api = convert(classSrc);
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals(1, sigClass.getMethods().size());
+        IMethod method = sigClass.getMethods().iterator().next();
+        assertTrue(method.getModifiers().contains(Modifier.PUBLIC));
+        assertEquals("m", method.getName());
+        assertSame(SigPrimitiveType.VOID_TYPE, method.getReturnType());
+    }
+    
+    @Test
+    public void convertArrayMethod() throws IOException {
+        CompilationUnit classSrc = new CompilationUnit("a.A", "package a; public class A { public String[] m(){ return null; } }");
+        IApi api = convert(classSrc);
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        assertEquals(1, sigClass.getMethods().size());
+        IMethod method = sigClass.getMethods().iterator().next();
+        assertTrue(method.getModifiers().contains(Modifier.PUBLIC));
+        assertEquals("m", method.getName());
+        IArrayType arrayType = (IArrayType) method.getReturnType();
+        IClassDefinition clazz = ((IClassReference) arrayType.getComponentType()).getClassDefinition();
+        assertEquals("java.lang.String", clazz.getQualifiedName());
+    }
+    
+     @Test
+    public void testParameterConformance1() throws IOException {
+           IApi api = convert(new CompilationUnit("test.A", 
+                "package test; " +
+                   "import java.util.List;" +
+                   "public class A<T> {" +
+                   "  public String[] a;" +
+                   "  public String[] b;" +
+                   "  public List<String> c;" +
+                   "  public List<String> d;" +
+                   "  public List<T> e;" +
+                   "  public List<T> f;" +
+                   "}"
+           ));
+        IPackage p = ModelUtil.getPackage(api, "test");
+        assertEquals("test", p.getName());
+        IClassDefinition c = ModelUtil.getClass(p, "A");
+        assertEquals("A", c.getName());
+        assertEquals("test.A", c.getQualifiedName());
+        
+        Map<String, IField> fields = new HashMap<String, IField>();
+        for(IField f : c.getFields()){
+            fields.put(f.getName(), f);
+        }
+        assertSame(((IClassReference)((IArrayType)fields.get("a").getType()).getComponentType()).getClassDefinition(), ((IClassReference)((IArrayType)fields.get("b").getType()).getComponentType()).getClassDefinition());
+        assertSame(((IParameterizedType)fields.get("c").getType()).getRawType().getClassDefinition(), ((IParameterizedType)fields.get("d").getType()).getRawType().getClassDefinition());
+        assertSame(((IParameterizedType)fields.get("e").getType()).getRawType().getClassDefinition(), ((IParameterizedType)fields.get("f").getType()).getRawType().getClassDefinition());
+        
+        ITypeReference type = fields.get("f").getType();
+        assertTrue(type instanceof IParameterizedType);
+        ITypeReference typeArgument = ((IParameterizedType)type).getTypeArguments().get(0);
+        ITypeVariableDefinition typeParameter = c.getTypeParameters().get(0);
+        assertSame(((ITypeVariableReference)typeArgument).getTypeVariableDefinition(), typeParameter);
+    }
+
+    @Test
+    public void testParameterConformance2() throws IOException {
+           IApi api = convert(new CompilationUnit("test.A", 
+                "package test; " +
+                   "public class A<T> {" +
+                   "  public <T> T foo(T t){return null;}" +
+                   "}"
+           ));
+        IPackage p = ModelUtil.getPackage(api, "test");
+        assertEquals("test", p.getName());
+
+        IPackage sigPackage = ModelUtil.getPackage(api, "test");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        ITypeVariableDefinition t = sigClass.getTypeParameters().get(0);
+        
+        IMethod sigMethod = sigClass.getMethods().iterator().next();
+        ITypeVariableDefinition t1 = sigMethod.getTypeParameters().get(0);
+        IParameter param = sigMethod.getParameters().get(0);
+        ITypeReference t2 = param.getType();
+        ITypeReference t3 = sigMethod.getReturnType();
+
+        assertSame(t1, ((ITypeVariableReference)t2).getTypeVariableDefinition());
+        assertSame(((ITypeVariableReference)t2).getTypeVariableDefinition(), ((ITypeVariableReference)t3).getTypeVariableDefinition());
+        
+        assertNotSame(t, t1);
+    }
+    
+    @Test
+    public void testInnerReferenceToOuterTypeVariable() throws IOException {
+           IApi api = convert(new CompilationUnit("test.A", 
+                "package test; " +
+                "public class A<T> {" +
+                "  public class B {" +
+                "    public T f;" +
+                "  }  " +
+                "}"
+        ));
+        IPackage p = ModelUtil.getPackage(api, "test");
+        assertEquals("test", p.getName());
+
+        IPackage sigPackage = ModelUtil.getPackage(api, "test");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        ITypeVariableDefinition t = sigClass.getTypeParameters().get(0);
+        
+        IClassDefinition innerClass = ModelUtil.getClass(sigPackage, "A.B");
+        IField field = ModelUtil.getField(innerClass, "f");
+        
+        assertSame(t, ((ITypeVariableReference)field.getType()).getTypeVariableDefinition());
+    }
+    
+    
+    @Test
+    public void convertTypeVariableMultipleUpperBound() throws IOException {
+        String source = 
+            "package a; " +
+            "public class A<T extends Comparable<T> & java.io.Serializable> {}";
+            IApi api = convert(new CompilationUnit("a.A", source));
+            IPackage sigPackage = ModelUtil.getPackage(api, "a");
+            IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+            
+            List<ITypeVariableDefinition> typeParameters = sigClass.getTypeParameters();
+            assertEquals(1, typeParameters.size());
+            
+            ITypeVariableDefinition typeVariable = typeParameters.get(0);
+            List<ITypeReference> upperBounds = typeVariable.getUpperBounds();
+            assertEquals(2, upperBounds.size());
+            ITypeReference firstBound = upperBounds.get(0);
+            ITypeReference secondBound = upperBounds.get(1);
+            
+            assertTrue(firstBound instanceof IParameterizedType);
+            
+            IParameterizedType parametrizedType = (IParameterizedType)firstBound;
+            
+            IClassReference rawType = parametrizedType.getRawType();
+            assertEquals("Comparable", rawType.getClassDefinition().getName());
+            assertEquals(1, parametrizedType.getTypeArguments().size());
+            ITypeVariableReference variable = (ITypeVariableReference) parametrizedType.getTypeArguments().get(0);
+            assertSame(typeVariable, variable.getTypeVariableDefinition());
+            
+            assertTrue(secondBound instanceof IClassReference);
+            IClassReference secondBoundClass = (IClassReference) secondBound;
+            assertEquals("Serializable", secondBoundClass.getClassDefinition().getName());
+    }
+    
+    @Test
+    public void convertPrivateStaticInnerClass0() throws IOException {
+        String source = 
+            "package a; " +
+            "public class A { " +
+            "  private static class I{}" +
+            "  private transient Object i = new I(); " +
+            "}";
+            IApi api = convert(Visibility.PRIVATE, new CompilationUnit("a.A", source));
+            IPackage sigPackage = ModelUtil.getPackage(api, "a");
+            IClassDefinition innerClass = ModelUtil.getClass(sigPackage, "A.I");
+            assertEquals("A.I", innerClass.getName());
+            Set<IConstructor> constructors = innerClass.getConstructors();
+            assertEquals(1, constructors.size());
+    }
+    
+    @Test
+    public void convertPrivateStaticInnerClass1() throws IOException {
+        String source = 
+            "package a; " +
+            "public class A {" + 
+            "  private static class B {" + 
+            "    public static class C {}" + 
+            "  }" + 
+            "}";
+            IApi api = convert(new CompilationUnit("a.A", source));
+            IPackage sigPackage = ModelUtil.getPackage(api, "a");
+            assertEquals(1, sigPackage.getClasses().size());
+    }
+    
+    /**
+     * Tests whether the first constructor argument is removed.
+     */
+    @Test
+    public void convertNonStaticInnerClassConstructor0() throws IOException {
+        String source = 
+            "package a; " +
+            "public class A {" + 
+            "  public class B {" + 
+            "      public B(){}" +
+            "  }" + 
+            "}";
+            IApi api = convert(new CompilationUnit("a.A", source));
+            IPackage sigPackage = ModelUtil.getPackage(api, "a");
+            IClassDefinition innerClass = ModelUtil.getClass(sigPackage, "A.B");
+            assertEquals(1, innerClass.getConstructors().size());
+            Set<IConstructor> constructors = innerClass.getConstructors();
+            IConstructor first = constructors.iterator().next();
+            //implicit A.this reference must be removed
+            assertEquals(0, first.getParameters().size());
+    }
+    
+    /**
+     * Tests whether the first constructor argument is removed.
+     */
+    @Test
+    public void convertNonStaticInnerClassConstructor1() throws IOException {
+        String source = 
+            "package a; " +
+            "public class A {" + 
+            "  public class B {}" + 
+            "}";
+            IApi api = convert(new CompilationUnit("a.A", source));
+            IPackage sigPackage = ModelUtil.getPackage(api, "a");
+            IClassDefinition innerClass = ModelUtil.getClass(sigPackage, "A.B");
+            assertEquals(1, innerClass.getConstructors().size());
+            Set<IConstructor> constructors = innerClass.getConstructors();
+            IConstructor first = constructors.iterator().next();
+            //implicit A.this reference must be removed
+            assertEquals(0, first.getParameters().size());
+    }
+    
+    
+   
+}
diff --git a/tools/signature-tools/test/signature/converter/ConvertEnumTest.java b/tools/signature-tools/test/signature/converter/ConvertEnumTest.java
new file mode 100644
index 0000000..98ebd61
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/ConvertEnumTest.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.junit.Test;
+
+import signature.converter.util.AbstractConvertTest;
+import signature.converter.util.CompilationUnit;
+import signature.model.IApi;
+import signature.model.IArrayType;
+import signature.model.IClassDefinition;
+import signature.model.IClassReference;
+import signature.model.IConstructor;
+import signature.model.IEnumConstant;
+import signature.model.IField;
+import signature.model.IMethod;
+import signature.model.IPackage;
+import signature.model.IParameter;
+import signature.model.Kind;
+import signature.model.Modifier;
+import signature.model.util.ModelUtil;
+
+public abstract class ConvertEnumTest extends AbstractConvertTest {
+    
+    @Test
+    public void testEnum1() throws IOException {
+        IApi api = convert(new CompilationUnit("test.A", 
+                "package test; " +
+                "public enum A {" +
+                "  ONE, TWO, THREE" +
+                "}"));
+        IPackage sigPackage = ModelUtil.getPackage(api, "test");
+        IClassDefinition c = ModelUtil.getClass(sigPackage, "A");
+        assertNotNull(c);
+        assertTrue(c.getKind() == Kind.ENUM);
+
+        Set<IEnumConstant> constants = c.getEnumConstants();
+        assertEquals(3, constants.size());
+        
+        Set<String> constantNames = new HashSet<String>();
+        for (IEnumConstant constant : constants) {
+            constantNames.add(constant.getName());
+        }
+        
+        assertTrue(constantNames.contains("ONE"));
+        assertTrue(constantNames.contains("TWO"));
+        assertTrue(constantNames.contains("THREE"));
+        
+//        IEnumConstant[] enumConstants = new IEnumConstant[3];
+//        for (IEnumConstant enumConstant : constants) {
+//            enumConstants[enumConstant.getOrdinal()] = enumConstant;
+//            assertEquals(0, enumConstant.getAnnotations().size());
+//            assertSame(c, enumConstant.getType());
+//        }
+//        
+//        assertEquals("ONE", enumConstants[0].getName());
+//        assertEquals("TWO", enumConstants[1].getName());
+//        assertEquals("THREE", enumConstants[2].getName());
+    }
+
+    @Test
+    public void testEnum2() throws IOException {
+        IApi api = convert(new CompilationUnit("test.A", 
+                "package test; " +
+                "public enum A {" +
+                "  ONE, TWO, THREE;" +
+                "  public static A FOUR = ONE;" +
+                "}"));
+        IPackage sigPackage = ModelUtil.getPackage(api, "test");
+        IClassDefinition c = ModelUtil.getClass(sigPackage, "A");
+        assertNotNull(c);
+        assertTrue(c.getKind() == Kind.ENUM);
+
+        Set<IEnumConstant> constants = c.getEnumConstants();
+        assertEquals(3, constants.size());
+        
+        Set<IField> fields = c.getFields();
+        assertEquals(1, fields.size());
+        IField field = c.getFields().iterator().next();
+        
+        assertEquals("FOUR", field.getName());
+        assertSame(c, ((IClassReference)field.getType()).getClassDefinition());
+    }
+
+
+   @Test
+    public void testEnum3() throws IOException {
+        IApi api = convert(new CompilationUnit("test.A", 
+                "package test; " +
+                "public enum A {" +
+                "  ONE(1), TWO(2), THREE(3);" +
+                "  A(int value){}" +
+                "}"));
+        IPackage sigPackage = ModelUtil.getPackage(api, "test");
+        IClassDefinition c = ModelUtil.getClass(sigPackage, "A");
+        assertNotNull(c);
+        assertTrue(c.getKind() == Kind.ENUM);
+
+        Set<IEnumConstant> constants = c.getEnumConstants();
+        assertEquals(3, constants.size());
+        
+        Set<IConstructor> ctors = c.getConstructors();
+        assertEquals(0, ctors.size());
+
+        Set<IMethod> methods = c.getMethods();
+        assertEquals(2, methods.size());
+        Map<String, IMethod> map = new HashMap<String, IMethod>();
+        for(IMethod m : methods){
+            map.put(m.getName(), m);
+        }
+        
+        IMethod values = map.get("values");
+        assertNotNull(values);
+        assertEquals(0, values.getParameters().size());
+        assertTrue(values.getReturnType() instanceof IArrayType);
+        assertSame(c, ((IClassReference)((IArrayType)values.getReturnType()).getComponentType()).getClassDefinition());
+        assertTrue(c.getModifiers().contains(Modifier.PUBLIC));
+        assertFalse(c.getModifiers().contains(Modifier.STATIC));
+        assertTrue(c.getModifiers().contains(Modifier.FINAL));
+        
+        IMethod valueOf = map.get("valueOf");
+        assertNotNull(valueOf);
+        assertEquals(1, valueOf.getParameters().size());
+        IParameter param = valueOf.getParameters().iterator().next();
+        assertEquals("java.lang.String", ((IClassReference)param.getType()).getClassDefinition().getQualifiedName());
+        assertSame(c, ((IClassReference)valueOf.getReturnType()).getClassDefinition());
+    }
+   
+   @Test
+   public void testEnum4() throws IOException {
+       IApi api = convert(new CompilationUnit("test.A", 
+               "package test; " +
+               "public enum A {" +
+               "  ONE { void m(){} }, TWO{ void m(){} };" +
+               "  abstract void m();" +
+               "}"));
+       IPackage sigPackage = ModelUtil.getPackage(api, "test");
+       IClassDefinition c = ModelUtil.getClass(sigPackage, "A");
+       assertNotNull(c);
+       assertTrue(c.getKind() == Kind.ENUM);
+
+       Set<IEnumConstant> constants = c.getEnumConstants();
+       assertEquals(2, constants.size());
+       
+       Set<IConstructor> ctors = c.getConstructors();
+       assertEquals(0, ctors.size());
+
+       Set<IMethod> methods = c.getMethods();
+       assertEquals(2, methods.size());
+       Map<String, IMethod> map = new HashMap<String, IMethod>();
+       for(IMethod m : methods){
+           map.put(m.getName(), m);
+       }
+       
+       IMethod values = map.get("values");
+       assertNotNull(values);
+       assertEquals(0, values.getParameters().size());
+       assertTrue(values.getReturnType() instanceof IArrayType);
+       assertSame(c, ((IClassReference)((IArrayType)values.getReturnType()).getComponentType()).getClassDefinition());
+       assertTrue(c.getModifiers().contains(Modifier.PUBLIC));
+       assertFalse(c.getModifiers().contains(Modifier.STATIC));
+       assertFalse(c.getModifiers().contains(Modifier.FINAL));
+   }
+
+}
diff --git a/tools/signature-tools/test/signature/converter/ConvertPackageTest.java b/tools/signature-tools/test/signature/converter/ConvertPackageTest.java
new file mode 100644
index 0000000..edd2a41
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/ConvertPackageTest.java
@@ -0,0 +1,69 @@
+/*

+ * Copyright (C) 2009 The Android Open Source Project

+ *

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file except in compliance with the License.

+ * You may obtain a copy of the License at

+ *

+ *      http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ */

+

+package signature.converter;

+

+import static org.junit.Assert.assertEquals;

+

+import java.io.IOException;

+

+import org.junit.Test;

+

+import signature.converter.util.AbstractConvertTest;

+import signature.converter.util.CompilationUnit;

+import signature.model.IAnnotation;

+import signature.model.IApi;

+import signature.model.IPackage;

+import signature.model.util.ModelUtil;

+

+public abstract class ConvertPackageTest extends AbstractConvertTest {

+

+    // tests whether package annotations are returned

+    @Test

+    public void testPackageAnnotation() throws IOException {

+        CompilationUnit packageSrc = new CompilationUnit("a.package-info", "@Deprecated package a;");

+        CompilationUnit classSrc = new CompilationUnit("a.X", "package a; public class X{}");

+        IApi api = convert(classSrc, packageSrc);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        assertEquals(1, sigPackage.getAnnotations().size());

+        IAnnotation annotation = sigPackage.getAnnotations().iterator().next();        

+        assertEquals("java.lang.Deprecated", annotation.getType().getClassDefinition().getQualifiedName());

+    }

+        

+    // tests that package-info is not returned as class 

+    @Test

+    public void testNumberOfClasses1() throws IOException {

+        CompilationUnit packageSrc = new CompilationUnit("a.package-info", "@Deprecated package a;");

+        CompilationUnit classSrc = new CompilationUnit("a.X", "package a; public class X{}");

+        IApi api = convert(classSrc, packageSrc);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        assertEquals(1, sigPackage.getClasses().size());

+    }

+        

+    // tests that nested classes are returned as package classes 

+    @Test

+    public void testNumberOfClasses2() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.X",

+                "package a;" +

+                "public class X{" +

+                "   public static class Y{}" +

+                "}");

+        IApi api = convert(src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        assertEquals(2, sigPackage.getClasses().size());

+    }

+        

+}
\ No newline at end of file
diff --git a/tools/signature-tools/test/signature/converter/ConvertParameterizedTypeTest.java b/tools/signature-tools/test/signature/converter/ConvertParameterizedTypeTest.java
new file mode 100644
index 0000000..653d42f
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/ConvertParameterizedTypeTest.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter;
+
+import static org.junit.Assert.*;
+
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.lang.reflect.ParameterizedType;
+import org.junit.Test;
+
+import signature.converter.util.AbstractConvertTest;
+import signature.converter.util.CompilationUnit;
+import signature.model.IApi;
+import signature.model.IClassDefinition;
+import signature.model.IField;
+import signature.model.IPackage;
+import signature.model.IParameterizedType;
+import signature.model.ITypeReference;
+import signature.model.util.ModelUtil;
+
+public abstract class ConvertParameterizedTypeTest extends AbstractConvertTest {
+    /**
+     * [L, a, /, A, $, B, <, L, j, a, v, a, /, l, a, n, g, /, I, n, t, e, g, e, r, ;, >, ;]
+     * '$' - separated
+     * @throws IOException
+     */
+    @Test
+    public void convertParameterizedType() throws IOException {
+        String source = 
+        "package a; " +
+        "public class A{" +
+        "  public class B<T> {} " +
+        "  public A.B<Integer> f; "+
+        "}";
+        IApi api = convert(new CompilationUnit("a.A", source));
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        IField field = ModelUtil.getField(sigClass, "f");
+        
+        ITypeReference type = field.getType();
+        assertTrue(type instanceof IParameterizedType);
+        
+        IParameterizedType parametrizedType = (IParameterizedType)type;
+        ITypeReference ownerType = parametrizedType.getOwnerType();
+        assertNotNull(ownerType);
+    }
+    
+    @Test
+    public void convertWildcardLowerBound() throws IOException {
+        String clazz = 
+        "package a; " +
+        "public final class A<T> implements I<T>{ " +
+        " abstract class Super{} " +
+        " final class Sub extends Super implements I<T>{} " +
+        "}";
+        String interfaze = 
+            "package a; " +
+            "public interface I <T>{}";
+        IApi api = convert(Visibility.PRIVATE, new CompilationUnit("a.A", clazz),new CompilationUnit("a.I", interfaze));
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A.Sub");
+        System.out.println(sigClass);
+    }
+    
+    public class A{
+      public class B<T> {}
+      public A.B<Integer> f;
+    }
+   
+    @Test
+    public void reflectionTest0() throws SecurityException, NoSuchFieldException{
+        Field field = A.class.getDeclaredField("f");
+        ParameterizedType paramType = (ParameterizedType)field.getGenericType();
+        assertNotNull(paramType.getOwnerType());
+    }
+    
+    public static class C<T>{}
+    
+    ConvertParameterizedTypeTest.C<String> f;
+     
+      @Test
+      public void reflectionTest1() throws SecurityException, NoSuchFieldException{
+          Field field = ConvertParameterizedTypeTest.class.getDeclaredField("f");
+          ParameterizedType paramType = (ParameterizedType)field.getGenericType();
+          assertNotNull(paramType.getOwnerType());
+      }
+      
+      public static class E<T>{
+          static class F<Q>{}
+          E.F<String> f;
+      }
+      
+       
+     @Test
+    public void reflectionTest2() throws SecurityException, NoSuchFieldException {
+        Field field = E.class.getDeclaredField("f");
+        ParameterizedType paramType = (ParameterizedType) field.getGenericType();
+        assertNotNull(paramType.getOwnerType());
+    }
+}
diff --git a/tools/signature-tools/test/signature/converter/ConvertVisibilityTest.java b/tools/signature-tools/test/signature/converter/ConvertVisibilityTest.java
new file mode 100644
index 0000000..09fc32f
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/ConvertVisibilityTest.java
@@ -0,0 +1,173 @@
+/*

+ * Copyright (C) 2009 The Android Open Source Project

+ *

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file except in compliance with the License.

+ * You may obtain a copy of the License at

+ *

+ *      http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ */

+

+package signature.converter;

+

+import static org.junit.Assert.assertEquals;

+import static org.junit.Assert.assertNotNull;

+

+import java.io.IOException;

+import java.util.Set;

+

+import org.junit.Test;

+

+import signature.converter.Visibility;

+import signature.converter.util.AbstractConvertTest;

+import signature.converter.util.CompilationUnit;

+import signature.model.IApi;

+import signature.model.IClassDefinition;

+import signature.model.IMethod;

+import signature.model.IPackage;

+import signature.model.util.ModelUtil;

+

+public abstract class ConvertVisibilityTest extends AbstractConvertTest {

+

+    @Test

+    public void testVisibilityMethods1() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.A", 

+                "package a;" +

+                "public class A{" +

+                "   public void foo1(){}" +

+                "   protected void foo2(){}" +

+                "   void foo3(){}" +

+                "   private void foo4(){}" +

+                "}");

+

+        IApi api = convert(Visibility.PUBLIC, src);

+        IPackage p = ModelUtil.getPackage(api, "a");

+        IClassDefinition c = ModelUtil.getClass(p, "A");

+        Set<IMethod> methods = c.getMethods();

+        assertEquals(1, methods.size());

+    }

+    

+    @Test

+    public void testVisibilityMethods2() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.A", 

+                "package a;" +

+                "public class A{" +

+                "   public void foo1(){}" +

+                "   protected void foo2(){}" +

+                "   void foo3(){}" +

+                "   private void foo4(){}" +

+                "}");

+

+        IApi api = convert(Visibility.PROTECTED, src);

+        IPackage p = ModelUtil.getPackage(api, "a");

+        IClassDefinition c = ModelUtil.getClass(p, "A");

+        Set<IMethod> methods = c.getMethods();

+        assertEquals(2, methods.size());

+    }

+    

+    @Test

+    public void testVisibilityMethods3() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.A", 

+                "package a;" +

+                "public class A{" +

+                "   public void foo1(){}" +

+                "   protected void foo2(){}" +

+                "   void foo3(){}" +

+                "   private void foo4(){}" +

+                "}");

+

+        IApi api = convert(Visibility.PACKAGE, src);

+        IPackage p = ModelUtil.getPackage(api, "a");

+        IClassDefinition c = ModelUtil.getClass(p, "A");

+        Set<IMethod> methods = c.getMethods();

+        assertEquals(3, methods.size());

+    }

+    

+    @Test

+    public void testVisibilityMethods4() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.A", 

+                "package a;" +

+                "public class A{" +

+                "   public void foo1(){}" +

+                "   protected void foo2(){}" +

+                "   void foo3(){}" +

+                "   private void foo4(){}" +

+                "}");

+

+        IApi api = convert(Visibility.PRIVATE, src);

+        IPackage p = ModelUtil.getPackage(api, "a");

+        IClassDefinition c = ModelUtil.getClass(p, "A");

+        Set<IMethod> methods = c.getMethods();

+        assertEquals(4, methods.size());

+    }

+    

+    @Test

+    public void testVisibility1() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.X1", 

+                "package a;" +

+                "public class X1{" +

+                "   static class X2{}" +

+                "   protected static class X3{}" +

+                "   private static class X4{}" +

+                "}");

+

+        IApi api = convert(Visibility.PUBLIC, src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        assertEquals(1, sigPackage.getClasses().size());

+    }

+

+    @Test

+    public void testVisibility2() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.X1", 

+                "package a;" +

+                "public class X1{" +

+                "   static class X2{}" +

+                "   protected static class X3{}" +

+                "   private static class X4{}" +

+                "}");

+

+        IApi api = convert(Visibility.PROTECTED, src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        assertEquals(2, sigPackage.getClasses().size());

+        assertNotNull(ModelUtil.getClass(sigPackage, "X1.X3"));

+    }

+

+    @Test

+    public void testVisibility3() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.X1", 

+                "package a;" +

+                "public class X1{" +

+                "   static class X2{}" +

+                "   protected static class X3{}" +

+                "   private static class X4{}" +

+                "}");

+

+        IApi api = convert(Visibility.PACKAGE, src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        assertEquals(3, sigPackage.getClasses().size());

+        assertNotNull(ModelUtil.getClass(sigPackage, "X1.X2"));

+    }

+    

+    @Test

+    public void testVisibility4() throws IOException {

+        CompilationUnit src = new CompilationUnit("a.X1", 

+                "package a;" +

+                "public class X1{" +

+                "   static class X2{}" +

+                "   protected static class X3{}" +

+                "   private static class X4{}" +

+                "}");

+

+        IApi api = convert(Visibility.PRIVATE, src);

+        IPackage sigPackage = ModelUtil.getPackage(api, "a");

+        assertEquals(4, sigPackage.getClasses().size());

+        assertNotNull(ModelUtil.getClass(sigPackage, "X1.X4"));

+    }

+

+}
\ No newline at end of file
diff --git a/tools/signature-tools/test/signature/converter/ConvertWildcardTest.java b/tools/signature-tools/test/signature/converter/ConvertWildcardTest.java
new file mode 100644
index 0000000..d18c568
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/ConvertWildcardTest.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+import signature.converter.util.AbstractConvertTest;
+import signature.converter.util.CompilationUnit;
+import signature.model.IApi;
+import signature.model.IClassDefinition;
+import signature.model.IClassReference;
+import signature.model.IField;
+import signature.model.IPackage;
+import signature.model.IParameterizedType;
+import signature.model.ITypeReference;
+import signature.model.IWildcardType;
+import signature.model.util.ModelUtil;
+
+import java.io.IOException;
+
+public abstract class ConvertWildcardTest extends AbstractConvertTest {
+    
+    @Test
+    public void convertWildcardUpperBound() throws IOException {
+        String source = 
+            "package a; " +
+            "public class A{" +
+            "  public java.util.Set<? extends Number> f; "+
+            "}";
+            IApi api = convert(new CompilationUnit("a.A", source));
+            IPackage sigPackage = ModelUtil.getPackage(api, "a");
+            IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+            IField field = ModelUtil.getField(sigClass, "f");
+            
+            ITypeReference type = field.getType();
+            assertTrue(type instanceof IParameterizedType);
+            
+            IParameterizedType parametrizedType = (IParameterizedType)type;
+            
+            IClassDefinition rawType = parametrizedType.getRawType().getClassDefinition();
+            assertEquals("Set", rawType.getName());
+            
+            assertEquals(1, parametrizedType.getTypeArguments().size());
+            IWildcardType wildcardType = (IWildcardType) parametrizedType.getTypeArguments().get(0);
+            assertEquals(1, wildcardType.getUpperBounds().size());
+            ITypeReference upperBound = wildcardType.getUpperBounds().get(0);
+            assertTrue(upperBound instanceof IClassReference);
+            
+            assertEquals("Number", ((IClassReference)upperBound).getClassDefinition().getName());
+    }    
+    
+    @Test
+    public void convertWildcardLowerBound() throws IOException {
+        String source = 
+        "package a; " +
+        "public class A{" +
+        "  public java.util.Set<? super Number> f; "+
+        "}";
+        IApi api = convert(new CompilationUnit("a.A", source));
+        IPackage sigPackage = ModelUtil.getPackage(api, "a");
+        IClassDefinition sigClass = ModelUtil.getClass(sigPackage, "A");
+        IField field = ModelUtil.getField(sigClass, "f");
+        
+        ITypeReference type = field.getType();
+        assertTrue(type instanceof IParameterizedType);
+        
+        IParameterizedType parametrizedType = (IParameterizedType)type;
+        
+        IClassDefinition rawType = parametrizedType.getRawType().getClassDefinition();
+        assertEquals("Set", rawType.getName());
+        
+        assertEquals(1, parametrizedType.getTypeArguments().size());
+        IWildcardType wildcardType = (IWildcardType) parametrizedType.getTypeArguments().get(0);
+        assertEquals(1, wildcardType.getUpperBounds().size());
+        ITypeReference upperBound = wildcardType.getUpperBounds().get(0);
+        assertTrue(upperBound instanceof IClassReference);
+        assertEquals("Object", ((IClassReference)upperBound).getClassDefinition().getName());
+        
+        ITypeReference lowerBound = wildcardType.getLowerBound();
+        assertTrue(lowerBound instanceof IClassReference);
+        assertEquals("Number", ((IClassReference)lowerBound).getClassDefinition().getName());
+    }
+}
diff --git a/tools/signature-tools/test/signature/converter/dex/DexExternalizerTest.java b/tools/signature-tools/test/signature/converter/dex/DexExternalizerTest.java
new file mode 100644
index 0000000..8e27da5
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/dex/DexExternalizerTest.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter.dex;
+
+import org.junit.Test;
+
+import signature.converter.Visibility;
+import signature.io.IApiExternalizer;
+import signature.io.impl.BinaryApi;
+import signature.model.IApi;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+
+public class DexExternalizerTest {
+    
+    @Test
+    public void testExternalizer() throws IOException{
+        DexToSigConverter converter = new DexToSigConverter();
+        IApi api = converter.convertApi("Dex Tests", DexUtil.getDexFiles(new HashSet<String>(Arrays.asList(new String[]{"resources/javaCore.dex"}))), Visibility.PRIVATE);
+        System.setProperty("sun.io.serialization.extendedDebugInfo", "true");
+        IApiExternalizer externalizer = new BinaryApi();
+        externalizer.externalizeApi("dex-spec", api);
+    }
+}
diff --git a/tools/signature-tools/test/signature/converter/dex/DexTestConverter.java b/tools/signature-tools/test/signature/converter/dex/DexTestConverter.java
new file mode 100644
index 0000000..b6b90fa
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/dex/DexTestConverter.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter.dex;
+
+import dex.reader.util.JavaSource;
+import dex.reader.util.JavaSourceToDexUtil;
+import dex.structure.DexFile;
+import signature.converter.Visibility;
+import signature.converter.dex.DexToSigConverter;
+import signature.converter.util.AbstractTestSourceConverter;
+import signature.converter.util.CompilationUnit;
+import signature.model.IApi;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+public class DexTestConverter extends AbstractTestSourceConverter {
+
+    public IApi convert(Visibility visibility, Set<CompilationUnit> units) throws IOException {
+        JavaSourceToDexUtil toDexUtil = new JavaSourceToDexUtil();
+        DexToSigConverter converter = new DexToSigConverter();
+        Set<JavaSource> sources = new HashSet<JavaSource>();
+        for (CompilationUnit unit : units) {
+            sources.add(new JavaSource(unit.getName(), unit.getSource()));
+        }
+        DexFile dexFile = toDexUtil.getAllFrom(sources);
+        return converter.convertApi("Dex Tests", Collections.singleton(dexFile), visibility);
+    }
+
+}
diff --git a/tools/signature-tools/test/signature/converter/dex/DexUtilTest.java b/tools/signature-tools/test/signature/converter/dex/DexUtilTest.java
new file mode 100644
index 0000000..ff005fb
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/dex/DexUtilTest.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter.dex;
+
+
+import dex.reader.DexTestsCommon;
+import dex.reader.util.JavaSource;
+import dex.reader.util.JavaSourceToDexUtil;
+import dex.structure.DexClass;
+import dex.structure.DexFile;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import signature.converter.dex.DexToSigConverter;
+import signature.model.impl.SigPackage;
+import static signature.converter.dex.DexUtil.*;
+
+import java.io.IOException;
+
+import static org.junit.Assert.*;
+
+public class DexUtilTest extends DexTestsCommon {
+
+    private JavaSourceToDexUtil dexUtil;
+    private DexToSigConverter converter;
+    
+    @Before
+    public void setupDexUtil(){
+        dexUtil = new JavaSourceToDexUtil();
+        converter = new DexToSigConverter();
+    }
+    
+    @Test
+    public void convertPackageTest(){
+        SigPackage aPackage = converter.convertPackage("a");
+        assertEquals("a", aPackage.getName());
+        
+        aPackage = converter.convertPackage("a.b.c");
+        assertEquals("a.b.c", aPackage.getName());
+    }
+    
+    @Test
+    public void getPackageNameTest(){
+        assertEquals("",getPackageName("LA;"));
+        assertEquals("a",getPackageName("La/A;"));
+        assertEquals("a.b.c",getPackageName("La/b/c/A;"));
+    }
+    
+    @Test
+    public void getClassNameTest(){
+        assertEquals("A",getClassName("LA;"));
+        assertEquals("A",getClassName("La/A;"));
+        assertEquals("A",getClassName("La/b/c/A;"));
+    }
+    
+    @Test
+    public void hasGenericSignatureTest() throws IOException {
+        DexFile dexFile = dexUtil.getFrom(new JavaSource("A", "public class A{}"));
+        DexClass dexClass = getClass(dexFile, "LA;");
+        assertFalse(hasGenericSignature(dexClass));
+
+        dexFile = dexUtil.getFrom(new JavaSource("B", "public class B<T>{}"));
+        dexClass = getClass(dexFile, "LB;");
+        assertTrue(hasGenericSignature(dexClass));
+    }
+    
+    @Test
+    public void getGenericSignatureTest() throws IOException {
+        DexFile dexFile =  dexUtil.getFrom(new JavaSource("A", "public class A{}"));
+        DexClass dexClass = getClass(dexFile, "LA;");
+        assertNull(getGenericSignature(dexClass));
+        
+        dexFile =  dexUtil.getFrom(new JavaSource("B", "public class B<T>{}"));
+        dexClass = getClass(dexFile, "LB;");
+        assertEquals("<T:Ljava/lang/Object;>Ljava/lang/Object;", getGenericSignature(dexClass));
+    }
+    
+    
+    
+}
diff --git a/tools/signature-tools/test/signature/converter/dex/GenericSignatureParserTest.java b/tools/signature-tools/test/signature/converter/dex/GenericSignatureParserTest.java
new file mode 100644
index 0000000..52d73f8
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/dex/GenericSignatureParserTest.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter.dex;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+import dex.reader.DexTestsCommon;
+import dex.reader.util.JavaSource;
+import dex.reader.util.JavaSourceToDexUtil;
+import dex.structure.DexClass;
+import dex.structure.DexFile;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import signature.converter.dex.DexToSigConverter;
+import signature.converter.dex.DexUtil;
+import signature.converter.dex.GenericSignatureParser;
+import signature.model.impl.SigClassDefinition;
+import signature.model.util.TypePool;
+
+import java.io.IOException;
+
+public class GenericSignatureParserTest extends DexTestsCommon{
+    
+    private DexToSigConverter converter;
+    private JavaSourceToDexUtil dexUtil;
+    private GenericSignatureParser parser;
+
+    @Before
+    public void setupConverter(){
+        converter = new DexToSigConverter();
+        dexUtil = new JavaSourceToDexUtil();
+        parser = new GenericSignatureParser(new TypePool(), converter);
+    }
+    
+    @Test
+    public void getGenericSignatureTest() throws IOException {
+        DexFile  dexFile =  dexUtil.getFrom(new JavaSource("B", "public class B<T>{}"));
+        DexClass dexClass = getClass(dexFile, "LB;");
+        assertEquals("<T:Ljava/lang/Object;>Ljava/lang/Object;", DexUtil.getGenericSignature(dexClass));
+        SigClassDefinition sigClass = converter.convertClass(dexClass);
+        
+        parser.parseForClass(sigClass, DexUtil.getGenericSignature(dexClass));
+        //type parameter name
+        assertEquals(1, parser.formalTypeParameters.size());
+        assertEquals("T", parser.formalTypeParameters.get(0).getName());
+        //type parameter declaration
+        assertSame(sigClass, parser.formalTypeParameters.get(0).getGenericDeclaration());
+        //type parameter upper bounds
+        assertEquals(1, parser.formalTypeParameters.get(0).getUpperBounds().size());
+//        IType type = parser.formalTypeParameters.get(0).getUpperBounds().get(0);
+        
+    }
+}
diff --git a/tools/signature-tools/test/signature/converter/doclet/DocletTestConverter.java b/tools/signature-tools/test/signature/converter/doclet/DocletTestConverter.java
new file mode 100644
index 0000000..8e867dd
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/doclet/DocletTestConverter.java
@@ -0,0 +1,182 @@
+/*

+ * Copyright (C) 2009 The Android Open Source Project

+ *

+ * Licensed under the Apache License, Version 2.0 (the "License");

+ * you may not use this file except in compliance with the License.

+ * You may obtain a copy of the License at

+ *

+ *      http://www.apache.org/licenses/LICENSE-2.0

+ *

+ * Unless required by applicable law or agreed to in writing, software

+ * distributed under the License is distributed on an "AS IS" BASIS,

+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+ * See the License for the specific language governing permissions and

+ * limitations under the License.

+ */

+

+package signature.converter.doclet;

+

+import java.io.File;

+import java.io.FileWriter;

+import java.io.IOException;

+import java.io.PrintWriter;

+import java.io.StringWriter;

+import java.lang.reflect.Constructor;

+import java.util.HashSet;

+import java.util.Set;

+

+import signature.converter.Visibility;

+import signature.converter.doclet.DocletToSigConverter;

+import signature.converter.util.CompilationUnit;

+import signature.model.IApi;

+import signature.model.util.ModelUtil;

+

+import com.sun.javadoc.RootDoc;

+import com.sun.tools.javac.util.Context;

+import com.sun.tools.javac.util.ListBuffer;

+import com.sun.tools.javac.util.Options;

+import com.sun.tools.javadoc.JavadocTool;

+import com.sun.tools.javadoc.Messager;

+import com.sun.tools.javadoc.ModifierFilter;

+import com.sun.tools.javadoc.RootDocImpl;

+

+public class DocletTestConverter extends signature.converter.util.AbstractTestSourceConverter {

+

+    static String sourcepath;

+    static String separator;

+    

+    static {

+        separator = System.getProperty("file.separator");

+

+        sourcepath = System.getProperty("java.io.tmpdir");

+        sourcepath = sourcepath + separator + "cts" + separator;

+        System.out.println(">> "+sourcepath);

+    }

+

+    public IApi convert(Visibility visibility, Set<CompilationUnit> units) throws IOException {

+        try {

+            Set<String> packages = new HashSet<String>();

+            for(CompilationUnit u : units){

+                putSource(u);

+                String p = ModelUtil.getPackageName(u.getName());

+                assert p.length() > 0 : "default package not supported by doclets";

+                packages.add(p);

+            }

+            

+            RootDoc root = getRootDoc(visibility, packages);

+

+            DocletToSigConverter converter = new DocletToSigConverter();

+            

+            IApi api = converter.convertDocletRoot("Doclet Test", root, visibility, packages);

+            return api;

+        }

+        finally {

+            removeSources();

+        }

+    }

+    

+    public static void putSource(CompilationUnit source) throws IOException {

+        String directory = sourcepath;

+        String filename = source.getName();    // a.b.C

+        int pos = filename.indexOf(".");

+        while(pos > 0) {

+            directory = directory + filename.substring(0, pos) + separator;

+            filename = filename.substring(pos+1);

+            pos = filename.indexOf(".");

+        }

+        

+        File file = new File(directory, filename + ".java");

+        File parent = file.getParentFile();

+        parent.mkdirs();

+        

+        FileWriter wr = new FileWriter(file);

+        wr.write(source.getSource());

+        wr.close();

+    }

+

+    private static void removeSources() {

+        File file = new File(sourcepath);

+        removeFile(file);

+    }

+    

+    private static void removeFile(File file){

+        if(file.isDirectory()){

+            for(File f : file.listFiles()) removeFile(f);

+        }

+        file.delete();

+    }

+

+    private static RootDoc getRootDoc(Visibility visibility, java.util.Set<String> packages) throws IOException  {

+        long accessModifier = 0;

+        if(visibility == Visibility.PUBLIC){

+            accessModifier = 

+                com.sun.tools.javac.code.Flags.PUBLIC;    // 0x1

+        }

+        if(visibility == Visibility.PROTECTED){

+            accessModifier = 

+                com.sun.tools.javac.code.Flags.PUBLIC    // 0x1

+                | com.sun.tools.javac.code.Flags.PROTECTED;    // 0x4

+        }

+        if(visibility == Visibility.PACKAGE){

+            accessModifier = 

+                com.sun.tools.javac.code.Flags.PUBLIC    // 0x1

+                | com.sun.tools.javac.code.Flags.PROTECTED    // 0x4

+                | com.sun.tools.javadoc.ModifierFilter.PACKAGE; // 0x80000000

+        }

+        if(visibility == Visibility.PRIVATE){

+            accessModifier = 

+                com.sun.tools.javac.code.Flags.PUBLIC    // 0x1

+                | com.sun.tools.javac.code.Flags.PROTECTED    // 0x4

+                | com.sun.tools.javadoc.ModifierFilter.PACKAGE // 0x80000000

+                | com.sun.tools.javac.code.Flags.PRIVATE;    // 0x2

+        }

+

+        ModifierFilter showAccess = new ModifierFilter(accessModifier);

+        boolean breakiterator = false;

+        boolean quiet = false;

+        boolean legacy = false;

+        boolean docClasses = false;

+        

+        String docLocale = "";

+        String encoding = null;

+        ListBuffer<String> javaNames = new ListBuffer<String>();

+        for(String p : packages)

+            javaNames.append(p);

+        

+        ListBuffer<String[]> options = new ListBuffer<String[]>();

+    

+        

+//        String sourcepath = "//D:/Documents/Projects/08_CTS/signature-tools/signature-tools/test/";

+        options.append(new String[]{"-sourcepath", sourcepath});

+        

+        ListBuffer<String> subPackages = new ListBuffer<String>();

+        ListBuffer<String> excludedPackages = new ListBuffer<String>();

+

+        Context context = new Context();

+        Options compOpts = Options.instance(context);

+        compOpts.put("-sourcepath", sourcepath);

+        

+        Constructor<Messager> c;

+        try {

+//            c = Messager.class.getDeclaredConstructor(Context.class, String.class);

+//            c.setAccessible(true);

+//            c.newInstance(context, "SigTest");

+            c = Messager.class.getDeclaredConstructor(Context.class, String.class, PrintWriter.class, PrintWriter.class, PrintWriter.class);

+            c.setAccessible(true);

+            PrintWriter err = new PrintWriter(new StringWriter());

+            PrintWriter warn = new PrintWriter(new StringWriter());

+            PrintWriter notice = new PrintWriter(new StringWriter());

+            c.newInstance(context, "SigTest", err, warn, notice);

+        } catch (Exception e) {

+            throw new RuntimeException(e);

+        }

+

+        JavadocTool comp = JavadocTool.make0(context);

+        RootDocImpl root = comp.getRootDocImpl(docLocale, encoding, showAccess,

+                javaNames.toList(), options.toList(), breakiterator,

+                subPackages.toList(), excludedPackages.toList(), docClasses,

+                legacy, quiet);

+        return root;

+    }

+    

+}

diff --git a/tools/signature-tools/test/signature/converter/util/AbstractConvertTest.java b/tools/signature-tools/test/signature/converter/util/AbstractConvertTest.java
new file mode 100644
index 0000000..04935d8
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/util/AbstractConvertTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter.util;
+
+import java.io.IOException;
+import java.util.Set;
+
+import org.junit.Before;
+
+import signature.converter.Visibility;
+import signature.model.IApi;
+
+public abstract class AbstractConvertTest extends AbstractTestSourceConverter {
+    
+    private ITestSourceConverter converter;
+    
+    /**
+     * Creates and returns a converter instance.
+     * @return a converter instance
+     */
+    public abstract ITestSourceConverter createConverter();
+    
+    
+    @Before
+    public void setupConverter(){
+        converter = createConverter();
+    }
+
+    public IApi convert(Visibility visibility, Set<CompilationUnit> units) throws IOException {
+        return converter.convert(visibility, units);
+    }
+
+}
diff --git a/tools/signature-tools/test/signature/converter/util/AbstractTestSourceConverter.java b/tools/signature-tools/test/signature/converter/util/AbstractTestSourceConverter.java
new file mode 100644
index 0000000..5ca7422
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/util/AbstractTestSourceConverter.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter.util;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import signature.converter.Visibility;
+import signature.model.IApi;
+
+public abstract class AbstractTestSourceConverter implements ITestSourceConverter {
+
+    public IApi convert(Set<CompilationUnit> units) throws IOException {
+        return convert(Visibility.PROTECTED, units);
+    }
+    public IApi convert(CompilationUnit... units) throws IOException {
+        return convert(Visibility.PROTECTED, new HashSet<CompilationUnit>(Arrays.asList(units)));
+    }
+    public IApi convert(Visibility visibility, CompilationUnit... units) throws IOException {
+        return convert(visibility, new HashSet<CompilationUnit>(Arrays.asList(units)));
+    }
+}
+
diff --git a/tools/signature-tools/test/signature/converter/util/CompilationUnit.java b/tools/signature-tools/test/signature/converter/util/CompilationUnit.java
new file mode 100644
index 0000000..95960ae
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/util/CompilationUnit.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter.util;
+
+public class CompilationUnit {
+    
+    /** a.b.C */
+    private String name;
+    private String source;
+    
+    public CompilationUnit(String name, String source) {
+        this.name = name;
+        this.source = source;
+    }
+    
+    public String getName() {
+        return name;
+    }
+    
+    public String getSource() {
+        return source;
+    }
+}
diff --git a/tools/signature-tools/test/signature/converter/util/ITestSourceConverter.java b/tools/signature-tools/test/signature/converter/util/ITestSourceConverter.java
new file mode 100644
index 0000000..568a3e9
--- /dev/null
+++ b/tools/signature-tools/test/signature/converter/util/ITestSourceConverter.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package signature.converter.util;
+
+import java.io.IOException;
+import java.util.Set;
+
+import signature.converter.Visibility;
+import signature.model.IApi;
+
+public interface ITestSourceConverter {
+    IApi convert(Set<CompilationUnit> units) throws IOException;
+    IApi convert(CompilationUnit... units) throws IOException;
+    IApi convert(Visibility visibility, Set<CompilationUnit> units) throws IOException;
+    IApi convert(Visibility visibility, CompilationUnit... units) throws IOException;
+}
diff --git a/tools/spec-progress/Android.mk b/tools/spec-progress/Android.mk
new file mode 100644
index 0000000..e4026e9
--- /dev/null
+++ b/tools/spec-progress/Android.mk
@@ -0,0 +1,15 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_IS_HOST_MODULE := true
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_MODULE := spec-progress
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/etc/spec-progress | $(ACP)
+	@echo "Copy: $(PRIVATE_MODULE) ($@)"
+	$(copy-file-to-new-target)
+	$(hide) chmod 755 $@
+
+include $(LOCAL_PATH)/src/Android.mk
diff --git a/tools/spec-progress/etc/spec-progress b/tools/spec-progress/etc/spec-progress
new file mode 100644
index 0000000..a8f14d7
--- /dev/null
+++ b/tools/spec-progress/etc/spec-progress
@@ -0,0 +1,154 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Set up prog to be the path of this script, including following symlinks,
+# and set up progdir to be the fully-qualified pathname of its directory.
+prog="$0"
+while [ -h "${prog}" ]; do
+    newProg=`/bin/ls -ld "${prog}"`
+    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
+    if expr "x${newProg}" : 'x/' >/dev/null; then
+        prog="${newProg}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${newProg}"
+    fi
+done
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+libdir=`dirname $progdir`/framework
+
+javaOpts=""
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "$1" : '-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    shift
+done
+
+#exec java $javaOpts -jar $libdir/hat.jar "$@"
+
+#######################################################################
+# Original content of invocation script follows. Uses values cleverly
+# deduced by the above code. If you want to use this for a different
+# set of packages, adjust both the list of source directories and the
+# list of packages.
+#######################################################################
+export CLASSES=$progdir/../framework/spec-progress.jar
+export INPUT=$ANDROID_BUILD_TOP
+export OUTPUT=$ANDROID_BUILD_TOP/out/target/common/cts/spec-progress
+
+if [ "$1" != "" ]; then
+   export OUTPUT=$1
+fi
+
+javadoc -J-Xmx512m -docletpath $CLASSES -doclet SpecProgressDoclet -d $OUTPUT -sourcepath \
+$INPUT/dalvik/libcore/dalvik/src/main/java:\
+$INPUT/dalvik/libcore/annotation/src/main/java:\
+$INPUT/dalvik/libcore/archive/src/main/java:\
+$INPUT/dalvik/libcore/auth/src/main/java:\
+$INPUT/dalvik/libcore/awt-kernel/src/main/java:\
+$INPUT/dalvik/libcore/beans/src/main/java:\
+$INPUT/dalvik/libcore/crypto/src/main/java:\
+$INPUT/dalvik/libcore/logging/src/main/java:\
+$INPUT/dalvik/libcore/luni/src/main/java:\
+$INPUT/dalvik/libcore/luni-kernel/src/main/java:\
+$INPUT/dalvik/libcore/math/src/main/java:\
+$INPUT/dalvik/libcore/nio/src/main/java:\
+$INPUT/dalvik/libcore/nio_char/src/main/java:\
+$INPUT/dalvik/libcore/prefs/src/main/java:\
+$INPUT/dalvik/libcore/regex/src/main/java:\
+$INPUT/dalvik/libcore/security/src/main/java:\
+$INPUT/dalvik/libcore/security-kernel/src/main/java:\
+$INPUT/dalvik/libcore/sql/src/main/java:\
+$INPUT/dalvik/libcore/text/src/main/java:\
+$INPUT/dalvik/libcore/xml/src/main/java:\
+$INPUT/dalvik/libcore/x-net/src/main/java:\
+ \
+dalvik.annotation \
+dalvik.bytecode \
+dalvik.system \
+java.io \
+java.lang \
+java.lang.annotation \
+java.lang.ref \
+java.lang.reflect \
+java.math \
+java.net \
+java.nio \
+java.nio.channels \
+java.nio.channels.spi \
+java.nio.charset \
+java.nio.charset.spi \
+java.security \
+java.security.acl \
+java.security.cert \
+java.security.interfaces \
+java.security.spec \
+java.sql \
+java.text \
+java.util \
+java.util.jar \
+java.util.logging \
+java.util.prefs \
+java.util.regex \
+java.util.zip \
+javax.crypto \
+javax.crypto.interfaces \
+javax.crypto.spec \
+javax.net \
+javax.net.ssl \
+javax.security.auth \
+javax.security.auth.callback \
+javax.security.auth.login \
+javax.security.auth.x500 \
+javax.security.cert \
+javax.sql \
+javax.xml.parsers \
+org.w3c.dom \
+org.xml.sax \
+org.xml.sax.ext \
+org.xml.sax.helpers \
+
+# Not part of core libs any more:
+# java.lang.instrument \
+# javax.sound.midi \
+# javax.sound.midi.spi \
+# javax.sound.sampled \
+# javax.sound.sampled.spi \
+# java.awt \
+# java.awt.color \
+# java.awt.event \
+# java.awt.font \
+# java.awt.geom \
+# java.awt.im \
+# java.awt.im.spi \
+# java.awt.image \
+# java.awt.image.renderable \
+# javax.imageio \
+# javax.imageio.event \
+# javax.imageio.metadata \
+# javax.imageio.plugins.bmp \
+# javax.imageio.plugins.jpeg \
+# javax.imageio.spi \
+# javax.imageio.stream \
+# java.util.concurrent \
+# java.util.concurrent.atomic \
+# java.util.concurrent.locks \
diff --git a/tools/spec-progress/src/Android.mk b/tools/spec-progress/src/Android.mk
new file mode 100644
index 0000000..8ab5a7b
--- /dev/null
+++ b/tools/spec-progress/src/Android.mk
@@ -0,0 +1,14 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+#LOCAL_MODULE_TAGS := cts
+
+LOCAL_SRC_FILES := \
+	SpecProgressDoclet.java
+
+LOCAL_CLASSPATH := \
+	$(HOST_JDK_TOOLS_JAR)
+
+LOCAL_MODULE:= spec-progress
+
+include $(BUILD_HOST_JAVA_LIBRARY)
diff --git a/tools/spec-progress/src/SpecProgressDoclet.java b/tools/spec-progress/src/SpecProgressDoclet.java
new file mode 100644
index 0000000..4c5b6cc
--- /dev/null
+++ b/tools/spec-progress/src/SpecProgressDoclet.java
@@ -0,0 +1,1074 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import com.sun.javadoc.ClassDoc;
+import com.sun.javadoc.ConstructorDoc;
+import com.sun.javadoc.Doc;
+import com.sun.javadoc.ExecutableMemberDoc;
+import com.sun.javadoc.FieldDoc;
+import com.sun.javadoc.LanguageVersion;
+import com.sun.javadoc.MemberDoc;
+import com.sun.javadoc.MethodDoc;
+import com.sun.javadoc.PackageDoc;
+import com.sun.javadoc.ParamTag;
+import com.sun.javadoc.Parameter;
+import com.sun.javadoc.RootDoc;
+import com.sun.javadoc.Tag;
+import com.sun.javadoc.ThrowsTag;
+import com.sun.javadoc.TypeVariable;
+
+/**
+ * Provides a Doclet for checking the correctness and completeness of the
+ * Android core library JavaDoc (aka "the spec"). It generates an HTML-based
+ * report vaguely similar to the standard JavaDoc output. The following rules
+ * are currently implemented:
+ * 
+ * Each package must have a package.html doc, and all classes must be documented
+ * as described below.
+ * 
+ * Each class must have an individual doc and all members (fields, constructors,
+ * methods) must be documented as described below. All type parameters on class 
+ * level need to be documented.
+ * 
+ * Each member must have an individual doc.
+ * 
+ * Each executable member (constructor or method) must have a "@param" tag
+ * describing each declared parameter. "@param" tags for non-existing parameters
+ * are not allowed.
+ * 
+ * Each method that has a non-void return type must have at least one "@return"
+ * tag. A method that has a void return type must not have a "@return" tag.
+ * 
+ * Each executable member must have a "@throws" tag for each declared exception
+ * that does not extend java.lang.RuntimeException or java.lang.Error. This
+ * tag may refer to a superclass of the exception actually being thrown. Each
+ * exception specified by a "@throws" tag must actually be declared by the
+ * member, unless it extends java.lang.RuntimeException or java.lang.Error.
+ * Again, the exception being thrown might be more specific than the one
+ * documented.
+ * 
+ * Methods that override or implement another method are allowed to be
+ * undocumented, resulting in the inherited documentation being used. If such a
+ * method is documented anyway, it must have the complete documentation as
+ * described above.
+ * 
+ * Elements that have a "@hide" JavaDoc tag are not considered part of the
+ * official API and hence are not required to be documented.
+ * 
+ * Based on checking the above rules, the Doclet assigns statuses to individual
+ * documentation elements as follows:
+ * 
+ * Red: the element violates at least one of the above rules.
+ * 
+ * Yellow: the element fulfills all the above rules, but neither it nor one of
+ * its parent elements (class, package) has been marked with the
+ * "@since Android-1.0" tag.
+ * 
+ * Green: the element fulfills all the above rules, it does not have any "@cts"
+ * tags, and either it or one if its parent elements (class, package) has been
+ * marked with the "@since Android-1.0" tag.
+ * 
+ * These colors propagate upwards in the hierarchy. Parent elements are assigned
+ * colors as follows:
+ * 
+ * Red: At least on the children is red.
+ * 
+ * Yellow: None of the children are red and at least one of the children is
+ * yellow.
+ * 
+ * Green: All of the children are green.
+ * 
+ * The ultimate goal, of course, is to get the summary for the complete API
+ * green.
+ */
+public class SpecProgressDoclet {
+
+    public static final int TYPE_FIELD = 0;
+
+    public static final int TYPE_METHOD = 1;
+
+    public static final int TYPE_CLASS = 2;
+
+    public static final int TYPE_PACKAGE = 3;
+
+    public static final int TYPE_ROOT = 4;
+
+    public static final int VALUE_RED = 0;
+
+    public static final int VALUE_YELLOW = 1;
+
+    public static final int VALUE_GREEN = 2;
+
+    public static final String[] COLORS = { "#ffa0a0", "#ffffa0", "#a0ffa0" };
+
+    public static final String[] TYPES = { "Field", "Method", "Class",
+                                           "Package", "All packages" };
+
+    /**
+     * Holds our basic output directory.
+     */
+    private File directory;
+
+    /**
+     * Holds a reference to the doc for java.lang.RuntimeException, so we can
+     * compare against it later.
+     */
+    private ClassDoc runtimeException;
+
+    /**
+     * Holds a reference to the doc for java.lang.Error, so we can
+     * compare against it later.
+     */
+    private ClassDoc error;
+
+    /**
+     * States whether to check type parameters on class level. 
+     * To enable these checks use the option: '-Xgeneric' 
+     */
+    private static boolean checkTypeParameters;
+
+    /**
+     * Helper class for comparing element with each other, in oder to determine
+     * an order. Uses lexicographic order of names.
+     */
+    private class DocComparator implements Comparator<Doc> {
+        public int compare(Doc elem1, Doc elem2) {
+            return elem1.name().compareTo(elem2.name());
+        }
+
+        public boolean equals(Doc elem) {
+            return this == elem;
+        }
+    }
+
+    /**
+     * Class for collecting stats and propagating them upwards in the element
+     * hierarchy.
+     */
+    class Stats {
+
+        /**
+         * Holds the element type.
+         */
+        int type;
+
+        /**
+         * Holds the name of the element.
+         */
+        String name;
+
+        /**
+         * Holds information that is sufficient for building a hyperlink.
+         */
+        String link;
+
+        /**
+         * Holds the total number of elements per type (package, class, etc.).
+         */
+        private int[] numbersPerType = new int[4];
+
+        /**
+         * Holds the total number of elements per status value (red, yellow,
+         * green).
+         */
+        private int[] numbersPerValue = new int[3];
+
+        /**
+         * Holds the total number of "@cts" comments.
+         */
+        private int numberOfComments;
+
+        /**
+         * Creates a new Stats instance.
+         */
+        public Stats(int type, String name, String link) {
+            this.type = type;
+            this.name = name;
+            this.link = link;
+        }
+
+        /**
+         * Adds the contents of a single child element to this instance,
+         * propagating values up in the hierachy
+         */
+        public void add(int type, int status, int comments) {
+            numbersPerType[type]++;
+            numbersPerValue[status]++;
+            numberOfComments += comments;
+        }
+
+        /**
+         * Adds the contents of a child Stats instance to this instance,
+         * propagating values up in the hierachy
+         */
+        public void add(Stats stats) {
+            for (int i = 0; i < numbersPerType.length; i++) {
+                numbersPerType[i] += stats.numbersPerType[i];
+            }
+
+            for (int i = 0; i < numbersPerValue.length; i++) {
+                numbersPerValue[i] += stats.numbersPerValue[i];
+            }
+
+            numberOfComments += stats.numberOfComments;
+        }
+
+        /**
+         * Returns the link.
+         */
+        public String getLink() {
+            return link;
+        }
+
+        /**
+         * Returns the name.
+         */
+        public String getName() {
+            return name;
+        }
+
+        /**
+         * Returns the number of elements per element type.
+         */
+        public int getNumbersPerType(int type) {
+            return numbersPerType[type];
+        }
+
+        /**
+         * Returns the number of elements per status value.
+         */
+        public int getNumbersPerValue(int type) {
+            return numbersPerValue[type];
+        }
+
+        /**
+         * Returns the number of comments.
+         */
+        public int getNumberOfComments() {
+            return numberOfComments;
+        }
+
+        /**
+         * Returns the type of the element to which this Stats instance belongs.
+         */
+        public int getType() {
+            return type;
+        }
+
+        /**
+         * Returns the accumulated status value.
+         */
+        public int getValue() {
+            if (numbersPerValue[VALUE_RED] != 0) {
+                return VALUE_RED;
+            } else if (numbersPerValue[VALUE_YELLOW] != 0) {
+                return VALUE_YELLOW;
+            } else {
+                return VALUE_GREEN;
+            }
+        }
+
+    }
+
+    /**
+     * Holds our comparator instance for everything.
+     */
+    private DocComparator comparator = new DocComparator();
+
+    /**
+     * Creates a new instance of the SpecProgressDoclet for a given target
+     * directory.
+     */
+    public SpecProgressDoclet(String directory) {
+        this.directory = new File(directory);
+    }
+
+    /**
+     * Opens a new output file and writes the usual HTML header. Directories
+     * are created on demand.
+     */
+    private PrintWriter openFile(String name, String title) throws IOException {
+        System.out.println("Writing file \"" + name + "\"...");
+        
+        File file = new File(directory, name);
+        File parent = file.getParentFile();
+        parent.mkdirs();
+
+        OutputStream stream = new BufferedOutputStream(new FileOutputStream(file));
+        PrintWriter printer = new PrintWriter(stream);
+
+        printer.println("<html>");
+        printer.println("  <head>");
+        printer.println("    <title>" + title + "</title>");
+        printer.println("  <head>");
+        printer.println("  <body>");
+        printer.println("    <h1>" + title + "</h1>");
+
+        return printer;
+    }
+
+    /**
+     * Closes the given output file, writing the usual HTML footer before.
+     */
+    private void closeFile(PrintWriter printer) {
+        printer.println("  </body>");
+        printer.println("</html>");
+
+        printer.flush();
+        printer.close();
+    }
+
+    /**
+     * Processes the whole list of classes that JavaDoc knows about.
+     */
+    private void process(RootDoc root) throws IOException {
+        runtimeException = root.classNamed("java.lang.RuntimeException");
+        error = root.classNamed("java.lang.Error");
+
+        PrintWriter printer = openFile("index.html", "All packages");
+
+        printer.println("Generated " + new Date().toString());
+        
+        Stats derived = new Stats(TYPE_ROOT, "All packages", null);
+
+        printer.println("      <h2>Children</h2>");
+        printer.println("      <table width=\"100%\">");
+        printStatsHeader(printer);
+
+        PackageDoc[] packages = root.specifiedPackages();
+        Arrays.sort(packages, comparator);
+        for (PackageDoc pack : packages) {
+            if (pack.allClasses().length != 0 && !isHidden(pack)) {
+                Stats subStats = processPackage(pack);
+                printStats(printer, subStats, true);
+                derived.add(subStats);
+            }
+        }
+
+        printer.println("      </table>");
+
+        printer.println("      <p>");
+
+        printer.println("      <h2>Summary</h2>");
+        printer.println("      <table width=\"100%\">");
+        printStatsHeader(printer);
+        printStats(printer, derived, false);
+        printer.println("      </table>");
+
+        closeFile(printer);
+    }
+
+    /**
+     * Processes the details of a single package.
+     */
+    private Stats processPackage(PackageDoc pack) throws IOException {
+        String file = getPackageDir(pack) + "/package.html";
+        PrintWriter printer = openFile(file, "Package " + pack.name());
+
+        Stats derived = new Stats(TYPE_PACKAGE, pack.name(), file);
+
+        printer.println("      <h2>Elements</h2>");
+        printer.println("      <table width=\"100%\">");
+
+        printElementHeader(printer);
+        processElement(printer, pack, TYPE_PACKAGE, derived);
+
+        printer.println("      </table>");
+
+        printer.println("      <p>");
+
+        printer.println("      <h2>Children</h2>");
+        printer.println("      <table width=\"100%\">");
+
+        printStatsHeader(printer);
+
+        ClassDoc[] classes = pack.allClasses();
+        Arrays.sort(classes, comparator);
+        for (ClassDoc clazz : classes) {
+            if (!isHidden(clazz)) {
+                Stats subStats = processClass(clazz);
+                printStats(printer, subStats, true);
+                derived.add(subStats);
+            }
+        }
+
+        printer.println("      </table>");
+
+        printer.println("      <h2>Summary</h2>");
+        printer.println("      <table width=\"100%\">");
+        printStatsHeader(printer);
+        printStats(printer, derived, false);
+        printer.println("      </table>");
+
+        closeFile(printer);
+
+        return derived;
+    }
+
+    /**
+     * Processes the details of a single class.
+     */
+    private Stats processClass(ClassDoc clazz) throws IOException {
+        String file = getPackageDir(clazz.containingPackage()) + "/" + clazz.name() + ".html";
+        PrintWriter printer = openFile(file, "Class " + clazz.name());
+
+        Stats derived = new Stats(TYPE_CLASS, clazz.name(), clazz.name() + ".html");
+
+        printer.println("      <h2>Elements</h2>");
+        printer.println("      <table width=\"100%\">");
+
+        printElementHeader(printer);
+
+        processElement(printer, clazz, TYPE_CLASS, derived);
+
+        if(clazz.isEnum()){
+            FieldDoc[] enums = clazz.enumConstants();
+            Arrays.sort(enums, comparator);
+            for(FieldDoc e : enums) {
+                processElement(printer, e, TYPE_FIELD, derived);
+            }
+        }
+
+        FieldDoc[] fields = clazz.fields();
+        Arrays.sort(fields, comparator);
+        for (FieldDoc field : fields) {
+            processElement(printer, field, TYPE_FIELD, derived);
+        }
+
+        ConstructorDoc[] constructors = clazz.constructors();
+        Arrays.sort(constructors, comparator);
+        for (ConstructorDoc constructor : constructors) {
+            if (constructor.position() != null) {
+                String constPos = constructor.position().toString();
+                String classPos = constructor.containingClass().position()
+                        .toString();
+
+                if (!constPos.equals(classPos)) {
+                    processElement(printer, constructor, TYPE_METHOD, derived);
+                }
+            }
+        }
+
+        HashSet<MethodDoc> methodSet = new HashSet<MethodDoc>();
+        
+        
+        ClassDoc superClass = clazz.superclass();
+        MethodDoc[] methods = null;
+        if (superClass != null && superClass.isPackagePrivate())
+        {
+            MethodDoc[] classMethods = clazz.methods();
+            for (int i = 0; i < classMethods.length; i++) {
+                methodSet.add(classMethods[i]);
+            }
+
+
+            while (superClass != null && superClass.isPackagePrivate()) {
+                classMethods = superClass.methods();
+                for (int i = 0; i < classMethods.length; i++) {
+                    methodSet.add(classMethods[i]);
+                }
+                superClass = superClass.superclass();
+            }
+
+            methods = new MethodDoc[methodSet.size()];
+            methodSet.toArray(methods);
+        }
+        else
+        {
+            methods = clazz.methods();
+        }
+
+        Arrays.sort(methods, comparator);
+        for (MethodDoc method : methods) {
+            if (!(clazz.isEnum() && ("values".equals(method.name()) ||
+                                     "valueOf".equals(method.name())))) {
+                processElement(printer, method, TYPE_METHOD, derived);
+            }
+        }
+
+        printer.println("      </table>");
+
+        printer.println("      <p>");
+
+        printer.println("      <h2>Summary</h2>");
+        printer.println("      <table width=\"100%\">");
+        printStatsHeader(printer);
+        printStats(printer, derived, false);
+        printer.println("      </table>");
+
+        closeFile(printer);
+
+        return derived;
+    }
+
+    /**
+     * Processes a single element.
+     */
+    private void processElement(PrintWriter printer, Doc doc, int type, Stats derived) {
+        if (isHidden(doc)) {
+            return;
+        }
+
+        List<String> errors = new ArrayList<String>();
+        
+        boolean documented = isValidComment(doc.commentText());
+        boolean inherited = false;
+
+        if(checkTypeParameters && (doc.isClass() || doc.isInterface())){
+            boolean typeParamsOk = hasAllTypeParameterDocs((ClassDoc)doc, errors);
+            documented = documented && typeParamsOk;
+        }
+
+        if (doc.isMethod()) {
+            MethodDoc method = (MethodDoc) doc;
+            
+            if ("".equals(method.commentText().trim())) {
+                inherited = method.overriddenMethod() != null || 
+                            implementedMethod(method) != null;
+                documented = inherited;
+            }
+        }
+
+        if (!documented) {
+            errors.add("Missing or insufficient doc.");
+        }
+        
+        if (!inherited) {
+            if (doc.isMethod() || doc.isConstructor()) {
+                ExecutableMemberDoc executable = (ExecutableMemberDoc) doc;
+                boolean paramsOk = hasAllParameterDocs(executable, errors);
+                boolean exceptionsOk = hasAllExceptionDocs(executable, errors);
+
+                documented = documented && paramsOk && exceptionsOk;
+            }
+
+            if (doc.isMethod()) {
+                MethodDoc method = (MethodDoc) doc;
+                boolean resultOk = hasReturnDoc(method, errors);
+                documented = documented && resultOk;
+            }
+        }
+        
+        boolean reviewed = hasSinceTag(doc);
+        Tag[] comments = doc.tags("cts");
+
+        int status = getStatus(documented, reviewed || inherited, comments);
+
+        printer.println("        <tr bgcolor=\"" + COLORS[status] + "\">");
+        printer.println("          <td>" + TYPES[type] + "</td>");
+        
+        if (doc instanceof PackageDoc) {
+            printer.println("          <td>" + doc.toString() + "</td>");
+        } else {
+            String s = doc.name();
+            String t = doc.toString();
+            
+            int i = t.indexOf(s);
+            
+            if (i != -1) {
+                t = t.substring(i);
+            }
+            
+            printer.println("          <td>" + t + "</td>");
+        }
+        
+        printer.println("          <td>" + getFirstSentence(doc) + "</td>");
+        printer.println("          <td>" + (documented ? "Yes" : "No") + "</td>");
+        printer.println("          <td>" + (reviewed ? "Yes" : "No") + "</td>");
+        printer.println("          <td>");
+
+        if (comments.length != 0 || errors.size() != 0) {
+            printer.println("            </ul>");
+
+            for (int i = 0; i < comments.length; i++) {
+                printer.print("              <li>");
+                printer.print(comments[i].text());
+                printer.println("</li>");
+            }
+            
+            for (int i = 0; i < errors.size(); i++) {
+                printer.print("              <li>");
+                printer.print(errors.get(i));
+                printer.println("</li>");
+            }
+
+            printer.println("            </ul>");
+        } else {
+            printer.println("&nbsp;");
+        }
+
+        printer.println("          </td>");
+        printer.println("        </tr>");
+
+        derived.add(type, status, comments.length);
+    }
+
+    /**
+     * Print the table header for an element table.
+     */
+    private void printElementHeader(PrintWriter printer) {
+        printer.println("        <tr>");
+        printer.println("          <td>Type</td>");
+        printer.println("          <td>Name</td>");
+        printer.println("          <td>First sentence</td>");
+        printer.println("          <td>Doc'd</td>");
+        printer.println("          <td>Rev'd</td>");
+        printer.println("          <td>Comments</td>");
+        printer.println("        </tr>");
+    }
+
+    /**
+     * Print the table header for stats table table.
+     */
+    private void printStatsHeader(PrintWriter printer) {
+        printer.println("        <tr>");
+        printer.println("          <td>Type</td>");
+        printer.println("          <td>Name</td>");
+        printer.println("          <td>#Classes</td>");
+        printer.println("          <td>#Fields</td>");
+        printer.println("          <td>#Methods</td>");
+        printer.println("          <td>#Red</td>");
+        printer.println("          <td>#Yellow</td>");
+        printer.println("          <td>#Green</td>");
+        printer.println("          <td>#Comments</td>");
+        printer.println("        </tr>");
+    }
+
+    /**
+     * Prints a single row to a stats table.
+     */
+    private void printStats(PrintWriter printer, Stats info, boolean wantLink) {
+        printer.println("        <tr bgcolor=\"" + COLORS[info.getValue()] + "\">");
+        printer.println("          <td>" + TYPES[info.getType()] + "</td>");
+
+        printer.print("          <td>");
+        String link = info.getLink();
+        if (wantLink && link != null) {
+            printer.print("<a href=\"" + link + "\">" + info.getName() + "</a>");
+        } else {
+            printer.print(info.getName());
+        }
+        printer.println("</td>");
+
+        printer.println("          <td>" + info.getNumbersPerType(TYPE_CLASS) + "</td>");
+        printer.println("          <td>" + info.getNumbersPerType(TYPE_FIELD) + "</td>");
+        printer.println("          <td>" + info.getNumbersPerType(TYPE_METHOD) + "</td>");
+        printer.println("          <td>" + info.getNumbersPerValue(VALUE_RED) + "</td>");
+        printer.println("          <td>" + info.getNumbersPerValue(VALUE_YELLOW) + "</td>");
+        printer.println("          <td>" + info.getNumbersPerValue(VALUE_GREEN) + "</td>");
+        printer.println("          <td>" + info.getNumberOfComments() + "</td>");
+        printer.println("        </tr>");
+    }
+
+    /**
+     * Returns the directory for a given package. Basically converts embedded
+     * dots in the name into slashes. 
+     */
+    private File getPackageDir(PackageDoc pack) {
+        if (pack == null || pack.name() == null || "".equals(pack.name())) {
+            return new File(".");
+        } else {
+            return new File(pack.name().replace('.', '/'));
+        }
+    }
+
+    /**
+     * Checks whether the given comment is not null and not of length 0.
+     */
+    private boolean isValidComment(String comment) {
+        return comment != null && comment.length() > 0;
+    }
+
+    /**
+     * Checks whether the given interface or class has documentation for
+     * all declared type parameters (no less, no more). 
+     */
+    private boolean hasAllTypeParameterDocs(ClassDoc doc, List<String> errors) {
+        boolean result = true;
+        
+        TypeVariable[] params = doc.typeParameters();
+        Set<String> paramsSet = new HashSet<String>();
+        for (TypeVariable param : params) {
+            paramsSet.add(param.typeName()); 
+        }  
+
+        ParamTag[] paramTags = doc.typeParamTags();
+        Map<String, String> paramTagsMap = new HashMap<String, String>();
+        for (ParamTag paramTag : paramTags) {
+            if (!paramsSet.contains(paramTag.parameterName())) {
+                errors.add("Unknown type parameter \"" + paramTag.parameterName() + "\"");
+                result = false;
+            }
+            paramTagsMap.put(paramTag.parameterName(), paramTag.parameterComment());
+        }
+
+        for (TypeVariable param : params) {
+            if (!isValidComment(paramTagsMap.get(param.typeName()))) {
+                errors.add("Undocumented type parameter \"" + param.typeName() + "\"");
+                result = false;
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * Checks whether the given executable member has documentation for
+     * all declared parameters (no less, no more).  
+     */
+    private boolean hasAllParameterDocs(ExecutableMemberDoc doc, List<String> errors) {
+        boolean result = true;
+        
+        Parameter params[] = doc.parameters();
+        Set<String> paramsSet = new HashSet<String>();
+        for (int i = 0; i < params.length; i++) {
+            Parameter param = params[i];
+            paramsSet.add(param.name());
+        }
+
+        ParamTag[] paramTags = doc.paramTags();
+        Map<String, String> paramTagsMap = new HashMap<String, String>();
+        for (int i = 0; i < paramTags.length; i++) {
+            ParamTag paramTag = paramTags[i];
+
+            if (!paramsSet.contains(paramTag.parameterName())) {
+                errors.add("Unknown parameter \"" + paramTag.parameterName() + "\"");
+                result = false;
+            }
+
+            paramTagsMap.put(paramTag.parameterName(), paramTag.parameterComment());
+        }
+
+        for (int i = 0; i < params.length; i++) {
+            Parameter param = params[i];
+
+            if (!isValidComment(paramTagsMap.get(param.name()))) {
+                errors.add("Undocumented parameter \"" + param.name() + "\"");
+                result = false;
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * Checks whether the given executable member has documentation for
+     * all non-runtime exceptions. Runtime exceptions may or may not be
+     * documented.   
+     */
+    private boolean hasAllExceptionDocs(ExecutableMemberDoc doc, List<String> errors) {
+        boolean result = true;
+        
+        ClassDoc exceptions[] = doc.thrownExceptions();
+        Set<ClassDoc> exceptionSet = new HashSet<ClassDoc>();
+        for (int i = 0; i < exceptions.length; i++) {
+            ClassDoc exception = exceptions[i];
+            if (isRelevantException(exception)) {
+                exceptionSet.add(exception);
+            }
+        }
+
+        ThrowsTag[] throwsTags = doc.throwsTags();
+        Map<ClassDoc, String> throwsTagsMap = new HashMap<ClassDoc, String>();
+        for (int i = 0; i < throwsTags.length; i++) {
+            ThrowsTag throwsTag = throwsTags[i];
+
+            if (throwsTag.exception() == null) {
+                errors.add("Unknown exception \"" + throwsTag.exceptionName() + "\"");
+                result = false;
+            } else if (isRelevantException(throwsTag.exception())) {
+
+                ClassDoc exception = throwsTag.exception();
+                while (exception != null && !exceptionSet.contains(exception)) {
+                    exception = exception.superclass();
+                }
+                if (exception == null) {
+                    errors.add("Unknown exception \"" + throwsTag.exceptionName() + "\"");
+                    result = false;
+                }
+            }
+            
+            throwsTagsMap.put(throwsTag.exception(), throwsTag.exceptionComment());
+        }
+
+        for (int i = 0; i < exceptions.length; i++) {
+            ClassDoc exception = exceptions[i];
+            boolean found = false;
+            
+            for (int j = 0; j < throwsTags.length && !found; j++) {
+                ThrowsTag throwsTag = throwsTags[j];
+                
+                ClassDoc candidate = throwsTag.exception();
+                if (candidate != null) {
+                    if (candidate.equals(exception) || candidate.subclassOf(exception)) {
+                        if (isValidComment(throwsTag.exceptionComment())) {
+                            found = true;
+                        }
+                    }
+                }
+            }
+            
+            if (!found) {
+                errors.add("Undocumented exception \"" + exception.name() + "\"");
+                result = false;
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * Checks whether an exception needs to be documented. Runtime exceptions
+     * and errors don't necessarily need documentation (although it doesn't
+     * hurt to have it).
+     */
+    private boolean isRelevantException(ClassDoc clazz) {
+        return !(clazz.subclassOf(runtimeException) || clazz.subclassOf(error));
+    }
+    
+    /**
+     * Checks whether the given method has documentation for the return value.
+     */
+    private boolean hasReturnDoc(MethodDoc method, List<String> errors) {
+        boolean result = true;
+        
+        if (!"void".equals(method.returnType().typeName())) {
+            Tag[] returnTags = method.tags("return");
+
+            if (returnTags.length == 0) {
+                errors.add("Missing result.");
+                result = false;
+            }
+
+            for (int i = 0; i < returnTags.length; i++) {
+                Tag tag = returnTags[i];
+                if (!isValidComment(tag.text())) {
+                    errors.add("Insufficient result.");
+                    result = false;
+                }
+            }
+        } else {
+            Tag[] returnTags = method.tags("return");
+            if (returnTags.length != 0) {
+                errors.add("Unknown result.");
+                result = false;
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * Returns the first sentence for the given documentation element.
+     */
+    private String getFirstSentence(Doc doc) {
+        StringBuilder builder = new StringBuilder();
+
+        Tag[] tags = doc.firstSentenceTags();
+        for (int i = 0; i < tags.length; i++) {
+            Tag tag = tags[i];
+
+            if ("Text".equals(tag.kind())) {
+                builder.append(tag.text());
+            } else {
+                builder.append("{" + tag.toString() + "}");
+            }
+        }
+
+        return builder.toString();
+    }
+
+    /**
+     * Returns the interface method that a given method implements, or null if
+     * the method does not implement any interface method.
+     */
+    private MethodDoc implementedMethod(MethodDoc doc) {
+        ClassDoc clazz = doc.containingClass();
+        MethodDoc myDoc = null;
+        while(clazz != null && myDoc == null){
+        ClassDoc[] interfaces = clazz.interfaces();
+            myDoc = implementedMethod0(doc, interfaces);
+            clazz = clazz.superclass();
+        }
+        return myDoc;
+    }
+
+    /**
+     * Recursive helper method for finding out which interface method a given
+     * method implements.
+     */
+    private MethodDoc implementedMethod0(MethodDoc doc, ClassDoc[] interfaces) {
+        for (int i = 0; i < interfaces.length; i++) {
+            ClassDoc classDoc = interfaces[i];
+
+            MethodDoc[] methods = classDoc.methods();
+            for (int j = 0; j < methods.length; j++) {
+                MethodDoc methodDoc = methods[j];
+                if (doc.overrides(methodDoc)) {
+                    return methodDoc;
+                }
+            }
+        }
+
+        for (int i = 0; i < interfaces.length; i++) {
+            MethodDoc myDoc = implementedMethod0(doc, interfaces[i].interfaces());
+            if (myDoc != null) {
+                return myDoc;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Checks whether the given documentation element has a "@since" tag for
+     * Android.
+     */
+    private boolean hasSinceTag(Doc doc) {
+        Tag[] tags = doc.tags("since");
+
+        for (int i = 0; i < tags.length; i++) {
+            if ("Android 1.0".equals(tags[i].text())) {
+                return true;
+            }
+        }
+
+        if (doc instanceof MemberDoc) {
+            return hasSinceTag(((MemberDoc)doc).containingClass());
+        }
+        
+        if (doc instanceof ClassDoc) {
+            return hasSinceTag(((ClassDoc)doc).containingPackage());
+        }
+        
+        return false;
+    }
+
+    /**
+     * Checks whether the given documentation element has a "@hide" tag that
+     * excludes it from the official API.
+     */
+    private boolean isHidden(Doc doc) {
+        Tag[] tags = doc.tags("hide");
+
+        return tags != null && tags.length != 0;
+    }
+    
+    /**
+     * Determines the status of an element based on the existence of
+     * documentation, the review status, and any comments it might have.
+     */
+    private int getStatus(boolean documented, boolean reviewed, Tag[] comments) {
+        if (!documented) {
+            return VALUE_RED;
+        } else if (reviewed && comments.length == 0) {
+            return VALUE_GREEN;
+        } else {
+            return VALUE_YELLOW;
+        }
+    }
+
+    /**
+     * Called by JavaDoc to find our which command line arguments are supported
+     * and how many parameters they take. Part of the JavaDoc API.
+     */
+    public static int optionLength(String option) {
+        if ("-d".equals(option)) {
+            return 2;
+        } else if("-Xgeneric".equals(option)){
+            return 1;
+        } else {
+            return 0;
+        }
+    }
+
+    /**
+     * Returns a particular command line argument for a given option.
+     */
+    private static String getOption(RootDoc root, String option, int index, String defValue) {
+        String[][] allOptions = root.options();
+        for (int i = 0; i < allOptions.length; i++) {
+            if (allOptions[i][0].equals(option)) {
+                return allOptions[i][index];
+            }
+        }
+
+        return defValue;
+    }
+    
+    /**
+     * Returns whether the specified option is present.
+     */
+    private static boolean isOptionSet(RootDoc root, String option){
+        String[][] allOptions = root.options();
+        for (int i = 0; i < allOptions.length; i++) {
+            if (allOptions[i][0].equals(option)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Called by JavaDoc to find out which Java version we claim to support.
+     * Part of the JavaDoc API.
+     */
+    public static LanguageVersion languageVersion() {
+        return LanguageVersion.JAVA_1_5;
+    }
+
+    /**
+     * The main entry point called by JavaDoc after all required information has
+     * been collected. Part of the JavaDoc API.
+     */
+    public static boolean start(RootDoc root) {
+        try {
+            String target = getOption(root, "-d", 1, ".");
+            checkTypeParameters = isOptionSet(root, "-Xgeneric");
+
+            SpecProgressDoclet doclet = new SpecProgressDoclet(target);
+            doclet.process(root);
+
+            File file = new File(target, "index.html");
+            System.out.println("Please see complete report in " + 
+                    file.getAbsolutePath());
+            
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            return false;
+        }
+
+        return true;
+    }
+
+}
diff --git a/tools/test-progress-new/Android.mk b/tools/test-progress-new/Android.mk
new file mode 100644
index 0000000..2ee261d
--- /dev/null
+++ b/tools/test-progress-new/Android.mk
@@ -0,0 +1,29 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_IS_HOST_MODULE := true
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_MODULE := test-progress-new
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/etc/test-progress | $(ACP)
+	@echo "Copy: $(PRIVATE_MODULE) ($@)"
+	$(copy-file-to-new-target)
+	$(hide) chmod 755 $@
+
+include $(LOCAL_PATH)/src/Android.mk
diff --git a/tools/test-progress-new/etc/test-progress b/tools/test-progress-new/etc/test-progress
new file mode 100644
index 0000000..b883287
--- /dev/null
+++ b/tools/test-progress-new/etc/test-progress
@@ -0,0 +1,379 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Set up prog to be the path of this script, including following symlinks,
+# and set up progdir to be the fully-qualified pathname of its directory.
+prog="$0"
+while [ -h "${prog}" ]; do
+    newProg=`/bin/ls -ld "${prog}"`
+    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
+    if expr "x${newProg}" : 'x/' >/dev/null; then
+        prog="${newProg}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${newProg}"
+    fi
+done
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+libdir=`dirname $progdir`/framework
+
+# Parse the test type, by default it will run against all tests
+# FIXME:
+# This should be removed after vm-tests and core-tests have been integrated
+# in CTS.
+testType="all"
+if [ ! -z $1 ]; then
+    if [ $1 == "all" -o $1 == "dalvik" -o $1 == "android" ]; then
+        testType=$1
+        shift
+    fi
+fi
+
+javaOpts=""
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "$1" : '-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    shift
+done
+
+#exec java $javaOpts -jar $libdir/hat.jar "$@"
+
+#######################################################################
+# Original content of invocation script follows. Uses values cleverly
+# deduced by the above code. If you want to use this for a different
+# set of packages, adjust both the list of source directories and the
+# list of packages.
+#######################################################################
+export CLASSES=$progdir/../framework/test-progress-new.jar
+export INPUT=$ANDROID_BUILD_TOP
+export OUTPUT=$ANDROID_BUILD_TOP/out/target/common/cts/test-progress-new
+
+TESTCOVERAGE_FLAGS="countdisabled,acceptcandx"
+
+if [[ ("$1" == "-f") && ("$2" != "") ]]; then
+	TESTCOVERAGE_FLAGS=$2
+	echo "running with flag '$TESTCOVERAGE_FLAGS'"
+else
+	if [ "$1" != "" ]; then
+	   export OUTPUT=$1
+	fi
+fi
+
+DALVIK_SOURCE_PATH="\
+$INPUT/dalvik/libcore/annotation/src/main/java:\
+$INPUT/dalvik/libcore/archive/src/main/java:\
+$INPUT/dalvik/libcore/auth/src/main/java:\
+$INPUT/dalvik/libcore/awt-kernel/src/main/java:\
+$INPUT/dalvik/libcore/concurrent/src/main/java:\
+$INPUT/dalvik/libcore/crypto/src/main/java:\
+$INPUT/dalvik/libcore/dalvik/src/main/java:\
+$INPUT/dalvik/libcore/icu/src/main/java:\
+$INPUT/dalvik/libcore/json/src/main/java:\
+$INPUT/dalvik/libcore/junit/src/main/java:\
+$INPUT/dalvik/libcore/logging/src/main/java:\
+$INPUT/dalvik/libcore/luni-kernel/src/main/java:\
+$INPUT/dalvik/libcore/luni/src/main/java:\
+$INPUT/dalvik/libcore/math/src/main/java:\
+$INPUT/dalvik/libcore/nio_char/src/main/java:\
+$INPUT/dalvik/libcore/nio/src/main/java:\
+$INPUT/dalvik/libcore/openssl/src/main/java:\
+$INPUT/dalvik/libcore/prefs/src/main/java:\
+$INPUT/dalvik/libcore/regex/src/main/java:\
+$INPUT/dalvik/libcore/security-kernel/src/main/java:\
+$INPUT/dalvik/libcore/security/src/main/java:\
+$INPUT/dalvik/libcore/sql/src/main/java:\
+$INPUT/dalvik/libcore/suncompat/src/main/java:\
+$INPUT/dalvik/libcore/text/src/main/java:\
+$INPUT/dalvik/libcore/xml/src/main/java:\
+$INPUT/dalvik/libcore/x-net/src/main/java:\
+$INPUT/tests/HttpClient:\
+$INPUT/dalvik/libcore/annotation/src/test/java:\
+$INPUT/dalvik/libcore/archive/src/test/java:\
+$INPUT/dalvik/libcore/crypto/src/test/java:\
+$INPUT/dalvik/libcore/crypto/src/test/java/support/common/java:\
+$INPUT/dalvik/libcore/dalvik/src/test/java:\
+$INPUT/dalvik/libcore/logging/src/test/java:\
+$INPUT/dalvik/libcore/luni-kernel/src/test/java:\
+$INPUT/dalvik/libcore/luni/src/test/java:\
+$INPUT/dalvik/libcore/math/src/test/java:\
+$INPUT/dalvik/libcore/nio_char/src/test/java:\
+$INPUT/dalvik/libcore/nio/src/test/java:\
+$INPUT/dalvik/libcore/prefs/src/test/java:\
+$INPUT/dalvik/libcore/regex/src/test/java:\
+$INPUT/dalvik/libcore/security/src/test/java:\
+$INPUT/dalvik/libcore/sql/src/test/java:\
+$INPUT/dalvik/libcore/support/src/test/java:\
+$INPUT/dalvik/libcore/text/src/test/java:\
+$INPUT/dalvik/libcore/xml/src/test/java:\
+$INPUT/dalvik/libcore/x-net/src/test/java"
+
+DALVIK_PACKAGE="\
+junit.framework \
+org.apache.harmony.annotation.tests.java.lang.annotation \
+org.apache.harmony.archive.tests.java.util.jar \
+org.apache.harmony.archive.tests.java.util.zip \
+org.apache.harmony.crypto.tests.javax.crypto \
+org.apache.harmony.crypto.tests.javax.crypto.spec \
+org.apache.harmony.crypto.tests.javax.crypto.interfaces \
+org.apache.harmony.logging.tests.java.util.logging \
+org.apache.harmony.luni.tests.internal.net.www.protocol.http \
+org.apache.harmony.luni.tests.internal.net.www.protocol.https \
+org.apache.harmony.luni.tests.java.io \
+org.apache.harmony.luni.tests.java.lang \
+org.apache.harmony.luni.tests.java.net \
+org.apache.harmony.luni.tests.java.util \
+org.apache.harmony.luni.tests.util \
+org.apache.harmony.math.tests.java.math \
+org.apache.harmony.nio_char.tests.java.nio.charset \
+org.apache.harmony.nio_char.tests.java.nio.charset.spi \
+org.apache.harmony.nio.tests.java.nio \
+org.apache.harmony.nio.tests.java.nio.channels \
+org.apache.harmony.nio.tests.java.nio.channels.spi \
+org.apache.harmony.prefs.tests.java.util.prefs \
+org.apache.harmony.regex.tests.java.util.regex \
+org.apache.harmony.security.tests.java.security \
+org.apache.harmony.sql.tests.java.sql \
+org.apache.harmony.sql.tests.javax.sql \
+tests.SQLite \
+org.apache.harmony.testframework.serialization \
+org.apache.harmony.text.tests.java.text \
+targets \
+tests.api.java.io \
+tests.api.java.lang \
+tests.api.java.lang.ref \
+tests.api.java.lang.reflect \
+tests.api.java.math \
+tests.api.java.net \
+tests.api.java.nio.charset \
+tests.api.java.security \
+tests.api.java.util \
+tests.api.javax.net \
+tests.api.javax.net.ssl \
+tests.api.javax.security.auth \
+tests.api.javax.security.cert \
+tests.api.javax.xml.parsers \
+tests.api.org.xml.sax \
+tests.api.org.xml.sax.ext \
+tests.api.org.xml.sax.helpers \
+tests.api.org.apache.harmony.kernel.dalvik \
+tests.java.security \
+tests.java.sql \
+tests.javax.sql \
+tests.org.w3c.dom \
+tests.security \
+tests.security.acl \
+tests.security.cert \
+tests.security.interfaces \
+tests.security.permissions \
+tests.security.spec \
+tests.sql \
+tests.support \
+tests.targets.security \
+tests.targets.security.cert \
+tests.xml \
+java.io \
+java.lang \
+java.lang.annotation \
+java.lang.ref \
+java.lang.reflect \
+java.math \
+java.net \
+java.nio \
+java.nio.channels \
+java.nio.channels.spi \
+java.nio.charset \
+java.nio.charset.spi \
+java.security \
+java.security.acl \
+java.security.cert \
+java.security.interfaces \
+java.security.spec \
+java.sql \
+java.text \
+java.util \
+java.util.jar \
+java.util.logging \
+java.util.prefs \
+java.util.regex \
+java.util.zip \
+javax.crypto \
+javax.crypto.interfaces \
+javax.crypto.spec \
+javax.net \
+javax.net.ssl \
+javax.security.auth \
+javax.security.auth.callback \
+javax.security.auth.login \
+javax.security.auth.x500 \
+javax.security.cert \
+javax.sql \
+javax.xml.parsers \
+org.w3c.dom \
+org.xml.sax \
+org.xml.sax.ext \
+org.xml.sax.helpers"
+
+ANDROID_SOURCE_PATH="\
+${INPUT}/frameworks/base/core/java:\
+${INPUT}/frameworks/base/graphics/java:\
+${INPUT}/frameworks/base/location/java:\
+${INPUT}/frameworks/base/media/java:\
+${INPUT}/frameworks/base/opengl/java:\
+${INPUT}/frameworks/base/sax/java:\
+${INPUT}/frameworks/base/telephony/java:\
+${INPUT}/frameworks/base/wifi/java:\
+${INPUT}/cts/tests/tests/app/src:\
+${INPUT}/cts/tests/tests/content/src:\
+${INPUT}/cts/tests/tests/database/src:\
+${INPUT}/cts/tests/tests/graphics/src:\
+${INPUT}/cts/tests/tests/hardware/src:\
+${INPUT}/cts/tests/tests/location/src:\
+${INPUT}/cts/tests/tests/media/src:\
+${INPUT}/cts/tests/tests/net/src:\
+${INPUT}/cts/tests/tests/opengl/src:\
+${INPUT}/cts/tests/tests/os/src:\
+${INPUT}/cts/tests/tests/preference/src:\
+${INPUT}/cts/tests/tests/provider/src:\
+${INPUT}/cts/tests/tests/sax/src:\
+${INPUT}/cts/tests/tests/security/src:\
+${INPUT}/cts/tests/tests/speech/src:\
+${INPUT}/cts/tests/tests/telephony/src:\
+${INPUT}/cts/tests/tests/text/src:\
+${INPUT}/cts/tests/tests/util/src:\
+${INPUT}/cts/tests/tests/view/src:\
+${INPUT}/cts/tests/tests/webkit/src:\
+${INPUT}/cts/tests/tests/widget/src:\
+${INPUT}/cts/tests/src:\
+${INPUT}/frameworks/base/test-runner:\
+${INPUT}/dalvik/libcore/dalvik/src/main/java:\
+${INPUT}/dalvik/libcore/xml/src/main/java:\
+${INPUT}/dalvik/libcore/junit/src/main/java:"
+
+ANDROID_PACKAGE="\
+android.accounts \
+android.accounts.cts \
+android.app \
+android.app.cts \
+android.content \
+android.content.cts \
+android.content.pm \
+android.content.pm.cts \
+android.content.res \
+android.content.res.cts \
+android.database \
+android.database.cts \
+android.database.sqlite \
+android.database.sqlite.cts \
+android.graphics \
+android.graphics.cts \
+android.graphics.drawable \
+android.graphics.drawable.cts \
+android.graphics.drawable.shapes \
+android.graphics.drawable.shapes.cts \
+android.hardware \
+android.hardware.cts \
+android.location \
+android.location.cts \
+android.media \
+android.media.cts \
+android.net \
+android.net.cts \
+android.net.http \
+android.net.http.cts \
+android.net.wifi \
+android.net.wifi.cts \
+android.opengl \
+android.opengl.cts \
+android.os \
+android.os.cts \
+android.preference \
+android.preference.cts \
+android.provider \
+android.provider.cts \
+android.sax \
+android.sax.cts \
+android.security \
+android.security.cts \
+android.speech.srec \
+android.speech.srec.cts \
+android.telephony \
+android.telephony.cts \
+android.telephony.gsm \
+android.telephony.gsm.cts \
+android.text \
+android.text.cts \
+android.text.format \
+android.text.format.cts \
+android.text.method \
+android.text.method.cts \
+android.text.style \
+android.text.style.cts \
+android.text.util \
+android.text.util.cts \
+android.util \
+android.util.cts \
+android.view \
+android.view.cts \
+android.view.animation \
+android.view.animation.cts \
+android.view.inputmethod \
+android.view.inputmethod.cts \
+android.webkit \
+android.webkit.cts \
+android.widget \
+android.widget.cts"
+
+ALL_SOURCE_PATH="${DALVIK_SOURCE_PATH}:${ANDROID_SOURCE_PATH}"
+ALL_PACKAGE="${DALVIK_PACKAGE} ${ANDROID_PACKAGE}"
+
+SOURCE_PATH=""
+if [ ${testType} == "all" ]; then
+    SOURCE_PATH="${ALL_SOURCE_PATH} ${ALL_PACKAGE}"
+elif [ ${testType} == "dalvik" ]; then
+    SOURCE_PATH="${DALVIK_SOURCE_PATH} ${DALVIK_PACKAGE}"
+elif [ ${testType} == "android" ]; then
+    SOURCE_PATH="${ANDROID_SOURCE_PATH} ${ANDROID_PACKAGE}"
+fi
+
+javadoc -J-Xmx512m -docletpath $CLASSES -doclet testprogress2.TestCoverageDoclet -f $TESTCOVERAGE_FLAGS -d $OUTPUT -sourcepath $SOURCE_PATH
+
+# left out on purpose:
+# concurrent packages: a full test suite exists (JCP JSR166 test suite) and it located at 
+# device/dalvik/libcore/concurrent/src/test/java/tests/api/java/util/concurrent
+#
+#java.util.concurrent \
+#java.util.concurrent.atomic \
+#java.util.concurrent.locks \
+#
+
+# left out on purpose: (100% coverage/jsr)
+# tests/api/java/util/concurrent
+# tests.api.java.util.concurrent
+
+
+# all test source path found by:
+# find . -type d | sed -e '/.svn/d' | grep "src/test/java" | sed -e 's/test\/java.*/test\/java/g' | sort -u
+
+# the list of packages (test only) was taken from:
+#  egrep -R "[ \.]TestCase" dalvik/* | sed -e '/.svn/d' | cut -d':' -f 1 | cut -d'.' -f1 | sed -e's/.*src\/test\/java\///g;s/\/[^\/]*$//g' | sort -u
+
+
diff --git a/tools/test-progress-new/src/Android.mk b/tools/test-progress-new/src/Android.mk
new file mode 100644
index 0000000..00d5904
--- /dev/null
+++ b/tools/test-progress-new/src/Android.mk
@@ -0,0 +1,27 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+#LOCAL_MODULE_TAGS := cts
+
+
+LOCAL_SRC_FILES := $(call all-subdir-java-files)
+LOCAL_CLASSPATH := \
+	$(HOST_JDK_TOOLS_JAR)
+
+LOCAL_MODULE:= test-progress-new
+
+include $(BUILD_HOST_JAVA_LIBRARY)
diff --git a/tools/test-progress-new/src/testprogress2/AnnotationPointer.java b/tools/test-progress-new/src/testprogress2/AnnotationPointer.java
new file mode 100644
index 0000000..8f466de
--- /dev/null
+++ b/tools/test-progress-new/src/testprogress2/AnnotationPointer.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package testprogress2;
+
+import com.sun.javadoc.ExecutableMemberDoc;
+
+import java.util.ArrayList;
+import java.util.List;
+
+// points from one targetMethod to 0..n testMethods which test the target method
+public class AnnotationPointer {
+    final ExecutableMemberDoc targetMethod;
+
+    private List<TestTargetNew> targets = new ArrayList<TestTargetNew>();
+
+    AnnotationPointer(ExecutableMemberDoc targetMethod) {
+        this.targetMethod = targetMethod;
+    }
+
+    public void addTestTargetNew(TestTargetNew testMethodInfo) {
+        /*
+         * if (testMethods.contains(testMethodInfo)) { throw new
+         * RuntimeException("warn: testMethod refers more than once to the
+         * targetMethod, testMethod="+testMethodInfo.getMethodDoc());
+         * //System.out.println("warn: testMethod refers more than once to the
+         * targetMethod, testMethod="+testMethod); } else {
+         */
+        targets.add(testMethodInfo);
+        // }
+    }
+
+    public List<TestTargetNew> getTargets() {
+        return targets;
+    }
+
+    public void addProxiesFrom(AnnotationPointer ap) {
+        List<TestTargetNew> t = ap.targets;
+        // clone the TestTargetNew and add to it a note from which
+        // target method it orignally stems
+        for (TestTargetNew ttn : t) {
+            TestTargetNew tnew = ttn.cloneMe("<b>(INDIRECTLY tested)</b>");
+            targets.add(tnew);
+        }
+    }
+}
diff --git a/tools/test-progress-new/src/testprogress2/ClassOriginator.java b/tools/test-progress-new/src/testprogress2/ClassOriginator.java
new file mode 100644
index 0000000..378cec7
--- /dev/null
+++ b/tools/test-progress-new/src/testprogress2/ClassOriginator.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package testprogress2;
+
+import com.sun.javadoc.ClassDoc;
+
+/**
+ *
+ */
+public class ClassOriginator implements Originator {
+    private final ClassDoc mClassDoc;
+
+    private final String mComment;
+
+    ClassOriginator(ClassDoc classDoc, String comment) {
+        mClassDoc = classDoc;
+        mComment = comment;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see testprogress.Originator#asString()
+     */
+    public String asString() {
+        return (mComment != null ? mComment + " - " : "") + " -class- "
+                + mClassDoc.qualifiedName();
+    }
+
+    public boolean isDisabled() {
+        return false;
+    }
+
+    /**
+     * a reference from a class is never a to be fixed
+     */
+    public String getToBeFixed() {
+        return null;
+    }
+
+    /**
+     * a reference from a class is never a broken tests
+     */
+    public String getBrokenTest() {
+        return null;
+    }
+
+    /**
+     * a reference from a class is never a failure
+     */
+    public String getKnownFailure() {
+        return null;
+    }
+
+}
diff --git a/tools/test-progress-new/src/testprogress2/MethodOriginator.java b/tools/test-progress-new/src/testprogress2/MethodOriginator.java
new file mode 100644
index 0000000..1bb258e
--- /dev/null
+++ b/tools/test-progress-new/src/testprogress2/MethodOriginator.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package testprogress2;
+
+import com.sun.javadoc.AnnotationDesc;
+import com.sun.javadoc.ClassDoc;
+import com.sun.javadoc.MethodDoc;
+
+/**
+ *
+ */
+public class MethodOriginator implements Originator {
+    private final MethodDoc mMethod;
+
+    private final String mComment;
+
+    private final ClassDoc mClass;
+
+    private String knownFailure = null;
+
+    private String brokenTest = null;
+
+    private String toBeFixed = null;
+
+    /**
+     * @param testMethod
+     * @param clazz we need to provide the clazz since junit collects the
+     *            testMethods from all super classes - and thus MethodDoc's
+     *            class can point to a superclass. However, we want to know the
+     *            class where the TestTargetClass is pointing to the API class.
+     * @param comment
+     */
+    MethodOriginator(MethodDoc testMethod, ClassDoc clazz, String comment) {
+        mMethod = testMethod;
+        mComment = comment;
+        mClass = clazz;
+
+        AnnotationDesc[] annots = testMethod.annotations();
+        for (AnnotationDesc annot : annots) {
+            if (annot.annotationType().qualifiedName().equals(
+                    "dalvik.annotation.KnownFailure")) {
+                knownFailure = "<b>@KnownFailure:</b>"
+                        + (String)annot.elementValues()[0].value().value();
+            } else if (annot.annotationType().qualifiedName().equals(
+                    "dalvik.annotation.BrokenTest")) {
+                brokenTest = "<b>@BrokenTest:</b>"
+                        + (String)annot.elementValues()[0].value().value();
+            } else if (annot.annotationType().qualifiedName().equals(
+                    "dalvik.annotation.ToBeFixed")) {
+                toBeFixed = "<b>@ToBeFixed:</b>"
+                        + (String)annot.elementValues()[0].value().value();
+            }
+            // else some other annotation - ignore
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see testprogress.Originator#asString()
+     */
+    public String asString() {
+        return (mComment != null ? "comment:" + mComment + " - " : "")
+                + mClass.qualifiedName() + ": <b>" + mMethod.name() + "</b>"
+                + mMethod.signature()
+                + (brokenTest != null ? " [" + brokenTest + "]" : "")
+                + (toBeFixed != null ? " [" + toBeFixed + "]" : "")
+                + (knownFailure != null ? " [" + knownFailure + "]" : "");
+    }
+
+    public boolean isDisabled() {
+        return mMethod.name().startsWith("_test");
+    }
+
+    public String getBrokenTest() {
+        return brokenTest;
+    }
+
+    public String getToBeFixed() {
+        return toBeFixed;
+    }
+
+    public String getKnownFailure() {
+        return knownFailure;
+    }
+
+}
diff --git a/tools/test-progress-new/src/testprogress2/Originator.java b/tools/test-progress-new/src/testprogress2/Originator.java
new file mode 100644
index 0000000..a6e593c
--- /dev/null
+++ b/tools/test-progress-new/src/testprogress2/Originator.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package testprogress2;
+
+public interface Originator {
+
+    /**
+     * @return
+     */
+    String asString();
+
+    /**
+     * whether the originating test is disabled
+     *
+     * @return true if the test is disabled (starts with _test...)
+     */
+    boolean isDisabled();
+
+    /**
+     * indicates if the test is to be fixed (annotated with @ToBeFixed
+     *
+     * @return a string containing the annotation, null otherwise
+     */
+    String getToBeFixed();
+
+    /**
+     * indicates if the test is broken (annotated with @BrokenTest
+     *
+     * @return a string containing the annotation, null otherwise
+     */
+    String getBrokenTest();
+
+    /**
+     * indicates if the test is a known failure (runs fine on a RI, annotated
+     * with @KnownFailure)
+     *
+     * @return a string containing the annotation, null otherwise
+     */
+    String getKnownFailure();
+
+}
diff --git a/tools/test-progress-new/src/testprogress2/TestCoverageDoclet.java b/tools/test-progress-new/src/testprogress2/TestCoverageDoclet.java
new file mode 100644
index 0000000..d979b03
--- /dev/null
+++ b/tools/test-progress-new/src/testprogress2/TestCoverageDoclet.java
@@ -0,0 +1,1351 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package testprogress2;
+
+import com.sun.javadoc.AnnotationDesc;
+import com.sun.javadoc.AnnotationTypeDoc;
+import com.sun.javadoc.AnnotationValue;
+import com.sun.javadoc.ClassDoc;
+import com.sun.javadoc.ConstructorDoc;
+import com.sun.javadoc.Doc;
+import com.sun.javadoc.ExecutableMemberDoc;
+import com.sun.javadoc.LanguageVersion;
+import com.sun.javadoc.MethodDoc;
+import com.sun.javadoc.PackageDoc;
+import com.sun.javadoc.ParameterizedType;
+import com.sun.javadoc.RootDoc;
+import com.sun.javadoc.Tag;
+import com.sun.javadoc.AnnotationDesc.ElementValuePair;
+
+import testprogress2.TestMethodInformation.Color;
+import testprogress2.TestMethodInformation.Level;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * this doclet generates a .html report about the test coverage of the core api
+ * reading test method's annotations.
+ */
+public class TestCoverageDoclet {
+
+    /**
+     * color for the stats: green, yellow, red
+     */
+    public static final String[] COLORS = {
+            "#a0ffa0", "#ffffa0", "#ff8080"
+    };
+
+    // debugging output
+    private static final boolean DEBUG = false;
+
+    /**
+     * Holds our basic output directory.
+     */
+    private File directory;
+
+    private boolean _ignoreInterfacesAndAbstractMethods = false;
+
+    private boolean _doIncludeDisabledTests = false;
+
+    private boolean _acceptCompleteWithOtherStatus = false;
+
+    private Map<ExecutableMemberDoc, AnnotationPointer> resolved =
+        new HashMap<ExecutableMemberDoc, AnnotationPointer>(8192);
+
+    /**
+     * Helper class for comparing element with each other, in oder to determine
+     * an order. Uses lexicographic order of names.
+     */
+    private class DocComparator implements Comparator<Doc> {
+        public int compare(Doc elem1, Doc elem2) {
+            return elem1.name().compareTo(elem2.name());
+        }
+
+        public boolean equals(Doc elem) {
+            return this == elem;
+        }
+    }
+
+    private class MemberComparator implements Comparator<ExecutableMemberDoc> {
+        public int compare(ExecutableMemberDoc mem1, ExecutableMemberDoc mem2) {
+            return mem1.toString().compareTo(mem2.toString());
+        }
+    }
+
+    /**
+     * Holds our comparator instance for everything.
+     */
+    private DocComparator classComparator = new DocComparator();
+
+    private MemberComparator memberComparator = new MemberComparator();
+
+    private Map<ClassDoc, List<TestTargetNew>> classToSpecialTargets =
+        new HashMap<ClassDoc, List<TestTargetNew>>();
+
+    /**
+     * Creates a new instance of the TestProgressDoclet for a given target
+     * directory.
+     *
+     * @param directory
+     */
+    public TestCoverageDoclet(String directory) {
+        this.directory = new File(directory);
+    }
+
+    /**
+     * Opens a new output file and writes the usual HTML header. Directories are
+     * created on demand.
+     */
+    private PrintWriter openFile(String filename, String title) {
+        File file = new File(directory, filename);
+        File parent = file.getParentFile();
+        parent.mkdirs();
+
+        PrintWriter printer;
+        try {
+            printer = new PrintWriter(new FileOutputStream(file));
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException("file not found:" + e.getMessage());
+        }
+
+        printer.println("<html>");
+        printer.println("  <head>");
+        printer.println("    <title>" + title + "</title>");
+        printer.println("<style type=\"text/css\">\n"
+                + "body, body table tr td { font-size:10pt;font-family: "
+                + " sans-serif; }\n" + "li { padding-bottom:2px }\n"
+                + "table { width:100%; border-width: 0px; border: solid; "
+                + "border-collapse: collapse;}\n"
+                + "table tr td { vertical-align:top; padding:3px; border: "
+                + "1px solid black;}\n" + "</style>");
+        printer.println("  </head>");
+        printer.println("  <body>");
+        printer.println("    <h1>" + title + "</h1>");
+
+        return printer;
+    }
+
+    /**
+     * Closes the given output file, writing the usual HTML footer before.
+     */
+    private void closeFile(PrintWriter printer) {
+        printer.println("  </body>");
+        printer.println("</html>");
+        printer.flush();
+        printer.close();
+    }
+
+    private class TablePrinter {
+        private PrintWriter pr;
+
+        public TablePrinter(PrintWriter pr) {
+            this.pr = pr;
+        }
+
+        public void printRow(String... columns) {
+            pr.print("<tr style=\"background-color:white\">");
+            for (String col : columns) {
+                pr.print("<td>" + col + "</td>");
+            }
+            pr.print("</tr>");
+        }
+
+        public void printPlain(String val) {
+            pr.print(val);
+        }
+
+        public void printTableStart() {
+            pr.print("<table>");
+        }
+
+        public void printTableEnd() {
+            pr.print("</table>");
+        }
+
+        public void printPlainLn(String val) {
+            printPlain(val);
+            pr.print("<br>");
+        }
+    }
+
+    /**
+     * Processes the whole list of classes that JavaDoc knows about.
+     */
+    private void process(RootDoc root) {
+        System.out.println("V 0.9a");
+        String mode = getOption(root, "-f", 1, "dummy-see bash script");
+        System.out.println("mode: " + mode);
+
+        // standard mode is to include disabled tests
+        _doIncludeDisabledTests = mode.contains("countdisabled");
+        _acceptCompleteWithOtherStatus = mode.contains("acceptcandx");
+        if (_doIncludeDisabledTests) {
+            System.out.println("- including disabled tests");
+        } else {
+            System.out.println("- excluding disabled tests");
+        }
+        if (_acceptCompleteWithOtherStatus) {
+            System.out.println("- accepting complete tests with partial tests");
+        } else {
+            System.out.println("- not accepting complete tests with partial "
+                    + "tests");
+        }
+
+        // 1. traverse all test-classes (those extending JUnit's TestCase)
+        // and collect the annotation info.
+        // ===================================================================
+        System.out.println("stage 1 - get targets from all junit test methods");
+        PrintWriter pr = openFile("testcoverage/test-annotation.html",
+                "test class annotation coverage");
+        TablePrinter printer = new TablePrinter(pr);
+        printer.printTableStart();
+        printer.printRow("Test package name", "JUnit classes", "Meth", "Unt",
+                "Part", "Compl", "Disab", "Broken", "ToBeFixed", "KnownFail");
+
+        ColorStat totalStats = new ColorStat("All test packages", null);
+        PackageDoc[] packages = root.specifiedPackages();
+        Arrays.sort(packages, classComparator);
+        for (PackageDoc pack : packages) {
+            if (pack.allClasses().length != 0) {
+                ColorStat packageStat = processTestPackage(pack);
+                if (!packageStat.ignored) {
+                    // ignore those packages which have 0 tests in it
+                    printTestStats(printer, packageStat, true);
+                    totalStats.add(packageStat);
+                }
+            }
+        }
+        printer.printTableEnd();
+
+        printer.printPlainLn("<h2>Summary of all test packages</h2>");
+        printer.printTableStart();
+        printTestStats(printer, totalStats, false);
+        printer.printTableEnd();
+        closeFile(pr);
+
+        System.out.println("stage 2 - proxy test targets to abstract classes"
+                + "and interfaces");
+        // 1/2 - traverse all normal (non-junit) classes for interface
+        // and abstract methods implementation tests.
+        ClassDoc[] classes = root.classes();
+        for (ClassDoc classDoc : classes) {
+            if (!extendsJUnitTestCase(classDoc)) {
+                MethodDoc[] methods = classDoc.methods();
+                for (MethodDoc methodDoc : methods) {
+                    AnnotationPointer ap = getAnnotationPointer(methodDoc,
+                            false);
+                    if (ap != null) {
+                        // if there are already tests targeting this method,
+                        // search for abstract/interface methods which this
+                        // method
+                        // implements, and mark them as tested by this method,
+                        // too.
+                        List<MethodDoc> impls = implementingMethods(methodDoc);
+                        for (MethodDoc impl : impls) {
+                            AnnotationPointer apImpl = getAnnotationPointer(
+                                    impl, true);
+                            // add all tests which pointed to the original
+                            // method.
+                            apImpl.addProxiesFrom(ap);
+                        }
+                    }
+                }
+            }
+        }
+
+        // 2. traverse all "normal" (non-junit) source files
+        // ===================================================================
+        System.out.println("stage 3 - generating report for target api");
+        pr = openFile("index.html", "All target api packages");
+        printer = new TablePrinter(pr);
+        printer.printPlainLn("Generated " + new Date().toString()
+                + " - V0.9a<br>");
+        printer.printPlainLn("<a href=\"testcoverage/test-annotation.html\">"
+                + "annotation progress of test classes</a><br><br>");
+
+        printer.printTableStart();
+        printer.printRow("Package", "Classes", "Methods", "Untested",
+                "Partial", "Complete", "Disabled", "Broken", "ToBeFixed", "KnownFail");
+
+        totalStats = new ColorStat("All target packages", null);
+        packages = root.specifiedPackages();
+        Arrays.sort(packages, classComparator);
+
+        int classCount = 0;
+        for (PackageDoc pack : packages) {
+            if (pack.allClasses().length != 0) {
+                ColorStat packageStat = processPackage(pack);
+
+                if (!packageStat.ignored) {
+                    printStats(printer, packageStat, true);
+                    totalStats.add(packageStat);
+
+                    classCount += Integer.parseInt(packageStat.getExtra());
+                }
+            }
+        }
+        printer.printTableEnd();
+
+        totalStats.setExtra("" + classCount);
+        printer.printPlainLn("<h2>Summary of all target packages</h2>");
+        printer.printTableStart();
+        printStats(printer, totalStats, false);
+        printer.printTableEnd();
+        closeFile(pr);
+    }
+
+    /**
+     * Returns the interface(s) method(s) and the abstract method(s) that a
+     * given method implements, or an empty list if it does not implement
+     * anything.
+     */
+    private List<MethodDoc> implementingMethods(MethodDoc doc) {
+        List<MethodDoc> resultmethods = new ArrayList<MethodDoc>();
+        ClassDoc clazz = doc.containingClass();
+        implementedMethod0(resultmethods, doc, clazz, false);
+        return resultmethods;
+    }
+
+    /**
+     * Recursive helper method for finding out which interface methods or
+     * abstract methods a given method implements.
+     */
+    private void implementedMethod0(List<MethodDoc> resultmethods,
+            MethodDoc doc, ClassDoc testClass, boolean testMethods) {
+
+        // test all methods of this class
+        if (testMethods) {
+            MethodDoc[] methods = testClass.methods();
+            for (int j = 0; j < methods.length; j++) {
+                MethodDoc methodDoc = methods[j];
+                if ((methodDoc.isAbstract() || testClass.isInterface())
+                        && doc.overrides(methodDoc)) {
+                    resultmethods.add(methodDoc);
+                }
+            }
+        }
+
+        // test all implementing interfaces
+        ClassDoc[] ifs = testClass.interfaces();
+        for (int i = 0; i < ifs.length; i++) {
+            ClassDoc iface = ifs[i];
+            implementedMethod0(resultmethods, doc, iface, true);
+        }
+
+        // test the superclass
+        ClassDoc superclass = testClass.superclass();
+        if (superclass != null) {
+            implementedMethod0(resultmethods, doc, superclass, true);
+        }
+    }
+
+    private ColorStat processTestPackage(PackageDoc packageDoc) {
+        String file = getPackageDir("testcoverage", packageDoc)
+                + "/package.html";
+        PrintWriter pr = openFile(file, "Test package " + packageDoc.name());
+        TablePrinter printer = new TablePrinter(pr);
+        ColorStat stats = new ColorStat(packageDoc.name(),
+                getPackageBaseLink(packageDoc) + "/package.html");
+        printer.printTableStart();
+        printer.printRow("Class", "Extra", "Meth", "Unt", "Part", "Compl",
+                "Disab", "Broken", "ToBeFixed", "KnownFail");
+
+        ClassDoc[] classes = packageDoc.allClasses();
+        Arrays.sort(classes, classComparator);
+        int junitCnt = 0;
+        for (ClassDoc clazz : classes) {
+            if (extendsJUnitTestCase(clazz)) {
+                junitCnt++;
+                ColorStat subStats = processTestClass(clazz);
+                printTestStats(printer, subStats, true);
+                stats.add(subStats);
+            } else {
+                printer.printRow(clazz.name() + " ignored (no junit class): ",
+                        "", "", "", "", "", "", "", "");
+            }
+        }
+        printer.printTableEnd();
+
+        printer.printPlainLn("<h2>Test package summary</h2>");
+        printer.printTableStart();
+        printStats(printer, stats, false);
+        printer.printTableEnd();
+
+        closeFile(pr);
+        if (junitCnt == 0) {
+            if ((packageDoc.name().contains("tests.")
+                    || packageDoc.name().contains("junit.") || packageDoc
+                    .name().contains(".testframework"))
+                    && !(packageDoc.name().equals("junit.framework"))) {
+                System.err.println("warning!: no junit classes in package '"
+                        + packageDoc.name() + "' even though package name "
+                        + "contains tests.,junit. or .testframework");
+            }
+            stats = new ColorStat(packageDoc.name(),
+                    getPackageBaseLink(packageDoc) + "/package.html");
+            stats.incColor(TestMethodInformation.Color.GREEN);
+            stats.setExtra("Ignored since no Junit test and suites");
+            stats.ignored = true;
+        } else {
+            stats.setExtra("" + junitCnt);
+        }
+        return stats;
+    }
+
+    private ColorStat processPackage(PackageDoc packageDoc) {
+        String file = getPackageDir("", packageDoc) + "/package.html";
+        PrintWriter pr = openFile(file, "Package " + packageDoc.name());
+        TablePrinter printer = new TablePrinter(pr);
+        ColorStat stats = new ColorStat(packageDoc.name(),
+                getPackageBaseLink(packageDoc) + "/package.html");
+        printer.printTableStart();
+        printer.printRow("Class", "Extra", "Meth", "Unt", "Part", "Compl",
+                "Disab", "Broken", "ToBeFixed", "KnownFail");
+
+        ClassDoc[] classes = packageDoc.allClasses();
+        Arrays.sort(classes, classComparator);
+        int cnt = 0;
+        int junitCnt = 0;
+        for (ClassDoc clazz : classes) {
+            cnt++;
+            if (hasHideFlag(clazz)) {
+                // ignored since it has a @hide in the javadoc on the class
+                // level
+            } else if (extendsJUnitTestCase(clazz)) {
+                printer.printRow("ignored (junit class): " + clazz.name());
+                junitCnt++;
+            } else if (clazz.name().equals("AllTests")) {
+                printer.printRow("ignored (junit test suite class): "
+                        + clazz.name());
+                junitCnt++;
+            } else {
+                ColorStat subStats = processClass(clazz);
+                printStats(printer, subStats, true);
+                stats.add(subStats);
+            }
+        }
+        printer.printTableEnd();
+
+        printer.printPlainLn("<h2>Target package summary</h2>");
+        printer.printTableStart();
+        printStats(printer, stats, false);
+        printer.printTableEnd();
+
+        closeFile(pr);
+        if (junitCnt == cnt || packageDoc.name().contains("tests.")
+                || packageDoc.name().contains("junit.")
+                || packageDoc.name().contains(".testframework")
+                || packageDoc.name().endsWith(".cts")) {
+            // we only have junit classes -> mark green
+            stats = new ColorStat(packageDoc.name(),
+                    getPackageBaseLink(packageDoc) + "/package.html");
+            stats.incColor(TestMethodInformation.Color.GREEN);
+            stats
+                    .setExtra(junitCnt == cnt ? "Ignored since only Junit test and "
+                            + "suites"
+                            : "Ignored since \"tests.\" in name - recheck");
+            stats.ignored = true;
+        } else {
+            stats.setExtra("" + cnt);
+        }
+        return stats;
+    }
+
+    private boolean hasHideFlag(Doc doc) {
+        Tag[] hideTags = doc.tags("hide");
+        return hideTags.length > 0;
+    }
+
+    private ColorStat processTestClass(ClassDoc clazz) {
+        String file = getPackageDir("testcoverage", clazz.containingPackage())
+                + "/" + clazz.name() + ".html";
+        PrintWriter pr = openFile(file, "Test class " + clazz.qualifiedName());
+        TablePrinter printer = new TablePrinter(pr);
+        ColorStat classStat = new ColorStat(clazz.name(), clazz.name()
+                + ".html");
+
+        TestTargetClass testTargetClass = getTargetClass(clazz);
+        ClassDoc targetClass = testTargetClass.targetClass;
+
+        String note = "Note:";
+        if (targetClass == null) {
+            note += "<br>targetClass annotation missing!<br>";
+        } else {
+            // add untested[] annotations to statistics
+            ClassOriginator co = new ClassOriginator(clazz, null);
+
+            AnnotationDesc[] annotsC = testTargetClass.untestedMethods
+                    .toArray(new AnnotationDesc[] {});
+            if (annotsC.length > 0) {
+                // we have "untested" refs
+                ColorStat classLevelStat = new ColorStat(clazz.name(), null);
+                TestMethodInformation tminfo = new TestMethodInformation(co,
+                        annotsC, targetClass);
+                if (tminfo.getError() != null) {
+                    printer.printPlainLn("<b>Error:</b>" + tminfo.getError());
+                    classLevelStat.incColor(Color.RED);
+                } else {
+                    linkTargets(tminfo.getTargets());
+                    classLevelStat.incColor(Color.GREEN);
+                }
+                classStat.add(classLevelStat);
+            }
+        }
+
+        printer.printPlainLn(note);
+
+        printer.printTableStart();
+        printer.printRow("Method", "Note", "Meth", "Unt", "Part", "Compl",
+                "Disab", "Broken", "ToBeFixed", "KnownFail");
+
+        int methodCnt = 0;
+        // also collects test... methods from all superclasses below TestCase,
+        // since those are called as well
+        List<MethodDoc> testMethods = collectAllTestMethods(clazz);
+        Collections.sort(testMethods, memberComparator);
+
+        for (MethodDoc testMethod : testMethods) {
+            methodCnt++;
+
+            // Make disabled tests visible in the report so we don't forget
+            // them.
+            boolean disTest = testMethod.name().startsWith("_test");
+
+            ColorStat methodStat = new ColorStat(testMethod.name(), null);
+            if (disTest) {
+                methodStat.incDisabledTestsCnt();
+            }
+            String comments = disTest ? "<b><span style=\"background:red\">"
+                    + "DISABLED</span></b>" : null;
+
+            MethodOriginator mo = new MethodOriginator(testMethod, clazz,
+                    comments);
+            AnnotationDesc[] annots = testMethod.annotations();
+            TestMethodInformation minfo = new TestMethodInformation(mo, annots,
+                    targetClass);
+            linkTargets(minfo.getTargets());
+
+            String extra = null;
+            if (comments != null) {
+                if (extra == null)
+                    extra = "";
+                extra += comments;
+            }
+
+            if (minfo.getError() != null) { // error case
+                if (extra == null)
+                    extra = "";
+                extra += "<b>Error:</b> " + minfo.getError() + "<br>";
+                methodStat.addMethodInfo(minfo);
+            } else {
+                if (mo.getKnownFailure() != null) {
+                    methodStat.incKnownFailureCnt();
+                    if (extra == null)
+                        extra = "";
+                    extra += mo.getKnownFailure();
+                }
+
+                // check for @BrokenTest
+                if (mo.getBrokenTest() != null) {
+                    // override with warning
+                    methodStat.incBrokenTestCnt();
+                    methodStat.incColor(Color.YELLOW);
+                    if (extra == null)
+                        extra = "";
+                    extra += mo.getBrokenTest();
+                }
+
+                // check for @ToBeFixed
+                if (mo.getToBeFixed() != null) {
+                    // override with warning
+                    methodStat.incToBeFixedCnt();
+                    methodStat.incColor(Color.YELLOW);
+                    if (extra == null) {
+                        extra = "";
+                    }
+
+                    extra += mo.getToBeFixed();
+                } else { // add regular stats
+                    methodStat.addMethodInfo(minfo);
+                }
+            }
+            if (extra != null) {
+                methodStat.setExtra(extra);
+            }
+
+            printTestStats(printer, methodStat, false);
+            classStat.add(methodStat);
+        }
+        printer.printTableEnd();
+
+        printer.printPlainLn("<h2>Test class summary</h2>");
+        printer.printTableStart();
+        printStats(printer, classStat, false);
+        printer.printTableEnd();
+
+        closeFile(pr);
+        classStat.setExtra("#methods: " + testMethods.size());
+        return classStat;
+    }
+
+    private void linkTargets(List<TestTargetNew> targets) {
+        for (TestTargetNew ttn : targets) {
+            if (ttn.getTargetMethod() != null) {
+                AnnotationPointer tar = getAnnotationPointer(ttn
+                        .getTargetMethod(), true);
+                tar.addTestTargetNew(ttn);
+            } else if (ttn.getTargetClass() != null) {
+                // some special target only pointing to a class, not a method.
+                addToClassTargets(ttn.getTargetClass(), ttn);
+            }
+        }
+    }
+
+    private boolean isGreen(TestMethodInformation.Level level) {
+        boolean lComplete = level == TestMethodInformation.Level.COMPLETE;
+        boolean lSufficient = level == TestMethodInformation.Level.SUFFICIENT;
+        boolean lPartialOk = level == TestMethodInformation.Level.PARTIAL_COMPLETE;
+        boolean lPartial = level == TestMethodInformation.Level.PARTIAL;
+        boolean lTodo = level == TestMethodInformation.Level.TODO;
+        boolean lNotFeasible = level == TestMethodInformation.Level.NOT_FEASIBLE;
+        boolean lNotNecessary = level == TestMethodInformation.Level.NOT_NECESSARY;
+
+        return lComplete || lPartialOk || lSufficient || lNotFeasible
+                || lNotNecessary;
+    }
+
+    private ColorStat processClass(ClassDoc clazz) {
+        String file = getPackageDir("", clazz.containingPackage()) + "/"
+                + clazz.name() + ".html";
+        String classDesc = getClassString(clazz);
+        PrintWriter pr = openFile(file, classDesc);
+        TablePrinter printer = new TablePrinter(pr);
+        printer.printPlain("<b>package " + clazz.containingPackage() + "</b>");
+        ColorStat classStats = new ColorStat(classDesc, clazz.name() + ".html");
+
+        // list special targets
+        List<TestTargetNew> classTargets = getTargetsFor(clazz);
+        if (classTargets != null) {
+            printer.printPlain("<h3>Class level tests</h3>");
+            printer.printPlain("<ul>");
+            for (TestTargetNew ttn : classTargets) {
+                String line = "<li>" + ttn.getOriginator().asString();
+                Level lev = ttn.getLevel();
+                line += " <font color=\""
+                        + (isGreen(lev) ? "green" : "red")
+                        + "\"><b>"
+                        + lev.name()
+                        + "</b></font>"
+                        + (ttn.getNotes() != null ? "<br>Notes: "
+                                + ttn.getNotes() : "") + "</li>";
+                printer.printPlain(line);
+            }
+            printer.printPlainLn("</ul>");
+        }
+
+        printer.printPlain("<h3>Method level tests</h3>");
+        printer.printTableStart();
+        printer.printRow("Method", "Tested by", "Meth", "Unt", "Part", "Compl",
+                "Disab", "Broken", "ToBeFixed", "KnownFail");
+        ConstructorDoc[] constructors = clazz.constructors();
+        Arrays.sort(constructors, classComparator);
+        int cnt = 0;
+        for (ConstructorDoc constructor : constructors) {
+            if (!hasHideFlag(constructor) && !hasHideFlag(clazz)) {
+                cnt++;
+                ColorStat memberStat = processElement(constructor);
+                printStats(printer, memberStat, false);
+                classStats.add(memberStat);
+            }
+        }
+
+        MethodDoc[] methods = clazz.methods();
+        Arrays.sort(methods, classComparator);
+        for (MethodDoc method : methods) {
+            if (!hasHideFlag(method) && !hasHideFlag(clazz)) {
+                cnt++;
+                ColorStat subStat = processElement(method);
+                printStats(printer, subStat, false);
+                classStats.add(subStat);
+            }
+        }
+        printer.printTableEnd();
+
+        printer.printPlainLn("<h2>Target class summary</h2>");
+        printer.printTableStart();
+        printStats(printer, classStats, false);
+        printer.printTableEnd();
+
+        closeFile(pr);
+        classStats.setExtra("#methods: " + cnt);
+
+        // mark as green
+        if (_ignoreInterfacesAndAbstractMethods && clazz.isInterface()) {
+            classStats = new ColorStat(clazz.name()
+                    + (clazz.isInterface() ? " (Interface)" : ""), clazz.name()
+                    + ".html");
+            int mcnt = clazz.methods().length;
+            // fake all methods to green
+            for (int i = 0; i < mcnt; i++) {
+                classStats.incColor(TestMethodInformation.Color.GREEN);
+            }
+            classStats.setExtra("Ignored since interface");
+        }
+        return classStats;
+    }
+
+    private class TestTargetClass {
+        ClassDoc targetClass;
+
+        List<AnnotationDesc> untestedMethods = new ArrayList<AnnotationDesc>();
+        // a List of @TestTargetNew annotations
+    }
+
+    private TestTargetClass getTargetClass(ClassDoc classDoc) {
+        // get the class annotation which names the default test target class
+        TestTargetClass ttc = new TestTargetClass();
+        ClassDoc targetClass = null;
+        AnnotationDesc[] cAnnots = classDoc.annotations();
+        for (AnnotationDesc cAnnot : cAnnots) {
+            AnnotationTypeDoc atype = cAnnot.annotationType();
+            if (atype.toString().equals("dalvik.annotation.TestTargetClass")) {
+                ElementValuePair[] cpairs = cAnnot.elementValues();
+                for (int i = 0; i < cpairs.length; i++) {
+                    ElementValuePair ev = cpairs[i];
+                    String elName = ev.element().name();
+                    if (elName.equals("value")) {
+                        // the target class
+                        AnnotationValue av = ev.value();
+                        Object obj = av.value();
+                        // value must be a class doc
+                        if (obj instanceof ClassDoc) {
+                            targetClass = (ClassDoc)obj;
+                        } else if (obj instanceof ParameterizedType) {
+                            targetClass = ((ParameterizedType)obj).asClassDoc();
+                        } else
+                            throw new RuntimeException(
+                                    "annotation elem value is of type "
+                                            + obj.getClass().getName());
+                    } else if (elName.equals("untestedMethods")) {
+                        // TestTargetNew[] untestedMethods() default {};
+                        AnnotationValue[] targets = (AnnotationValue[])ev
+                                .value().value();
+                        for (AnnotationValue ttn : targets) {
+                            // each untested method must be a TestTargetNew
+                            AnnotationDesc ttnd = (AnnotationDesc)ttn.value();
+                            ttc.untestedMethods.add(ttnd);
+                        }
+                    }
+                }
+            }
+        }
+        ttc.targetClass = targetClass;
+        return ttc;
+    }
+
+    private List<MethodDoc> collectAllTestMethods(ClassDoc classDoc) {
+        List<MethodDoc> m = new ArrayList<MethodDoc>();
+
+        ClassDoc curCl = classDoc;
+        do {
+            m.addAll(getJunitTestMethods(curCl));
+        } while ((curCl = curCl.superclass()) != null
+                && !curCl.qualifiedName().equals("junit.framework.TestCase"));
+        return m;
+    }
+
+    private List<MethodDoc> getJunitTestMethods(ClassDoc classDoc) {
+        List<MethodDoc> cl = new ArrayList<MethodDoc>();
+        for (MethodDoc methodDoc : classDoc.methods()) {
+            if (methodDoc.isPublic()
+                    && (methodDoc.name().startsWith("test") || methodDoc.name()
+                            .startsWith("_test"))) {
+                cl.add(methodDoc);
+            }
+        }
+        return cl;
+    }
+
+    private class ColorStat {
+        private String name;
+
+        private String link;
+
+        private String extra;
+
+        public boolean ignored;
+
+        private int[] cntCol = new int[4];
+
+        private int disabledTestsCnt = 0;
+
+        private int brokenTestCnt = 0;
+
+        private int toBeFixedCnt = 0;
+
+        private int knownFailureCnt = 0;
+
+        public String getName() {
+            return name;
+        }
+
+        public String getLink() {
+            return link;
+        }
+
+        public ColorStat(String name, String link) {
+            this.name = name;
+            this.link = link;
+        }
+
+        public void add(ColorStat subStat) {
+            for (int i = 0; i < cntCol.length; i++) {
+                cntCol[i] += subStat.cntCol[i];
+            }
+            disabledTestsCnt += subStat.disabledTestsCnt;
+            brokenTestCnt += subStat.brokenTestCnt;
+            toBeFixedCnt += subStat.toBeFixedCnt;
+            knownFailureCnt += subStat.knownFailureCnt;
+        }
+
+        public void incDisabledTestsCnt() {
+            disabledTestsCnt++;
+        }
+
+        public void incBrokenTestCnt() {
+            brokenTestCnt++;
+        }
+
+        public void incToBeFixedCnt() {
+            toBeFixedCnt++;
+        }
+
+        public void incKnownFailureCnt() {
+            knownFailureCnt++;
+        }
+
+        public void incColor(TestMethodInformation.Color color) {
+            cntCol[color.ordinal()]++;
+        }
+
+        public int getColorCnt(TestMethodInformation.Color color) {
+            return cntCol[color.ordinal()];
+        }
+
+        public void addMethodInfo(TestMethodInformation minfo) {
+            TestMethodInformation.Color c = minfo.getColor();
+            int ord = c.ordinal();
+            cntCol[ord]++;
+        }
+
+        public void setExtra(String extra) {
+            this.extra = extra;
+        }
+
+        public String getExtra() {
+            return extra;
+        }
+
+        public int getDisabledTestsCnt() {
+            return disabledTestsCnt;
+        }
+
+        public int getBrokenTestCnt() {
+            return brokenTestCnt;
+        }
+
+        public int getToBeFixedCnt() {
+            return toBeFixedCnt;
+        }
+
+        public int getKnownFailureCnt() {
+            return knownFailureCnt;
+        }
+    }
+
+    private AnnotationPointer getAnnotationPointer(
+            ExecutableMemberDoc targetMethod, boolean create) {
+        AnnotationPointer ap = resolved.get(targetMethod);
+        if (create && ap == null) {
+            ap = new AnnotationPointer(targetMethod);
+            resolved.put(targetMethod, ap);
+        }
+        return ap;
+    }
+
+    private void addToClassTargets(ClassDoc targetClass, TestTargetNew ttn) {
+        List<TestTargetNew> targets = classToSpecialTargets.get(targetClass);
+        if (targets == null) {
+            targets = new ArrayList<TestTargetNew>();
+            classToSpecialTargets.put(targetClass, targets);
+        }
+        targets.add(ttn);
+    }
+
+    private List<TestTargetNew> getTargetsFor(ClassDoc targetClass) {
+        return classToSpecialTargets.get(targetClass);
+    }
+
+    private boolean extendsJUnitTestCase(ClassDoc classDoc) {
+        // junit.framework.TestCase.java
+        ClassDoc curClass = classDoc;
+        while ((curClass = curClass.superclass()) != null) {
+            if (curClass.toString().equals("junit.framework.TestCase")) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Processes a single method/constructor.
+     */
+    private ColorStat processElement(ExecutableMemberDoc method) {
+        if (DEBUG) System.out.println("Processing " + method);
+        ColorStat memberStats = new ColorStat(getMethodString(method), null);
+        TestMethodInformation.Color c = TestMethodInformation.Color.RED;
+        // if flagged, consider abstract method ok also without tests
+        if (_ignoreInterfacesAndAbstractMethods && method instanceof MethodDoc
+                && ((MethodDoc)method).isAbstract()) {
+            c = TestMethodInformation.Color.GREEN;
+            memberStats.setExtra("ignored since abstract");
+        } else {
+            AnnotationPointer ap = getAnnotationPointer(method, false);
+            int testedByCnt = 0;
+            if (ap != null) {
+                List<TestTargetNew> targets = ap.getTargets();
+                testedByCnt = targets.size();
+                if (testedByCnt == 0) {
+                    throw new RuntimeException(
+                            "existing annotation pointer with no entries!, "
+                                    + "method:" + method);
+                }
+                // at least tested by one method
+                String by = "<ul>";
+                int completeTestCnt = 0;
+                int partialOkTestCnt = 0;
+                int partialTestCnt = 0;
+                int todoTestCnt = 0;
+                int notFeasableTestCnt = 0;
+                int notNecessaryTestCnt = 0;
+                int sufficientTestCnt = 0;
+                // int totalCnt = targets.size();
+
+                for (TestTargetNew target : targets) {
+                    Originator originator = target.getOriginator();
+                    boolean disabledTest = originator.isDisabled();
+                    boolean brokenTest = originator.getBrokenTest() != null;
+                    boolean toBeFixed = originator.getToBeFixed() != null;
+                    boolean knownFailure = originator.getKnownFailure() != null;
+                    by += "<li>" + originator.asString();
+                    TestMethodInformation.Level lev;
+                    if (target.isHavingProblems()) {
+                        lev = TestMethodInformation.Level.TODO;
+                    } else {
+                        lev = target.getLevel();
+                    }
+                    // TODO: improve: avoid c&p by adding ColorStat.addInfo
+                    // (originator) or similar
+                    if (disabledTest) {
+                        memberStats.incDisabledTestsCnt();
+                    }
+                    if (brokenTest) {
+                        memberStats.incBrokenTestCnt();
+                    }
+                    if (toBeFixed) {
+                        memberStats.incToBeFixedCnt();
+                    }
+                    if (knownFailure) {
+                        memberStats.incKnownFailureCnt();
+                    }
+
+                    boolean lComplete = lev == TestMethodInformation.Level.COMPLETE;
+                    boolean lSufficient = lev == TestMethodInformation.Level.SUFFICIENT;
+                    boolean lPartialOk = lev == TestMethodInformation.Level.PARTIAL_COMPLETE;
+                    boolean lPartial = lev == TestMethodInformation.Level.PARTIAL;
+                    boolean lTodo = lev == TestMethodInformation.Level.TODO;
+                    boolean lNotFeasible = lev == TestMethodInformation.Level.NOT_FEASIBLE;
+                    boolean lNotNecessary = lev == TestMethodInformation.Level.NOT_NECESSARY;
+
+                    by += " <font color=\""
+                            + (lComplete || lPartialOk || lSufficient
+                                    || lNotFeasible || lNotNecessary ? "green"
+                                    : "red")
+                            + "\"><b>"
+                            + lev.name()
+                            + "</b></font>"
+                            + (target.getNotes() != null ? "<br>Notes: "
+                                    + target.getNotes() : "");
+
+                    // only count tests when they are either ok (not disabled)
+                    // or if the doIncludeDisabledTests flag is set
+                    if ((_doIncludeDisabledTests || !disabledTest)
+                            && (!brokenTest) && (!toBeFixed)) {
+                        if (lComplete) {
+                            completeTestCnt++;
+                        } else if (lPartialOk) {
+                            partialOkTestCnt++;
+                        } else if (lPartial) {
+                            partialTestCnt++;
+                        } else if (lTodo) {
+                            todoTestCnt++;
+                        } else if (lSufficient) {
+                            sufficientTestCnt++;
+                        } else if (lNotFeasible) {
+                            notFeasableTestCnt++;
+                        } else if (lNotNecessary) {
+                            notNecessaryTestCnt++;
+                        }
+                    }
+
+                    if (toBeFixed) {
+                        partialTestCnt++;
+                    }
+
+                    if (DEBUG) {
+                        System.out.println("completeTestCnt: " + completeTestCnt
+                            + ", partialOkTestCnt: " + partialOkTestCnt
+                            + ", partialTestCnt: " + partialTestCnt
+                            + ", todoTestCnt: " + todoTestCnt
+                            + ", sufficientTestCnt: " + sufficientTestCnt
+                            + ", notFeasableTestCnt: " + notFeasableTestCnt
+                            + ", notNecessaryTestCnt: " + notNecessaryTestCnt);
+                    }
+                    by += "</li>";
+                }
+
+                String warnings = "";
+                // calculate the color
+                int singularTestCnt = notFeasableTestCnt + notNecessaryTestCnt;
+                boolean isAbstract = (method.containingClass().isInterface() ||
+                        (method instanceof MethodDoc) && ((MethodDoc)method).isAbstract());
+
+                if (_acceptCompleteWithOtherStatus
+                        && (completeTestCnt > 0 || sufficientTestCnt > 0)) {
+                    c = TestMethodInformation.Color.GREEN;
+                } else if (_acceptCompleteWithOtherStatus
+                        && (partialOkTestCnt > 1)) {
+                    c = TestMethodInformation.Color.GREEN;
+                } else {
+                    if (singularTestCnt > 0) {
+                        // we have tests which claim not_neccessary or
+                        // not_feasible
+                        if (targets.size() > singularTestCnt) {
+                            // other tests exist
+                            c = TestMethodInformation.Color.RED;
+                            warnings += "<b>WARNING:</b>NOT_FEASIBLE or "
+                                    + "NOT_NECESSARY together with other "
+                                    + "status!<br>";
+                        } else {
+                            // a collection of not_necessary and/or not_feasible
+                            if (notNecessaryTestCnt > 0
+                                    && notFeasableTestCnt > 0) {
+                                // a blend of both -> error
+                                warnings += "<b>WARNING:</b>both NOT_FEASIBLE "
+                                        + "and NOT_NECESSARY together!<br>";
+                                c = TestMethodInformation.Color.RED;
+                            } else { // just one sort of tests -> ok and
+                                // sufficent
+                                c = TestMethodInformation.Color.GREEN;
+                            }
+                        }
+                    } else if (todoTestCnt > 0) {
+                        c = TestMethodInformation.Color.RED;
+                    } else if (partialTestCnt > 0) {
+                        // at least one partial test
+                        c = TestMethodInformation.Color.YELLOW;
+                        if (completeTestCnt > 0 || sufficientTestCnt > 0) {
+                            if (_acceptCompleteWithOtherStatus) {
+                                // accept complete even if there are partials
+                                c = TestMethodInformation.Color.GREEN;
+                            } else if (completeTestCnt > 0) {
+                                // yellow+warning: mixed PARTIAL_COMPLETE and
+                                // COMPLETE status
+                                warnings += "<b>WARNING</b>: mixed PARTIAL "
+                                        + "and COMPLETE status<br>";
+                            }
+                        }
+                    } else if (partialOkTestCnt > 0 || sufficientTestCnt > 0) {
+                        // at least one partialOk test and no partial tests
+                        c = TestMethodInformation.Color.GREEN;
+                        if (partialOkTestCnt == 1) {
+                            // yellow: 1 PARTIAL_COMPLETE (we need either zero
+                            // or >=2 PARTIAL_OK tests)
+                            warnings += "<b>WARNING</b>: only one "
+                                    + "PARTIAL_COMPLETE status<br>";
+                            c = TestMethodInformation.Color.YELLOW;
+                        }
+                    } else if (completeTestCnt > 0 || singularTestCnt == 1) {
+                        // only complete tests
+                        c = TestMethodInformation.Color.GREEN;
+                    }
+
+                    if (completeTestCnt > 1 && !isAbstract
+                            && !_acceptCompleteWithOtherStatus) {
+                        // green+warning: >1 COMPLETE (we need either 0 or 1
+                        // COMPLETE, more would be strange, but possible)
+                        warnings += "<b>WARNING</b>: more than one "
+                                + "COMPLETE status<br>";
+                        if (c != TestMethodInformation.Color.RED) {
+                            c = TestMethodInformation.Color.YELLOW;
+                        }
+                    }
+                }
+                by = warnings + by;
+                memberStats.setExtra(by);
+            } else { // else this class has no single test that targets the
+                // current method
+                // handle special cases:
+
+                // can be ok if the current method is a default constructor
+                // which does not occur in the source code.
+                if (method.isConstructor() && method.signature().equals("()")) {
+                    if (method.position() != null) {
+                        // hacky stuff - the doclet should return null for a
+                        // default constructor,
+                        // but instead returns a source position pointing to the
+                        // same location as
+                        // the class.
+                        String constPos = method.position().toString();
+                        String classPos = method.containingClass().position()
+                                .toString();
+                        if (constPos.equals(classPos)) {
+                            // we have a default constructor not visible in
+                            // source code -> mark green, no testing needed
+                            c = TestMethodInformation.Color.GREEN;
+                            memberStats
+                                    .setExtra("automatically marked green "
+                                            + "since implicit default "
+                                            + "constructor");
+                        }
+                    } else {
+                        // should be called for default constructors according
+                        // to the doclet spec, but is never called.
+                        // spec:
+                        // "A default constructor returns null because it has no
+                        // location in the source file"
+                        // ??
+                        // what about default constructors being in the source
+                        // code?
+                        System.err.println("warning: doclet returned null for "
+                                + "source position: method:" + method);
+                    }
+                } else if (method.containingClass().superclass() != null
+                        && method.containingClass().superclass()
+                                .qualifiedName().equals("java.lang.Enum")) {
+                    // check enum types
+                    // <anyreturnclass> valueOf (java.lang.String) and
+                    // <anyreturnclass[]> values()
+                    // do not need to be tested, since they are autogenerated
+                    // by the compiler
+                    String sig = method.name() + method.signature();
+                    if (sig.equals("valueOf(java.lang.String)")
+                            || sig.equals("values()")) {
+                        c = TestMethodInformation.Color.GREEN;
+                        memberStats
+                                .setExtra("automatically marked green since "
+                                        + "generated by compiler for enums");
+                    }
+                }
+            }
+        }
+        memberStats.incColor(c);
+        return memberStats;
+    }
+
+    private String getMethodString(ExecutableMemberDoc method) {
+        String methodDesc = (method.isPublic() ? "public " : method
+                .isProtected() ? "protected " : method.isPrivate() ? "private "
+                : "");
+
+        return methodDesc + "<b>" + method.name() + "</b> "
+                + method.signature();
+    }
+
+    private String getClassString(ClassDoc clazz) {
+        return (clazz.isPublic() ? "public "
+                : clazz.isProtected() ? "protected "
+                        : clazz.isPrivate() ? "private " : "")
+                + (clazz.isInterface() ? "interface" : "class")
+                + " "
+                + clazz.name();
+    }
+
+    private void printTestStats(TablePrinter printer, ColorStat stat,
+            boolean wantLink) {
+        printStats(printer, stat, wantLink);
+    }
+
+    private void printStats(TablePrinter printer, ColorStat stat,
+            boolean wantLink) {
+        int redCnt = stat.getColorCnt(TestMethodInformation.Color.RED);
+        int yellowCnt = stat.getColorCnt(TestMethodInformation.Color.YELLOW);
+        int greenCnt = stat.getColorCnt(TestMethodInformation.Color.GREEN);
+        int disabledCnt = stat.getDisabledTestsCnt();
+        int brokenTestCnt = stat.getBrokenTestCnt();
+        int toBeFixedCnt = stat.getToBeFixedCnt();
+        int knownFailureCnt = stat.getKnownFailureCnt();
+
+        int total = redCnt + yellowCnt + greenCnt;
+
+        String link = stat.getLink();
+        String namePart;
+        if (wantLink && link != null) {
+            namePart = "<a href=\"" + link + "\">" + stat.getName() + "</a>";
+        } else {
+            namePart = stat.getName();
+        }
+
+        String extra = stat.getExtra() == null ? "" : stat.getExtra();
+
+        int totalDots = 120;
+
+        float toP = total == 0 ? 0 : (((float)totalDots) / total);
+
+        int redD = (int)(toP * redCnt);
+        if (redD == 0 && redCnt > 0) {
+            // never let red cut to zero;
+            redD = 1;
+        }
+        int yellowD = (int)(toP * yellowCnt);
+        if (yellowD == 0 && yellowCnt > 0) {
+            yellowD = 1;
+        }
+        int greenD = totalDots - redD - yellowD; // (int)(toP*greenCnt);
+
+        printer.printRow(namePart, extra, "" + total, "" + redCnt, ""
+                + yellowCnt, "" + greenCnt, "" + disabledCnt, ""
+                + brokenTestCnt, "" + toBeFixedCnt, "" + knownFailureCnt, ""
+                + (redCnt == 0 ? "" : "<span style=\"background:"
+                        + COLORS[TestMethodInformation.Color.RED.ordinal()]
+                        + "\">" + getDots(redD) + "</span>")
+                + (yellowCnt == 0 ? "" : "<span style=\"background:"
+                        + COLORS[TestMethodInformation.Color.YELLOW.ordinal()]
+                        + "\">" + getDots(yellowD) + "</span>")
+                + (greenCnt == 0 && total > 0 ? ""
+                        : "<span style=\"background:"
+                                + COLORS[TestMethodInformation.Color.GREEN
+                                        .ordinal()] + "\">" + getDots(greenD)
+                                + "</span>")
+                + "&nbsp;&nbsp;&nbsp;<span style=\"background:blue\">"
+                + getDots(total / 10) + "</span>");
+    }
+
+    private String getDots(int cnt) {
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < cnt; i++) {
+            sb.append("&nbsp;");
+        }
+        return sb.toString();
+    }
+
+    /**
+     * Returns the directory for a given package. Basically converts embedded
+     * dots in the name into slashes.
+     */
+
+    private String getPackageBaseLink(PackageDoc pack) {
+        return pack.name().replace('.', '/');
+    }
+
+    private File getPackageDir(String prefix, PackageDoc pack) {
+        if (pack == null || pack.name() == null || "".equals(pack.name())) {
+            return new File(prefix + "/" + ".");
+        } else {
+            return new File(prefix + "/" + pack.name().replace('.', '/'));
+        }
+    }
+
+    /**
+     * Called by JavaDoc to find our which command line arguments are supported
+     * and how many parameters they take. Part of the JavaDoc API.
+     *
+     * @param option the options
+     * @return an int
+     */
+    public static int optionLength(String option) {
+        if ("-d".equals(option)) {
+            return 2;
+        }
+        if ("-f".equals(option)) {
+            return 2;
+        } else {
+            return 0;
+        }
+    }
+
+    /**
+     * Called by JavaDoc to query a specific command line argument. Part of the
+     * JavaDoc API.
+     */
+    private static String getOption(RootDoc root, String option, int index,
+            String defValue) {
+        String[][] allOptions = root.options();
+        for (int i = 0; i < allOptions.length; i++) {
+            if (allOptions[i][0].equals(option)) {
+                return allOptions[i][index];
+            }
+        }
+        return defValue;
+    }
+
+    /**
+     * Called by JavaDoc to find out which Java version we claim to support.
+     * Part of the JavaDoc API.
+     *
+     * @return the version of the language
+     */
+    public static LanguageVersion languageVersion() {
+        return LanguageVersion.JAVA_1_5;
+    }
+
+    /**
+     * The main entry point called by JavaDoc after all required information has
+     * been collected. Part of the JavaDoc API.
+     *
+     * @param root
+     * @return whether an error occurred
+     */
+    public static boolean start(RootDoc root) {
+        try {
+            String target = getOption(root, "-d", 1, ".");
+            TestCoverageDoclet doclet = new TestCoverageDoclet(target);
+            doclet.process(root);
+
+            File file = new File(target, "index.html");
+            System.out.println("Please see complete report in " + 
+                    file.getAbsolutePath());
+            
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            return false;
+        }
+        return true;
+    }
+
+}
diff --git a/tools/test-progress-new/src/testprogress2/TestMethodInformation.java b/tools/test-progress-new/src/testprogress2/TestMethodInformation.java
new file mode 100644
index 0000000..c609423
--- /dev/null
+++ b/tools/test-progress-new/src/testprogress2/TestMethodInformation.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package testprogress2;
+
+import com.sun.javadoc.AnnotationDesc;
+import com.sun.javadoc.AnnotationValue;
+import com.sun.javadoc.ClassDoc;
+import com.sun.javadoc.AnnotationDesc.ElementValuePair;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * represents a list of testtargets annotations all belonging to one test method
+ * / one testclass together with its processed information.
+ */
+public class TestMethodInformation {
+    private boolean annotationExists = false;
+
+    private List<TestTargetNew> targets = new ArrayList<TestTargetNew>();
+
+    private String error = null;
+
+    private Color color = Color.RED;
+
+    public enum Level {
+        TODO, PARTIAL, PARTIAL_COMPLETE, COMPLETE, ADDITIONAL, NOT_NECESSARY, NOT_FEASIBLE, SUFFICIENT
+    }
+
+    public enum Color {
+        GREEN /* ready */, YELLOW /* work */, RED
+        /* missing essential stuff */
+    }
+
+    public TestMethodInformation(Originator originator,
+            AnnotationDesc[] annots, ClassDoc targetClass) {
+        // System.out.println("looking at "+testMethodDoc);
+        if (targetClass == null) {
+            addError("target class annotation missing!");
+            return;
+        }
+
+        for (AnnotationDesc annot : annots) {
+            if (annot.annotationType().qualifiedName().equals(
+                    "dalvik.annotation.TestTargets")) {
+                // multi target case
+                annotationExists = true;
+                ElementValuePair[] pairs = annot.elementValues();
+                if (pairs.length != 1
+                        && !pairs[0].element().qualifiedName().equals(
+                                "dalvik.annotation.TestTargets.value")) {
+                    throw new RuntimeException("TestTargets has mismatched "
+                            + "attributes");
+                }
+                AnnotationValue[] targets = (AnnotationValue[])pairs[0].value()
+                        .value();
+                for (AnnotationValue ttn : targets) {
+                    // the test targets must be annotations themselves
+                    AnnotationDesc ttnd = (AnnotationDesc)ttn.value();
+                    handleTestTargetNew(originator, ttnd, targetClass);
+                }
+            } else if (annot.annotationType().qualifiedName().equals(
+                    "dalvik.annotation.TestTargetNew")) {
+                // singular case
+                annotationExists = true;
+                handleTestTargetNew(originator, annot, targetClass);
+            } // else some other annotation - ignore
+        }
+
+        boolean targetsCorrect = true;
+        for (TestTargetNew ttn : targets) {
+            targetsCorrect &= (ttn.getTargetMethod() != null || ttn
+                    .getTargetClass() != null);
+        }
+
+        // calculate color of test method
+        if (annotationExists) {
+            if (targetsCorrect) {
+                color = Color.GREEN;
+            } // else incorrect targets
+        } else {
+            addError("no annotation!");
+        }
+    }
+
+    private void handleTestTargetNew(Originator originator, AnnotationDesc ttn,
+            ClassDoc targetClass) {
+        TestTargetNew testTarget = new TestTargetNew(originator, ttn,
+                targetClass);
+        if (testTarget.isHavingProblems()) {
+            // add to overall message
+            addError(testTarget.getNotes());
+        }
+        targets.add(testTarget);
+    }
+
+    private void addError(String err) {
+        if (error == null)
+            error = "";
+        error += err + " ; ";
+    }
+
+    /**
+     * @return the error
+     */
+    public String getError() {
+        return error;
+    }
+
+    public List<TestTargetNew> getTargets() {
+        return targets;
+    }
+
+    public Color getColor() {
+        return color;
+    }
+
+}
diff --git a/tools/test-progress-new/src/testprogress2/TestTargetNew.java b/tools/test-progress-new/src/testprogress2/TestTargetNew.java
new file mode 100644
index 0000000..6102614
--- /dev/null
+++ b/tools/test-progress-new/src/testprogress2/TestTargetNew.java
@@ -0,0 +1,373 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package testprogress2;
+
+import com.sun.javadoc.AnnotationDesc;
+import com.sun.javadoc.AnnotationValue;
+import com.sun.javadoc.ClassDoc;
+import com.sun.javadoc.ExecutableMemberDoc;
+import com.sun.javadoc.FieldDoc;
+import com.sun.javadoc.Parameter;
+import com.sun.javadoc.ParameterizedType;
+import com.sun.javadoc.Type;
+import com.sun.javadoc.TypeVariable;
+import com.sun.javadoc.AnnotationDesc.ElementValuePair;
+
+import testprogress2.TestMethodInformation.Level;
+
+/**
+ * holder for a TestTargetNew annotation
+ */
+public class TestTargetNew {
+    private final Originator originator;
+
+    private Level level = null;
+
+    private String notes = null;
+
+    /*
+     * method or constructor of target class
+     */
+    private ExecutableMemberDoc targetMethod = null;
+
+    /*
+     * only set if the target points -only- to a class, not to a method. e.g for
+     * special "!..." targets
+     */
+    private ClassDoc targetClass = null;
+
+    /*
+     * read from annotation, e.g. foobar(java.lang.String)
+     */
+    private String readMethodSignature = null;
+
+    /*
+     * e.g. foobar
+     */
+    private String readMethodName = null;
+
+    /*
+     * read from annotation
+     */
+    private ClassDoc readTargetClass = null;
+
+    private boolean havingProblems = false;
+
+    private TestTargetNew(Originator originator) {
+        this.originator = originator;
+    }
+
+    /**
+     * @param originator the origin (class or method)
+     * @param ttn the annotation (testtargetnew)
+     * @param classLevelTargetClass the default target class as given in the
+     *            testtargetclass annotation
+     */
+    public TestTargetNew(Originator originator, AnnotationDesc ttn,
+            ClassDoc classLevelTargetClass) {
+        this.originator = originator;
+        parseTargetClassAndMethodSignature(ttn, classLevelTargetClass);
+        // post: readMethod, readMethodSignature and readTargetClass are now set
+
+        // test for artificial method targets
+        if (readMethodName.startsWith("!")) {
+            targetMethod = null;
+            targetClass = readTargetClass;
+            // level = Level.ADDITIONAL;
+            // notes already set
+            notes = "target: " + readMethodName
+                    + (notes != null ? ", " + "notes: " + notes : "");
+
+        } else if (level == Level.TODO) {
+            notes = "TODO :" + notes;
+            havingProblems = true;
+        } else {
+            // prepare method target:
+            // if the signature contains a "." then the prefix is used as a
+            // reference
+            // to an inner class. This is an alternative to using the clazz
+            // attribute in cases where the class is an inner protected class,
+            // because then the inner class is not visible for the compiler at
+            // the
+            // place of the annotation.
+            // e.g. clazz = Certificate.CertificateRep.class does not work,
+            // so we use clazz = Certificate.class (enclosing class), and method
+            // "Certificate.CertificateRep.<methodHere>", e.g.
+            // "CertificateRep.CertificateRep"
+            // to denote the constructor of the inner protected class
+            // CertificateRep
+            // within Certificate
+            int dotPos = readMethodName.lastIndexOf('.');
+            if (dotPos != -1) {
+                String prefixClassName = readMethodName.substring(0, dotPos);
+                readMethodName = readMethodName.substring(dotPos + 1);
+                ClassDoc[] iCs = readTargetClass.innerClasses();
+                for (ClassDoc iC : iCs) {
+                    if (iC.name().equals(prefixClassName)) {
+                        readTargetClass = iC;
+                        break;
+                    }
+                }
+            }
+
+            String methodAndSig = readMethodName + readMethodSignature;
+            ExecutableMemberDoc tmeth = findMethodSignatureIn(methodAndSig,
+                    readTargetClass);
+            // we need this double test for the note below
+            if (tmeth == null) {
+                // a) wrong signature or
+                // b) a testMethod in a superclass or superinterface, ok also
+                tmeth = findTargetMethodInSelfAndSupers(methodAndSig,
+                        readTargetClass);
+                if (tmeth != null) {
+                    if (notes == null)
+                        notes = "";
+                    notes += "- targetmethod (" + tmeth + ") was found in a "
+                            + "superclass/superinterface of the target<br>";
+                }
+            }
+            if (tmeth != null) {
+                // found
+                targetMethod = tmeth;
+            } else {
+                havingProblems = true;
+                notes = "From " + originator.asString()
+                        + " -> could not resolve " + "targetMethod for class "
+                        + readTargetClass + ", " + "annotation was:" + ttn
+                        + ", testMethodSig " + "= " + methodAndSig + "<br>";
+                System.err.println(">>> warning: " + notes);
+            }
+        }
+    }
+
+    private ExecutableMemberDoc findMethodSignatureIn(String sig,
+            ClassDoc targetClass) {
+        ExecutableMemberDoc targetMethod = null;
+        // find the matching method in the target class, check all methods
+        for (ExecutableMemberDoc mdoc : targetClass.methods()) {
+            if (equalsSignature(mdoc, sig)) {
+                return mdoc;
+            }
+        }
+        // check constructors, too
+        for (ExecutableMemberDoc mdoc : targetClass.constructors()) {
+            if (equalsSignature(mdoc, sig)) {
+                return mdoc;
+            }
+        }
+        return null;
+    }
+
+    private ExecutableMemberDoc findTargetMethodInSelfAndSupers(String sig,
+            ClassDoc targetClass) {
+        ExecutableMemberDoc mem = findMethodSignatureIn(sig, targetClass);
+        if (mem != null) {
+            return mem;
+        }
+
+        // else visit parent class or parent interface(s)
+        ClassDoc[] ifs = targetClass.interfaces();
+        for (int i = 0; i < ifs.length; i++) {
+            ClassDoc iface = ifs[i];
+            mem = findTargetMethodInSelfAndSupers(sig, iface);
+            if (mem != null) {
+                return mem;
+            }
+        }
+
+        ClassDoc superclass = targetClass.superclass();
+        if (superclass != null) {
+            mem = findTargetMethodInSelfAndSupers(sig, superclass);
+            if (mem != null) {
+                return mem;
+            }
+        }
+        return null;
+    }
+
+    private void parseTargetClassAndMethodSignature(AnnotationDesc targetAnnot,
+            ClassDoc targetClass) {
+        ElementValuePair[] pairs = targetAnnot.elementValues();
+        String methodName = null;
+        String args = "";
+        for (ElementValuePair kval : pairs) {
+            if (kval.element().name().equals("method")) {
+                methodName = (String)kval.value().value();
+            } else if (kval.element().name().equals("clazz")) {
+                // optional: a different target class than the test-class-level
+                // default.
+                Object obj = kval.value().value();
+                if (obj instanceof ClassDoc) {
+                    targetClass = (ClassDoc)obj;
+                } else if (obj instanceof ParameterizedType) {
+                    targetClass = ((ParameterizedType)obj).asClassDoc();
+                } else {
+                    throw new RuntimeException("annotation elem value is of "
+                            + "type " + obj.getClass().getName() + " target "
+                            + "annotation = " + targetAnnot);
+                }
+            } else if (kval.element().name().equals("args")) {
+                AnnotationValue[] vals = (AnnotationValue[])kval.value()
+                        .value();
+                for (int i = 0; i < vals.length; i++) {
+                    AnnotationValue arg = vals[i];
+                    String argV;
+                    // TODO: we should be able to use Type.asClassDoc() here
+                    if (arg.value() instanceof ClassDoc) {
+                        ClassDoc cd = (ClassDoc)arg.value();
+                        argV = cd.qualifiedName();
+                    } else { // primitive type or array type
+                        // is there a nicer way to do this?
+                        argV = arg.toString();
+                    }
+                    // strip .class out of args since signature does not contain
+                    // those
+                    if (argV.endsWith(".class")) {
+                        argV = argV.substring(0, argV.length() - 6);
+                    }
+                    args += (i > 0 ? "," : "") + argV;
+                }
+            } else if (kval.element().name().equals("level")) {
+                AnnotationValue lev = kval.value();
+                FieldDoc fd = (FieldDoc)lev.value();
+                String slevel = fd.name();
+
+                try {
+                    level = Enum.valueOf(Level.class, slevel);
+                } catch (IllegalArgumentException iae) {
+                    throw new RuntimeException("COMPILE ERROR!!! enum "
+                            + slevel + " used in targetMethod for class "
+                            + "\"+targetClass+\", "
+                            + "annotation was:\"+targetAnnot+\", "
+                            + "testMethod = \"+methodDoc.toString()");
+                }
+            } else if (kval.element().name().equals("notes")) {
+                notes = (String)kval.value().value();
+                if (notes.equals("")) {
+                    notes = null;
+                }
+            }
+        }
+
+        // String refSig = methodName + "(" + args + ")";
+        // both methodName and methodArgs != null because of Annotation
+        // definition
+        this.readTargetClass = targetClass;
+        this.readMethodSignature = "(" + args + ")";
+        this.readMethodName = methodName;
+    }
+
+    private boolean equalsSignature(ExecutableMemberDoc mdoc,
+            String refSignature) {
+        Parameter[] params = mdoc.parameters();
+        String targs = "";
+        for (int i = 0; i < params.length; i++) {
+            Parameter parameter = params[i];
+            // check for generic type types
+            Type ptype = parameter.type();
+
+            TypeVariable typeVar = ptype.asTypeVariable();
+            String ptname;
+            if (typeVar != null) {
+                ptname = "java.lang.Object"; // the default fallback
+                Type[] bounds = typeVar.bounds();
+                if (bounds.length > 0) {
+                    ClassDoc typeClass = bounds[0].asClassDoc();
+                    ptname = typeClass.qualifiedName();
+                }
+                String dim = ptype.dimension();
+                if (dim != null && dim.length() > 0) {
+                    ptname += dim;
+                }
+            } else {
+                // regular var
+                // ptname = parameter.type().qualifiedTypeName();
+                ptname = parameter.type().toString();
+
+                // System.out.println("quali:"+ptname);
+                // ptname = parameter.typeName();
+                // omit type signature
+                ptname = ptname.replaceAll("<.*>", "");
+            }
+            targs += (i > 0 ? "," : "") + ptname;
+        }
+
+        String methodName = mdoc.name();
+        int lastDot = methodName.lastIndexOf('.');
+        if (lastDot != -1) {
+            // we have a inner class constructor
+            // shrink the name to just name the constructor
+            methodName = methodName.substring(lastDot + 1);
+        }
+
+        String testSig = methodName + "(" + targs + ")";
+
+        // return testSig.equals(refSignature);
+        if (testSig.equals(refSignature)) {
+            // System.out.println("match!!!: ref = "+refSignature+",
+            // test = "+testSig);
+            return true;
+        } else {
+            // System.out.println("no match: ref = "+refSignature+",
+            // test = "+testSig);
+            return false;
+        }
+    }
+
+    public Level getLevel() {
+        return level;
+    }
+
+    public boolean isHavingProblems() {
+        return havingProblems;
+    }
+
+    public Originator getOriginator() {
+        return originator;
+    }
+
+    TestTargetNew cloneMe(String extraNote) {
+        TestTargetNew anew = new TestTargetNew(this.originator);
+        anew.level = this.level;
+        anew.notes = this.notes;
+        anew.targetMethod = this.targetMethod;
+        anew.readMethodSignature = this.readMethodSignature;
+        anew.readTargetClass = this.readTargetClass;
+
+        // mark indirectly tested method always as green, independent
+        // of the original status (to better estimate workload)
+        // anew.level = Level.COMPLETE;
+        anew.notes = extraNote + (notes != null ? ", " + notes : "");
+        return anew;
+    }
+
+    public ExecutableMemberDoc getTargetMethod() {
+        return targetMethod;
+    }
+
+    /**
+     * @return the class of the testtargetnew which method starts with "!", null
+     *         otherwise
+     */
+    public ClassDoc getTargetClass() {
+        return targetClass;
+    }
+
+    public String getNotes() {
+        return notes;
+    }
+}
diff --git a/tools/test-progress/Android.mk b/tools/test-progress/Android.mk
new file mode 100644
index 0000000..0cdab2e
--- /dev/null
+++ b/tools/test-progress/Android.mk
@@ -0,0 +1,15 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_IS_HOST_MODULE := true
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_MODULE := test-progress
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/etc/test-progress | $(ACP)
+	@echo "Copy: $(PRIVATE_MODULE) ($@)"
+	$(copy-file-to-new-target)
+	$(hide) chmod 755 $@
+
+include $(LOCAL_PATH)/src/Android.mk
diff --git a/tools/test-progress/etc/test-progress b/tools/test-progress/etc/test-progress
new file mode 100644
index 0000000..5e42cc5
--- /dev/null
+++ b/tools/test-progress/etc/test-progress
@@ -0,0 +1,324 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Set up prog to be the path of this script, including following symlinks,
+# and set up progdir to be the fully-qualified pathname of its directory.
+prog="$0"
+while [ -h "${prog}" ]; do
+    newProg=`/bin/ls -ld "${prog}"`
+    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
+    if expr "x${newProg}" : 'x/' >/dev/null; then
+        prog="${newProg}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${newProg}"
+    fi
+done
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+libdir=`dirname $progdir`/framework
+
+javaOpts=""
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "$1" : '-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    shift
+done
+
+#exec java $javaOpts -jar $libdir/hat.jar "$@"
+
+#######################################################################
+# Original content of invocation script follows. Uses values cleverly
+# deduced by the above code. If you want to use this for a different
+# set of packages, adjust both the list of source directories and the
+# list of packages.
+#######################################################################
+export CLASSES=$progdir/../framework/test-progress.jar
+export INPUT=$ANDROID_BUILD_TOP
+export OUTPUT=$ANDROID_BUILD_TOP/out/target/common/cts/test-progress
+
+if [ "$1" != "" ]; then
+   export OUTPUT=$1
+fi
+
+# These two variables are defined for run the coverage tool for Dalvik or CTS
+DALVIK_SOURCE_PATH="\
+${INPUT}/dalvik/libcore/junit/src/main/java:\
+${INPUT}/dalvik/libcore/icu/src/main/java:\
+${INPUT}/dalvik/libcore/openssl/src/main/java:\
+${INPUT}/dalvik/libcore/android/src/main/java:\
+${INPUT}/dalvik/libcore/annotation/src/main/java:\
+${INPUT}/dalvik/libcore/archive/src/main/java:\
+${INPUT}/dalvik/libcore/auth/src/main/java:\
+${INPUT}/dalvik/libcore/awt/src/main/java:\
+${INPUT}/dalvik/libcore/beans/src/main/java:\
+${INPUT}/dalvik/libcore/concurrent/src/main/java:\
+${INPUT}/dalvik/libcore/crypto/src/main/java:\
+${INPUT}/dalvik/libcore/instrument/src/main/java:\
+${INPUT}/dalvik/libcore/logging/src/main/java:\
+${INPUT}/dalvik/libcore/luni/src/main/java:\
+${INPUT}/dalvik/libcore/luni-kernel/src/main/java:\
+${INPUT}/dalvik/libcore/math/src/main/java:\
+${INPUT}/dalvik/libcore/nio/src/main/java:\
+${INPUT}/dalvik/libcore/nio_char/src/main/java:\
+${INPUT}/dalvik/libcore/prefs/src/main/java:\
+${INPUT}/dalvik/libcore/regex/src/main/java:\
+${INPUT}/dalvik/libcore/security/src/main/java:\
+${INPUT}/dalvik/libcore/security-kernel/src/main/java:\
+${INPUT}/dalvik/libcore/sound/src/main/java:\
+${INPUT}/dalvik/libcore/sql/src/main/java:\
+${INPUT}/dalvik/libcore/text/src/main/java:\
+${INPUT}/dalvik/libcore/xml/src/main/java:\
+${INPUT}/dalvik/libcore/x-net/src/main/java:\
+${INPUT}/java/android:\
+${INPUT}/tests/framework-tests/src:\
+${INPUT}/apps/AndroidTests/src:\
+${INPUT}/apps/TestHarness/tests:\
+${INPUT}/apps/TestHarness/src:\
+${INPUT}/java/tests:\
+${INPUT}/dalvik/libcore/text/src/test/java:\
+${INPUT}/dalvik/libcore/support/src/test/java:\
+${INPUT}/dalvik/libcore/nio_char/src/test/java:\
+${INPUT}/dalvik/libcore/nio/src/test/java:\
+${INPUT}/dalvik/libcore/regex/src/test/java:\
+${INPUT}/dalvik/libcore/xml/src/test/java:\
+${INPUT}/dalvik/libcore/prefs/src/test/java:\
+${INPUT}/dalvik/libcore/x-net/src/test/java:\
+${INPUT}/dalvik/libcore/luni-kernel/src/test/java:\
+${INPUT}/dalvik/libcore/sql/src/test/java:\
+${INPUT}/dalvik/libcore/security/src/test/java:\
+${INPUT}/dalvik/libcore/math/src/test/java:\
+${INPUT}/dalvik/libcore/logging/src/test/java:\
+${INPUT}/dalvik/libcore/luni/src/test/java:\
+${INPUT}/dalvik/libcore/archive/src/test/java:\
+${INPUT}/dalvik/libcore/annotation/src/test/java:\
+${INPUT}/dalvik/libcore/dalvik/src/main/java:\
+${INPUT}/tests/HttpClient:\
+${INPUT}/apps/Mms/tests:\
+ \
+SQLite \
+junit.framework \
+org.apache.harmony.logging.tests.java.util.logging \
+org.apache.harmony.luni.tests.java.io \
+org.apache.harmony.luni.tests.java.lang \
+org.apache.harmony.luni.tests.java.lang.ref \
+org.apache.harmony.luni.tests.java.net \
+org.apache.harmony.luni.tests.java.util \
+org.apache.harmony.nio.tests.java.nio \
+org.apache.harmony.nio.tests.java.nio.channels \
+org.apache.harmony.nio.tests.java.nio.channels.spi \
+org.apache.harmony.nio_char.tests.java.nio.charset \
+org.apache.harmony.nio_char.tests.java.nio.charset.spi \
+org.apache.harmony.prefs.tests.java.util.prefs \
+org.apache.harmony.sql.tests.java.sql \
+org.apache.harmony.sql.tests.javax.sql \
+org.apache.harmony.tests.java.math \
+org.apache.harmony.tests.java.util.regex \
+org.apache.harmony.text.tests.java.text \
+tests.api.android.dalvik \
+tests.api.java.io \
+tests.api.java.lang \
+tests.api.java.lang.ref \
+tests.api.java.lang.reflect \
+tests.api.java.math \
+tests.api.java.net \
+tests.api.java.nio.charset \
+tests.api.java.util \
+tests.api.javax.net \
+tests.api.javax.net.ssl \
+tests.api.javax.xml.parsers \
+tests.java.lang.StrictMath \
+tests.java.sql \
+tests.sql \
+tests.xml \
+java.awt \
+java.awt.color \
+java.awt.event \
+java.awt.font \
+java.awt.geom \
+java.awt.im \
+java.awt.im.spi \
+java.awt.image \
+java.awt.image.renderable \
+javax.imageio \
+javax.imageio.event \
+javax.imageio.metadata \
+javax.imageio.plugins.bmp \
+javax.imageio.plugins.jpeg \
+javax.imageio.spi \
+javax.imageio.stream \
+java.io \
+java.lang \
+java.lang.annotation \
+java.lang.instrument \
+java.lang.ref \
+java.lang.reflect \
+java.math \ 
+java.net \
+java.nio \
+java.nio.channels \
+java.nio.channels.spi \
+java.nio.charset \
+java.nio.charset.spi \
+java.security \
+java.security.acl \
+java.security.cert \
+java.security.interfaces \
+java.security.spec \
+java.sql \
+java.text \
+java.util \
+java.util.concurrent \
+java.util.concurrent.atomic \
+java.util.concurrent.locks \
+java.util.jar \
+java.util.logging \
+java.util.prefs \
+java.util.regex \
+java.util.zip \
+javax.crypto \
+javax.crypto.interfaces \
+javax.crypto.spec \
+javax.net \
+javax.net.ssl \
+javax.security.auth \
+javax.security.auth.callback \
+javax.security.auth.login \
+javax.security.auth.x500 \
+javax.security.cert \
+javax.sound.midi \
+javax.sound.midi.spi \
+javax.sound.sampled \
+javax.sound.sampled.spi \
+javax.sql \
+javax.xml.parsers \
+org.w3c.dom \
+org.xml.sax \
+org.xml.sax.ext \
+org.xml.sax.helpers"
+
+CTS_SOURCE_PATH="\
+${INPUT}/frameworks/base/core/java:\
+${INPUT}/frameworks/base/graphics/java:\
+${INPUT}/frameworks/base/location/java:\
+${INPUT}/frameworks/base/media/java:\
+${INPUT}/frameworks/base/opengl/java:\
+${INPUT}/frameworks/base/sax/java:\
+${INPUT}/frameworks/base/telephony/java:\
+${INPUT}/frameworks/base/wifi/java:\
+${INPUT}/cts/tests/tests/app/src:\
+${INPUT}/cts/tests/tests/content/src:\
+${INPUT}/cts/tests/tests/database/src:\
+${INPUT}/cts/tests/tests/graphics/src:\
+${INPUT}/cts/tests/tests/hardware/src:\
+${INPUT}/cts/tests/tests/location/src:\
+${INPUT}/cts/tests/tests/media/src:\
+${INPUT}/cts/tests/tests/net/src:\
+${INPUT}/cts/tests/tests/os/src:\
+${INPUT}/cts/tests/tests/provider/src:\
+${INPUT}/cts/tests/tests/preference/src:\
+${INPUT}/cts/tests/tests/telephony/src:\
+${INPUT}/cts/tests/tests/text/src:\
+${INPUT}/cts/tests/tests/util/src:\
+${INPUT}/cts/tests/tests/view/src:\
+${INPUT}/cts/tests/tests/widget/src:\
+${INPUT}/cts/tests/src:\
+${INPUT}/frameworks/base/test-runner:\
+${INPUT}/dalvik/libcore/dalvik/src/main/java:\
+${INPUT}/dalvik/libcore/xml/src/main/java:\
+${INPUT}/dalvik/libcore/junit/src/main/java:\
+ \
+android.app \
+android.app.cts \
+android.content \
+android.content.cts \
+android.content.pm \
+android.content.pm.cts \
+android.content.res \
+android.content.res.cts \
+android.location \
+android.location.cts \
+android.os \
+android.os.cts \
+android.text \
+android.text.cts \
+android.text.method \
+android.text.method.cts \
+android.text.style \
+android.text.style.cts \
+android.text.util \
+android.text.util.cts \
+android.util \
+android.util.cts \
+android.view \
+android.view.cts \
+android.view.animation \
+android.view.animation.cts \
+android.view.inputmethod \
+android.view.inputmethod.cts \
+android.widget \
+android.widget.cts \
+android.hardware \
+android.hardware.cts \
+android.net \
+android.net.cts \
+android.net.http \
+android.net.http.cts \
+android.net.wifi \
+android.net.wifi.cts \
+android.provider \
+android.provider.cts \
+android.bluetooth \
+android.bluetooth.cts \
+android.database \
+android.database.cts \
+android.database.sqlite \
+android.database.sqlite.cts \
+android.graphics \
+android.graphics.cts \
+android.graphics.drawable \
+android.graphics.drawable.cts \
+android.graphics.drawable.shapes \
+android.graphics.drawable.shapes.cts \
+android.media \
+android.media.cts \
+android.telephony \
+android.telephony.cts \
+android.telephony.gsm \
+android.telephony.gsm.cts \
+android.accounts \
+android.accounts.cts \
+android.opengl \
+android.opengl.cts \
+android.preference \
+android.preference.cts \
+android.sax \
+android.sax.cts \
+android.security \
+android.security.cts \
+android.speech.srec \
+android.speech.srec.cts \
+android.webkit \
+android.webkit.cts \
+android.webkit.gears \
+android.webkit.gears.cts"
+
+javadoc -J-Xmx512m -docletpath $CLASSES -doclet TestCoverageDoclet -d $OUTPUT -sourcepath ${CTS_SOURCE_PATH}
diff --git a/tools/test-progress/src/Android.mk b/tools/test-progress/src/Android.mk
new file mode 100644
index 0000000..0428e48
--- /dev/null
+++ b/tools/test-progress/src/Android.mk
@@ -0,0 +1,14 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+#LOCAL_MODULE_TAGS := cts
+
+LOCAL_SRC_FILES := \
+	TestCoverageDoclet.java
+
+LOCAL_CLASSPATH := \
+	$(HOST_JDK_TOOLS_JAR)
+
+LOCAL_MODULE:= test-progress
+
+include $(BUILD_HOST_JAVA_LIBRARY)
diff --git a/tools/test-progress/src/TestCoverageDoclet.java b/tools/test-progress/src/TestCoverageDoclet.java
new file mode 100644
index 0000000..c6bb7d0
--- /dev/null
+++ b/tools/test-progress/src/TestCoverageDoclet.java
@@ -0,0 +1,823 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import com.sun.javadoc.AnnotationDesc;
+import com.sun.javadoc.AnnotationTypeDoc;
+import com.sun.javadoc.AnnotationValue;
+import com.sun.javadoc.ClassDoc;
+import com.sun.javadoc.ConstructorDoc;
+import com.sun.javadoc.Doc;
+import com.sun.javadoc.ExecutableMemberDoc;
+import com.sun.javadoc.LanguageVersion;
+import com.sun.javadoc.MethodDoc;
+import com.sun.javadoc.PackageDoc;
+import com.sun.javadoc.Parameter;
+import com.sun.javadoc.ParameterizedType;
+import com.sun.javadoc.RootDoc;
+import com.sun.javadoc.SourcePosition;
+import com.sun.javadoc.Tag;
+import com.sun.javadoc.Type;
+import com.sun.javadoc.TypeVariable;
+import com.sun.javadoc.AnnotationDesc.ElementValuePair;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/*
+ */
+public class TestCoverageDoclet {
+
+    public static final int TYPE_FIELD = 0;
+    public static final int TYPE_METHOD = 1;
+    public static final int TYPE_CLASS = 2;
+    public static final int TYPE_PACKAGE = 3;
+    public static final int TYPE_ROOT = 4;
+    public static final int VALUE_RED = 0;
+    public static final int VALUE_YELLOW = 1;
+    public static final int VALUE_GREEN = 2;
+    public static final String[] COLORS = { "#ffa0a0", "#ffffa0", "#a0ffa0" };
+    public static final String[] TYPES = { "Field", "Method", "Class", "Package", "All packages" };
+
+    /**
+     * Holds our basic output directory.
+     */
+    private File directory;
+
+    private Map<ExecutableMemberDoc, AnnotationPointer> resolved =
+            new HashMap<ExecutableMemberDoc, AnnotationPointer>(8192);
+
+    /**
+     * Helper class for comparing element with each other, in oder to determine
+     * an order. Uses lexicographic order of names.
+     */
+    private class DocComparator implements Comparator<Doc> {
+        public int compare(Doc elem1, Doc elem2) {
+            return elem1.name().compareTo(elem2.name());
+        }
+
+        public boolean equals(Doc elem) {
+            return this == elem;
+        }
+    }
+
+    private class MemberComparator implements Comparator<ExecutableMemberDoc> {
+        public int compare(ExecutableMemberDoc mem1, ExecutableMemberDoc mem2) {
+            return mem1.toString().compareTo(mem2.toString());
+        }
+    }
+
+    class MyStats {
+        private String name;
+        private String link;
+        private int elemCnt = 0;
+        private int[] ryg = new int[3];
+        private String extra;
+
+        public MyStats(int type, String name, String link) {
+            this.name = name;
+            this.link = link;
+        }
+
+        public void add(MyStats subStats) {
+           elemCnt++;
+           for (int i = 0; i < ryg.length; i++) {
+               ryg[i]+= subStats.ryg[i];
+           }
+        }
+
+        public int getCountFor(int color) {
+            return ryg[color];
+        }
+
+        public String getStat() {
+            float coverage = (float)(ryg[1]+ryg[2]) / (float)(ryg[0]+ryg[1]+ryg[2]);
+            return "red: "+ryg[0]+", yellow:"+ryg[1]+", green:"+ryg[2]+",coverage:"+coverage;
+        }
+
+        public void inc(int color) {
+            ryg[color]++;
+        }
+
+        public String getLink() {
+            return link;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public String getExtra() {
+            return extra;
+        }
+
+        public void setExtra(String extra) {
+            this.extra = extra;
+        }
+    }
+
+    /**
+     * Holds our comparator instance for everything.
+     */
+    private DocComparator comparator = new DocComparator();
+    private MemberComparator membercomparator = new MemberComparator();
+
+    /**
+     * Creates a new instance of the TestProgressDoclet for a given target
+     * directory.
+     */
+    public TestCoverageDoclet(String directory) {
+        this.directory = new File(directory);
+    }
+
+    /**
+     * Opens a new output file and writes the usual HTML header. Directories
+     * are created on demand.
+     */
+    private PrintWriter openFile(String name, String title) throws IOException {
+        File file = new File(directory, name);
+        File parent = file.getParentFile();
+        parent.mkdirs();
+
+        PrintWriter printer = new PrintWriter(new FileOutputStream(file));
+
+        printer.println("<html>");
+        printer.println("  <head>");
+        printer.println("    <title>" + title + "</title>");
+        printer.println("<style type=\"text/css\">\n"+
+                "body { }\n"+
+                "table {border-width: 0px; border: solid; border-collapse: collapse;}\n"+
+                "table tr td { vertical-align:top; padding:3px; border: 1px solid black;}\n"+
+                "</style>");
+        printer.println("  </head>");
+        printer.println("  <body>");
+        printer.println("    <h1>" + title + "</h1>");
+
+        return printer;
+    }
+
+    /**
+     * Closes the given output file, writing the usual HTML footer before.
+     */
+    private void closeFile(PrintWriter printer) {
+        printer.println("  </body>");
+        printer.println("</html>");
+        printer.flush();
+        printer.close();
+    }
+
+    private class TablePrinter {
+        private PrintWriter pr;
+
+        public TablePrinter(PrintWriter pr) {
+            this.pr = pr;
+        }
+
+        public void printRow(int color, String... columns) {
+            String colo = COLORS[color];
+            pr.print("<tr style=\"background-color:"+colo+"\">");
+            for (String col : columns) {
+                pr.print("<td>"+col+"</td>");
+            }
+            pr.print("</tr>");
+        }
+
+        public void printRow(String... columns) {
+            printRow(1, columns);
+        }
+
+        public void printPlain(String val) {
+            pr.print(val);
+        }
+
+    }
+
+    /**
+     * Processes the whole list of classes that JavaDoc knows about.
+     */
+    private void process(RootDoc root) throws IOException {
+
+        // 1. traverse all test-classes (those extending JUnit's TestCase)
+        // and collect the annotation info. Print which test classes
+        // need annotating
+        PrintWriter pr = openFile("test-annotation.html", "test class annotation coverage");
+        TablePrinter printer = new TablePrinter(pr);
+        printer.printPlain("<table>");
+        printer.printRow("className", "annotated methods", "total methods", "percentage");
+
+        ClassDoc[] classes = root.classes();
+        Arrays.sort(classes, new Comparator<ClassDoc>() {
+            public int compare(ClassDoc c1, ClassDoc c2) {
+                return c1.toString().compareTo(c2.toString());
+            }});
+        for (ClassDoc classDoc : classes) {
+            if (extendsJUnitTestCase(classDoc)) {
+                processTestClass(classDoc, printer);
+            }
+        }
+        printer.printPlain("</table>");
+        closeFile(pr);
+        //dumpInfo();
+
+        // 2. traverse all "normal" (non-junit) source files, for each method
+        // get its status and propagate it up the tree
+        MyStats stats = new MyStats(TYPE_ROOT, "All", "aaa.html");
+        PrintWriter aprinter = openFile("index.html", "All packages");
+        aprinter.println("Generated " + new Date().toString());
+        aprinter.println("<br/><a href=\"test-annotation.html\">annotation progress of test classes</a><br/>");
+        aprinter.println("<br/><a href=\"hidden-doc.html\">hidden classes and methods</a><br/>");
+        aprinter.println("<br/><a href=\"interfaces.html\">interfaces</a><br/>");
+        aprinter.println("<h2>Packages</h2>");
+        aprinter.println("<table>");
+
+        PrintWriter hiddenDocPr = openFile("hidden-doc.html", "hidden classes and methods list");
+        TablePrinter hiddenDocPrinter = new TablePrinter(hiddenDocPr);
+        hiddenDocPrinter.printPlain("<table>");
+        hiddenDocPrinter.printRow("Package Name", "Class Name", "Method Name");
+
+        PrintWriter interfacePr = openFile("interfaces.html", "interface list");
+        TablePrinter interfacePrinter = new TablePrinter(interfacePr);
+        interfacePrinter.printPlain("<table>");
+        interfacePrinter.printRow("packageName", "className");
+
+        PackageDoc[] packages = root.specifiedPackages();
+        Arrays.sort(packages, comparator);
+        for (PackageDoc pack : packages) {
+            if (pack.allClasses().length != 0) {
+
+                if (pack.name().endsWith(".cts")) {
+                    // Skip the cts test packages
+//                    System.out.println(">>>>>>>>>>>Skip package: " + pack.name());
+                } else {
+                    MyStats subStat = processPackage(pack, hiddenDocPrinter, interfacePrinter);
+                    
+                    System.out.println("package " + pack.name() + " has " + subStat.getCountFor(0) + " red.");
+                    printStats(aprinter, subStat, true);
+                    stats.add(subStat);
+                }
+            }
+        }
+        
+
+        System.out.println("Total has " + stats.getCountFor(0) + " red.");
+
+        interfacePrinter.printPlain("</table>");
+        closeFile(interfacePr);
+
+        hiddenDocPrinter.printPlain("</table>");
+        closeFile(hiddenDocPr);
+
+        aprinter.println("</table>");
+        aprinter.println("<h2>Summary</h2>");
+        aprinter.println("<table>");
+        printStats(aprinter, stats, false);
+        aprinter.println("</table>");
+
+        closeFile(aprinter);
+    }
+
+    /*private void processTargetClass(ClassDoc classDoc) {
+        System.out.println("class:"+classDoc);
+        // show all public/protected constructors
+        for (ExecutableMemberDoc constr : classDoc.constructors()) {
+            if (constr.isPublic() || constr.isProtected()) {
+                processTargetMC(constr);
+            }
+        }
+        // show all public/protected methods
+        for (ExecutableMemberDoc method : classDoc.methods()) {
+            if (method.isPublic() || method.isProtected()) {
+                processTargetMC(method);
+            }
+        }
+    }*/
+
+    /*private void dumpInfo() {
+        for (Map.Entry<ExecutableMemberDoc, AnnotationPointer> entry : resolved.entrySet()) {
+            ExecutableMemberDoc mdoc = entry.getKey();
+            AnnotationPointer ap = entry.getValue();
+            System.out.println("----- entry -----------------------");
+            System.out.println("target:"+mdoc.toString());
+            System.out.println("=");
+            for (MethodDoc meth : ap.testMethods) {
+                System.out.println("test method:"+meth);
+            }
+        }
+    }*/
+
+    private void processTestClass(ClassDoc classDoc, TablePrinter printer) {
+        // System.out.println("Processing >>> " + classDoc);
+        // collects all testinfo-annotation info of this class
+        ClassDoc targetClass = null;
+        // get the class annotation which names the default test target class
+        AnnotationDesc[] cAnnots = classDoc.annotations();
+        for (AnnotationDesc cAnnot : cAnnots) {
+
+            AnnotationTypeDoc atype = cAnnot.annotationType();
+            if (atype.toString().equals("dalvik.annotation.TestTargetClass")) {
+                // single member annot with one child 'value'
+                ElementValuePair[] cpairs = cAnnot.elementValues();
+                ElementValuePair evp = cpairs[0];
+                AnnotationValue av = evp.value();
+                Object obj = av.value();
+
+                // value must be a class doc
+                if (obj instanceof ClassDoc) {
+                    targetClass = (ClassDoc) obj;
+                } else if (obj instanceof ParameterizedType) {
+                    targetClass = ((ParameterizedType)obj).asClassDoc();
+                }
+                else throw new RuntimeException("annotation elem value is of type "+obj.getClass().getName());
+            }
+        }
+
+        // now visit all methods (junit test methods - therefore we need not visit the constructors
+        AnnotStat ast = new AnnotStat();
+
+        //System.out.println("checking:"+classDoc.qualifiedName());
+
+        MethodDoc[] methods = classDoc.methods();
+        String note = "";
+        if (targetClass == null) {
+            note += "<br/>targetClass annotation missing!<br/>";
+        }
+
+        for (MethodDoc methodDoc : methods) {
+            // ignore if it is not a junit test method
+            if (!methodDoc.name().startsWith("test")) continue;
+            if (classDoc.qualifiedName().equals("tests.api.java.io.BufferedInputStreamTest")) {
+                //System.out.println("method: "+methodDoc.toString());
+            }
+
+            if (targetClass == null) {
+                // if the targetClass is missing, count all methods as non-annotated
+                ast.incMethodCnt(false);
+            } else {
+                String error = processTestMethod(methodDoc, ast, targetClass);
+                if (error != null) {
+                    note+="<br/><b>E:</b> "+error;
+                }
+            }
+        }
+
+        int man = ast.cntMethodWithAnnot;
+        int mto = ast.cntAllMethods;
+        float perc = mto==0? 100f : ((float)man)/mto * 100f;
+
+        printer.printRow(man==mto && note.equals("")? 2:0, classDoc.qualifiedName(), ""+ast.cntMethodWithAnnot, ""+ast.cntAllMethods,
+                ""+perc+ note);
+
+    }
+
+    private class AnnotStat {
+        int cntMethodWithAnnot = 0;
+        int cntAllMethods = 0;
+        /**
+         * @param correctAnnot
+         */
+        public void incMethodCnt(boolean correctAnnot) {
+            cntAllMethods++;
+            if (correctAnnot) {
+                cntMethodWithAnnot++;
+            }
+        }
+    }
+
+    // points from one targetMethod to 0..n testMethods which test the target method
+    private class AnnotationPointer {
+        AnnotationPointer(ExecutableMemberDoc targetMethod) {
+            this.targetMethod = targetMethod;
+        }
+
+        final ExecutableMemberDoc targetMethod;
+        List<MethodDoc> testMethods = new ArrayList<MethodDoc>();
+
+        public void addTestMethod(MethodDoc testMethod) {
+            if (testMethods.contains(testMethod)) {
+                System.out.println("warn: testMethod refers more than once to the targetMethod, testMethod="+testMethod);
+            } else {
+                testMethods.add(testMethod);
+            }
+        }
+    }
+
+    private String processTestMethod(MethodDoc methodDoc, AnnotStat ast, ClassDoc targetClass) {
+        //System.out.println("processing method: " + methodDoc);
+        // get all per-method-annotation
+        boolean correctAnnot = false;
+        AnnotationDesc[] annots = methodDoc.annotations();
+        for (AnnotationDesc annot : annots) {
+            if (annot.annotationType().toString().equals("dalvik.annotation.TestInfo")) {
+                ElementValuePair[] pairs = annot.elementValues();
+                for (ElementValuePair kv : pairs) {
+                    if (kv.element().qualifiedName().equals("dalvik.annotation.TestInfo.targets")) {
+                        // targets is an [] type
+                        AnnotationValue[] targets = (AnnotationValue[]) kv.value().value();
+                        for (AnnotationValue tval : targets) {
+                            // the test targets must be annotations themselves
+                            AnnotationDesc targetAnnot = (AnnotationDesc) tval.value();
+                            ExecutableMemberDoc targetMethod = getTargetMethod(targetAnnot, targetClass);
+                            if (targetMethod != null) {
+                                AnnotationPointer tar = getAnnotationPointer(targetMethod, true);
+                                tar.addTestMethod(methodDoc);
+                                correctAnnot = true;
+                            } else {
+                                ast.incMethodCnt(false);
+                                return "error: could not resolve targetMethod for class "+targetClass+", annotation was:"+targetAnnot+", testMethod = "+methodDoc.toString();
+                            }
+                        }
+                    }
+                }
+            } // else some other annotation
+        }
+        ast.incMethodCnt(correctAnnot);
+        return null;
+    }
+
+    private AnnotationPointer getAnnotationPointer(ExecutableMemberDoc targetMethod, boolean create) {
+        AnnotationPointer ap = resolved.get(targetMethod);
+        if (create && ap == null) {
+            ap = new AnnotationPointer(targetMethod);
+            resolved.put(targetMethod, ap);
+        }
+        return ap;
+    }
+
+    private ExecutableMemberDoc getTargetMethod(AnnotationDesc targetAnnot,
+            ClassDoc targetClass) {
+        // targetAnnot like @android.annotation.TestTarget(methodName="group", methodArgs=int.class)
+        ElementValuePair[] pairs = targetAnnot.elementValues();
+        String methodName = null;
+        String args = "";
+        for (ElementValuePair kval : pairs) {
+            if (kval.element().name().equals("methodName")) {
+                methodName = (String) kval.value().value();
+            } else if (kval.element().name().equals("methodArgs")) {
+                AnnotationValue[] vals = (AnnotationValue[]) kval.value().value();
+                for (int i = 0; i < vals.length; i++) {
+                    AnnotationValue arg = vals[i];
+                    String argV;
+                    if (arg.value() instanceof ClassDoc) {
+                       ClassDoc cd = (ClassDoc)arg.value();
+                       argV = cd.qualifiedName();
+                    } else { // primitive type or array type
+                        // is there a nicer way to do this?
+                        argV = arg.toString();
+                    }
+                    // strip .class out of args since signature does not contain those
+                    if (argV.endsWith(".class")) {
+                        argV = argV.substring(0, argV.length()-6);
+                    }
+                    args+= (i>0? ",":"") + argV;
+                }
+            }
+        }
+        // both methodName and methodArgs != null because of Annotation definition
+
+        String refSig = methodName+"("+args+")";
+        //System.out.println("Check " + refSig);
+        // find the matching method in the target class
+        // check all methods
+        for (ExecutableMemberDoc mdoc : targetClass.methods()) {
+            if (equalsSignature(mdoc, refSig)) {
+                return mdoc;
+            }
+        }
+        // check constructors, too
+        for (ExecutableMemberDoc mdoc : targetClass.constructors()) {
+            if (equalsSignature(mdoc, refSig)) {
+                return mdoc;
+            }
+        }
+        return null;
+    }
+
+    private boolean equalsSignature(ExecutableMemberDoc mdoc, String refSignature) {
+        Parameter[] params = mdoc.parameters();
+        String targs = "";
+        for (int i = 0; i < params.length; i++) {
+            Parameter parameter = params[i];
+            // check for generic type types
+            Type ptype = parameter.type();
+            TypeVariable typeVar = ptype.asTypeVariable();
+            String ptname;
+            if (typeVar != null) {
+                ptname = "java.lang.Object"; // the default fallback
+                Type[] bounds = typeVar.bounds();
+                if (bounds.length > 0) {
+                    ClassDoc typeClass = bounds[0].asClassDoc();
+                    ptname = typeClass.qualifiedName();
+                }
+            } else {
+                // regular var
+                //ptname = parameter.type().qualifiedTypeName();
+                ptname = parameter.type().toString();
+
+                //System.out.println("quali:"+ptname);
+                //ptname = parameter.typeName();
+                // omit type signature
+                ptname = ptname.replaceAll("<.*>","");
+            }
+            targs+= (i>0? ",":"") + ptname;
+        }
+        String testSig = mdoc.name()+"("+targs+")";
+
+        //return testSig.equals(refSignature);
+        if (testSig.equals(refSignature)) {
+            //System.out.println("found: Sig:"+testSig);
+            return true;
+        } else {
+            //System.out.println("no match: ref = "+refSignature+", test = "+testSig);
+            return false;
+        }
+    }
+
+    private boolean extendsJUnitTestCase(ClassDoc classDoc) {
+        //junit.framework.TestCase.java
+        ClassDoc curClass = classDoc;
+        while ((curClass = curClass.superclass()) != null) {
+            if (curClass.toString().equals("junit.framework.TestCase")) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Processes the details of a single package.
+     * @param hiddenDocPrinter
+     * @param excludedClassPrinter
+     * @param interfacePrinter
+     */
+    private MyStats processPackage(PackageDoc pack, TablePrinter hiddenDocPrinter,
+            TablePrinter interfacePrinter) throws IOException {
+        String file = getPackageDir(pack) + "/package.html";
+        PrintWriter printer = openFile(file, "Package " + pack.name());
+
+        MyStats stats = new MyStats(TYPE_PACKAGE, pack.name(), file);
+        printer.println("<table>");
+
+        ClassDoc[] classes = pack.allClasses();
+        Arrays.sort(classes, comparator);
+        for (ClassDoc clazz : classes) {
+            if (extendsJUnitTestCase(clazz)) {
+                printer.println("<tr><td>ignored(junit):"+clazz.name()+"</td></tr>");
+            } else if (isHiddenClass(clazz)) {
+                hiddenDocPrinter.printRow(pack.name(), clazz.name(), "*");
+            } else if (clazz.isInterface()) {
+                interfacePrinter.printRow(pack.name(), clazz.name());
+            } else {
+                MyStats subStats = processClass(clazz, hiddenDocPrinter);
+                printStats(printer, subStats, true);
+                stats.add(subStats);
+            }
+        }
+        printer.println("</table>");
+        closeFile(printer);
+        return stats;
+    }
+
+    private boolean isHiddenClass(ClassDoc clazz) {
+        if (clazz == null) {
+            return false;
+        }
+
+        if (isHiddenDoc(clazz)) {
+            return true;
+        }
+
+        // If outter class is hidden, this class should be hidden as well
+        return isHiddenClass(clazz.containingClass());
+    }
+
+    private boolean isHiddenDoc(Doc doc) {
+        // Since currently we have two kinds of annotations to mark a class as hide:
+        //  1. @hide
+        //  2. {@hide}
+        // So we should consider both conditions.
+        for (Tag t : doc.tags()) {
+            if (t.name().equals("@hide")) {
+                return true;
+            }
+        }
+
+        for (Tag t : doc.inlineTags()) {
+            if (t.name().equals("@hide")) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+    
+    private MyStats processClass(ClassDoc clazz, TablePrinter hiddenDocPrinter) throws IOException {
+        //System.out.println("Process source class: " + clazz);
+        String file = getPackageDir(clazz.containingPackage()) + "/" + clazz.name() + ".html";
+        PrintWriter printer = openFile(file, "Class " + clazz.name());
+
+        String packageName = clazz.containingPackage().name();
+        String className = clazz.name();
+        
+        MyStats stats = new MyStats(TYPE_CLASS, className, className+".html");
+        printer.println("<table><tr><td>name</td><td>tested by</td></tr>");
+        ConstructorDoc[] constructors = clazz.constructors();
+        Arrays.sort(constructors, comparator);
+        for (ConstructorDoc constructor : constructors) {
+            //System.out.println("constructor: " + constructor);
+            if (isHiddenDoc(constructor)) {
+                hiddenDocPrinter.printRow(packageName, className, constructor.name());
+            } else if (!isGeneratedConstructor(constructor)) {
+                MyStats subStat = processElement(constructor);
+                printStats(printer, subStat, false);
+                stats.add(subStat);
+            }
+        }
+
+        MethodDoc[] methods = clazz.methods();
+        Arrays.sort(methods, comparator);
+        for (MethodDoc method : methods) {
+            //System.out.println("method: " + method);
+            if ("finalize".equals(method.name())) {
+                // Skip finalize method
+            } else if (isHiddenDoc(method)) {
+                hiddenDocPrinter.printRow(packageName, className, method.name());
+            } else if (method.isAbstract()) {
+                // Skip abstract method
+            } else {
+                MyStats subStat = processElement(method);
+                printStats(printer, subStat, false);
+                stats.add(subStat);
+            }
+        }
+
+        printer.println("</table>");
+        closeFile(printer);
+        return stats;
+    }
+
+    /**
+     * Determines whether a constructor has been automatically generated and is
+     * thus not present in the original source. The only way to find out seems
+     * to compare the source position against the one of the class. If they're
+     * equal, the constructor does not exist. It's a bit hacky, but it works.
+     */
+    private boolean isGeneratedConstructor(ConstructorDoc doc) {
+        SourcePosition constPos = doc.position();
+        SourcePosition classPos = doc.containingClass().position();
+
+        return ("" + constPos).equals("" + classPos);
+    }
+
+    /**
+     * Processes a single method/constructor.
+     */
+    private MyStats processElement(ExecutableMemberDoc method) {
+        //int color = getColor(doc)
+        //derived.add(subStats)
+        AnnotationPointer ap = getAnnotationPointer(method, false);
+        MyStats stats = new MyStats(TYPE_METHOD, "<b>"+method.name() + "</b> "+method.signature(), null);
+        int refCnt = 0;
+        if (ap != null) {
+            refCnt = ap.testMethods.size();
+            String by = "";
+            List<MethodDoc> testM = ap.testMethods;
+            Collections.sort(testM, membercomparator);
+            for (MethodDoc teme : testM) {
+                by+= "<br/>"+teme.toString();
+            }
+            stats.setExtra(by);
+        } // else this class has no single test that targets one of its method
+
+        if (refCnt == 0) {
+            stats.inc(VALUE_RED);
+        } else if (refCnt == 1) {
+            stats.inc(VALUE_YELLOW);
+        } else {
+            stats.inc(VALUE_GREEN);
+        }
+        return stats;
+    }
+
+    /**
+     * Prints a single row to a stats table.
+     */
+    private void printStats(PrintWriter printer, MyStats info, boolean wantLink) {
+        int red = info.getCountFor(VALUE_RED);
+        int yellow = info.getCountFor(VALUE_YELLOW);
+
+        printer.println("<tr>");
+      
+        // rule for coloring:
+        // if red > 0 -> red
+        // if yellow > 0 -> yellow
+        // else green
+        int color;
+        if (red > 0) {
+            color = VALUE_RED;
+        } else if (yellow > 0) {
+            color = VALUE_YELLOW;
+        } else {
+            color = VALUE_GREEN;
+        }
+
+        printer.println("<td bgcolor=\""+COLORS[color]+"\">");
+        String link = info.getLink();
+        if (wantLink && link != null) {
+            printer.print("<a href=\"" + link + "\">" + info.getName() + "</a>");
+        } else {
+            printer.print(info.getName());
+        }
+        printer.println(" ("+info.getStat()+") </td>");
+        if (info.getExtra()!=null) {
+            printer.println("<td>"+info.getExtra()+"</td>");
+        }
+        printer.println("</tr>");
+    }
+
+    /**
+     * Returns the directory for a given package. Basically converts embedded
+     * dots in the name into slashes.
+     */
+    private File getPackageDir(PackageDoc pack) {
+        if (pack == null || pack.name() == null || "".equals(pack.name())) {
+            return new File(".");
+        } else {
+            return new File(pack.name().replace('.', '/'));
+        }
+    }
+
+    /**
+     * Called by JavaDoc to find our which command line arguments are supported
+     * and how many parameters they take. Part of the JavaDoc API.
+     */
+    public static int optionLength(String option) {
+        if ("-d".equals(option)) {
+            return 2;
+        } else {
+            return 0;
+        }
+    }
+
+    /**
+     * Called by JavaDoc to query a specific command line argument. Part of the
+     * JavaDoc API.
+     */
+    private static String getOption(RootDoc root, String option, int index, String defValue) {
+        String[][] allOptions = root.options();
+        for (int i = 0; i < allOptions.length; i++) {
+            if (allOptions[i][0].equals(option)) {
+                return allOptions[i][index];
+            }
+        }
+        return defValue;
+    }
+
+    /**
+     * Called by JavaDoc to find out which Java version we claim to support.
+     * Part of the JavaDoc API.
+     */
+    public static LanguageVersion languageVersion() {
+        return LanguageVersion.JAVA_1_5;
+    }
+
+    /**
+     * The main entry point called by JavaDoc after all required information has
+     * been collected. Part of the JavaDoc API.
+     */
+    public static boolean start(RootDoc root) {
+        try {
+            String target = getOption(root, "-d", 1, ".");
+            TestCoverageDoclet doclet = new TestCoverageDoclet(target);
+            doclet.process(root);
+
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            return false;
+        }
+        return true;
+    }
+
+}
diff --git a/tools/utils/Android.mk b/tools/utils/Android.mk
new file mode 100644
index 0000000..5a4597f
--- /dev/null
+++ b/tools/utils/Android.mk
@@ -0,0 +1,27 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH := $(call my-dir)
+
+# descGen java library
+# ============================================================
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := descGen
+
+LOCAL_SRC_FILES := CollectAllTests.java DescriptionGenerator.java
+
+LOCAL_CLASSPATH := $(HOST_JDK_TOOLS_JAR) $(LOCAL_PATH)/lib/junit.jar
+
+include $(BUILD_HOST_JAVA_LIBRARY)
diff --git a/tools/utils/CollectAllTests.java b/tools/utils/CollectAllTests.java
new file mode 100644
index 0000000..7b7432e
--- /dev/null
+++ b/tools/utils/CollectAllTests.java
@@ -0,0 +1,297 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.BufferedReader;
+import java.io.FileReader;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestResult;
+import junit.textui.TestRunner;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class CollectAllTests extends DescriptionGenerator {
+
+    static final String ATTRIBUTE_RUNNER = "runner";
+    static final String ATTRIBUTE_PACKAGE = "appPackageName";
+    static final String ATTRIBUTE_NS = "appNameSpace";
+    static final String ATTRIBUTE_TARGET = "target";
+    static final String ATTRIBUTE_HOST_SIDE_ONLY = "hostSideOnly";
+    static final String ATTRIBUTE_JAR_PATH = "jarPath";
+
+    static final String JAR_PATH = "LOCAL_JAR_PATH :=";
+    static final String TEST_TYPE = "LOCAL_TEST_TYPE :";
+
+    static final int HOST_SIDE_ONLY = 1;
+    static final int DEVICE_SIDE_ONLY = 2;
+
+    private static String runner;
+    private static String packageName;
+    private static String target;
+    private static String xmlName;
+    private static int testType;
+    private static String jarPath;
+
+    private static Map<String,TestClass> testCases;
+    private static Set<String> failed = new HashSet<String>();
+
+    private static class MyXMLGenerator extends XMLGenerator {
+
+        MyXMLGenerator(String outputPath) throws ParserConfigurationException {
+            super(outputPath);
+
+            Node testPackageElem = mDoc.getDocumentElement();
+
+            setAttribute(testPackageElem, ATTRIBUTE_NAME, xmlName);
+            setAttribute(testPackageElem, ATTRIBUTE_RUNNER, runner);
+            setAttribute(testPackageElem, ATTRIBUTE_PACKAGE, packageName);
+            setAttribute(testPackageElem, ATTRIBUTE_NS, packageName);
+
+            if (testType == HOST_SIDE_ONLY) {
+                setAttribute(testPackageElem, ATTRIBUTE_HOST_SIDE_ONLY, "true");
+                setAttribute(testPackageElem, ATTRIBUTE_JAR_PATH, jarPath);
+            }
+
+            if (!packageName.equals(target)) {
+                setAttribute(testPackageElem, ATTRIBUTE_TARGET, target);
+                }
+            }
+    }
+
+    private static String OUTPUTFILE = "";
+    private static String MANIFESTFILE = "";
+    private static String TESTSUITECLASS = "";
+    private static String ANDROID_MAKE_FILE = "";
+
+    private static Test TESTSUITE;
+
+    static XMLGenerator xmlGenerator;
+
+    public static void main(String[] args) {
+        if (args.length > 2) {
+            OUTPUTFILE = args[0];
+            MANIFESTFILE = args [1];
+            TESTSUITECLASS = args[2];
+            if (args.length > 3) {
+                ANDROID_MAKE_FILE = args[3];
+            }
+        } else {
+            System.out.println("usage: \n" +
+                "\t... CollectAllTests <output-file> <manifest-file> <testsuite-class-name> <makefile-file>");
+            return;
+        }
+
+        if (ANDROID_MAKE_FILE.length() > 0) {
+            testType = getTestType(ANDROID_MAKE_FILE);
+        }
+
+        Document manifest = null;
+        try {
+            manifest = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new FileInputStream(MANIFESTFILE));
+        } catch (Exception e) {
+            System.err.println("cannot open manifest");
+            e.printStackTrace();
+            return;
+        }
+
+        Element documentElement = manifest.getDocumentElement();
+
+        documentElement.getAttribute("package");
+
+        xmlName = new File(OUTPUTFILE).getName();
+        runner = getElementAttribute(documentElement, "instrumentation", "android:name");
+        packageName = documentElement.getAttribute("package");
+        target = getElementAttribute(documentElement, "instrumentation", "android:targetPackage");
+
+        Class<?> testClass = null;
+        try {
+            testClass = Class.forName(TESTSUITECLASS);
+        } catch (ClassNotFoundException e) {
+            System.err.println("test class not found");
+            e.printStackTrace();
+            return;
+        }
+
+        Method method = null;
+        try {
+            method = testClass.getMethod("suite", new Class<?>[0]);
+        } catch (SecurityException e) {
+            System.err.println("failed to get suite method");
+            e.printStackTrace();
+            return;
+        } catch (NoSuchMethodException e) {
+            System.err.println("failed to get suite method");
+            e.printStackTrace();
+            return;
+        }
+
+        try {
+            TESTSUITE = (Test) method.invoke(null, (Object[])null);
+        } catch (IllegalArgumentException e) {
+            System.err.println("failed to get suite method");
+            e.printStackTrace();
+            return;
+        } catch (IllegalAccessException e) {
+            System.err.println("failed to get suite method");
+            e.printStackTrace();
+            return;
+        } catch (InvocationTargetException e) {
+            System.err.println("failed to get suite method");
+            e.printStackTrace();
+            return;
+        }
+
+        try {
+            xmlGenerator = new MyXMLGenerator(OUTPUTFILE + ".xml");
+        } catch (ParserConfigurationException e) {
+            System.err.println("Can't initialize XML Generator");
+        }
+
+        testCases = new LinkedHashMap<String, TestClass>();
+        CollectAllTests cat = new CollectAllTests();
+        cat.compose();
+
+        if (!failed.isEmpty()) {
+            System.err.println("The following classes have no default constructor");
+            for (Iterator<String> iterator = failed.iterator(); iterator.hasNext();) {
+                String type = iterator.next();
+                System.err.println(type);
+            }
+        }
+
+        for (Iterator<TestClass> iterator = testCases.values().iterator(); iterator.hasNext();) {
+            TestClass type = iterator.next();
+            xmlGenerator.addTestClass(type);
+        }
+
+        try {
+            xmlGenerator.dump();
+        } catch (Exception e) {
+            System.err.println("cannot dump xml");
+            e.printStackTrace();
+        }
+    }
+
+    private static int getTestType(String makeFileName) {
+
+        int type = DEVICE_SIDE_ONLY;
+        try {
+            BufferedReader reader = new BufferedReader(new FileReader(makeFileName));
+            String line;
+
+            while ((line =reader.readLine())!=null) {
+                if (line.startsWith(TEST_TYPE)) {
+                    type = HOST_SIDE_ONLY;
+                } else if (line.startsWith(JAR_PATH)) {
+                    jarPath = line.substring(JAR_PATH.length(), line.length()).trim();
+                }
+            }
+            reader.close();
+        } catch (IOException e) {
+        }
+
+        return type;
+    }
+
+    private static Element getElement(Element element, String tagName) {
+        NodeList elements = element.getElementsByTagName(tagName);
+        if (elements.getLength() > 0) {
+            return (Element) elements.item(0);
+        } else {
+            return null;
+        }
+    }
+
+    private static String getElementAttribute(Element element, String elementName, String attributeName) {
+        Element e = getElement(element, elementName);
+        if (e != null) {
+            return e.getAttribute(attributeName);
+        } else {
+            return "";
+        }
+    }
+
+    public void compose() {
+        System.out.println("Collecting all junit tests...");
+        new TestRunner() {
+            @Override
+            protected TestResult createTestResult() {
+                return new TestResult() {
+                    @Override
+                    protected void run(TestCase test) {
+                        addToTests(test);
+                    }
+                };
+            }
+
+            @Override
+            public TestResult doRun(Test test) {
+                return super.doRun(test);
+            }
+        }.doRun(TESTSUITE);
+    }
+
+    private void addToTests(TestCase test) {
+
+        String testClassName = test.getClass().getName();
+        String testName = test.getName();
+        if (!testName.startsWith("test")) {
+            try {
+                test.runBare();
+            } catch (Throwable e) {
+                e.printStackTrace();
+                return;
+            }
+        }
+        TestClass testClass = null;
+        if (testCases.containsKey(testClassName)) {
+            testClass = testCases.get(testClassName);
+        } else {
+            testClass = new TestClass(testClassName, new ArrayList<TestMethod>());
+            testCases.put(testClassName, testClass);
+        }
+
+        testClass.mCases.add(new TestMethod(testName, "", "", null));
+
+        try {
+            test.getClass().getConstructor(new Class<?>[0]);
+        } catch (SecurityException e) {
+            failed.add(test.getClass().getName());
+        } catch (NoSuchMethodException e) {
+            failed.add(test.getClass().getName());
+        }
+    }
+}
diff --git a/tools/utils/DescriptionGenerator.java b/tools/utils/DescriptionGenerator.java
new file mode 100644
index 0000000..8a21c83
--- /dev/null
+++ b/tools/utils/DescriptionGenerator.java
@@ -0,0 +1,590 @@
+/*
+ * Copyright (C) The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import com.sun.javadoc.AnnotationDesc;
+import com.sun.javadoc.AnnotationTypeDoc;
+import com.sun.javadoc.AnnotationValue;
+import com.sun.javadoc.ClassDoc;
+import com.sun.javadoc.Doclet;
+import com.sun.javadoc.MethodDoc;
+import com.sun.javadoc.RootDoc;
+import com.sun.javadoc.AnnotationDesc.ElementValuePair;
+
+/**
+ * This is only a very simple and brief JavaDoc parser for the CTS.
+ *
+ * Input: The source files of the test cases. It will be represented
+ *          as a list of ClassDoc
+ * Output: Generate file description.xml, which defines the TestPackage
+ *          TestSuite and TestCases.
+ *
+ * Note:
+ *  1. Since this class has dependencies on com.sun.javadoc package which
+ *       is not implemented on Android. So this class can't be compiled.
+ *  2. The TestSuite can be embedded, which means:
+ *      TestPackage := TestSuite*
+ *      TestSuite := TestSuite* | TestCase*
+ */
+public class DescriptionGenerator extends Doclet {
+    static final String HOST_CONTROLLER = "dalvik.annotation.HostController";
+    static final String KNOWN_FAILURE = "dalvik.annotation.KnownFailure";
+
+    static final String JUNIT_TEST_CASE_CLASS_NAME = "junit.framework.testcase";
+    static final String TAG_PACKAGE = "TestPackage";
+    static final String TAG_SUITE = "TestSuite";
+    static final String TAG_CASE = "TestCase";
+    static final String TAG_TEST = "Test";
+    static final String TAG_DESCRIPTION = "Description";
+
+    static final String ATTRIBUTE_NAME_VERSION = "version";
+    static final String ATTRIBUTE_VALUE_VERSION = "1.0";
+    static final String ATTRIBUTE_NAME_FRAMEWORK = "AndroidFramework";
+    static final String ATTRIBUTE_VALUE_FRAMEWORK = "Android 1.0";
+
+    static final String ATTRIBUTE_NAME = "name";
+    static final String ATTRIBUTE_METHOD = "method";
+    static final String ATTRIBUTE_XML_INFO = "XML_INFO";
+    static final String ATTRIBUTE_HOST_CONTROLLER = "HostController";
+    static final String ATTRIBUTE_KNOWN_FAILURE = "KnownFailure";
+
+    static final String XML_OUTPUT_PATH = "./description.xml";
+
+    /**
+     * Start to parse the classes passed in by javadoc, and generate
+     * the xml file needed by CTS packer.
+     *
+     * @param root The root document passed in by javadoc.
+     * @return Whether the document has been processed.
+     */
+    public static boolean start(RootDoc root) {
+        ClassDoc[] classes = root.classes();
+        if (classes == null) {
+            Log.e("No class found!", null);
+            return true;
+        }
+
+        XMLGenerator xmlGenerator = null;
+        try {
+            xmlGenerator = new XMLGenerator(XML_OUTPUT_PATH);
+        } catch (ParserConfigurationException e) {
+            Log.e("Cant initialize XML Generator!", e);
+            return true;
+        }
+
+        for (ClassDoc clazz : classes) {
+            if ((!clazz.isAbstract()) && (isValidJUnitTestCase(clazz))) {
+                xmlGenerator.addTestClass(new TestClass(clazz));
+            }
+        }
+
+        try {
+            xmlGenerator.dump();
+        } catch (Exception e) {
+            Log.e("Can't dump to XML file!", e);
+        }
+
+        return true;
+    }
+
+    /**
+     * Check if the class is valid test case inherited from JUnit TestCase.
+     *
+     * @param clazz The class to be checked.
+     * @return If the class is valid test case inherited from JUnit TestCase, return true;
+     *         else, return false.
+     */
+    static boolean isValidJUnitTestCase(ClassDoc clazz) {
+        while((clazz = clazz.superclass()) != null) {
+            if (JUNIT_TEST_CASE_CLASS_NAME.equals(clazz.qualifiedName().toLowerCase())) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Log utility.
+     */
+    static class Log {
+        private static boolean TRACE = true;
+        private static BufferedWriter mTraceOutput = null;
+
+        /**
+         * Log the specified message.
+         *
+         * @param msg The message to be logged.
+         */
+        static void e(String msg, Exception e) {
+            System.out.println(msg);
+
+            if (e != null) {
+                e.printStackTrace();
+            }
+        }
+
+        /**
+         * Add the message to the trace stream.
+         *
+         * @param msg The message to be added to the trace stream.
+         */
+        public static void t(String msg) {
+            if (TRACE) {
+                try {
+                    if ((mTraceOutput != null) && (msg != null)) {
+                        mTraceOutput.write(msg + "\n");
+                        mTraceOutput.flush();
+                    }
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+
+        /**
+         * Initialize the trace stream.
+         *
+         * @param name The class name.
+         */
+        public static void initTrace(String name) {
+            if (TRACE) {
+                try {
+                    if (mTraceOutput == null) {
+                        String fileName = "cts_debug_dg_" + name + ".txt";
+                        mTraceOutput = new BufferedWriter(new FileWriter(fileName));
+                    }
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+
+        /**
+         * Close the trace stream.
+         */
+        public static void closeTrace() {
+            if (mTraceOutput != null) {
+                try {
+                    mTraceOutput.close();
+                    mTraceOutput = null;
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+    static class XMLGenerator {
+        String mOutputPath;
+
+        /**
+         * This document is used to represent the description XML file.
+         * It is construct by the classes passed in, which contains the
+         * information of all the test package, test suite and test cases.
+         */
+        Document mDoc;
+
+        XMLGenerator(String outputPath) throws ParserConfigurationException {
+            mOutputPath = outputPath;
+
+            mDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+
+            Node testPackageElem = mDoc.appendChild(mDoc.createElement(TAG_PACKAGE));
+
+            // Use special hard-coded value, so that the CTS packer could find
+            // it and replace it with correct value
+            setAttribute(testPackageElem, ATTRIBUTE_XML_INFO, "");
+
+            setAttribute(testPackageElem, ATTRIBUTE_NAME_VERSION, ATTRIBUTE_VALUE_VERSION);
+            setAttribute(testPackageElem, ATTRIBUTE_NAME_FRAMEWORK, ATTRIBUTE_VALUE_FRAMEWORK);
+        }
+
+        void addTestClass(TestClass tc) {
+            appendSuiteToElement(mDoc.getDocumentElement(), tc);
+        }
+
+        void dump() throws TransformerFactoryConfigurationError,
+                FileNotFoundException, TransformerException {
+            //rebuildDocument();
+
+            Transformer t = TransformerFactory.newInstance().newTransformer();
+
+            // enable indent in result file
+            t.setOutputProperty("indent", "yes");
+            t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount","4");
+
+            t.transform(new DOMSource(mDoc),
+                    new StreamResult(new FileOutputStream(new File(mOutputPath))));
+        }
+
+        /**
+         * Rebuild the document, merging empty suite nodes.
+         */
+        void rebuildDocument() {
+            // merge empty suite nodes
+            Collection<Node> suiteElems = getUnmutableChildNodes(mDoc.getDocumentElement());
+            Iterator<Node> suiteIterator = suiteElems.iterator();
+            while (suiteIterator.hasNext()) {
+                Node suiteElem = suiteIterator.next();
+
+                mergeEmptySuites(suiteElem);
+            }
+        }
+
+        /**
+         * Merge the test suite which only has one sub-suite. In this case, unify
+         * the name of the two test suites.
+         *
+         * @param suiteElem The suite element of which to be merged.
+         */
+        void mergeEmptySuites(Node suiteElem) {
+            Collection<Node> suiteChildren = getSuiteChildren(suiteElem);
+            if (suiteChildren.size() > 1) {
+                for (Node suiteChild : suiteChildren) {
+                    mergeEmptySuites(suiteChild);
+                }
+            } else if (suiteChildren.size() == 1) {
+                // do merge
+                Node child = suiteChildren.iterator().next();
+
+                // update name
+                String newName = getAttribute(suiteElem, ATTRIBUTE_NAME) + "."
+                        + getAttribute(child, ATTRIBUTE_NAME);
+                setAttribute(child, ATTRIBUTE_NAME, newName);
+
+                // update parent node
+                Node parentNode = suiteElem.getParentNode();
+                parentNode.removeChild(suiteElem);
+                parentNode.appendChild(child);
+
+                mergeEmptySuites(child);
+            }
+        }
+
+        /**
+         * Get the unmuatable child nodes for specified node.
+         *
+         * @param node The specified node.
+         * @return A collection of copied child node.
+         */
+        private Collection<Node> getUnmutableChildNodes(Node node) {
+            ArrayList<Node> nodes = new ArrayList<Node>();
+            NodeList nodelist = node.getChildNodes();
+
+            for (int i = 0; i < nodelist.getLength(); i++) {
+                nodes.add(nodelist.item(i));
+            }
+
+            return nodes;
+        }
+
+        /**
+         * Append a named test suite to a specified element. Including match with
+         * the existing suite nodes and do the real creation and append.
+         *
+         * @param elem The specified element.
+         * @param testSuite The test suite to be appended.
+         */
+        void appendSuiteToElement(Node elem, TestClass testSuite) {
+            String suiteName = testSuite.mName;
+            Collection<Node> children = getSuiteChildren(elem);
+            int dotIndex = suiteName.indexOf('.');
+            String name = dotIndex == -1 ? suiteName : suiteName.substring(0, dotIndex);
+
+            boolean foundMatch = false;
+            for (Node child : children) {
+                String childName = child.getAttributes().getNamedItem(ATTRIBUTE_NAME)
+                        .getNodeValue();
+
+                if (childName.equals(name)) {
+                    foundMatch = true;
+                    if (dotIndex == -1) {
+                        appendTestCases(child, testSuite.mCases);
+                    } else {
+                        testSuite.mName = suiteName.substring(dotIndex + 1, suiteName.length());
+                        appendSuiteToElement(child, testSuite);
+                    }
+                }
+
+            }
+
+            if (!foundMatch) {
+                appendSuiteToElementImpl(elem, testSuite);
+            }
+        }
+
+        /**
+         * Get the test suite child nodes of a specified element.
+         *
+         * @param elem The specified element node.
+         * @return The matched child nodes.
+         */
+        Collection<Node> getSuiteChildren(Node elem) {
+            ArrayList<Node> suites = new ArrayList<Node>();
+
+            NodeList children = elem.getChildNodes();
+            for (int i = 0; i < children.getLength(); i++) {
+                Node child = children.item(i);
+
+                if (child.getNodeName().equals(DescriptionGenerator.TAG_SUITE)) {
+                    suites.add(child);
+                }
+            }
+
+            return suites;
+        }
+
+        /**
+         * Create test case node according to the given method names, and append them
+         * to the test suite element.
+         *
+         * @param elem The test suite element.
+         * @param cases A collection of test cases included by the test suite class.
+         */
+        void appendTestCases(Node elem, Collection<TestMethod> cases) {
+            if (cases.isEmpty()) {
+                // if no method, remove from parent
+                elem.getParentNode().removeChild(elem);
+            } else {
+                for (TestMethod caze : cases) {
+                    Node caseNode = elem.appendChild(mDoc.createElement(TAG_TEST));
+
+                    setAttribute(caseNode, ATTRIBUTE_METHOD, caze.mName);
+                    if ((caze.mController != null) && (caze.mController.length() != 0)) {
+                        setAttribute(caseNode, ATTRIBUTE_HOST_CONTROLLER, caze.mController);
+                    }
+
+                    if (caze.mKnownFailure != null) {
+                        setAttribute(caseNode, ATTRIBUTE_KNOWN_FAILURE, caze.mKnownFailure);
+                    }
+
+                    if (caze.mDescription != null && !caze.mDescription.equals("")) {
+                        caseNode.appendChild(mDoc.createElement(TAG_DESCRIPTION))
+                                .setTextContent(caze.mDescription);
+                    }
+                }
+            }
+        }
+
+        /**
+         * Set the attribute of element.
+         *
+         * @param elem The element to be set attribute.
+         * @param name The attribute name.
+         * @param value The attribute value.
+         */
+        protected void setAttribute(Node elem, String name, String value) {
+            Attr attr = mDoc.createAttribute(name);
+            attr.setNodeValue(value);
+
+            elem.getAttributes().setNamedItem(attr);
+        }
+
+        /**
+         * Get the value of a specified attribute of an element.
+         *
+         * @param elem The element node.
+         * @param name The attribute name.
+         * @return The value of the specified attribute.
+         */
+        private String getAttribute(Node elem, String name) {
+            return elem.getAttributes().getNamedItem(name).getNodeValue();
+        }
+
+        /**
+         * Do the append, including creating test suite nodes and test case nodes, and
+         * append them to the element.
+         *
+         * @param elem The specified element node.
+         * @param testSuite The test suite to be append.
+         */
+        void appendSuiteToElementImpl(Node elem, TestClass testSuite) {
+            Node parent = elem;
+            String suiteName = testSuite.mName;
+
+            int dotIndex;
+            while ((dotIndex = suiteName.indexOf('.')) != -1) {
+                String name = suiteName.substring(0, dotIndex);
+
+                Node suiteElem = parent.appendChild(mDoc.createElement(TAG_SUITE));
+                setAttribute(suiteElem, ATTRIBUTE_NAME, name);
+
+                parent = suiteElem;
+                suiteName = suiteName.substring(dotIndex + 1, suiteName.length());
+            }
+
+            Node leafSuiteElem = parent.appendChild(mDoc.createElement(TAG_CASE));
+            setAttribute(leafSuiteElem, ATTRIBUTE_NAME, suiteName);
+
+            appendTestCases(leafSuiteElem, testSuite.mCases);
+        }
+    }
+
+    /**
+     * Represent the test class.
+     */
+    static class TestClass {
+        String mName;
+        Collection<TestMethod> mCases;
+
+        /**
+         * Construct an test suite object.
+         *
+         * @param name Full name of the test suite, such as "com.google.android.Foo"
+         * @param cases The test cases included in this test suite.
+         */
+        TestClass(String name, Collection<TestMethod> cases) {
+            mName = name;
+            mCases = cases;
+        }
+
+        /**
+         * Construct a TestClass object using ClassDoc.
+         *
+         * @param clazz The specified ClassDoc.
+         */
+        TestClass(ClassDoc clazz) {
+            mName = clazz.toString();
+            mCases = getTestMethods(clazz);
+        }
+
+        /**
+         * Get all the TestMethod from a ClassDoc, including inherited methods.
+         *
+         * @param clazz The specified ClassDoc.
+         * @return A collection of TestMethod.
+         */
+        Collection<TestMethod> getTestMethods(ClassDoc clazz) {
+            Collection<MethodDoc> methods = getAllMethods(clazz);
+
+            ArrayList<TestMethod> cases = new ArrayList<TestMethod>();
+            Iterator<MethodDoc> iterator = methods.iterator();
+
+            while (iterator.hasNext()) {
+                MethodDoc method = iterator.next();
+
+                String name = method.name();
+
+                AnnotationDesc[] annotations = method.annotations();
+                String controller = "";
+                String knownFailure = null;
+                for (AnnotationDesc cAnnot : annotations) {
+
+                    AnnotationTypeDoc atype = cAnnot.annotationType();
+                    if (atype.toString().equals(HOST_CONTROLLER)) {
+                        controller = getAnnotationDescription(cAnnot);
+                    } else if (atype.toString().equals(KNOWN_FAILURE)) {
+                        knownFailure = getAnnotationDescription(cAnnot);
+                    }
+                }
+
+                if (name.startsWith("test")) {
+                    cases.add(new TestMethod(name, method.commentText(), controller, knownFailure));
+                }
+            }
+
+            return cases;
+        }
+
+        /**
+         * Get annotation description.
+         *
+         * @param cAnnot The annotation.
+         */
+        String getAnnotationDescription(AnnotationDesc cAnnot) {
+            ElementValuePair[] cpairs = cAnnot.elementValues();
+            ElementValuePair evp = cpairs[0];
+            AnnotationValue av = evp.value();
+            String description = av.toString();
+            // FIXME: need to find out the reason why there are leading and trailing "
+            description = description.substring(1, description.length() -1);
+            return description;
+        }
+
+        /**
+         * Get all MethodDoc of a ClassDoc, including inherited methods.
+         *
+         * @param clazz The specified ClassDoc.
+         * @return A collection of MethodDoc.
+         */
+        Collection<MethodDoc> getAllMethods(ClassDoc clazz) {
+            ArrayList<MethodDoc> methods = new ArrayList<MethodDoc>();
+
+            for (MethodDoc method : clazz.methods()) {
+                methods.add(method);
+            }
+
+            ClassDoc superClass = clazz.superclass();
+            while (superClass != null) {
+                for (MethodDoc method : superClass.methods()) {
+                    methods.add(method);
+                }
+
+                superClass = superClass.superclass();
+            }
+
+            return methods;
+        }
+
+    }
+
+    /**
+     * Represent the test method inside the test class.
+     */
+    static class TestMethod {
+        String mName;
+        String mDescription;
+        String mController;
+        String mKnownFailure;
+
+        /**
+         * Construct an test case object.
+         *
+         * @param name The name of the test case.
+         * @param description The description of the test case.
+         * @param knownFailure The reason of known failure.
+         */
+        TestMethod(String name, String description, String controller, String knownFailure) {
+            mName = name;
+            mDescription = description;
+            mController = controller;
+            mKnownFailure = knownFailure;
+        }
+    }
+}
diff --git a/tools/utils/android_api_description_splitter.py b/tools/utils/android_api_description_splitter.py
new file mode 100644
index 0000000..3cf2eb6
--- /dev/null
+++ b/tools/utils/android_api_description_splitter.py
@@ -0,0 +1,154 @@
+#! /usr/bin/python

+#

+# Copyright 2008, Google Inc.

+#

+# Licensed under the Apache License, Version 2.0 (the "License"); 

+# you may not use this file except in compliance with the License. 

+# You may obtain a copy of the License at 

+#

+#     http://www.apache.org/licenses/LICENSE-2.0 

+#

+# Unless required by applicable law or agreed to in writing, software 

+# distributed under the License is distributed on an "AS IS" BASIS, 

+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

+# See the License for the specific language governing permissions and 

+# limitations under the License.

+#

+# This script is used to split the jdiff xml into several smaller xml files

+# so that we could avoid the xml resource limit in Android platform.

+#

+# Usage:

+#    android_api_description.py xmlfile tagname

+#

+# The script will do the following:

+#    1. Read the xml file and generate DOM tree

+#    2. Generate xml file for each tagname.

+#

+# Example:

+# xml source:

+#    <Root>

+#        <A name="i">

+#            <B>1</B>

+#            <B>2</B>

+#        </A>

+#        <A name="ii">

+#            <B>3</B>

+#        </A>

+#    </Root>

+# 

+# when the tagname is specified as A, it will generate two xml files:

+# first one's source:

+#    <Root>

+#        <A name="i">

+#            <B>1</B>

+#            <B>2</B>

+#        </A>

+#    </Root>

+# second one's source:

+#    <Root>

+#        <A name="ii">

+#            <B>3</B>

+#        </A>

+#    </Root>

+#

+# when the tagname is specified as B, it will generated three xml files:

+# first one's source:

+#    <Root>

+#        <A name="i">

+#            <B>1</B>

+#        </A>

+#    </Root>

+# second one's source:

+#    <Root>

+#        <A name="i">

+#            <B>2</B>

+#        </A>

+#    </Root>

+# third one's source:

+#    <Root>

+#        <A name="ii">

+#            <B>3</B>

+#        </A>

+#    </Root>

+#

+# NOTE: 

+#    1. Currently just suppor the top level element

+#    2. Use the name attribute of the specified element as the file name

+#    3. Currently will remove all the doc element. - workaround for jdiff xml

+#

+import os, sys;

+import xml.dom.minidom;

+

+"""Split the jdiff xml into several smaller xml files by specified tag.

+"""

+class XMLSplitter:

+    def __init__(self, xmlfile, outPath):

+        self.doc = xml.dom.minidom.parse(xmlfile)

+        self.root = self.doc.documentElement

+        self.out = os.path.join(outPath, "xml")

+        if not os.path.isdir(self.out):

+            os.makedirs(self.out)

+        return

+

+    def split(self, tag):

+

+        elemlist = self.doc.getElementsByTagName(tag)

+

+        for elem in elemlist:

+            elem = self.__trimElem(elem)

+            self.__generateFile(elem)

+

+        return

+

+    def __trimElem(self, elem):

+        children = []

+        for child in elem.childNodes:

+            if child.nodeType == xml.dom.minidom.Node.ELEMENT_NODE:

+                children.append(child)

+

+        for child in children:

+            if child.nodeName == "doc":

+                elem.removeChild(child)

+                children.remove(child)

+

+        for child in children:

+            child = self.__trimElem(child)

+

+        return elem

+

+

+    def __generateFile(self, elem):

+        self.__removeAllChild(self.root)

+

+        filename = os.path.join(self.out, elem.getAttribute("name").replace(".", "_").lower() + ".xml")

+

+        doc = xml.dom.minidom.Document()

+        doc.appendChild(self.root)

+

+        self.root.appendChild(elem)

+

+        fd = open(filename, "w")

+        fd.write(doc.toxml())

+        fd.close

+

+        return

+

+    def __removeAllChild(self, elem):

+        children = []

+        for child in elem.childNodes:

+            children.append(child)

+

+        for child in children:

+            elem.removeChild(child)

+

+        return

+

+if __name__ == "__main__":

+    if len(sys.argv) < 4:

+        print "Usage: splitxml.py xmlfile outpath tagname"

+        sys.exit(1)

+

+    xmlsplitter = XMLSplitter(sys.argv[1], sys.argv[2])

+

+    xmlsplitter.split(sys.argv[3])

+

diff --git a/tools/utils/genDefaultTestPlan.sh b/tools/utils/genDefaultTestPlan.sh
new file mode 100644
index 0000000..d68b4d2
--- /dev/null
+++ b/tools/utils/genDefaultTestPlan.sh
@@ -0,0 +1,228 @@
+#!/bin/sh
+
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# A lit XML parser which could get attribute value of the specified tag.
+# parseXML(tag, attribute)
+parseXML() {
+    awk -v tag=${2} -v attribute=${3} \
+    'BEGIN { RS=">" }
+     { ind=split($0,field," ");
+       if (substr(field[1],2)==tag) {
+         for(ind2=2;ind2<=ind;ind2++) {
+           split(field[ind2],token,"=");
+           if (token[1]==attribute)
+             { print token[2] }
+     }}}' ${1}
+}
+
+# Generate signature checking description xml file.
+generateSignatureCheckDescription() {
+     echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" > ${SIGNATURE_CHECK_PATH}
+     echo "<TestPackage AndroidFramework=\"Android 1.0\" jarPath=\"\" "\
+          "name=\"${SIGNATURE_CHECK_NAME}\" runner=\".InstrumentationRunner\" "\
+          "targetNameSpace=\"\" targetBinaryName=\"\" version=\"1.0\" signatureCheck=\"true\" "\
+          "appPackageName=\"android.tests.sigtest\">"  >> ${SIGNATURE_CHECK_PATH}
+     echo "<TestSuite name=\"android\">"       >> ${SIGNATURE_CHECK_PATH}
+     echo "<TestSuite name=\"tests\">"         >> ${SIGNATURE_CHECK_PATH}
+     echo "<TestSuite name=\"sigtest\">"       >> ${SIGNATURE_CHECK_PATH}
+     echo "<TestCase name=\"SignatureTest\">"  >> ${SIGNATURE_CHECK_PATH}
+     echo "<Test method=\"signatureTest\">"    >> ${SIGNATURE_CHECK_PATH}
+     echo "</Test>"        >> ${SIGNATURE_CHECK_PATH}
+     echo "</TestCase>"    >> ${SIGNATURE_CHECK_PATH}
+     echo "</TestSuite>"   >> ${SIGNATURE_CHECK_PATH}
+     echo "</TestSuite>"   >> ${SIGNATURE_CHECK_PATH}
+     echo "</TestSuite>"   >> ${SIGNATURE_CHECK_PATH}
+     echo "</TestPackage>" >> ${SIGNATURE_CHECK_PATH}
+}
+
+# Generate the default test plan.
+generateTestPlan() {
+    TEST_PLAN=${2}/CTS.xml
+    echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" > ${TEST_PLAN}
+    echo "<TestPlan version=\"1.0\">" >> ${TEST_PLAN}
+
+    # Let the signature test to be the 1st entry of the plan.
+    if [ -f ${SIGNATURE_CHECK_PATH}  ]; then
+        URI=${SIGNATURE_CHECK_NAME}
+        echo "<Entry uri=\"${URI}\"/>" >> ${TEST_PLAN}
+    fi
+    
+    for FILE_NAME in $(ls ${1}/*.xml); do
+        URI=$(basename ${FILE_NAME} .xml)
+        if [ "${URI}" != "${SIGNATURE_CHECK_NAME}" ]; then
+            APP_JAVA_PKG_NAME=$(parseXML ${FILE_NAME} TestPackage appPackageName | sed 's/\"//g')
+            echo "<Entry uri=\"${APP_JAVA_PKG_NAME}\"/>" >> ${TEST_PLAN}
+        fi
+    done
+    echo "</TestPlan>" >> ${TEST_PLAN}
+}
+
+SIGNATURE_CHECK_NAME="SignatureTest"
+SIGNATURE_CHECK_PATH=${CTS_OUT_DIR}/repository/testcases/${SIGNATURE_CHECK_NAME}".xml"
+
+# Build the DescriptionGenerator as the Doclet
+buildDescriptionGenerator() {
+    OUT=${1}
+    READLINK_OPT=""
+    HOST=$(uname -s | tr 'A-Z' 'a-z')
+    if [ ${HOST} != "darwin" ]; then
+        READLINK_OPT="-m"
+    fi;
+
+    echo "Build "Description generator""
+    JAVADOC_PATH=$(readlink ${READLINK_OPT} $(which javadoc))
+    JAVADOC_LIBS=$(echo ${JAVADOC_PATH} | sed 's/bin\/javadoc/lib\//')
+
+    javac -d ${OUT} -extdirs ${JAVADOC_LIBS} \
+          ${CTS_ROOT}/utils/DescriptionGenerator.java
+}
+
+addControllerInfo() {
+    CTSROOT=${1}
+    OUT=${2}
+    XMLNAME=${3}
+    APP_PACKAGE_NAME=${4}
+
+    MANIFEST="AndroidManifest.xml"
+    MAKEFILE="Android.mk"
+    TARGET_BINARY_MARK="LOCAL_INSTRUMENTATION_FOR"
+    HOST_CONTROLLER_NAME="hostController.jar"
+
+    APP_NAME_SPACE=$(parseXML ${CTSROOT}/${MANIFEST} manifest package | sed 's/\"//g')
+    RUNNER_NAME=$(parseXML ${CTSROOT}/${MANIFEST} instrumentation android:name | sed 's/\"//g')
+    TARGET_NAME_SPACE=$(parseXML ${CTSROOT}/${MANIFEST} instrumentation android:targetPackage | sed 's/\"//g')
+    TARGET_BINARY_NAME=$(cat ${CTSROOT}/${MAKEFILE} | grep "LOCAL_INSTRUMENTATION_FOR :=" | cut -d"=" -f2 | sed 's/^[ \t]*//g;s/[ \t]*$//g')
+    if [ -z "${RUNNER_NAME}" ] ; then
+        echo "Can't find instrumentation in the manifest file."
+        return 1;
+    fi
+
+    HOST_CONTROLLER_LOCATION=$(find ${ANDROID_OUT_ROOT} -type f -name ${HOST_CONTROLLER_NAME})
+    if [ -f "${HOST_CONTROLLER_LOCATION}" ]; then
+        cp -f ${HOST_CONTROLLER_LOCATION} ${CASE_REPOSITORY}/${HOST_CONTROLLER_NAME}
+        XML_INFO="jarPath=\"${HOST_CONTROLLER_NAME}\" name=\"${XMLNAME}\" "\
+"runner=\"${RUNNER_NAME}\" appNameSpace=\"${APP_NAME_SPACE}\" appPackageName=\"${APP_PACKAGE_NAME}\""
+    else
+        XML_INFO="jarPath=\"\" name=\"${XMLNAME}\" runner=\"${RUNNER_NAME}\" "\
+"appNameSpace=\"${APP_NAME_SPACE}\" appPackageName=\"${APP_PACKAGE_NAME}\""
+    fi
+
+    if [ "${PACKAGE_NAME}" != "${TARGET_PACKAGE_NAME}" ]; then
+        # A dependancy is required by this package
+        XML_INFO="${XML_INFO} targetNameSpace=\"${TARGET_NAME_SPACE}\" targetBinaryName=\"${TARGET_BINARY_NAME}\""
+    fi
+    # Update "Package description" file
+    sed 's/XML_INFO=\"\"/'"${XML_INFO}"'/' ${OUT}/description.xml \
+    > ${CASE_REPOSITORY}/${XMLNAME}.xml
+}
+
+# Generate "Package description" file
+generatePackageDescription() {
+    SRC=${1}
+    OUT=${2}
+
+    # Build "Description generator" if not available
+    if [ ! -f ${OUT}/DescriptionGenerator.class ]; then
+        buildDescriptionGenerator ${OUT}
+    fi
+    SOURCES=$(find ${SRC} -type f -name "*.java")
+
+    echo "Generating TestCases description file from ${SRC}..."
+    javadoc -J-Xmx256m -quiet -doclet DescriptionGenerator -docletpath ${OUT} -sourcepath \
+${TOP_DIR}/frameworks/base/awt/java:\
+${TOP_DIR}/frameworks/base/core/java:\
+${TOP_DIR}/frameworks/base/graphics/java:\
+${TOP_DIR}/frameworks/base/location/java:\
+${TOP_DIR}/frameworks/base/media/java:\
+${TOP_DIR}/frameworks/base/opengl/java:\
+${TOP_DIR}/frameworks/base/sax/java:\
+${TOP_DIR}/frameworks/base/services/java:\
+${TOP_DIR}/frameworks/base/telephony/java:\
+${TOP_DIR}/frameworks/base/wifi/java:\
+${TOP_DIR}/frameworks/base/test-runner:\
+${TOP_DIR}/cts/tests/tests/app/src:\
+${TOP_DIR}/cts/tests/tests/content/src:\
+${TOP_DIR}/cts/tests/tests/database/src:\
+${TOP_DIR}/cts/tests/tests/graphics/src:\
+${TOP_DIR}/cts/tests/tests/hardware/src:\
+${TOP_DIR}/cts/tests/tests/location/src:\
+${TOP_DIR}/cts/tests/tests/media/src:\
+${TOP_DIR}/cts/tests/tests/net/src:\
+${TOP_DIR}/cts/tests/tests/os/src:\
+${TOP_DIR}/cts/tests/tests/permission/src:\
+${TOP_DIR}/cts/tests/tests/preference/src:\
+${TOP_DIR}/cts/tests/tests/provider/src:\
+${TOP_DIR}/cts/tests/tests/telephony/src:\
+${TOP_DIR}/cts/tests/tests/text/src:\
+${TOP_DIR}/cts/tests/tests/util/src:\
+${TOP_DIR}/cts/tests/tests/view/src:\
+${TOP_DIR}/cts/tests/tests/widget/src:\
+${TOP_DIR}/dalvik/libcore/dalvik/src/main/java:\
+${TOP_DIR}/dalvik/libcore/junit/src/main/java \
+${SOURCES}  1>/dev/null 2>/dev/null
+    mv description.xml ${OUT}/description.xml
+}
+
+if [ $# -ne 6 ]; then
+    echo "Usage ${0} <source dir> <destination dir> <temp dir> <top dir> "\
+    "<target common out root> == JAVA_LIBS=${5}/obj/JAVA_LIBRARIES <android out dir>"
+    exit 1
+fi
+
+TESTCASES_SOURCE=${1}
+OUT_DIR=${2}
+TEMP_DIR=${3}
+TOP_DIR=${4}
+JAVA_LIBS=${5}/obj/JAVA_LIBRARIES
+ANDROID_OUT_ROOT=${6}
+CTS_ROOT=${TOP_DIR}/cts/tools
+CASE_REPOSITORY=${OUT_DIR}/repository/testcases
+PLAN_REPOSITORY=${OUT_DIR}/repository/plans
+
+SIGNATURE_CHECK_NAME="SignatureTest"
+SIGNATURE_CHECK_PATH="${CASE_REPOSITORY}/${SIGNATURE_CHECK_NAME}.xml"
+
+CORETESTS_NAME="android.core.tests"
+CORETESTS_PATH="${CASE_REPOSITORY}/${CORETESTS_NAME}.xml"
+
+#Creating Signature check description xml file, if not existed.
+generateSignatureCheckDescription
+
+# Every test case package ends with "cts"
+for CASE_SOURCE in $(find ${TESTCASES_SOURCE} -type d | grep "cts$" | sed 's/\/\//\//'); do
+    TARGET_PACKAGE_NAME=$(echo ${CASE_SOURCE} | sed 's/^.*src\///g' | sed 's/\/cts//g' | sed 's/\//./g' | sed 's/android\..*\..*//g')
+
+    # TODO: Currently we have ignored the sub-packages, should add support for it later
+    if [ x${TARGET_PACKAGE_NAME} != x ]; then
+        # TODO: translate this script to python to reduce dependencies on external tools
+        # darwin sed does not support \u in replacement pattern, use perl for now
+        NAME=$(echo $TARGET_PACKAGE_NAME | sed 's/android.//g' | perl -p -e 's/([a-z])([a-zA-Z0-9]*)/\u\1\2/g' | sed 's/^/Cts/g' | sed 's/$/TestCases/g')
+
+        if [ x${NAME} != x ]; then
+            # TODO: Currently use hardcode -f4, should find a better way to remove this harde code
+            TESTCASE_DIR=$TESTCASES_SOURCE$(echo $CASE_SOURCE | cut -d"/" -f4)
+
+            generatePackageDescription ${CASE_SOURCE} ${TEMP_DIR}
+            addControllerInfo ${TESTCASE_DIR} ${TEMP_DIR} ${NAME} ${TARGET_PACKAGE_NAME}
+            if [[ $? -ne 0 ]]; then
+                exit 1
+            fi
+        fi
+    fi
+done
+
+# Creating "Test plan" file
+generateTestPlan ${CASE_REPOSITORY} ${PLAN_REPOSITORY}
diff --git a/tools/utils/host_config.xml b/tools/utils/host_config.xml
new file mode 100644
index 0000000..682dfb3
--- /dev/null
+++ b/tools/utils/host_config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<HostConfiguration version="1.0">
+    <Repository>
+        <!-- Specific OEM test plan directory (optional) -->
+        <TestPlan path="plans" />
+        <!-- Specific OEM test case directory (optional) -->
+        <TestCase path="testcases" />
+        <!-- Specific OEM test result directory (optional) -->
+        <TestResult path="results" />
+    </Repository>
+</HostConfiguration>
diff --git a/tools/utils/lib/junit.jar b/tools/utils/lib/junit.jar
new file mode 100644
index 0000000..674d71e
--- /dev/null
+++ b/tools/utils/lib/junit.jar
Binary files differ
diff --git a/tools/utils/startcts b/tools/utils/startcts
new file mode 100644
index 0000000..a99e844
--- /dev/null
+++ b/tools/utils/startcts
@@ -0,0 +1,41 @@
+#! /bin/bash
+
+# Copyright (C) 2009 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# CONFIGURATION
+# Set this variable to the out/host/<platform> directory of your Android tree.
+ANDROID_ROOT=out/host/linux-x86
+
+# CONFIGURATION
+# Set this variable to the root of unzipped CTS directory
+CTS_ROOT=
+
+# If ANDROID_ROOT does not exist, complain and exit
+if [ ! -d ${ANDROID_ROOT} ]; then
+    echo "Error: Please set ANDROID_ROOT in $0."
+    exit
+fi
+
+# If CTS_ROOT not set, assume it's under ANDROID_ROOT
+if [ -z "${CTS_ROOT}" ]; then
+    CTS_ROOT=${ANDROID_ROOT}/cts/android-cts_linux-x86
+fi
+
+if [ ! -d ${CTS_ROOT} ]; then
+    echo "Error: Can't locate CTS. Have you set the CTS_ROOT in $0?"
+    exit
+fi
+
+ANDROID_ROOT=${ANDROID_ROOT} bash ${CTS_ROOT}/tools/cts ${CTS_ROOT}/repository/host_config.xml
diff --git a/tools/vm-tests/Android.mk b/tools/vm-tests/Android.mk
new file mode 100644
index 0000000..84673a8
--- /dev/null
+++ b/tools/vm-tests/Android.mk
@@ -0,0 +1,115 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH := $(call my-dir)
+
+define all-src-files
+$(patsubst ./%,%,$(shell cd $(LOCAL_PATH) && find src -name '*.java'))
+endef
+
+# buildutil java library
+# ============================================================
+include $(CLEAR_VARS)
+
+LOCAL_TEST_TYPE := hostSideOnly
+LOCAL_JAR_PATH := android.core.vm-tests.jar
+
+LOCAL_SRC_FILES := $(call all-src-files)
+
+LOCAL_MODULE := cts-dalvik-buildutil
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+
+LOCAL_JAVA_LIBRARIES := dx dasm cfassembler 
+LOCAL_CLASSPATH := $(HOST_JDK_TOOLS_JAR)
+
+include $(BUILD_HOST_JAVA_LIBRARY)
+
+$(LOCAL_BUILT_MODULE): PRIVATE_CLASS_INTERMEDIATES_DIR := $(intermediates)/classes
+
+BUILD_UTIL_INTERMEDIATES_CLASSES := $(intermediates)/classes
+
+include $(CLEAR_VARS)
+
+LOCAL_IS_HOST_MODULE := true
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_MODULE := vm-tests
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/etc/starttests | $(ACP)
+	@echo "Copy: $(PRIVATE_MODULE) ($@)"
+	$(copy-file-to-new-target)
+	$(hide) chmod 755 $@
+
+GENERATED_FILES:=$(intermediates)/tests
+
+$(LOCAL_BUILT_MODULE): $(GENERATED_FILES)
+
+colon:= :
+empty:=
+space:= $(empty) $(empty)
+
+
+$(GENERATED_FILES): PRIVATE_SRC_FOLDER := $(LOCAL_PATH)/src
+$(GENERATED_FILES): PRIVATE_LIB_FOLDER := $(LOCAL_PATH)/lib
+$(GENERATED_FILES): PRIVATE_INTERMEDIATES := $(intermediates)/tests
+$(GENERATED_FILES): PRIVATE_INTERMEDIATES_MAIN_FILES := $(intermediates)/main_files
+$(GENERATED_FILES): PRIVATE_INTERMEDIATES_HOSTJUNIT_FILES := $(intermediates)/hostjunit_files
+$(GENERATED_FILES): $(HOST_OUT_JAVA_LIBRARIES)/cts-dalvik-buildutil.jar $(HOST_OUT_JAVA_LIBRARIES)/dasm.jar $(HOST_OUT_JAVA_LIBRARIES)/dx.jar $(HOST_OUT_JAVA_LIBRARIES)/cfassembler.jar
+	$(hide) mkdir -p $@
+# copy Util class to compile later together with the generated host side junit tests	
+	$(hide) mkdir -p $(PRIVATE_INTERMEDIATES_HOSTJUNIT_FILES)/dot/junit && cp $(PRIVATE_SRC_FOLDER)/util/build/DeviceUtil.java.template $(PRIVATE_INTERMEDIATES_HOSTJUNIT_FILES)/dot/junit/DeviceUtil.java
+# generated and compile the host side junit tests
+	$(hide) java -cp $(subst $(space),$(colon),$^):$(HOST_JDK_TOOLS_JAR) util.build.BuildDalvikSuite $(PRIVATE_SRC_FOLDER) $(PRIVATE_INTERMEDIATES) $<:$(PRIVATE_LIB_FOLDER)/junit.jar $(PRIVATE_INTERMEDIATES_MAIN_FILES) $(BUILD_UTIL_INTERMEDIATES_CLASSES) $(PRIVATE_INTERMEDIATES_HOSTJUNIT_FILES) $$RUN_VM_TESTS_RTO
+	@echo "wrote generated Main_*.java files to $(PRIVATE_INTERMEDIATES_MAIN_FILES)"
+INSTALLED_TESTS := $(dir $(LOCAL_INSTALLED_MODULE))/../cts_dalviktests
+
+$(LOCAL_INSTALLED_MODULE):  $(INSTALLED_TESTS)
+
+$(INSTALLED_TESTS): PRIVATE_INTERMEDIATES := $(intermediates)/tests
+$(INSTALLED_TESTS): $(GENERATED_FILES) $(GENERATED_FILES)/dot/junit/dexcore.jar
+	$(hide) mkdir -p $@/tests
+	$(hide) $(ACP) -r $(PRIVATE_INTERMEDIATES)/dot $@/tests
+	$(hide) $(ACP) -r $(PRIVATE_INTERMEDIATES)/data $@/
+
+$(intermediates)/android.core.vm-tests.jar: PRIVATE_INTERMEDIATES := $(intermediates)
+$(intermediates)/android.core.vm-tests.jar: $(INSTALLED_TESTS)
+	$(hide) cd $(PRIVATE_INTERMEDIATES)/hostjunit_files/classes && \
+	zip -q -r ../../android.core.vm-tests.jar . && \
+	cd -
+	$(hide) cd $(PRIVATE_INTERMEDIATES) && \
+	zip -q -r android.core.vm-tests.jar tests && \
+	cd -
+	
+
+define get-class-path
+	$(BUILD_UTIL_INTERMEDIATES_CLASSES)/$(strip $(1))
+endef
+
+define dex-classes
+	@mkdir -p $(dir $@)
+	@jar -cf $(dir $@)/$(notdir $@).jar $(addprefix -C $(1) ,$(2))
+	$(hide) $(DX) -JXms16M -JXmx768M \
+    --dex --output=$@ \
+    $(if $(NO_OPTIMIZE_DX), \
+        --no-optimize) \
+    $(dir $@)/$(notdir $@).jar
+    @rm -f $(dir $@)/$(notdir $@).jar
+endef
+
+$(call get-class-path,dot/junit/DxUtil.class) $(call get-class-path,dot/junit/DxAbstractMain.class):  $(HOST_OUT_JAVA_LIBRARIES)/cts-dalvik-buildutil.jar $(DX)
+
+$(GENERATED_FILES)/dot/junit/dexcore.jar: $(call get-class-path,dot/junit/DxUtil.class) $(call get-class-path,dot/junit/DxAbstractMain.class)
+	$(call dex-classes,$(BUILD_UTIL_INTERMEDIATES_CLASSES),dot/junit/DxUtil.class dot/junit/DxAbstractMain.class)
+
diff --git a/tools/vm-tests/etc/starttests b/tools/vm-tests/etc/starttests
new file mode 100755
index 0000000..8d9633b
--- /dev/null
+++ b/tools/vm-tests/etc/starttests
@@ -0,0 +1,310 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Set up prog to be the path of this script, including following symlinks,
+# and set up progdir to be the fully-qualified pathname of its directory.
+
+prog="$0"
+while [ -h "${prog}" ]; do
+    newProg=`/bin/ls -ld "${prog}"`
+    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
+    if expr "x${newProg}" : 'x/' >/dev/null; then
+        prog="${newProg}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${newProg}"
+    fi
+done
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+libdir=`dirname $progdir`/framework
+
+javaOpts=""
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "$1" : '-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    shift
+done
+
+
+#######################################################################
+# Original content of invocation script follows. Uses values cleverly
+# deduced by the above code.
+#######################################################################
+
+selection=$1
+interpreter="fast"
+if [ "$selection" = "--portable" ]; then
+    selection=$2;
+    interpreter="portable"
+fi
+
+dalviktest=$progdir/../cts_dalviktests
+dalviktestdir=$dalviktest/tests
+dexcore=$dalviktest/tests/dot/junit/dexcore.jar
+scriptdata=$dalviktest/data/scriptdata
+report=$dalviktest/report.html
+curdate=`date`
+curmode=""
+datadir=/tmp/${USER}
+base=$OUT
+framework=$base/system/framework
+export ANDROID_PRINTF_LOG=tag
+export ANDROID_LOG_TAGS='*:s' # was: jdwp:i dalvikvm:i dalvikvmi:i'
+export ANDROID_DATA=$datadir
+export ANDROID_ROOT=$base/system
+export LD_LIBRARY_PATH=$base/system/lib
+export DYLD_LIBRARY_PATH=$base/system/lib
+debug_opts="-Xcheck:jni -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
+exe=$base/system/bin/dalvikvm
+bpath=$framework/core.jar
+
+echo "--------------------------------------------------"
+echo "Dalvik VM Test Suite"
+echo "Version 1.0"
+echo "Copyright (c) 2008 The Android Open Source Project"
+echo ""
+
+if [ "$selection" = "--help" ]; then
+    echo "Usage: vm-tests [--help|--portable] [<mnemonic>]"
+    echo ""
+    echo "    --help      prints this help message"
+    echo "    --portable  uses the portable interpreter;"
+    echo "                default is the fast one"
+    echo ""
+    echo "    <mnemonic>  specifies the instruction to test;"
+    echo "                default is to run all tests"
+    echo ""
+    exit 1;
+fi
+
+rm -rf --preserve-root $datadir/dalvik-cache
+mkdir -p $datadir
+mkdir -p $datadir/dalvik-cache
+ 
+if [ "$TARGET_SIMULATOR" = "true" ]; then
+    echo "Simulator mode, $interpreter interpreter";
+    curmode="simulator"
+    if [ -f $exe ]; then
+        version=`${exe} -version 2> /dev/null | grep -o "version.*$"`
+        echo "Using Dalvik VM ${version}"
+    else
+        echo "No Dalvik VM found at $exe";
+        exit 1;
+    fi
+else
+    echo "Emulator mode, $interpreter interpreter";
+    curmode="emulator"
+    version=`adb shell dalvikvm -version 2> /dev/null | grep -o "version.*$"`
+    if [ "${version}" != "" ]; then
+        echo "Using Dalvik VM ${version}"
+    else
+        echo "No emulator or device found";
+        exit 1;
+    fi
+fi
+
+echo ""
+
+pre_report="<html><head><style>
+table tr.ok { background:#a0ffa0; }
+table tr.nok { background:#ffa0a0; }
+table tr.wok { background:#ffffa0; }
+table tr.lok { background:#aaaaff; }
+</style></head>
+<body>
+<h1>Dalvik VM test suite results</h1>
+Generated $curdate (using the $curmode)
+<p>
+<table width='100%'>
+<tr><td>Status</td><td>Target</td><td>Category</td><td>Details</td></tr>"
+post_report="</body></html>"
+
+rm -f $report
+echo $pre_report > $report
+
+# ----------- running each opcode test ------------
+
+export jpassedcnt=0
+export jfailedcnt=0
+export jvfefailedcnt=0
+export jwarningcnt=0
+export jallcnt=0
+export jcolumns=0
+
+# TODO unhack
+if [ "$TARGET_SIMULATOR" = "true" ]; then
+    echo -n ""
+else
+    adb push $dexcore /data/dexcore.jar >> /dev/null 2>&1
+fi
+
+function classnameToJar()
+{
+    echo $1 | sed -e 's#\.#/#g;s#$#.jar#'
+}
+
+while read -u 3 myline;
+do
+    # dot.junit.opcodes.add_double.Main_testB1;dot.junit.opcodes.add_double.d.T_add_double_1 ;opcode add_double;test B #1 (border edge case)
+    # ->
+    # mainclass: dot.junit.opcodes.add_double.Main_testB1
+    # testcasedir: opcodes/add_double
+    # testname: testB1 ->
+    # dir dot/junit/opcodes/add_double/testB1
+    
+    # e.g dot.junit.opcodes.add_double.Main_testB1
+    mainclass=`echo $myline | cut -d";" -f1`
+    # e.g dot.junit.opcodes.add_double.d.T_add_double_1, space sep. >=1 entries
+    deps=`echo $myline | cut -d";" -f2`
+    
+    jtitle=`echo $myline | cut -d";" -f3`
+    jcomment=`echo $myline | cut -d";" -f4`
+    details=`echo $myline | cut -d";" -f5`
+    
+    if [ "$selection" == "" ] || [ "$jtitle" == "$selection" ]; then
+    
+        (( jallcnt += 1 ))   
+        
+        cd $dalviktestdir
+        rm -f $datadir/dalvikout
+        # write dalvik output to file
+        echo -n "mk_b:" > $datadir/dalvikout
+        
+        if [ "$TARGET_SIMULATOR" = "true" ]; then
+            classpath=`classnameToJar ${mainclass}`
+            for dep in ${deps}; do
+                depJar=`classnameToJar ${dep}`
+                classpath=${classpath}:${depJar}
+            done
+            $valgrind $exe -Xint:$interpreter -Xmx512M -Xss32K -Xbootclasspath:$bpath $debug_opts \
+                -classpath $dexcore:$classpath $mainclass >> $datadir/dalvikout 2>&1
+    
+            RESULTCODE=$?
+            if [ ${RESULTCODE} -ne 0 ]; then
+                echo "Dalvik VM failed, result=${RESULTCODE}" >> $datadir/dalvikout 2>&1
+            fi
+        else
+            classpath="/data/dexcore.jar"
+            deps=${deps}" "${mainclass}
+            pushedjars=""
+            for dep in ${deps}; do
+                depJar=`classnameToJar ${dep}`
+                depFileName=`basename ${depJar}`
+                deviceFileName=/data/${depFileName}
+                adb push ${depJar} ${deviceFileName} &> /dev/null
+                classpath=${classpath}:${deviceFileName}
+                pushedjars=${pushedjars}" "${deviceFileName}
+            done
+        
+            adb shell dalvikvm -Xint:$interpreter -Xmx512M -Xss32K -Djava.io.tmpdir=/data/local/tmp \
+                -classpath $classpath $mainclass >> $datadir/dalvikout 2>&1 && \
+                echo -n dvmpassed: >> $datadir/dalvikout 2>&1
+    
+            for jar in ${pushedjars}; do
+                adb shell rm ${jar} &> /dev/null
+            done
+        fi
+        
+        echo -n "mk_s:" >> $datadir/dalvikout
+        # Verify tmpout only contains mkdxc_start;mkdxc_stop -> no system.out/err
+        # because of exception. If ok -> green report line else red report with info
+        # between mkdxc_start and stop
+        vmresult=`cat $datadir/dalvikout`
+    
+        if [[ ("$vmresult" == "mk_b:mk_s:") || ("$vmresult" == "mk_b:dvmpassed:mk_s:") ]]; then
+            (( jpassedcnt += 1 )) 
+            echo -n "<tr class=\"ok\"><td>Success</td><td>$jtitle</td>" >> $report
+            echo "<td>$jcomment</td><td>$details</td></tr>" >> $report
+            echo -n "."
+        else
+            vmres=`cat $datadir/dalvikout | sed -e 's/mk_b://;s/mk_s://'`
+            vmres="$details<br><pre>$vmres</pre>"
+            
+            stacktraces=`echo $vmresult | grep "java\.lang\." | grep -c "at dot\.junit\."`
+            if [[ $stacktraces > 0 ]]; then
+                jtype=`echo "$mainclass" | sed -e 's/.*_test\([^0-9]*\)[0-9].*/\1/' `
+                if [ "$jtype" == "VFE" ]; then
+                    (( jvfefailedcnt += 1 ))
+                    echo -n "V"
+                else
+                    (( jfailedcnt += 1 )) 
+                    echo -n "F"
+                fi
+
+                echo "<tr class=\"nok\"><td>Failure</td><td>$jtitle</td><td>" >> $report
+                echo "$jcomment</td><td>$vmres</td></tr>" >> $report
+            else
+                (( jwarningcnt += 1 ))
+                echo "<tr class=\"wok\"><td>Failure</td><td>$jtitle</td><td>" >> $report
+                echo "$jcomment</td><td>(No stacktrace, but errors on console)" >> $report
+                echo "<br>$vmres</td></tr>" >> $report
+                echo -n "C"
+            fi
+        fi
+        
+        (( jcolumns += 1 ))
+        if [ ${jcolumns} -eq 40 ]; then
+            echo ""
+            (( jcolumns = 0 ))
+        fi
+
+    fi
+# Use fd nr 3 to avoid subshelling via cat since this looses all
+# variables(and thus also the counters we are interested in).
+done 3<$scriptdata 
+
+echo "</table>" >> $report
+let jallcalccnt=$jpassedcnt+$jfailedcnt+$jvfefailedcnt+$jwarningcnt
+if [ $jallcalccnt -ne $jallcnt ]; then
+    echo "<br>error: green & red != total , $jallcalccnt -ne $jallcnt" >> $report
+    exit 1;
+fi
+
+echo $post_report >> $report
+
+echo "<br>Tests run: ${jallcnt}" >> $report
+echo "<br>Functional failures: ${jfailedcnt}" >> $report
+echo "<br>Verifier failures: ${jvfefailedcnt}" >> $report
+echo "<br>Console errors: ${jwarningcnt}" >> $report
+
+echo $post_report >> $report
+
+if [[ jcolumns -ne 0 ]]; then
+    echo ""
+fi
+
+echo ""
+
+if [[ jallcnt -eq jpassedcnt ]]; then
+    echo "OK (${jpassedcnt} tests)"
+else
+    echo "FAILURES!!!"
+    echo ""
+    echo "Tests run          : ${jallcnt}"
+    echo "Functional failures: ${jfailedcnt}"
+    echo "Verifier failures  : ${jvfefailedcnt}"
+    echo "Console errors     : ${jwarningcnt}"
+fi
+
+echo ""
+echo "Please see complete report in ${report}"
+echo "--------------------------------------------------"
diff --git a/tools/vm-tests/lib/junit.jar b/tools/vm-tests/lib/junit.jar
new file mode 100644
index 0000000..674d71e
--- /dev/null
+++ b/tools/vm-tests/lib/junit.jar
Binary files differ
diff --git a/tools/vm-tests/src/dot/Main.java b/tools/vm-tests/src/dot/Main.java
new file mode 100644
index 0000000..62e8e29
--- /dev/null
+++ b/tools/vm-tests/src/dot/Main.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot;
+
+import dot.junit.AllTests;
+import junit.textui.TestRunner;
+
+/**
+ * Main class to run the jasmin tests.
+ */
+public class Main {
+    public static void main(String[] args) {
+        if (args.length == 0) {
+            System.out.println("Running all tests...");
+            TestRunner.run(AllTests.suite());
+        } else {
+            System.out.println("Running selected tests...");
+            TestRunner.main(args);
+        }
+        
+        Runtime.getRuntime().halt(0);
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/AllTests.java b/tools/vm-tests/src/dot/junit/AllTests.java
new file mode 100644
index 0000000..fd54824
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/AllTests.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package dot.junit;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite();
+        // tests all opcodes
+        suite.addTest(dot.junit.opcodes.AllTests.suite());
+        suite.addTest(dot.junit.verify.AllTests.suite());
+        suite.addTest(dot.junit.format.AllTests.suite());
+        return suite;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/DxAbstractMain.java b/tools/vm-tests/src/dot/junit/DxAbstractMain.java
new file mode 100644
index 0000000..d40fb94
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/DxAbstractMain.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit;
+
+public class DxAbstractMain {
+    
+    static public void assertEquals(int expected, int actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals. Expected " + expected + " actual " + actual);
+    }
+    
+    static public void assertEquals(String message, int expected, int actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals: " + message + " Expected " + expected + " actual " + actual);
+    }
+    
+
+    static public void assertEquals(long expected, long actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals. Expected " + expected + " actual " + actual);
+    }
+
+    static public void assertEquals(double expected, double actual, double delta) {
+        if(!(Math.abs(expected-actual) <= delta)) throw new RuntimeException("AssertionFailedError: not within delta");
+    }
+    
+    static public void assertEquals(Object expected, Object actual) {
+        if (expected == null && actual == null)
+            return;
+        if (expected != null && expected.equals(actual))
+            return;
+        throw new RuntimeException("AssertionFailedError: not the same");
+    }
+    
+    static public void assertTrue(boolean condition) {
+        if (!condition) throw new RuntimeException("AssertionFailedError: condition was false");
+    }
+    
+    static public void assertFalse(boolean condition) {
+        if (condition) throw new RuntimeException("AssertionFailedError: condition was true");
+    }
+    
+    static public void assertNotNull(Object object) {
+        if (object == null) throw new RuntimeException("AssertionFailedError: object was null");
+    }
+    
+    static public void assertNull(Object object) {
+        if (object != null) throw new RuntimeException("AssertionFailedError: object was not null");
+    }
+    
+    static public void fail(String message) {
+        throw new RuntimeException("AssertionFailedError msg:"+message);
+    }
+    
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/DxTestCase.java b/tools/vm-tests/src/dot/junit/DxTestCase.java
new file mode 100644
index 0000000..00eb6fe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/DxTestCase.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit;
+
+import junit.framework.TestCase;
+
+public class DxTestCase extends TestCase {
+    
+    // omit the "extends TestCase" and uncomment the following methods if you would like to run the tests as rolled-out, separate tests.
+    
+/*    
+    static public void assertEquals(int expected, int actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals");
+    }
+
+    static public void assertEquals(long expected, long actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals");
+    }
+
+    static public void assertEquals(double expected, double actual, double delta) {
+        if(!(Math.abs(expected-actual) <= delta)) throw new RuntimeException("AssertionFailedError: not within delta");
+    }
+    
+    static public void assertEquals(Object expected, Object actual) {
+        if (expected == null && actual == null)
+            return;
+        if (expected != null && expected.equals(actual))
+            return;
+        throw new RuntimeException("AssertionFailedError: not the same");
+    }
+    
+    static public void assertTrue(boolean condition) {
+        if (!condition) throw new RuntimeException("AssertionFailedError: condition was false");
+    }
+    
+    static public void assertFalse(boolean condition) {
+        if (condition) throw new RuntimeException("AssertionFailedError: condition was true");
+    }
+    
+    static public void assertNotNull(Object object) {
+        if (object == null) throw new RuntimeException("AssertionFailedError: object was null");
+    }
+    
+    static public void assertNull(Object object) {
+        if (object != null) throw new RuntimeException("AssertionFailedError: object was not null");
+    }
+    
+    static public void fail(String message) {
+        throw new RuntimeException("AssertionFailedError msg:"+message);
+    }
+*/    
+    
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/DxUtil.java b/tools/vm-tests/src/dot/junit/DxUtil.java
new file mode 100644
index 0000000..cba0d54
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/DxUtil.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit; 
+
+public class DxUtil {
+    private static boolean isDalvik = false;
+    
+    static {
+        /**
+         * whether in case of a failure, also ClassNotFoundException is accepted.
+         * this makes sense for invalid classes that got rejected by the dx tools
+         * and thus do not exist in .dex format, so that this class missing means a
+         * the expected verify error (though at the dx tool level)
+         */
+//        String acnfS = System.getProperty("acceptCNF");
+//        isDalvik = (acnfS != null && acnfS.equals("true"));
+        //System.out.println("@DX:DxUtil:isDalik="+isDalvik);
+    }
+    
+    public static void checkVerifyException(Throwable t) {
+        // the dalvik vm and other vm handle verify errors differently (see the dalvik verifier)
+        // the dalvik vm only throws a VerifyError, whereas other vm can throw all subclasses of
+        // LinkageError:
+        // - ClassCircularityError
+        // - ClassFormatError
+        // - ExceptionInInitializerError
+        // - IncompatibleClassChangeError
+        // - NoClassDefFoundError
+        // - UnsatisfiedLinkError
+        // - VerifyError
+
+        // in case we are testing the dalvik, we also accept a ClassNotFoundException, 
+        // since that may happen when a verify error was thrown by the dx tool and thus no
+        // classes.dex was written at all. 
+        //System.out.println("@dx:debug:isDalvik:"+isDalvik);
+        /*
+        if ((t instanceof VerifyError || 
+                (isDalvik && t instanceof ClassNotFoundException) || 
+                (!isDalvik && !(t instanceof NoClassDefFoundError) 
+                        && t instanceof LinkageError))) {
+                // ok, this is what we expected
+            System.out.println("@dx:debug:vfe-ok: vfe was:"+t.getClass().getName()+", msg:"+t.getMessage());
+            return;
+        } else {
+            throw new RuntimeException("test did not cause the expected verify error, but:"+t.getClass().getName()+", msg:"+t.getMessage());
+        }
+*/
+        if (t instanceof VerifyError || t instanceof java.lang.IncompatibleClassChangeError ||t instanceof ClassNotFoundException) {
+                // ok, this is what we expected
+        } else {
+            throw new RuntimeException("VerifyError expected", t);
+        }
+
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/format/AllTests.java b/tools/vm-tests/src/dot/junit/format/AllTests.java
new file mode 100644
index 0000000..30cc091
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/AllTests.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.format;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite("Tests for dalvik vm: test that "
+                + "structurally damaged files are rejected by the verifier");
+        suite.addTestSuite(dot.junit.format.f1.Test_f1.class);
+
+        return suite;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/format/f1/Test_f1.java b/tools/vm-tests/src/dot/junit/format/f1/Test_f1.java
new file mode 100644
index 0000000..7751833
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/Test_f1.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.format.f1;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_f1 extends DxTestCase {
+
+    /**
+     * @constraint n/a
+     * @title size of dex file shall be greater than size of header 
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a 
+     * @title check that .dex with wrong magic is rejected 
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title check that .dex with wrong version is rejected 
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title check that .dex with wrong endian_tag is rejected 
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title check that .dex with wrong header size is rejected 
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title  file length must be equal to length in header
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title  header->map_off != 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title number of classes in dex shall be > 0
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title check that .dex with wrong checksum is rejected 
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_9");
+            fail("expected a verification exception but this test may fail if this check is not enforced");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title check that .dex with wrong signature is rejected 
+     */
+//    public void testVFE10() {
+//        try {
+//            Class.forName("dot.junit.format.f1.d.T_f1_10");
+//            fail("expected a verification exception but this test may fail if this check is not enforced");
+//        } catch (Throwable t) {
+//            DxUtil.checkVerifyException(t);
+//        }
+//    }
+    
+    /**
+     * @constraint n/a
+     * @title header and map section mismatch 
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title overlapping sections 
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_0.java b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_0.java
new file mode 100644
index 0000000..dda0585
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_0.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.format.f1.d;
+
+/**
+*
+*/
+public class T_f1_0 {
+   // dummy
+}
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_1.d b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_1.d
new file mode 100644
index 0000000..e674f34
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_1.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_1.java
+.class public dot.junit.format.f1.d.T_f1_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_1.dfh b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_1.dfh
new file mode 100644
index 0000000..9f57983
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_1.dfh
@@ -0,0 +1,50 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_1.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_1.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : ec6e3629
+    29 36 6E EC 
+// parsed: offset 12, len 20: signature           : 3861...369f
+    38 61 EF D2 97 82 DF F7 A7 77 7B 79 71 13 35 C5 6D 3E 36 9F 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_10.d b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_10.d
new file mode 100644
index 0000000..c06a20e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_10.java
+.class public dot.junit.format.f1.d.T_f1_10
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_10.dfh b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_10.dfh
new file mode 100644
index 0000000..302ade9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_10.dfh
@@ -0,0 +1,250 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_10.dex'...
+//@leaveSignature
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 847035e6
+    E6 35 70 84 
+// parsed: offset 12, len 20: signature           : 3812...2763
+//@mod    38 12 0A DA E3 92 55 8C 6E 8F 55 E2 13 CF 5C C2 93 C5 27 63 
+    38 12 0A DA E3 92 55 8C 6E 8F 55 E2 13 CF 5C C2 93 C5 27 64 
+// parsed: offset 32, len 4: file_size           : 504
+    F8 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 380 (0x00017c)
+    7C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 288
+    20 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_10;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 321 (0x000141) "Ljava/lang/Object;"
+    41 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 341 (0x000155) "T_f1_10.java"
+    55 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 355 (0x000163) "V"
+    63 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 358 (0x000166) "run"
+    66 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_10;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 363 (0x00016b)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 6B 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_10.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_10.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 33: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_10;"
+    1F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 31 30 3B 00 
+// parsed: offset 321, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 341, len 14: TYPE_STRING_DATA_ITEM [3] "T_f1_10.java"
+    0C 54 5F 66 31 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 355, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 358, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_10;"
+    // parsed: offset 363, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 364, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 365, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 366, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 367, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 368, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 371, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 373, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 374, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 375, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 377, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 380, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 384, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 396, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 408, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 420, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 432, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 444, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 456, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 468, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 480, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 363 (0x00016b)
+        00 20 00 00 01 00 00 00 6B 01 00 00 
+    // parsed: offset 492, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 380 (0x00017c)
+        00 10 00 00 01 00 00 00 7C 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_11.d b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_11.d
new file mode 100644
index 0000000..4ad888f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_11.java
+.class public dot.junit.format.f1.d.T_f1_11
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_11.dfh b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_11.dfh
new file mode 100644
index 0000000..520eecd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_11.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 759b34c5
+    C5 34 9B 75 
+// parsed: offset 12, len 20: signature           : 4b4b...0a08
+    4B 4B CE BA CF CF BB 48 3B 6A 80 1B 8A C6 11 04 21 E0 0A 08 
+// parsed: offset 32, len 4: file_size           : 504
+    F8 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 380 (0x00017c)
+    7C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+//@mod    B8 00 00 00 
+    BA 00 00 00 
+// parsed: offset 104, len 4: data_size           : 288
+    20 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_11;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 321 (0x000141) "Ljava/lang/Object;"
+    41 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 341 (0x000155) "T_f1_11.java"
+    55 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 355 (0x000163) "V"
+    63 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 358 (0x000166) "run"
+    66 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_11;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 363 (0x00016b)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 6B 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_11.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_11.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 33: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_11;"
+    1F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 31 31 3B 00 
+// parsed: offset 321, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 341, len 14: TYPE_STRING_DATA_ITEM [3] "T_f1_11.java"
+    0C 54 5F 66 31 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 355, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 358, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_11;"
+    // parsed: offset 363, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 364, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 365, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 366, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 367, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 368, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 371, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 373, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 374, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 375, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 377, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 380, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 384, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 396, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 408, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 420, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 432, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 444, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 456, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 468, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 480, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 363 (0x00016b)
+        00 20 00 00 01 00 00 00 6B 01 00 00 
+    // parsed: offset 492, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 380 (0x00017c)
+        00 10 00 00 01 00 00 00 7C 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_12.d b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_12.d
new file mode 100644
index 0000000..e6e053d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_12.java
+.class public dot.junit.format.f1.d.T_f1_12
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_12.dfh b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_12.dfh
new file mode 100644
index 0000000..4676340
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_12.dfh
@@ -0,0 +1,250 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_12.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 07303496
+    96 34 30 07 
+// parsed: offset 12, len 20: signature           : 100a...7239
+    10 0A 39 C5 D2 93 06 FC 06 5B 53 BC 09 9C 40 BB 95 77 72 39 
+// parsed: offset 32, len 4: file_size           : 504
+    F8 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 380 (0x00017c)
+    7C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+//@mod    B8 00 00 00 
+    A8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 288
+    20 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_12;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 321 (0x000141) "Ljava/lang/Object;"
+    41 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 341 (0x000155) "T_f1_12.java"
+    55 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 355 (0x000163) "V"
+    63 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 358 (0x000166) "run"
+    66 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_12;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 363 (0x00016b)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 6B 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_12.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_12.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 33: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_12;"
+    1F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 31 32 3B 00 
+// parsed: offset 321, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 341, len 14: TYPE_STRING_DATA_ITEM [3] "T_f1_12.java"
+    0C 54 5F 66 31 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 355, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 358, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_12;"
+    // parsed: offset 363, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 364, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 365, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 366, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 367, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 368, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 371, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 373, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 374, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 375, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 377, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 380, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 384, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 396, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 408, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 420, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 432, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 444, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+//@mod        06 00 00 00 01 00 00 00 B8 00 00 00 
+        06 00 00 00 01 00 00 00 A8 00 00 00 
+    // parsed: offset 456, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 468, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 480, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 363 (0x00016b)
+        00 20 00 00 01 00 00 00 6B 01 00 00 
+    // parsed: offset 492, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 380 (0x00017c)
+        00 10 00 00 01 00 00 00 7C 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_2.d b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_2.d
new file mode 100644
index 0000000..72ed9ac
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_2.java
+.class public dot.junit.format.f1.d.T_f1_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_2.dfh b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_2.dfh
new file mode 100644
index 0000000..8bb38ee
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_2.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_2.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+//@mod    64 65 78 0A 30 33 35 00 
+    64 66 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 8bce34e8
+    E8 34 CE 8B 
+// parsed: offset 12, len 20: signature           : f886...8932
+    F8 86 A3 17 14 FD 2D 49 29 6D D9 46 AA 4F 13 EF AE 3E 89 32 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_2;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_2.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_2;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_2.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_2.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_2;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 32 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_2.java"
+    0B 54 5F 66 31 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_2;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_3.d b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_3.d
new file mode 100644
index 0000000..f98d9fa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_3.java
+.class public dot.junit.format.f1.d.T_f1_3
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_3.dfh b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_3.dfh
new file mode 100644
index 0000000..cdfa4a8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_3.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_3.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+//@mod    64 65 78 0A 30 33 35 00 
+    64 65 78 0A 30 33 36 00 
+// parsed: offset 8, len 4: checksum            : df0f35a3
+    A3 35 0F DF 
+// parsed: offset 12, len 20: signature           : b564...1b93
+    B5 64 17 3D FC 6E 3C 3F 82 57 DF 8D 9C A7 73 4C A9 DF 1B 93 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_3;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_3.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_3;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_3.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_3.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_3;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 33 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_3.java"
+    0B 54 5F 66 31 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_3;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_4.d b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_4.d
new file mode 100644
index 0000000..22611e3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_4.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_4.java
+.class public dot.junit.format.f1.d.T_f1_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_4.dfh b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_4.dfh
new file mode 100644
index 0000000..ea0b607
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_4.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_4.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 64f33679
+    79 36 F3 64 
+// parsed: offset 12, len 20: signature           : 8406...c8ea
+    84 06 E5 69 3D 66 48 AB 94 79 27 C2 C1 ED 00 D7 F5 13 C8 EA 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+//@mod    78 56 34 12 
+    78 56 12 34 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_4;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_4.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_4;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_4.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_4.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_4;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 34 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_4.java"
+    0B 54 5F 66 31 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_4;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_5.d b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_5.d
new file mode 100644
index 0000000..e3a993f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_5.java
+.class public dot.junit.format.f1.d.T_f1_5
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_5.dfh b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_5.dfh
new file mode 100644
index 0000000..99ffd13
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_5.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_5.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_5.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 76133706
+    06 37 13 76 
+// parsed: offset 12, len 20: signature           : 8bbd...7aa2
+    8B BD 3B 72 62 F4 A2 15 DF 5E D8 E5 D2 AE 88 0D 4F B2 7A A2 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+//@mod    70 00 00 00 
+    69 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_5;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_5.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_5;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_5;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_5.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_5.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_5.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_5;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 35 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_5.java"
+    0B 54 5F 66 31 5F 35 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_5;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_6.d b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_6.d
new file mode 100644
index 0000000..6bb0bf0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_6.java
+.class public dot.junit.format.f1.d.T_f1_6
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_6.dfh b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_6.dfh
new file mode 100644
index 0000000..375a9acf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_6.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_6.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_6.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 9bbb37a1
+    A1 37 BB 9B 
+// parsed: offset 12, len 20: signature           : a799...4c32
+    A7 99 F8 99 E8 8A 81 65 99 13 A3 2A E4 F9 F2 75 BD A6 4C 32 
+// parsed: offset 32, len 4: file_size           : 500
+//@mod    F4 01 00 00 
+    F4 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_6;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_6.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_6;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_6;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_6.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_6.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_6.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_6;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 36 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_6.java"
+    0B 54 5F 66 31 5F 36 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_6;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_7.d b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_7.d
new file mode 100644
index 0000000..61f31b1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_7.java
+.class public dot.junit.format.f1.d.T_f1_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_7.dfh b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_7.dfh
new file mode 100644
index 0000000..1845c7a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_7.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_7.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_7.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 6b8435f0
+    F0 35 84 6B 
+// parsed: offset 12, len 20: signature           : a4f8...a536
+    A4 F8 18 65 4B 3E B6 D4 7A 69 71 CE B6 43 71 42 D3 6C A5 36 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+//@mod    78 01 00 00 
+    00 00 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_7;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_7.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_7;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_7;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_7.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_7.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_7.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_7;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 37 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_7.java"
+    0B 54 5F 66 31 5F 37 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_7;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_8.d b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_8.d
new file mode 100644
index 0000000..c622eb0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_8.java
+.class public dot.junit.format.f1.d.T_f1_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_8.dfh b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_8.dfh
new file mode 100644
index 0000000..3ebff78
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_8.dfh
@@ -0,0 +1,251 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : bd8b37bf
+    BF 37 8B BD 
+// parsed: offset 12, len 20: signature           : 1091...62b1
+    10 91 A3 C7 70 2E 36 E5 FD 30 D9 9A 80 EE 8A CC EC BA 62 B1 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+//@mod    01 00 00 00 
+    00 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_8;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_8.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_8;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+//@mod    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_8.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_8.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_8;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 38 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_8.java"
+    0B 54 5F 66 31 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_8;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+//@mod        06 00 00 00 01 00 00 00 B8 00 00 00 
+        06 00 00 00 00 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_9.d b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_9.d
new file mode 100644
index 0000000..9a44f4e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_f1_9.java
+.class public dot.junit.format.f1.d.T_f1_9
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_9.dfh b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_9.dfh
new file mode 100644
index 0000000..f3e4dd1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/format/f1/d/T_f1_9.dfh
@@ -0,0 +1,250 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_9.dex'...
+//@leaveChecksum
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a9763611
+//@mod    11 36 76 A9 
+    11 36 76 AA 
+// parsed: offset 12, len 20: signature           : 1ee9...1036
+    1E E9 E9 EC 3D 14 5F 07 A1 FA 8E E8 B1 FA 6C 91 35 6A 10 36 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_9;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_9.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_9;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_9.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_9.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_9;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 39 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_9.java"
+    0B 54 5F 66 31 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_9;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/AllTests.java b/tools/vm-tests/src/dot/junit/opcodes/AllTests.java
new file mode 100644
index 0000000..282ac42
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/AllTests.java
@@ -0,0 +1,254 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite("Tests for all dalvik vm opcodes");
+        suite.addTestSuite(dot.junit.opcodes.add_double_2addr.Test_add_double_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.add_double.Test_add_double.class);
+        suite.addTestSuite(dot.junit.opcodes.add_float_2addr.Test_add_float_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.add_float.Test_add_float.class);
+        suite.addTestSuite(dot.junit.opcodes.add_int_2addr.Test_add_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.add_int_lit16.Test_add_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.add_int_lit8.Test_add_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.add_int.Test_add_int.class);
+        suite.addTestSuite(dot.junit.opcodes.add_long_2addr.Test_add_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.add_long.Test_add_long.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_boolean.Test_aget_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_byte.Test_aget_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_char.Test_aget_char.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_object.Test_aget_object.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_short.Test_aget_short.class);
+        suite.addTestSuite(dot.junit.opcodes.aget.Test_aget.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_wide.Test_aget_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.and_int_2addr.Test_and_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.and_int_lit16.Test_and_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.and_int_lit8.Test_and_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.and_int.Test_and_int.class);
+        suite.addTestSuite(dot.junit.opcodes.and_long_2addr.Test_and_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.and_long.Test_and_long.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_boolean.Test_aput_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_byte.Test_aput_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_char.Test_aput_char.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_object.Test_aput_object.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_short.Test_aput_short.class);
+        suite.addTestSuite(dot.junit.opcodes.aput.Test_aput.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_wide.Test_aput_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.array_length.Test_array_length.class);
+        suite.addTestSuite(dot.junit.opcodes.check_cast.Test_check_cast.class);
+        suite.addTestSuite(dot.junit.opcodes.cmpg_double.Test_cmpg_double.class);
+        suite.addTestSuite(dot.junit.opcodes.cmpg_float.Test_cmpg_float.class);
+        suite.addTestSuite(dot.junit.opcodes.cmpl_double.Test_cmpl_double.class);
+        suite.addTestSuite(dot.junit.opcodes.cmpl_float.Test_cmpl_float.class);
+        suite.addTestSuite(dot.junit.opcodes.cmp_long.Test_cmp_long.class);
+        suite.addTestSuite(dot.junit.opcodes.const_16.Test_const_16.class);
+        suite.addTestSuite(dot.junit.opcodes.const_4.Test_const_4.class);
+        suite.addTestSuite(dot.junit.opcodes.const_class.Test_const_class.class);
+        suite.addTestSuite(dot.junit.opcodes.const_high16.Test_const_high16.class);
+        suite.addTestSuite(dot.junit.opcodes.const_string_jumbo.Test_const_string_jumbo.class);
+        suite.addTestSuite(dot.junit.opcodes.const_string.Test_const_string.class);
+        suite.addTestSuite(dot.junit.opcodes.const_wide_16.Test_const_wide_16.class);
+        suite.addTestSuite(dot.junit.opcodes.const_wide_32.Test_const_wide_32.class);
+        suite.addTestSuite(dot.junit.opcodes.const_wide_high16.Test_const_wide_high16.class);
+        suite.addTestSuite(dot.junit.opcodes.const_wide.Test_const_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.div_double_2addr.Test_div_double_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.div_double.Test_div_double.class);
+        suite.addTestSuite(dot.junit.opcodes.div_float_2addr.Test_div_float_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.div_float.Test_div_float.class);
+        suite.addTestSuite(dot.junit.opcodes.div_int_2addr.Test_div_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.div_int_lit16.Test_div_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.div_int_lit8.Test_div_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.div_int.Test_div_int.class);
+        suite.addTestSuite(dot.junit.opcodes.div_long_2addr.Test_div_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.div_long.Test_div_long.class);
+        suite.addTestSuite(dot.junit.opcodes.double_to_float.Test_double_to_float.class);
+        suite.addTestSuite(dot.junit.opcodes.double_to_int.Test_double_to_int.class);
+        suite.addTestSuite(dot.junit.opcodes.double_to_long.Test_double_to_long.class);
+        suite.addTestSuite(dot.junit.opcodes.fill_array_data.Test_fill_array_data.class);
+        suite.addTestSuite(dot.junit.opcodes.filled_new_array_range.Test_filled_new_array_range.class);
+        suite.addTestSuite(dot.junit.opcodes.filled_new_array.Test_filled_new_array.class);
+        suite.addTestSuite(dot.junit.opcodes.float_to_double.Test_float_to_double.class);
+        suite.addTestSuite(dot.junit.opcodes.float_to_int.Test_float_to_int.class);
+        suite.addTestSuite(dot.junit.opcodes.float_to_long.Test_float_to_long.class);
+        suite.addTestSuite(dot.junit.opcodes.goto_16.Test_goto_16.class);
+        suite.addTestSuite(dot.junit.opcodes.goto_32.Test_goto_32.class);
+        suite.addTestSuite(dot.junit.opcodes.if_eq.Test_if_eq.class);
+        suite.addTestSuite(dot.junit.opcodes.if_eqz.Test_if_eqz.class);
+        suite.addTestSuite(dot.junit.opcodes.if_ge.Test_if_ge.class);
+        suite.addTestSuite(dot.junit.opcodes.if_gez.Test_if_gez.class);
+        suite.addTestSuite(dot.junit.opcodes.if_gt.Test_if_gt.class);
+        suite.addTestSuite(dot.junit.opcodes.if_gtz.Test_if_gtz.class);
+        suite.addTestSuite(dot.junit.opcodes.if_le.Test_if_le.class);
+        suite.addTestSuite(dot.junit.opcodes.if_lez.Test_if_lez.class);
+        suite.addTestSuite(dot.junit.opcodes.if_lt.Test_if_lt.class);
+        suite.addTestSuite(dot.junit.opcodes.if_ltz.Test_if_ltz.class);
+        suite.addTestSuite(dot.junit.opcodes.if_ne.Test_if_ne.class);
+        suite.addTestSuite(dot.junit.opcodes.if_nez.Test_if_nez.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_boolean.Test_iget_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_byte.Test_iget_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_char.Test_iget_char.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_object.Test_iget_object.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_short.Test_iget_short.class);
+        suite.addTestSuite(dot.junit.opcodes.iget.Test_iget.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_wide.Test_iget_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.instance_of.Test_instance_of.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_byte.Test_int_to_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_char.Test_int_to_char.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_double.Test_int_to_double.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_float.Test_int_to_float.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_long.Test_int_to_long.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_short.Test_int_to_short.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_direct_range.Test_invoke_direct_range.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_direct.Test_invoke_direct.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_interface_range.Test_invoke_interface_range.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_interface.Test_invoke_interface.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_static_range.Test_invoke_static_range.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_static.Test_invoke_static.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_super_range.Test_invoke_super_range.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_super.Test_invoke_super.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_virtual_range.Test_invoke_virtual_range.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_virtual.Test_invoke_virtual.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_boolean.Test_iput_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_byte.Test_iput_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_char.Test_iput_char.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_object.Test_iput_object.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_short.Test_iput_short.class);
+        suite.addTestSuite(dot.junit.opcodes.iput.Test_iput.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_wide.Test_iput_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.long_to_double.Test_long_to_double.class);
+        suite.addTestSuite(dot.junit.opcodes.long_to_float.Test_long_to_float.class);
+        suite.addTestSuite(dot.junit.opcodes.long_to_int.Test_long_to_int.class);
+        suite.addTestSuite(dot.junit.opcodes.monitor_enter.Test_monitor_enter.class);
+        suite.addTestSuite(dot.junit.opcodes.monitor_exit.Test_monitor_exit.class);
+        suite.addTestSuite(dot.junit.opcodes.move_16.Test_move_16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_exception.Test_move_exception.class);
+        suite.addTestSuite(dot.junit.opcodes.move_from16.Test_move_from16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_object_16.Test_move_object_16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_object_from16.Test_move_object_from16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_object.Test_move_object.class);
+        suite.addTestSuite(dot.junit.opcodes.move_result_object.Test_move_result_object.class);
+        suite.addTestSuite(dot.junit.opcodes.move_result.Test_move_result.class);
+        suite.addTestSuite(dot.junit.opcodes.move_result_wide.Test_move_result_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.move.Test_move.class);
+        suite.addTestSuite(dot.junit.opcodes.move_wide_16.Test_move_wide_16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_wide_from16.Test_move_wide_from16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_wide.Test_move_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_double_2addr.Test_mul_double_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_double.Test_mul_double.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_float_2addr.Test_mul_float_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_float.Test_mul_float.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_int_2addr.Test_mul_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_int_lit16.Test_mul_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_int_lit8.Test_mul_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_int.Test_mul_int.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_long_2addr.Test_mul_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_long.Test_mul_long.class);
+        suite.addTestSuite(dot.junit.opcodes.neg_double.Test_neg_double.class);
+        suite.addTestSuite(dot.junit.opcodes.neg_float.Test_neg_float.class);
+        suite.addTestSuite(dot.junit.opcodes.neg_int.Test_neg_int.class);
+        suite.addTestSuite(dot.junit.opcodes.neg_long.Test_neg_long.class);
+        suite.addTestSuite(dot.junit.opcodes.new_array.Test_new_array.class);
+        suite.addTestSuite(dot.junit.opcodes.new_instance.Test_new_instance.class);
+        suite.addTestSuite(dot.junit.opcodes.nop.Test_nop.class);
+        suite.addTestSuite(dot.junit.opcodes.not_int.Test_not_int.class);
+        suite.addTestSuite(dot.junit.opcodes.not_long.Test_not_long.class);
+        suite.addTestSuite(dot.junit.opcodes.opc_const.Test_opc_const.class);
+        suite.addTestSuite(dot.junit.opcodes.opc_goto.Test_opc_goto.class);
+        suite.addTestSuite(dot.junit.opcodes.opc_return.Test_opc_return.class);
+        suite.addTestSuite(dot.junit.opcodes.opc_throw.Test_opc_throw.class);
+        suite.addTestSuite(dot.junit.opcodes.or_int_2addr.Test_or_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.or_int_lit16.Test_or_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.or_int_lit8.Test_or_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.or_int.Test_or_int.class);
+        suite.addTestSuite(dot.junit.opcodes.or_long_2addr.Test_or_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.or_long.Test_or_long.class);
+        suite.addTestSuite(dot.junit.opcodes.packed_switch.Test_packed_switch.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_double_2addr.Test_rem_double_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_double.Test_rem_double.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_float_2addr.Test_rem_float_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_float.Test_rem_float.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_int_2addr.Test_rem_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_int_lit16.Test_rem_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_int_lit8.Test_rem_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_int.Test_rem_int.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_long_2addr.Test_rem_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_long.Test_rem_long.class);
+        suite.addTestSuite(dot.junit.opcodes.return_object.Test_return_object.class);
+        suite.addTestSuite(dot.junit.opcodes.return_void.Test_return_void.class);
+        suite.addTestSuite(dot.junit.opcodes.return_wide.Test_return_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.rsub_int_lit8.Test_rsub_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.rsub_int.Test_rsub_int.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_boolean.Test_sget_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_byte.Test_sget_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_char.Test_sget_char.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_object.Test_sget_object.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_short.Test_sget_short.class);
+        suite.addTestSuite(dot.junit.opcodes.sget.Test_sget.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_wide.Test_sget_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.shl_int_2addr.Test_shl_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.shl_int_lit8.Test_shl_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.shl_int.Test_shl_int.class);
+        suite.addTestSuite(dot.junit.opcodes.shl_long_2addr.Test_shl_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.shl_long.Test_shl_long.class);
+        suite.addTestSuite(dot.junit.opcodes.shr_int_2addr.Test_shr_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.shr_int_lit8.Test_shr_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.shr_int.Test_shr_int.class);
+        suite.addTestSuite(dot.junit.opcodes.shr_long_2addr.Test_shr_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.shr_long.Test_shr_long.class);
+        suite.addTestSuite(dot.junit.opcodes.sparse_switch.Test_sparse_switch.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_boolean.Test_sput_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_byte.Test_sput_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_char.Test_sput_char.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_object.Test_sput_object.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_short.Test_sput_short.class);
+        suite.addTestSuite(dot.junit.opcodes.sput.Test_sput.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_wide.Test_sput_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_double_2addr.Test_sub_double_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_double.Test_sub_double.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_float_2addr.Test_sub_float_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_float.Test_sub_float.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_int_2addr.Test_sub_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_int.Test_sub_int.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_long_2addr.Test_sub_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_long.Test_sub_long.class);
+        suite.addTestSuite(dot.junit.opcodes.ushr_int_2addr.Test_ushr_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.ushr_int_lit8.Test_ushr_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.ushr_int.Test_ushr_int.class);
+        suite.addTestSuite(dot.junit.opcodes.ushr_long_2addr.Test_ushr_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.ushr_long.Test_ushr_long.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_int_2addr.Test_xor_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_int_lit16.Test_xor_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_int_lit8.Test_xor_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_int.Test_xor_int.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_long_2addr.Test_xor_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_long.Test_xor_long.class);      
+        return suite;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double/Test_add_double.java b/tools/vm-tests/src/dot/junit/opcodes/add_double/Test_add_double.java
new file mode 100644
index 0000000..8887d50
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double/Test_add_double.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_double.d.T_add_double_1;
+import dot.junit.opcodes.add_double.d.T_add_double_3;
+
+public class Test_add_double extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(5.84d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(-3.14d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title Arguments = -3.14d, -2.7d
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.add_double.d.T_add_double_2
+        //@uses dot.junit.opcodes.add_double.d.T_add_double_3 
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(-5.84d, t.run(-3.14d, -2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this sum of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_add_double_3 t = new T_add_double_3();
+        try {
+            t.run();
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB4() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB5() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(+0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(-0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, 2.7d
+     */
+    public void testB7() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(+0d, t.run(-2.7d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE,
+                Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, -4.9E-324
+     */
+    public void testB9() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(0d, t.run(Double.MIN_VALUE, -4.9E-324));
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double.d.T_add_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double.d.T_add_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double.d.T_add_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double.d.T_add_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_1.d b/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_1.d
new file mode 100644
index 0000000..f3d3653
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_1.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_1.java b/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_1.java
new file mode 100644
index 0000000..530fbd2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_double.d;
+
+public class T_add_double_1 {
+
+    public double run(double a, double b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_2.d b/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_2.d
new file mode 100644
index 0000000..da30626
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_2.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       const v3, 3.1415
+       add-double v0, v3, v5
+       return-wide v5
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_3.d b/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_3.d
new file mode 100644
index 0000000..ebdc492
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_3.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 7
+
+       const-wide v2, 31415
+       const-wide v4, 3.1415
+       add-double v0, v2, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_3.java b/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_3.java
new file mode 100644
index 0000000..fadc09e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_double.d;
+
+public class T_add_double_3 {
+
+    public double run() {
+        return 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_4.d b/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_4.d
new file mode 100644
index 0000000..7acfdfd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_4.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double v0, v3, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_5.d b/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_5.d
new file mode 100644
index 0000000..64b8613
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_5.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double v0, v3, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_6.d b/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_6.d
new file mode 100644
index 0000000..424bd3f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double/d/T_add_double_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_6.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 7
+       move v0, v5
+       move v1, v5
+       move v2, v6    
+       move v3, v6    
+       add-double v0, v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/Test_add_double_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/Test_add_double_2addr.java
new file mode 100644
index 0000000..f0a17a2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/Test_add_double_2addr.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_double_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_1;
+import dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_3;
+
+public class Test_add_double_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(5.84d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(-3.14d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title Arguments = -3.14d, -2.7d
+     */
+    public void testN3() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(-5.84d, t.run(-3.14d, -2.7d));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this sum of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_add_double_2addr_3 t = new T_add_double_2addr_3();
+        try {
+            t.run();
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB4() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB5() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(+0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(-0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, 2.7d
+     */
+    public void testB7() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(+0d, t.run(-2.7d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE,
+                Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, -4.9E-324
+     */
+    public void testB9() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(0d, t.run(Double.MIN_VALUE, -4.9E-324));
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.d
new file mode 100644
index 0000000..44d1f78
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_2addr_1.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.java
new file mode 100644
index 0000000..33ac19a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_double_2addr.d;
+
+public class T_add_double_2addr_1 {
+
+    public double run(double a, double b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_2.d
new file mode 100644
index 0000000..3633e01
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_2addr_2.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       const v3, 3.1415
+       add-double/2addr v3, v5
+       return-wide v5
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.d
new file mode 100644
index 0000000..62f4198
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_2addr_3.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 7
+
+       const-wide v2, 31415
+       const-wide v4, 3.1415
+       add-double/2addr v4, v2
+       return-wide v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.java b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.java
new file mode 100644
index 0000000..860bfc9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_double_2addr.d;
+
+public class T_add_double_2addr_3 {
+
+    public double run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_4.d
new file mode 100644
index 0000000..a9f2625
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_2addr_4.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double/2addr v3, v2
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_5.d
new file mode 100644
index 0000000..521f02b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_2addr_5.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double/2addr v3, v7
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_6.d
new file mode 100644
index 0000000..cd95033
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_double_2addr_6.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 7
+       move v0, v5
+          move v1, v5
+       move v2, v6
+          move v3, v6          
+       add-double/2addr v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float/Test_add_float.java b/tools/vm-tests/src/dot/junit/opcodes/add_float/Test_add_float.java
new file mode 100644
index 0000000..b821daa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float/Test_add_float.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_float.d.T_add_float_1;
+import dot.junit.opcodes.add_float.d.T_add_float_5;
+
+public class Test_add_float extends DxTestCase {
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(5.84f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(-3.14f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title Arguments = -3.14f, -2.7f
+     */
+    public void testN3() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(-5.84f, t.run(-3.14f, -2.7f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_add_float_5 t = new T_add_float_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(3.3028235E38f, 0.11E38f));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_add_float_1 t = new T_add_float_1();
+        assertTrue(Float.isNaN(t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY)));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB4() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(+0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(-0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, 2.7f
+     */
+    public void testB7() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(+0f, t.run(-2.7f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB9() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(0f, t.run(Float.MIN_VALUE, -1.4E-45f));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float.d.T_add_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float.d.T_add_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float.d.T_add_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float.d.T_add_float_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_1.d b/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_1.d
new file mode 100644
index 0000000..502b435
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_1.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_1.java b/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_1.java
new file mode 100644
index 0000000..efe39a4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_float.d;
+
+public class T_add_float_1 {
+
+    public float run(float a, float b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_2.d b/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_2.d
new file mode 100644
index 0000000..627036b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_2.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       const-wide v0, 3.1415    
+       add-float v0, v3, v0
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_3.d b/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_3.d
new file mode 100644
index 0000000..7de8486
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_3.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       const-wide v0, 3141523
+       add-float v0, v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_4.d b/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_4.d
new file mode 100644
index 0000000..443ed0f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_4.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float v0, v2, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_5.d b/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_5.d
new file mode 100644
index 0000000..efcd143
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_5.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 4
+       add-float v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_5.java b/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_5.java
new file mode 100644
index 0000000..403a198
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_float.d;
+
+public class T_add_float_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_6.d b/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_6.d
new file mode 100644
index 0000000..061a4da
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float/d/T_add_float_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_6.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/Test_add_float_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/Test_add_float_2addr.java
new file mode 100644
index 0000000..5824a70
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/Test_add_float_2addr.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_float_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_1;
+import dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_5;
+
+public class Test_add_float_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(5.84f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(-3.14f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title Arguments = -3.14f, -2.7f
+     */
+    public void testN3() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(-5.84f, t.run(-3.14f, -2.7f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_add_float_2addr_5 t = new T_add_float_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(3.3028235E38f, 0.11E38f));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertTrue(Float.isNaN(t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY)));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB4() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(+0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(-0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, 2.7f
+     */
+    public void testB7() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(+0f, t.run(-2.7f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB9() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(0f, t.run(Float.MIN_VALUE, -1.4E-45f));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.d
new file mode 100644
index 0000000..38344b4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_2addr_1.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.java
new file mode 100644
index 0000000..a872040
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_float_2addr.d;
+
+public class T_add_float_2addr_1 {
+
+    public float run(float a, float b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_2.d
new file mode 100644
index 0000000..dd35d2d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_2addr_2.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       const-wide v0, 3.1415    
+       add-float/2addr v3, v0
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_3.d
new file mode 100644
index 0000000..6c0eb9a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_2addr_3.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       const-wide v0, 3141523
+       add-float/2addr v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_4.d
new file mode 100644
index 0000000..c9832e7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_2addr_4.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float/2addr v2, v1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.d
new file mode 100644
index 0000000..281b673
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_2addr_5.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 4
+       add-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.java b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.java
new file mode 100644
index 0000000..afdfb51
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_float_2addr.d;
+
+public class T_add_float_2addr_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_6.d
new file mode 100644
index 0000000..2aa078c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_float_2addr_6.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int/Test_add_int.java b/tools/vm-tests/src/dot/junit/opcodes/add_int/Test_add_int.java
new file mode 100644
index 0000000..f952b82
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int/Test_add_int.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_int.d.T_add_int_1;
+import dot.junit.opcodes.add_int.d.T_add_int_5;
+
+public class Test_add_int extends DxTestCase {
+    /**
+     * @title Arguments = 8, 4 
+     */
+    public void testN1() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(12, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 0, 255
+     */
+    public void testN2() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(255, t.run(0, 255));
+    }
+
+    /**
+     * @title Arguments = 0, -65536
+     */
+    public void testN3() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(-65536, t.run(0, -65536));
+    }
+
+    /**
+     * @title Arguments = 0, -2147483647
+     */
+    public void testN4() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(-2147483647, t.run(0, -2147483647));
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe, 2
+     */
+    public void testN5() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(-2147483648, t.run(0x7ffffffe, 2));
+    }
+
+    /**
+     * @title Arguments = -1, 1
+     */
+    public void testN6() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(0, t.run(-1, 1));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_add_int_5 t = new T_add_int_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(-2, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(-2147483647, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int.d.T_add_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int.d.T_add_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int.d.T_add_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int.d.T_add_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_1.d b/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_1.d
new file mode 100644
index 0000000..bd71e35
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_1.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_1.java b/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_1.java
new file mode 100644
index 0000000..6b9c617
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int.d;
+
+public class T_add_int_1 {
+
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_2.d b/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_2.d
new file mode 100644
index 0000000..83cb90c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_2.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       add-int v0, v2, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_3.d b/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_3.d
new file mode 100644
index 0000000..84db6e9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_3.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 33231415
+       add-int v0, v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_4.d b/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_4.d
new file mode 100644
index 0000000..0ce8bbc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_4.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_5.d b/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_5.d
new file mode 100644
index 0000000..a92add0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_5.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+       add-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_5.java b/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_5.java
new file mode 100644
index 0000000..fa7efca
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int.d;
+
+public class T_add_int_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_6.d b/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_6.d
new file mode 100644
index 0000000..3dac6df
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int/d/T_add_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_6.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/Test_add_int_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/Test_add_int_2addr.java
new file mode 100644
index 0000000..4804246
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/Test_add_int_2addr.java
@@ -0,0 +1,188 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_1;
+import dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_5;
+
+public class Test_add_int_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(12, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 0, 255
+     */
+    public void testN2() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(255, t.run(0, 255));
+    }
+
+    /**
+     * @title Arguments = 0, -65536
+     */
+    public void testN3() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(-65536, t.run(0, -65536));
+    }
+
+    /**
+     * @title Arguments = 0, -2147483647
+     */
+    public void testN4() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(-2147483647, t.run(0, -2147483647));
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe, 2
+     */
+    public void testN5() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(-2147483648, t.run(0x7ffffffe, 2));
+    }
+
+    /**
+     * @title Arguments = -1, 1
+     */
+    public void testN6() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(0, t.run(-1, 1));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_add_int_2addr_5 t = new T_add_int_2addr_5();
+        try {
+            t.run(1, 2f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(Integer.MAX_VALUE, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(-2, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(-2147483647, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.d
new file mode 100644
index 0000000..980379c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_2addr_1.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.java
new file mode 100644
index 0000000..d5dc9c8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_2addr.d;
+
+public class T_add_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_2.d
new file mode 100644
index 0000000..bc0c3ba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_2addr_2.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       add-int/2addr v2, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_3.d
new file mode 100644
index 0000000..c47322e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_2addr_3.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 33231415
+       add-int/2addr v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_4.d
new file mode 100644
index 0000000..7b4adf8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_2addr_4.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/2addr v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.d
new file mode 100644
index 0000000..042e671
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_2addr_5.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+       add-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.java
new file mode 100644
index 0000000..5161361
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_2addr.d;
+
+public class T_add_int_2addr_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_6.d
new file mode 100644
index 0000000..50a14a9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_2addr_6.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/Test_add_int_lit16.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/Test_add_int_lit16.java
new file mode 100644
index 0000000..1400145
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/Test_add_int_lit16.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_16;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_5;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_1;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_10;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_11;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_12;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_2;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_3;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_4;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_6;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_7;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_8;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_9;
+
+public class Test_add_int_lit16 extends DxTestCase {
+    /**
+     * @title Arguments = 8 + 4
+     */
+    public void testN1() {
+        T_add_int_lit16_1 t = new T_add_int_lit16_1();
+        assertEquals(12, t.run());
+    }
+
+    /**
+     * @title Arguments = 0 + 255
+     */
+    public void testN2() {
+        T_add_int_lit16_2 t = new T_add_int_lit16_2();
+        assertEquals(255, t.run());
+    }
+
+    /**
+     * @title Arguments = 0 + (-32768)
+     */
+    public void testN3() {
+        T_add_int_lit16_3 t = new T_add_int_lit16_3();
+        assertEquals(-32768, t.run());
+    }
+
+    /**
+     * @title Arguments = (-2147483647) + 0
+     */
+    public void testN4() {
+        T_add_int_lit16_4 t = new T_add_int_lit16_4();
+        assertEquals(-2147483647, t.run());
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe + 2
+     */
+    public void testN5() {
+        T_add_int_lit16_5 t = new T_add_int_lit16_5();
+        assertEquals(-2147483648, t.run());
+    }
+
+    /**
+     * @title Arguments = -1 + 1
+     */
+    public void testN6() {
+        T_add_int_lit16_6 t = new T_add_int_lit16_6();
+        assertEquals(0, t.run());
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_add_int_lit16_16 t = new T_add_int_lit16_16();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 + Short.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_int_lit16_7 t = new T_add_int_lit16_7();
+        assertEquals(Short.MAX_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE + Short.MAX_VALUE
+     */
+    public void testB2() {
+        T_add_int_lit16_8 t = new T_add_int_lit16_8();
+        assertEquals(-2147450882, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE + 1
+     */
+    public void testB3() {
+        T_add_int_lit16_9 t = new T_add_int_lit16_9();
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE + 1
+     */
+    public void testB4() {
+        T_add_int_lit16_10 t = new T_add_int_lit16_10();
+        assertEquals(-2147483647, t.run());
+    }
+
+    /**
+     * @title Arguments = 0 + 0
+     */
+    public void testB5() {
+        T_add_int_lit16_11 t = new T_add_int_lit16_11();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE + Short.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_int_lit16_12 t = new T_add_int_lit16_12();
+        assertEquals(-65536, t.run());
+    }
+
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.d
new file mode 100644
index 0000000..b79b0f6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_1.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 8
+       add-int/lit16 v0, v1, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.java
new file mode 100644
index 0000000..93da1b1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_1 {
+
+    public int run() {
+        return 8 + 4;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.d
new file mode 100644
index 0000000..c8b348a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_10.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -2147483648
+       add-int/lit16 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.java
new file mode 100644
index 0000000..2b30e1d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_10 {
+
+    public int run() {
+        return Integer.MIN_VALUE + 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.d
new file mode 100644
index 0000000..26fe8ec
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_11.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit16 v0, v1, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.java
new file mode 100644
index 0000000..e9e8461
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_11 {
+
+    public int run() {
+        return 0 + 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.d
new file mode 100644
index 0000000..34af2a7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_12.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -32768
+       add-int/lit16 v0, v1, -32768
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.java
new file mode 100644
index 0000000..bbed57b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_12 {
+
+    public int run() {
+        return Short.MIN_VALUE + Short.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_13.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_13.d
new file mode 100644
index 0000000..95fd121
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_13.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       add-int/lit16 v0, v0, 1
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_14.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_14.d
new file mode 100644
index 0000000..dfa3742
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_14.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 33231415
+       add-int/lit16 v0, v0, 1
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_15.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_15.d
new file mode 100644
index 0000000..6cc4b57
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_15.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/lit16 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.d
new file mode 100644
index 0000000..ba09106
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_16.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+       add-int/lit16 v0, v3, 123
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.java
new file mode 100644
index 0000000..50fd369
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_16 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_17.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_17.d
new file mode 100644
index 0000000..bc66cbd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_17.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/lit16 v0, v4, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.d
new file mode 100644
index 0000000..d80497f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_2.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit16 v0, v1, 255
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.java
new file mode 100644
index 0000000..3a6c2c7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_2 {
+
+    public int run() {
+        return 0 + 255;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.d
new file mode 100644
index 0000000..3a9009d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_3.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit16 v0, v1, -32768
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.java
new file mode 100644
index 0000000..c523fd1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_3 {
+
+    public int run() {
+        return 0 + (-32768);
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.d
new file mode 100644
index 0000000..141d546
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_4.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -2147483647
+       add-int/lit16 v0, v1, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.java
new file mode 100644
index 0000000..980de4a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_4 {
+
+    public int run() {
+        return (-2147483647) + 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.d
new file mode 100644
index 0000000..54f42ac
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_5.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0x7ffffffe
+       add-int/lit16 v0, v1, 2
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.java
new file mode 100644
index 0000000..f22579d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_5 {
+
+    public int run() {
+        return 0x7ffffffe + 2;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.d
new file mode 100644
index 0000000..b103f66
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_6.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1
+       add-int/lit16 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.java
new file mode 100644
index 0000000..342df4b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_6 {
+
+    public int run() {
+        return -1 + 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.d
new file mode 100644
index 0000000..b4d689f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_7.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit16 v0, v1, 32767
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.java
new file mode 100644
index 0000000..afd6e25
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_7 {
+
+    public int run() {
+        return 0 + Short.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.d
new file mode 100644
index 0000000..e1aa77e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_8.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       add-int/lit16 v0, v1, 32767
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.java
new file mode 100644
index 0000000..c63d9e3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_8 {
+
+    public int run() {
+        return Integer.MAX_VALUE + Short.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.d
new file mode 100644
index 0000000..74d8cc0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit16_9.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       add-int/lit16 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.java
new file mode 100644
index 0000000..71613ff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_9 {
+
+    public int run() {
+        return Integer.MAX_VALUE + 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/Test_add_int_lit8.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/Test_add_int_lit8.java
new file mode 100644
index 0000000..f9b3eef
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/Test_add_int_lit8.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_16;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_1;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_10;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_11;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_12;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_2;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_3;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_4;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_5;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_6;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_7;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_8;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_9;
+
+public class Test_add_int_lit8 extends DxTestCase {
+    /**
+     * @title Arguments = 8 + 4
+     */
+    public void testN1() {
+        T_add_int_lit8_1 t = new T_add_int_lit8_1();
+        assertEquals(12, t.run());
+    }
+
+    /**
+     * @title Arguments = Byte.MIN_VALUE + Byte.MAX_VALUE
+     */
+    public void testN2() {
+        T_add_int_lit8_2 t = new T_add_int_lit8_2();
+        assertEquals(-1, t.run());
+    }
+
+    /**
+     * @title Arguments = 0 + (-128)
+     */
+    public void testN3() {
+        T_add_int_lit8_3 t = new T_add_int_lit8_3();
+        assertEquals(-128, t.run());
+    }
+
+    /**
+     * @title Arguments = (-2147483647) + 0
+     */
+    public void testN4() {
+        T_add_int_lit8_4 t = new T_add_int_lit8_4();
+        assertEquals(-2147483647, t.run());
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe + 2
+     */
+    public void testN5() {
+        T_add_int_lit8_5 t = new T_add_int_lit8_5();
+        assertEquals(-2147483648, t.run());
+    }
+
+    /**
+     * @title Arguments = -1 + 1
+     */
+    public void testN6() {
+        T_add_int_lit8_6 t = new T_add_int_lit8_6();
+        assertEquals(0, t.run());
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_add_int_lit8_16 t = new T_add_int_lit8_16();
+        try {
+            t.run(3f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 + Byte.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_int_lit8_7 t = new T_add_int_lit8_7();
+        assertEquals(Byte.MAX_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE + Byte.MAX_VALUE
+     */
+    public void testB2() {
+        T_add_int_lit8_8 t = new T_add_int_lit8_8();
+        assertEquals(-2147483522, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE + 1
+     */
+    public void testB3() {
+        T_add_int_lit8_9 t = new T_add_int_lit8_9();
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE + 1
+     */
+    public void testB4() {
+        T_add_int_lit8_10 t = new T_add_int_lit8_10();
+        assertEquals(-2147483647, t.run());
+    }
+
+    /**
+     * @title Arguments = 0 + 0
+     */
+    public void testB5() {
+        T_add_int_lit8_11 t = new T_add_int_lit8_11();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE + Byte.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_int_lit8_12 t = new T_add_int_lit8_12();
+        assertEquals(-32896, t.run());
+    }
+
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.d
new file mode 100644
index 0000000..5286f6e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_1.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 8
+       add-int/lit8 v0, v1, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.java
new file mode 100644
index 0000000..732ee8d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_1 {
+
+    public int run() {
+        return 8 + 4;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.d
new file mode 100644
index 0000000..9ef34ff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_10.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -2147483648
+       add-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.java
new file mode 100644
index 0000000..68c301d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_10 {
+
+    public int run() {
+        return Integer.MIN_VALUE + 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.d
new file mode 100644
index 0000000..88c76b3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_11.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit8 v0, v1, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.java
new file mode 100644
index 0000000..43b33cc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_11 {
+
+    public int run() {
+        return 0 + 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.d
new file mode 100644
index 0000000..a8776f7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_12.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -32768
+       add-int/lit8 v0, v1, -128
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.java
new file mode 100644
index 0000000..cfb1577
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_12 {
+
+    public int run() {
+        return Short.MIN_VALUE + Byte.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_13.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_13.d
new file mode 100644
index 0000000..d5a468b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_13.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       add-int/lit8 v0, v0, 1
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_14.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_14.d
new file mode 100644
index 0000000..873fff0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_14.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 33231415
+       add-int/lit8 v0, v0, 1
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_15.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_15.d
new file mode 100644
index 0000000..28b894e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_15.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.d
new file mode 100644
index 0000000..3d4d8c1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_16.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+       add-int/lit8 v0, v3, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.java
new file mode 100644
index 0000000..c482a64
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_16 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_17.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_17.d
new file mode 100644
index 0000000..6bdf030
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_17.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/lit8 v0, v4, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.d
new file mode 100644
index 0000000..ef0a0fa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_2.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -128
+       add-int/lit8 v0, v1, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.java
new file mode 100644
index 0000000..acf2a79
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_2 {
+
+    public int run() {
+        return Byte.MIN_VALUE + Byte.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.d
new file mode 100644
index 0000000..9a49def
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_3.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit8 v0, v1, -128
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.java
new file mode 100644
index 0000000..8c10f8f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_3 {
+
+    public int run() {
+        return 0 + (-128);
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.d
new file mode 100644
index 0000000..a3fd7dc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_4.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -2147483647
+       add-int/lit8 v0, v1, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.java
new file mode 100644
index 0000000..06a8fad
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_4 {
+
+    public int run() {
+        return (-2147483647) + 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.d
new file mode 100644
index 0000000..ab9f0ae
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_5.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0x7ffffffe
+       add-int/lit8 v0, v1, 2
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.java
new file mode 100644
index 0000000..6691276
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_5 {
+
+    public int run() {
+        return 0x7ffffffe + 2;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.d
new file mode 100644
index 0000000..4ea7fdb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_6.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1
+       add-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.java
new file mode 100644
index 0000000..122a899
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_6 {
+
+    public int run() {
+        return -1 + 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.d
new file mode 100644
index 0000000..01fdc0c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_7.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit8 v0, v1, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.java
new file mode 100644
index 0000000..7ec523e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_7 {
+
+    public int run() {
+        return 0 + Byte.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.d
new file mode 100644
index 0000000..75d74b0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_8.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       add-int/lit8 v0, v1, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.java
new file mode 100644
index 0000000..957ccee
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_8 {
+
+    public int run() {
+        return Integer.MAX_VALUE + Byte.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.d b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.d
new file mode 100644
index 0000000..a28afd0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_int_lit8_9.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       add-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.java b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.java
new file mode 100644
index 0000000..bdc657c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_9 {
+
+    public int run() {
+        return Integer.MAX_VALUE + 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long/Test_add_long.java b/tools/vm-tests/src/dot/junit/opcodes/add_long/Test_add_long.java
new file mode 100644
index 0000000..301879a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long/Test_add_long.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_long.d.T_add_long_1;
+import dot.junit.opcodes.add_long.d.T_add_long_6;
+
+public class Test_add_long extends DxTestCase {
+    /**
+     * @title Arguments = 12345678l, 87654321l
+     */
+    public void testN1() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(99999999l, t.run(12345678l, 87654321l));
+    }
+
+    /**
+     * @title Arguments = 0l, 87654321l
+     */
+    public void testN2() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(87654321l, t.run(0l, 87654321l));
+    }
+
+    /**
+     * @title Arguments = -12345678l, 0l
+     */
+    public void testN3() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-12345678l, t.run(-12345678l, 0l));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this sum of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_add_long_6 t = new T_add_long_6();
+        try {
+            t.run();
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0 + Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(9223372036854775807L, t.run(0l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0 + Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-9223372036854775808L, t.run(0l, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0 + 0
+     */
+    public void testB3() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(0l, t.run(0l, 0l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-2, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + Long.MIN_VALUE
+     */
+    public void testB5() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE + Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE + 1
+     */
+    public void testB7() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-9223372036854775807l, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + 1
+     */
+    public void testB8() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-9223372036854775808l, t.run(Long.MAX_VALUE, 1l));
+    }
+
+
+    
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long.d.T_add_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / integer
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long.d.T_add_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long.d.T_add_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long.d.T_add_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_1.d b/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_1.d
new file mode 100644
index 0000000..2dc5518
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_1.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_1.java b/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_1.java
new file mode 100644
index 0000000..a6bd026
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_long.d;
+
+public class T_add_long_1 {
+
+    public long run(long a, long b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_2.d b/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_2.d
new file mode 100644
index 0000000..83eaa73
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_2.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long v0, v3, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_3.d b/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_3.d
new file mode 100644
index 0000000..3935188
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_3.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       const v5, 12345
+       add-long v0, v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_4.d b/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_4.d
new file mode 100644
index 0000000..9dab202
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_4.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       const v5, 12345.0
+       add-long v0, v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_5.d b/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_5.d
new file mode 100644
index 0000000..5c57aeb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_5.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long v0, v2, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_6.d b/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_6.d
new file mode 100644
index 0000000..435256f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_6.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 7
+
+       const-wide v2, 31415
+       const-wide v4, 3.1415
+       add-long v0, v2, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_6.java b/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_6.java
new file mode 100644
index 0000000..4cdc6c5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long/d/T_add_long_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_long.d;
+
+public class T_add_long_6 {
+
+    public long run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/Test_add_long_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/Test_add_long_2addr.java
new file mode 100644
index 0000000..c3ef53c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/Test_add_long_2addr.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_1;
+import dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_6;
+
+public class Test_add_long_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 12345678l, 87654321l
+     */
+    public void testN1() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(99999999l, t.run(12345678l, 87654321l));
+    }
+
+    /**
+     * @title Arguments = 0l, 87654321l
+     */
+    public void testN2() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(87654321l, t.run(0l, 87654321l));
+    }
+
+    /**
+     * @title Arguments = -12345678l, 0l
+     */
+    public void testN3() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-12345678l, t.run(-12345678l, 0l));
+    }
+
+   /**
+    * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+    * so this sum of long and double makes no sense but shall not crash the VM.  
+    */
+   public void testN4() {
+       T_add_long_2addr_6 t = new T_add_long_2addr_6();
+       try {
+           t.run();
+       } catch (Throwable e) {
+       }
+   }
+    
+    /**
+     * @title Arguments = 0 + Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(9223372036854775807L, t.run(0l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0 + Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(0l, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0 + 0
+     */
+    public void testB3() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(0l, t.run(0l, 0l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-2, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + Long.MIN_VALUE
+     */
+    public void testB5() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE + Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE + 1
+     */
+    public void testB7() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-9223372036854775807l, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + 1
+     */
+    public void testB8() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-9223372036854775808l, t.run(Long.MAX_VALUE, 1l));
+    }
+
+
+    
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference / long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.d
new file mode 100644
index 0000000..ec11b7a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_2addr_1.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long/2addr v3, v5
+       return-wide v3
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.java
new file mode 100644
index 0000000..e799c7f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_long_2addr.d;
+
+public class T_add_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_2.d
new file mode 100644
index 0000000..8172613
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_2addr_2.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long/2addr v3, v7
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_3.d
new file mode 100644
index 0000000..e10a72a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_2addr_3.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       const v5, 12345
+       add-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_4.d
new file mode 100644
index 0000000..1073b6c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_2addr_4.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       const v5, 12345.0
+       add-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_5.d
new file mode 100644
index 0000000..3455016
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_2addr_5.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long/2addr v2, v5
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.d
new file mode 100644
index 0000000..7c842cc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_add_long_2addr_6.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 7
+
+       const-wide v2, 31415
+       const-wide v4, 3.1415
+       add-long/2addr v2, v4
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.java b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.java
new file mode 100644
index 0000000..8badad9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.add_long_2addr.d;
+
+public class T_add_long_2addr_6 {
+
+    public long run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget/Test_aget.java b/tools/vm-tests/src/dot/junit/opcodes/aget/Test_aget.java
new file mode 100644
index 0000000..d33e943
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget/Test_aget.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget.d.T_aget_1;
+import dot.junit.opcodes.aget.d.T_aget_8;
+
+public class Test_aget extends DxTestCase {
+    /**
+     * @title get int from array
+     */
+    public void testN1() {
+        T_aget_1 t = new T_aget_1();
+        int[] arr = new int[2];
+        arr[1] = 100000000;
+        assertEquals(100000000, t.run(arr, 1));
+    }
+
+    /**
+     * @title get int from array
+     */
+    public void testN2() {
+        T_aget_1 t = new T_aget_1();
+        int[] arr = new int[2];
+        arr[0] = 100000000;
+        assertEquals(100000000, t.run(arr, 0));
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        int[] arr = new int[2];
+        T_aget_8 t = new T_aget_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_1 t = new T_aget_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_1 t = new T_aget_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_1 t = new T_aget_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - Object, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double[], int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_1.d b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_1.d
new file mode 100644
index 0000000..549fdb5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_1.java
+.class public dot.junit.opcodes.aget.d.T_aget_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)I
+.limit regs 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_1.java b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_1.java
new file mode 100644
index 0000000..75a2874
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget.d;
+
+public class T_aget_1 {
+    public int run(int[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_2.d b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_2.d
new file mode 100644
index 0000000..2d31759
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_2.java
+.class public dot.junit.opcodes.aget.d.T_aget_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ID)I
+.limit regs 9
+
+       aget v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_3.d b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_3.d
new file mode 100644
index 0000000..72731ad
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_3.java
+.class public dot.junit.opcodes.aget.d.T_aget_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IJ)I
+.limit regs 9
+
+       aget v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_4.d b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_4.d
new file mode 100644
index 0000000..8e3b970
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_4.java
+.class public dot.junit.opcodes.aget.d.T_aget_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)I
+.limit regs 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_5.d b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_5.d
new file mode 100644
index 0000000..e0d2005
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_5.java
+.class public dot.junit.opcodes.aget.d.T_aget_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)I
+.limit regs 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_6.d b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_6.d
new file mode 100644
index 0000000..41a009c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_6.java
+.class public dot.junit.opcodes.aget.d.T_aget_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)I
+.limit regs 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_7.d b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_7.d
new file mode 100644
index 0000000..8b2c021
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_7.java
+.class public dot.junit.opcodes.aget.d.T_aget_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)I
+.limit regs 9
+
+       aget v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_8.d b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_8.d
new file mode 100644
index 0000000..e91d276
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_8.java
+.class public dot.junit.opcodes.aget.d.T_aget_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IF)I
+.limit regs 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_8.java b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_8.java
new file mode 100644
index 0000000..1174ced
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget.d;
+
+public class T_aget_8 {
+    public int run(int[] arr, float idx) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_9.d b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_9.d
new file mode 100644
index 0000000..51fe7a5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget/d/T_aget_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_9.java
+.class public dot.junit.opcodes.aget.d.T_aget_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)I
+.limit regs 9
+
+       aget v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/Test_aget_boolean.java b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/Test_aget_boolean.java
new file mode 100644
index 0000000..3d8bd6b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/Test_aget_boolean.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_boolean.d.T_aget_boolean_1;
+import dot.junit.opcodes.aget_boolean.d.T_aget_boolean_8;
+
+public class Test_aget_boolean extends DxTestCase {
+    /**
+     * @title get boolean from array 
+     */
+    public void testN1() {
+        T_aget_boolean_1 t = new T_aget_boolean_1();
+        boolean[] arr = new boolean[2];
+        arr[1] = true;
+        assertEquals(true, t.run(arr, 1));
+    }
+
+    /**
+     * @title get boolean from array
+     */
+    public void testN2() {
+        T_aget_boolean_1 t = new T_aget_boolean_1();
+        boolean[] arr = new boolean[2];
+        arr[0] = true;
+        assertEquals(true, t.run(arr, 0));
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        boolean[] arr = new boolean[2];
+        T_aget_boolean_8 t = new T_aget_boolean_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_boolean_1 t = new T_aget_boolean_1();
+        boolean[] arr = new boolean[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_boolean_1 t = new T_aget_boolean_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_boolean_1 t = new T_aget_boolean_1();
+        boolean[] arr = new boolean[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.d b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.d
new file mode 100644
index 0000000..6fbf9bc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_1.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZI)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.java b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.java
new file mode 100644
index 0000000..5ab595d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_boolean.d;
+
+public class T_aget_boolean_1 {
+    public boolean run(boolean[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_2.d b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_2.d
new file mode 100644
index 0000000..e858a8d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_2.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZD)Z
+.limit regs 9
+
+       aget-boolean v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_3.d b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_3.d
new file mode 100644
index 0000000..07133df
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_3.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZJ)Z
+.limit regs 9
+
+       aget-boolean v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_4.d b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_4.d
new file mode 100644
index 0000000..28f6cb1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_4.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_5.d b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_5.d
new file mode 100644
index 0000000..e1c1ffe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_5.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_6.d b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_6.d
new file mode 100644
index 0000000..ef79c81
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_6.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_7.d b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_7.d
new file mode 100644
index 0000000..da3663c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_7.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZI)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.d b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.d
new file mode 100644
index 0000000..5c36f5d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_8.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZF)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.java b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.java
new file mode 100644
index 0000000..ff40523
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_boolean.d;
+
+public class T_aget_boolean_8 {
+    public boolean run(boolean[] arr, float idx) {
+        return false;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_9.d b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_9.d
new file mode 100644
index 0000000..cbd51e9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_boolean_9.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZI)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_byte/Test_aget_byte.java b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/Test_aget_byte.java
new file mode 100644
index 0000000..fcaeab4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/Test_aget_byte.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_byte.d.T_aget_byte_1;
+import dot.junit.opcodes.aget_byte.d.T_aget_byte_8;
+
+
+public class Test_aget_byte extends DxTestCase {
+    /**
+     * @title get byte from array
+     */
+    public void testN1() {
+        T_aget_byte_1 t = new T_aget_byte_1();
+        byte[] arr = new byte[2];
+        arr[1] = 100;
+        assertEquals(100, t.run(arr, 1));
+    }
+
+    /**
+     * @title get byte from array
+     */
+    public void testN2() {
+        T_aget_byte_1 t = new T_aget_byte_1();
+        byte[] arr = new byte[2];
+        arr[0] = 100;
+        assertEquals(100, t.run(arr, 0));
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+         byte[] arr = new byte[2];
+         T_aget_byte_8 t = new T_aget_byte_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_byte_1 t = new T_aget_byte_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_byte_1 t = new T_aget_byte_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_byte_1 t = new T_aget_byte_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, short
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.d b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.d
new file mode 100644
index 0000000..2fa8a9a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_1.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.limit regs 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.java b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.java
new file mode 100644
index 0000000..72646a2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_byte.d;
+
+public class T_aget_byte_1 {
+    public byte run(byte[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_2.d b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_2.d
new file mode 100644
index 0000000..11eba1a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_2.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.limit regs 9
+
+       const-wide v1, 1.0
+       aget-byte v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_3.d b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_3.d
new file mode 100644
index 0000000..c2b426b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_3.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.limit regs 9
+
+       const-wide v1, 1
+       aget-byte v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_4.d b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_4.d
new file mode 100644
index 0000000..905f4b9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_4.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)B
+.limit regs 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_5.d b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_5.d
new file mode 100644
index 0000000..b65b94e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_5.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)B
+.limit regs 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_6.d b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_6.d
new file mode 100644
index 0000000..6861fa4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_6.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)B
+.limit regs 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_7.d b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_7.d
new file mode 100644
index 0000000..03ab879
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_7.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.limit regs 9
+
+       aget-byte v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.d b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.d
new file mode 100644
index 0000000..92f0273
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_8.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BF)B
+.limit regs 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.java b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.java
new file mode 100644
index 0000000..af7c391
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_byte.d;
+
+public class T_aget_byte_8 {
+    public byte run(byte[] arr, float idx) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_9.d b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_9.d
new file mode 100644
index 0000000..b2d4ffd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_byte_9.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.limit regs 9
+
+       aget-byte v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_char/Test_aget_char.java b/tools/vm-tests/src/dot/junit/opcodes/aget_char/Test_aget_char.java
new file mode 100644
index 0000000..8871a9e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_char/Test_aget_char.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_char.d.T_aget_char_1;
+import dot.junit.opcodes.aget_char.d.T_aget_char_8;
+
+public class Test_aget_char extends DxTestCase {
+    /**
+     * @title get char from array 
+     */
+    public void testN1() {
+        T_aget_char_1 t = new T_aget_char_1();
+        char[] arr = new char[2];
+        arr[1] = 'g';
+        assertEquals('g', t.run(arr, 1));
+    }
+
+    /**
+     * @title get char from array
+     */
+    public void testN2() {
+        T_aget_char_1 t = new T_aget_char_1();
+        char[] arr = new char[2];
+        arr[0] = 'g';
+        assertEquals('g', t.run(arr, 0));
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        char[] arr = new char[2];
+        T_aget_char_8 t = new T_aget_char_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_char_1 t = new T_aget_char_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_char_1 t = new T_aget_char_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_char_1 t = new T_aget_char_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, char
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], char
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.d b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.d
new file mode 100644
index 0000000..0789458
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_1.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CI)C
+.limit regs 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.java b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.java
new file mode 100644
index 0000000..b15a052
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_char.d;
+
+public class T_aget_char_1 {
+    public char run(char[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_2.d b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_2.d
new file mode 100644
index 0000000..ff1b8fd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_2.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CD)C
+.limit regs 9
+
+       aget-char v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_3.d b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_3.d
new file mode 100644
index 0000000..b197a3c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_3.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CJ)C
+.limit regs 9
+
+       aget-char v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_4.d b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_4.d
new file mode 100644
index 0000000..53904af
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_4.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)C
+.limit regs 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_5.d b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_5.d
new file mode 100644
index 0000000..ed9a20d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_5.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)C
+.limit regs 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_6.d b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_6.d
new file mode 100644
index 0000000..04cee20
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_6.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)C
+.limit regs 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_7.d b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_7.d
new file mode 100644
index 0000000..508f6fb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_7.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CI)C
+.limit regs 9
+
+       aget-char v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.d b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.d
new file mode 100644
index 0000000..daaa044
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_8.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CF)C
+.limit regs 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.java b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.java
new file mode 100644
index 0000000..8cf681a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_char.d;
+
+public class T_aget_char_8 {
+    public char run(char[] arr, float idx) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_9.d b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_9.d
new file mode 100644
index 0000000..4053996
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_char/d/T_aget_char_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_char_9.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CI)C
+.limit regs 9
+
+       aget-char v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_object/Test_aget_object.java b/tools/vm-tests/src/dot/junit/opcodes/aget_object/Test_aget_object.java
new file mode 100644
index 0000000..691c57c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_object/Test_aget_object.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_object.d.T_aget_object_1;
+import dot.junit.opcodes.aget_object.d.T_aget_object_8;
+
+
+public class Test_aget_object extends DxTestCase {
+     /**
+     * @title get reference from array
+     */
+    public void testN1() {
+        T_aget_object_1 t = new T_aget_object_1();
+        String[] arr = new String[] {"a", "b"};
+        assertEquals("a", t.run(arr, 0));
+    }
+
+    /**
+     * @title  get reference from array
+     */
+    public void testN2() {
+        T_aget_object_1 t = new T_aget_object_1();
+        String[] arr = new String[] {"a", "b"};
+        assertEquals("b", t.run(arr, 1));
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        String[] arr = new String[] {"a", "b"};
+        T_aget_object_8 t = new T_aget_object_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_object_1 t = new T_aget_object_1();
+        String[] arr = new String[] {"a", "b"};
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aioobe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE2() {
+        T_aget_object_1 t = new T_aget_object_1();
+        String[] arr = new String[] {"a", "b"};
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aioobe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        T_aget_object_1 t = new T_aget_object_1();
+        String[] arr = null;
+        try {
+            t.run(arr, 0);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float[], int
+     */
+    public void testVFE4() {
+        try { 
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.d b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.d
new file mode 100644
index 0000000..8f4a03b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_1.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.java b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.java
new file mode 100644
index 0000000..03345c9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_object.d;
+
+public class T_aget_object_1 {
+    
+    public String run(String [] arr, int idx) {
+        return arr[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_2.d b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_2.d
new file mode 100644
index 0000000..cbdd6b4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_2.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.limit regs 9
+
+       const-wide v1, 1.0
+       aget-object v0, v7, v1
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_3.d b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_3.d
new file mode 100644
index 0000000..c89b572
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_3.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.limit regs 9
+
+       const-wide v1, 1
+       aget-object v0, v7, v1
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_4.d b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_4.d
new file mode 100644
index 0000000..b881a16
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_4.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_5.d b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_5.d
new file mode 100644
index 0000000..7db8d5b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_5.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([FI)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_6.d b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_6.d
new file mode 100644
index 0000000..a349943
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_6.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_7.d b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_7.d
new file mode 100644
index 0000000..8b904d2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_7.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v6
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.d b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.d
new file mode 100644
index 0000000..89ee37d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_8.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;F)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.java b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.java
new file mode 100644
index 0000000..c8b33e2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_object.d;
+
+public class T_aget_object_8 {
+    
+    public String run(String [] arr, float idx) {
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_9.d b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_9.d
new file mode 100644
index 0000000..e977101
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_object/d/T_aget_object_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_object_9.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v9
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_short/Test_aget_short.java b/tools/vm-tests/src/dot/junit/opcodes/aget_short/Test_aget_short.java
new file mode 100644
index 0000000..b0a12e5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_short/Test_aget_short.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_short.d.T_aget_short_1;
+import dot.junit.opcodes.aget_short.d.T_aget_short_8;
+
+public class Test_aget_short extends DxTestCase {
+    /**
+     * @title get short from array
+     */
+    public void testN1() {
+        T_aget_short_1 t = new T_aget_short_1();
+        short[] arr = new short[2];
+        arr[1] = 10000;
+        assertEquals(10000, t.run(arr, 1));
+    }
+
+    /**
+     * @title  get short from array
+     */
+    public void testN2() {
+        T_aget_short_1 t = new T_aget_short_1();
+        short[] arr = new short[2];
+        arr[0] = 10000;
+        assertEquals(10000, t.run(arr, 0));
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        short[] arr = new short[2];
+        T_aget_short_8 t = new T_aget_short_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_short_1 t = new T_aget_short_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_short_1 t = new T_aget_short_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_short_1 t = new T_aget_short_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.d b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.d
new file mode 100644
index 0000000..3a1d451
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_1.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.limit regs 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.java b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.java
new file mode 100644
index 0000000..d3ff01a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_short.d;
+
+public class T_aget_short_1 {
+    public short run(short[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_2.d b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_2.d
new file mode 100644
index 0000000..67bb914
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_2.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.limit regs 9
+
+       const-wide v1, 1.0
+       aget-short v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_3.d b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_3.d
new file mode 100644
index 0000000..e55e873
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_3.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.limit regs 9
+
+       const-wide v1, 1
+       aget-short v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_4.d b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_4.d
new file mode 100644
index 0000000..36e9428
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_4.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)S
+.limit regs 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_5.d b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_5.d
new file mode 100644
index 0000000..990a231
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_5.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)S
+.limit regs 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_6.d b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_6.d
new file mode 100644
index 0000000..5490c9f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_6.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)S
+.limit regs 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_7.d b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_7.d
new file mode 100644
index 0000000..06e1029
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_7.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.limit regs 9
+
+       aget-short v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.d b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.d
new file mode 100644
index 0000000..92f0d1c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_8.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SF)S
+.limit regs 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.java b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.java
new file mode 100644
index 0000000..d661d27
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_short.d;
+
+public class T_aget_short_8 {
+    public short run(short[] arr, float idx) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_9.d b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_9.d
new file mode 100644
index 0000000..d337120
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_short/d/T_aget_short_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_short_9.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.limit regs 9
+
+       aget-short v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_wide/Test_aget_wide.java b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/Test_aget_wide.java
new file mode 100644
index 0000000..73b3357
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/Test_aget_wide.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_wide.d.T_aget_wide_1;
+import dot.junit.opcodes.aget_wide.d.T_aget_wide_10;
+import dot.junit.opcodes.aget_wide.d.T_aget_wide_2;
+
+
+public class Test_aget_wide extends DxTestCase {
+
+    /**
+     * @title get long from array 
+     */
+    public void testN1() {
+        T_aget_wide_1 t = new T_aget_wide_1();
+        long[] arr = new long[2];
+        arr[1] = 1000000000000000000l;
+        assertEquals(1000000000000000000l, t.run(arr, 1));
+    }
+
+    /**
+     * @title get long from array
+     */
+    public void testN2() {
+        T_aget_wide_1 t = new T_aget_wide_1();
+        long[] arr = new long[2];
+        arr[0] = 1000000000000000000l;
+        assertEquals(1000000000000000000l, t.run(arr, 0));
+    }
+    
+    /**
+     * @title get double from array
+     */
+    public void testN3() {
+        T_aget_wide_2 t = new T_aget_wide_2();
+        double[] arr = new double[2];
+        arr[0] = 3.1415d;
+        assertEquals(3.1415d, t.run(arr, 0));
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        long[] arr = new long[2];
+        T_aget_wide_10 t = new T_aget_wide_10();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_wide_1 t = new T_aget_wide_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_wide_1 t = new T_aget_wide_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException np) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_wide_1 t = new T_aget_wide_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int[], int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.d b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.d
new file mode 100644
index 0000000..08d842a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_1.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.java b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.java
new file mode 100644
index 0000000..fdc8575
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_wide.d;
+
+public class T_aget_wide_1 {
+
+    public long run(long[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.d b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.d
new file mode 100644
index 0000000..5bbac0d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_10.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JF)J
+.limit regs 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.java b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.java
new file mode 100644
index 0000000..c5f66a2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_wide.d;
+
+public class T_aget_wide_10 {
+
+    public long run(long[] arr, float idx) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_11.d b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_11.d
new file mode 100644
index 0000000..e174a37
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_11.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_11.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       aget-wide v7, v6, v7
+       return-wide v7
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.d b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.d
new file mode 100644
index 0000000..5372845
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_2.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)D
+.limit regs 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.java b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.java
new file mode 100644
index 0000000..1b2aace
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aget_wide.d;
+
+public class T_aget_wide_2 {
+
+    public double run(double[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_3.d b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_3.d
new file mode 100644
index 0000000..cf462df
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_3.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       const-wide v2, 1.0
+       aget-wide v0, v6, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_5.d b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_5.d
new file mode 100644
index 0000000..1c407ba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_5.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       const-wide v2, 10
+       aget-wide v0, v6, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_6.d b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_6.d
new file mode 100644
index 0000000..39054f3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_6.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)J
+.limit regs 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_7.d b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_7.d
new file mode 100644
index 0000000..ace153e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_7.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)J
+.limit regs 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_8.d b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_8.d
new file mode 100644
index 0000000..dfe1b21
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_8.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       aget-wide v0, v6, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_9.d b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_9.d
new file mode 100644
index 0000000..fe00c45
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aget_wide_9.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       aget-wide v0, v6, v8
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int/Test_and_int.java b/tools/vm-tests/src/dot/junit/opcodes/and_int/Test_and_int.java
new file mode 100644
index 0000000..1422844
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int/Test_and_int.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_int.d.T_and_int_1;
+import dot.junit.opcodes.and_int.d.T_and_int_5;
+
+
+public class Test_and_int extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_and_int_1 t = new T_and_int_1();
+        assertEquals(8, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+        T_and_int_1 t = new T_and_int_1();
+        assertEquals(0xfffffff0, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_and_int_1 t = new T_and_int_1();
+        assertEquals(0xcafe, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float & int) makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_and_int_5 t = new T_and_int_5();
+        try {
+            t.run(123, 44.44f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_int_1 t = new T_and_int_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_int_1 t = new T_and_int_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int.d.T_and_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int.d.T_and_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int.d.T_and_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int.d.T_and_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_1.d b/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_1.d
new file mode 100644
index 0000000..b1f2984
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_1.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_1.java b/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_1.java
new file mode 100644
index 0000000..72c1c1e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int.d;
+
+public class T_and_int_1 {
+
+    public int run(int a, int b) {
+        return a & b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_2.d b/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_2.d
new file mode 100644
index 0000000..f57ddbc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_2.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       and-int v2, v0, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_3.d b/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_3.d
new file mode 100644
index 0000000..033b3af
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_3.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 31415
+       and-int v2, v0, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_4.d b/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_4.d
new file mode 100644
index 0000000..9759124
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_4.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int v0, v2, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_5.d b/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_5.d
new file mode 100644
index 0000000..b7480ff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_5.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+       and-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_5.java b/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_5.java
new file mode 100644
index 0000000..4f547a4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int.d;
+
+public class T_and_int_5 {
+
+    public int run(int i, float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_6.d b/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_6.d
new file mode 100644
index 0000000..7a3d212
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int/d/T_and_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_6.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/Test_and_int_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/Test_and_int_2addr.java
new file mode 100644
index 0000000..bc8848b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/Test_and_int_2addr.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_1;
+import dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_5;
+
+public class Test_and_int_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_and_int_2addr_1 t = new T_and_int_2addr_1();
+        assertEquals(8, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+        T_and_int_2addr_1 t = new T_and_int_2addr_1();
+        assertEquals(0xfffffff0, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_and_int_2addr_1 t = new T_and_int_2addr_1();
+        assertEquals(0xcafe, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float & int) makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_and_int_2addr_5 t = new T_and_int_2addr_5();
+        try {
+            t.run(1, 1.222f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_int_2addr_1 t = new T_and_int_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_int_2addr_1 t = new T_and_int_2addr_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.d
new file mode 100644
index 0000000..faf2f0f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_2addr_1.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.java
new file mode 100644
index 0000000..4df72cd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_2addr.d;
+
+public class T_and_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a & b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_2.d
new file mode 100644
index 0000000..5906582
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_2addr_2.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       and-int/2addr v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_3.d
new file mode 100644
index 0000000..4d26208
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_2addr_3.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 31415
+       and-int/2addr v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_4.d
new file mode 100644
index 0000000..6bfff72
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_2addr_4.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int/2addr v2, v1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.d
new file mode 100644
index 0000000..c7183c6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_2addr_5.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+       and-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.java b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.java
new file mode 100644
index 0000000..3cbb301
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_2addr.d;
+
+public class T_and_int_2addr_5 {
+
+    public int run(int i, float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_6.d
new file mode 100644
index 0000000..b5d1901
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_2addr_6.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/Test_and_int_lit16.java b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/Test_and_int_lit16.java
new file mode 100644
index 0000000..c1c8bc6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/Test_and_int_lit16.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_5;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_1;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_2;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_3;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_4;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_9;
+
+public class Test_and_int_lit16 extends DxTestCase {
+    /**
+     * @title Arguments = 15 & 8
+     */
+    public void testN1() {
+        T_and_int_lit16_1 t = new T_and_int_lit16_1();
+        assertEquals(8, t.run());
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8 & -8
+     */
+    public void testN2() {
+        T_and_int_lit16_2 t = new T_and_int_lit16_2();
+        assertEquals(-8, t.run());
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_and_int_lit16_3 t = new T_and_int_lit16_3();
+        assertEquals(0xcafe, t.run());
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float & int) makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_and_int_lit16_9 t = new T_and_int_lit16_9();
+        try {
+            t.run(11.33f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_int_lit16_4 t = new T_and_int_lit16_4();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = Short.MAX_VALUE & Short.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_int_lit16_5 t = new T_and_int_lit16_5();
+        assertEquals(0, t.run());
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double & int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.d
new file mode 100644
index 0000000..ebc9f85
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_1.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 15
+       and-int/lit16 v0, v0, 8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.java b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.java
new file mode 100644
index 0000000..1f166e3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_1 {
+
+    public int run() {
+        return 15 & 8;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_10.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_10.d
new file mode 100644
index 0000000..ce46afc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_10.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int/lit16 v0, v4, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.d
new file mode 100644
index 0000000..a76ada7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_2.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, -7
+       and-int/lit16 v0, v0, -8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.java b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.java
new file mode 100644
index 0000000..aa93cc7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_2 {
+
+    public int run() {
+        return 0xfffffff8 & -8;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.d
new file mode 100644
index 0000000..c5f54e3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_3.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 0xcafe
+       and-int/lit16 v0, v0, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.java b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.java
new file mode 100644
index 0000000..93558cf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_3 {
+
+    public int run() {
+        return 0xcafe & -1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.d
new file mode 100644
index 0000000..7f31097
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_4.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 0
+       and-int/lit16 v0, v0, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.java b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.java
new file mode 100644
index 0000000..12913cb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_4 {
+
+    public int run() {
+        return 0 & -1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.d
new file mode 100644
index 0000000..d7c68f3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_5.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 32767
+       and-int/lit16 v0, v0, -32768
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.java b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.java
new file mode 100644
index 0000000..04e22b4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_5 {
+
+    public int run() {
+        return Short.MAX_VALUE & Short.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_6.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_6.d
new file mode 100644
index 0000000..9c94b7e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_6.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       const-wide v0, 1.0
+       and-int/lit16 v0, v0, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_7.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_7.d
new file mode 100644
index 0000000..a272dfa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_7.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       const-wide v0, 1
+       and-int/lit16 v0, v0, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_8.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_8.d
new file mode 100644
index 0000000..614d2b1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_8.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       and-int/lit16 v2, v3, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.d
new file mode 100644
index 0000000..23b9e82
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit16_9.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+       and-int/lit16 v0, v3, 123
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.java b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.java
new file mode 100644
index 0000000..0af1796
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_9 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/Test_and_int_lit8.java b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/Test_and_int_lit8.java
new file mode 100644
index 0000000..8fb6fbb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/Test_and_int_lit8.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_9;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_1;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_2;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_3;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_4;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_5;
+
+public class Test_and_int_lit8 extends DxTestCase {
+    /**
+     * @title Arguments = 15 & 8
+     */
+    public void testN1() {
+        T_and_int_lit8_1 t = new T_and_int_lit8_1();
+        assertEquals(8, t.run());
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8 & -8
+     */
+    public void testN2() {
+        T_and_int_lit8_2 t = new T_and_int_lit8_2();
+        assertEquals(-8, t.run());
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_and_int_lit8_3 t = new T_and_int_lit8_3();
+        assertEquals(0xcafe, t.run());
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float & int) makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_and_int_lit8_9 t = new T_and_int_lit8_9();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }    
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_int_lit8_4 t = new T_and_int_lit8_4();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = Short.MAX_VALUE & Short.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_int_lit8_5 t = new T_and_int_lit8_5();
+        assertEquals(0, t.run());
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.d
new file mode 100644
index 0000000..c357564
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_1.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 15
+       and-int/lit8 v0, v0, 8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.java b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.java
new file mode 100644
index 0000000..e5972bf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_1 {
+
+    public int run() {
+        return 15 & 8;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_10.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_10.d
new file mode 100644
index 0000000..d9a6181
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_10.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int/lit8 v0, v4, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.d
new file mode 100644
index 0000000..4161d0e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_2.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, -7
+       and-int/lit8 v0, v0, -8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.java b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.java
new file mode 100644
index 0000000..ed12bb0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_2 {
+
+    public int run() {
+        return 0xfffffff8 & -8;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.d
new file mode 100644
index 0000000..7b5fd5d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_3.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 0xcafe
+       and-int/lit8 v0, v0, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.java b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.java
new file mode 100644
index 0000000..194af5b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_3 {
+
+    public int run() {
+        return 0xcafe & -1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.d
new file mode 100644
index 0000000..5b2fd88
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_4.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 0
+       and-int/lit8 v0, v0, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.java b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.java
new file mode 100644
index 0000000..ac41a53
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_4 {
+
+    public int run() {
+        return 0 & -1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.d
new file mode 100644
index 0000000..9634339
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_5.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 127
+       and-int/lit8 v0, v0, -128
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.java b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.java
new file mode 100644
index 0000000..7d1e6d0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_5 {
+
+    public int run() {
+        return Short.MAX_VALUE & Short.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_6.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_6.d
new file mode 100644
index 0000000..7e6a548
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_6.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       const-wide v0, 1.0
+       and-int/lit8 v0, v0, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_7.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_7.d
new file mode 100644
index 0000000..e09f8bd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_7.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       const-wide v0, 1
+       and-int/lit8 v0, v0, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_8.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_8.d
new file mode 100644
index 0000000..78936ff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_8.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       and-int/lit8 v2, v3, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.d b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.d
new file mode 100644
index 0000000..cb63071
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_int_lit8_9.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+       and-int/lit8 v0, v3, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.java b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.java
new file mode 100644
index 0000000..27542f7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_9 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long/Test_and_long.java b/tools/vm-tests/src/dot/junit/opcodes/and_long/Test_and_long.java
new file mode 100644
index 0000000..e2ab252
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long/Test_and_long.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_long.d.T_and_long_1;
+import dot.junit.opcodes.and_long.d.T_and_long_6;
+
+public class Test_and_long extends DxTestCase {
+
+    /**
+     * @title Arguments = 0xfffffff8aal, 0xfffffff1aal
+     */
+    public void testN1() {
+        T_and_long_1 t = new T_and_long_1();
+        assertEquals(0xfffffff0aal, t.run(0xfffffff8aal, 0xfffffff1aal));
+    }
+
+    /**
+     * @title Arguments = 987654321, 123456789
+     */
+    public void testN2() {
+        T_and_long_1 t = new T_and_long_1();
+        assertEquals(39471121, t.run(987654321, 123456789));
+    }
+
+    /**
+     * @title Arguments = 0xABCDEF & -1
+     */
+    public void testN3() {
+        T_and_long_1 t = new T_and_long_1();
+        assertEquals(0xABCDEF, t.run(0xABCDEF, -1));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this (long & double) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_and_long_6 t = new T_and_long_6();
+        try {
+            t.run(1l, 5d);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_long_1 t = new T_and_long_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_long_1 t = new T_and_long_1();
+        assertEquals(0, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float & long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long.d.T_and_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long.d.T_and_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long.d.T_and_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long.d.T_and_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_1.d b/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_1.d
new file mode 100644
index 0000000..9bdc34e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_1.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_1.java b/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_1.java
new file mode 100644
index 0000000..9e2b07b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_long.d;
+
+public class T_and_long_1 {
+
+    public long run(long a, long b) {
+        return a & b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_2.d b/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_2.d
new file mode 100644
index 0000000..7c9185c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_2.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v10, 3.1415
+       and-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_3.d b/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_3.d
new file mode 100644
index 0000000..b68acff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_3.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v10, 12345
+       and-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_4.d b/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_4.d
new file mode 100644
index 0000000..97a1bcb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_4.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long v0, v9, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_5.d b/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_5.d
new file mode 100644
index 0000000..b6948ec
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_5.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long v0, v10, v14
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_6.d b/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_6.d
new file mode 100644
index 0000000..26ae8a5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_6.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 7
+
+       and-long v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_6.java b/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_6.java
new file mode 100644
index 0000000..051a52a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long/d/T_and_long_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_long.d;
+
+public class T_and_long_6 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/Test_and_long_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/Test_and_long_2addr.java
new file mode 100644
index 0000000..34d2fc7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/Test_and_long_2addr.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_1;
+import dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_6;
+
+public class Test_and_long_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 0xfffffff8aal, 0xfffffff1aal
+     */
+    public void testN1() {
+        T_and_long_2addr_1 t = new T_and_long_2addr_1();
+        assertEquals(0xfffffff0aal, t.run(0xfffffff8aal, 0xfffffff1aal));
+    }
+
+    /**
+     * @title Arguments = 987654321, 123456789
+     */
+    public void testN2() {
+        T_and_long_2addr_1 t = new T_and_long_2addr_1();
+        assertEquals(39471121, t.run(987654321, 123456789));
+    }
+
+    /**
+     * @title Arguments = 0xABCDEF & -1
+     */
+    public void testN3() {
+        T_and_long_2addr_1 t = new T_and_long_2addr_1();
+        assertEquals(0xABCDEF, t.run(0xABCDEF, -1));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this (long & double) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_and_long_2addr_6 t = new T_and_long_2addr_6();
+        try {
+            t.run(1l, 3.1d);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_long_2addr_1 t = new T_and_long_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_long_2addr_1 t = new T_and_long_2addr_1();
+        assertEquals(0, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float & long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.d
new file mode 100644
index 0000000..aa61af94
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_2addr_1.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.java
new file mode 100644
index 0000000..3b6d259
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_long_2addr.d;
+
+public class T_and_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a & b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_2.d
new file mode 100644
index 0000000..e1a4376
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_2addr_2.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v0, 3.1415
+       and-long/2addr v0, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_3.d
new file mode 100644
index 0000000..ba10fe6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_2addr_3.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v0, 1234
+       and-long/2addr v12, v0
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_4.d
new file mode 100644
index 0000000..9882eb3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_2addr_4.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long/2addr v12, v9
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_5.d
new file mode 100644
index 0000000..e7bb059
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_2addr_5.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long/2addr v10, v14
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.d
new file mode 100644
index 0000000..b7ee27e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_and_long_2addr_6.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 7
+
+       and-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.java b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.java
new file mode 100644
index 0000000..dd6a41d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.and_long_2addr.d;
+
+public class T_and_long_2addr_6 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput/Test_aput.java b/tools/vm-tests/src/dot/junit/opcodes/aput/Test_aput.java
new file mode 100644
index 0000000..52ea328
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput/Test_aput.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput.d.T_aput_1;
+import dot.junit.opcodes.aput.d.T_aput_8;
+
+public class Test_aput extends DxTestCase {
+
+    /**
+     * @title put int into array
+     */
+    public void testN1() {
+        T_aput_1 t = new T_aput_1();
+        int[] arr = new int[2];
+        t.run(arr, 1, 100000000);
+        assertEquals(100000000, arr[1]);
+    }
+
+    /**
+     * @title put int into array
+     */
+    public void testN2() {
+        T_aput_1 t = new T_aput_1();
+        int[] arr = new int[2];
+        t.run(arr, 0, 100000000);
+        assertEquals(100000000, arr[0]);
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        int[] arr = new int[2];
+        T_aput_8 t = new T_aput_8();
+        try {
+            t.run(arr, 3.14f, 111f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_1 t = new T_aput_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, 2, 100000000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_1 t = new T_aput_1();
+        try {
+            t.run(null, 2, 100000000);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_1 t = new T_aput_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, -1, 100000000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_1.d b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_1.d
new file mode 100644
index 0000000..0c46208
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_1.java
+.class public dot.junit.opcodes.aput.d.T_aput_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([III)V
+.limit regs 11
+
+       aput v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_1.java b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_1.java
new file mode 100644
index 0000000..d9c47a5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput.d;
+
+public class T_aput_1 {
+    public void run(int[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_2.d b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_2.d
new file mode 100644
index 0000000..7ef7585
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_2.java
+.class public dot.junit.opcodes.aput.d.T_aput_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IDI)V
+.limit regs 11
+
+
+       aput v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_3.d b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_3.d
new file mode 100644
index 0000000..f2872a0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_3.java
+.class public dot.junit.opcodes.aput.d.T_aput_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IIJ)V
+.limit regs 11
+
+
+       aput v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_4.d b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_4.d
new file mode 100644
index 0000000..6070220
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_4.java
+.class public dot.junit.opcodes.aput.d.T_aput_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;II)V
+.limit regs 10
+
+
+       aput v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_5.d b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_5.d
new file mode 100644
index 0000000..9a37f62
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_5.java
+.class public dot.junit.opcodes.aput.d.T_aput_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DII)V
+.limit regs 10
+
+
+       aput v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_6.d b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_6.d
new file mode 100644
index 0000000..82dc6ac
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_6.java
+.class public dot.junit.opcodes.aput.d.T_aput_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JII)V
+.limit regs 10
+
+
+       aput v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_7.d b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_7.d
new file mode 100644
index 0000000..66017e3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_7.java
+.class public dot.junit.opcodes.aput.d.T_aput_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([III)V
+.limit regs 10
+
+       aput v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_8.d b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_8.d
new file mode 100644
index 0000000..1f56222
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_8.java
+.class public dot.junit.opcodes.aput.d.T_aput_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IFF)V
+.limit regs 11
+
+       aput v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_8.java b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_8.java
new file mode 100644
index 0000000..87c6e5c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput.d;
+
+public class T_aput_8 {
+    public void run(int[] arr, float idx, float value) {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_9.d b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_9.d
new file mode 100644
index 0000000..73c5932
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput/d/T_aput_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_9.java
+.class public dot.junit.opcodes.aput.d.T_aput_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([III)V
+.limit regs 11
+
+       aput v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/Test_aput_boolean.java b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/Test_aput_boolean.java
new file mode 100644
index 0000000..0ab9d04
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/Test_aput_boolean.java
@@ -0,0 +1,206 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_boolean.d.T_aput_boolean_1;
+import dot.junit.opcodes.aput_boolean.d.T_aput_boolean_8;
+
+public class Test_aput_boolean extends DxTestCase {
+    /**  
+     * @title put boolean into array 
+     */
+    public void testN1() {
+        T_aput_boolean_1 t = new T_aput_boolean_1();
+        boolean[] arr = new boolean[2];
+        t.run(arr, 1, true);
+        assertEquals(true, arr[1]);
+    }
+
+    /**
+     * @title put boolean into array
+     */
+    public void testN2() {
+        T_aput_boolean_1 t = new T_aput_boolean_1();
+        boolean[] arr = new boolean[2];
+        t.run(arr, 0, true);
+        assertEquals(true, arr[0]);
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        boolean[] arr = new boolean[2];
+        T_aput_boolean_8 t = new T_aput_boolean_8();
+        try {
+            t.run(arr, 3.14f, true);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_boolean_1 t = new T_aput_boolean_1();
+        boolean[] arr = new boolean[2];
+        try {
+            t.run(arr, 2, true);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_boolean_1 t = new T_aput_boolean_1();
+        try {
+            t.run(null, 2, true);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_boolean_1 t = new T_aput_boolean_1();
+        boolean[] arr = new boolean[2];
+        try {
+            t.run(arr, -1, true);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B15 
+     * @title put value 2 into boolean array
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.d b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.d
new file mode 100644
index 0000000..0d97f3c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_1.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZIZ)V
+.limit regs 11
+
+       aput-boolean v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.java b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.java
new file mode 100644
index 0000000..15a0fcf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_boolean.d;
+
+public class T_aput_boolean_1 {
+    public void run(boolean[] arr, int idx, boolean value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_10.d b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_10.d
new file mode 100644
index 0000000..64eb60e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_10.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZIZ)V
+.limit regs 11
+
+       const v10, 2
+       aput-boolean v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_2.d b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_2.d
new file mode 100644
index 0000000..2f73747
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_2.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZDZ)V
+.limit regs 11
+
+
+       aput-boolean v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_3.d b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_3.d
new file mode 100644
index 0000000..9eae917
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_3.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZIJ)V
+.limit regs 11
+
+
+       aput-boolean v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_4.d b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_4.d
new file mode 100644
index 0000000..54f5a19
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_4.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IZ)V
+.limit regs 10
+
+
+       aput-boolean v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_5.d b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_5.d
new file mode 100644
index 0000000..ecaf950
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_5.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DIZ)V
+.limit regs 10
+
+
+       aput-boolean v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_6.d b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_6.d
new file mode 100644
index 0000000..db2bf25
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_6.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIZ)V
+.limit regs 10
+
+
+       aput-boolean v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_7.d b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_7.d
new file mode 100644
index 0000000..7e9ed2f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_7.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZIZ)V
+.limit regs 10
+
+       aput-boolean v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.d b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.d
new file mode 100644
index 0000000..bf92b91
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_8.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZFZ)V
+.limit regs 11
+
+       aput-boolean v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.java b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.java
new file mode 100644
index 0000000..09606e6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_boolean.d;
+
+public class T_aput_boolean_8 {
+    public void run(boolean[] arr, float idx, boolean value) {
+        
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_9.d b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_9.d
new file mode 100644
index 0000000..e42fd3a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_boolean_9.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZIZ)V
+.limit regs 11
+
+       aput-boolean v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_byte/Test_aput_byte.java b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/Test_aput_byte.java
new file mode 100644
index 0000000..3c43916
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/Test_aput_byte.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_byte.d.T_aput_byte_1;
+import dot.junit.opcodes.aput_byte.d.T_aput_byte_8;
+
+public class Test_aput_byte extends DxTestCase {
+    /**
+     * @title put byte into array
+     */
+    public void testN1() {
+        T_aput_byte_1 t = new T_aput_byte_1();
+        byte[] arr = new byte[2];
+        t.run(arr, 1, (byte) 100);
+        assertEquals(100, arr[1]);
+    }
+
+    /**
+     * @title put byte into array
+     */
+    public void testN2() {
+        T_aput_byte_1 t = new T_aput_byte_1();
+        byte[] arr = new byte[2];
+        t.run(arr, 0, (byte) 100);
+        assertEquals(100, arr[0]);
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        byte[] arr = new byte[2];
+        T_aput_byte_8 t = new T_aput_byte_8();
+        try {
+            t.run(arr, 3.14f, (byte)1);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_byte_1 t = new T_aput_byte_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, 2, (byte) 100);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_byte_1 t = new T_aput_byte_1();
+        try {
+            t.run(null, 2, (byte) 100);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_byte_1 t = new T_aput_byte_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, -1, (byte) 100);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, short
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, short
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int, short
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, short
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, short
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B15 
+     * @title put value 128 into byte array
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.d b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.d
new file mode 100644
index 0000000..097ae50
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_1.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BIB)V
+.limit regs 11
+
+       aput-byte v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.java b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.java
new file mode 100644
index 0000000..57561be
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_byte.d;
+
+public class T_aput_byte_1 {
+    public void run(byte[] arr, int idx, byte value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_10.d b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_10.d
new file mode 100644
index 0000000..b65ae76
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_10.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BIB)V
+.limit regs 11
+
+       const v10, 128
+       aput-byte v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_2.d b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_2.d
new file mode 100644
index 0000000..55f781e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_2.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BDB)V
+.limit regs 11
+
+
+       aput-byte v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_3.d b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_3.d
new file mode 100644
index 0000000..56844377
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_3.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BIJ)V
+.limit regs 11
+
+
+       aput-byte v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_4.d b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_4.d
new file mode 100644
index 0000000..06e4eff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_4.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IB)V
+.limit regs 10
+
+
+       aput-byte v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_5.d b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_5.d
new file mode 100644
index 0000000..2835e5b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_5.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DIB)V
+.limit regs 10
+
+
+       aput-byte v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_6.d b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_6.d
new file mode 100644
index 0000000..66da57c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_6.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIB)V
+.limit regs 10
+
+
+       aput-byte v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_7.d b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_7.d
new file mode 100644
index 0000000..4fb862b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_7.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BIB)V
+.limit regs 10
+
+       aput-byte v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.d b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.d
new file mode 100644
index 0000000..0c4914e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_8.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BFB)V
+.limit regs 11
+
+       aput-byte v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.java b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.java
new file mode 100644
index 0000000..00f9d64
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_byte.d;
+
+public class T_aput_byte_8 {
+    public void run(byte[] arr, float idx, byte value) {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_9.d b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_9.d
new file mode 100644
index 0000000..e644e87
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_byte_9.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BIB)V
+.limit regs 11
+
+       aput-byte v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_char/Test_aput_char.java b/tools/vm-tests/src/dot/junit/opcodes/aput_char/Test_aput_char.java
new file mode 100644
index 0000000..4253346
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_char/Test_aput_char.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_char.d.T_aput_char_1;
+import dot.junit.opcodes.aput_char.d.T_aput_char_8;
+
+
+public class Test_aput_char extends DxTestCase {
+    /**
+     * @title put char into array
+     */
+    public void testN1() {
+        T_aput_char_1 t = new T_aput_char_1();
+        char[] arr = new char[2];
+        t.run(arr, 1, 'g');
+        assertEquals('g', arr[1]);
+    }
+
+    /**
+     * @title put char into array
+     */
+    public void testN2() {
+        T_aput_char_1 t = new T_aput_char_1();
+        char[] arr = new char[2];
+        t.run(arr, 0, 'g');
+        assertEquals('g', arr[0]);
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        char[] arr = new char[2];
+        T_aput_char_8 t = new T_aput_char_8();
+        try {
+            t.run(arr, 3.14f, 'g');
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_char_1 t = new T_aput_char_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, 2, 'g');
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_char_1 t = new T_aput_char_1();
+        try {
+            t.run(null, 2, 'g');
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_char_1 t = new T_aput_char_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, -1, 'g');
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+ 
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, char
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, char
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int, char
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, char
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, char
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B15 
+     * @title put value 65536 into char array
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.d b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.d
new file mode 100644
index 0000000..409eade
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_1.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CIC)V
+.limit regs 11
+
+       aput-char v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.java b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.java
new file mode 100644
index 0000000..65f4cd3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_char.d;
+
+public class T_aput_char_1 {
+    public void run(char[] arr, int idx, char value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_10.d b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_10.d
new file mode 100644
index 0000000..dd68792
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_10.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CIC)V
+.limit regs 11
+
+       const v10, 65536
+       aput-char v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_2.d b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_2.d
new file mode 100644
index 0000000..0408006
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_2.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CDC)V
+.limit regs 11
+
+
+       aput-char v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_3.d b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_3.d
new file mode 100644
index 0000000..5010da6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_3.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CIJ)V
+.limit regs 11
+
+
+       aput-char v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_4.d b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_4.d
new file mode 100644
index 0000000..67d67ec
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_4.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IC)V
+.limit regs 10
+
+
+       aput-char v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_5.d b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_5.d
new file mode 100644
index 0000000..cd0384a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_5.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DIC)V
+.limit regs 10
+
+
+       aput-char v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_6.d b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_6.d
new file mode 100644
index 0000000..2a2381d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_6.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIC)V
+.limit regs 10
+
+
+       aput-char v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_7.d b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_7.d
new file mode 100644
index 0000000..b1e4c9f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_7.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CIC)V
+.limit regs 10
+
+       aput-char v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.d b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.d
new file mode 100644
index 0000000..f78376d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_8.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CFC)V
+.limit regs 11
+
+       aput-char v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.java b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.java
new file mode 100644
index 0000000..ea02ba1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_char.d;
+
+public class T_aput_char_8 {
+    public void run(char[] arr, float idx, char value) {
+        
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_9.d b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_9.d
new file mode 100644
index 0000000..1077039
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_char/d/T_aput_char_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_char_9.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CIC)V
+.limit regs 11
+
+       aput-char v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/Test_aput_object.java b/tools/vm-tests/src/dot/junit/opcodes/aput_object/Test_aput_object.java
new file mode 100644
index 0000000..cb50224
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/Test_aput_object.java
@@ -0,0 +1,245 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_object.d.T_aput_object_1;
+import dot.junit.opcodes.aput_object.d.T_aput_object_12;
+import dot.junit.opcodes.aput_object.d.T_aput_object_2;
+import dot.junit.opcodes.aput_object.d.T_aput_object_3;
+import dot.junit.opcodes.aput_object.d.T_aput_object_4;
+
+public class Test_aput_object extends DxTestCase {
+    /**
+     * @title put reference into array
+     */
+    public void testN1() {
+        T_aput_object_1 t = new T_aput_object_1();
+        String[] arr = new String[2];
+        t.run(arr, 0, "hello");
+        assertEquals("hello", arr[0]);
+    }
+
+    /**
+     * @title put reference into array
+     */
+    public void testN2() {
+        T_aput_object_1 t = new T_aput_object_1();
+        String[] value = {"world", null, ""};
+        String[] arr = new String[2];
+        for (int i = 0; i < value.length; i++) {
+            t.run(arr, 1, value[i]);
+            assertEquals(value[i], arr[1]);
+        }
+    }
+
+    /**
+     * @title put reference into array
+     */
+    public void testN3() {
+        T_aput_object_2 t = new T_aput_object_2();
+        Integer[] arr = new Integer[2];
+        Integer value = new Integer(12345);
+        t.run(arr, 0, value);
+        assertEquals(value, arr[0]);
+    }
+
+    /**
+     * @title Check assignement compatibility rules
+     */
+    public void testN4() {
+        T_aput_object_3 t = new T_aput_object_3();
+        assertEquals(3, t.run());
+
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        String[] arr = new String[2];
+        T_aput_object_12 t = new T_aput_object_12();
+        try {
+            t.run(arr, 3.14f, new String());
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_object_1 t = new T_aput_object_1();
+        String[] arr = new String[2];
+        try {
+            t.run(arr, arr.length, "abc");
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE2() {
+        T_aput_object_1 t = new T_aput_object_1();
+        String[] arr = new String[2];
+        try {
+            t.run(arr, -1, "abc");
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        T_aput_object_1 t = new T_aput_object_1();
+        String[] arr = null;
+        try {
+            t.run(arr, 0, "abc");
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayStoreException
+     */
+    public void testE4() {
+        T_aput_object_4 t = new T_aput_object_4();
+        String[] arr = new String[2];
+        try {
+            t.run(arr, 0, t);
+            fail("expected ArrayStoreException");
+        } catch (ArrayStoreException aie) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, String
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, String
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float[], int, String
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, String
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, String
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B15 
+     * @title put integer into array of references
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.d b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.d
new file mode 100644
index 0000000..c629f3c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_1.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+.limit regs 11
+
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.java b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.java
new file mode 100644
index 0000000..1361e82
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_object.d;
+
+public class T_aput_object_1 {
+
+    public void run(String[] arr, int idx, String value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_10.d b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_10.d
new file mode 100644
index 0000000..a11e1ba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_10.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_10.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+.limit regs 10
+
+       aput-object v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_11.d b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_11.d
new file mode 100644
index 0000000..1b4f7ae
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_11.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_11.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+.limit regs 11
+
+       aput-object v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.d b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.d
new file mode 100644
index 0000000..35160aa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_12.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;FLjava/lang/String;)V
+.limit regs 11
+
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.java b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.java
new file mode 100644
index 0000000..f55edbb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_object.d;
+
+public class T_aput_object_12 {
+
+    public void run(String[] arr, float idx, String value) {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_13.d b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_13.d
new file mode 100644
index 0000000..f9670ac
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_13.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_13.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+.limit regs 11
+
+       const v10, 1
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.d b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.d
new file mode 100644
index 0000000..4e1cad0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_2.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/Integer;ILjava/lang/Integer;)V
+.limit regs 11
+
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.java b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.java
new file mode 100644
index 0000000..4b2204e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_object.d;
+
+public class T_aput_object_2 {
+    
+    public void run(Integer[] arr, int idx, Integer value) {
+        arr[idx] = value;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.d b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.d
new file mode 100644
index 0000000..4b2642d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.d
@@ -0,0 +1,132 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestStubs.java
+.interface abstract dot.junit.opcodes.aput_object.d.SuperInterface
+
+.source TestStubs.java
+.interface public dot.junit.opcodes.aput_object.d.SuperInterface2
+    
+.source TestStubs.java    
+.class public dot.junit.opcodes.aput_object.d.SuperClass 
+.super java/lang/Object
+.implements dot.junit.opcodes.aput_object.d.SuperInterface
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+    
+.source TestStubs.java
+.class public dot.junit.opcodes.aput_object.d.SubClass 
+.super dot.junit.opcodes.aput_object.d.SuperClass
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/aput_object/d/SuperClass/<init>()V
+       return-void
+.end method
+
+
+.source T_aput_object_3.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 32
+
+    const v1, 0
+
+    const v0, 1
+    ; v2 = SubClass[]
+    new-array v2, v0, [Ldot/junit/opcodes/aput_object/d/SubClass;
+    
+    ; v3 =  SuperClass[]
+    new-array v3, v0, [Ldot/junit/opcodes/aput_object/d/SuperClass;
+
+    ; v4 =     SubClass
+    new-instance v4, dot/junit/opcodes/aput_object/d/SubClass
+    invoke-direct {v4}, dot/junit/opcodes/aput_object/d/SubClass/<init>()V
+
+    ; v5 =     SuperClass
+    new-instance v5, dot/junit/opcodes/aput_object/d/SuperClass
+    invoke-direct {v5}, dot/junit/opcodes/aput_object/d/SuperClass/<init>()V
+
+    ; v6 = SuperInterface[]
+    new-array v6, v0, [Ldot/junit/opcodes/aput_object/d/SuperInterface;
+
+    ; v7 =     Object[]
+    new-array v7, v0, [Ljava/lang/Object;
+    
+    ; v8 = SuperInterface2[]
+    new-array v8, v0, [Ldot/junit/opcodes/aput_object/d/SuperInterface2;
+    
+    const/4 v0, 0
+    
+; (SubClass -> SuperClass[])
+    aput-object v4, v3, v0
+    
+; (SubClass -> SuperInterface[])
+    aput-object v4, v6, v0
+    
+; (SubClass -> Object[])
+    aput-object v4, v7, v0
+        
+; !(SuperClass -> SubClass[])    
+Label10:        
+    aput-object v5, v2, v0
+Label11:    
+    goto Label2
+Label12:
+    add-int/lit8 v1, v1, 1
+    goto Label2
+        
+; !(SuperClass -> SuperInterface2[])    
+Label2:
+Label20:    
+    aput-object v5, v8, v0
+Label21:    
+    goto Label3
+Label22:
+    add-int/lit8 v1, v1, 1
+    goto Label3
+
+; !(SubClass[] -> SuperInterface[])    
+Label3:
+Label30:    
+    aput-object v2, v6, v0
+Label31:    
+    goto Label4
+Label32:    
+    add-int/lit8 v1, v1, 1
+    goto Label4
+
+Label4:
+    return v1
+    
+.catch java/lang/ArrayStoreException from Label10 to Label11 using Label12
+.catch java/lang/ArrayStoreException from Label20 to Label21 using Label22
+.catch java/lang/ArrayStoreException from Label30 to Label31 using Label32
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.java b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.java
new file mode 100644
index 0000000..1a90fd1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_object.d;
+
+public class T_aput_object_3 {
+    
+    public int run() {
+        return 3;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.d b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.d
new file mode 100644
index 0000000..f79b817
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_4.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/Object;)V
+.limit regs 11
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.java b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.java
new file mode 100644
index 0000000..52e935b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_object.d;
+
+public class T_aput_object_4 {
+
+//  public void run(Integer[] arr, int idx) {
+    /* similar to
+     * Object x[] = new String[3];
+     * x[0] = new Integer(0);
+     */
+//  }
+    
+    public void run(String[] arr, int idx, Object a) {
+        //arr[idx] = a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_5.d b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_5.d
new file mode 100644
index 0000000..441ac56
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_5.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;DLjava/lang/String;)V
+.limit regs 11
+
+       aput-object v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_6.d b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_6.d
new file mode 100644
index 0000000..5786bbb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_6.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;IJ)V
+.limit regs 11
+
+       aput-object v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_7.d b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_7.d
new file mode 100644
index 0000000..dfdc953
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_7.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;ILjava/lang/String;)V
+.limit regs 11
+
+       aput-object v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_8.d b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_8.d
new file mode 100644
index 0000000..e6259bf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_8.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([FILjava/lang/String;)V
+.limit regs 10
+
+       aput-object v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_9.d b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_9.d
new file mode 100644
index 0000000..96bced3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_object_9.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JILjava/lang/String;)V
+.limit regs 10
+
+       aput-object v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_short/Test_aput_short.java b/tools/vm-tests/src/dot/junit/opcodes/aput_short/Test_aput_short.java
new file mode 100644
index 0000000..350d999
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_short/Test_aput_short.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_short.d.T_aput_short_1;
+import dot.junit.opcodes.aput_short.d.T_aput_short_8;
+
+public class Test_aput_short extends DxTestCase {
+    /**
+     * @title put short into array
+     */
+    public void testN1() {
+        T_aput_short_1 t = new T_aput_short_1();
+        short[] arr = new short[2];
+        t.run(arr, 1, (short) 10000);
+        assertEquals(10000, arr[1]);
+    }
+
+    /**
+     * @title put short into array
+     */
+    public void testN2() {
+        T_aput_short_1 t = new T_aput_short_1();
+        short[] arr = new short[2];
+        t.run(arr, 0, (short) 10000);
+        assertEquals(10000, arr[0]);
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        short[] arr = new short[2];
+        T_aput_short_8 t = new T_aput_short_8();
+        try {
+            t.run(arr, 3.14f, (short)111);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_short_1 t = new T_aput_short_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, 2, (short) 10000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_short_1 t = new T_aput_short_1();
+        try {
+            t.run(null, 2, (short) 10000);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_short_1 t = new T_aput_short_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, -1, (short) 10000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B15 
+     * @title put value 32768 into array of shorts
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.d b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.d
new file mode 100644
index 0000000..f89cbb6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_1.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SIS)V
+.limit regs 11
+
+       aput-short v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.java b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.java
new file mode 100644
index 0000000..42cefa9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_short.d;
+
+public class T_aput_short_1 {
+    public void run(short[] arr, int idx, short value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_10.d b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_10.d
new file mode 100644
index 0000000..bbb541c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_10.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SIS)V
+.limit regs 11
+
+       const v10, 32768    
+       aput-short v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_2.d b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_2.d
new file mode 100644
index 0000000..9d63757
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_2.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SDS)V
+.limit regs 11
+
+
+       aput-short v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_3.d b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_3.d
new file mode 100644
index 0000000..c9990b4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_3.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SIJ)V
+.limit regs 11
+
+
+       aput-short v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_4.d b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_4.d
new file mode 100644
index 0000000..24b2d92
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_4.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IS)V
+.limit regs 10
+
+
+       aput-short v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_5.d b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_5.d
new file mode 100644
index 0000000..4a9dabc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_5.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DIS)V
+.limit regs 10
+
+
+       aput-short v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_6.d b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_6.d
new file mode 100644
index 0000000..ed8cfd3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_6.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIS)V
+.limit regs 10
+
+
+       aput-short v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_7.d b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_7.d
new file mode 100644
index 0000000..9927025
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_7.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SIS)V
+.limit regs 10
+
+       aput-short v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.d b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.d
new file mode 100644
index 0000000..099de06
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_8.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SFS)V
+.limit regs 11
+
+       aput-short v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.java b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.java
new file mode 100644
index 0000000..e973865
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_short.d;
+
+public class T_aput_short_8 {
+    public void run(short[] arr, float idx, short value) {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_9.d b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_9.d
new file mode 100644
index 0000000..46efab3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_short/d/T_aput_short_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_short_9.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SIS)V
+.limit regs 11
+
+       aput-short v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_wide/Test_aput_wide.java b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/Test_aput_wide.java
new file mode 100644
index 0000000..4b7f0ad
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/Test_aput_wide.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_wide.d.T_aput_wide_1;
+import dot.junit.opcodes.aput_wide.d.T_aput_wide_2;
+import dot.junit.opcodes.aput_wide.d.T_aput_wide_6;
+import dot.junit.opcodes.aput_wide.d.T_aput_wide_9;
+
+
+public class Test_aput_wide extends DxTestCase {
+    /**
+     * @title put long into array
+     */
+    public void testN1() {
+        T_aput_wide_1 t = new T_aput_wide_1();
+        long[] arr = new long[2];
+        t.run(arr, 1, 100000000000l);
+        assertEquals(100000000000l, arr[1]);
+    }
+
+    /**
+     * @title put long into array
+     */
+    public void testN2() {
+        T_aput_wide_1 t = new T_aput_wide_1();
+        long[] arr = new long[2];
+        t.run(arr, 0, 100000000000l);
+        assertEquals(100000000000l, arr[0]);
+    }
+
+    /**
+     * @title put double into array
+     */
+    public void testN3() {
+        T_aput_wide_2 t = new T_aput_wide_2();
+        double[] arr = new double[2];
+        t.run(arr, 0, 3.1415d);
+        assertEquals(3.1415d, arr[0]);
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 64-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        long[] arr = new long[2];
+        T_aput_wide_9 t = new T_aput_wide_9();
+        try {
+            t.run(arr, 3.14f, 111);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Try to put long into double[]. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation makes no sense but shall not crash the VM.
+     */
+    public void testN5() {
+        double[] arr = new double[2];
+        T_aput_wide_6 t = new T_aput_wide_6();
+        try {
+            t.run(arr, 0, 1234l);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_wide_1 t = new T_aput_wide_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, 2, 100000000000l);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_wide_1 t = new T_aput_wide_1();
+        try {
+            t.run(null, 1, 100000000000l);
+            fail("expected NullPointerException");
+        } catch (NullPointerException np) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_wide_1 t = new T_aput_wide_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, -1, 100000000000l);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int[], int, long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, long
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.d b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.d
new file mode 100644
index 0000000..2890417
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_1.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.java b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.java
new file mode 100644
index 0000000..385db2e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_wide.d;
+
+public class T_aput_wide_1 {
+
+    public void run(long[] arr, int idx, long value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_10.d b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_10.d
new file mode 100644
index 0000000..bf314a2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_10.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIJ)V
+.limit regs 14
+
+       aput-wide v14, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.d b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.d
new file mode 100644
index 0000000..793338f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_2.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DID)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.java b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.java
new file mode 100644
index 0000000..e333794
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_wide.d;
+
+public class T_aput_wide_2 {
+
+    public void run(double[] arr, int idx, double value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_3.d b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_3.d
new file mode 100644
index 0000000..4486392
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_3.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JDJ)V
+.limit regs 14
+
+       aput-wide v12, v9, v10
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_4.d b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_4.d
new file mode 100644
index 0000000..980724f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_4.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JII)V
+.limit regs 14
+
+       aput-wide v13, v11, v12
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_5.d b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_5.d
new file mode 100644
index 0000000..f4d3354
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_5.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.d b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.d
new file mode 100644
index 0000000..e5f58d2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_6.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DIJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.java b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.java
new file mode 100644
index 0000000..d1466a3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_wide.d;
+
+public class T_aput_wide_6 {
+
+    public void run(double[] arr, int idx, long value) {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_7.d b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_7.d
new file mode 100644
index 0000000..c862b0d5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_7.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IIJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_8.d b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_8.d
new file mode 100644
index 0000000..06e1aa0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_8.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.d b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.d
new file mode 100644
index 0000000..41777df
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_aput_wide_9.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JFJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.java b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.java
new file mode 100644
index 0000000..c08f9be
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.aput_wide.d;
+
+public class T_aput_wide_9 {
+
+    public void run(long[] arr, float idx, long value) {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/array_length/Test_array_length.java b/tools/vm-tests/src/dot/junit/opcodes/array_length/Test_array_length.java
new file mode 100644
index 0000000..f49cccb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/array_length/Test_array_length.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.array_length;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.array_length.d.T_array_length_1;
+import dot.junit.opcodes.array_length.d.T_array_length_4;
+
+
+public class Test_array_length extends DxTestCase {
+    /**
+     * @title get length of array of references
+     */
+    public void testN1() {
+        T_array_length_1 t = new T_array_length_1();
+        String[] a = new String[5];
+        assertEquals(5, t.run(a));
+    }
+    
+    /**
+     * @title get length of array of doubles
+     */
+    public void testN2() {
+        T_array_length_4 t = new T_array_length_4();
+        double[] a = new double[10];
+        assertEquals(10, t.run(a));
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testNPE1() {
+        T_array_length_1 t = new T_array_length_1();
+        try {
+            t.run(null);
+            fail("NPE expected");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.array_length.jm.T_array_length_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.array_length.jm.T_array_length_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.array_length.jm.T_array_length_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_1.d b/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_1.d
new file mode 100644
index 0000000..3981009
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_array_length_1.java
+.class public dot.junit.opcodes.array_length.d.T_array_length_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/Object;)I
+.limit regs 5
+
+       array-length v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_1.java b/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_1.java
new file mode 100644
index 0000000..fd30072
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.array_length.d;
+
+public class T_array_length_1 {
+
+    public int run(Object[] arr) {
+        return arr.length;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_2.d b/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_2.d
new file mode 100644
index 0000000..b1b015c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_array_length_2.java
+.class public dot.junit.opcodes.array_length.d.T_array_length_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.limit regs 5
+
+       array-length v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_3.d b/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_3.d
new file mode 100644
index 0000000..01bdaf0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_array_length_3.java
+.class public dot.junit.opcodes.array_length.d.T_array_length_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.limit regs 5
+    
+       const v4, 1234
+       array-length v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_4.d b/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_4.d
new file mode 100644
index 0000000..af48dfb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_array_length_4.java
+.class public dot.junit.opcodes.array_length.d.T_array_length_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([D)I
+.limit regs 5
+
+       array-length v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_4.java b/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_4.java
new file mode 100644
index 0000000..b3fa51f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.array_length.d;
+
+public class T_array_length_4 {
+
+    public int run(double[] arr) {
+        return arr.length;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_5.d b/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_5.d
new file mode 100644
index 0000000..c7b1f9e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/array_length/d/T_array_length_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_array_length_5.java
+.class public dot.junit.opcodes.array_length.d.T_array_length_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/Object;)V
+.limit regs 5
+
+       array-length v5, v4
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/check_cast/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/check_cast/TestStubs.java
new file mode 100644
index 0000000..53af56d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/check_cast/TestStubs.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.check_cast;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private class TestStub {
+        // used by testVFE5
+        public void foo() {
+            
+        }
+    } 
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/check_cast/Test_check_cast.java b/tools/vm-tests/src/dot/junit/opcodes/check_cast/Test_check_cast.java
new file mode 100644
index 0000000..ea9e38c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/check_cast/Test_check_cast.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.check_cast;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.check_cast.d.T_check_cast_1;
+import dot.junit.opcodes.check_cast.d.T_check_cast_2;
+
+
+public class Test_check_cast extends DxTestCase {
+   
+    
+    /**
+     * @title (String)(Object)String
+     */
+    public void testN1() {
+        T_check_cast_1 t = new T_check_cast_1();
+        String s = "";
+        assertEquals(s, t.run(s));
+    }
+
+    /**
+     * @title (String)(Object)null
+     */
+    public void testN2() {
+        T_check_cast_1 t = new T_check_cast_1();
+        assertNull(t.run(null));
+    }
+
+    /**
+     * @title check assignment compatibility rules
+     */
+    public void testN4() {
+        T_check_cast_2 t = new T_check_cast_2();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title expected ClassCastException
+     */
+    public void testE1() {
+        T_check_cast_1 t = new T_check_cast_1();
+        try {
+            t.run(t);
+            fail("expected ClassCastException");
+        } catch (ClassCastException iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A18 
+     * @title  constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.check_cast.d.T_check_cast_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.check_cast.d.T_check_cast_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.check_cast.d.T_check_cast_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.check_cast.d.T_check_cast_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+   
+    /**
+     * @constraint n/a
+     * @title Attempt to access inaccessible class. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */    
+    public void testVFE5() {
+        //@uses dot.junit.opcodes.check_cast.TestStubs
+        //@uses dot.junit.opcodes.check_cast.d.T_check_cast_3
+        try {
+            Class.forName("dot.junit.opcodes.check_cast.d.T_check_cast_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to access undefined class. Java throws NoClassDefFoundError on 
+     * first access but Dalvik throws VerifyError on class loading.
+     */    
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.check_cast.d.T_check_cast_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A18 
+     * @title  constant pool type
+     */    
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.check_cast.d.T_check_cast_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.d b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.d
new file mode 100644
index 0000000..9c2f074
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_check_cast_1.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+.limit regs 5
+
+       check-cast v4, java/lang/String
+       return-object v4
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.java b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.java
new file mode 100644
index 0000000..4387def
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.check_cast.d;
+
+public class T_check_cast_1 {
+
+    public String run(Object o) {
+        return (String)o;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.d b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.d
new file mode 100644
index 0000000..b7472cc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.d
@@ -0,0 +1,149 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestStubs.java
+.interface public dot.junit.opcodes.check_cast.d.T_check_cast_2.SuperInterface
+
+.source TestStubs.java    
+.interface public dot.junit.opcodes.check_cast.d.T_check_cast_2.SuperInterface2
+
+.source TestStubs.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_2.SuperClass 
+.super java/lang/Object
+.implements dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface
+    
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method    
+
+.source TestStubs.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_2.SubClass 
+.super dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass/<init>()V
+       return-void
+.end method
+
+
+.source T_check_cast_2.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 20
+
+    const v1, 0
+    
+; (SubClass instanceof SuperClass)    
+    new-instance v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass/<init>()V
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass
+    
+; (SubClass[] instanceof SuperClass[])    
+    const v11, 1
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+    check-cast v10, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass;
+
+    
+; (SubClass[] instanceof Object)    
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+    check-cast v10, java/lang/Object
+    
+; (SubClass instanceof SuperInterface)    
+    new-instance v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass/<init>()V    
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface
+        
+
+; !(SuperClass instanceof SubClass)    
+Label1:
+    new-instance v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass
+    invoke-direct {v10}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass/<init>()V
+Label10:    
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
+Label11:    
+    goto Label2
+Label12:
+    add-int/lit16 v1, v1, 1
+    goto Label2
+        
+; !(SubClass instanceof SuperInterface2)    
+Label2:
+    new-instance v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass/<init>()V    
+Label20:    
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface2
+Label21:    
+    goto Label3
+Label22:
+    add-int/lit16 v1, v1, 1
+    goto Label3
+
+; !(SubClass[] instanceof SuperInterface)    
+Label3:
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+Label30:    
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface
+Label31:    
+    goto Label4
+Label32:    
+    add-int/lit16 v1, v1, 1
+    goto Label4
+
+; !(SubClass[] instanceof SubClass)    
+Label4:
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+Label40:    
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
+Label41:    
+    goto Label5
+Label42:
+    add-int/lit16 v1, v1, 1
+    goto Label5    
+    
+; !(SuperClass[] instanceof SubClass[])    
+Label5:
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass;
+Label50:    
+    check-cast v10, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+Label51:    
+    goto Label6
+Label52:
+    add-int/lit16 v1, v1, 1
+    
+Label6:        
+    return v1
+    
+.catch java/lang/ClassCastException from Label10 to Label11 using Label12
+.catch java/lang/ClassCastException from Label20 to Label21 using Label22
+.catch java/lang/ClassCastException from Label30 to Label31 using Label32
+.catch java/lang/ClassCastException from Label40 to Label41 using Label42
+.catch java/lang/ClassCastException from Label50 to Label51 using Label52
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.java b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.java
new file mode 100644
index 0000000..5e55188
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.check_cast.d;
+
+public class T_check_cast_2 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.d b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.d
new file mode 100644
index 0000000..5b5dea0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_check_cast_3.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+       check-cast v5, dot/junit/opcodes/check_cast/Test_check_cast$TestStub
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.java b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.java
new file mode 100644
index 0000000..4c4f153
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.check_cast.d;
+
+public class T_check_cast_3 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.d b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.d
new file mode 100644
index 0000000..77e28d2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_check_cast_4.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+.limit regs 5
+
+       check-cast v4, java/lang/String
+       return-object v4
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.dfh
new file mode 100644
index 0000000..ed092c6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.dfh
@@ -0,0 +1,264 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/check_cast/d/T_check_cast_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/check_cast/d/T_check_cast_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 1f0a4ad6
+    D6 4A 0A 1F 
+// parsed: offset 12, len 20: signature           : c885...5be2
+    C8 85 20 53 64 78 EF B4 92 49 06 A9 EC FA 7E 44 D0 A3 5B E2 
+// parsed: offset 32, len 4: file_size           : 576
+    40 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 440 (0x0001b8)
+    B8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 336
+    50 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "LL"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 306 (0x000132) "Ldot/junit/opcodes/check_cast/d/T_check_cast_4;"
+    32 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 355 (0x000163) "Ljava/lang/Object;"
+    63 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 375 (0x000177) "Ljava/lang/String;"
+    77 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "T_check_cast_4.java"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 416 (0x0001a0) "V"
+    A0 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 419 (0x0001a3) "run"
+    A3 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/check_cast/d/T_check_cast_4;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "LL"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 288 (0x000120)
+    01 00 00 00 02 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/check_cast/d/T_check_cast_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_check_cast_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 424 (0x0001a8)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 A8 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.check_cast.d.T_check_cast_4.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.check_cast.d.T_check_cast_4.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: check-cast v4, Ljava/lang/String; // class@0002
+//@mod            1F 04 02 00 
+            1F 04 02 01 
+        // parsed: offset 284, len 2: |0002: return-object v4
+            11 04 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 4: TYPE_STRING_DATA_ITEM [1] "LL"
+    02 4C 4C 00 
+// parsed: offset 306, len 49: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/check_cast/d/T_check_cast_4;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 63 68 65 63 6B 5F 63 61 73 74 2F 64 2F 54 5F 63 68 65 63 6B 5F 63 61 73 74 5F 34 3B 00 
+// parsed: offset 355, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 375, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 395, len 21: TYPE_STRING_DATA_ITEM [5] "T_check_cast_4.java"
+    13 54 5F 63 68 65 63 6B 5F 63 61 73 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 416, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 419, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/check_cast/d/T_check_cast_4;"
+    // parsed: offset 424, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 425, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 426, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 427, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 428, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 429, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 432, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 434, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 435, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 436, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 438, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 440, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 444, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 456, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 468, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 480, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 492, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 504, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 516, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 528, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 540, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 552, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 20 00 00 01 00 00 00 A8 01 00 00 
+    // parsed: offset 564, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 440 (0x0001b8)
+        00 10 00 00 01 00 00 00 B8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_5.d b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_5.d
new file mode 100644
index 0000000..b76a68e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_check_cast_5.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+       const v3, 1234
+       check-cast v3, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_6.d b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_6.d
new file mode 100644
index 0000000..7e26639
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_check_cast_6.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+
+       check-cast v5, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.d b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.d
new file mode 100644
index 0000000..8c7af68
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_check_cast_7.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       check-cast v5, dot/junit/opcodes/check_cast/Test_check_castN
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.java b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.java
new file mode 100644
index 0000000..fa941a0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.check_cast.d;
+
+public class T_check_cast_7 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_8.d b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_8.d
new file mode 100644
index 0000000..645436f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_check_cast_8.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+       const-wide v0, 1234
+       check-cast v0, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.d b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.d
new file mode 100644
index 0000000..e44cc10
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_check_cast_9.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+.limit regs 5
+
+       check-cast v4, java/lang/String
+       return-object v4
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.dfh b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.dfh
new file mode 100644
index 0000000..419f6e9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.dfh
@@ -0,0 +1,264 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/check_cast/d/T_check_cast_9.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/check_cast/d/T_check_cast_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : d6bb4b2e
+    2E 4B BB D6 
+// parsed: offset 12, len 20: signature           : 1ebe...570d
+    1E BE 42 FD BC AF 7F 9D AB 10 86 B8 F1 D5 98 36 F6 E6 57 0D 
+// parsed: offset 32, len 4: file_size           : 576
+    40 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 440 (0x0001b8)
+    B8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 336
+    50 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "LL"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 306 (0x000132) "Ldot/junit/opcodes/check_cast/d/T_check_cast_9;"
+    32 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 355 (0x000163) "Ljava/lang/Object;"
+    63 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 375 (0x000177) "Ljava/lang/String;"
+    77 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "T_check_cast_9.java"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 416 (0x0001a0) "V"
+    A0 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 419 (0x0001a3) "run"
+    A3 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/check_cast/d/T_check_cast_9;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "LL"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 288 (0x000120)
+    01 00 00 00 02 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/check_cast/d/T_check_cast_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_check_cast_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 424 (0x0001a8)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 A8 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.check_cast.d.T_check_cast_9.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.check_cast.d.T_check_cast_9.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: check-cast v4, Ljava/lang/String; // class@0002
+//@mod            1F 04 02 00 
+            1F 04 03 00 
+        // parsed: offset 284, len 2: |0002: return-object v4
+            11 04 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 4: TYPE_STRING_DATA_ITEM [1] "LL"
+    02 4C 4C 00 
+// parsed: offset 306, len 49: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/check_cast/d/T_check_cast_9;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 63 68 65 63 6B 5F 63 61 73 74 2F 64 2F 54 5F 63 68 65 63 6B 5F 63 61 73 74 5F 39 3B 00 
+// parsed: offset 355, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 375, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 395, len 21: TYPE_STRING_DATA_ITEM [5] "T_check_cast_9.java"
+    13 54 5F 63 68 65 63 6B 5F 63 61 73 74 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 416, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 419, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/check_cast/d/T_check_cast_9;"
+    // parsed: offset 424, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 425, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 426, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 427, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 428, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 429, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 432, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 434, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 435, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 436, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 438, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 440, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 444, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 456, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 468, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 480, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 492, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 504, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 516, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 528, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 540, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 552, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 20 00 00 01 00 00 00 A8 01 00 00 
+    // parsed: offset 564, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 440 (0x0001b8)
+        00 10 00 00 01 00 00 00 B8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmp_long/Test_cmp_long.java b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/Test_cmp_long.java
new file mode 100644
index 0000000..e2a1994
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/Test_cmp_long.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmp_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.cmp_long.d.T_cmp_long_1;
+import dot.junit.opcodes.cmp_long.d.T_cmp_long_2;
+
+public class Test_cmp_long extends DxTestCase {
+    /**
+     * @title Arguments = 111234567891l > 111234567890l
+     */
+    public void testN1() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(1, t.run(111234567891l, 111234567890l));
+    }
+
+    /**
+     * @title Arguments = 112234567890 = 112234567890
+     */
+    public void testN2() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(0, t.run(112234567890l, 112234567890l));
+    }
+
+    /**
+     * @title Arguments = 112234567890 < 998876543210
+     */
+    public void testN3() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(-1, t.run(112234567890l, 998876543210l));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this comparison of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+         T_cmp_long_2 t = new T_cmp_long_2();
+        try {
+            t.run(123l, 3.145f);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Arguments = Long.MAX_VALUE > Long.MIN_VALUE
+     */
+    public void testB1() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(1, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE < Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(-1, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1 > 0
+     */
+    public void testB3() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(1, t.run(1l, 0l));
+    }
+
+    /**
+     * @title Arguments = 0 > -1
+     */
+    public void testB4() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(1, t.run(0l, -1l));
+    }
+
+    /**
+     * @title Arguments = -1 < 0
+     */
+    public void testB5() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(-1, t.run(-1l, 0l));
+    }
+
+    /**
+     * @title Arguments = 0 = 0
+     */
+    public void testB6() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(0, t.run(0l, 0l));
+    }
+
+
+    /**
+     * @constraint B1
+     * @title types of arguments - float, long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.cmp_long.d.T_cmp_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.cmp_long.d.T_cmp_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.cmp_long.d.T_cmp_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.cmp_long.d.T_cmp_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.d b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.d
new file mode 100644
index 0000000..60b9654
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmp_long_1.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.limit regs 14
+
+       cmp-long v0, v10, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.java b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.java
new file mode 100644
index 0000000..10a78e9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmp_long.d;
+
+public class T_cmp_long_1 {
+
+    public int run(long a, long b) {
+        if (a > b)   return 1;
+        if (a == b)  return 0;
+        return -1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.d b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.d
new file mode 100644
index 0000000..e3bdfd4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmp_long_2.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)I
+.limit regs 14
+
+       cmp-long v0, v10, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.java b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.java
new file mode 100644
index 0000000..4674e7a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmp_long.d;
+
+public class T_cmp_long_2 {
+
+    public int run(long a, double b) {
+        return -2;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_3.d b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_3.d
new file mode 100644
index 0000000..3d25d6b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmp_long_3.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.limit regs 14
+
+       const v10, 3.1415
+       cmp-long v0, v10, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_4.d b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_4.d
new file mode 100644
index 0000000..32c3050
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmp_long_4.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.limit regs 14
+
+       const v10, 1234
+       cmp-long v0, v10, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_5.d b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_5.d
new file mode 100644
index 0000000..9e86284
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmp_long_5.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.limit regs 14
+
+       const v10, 1234
+       cmp-long v0, v9, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_6.d b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_6.d
new file mode 100644
index 0000000..15ac1cd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmp_long_6.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.limit regs 14
+
+       cmp-long v0, v10, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/Test_cmpg_double.java b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/Test_cmpg_double.java
new file mode 100644
index 0000000..fbf47a3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/Test_cmpg_double.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpg_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.cmpg_double.d.T_cmpg_double_1;
+import dot.junit.opcodes.cmpg_double.d.T_cmpg_double_3;
+
+public class Test_cmpg_double extends DxTestCase {
+    /**
+     * @title Arguments = 3.14d, 2.7d
+     */
+    public void testN1() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(1, t.run(3.14d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = -3.14d, 2.7d
+     */
+    public void testN2() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(-1, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(0, t.run(3.14d, 3.14d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this comparison of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_cmpg_double_3 t = new T_cmpg_double_3();
+        try {
+            t.run(123l, 3.145d);
+        } catch (Throwable e) {
+        }
+    }  
+
+    /**
+     * @title Arguments = Double.NaN, Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(1, t.run(Double.NaN, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB2() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Double.NEGATIVE_INFINITY, Double.MIN_VALUE
+     */
+    public void testB3() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(-1, t.run(Double.NEGATIVE_INFINITY, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, Double.MAX_VALUE
+     */
+    public void testB4() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, float
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_double.d.T_cmpg_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_double.d.T_cmpg_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_double.d.T_cmpg_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_double.d.T_cmpg_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.d b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.d
new file mode 100644
index 0000000..a76c3b4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_double_1.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       cmpg-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.java b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.java
new file mode 100644
index 0000000..8488914
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpg_double.d;
+
+public class T_cmpg_double_1 {
+
+    public int run(double a, double b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_2.d b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_2.d
new file mode 100644
index 0000000..5704511
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_double_2.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       const v14, 3.14
+       cmpg-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.d b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.d
new file mode 100644
index 0000000..78d65ac
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_double_3.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)I
+.limit regs 16
+
+       cmpg-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.java b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.java
new file mode 100644
index 0000000..d5b8ca5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpg_double.d;
+
+public class T_cmpg_double_3 {
+
+    public int run(long a, double b) {
+        return -2;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_4.d b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_4.d
new file mode 100644
index 0000000..e38307c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_double_4.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       const-wide v12, 12356
+       cmpg-double v0, v12, v11
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_5.d b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_5.d
new file mode 100644
index 0000000..bd43151
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_double_5.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       cmpg-double v0, v12, v16
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_6.d b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_6.d
new file mode 100644
index 0000000..70c7f72
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_double_6.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 16
+       move v0, v14
+       move v1, v14
+       move v2, v15
+       move v3, v15
+
+       cmpg-double v0, v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/Test_cmpg_float.java b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/Test_cmpg_float.java
new file mode 100644
index 0000000..1ff20a5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/Test_cmpg_float.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpg_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.cmpg_float.d.T_cmpg_float_1;
+import dot.junit.opcodes.cmpg_float.d.T_cmpg_float_6;
+
+public class Test_cmpg_float extends DxTestCase {
+    /**
+     * @title Arguments = 3.14f, 2.7f
+     */
+    public void testN1() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(1, t.run(3.14f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = -3.14f, 2.7f
+     */
+    public void testN2() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(-1, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(0, t.run(3.14f, 3.14f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this comparison of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_cmpg_float_6 t = new T_cmpg_float_6();
+        try {
+            t.run(123, 3.145f);
+        } catch (Throwable e) {
+        }
+    }      
+    
+    /**
+     * @title Arguments = Float.NaN, Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(1, t.run(Float.NaN, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB2() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Float.NEGATIVE_INFINITY, Float.MIN_VALUE
+     */
+    public void testB3() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(-1, t.run(Float.NEGATIVE_INFINITY, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, Float.MAX_VALUE
+     */
+    public void testB4() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_float.d.T_cmpg_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_float.d.T_cmpg_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_float.d.T_cmpg_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_float.d.T_cmpg_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.d b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.d
new file mode 100644
index 0000000..a32772d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_float_1.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpg-float v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.java b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.java
new file mode 100644
index 0000000..9e3eb7e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpg_float.d;
+
+public class T_cmpg_float_1 {
+
+    public int run(float a, float b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_2.d b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_2.d
new file mode 100644
index 0000000..abaed4c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_float_2.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       const-wide v1, 3.1414
+       cmpg-float v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_3.d b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_3.d
new file mode 100644
index 0000000..f741d1e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_float_3.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       const-wide v1, 234234
+       cmpg-float v0, v1, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_4.d b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_4.d
new file mode 100644
index 0000000..f40f08e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_float_4.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpg-float v0, v6, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_5.d b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_5.d
new file mode 100644
index 0000000..46a019a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_float_5.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpg-float v0, v9, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.d b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.d
new file mode 100644
index 0000000..1051f14
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpg_float_6.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 9
+       cmpg-float v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.java b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.java
new file mode 100644
index 0000000..8a785ca
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpg_float.d;
+
+public class T_cmpg_float_6 {
+
+    public int run(int a, float b) {
+        return -2;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/Test_cmpl_double.java b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/Test_cmpl_double.java
new file mode 100644
index 0000000..9f54c52
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/Test_cmpl_double.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpl_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.cmpl_double.d.T_cmpl_double_3;
+import dot.junit.opcodes.cmpl_double.d.T_cmpl_double_1;
+
+public class Test_cmpl_double extends DxTestCase {
+    /**
+     * @title Arguments = 3.14d, 2.7d
+     */
+    public void testN1() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(1, t.run(3.14d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = -3.14d, 2.7d
+     */
+    public void testN2() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(-1, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(0, t.run(3.14d, 3.14d));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this comparison of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_cmpl_double_3 t = new T_cmpl_double_3();
+        try {
+            t.run(123l, 3.145d);
+        } catch (Throwable e) {
+        }
+    }      
+    
+    /**
+     * @title Arguments = Double.NaN, Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(-1, t.run(Double.NaN, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB2() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Double.NEGATIVE_INFINITY, Double.MIN_VALUE
+     */
+    public void testB3() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(-1, t.run(Double.NEGATIVE_INFINITY, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, Double.MAX_VALUE
+     */
+    public void testB4() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, float
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_double.d.T_cmpl_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+    * @constraint A24 
+    * @title number of registers
+    */
+    public void testVFE2() {
+       try {
+           Class.forName("dot.junit.opcodes.cmpl_double.d.T_cmpl_double_5");
+           fail("expected a verification exception");
+       } catch (Throwable t) {
+           DxUtil.checkVerifyException(t);
+       }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_double.d.T_cmpl_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_double.d.T_cmpl_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.d b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.d
new file mode 100644
index 0000000..03a840e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_double_1.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       cmpl-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.java b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.java
new file mode 100644
index 0000000..cb1587f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpl_double.d;
+
+public class T_cmpl_double_1 {
+
+    public int run(double a, double b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_2.d b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_2.d
new file mode 100644
index 0000000..49566ce
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_double_2.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       const v14, 3.14
+       cmpl-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.d b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.d
new file mode 100644
index 0000000..e132fa0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_double_3.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)I
+.limit regs 16
+
+       cmpl-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.java b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.java
new file mode 100644
index 0000000..5f32c2c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpl_double.d;
+
+public class T_cmpl_double_3 {
+
+    public int run(long a, double b) {
+        return -2;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_4.d b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_4.d
new file mode 100644
index 0000000..cf01f55
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_double_4.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       const-wide v12, 12356
+       cmpl-double v0, v12, v11
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_5.d b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_5.d
new file mode 100644
index 0000000..453ee43
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_double_5.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       cmpl-double v0, v12, v16
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_6.d b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_6.d
new file mode 100644
index 0000000..720ec7c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_double_6.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 16
+       move v0, v14
+       move v1, v14
+       move v2, v15
+       move v3, v15
+
+       cmpl-double v0, v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/Test_cmpl_float.java b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/Test_cmpl_float.java
new file mode 100644
index 0000000..3ca0b5b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/Test_cmpl_float.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpl_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.cmpl_float.d.T_cmpl_float_6;
+import dot.junit.opcodes.cmpl_float.d.T_cmpl_float_1;
+
+public class Test_cmpl_float extends DxTestCase {
+    /**
+     * @title Arguments = 3.14f, 2.7f
+     */
+    public void testN1() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(1, t.run(3.14f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = -3.14f, 2.7f
+     */
+    public void testN2() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(-1, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(0, t.run(3.14f, 3.14f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this comparison of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_cmpl_float_6 t = new T_cmpl_float_6();
+        try {
+            t.run(123, 3.145f);
+        } catch (Throwable e) {
+        }
+    }     
+    
+    /**
+     * @title Arguments = Float.NaN, Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(-1, t.run(Float.NaN, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB2() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Float.NEGATIVE_INFINITY, Float.MIN_VALUE
+     */
+    public void testB3() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(-1, t.run(Float.NEGATIVE_INFINITY, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, Float.MAX_VALUE
+     */
+    public void testB4() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_float.d.T_cmpl_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title types of arguments - long, float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_float.d.T_cmpl_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_float.d.T_cmpl_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_float.d.T_cmpl_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.d b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.d
new file mode 100644
index 0000000..48f14e0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_float_1.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpl-float v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.java b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.java
new file mode 100644
index 0000000..afd42d1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpl_float.d;
+
+public class T_cmpl_float_1 {
+
+    public int run(float a, float b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_2.d b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_2.d
new file mode 100644
index 0000000..67ed903
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_float_2.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       const-wide v1, 3.1414
+       cmpl-float v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_3.d b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_3.d
new file mode 100644
index 0000000..b43f114
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_float_3.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       const-wide v1, 234234
+       cmpl-float v0, v1, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_4.d b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_4.d
new file mode 100644
index 0000000..a4aa08e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_float_4.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpl-float v0, v6, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_5.d b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_5.d
new file mode 100644
index 0000000..d496c11
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_float_5.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpl-float v0, v9, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.d b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.d
new file mode 100644
index 0000000..05a9e62
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_cmpl_float_6.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 9
+       cmpl-float v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.java b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.java
new file mode 100644
index 0000000..e41e14a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.cmpl_float.d;
+
+public class T_cmpl_float_6 {
+
+    public int run(int a, float b) {
+        return -2;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_16/Test_const_16.java b/tools/vm-tests/src/dot/junit/opcodes/const_16/Test_const_16.java
new file mode 100644
index 0000000..00e6b78
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_16/Test_const_16.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_16.d.T_const_16_1;
+
+public class Test_const_16 extends DxTestCase {
+    
+    /**
+     * @title const/16 v254, -20000
+     */
+    public void testN2() {
+        T_const_16_1 t = new T_const_16_1();
+         int a = -10000;
+         int b = -10000;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_16.d.T_const_16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_16.d.T_const_16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_16/d/T_const_16_1.d b/tools/vm-tests/src/dot/junit/opcodes/const_16/d/T_const_16_1.d
new file mode 100644
index 0000000..6078e06
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_16/d/T_const_16_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_16_1.java
+.class public dot.junit.opcodes.const_16.d.T_const_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 255
+
+       const/16 v254, -20000
+       return v254
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_16/d/T_const_16_1.java b/tools/vm-tests/src/dot/junit/opcodes/const_16/d/T_const_16_1.java
new file mode 100644
index 0000000..3285906
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_16/d/T_const_16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_16.d;
+
+public class T_const_16_1 {
+
+    public int run() {
+        return -20000;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_16/d/T_const_16_3.d b/tools/vm-tests/src/dot/junit/opcodes/const_16/d/T_const_16_3.d
new file mode 100644
index 0000000..4e0bfa7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_16/d/T_const_16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_16_3.java
+.class public dot.junit.opcodes.const_16.d.T_const_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_16/d/T_const_16_4.d b/tools/vm-tests/src/dot/junit/opcodes/const_16/d/T_const_16_4.d
new file mode 100644
index 0000000..4040879
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_16/d/T_const_16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_16_4.java
+.class public dot.junit.opcodes.const_16.d.T_const_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const/16 v1, 1234
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_4/Test_const_4.java b/tools/vm-tests/src/dot/junit/opcodes/const_4/Test_const_4.java
new file mode 100644
index 0000000..d9bb26b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_4/Test_const_4.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_4;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_4.d.T_const_4_1;
+
+public class Test_const_4 extends DxTestCase {
+    /**
+     * @title const/4 v15, -4
+     */
+    public void testN2() {
+        T_const_4_1 t = new T_const_4_1();
+         int a = -2;
+         int b = -2;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_4.d.T_const_4_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_4.d.T_const_4_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_4/d/T_const_4_1.d b/tools/vm-tests/src/dot/junit/opcodes/const_4/d/T_const_4_1.d
new file mode 100644
index 0000000..77c522e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_4/d/T_const_4_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_4_1.java
+.class public dot.junit.opcodes.const_4.d.T_const_4_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 16
+
+       const/4 v15, -4
+       return v15
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_4/d/T_const_4_1.java b/tools/vm-tests/src/dot/junit/opcodes/const_4/d/T_const_4_1.java
new file mode 100644
index 0000000..a8b8ab3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_4/d/T_const_4_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_4.d;
+
+public class T_const_4_1 {
+
+    public int run() {
+        return -4;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_4/d/T_const_4_3.d b/tools/vm-tests/src/dot/junit/opcodes/const_4/d/T_const_4_3.d
new file mode 100644
index 0000000..d435f16
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_4/d/T_const_4_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_4_3.java
+.class public dot.junit.opcodes.const_4.d.T_const_4_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/4 v3, 1
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_4/d/T_const_4_4.d b/tools/vm-tests/src/dot/junit/opcodes/const_4/d/T_const_4_4.d
new file mode 100644
index 0000000..5ca94d5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_4/d/T_const_4_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_4_4.java
+.class public dot.junit.opcodes.const_4.d.T_const_4_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const/4 v1, 2
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_class/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/const_class/TestStubs.java
new file mode 100644
index 0000000..2a096b7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_class/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_class;
+
+public class TestStubs {
+     @SuppressWarnings("unused")
+        private class TestStub {
+            // used by testE2
+        }    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_class/Test_const_class.java b/tools/vm-tests/src/dot/junit/opcodes/const_class/Test_const_class.java
new file mode 100644
index 0000000..e481ec6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_class/Test_const_class.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_class;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_class.d.T_const_class_1;
+import dot.junit.opcodes.const_class.d.T_const_class_2;
+import dot.junit.opcodes.const_class.d.T_const_class_6;
+import dot.junit.opcodes.const_class.d.T_const_class_7;
+
+public class Test_const_class extends DxTestCase {
+    /**
+     * @title const-class v254, java/lang/String
+     */
+    public void testN1() {
+        T_const_class_1 t = new T_const_class_1();
+        Class c = t.run();
+        assertEquals(0, c.getCanonicalName().compareTo("java.lang.String"));
+    }
+    
+    /**
+     * @title const-class v254, I
+     */
+    public void testN2() {
+        T_const_class_2 t = new T_const_class_2();
+        Class c = t.run();
+        assertEquals(c.getCanonicalName(), "int");
+    }
+
+    /**
+     * @title Class definition not found
+     */
+    public void testE1() {
+        try {
+            T_const_class_6 t = new T_const_class_6();
+            t.run();
+            fail("expected a verification exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch(VerifyError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @title Class is not accessible
+     */
+    public void testE2() {
+        //@uses dot.junit.opcodes.const_class.TestStubs$TestStub
+        //@uses dot.junit.opcodes.const_class.d.T_const_class_7
+        try {
+            T_const_class_7 t = new T_const_class_7();
+            t.run();
+            fail("expected a verification exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch(VerifyError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_class.d.T_const_class_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_class.d.T_const_class_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A18 
+     * @title  constant pool index
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.const_class.d.T_const_class_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_1.d b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_1.d
new file mode 100644
index 0000000..6359d92
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_class_1.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Class;
+.limit regs 255
+
+       const-class v254, java/lang/String
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_1.java b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_1.java
new file mode 100644
index 0000000..d95f659
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_class.d;
+
+public class T_const_class_1 {
+
+    public Class run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_2.d b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_2.d
new file mode 100644
index 0000000..39bb30e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_class_2.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Class;
+.limit regs 255
+
+       const-class v254, I
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_2.java b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_2.java
new file mode 100644
index 0000000..030d3e2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_class.d;
+
+public class T_const_class_2 {
+
+    public Class run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_3.d b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_3.d
new file mode 100644
index 0000000..50da342
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_class_3.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-class v3, java/lang/Object
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_4.d b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_4.d
new file mode 100644
index 0000000..6f6b7b9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_class_4.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-class v1, java/lang/Object
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_5.d b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_5.d
new file mode 100644
index 0000000..24186a5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_class_5.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 255
+
+       const-class v254, java/lang/Object
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_5.dfh b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_5.dfh
new file mode 100644
index 0000000..db89eba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_5.dfh
@@ -0,0 +1,254 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_class/d/T_const_class_5.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_class/d/T_const_class_5.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : ad464cd4
+    D4 4C 46 AD 
+// parsed: offset 12, len 20: signature           : 959c...4307
+    95 9C 6C 40 92 C8 1F 85 87 C2 86 A1 52 39 A6 87 C9 63 43 07 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "L"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/const_class/d/T_const_class_5;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 370 (0x000172) "Ljava/lang/String;"
+    72 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 390 (0x000186) "T_const_class_5.java"
+    86 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 412 (0x00019c) "V"
+    9C 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/const_class/d/T_const_class_5;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/const_class/d/T_const_class_5;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_const_class_5.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.const_class.d.T_const_class_5.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.const_class.d.T_const_class_5.run"
+    // parsed: offset 264, len 2: registers_size: 255
+        FF 00 
+    // parsed: offset 266, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: const-class v254, Ljava/lang/Object; // class@0001
+//@mod            1C FE 01 00 
+            1C FE 01 01 
+        // parsed: offset 284, len 2: |0002: return-object v254
+            11 FE 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 299, len 51: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/const_class/d/T_const_class_5;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 63 6F 6E 73 74 5F 63 6C 61 73 73 2F 64 2F 54 5F 63 6F 6E 73 74 5F 63 6C 61 73 73 5F 35 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 390, len 22: TYPE_STRING_DATA_ITEM [5] "T_const_class_5.java"
+    14 54 5F 63 6F 6E 73 74 5F 63 6C 61 73 73 5F 35 2E 6A 61 76 61 00 
+// parsed: offset 412, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/const_class/d/T_const_class_5;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_6.d b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_6.d
new file mode 100644
index 0000000..bd893c9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_class_6.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Class;
+.limit regs 255
+
+       const-class v254, java/lang/StringNNNNN
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_6.java b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_6.java
new file mode 100644
index 0000000..4dd4ad3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_class.d;
+
+public class T_const_class_6 {
+
+    public Class run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_7.d b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_7.d
new file mode 100644
index 0000000..fc04390
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_class_7.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Class;
+.limit regs 255
+
+       const-class v254, dot/junit/opcodes/const_class/TestStubs$TestStub
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_7.java b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_7.java
new file mode 100644
index 0000000..b67d795
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_class/d/T_const_class_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_class.d;
+
+public class T_const_class_7 {
+
+    public Class run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_high16/Test_const_high16.java b/tools/vm-tests/src/dot/junit/opcodes/const_high16/Test_const_high16.java
new file mode 100644
index 0000000..68340a8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_high16/Test_const_high16.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_high16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_high16.d.T_const_high16_1;
+
+public class Test_const_high16 extends DxTestCase {
+    /**
+     * @title const/high16 v254, 0x12340000
+     */
+    public void testN1() {
+        T_const_high16_1 t = new T_const_high16_1();
+        assertEquals(0x12340000, t.run());
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_high16.d.T_const_high16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_high16.d.T_const_high16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.d b/tools/vm-tests/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.d
new file mode 100644
index 0000000..fcc1c2e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_high16_1.java
+.class public dot.junit.opcodes.const_high16.d.T_const_high16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 255
+
+       const/high16 v254, 0x12340000
+       return v254
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.java b/tools/vm-tests/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.java
new file mode 100644
index 0000000..df8cf3f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_high16.d;
+
+public class T_const_high16_1 {
+
+    public int run() {
+        return -20000;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_high16/d/T_const_high16_3.d b/tools/vm-tests/src/dot/junit/opcodes/const_high16/d/T_const_high16_3.d
new file mode 100644
index 0000000..e207c68
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_high16/d/T_const_high16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_high16_3.java
+.class public dot.junit.opcodes.const_high16.d.T_const_high16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/high16 v3, 0x12340000
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_high16/d/T_const_high16_4.d b/tools/vm-tests/src/dot/junit/opcodes/const_high16/d/T_const_high16_4.d
new file mode 100644
index 0000000..f8caefa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_high16/d/T_const_high16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_high16_4.java
+.class public dot.junit.opcodes.const_high16.d.T_const_high16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const/high16 v1, 0x12340000
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_string/Test_const_string.java b/tools/vm-tests/src/dot/junit/opcodes/const_string/Test_const_string.java
new file mode 100644
index 0000000..b5c778d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_string/Test_const_string.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_string;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_string.d.T_const_string_1;
+
+public class Test_const_string extends DxTestCase {
+    /**
+     * @title const-string v254, "android"
+     */
+    public void testN1() {
+        T_const_string_1 t = new T_const_string_1();
+        String s = t.run();
+        assertEquals(s.compareTo("android"), 0);
+        
+        String s2 = t.run();
+        assertTrue(s == s2);
+    }
+
+    /**
+     * @constraint A23
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string.d.T_const_string_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string.d.T_const_string_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A9 
+     * @title  constant pool index
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string.d.T_const_string_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_1.d b/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_1.d
new file mode 100644
index 0000000..11b3770
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_string_1.java
+.class public dot.junit.opcodes.const_string.d.T_const_string_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 255
+
+       const-string v254, "android"
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_1.java b/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_1.java
new file mode 100644
index 0000000..0bb9508
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_string.d;
+
+public class T_const_string_1 {
+
+    public String run() {
+        return "android";
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_3.d b/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_3.d
new file mode 100644
index 0000000..773bd80
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_string_3.java
+.class public dot.junit.opcodes.const_string.d.T_const_string_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-string v3, "abc"
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_4.d b/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_4.d
new file mode 100644
index 0000000..d8b8519
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_string_4.java
+.class public dot.junit.opcodes.const_string.d.T_const_string_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-string v1, "abc"
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_5.d b/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_5.d
new file mode 100644
index 0000000..1ece763
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_string_5.java
+.class public dot.junit.opcodes.const_string.d.T_const_string_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 255
+
+       const-string v254, "android"
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_5.dfh b/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_5.dfh
new file mode 100644
index 0000000..96a95b0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_string/d/T_const_string_5.dfh
@@ -0,0 +1,258 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_string/d/T_const_string_5.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_string/d/T_const_string_5.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 557d54bb
+    BB 54 7D 55 
+// parsed: offset 12, len 20: signature           : ffa5...7ccb
+    FF A5 C3 77 3F 0D DA AE 41 93 96 A8 0C B7 F6 FB 04 BB 7C CB 
+// parsed: offset 32, len 4: file_size           : 576
+    40 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 452 (0x0001c4)
+    C4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 164 (0x0000a4)
+    A4 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 188 (0x0000bc)
+    BC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 332
+    4C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 244 (0x0000f4)
+    F4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "L"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/const_string/d/T_const_string_5;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 356 (0x000164) "Ljava/lang/Object;"
+    64 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 376 (0x000178) "Ljava/lang/String;"
+    78 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "T_const_string_5.java"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 419 (0x0001a3) "V"
+    A3 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 422 (0x0001a6) "android"
+    A6 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 431 (0x0001af) "run"
+    AF 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/const_string/d/T_const_string_5;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 164, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 176, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 188, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 196, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 8 (0x000008) "run"
+    00 00 00 00 08 00 00 00 
+// parsed: offset 204, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 212, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/const_string/d/T_const_string_5;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_const_string_5.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 436 (0x0001b4)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 B4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.const_string.d.T_const_string_5.<init>"
+    // parsed: offset 244, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 246, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 248, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 250, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 252, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 256, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 260, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 266, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.const_string.d.T_const_string_5.run"
+    // parsed: offset 268, len 2: registers_size: 255
+        FF 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 284, len 4: |0000: const-string v254, "android" // string@0007
+//@mod            1A FE 07 00 
+            1A FE 07 01 
+        // parsed: offset 288, len 2: |0002: return-object v254
+            11 FE 
+    // tries: 
+    // handlers: 
+// parsed: offset 290, len 2: PADDING
+    00 00 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 303, len 53: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/const_string/d/T_const_string_5;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 2F 64 2F 54 5F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 5F 35 3B 00 
+// parsed: offset 356, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 376, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 396, len 23: TYPE_STRING_DATA_ITEM [5] "T_const_string_5.java"
+    15 54 5F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 5F 35 2E 6A 61 76 61 00 
+// parsed: offset 419, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 422, len 9: TYPE_STRING_DATA_ITEM [7] "android"
+    07 61 6E 64 72 6F 69 64 00 
+// parsed: offset 431, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/const_string/d/T_const_string_5;"
+    // parsed: offset 436, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 437, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 438, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 439, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 440, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 441, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 444, len 2: code_off: 244 (0x0000f4)
+                F4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 446, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 447, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 448, len 2: code_off: 268 (0x00010c)
+                8C 02 
+// parsed: offset 450, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 452, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 456, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 468, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 480, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 148 (0x000094)
+        02 00 00 00 04 00 00 00 94 00 00 00 
+    // parsed: offset 492, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 164 (0x0000a4)
+        03 00 00 00 02 00 00 00 A4 00 00 00 
+    // parsed: offset 504, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 188 (0x0000bc)
+        05 00 00 00 03 00 00 00 BC 00 00 00 
+    // parsed: offset 516, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 212 (0x0000d4)
+        06 00 00 00 01 00 00 00 D4 00 00 00 
+    // parsed: offset 528, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 244 (0x0000f4)
+        01 20 00 00 02 00 00 00 F4 00 00 00 
+    // parsed: offset 540, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 292 (0x000124)
+        02 20 00 00 09 00 00 00 24 01 00 00 
+    // parsed: offset 552, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 20 00 00 01 00 00 00 B4 01 00 00 
+    // parsed: offset 564, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 452 (0x0001c4)
+        00 10 00 00 01 00 00 00 C4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/Test_const_string_jumbo.java b/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/Test_const_string_jumbo.java
new file mode 100644
index 0000000..6234730
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/Test_const_string_jumbo.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_string_jumbo;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_1;
+
+public class Test_const_string_jumbo extends DxTestCase {
+    /**
+     * @title const-string/jumbo v254, "android jumbo"
+     */
+    public void testN1() {
+        T_const_string_jumbo_1 t = new T_const_string_jumbo_1();
+        String s = t.run();
+        assertEquals(0, s.compareTo("android jumbo"));
+        
+        String s2 = t.run();
+        assertTrue(s == s2);
+    }
+
+    /**
+     * @constraint A23
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A9 
+     * @title constant pool index
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.d b/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.d
new file mode 100644
index 0000000..893baf2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_string_jumbo_1.java
+.class public dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 255
+
+       const-string/jumbo v254, "android jumbo"
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.java b/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.java
new file mode 100644
index 0000000..35b9b28
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_string_jumbo.d;
+
+public class T_const_string_jumbo_1 {
+
+    public String run() {
+        return "android jumbo";
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_3.d b/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_3.d
new file mode 100644
index 0000000..c563141
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_string_jumbo_3.java
+.class public dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-string/jumbo v3, "abc jumbo"
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_4.d b/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_4.d
new file mode 100644
index 0000000..c4088d7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_string_jumbo_4.java
+.class public dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-string/jumbo v1, "abc jumbo"
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.d b/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.d
new file mode 100644
index 0000000..649d3ce
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_string_jumbo_5.java
+.class public dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 255
+
+       const-string v254, "android jumbo"
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.dfh b/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.dfh
new file mode 100644
index 0000000..6ffa6a4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.dfh
@@ -0,0 +1,258 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 38775db4
+    B4 5D 77 38 
+// parsed: offset 12, len 20: signature           : b102...2cf6
+    B1 02 9F DE 62 D1 2A B1 06 67 17 07 84 AB F4 FF 90 21 2C F6 
+// parsed: offset 32, len 4: file_size           : 600
+    58 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 476 (0x0001dc)
+    DC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 164 (0x0000a4)
+    A4 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 188 (0x0000bc)
+    BC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 356
+    64 01 00 00 
+// parsed: offset 108, len 4: data_off            : 244 (0x0000f4)
+    F4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "L"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 368 (0x000170) "Ljava/lang/Object;"
+    70 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 388 (0x000184) "Ljava/lang/String;"
+    84 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 408 (0x000198) "T_const_string_jumbo_5.java"
+    98 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 437 (0x0001b5) "V"
+    B5 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 440 (0x0001b8) "android jumbo"
+    B8 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 455 (0x0001c7) "run"
+    C7 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 164, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 176, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 188, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 196, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 8 (0x000008) "run"
+    00 00 00 00 08 00 00 00 
+// parsed: offset 204, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 212, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_const_string_jumbo_5.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 460 (0x0001cc)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 CC 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_5.<init>"
+    // parsed: offset 244, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 246, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 248, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 250, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 252, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 256, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 260, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 266, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_5.run"
+    // parsed: offset 268, len 2: registers_size: 255
+        FF 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 284, len 4: |0000: const-string v254, "android jumbo" // string@0007
+//@mod            1A FE 07 00 
+            1A FE 07 01 
+        // parsed: offset 288, len 2: |0002: return-object v254
+            11 FE 
+    // tries: 
+    // handlers: 
+// parsed: offset 290, len 2: PADDING
+    00 00 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 303, len 65: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5;"
+    3F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 5F 6A 75 6D 62 6F 2F 64 2F 54 5F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 5F 6A 75 6D 62 6F 5F 35 3B 00 
+// parsed: offset 368, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 388, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 408, len 29: TYPE_STRING_DATA_ITEM [5] "T_const_string_jumbo_5.java"
+    1B 54 5F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 5F 6A 75 6D 62 6F 5F 35 2E 6A 61 76 61 00 
+// parsed: offset 437, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 440, len 15: TYPE_STRING_DATA_ITEM [7] "android jumbo"
+    0D 61 6E 64 72 6F 69 64 20 6A 75 6D 62 6F 00 
+// parsed: offset 455, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5;"
+    // parsed: offset 460, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 461, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 462, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 463, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 464, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 465, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 468, len 2: code_off: 244 (0x0000f4)
+                F4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 470, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 471, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 472, len 2: code_off: 268 (0x00010c)
+                8C 02 
+// parsed: offset 474, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 476, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 480, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 492, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 504, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 148 (0x000094)
+        02 00 00 00 04 00 00 00 94 00 00 00 
+    // parsed: offset 516, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 164 (0x0000a4)
+        03 00 00 00 02 00 00 00 A4 00 00 00 
+    // parsed: offset 528, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 188 (0x0000bc)
+        05 00 00 00 03 00 00 00 BC 00 00 00 
+    // parsed: offset 540, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 212 (0x0000d4)
+        06 00 00 00 01 00 00 00 D4 00 00 00 
+    // parsed: offset 552, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 244 (0x0000f4)
+        01 20 00 00 02 00 00 00 F4 00 00 00 
+    // parsed: offset 564, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 292 (0x000124)
+        02 20 00 00 09 00 00 00 24 01 00 00 
+    // parsed: offset 576, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 460 (0x0001cc)
+        00 20 00 00 01 00 00 00 CC 01 00 00 
+    // parsed: offset 588, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 476 (0x0001dc)
+        00 10 00 00 01 00 00 00 DC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide/Test_const_wide.java b/tools/vm-tests/src/dot/junit/opcodes/const_wide/Test_const_wide.java
new file mode 100644
index 0000000..1ce3caa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide/Test_const_wide.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_wide.d.T_const_wide_1;
+import dot.junit.opcodes.const_wide.d.T_const_wide_2;
+
+public class Test_const_wide extends DxTestCase {
+    /**
+     * @title const-wide v1, 1.2345678901232324E51
+     */
+    public void testN1() {
+        T_const_wide_1 t = new T_const_wide_1();
+        double a = 1234567890123232323232232323232323232323232323456788d;
+        double b = 1d;
+        assertEquals(a + b, t.run(), 0d);
+    }
+    
+    /**
+     * @title const-wide v253, 20000000000
+     */
+    public void testN2() {
+        T_const_wide_2 t = new T_const_wide_2();
+         long a = 10000000000l;
+         long b = 10000000000l;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint A24
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide.d.T_const_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide.d.T_const_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.d b/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.d
new file mode 100644
index 0000000..6809530
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_1.java
+.class public dot.junit.opcodes.const_wide.d.T_const_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 3
+
+       const-wide v1, 1.2345678901232324E51
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.java b/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.java
new file mode 100644
index 0000000..b219a93
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide.d;
+
+public class T_const_wide_1 {
+    
+    public double run(){
+        return 1.54d;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.d b/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.d
new file mode 100644
index 0000000..b2ddede
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_2.java
+.class public dot.junit.opcodes.const_wide.d.T_const_wide_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 255
+
+       const-wide v253, 20000000000
+       return-wide v253
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.java b/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.java
new file mode 100644
index 0000000..0c9c438
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide.d;
+
+public class T_const_wide_2 {
+
+    public long run() {
+        return 20000000000l;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_3.d b/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_3.d
new file mode 100644
index 0000000..1fab9ef
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_3.java
+.class public dot.junit.opcodes.const_wide.d.T_const_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_4.d b/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_4.d
new file mode 100644
index 0000000..9493e94
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide/d/T_const_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_4.java
+.class public dot.junit.opcodes.const_wide.d.T_const_wide_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-wide v1, 3456
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide_16/Test_const_wide_16.java b/tools/vm-tests/src/dot/junit/opcodes/const_wide_16/Test_const_wide_16.java
new file mode 100644
index 0000000..941b00d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide_16/Test_const_wide_16.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_wide_16.d.T_const_wide_16_1;
+
+public class Test_const_wide_16 extends DxTestCase {
+
+    /**
+     * @title const-wide/16 v253, 20000
+     */
+    public void testN1() {
+        T_const_wide_16_1 t = new T_const_wide_16_1();
+         long a = 10000l;
+         long b = 10000l;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint A24
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_16.d.T_const_wide_16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_16.d.T_const_wide_16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.d b/tools/vm-tests/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.d
new file mode 100644
index 0000000..02c4e1c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_16_1.java
+.class public dot.junit.opcodes.const_wide_16.d.T_const_wide_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 255
+
+       const-wide/16 v253, 20000
+       return-wide v253
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.java b/tools/vm-tests/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.java
new file mode 100644
index 0000000..708bf83
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide_16.d;
+
+public class T_const_wide_16_1 {
+    
+    public long run(){
+        return 0l;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_3.d b/tools/vm-tests/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_3.d
new file mode 100644
index 0000000..eebf570
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_16_3.java
+.class public dot.junit.opcodes.const_wide_16.d.T_const_wide_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide/16 v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_4.d b/tools/vm-tests/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_4.d
new file mode 100644
index 0000000..c1d79b0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_16_4.java
+.class public dot.junit.opcodes.const_wide_16.d.T_const_wide_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-wide/16 v1, 3456
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide_32/Test_const_wide_32.java b/tools/vm-tests/src/dot/junit/opcodes/const_wide_32/Test_const_wide_32.java
new file mode 100644
index 0000000..0847b3b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide_32/Test_const_wide_32.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide_32;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_wide_32.d.T_const_wide_32_1;
+
+public class Test_const_wide_32 extends DxTestCase {
+    /**
+     * @title const-wide/32 v253, 20000000
+     */
+    public void testN1() {
+        T_const_wide_32_1 t = new T_const_wide_32_1();
+         long a = 10000000l;
+         long b = 10000000l;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_32.d.T_const_wide_32_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_32.d.T_const_wide_32_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.d b/tools/vm-tests/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.d
new file mode 100644
index 0000000..1962b17
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_32_1.java
+.class public dot.junit.opcodes.const_wide_32.d.T_const_wide_32_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 255
+
+       const-wide/32 v253, 20000000
+       return-wide v253
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.java b/tools/vm-tests/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.java
new file mode 100644
index 0000000..38be11f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide_32.d;
+
+public class T_const_wide_32_1 {
+    
+    public long run(){
+        return 0l;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_3.d b/tools/vm-tests/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_3.d
new file mode 100644
index 0000000..44821ef
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_32_3.java
+.class public dot.junit.opcodes.const_wide_32.d.T_const_wide_32_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide/32 v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_4.d b/tools/vm-tests/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_4.d
new file mode 100644
index 0000000..afae8dc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_32_4.java
+.class public dot.junit.opcodes.const_wide_32.d.T_const_wide_32_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-wide/32 v1, 3456
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide_high16/Test_const_wide_high16.java b/tools/vm-tests/src/dot/junit/opcodes/const_wide_high16/Test_const_wide_high16.java
new file mode 100644
index 0000000..2dd3e32
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide_high16/Test_const_wide_high16.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide_high16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_1;
+
+public class Test_const_wide_high16 extends DxTestCase {
+    /**
+     * @title const-wide/high16 v252, 0x1234000000000000
+     */
+    public void testN2() {
+        T_const_wide_high16_1 t = new T_const_wide_high16_1();
+        assertEquals(0x1234000000000000l, t.run());
+    }
+
+    /**
+     * @constraint A24
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.d b/tools/vm-tests/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.d
new file mode 100644
index 0000000..c051462
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_high16_1.java
+.class public dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 255
+
+       const-wide/high16 v252, 0x1234000000000000
+       return-wide v252
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.java b/tools/vm-tests/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.java
new file mode 100644
index 0000000..8a06f17
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.const_wide_high16.d;
+
+public class T_const_wide_high16_1 {
+
+    public long run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_3.d b/tools/vm-tests/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_3.d
new file mode 100644
index 0000000..24a577c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_high16_3.java
+.class public dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide/high16 v3, 0x1234000000000000
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_4.d b/tools/vm-tests/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_4.d
new file mode 100644
index 0000000..614e5a5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_const_wide_high16_4.java
+.class public dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-wide/high16 v1, 0x1234000000000000
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double/Test_div_double.java b/tools/vm-tests/src/dot/junit/opcodes/div_double/Test_div_double.java
new file mode 100644
index 0000000..5ce7889
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double/Test_div_double.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_double.d.T_div_double_1;
+import dot.junit.opcodes.div_double.d.T_div_double_3;
+
+public class Test_div_double extends DxTestCase {
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(0.8598726114649682d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(0d, t.run(0, 3.14d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(-1.162962962962963d, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(-1.162962962962963d, t.run(-3.14d, 2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this division of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_div_double_3 t = new T_div_double_3();
+        try {
+            t.run(3.14d, 12345l);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(0d, t.run(-2.7d, Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(-0d, t.run(0, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(-2.7d, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(1, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.MAX_VALUE, -1E-9f));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double.d.T_div_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double.d.T_div_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double / reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double.d.T_div_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int / int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double.d.T_div_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_1.d b/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_1.d
new file mode 100644
index 0000000..359ec34
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_1.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_1.java b/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_1.java
new file mode 100644
index 0000000..734f130
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_double.d;
+
+public class T_div_double_1 {
+
+    public double run(double a, double b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_2.d b/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_2.d
new file mode 100644
index 0000000..e09176a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_2.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       const v10, 3.1415
+       div-double v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_3.d b/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_3.d
new file mode 100644
index 0000000..02d7929
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_3.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DJ)D
+.limit regs 14
+
+       div-double v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_3.java b/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_3.java
new file mode 100644
index 0000000..0cad5bb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_double.d;
+
+public class T_div_double_3 {
+
+    public double run(double a, long b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_4.d b/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_4.d
new file mode 100644
index 0000000..411b01a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_4.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double v0, v9, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_5.d b/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_5.d
new file mode 100644
index 0000000..2675538
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_5.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double v0, v10, v14
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_6.d b/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_6.d
new file mode 100644
index 0000000..9ef0732
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double/d/T_div_double_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_6.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 14
+       move v0, v12
+       move v1, v12
+       move v2, v13
+       move v3, v13
+       div-double v0, v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/Test_div_double_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/Test_div_double_2addr.java
new file mode 100644
index 0000000..42332e5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/Test_div_double_2addr.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_double_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_1;
+import dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_3;
+
+public class Test_div_double_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(0.8598726114649682d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(0d, t.run(0, 3.14d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(-1.162962962962963d, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(-1.162962962962963d, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this division of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_div_double_2addr_3 t = new T_div_double_2addr_3();
+        try {
+            t.run(3.14d, 12345l);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(0d, t.run(-2.7d, Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(-0d, t.run(0, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(-2.7d, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(1, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.MAX_VALUE, -1E-9f));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double / reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int / int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.d
new file mode 100644
index 0000000..541526e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_2addr_1.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.java
new file mode 100644
index 0000000..e853239
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_double_2addr.d;
+
+public class T_div_double_2addr_1 {
+
+    public double run(double a, double b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_2.d
new file mode 100644
index 0000000..5921ceb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_2addr_2.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       const v0, 3.1415
+       div-double/2addr v0, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.d
new file mode 100644
index 0000000..840ea8b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_2addr_3.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DJ)D
+.limit regs 14
+
+       div-double/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.java b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.java
new file mode 100644
index 0000000..96d1e60
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_double_2addr.d;
+
+public class T_div_double_2addr_3 {
+
+    public double run(double a, long b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_4.d
new file mode 100644
index 0000000..5cee125
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_2addr_4.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double/2addr v9, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_5.d
new file mode 100644
index 0000000..2ef12c6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_2addr_5.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double/2addr v10, v14
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_6.d
new file mode 100644
index 0000000..05fc08e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_double_2addr_6.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 14
+       move v0, v12
+       move v1, v12
+       move v2, v13
+       move v3, v13
+       div-double/2addr v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float/Test_div_float.java b/tools/vm-tests/src/dot/junit/opcodes/div_float/Test_div_float.java
new file mode 100644
index 0000000..8671505
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float/Test_div_float.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_float.d.T_div_float_1;
+import dot.junit.opcodes.div_float.d.T_div_float_5;
+
+public class Test_div_float extends DxTestCase {
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(0.8598726f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(0f, t.run(0, 3.14f));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(-1.162963f, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_div_float_5 t = new T_div_float_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(0f, t.run(-2.7f, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(-0f, t.run(0, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(-2.7f, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(1, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.MAX_VALUE, -1E-9f));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float.d.T_div_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long / float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float.d.T_div_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float.d.T_div_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float.d.T_div_float_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_1.d b/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_1.d
new file mode 100644
index 0000000..5d59692
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_1.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       div-float v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_1.java b/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_1.java
new file mode 100644
index 0000000..b75e42b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_float.d;
+
+public class T_div_float_1 {
+
+    public float run(float a, float b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_2.d b/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_2.d
new file mode 100644
index 0000000..4a82c48
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_2.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       const-wide v0, 3.14
+       div-float v0, v0, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_3.d b/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_3.d
new file mode 100644
index 0000000..9a8b28b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_3.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       const-wide v0, 1234
+       div-float v0, v7, v0
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_4.d b/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_4.d
new file mode 100644
index 0000000..ed7b149
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_4.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       div-float v0, v5, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_5.d b/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_5.d
new file mode 100644
index 0000000..4602631
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_5.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 8
+       div-float v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_5.java b/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_5.java
new file mode 100644
index 0000000..68d16fa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_float.d;
+
+public class T_div_float_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_6.d b/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_6.d
new file mode 100644
index 0000000..4777687
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float/d/T_div_float_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_6.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       div-float v0, v6, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/Test_div_float_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/Test_div_float_2addr.java
new file mode 100644
index 0000000..3fdeb70
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/Test_div_float_2addr.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_float_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_1;
+import dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_5;
+
+public class Test_div_float_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(0.8598726f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(0f, t.run(0, 3.14f));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(-1.162963f, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_div_float_2addr_5 t = new T_div_float_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(0f, t.run(-2.7f, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(-0f, t.run(0, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(-2.7f, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(1, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.MAX_VALUE, -1E-9f));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.d
new file mode 100644
index 0000000..93362fe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_2addr_1.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       div-float/2addr v6, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.java
new file mode 100644
index 0000000..bfa9c61
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_float_2addr.d;
+
+public class T_div_float_2addr_1 {
+
+    public float run(float a, float b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_2.d
new file mode 100644
index 0000000..90ea869
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_2addr_2.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       const-wide v0, 3.14
+       div-float/2addr v0, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_3.d
new file mode 100644
index 0000000..f9bddfd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_2addr_3.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       const-wide v0, 1234
+       div-float/2addr v7, v0
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_4.d
new file mode 100644
index 0000000..377cda1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_2addr_4.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       div-float/2addr v5, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.d
new file mode 100644
index 0000000..2f5a998
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_2addr_5.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 8
+       div-float/2addr v6, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.java b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.java
new file mode 100644
index 0000000..fe4a948
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_float_2addr.d;
+
+public class T_div_float_2addr_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_6.d
new file mode 100644
index 0000000..ed354e3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_float_2addr_6.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       div-float/2addr v6, v8
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int/Test_div_int.java b/tools/vm-tests/src/dot/junit/opcodes/div_int/Test_div_int.java
new file mode 100644
index 0000000..14614a6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int/Test_div_int.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_int.d.T_div_int_1;
+import dot.junit.opcodes.div_int.d.T_div_int_5;
+
+public class Test_div_int extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(2, t.run(8, 4));
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(268435455, t.run(1073741823, 4));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(0, t.run(0, 4));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(-3, t.run(-10, 3));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(-357913941, t.run(1073741824, -3));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(5965, t.run(-17895697, -3000));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_div_int_5 t = new T_div_int_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }  
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_div_int_1 t = new T_div_int_1();
+        // result is MIN_VALUE because overflow occurs in this case
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_div_int_1 t = new T_div_int_1();
+        //fail("why this test causes floating point exception?");
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(0, t.run(1, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(0, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_int_1 t = new T_div_int_1();
+        try {
+            t.run(1, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int.d.T_div_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int.d.T_div_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int.d.T_div_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int.d.T_div_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_1.d b/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_1.d
new file mode 100644
index 0000000..aaaf0a3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_1.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_1.java b/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_1.java
new file mode 100644
index 0000000..b43738d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int.d;
+
+public class T_div_int_1 {
+
+    public int run(int a, int b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_2.d b/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_2.d
new file mode 100644
index 0000000..8fb324c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_2.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v1, 3.1415
+       div-int v0, v3, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_3.d b/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_3.d
new file mode 100644
index 0000000..446cc2c8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_3.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v1, 31415
+       div-int v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_4.d b/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_4.d
new file mode 100644
index 0000000..c476934
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_4.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_5.d b/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_5.d
new file mode 100644
index 0000000..ad4c79c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_5.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+
+       div-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_5.java b/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_5.java
new file mode 100644
index 0000000..21ba362
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int.d;
+
+public class T_div_int_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_6.d b/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_6.d
new file mode 100644
index 0000000..6da816d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int/d/T_div_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_6.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/Test_div_int_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/Test_div_int_2addr.java
new file mode 100644
index 0000000..276c840
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/Test_div_int_2addr.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_1;
+import dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_5;
+
+public class Test_div_int_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(2, t.run(8, 4));
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(268435455, t.run(1073741823, 4));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(0, t.run(0, 4));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(-3, t.run(-10, 3));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(-357913941, t.run(1073741824, -3));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(5965, t.run(-17895697, -3000));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_div_int_2addr_5 t = new T_div_int_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = Integer.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        // result is MIN_VALUE because overflow occurs in this case
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(0, t.run(1, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(0, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        try {
+            t.run(1, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.d
new file mode 100644
index 0000000..00b88e4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_2addr_1.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.java
new file mode 100644
index 0000000..67464ea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_2addr.d;
+
+public class T_div_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_2.d
new file mode 100644
index 0000000..10e15fe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_2addr_2.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       div-int/2addr v3, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_3.d
new file mode 100644
index 0000000..483865e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_2addr_3.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 323231415
+       div-int/2addr v3, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_4.d
new file mode 100644
index 0000000..fbda213
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_2addr_4.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int/2addr v1, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.d
new file mode 100644
index 0000000..2ee42a9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_2addr_5.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+
+       div-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.java
new file mode 100644
index 0000000..f206f22
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_2addr.d;
+
+public class T_div_int_2addr_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_6.d
new file mode 100644
index 0000000..7742df6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_2addr_6.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/Test_div_int_lit16.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/Test_div_int_lit16.java
new file mode 100644
index 0000000..02cc14a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/Test_div_int_lit16.java
@@ -0,0 +1,214 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_1;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_10;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_11;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_12;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_13;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_17;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_2;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_3;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_4;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_5;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_6;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_7;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_8;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_9;
+
+
+public class Test_div_int_lit16 extends DxTestCase {
+    /**
+     * @title Arguments = 8 / 4
+     */
+    public void testN1() {
+        T_div_int_lit16_1 t = new T_div_int_lit16_1();
+        assertEquals(2, t.run());
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_int_lit16_2 t = new T_div_int_lit16_2();
+        assertEquals(268435455, t.run());
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_int_lit16_3 t = new T_div_int_lit16_3();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_int_lit16_4 t = new T_div_int_lit16_4();
+        assertEquals(-3, t.run());
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_int_lit16_5 t = new T_div_int_lit16_5();
+        assertEquals(-357913941, t.run());
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_int_lit16_6 t = new T_div_int_lit16_6();
+        assertEquals(5965, t.run());
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_div_int_lit16_17 t = new T_div_int_lit16_17();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / -1
+     */
+    public void testB1() {
+        T_div_int_lit16_7 t = new T_div_int_lit16_7();
+        // result is MIN_VALUE because overflow occurs in this case
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / 1
+     */
+    public void testB2() {
+        T_div_int_lit16_8 t = new T_div_int_lit16_8();
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE / 1
+     */
+    public void testB3() {
+        T_div_int_lit16_9 t = new T_div_int_lit16_9();
+        assertEquals(Integer.MAX_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / Short.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_int_lit16_10 t = new T_div_int_lit16_10();
+        assertEquals(-65538, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 / Short.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_int_lit16_11 t = new T_div_int_lit16_11();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 / Short.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_int_lit16_12 t = new T_div_int_lit16_12();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_int_lit16_13 t = new T_div_int_lit16_13();
+        try {
+            t.run();
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.d
new file mode 100644
index 0000000..6b57fb7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_1.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 8
+       div-int/lit16 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.java
new file mode 100644
index 0000000..3a1df06
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_1 {
+
+    public int run() {
+        return 8 / 4;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.d
new file mode 100644
index 0000000..d665855
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_10.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit16 v0, v2, 32767
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.java
new file mode 100644
index 0000000..46925a9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_10 {
+
+    public int run() {
+        return Integer.MIN_VALUE / Short.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.d
new file mode 100644
index 0000000..9f6cd95
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_11.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit16 v0, v2, 32767
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.java
new file mode 100644
index 0000000..b0b3e69
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_11 {
+
+    public int run() {
+        return 1 / Short.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.d
new file mode 100644
index 0000000..e99957a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_12.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit16 v0, v2, -32768
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.java
new file mode 100644
index 0000000..be1428e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_12 {
+
+    public int run() {
+        return 1 / Short.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.d
new file mode 100644
index 0000000..4115385
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_13.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit16 v0, v2, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.java
new file mode 100644
index 0000000..bbbab37
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_13 {
+
+    public int run() {
+        return 1 / 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_14.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_14.d
new file mode 100644
index 0000000..3731d36
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_14.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_14.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide v1, 31415
+       div-int/lit16 v1, v1, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_15.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_15.d
new file mode 100644
index 0000000..27fba6e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_15.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_15.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide v1, 3.1415
+       div-int/lit16 v1, v1, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_16.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_16.d
new file mode 100644
index 0000000..6caadaf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_16.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       div-int/lit16 v1, v3, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.d
new file mode 100644
index 0000000..b60a81d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_17.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+
+       div-int/lit16 v0, v3, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.java
new file mode 100644
index 0000000..71cee9a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_17 {
+
+    public int run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_18.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_18.d
new file mode 100644
index 0000000..6215666
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_18.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       div-int/lit16 v0, v4, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.d
new file mode 100644
index 0000000..dd4e3f6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_2.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1073741823
+       div-int/lit16 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.java
new file mode 100644
index 0000000..10a63dd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_2 {
+
+    public int run() {
+        return 1073741823 / 4;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.d
new file mode 100644
index 0000000..b3b4713
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_3.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 0
+       div-int/lit16 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.java
new file mode 100644
index 0000000..ad3d6d4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_3 {
+
+    public int run() {
+        return 0 / 4;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.d
new file mode 100644
index 0000000..e131fc4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_4.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -10
+       div-int/lit16 v0, v2, 3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.java
new file mode 100644
index 0000000..cbf7f0b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_4 {
+
+    public int run() {
+        return -10 / 3;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.d
new file mode 100644
index 0000000..b61badf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_5.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1073741824
+       div-int/lit16 v0, v2, -3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.java
new file mode 100644
index 0000000..3a1d497
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_5 {
+
+    public int run() {
+        return 1073741824 / -3;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.d
new file mode 100644
index 0000000..c97edff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_6.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -17895697
+       div-int/lit16 v0, v2, -3000
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.java
new file mode 100644
index 0000000..7875953
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_6 {
+
+    public int run() {
+        return -17895697 / -3000;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.d
new file mode 100644
index 0000000..66cc917
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_7.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit16 v0, v2, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.java
new file mode 100644
index 0000000..3fa111c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_7 {
+
+    public int run() {
+        return Integer.MIN_VALUE / -1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.d
new file mode 100644
index 0000000..6f2fd00
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_8.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit16 v0, v2, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.java
new file mode 100644
index 0000000..3389e8c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_8 {
+
+    public int run() {
+        return Integer.MIN_VALUE / 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.d
new file mode 100644
index 0000000..68f757e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit16_9.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 2147483647
+       div-int/lit16 v0, v2, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.java
new file mode 100644
index 0000000..bf34419
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_9 {
+
+    public int run() {
+        return Integer.MAX_VALUE / 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/Test_div_int_lit8.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/Test_div_int_lit8.java
new file mode 100644
index 0000000..e2c4057
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/Test_div_int_lit8.java
@@ -0,0 +1,213 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_17;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_1;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_10;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_11;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_12;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_13;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_2;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_3;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_4;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_5;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_6;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_7;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_8;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_9;
+
+public class Test_div_int_lit8 extends DxTestCase {
+     /**
+     * @title Arguments = 8 / 4
+     */
+    public void testN1() {
+        T_div_int_lit8_1 t = new T_div_int_lit8_1();
+        assertEquals(2, t.run());
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_int_lit8_2 t = new T_div_int_lit8_2();
+        assertEquals(268435455, t.run());
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_int_lit8_3 t = new T_div_int_lit8_3();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_int_lit8_4 t = new T_div_int_lit8_4();
+        assertEquals(-3, t.run());
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_int_lit8_5 t = new T_div_int_lit8_5();
+        assertEquals(-357913941, t.run());
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_int_lit8_6 t = new T_div_int_lit8_6();
+        assertEquals(596523, t.run());
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_div_int_lit8_17 t = new T_div_int_lit8_17();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / -1
+     */
+    public void testB1() {
+        T_div_int_lit8_7 t = new T_div_int_lit8_7();
+        // result is MIN_VALUE because overflow occurs in this case
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / 1
+     */
+    public void testB2() {
+        T_div_int_lit8_8 t = new T_div_int_lit8_8();
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE / 1
+     */
+    public void testB3() {
+        T_div_int_lit8_9 t = new T_div_int_lit8_9();
+        assertEquals(Integer.MAX_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / Byte.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_int_lit8_10 t = new T_div_int_lit8_10();
+        assertEquals(-16909320, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 / Byte.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_int_lit8_11 t = new T_div_int_lit8_11();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 / Byte.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_int_lit8_12 t = new T_div_int_lit8_12();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_int_lit8_13 t = new T_div_int_lit8_13();
+        try {
+            t.run();
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.d
new file mode 100644
index 0000000..4c6a389
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_1.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 8
+       div-int/lit8 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.java
new file mode 100644
index 0000000..04177b6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_1 {
+
+    public int run() {
+        return 8 / 4;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.d
new file mode 100644
index 0000000..25c0e77
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_10.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit8 v0, v2, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.java
new file mode 100644
index 0000000..8c71346
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_10 {
+
+    public int run() {
+        return Integer.MIN_VALUE / Byte.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.d
new file mode 100644
index 0000000..9522183
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_11.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit8 v0, v2, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.java
new file mode 100644
index 0000000..9e2d788
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_11 {
+
+    public int run() {
+        return 1 / Byte.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.d
new file mode 100644
index 0000000..cd72c52
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_12.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit8 v0, v2, -128
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.java
new file mode 100644
index 0000000..9468233
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_12 {
+
+    public int run() {
+        return 1 / Byte.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.d
new file mode 100644
index 0000000..1465ebc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_13.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit8 v0, v2, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.java
new file mode 100644
index 0000000..2e8cbcb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_13 {
+
+    public int run() {
+        return 1 / 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_14.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_14.d
new file mode 100644
index 0000000..492ccbc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_14.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_14.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide v1, 31415
+       div-int/lit8 v1, v1, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_15.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_15.d
new file mode 100644
index 0000000..88d70a1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_15.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_15.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide v1, 3.1415
+       div-int/lit8 v1, v1, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_16.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_16.d
new file mode 100644
index 0000000..f93542a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_16.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       div-int/lit8 v1, v3, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.d
new file mode 100644
index 0000000..b4169d5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_17.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+
+       div-int/lit8 v0, v3, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.java
new file mode 100644
index 0000000..329612d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_17 {
+
+    public int run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_18.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_18.d
new file mode 100644
index 0000000..10859c0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_18.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       div-int/lit8 v0, v4, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.d
new file mode 100644
index 0000000..96145c1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_2.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1073741823
+       div-int/lit8 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.java
new file mode 100644
index 0000000..496ac7d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_2 {
+
+    public int run() {
+        return 1073741823 / 4;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.d
new file mode 100644
index 0000000..a93a8b0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_3.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 0
+       div-int/lit8 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.java
new file mode 100644
index 0000000..29829ca
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_3 {
+
+    public int run() {
+        return 0 / 4;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.d
new file mode 100644
index 0000000..458cfb1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_4.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -10
+       div-int/lit8 v0, v2, 3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.java
new file mode 100644
index 0000000..f92aed1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_4 {
+
+    public int run() {
+        return -10 / 3;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.d
new file mode 100644
index 0000000..3901a7c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_5.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1073741824
+       div-int/lit8 v0, v2, -3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.java
new file mode 100644
index 0000000..bb60183
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_5 {
+
+    public int run() {
+        return 1073741824 / -3;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.d
new file mode 100644
index 0000000..35f9c63
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_6.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -17895697
+       div-int/lit8 v0, v2, -30
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.java
new file mode 100644
index 0000000..d071b33
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_6 {
+
+    public int run() {
+        return -17895697 / -30;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.d
new file mode 100644
index 0000000..0d4f492
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_7.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit8 v0, v2, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.java
new file mode 100644
index 0000000..7f7180a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_7 {
+
+    public int run() {
+        return Integer.MIN_VALUE / -1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.d
new file mode 100644
index 0000000..ee80b01
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_8.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit8 v0, v2, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.java
new file mode 100644
index 0000000..5563dd8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_8 {
+
+    public int run() {
+        return Integer.MIN_VALUE / 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.d b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.d
new file mode 100644
index 0000000..466cf0a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_int_lit8_9.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 2147483647
+       div-int/lit8 v0, v2, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.java b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.java
new file mode 100644
index 0000000..5c62b29
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_9 {
+
+    public int run() {
+        return Integer.MAX_VALUE / 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long/Test_div_long.java b/tools/vm-tests/src/dot/junit/opcodes/div_long/Test_div_long.java
new file mode 100644
index 0000000..b0e1d31
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long/Test_div_long.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_long.d.T_div_long_1;
+import dot.junit.opcodes.div_long.d.T_div_long_2;
+
+
+public class Test_div_long extends DxTestCase {
+    /**
+     * @title Arguments = 100000000000l, 40000000000l
+     */
+    public void testN1() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(2l, t.run(100000000000l, 40000000000l));
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(8l, t.run(98765432123456l, 12345678912345l));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(0l, t.run(0l, 98765432123456l));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(-8, t.run(-98765432123456l, 12345678912345l));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(-8, t.run(98765432123456l, -12345678912345l));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(80l, t.run(-98765432123456l, -1234567891234l));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this division of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_div_long_2 t = new T_div_long_2();
+        try {
+            t.run(1234l, 3.1415d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(9223372036854775807L, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(-1, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Long.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(0, t.run(1, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(0, t.run(1, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_long_1 t = new T_div_long_1();
+        try {
+            t.run(12345678912345l, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long.d.T_div_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int / long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long.d.T_div_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float / long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long.d.T_div_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long.d.T_div_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_1.d b/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_1.d
new file mode 100644
index 0000000..fdf2445
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_1.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_1.java b/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_1.java
new file mode 100644
index 0000000..783d7ce
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_long.d;
+
+
+public class T_div_long_1 {
+
+    public long run(long a, long b) {
+        return a/b;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_2.d b/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_2.d
new file mode 100644
index 0000000..e72e2a8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_2.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       div-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_2.java b/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_2.java
new file mode 100644
index 0000000..e6b3456
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_long.d;
+
+
+public class T_div_long_2 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_3.d b/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_3.d
new file mode 100644
index 0000000..6a43649
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_3.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v10, 1234
+       div-long v0, v10, v12
+       return-wide v12
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_4.d b/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_4.d
new file mode 100644
index 0000000..409b45a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_4.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v10, 3.14
+       div-long v0, v10, v12
+       return-wide v12
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_5.d b/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_5.d
new file mode 100644
index 0000000..648b110
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_5.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long v0, v9, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_6.d b/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_6.d
new file mode 100644
index 0000000..b2a6d0f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long/d/T_div_long_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_6.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long v0, v10, v14
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/Test_div_long_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/Test_div_long_2addr.java
new file mode 100644
index 0000000..5ba3dad
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/Test_div_long_2addr.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_1;
+import dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_2;
+
+public class Test_div_long_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 100000000000l, 40000000000l
+     */
+    public void testN1() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(2l, t.run(100000000000l, 40000000000l));
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(8l, t.run(98765432123456l, 12345678912345l));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(0l, t.run(0l, 98765432123456l));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(-8, t.run(-98765432123456l, 12345678912345l));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(-8, t.run(98765432123456l, -12345678912345l));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(80l, t.run(-98765432123456l, -1234567891234l));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this division of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_div_long_2addr_2 t = new T_div_long_2addr_2();
+        try {
+            t.run(1234l, 3.1415d);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(9223372036854775807L, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(-1, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Long.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(0, t.run(1, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(0, t.run(1, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        try {
+            t.run(12345678912345l, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int / long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float / long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.d
new file mode 100644
index 0000000..0ae9ff3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_2addr_1.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.java
new file mode 100644
index 0000000..031cac2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_long_2addr.d;
+
+
+public class T_div_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a/b;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.d
new file mode 100644
index 0000000..f01fcf4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_2addr_2.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       div-long/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.java b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.java
new file mode 100644
index 0000000..674284e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.div_long_2addr.d;
+
+
+public class T_div_long_2addr_2 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_3.d
new file mode 100644
index 0000000..09e48c3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_2addr_3.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v0, 1234
+       div-long/2addr v0, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_4.d
new file mode 100644
index 0000000..6d91919
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_2addr_4.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v0, 3.14
+       div-long/2addr v0, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_5.d
new file mode 100644
index 0000000..ed7fdfb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_2addr_5.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long/2addr v9, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_6.d
new file mode 100644
index 0000000..83e2b30
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_div_long_2addr_6.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long/2addr v10, v14
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_float/Test_double_to_float.java b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/Test_double_to_float.java
new file mode 100644
index 0000000..780ffef
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/Test_double_to_float.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.double_to_float.d.T_double_to_float_1;
+import dot.junit.opcodes.double_to_float.d.T_double_to_float_3;
+
+public class Test_double_to_float extends DxTestCase {
+     /**
+     * @title Argument = 2.71
+     */
+    public void testN1() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(2.71f, t.run(2.71d));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(1f, t.run(1d));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(-1f, t.run(-1d));
+    }
+    
+    /**
+     * @title Type of argument - long. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of long to float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_double_to_float_3 t = new T_double_to_float_3();
+        try {
+            t.run(12345l);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Double.MIN_VALUE
+     */
+    public void testB2() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(0f, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Argument = -0
+     */
+    public void testB3() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(-0f, t.run(-0d));
+    }
+
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertTrue(Float.isNaN(t.run(Double.NaN)));
+    }
+
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertTrue(Float.isInfinite(t.run(Double.POSITIVE_INFINITY)));
+    }
+
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertTrue(Float.isInfinite(t.run(Double.NEGATIVE_INFINITY)));
+    }
+
+
+    /**
+     * @title Argument = -Double.MIN_VALUE
+     */
+    public void testB7() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(-0f, t.run(-4.9E-324d));
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_float.d.T_double_to_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_float.d.T_double_to_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_float.d.T_double_to_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_float.d.T_double_to_float_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.d
new file mode 100644
index 0000000..24b332f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_float_1.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 8
+
+       double-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.java b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.java
new file mode 100644
index 0000000..c2cf023
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_float.d;
+
+public class T_double_to_float_1 {
+
+    public float run(double a) {
+        return (float)a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_2.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_2.d
new file mode 100644
index 0000000..402cfac
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_float_2.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 8
+
+       const v6, 3.14
+       double-to-float v0, v6
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.d
new file mode 100644
index 0000000..1cbf6f9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_float_3.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 8
+
+       double-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.java b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.java
new file mode 100644
index 0000000..f4be401
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_float.d;
+
+public class T_double_to_float_3 {
+
+    public float run(long a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_4.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_4.d
new file mode 100644
index 0000000..135e7ff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_4.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_float_4.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 8
+
+       double-to-float v0, v5
+       
+       const v3, 3.14
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_5.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_5.d
new file mode 100644
index 0000000..80adf03
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_float_5.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 8
+
+       double-to-float v0, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_6.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_6.d
new file mode 100644
index 0000000..9c65fb8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_float_6.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)V
+.limit regs 8
+
+       move v0, v7
+       move v1, v7    
+       double-to-float v0, v0
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_int/Test_double_to_int.java b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/Test_double_to_int.java
new file mode 100644
index 0000000..86a3cdc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/Test_double_to_int.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.double_to_int.d.T_double_to_int_1;
+import dot.junit.opcodes.double_to_int.d.T_double_to_int_3;
+
+
+public class Test_double_to_int extends DxTestCase {
+    /**
+     * @title Argument = 2.9999999d
+     */
+    public void testN1() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(2, t.run(2.9999999d));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(1, t.run(1d));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(-1, t.run(-1d));
+    }
+
+    /**
+     * @title Type of argument - long. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of long to int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_double_to_int_3 t = new T_double_to_int_3();
+        try {
+            t.run(12345l);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Argument = -0
+     */
+    public void testB1() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(0, t.run(-0d));
+    }
+
+    /**
+     * @title Argument = Double.MAX_VALUE
+     */
+    public void testB2() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Double.MIN_VALUE
+     */
+    public void testB3() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(0, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(0, t.run(Double.NaN));
+    }
+
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Double.NEGATIVE_INFINITY));
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_int.d.T_double_to_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_int.d.T_double_to_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_int.d.T_double_to_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_int.d.T_double_to_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.d
new file mode 100644
index 0000000..82f2467
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_int_1.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       double-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.java b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.java
new file mode 100644
index 0000000..208a2bc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_int.d;
+
+public class T_double_to_int_1 {
+
+    public int run(double a) {
+        return (int)a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_2.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_2.d
new file mode 100644
index 0000000..7e3a98b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_int_2.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       const v6, 3.14
+       double-to-int v0, v6
+       const v1, 123
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.d
new file mode 100644
index 0000000..07f855a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_int_3.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       double-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.java b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.java
new file mode 100644
index 0000000..03e205b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_int.d;
+
+public class T_double_to_int_3 {
+
+    public int run(long a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_4.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_4.d
new file mode 100644
index 0000000..1f62ffb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_4.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_int_4.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       double-to-int v0, v5
+       
+       const v3, 123
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_5.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_5.d
new file mode 100644
index 0000000..e4477d8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_int_5.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       double-to-int v0, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_6.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_6.d
new file mode 100644
index 0000000..ecbe761
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_int_6.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)V
+.limit regs 8
+
+       move v0, v7
+       move v1, v7    
+       double-to-int v0, v0
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_long/Test_double_to_long.java b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/Test_double_to_long.java
new file mode 100644
index 0000000..089558e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/Test_double_to_long.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.double_to_long.d.T_double_to_long_1;
+import dot.junit.opcodes.double_to_long.d.T_double_to_long_3;
+
+public class Test_double_to_long extends DxTestCase {
+    /**
+     * @title Argument = 2.9999999
+     */
+    public void testN1() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(2l, t.run(2.9999999d));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(1l, t.run(1d));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(-1l, t.run(-1d));
+    }
+    
+    /**
+     * @title Type of argument - long. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of long to long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_double_to_long_3 t = new T_double_to_long_3();
+        try {
+            t.run(12345l);
+        } catch (Throwable e) {
+        }
+    }    
+
+    /**
+     * @title Argument = Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(Long.MAX_VALUE, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Double.MIN_VALUE
+     */
+    public void testB2() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(0, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Argument = -0
+     */
+    public void testB3() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(0l, t.run(-0));
+    }
+
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(0l, t.run(Double.NaN));
+    }
+
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(Long.MAX_VALUE, t.run(Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(Long.MIN_VALUE, t.run(Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - float
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_long.d.T_double_to_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_long.d.T_double_to_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_long.d.T_double_to_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_long.d.T_double_to_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.d
new file mode 100644
index 0000000..677d352
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_long_1.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 8
+
+       double-to-long v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.java b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.java
new file mode 100644
index 0000000..11469d2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_long.d;
+
+public class T_double_to_long_1 {
+
+    public long run(double a) {
+        return (long)a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_2.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_2.d
new file mode 100644
index 0000000..54740b6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_long_2.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 8
+
+       const v6, 3.14
+       double-to-long v0, v6
+       const-wide v2, 123
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.d
new file mode 100644
index 0000000..1f2293d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_long_3.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 8
+
+       const-wide v6, 32380293
+       double-to-long v0, v6
+       const-wide v2, 123
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.java b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.java
new file mode 100644
index 0000000..043a2ad
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.double_to_long.d;
+
+public class T_double_to_long_3 {
+
+    public long run(long a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_4.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_4.d
new file mode 100644
index 0000000..df716b0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_4.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_long_4.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 8
+
+       double-to-long v0, v5
+       
+       const-wide v2, 123
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_5.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_5.d
new file mode 100644
index 0000000..8b11c73
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_long_5.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 8
+
+       double-to-long v0, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_6.d b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_6.d
new file mode 100644
index 0000000..6aeb8fd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_double_to_long_6.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)V
+.limit regs 8
+
+       move v0, v7
+       move v1, v7    
+       double-to-long v0, v0
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/Test_fill_array_data.java b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/Test_fill_array_data.java
new file mode 100644
index 0000000..5bac3cd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/Test_fill_array_data.java
@@ -0,0 +1,216 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.fill_array_data;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.fill_array_data.d.T_fill_array_data_1;
+import dot.junit.opcodes.fill_array_data.d.T_fill_array_data_2;
+
+public class Test_fill_array_data extends DxTestCase {
+    /**
+     * @title array of ints
+     */
+    public void testN1() {
+        int arr[] = new int[5];
+        T_fill_array_data_1 t = new T_fill_array_data_1();
+        t.run(arr);
+        for(int i = 0; i < 5; i++)
+            assertEquals(i + 1, arr[i]);
+     }
+    
+    /**
+     * @title array of doubles
+     */
+    public void testN2() {
+        double arr[] = new double[5];
+        T_fill_array_data_2 t = new T_fill_array_data_2();
+        t.run(arr);
+        for(int i = 0; i < 5; i++)
+            assertEquals((double)(i + 1), arr[i]);
+     }
+
+    /**
+     * @title If there are less elements in the table than the array provides space for, 
+     * the remaining array elements stay untouched.  
+     */
+    public void testN3() {
+        int arr[] = new int[10];
+        T_fill_array_data_1 t = new T_fill_array_data_1();
+        t.run(arr);
+        for(int i = 0; i < 5; i++)
+            assertEquals(i + 1, arr[i]);
+        for(int i = 5; i < 10; i++)
+            assertEquals(0, arr[i]);
+     }
+    
+    /**
+     * @title expected NullPointerException  
+     */
+    public void testE1() {
+        T_fill_array_data_1 t = new T_fill_array_data_1();
+        try {
+            t.run(null);
+        } catch(NullPointerException npe) {
+            // expected
+        }
+     }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException  
+     */
+    public void testE2() {
+        int arr[] = new int[2];
+        T_fill_array_data_1 t = new T_fill_array_data_1();
+       try {
+            t.run(arr);
+        } catch(ArrayIndexOutOfBoundsException e) {
+            // expected
+           }
+     }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - reference (not array)
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title array of Objects
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title array type and data size shall be consistent
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title offset to table shall be inside method
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title the size and the list must be consistent. 
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint B22
+     * @title packed-switch-data pseudo-instructions must not be reachable by control flow 
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title table has wrong ident code
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.d b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.d
new file mode 100644
index 0000000..1c97601
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_1.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.java b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.java
new file mode 100644
index 0000000..c2a43a2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.fill_array_data.d;
+
+public class T_fill_array_data_1 {
+    public void run(int[] arr) {
+        return;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.d b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.d
new file mode 100644
index 0000000..b462d1c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_11.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.dfh b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.dfh
new file mode 100644
index 0000000..bed70ce
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.dfh
@@ -0,0 +1,264 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 59eb4a7d
+    7D 4A EB 59 
+// parsed: offset 12, len 20: signature           : 083f...2af8
+    08 3F 75 AF 24 45 09 F6 52 52 56 37 0A 56 D4 2A 88 76 2A F8 
+// parsed: offset 32, len 4: file_size           : 604
+    5C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 364
+    6C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 322 (0x000142) "<init>"
+    42 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 330 (0x00014a) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_11;"
+    4A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 390 (0x000186) "Ljava/lang/Object;"
+    86 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 410 (0x00019a) "T_fill_array_data_11.java"
+    9A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 437 (0x0001b5) "V"
+    B5 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 440 (0x0001b8) "VL"
+    B8 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 444 (0x0001bc) "[I"
+    BC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 448 (0x0001c0) "run"
+    C0 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_11;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "[I"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "VL"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 316 (0x00013c)
+    05 00 00 00 02 00 00 00 3C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_fill_array_data_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 453 (0x0001c5)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 C5 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_11.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_11.run"
+    // parsed: offset 264, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 18
+        12 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: fill-array-data v9, 00000004 //  +0x00000004
+            26 09 04 00 00 00 
+        // parsed: offset 286, len 2: |0003: return-void
+            0E 00 
+        // parsed: offset 288, len 28: |0004: array-data (14 units)
+//@mod            00 03 04 00 05 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 
+            00 03 04 00 06 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 316, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 320, len 2: type_item [0] type_idx: 3
+        03 00 
+// parsed: offset 322, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 330, len 60: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_11;"
+    3A 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 2F 64 2F 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 31 31 3B 00 
+// parsed: offset 390, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 410, len 27: TYPE_STRING_DATA_ITEM [3] "T_fill_array_data_11.java"
+    19 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 437, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 440, len 4: TYPE_STRING_DATA_ITEM [5] "VL"
+    02 56 4C 00 
+// parsed: offset 444, len 4: TYPE_STRING_DATA_ITEM [6] "[I"
+    02 5B 49 00 
+// parsed: offset 448, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_11;"
+    // parsed: offset 453, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 454, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 455, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 456, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 457, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 458, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 461, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 463, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 464, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 465, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 467, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 468, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 316 (0x00013c)
+        01 10 00 00 01 00 00 00 3C 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 322 (0x000142)
+        02 20 00 00 08 00 00 00 42 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 453 (0x0001c5)
+        00 20 00 00 01 00 00 00 C5 01 00 00 
+    // parsed: offset 592, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_12.d b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_12.d
new file mode 100644
index 0000000..c3ce952
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_12.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_12.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    goto Label0
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    return-void
+Label0:    
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.d b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.d
new file mode 100644
index 0000000..0066d29
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_13.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.dfh b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.dfh
new file mode 100644
index 0000000..0d2fc68
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.dfh
@@ -0,0 +1,264 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : b2054cd3
+    D3 4C 05 B2 
+// parsed: offset 12, len 20: signature           : 1649...5e25
+    16 49 CA 77 41 DC DC A0 6E 2C E0 E8 CE 58 95 B0 0B 40 5E 25 
+// parsed: offset 32, len 4: file_size           : 604
+    5C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 364
+    6C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 322 (0x000142) "<init>"
+    42 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 330 (0x00014a) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_13;"
+    4A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 390 (0x000186) "Ljava/lang/Object;"
+    86 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 410 (0x00019a) "T_fill_array_data_13.java"
+    9A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 437 (0x0001b5) "V"
+    B5 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 440 (0x0001b8) "VL"
+    B8 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 444 (0x0001bc) "[I"
+    BC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 448 (0x0001c0) "run"
+    C0 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_13;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "[I"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "VL"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 316 (0x00013c)
+    05 00 00 00 02 00 00 00 3C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_13;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_fill_array_data_13.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 453 (0x0001c5)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 C5 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_13.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_13.run"
+    // parsed: offset 264, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 18
+        12 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: fill-array-data v9, 00000004 //  +0x00000004
+            26 09 04 00 00 00 
+        // parsed: offset 286, len 2: |0003: return-void
+            0E 00 
+        // parsed: offset 288, len 28: |0004: array-data (14 units)
+//@mod            00 03 04 00 05 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 
+            00 05 04 00 05 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 316, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 320, len 2: type_item [0] type_idx: 3
+        03 00 
+// parsed: offset 322, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 330, len 60: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_13;"
+    3A 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 2F 64 2F 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 31 33 3B 00 
+// parsed: offset 390, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 410, len 27: TYPE_STRING_DATA_ITEM [3] "T_fill_array_data_13.java"
+    19 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 31 33 2E 6A 61 76 61 00 
+// parsed: offset 437, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 440, len 4: TYPE_STRING_DATA_ITEM [5] "VL"
+    02 56 4C 00 
+// parsed: offset 444, len 4: TYPE_STRING_DATA_ITEM [6] "[I"
+    02 5B 49 00 
+// parsed: offset 448, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_13;"
+    // parsed: offset 453, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 454, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 455, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 456, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 457, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 458, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 461, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 463, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 464, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 465, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 467, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 468, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 316 (0x00013c)
+        01 10 00 00 01 00 00 00 3C 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 322 (0x000142)
+        02 20 00 00 08 00 00 00 42 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 453 (0x0001c5)
+        00 20 00 00 01 00 00 00 C5 01 00 00 
+    // parsed: offset 592, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.d b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.d
new file mode 100644
index 0000000..6167ef7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_2.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([D)V
+.limit regs 10
+
+    fill-array-data v9 D
+        1.0
+        2.0
+        3.0
+        4.0
+        5.0
+    fill-array-data-end
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.java b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.java
new file mode 100644
index 0000000..7c56ef0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.fill_array_data.d;
+
+public class T_fill_array_data_2 {
+    public void run(double[] arr) {
+        return;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_3.d b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_3.d
new file mode 100644
index 0000000..e6ecd1e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_3.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v10 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_4.d b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_4.d
new file mode 100644
index 0000000..221ef8b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_4.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_4.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D[I)V
+.limit regs 10
+    
+    fill-array-data v7 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_5.d b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_5.d
new file mode 100644
index 0000000..cc98351
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_5.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_5.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J[I)V
+.limit regs 10
+    
+    fill-array-data v7 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_6.d b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_6.d
new file mode 100644
index 0000000..61990a1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_6.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_6.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v8 I
+        0
+        0
+        0
+        0
+        0
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_7.d b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_7.d
new file mode 100644
index 0000000..8ba5155
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_7.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_7.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/Object;)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        0
+        0
+        0
+        0
+        0
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_8.d b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_8.d
new file mode 100644
index 0000000..e90eb86
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_8.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_8.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([D)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.d b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.d
new file mode 100644
index 0000000..0a5e008
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_fill_array_data_9.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.dfh b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.dfh
new file mode 100644
index 0000000..22cb9c0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.dfh
@@ -0,0 +1,264 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 29604be4
+    E4 4B 60 29 
+// parsed: offset 12, len 20: signature           : 38a2...97b7
+    38 A2 2B 55 35 C5 4B 31 51 6E 60 02 2B 76 F6 FC FF 7A 97 B7 
+// parsed: offset 32, len 4: file_size           : 604
+    5C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 364
+    6C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 322 (0x000142) "<init>"
+    42 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 330 (0x00014a) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_9;"
+    4A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 389 (0x000185) "Ljava/lang/Object;"
+    85 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 409 (0x000199) "T_fill_array_data_9.java"
+    99 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 435 (0x0001b3) "V"
+    B3 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 438 (0x0001b6) "VL"
+    B6 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 442 (0x0001ba) "[I"
+    BA 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 446 (0x0001be) "run"
+    BE 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_9;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "[I"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "VL"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 316 (0x00013c)
+    05 00 00 00 02 00 00 00 3C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_fill_array_data_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 451 (0x0001c3)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 C3 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_9.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_9.run"
+    // parsed: offset 264, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 18
+        12 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: fill-array-data v9, 00000004 //  +0x00000004
+//@mod            26 09 04 00 00 00 
+            26 09 04 01 00 00 
+        // parsed: offset 286, len 2: |0003: return-void
+            0E 00 
+        // parsed: offset 288, len 28: |0004: array-data (14 units)
+            00 03 04 00 05 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 316, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 320, len 2: type_item [0] type_idx: 3
+        03 00 
+// parsed: offset 322, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 330, len 59: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_9;"
+    39 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 2F 64 2F 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 39 3B 00 
+// parsed: offset 389, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 409, len 26: TYPE_STRING_DATA_ITEM [3] "T_fill_array_data_9.java"
+    18 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 435, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 438, len 4: TYPE_STRING_DATA_ITEM [5] "VL"
+    02 56 4C 00 
+// parsed: offset 442, len 4: TYPE_STRING_DATA_ITEM [6] "[I"
+    02 5B 49 00 
+// parsed: offset 446, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_9;"
+    // parsed: offset 451, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 452, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 453, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 454, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 455, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 456, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 459, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 461, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 462, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 463, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 465, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 468, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 316 (0x00013c)
+        01 10 00 00 01 00 00 00 3C 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 322 (0x000142)
+        02 20 00 00 08 00 00 00 42 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 451 (0x0001c3)
+        00 20 00 00 01 00 00 00 C3 01 00 00 
+    // parsed: offset 592, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/TestStubs.java
new file mode 100644
index 0000000..8a513a7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private class TestStub{
+        // used by T_filled_new_array_11
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/Test_filled_new_array.java b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/Test_filled_new_array.java
new file mode 100644
index 0000000..4022d68
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/Test_filled_new_array.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.filled_new_array.d.T_filled_new_array_1;
+import dot.junit.opcodes.filled_new_array.d.T_filled_new_array_2;
+import dot.junit.opcodes.filled_new_array.d.T_filled_new_array_9;
+
+public class Test_filled_new_array extends DxTestCase {
+    /**
+     * @title array of ints
+     */
+    public void testN1() {
+        T_filled_new_array_1 t = new T_filled_new_array_1();
+        int[] arr = t.run(1, 2, 3, 4, 5);
+        assertNotNull(arr);
+        assertEquals(5, arr.length);
+        for(int i = 0; i < 5; i++)
+            assertEquals(i + 1, arr[i]);
+     }
+
+    /**
+     * @title array of objects
+     */
+    public void testN2() {
+        T_filled_new_array_2 t = new T_filled_new_array_2();
+        String s = "android";
+        Object[] arr = t.run(t, s);
+        assertNotNull(arr);
+        assertEquals(2, arr.length);
+        assertEquals(t, arr[0]);
+        assertEquals(s, arr[1]);
+    }
+
+    /**
+     * @constraint A17
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+         try {
+             Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_3");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+ 
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to pass obj ref instead of int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to pass long instead of int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to create non-array type
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title invalid arg count
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title attempt to instantiate String[] and fill it with reference to assignment-incompatible class
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_9");
+            fail("expected a verification exception"); 
+        } catch(Throwable t) { 
+            DxUtil.checkVerifyException(t);    
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title attempt to instantiate array of non-existent class
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_10");
+            fail("expected a verification exception");
+        } catch(Throwable t) {
+            DxUtil.checkVerifyException(t);    
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title attempt to instantiate array of inaccessible class
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.filled_new_array.d.T_filled_new_array_11
+        //@uses dot.junit.opcodes.filled_new_array.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_11");
+            fail("expected a verification exception");
+        } catch(Throwable t) {
+            DxUtil.checkVerifyException(t);    
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.d
new file mode 100644
index 0000000..0c195eb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_1.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.java b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.java
new file mode 100644
index 0000000..05cd56f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array.d;
+
+public class T_filled_new_array_1 {
+    public int[] run(int a, int b, int c, int d, int e) {
+        return null;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.d
new file mode 100644
index 0000000..ccfc7d6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2009 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_10.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 10
+    const v9, 0
+    filled-new-array {v9}, [Ljava/lang/StringNNNNN;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.d
new file mode 100644
index 0000000..e9c0775
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2009 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_11.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 10
+    const v9, 0
+    filled-new-array {v9}, [Ldot/junit/opcodes/filled_new_array/TestStubs$TestStub;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.d
new file mode 100644
index 0000000..532158e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_2.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
+.limit regs 10
+    filled-new-array {v8, v9}, [Ljava/lang/Object;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.java b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.java
new file mode 100644
index 0000000..0edab9b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array.d;
+
+public class T_filled_new_array_2 {
+    public Object[] run(Object a, Object b) {
+        return null;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.d
new file mode 100644
index 0000000..69d1f79
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_3.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.dfh
new file mode 100644
index 0000000..deace06
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.dfh
@@ -0,0 +1,280 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 5ca65099
+    99 50 A6 5C 
+// parsed: offset 12, len 20: signature           : 05d9...c8d3
+    05 D9 B4 47 7C 61 39 F5 99 31 79 2A DE 6F 88 65 3C 8D C8 D3 
+// parsed: offset 32, len 4: file_size           : 604
+    5C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 356
+    64 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "LIIIII"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 333 (0x00014d) "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_3;"
+    4D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 394 (0x00018a) "Ljava/lang/Object;"
+    8A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 414 (0x00019e) "T_filled_new_array_3.java"
+    9E 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 441 (0x0001b9) "V"
+    B9 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 444 (0x0001bc) "[I"
+    BC 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 448 (0x0001c0) "run"
+    C0 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_3;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "[I"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "LIIIII"
+//     return_type_idx: 4 (0x000004) "[I"
+//     parameters_off: 300 (0x00012c)
+    02 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_filled_new_array_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 453 (0x0001c5)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 C5 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array.d.T_filled_new_array_3.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array.d.T_filled_new_array_3.run"
+    // parsed: offset 272, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 274, len 2: ins_size: 6
+        06 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 288, len 6: |0000: filled-new-array {v5, v6, v7, v8, v9}, [I // class@0004
+//@mod            24 59 04 00 65 87 
+            24 59 04 01 65 87 
+        // parsed: offset 294, len 2: |0003: move-result-object v0
+            0C 00 
+        // parsed: offset 296, len 2: |0004: return-object v0
+            11 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 298, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 5
+        05 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+    // parsed: offset 308, len 2: type_item [2] type_idx: 0
+        00 00 
+    // parsed: offset 310, len 2: type_item [3] type_idx: 0
+        00 00 
+    // parsed: offset 312, len 2: type_item [4] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 8: TYPE_STRING_DATA_ITEM [2] "LIIIII"
+    06 4C 49 49 49 49 49 00 
+// parsed: offset 333, len 61: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_3;"
+    3B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 2F 64 2F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 33 3B 00 
+// parsed: offset 394, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 414, len 27: TYPE_STRING_DATA_ITEM [5] "T_filled_new_array_3.java"
+    19 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 441, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 444, len 4: TYPE_STRING_DATA_ITEM [7] "[I"
+    02 5B 49 00 
+// parsed: offset 448, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_3;"
+    // parsed: offset 453, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 454, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 455, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 456, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 457, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 458, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 461, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 463, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 464, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 465, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 467, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 468, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 453 (0x0001c5)
+        00 20 00 00 01 00 00 00 C5 01 00 00 
+    // parsed: offset 592, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_4.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_4.d
new file mode 100644
index 0000000..ac6b1b6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_4.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v10}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_5.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_5.d
new file mode 100644
index 0000000..c2702a4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_5.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v4}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_6.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_6.d
new file mode 100644
index 0000000..6be462d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_6.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIIJ)V
+.limit regs 11
+    filled-new-array {v5, v6, v7, v8, v9}, [I
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_7.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_7.d
new file mode 100644
index 0000000..129a800
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_7.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v9}, I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.d
new file mode 100644
index 0000000..951e06a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_8.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 10
+
+       invoke-direct {v9}, java/lang/Object/<init>()V
+       
+       const v5, 0
+       const v6, 0
+       const v7, 0
+       const v8, 0
+       const v9, 0
+       filled-new-array {v5, v6, v7, v8, v9}, [I
+       move-result-object v0
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.dfh b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.dfh
new file mode 100644
index 0000000..343d149
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.dfh
@@ -0,0 +1,297 @@
+// Processing 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.dex'...
+// Opened 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 5bac58f0
+    F0 58 AC 5B 
+// parsed: offset 12, len 20: signature           : d1b9...67e0
+    D1 B9 FB 64 E5 F3 AB 93 DC 90 83 01 BD F0 6C A0 7E B2 67 E0 
+// parsed: offset 32, len 4: file_size           : 644
+    84 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 508 (0x0001fc)
+    FC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 396
+    8C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 354 (0x000162) "<init>"
+    62 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 362 (0x00016a) "I"
+    6A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 365 (0x00016d) "LIIIII"
+    6D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 373 (0x000175) "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_8;"
+    75 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 434 (0x0001b2) "Ljava/lang/Object;"
+    B2 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 454 (0x0001c6) "T_filled_new_array_8.java"
+    C6 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 481 (0x0001e1) "V"
+    E1 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 484 (0x0001e4) "[I"
+    E4 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 488 (0x0001e8) "run"
+    E8 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_8;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "[I"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "LIIIII"
+//     return_type_idx: 4 (0x000004) "[I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 04 00 00 00 54 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_filled_new_array_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 493 (0x0001ed)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 ED 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array.d.T_filled_new_array_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 23
+        17 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v9}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 09 00 
+        // parsed: offset 270, len 6: |0003: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 276, len 6: |0006: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 282, len 6: |0009: const v7, #float 0.000000 // #0x00000000 int
+            14 07 00 00 00 00 
+        // parsed: offset 288, len 6: |000c: const v8, #float 0.000000 // #0x00000000 int
+            14 08 00 00 00 00 
+        // parsed: offset 294, len 6: |000f: const v9, #float 0.000000 // #0x00000000 int
+            14 09 00 00 00 00 
+        // parsed: offset 300, len 6: |0012: filled-new-array {v5, v6, v7, v8, v9}, [I // class@0004
+//@mod            24 59 04 00 65 87 
+            24 F9 04 00 65 87 
+        // parsed: offset 306, len 2: |0015: move-result-object v0
+            0C 00 
+        // parsed: offset 308, len 2: |0016: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 310, len 2: PADDING
+    00 00 
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array.d.T_filled_new_array_8.run"
+    // parsed: offset 312, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 314, len 2: ins_size: 6
+        06 00 
+    // parsed: offset 316, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 318, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 320, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 324, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 328, len 6: |0000: filled-new-array {v5, v6, v7, v8, v9}, [I // class@0004
+//@mod            24 59 04 00 65 87 
+            24 F9 04 00 65 87 
+        // parsed: offset 334, len 2: |0003: move-result-object v0
+            0C 00 
+        // parsed: offset 336, len 2: |0004: return-object v0
+            11 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 338, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 5
+        05 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 346, len 2: type_item [1] type_idx: 0
+        00 00 
+    // parsed: offset 348, len 2: type_item [2] type_idx: 0
+        00 00 
+    // parsed: offset 350, len 2: type_item [3] type_idx: 0
+        00 00 
+    // parsed: offset 352, len 2: type_item [4] type_idx: 0
+        00 00 
+// parsed: offset 354, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 362, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 365, len 8: TYPE_STRING_DATA_ITEM [2] "LIIIII"
+    06 4C 49 49 49 49 49 00 
+// parsed: offset 373, len 61: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_8;"
+    3B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 2F 64 2F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 38 3B 00 
+// parsed: offset 434, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 454, len 27: TYPE_STRING_DATA_ITEM [5] "T_filled_new_array_8.java"
+    19 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 481, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 484, len 4: TYPE_STRING_DATA_ITEM [7] "[I"
+    02 5B 49 00 
+// parsed: offset 488, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_8;"
+    // parsed: offset 493, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 494, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 495, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 496, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 497, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 498, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 501, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 503, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 504, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 505, len 2: code_off: 312 (0x000138)
+                B8 02 
+// parsed: offset 507, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 508, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 512, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 524, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 536, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 548, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 560, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 572, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 584, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 596, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 608, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 354 (0x000162)
+        02 20 00 00 09 00 00 00 62 01 00 00 
+    // parsed: offset 620, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 493 (0x0001ed)
+        00 20 00 00 01 00 00 00 ED 01 00 00 
+    // parsed: offset 632, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 508 (0x0001fc)
+        00 10 00 00 01 00 00 00 FC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.d
new file mode 100644
index 0000000..c7ba0ea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2009 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_9.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run(Ljava/lang/Object;)[Ljava/lang/Object;
+.limit regs 10
+    filled-new-array {v9}, [Ljava/lang/String;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.java b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.java
new file mode 100644
index 0000000..46cac1a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array.d;
+
+public class T_filled_new_array_9 {
+    public Object[] run(Object a) {
+        return null;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/TestStubs.java
new file mode 100644
index 0000000..d38808e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array_range;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private class TestStub{
+        // used by T_filled_new_array_range_11
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/Test_filled_new_array_range.java b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/Test_filled_new_array_range.java
new file mode 100644
index 0000000..b69d5b4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/Test_filled_new_array_range.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_1;
+import dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_2;
+import dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_9;
+
+public class Test_filled_new_array_range extends DxTestCase {
+    /**
+     * @title array of ints
+     */
+    public void testN1() {
+        T_filled_new_array_range_1 t = new T_filled_new_array_range_1();
+        int[] arr = t.run(1, 2, 3, 4, 5);
+        assertNotNull(arr);
+        assertEquals(5, arr.length);
+        for(int i = 0; i < 5; i++)
+            assertEquals(i + 1, arr[i]);
+     }
+
+    /**
+     * @title array of objects
+     */
+    public void testN2() {
+        T_filled_new_array_range_2 t = new T_filled_new_array_range_2();
+        String s = "android";
+        Object[] arr = t.run(t, s);
+        assertNotNull(arr);
+        assertEquals(2, arr.length);
+        assertEquals(t, arr[0]);
+        assertEquals(s, arr[1]);
+    }
+
+    /**
+     * @constraint A18
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to pass obj ref instead of int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to pass long instead of int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to create non-array type
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title invalid arg count
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title attempt to instantiate String[] and fill it with reference to assignment-incompatible class
+     */
+    public void testVFE7() {
+        try {
+        	Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_9");
+        	fail("expected a verification exception"); 
+        } catch(Throwable t) { 
+        	DxUtil.checkVerifyException(t);	
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title attempt to instantiate array of non-existent class
+     */
+    public void testVFE8() {
+        try {
+        	Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_10");
+        	fail("expected a verification exception");
+        } catch(Throwable t) {
+        	DxUtil.checkVerifyException(t);	
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title attempt to instantiate array of inaccessible class
+     */
+    public void testVFE9() {
+    	//@uses dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_11
+        //@uses dot.junit.opcodes.filled_new_array_range.TestStubs
+        try {
+        	Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_11");
+        	fail("expected a verification exception");
+        } catch(Throwable t) {
+        	DxUtil.checkVerifyException(t);	
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.d
new file mode 100644
index 0000000..503c12a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_1.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v5..v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.java b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.java
new file mode 100644
index 0000000..6e69a23
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array_range.d;
+
+public class T_filled_new_array_range_1 {
+    public int[] run(int a, int b, int c, int d, int e) {
+        return null;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.d
new file mode 100644
index 0000000..50a34b5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2009 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_10.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 10
+    const v9, 0
+    filled-new-array/range {v9}, [Ljava/lang/StringNNNNN;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.d
new file mode 100644
index 0000000..a628f07
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2009 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_11.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 10
+    const v9, 0
+    filled-new-array/range {v9}, [Ldot/junit/opcodes/filled_new_array_range/TestStubs$TestStub;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.d
new file mode 100644
index 0000000..2b2ef15
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_2.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
+.limit regs 10
+    filled-new-array/range {v8..v9}, [Ljava/lang/Object;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.java b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.java
new file mode 100644
index 0000000..51d1d32
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array_range.d;
+
+public class T_filled_new_array_range_2 {
+    public Object[] run(Object a, Object b) {
+        return null;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.d
new file mode 100644
index 0000000..f8c25f0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_3.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v5..v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.dfh
new file mode 100644
index 0000000..1a620e5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.dfh
@@ -0,0 +1,280 @@
+// Processing 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.dex'...
+// Opened 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a199569d
+    9D 56 99 A1 
+// parsed: offset 12, len 20: signature           : 62a6...ef00
+    62 A6 E9 6F 30 02 D1 5F BB C2 AB 25 06 22 11 D4 FF 0B EF 00 
+// parsed: offset 32, len 4: file_size           : 624
+    70 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 488 (0x0001e8)
+    E8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 376
+    78 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "LIIIII"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 333 (0x00014d) "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3;"
+    4D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 406 (0x000196) "Ljava/lang/Object;"
+    96 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 426 (0x0001aa) "T_filled_new_array_range_3.java"
+    AA 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 459 (0x0001cb) "V"
+    CB 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 462 (0x0001ce) "[I"
+    CE 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 466 (0x0001d2) "run"
+    D2 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "[I"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "LIIIII"
+//     return_type_idx: 4 (0x000004) "[I"
+//     parameters_off: 300 (0x00012c)
+    02 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_filled_new_array_range_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 471 (0x0001d7)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D7 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_3.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_3.run"
+    // parsed: offset 272, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 274, len 2: ins_size: 6
+        06 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 288, len 6: |0000: filled-new-array/range {v5..v9}, [I // class@0004
+//@mod            25 05 04 00 05 00 
+            25 05 04 01 05 00 
+        // parsed: offset 294, len 2: |0003: move-result-object v0
+            0C 00 
+        // parsed: offset 296, len 2: |0004: return-object v0
+            11 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 298, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 5
+        05 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+    // parsed: offset 308, len 2: type_item [2] type_idx: 0
+        00 00 
+    // parsed: offset 310, len 2: type_item [3] type_idx: 0
+        00 00 
+    // parsed: offset 312, len 2: type_item [4] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 8: TYPE_STRING_DATA_ITEM [2] "LIIIII"
+    06 4C 49 49 49 49 49 00 
+// parsed: offset 333, len 73: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3;"
+    47 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 2F 64 2F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 5F 33 3B 00 
+// parsed: offset 406, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 426, len 33: TYPE_STRING_DATA_ITEM [5] "T_filled_new_array_range_3.java"
+    1F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 459, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 462, len 4: TYPE_STRING_DATA_ITEM [7] "[I"
+    02 5B 49 00 
+// parsed: offset 466, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3;"
+    // parsed: offset 471, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 472, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 473, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 474, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 475, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 476, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 479, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 481, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 482, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 483, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 485, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 488, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 492, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 504, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 516, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 528, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 540, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 552, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 564, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 576, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 588, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 600, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 471 (0x0001d7)
+        00 20 00 00 01 00 00 00 D7 01 00 00 
+    // parsed: offset 612, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 488 (0x0001e8)
+        00 10 00 00 01 00 00 00 E8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_4.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_4.d
new file mode 100644
index 0000000..ab3d24e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_4.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v5..v10}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_5.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_5.d
new file mode 100644
index 0000000..6781fa1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_5.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v4..v8}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_6.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_6.d
new file mode 100644
index 0000000..33233b5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_6.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIIJ)V
+.limit regs 11
+    filled-new-array/range {v5..v9}, [I
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_7.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_7.d
new file mode 100644
index 0000000..f60043a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_7.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v5..v9}, I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.d
new file mode 100644
index 0000000..7a93faf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_8.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v5..v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.dfh b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.dfh
new file mode 100644
index 0000000..c2696b5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.dfh
@@ -0,0 +1,280 @@
+// Processing 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.dex'...
+// Opened 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 8d4c570b
+    0B 57 4C 8D 
+// parsed: offset 12, len 20: signature           : 0ab5...07fe
+    0A B5 95 25 DA 23 40 C1 99 88 9F D1 05 88 E3 24 5C 7C 07 FE 
+// parsed: offset 32, len 4: file_size           : 624
+    70 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 488 (0x0001e8)
+    E8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 376
+    78 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "LIIIII"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 333 (0x00014d) "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8;"
+    4D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 406 (0x000196) "Ljava/lang/Object;"
+    96 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 426 (0x0001aa) "T_filled_new_array_range_8.java"
+    AA 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 459 (0x0001cb) "V"
+    CB 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 462 (0x0001ce) "[I"
+    CE 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 466 (0x0001d2) "run"
+    D2 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "[I"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "LIIIII"
+//     return_type_idx: 4 (0x000004) "[I"
+//     parameters_off: 300 (0x00012c)
+    02 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_filled_new_array_range_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 471 (0x0001d7)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D7 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_8.run"
+    // parsed: offset 272, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 274, len 2: ins_size: 6
+        06 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 288, len 6: |0000: filled-new-array/range {v5..v9}, [I // class@0004
+//@mod            25 05 04 00 05 00 
+            25 FF 04 00 05 00 
+        // parsed: offset 294, len 2: |0003: move-result-object v0
+            0C 00 
+        // parsed: offset 296, len 2: |0004: return-object v0
+            11 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 298, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 5
+        05 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+    // parsed: offset 308, len 2: type_item [2] type_idx: 0
+        00 00 
+    // parsed: offset 310, len 2: type_item [3] type_idx: 0
+        00 00 
+    // parsed: offset 312, len 2: type_item [4] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 8: TYPE_STRING_DATA_ITEM [2] "LIIIII"
+    06 4C 49 49 49 49 49 00 
+// parsed: offset 333, len 73: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8;"
+    47 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 2F 64 2F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 5F 38 3B 00 
+// parsed: offset 406, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 426, len 33: TYPE_STRING_DATA_ITEM [5] "T_filled_new_array_range_8.java"
+    1F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 459, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 462, len 4: TYPE_STRING_DATA_ITEM [7] "[I"
+    02 5B 49 00 
+// parsed: offset 466, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8;"
+    // parsed: offset 471, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 472, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 473, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 474, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 475, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 476, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 479, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 481, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 482, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 483, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 485, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 488, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 492, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 504, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 516, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 528, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 540, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 552, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 564, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 576, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 588, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 600, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 471 (0x0001d7)
+        00 20 00 00 01 00 00 00 D7 01 00 00 
+    // parsed: offset 612, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 488 (0x0001e8)
+        00 10 00 00 01 00 00 00 E8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.d b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.d
new file mode 100644
index 0000000..4218cbe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2009 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_filled_new_array_range_9.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run(Ljava/lang/Object;)[Ljava/lang/Object;
+.limit regs 10
+    filled-new-array/range {v9}, [Ljava/lang/String;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.java b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.java
new file mode 100644
index 0000000..42ceba8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.filled_new_array_range.d;
+
+public class T_filled_new_array_range_9 {
+    public void run() {
+        return;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_double/Test_float_to_double.java b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/Test_float_to_double.java
new file mode 100644
index 0000000..93b6df7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/Test_float_to_double.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.float_to_double.d.T_float_to_double_1;
+import dot.junit.opcodes.float_to_double.d.T_float_to_double_7;
+
+public class Test_float_to_double extends DxTestCase {
+     /**
+     * @title Argument = 0.5
+     */
+    public void testN1() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertEquals(0.5d, t.run(0.5f), 0d);
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertEquals(1d, t.run(1), 0d);
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertEquals(-1d, t.run(-1), 0d);
+    }
+    
+    /**
+     * @title Type of argument - int. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of int to double makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_float_to_double_7 t = new T_float_to_double_7();
+        try {
+            t.run(1);
+        } catch (Throwable e) {
+        }
+    }  
+
+    /**
+     * @title Argument = Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        double r = 0x1.fffffeP+127d;
+        assertEquals(r, t.run(Float.MAX_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = Float.MIN_VALUE
+     */
+    public void testB2() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        double r = 0x0.000002P-126d;
+        assertEquals(r, t.run(Float.MIN_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = -0
+     */
+    public void testB3() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertEquals(-0d, t.run(-0), 0d);
+    }
+
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertTrue(Double.isNaN(t.run(Float.NaN)));
+    }
+
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertTrue(Double.isInfinite(t.run(Float.POSITIVE_INFINITY)));
+    }
+
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertTrue(Double.isInfinite(t.run(Float.NEGATIVE_INFINITY)));
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_double.d.T_float_to_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_double.d.T_float_to_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_double.d.T_float_to_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_double.d.T_float_to_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_double.d.T_float_to_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.d
new file mode 100644
index 0000000..0854de3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_double_1.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       float-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.java b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.java
new file mode 100644
index 0000000..c14f8aa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_double.d;
+
+public class T_float_to_double_1 {
+
+    public double run(float a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_2.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_2.d
new file mode 100644
index 0000000..c37c547
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_double_2.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       const-wide v2, 3.14    
+       float-to-double v0, v2
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_3.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_3.d
new file mode 100644
index 0000000..59217ee
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_double_3.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       const-wide v2, 1223
+       float-to-double v0, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_4.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_4.d
new file mode 100644
index 0000000..32f2b0a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_double_4.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 1
+
+       const v0, 3.14
+       float-to-double v0, v0
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_5.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_5.d
new file mode 100644
index 0000000..77c3dc3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_double_5.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       float-to-double v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_6.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_6.d
new file mode 100644
index 0000000..eac86d1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_double_6.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       float-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.d
new file mode 100644
index 0000000..71f3c83
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_double_7.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 6
+
+       float-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.java b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.java
new file mode 100644
index 0000000..9018914
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_double.d;
+
+public class T_float_to_double_7 {
+
+    public double run(int a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_int/Test_float_to_int.java b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/Test_float_to_int.java
new file mode 100644
index 0000000..27caeaa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/Test_float_to_int.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.float_to_int.d.T_float_to_int_1;
+import dot.junit.opcodes.float_to_int.d.T_float_to_int_5;
+
+public class Test_float_to_int extends DxTestCase {
+
+    /**
+     * @title Argument = 2.999999f
+     */
+    public void testN1() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(2, t.run(2.999999f));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(1, t.run(1f));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(-1, t.run(-1f));
+    }
+
+    /**
+     * @title Type of argument - int. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of int to int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_float_to_int_5 t = new T_float_to_int_5();
+        try {
+            t.run(1);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Argument = -0f
+     */
+    public void testB1() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(0, t.run(-0f));
+    }
+
+    /**
+     * @title Argument = Float.MAX_VALUE
+     */
+    public void testB2() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Float.MIN_VALUE
+     */
+    public void testB3() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(0, t.run(Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(0, t.run(Float.NaN));
+    }
+
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Float.NEGATIVE_INFINITY));
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_int.d.T_float_to_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_int.d.T_float_to_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_int.d.T_float_to_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_int.d.T_float_to_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.d
new file mode 100644
index 0000000..35f2eef
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_int_1.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       float-to-int v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.java b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.java
new file mode 100644
index 0000000..b07cb68
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_int.d;
+
+public class T_float_to_int_1 {
+
+    public int run(float a) {
+        return (int)a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_2.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_2.d
new file mode 100644
index 0000000..61a8c4f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_int_2.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       const-wide v1, 3.14
+       float-to-int v0, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_3.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_3.d
new file mode 100644
index 0000000..0401ffd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_int_3.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       const-wide v1, 1234
+       float-to-int v0, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_4.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_4.d
new file mode 100644
index 0000000..94fb137
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_int_4.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       float-to-int v0, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.d
new file mode 100644
index 0000000..697a193
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_int_5.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       float-to-int v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.java b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.java
new file mode 100644
index 0000000..794d0d9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_int.d;
+
+public class T_float_to_int_5 {
+
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_6.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_6.d
new file mode 100644
index 0000000..6fa95c5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_int_6.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       float-to-int v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_long/Test_float_to_long.java b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/Test_float_to_long.java
new file mode 100644
index 0000000..97e2325
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/Test_float_to_long.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.float_to_long.d.T_float_to_long_1;
+import dot.junit.opcodes.float_to_long.d.T_float_to_long_7;
+
+public class Test_float_to_long extends DxTestCase {
+    /**
+     * @title Argument = 2.999999f
+     */
+    public void testN1() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(2l, t.run(2.999999f));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+         T_float_to_long_1 t = new T_float_to_long_1();
+         assertEquals(1l, t.run(1));
+    }
+    
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+         T_float_to_long_1 t = new T_float_to_long_1();
+         assertEquals(-1l, t.run(-1));
+    }
+
+    /**
+     * @title Type of argument - int. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of int to long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_float_to_long_7 t = new T_float_to_long_7();
+        try {
+            t.run(1);
+        } catch (Throwable e) {
+        }
+    } 
+    
+    /**
+     * @title Argument = Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(Long.MAX_VALUE, t.run(Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Float.MIN_VALUE
+     */
+    public void testB2() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(0, t.run(Float.MIN_VALUE));
+    }
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(0l, t.run(0));
+    }
+    
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(0l, t.run(Float.NaN));
+    }
+    
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(Long.MAX_VALUE, t.run(Float.POSITIVE_INFINITY));
+    }
+    
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(Long.MIN_VALUE, t.run(Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint B1 
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.float_to_long.jm.T_float_to_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try
+        {
+            Class.forName("dot.junit.opcodes.float_to_long.d.T_float_to_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try
+        {
+            Class.forName("dot.junit.opcodes.float_to_long.d.T_float_to_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try
+        {
+            Class.forName("dot.junit.opcodes.float_to_long.d.T_float_to_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE5() {
+        try
+        {
+            Class.forName("dot.junit.opcodes.float_to_long.d.T_float_to_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_long.d.T_float_to_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.d
new file mode 100644
index 0000000..a4a5c24
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_long_1.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       float-to-long v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.java b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.java
new file mode 100644
index 0000000..667a37b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_long.d;
+
+public class T_float_to_long_1 {
+
+    public long run(float a) {
+        return (long)a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_2.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_2.d
new file mode 100644
index 0000000..ea3525a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_long_2.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       const-wide v2, 3.14    
+       float-to-long v0, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_3.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_3.d
new file mode 100644
index 0000000..1fde1d8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_long_3.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       const-wide v2, 1223
+       float-to-long v0, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_4.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_4.d
new file mode 100644
index 0000000..69d1e57
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_long_4.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 1
+
+       const v0, 3.14
+       float-to-long v0, v0
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_5.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_5.d
new file mode 100644
index 0000000..148381a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_long_5.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       float-to-long v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_6.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_6.d
new file mode 100644
index 0000000..99fa733
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_long_6.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       float-to-long v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.d b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.d
new file mode 100644
index 0000000..30c969c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_float_to_long_7.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       float-to-long v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.java b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.java
new file mode 100644
index 0000000..58ae745
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.float_to_long.d;
+
+public class T_float_to_long_7 {
+
+    public long run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_16/Test_goto_16.java b/tools/vm-tests/src/dot/junit/opcodes/goto_16/Test_goto_16.java
new file mode 100644
index 0000000..2891fc4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_16/Test_goto_16.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.goto_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.goto_16.d.T_goto_16_1;
+
+public class Test_goto_16 extends DxTestCase {
+       /**
+        * @title check forward and backward goto. This test also tests constraint C17 allowing to have
+        * backward goto as a last opcode in the method.
+        */
+       public void testN1() {
+           T_goto_16_1 t = new T_goto_16_1();
+           assertEquals(0, t.run(20));
+       }
+
+       /**
+        * @constraint A6 
+        * @title branch target is inside instruction
+        */
+       public void testVFE1() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_16.d.T_goto_16_3");
+               fail("expected a verification exception");
+           } catch (Throwable t) {
+               DxUtil.checkVerifyException(t);
+           }
+       }
+
+       /**
+        * @constraint A6 
+        * @title branch target shall be inside the method
+        */
+       public void testVFE2() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_16.d.T_goto_16_2");
+               fail("expected a verification exception");
+           } catch (Throwable t) {
+               DxUtil.checkVerifyException(t);
+           }
+       }
+
+       /**
+        * @constraint n/a 
+        * @title zero offset
+        */
+       public void testVFE3() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_16.d.T_goto_16_4");
+               fail("expected a verification exception");
+           } catch (Throwable t) {
+               DxUtil.checkVerifyException(t);
+           }
+       }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.d b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.d
new file mode 100644
index 0000000..caa4ad0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_16_1.java
+.class public dot.junit.opcodes.goto_16.d.T_goto_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+; test positive offset
+      goto/16 Label2
+LabelReturn:      
+      return v4
+      
+Label2:
+       add-int/lit8 v4, v4, -1
+       if-lez v4, LabelExit
+; test negative offset       
+       goto/16 Label2
+       
+LabelExit:       
+       goto LabelReturn
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.java b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.java
new file mode 100644
index 0000000..381d04f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.goto_16.d;
+
+public class T_goto_16_1 {
+
+    public int run(int a) {
+        while (a > 0) {
+            a--;
+        }
+        return a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.d b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.d
new file mode 100644
index 0000000..7162694
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_16_2.java
+.class public dot.junit.opcodes.goto_16.d.T_goto_16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto/16 Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.dfh b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.dfh
new file mode 100644
index 0000000..9e83d7f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_2.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : e5ec3c50
+    50 3C EC E5 
+// parsed: offset 12, len 20: signature           : 700a...7219
+    70 0A 71 39 79 DA 76 3F 7D B4 5A 82 07 EA 55 1E C7 F1 72 19 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "I"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 305 (0x000131) "II"
+    31 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 309 (0x000135) "Ldot/junit/opcodes/goto_16/d/T_goto_16_2;"
+    35 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 352 (0x000160) "Ljava/lang/Object;"
+    60 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 372 (0x000174) "T_goto_16_2.java"
+    74 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/goto_16/d/T_goto_16_2;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 288 (0x000120)
+    02 00 00 00 00 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/goto_16/d/T_goto_16_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_goto_16_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 398 (0x00018e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_2.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_2.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: goto/16 0004 // +0x0004
+//@mod            29 00 02 00
+            29 00 02 01
+        // parsed: offset 284, len 2: |0002: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 305, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 309, len 43: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/goto_16/d/T_goto_16_2;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 67 6F 74 6F 5F 31 36 2F 64 2F 54 5F 67 6F 74 6F 5F 31 36 5F 32 3B 00 
+// parsed: offset 352, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 372, len 18: TYPE_STRING_DATA_ITEM [5] "T_goto_16_2.java"
+    10 54 5F 67 6F 74 6F 5F 31 36 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/goto_16/d/T_goto_16_2;"
+    // parsed: offset 398, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 400, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 401, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 402, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 403, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 406, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 408, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 410, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 398 (0x00018e)
+        00 20 00 00 01 00 00 00 8E 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.java b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.java
new file mode 100644
index 0000000..d9729a0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.goto_16.d;
+
+public class T_goto_16_2 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.d b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.d
new file mode 100644
index 0000000..fcaa68d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_16_3.java
+.class public dot.junit.opcodes.goto_16.d.T_goto_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto/16 Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.dfh
new file mode 100644
index 0000000..10045e8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 77e43d0f
+    0F 3D E4 77 
+// parsed: offset 12, len 20: signature           : 8373...27f3
+    83 73 D6 CF 41 96 B2 D5 47 35 AB 73 18 04 6D FD 57 13 27 F3 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "I"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 305 (0x000131) "II"
+    31 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 309 (0x000135) "Ldot/junit/opcodes/goto_16/d/T_goto_16_3;"
+    35 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 352 (0x000160) "Ljava/lang/Object;"
+    60 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 372 (0x000174) "T_goto_16_3.java"
+    74 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/goto_16/d/T_goto_16_3;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 288 (0x000120)
+    02 00 00 00 00 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/goto_16/d/T_goto_16_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_goto_16_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 398 (0x00018e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_3.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_3.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: goto/16 0004 // +0x0004
+//@mod            29 00 02 00 
+            29 00 03 00 
+        // parsed: offset 284, len 2: |0002: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 305, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 309, len 43: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/goto_16/d/T_goto_16_3;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 67 6F 74 6F 5F 31 36 2F 64 2F 54 5F 67 6F 74 6F 5F 31 36 5F 33 3B 00 
+// parsed: offset 352, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 372, len 18: TYPE_STRING_DATA_ITEM [5] "T_goto_16_3.java"
+    10 54 5F 67 6F 74 6F 5F 31 36 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/goto_16/d/T_goto_16_3;"
+    // parsed: offset 398, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 400, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 401, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 402, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 403, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 406, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 408, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 410, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 398 (0x00018e)
+        00 20 00 00 01 00 00 00 8E 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.d b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.d
new file mode 100644
index 0000000..746c325
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_16_4.java
+.class public dot.junit.opcodes.goto_16.d.T_goto_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto/16 Label1
+Label1:      
+      return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.dfh
new file mode 100644
index 0000000..1b43042
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 5cce3b13
+    13 3B CE 5C 
+// parsed: offset 12, len 20: signature           : f804...031e
+    F8 04 35 7B 64 32 AC 72 3D A1 7F 03 35 09 E1 77 49 DF 03 1E 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "I"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 305 (0x000131) "II"
+    31 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 309 (0x000135) "Ldot/junit/opcodes/goto_16/d/T_goto_16_4;"
+    35 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 352 (0x000160) "Ljava/lang/Object;"
+    60 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 372 (0x000174) "T_goto_16_4.java"
+    74 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/goto_16/d/T_goto_16_4;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 288 (0x000120)
+    02 00 00 00 00 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/goto_16/d/T_goto_16_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_goto_16_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 398 (0x00018e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_4.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_4.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: goto/16 0004 // +0x0004
+//@mod            29 00 02 00 
+            29 00 00 00 
+        // parsed: offset 284, len 2: |0002: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 305, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 309, len 43: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/goto_16/d/T_goto_16_4;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 67 6F 74 6F 5F 31 36 2F 64 2F 54 5F 67 6F 74 6F 5F 31 36 5F 34 3B 00 
+// parsed: offset 352, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 372, len 18: TYPE_STRING_DATA_ITEM [5] "T_goto_16_4.java"
+    10 54 5F 67 6F 74 6F 5F 31 36 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/goto_16/d/T_goto_16_4;"
+    // parsed: offset 398, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 400, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 401, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 402, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 403, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 406, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 408, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 410, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 398 (0x00018e)
+        00 20 00 00 01 00 00 00 8E 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.java b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.java
new file mode 100644
index 0000000..4a087dc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.goto_16.d;
+
+public class T_goto_16_4 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_32/Test_goto_32.java b/tools/vm-tests/src/dot/junit/opcodes/goto_32/Test_goto_32.java
new file mode 100644
index 0000000..5f7a4dc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_32/Test_goto_32.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.goto_32;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.goto_32.d.T_goto_32_1;
+
+public class Test_goto_32 extends DxTestCase {
+       /**
+        * @title check forward and backward goto. This test also tests constraint C17 allowing to have
+        * backward goto as a last opcode in the method.
+        */
+       public void testN1() {
+           T_goto_32_1 t = new T_goto_32_1();
+           assertEquals(0, t.run(20));
+       }
+
+       /**
+        * @constraint A6 
+        * @title branch target is inside instruction
+        */
+       public void testVFE1() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_32.d.T_goto_32_2");
+               fail("expected a verification exception");
+           } catch (Throwable t) {
+               DxUtil.checkVerifyException(t);
+           }
+       }
+
+       /**
+        * @constraint A6 
+        * @title branch target shall be inside the method
+        */
+       public void testVFE2() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_32.d.T_goto_32_3");
+               fail("expected a verification exception");
+           } catch (Throwable t) {
+               DxUtil.checkVerifyException(t);
+           }
+       }
+
+       /**
+        *  
+        * @constraint n/a 
+        * @title zero offset - no exception expected
+        */
+       public void testVFE3() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_32.d.T_goto_32_4");
+               // no exception is expected
+           } catch (Throwable t) {
+               fail("not expected" + t);
+           }
+       }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.d b/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.d
new file mode 100644
index 0000000..fd5335a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_32_1.java
+.class public dot.junit.opcodes.goto_32.d.T_goto_32_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+; test positive offset
+      goto/32 Label2
+LabelReturn:      
+      return v4
+      
+Label2:
+       add-int/lit8 v4, v4, -1
+       if-lez v4, LabelExit
+; test negative offset       
+       goto/32 Label2
+       
+LabelExit:       
+       goto LabelReturn
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.java b/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.java
new file mode 100644
index 0000000..90067e9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.goto_32.d;
+
+public class T_goto_32_1 {
+
+    public int run(int a) {
+        while (a > 0) {
+            a--;
+        }
+        return a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.d b/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.d
new file mode 100644
index 0000000..1a76901
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_32_2.java
+.class public dot.junit.opcodes.goto_32.d.T_goto_32_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto/32 Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.dfh b/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.dfh
new file mode 100644
index 0000000..4b28769
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.dfh
@@ -0,0 +1,260 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_32/d/T_goto_32_2.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_32/d/T_goto_32_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 66653ef5
+    F5 3E 65 66 
+// parsed: offset 12, len 20: signature           : f397...b4a3
+    F3 97 87 FB A7 9D A8 95 06 46 CD 7D 6B 68 DE D4 68 21 B4 A3 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "I"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 305 (0x000131) "II"
+    31 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 309 (0x000135) "Ldot/junit/opcodes/goto_32/d/T_goto_32_2;"
+    35 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 352 (0x000160) "Ljava/lang/Object;"
+    60 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 372 (0x000174) "T_goto_32_2.java"
+    74 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/goto_32/d/T_goto_32_2;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 288 (0x000120)
+    02 00 00 00 00 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/goto_32/d/T_goto_32_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_goto_32_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 398 (0x00018e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.goto_32.d.T_goto_32_2.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.goto_32.d.T_goto_32_2.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: goto/32 #0x00000003
+//@mod            2A 00 03 00 00 00 
+            2A 00 03 00 00 10 
+        // parsed: offset 286, len 2: |0003: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 305, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 309, len 43: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/goto_32/d/T_goto_32_2;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 67 6F 74 6F 5F 33 32 2F 64 2F 54 5F 67 6F 74 6F 5F 33 32 5F 32 3B 00 
+// parsed: offset 352, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 372, len 18: TYPE_STRING_DATA_ITEM [5] "T_goto_32_2.java"
+    10 54 5F 67 6F 74 6F 5F 33 32 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/goto_32/d/T_goto_32_2;"
+    // parsed: offset 398, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 400, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 401, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 402, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 403, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 406, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 408, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 410, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 398 (0x00018e)
+        00 20 00 00 01 00 00 00 8E 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.java b/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.java
new file mode 100644
index 0000000..2f6d726
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.goto_32.d;
+
+public class T_goto_32_2 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.d b/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.d
new file mode 100644
index 0000000..6130ae8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_32_3.java
+.class public dot.junit.opcodes.goto_32.d.T_goto_32_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto/32 Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.dfh
new file mode 100644
index 0000000..4d69427
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.dfh
@@ -0,0 +1,260 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_32/d/T_goto_32_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_32/d/T_goto_32_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : d7f03cc2
+    C2 3C F0 D7 
+// parsed: offset 12, len 20: signature           : 7597...1d22
+    75 97 05 E2 0A 6D AC B6 E0 92 5B 17 04 77 DE 99 7E F4 1D 22 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "I"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 305 (0x000131) "II"
+    31 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 309 (0x000135) "Ldot/junit/opcodes/goto_32/d/T_goto_32_3;"
+    35 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 352 (0x000160) "Ljava/lang/Object;"
+    60 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 372 (0x000174) "T_goto_32_3.java"
+    74 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/goto_32/d/T_goto_32_3;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 288 (0x000120)
+    02 00 00 00 00 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/goto_32/d/T_goto_32_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_goto_32_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 398 (0x00018e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.goto_32.d.T_goto_32_3.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.goto_32.d.T_goto_32_3.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: goto/32 #0x00000003
+//@mod            2A 00 03 00 00 00 
+            2A 00 04 00 00 00 
+        // parsed: offset 286, len 2: |0003: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 305, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 309, len 43: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/goto_32/d/T_goto_32_3;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 67 6F 74 6F 5F 33 32 2F 64 2F 54 5F 67 6F 74 6F 5F 33 32 5F 33 3B 00 
+// parsed: offset 352, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 372, len 18: TYPE_STRING_DATA_ITEM [5] "T_goto_32_3.java"
+    10 54 5F 67 6F 74 6F 5F 33 32 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/goto_32/d/T_goto_32_3;"
+    // parsed: offset 398, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 400, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 401, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 402, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 403, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 406, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 408, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 410, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 398 (0x00018e)
+        00 20 00 00 01 00 00 00 8E 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_4.d b/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_4.d
new file mode 100644
index 0000000..624dfaf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/goto_32/d/T_goto_32_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_goto_32_4.java
+.class public dot.junit.opcodes.goto_32.d.T_goto_32_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+Label1:
+      goto/32 Label1
+      return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/Test_if_eq.java b/tools/vm-tests/src/dot/junit/opcodes/if_eq/Test_if_eq.java
new file mode 100644
index 0000000..ed9b9e9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/Test_if_eq.java
@@ -0,0 +1,223 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.if_eq;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_eq.d.T_if_eq_1;
+import dot.junit.opcodes.if_eq.d.T_if_eq_2;
+import dot.junit.opcodes.if_eq.d.T_if_eq_4;
+
+public class Test_if_eq extends DxTestCase {
+    
+    /**
+     * @title Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_eq_1 t = new T_if_eq_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_eq instruction
+         */
+        assertEquals(1234, t.run(5, 6));
+    }
+
+    /**
+     * @title Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1234, t.run(5, -5));
+    }
+
+    /**
+     * @title Arguments = 0x01001234, 0x1234
+     */
+    public void testN4() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1234, t.run(0x01001234, 0x1234));
+    }
+    
+    /**
+     * @title compare references
+     */
+    public void testN5() {
+        T_if_eq_2 t = new T_if_eq_2();
+        String a = "a";
+        String b = "b";
+        assertEquals(1234, t.run(a, b));
+    }
+
+    /**
+     * @title compare references
+     */
+    public void testN6() {
+        T_if_eq_2 t = new T_if_eq_2();
+        String a = "a";
+        assertEquals(1, t.run(a, a));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_if_eq_4 t = new T_if_eq_4();
+        assertEquals(1234, t.run(1f, 1));
+    }  
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 1234567
+     */
+    public void testB3() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1234, t.run(0, 1234567));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB4() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1, t.run(0, 0));
+    }
+    
+    /**
+     * @title Compare reference with null
+     */
+    public void testB5() {
+        T_if_eq_2 t = new T_if_eq_2();
+        String a = "a";
+        assertEquals(1234, t.run(null, a));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title  zero offset
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.d b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.d
new file mode 100644
index 0000000..b9e4603
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.d
@@ -0,0 +1,24 @@
+.source T_if_eq_1.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.java b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.java
new file mode 100644
index 0000000..d9015d9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_1 {
+
+    public int run(int a, int b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.d b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.d
new file mode 100644
index 0000000..a7f0474
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.d
@@ -0,0 +1,23 @@
+.source T_if_eq_10.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-eq v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.dfh
new file mode 100644
index 0000000..d0c3c14
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : ddba4029
+    29 40 BA DD 
+// parsed: offset 12, len 20: signature           : 888d...fb6f
+    88 8D 32 BC 19 C6 2A 6E 73 92 D4 07 A2 C9 A0 63 98 56 FB 6F 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_eq/d/T_if_eq_10;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_eq_10.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "Z"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 402 (0x000192) "ZII"
+    92 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_eq/d/T_if_eq_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_eq/d/T_if_eq_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_eq_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-eq v6, v7, 0004 // +0x0004
+//@mod      32 76 04 00 
+            32 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_eq/d/T_if_eq_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 2F 64 2F 54 5F 69 66 5F 65 71 5F 31 30 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_eq_10.java"
+    0F 54 5F 69 66 5F 65 71 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 402, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eq/d/T_if_eq_10;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.java b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.java
new file mode 100644
index 0000000..6350454
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_10 {
+
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.d b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.d
new file mode 100644
index 0000000..f266a25
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.d
@@ -0,0 +1,26 @@
+.source T_if_eq_11.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)V
+.limit regs 8
+
+       if-eq v6, v7, Label10
+       const/4 v6, 0
+       return-void
+
+Label10:
+       const v6, 1
+       nop
+       nop
+       const/4 v6, 1
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.dfh
new file mode 100644
index 0000000..b0293d7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : f79d4878
+    78 48 9D F7 
+// parsed: offset 12, len 20: signature           : f49a...1f2e
+    F4 9A EE 46 B0 E3 E8 12 25 CB 9A BC D5 F7 87 9C F1 75 1F 2E 
+// parsed: offset 32, len 4: file_size           : 580
+    44 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 444 (0x0001bc)
+    BC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 340
+    54 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 312 (0x000138) "<init>"
+    38 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 320 (0x000140) "Ldot/junit/opcodes/if_eq/d/T_if_eq_11;"
+    40 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 360 (0x000168) "Ljava/lang/Object;"
+    68 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 380 (0x00017c) "Ljava/lang/String;"
+    7C 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 400 (0x000190) "T_if_eq_11.java"
+    90 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 417 (0x0001a1) "V"
+    A1 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 420 (0x0001a4) "VLL"
+    A4 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 425 (0x0001a9) "run"
+    A9 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/if_eq/d/T_if_eq_11;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/String;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "VLL"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 304 (0x000130)
+    06 00 00 00 03 00 00 00 30 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/if_eq/d/T_if_eq_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_eq_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 430 (0x0001ae)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 AE 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_11.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_11.run"
+    // parsed: offset 264, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 266, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: if-eq v6, v7, 0004 // +0x0004
+//@mod            32 76 04 00 
+            32 76 05 00 
+        // parsed: offset 284, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 286, len 2: |0003: return-void
+            0E 00 
+        // parsed: offset 288, len 6: |0004: const v6, #float 0.000000 // #0x00000001 int
+            14 06 01 00 00 00 
+        // parsed: offset 294, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 296, len 2: |0008: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0009: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 300, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 302, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 304, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 308, len 2: type_item [0] type_idx: 2
+        02 00 
+    // parsed: offset 310, len 2: type_item [1] type_idx: 2
+        02 00 
+// parsed: offset 312, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 320, len 40: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/if_eq/d/T_if_eq_11;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 2F 64 2F 54 5F 69 66 5F 65 71 5F 31 31 3B 00 
+// parsed: offset 360, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 380, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 400, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_eq_11.java"
+    0F 54 5F 69 66 5F 65 71 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 417, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 420, len 5: TYPE_STRING_DATA_ITEM [6] "VLL"
+    03 56 4C 4C 00 
+// parsed: offset 425, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eq/d/T_if_eq_11;"
+    // parsed: offset 430, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 431, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 432, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 433, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 434, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 435, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 438, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 440, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 441, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 442, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 444, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 448, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 460, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 472, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 484, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 496, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 508, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 520, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 532, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 304 (0x000130)
+        01 10 00 00 01 00 00 00 30 01 00 00 
+    // parsed: offset 544, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 312 (0x000138)
+        02 20 00 00 08 00 00 00 38 01 00 00 
+    // parsed: offset 556, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 430 (0x0001ae)
+        00 20 00 00 01 00 00 00 AE 01 00 00 
+    // parsed: offset 568, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 444 (0x0001bc)
+        00 10 00 00 01 00 00 00 BC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.java b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.java
new file mode 100644
index 0000000..3c5f8fd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_11 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.d b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.d
new file mode 100644
index 0000000..9f0d34f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.d
@@ -0,0 +1,24 @@
+.source T_if_eq_12.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.dfh
new file mode 100644
index 0000000..f327ba6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.dfh
@@ -0,0 +1,272 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_12.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 48be3ebd
+    BD 3E BE 48 
+// parsed: offset 12, len 20: signature           : 8ffe...1c12
+    8F FE A9 63 12 82 FD 99 23 44 02 D2 77 6A C4 D2 00 1A 1C 12 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 304 (0x000130) "<init>"
+    30 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 312 (0x000138) "I"
+    38 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 315 (0x00013b) "III"
+    3B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 320 (0x000140) "Ldot/junit/opcodes/if_eq/d/T_if_eq_12;"
+    40 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 360 (0x000168) "Ljava/lang/Object;"
+    68 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 380 (0x00017c) "T_if_eq_12.java"
+    7C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "run"
+    90 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/if_eq/d/T_if_eq_12;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "III"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 296 (0x000128)
+    02 00 00 00 00 00 00 00 28 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_eq/d/T_if_eq_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_if_eq_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 405 (0x000195)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 95 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_12.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_12.run"
+    // parsed: offset 264, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 266, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 7
+        07 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: if-eq v6, v7, 0005 // +0x0005
+//@mod            32 76 05 00 
+            32 76 00 00 
+        // parsed: offset 284, len 4: |0002: const/16 v6, #int 1234 // #0x4d2
+            13 06 D2 04 
+        // parsed: offset 288, len 2: |0004: return v6
+            0F 06 
+        // parsed: offset 290, len 2: |0005: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 292, len 2: |0006: goto 0004 // -0x0002
+            28 FE 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 296, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 300, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 302, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 304, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 312, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 315, len 5: TYPE_STRING_DATA_ITEM [2] "III"
+    03 49 49 49 00 
+// parsed: offset 320, len 40: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/if_eq/d/T_if_eq_12;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 2F 64 2F 54 5F 69 66 5F 65 71 5F 31 32 3B 00 
+// parsed: offset 360, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 380, len 17: TYPE_STRING_DATA_ITEM [5] "T_if_eq_12.java"
+    0F 54 5F 69 66 5F 65 71 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eq/d/T_if_eq_12;"
+    // parsed: offset 405, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 406, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 408, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 409, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 410, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 413, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 415, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 416, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 417, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 419, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 296 (0x000128)
+        01 10 00 00 01 00 00 00 28 01 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 304 (0x000130)
+        02 20 00 00 08 00 00 00 30 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 405 (0x000195)
+        00 20 00 00 01 00 00 00 95 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.d b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.d
new file mode 100644
index 0000000..239ef80
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.d
@@ -0,0 +1,24 @@
+.source T_if_eq_2.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.java b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.java
new file mode 100644
index 0000000..2e3f2e8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_2 {
+
+    public int run(String a, String b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.d b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.d
new file mode 100644
index 0000000..8cc6f7e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_eq_3.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.java b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.java
new file mode 100644
index 0000000..e1d63c2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_3 {
+
+    public int run(float a, float b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.d b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.d
new file mode 100644
index 0000000..614b6b6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.d
@@ -0,0 +1,24 @@
+.source T_if_eq_4.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.java b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.java
new file mode 100644
index 0000000..8a85025
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_4 {
+
+    public int run(float a, int b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_5.d b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_5.d
new file mode 100644
index 0000000..94dd327
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_5.d
@@ -0,0 +1,24 @@
+.source T_if_eq_5.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-eq v6, v8, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.d b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.d
new file mode 100644
index 0000000..29f910b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_eq_6.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)I
+.limit regs 8
+
+       if-eq v6, v8, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.java b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.java
new file mode 100644
index 0000000..ab33d58
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_6 {
+
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_7.d b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_7.d
new file mode 100644
index 0000000..ded22b3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_7.d
@@ -0,0 +1,24 @@
+.source T_if_eq_7.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-eq v5, v6, Label11
+       const/16 v5, 1234
+Label10:
+       return v5
+       
+Label11:
+       const/4 v5, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_8.d b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_8.d
new file mode 100644
index 0000000..8e67f2d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_8.d
@@ -0,0 +1,24 @@
+.source T_if_eq_8.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-eq v5, v7, Label11
+       const/16 v5, 1234
+Label10:
+       return v5
+       
+Label11:
+       const/4 v5, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_9.d b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_9.d
new file mode 100644
index 0000000..b158878
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eq/d/T_if_eq_9.d
@@ -0,0 +1,24 @@
+.source T_if_eq_9.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ILjava/lang/String;)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/Test_if_eqz.java b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/Test_if_eqz.java
new file mode 100644
index 0000000..161ab3c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/Test_if_eqz.java
@@ -0,0 +1,169 @@
+package dot.junit.opcodes.if_eqz;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_eqz.d.T_if_eqz_1;
+import dot.junit.opcodes.if_eqz.d.T_if_eqz_2;
+import dot.junit.opcodes.if_eqz.d.T_if_eqz_3;
+import dot.junit.opcodes.if_eqz.d.T_if_eqz_4;
+
+public class Test_if_eqz extends DxTestCase {
+
+    /**
+     * @title Argument = 5 and -5
+     */
+    public void testN1() {
+        T_if_eqz_1 t = new T_if_eqz_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(5));
+        assertEquals(1234, t.run(-5));
+    }
+
+    /**
+     * @title Arguments = not null
+     */
+    public void testN2() {
+        T_if_eqz_2 t = new T_if_eqz_2();
+        String str = "abc";
+        assertEquals(1234, t.run(str));
+    }
+    
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_if_eqz_3 t = new T_if_eqz_3();
+        assertEquals(1234, t.run(3.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_eqz_1 t = new T_if_eqz_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_eqz_1 t = new T_if_eqz_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE
+     */
+    public void testB3() {
+        T_if_eqz_3 t = new T_if_eqz_3();
+        assertEquals(1234, t.run(Float.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Float.MIN_VALUE
+     */
+    public void testB4() {
+        T_if_eqz_3 t = new T_if_eqz_3();
+        assertEquals(1234, t.run(Float.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB5() {
+        T_if_eqz_1 t = new T_if_eqz_1();
+        assertEquals(1, t.run(0));
+    }
+    
+    /**
+     * @title Compare with null
+     */
+    public void testB6() {
+        T_if_eqz_4 t = new T_if_eqz_4();
+        assertEquals(1, t.run(null));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title  branch must not be 0
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.d b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.d
new file mode 100644
index 0000000..c44b870
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.d
@@ -0,0 +1,23 @@
+.source T_ifne_1.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-eqz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.java b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.java
new file mode 100644
index 0000000..69d7ec5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eqz.d;
+
+public class T_if_eqz_1 {
+
+    public int run(int a) {
+        return a == 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.d b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.d
new file mode 100644
index 0000000..8c415d0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.d
@@ -0,0 +1,24 @@
+.source T_if_eqz_10.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-eqz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       const v5, 0
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.dfh
new file mode 100644
index 0000000..8720c5e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.dfh
@@ -0,0 +1,278 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 13a54087
+    87 40 A5 13 
+// parsed: offset 12, len 20: signature           : f2ad...6186
+    F2 AD 32 32 6C 56 2F 5F 0C 66 01 AD C1 B4 D3 5A E5 69 61 86 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_10;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_eqz_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 405 (0x000195) "V"
+    95 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 408 (0x000198) "Z"
+    98 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 411 (0x00019b) "ZI"
+    9B 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_eqz_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_10.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-eqz v5, 0004 // +0x0004
+//@mod            38 05 04 00 
+            38 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 6: |0004: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_10;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 7A 2F 64 2F 54 5F 69 66 5F 65 71 7A 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_eqz_10.java"
+    10 54 5F 69 66 5F 65 71 7A 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 405, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 408, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 411, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.d b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.d
new file mode 100644
index 0000000..af8ce95
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.d
@@ -0,0 +1,23 @@
+.source T_if_eqz_11.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-eqz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.dfh
new file mode 100644
index 0000000..9776e0d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.dfh
@@ -0,0 +1,274 @@
+// Processing '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.dex'...
+// Opened '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 4c653f4a
+    4A 3F 65 4C 
+// parsed: offset 12, len 20: signature           : 64c4...a261
+    64 C4 0B 66 1A 5A 66 6E F4 C8 FA 14 8C 1E 4F 57 1F 9A A2 61 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_11;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_eqz_11.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "Z"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "ZI"
+    93 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_11;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_eqz_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_11.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_11.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-eqz v5, 0004 // +0x0004
+//@mod      38 05 04 00 
+            38 05 00 00            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_11;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 7A 2F 64 2F 54 5F 69 66 5F 65 71 7A 5F 31 31 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_eqz_11.java"
+    10 54 5F 69 66 5F 65 71 7A 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 403, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_11;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.d b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.d
new file mode 100644
index 0000000..2b44068
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.d
@@ -0,0 +1,23 @@
+.source T_ifne_2.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-eqz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.java b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.java
new file mode 100644
index 0000000..288a1e0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eqz.d;
+
+public class T_if_eqz_2 {
+
+    public int run(String o) {
+        return o == null ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.d b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.d
new file mode 100644
index 0000000..84e6924
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.d
@@ -0,0 +1,23 @@
+.source T_ifne_3.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-eqz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.java b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.java
new file mode 100644
index 0000000..f328d0d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eqz.d;
+
+public class T_if_eqz_3 {
+
+    public int run(float o) {
+        return o == 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.d b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.d
new file mode 100644
index 0000000..5d0c921
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.d
@@ -0,0 +1,23 @@
+.source T_ifne_4.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.limit regs 6
+
+       if-eqz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.java b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.java
new file mode 100644
index 0000000..5d83f7e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eqz.d;
+
+public class T_if_eqz_4 {
+
+    public int run(Object o) {
+        return o == null ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_5.d b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_5.d
new file mode 100644
index 0000000..3ddc469
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_5.d
@@ -0,0 +1,23 @@
+.source T_ifne_5.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.limit regs 6
+
+       if-eqz v6, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_6.d b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_6.d
new file mode 100644
index 0000000..ff120fe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_6.d
@@ -0,0 +1,23 @@
+.source T_ifne_6.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       if-eqz v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_7.d b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_7.d
new file mode 100644
index 0000000..2d2ccb7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_7.d
@@ -0,0 +1,23 @@
+.source T_ifne_7.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-eqz v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.d b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.d
new file mode 100644
index 0000000..4ff0e6d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.d
@@ -0,0 +1,23 @@
+.source T_if_eqz_9.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-eqz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.dfh
new file mode 100644
index 0000000..ee8a145
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 090e3d64
+    64 3D 0E 09 
+// parsed: offset 12, len 20: signature           : ca45...4c5d
+    CA 45 28 5D 29 16 13 16 67 BC 32 35 F3 8A C7 62 46 28 4C 5D 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_9;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_eqz_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_eqz_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-eqz v5, 0004 // +0x0004
+//@mod      38 05 04 00        
+            38 05 04 01 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 7A 2F 64 2F 54 5F 69 66 5F 65 71 7A 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_eqz_9.java"
+    0F 54 5F 69 66 5F 65 71 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ge/Test_if_ge.java b/tools/vm-tests/src/dot/junit/opcodes/if_ge/Test_if_ge.java
new file mode 100644
index 0000000..5c22637
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ge/Test_if_ge.java
@@ -0,0 +1,176 @@
+package dot.junit.opcodes.if_ge;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_ge.d.T_if_ge_1;
+import dot.junit.opcodes.if_ge.d.T_if_ge_3;
+
+public class Test_if_ge extends DxTestCase {
+    
+    /**
+     * @title Case: 5 < 6
+     */
+    public void testN1() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1234, t.run(5, 6));
+    }
+
+    /**
+     * @title Case: 0x0f0e0d0c = 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Case: 5 > -5
+     */
+    public void testN3() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(5, -5));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_if_ge_3 t = new T_if_ge_3();
+        assertEquals(1, t.run(1f, 1));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(0, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+     /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title  branch target shall 0
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.d b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.d
new file mode 100644
index 0000000..1279bbe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.d
@@ -0,0 +1,23 @@
+.source T_if_ge_1.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ge v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.java b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.java
new file mode 100644
index 0000000..b507e37
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ge.d;
+
+public class T_if_ge_1 {
+
+    public int run(int a, int b) {
+        return a >= b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.d b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.d
new file mode 100644
index 0000000..d02659a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.d
@@ -0,0 +1,24 @@
+.source T_if_ge_10.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-ge v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       const v6, 0
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.dfh
new file mode 100644
index 0000000..090fea5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.dfh
@@ -0,0 +1,280 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 14003ffc
+    FC 3F 00 14 
+// parsed: offset 12, len 20: signature           : b8fa...6526
+    B8 FA D3 7A 8D D7 8E 82 0D 0E D1 33 C7 70 54 00 B1 30 65 26 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 316 (0x00013c) "<init>"
+    3C 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 324 (0x000144) "I"
+    44 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 327 (0x000147) "Ldot/junit/opcodes/if_ge/d/T_if_ge_10;"
+    47 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_ge_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 407 (0x000197) "Z"
+    97 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "ZII"
+    9A 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ge/d/T_if_ge_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ge/d/T_if_ge_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ge_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ge v6, v7, 0004 // +0x0004
+//@mod            35 76 04 00 
+            35 76 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 6: |0004: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 314, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 316, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 324, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 327, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ge/d/T_if_ge_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 2F 64 2F 54 5F 69 66 5F 67 65 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ge_10.java"
+    0F 54 5F 69 66 5F 67 65 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 407, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ge/d/T_if_ge_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 316 (0x00013c)
+        02 20 00 00 09 00 00 00 3C 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.d b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.d
new file mode 100644
index 0000000..667364d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_ge_11.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ge v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.dfh
new file mode 100644
index 0000000..730462e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.dfh
@@ -0,0 +1,272 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_11.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 07f43ba4
+    A4 3B F4 07 
+// parsed: offset 12, len 20: signature           : 0ddb...f74e
+    0D DB 24 02 D1 3C 3B 83 6B 43 22 39 49 49 55 12 39 79 F7 4E 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 304 (0x000130) "<init>"
+    30 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 312 (0x000138) "I"
+    38 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 315 (0x00013b) "III"
+    3B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 320 (0x000140) "Ldot/junit/opcodes/if_ge/d/T_if_ge_11;"
+    40 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 360 (0x000168) "Ljava/lang/Object;"
+    68 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 380 (0x00017c) "T_if_ge_11.java"
+    7C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "run"
+    90 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/if_ge/d/T_if_ge_11;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "III"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 296 (0x000128)
+    02 00 00 00 00 00 00 00 28 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ge/d/T_if_ge_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_if_ge_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 405 (0x000195)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 95 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_11.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_11.run"
+    // parsed: offset 264, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 266, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 7
+        07 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: if-ge v6, v7, 0005 // +0x0005
+//@mod            35 76 05 00 
+            35 76 00 00 
+        // parsed: offset 284, len 4: |0002: const/16 v6, #int 1234 // #0x4d2
+            13 06 D2 04 
+        // parsed: offset 288, len 2: |0004: return v6
+            0F 06 
+        // parsed: offset 290, len 2: |0005: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 292, len 2: |0006: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 296, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 300, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 302, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 304, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 312, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 315, len 5: TYPE_STRING_DATA_ITEM [2] "III"
+    03 49 49 49 00 
+// parsed: offset 320, len 40: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/if_ge/d/T_if_ge_11;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 2F 64 2F 54 5F 69 66 5F 67 65 5F 31 31 3B 00 
+// parsed: offset 360, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 380, len 17: TYPE_STRING_DATA_ITEM [5] "T_if_ge_11.java"
+    0F 54 5F 69 66 5F 67 65 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ge/d/T_if_ge_11;"
+    // parsed: offset 405, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 406, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 408, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 409, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 410, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 413, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 415, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 416, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 417, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 419, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 296 (0x000128)
+        01 10 00 00 01 00 00 00 28 01 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 304 (0x000130)
+        02 20 00 00 08 00 00 00 30 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 405 (0x000195)
+        00 20 00 00 01 00 00 00 95 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.d b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.d
new file mode 100644
index 0000000..af33b07
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_ge_2.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       if-ge v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.java b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.java
new file mode 100644
index 0000000..64014ea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.if_ge.d;
+
+public class T_if_ge_2 {
+
+    public int run(float a, float b) {
+        return a >= b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.d b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.d
new file mode 100644
index 0000000..876dcdc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.d
@@ -0,0 +1,23 @@
+.source T_if_ge_3.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       if-ge v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.java b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.java
new file mode 100644
index 0000000..d524e1c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ge.d;
+
+public class T_if_ge_3 {
+
+    public int run(float a, int b) {
+        return a >= b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_4.d b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_4.d
new file mode 100644
index 0000000..3593702
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_4.d
@@ -0,0 +1,23 @@
+.source T_if_ge_4.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ge v6, v8, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_5.d b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_5.d
new file mode 100644
index 0000000..ddf627e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_5.d
@@ -0,0 +1,23 @@
+.source T_if_ge_5.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-ge v5, v6, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_6.d b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_6.d
new file mode 100644
index 0000000..74e3506
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_6.d
@@ -0,0 +1,23 @@
+.source T_if_ge_6.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-ge v5, v7, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_7.d b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_7.d
new file mode 100644
index 0000000..b3559bf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_7.d
@@ -0,0 +1,23 @@
+.source T_if_ge_7.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;I)I
+.limit regs 8
+
+       if-ge v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.d b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.d
new file mode 100644
index 0000000..254da33
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.d
@@ -0,0 +1,23 @@
+.source T_if_ge_9.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-ge v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.dfh
new file mode 100644
index 0000000..3f4b044
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c6b54091
+    91 40 B5 C6 
+// parsed: offset 12, len 20: signature           : a65c...e5f5
+    A6 5C 79 D3 A9 EE BA 8C 74 66 B9 7A 38 6E 20 6C 12 E5 E5 F5 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_ge/d/T_if_ge_9;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_ge_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "Z"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "ZII"
+    90 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ge/d/T_if_ge_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ge/d/T_if_ge_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ge_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_9.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ge v6, v7, 0004 // +0x0004
+//@mod      35 76 04 00 
+            35 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 39: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ge/d/T_if_ge_9;"
+    25 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 2F 64 2F 54 5F 69 66 5F 67 65 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 16: TYPE_STRING_DATA_ITEM [4] "T_if_ge_9.java"
+    0E 54 5F 69 66 5F 67 65 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ge/d/T_if_ge_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gez/Test_if_gez.java b/tools/vm-tests/src/dot/junit/opcodes/if_gez/Test_if_gez.java
new file mode 100644
index 0000000..da97922
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gez/Test_if_gez.java
@@ -0,0 +1,151 @@
+package dot.junit.opcodes.if_gez;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_gez.d.T_if_gez_1;
+import dot.junit.opcodes.if_gez.d.T_if_gez_2;
+
+public class Test_if_gez extends DxTestCase {
+    
+    /**
+     * @title Argument = 5
+     */
+    public void testN1() {
+        T_if_gez_1 t = new T_if_gez_1();
+        assertEquals(1, t.run(5));
+    }
+
+    /**
+     * @title Argument = -5
+     */
+    public void testN2() {
+        T_if_gez_1 t = new T_if_gez_1();
+        assertEquals(1234, t.run(-5));
+    }
+
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_if_gez_2 t = new T_if_gez_2();
+        assertEquals(1, t.run(1.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_gez_1 t = new T_if_gez_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_gez_1 t = new T_if_gez_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB3() {
+        T_if_gez_1 t = new T_if_gez_1();
+        assertEquals(1, t.run(0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title  branch must not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.d b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.d
new file mode 100644
index 0000000..85145e0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.d
@@ -0,0 +1,23 @@
+.source T_if_gez_1.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.java b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.java
new file mode 100644
index 0000000..462ed6d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gez.d;
+
+public class T_if_gez_1 {
+
+    public int run(int a) {
+        return a >= 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.d b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.d
new file mode 100644
index 0000000..503c0be
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.d
@@ -0,0 +1,23 @@
+.source T_if_gez_10.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.dfh
new file mode 100644
index 0000000..b4fa6dd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.dfh
@@ -0,0 +1,274 @@
+// Processing '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_10.dex'...
+// Opened '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 5d7e4122
+    22 41 7E 5D 
+// parsed: offset 12, len 20: signature           : 9bea...7f9b
+    9B EA D8 28 0E 81 13 A4 C2 E3 5E 59 A7 CC B3 E4 1A 47 7F 9B 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_gez/d/T_if_gez_10;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_gez_10.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "Z"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "ZI"
+    93 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gez/d/T_if_gez_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gez/d/T_if_gez_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gez_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_10.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gez v5, 0004 // +0x0004
+//@mod      3B 05 04 00 
+            3B 05 00 00            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gez/d/T_if_gez_10;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 7A 2F 64 2F 54 5F 69 66 5F 67 65 7A 5F 31 30 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_gez_10.java"
+    10 54 5F 69 66 5F 67 65 7A 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 403, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gez/d/T_if_gez_10;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.d b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.d
new file mode 100644
index 0000000..3d0a858
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.d
@@ -0,0 +1,23 @@
+.source T_if_gez_2.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-gez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.java b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.java
new file mode 100644
index 0000000..55d7605
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gez.d;
+
+public class T_if_gez_2 {
+
+    public int run(float a) {
+        return a >= 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_3.d b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_3.d
new file mode 100644
index 0000000..a4bda68
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_3.d
@@ -0,0 +1,23 @@
+.source T_if_gez_3.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gez v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_4.d b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_4.d
new file mode 100644
index 0000000..4a60845
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_4.d
@@ -0,0 +1,23 @@
+.source T_if_gez_4.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 6
+
+       if-gez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_5.d b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_5.d
new file mode 100644
index 0000000..c3d88e0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_5.d
@@ -0,0 +1,23 @@
+.source T_if_gez_5.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-gez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_6.d b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_6.d
new file mode 100644
index 0000000..666d59f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_6.d
@@ -0,0 +1,23 @@
+.source T_if_gez_6.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-gez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_7.d b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_7.d
new file mode 100644
index 0000000..9534ba0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_7.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_gez_7.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gez v0, Label9
+       const/16 v0, 1234
+       return v0
+
+Label9:
+       const/4 v0, 1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.d b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.d
new file mode 100644
index 0000000..f1df2d6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.d
@@ -0,0 +1,23 @@
+.source T_if_gez_8.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.dfh
new file mode 100644
index 0000000..307f59d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 743e41c9
+    C9 41 3E 74 
+// parsed: offset 12, len 20: signature           : 8137...c1a7
+    81 37 BE DD 96 E5 E3 AE 8E C3 09 D0 A5 41 3C 1A AC EC C1 A7 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_gez/d/T_if_gez_8;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_gez_8.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gez/d/T_if_gez_8;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gez/d/T_if_gez_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gez_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_8.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gez v5, 0004 // +0x0004
+//@mod      3B 05 04 00 
+            3B 05 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gez/d/T_if_gez_8;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 7A 2F 64 2F 54 5F 69 66 5F 67 65 7A 5F 38 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_gez_8.java"
+    0F 54 5F 69 66 5F 67 65 7A 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gez/d/T_if_gez_8;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.d b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.d
new file mode 100644
index 0000000..a0b7545
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.d
@@ -0,0 +1,24 @@
+.source T_if_gez_9.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       const v5, 0
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.dfh
new file mode 100644
index 0000000..4c24707
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : f5534081
+    81 40 53 F5 
+// parsed: offset 12, len 20: signature           : 01ee...5008
+    01 EE F6 9D DC E2 4D 51 1B 8B 52 BC 5D A5 3C 9C 1B F0 50 08 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_gez/d/T_if_gez_9;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 366 (0x00016e) "Ljava/lang/Object;"
+    6E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 386 (0x000182) "T_if_gez_9.java"
+    82 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 403 (0x000193) "V"
+    93 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 406 (0x000196) "Z"
+    96 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 409 (0x000199) "ZI"
+    99 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 413 (0x00019d) "run"
+    9D 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gez/d/T_if_gez_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gez/d/T_if_gez_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gez_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 418 (0x0001a2)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A2 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gez v5, 0004 // +0x0004
+//@mod            3B 05 04 00 
+            3B 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 6: |0004: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gez/d/T_if_gez_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 7A 2F 64 2F 54 5F 69 66 5F 67 65 7A 5F 39 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 386, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_gez_9.java"
+    0F 54 5F 69 66 5F 67 65 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 403, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 406, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 409, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 413, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gez/d/T_if_gez_9;"
+    // parsed: offset 418, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 419, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 420, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 421, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 423, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 426, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 428, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 429, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 430, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 418 (0x0001a2)
+        00 20 00 00 01 00 00 00 A2 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/Test_if_gt.java b/tools/vm-tests/src/dot/junit/opcodes/if_gt/Test_if_gt.java
new file mode 100644
index 0000000..862ba4b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/Test_if_gt.java
@@ -0,0 +1,175 @@
+package dot.junit.opcodes.if_gt;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_gt.d.T_if_gt_1;
+import dot.junit.opcodes.if_gt.d.T_if_gt_3;
+
+public class Test_if_gt extends DxTestCase {
+
+    /**
+     * @title Case: 5 < 6
+     */
+    public void testN1() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1234, t.run(5, 6));
+    }
+
+    /**
+     * @title Case: 0x0f0e0d0c = 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1234, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Case: 5 > -5
+     */
+    public void testN3() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1, t.run(5, -5));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_if_gt_3 t = new T_if_gt_3();
+        assertEquals(1, t.run(1f, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1, t.run(0, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1234, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a 
+     * @title  branch target shall not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.d b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.d
new file mode 100644
index 0000000..293c1ec
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.d
@@ -0,0 +1,23 @@
+.source T_if_gt_1.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.java b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.java
new file mode 100644
index 0000000..b71142f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gt.d;
+
+public class T_if_gt_1 {
+
+    public int run(int a, int b) {
+        return a > b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.d b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.d
new file mode 100644
index 0000000..7dd9ab7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.d
@@ -0,0 +1,24 @@
+.source T_if_gt_10.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/4 v6, 0
+       return v6
+
+Label11:
+       const v6, 0
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.dfh
new file mode 100644
index 0000000..6d0aaad
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.dfh
@@ -0,0 +1,280 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 0e2c42e5
+    E5 42 2C 0E 
+// parsed: offset 12, len 20: signature           : eb64...07d7
+    EB 64 9E 9B AE C0 F1 D7 E7 75 AE 37 77 BF 2B BB 7A D1 07 D7 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 316 (0x00013c) "<init>"
+    3C 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 324 (0x000144) "I"
+    44 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 327 (0x000147) "Ldot/junit/opcodes/if_gt/d/T_if_gt_10;"
+    47 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_gt_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 407 (0x000197) "Z"
+    97 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "ZII"
+    9A 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gt/d/T_if_gt_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gt/d/T_if_gt_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gt_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gt v6, v7, 0004 // +0x0004
+//@mod            36 76 04 00 
+            36 76 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 6: |0004: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 314, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 316, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 324, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 327, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gt/d/T_if_gt_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 2F 64 2F 54 5F 69 66 5F 67 74 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_gt_10.java"
+    0F 54 5F 69 66 5F 67 74 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 407, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gt/d/T_if_gt_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 316 (0x00013c)
+        02 20 00 00 09 00 00 00 3C 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.d b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.d
new file mode 100644
index 0000000..13fa794
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_gt_11.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.dfh
new file mode 100644
index 0000000..9822137
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.dfh
@@ -0,0 +1,278 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_11.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 6c2e423c
+    3C 42 2E 6C 
+// parsed: offset 12, len 20: signature           : 5443...b674
+    54 43 D6 BD FA E8 4D 02 23 47 91 E4 D9 A6 90 BB B7 BD B6 74 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 312 (0x000138) "<init>"
+    38 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 320 (0x000140) "F"
+    40 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 323 (0x000143) "I"
+    43 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 326 (0x000146) "IFF"
+    46 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 331 (0x00014b) "Ldot/junit/opcodes/if_gt/d/T_if_gt_11;"
+    4B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 371 (0x000173) "Ljava/lang/Object;"
+    73 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 391 (0x000187) "T_if_gt_11.java"
+    87 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 408 (0x000198) "V"
+    98 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 411 (0x00019b) "run"
+    9B 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "F"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "I"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ldot/junit/opcodes/if_gt/d/T_if_gt_11;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "Ljava/lang/Object;"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "V"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 3 (0x000003) "IFF"
+//     return_type_idx: 1 (0x000001) "I"
+//     parameters_off: 304 (0x000130)
+    03 00 00 00 01 00 00 00 30 01 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "V"
+//     return_type_idx: 4 (0x000004) "V"
+//     parameters_off: 0 (0x000000)
+    07 00 00 00 04 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 8 (0x000008) "run"
+    02 00 00 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 3 (0x000003)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    03 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 2 "Ldot/junit/opcodes/if_gt/d/T_if_gt_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 3 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 6 "T_if_gt_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 416 (0x0001a0)
+//     static_values_off: 0 (0x000000)
+    02 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 A0 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_11.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_11.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 7
+        07 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gt v6, v7, 0005 // +0x0005
+//@mod            36 76 05 00 
+            36 76 00 00 
+        // parsed: offset 292, len 4: |0002: const/16 v6, #int 1234 // #0x4d2
+            13 06 D2 04 
+        // parsed: offset 296, len 2: |0004: return v6
+            0F 06 
+        // parsed: offset 298, len 2: |0005: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 300, len 2: |0006: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 302, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 304, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 308, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 310, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 312, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 320, len 3: TYPE_STRING_DATA_ITEM [1] "F"
+    01 46 00 
+// parsed: offset 323, len 3: TYPE_STRING_DATA_ITEM [2] "I"
+    01 49 00 
+// parsed: offset 326, len 5: TYPE_STRING_DATA_ITEM [3] "IFF"
+    03 49 46 46 00 
+// parsed: offset 331, len 40: TYPE_STRING_DATA_ITEM [4] "Ldot/junit/opcodes/if_gt/d/T_if_gt_11;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 2F 64 2F 54 5F 69 66 5F 67 74 5F 31 31 3B 00 
+// parsed: offset 371, len 20: TYPE_STRING_DATA_ITEM [5] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 391, len 17: TYPE_STRING_DATA_ITEM [6] "T_if_gt_11.java"
+    0F 54 5F 69 66 5F 67 74 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 408, len 3: TYPE_STRING_DATA_ITEM [7] "V"
+    01 56 00 
+// parsed: offset 411, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gt/d/T_if_gt_11;"
+    // parsed: offset 416, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 417, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 418, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 419, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 421, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 424, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 426, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 427, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 428, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 430, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 304 (0x000130)
+        01 10 00 00 01 00 00 00 30 01 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 312 (0x000138)
+        02 20 00 00 09 00 00 00 38 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 416 (0x0001a0)
+        00 20 00 00 01 00 00 00 A0 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.d b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.d
new file mode 100644
index 0000000..30e3b81
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_gt_2.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.java b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.java
new file mode 100644
index 0000000..136d619
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.if_gt.d;
+
+public class T_if_gt_2 {
+
+    public int run(float a, float b) {
+        return a > b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.d b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.d
new file mode 100644
index 0000000..75d4d17
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.d
@@ -0,0 +1,23 @@
+.source T_if_gt_3.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.java b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.java
new file mode 100644
index 0000000..9d53767
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gt.d;
+
+public class T_if_gt_3 {
+
+    public int run(float a, int b) {
+        return a > b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_4.d b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_4.d
new file mode 100644
index 0000000..f1ebef1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_4.d
@@ -0,0 +1,23 @@
+.source T_if_gt_4.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-gt v7, v8, Label11
+       const/16 v7, 1234
+       return v7
+
+Label11:
+       const/4 v7, 1
+       return v7
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_5.d b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_5.d
new file mode 100644
index 0000000..829291b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_5.d
@@ -0,0 +1,23 @@
+.source T_if_gt_5.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-gt v5, v6, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_6.d b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_6.d
new file mode 100644
index 0000000..39b3541
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_6.d
@@ -0,0 +1,23 @@
+.source T_if_gt_6.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-gt v5, v7, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_7.d b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_7.d
new file mode 100644
index 0000000..88b8364
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_7.d
@@ -0,0 +1,23 @@
+.source T_if_gt_7.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;I)I
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_8.d b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_8.d
new file mode 100644
index 0000000..8325322
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_8.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_gt_8.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-gt v6, v0, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.d b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.d
new file mode 100644
index 0000000..198d870
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.d
@@ -0,0 +1,23 @@
+.source T_if_gt_9.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/4 v6, 0
+       return v6
+
+Label11:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.dfh
new file mode 100644
index 0000000..a9549db
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c6c73e51
+    51 3E C7 C6 
+// parsed: offset 12, len 20: signature           : e023...c1e9
+    E0 23 56 87 13 06 4B 95 E5 A7 64 7B 18 5C 6F 2D BC 12 C1 E9 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_gt/d/T_if_gt_9;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_gt_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "Z"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "ZII"
+    90 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gt/d/T_if_gt_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gt/d/T_if_gt_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gt_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_9.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gt v6, v7, 0004 // +0x0004
+//@mod      36 76 04 00 
+            36 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 39: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gt/d/T_if_gt_9;"
+    25 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 2F 64 2F 54 5F 69 66 5F 67 74 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 16: TYPE_STRING_DATA_ITEM [4] "T_if_gt_9.java"
+    0E 54 5F 69 66 5F 67 74 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gt/d/T_if_gt_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gtz/Test_if_gtz.java b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/Test_if_gtz.java
new file mode 100644
index 0000000..86a5535
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/Test_if_gtz.java
@@ -0,0 +1,151 @@
+package dot.junit.opcodes.if_gtz;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_gtz.d.T_if_gtz_1;
+import dot.junit.opcodes.if_gtz.d.T_if_gtz_2;
+
+public class Test_if_gtz extends DxTestCase {
+
+    /**
+     * @title Argument = 5
+     */
+    public void testN1() {
+        T_if_gtz_1 t = new T_if_gtz_1();
+        assertEquals(1, t.run(5));
+    }
+
+    /**
+     * @title Argument = -5
+     */
+    public void testN2() {
+        T_if_gtz_1 t = new T_if_gtz_1();
+        assertEquals(1234, t.run(-5));
+    }
+
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_if_gtz_2 t = new T_if_gtz_2();
+        assertEquals(1, t.run(1.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_gtz_1 t = new T_if_gtz_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_gtz_1 t = new T_if_gtz_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB3() {
+        T_if_gtz_1 t = new T_if_gtz_1();
+        assertEquals(1234, t.run(0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title  branch must not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.d b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.d
new file mode 100644
index 0000000..2207436
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_1.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gtz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.java b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.java
new file mode 100644
index 0000000..cca881f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gtz.d;
+
+public class T_if_gtz_1 {
+
+    public int run(int a) {
+        return a > 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.d b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.d
new file mode 100644
index 0000000..4119a6e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.d
@@ -0,0 +1,24 @@
+.source T_if_gtz_10.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gtz v5, Label8
+       const/4 v0, 0
+       return v0
+
+Label8:
+       nop
+       const v0, 0
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.dfh
new file mode 100644
index 0000000..5007f63
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.dfh
@@ -0,0 +1,278 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 63564126
+    26 41 56 63 
+// parsed: offset 12, len 20: signature           : a735...e471
+    A7 35 3A 24 84 99 A8 9A B8 55 11 8C 64 FC 37 6F C2 8A E4 71 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_10;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_gtz_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 405 (0x000195) "V"
+    95 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 408 (0x000198) "Z"
+    98 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 411 (0x00019b) "ZI"
+    9B 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gtz_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_10.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gtz v5, 0004 // +0x0004
+//@mod            3C 05 04 00 
+            3C 05 00 00 
+        // parsed: offset 292, len 2: |0002: const/4 v0, #int 0 // #0x0
+            12 00 
+        // parsed: offset 294, len 2: |0003: return v0
+            0F 00 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 6: |0005: const v0, #float 0.000000 // #0x00000000 int
+            14 00 00 00 00 00 
+        // parsed: offset 304, len 2: |0008: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_10;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 7A 2F 64 2F 54 5F 69 66 5F 67 74 7A 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_gtz_10.java"
+    10 54 5F 69 66 5F 67 74 7A 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 405, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 408, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 411, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.d b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.d
new file mode 100644
index 0000000..b57c6ab
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_2.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-gtz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.java b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.java
new file mode 100644
index 0000000..ea1def0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gtz.d;
+
+public class T_if_gtz_2 {
+
+    public int run(float a) {
+        return a > 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_3.d b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_3.d
new file mode 100644
index 0000000..c2db4b7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_3.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_3.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gtz v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_4.d b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_4.d
new file mode 100644
index 0000000..98e01e7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_4.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_4.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 6
+
+       if-gtz v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_5.d b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_5.d
new file mode 100644
index 0000000..29f8800
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_5.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_5.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-gtz v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_6.d b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_6.d
new file mode 100644
index 0000000..a91668e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_6.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_6.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-gtz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_7.d b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_7.d
new file mode 100644
index 0000000..71a5bfc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_7.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_gtz_7.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gtz v0, Label9
+       const/16 v0, 1234
+       return v0
+
+Label9:
+       const/4 v0, 1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.d b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.d
new file mode 100644
index 0000000..5bf3d9c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.d
@@ -0,0 +1,24 @@
+.source T_if_gtz_8.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gtz v5, Label8
+       const/4 v0, 0
+       return v0
+
+Label8:
+       nop
+       const/4 v0, 0
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.dfh
new file mode 100644
index 0000000..2af60bc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.dfh
@@ -0,0 +1,276 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 00484033
+    33 40 48 00 
+// parsed: offset 12, len 20: signature           : d58a...b651
+    D5 8A 12 27 F2 10 E0 5C 52 C9 68 FB 6C 6D 37 15 4D E8 B6 51 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 310 (0x000136) "<init>"
+    36 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 318 (0x00013e) "I"
+    3E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 321 (0x000141) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_8;"
+    41 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 362 (0x00016a) "Ljava/lang/Object;"
+    6A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 382 (0x00017e) "T_if_gtz_8.java"
+    7E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 399 (0x00018f) "V"
+    8F 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 402 (0x000192) "Z"
+    92 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 405 (0x000195) "ZI"
+    95 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 409 (0x000199) "run"
+    99 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_8;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 304 (0x000130)
+    07 00 00 00 04 00 00 00 30 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gtz_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 414 (0x00019e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_8.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 7
+        07 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gtz v5, 0004 // +0x0004
+//@mod            3C 05 04 00 
+            3C 05 04 01 
+        // parsed: offset 292, len 2: |0002: const/4 v0, #int 0 // #0x0
+            12 00 
+        // parsed: offset 294, len 2: |0003: return v0
+            0F 00 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: const/4 v0, #int 0 // #0x0
+            12 00 
+        // parsed: offset 300, len 2: |0006: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 302, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 304, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 308, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 310, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 318, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 321, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_8;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 7A 2F 64 2F 54 5F 69 66 5F 67 74 7A 5F 38 3B 00 
+// parsed: offset 362, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 382, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_gtz_8.java"
+    0F 54 5F 69 66 5F 67 74 7A 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 402, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 405, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 409, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_8;"
+    // parsed: offset 414, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 415, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 416, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 417, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 419, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 422, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 425, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 426, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 304 (0x000130)
+        01 10 00 00 01 00 00 00 30 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 310 (0x000136)
+        02 20 00 00 09 00 00 00 36 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 414 (0x00019e)
+        00 20 00 00 01 00 00 00 9E 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.d b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.d
new file mode 100644
index 0000000..08e8ff9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_9.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gtz v5, Label8
+       const/4 v0, 0
+       return v0
+
+Label8:
+       const v0, 0
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.dfh
new file mode 100644
index 0000000..1c600fc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 910f41e3
+    E3 41 0F 91 
+// parsed: offset 12, len 20: signature           : 897e...e923
+    89 7E 66 D4 A6 63 A4 C3 FF C5 35 EC 5B 7C 65 85 1B E2 E9 23 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 310 (0x000136) "<init>"
+    36 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 318 (0x00013e) "I"
+    3E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 321 (0x000141) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_9;"
+    41 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 362 (0x00016a) "Ljava/lang/Object;"
+    6A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 382 (0x00017e) "T_if_gtz_9.java"
+    7E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 399 (0x00018f) "V"
+    8F 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 402 (0x000192) "Z"
+    92 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 405 (0x000195) "ZI"
+    95 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 409 (0x000199) "run"
+    99 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 304 (0x000130)
+    07 00 00 00 04 00 00 00 30 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gtz_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 414 (0x00019e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gtz v5, 0004 // +0x0004
+//@mod            3C 05 04 00 
+            3C 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v0, #int 0 // #0x0
+            12 00 
+        // parsed: offset 294, len 2: |0003: return v0
+            0F 00 
+        // parsed: offset 296, len 6: |0004: const v0, #float 0.000000 // #0x00000000 int
+            14 00 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 304, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 308, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 310, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 318, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 321, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 7A 2F 64 2F 54 5F 69 66 5F 67 74 7A 5F 39 3B 00 
+// parsed: offset 362, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 382, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_gtz_9.java"
+    0F 54 5F 69 66 5F 67 74 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 402, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 405, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 409, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_9;"
+    // parsed: offset 414, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 415, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 416, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 417, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 419, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 422, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 425, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 426, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 304 (0x000130)
+        01 10 00 00 01 00 00 00 30 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 310 (0x000136)
+        02 20 00 00 09 00 00 00 36 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 414 (0x00019e)
+        00 20 00 00 01 00 00 00 9E 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_le/Test_if_le.java b/tools/vm-tests/src/dot/junit/opcodes/if_le/Test_if_le.java
new file mode 100644
index 0000000..852324b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_le/Test_if_le.java
@@ -0,0 +1,176 @@
+package dot.junit.opcodes.if_le;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_le.d.T_if_le_1;
+import dot.junit.opcodes.if_le.d.T_if_le_11;
+
+public class Test_if_le extends DxTestCase {
+    
+    /**
+     * @title Case: 5 < 6
+     */
+    public void testN1() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1, t.run(5, 6));
+    }
+
+    /**
+     * @title Case: 0x0f0e0d0c = 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Case: 5 > -5
+     */
+    public void testN3() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1234, t.run(5, -5));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_if_le_11 t = new T_if_le_11();
+        assertEquals(1, t.run(1, 1f));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1234, t.run(0, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title branch target shall not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_1.d b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_1.d
new file mode 100644
index 0000000..a9fbd14
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_1.d
@@ -0,0 +1,23 @@
+.source T_if_le_1.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-le v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_1.java b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_1.java
new file mode 100644
index 0000000..65d5da6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_le.d;
+
+public class T_if_le_1 {
+
+    public int run(int a, int b) {
+        return a <= b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_10.d b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_10.d
new file mode 100644
index 0000000..7c9ca12
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_10.d
@@ -0,0 +1,24 @@
+.source T_if_le_10.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-le v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       const v6, 0
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_10.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_10.dfh
new file mode 100644
index 0000000..9c55965
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_10.dfh
@@ -0,0 +1,280 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 0713407a
+    7A 40 13 07 
+// parsed: offset 12, len 20: signature           : eb53...56c4
+    EB 53 CD DC C5 02 DC 05 C8 B3 F8 3D 81 26 1E 13 2F 96 56 C4 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 316 (0x00013c) "<init>"
+    3C 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 324 (0x000144) "I"
+    44 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 327 (0x000147) "Ldot/junit/opcodes/if_le/d/T_if_le_10;"
+    47 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_le_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 407 (0x000197) "Z"
+    97 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "ZII"
+    9A 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_le/d/T_if_le_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_le/d/T_if_le_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_le_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-le v6, v7, 0004 // +0x0004
+//@mod            37 76 04 00 
+            37 76 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 6: |0004: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 314, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 316, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 324, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 327, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_le/d/T_if_le_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 2F 64 2F 54 5F 69 66 5F 6C 65 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_le_10.java"
+    0F 54 5F 69 66 5F 6C 65 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 407, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_le/d/T_if_le_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 316 (0x00013c)
+        02 20 00 00 09 00 00 00 3C 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_11.d b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_11.d
new file mode 100644
index 0000000..aaeecc9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_11.d
@@ -0,0 +1,23 @@
+.source T_if_le_11.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 8
+
+       if-le v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_11.java b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_11.java
new file mode 100644
index 0000000..b92d796
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_11.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_le.d;
+
+public class T_if_le_11 {
+
+    public int run(int a, float b) {
+        return a <= b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_12.d b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_12.d
new file mode 100644
index 0000000..2f9f581
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_12.d
@@ -0,0 +1,23 @@
+.source T_if_le_12.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-le v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_12.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_12.dfh
new file mode 100644
index 0000000..a8735cf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_12.dfh
@@ -0,0 +1,272 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_12.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : cae53e73
+    73 3E E5 CA 
+// parsed: offset 12, len 20: signature           : 28b0...6742
+    28 B0 39 0C B7 33 C6 C9 90 4E 13 C6 72 E1 E3 3E 9A 8A 67 42 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 304 (0x000130) "<init>"
+    30 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 312 (0x000138) "I"
+    38 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 315 (0x00013b) "III"
+    3B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 320 (0x000140) "Ldot/junit/opcodes/if_le/d/T_if_le_12;"
+    40 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 360 (0x000168) "Ljava/lang/Object;"
+    68 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 380 (0x00017c) "T_if_le_12.java"
+    7C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "run"
+    90 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/if_le/d/T_if_le_12;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "III"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 296 (0x000128)
+    02 00 00 00 00 00 00 00 28 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_le/d/T_if_le_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_if_le_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 405 (0x000195)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 95 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_12.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_12.run"
+    // parsed: offset 264, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 266, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 7
+        07 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: if-le v6, v7, 0005 // +0x0005
+//@mod            37 76 05 00 
+            37 76 00 00 
+        // parsed: offset 284, len 4: |0002: const/16 v6, #int 1234 // #0x4d2
+            13 06 D2 04 
+        // parsed: offset 288, len 2: |0004: return v6
+            0F 06 
+        // parsed: offset 290, len 2: |0005: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 292, len 2: |0006: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 296, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 300, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 302, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 304, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 312, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 315, len 5: TYPE_STRING_DATA_ITEM [2] "III"
+    03 49 49 49 00 
+// parsed: offset 320, len 40: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/if_le/d/T_if_le_12;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 2F 64 2F 54 5F 69 66 5F 6C 65 5F 31 32 3B 00 
+// parsed: offset 360, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 380, len 17: TYPE_STRING_DATA_ITEM [5] "T_if_le_12.java"
+    0F 54 5F 69 66 5F 6C 65 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_le/d/T_if_le_12;"
+    // parsed: offset 405, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 406, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 408, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 409, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 410, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 413, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 415, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 416, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 417, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 419, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 296 (0x000128)
+        01 10 00 00 01 00 00 00 28 01 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 304 (0x000130)
+        02 20 00 00 08 00 00 00 30 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 405 (0x000195)
+        00 20 00 00 01 00 00 00 95 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_3.d b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_3.d
new file mode 100644
index 0000000..e389992
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_3.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_le_3.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       if-le v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_4.d b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_4.d
new file mode 100644
index 0000000..514c26b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_4.d
@@ -0,0 +1,23 @@
+.source T_if_le_4.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-le v6, v8, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_5.d b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_5.d
new file mode 100644
index 0000000..a70e43f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_5.d
@@ -0,0 +1,23 @@
+.source T_if_le_5.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-le v5, v6, Label11
+       const/16 v5, 1234
+       return v5
+       
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_6.d b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_6.d
new file mode 100644
index 0000000..fb8bb3c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_6.d
@@ -0,0 +1,23 @@
+.source T_if_le_6.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-le v5, v7, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_7.d b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_7.d
new file mode 100644
index 0000000..cf76654
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_7.d
@@ -0,0 +1,23 @@
+.source T_if_le_7.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;I)I
+.limit regs 8
+
+       if-le v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_8.d b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_8.d
new file mode 100644
index 0000000..34562f1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_8.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_le_8.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-le v6, v0, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_9.d b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_9.d
new file mode 100644
index 0000000..99fa7c4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_9.d
@@ -0,0 +1,23 @@
+.source T_if_le_9.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-le v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_9.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_9.dfh
new file mode 100644
index 0000000..51da483
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_le/d/T_if_le_9.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 9b4b41ee
+    EE 41 4B 9B 
+// parsed: offset 12, len 20: signature           : eaf2...5695
+    EA F2 77 CB B7 40 83 E4 FA CE 5D C9 DE E0 C3 20 0C 85 56 95 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_le/d/T_if_le_9;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_le_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "Z"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "ZII"
+    90 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_le/d/T_if_le_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_le/d/T_if_le_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_le_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_9.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-le v6, v7, 0004 // +0x0004
+//@mod      37 76 04 00 
+            37 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 39: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_le/d/T_if_le_9;"
+    25 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 2F 64 2F 54 5F 69 66 5F 6C 65 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 16: TYPE_STRING_DATA_ITEM [4] "T_if_le_9.java"
+    0E 54 5F 69 66 5F 6C 65 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_le/d/T_if_le_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lez/Test_if_lez.java b/tools/vm-tests/src/dot/junit/opcodes/if_lez/Test_if_lez.java
new file mode 100644
index 0000000..4f72938
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lez/Test_if_lez.java
@@ -0,0 +1,152 @@
+package dot.junit.opcodes.if_lez;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_lez.d.T_if_lez_1;
+import dot.junit.opcodes.if_lez.d.T_if_lez_2;
+
+public class Test_if_lez extends DxTestCase {
+
+    /**
+     * @title Argument = 5
+     */
+    public void testN1() {
+        T_if_lez_1 t = new T_if_lez_1();
+        assertEquals(1234, t.run(5));
+    }
+
+    /**
+     * @title Argument = -5
+     */
+    public void testN2() {
+        T_if_lez_1 t = new T_if_lez_1();
+        assertEquals(1, t.run(-5));
+    }
+
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_if_lez_2 t = new T_if_lez_2();
+        assertEquals(1, t.run(-1.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_lez_1 t = new T_if_lez_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_lez_1 t = new T_if_lez_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB3() {
+        T_if_lez_1 t = new T_if_lez_1();
+        assertEquals(1, t.run(0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title branch must not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.d b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.d
new file mode 100644
index 0000000..6429797
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.d
@@ -0,0 +1,23 @@
+.source T_if_lez_1.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-lez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.java b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.java
new file mode 100644
index 0000000..b3d7441
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_lez.d;
+
+public class T_if_lez_1 {
+
+    public int run(int a) {
+        return a <= 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.d b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.d
new file mode 100644
index 0000000..82a8268
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.d
@@ -0,0 +1,23 @@
+.source T_if_lez_10.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-lez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.dfh
new file mode 100644
index 0000000..66ce09b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.dfh
@@ -0,0 +1,274 @@
+// Processing '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_10.dex'...
+// Opened '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : ca1e4159
+    59 41 1E CA 
+// parsed: offset 12, len 20: signature           : 43ef...3a58
+    43 EF DB CD B8 45 E7 FA DE 03 53 F0 4C 14 8B A8 BE 13 3A 58 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_lez/d/T_if_lez_10;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_lez_10.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "Z"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "ZI"
+    93 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lez/d/T_if_lez_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lez/d/T_if_lez_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lez_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_10.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lez v5, 0004 // +0x0004
+//@mod      3D 05 04 00 
+            3D 05 00 00            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lez/d/T_if_lez_10;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 7A 2F 64 2F 54 5F 69 66 5F 6C 65 7A 5F 31 30 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_lez_10.java"
+    10 54 5F 69 66 5F 6C 65 7A 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 403, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lez/d/T_if_lez_10;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.d b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.d
new file mode 100644
index 0000000..cbe7f34
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.d
@@ -0,0 +1,23 @@
+.source T_if_lez_2.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-lez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.java b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.java
new file mode 100644
index 0000000..37ce198
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_lez.d;
+
+public class T_if_lez_2 {
+
+    public int run(float a) {
+        return a <= 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_3.d b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_3.d
new file mode 100644
index 0000000..4efd27a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_3.d
@@ -0,0 +1,23 @@
+.source T_if_lez_3.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-lez v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_4.d b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_4.d
new file mode 100644
index 0000000..985254d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_4.d
@@ -0,0 +1,23 @@
+.source T_if_lez_4.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 6
+
+       if-lez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_5.d b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_5.d
new file mode 100644
index 0000000..705c855
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_5.d
@@ -0,0 +1,23 @@
+.source T_if_lez_5.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-lez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_6.d b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_6.d
new file mode 100644
index 0000000..596f1d0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_6.d
@@ -0,0 +1,23 @@
+.source T_if_lez_6.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-lez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_7.d b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_7.d
new file mode 100644
index 0000000..129b4bb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_7.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_lez_7.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-lez v0, Label9
+       const/16 v0, 1234
+       return v0
+
+Label9:
+       const/4 v0, 1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.d b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.d
new file mode 100644
index 0000000..b21ab3e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.d
@@ -0,0 +1,23 @@
+.source T_if_lez_8.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-lez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.dfh
new file mode 100644
index 0000000..d1e27e4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 65b03e79
+    79 3E B0 65 
+// parsed: offset 12, len 20: signature           : 3e9a...b229
+    3E 9A CC 34 9B 91 4F 6B 11 37 FE 19 56 10 75 54 A2 9B B2 29 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_lez/d/T_if_lez_8;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_lez_8.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lez/d/T_if_lez_8;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lez/d/T_if_lez_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lez_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_8.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lez v5, 0004 // +0x0004
+//@mod      3D 05 04 00 
+            3D 05 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lez/d/T_if_lez_8;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 7A 2F 64 2F 54 5F 69 66 5F 6C 65 7A 5F 38 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_lez_8.java"
+    0F 54 5F 69 66 5F 6C 65 7A 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lez/d/T_if_lez_8;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.d b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.d
new file mode 100644
index 0000000..5efdeba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.d
@@ -0,0 +1,24 @@
+.source T_if_lez_9.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-lez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       const v5, 0
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.dfh
new file mode 100644
index 0000000..4ea81be
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 4845421a
+    1A 42 45 48 
+// parsed: offset 12, len 20: signature           : 9aec...318f
+    9A EC E7 D4 FF 76 22 57 6F 40 A8 ED 6A 91 9F 1B EF 80 31 8F 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_lez/d/T_if_lez_9;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 366 (0x00016e) "Ljava/lang/Object;"
+    6E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 386 (0x000182) "T_if_lez_9.java"
+    82 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 403 (0x000193) "V"
+    93 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 406 (0x000196) "Z"
+    96 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 409 (0x000199) "ZI"
+    99 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 413 (0x00019d) "run"
+    9D 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lez/d/T_if_lez_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lez/d/T_if_lez_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lez_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 418 (0x0001a2)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A2 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lez v5, 0004 // +0x0004
+//@mod            3D 05 04 00 
+            3D 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 6: |0004: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lez/d/T_if_lez_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 7A 2F 64 2F 54 5F 69 66 5F 6C 65 7A 5F 39 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 386, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_lez_9.java"
+    0F 54 5F 69 66 5F 6C 65 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 403, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 406, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 409, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 413, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lez/d/T_if_lez_9;"
+    // parsed: offset 418, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 419, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 420, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 421, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 423, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 426, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 428, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 429, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 430, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 418 (0x0001a2)
+        00 20 00 00 01 00 00 00 A2 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lt/Test_if_lt.java b/tools/vm-tests/src/dot/junit/opcodes/if_lt/Test_if_lt.java
new file mode 100644
index 0000000..26a3faa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lt/Test_if_lt.java
@@ -0,0 +1,175 @@
+package dot.junit.opcodes.if_lt;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_lt.d.T_if_lt_1;
+import dot.junit.opcodes.if_lt.d.T_if_lt_11;
+
+public class Test_if_lt extends DxTestCase {
+
+    /**
+     * @title Case: 5 < 6
+     */
+    public void testN1() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1, t.run(5, 6));
+    }
+
+    /**
+     * @title Case: 0x0f0e0d0c = 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Case: 5 > -5
+     */
+    public void testN3() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(5, -5));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_if_lt_11 t = new T_if_lt_11();
+        assertEquals(1, t.run(1, 1f));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(0, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a 
+     * @title branch target shall not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.d b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.d
new file mode 100644
index 0000000..c81d8b3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_1.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-lt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.java b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.java
new file mode 100644
index 0000000..5a2e8e1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_lt.d;
+
+public class T_if_lt_1 {
+
+    public int run(int a, int b) {
+        return a < b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.d b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.d
new file mode 100644
index 0000000..4821984
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.d
@@ -0,0 +1,24 @@
+.source T_if_lt_10.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-lt v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       const v6, 0
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.dfh
new file mode 100644
index 0000000..bb2ed5a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.dfh
@@ -0,0 +1,280 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c726416b
+    6B 41 26 C7 
+// parsed: offset 12, len 20: signature           : 7db8...3ca9
+    7D B8 1E 21 EA 87 C8 52 ED CF 14 C9 4B F4 E9 12 D4 32 3C A9 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 316 (0x00013c) "<init>"
+    3C 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 324 (0x000144) "I"
+    44 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 327 (0x000147) "Ldot/junit/opcodes/if_lt/d/T_if_lt_10;"
+    47 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_lt_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 407 (0x000197) "Z"
+    97 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "ZII"
+    9A 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lt/d/T_if_lt_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lt/d/T_if_lt_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lt_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lt v6, v7, 0004 // +0x0004
+//@mod            34 76 04 00 
+            34 76 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 6: |0004: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 314, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 316, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 324, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 327, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lt/d/T_if_lt_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 2F 64 2F 54 5F 69 66 5F 6C 74 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_lt_10.java"
+    0F 54 5F 69 66 5F 6C 74 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 407, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lt/d/T_if_lt_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 316 (0x00013c)
+        02 20 00 00 09 00 00 00 3C 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.d b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.d
new file mode 100644
index 0000000..7e80ecf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_11.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 8
+
+       if-lt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.java b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.java
new file mode 100644
index 0000000..cc3323f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_lt.d;
+
+public class T_if_lt_11 {
+
+    public int run(int a, float b) {
+        return a < b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.d b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.d
new file mode 100644
index 0000000..f9083cf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.d
@@ -0,0 +1,23 @@
+.source T_if_lt_12.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-lt v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.dfh
new file mode 100644
index 0000000..aed0448
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.dfh
@@ -0,0 +1,276 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_12.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 69884064
+    64 40 88 69 
+// parsed: offset 12, len 20: signature           : 48bf...a511
+    48 BF EF 03 CC F9 FF EF 11 EC 1C 2E E4 83 0B D9 37 34 A5 11 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_lt/d/T_if_lt_12;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_lt_12.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "Z"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 402 (0x000192) "ZII"
+    92 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lt/d/T_if_lt_12;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lt/d/T_if_lt_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lt_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_12.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_12.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lt v6, v7, 0004 // +0x0004
+//@mod            34 76 04 00 
+            34 76 00 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lt/d/T_if_lt_12;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 2F 64 2F 54 5F 69 66 5F 6C 74 5F 31 32 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_lt_12.java"
+    0F 54 5F 69 66 5F 6C 74 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 402, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lt/d/T_if_lt_12;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.d b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.d
new file mode 100644
index 0000000..94546c9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_if_icmpge_2.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       if-lt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.java b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.java
new file mode 100644
index 0000000..14e148c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.if_lt.d;
+
+public class T_if_lt_2 {
+
+    public int run(float a, float b) {
+        return a < b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_4.d b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_4.d
new file mode 100644
index 0000000..9a93ac6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_4.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_4.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-lt v6, v8, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_5.d b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_5.d
new file mode 100644
index 0000000..7d77ad9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_5.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_5.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-lt v5, v6, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_6.d b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_6.d
new file mode 100644
index 0000000..9d1910e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_6.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_6.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-lt v5, v7, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_7.d b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_7.d
new file mode 100644
index 0000000..8d126c7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_7.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_7.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;I)I
+.limit regs 8
+
+       if-lt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.d b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.d
new file mode 100644
index 0000000..8c2f2ee
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.d
@@ -0,0 +1,23 @@
+.source T_if_lt_9.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-lt v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.dfh
new file mode 100644
index 0000000..10b38ab
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : b45f4033
+    33 40 5F B4 
+// parsed: offset 12, len 20: signature           : 4cb8...7b33
+    4C B8 1D 60 D7 F6 8E D3 C9 42 C8 6B 13 3F AD C6 EB 57 7B 33 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_lt/d/T_if_lt_9;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_lt_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "Z"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "ZII"
+    90 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lt/d/T_if_lt_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lt/d/T_if_lt_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lt_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_9.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lt v6, v7, 0004 // +0x0004
+//@mod      34 76 04 00 
+            34 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 39: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lt/d/T_if_lt_9;"
+    25 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 2F 64 2F 54 5F 69 66 5F 6C 74 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 16: TYPE_STRING_DATA_ITEM [4] "T_if_lt_9.java"
+    0E 54 5F 69 66 5F 6C 74 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lt/d/T_if_lt_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ltz/Test_if_ltz.java b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/Test_if_ltz.java
new file mode 100644
index 0000000..b70d16e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/Test_if_ltz.java
@@ -0,0 +1,150 @@
+package dot.junit.opcodes.if_ltz;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_ltz.d.T_if_ltz_1;
+import dot.junit.opcodes.if_ltz.d.T_if_ltz_2;
+
+public class Test_if_ltz extends DxTestCase {
+
+    /**
+     * @title Argument = 5
+     */
+    public void testN1() {
+        T_if_ltz_1 t = new T_if_ltz_1();
+        assertEquals(1234, t.run(5));
+    }
+
+    /**
+     * @title Argument = -5
+     */
+    public void testN2() {
+        T_if_ltz_1 t = new T_if_ltz_1();
+        assertEquals(1, t.run(-5));
+    }
+
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_if_ltz_2 t = new T_if_ltz_2();
+        assertEquals(1234, t.run(1.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_ltz_1 t = new T_if_ltz_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_ltz_1 t = new T_if_ltz_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB3() {
+        T_if_ltz_1 t = new T_if_ltz_1();
+        assertEquals(1234, t.run(0));
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title branch must not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.d b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.d
new file mode 100644
index 0000000..7022a90
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_1.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-ltz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.java b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.java
new file mode 100644
index 0000000..7e666cf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ltz.d;
+
+public class T_if_ltz_1 {
+
+    public int run(int a) {
+        return a < 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.d b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.d
new file mode 100644
index 0000000..aa01356
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_2.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-ltz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.java b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.java
new file mode 100644
index 0000000..0c0480e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ltz.d;
+
+public class T_if_ltz_2 {
+
+    public int run(float a) {
+        return a < 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_3.d b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_3.d
new file mode 100644
index 0000000..d2405ed
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_3.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_3.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-ltz v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_4.d b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_4.d
new file mode 100644
index 0000000..804ef88
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_4.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_4.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 6
+
+       if-ltz v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_5.d b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_5.d
new file mode 100644
index 0000000..af8e741
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_5.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_5.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-ltz v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_6.d b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_6.d
new file mode 100644
index 0000000..c56730f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_6.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_6.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-ltz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.d b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.d
new file mode 100644
index 0000000..f14a551
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_7.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-ltz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.dfh
new file mode 100644
index 0000000..afb4652
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.dfh
@@ -0,0 +1,272 @@
+// Processing '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.dex'...
+// Opened '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 7337400f
+    0F 40 37 73 
+// parsed: offset 12, len 20: signature           : 0250...bf7f
+    02 50 04 7A E3 17 74 3C 13 73 F6 D7 EA 11 9E F4 EC 4E BF 7F 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_7;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_ltz_7.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_7;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_7;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ltz_7.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_7.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_7.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ltz v5, 0004 // +0x0004
+//@mod      3A 05 04 00 
+            3A 05 00 00            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_7;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 7A 2F 64 2F 54 5F 69 66 5F 6C 74 7A 5F 37 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ltz_7.java"
+    0F 54 5F 69 66 5F 6C 74 7A 5F 37 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_7;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.d b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.d
new file mode 100644
index 0000000..650e299
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_8.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-ltz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.dfh
new file mode 100644
index 0000000..dc3b594
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 6a9b3f87
+    87 3F 9B 6A 
+// parsed: offset 12, len 20: signature           : 2cbc...44c1
+    2C BC B6 C9 37 D4 49 42 95 BD 36 89 BC B0 07 51 07 6A 44 C1 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_8;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_ltz_8.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_8;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ltz_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_8.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ltz v5, 0004 // +0x0004
+//@mod      3A 05 04 00 
+            3A 05 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_8;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 7A 2F 64 2F 54 5F 69 66 5F 6C 74 7A 5F 38 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ltz_8.java"
+    0F 54 5F 69 66 5F 6C 74 7A 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_8;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.d b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.d
new file mode 100644
index 0000000..3b4a3dc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.d
@@ -0,0 +1,24 @@
+.source T_if_ltz_9.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-ltz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       const v5, 0
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.dfh
new file mode 100644
index 0000000..dc5146c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 9e5c41e6
+    E6 41 5C 9E 
+// parsed: offset 12, len 20: signature           : c9e3...0f3f
+    C9 E3 71 AB 73 15 F5 E7 72 4D 3A A7 77 F4 E9 3F FF 4D 0F 3F 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_9;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 366 (0x00016e) "Ljava/lang/Object;"
+    6E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 386 (0x000182) "T_if_ltz_9.java"
+    82 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 403 (0x000193) "V"
+    93 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 406 (0x000196) "Z"
+    96 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 409 (0x000199) "ZI"
+    99 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 413 (0x00019d) "run"
+    9D 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ltz_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 418 (0x0001a2)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A2 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ltz v5, 0004 // +0x0004
+//@mod            3A 05 04 00 
+            3A 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 6: |0004: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 7A 2F 64 2F 54 5F 69 66 5F 6C 74 7A 5F 39 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 386, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ltz_9.java"
+    0F 54 5F 69 66 5F 6C 74 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 403, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 406, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 409, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 413, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_9;"
+    // parsed: offset 418, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 419, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 420, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 421, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 423, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 426, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 428, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 429, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 430, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 418 (0x0001a2)
+        00 20 00 00 01 00 00 00 A2 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ne/Test_if_ne.java b/tools/vm-tests/src/dot/junit/opcodes/if_ne/Test_if_ne.java
new file mode 100644
index 0000000..610fe96
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ne/Test_if_ne.java
@@ -0,0 +1,205 @@
+package dot.junit.opcodes.if_ne;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_ne.d.T_if_ne_1;
+import dot.junit.opcodes.if_ne.d.T_if_ne_2;
+import dot.junit.opcodes.if_ne.d.T_if_ne_4;
+
+public class Test_if_ne extends DxTestCase {
+
+    /**
+     * @title Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1, t.run(5, 6));
+    }
+
+    /**
+     * @title Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1234, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1, t.run(5, -5));
+    }
+
+    /**
+     * @title Arguments = 0x01001234, 0x1234
+     */
+    public void testN4() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1, t.run(0x01001234, 0x1234));
+    }
+    
+    /**
+     * @title compare references
+     */
+    public void testN5() {
+        T_if_ne_2 t = new T_if_ne_2();
+        String a = "a";
+        String b = "b";
+        assertEquals(1, t.run(a, b));
+    }
+
+    /**
+     * @title compare references
+     */
+    public void testN6() {
+        T_if_ne_2 t = new T_if_ne_2();
+        String a = "a";
+        assertEquals(1234, t.run(a, a));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_if_ne_4 t = new T_if_ne_4();
+        assertEquals(1, t.run(1f, 1));
+    }  
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 1234567
+     */
+    public void testB3() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1, t.run(0, 1234567));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB4() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1234, t.run(0, 0));
+    }
+    
+    /**
+     * @title Compare with null
+     */
+    public void testB5() {
+        T_if_ne_2 t = new T_if_ne_2();
+        String a = "a";
+        assertEquals(1, t.run(null, a));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a 
+     * @title branch target shall not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.d b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.d
new file mode 100644
index 0000000..cb84784
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.d
@@ -0,0 +1,23 @@
+.source T_if_ne_1.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ne v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.java b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.java
new file mode 100644
index 0000000..ebc05ac
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ne.d;
+
+public class T_if_ne_1 {
+
+    public int run(int a, int b) {
+        return a != b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.d b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.d
new file mode 100644
index 0000000..f42d830
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.d
@@ -0,0 +1,23 @@
+.source T_if_ne_10.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-ne v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.dfh
new file mode 100644
index 0000000..f5f9427
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 095c418d
+    8D 41 5C 09 
+// parsed: offset 12, len 20: signature           : c237...7d40
+    C2 37 DB 94 22 A2 D1 8C 42 64 8C F7 AF 4F F0 C2 C2 D3 7D 40 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_ne/d/T_if_ne_10;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_ne_10.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "Z"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 402 (0x000192) "ZII"
+    92 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ne/d/T_if_ne_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ne/d/T_if_ne_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ne_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ne v6, v7, 0004 // +0x0004
+//@mod      33 76 04 00 
+            33 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ne/d/T_if_ne_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 2F 64 2F 54 5F 69 66 5F 6E 65 5F 31 30 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ne_10.java"
+    0F 54 5F 69 66 5F 6E 65 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 402, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ne/d/T_if_ne_10;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.d b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.d
new file mode 100644
index 0000000..65bb0d2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.d
@@ -0,0 +1,24 @@
+.source T_if_ne_11.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-ne v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       const v6, 0
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.dfh
new file mode 100644
index 0000000..8b5c5e6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.dfh
@@ -0,0 +1,280 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c3f03ff3
+    F3 3F F0 C3 
+// parsed: offset 12, len 20: signature           : 1786...89ee
+    17 86 0D 00 7F F4 86 BF 36 21 B8 93 62 57 3D EA B7 59 89 EE 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 316 (0x00013c) "<init>"
+    3C 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 324 (0x000144) "I"
+    44 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 327 (0x000147) "Ldot/junit/opcodes/if_ne/d/T_if_ne_11;"
+    47 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_ne_11.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 407 (0x000197) "Z"
+    97 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "ZII"
+    9A 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ne/d/T_if_ne_11;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ne/d/T_if_ne_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ne_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_11.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_11.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ne v6, v7, 0004 // +0x0004
+//@mod            33 76 04 00 
+            33 76 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 6: |0004: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 314, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 316, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 324, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 327, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ne/d/T_if_ne_11;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 2F 64 2F 54 5F 69 66 5F 6E 65 5F 31 31 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ne_11.java"
+    0F 54 5F 69 66 5F 6E 65 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 407, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ne/d/T_if_ne_11;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 316 (0x00013c)
+        02 20 00 00 09 00 00 00 3C 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.d b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.d
new file mode 100644
index 0000000..0893fa4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.d
@@ -0,0 +1,23 @@
+.source T_if_ne_12.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-ne v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.dfh
new file mode 100644
index 0000000..e78249f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.dfh
@@ -0,0 +1,276 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_12.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 37603d62
+    62 3D 60 37 
+// parsed: offset 12, len 20: signature           : 24e7...4311
+    24 E7 8D 35 83 34 1E 83 9C DE 27 13 02 76 B3 A3 53 37 43 11 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_ne/d/T_if_ne_12;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_ne_12.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "Z"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 402 (0x000192) "ZII"
+    92 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ne/d/T_if_ne_12;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ne/d/T_if_ne_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ne_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_12.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_12.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ne v6, v7, 0004 // +0x0004
+//@mod            33 76 04 00 
+            33 76 00 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ne/d/T_if_ne_12;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 2F 64 2F 54 5F 69 66 5F 6E 65 5F 31 32 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ne_12.java"
+    0F 54 5F 69 66 5F 6E 65 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 402, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ne/d/T_if_ne_12;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.d b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.d
new file mode 100644
index 0000000..039f954
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.d
@@ -0,0 +1,23 @@
+.source T_if_ne_2.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)I
+.limit regs 8
+
+       if-ne v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.java b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.java
new file mode 100644
index 0000000..79c7519
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ne.d;
+
+public class T_if_ne_2 {
+
+    public int run(String a, String b) {
+        return a != b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.d b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.d
new file mode 100644
index 0000000..aaa66e8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.d
@@ -0,0 +1,23 @@
+.source T_if_ne_4.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       if-ne v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.java b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.java
new file mode 100644
index 0000000..fbd1049
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ne.d;
+
+public class T_if_ne_4 {
+
+    public int run(float a, int b) {
+        return a != b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_5.d b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_5.d
new file mode 100644
index 0000000..4bfefaa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_5.d
@@ -0,0 +1,23 @@
+.source T_if_ne_5.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ne v6, v8, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_7.d b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_7.d
new file mode 100644
index 0000000..5e57f66
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_7.d
@@ -0,0 +1,23 @@
+.source T_if_ne_7.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-ne v5, v6, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_8.d b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_8.d
new file mode 100644
index 0000000..0001b04
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_8.d
@@ -0,0 +1,23 @@
+.source T_if_ne_8.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-ne v5, v7, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_9.d b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_9.d
new file mode 100644
index 0000000..4f3f107
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_ne/d/T_if_ne_9.d
@@ -0,0 +1,23 @@
+.source T_if_ne_9.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ne v6, v5, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/Test_if_nez.java b/tools/vm-tests/src/dot/junit/opcodes/if_nez/Test_if_nez.java
new file mode 100644
index 0000000..1283f37
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/Test_if_nez.java
@@ -0,0 +1,159 @@
+package dot.junit.opcodes.if_nez;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_nez.d.T_if_nez_1;
+import dot.junit.opcodes.if_nez.d.T_if_nez_2;
+import dot.junit.opcodes.if_nez.d.T_if_nez_3;
+import dot.junit.opcodes.if_nez.d.T_if_nez_4;
+
+public class Test_if_nez extends DxTestCase {
+    
+    /**
+     * @title Argument = 5 and -5
+     */
+    public void testN1() {
+        T_if_nez_1 t = new T_if_nez_1();
+        assertEquals(1, t.run(5));
+        assertEquals(1, t.run(-5));
+    }
+
+    /**
+     * @title Arguments = null
+     */
+    public void testN2() {
+        T_if_nez_2 t = new T_if_nez_2();
+        String str = null;
+        assertEquals(1234, t.run(str));
+    }
+    
+    /**
+     * @title Arguments = not null
+     */
+    public void testN3() {
+        T_if_nez_2 t = new T_if_nez_2();
+        String str = "abc";
+        assertEquals(1, t.run(str));
+    }
+    
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_if_nez_3 t = new T_if_nez_3();
+        assertEquals(1, t.run(3.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_nez_1 t = new T_if_nez_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_nez_1 t = new T_if_nez_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB3() {
+        T_if_nez_1 t = new T_if_nez_1();
+        assertEquals(1234, t.run(0));
+    }
+    
+    /**
+     * @title Compare reference with null
+     */
+    public void testB4() {
+        T_if_nez_4 t = new T_if_nez_4();
+        assertEquals(1234, t.run(null));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+    /**
+     * @constraint A6 
+     * @title branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title branch must not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.d b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.d
new file mode 100644
index 0000000..da15ff2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.d
@@ -0,0 +1,23 @@
+.source T_ifne_1.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-nez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.java b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.java
new file mode 100644
index 0000000..7e8aab3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_nez.d;
+
+public class T_if_nez_1 {
+
+    public int run(int a) {
+        return a != 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.d b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.d
new file mode 100644
index 0000000..4a5a9a1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.d
@@ -0,0 +1,24 @@
+.source T_if_nez_10.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-nez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       const v5, 0
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.dfh
new file mode 100644
index 0000000..c690b98
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.dfh
@@ -0,0 +1,278 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : f7d6442e
+    2E 44 D6 F7 
+// parsed: offset 12, len 20: signature           : b285...f2c1
+    B2 85 AD 8B CF 5D F1 BB 04 91 E9 46 C9 64 A2 AE E4 DA F2 C1 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_nez/d/T_if_nez_10;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_nez_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 405 (0x000195) "V"
+    95 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 408 (0x000198) "Z"
+    98 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 411 (0x00019b) "ZI"
+    9B 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_nez/d/T_if_nez_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_nez/d/T_if_nez_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_nez_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_10.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-nez v5, 0004 // +0x0004
+//@mod            39 05 04 00 
+            39 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 6: |0004: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_nez/d/T_if_nez_10;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 7A 2F 64 2F 54 5F 69 66 5F 6E 65 7A 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_nez_10.java"
+    10 54 5F 69 66 5F 6E 65 7A 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 405, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 408, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 411, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_nez/d/T_if_nez_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.d b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.d
new file mode 100644
index 0000000..81ef2ba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.d
@@ -0,0 +1,23 @@
+.source T_if_nez_11.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-nez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.dfh
new file mode 100644
index 0000000..07373f2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.dfh
@@ -0,0 +1,274 @@
+// Processing '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_11.dex'...
+// Opened '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a76043b4
+    B4 43 60 A7 
+// parsed: offset 12, len 20: signature           : 1a2c...f8f3
+    1A 2C DB A0 C2 B5 CC A7 79 C0 8C CA A6 EE F6 C4 35 81 F8 F3 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_nez/d/T_if_nez_11;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_nez_11.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "Z"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "ZI"
+    93 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_nez/d/T_if_nez_11;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_nez/d/T_if_nez_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_nez_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_11.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_11.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-nez v5, 0004 // +0x0004
+//@mod      39 05 04 00 
+            39 05 00 00            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_nez/d/T_if_nez_11;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 7A 2F 64 2F 54 5F 69 66 5F 6E 65 7A 5F 31 31 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_nez_11.java"
+    10 54 5F 69 66 5F 6E 65 7A 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 403, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_nez/d/T_if_nez_11;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.d b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.d
new file mode 100644
index 0000000..d95004a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.d
@@ -0,0 +1,23 @@
+.source T_ifne_2.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-nez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.java b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.java
new file mode 100644
index 0000000..802b021
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_nez.d;
+
+public class T_if_nez_2 {
+
+    public int run(String o) {
+        return o != null ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.d b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.d
new file mode 100644
index 0000000..ea90b8d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.d
@@ -0,0 +1,23 @@
+.source T_ifne_3.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-nez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.java b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.java
new file mode 100644
index 0000000..149b181e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_nez.d;
+
+public class T_if_nez_3 {
+
+    public int run(float a) {
+        return a != 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.d b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.d
new file mode 100644
index 0000000..efe46b0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.d
@@ -0,0 +1,23 @@
+.source T_ifne_4.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.limit regs 6
+
+       if-nez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.java b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.java
new file mode 100644
index 0000000..96b98a2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_nez.d;
+
+public class T_if_nez_4 {
+
+    public int run(Object o) {
+        return o != null ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_5.d b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_5.d
new file mode 100644
index 0000000..8640ec1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_5.d
@@ -0,0 +1,23 @@
+.source T_ifne_5.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-nez v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_6.d b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_6.d
new file mode 100644
index 0000000..67348ad
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_6.d
@@ -0,0 +1,23 @@
+.source T_ifne_6.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 6
+
+       if-nez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_7.d b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_7.d
new file mode 100644
index 0000000..b22102e8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_7.d
@@ -0,0 +1,23 @@
+.source T_ifne_7.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-nez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.d b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.d
new file mode 100644
index 0000000..5ea760a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.d
@@ -0,0 +1,23 @@
+.source T_if_nez_9.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-nez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.dfh b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.dfh
new file mode 100644
index 0000000..acd19bc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 533b414c
+    4C 41 3B 53 
+// parsed: offset 12, len 20: signature           : a2dd...7edb
+    A2 DD 9C 8A FB 23 5C 93 89 55 98 BF E0 6A 76 51 CB 17 7E DB 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_nez/d/T_if_nez_9;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_nez_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_nez/d/T_if_nez_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_nez/d/T_if_nez_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_nez_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-nez v5, 0004 // +0x0004
+//@mod      39 05 04 00 
+            39 05 04 01
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_nez/d/T_if_nez_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 7A 2F 64 2F 54 5F 69 66 5F 6E 65 7A 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_nez_9.java"
+    0F 54 5F 69 66 5F 6E 65 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_nez/d/T_if_nez_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/iget/TestStubs.java
new file mode 100644
index 0000000..07bb886
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget;
+
+public class TestStubs {
+    // used by testVFE4
+    private int TestStubField = 50;
+    // ussed by testVFE15
+    protected int TestStubProtectedField = 50;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/Test_iget.java b/tools/vm-tests/src/dot/junit/opcodes/iget/Test_iget.java
new file mode 100644
index 0000000..b5fcb67
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/Test_iget.java
@@ -0,0 +1,312 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget.d.T_iget_1;
+import dot.junit.opcodes.iget.d.T_iget_11;
+import dot.junit.opcodes.iget.d.T_iget_2;
+import dot.junit.opcodes.iget.d.T_iget_9;
+
+public class Test_iget extends DxTestCase {
+    
+    /**
+     * @title type - int
+     */
+    public void testN1() {
+        T_iget_1 t = new T_iget_1();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title type - float
+     */
+    public void testN2() {
+        T_iget_2 t = new T_iget_2();
+        assertEquals(123f, t.run());
+    }
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget.d.T_iget_1
+        //@uses dot.junit.opcodes.iget.d.T_iget_11
+        T_iget_11 t = new T_iget_11();
+        assertEquals(10, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_9 t = new T_iget_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B13 
+     * @title read integer from long field - only field with same name but 
+     * different type exist
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible private field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget.d.T_iget_6
+        //@uses dot.junit.opcodes.iget.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget.d.T_iget_12
+        //@uses dot.junit.opcodes.iget.d.T_iget_1
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for boolean fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read protected field of unrelated class. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget.d.T_iget_21
+        //@uses dot.junit.opcodes.iget.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint A11
+     * @title Attempt to read static field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget.d.T_iget_5
+        //@uses dot.junit.opcodes.iget.TestStubs        
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_1.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_1.d
new file mode 100644
index 0000000..cac6528
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_1.java
+.class public dot.junit.opcodes.iget.d.T_iget_1
+.super java/lang/Object
+
+.field public  i1 I
+.field protected  p1 I
+.field private  pvt1 I
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const/4 v0, 5
+       iput v0, v1, dot.junit.opcodes.iget.d.T_iget_1.i1 I
+
+       const/16 v0, 10
+       iput v0, v1, dot.junit.opcodes.iget.d.T_iget_1.p1 I
+
+       const/16 v0, 20
+       iput v0, v1, dot.junit.opcodes.iget.d.T_iget_1.pvt1 I
+       
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_1.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_1.java b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_1.java
new file mode 100644
index 0000000..1ce655a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget.d;
+
+public class T_iget_1 {
+    public  int i1 = 5;
+    protected  int p1 = 10;
+    private  int pvt1 = 20;
+    
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_11.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_11.d
new file mode 100644
index 0000000..6e64e3c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_11.java
+.class public dot.junit.opcodes.iget.d.T_iget_11
+.super dot/junit/opcodes/iget/d/T_iget_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget/d/T_iget_1/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_1.p1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_11.java b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_11.java
new file mode 100644
index 0000000..9d6b376
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget.d;
+
+public class T_iget_11 extends T_iget_1 {
+
+    public int run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_12.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_12.d
new file mode 100644
index 0000000..312dd9c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_12.java
+.class public dot.junit.opcodes.iget.d.T_iget_12
+.super dot/junit/opcodes/iget/d/T_iget_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget/d/T_iget_1/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_1.pvt1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_13.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_13.d
new file mode 100644
index 0000000..eed73b9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_13.java
+.class public dot.junit.opcodes.iget.d.T_iget_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_13.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_14.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_14.d
new file mode 100644
index 0000000..faa6271
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_14.java
+.class public dot.junit.opcodes.iget.d.T_iget_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_15.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_15.d
new file mode 100644
index 0000000..d50305b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_15.java
+.class public dot.junit.opcodes.iget.d.T_iget_15
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_16.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_16.d
new file mode 100644
index 0000000..8a5253b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_16.java
+.class public dot.junit.opcodes.iget.d.T_iget_16
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_16.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_17.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_17.d
new file mode 100644
index 0000000..69d1af4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_17.java
+.class public dot.junit.opcodes.iget.d.T_iget_17
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_18.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_18.d
new file mode 100644
index 0000000..c081e55
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_18.java
+.class public dot.junit.opcodes.iget.d.T_iget_18
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_19.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_19.d
new file mode 100644
index 0000000..a555e94
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_19.java
+.class public dot.junit.opcodes.iget.d.T_iget_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_2.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_2.d
new file mode 100644
index 0000000..bf07640
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_2.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_2.java
+.class public dot.junit.opcodes.iget.d.T_iget_2
+.super java/lang/Object
+
+.field public  val F
+
+.method  <clinit>()V
+.limit regs 2
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const v0, 123.0
+       iput v0, v1, dot.junit.opcodes.iget.d.T_iget_2.val F
+       
+       return-void
+.end method
+
+.method public run()F
+.limit regs 4
+
+       iget v1, v3, dot.junit.opcodes.iget.d.T_iget_2.val F
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_2.java b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_2.java
new file mode 100644
index 0000000..3efa19d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget.d;
+
+public class T_iget_2 {
+
+    public  float val = 123.0f;
+    
+    public float run() {
+        return val;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_20.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_20.d
new file mode 100644
index 0000000..b34faae
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_20.java
+.class public dot.junit.opcodes.iget.d.T_iget_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_21.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_21.d
new file mode 100644
index 0000000..569458b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_21.java
+.class public dot.junit.opcodes.iget.d.T_iget_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget/TestStubs/<init>()V
+
+       iget v1, v0, dot.junit.opcodes.iget.TestStubs.TestStubProtectedField I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_3.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_3.d
new file mode 100644
index 0000000..f362d0f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_3.java
+.class public dot.junit.opcodes.iget.d.T_iget_3
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v3, v2, dot.junit.opcodes.iget.d.T_iget_3.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_30.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_30.d
new file mode 100644
index 0000000..3564c81
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_30.java
+.class public dot.junit.opcodes.iget.d.T_iget_30
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget/d/T_iget_30
+    iget v1, v0, dot.junit.opcodes.iget.d.T_iget_30.st_i1 I
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_4.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_4.d
new file mode 100644
index 0000000..8336a2e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_4.java
+.class public dot.junit.opcodes.iget.d.T_iget_4
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_4.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_4.dfh
new file mode 100644
index 0000000..c29f935
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget/d/T_iget_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget/d/T_iget_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 385d3b6c
+    6C 3B 5D 38 
+// parsed: offset 12, len 20: signature           : bbc1...00f4
+    BB C1 79 16 63 A5 BB 13 9D 24 11 CB 85 1F A6 17 C0 39 00 F4 
+// parsed: offset 32, len 4: file_size           : 544
+    20 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 408 (0x000198)
+    98 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 296
+    28 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "I"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/iget/d/T_iget_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 344 (0x000158) "Ljava/lang/Object;"
+    58 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 364 (0x00016c) "T_iget_4.java"
+    6C 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 379 (0x00017b) "V"
+    7B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 382 (0x00017e) "i1"
+    7E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 386 (0x000182) "run"
+    82 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iget/d/T_iget_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iget/d/T_iget_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 391 (0x000187)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 87 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget.d.T_iget_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget.d.T_iget_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget v1, v2, Ldot/junit/opcodes/iget/d/T_iget_4;.i1:I // field@0000
+//@mod            52 21 00 00 
+            52 21 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 307, len 37: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iget/d/T_iget_4;"
+    23 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 2F 64 2F 54 5F 69 67 65 74 5F 34 3B 00 
+// parsed: offset 344, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 364, len 15: TYPE_STRING_DATA_ITEM [4] "T_iget_4.java"
+    0D 54 5F 69 67 65 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 379, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 382, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 386, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget/d/T_iget_4;"
+    // parsed: offset 391, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 392, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 393, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 394, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 395, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 396, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 397, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 398, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 401, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 403, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 404, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 405, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 407, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 408, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 412, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 424, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 436, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 448, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 460, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 472, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 484, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 496, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 508, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 520, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 391 (0x000187)
+        00 20 00 00 01 00 00 00 87 01 00 00 
+    // parsed: offset 532, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 10 00 00 01 00 00 00 98 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_5.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_5.d
new file mode 100644
index 0000000..7a7c3ea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_5.java
+.class public dot.junit.opcodes.iget.d.T_iget_5
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_5.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_6.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_6.d
new file mode 100644
index 0000000..8ea70c2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_6.java
+.class public dot.junit.opcodes.iget.d.T_iget_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget/TestStubs/<init>()V
+
+       iget v1, v0, dot.junit.opcodes.iget.TestStubs.TestStubField I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_7.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_7.d
new file mode 100644
index 0000000..a68b0f0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_7.java
+.class public dot.junit.opcodes.iget.d.T_iget_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_7no_class.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_8.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_8.d
new file mode 100644
index 0000000..9fc3b75
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_8.java
+.class public dot.junit.opcodes.iget.d.T_iget_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_8.i1N I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_9.d b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_9.d
new file mode 100644
index 0000000..268398c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_9.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_9.java
+.class public dot.junit.opcodes.iget.d.T_iget_9
+.super java/lang/Object
+
+.field public  val F
+
+.method  <clinit>()V
+.limit regs 2
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()F
+.limit regs 4
+
+       const v0, 0
+       iget v1, v0, dot.junit.opcodes.iget.d.T_iget_9.val F
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_9.java b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_9.java
new file mode 100644
index 0000000..440ad6d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget/d/T_iget_9.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget.d;
+
+public class T_iget_9 {
+
+    public  float val = 123.0f;
+    
+    public float run() {
+        return val;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/TestStubs.java
new file mode 100644
index 0000000..8dcd427
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_boolean;
+
+public class TestStubs {
+    // used by testVFE4
+    private boolean TestStubField = true;
+    // used by testVFE15
+    protected boolean TestStubProtectedField = true;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/Test_iget_boolean.java b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/Test_iget_boolean.java
new file mode 100644
index 0000000..2b24d6d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/Test_iget_boolean.java
@@ -0,0 +1,300 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_11;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_9;
+
+public class Test_iget_boolean extends DxTestCase {
+    
+    /**
+     * @title get boolean from field 
+     */
+    public void testN1() {
+        T_iget_boolean_1 t = new T_iget_boolean_1();
+        assertEquals(true, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_11
+        T_iget_boolean_11 t = new T_iget_boolean_11();
+        assertEquals(true, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_boolean_9 t = new T_iget_boolean_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+   
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B13 
+     * @title read boolean from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_6
+        //@uses dot.junit.opcodes.iget_boolean.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_12
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_boolean shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_21
+        //@uses dot.junit.opcodes.iget_boolean.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_5
+        //@uses dot.junit.opcodes.iget_boolean.TestStubs
+
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.d
new file mode 100644
index 0000000..23b0a93
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_1.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1
+.super java/lang/Object
+
+.field public  i1 Z
+.field protected  p1 Z
+.field private  pvt1 Z
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const/4 v0, 1
+       iput-boolean v0, v1, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.i1 Z
+
+       const/16 v0, 1
+       iput-boolean v0, v1, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.p1 Z
+
+       const/16 v0, 1
+       iput-boolean v0, v1, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.pvt1 Z
+       
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.java b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.java
new file mode 100644
index 0000000..b23b780
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_1 {
+    public boolean i1 = true;
+    protected boolean p1 = true;
+    private boolean pvt1 = true;
+    
+    public boolean run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.d
new file mode 100644
index 0000000..540ecc5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_11.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_11
+.super dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.p1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.java b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.java
new file mode 100644
index 0000000..2b2423e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_11 extends T_iget_boolean_1 {
+
+    public boolean run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.d
new file mode 100644
index 0000000..e0a918f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_12.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_12
+.super dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.pvt1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.d
new file mode 100644
index 0000000..50ad238
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_13.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_13.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_14.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_14.d
new file mode 100644
index 0000000..38a56f6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_14.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_15.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_15.d
new file mode 100644
index 0000000..9b165d9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_15.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_15
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_16.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_16.d
new file mode 100644
index 0000000..8eb7f27
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_16.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_16
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_17.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_17.d
new file mode 100644
index 0000000..499c796
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_17.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_17
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_18.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_18.d
new file mode 100644
index 0000000..ab97074
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_18.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_18
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_19.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_19.d
new file mode 100644
index 0000000..2909f36
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_19.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_20.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_20.d
new file mode 100644
index 0000000..e37f360
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_20.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.d
new file mode 100644
index 0000000..c59f39d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_21.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_boolean/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_boolean/TestStubs/<init>()V
+
+       iget-boolean v1, v0, dot.junit.opcodes.iget_boolean.TestStubs.TestStubProtectedField Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_3.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_3.d
new file mode 100644
index 0000000..7b6f6f0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_3.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_3
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v3, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_3.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30.d
new file mode 100644
index 0000000..9f30d4d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_30.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_30
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30
+    iget-boolean v1, v0, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_30.st_i1 Z
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.d
new file mode 100644
index 0000000..56747b1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_4.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_4
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_4.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.dfh
new file mode 100644
index 0000000..a68f88b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 663a47b7
+    B7 47 3A 66 
+// parsed: offset 12, len 20: signature           : 26ba...8627
+    26 BA 95 8C 7D 61 05 BB C8 CD CB 51 38 D9 12 D7 C7 20 86 27 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "Ljava/lang/Object;"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 377 (0x000179) "T_iget_boolean_4.java"
+    79 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 400 (0x000190) "V"
+    90 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 403 (0x000193) "Z"
+    93 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 406 (0x000196) "i1"
+    96 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "run"
+    9A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "Z"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  type_idx: 3 (0x000003) name_idx: 6 (0x000006) "i1"
+    00 00 03 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_iget_boolean_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 415 (0x00019f)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 9F 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_boolean.d.T_iget_boolean_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_boolean.d.T_iget_boolean_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget-boolean v1, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;.i1:Z // field@0000
+//@mod            55 21 00 00 
+            55 21 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 53: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 62 6F 6F 6C 65 61 6E 2F 64 2F 54 5F 69 67 65 74 5F 62 6F 6F 6C 65 61 6E 5F 34 3B 00 
+// parsed: offset 357, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 377, len 23: TYPE_STRING_DATA_ITEM [3] "T_iget_boolean_4.java"
+    15 54 5F 69 67 65 74 5F 62 6F 6F 6C 65 61 6E 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 403, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 406, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;"
+    // parsed: offset 415, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 416, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 417, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 418, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 419, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 420, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 421, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 422, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 425, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 427, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 428, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 429, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 431, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 415 (0x00019f)
+        00 20 00 00 01 00 00 00 9F 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.d
new file mode 100644
index 0000000..f9bf929
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_5.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_5
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_5.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.d
new file mode 100644
index 0000000..ae3a118
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_6.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_boolean/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_boolean/TestStubs/<init>()V
+
+       iget-boolean v1, v0, dot.junit.opcodes.iget_boolean.TestStubs.TestStubField Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.d
new file mode 100644
index 0000000..cdec059
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_7.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_7no_class.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.d
new file mode 100644
index 0000000..fd4ff0a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_8.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_8.i1N Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.d b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.d
new file mode 100644
index 0000000..9b2b565
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_boolean_9.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_9
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       const v0, 0        
+       iget-boolean v1, v0, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_9.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.java b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.java
new file mode 100644
index 0000000..a5261bb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_9 {
+    
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/TestStubs.java
new file mode 100644
index 0000000..90b1f13
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_byte;
+
+public class TestStubs {
+    // used by testVFE4
+    private byte TestStubField = 50;
+    // ussed by testVFE15
+    protected byte TestStubProtectedField = 50;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/Test_iget_byte.java b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/Test_iget_byte.java
new file mode 100644
index 0000000..5d8630b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/Test_iget_byte.java
@@ -0,0 +1,296 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_1;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_11;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_9;
+
+public class Test_iget_byte extends DxTestCase {
+    
+    /**
+     * @title get byte from field 
+     */
+    public void testN1() {
+        T_iget_byte_1 t = new T_iget_byte_1();
+        assertEquals(77, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_1
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_11
+        T_iget_byte_11 t = new T_iget_byte_11();
+        assertEquals(77, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_byte_9 t = new T_iget_byte_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }   
+
+    /**
+     * @constraint A11 
+     * @title  constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B13 
+     * @title read byte from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_6
+        //@uses dot.junit.opcodes.iget_byte.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_12
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_1
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_21
+        //@uses dot.junit.opcodes.iget_byte.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static  field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_5
+        //@uses dot.junit.opcodes.iget_byte.TestStubs        
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.d
new file mode 100644
index 0000000..6dbe256
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_1.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_1
+.super java/lang/Object
+
+.field public  i1 B
+.field protected  p1 B
+.field private  pvt1 B
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const v0, 77
+       iput-byte v0, v1, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.i1 B
+
+       const v0, 77
+       iput-byte v0, v1, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.p1 B
+
+       const v0, 77
+       iput-byte v0, v1, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.pvt1 B
+       
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.java b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.java
new file mode 100644
index 0000000..32df19e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_1 {
+    public static byte i1 = 77;
+    protected static byte p1 = 77;
+    private static byte pvt1 = 77;
+    
+    public byte run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.d
new file mode 100644
index 0000000..0a13a63
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_11.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_11
+.super dot/junit/opcodes/iget_byte/d/T_iget_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_byte/d/T_iget_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.p1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.java b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.java
new file mode 100644
index 0000000..535c971
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_11 extends T_iget_byte_1 {
+
+    public byte run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.d
new file mode 100644
index 0000000..19d218b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_12.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_12
+.super dot/junit/opcodes/iget_byte/d/T_iget_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_byte/d/T_iget_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.pvt1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.d
new file mode 100644
index 0000000..f09be61
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_13.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_13.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_14.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_14.d
new file mode 100644
index 0000000..f33ce5d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_14.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_15.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_15.d
new file mode 100644
index 0000000..4564d6d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_15.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_15
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_16.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_16.d
new file mode 100644
index 0000000..0cd45ef
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_16.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_16
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_17.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_17.d
new file mode 100644
index 0000000..fba56a4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_17.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_17
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_18.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_18.d
new file mode 100644
index 0000000..309001d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_18.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_18
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_19.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_19.d
new file mode 100644
index 0000000..a1397ba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_19.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_20.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_20.d
new file mode 100644
index 0000000..2373e00
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_20.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.d
new file mode 100644
index 0000000..40685ee
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_21.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_byte/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_byte/TestStubs/<init>()V
+
+       iget-byte v1, v0, dot.junit.opcodes.iget_byte.TestStubs.TestStubProtectedField B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_3.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_3.d
new file mode 100644
index 0000000..a7cf811
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_3.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_3
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v3, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_3.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_30.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_30.d
new file mode 100644
index 0000000..1c8e463
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_30.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_30
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_byte/d/T_iget_byte_30
+    iget-byte v1, v0, dot.junit.opcodes.iget_byte.d.T_iget_byte_30.st_i1 B
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.d
new file mode 100644
index 0000000..20f03c8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_4.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_4
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_4.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.dfh
new file mode 100644
index 0000000..26864a7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : acfa42dd
+    DD 42 FA AC 
+// parsed: offset 12, len 20: signature           : 3689...2216
+    36 89 53 31 46 F7 82 E5 1D 14 90 9F A4 DE 9A 22 E0 BC 22 16 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "B"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_iget_byte_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "B"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "B"
+//     return_type_idx: 0 (0x000000) "B"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_byte_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_byte.d.T_iget_byte_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_byte.d.T_iget_byte_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget-byte v1, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;.i1:B // field@0000
+//@mod            56 21 00 00 
+            56 21 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "B"
+    01 42 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 62 79 74 65 2F 64 2F 54 5F 69 67 65 74 5F 62 79 74 65 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_iget_byte_4.java"
+    12 54 5F 69 67 65 74 5F 62 79 74 65 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;"
+    // parsed: offset 406, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.d
new file mode 100644
index 0000000..65e6ed0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_5.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_5
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_5.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.d
new file mode 100644
index 0000000..0f761e0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_6.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_byte/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_byte/TestStubs/<init>()V
+
+       iget-byte v1, v0, dot.junit.opcodes.iget_byte.TestStubs.TestStubField B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.d
new file mode 100644
index 0000000..a9df70b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_7.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_7no_class.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.d
new file mode 100644
index 0000000..de3b7a0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_8.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_8.i1N B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.d b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.d
new file mode 100644
index 0000000..96eee86
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_byte_9.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_9
+.super java/lang/Object
+
+.field public i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       const v0, 0
+       iget-byte v1, v0, dot.junit.opcodes.iget_byte.d.T_iget_byte_9.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.java b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.java
new file mode 100644
index 0000000..476ae5d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_9 {
+    
+    public byte run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/iget_char/TestStubs.java
new file mode 100644
index 0000000..5bf73ae
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_char;
+
+public class TestStubs {
+    // used by testVFE4
+    private char TestStubField = 50;
+    // ussed by testVFE15
+    protected char TestStubProtectedField = 50;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/Test_iget_char.java b/tools/vm-tests/src/dot/junit/opcodes/iget_char/Test_iget_char.java
new file mode 100644
index 0000000..1805534
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/Test_iget_char.java
@@ -0,0 +1,304 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_char.d.T_iget_char_1;
+import dot.junit.opcodes.iget_char.d.T_iget_char_11;
+import dot.junit.opcodes.iget_char.d.T_iget_char_9;
+
+public class Test_iget_char extends DxTestCase {
+    
+    /**
+     * @title get char from field 
+     */
+    public void testN1() {
+        T_iget_char_1 t = new T_iget_char_1();
+        assertEquals(77, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_1
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_11
+        T_iget_char_11 t = new T_iget_char_11();
+        assertEquals(77, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_char_9 t = new T_iget_char_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+   
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title read char from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_6
+        //@uses dot.junit.opcodes.iget_char.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_12
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_1
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget_char shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_char shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_char shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_char shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_char shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * @constraint B1 
+     * @title iget_char shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * @constraint B1 
+     * @title iget_char shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_21
+        //@uses dot.junit.opcodes.iget_char.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static  field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_5
+        //@uses dot.junit.opcodes.iget_char.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.d
new file mode 100644
index 0000000..837dd6b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_1.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_1
+.super java/lang/Object
+
+.field public  i1 C
+.field protected  p1 C
+.field private  pvt1 C
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const v0, 77
+       iput-char v0, v1, dot.junit.opcodes.iget_char.d.T_iget_char_1.i1 C
+
+       const v0, 77
+       iput-char v0, v1, dot.junit.opcodes.iget_char.d.T_iget_char_1.p1 C
+
+       const v0, 77
+       iput-char v0, v1, dot.junit.opcodes.iget_char.d.T_iget_char_1.pvt1 C
+       
+       
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_1.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.java b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.java
new file mode 100644
index 0000000..227f97a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_1 {
+    public  char i1 = 77;
+    protected  char p1 = 77;
+    private  char pvt1 = 77;
+    
+    public char run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.d
new file mode 100644
index 0000000..9d74992
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_11.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_11
+.super dot/junit/opcodes/iget_char/d/T_iget_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_char/d/T_iget_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_1.p1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.java b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.java
new file mode 100644
index 0000000..cdd08a7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_11 extends T_iget_char_1 {
+
+    public char run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.d
new file mode 100644
index 0000000..5194ff9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_12.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_12
+.super dot/junit/opcodes/iget_char/d/T_iget_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_char/d/T_iget_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_1.pvt1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.d
new file mode 100644
index 0000000..a7f5e58
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_13.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_13.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_14.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_14.d
new file mode 100644
index 0000000..46f0e20
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_14.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_15.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_15.d
new file mode 100644
index 0000000..e8c7195
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_15.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_15
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_16.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_16.d
new file mode 100644
index 0000000..34dbaf0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_16.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_16
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_17.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_17.d
new file mode 100644
index 0000000..cde1b06
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_17.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_17
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_18.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_18.d
new file mode 100644
index 0000000..f32f364
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_18.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_18
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_19.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_19.d
new file mode 100644
index 0000000..5efa5ba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_19.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_20.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_20.d
new file mode 100644
index 0000000..895f42e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_20.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.d
new file mode 100644
index 0000000..4902259
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_21.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_char/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_char/TestStubs/<init>()V
+
+       iget-char v1, v0, dot.junit.opcodes.iget_char.TestStubs.TestStubProtectedField C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_3.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_3.d
new file mode 100644
index 0000000..7838f58
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_3.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_3
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v3, v2, dot.junit.opcodes.iget_char.d.T_iget_char_3.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_30.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_30.d
new file mode 100644
index 0000000..bdc90d2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_30.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_30
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_char/d/T_iget_char_30
+    iget-char v1, v0, dot.junit.opcodes.iget_char.d.T_iget_char_30.st_i1 C
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.d
new file mode 100644
index 0000000..428c14b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_4.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_4
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_4.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.dfh
new file mode 100644
index 0000000..270fbc7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_char/d/T_iget_char_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_char/d/T_iget_char_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 583643f9
+    F9 43 36 58 
+// parsed: offset 12, len 20: signature           : c593...65f6
+    C5 93 2D 56 9E A8 DE 9C EB 9B 10 08 C0 63 49 6A B5 96 65 F6 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "C"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/iget_char/d/T_iget_char_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_iget_char_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "C"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iget_char/d/T_iget_char_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "C"
+//     return_type_idx: 0 (0x000000) "C"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iget_char/d/T_iget_char_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_char_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_char.d.T_iget_char_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_char.d.T_iget_char_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget-char v1, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_4;.i1:C // field@0000
+//@mod            57 21 00 00 
+            57 21 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "C"
+    01 43 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iget_char/d/T_iget_char_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 63 68 61 72 2F 64 2F 54 5F 69 67 65 74 5F 63 68 61 72 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_iget_char_4.java"
+    12 54 5F 69 67 65 74 5F 63 68 61 72 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_char/d/T_iget_char_4;"
+    // parsed: offset 406, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.d
new file mode 100644
index 0000000..534412f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_5.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_5
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_5.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.d
new file mode 100644
index 0000000..0d208b3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_6.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_char/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_char/TestStubs/<init>()V
+
+       iget-char v1, v0, dot.junit.opcodes.iget_char.TestStubs.TestStubField C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.d
new file mode 100644
index 0000000..b2ca2ce
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_7.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_7no_class.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.d
new file mode 100644
index 0000000..7a75de0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_8.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_8.i1N C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.d b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.d
new file mode 100644
index 0000000..70eca20
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_char_9.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_9
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       const v0, 0    
+       iget-char v1, v0, dot.junit.opcodes.iget_char.d.T_iget_char_9.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.java b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.java
new file mode 100644
index 0000000..6bbe1ca
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_9 {
+    
+    public char run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/iget_object/TestStubs.java
new file mode 100644
index 0000000..0a68e56
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object;
+
+public class TestStubs {
+    // used by testVFE4
+    private Object TestStubField = null;
+    // used by testVFE15
+    protected Object TestStubProtectedField = null;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/Test_iget_object.java b/tools/vm-tests/src/dot/junit/opcodes/iget_object/Test_iget_object.java
new file mode 100644
index 0000000..7c6e03c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/Test_iget_object.java
@@ -0,0 +1,318 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_object.d.T_iget_object_1;
+import dot.junit.opcodes.iget_object.d.T_iget_object_11;
+import dot.junit.opcodes.iget_object.d.T_iget_object_9;
+
+public class Test_iget_object extends DxTestCase {
+    
+    /**
+     * @title get reference from field 
+     */
+    public void testN1() {
+        T_iget_object_1 t = new T_iget_object_1();
+        assertEquals(null, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_1
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_11
+        T_iget_object_11 t = new T_iget_object_11();
+        assertEquals(null, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_object_9 t = new T_iget_object_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }  
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title  (read object from long field - only field with same name but 
+     * different type exists)
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_6
+        //@uses dot.junit.opcodes.iget_object.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_12
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_1
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget_object shall not work for short fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for char fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title  only field of different type exists
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_22
+        //@uses dot.junit.opcodes.iget_object.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE17() {
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_5
+        //@uses dot.junit.opcodes.iget_object.TestStubs  
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.d
new file mode 100644
index 0000000..5e4967f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_1.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_1
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+.field protected  p1 Ljava/lang/Object;
+.field private  pvt1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const v0, 0
+       iput-object v0, v1, dot.junit.opcodes.iget_object.d.T_iget_object_1.i1 Ljava/lang/Object;
+
+       const v0, 0
+       iput-object v0, v1, dot.junit.opcodes.iget_object.d.T_iget_object_1.p1 Ljava/lang/Object;
+
+       const v0, 0
+       iput-object v0, v1, dot.junit.opcodes.iget_object.d.T_iget_object_1.pvt1 Ljava/lang/Object;
+       
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_1.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.java b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.java
new file mode 100644
index 0000000..a063f8e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_1 {
+    public  Object i1 = null;
+    protected  Object p1 = null;
+    private  Object pvt1 = null;
+    
+    public Object run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.d
new file mode 100644
index 0000000..35a2de0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_11.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_11
+.super dot/junit/opcodes/iget_object/d/T_iget_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_object/d/T_iget_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_1.p1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.java b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.java
new file mode 100644
index 0000000..5fdf44a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_11 extends T_iget_object_1 {
+
+    public Object run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.d
new file mode 100644
index 0000000..b2d7400
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_12.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_12
+.super dot/junit/opcodes/iget_object/d/T_iget_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_object/d/T_iget_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_1.pvt1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.d
new file mode 100644
index 0000000..21414cc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_13.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_13.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_14.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_14.d
new file mode 100644
index 0000000..df2581c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_14.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_14
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_14.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_15.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_15.d
new file mode 100644
index 0000000..313ec7c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_15.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_15
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_15.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_16.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_16.d
new file mode 100644
index 0000000..d9df4aa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_16.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_16
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_17.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_17.d
new file mode 100644
index 0000000..82cb90e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_17.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_17
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_18.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_18.d
new file mode 100644
index 0000000..3dac91f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_18.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_18
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_19.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_19.d
new file mode 100644
index 0000000..19a9277
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_19.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_20.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_20.d
new file mode 100644
index 0000000..71751fb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_20.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.d
new file mode 100644
index 0000000..10143a7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_21.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_21
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       new-instance v0, java/lang/Object
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       
+       iput-object v0, v1, dot.junit.opcodes.iget_object.d.T_iget_object_21.i1 Ljava/lang/Object;
+       
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_21.i1 Ljava/lang/String;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.d
new file mode 100644
index 0000000..2858934
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_22.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_22
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_object/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_object/TestStubs/<init>()V
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.TestStubs.TestStubProtectedField Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_3.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_3.d
new file mode 100644
index 0000000..4999f1a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_3.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_3
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v3, v2, dot.junit.opcodes.iget_object.d.T_iget_object_3.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_30.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_30.d
new file mode 100644
index 0000000..621f235
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_30.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_30
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_object/d/T_iget_object_30
+    iget-object v1, v0, dot.junit.opcodes.iget_object.d.T_iget_object_30.st_i1 Ljava/lang/Object;
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.d
new file mode 100644
index 0000000..9a05156
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_4.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_4
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_4.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.dfh
new file mode 100644
index 0000000..a031623
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_object/d/T_iget_object_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_object/d/T_iget_object_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 70da44ea
+    EA 44 DA 70 
+// parsed: offset 12, len 20: signature           : 6c85...f80f
+    6C 85 8D 3C F4 BD 5A AF 3C BC 06 C0 24 6F AA 65 52 1A F8 0F 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 156 (0x00009c)
+    9C 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 188 (0x0000bc)
+    BC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 244 (0x0000f4)
+    F4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "L"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/iget_object/d/T_iget_object_4;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_iget_object_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "i1"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "run"
+    93 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iget_object/d/T_iget_object_4;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 156, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 1 (0x000001) "Ljava/lang/Object;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 00 00 00 00 
+// parsed: offset 168, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  type_idx: 1 (0x000001) name_idx: 6 (0x000006) "i1"
+    00 00 01 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 188, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 196, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 204, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 212, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iget_object/d/T_iget_object_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_object_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 408 (0x000198)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 98 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_object.d.T_iget_object_4.<init>"
+    // parsed: offset 244, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 246, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 248, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 250, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 252, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 256, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 260, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 266, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_object.d.T_iget_object_4.run"
+    // parsed: offset 268, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 284, len 4: |0000: iget-object v1, v2, Ldot/junit/opcodes/iget_object/d/T_iget_object_4;.i1:Ljava/lang/Object; // field@0000
+//@mod            54 21 00 00 
+            54 21 00 01 
+        // parsed: offset 288, len 2: |0002: return-object v1
+            11 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 290, len 2: PADDING
+    00 00 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 303, len 51: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iget_object/d/T_iget_object_4;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 6F 62 6A 65 63 74 2F 64 2F 54 5F 69 67 65 74 5F 6F 62 6A 65 63 74 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 22: TYPE_STRING_DATA_ITEM [4] "T_iget_object_4.java"
+    14 54 5F 69 67 65 74 5F 6F 62 6A 65 63 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 403, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_object/d/T_iget_object_4;"
+    // parsed: offset 408, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 409, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 410, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 411, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 412, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 413, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 244 (0x0000f4)
+                F4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 268 (0x00010c)
+                8C 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 144 (0x000090)
+        02 00 00 00 03 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 156 (0x00009c)
+        03 00 00 00 02 00 00 00 9C 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 180 (0x0000b4)
+        04 00 00 00 01 00 00 00 B4 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 188 (0x0000bc)
+        05 00 00 00 03 00 00 00 BC 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 212 (0x0000d4)
+        06 00 00 00 01 00 00 00 D4 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 244 (0x0000f4)
+        01 20 00 00 02 00 00 00 F4 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 292 (0x000124)
+        02 20 00 00 08 00 00 00 24 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 20 00 00 01 00 00 00 98 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.d
new file mode 100644
index 0000000..ed15e90
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_5.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_5
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_5.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.d
new file mode 100644
index 0000000..e9082e0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_6.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_object/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_object/TestStubs/<init>()V
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.TestStubs.TestStubField Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.d
new file mode 100644
index 0000000..db5f6f0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_7.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_7no_class.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.d
new file mode 100644
index 0000000..67f7b82
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_8.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_8.i1N Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.d b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.d
new file mode 100644
index 0000000..7899b37
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_object_9.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_9
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       const v0, 0
+       iget-object v1, v0, dot.junit.opcodes.iget_object.d.T_iget_object_9.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.java b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.java
new file mode 100644
index 0000000..7ff752e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_9 {
+    
+    public Object run(){
+        return null;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/iget_short/TestStubs.java
new file mode 100644
index 0000000..8580ec3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short;
+
+public class TestStubs {
+    // used by testVFE4
+    private short TestStubField = 50;
+    // used by testVFE15
+    protected short TestStubProtectedField = 50;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/Test_iget_short.java b/tools/vm-tests/src/dot/junit/opcodes/iget_short/Test_iget_short.java
new file mode 100644
index 0000000..aaa8270
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/Test_iget_short.java
@@ -0,0 +1,306 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_short.d.T_iget_short_1;
+import dot.junit.opcodes.iget_short.d.T_iget_short_11;
+import dot.junit.opcodes.iget_short.d.T_iget_short_9;
+
+public class Test_iget_short extends DxTestCase {
+    
+    /**
+     * @title get short from field
+     */
+    public void testN1() {
+        T_iget_short_1 t = new T_iget_short_1();
+        assertEquals(32000, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_1
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_11
+        T_iget_short_11 t = new T_iget_short_11();
+        assertEquals(32000, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_short_9 t = new T_iget_short_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+  
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title read short from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_6
+        //@uses dot.junit.opcodes.iget_short.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_12
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_1
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget_short shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for char fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_21
+        //@uses dot.junit.opcodes.iget_short.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static  field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_5
+        //@uses dot.junit.opcodes.iget_short.TestStubs  
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.d
new file mode 100644
index 0000000..822f09e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_1.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_1
+.super java/lang/Object
+
+.field public  i1 S
+.field protected  p1 S
+.field private  pvt1 S
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       const v0, 32000
+       iput-short v0, v1, dot.junit.opcodes.iget_short.d.T_iget_short_1.i1 S
+
+       const v0, 32000
+       iput-short v0, v1, dot.junit.opcodes.iget_short.d.T_iget_short_1.p1 S
+
+       const v0, 32000
+       iput-short v0, v1, dot.junit.opcodes.iget_short.d.T_iget_short_1.pvt1 S
+       
+       
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_1.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.java b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.java
new file mode 100644
index 0000000..d70b7a5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_1 {
+    public  short i1 = 32000;
+    protected  short p1 = 32000;
+    private  short pvt1 = 32000;
+    
+    public short run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.d
new file mode 100644
index 0000000..0dfd2f1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_11.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_11
+.super dot/junit/opcodes/iget_short/d/T_iget_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_short/d/T_iget_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_1.p1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.java b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.java
new file mode 100644
index 0000000..0fd12c7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_11 extends T_iget_short_1 {
+
+    public short run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.d
new file mode 100644
index 0000000..e47f6a6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_12.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_12
+.super dot/junit/opcodes/iget_short/d/T_iget_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_short/d/T_iget_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_1.pvt1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.d
new file mode 100644
index 0000000..22a94a5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_13.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_13.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_14.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_14.d
new file mode 100644
index 0000000..9e0367a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_14.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_15.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_15.d
new file mode 100644
index 0000000..cf1fbf5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_15.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_15
+.super java/lang/Object
+
+.field public i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_15.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_16.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_16.d
new file mode 100644
index 0000000..635640a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_16.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_16
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_17.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_17.d
new file mode 100644
index 0000000..6a717be
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_17.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_17
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_18.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_18.d
new file mode 100644
index 0000000..70dda5b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_18.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_18
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_19.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_19.d
new file mode 100644
index 0000000..cdaa952
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_19.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_20.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_20.d
new file mode 100644
index 0000000..5568f60
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_20.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.d
new file mode 100644
index 0000000..eff1f49
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_21.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_short/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_short/TestStubs/<init>()V
+       
+       iget-wide v1, v0, dot.junit.opcodes.iget_short.TestStubs.TestStubProtectedField S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.java b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.java
new file mode 100644
index 0000000..2c7fd32
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_21 {
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_3.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_3.d
new file mode 100644
index 0000000..0de7441
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_3.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_3
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v3, v2, dot.junit.opcodes.iget_short.d.T_iget_short_3.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_30.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_30.d
new file mode 100644
index 0000000..bc8bc9f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_30.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_30
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_short/d/T_iget_short_30
+    iget-short v1, v0, dot.junit.opcodes.iget_short.d.T_iget_short_30.st_i1 S
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.d
new file mode 100644
index 0000000..9e2ffb6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_4.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_4
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_4.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.dfh
new file mode 100644
index 0000000..3716e2a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_short/d/T_iget_short_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_short/d/T_iget_short_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 636b4534
+    34 45 6B 63 
+// parsed: offset 12, len 20: signature           : 7e12...b877
+    7E 12 BB A2 6A C1 65 67 56 AC 7C 83 C7 BA 11 D9 23 22 B8 77 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "Ldot/junit/opcodes/iget_short/d/T_iget_short_4;"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 353 (0x000161) "Ljava/lang/Object;"
+    61 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 373 (0x000175) "S"
+    75 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 376 (0x000178) "T_iget_short_4.java"
+    78 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "i1"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 404 (0x000194) "run"
+    94 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/iget_short/d/T_iget_short_4;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "S"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 3 (0x000003) "S"
+//     return_type_idx: 2 (0x000002) "S"
+//     parameters_off: 0 (0x000000)
+    03 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  type_idx: 2 (0x000002) name_idx: 6 (0x000006) "i1"
+    00 00 02 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iget_short/d/T_iget_short_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_short_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 409 (0x000199)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 99 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_short.d.T_iget_short_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_short.d.T_iget_short_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget-short v1, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_4;.i1:S // field@0000
+//@mod            58 21 00 00 
+            58 21 00 01
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 49: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/iget_short/d/T_iget_short_4;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 73 68 6F 72 74 2F 64 2F 54 5F 69 67 65 74 5F 73 68 6F 72 74 5F 34 3B 00 
+// parsed: offset 353, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 373, len 3: TYPE_STRING_DATA_ITEM [3] "S"
+    01 53 00 
+// parsed: offset 376, len 21: TYPE_STRING_DATA_ITEM [4] "T_iget_short_4.java"
+    13 54 5F 69 67 65 74 5F 73 68 6F 72 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 404, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_short/d/T_iget_short_4;"
+    // parsed: offset 409, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 410, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 411, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 412, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 413, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 414, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 415, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 416, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 419, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 421, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 422, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 423, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 425, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 409 (0x000199)
+        00 20 00 00 01 00 00 00 99 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.d
new file mode 100644
index 0000000..ac92c40
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_5.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_5
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_5.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.d
new file mode 100644
index 0000000..764d42e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_6.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.TestStubs.TestStubField S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.d
new file mode 100644
index 0000000..3a042d0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_7.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_7no_class.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.d
new file mode 100644
index 0000000..129d2e4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_8.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_8.i1N S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.d b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.d
new file mode 100644
index 0000000..8721333
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_short_9.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_9
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       const v0, 0
+       iget-short v1, v0, dot.junit.opcodes.iget_short.d.T_iget_short_9.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.java b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.java
new file mode 100644
index 0000000..178efc7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_9 {
+    
+    public short run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/TestStubs.java
new file mode 100644
index 0000000..f90a470
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide;
+
+public class TestStubs {
+    // used by testVFE4
+    private long TestStubField = 50;
+    // ussed by testVFE15
+    protected long TestStubProtectedField = 50;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/Test_iget_wide.java b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/Test_iget_wide.java
new file mode 100644
index 0000000..2260220
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/Test_iget_wide.java
@@ -0,0 +1,312 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_1;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_11;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_2;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_9;
+
+public class Test_iget_wide extends DxTestCase {
+    
+    /**
+     * @title type - long
+     */
+    public void testN1() {
+        T_iget_wide_1 t = new T_iget_wide_1();
+        assertEquals(12345679890123l, t.run());
+    }
+
+    /**
+     * @title type - double
+     */
+    public void testN2() {
+        T_iget_wide_2 t = new T_iget_wide_2();
+        assertEquals(123.0, t.run());
+    }
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_1
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_11
+        T_iget_wide_11 t = new T_iget_wide_11();
+        assertEquals(10, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_wide_9 t = new T_iget_wide_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }   
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title read long from integer field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_6
+        //@uses dot.junit.opcodes.iget_wide.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_12
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_1
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget-wide shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for boolean fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for float fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for int fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_21
+        //@uses dot.junit.opcodes.iget.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static  field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_5
+        //@uses dot.junit.opcodes.iget_wide.TestStubs  
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.d
new file mode 100644
index 0000000..3919e04
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_1.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_1
+.super java/lang/Object
+
+.field public  i1 J
+.field protected  p1 J
+.field private  pvt1 J
+
+
+.method public <init>()V
+.limit regs 3
+
+       invoke-direct {v2}, java/lang/Object/<init>()V
+       
+       const-wide v0, 12345679890123
+       iput-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.i1 J
+
+       const-wide v0, 10
+       iput-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.p1 J
+
+       const-wide v0, 20
+       iput-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.pvt1 J
+       
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.java b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.java
new file mode 100644
index 0000000..309671d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_1 {
+    public  long i1 = 12345679890123l;
+    protected  long p1 = 10;
+    private  long pvt1 = 20;
+    
+    public long run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.d
new file mode 100644
index 0000000..9a6f454
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_11.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_11
+.super dot/junit/opcodes/iget_wide/d/T_iget_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_wide/d/T_iget_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.p1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.java b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.java
new file mode 100644
index 0000000..c93589e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_11 extends T_iget_wide_1 {
+
+    public long run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.d
new file mode 100644
index 0000000..9a2cc44
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_12.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_12
+.super dot/junit/opcodes/iget_wide/d/T_iget_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_wide/d/T_iget_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.pvt1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.d
new file mode 100644
index 0000000..63affb6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_13.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_13
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_13.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_14.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_14.d
new file mode 100644
index 0000000..3ffdc18
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_14.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_15.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_15.d
new file mode 100644
index 0000000..5b7424b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_15.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_15
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_16.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_16.d
new file mode 100644
index 0000000..ce37389
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_16.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_16
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_16.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_17.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_17.d
new file mode 100644
index 0000000..1181a48
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_17.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_17
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_18.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_18.d
new file mode 100644
index 0000000..03c2a0c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_18.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_18
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_19.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_19.d
new file mode 100644
index 0000000..1978e12
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_19.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_19
+.super java/lang/Object
+
+.field public  i1 F
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_19.i1 F
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.d
new file mode 100644
index 0000000..16f9f5a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_2.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_2
+.super java/lang/Object
+
+.field public  val D
+
+.method public <init>()V
+.limit regs 3
+
+       invoke-direct {v2}, java/lang/Object/<init>()V
+       
+       const-wide v0, 123.0
+       iput-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_2.val D
+       
+       return-void
+.end method
+
+.method public run()D
+.limit regs 4
+
+       iget-wide v1, v3, dot.junit.opcodes.iget_wide.d.T_iget_wide_2.val D
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.java b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.java
new file mode 100644
index 0000000..726f4b9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_2 {
+
+    public  double val = 123.0d;
+    
+    public double run() {
+        return val;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_20.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_20.d
new file mode 100644
index 0000000..1f3e225
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_20.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_20
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_20.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.d
new file mode 100644
index 0000000..fea700d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_21.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       
+       new-instance v0, Ldot/junit/opcodes/iget_wide/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_wide/TestStubs/<init>()V
+       
+       iget-wide v1, v0, dot.junit.opcodes.iget_wide.TestStubs.TestStubProtectedField J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_3.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_3.d
new file mode 100644
index 0000000..bb7026e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_3.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_3
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v3, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_3.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_30.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_30.d
new file mode 100644
index 0000000..432f376
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_30.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_30
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_wide/d/T_iget_wide_30
+    iget-wide v1, v0, dot.junit.opcodes.iget_wide.d.T_iget_wide_30.st_i1 J
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.d
new file mode 100644
index 0000000..8dd2d4e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_4.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_4
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_4.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.dfh
new file mode 100644
index 0000000..489efd2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 1ffd428b
+    8B 42 FD 1F 
+// parsed: offset 12, len 20: signature           : 2608...94cb
+    26 08 93 C5 49 69 AF 88 0D C9 EC 21 52 81 36 4E CA 50 94 CB 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "J"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_iget_wide_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "J"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "J"
+//     return_type_idx: 0 (0x000000) "J"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_wide_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_wide.d.T_iget_wide_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_wide.d.T_iget_wide_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget-wide v1, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;.i1:J // field@0000
+//@mod            53 21 00 00 
+            53 21 00 01
+        // parsed: offset 292, len 2: |0002: return-wide v1
+            10 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "J"
+    01 4A 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 77 69 64 65 2F 64 2F 54 5F 69 67 65 74 5F 77 69 64 65 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_iget_wide_4.java"
+    12 54 5F 69 67 65 74 5F 77 69 64 65 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;"
+    // parsed: offset 406, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.d
new file mode 100644
index 0000000..cab5c10
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_5.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_5
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_5.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.d
new file mode 100644
index 0000000..ba13f26
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_6.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       
+       new-instance v0, Ldot/junit/opcodes/iget_wide/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_wide/TestStubs/<init>()V
+       
+       iget-wide v1, v0, dot.junit.opcodes.iget_wide.TestStubs.TestStubField J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.d
new file mode 100644
index 0000000..572fdbe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_7.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_7no_class.i1 J
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.d
new file mode 100644
index 0000000..96b8c56
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_8.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_8.i1N J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.d b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.d
new file mode 100644
index 0000000..3cb12cc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iget_wide_9.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_9
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       const v0, 0
+       iget-wide v1, v0, dot.junit.opcodes.iget_wide.d.T_iget_wide_9.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.java b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.java
new file mode 100644
index 0000000..6999d93
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_9 {
+    
+    public long run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/instance_of/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/instance_of/TestStubs.java
new file mode 100644
index 0000000..1343108
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/instance_of/TestStubs.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.instance_of;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private class TestStub {
+        // used by testVFE5
+        public void foo() {
+            
+        }
+    }   
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/instance_of/Test_instance_of.java b/tools/vm-tests/src/dot/junit/opcodes/instance_of/Test_instance_of.java
new file mode 100644
index 0000000..fc27929
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/instance_of/Test_instance_of.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.instance_of;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.instance_of.d.T_instance_of_1;
+import dot.junit.opcodes.instance_of.d.T_instance_of_2;
+import dot.junit.opcodes.instance_of.d.T_instance_of_3;
+import dot.junit.opcodes.instance_of.d.T_instance_of_7;
+
+public class Test_instance_of extends DxTestCase {
+ 
+    
+    /**
+     * @title (Object)String instanceof String
+     */
+    public void testN1() {
+        T_instance_of_1 t = new T_instance_of_1();
+        String s = "";
+        assertTrue(t.run(s));
+    }
+
+    /**
+     * @title null instanceof String
+     */
+    public void testN2() {
+        T_instance_of_1 t = new T_instance_of_1();
+        assertFalse(t.run(null));
+    }
+
+    /**
+     * @title check assignment compatibility rules
+     */
+    public void testN4() {
+        T_instance_of_2 t = new T_instance_of_2();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title T_instance_of_1 instanceof String
+     */
+    public void testE1() {
+        T_instance_of_1 t = new T_instance_of_1();
+        assertFalse(t.run(t));
+    }
+
+    /**
+     * @title Attempt to access inaccessible class. 
+     */    
+    public void testE2() {
+        //@uses dot.junit.opcodes.instance_of.TestStubs$TestStub
+        //@uses dot.junit.opcodes.instance_of.d.T_instance_of_3
+        try {
+            T_instance_of_3 tt = new T_instance_of_3();
+            tt.run();
+            fail("expected a verification exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch(VerifyError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @title Attempt to access undefined class. 
+     */    
+    public void testE3() {
+        try {
+            T_instance_of_7 tt = new T_instance_of_7();
+            tt.run();
+            fail("expected a verification exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch(VerifyError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A19 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.instance_of.d.T_instance_of_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.instance_of.d.T_instance_of_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.instance_of.d.T_instance_of_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.instance_of.d.T_instance_of_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.d b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.d
new file mode 100644
index 0000000..4741d35
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_instance_of_1.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)Z
+.limit regs 5
+
+       instance-of v0, v4, java/lang/String
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.java b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.java
new file mode 100644
index 0000000..bd9118a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.instance_of.d;
+
+public class T_instance_of_1 {
+
+    public boolean run(Object o) {
+        return o instanceof String; 
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.d b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.d
new file mode 100644
index 0000000..1299b54
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.d
@@ -0,0 +1,119 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestStubs.java
+.interface public dot.junit.opcodes.instance_of.d.T_instance_of_2.SuperInterface
+
+.source TestStubs.java    
+.interface public dot.junit.opcodes.instance_of.d.T_instance_of_2.SuperInterface2
+
+.source TestStubs.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_2.SuperClass 
+.super java/lang/Object
+.implements dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperInterface
+    
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method    
+
+.source TestStubs.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_2.SubClass 
+.super dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass/<init>()V
+       return-void
+.end method
+
+
+.source T_instance_of_2.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 20
+
+    const v0, 0
+    
+; (SubClass instanceof SuperClass)    
+    new-instance v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass/<init>()V
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass
+    if-eqz v15, LabelExit
+    
+; (SubClass[] instanceof SuperClass[])    
+    const v11, 1
+    new-array v10, v11, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+    instance-of v15, v10, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass;
+    if-eqz v15, LabelExit
+
+; (SubClass[] instanceof Object)    
+    new-array v10, v11, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+    instance-of v15, v10, java/lang/Object
+    if-eqz v15, LabelExit
+    
+; (SubClass instanceof SuperInterface)    
+    new-instance v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass/<init>()V    
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperInterface
+    if-eqz v15, LabelExit
+
+; !(SuperClass instanceof SubClass)    
+    new-instance v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass
+    invoke-direct {v10}, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass/<init>()V
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass
+    if-nez v15, LabelExit
+        
+; !(SubClass instanceof SuperInterface2)    
+    new-instance v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass/<init>()V    
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperInterface2
+    if-nez v15, LabelExit
+
+; !(SubClass[] instanceof SuperInterface)    
+    new-array v10, v11, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperInterface
+    if-nez v15, LabelExit
+
+; !(SubClass[] instanceof SubClass)    
+    new-array v10, v11, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass
+    if-nez v15, LabelExit
+    
+; !(SuperClass[] instanceof SubClass[])    
+    new-array v10, v11, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass;
+    instance-of v15, v10, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+    if-nez v15, LabelExit
+    
+    const v0, 1
+    
+LabelExit:        
+    return v0
+    
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.java b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.java
new file mode 100644
index 0000000..e7f1940
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.instance_of.d;
+
+public class T_instance_of_2 {
+
+    public boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.d b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.d
new file mode 100644
index 0000000..60457a1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_instance_of_3.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+       instance-of v0, v5, dot/junit/opcodes/instance_of/TestStubs$TestStub
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.java b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.java
new file mode 100644
index 0000000..65a0165
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.instance_of.d;
+
+public class T_instance_of_3 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.d b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.d
new file mode 100644
index 0000000..fe8b891
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_instance_of_4.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+
+       instance-of v0, v4, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.dfh
new file mode 100644
index 0000000..cec381b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.dfh
@@ -0,0 +1,264 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/instance_of/d/T_instance_of_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/instance_of/d/T_instance_of_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 66154a36
+    36 4A 15 66 
+// parsed: offset 12, len 20: signature           : 2821...ff3e
+    28 21 65 D6 F8 0F AB 2B 99 4B 13 E4 29 66 87 41 09 61 FF 3E 
+// parsed: offset 32, len 4: file_size           : 580
+    44 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 444 (0x0001bc)
+    BC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 340
+    54 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "Ldot/junit/opcodes/instance_of/d/T_instance_of_4;"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 353 (0x000161) "Ljava/lang/Object;"
+    61 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 373 (0x000175) "Ljava/lang/String;"
+    75 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 393 (0x000189) "T_instance_of_4.java"
+    89 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 415 (0x00019f) "V"
+    9F 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 418 (0x0001a2) "VL"
+    A2 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 422 (0x0001a6) "run"
+    A6 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/instance_of/d/T_instance_of_4;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/String;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "VL"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 288 (0x000120)
+    06 00 00 00 03 00 00 00 20 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/instance_of/d/T_instance_of_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_instance_of_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 427 (0x0001ab)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 AB 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.instance_of.d.T_instance_of_4.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.instance_of.d.T_instance_of_4.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: instance-of v0, v4, Ljava/lang/String; // class@0002
+//@mod             20 40 02 00         
+            20 40 02 01 
+        // parsed: offset 284, len 2: |0002: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 51: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/instance_of/d/T_instance_of_4;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 73 74 61 6E 63 65 5F 6F 66 2F 64 2F 54 5F 69 6E 73 74 61 6E 63 65 5F 6F 66 5F 34 3B 00 
+// parsed: offset 353, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 373, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 393, len 22: TYPE_STRING_DATA_ITEM [4] "T_instance_of_4.java"
+    14 54 5F 69 6E 73 74 61 6E 63 65 5F 6F 66 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 415, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 418, len 4: TYPE_STRING_DATA_ITEM [6] "VL"
+    02 56 4C 00 
+// parsed: offset 422, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/instance_of/d/T_instance_of_4;"
+    // parsed: offset 427, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 428, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 429, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 430, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 431, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 432, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 435, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 437, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 438, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 439, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 441, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 444, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 448, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 460, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 472, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 484, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 496, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 508, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 520, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 532, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 544, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 556, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 427 (0x0001ab)
+        00 20 00 00 01 00 00 00 AB 01 00 00 
+    // parsed: offset 568, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 444 (0x0001bc)
+        00 10 00 00 01 00 00 00 BC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_5.d b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_5.d
new file mode 100644
index 0000000..eac21b9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_instance_of_5.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+       const v3, 1234
+       instance-of v1, v3, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_6.d b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_6.d
new file mode 100644
index 0000000..4c2e649
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_instance_of_6.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+
+       instance-of v0, v5, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.d b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.d
new file mode 100644
index 0000000..f0823e7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_instance_of_7.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       instance-of v0, v5, dot/junit/opcodes/instance_of/Test_instance_ofN
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.java b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.java
new file mode 100644
index 0000000..adcd6f7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.instance_of.d;
+
+public class T_instance_of_7 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_8.d b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_8.d
new file mode 100644
index 0000000..2853ade
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/instance_of/d/T_instance_of_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_instance_of_8.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+       const-wide v0, 1234
+       check-cast v0, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/Test_int_to_byte.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/Test_int_to_byte.java
new file mode 100644
index 0000000..55e07fc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/Test_int_to_byte.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_byte.d.T_int_to_byte_1;
+import dot.junit.opcodes.int_to_byte.d.T_int_to_byte_5;
+
+
+public class Test_int_to_byte extends DxTestCase {
+    /**
+     * @title Argument = 1
+     */
+    public void testN1() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN2() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-1, t.run(-1));
+    }
+
+    /**
+     * @title Argument = 16
+     */
+    public void testN3() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(16, t.run(16));
+    }
+
+    /**
+     * @title Argument = -32
+     */
+    public void testN4() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-32, t.run(-32));
+    }
+
+    /**
+     * @title Argument = 134
+     */
+    public void testN5() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-122, t.run(134));
+    }
+
+    
+    /**
+     * @title Argument = -134
+     */
+    public void testN6() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(122, t.run(-134));
+    }
+    
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to byte makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_int_to_byte_5 t = new T_int_to_byte_5();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+
+    /**
+     * @title Argument = 127
+     */
+    public void testB1() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(127, t.run(127));
+    }
+
+    /**
+     * @title Argument = 128
+     */
+    public void testB2() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-128, t.run(128));
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Argument = -128
+     */
+    public void testB4() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-128, t.run(-128));
+    }
+
+    /**
+     * @title Argument = -129
+     */
+    public void testB5() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(127, t.run(-129));
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB6() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB7() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE));
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_byte.d.T_int_to_byte_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_byte.d.T_int_to_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_byte.d.T_int_to_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_byte.d.T_int_to_byte_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.d
new file mode 100644
index 0000000..bfbd201
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_byte_1.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.limit regs 5
+
+       int-to-byte v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.java
new file mode 100644
index 0000000..1397f49
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_byte.d;
+
+public class T_int_to_byte_1 {
+
+    public byte run(int a) {
+        return (byte) a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_2.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_2.d
new file mode 100644
index 0000000..6d18c51
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_byte_2.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.limit regs 5
+
+       const-wide v0, 3.14
+       int-to-byte v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_3.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_3.d
new file mode 100644
index 0000000..6136a49
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_byte_3.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.limit regs 5
+
+       const-wide v0, 1234
+       int-to-byte v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_4.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_4.d
new file mode 100644
index 0000000..5049465
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_byte_4.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.limit regs 5
+
+       int-to-byte v2, v3
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.d
new file mode 100644
index 0000000..78fa37c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_byte_5.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)B
+.limit regs 5
+
+       int-to-byte v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.java
new file mode 100644
index 0000000..7580b7c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_byte.d;
+
+public class T_int_to_byte_5 {
+
+    public byte run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_6.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_6.d
new file mode 100644
index 0000000..66b3071
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_byte_6.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.limit regs 5
+
+       int-to-byte v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_char/Test_int_to_char.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/Test_int_to_char.java
new file mode 100644
index 0000000..b426473
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/Test_int_to_char.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_char.d.T_int_to_char_1;
+import dot.junit.opcodes.int_to_char.d.T_int_to_char_5;
+
+
+public class Test_int_to_char extends DxTestCase {
+    /**
+     * @title Argument = 65
+     */
+    public void testN1() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('A', t.run(65));
+    }
+
+    /**
+     * @title Argument = 65537
+     */
+    public void testN2() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\u0001', t.run(65537));
+    }
+
+    /**
+     * @title Argument = -2
+     */
+    public void testN3() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\ufffe', t.run(-2));
+    }
+
+    /**
+     * @title Argument = 0x110000
+     */
+    public void testN4() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\u0000', t.run(0x110000));
+    }
+
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to char makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_int_to_char_5 t = new T_int_to_char_5();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB1() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\u0000', t.run(0));
+    }
+
+    /**
+     * @title Argument = 65535
+     */
+    public void testB2() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\uffff', t.run(65535));
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB3() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\uffff', t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\u0000', t.run(Integer.MIN_VALUE));
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_char.d.T_int_to_char_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_char.d.T_int_to_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_char.d.T_int_to_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_char.d.T_int_to_char_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.d
new file mode 100644
index 0000000..c469970
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_char_1.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.limit regs 5
+
+       int-to-char v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.java
new file mode 100644
index 0000000..42ad201
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_char.d;
+
+public class T_int_to_char_1 {
+
+    public char run(int a) {
+        return (char) a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_2.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_2.d
new file mode 100644
index 0000000..df98cf1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_char_2.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.limit regs 5
+
+       const-wide v0, 3.14
+       int-to-char v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_3.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_3.d
new file mode 100644
index 0000000..e67ac88
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_char_3.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.limit regs 5
+
+       const-wide v0, 1234
+       int-to-char v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_4.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_4.d
new file mode 100644
index 0000000..72477b6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_char_4.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.limit regs 5
+
+       int-to-char v2, v3
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.d
new file mode 100644
index 0000000..c00482b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_char_5.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)C
+.limit regs 5
+
+       int-to-char v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.java
new file mode 100644
index 0000000..7ebbc1a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_char.d;
+
+public class T_int_to_char_5 {
+
+    public char run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_6.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_6.d
new file mode 100644
index 0000000..91c0397
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_char_6.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.limit regs 5
+
+       int-to-char v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_double/Test_int_to_double.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/Test_int_to_double.java
new file mode 100644
index 0000000..ae32560
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/Test_int_to_double.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_double.d.T_int_to_double_1;
+import dot.junit.opcodes.int_to_double.d.T_int_to_double_6;
+
+
+public class Test_int_to_double extends DxTestCase {
+    /**
+     * @title Argument = 300000000
+     */
+    public void testN1() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(300000000d, t.run(300000000), 0d);
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(1d, t.run(1), 0d);
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(-1d, t.run(-1), 0d);
+    }
+
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to double makes no sense but shall not crash the VM.  
+     */
+
+    public void testN8() {
+        T_int_to_double_6 t = new T_int_to_double_6();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(2147483647d, t.run(Integer.MAX_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(-2147483648d, t.run(Integer.MIN_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(0d, t.run(0), 0d);
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_double.d.T_int_to_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_double.d.T_int_to_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_double.d.T_int_to_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_double.d.T_int_to_double_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.d
new file mode 100644
index 0000000..19a17f4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_double_1.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 6
+
+       int-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.java
new file mode 100644
index 0000000..5277313
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_double.d;
+
+public class T_int_to_double_1 {
+
+    public double run(int a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_3.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_3.d
new file mode 100644
index 0000000..adc6bfb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_double_3.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 6
+
+       const-wide v4, 123455    
+
+       int-to-double v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_4.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_4.d
new file mode 100644
index 0000000..51f6966
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_double_4.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 1
+
+       const v0, 1234
+       int-to-double v0, v0
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_5.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_5.d
new file mode 100644
index 0000000..9d8382d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_double_5.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 6
+
+       int-to-double v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.d
new file mode 100644
index 0000000..529f23e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_double_6.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       int-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.java
new file mode 100644
index 0000000..213dc7a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_double.d;
+
+public class T_int_to_double_6 {
+
+    public double run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_7.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_7.d
new file mode 100644
index 0000000..06b12b4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_double_7.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 6
+
+       int-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_float/Test_int_to_float.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/Test_int_to_float.java
new file mode 100644
index 0000000..8b6e978
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/Test_int_to_float.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_float.d.T_int_to_float_1;
+import dot.junit.opcodes.int_to_float.d.T_int_to_float_5;
+
+public class Test_int_to_float extends DxTestCase {
+    /**
+     * @title Argument = 123456
+     */
+    public void testN1() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(123456f, t.run(123456), 0f);
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(1f, t.run(1), 0f);
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(-1f, t.run(-1), 0f);
+    }
+
+    /**
+     * @title Argument = 33564439
+     */
+    public void testN4() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(3.356444E7f, t.run(33564439), 0f);
+    }
+
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to float makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_int_to_float_5 t = new T_int_to_float_5();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+        
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB1() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(0f, t.run(0), 0f);
+    }
+
+    /**
+     * @title Argument = Argument = Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(2147483650f, t.run(Integer.MAX_VALUE), 0f);
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(-2147483650f, t.run(Integer.MIN_VALUE), 0f);
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  (type of argument - double)
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_float.d.T_int_to_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_float.d.T_int_to_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_float.d.T_int_to_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_float.d.T_int_to_float_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.d
new file mode 100644
index 0000000..16b6f1a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_float_1.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       int-to-float v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.java
new file mode 100644
index 0000000..777d81e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_float.d;
+
+public class T_int_to_float_1 {
+
+    public float run(int a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_2.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_2.d
new file mode 100644
index 0000000..c2fdf91
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_float_2.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       const-wide v0, 3.14
+       int-to-float v2, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_3.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_3.d
new file mode 100644
index 0000000..4f16417
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_float_3.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       const-wide v0, 1234
+       int-to-float v2, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_4.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_4.d
new file mode 100644
index 0000000..e31d685d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_float_4.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       int-to-float v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.d
new file mode 100644
index 0000000..c5bd602
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_float_5.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)F
+.limit regs 5
+
+       int-to-float v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.java
new file mode 100644
index 0000000..3324016
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_float.d;
+
+public class T_int_to_float_5 {
+
+    public float run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_6.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_6.d
new file mode 100644
index 0000000..37db947
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_float_6.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       int-to-float v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_long/Test_int_to_long.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/Test_int_to_long.java
new file mode 100644
index 0000000..3147723
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/Test_int_to_long.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_long.d.T_int_to_long_1;
+import dot.junit.opcodes.int_to_long.d.T_int_to_long_6;
+
+public class Test_int_to_long extends DxTestCase {
+    /**
+     * @title Argument = 123456
+     */
+    public void testN1() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(123456l, t.run(123456));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(1l, t.run(1));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(-1l, t.run(-1));
+    }
+    
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN8() {
+        T_int_to_long_6 t = new T_int_to_long_6();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB1() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(0l, t.run(0));
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(2147483647l, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(-2147483648l, t.run(Integer.MIN_VALUE));
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_long.d.T_int_to_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_long.d.T_int_to_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_long.d.T_int_to_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_long.d.T_int_to_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_long.d.T_int_to_long_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.d
new file mode 100644
index 0000000..4f91de2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_long_1.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       int-to-long v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.java
new file mode 100644
index 0000000..03becc7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_long.d;
+
+public class T_int_to_long_1 {
+
+    public long run(int a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_2.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_2.d
new file mode 100644
index 0000000..eab475b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_long_2.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       const-wide v4, 3.1415    
+
+       int-to-long v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_3.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_3.d
new file mode 100644
index 0000000..05527d4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_long_3.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       const-wide v4, 123455    
+
+       int-to-long v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_4.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_4.d
new file mode 100644
index 0000000..9f26670
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_long_4.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 1
+
+       const v0, 1234
+       int-to-long v0, v0
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_5.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_5.d
new file mode 100644
index 0000000..f006048
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_long_5.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       int-to-long v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.d
new file mode 100644
index 0000000..f71a28d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_long_6.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       int-to-long v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.java
new file mode 100644
index 0000000..da307c7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_long.d;
+
+public class T_int_to_long_6 {
+
+    public long run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_7.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_7.d
new file mode 100644
index 0000000..c2db686
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_long_7.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       int-to-long v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_short/Test_int_to_short.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/Test_int_to_short.java
new file mode 100644
index 0000000..7e4c6a2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/Test_int_to_short.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_short.d.T_int_to_short_1;
+import dot.junit.opcodes.int_to_short.d.T_int_to_short_5;
+
+public class Test_int_to_short extends DxTestCase {
+    /**
+     * @title Argument = 1
+     */
+    public void testN1() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN2() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(-1, t.run(-1));
+    }
+
+    /**
+     * @title Argument = 32767
+     */
+    public void testN3() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(32767, t.run(32767));
+    }
+
+    /**
+     * @title Argument = -32768
+     */
+    public void testN4() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(-32768, t.run(-32768));
+    }
+
+    /**
+     * @title Argument = -32769
+     */
+    public void testN5() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(32767, t.run(-32769));
+    }
+
+    /**
+     * @title Argument = 32768
+     */
+    public void testN6() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(-32768, t.run(32768));
+    }
+
+    /**
+     * @title Argument = 0x10fedc;
+     */
+    public void testN7() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(0xfffffedc, t.run(0x10fedc));
+    }
+
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to short makes no sense but shall not crash the VM.  
+     */
+
+    public void testN8() {
+        T_int_to_short_5 t = new T_int_to_short_5();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB1() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE));
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_short.d.T_int_to_short_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_short.d.T_int_to_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_short.d.T_int_to_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_short.d.T_int_to_short_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.d
new file mode 100644
index 0000000..fcf1727
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_short_1.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.limit regs 5
+
+       int-to-short v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.java
new file mode 100644
index 0000000..2188088
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_short.d;
+
+public class T_int_to_short_1 {
+
+    public short run(int a) {
+        return (short)a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_2.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_2.d
new file mode 100644
index 0000000..9c1154b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_short_2.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.limit regs 5
+
+       const-wide v0, 3.14
+       int-to-short v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_3.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_3.d
new file mode 100644
index 0000000..5f83549
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_short_3.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.limit regs 5
+
+       const-wide v0, 1234
+       int-to-short v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_4.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_4.d
new file mode 100644
index 0000000..147fb66
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_short_4.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.limit regs 5
+
+       int-to-short v2, v3
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.d
new file mode 100644
index 0000000..8ca83e6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_short_5.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)S
+.limit regs 5
+
+       int-to-short v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.java b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.java
new file mode 100644
index 0000000..2749fc0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.int_to_short.d;
+
+public class T_int_to_short_5 {
+
+    public short run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_6.d b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_6.d
new file mode 100644
index 0000000..8d6f0ec
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_int_to_short_6.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.limit regs 5
+
+       int-to-short v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/TAbstract.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/TAbstract.java
new file mode 100644
index 0000000..f6d0ed0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/TAbstract.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct;
+
+public abstract class TAbstract {
+    protected abstract int toInt();
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/TPlain.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/TPlain.java
new file mode 100644
index 0000000..a6db3d4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/TPlain.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct;
+
+public class TPlain {
+    public int toInt() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/TSuper.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/TSuper.java
new file mode 100644
index 0000000..03026ee
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/TSuper.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct;
+
+/**
+ * @author fjost
+ *
+ */
+public class TSuper {
+    public int val;
+    
+    public int toInt() {
+        return 5;
+    }
+    
+    public int toInt(float v) {
+        return (int)v;
+    }
+    
+    public int testArgsOrder(int a, int b) {
+        return a/b;
+    }
+    
+    public native int toIntNative();
+    
+    public static int toIntStatic() {
+        return 5;
+    }
+    
+    protected int toIntP() {
+        return 5;
+    }
+    
+    private int toIntPvt() {
+        return 5;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/Test_invoke_direct.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/Test_invoke_direct.java
new file mode 100644
index 0000000..69e1fe2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/Test_invoke_direct.java
@@ -0,0 +1,341 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_2;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_21;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_8;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_9;
+
+public class Test_invoke_direct extends DxTestCase {
+
+    /**
+     * @title private method call
+     */
+    public void testN2() {
+        T_invoke_direct_2 t = new T_invoke_direct_2();
+        assertEquals(345, t.run());
+    }
+
+
+    /**
+     * @title Check that new frame is created by invoke_direct
+     */
+    public void testN7() {
+        T_invoke_direct_21 t = new T_invoke_direct_21();
+        assertEquals(1, t.run());
+    }
+
+
+
+    /**
+     * @title objref is null
+     */
+    public void testE3() {
+        T_invoke_direct_8 t = new T_invoke_direct_8();
+        try {
+            assertEquals(5, t.run());
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE5() {
+        T_invoke_direct_9 t = new T_invoke_direct_9();
+        try {
+            assertEquals(5, t.run());
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError e) {
+            // expected
+        }
+    }   
+
+    /**
+     * @constraint A13 
+     * @title invalid constant pool index 
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15 
+     * @title invoke-direct may not be used to invoke &lt;clinit&gt;
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B4 
+     * @title invoke-direct target must be in self or superclass
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_6
+        //@uses dot.junit.opcodes.invoke_direct.TSuper       
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title number of arguments
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title int is passed instead of obj ref
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B9
+     * @title number of arguments passed to method
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing protected method
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_25
+        //@uses dot.junit.opcodes.invoke_direct.TPlain                
+        //@uses dot.junit.opcodes.invoke_direct.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_25");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B5
+     * @title  Superclass' method call
+     */
+    public void testVFE11() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_25
+        //@uses dot.junit.opcodes.invoke_direct.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+ 
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+        
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method. Java throws NoSuchMethodError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Method has different signature. Java throws NoSuchMethodError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke static method. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of superclass. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_12
+        //@uses dot.junit.opcodes.invoke_direct.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke abstract method
+     */
+    public void testVFE17() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_13
+        //@uses dot.junit.opcodes.invoke_direct.TAbstract       
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B5 
+     * @title An instance initializer must only be invoked on an uninitialized instance. 
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B8 
+     * @title attempt to access inherited instance field before <init> is called
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_18
+        //@uses dot.junit.opcodes.invoke_direct.TSuper   
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A13 
+     * @title attempt to invoke interface method
+     */
+    public void testVFE20() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_26");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B6 
+     * @title instance methods may only be invoked on already initialized instances. 
+     */
+    public void testVFE21() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_27");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.d
new file mode 100644
index 0000000..65a8a32
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_1.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_1
+.super dot/junit/opcodes/invoke_direct/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/TSuper/toInt()I
+       move-result v1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.java
new file mode 100644
index 0000000..b692683
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct.d;
+
+import dot.junit.opcodes.invoke_direct.TSuper;
+
+public class T_invoke_direct_1 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10.d
new file mode 100644
index 0000000..08b22c9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_10.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v0, 1222
+       invoke-direct {v0}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_11.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_11.d
new file mode 100644
index 0000000..6566718
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_11.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_11.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot.junit.opcodes.invoke_direct.d.T_invoke_direct_11/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
+.method private static toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.d
new file mode 100644
index 0000000..6230fa9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_12.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_12
+.super dot/junit/opcodes/invoke_direct/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/toIntPvt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.d
new file mode 100644
index 0000000..23d4378
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_13.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_13
+.super dot/junit/opcodes/invoke_direct/TAbstract
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TAbstract/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/TAbstract/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14.d
new file mode 100644
index 0000000..4d10ce8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_14.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       const v3, 50
+       const v4, 25
+       
+       invoke-direct {v6, v3}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15.d
new file mode 100644
index 0000000..55b7d3c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_15.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v3}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.d
new file mode 100644
index 0000000..10e041d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_16.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16/toInt()F
+       
+       const/4 v1, 0
+       return v1
+.end method
+
+
+.method private toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_17.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_17.d
new file mode 100644
index 0000000..35a54d9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_17.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       new-instance v0, java/lang/String
+       invoke-direct {v0} java/lang/String/<init>()V
+         invoke-direct {v0} java/lang/String/<init>()V
+       return-void       
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_18.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_18.d
new file mode 100644
index 0000000..602cbeb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_18.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_18.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_18
+.super dot/junit/opcodes/invoke_direct/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       const v0, 0
+       iput v0, v1, dot.junit.opcodes.invoke_direct.d.T_invoke_direct_18.val I
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.d
new file mode 100644
index 0000000..0c11388
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_2.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.java
new file mode 100644
index 0000000..ab6e1ae
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct.d;
+
+public class T_invoke_direct_2 {
+
+    public int run() {
+        return getInt();
+    }
+
+    private int getInt() {
+        return 345;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.d
new file mode 100644
index 0000000..d6653fc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_21.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       const v3, 50
+       const v4, 25
+       
+       invoke-direct {v6, v3, v4}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.java
new file mode 100644
index 0000000..cec52ef
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct.d;
+
+public class T_invoke_direct_21 {
+
+    
+    private int test(int a, int b) {
+        int i = 999;
+        int j = 888;
+        int k = 777;
+        return a / b;
+    }
+    
+    public int run() {
+        int i = 111;
+        int j = 222;
+        int k = 333;
+        test(50, 25);
+        
+        return 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24.d
new file mode 100644
index 0000000..83fd3db
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_24.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_24
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       
+       const-wide v3, 50
+       
+       invoke-direct {v6, v3, v4}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25.d
new file mode 100644
index 0000000..8d872ad
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_25.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_25
+.super dot/junit/opcodes/invoke_direct/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/<init>()V
+       return-void
+.end method
+
+.method private test()V
+    return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_direct/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/TPlain/<init>()V
+
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25/test()V
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.d
new file mode 100644
index 0000000..40cce50
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_direct.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_direct.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_direct.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_direct_26.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_26
+.super dot/junit/opcodes/invoke_direct/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-direct {v7}, dot/junit/opcodes/invoke_direct/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27.d
new file mode 100644
index 0000000..0ac6b37
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_27.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_27
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test()V
+    return-void
+.end method
+
+.method public static run()V
+.limit regs 3
+
+       new-instance v0, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27
+       
+       invoke-direct {v0}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27/test()V
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.d
new file mode 100644
index 0000000..6aa7821
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_3.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.dfh
new file mode 100644
index 0000000..993ee4e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.dfh
@@ -0,0 +1,285 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : b8124ca4
+    A4 4C 12 B8 
+// parsed: offset 12, len 20: signature           : 70e1...b983
+    70 E1 1F B5 6C 1D F3 77 2E 7D E3 42 02 A1 DA DC 85 4D B9 83 
+// parsed: offset 32, len 4: file_size           : 592
+    50 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 344
+    58 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 324 (0x000144) "<init>"
+    44 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 332 (0x00014c) "I"
+    4C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 335 (0x00014f) "Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;"
+    4F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 390 (0x000186) "Ljava/lang/Object;"
+    86 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 410 (0x00019a) "T_invoke_direct_3.java"
+    9A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 434 (0x0001b2) "V"
+    B2 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 437 (0x0001b5) "getInt"
+    B5 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 445 (0x0001bd) "run"
+    BD 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "getInt"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [3] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_invoke_direct_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 450 (0x0001c2)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 C2 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct.d.T_invoke_direct_3.<init>"
+    // parsed: offset 248, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct.d.T_invoke_direct_3.getInt"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: const/16 v1, #int 345 // #0x159
+            13 01 59 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct.d.T_invoke_direct_3.run"
+    // parsed: offset 296, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 298, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 300, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 302, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 304, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 308, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 312, len 6: |0000: invoke-direct {v2}, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;.getInt:()I // method@0001
+//@mod            70 10 01 00 02 00 
+            70 10 01 01 02 00 
+        // parsed: offset 318, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 320, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 322, len 2: PADDING
+    00 00 
+// parsed: offset 324, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 332, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 335, len 55: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 5F 33 3B 00 
+// parsed: offset 390, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 410, len 24: TYPE_STRING_DATA_ITEM [4] "T_invoke_direct_3.java"
+    16 54 5F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 434, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 437, len 8: TYPE_STRING_DATA_ITEM [6] "getInt"
+    06 67 65 74 49 6E 74 00 
+// parsed: offset 445, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;"
+    // parsed: offset 450, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 451, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 452, len 1: direct_methods_size: 2
+        02 
+    // parsed: offset 453, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 454, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 455, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 458, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+        // method [1]:
+            // parsed: offset 460, len 1: method_idx_diff: 1 (method_idx: 1 "getInt")
+                01 
+            // parsed: offset 461, len 1: access_flags: 0x000002 (PRIVATE)
+                02 
+            // parsed: offset 462, len 2: code_off: 272 (0x000110)
+                90 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 464, len 1: method_idx_diff: 2 (method_idx: 2 "run")
+                02 
+            // parsed: offset 465, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 466, len 2: code_off: 296 (0x000128)
+                A8 02 
+// map_list:
+    // parsed: offset 468, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 04 00 00 00 B8 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 03 00 00 00 F8 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 324 (0x000144)
+        02 20 00 00 08 00 00 00 44 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 450 (0x0001c2)
+        00 20 00 00 01 00 00 00 C2 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.d
new file mode 100644
index 0000000..e6e7511
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_4.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_4
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+    invoke-direct {v0}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4/<clinit>()V
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5.d
new file mode 100644
index 0000000..c4dac34
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_5.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.d
new file mode 100644
index 0000000..6bb8833
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.d
@@ -0,0 +1,27 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_6.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V    
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/toIntPvt()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.d
new file mode 100644
index 0000000..2c1b99b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_7.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7/toInt()I
+       const v0, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.d
new file mode 100644
index 0000000..99b510b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_8.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/4 v1, 0
+       invoke-direct {v1}, dot.junit.opcodes.invoke_direct.d.T_invoke_direct_8/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method private toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.java
new file mode 100644
index 0000000..8c9825d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct.d;
+
+public class T_invoke_direct_8 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.d
new file mode 100644
index 0000000..262b5ff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_9.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot.junit.opcodes.invoke_direct.d.T_invoke_direct_9/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method private native toInt()I
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.java
new file mode 100644
index 0000000..c0913ab5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct.d;
+
+public class T_invoke_direct_9 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/TAbstract.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/TAbstract.java
new file mode 100644
index 0000000..8c5ab27
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/TAbstract.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range;
+
+public abstract class TAbstract {
+    protected abstract int toInt();
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/TPlain.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/TPlain.java
new file mode 100644
index 0000000..3e4aab1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/TPlain.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range;
+
+public class TPlain {
+    public int toInt() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/TSuper.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/TSuper.java
new file mode 100644
index 0000000..7360476
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/TSuper.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/** Copyright (C) 2008 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dot.junit.opcodes.invoke_direct_range;
+
+/**
+ * @author fjost
+ *
+ */
+public class TSuper {
+    public int val;
+    public int toInt() {
+        return 5;
+    }
+    
+    public int toInt(float v) {
+        return (int)v;
+    }
+    
+    public int testArgsOrder(int a, int b) {
+        return a/b;
+    }
+    
+    public native int toIntNative();
+    
+    public static int toIntStatic() {
+        return 5;
+    }
+    
+    protected int toIntP() {
+        return 5;
+    }
+    
+    private int toIntPvt() {
+        return 5;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/Test_invoke_direct_range.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/Test_invoke_direct_range.java
new file mode 100644
index 0000000..0a903f3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/Test_invoke_direct_range.java
@@ -0,0 +1,341 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_2;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_21;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_8;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_9;
+
+public class Test_invoke_direct_range extends DxTestCase {
+
+    /**
+     * @title private method call
+     */
+    public void testN2() {
+        T_invoke_direct_range_2 t = new T_invoke_direct_range_2();
+        assertEquals(345, t.run());
+    }
+
+
+    /**
+     * @title Check that new frame is created by invoke_direct_range
+     */
+    public void testN7() {
+        T_invoke_direct_range_21 t = new T_invoke_direct_range_21();
+        assertEquals(1, t.run());
+    }
+
+
+
+    /**
+     * @title objref is null
+     */
+    public void testE3() {
+        T_invoke_direct_range_8 t = new T_invoke_direct_range_8();
+        try {
+            assertEquals(5, t.run());
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE5() {
+        T_invoke_direct_range_9 t = new T_invoke_direct_range_9();
+        try {
+            assertEquals(5, t.run());
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError e) {
+            // expected
+        }
+    }   
+
+    /**
+     * @constraint A14 
+     * @title invalid constant pool index 
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15 
+     * @title invoke-direct may not be used to invoke &lt;clinit&gt;
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B4
+     * @title invoke-direct target must be in self or superclass
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_6
+        //@uses dot.junit.opcodes.invoke_direct_range.TSuper       
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title number of arguments
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title int is passed instead of obj ref
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B9
+     * @title number of arguments passed to method
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing protected method
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_25
+        //@uses dot.junit.opcodes.invoke_direct_range.TPlain                
+        //@uses dot.junit.opcodes.invoke_direct_range.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_25");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B5
+     * @title  Superclass' method call
+     */
+    public void testVFE11() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_25
+        //@uses dot.junit.opcodes.invoke_direct_range.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+ 
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+        
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method. Java throws NoSuchMethodError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Method has different signature. Java throws NoSuchMethodError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke static method. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of superclass. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_12
+        //@uses dot.junit.opcodes.invoke_direct_range.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke abstract method
+     */
+    public void testVFE17() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_13
+        //@uses dot.junit.opcodes.invoke_direct_range.TAbstract       
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B5 
+     * @title An instance initializer must only be invoked on an uninitialized instance. 
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B8 
+     * @title attempt to access inherited instance field before <init> is called
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_18
+        //@uses dot.junit.opcodes.invoke_direct_range.TSuper   
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A14
+     * @title attempt to invoke interface method
+     */
+    public void testVFE20() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_26");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B6 
+     * @title instance methods may only be invoked on already initialized instances. 
+     */
+    public void testVFE21() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_27");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.d
new file mode 100644
index 0000000..7123eb9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_1.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_1
+.super dot/junit/opcodes/invoke_direct_range/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/TSuper/toInt()I
+       move-result v1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.java
new file mode 100644
index 0000000..243b923
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range.d;
+
+import dot.junit.opcodes.invoke_direct_range.TSuper;
+
+public class T_invoke_direct_range_1 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10.d
new file mode 100644
index 0000000..2dcf576
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_10.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v0, 1222
+       invoke-direct/range {v0}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_11.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_11.d
new file mode 100644
index 0000000..772fc10
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_11.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_11.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_11/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
+.method private static toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.d
new file mode 100644
index 0000000..a107ac3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_12.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_12
+.super dot/junit/opcodes/invoke_direct_range/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/toIntPvt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.d
new file mode 100644
index 0000000..830c367
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_13.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_13
+.super dot/junit/opcodes/invoke_direct_range/TAbstract
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/TAbstract/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/TAbstract/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14.d
new file mode 100644
index 0000000..a59d5ad
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_14.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       const v4, 50
+       const v5, 25
+       move-object v3, v6
+       invoke-direct/range {v3..v4}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15.d
new file mode 100644
index 0000000..343eafd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_15.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v3}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.d
new file mode 100644
index 0000000..82b85d8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_16.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16/toInt()F
+       
+       const/4 v1, 0
+       return v1
+.end method
+
+
+.method private toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_17.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_17.d
new file mode 100644
index 0000000..add1dc9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_17.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       new-instance v0, java/lang/String
+       invoke-direct/range {v0} java/lang/String/<init>()V
+         invoke-direct/range {v0} java/lang/String/<init>()V
+       return-void       
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_18.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_18.d
new file mode 100644
index 0000000..3922d1b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_18.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_18.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_18
+.super dot/junit/opcodes/invoke_direct_range/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       const v0, 0
+       iput v0, v1, dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_18.val I
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.d
new file mode 100644
index 0000000..3d4e23c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_2.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.java
new file mode 100644
index 0000000..09fa293
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_2 {
+
+    public int run() {
+        return getInt();
+    }
+
+    private int getInt() {
+        return 345;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.d
new file mode 100644
index 0000000..234de66
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_21.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       const v4, 50
+       const v5, 25
+         move-object v3, v6
+       invoke-direct/range {v3..v5}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.java
new file mode 100644
index 0000000..537d238
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_21 {
+
+    
+    private int test(int a, int b) {
+        int i = 999;
+        int j = 888;
+        int k = 777;
+        return a / b;
+    }
+    
+    public int run() {
+        int i = 111;
+        int j = 222;
+        int k = 333;
+        test(50, 25);
+        
+        return 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24.d
new file mode 100644
index 0000000..31a24c4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_24.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_24
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       
+       const-wide v4, 50
+          move-object v3, v6
+       invoke-direct {v3..v5}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25.d
new file mode 100644
index 0000000..6c2334e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_25.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_25
+.super dot/junit/opcodes/invoke_direct_range/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/<init>()V
+       return-void
+.end method
+
+.method private test()V
+    return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_direct_range/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct_range/TPlain/<init>()V
+
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25/test()V
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.d
new file mode 100644
index 0000000..6160fe5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_direct_range.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_direct_range.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_direct_range.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_direct_range_26.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_26
+.super dot/junit/opcodes/invoke_direct_range/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct_range/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-direct/range {v7}, dot/junit/opcodes/invoke_direct_range/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27.d
new file mode 100644
index 0000000..1073241
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_27.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_27
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test()V
+    return-void
+.end method
+
+.method public static run()V
+.limit regs 3
+
+       new-instance v0, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27
+       
+       invoke-direct/range {v0}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27/test()V
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.d
new file mode 100644
index 0000000..056f2c2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_3.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.dfh
new file mode 100644
index 0000000..9772f88
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.dfh
@@ -0,0 +1,287 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c60753cb
+    CB 53 07 C6 
+// parsed: offset 12, len 20: signature           : 556e...6eba
+    55 6E A2 8D 60 66 C0 56 70 4C 6B 33 11 26 64 F4 F4 94 6E BA 
+// parsed: offset 32, len 4: file_size           : 612
+    64 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 488 (0x0001e8)
+    E8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 364
+    6C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 324 (0x000144) "<init>"
+    44 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 332 (0x00014c) "I"
+    4C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 335 (0x00014f) "Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;"
+    4F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 402 (0x000192) "Ljava/lang/Object;"
+    92 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 422 (0x0001a6) "T_invoke_direct_range_3.java"
+    A6 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 452 (0x0001c4) "V"
+    C4 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 455 (0x0001c7) "getInt"
+    C7 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 463 (0x0001cf) "run"
+    CF 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "getInt"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [3] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_invoke_direct_range_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 468 (0x0001d4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 D4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_3.<init>"
+    // parsed: offset 248, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_3.getInt"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: const/16 v1, #int 345 // #0x159
+            13 01 59 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_3.run"
+    // parsed: offset 296, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 298, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 300, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 302, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 304, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 308, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 312, len 6: |0000: invoke-direct/range {v2..v2}, Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;.getInt:()I // method@0001
+//@mod            76 01 01 00 02 00 
+            76 01 01 01 02 00 
+        // parsed: offset 318, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 320, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 322, len 2: PADDING
+    00 00 
+// parsed: offset 324, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 332, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 335, len 67: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;"
+    41 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 5F 72 61 6E 67 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 5F 72 61 6E 67 65 5F 33 3B 00 
+// parsed: offset 402, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 422, len 30: TYPE_STRING_DATA_ITEM [4] "T_invoke_direct_range_3.java"
+    1C 54 5F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 5F 72 61 6E 67 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 452, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 455, len 8: TYPE_STRING_DATA_ITEM [6] "getInt"
+    06 67 65 74 49 6E 74 00 
+// parsed: offset 463, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;"
+    // parsed: offset 468, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 469, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 470, len 1: direct_methods_size: 2
+        02 
+    // parsed: offset 471, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 472, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 473, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 476, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+        // method [1]:
+            // parsed: offset 478, len 1: method_idx_diff: 1 (method_idx: 1 "getInt")
+                01 
+            // parsed: offset 479, len 1: access_flags: 0x000002 (PRIVATE)
+                02 
+            // parsed: offset 480, len 2: code_off: 272 (0x000110)
+                90 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 482, len 1: method_idx_diff: 2 (method_idx: 2 "run")
+                02 
+            // parsed: offset 483, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 484, len 2: code_off: 296 (0x000128)
+                A8 02 
+// parsed: offset 486, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 488, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 492, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 504, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 516, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 528, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 540, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 04 00 00 00 B8 00 00 00 
+    // parsed: offset 552, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 564, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 03 00 00 00 F8 00 00 00 
+    // parsed: offset 576, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 324 (0x000144)
+        02 20 00 00 08 00 00 00 44 01 00 00 
+    // parsed: offset 588, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 20 00 00 01 00 00 00 D4 01 00 00 
+    // parsed: offset 600, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 488 (0x0001e8)
+        00 10 00 00 01 00 00 00 E8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4.d
new file mode 100644
index 0000000..a7aeae9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_4.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_4
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+    invoke-direct/range {v0}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4/<clinit>()V
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5.d
new file mode 100644
index 0000000..4ec85bb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_5.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.d
new file mode 100644
index 0000000..cda9caf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.d
@@ -0,0 +1,27 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_6.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V    
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/toIntPvt()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.d
new file mode 100644
index 0000000..f0254f4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_7.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7/toInt()I
+       const v0, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.d
new file mode 100644
index 0000000..946c65f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_8.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/4 v1, 0
+       invoke-direct/range {v1}, dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_8/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method private toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.java
new file mode 100644
index 0000000..bde2e71
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_8 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.d
new file mode 100644
index 0000000..567bd84
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_direct_range_9.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_9/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method private native toInt()I
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.java
new file mode 100644
index 0000000..db73113
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_9 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/ITest.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/ITest.java
new file mode 100644
index 0000000..79917a7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/ITest.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface;
+
+public interface ITest {
+    public void doit();
+    public void doit(int i);
+    public void doitNative();
+    public int test(int a);
+    public int testArgsOrder(int a, int b);
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/ITestImpl.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/ITestImpl.java
new file mode 100644
index 0000000..6d27e1e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/ITestImpl.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface;
+
+
+
+public class ITestImpl implements ITest {
+    public void doit() {
+        // impl
+    }
+
+    public void doit(int i) {
+        //
+    }
+
+    public native void doitNative();
+
+    public int test(int a) {
+        if (a == 999) return 195;
+        return 0;
+    }
+
+    public int testArgsOrder(int a, int b) {
+        return a / b;
+    }
+
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/ITestImplAbstract.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/ITestImplAbstract.java
new file mode 100644
index 0000000..af7a36029
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/ITestImplAbstract.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface;
+
+
+public abstract class ITestImplAbstract implements ITest {
+    abstract public void doit();
+    abstract public void doit(int i);
+    public native void doitNative();
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/Test_invoke_interface.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/Test_invoke_interface.java
new file mode 100644
index 0000000..3f8a7e9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/Test_invoke_interface.java
@@ -0,0 +1,308 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_1;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_11;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_12;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_13;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_14;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_17;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_3;
+
+public class Test_invoke_interface extends DxTestCase {
+
+    /**
+     * @title invoke interface method
+     */
+    public void testN1() {
+        T_invoke_interface_1 t = new T_invoke_interface_1();
+        assertEquals(0, t.run("aa", "aa"));
+        assertEquals(-1, t.run("aa", "bb"));
+        assertEquals(1, t.run("bb", "aa"));
+    }
+    
+    /**
+     * @title Check that new frame is created by invoke_interface and
+     * arguments are passed to method
+     */
+    public void testN2() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_14
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        T_invoke_interface_14 t = new T_invoke_interface_14();
+        ITestImpl impl = new ITestImpl();
+        assertEquals(1, t.run(impl));
+    }
+
+
+    
+    /**
+     * @title objref is null
+     */
+    public void testE3() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_3
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        try {
+            new T_invoke_interface_3(null);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title object doesn't implement interface
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_11
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        T_invoke_interface_11 t = new T_invoke_interface_11();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE5() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_12
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        T_invoke_interface_12 t = new T_invoke_interface_12();
+        ITestImpl impl = new ITestImpl();
+        try {
+            t.run(impl);
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE6() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_13
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        //@uses dot.junit.opcodes.invoke_interface.ITestImplAbstract
+        T_invoke_interface_13 t = new T_invoke_interface_13();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError e) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @title Attempt to invoke non-public interface method
+     */
+    public void testE8() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_17
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl        
+        //@uses dot.junit.opcodes.invoke_interface.ITestImplAbstract        
+        try {
+            T_invoke_interface_17 t = new T_invoke_interface_17();
+            t.run();
+            fail("expected a verification exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError e) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint A16
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A16
+     * @title The referenced method_id must belong to an interface (not a class). 
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title int is passed instead of objref
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9 
+     * @title number of arguments passed to method
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15 
+     * @title invoke-interface may not be used to call <init>.
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15 
+     * @title invoke-interface may not be used to call <clinit>.
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method. Java throws NoSuchMethodError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_7
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl        
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Method has different signature. Java throws NoSuchMethodError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_16
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl     
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint B6 
+     * @title instance methods may only be invoked on already initialized instances. 
+     */
+    public void testVFE21() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_22
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl             
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.d
new file mode 100644
index 0000000..72c1843
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_1.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface {v6, v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.java
new file mode 100644
index 0000000..4e0f991
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+public class T_invoke_interface_1 {
+
+    public int run(Comparable c, Object o) {
+        return c.compareTo(o);
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_10.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_10.d
new file mode 100644
index 0000000..65ca5f2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_10.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+       const v6, 1243
+       invoke-interface {v6, v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.d
new file mode 100644
index 0000000..110d826
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_11.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       invoke-interface {v4}, dot/junit/opcodes/invoke_interface/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.java
new file mode 100644
index 0000000..1bde245
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+
+public class T_invoke_interface_11 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.d
new file mode 100644
index 0000000..c623612
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_12.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 5
+
+       invoke-interface {v4}, dot/junit/opcodes/invoke_interface/ITest/doitNative()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.java
new file mode 100644
index 0000000..344e3d6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_12 {
+
+    public void run(ITest test) {
+        test.doitNative();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.d
new file mode 100644
index 0000000..8d696af
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_13.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_13
+.super dot/junit/opcodes/invoke_interface/ITestImplAbstract
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_interface/ITestImplAbstract/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 7
+
+       invoke-interface {v6}, dot/junit/opcodes/invoke_interface/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.java
new file mode 100644
index 0000000..d0cd67d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+
+public class T_invoke_interface_13 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.d
new file mode 100644
index 0000000..d6ce02a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.d
@@ -0,0 +1,54 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_14.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)I
+.limit regs 9
+    const v1, 123
+    const v2, 345
+
+    const v4, 64
+    const v5, 2
+    invoke-interface {v8, v4, v5}, dot/junit/opcodes/invoke_interface/ITest/testArgsOrder(II)I
+    move-result v4
+    const v5, 32
+    if-ne v4, v5, Label0
+
+    const v5, 123
+    if-ne v5, v1, Label0
+
+    const v5, 345
+    if-ne v5, v2, Label0
+
+
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.java
new file mode 100644
index 0000000..11a8128
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_14 {
+
+    public int run(ITest test) {
+        int a = 123;
+        int b = 345;
+        if(test.testArgsOrder(64, 2) == 32)
+        {
+            if(a == 123)
+                if(b == 345)
+                    return 1;
+        }
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.d
new file mode 100644
index 0000000..3c972ce
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_16.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 6
+
+       const/high16 v3, 1065353216
+       invoke-interface {v5, v3}, dot/junit/opcodes/invoke_interface/ITest/doit(F)V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_17.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_17.d
new file mode 100644
index 0000000..cc24097
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_17.d
@@ -0,0 +1,60 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source ITestImplProtected.java
+.class public dot.junit.opcodes.invoke_interface.ITestImplProtected
+.super java/lang/Object
+.implements dot/junit/opcodes/invoke_interface/ITest
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method protected test(I)I
+.limit regs 2
+    const v0, 0
+    return v0
+.end method
+
+
+
+
+.source T_invoke_interface_17.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 7
+       new-instance v0, Ldot/junit/opcodes/invoke_interface/ITestImplProtected;
+       invoke-direct v0, dot.junit.opcodes.invoke_interface.ITestImplProtected/<init>()V
+       
+       const v1, 0
+       invoke-interface {v0, v1}, dot/junit/opcodes/invoke_interface/ITest/test(I)I
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_17.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_17.java
new file mode 100644
index 0000000..d01314b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_17.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+
+public class T_invoke_interface_17 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.d
new file mode 100644
index 0000000..f792a3b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_18.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 8
+       new-instance v2, dot/junit/opcodes/invoke_interface/ITestImplAbstract
+       invoke-interface {v2}, dot/junit/opcodes/invoke_interface/ITestImplAbstract/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.java
new file mode 100644
index 0000000..b9f9ccc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_18 {
+
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.d
new file mode 100644
index 0000000..9c5e86d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_2.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface {v6, v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.dfh b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.dfh
new file mode 100644
index 0000000..d1d1886
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.dfh
@@ -0,0 +1,294 @@
+// Processing 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.dex'...
+// Opened 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 0a295956
+    56 59 29 0A 
+// parsed: offset 12, len 20: signature           : 1dee...09a5
+    1D EE 44 4E 27 44 F2 88 7C 13 FE E3 09 B1 55 80 3C 7B 09 A5 
+// parsed: offset 32, len 4: file_size           : 664
+    98 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 528 (0x000210)
+    10 02 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 11
+    0B 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 156 (0x00009c)
+    9C 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 176 (0x0000b0)
+    B0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 244 (0x0000f4)
+    F4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 388
+    84 01 00 00 
+// parsed: offset 108, len 4: data_off            : 276 (0x000114)
+    14 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 342 (0x000156) "<init>"
+    56 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 350 (0x00015e) "I"
+    5E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 353 (0x000161) "IL"
+    61 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 357 (0x000165) "ILL"
+    65 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 362 (0x00016a) "Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_2;"
+    6A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 423 (0x0001a7) "Ljava/lang/Comparable;"
+    A7 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 447 (0x0001bf) "Ljava/lang/Object;"
+    BF 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 467 (0x0001d3) "T_invoke_interface_2.java"
+    D3 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 494 (0x0001ee) "V"
+    EE 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 497 (0x0001f1) "compareTo"
+    F1 01 00 00 
+// parsed: offset 152, len 4: [10] string_data_off: 508 (0x0001fc) "run"
+    FC 01 00 00 
+
+// type_ids:
+// parsed: offset 156, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 160, len 4: [1] descriptor_idx: 4 (0x000004) "Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_2;"
+    04 00 00 00 
+// parsed: offset 164, len 4: [2] descriptor_idx: 5 (0x000005) "Ljava/lang/Comparable;"
+    05 00 00 00 
+// parsed: offset 168, len 4: [3] descriptor_idx: 6 (0x000006) "Ljava/lang/Object;"
+    06 00 00 00 
+// parsed: offset 172, len 4: [4] descriptor_idx: 8 (0x000008) "V"
+    08 00 00 00 
+
+// proto_ids:
+// parsed: offset 176, len 12: [0] 
+//     shorty_idx: 3 (0x000003) "ILL"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    03 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 188, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "IL"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 336 (0x000150)
+    02 00 00 00 00 00 00 00 50 01 00 00 
+// parsed: offset 200, len 12: [2] 
+//     shorty_idx: 8 (0x000008) "V"
+//     return_type_idx: 4 (0x000004) "V"
+//     parameters_off: 0 (0x000000)
+    08 00 00 00 04 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 212, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    01 00 02 00 00 00 00 00 
+// parsed: offset 220, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 10 (0x00000a) "run"
+    01 00 00 00 0A 00 00 00 
+// parsed: offset 228, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 9 (0x000009) "compareTo"
+    02 00 01 00 09 00 00 00 
+// parsed: offset 236, len 8: [3] class_idx: 3 (0x000003)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    03 00 02 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 244, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 3 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 7 "T_invoke_interface_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 513 (0x000201)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 01 02 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_interface.d.T_invoke_interface_2.<init>"
+    // parsed: offset 276, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 278, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 280, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 282, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 284, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 288, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 292, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 298, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_interface.d.T_invoke_interface_2.run"
+    // parsed: offset 300, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 302, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 304, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 306, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 308, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 312, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 316, len 6: |0000: invoke-interface {v6, v7}, Ljava/lang/Comparable;.compareTo:(Ljava/lang/Object;)I // method@0002
+//@mod            72 20 02 00 76 00 
+            72 20 02 01 76 00 
+        // parsed: offset 322, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 324, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 326, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 2
+        02 00 
+    // parsed: offset 334, len 2: type_item [1] type_idx: 3
+        03 00 
+// TYPE_LIST
+    // parsed: offset 336, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 340, len 2: type_item [0] type_idx: 3
+        03 00 
+// parsed: offset 342, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 350, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 353, len 4: TYPE_STRING_DATA_ITEM [2] "IL"
+    02 49 4C 00 
+// parsed: offset 357, len 5: TYPE_STRING_DATA_ITEM [3] "ILL"
+    03 49 4C 4C 00 
+// parsed: offset 362, len 61: TYPE_STRING_DATA_ITEM [4] "Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_2;"
+    3B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 5F 32 3B 00 
+// parsed: offset 423, len 24: TYPE_STRING_DATA_ITEM [5] "Ljava/lang/Comparable;"
+    16 4C 6A 61 76 61 2F 6C 61 6E 67 2F 43 6F 6D 70 61 72 61 62 6C 65 3B 00 
+// parsed: offset 447, len 20: TYPE_STRING_DATA_ITEM [6] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 467, len 27: TYPE_STRING_DATA_ITEM [7] "T_invoke_interface_2.java"
+    19 54 5F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 494, len 3: TYPE_STRING_DATA_ITEM [8] "V"
+    01 56 00 
+// parsed: offset 497, len 11: TYPE_STRING_DATA_ITEM [9] "compareTo"
+    09 63 6F 6D 70 61 72 65 54 6F 00 
+// parsed: offset 508, len 5: TYPE_STRING_DATA_ITEM [10] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_2;"
+    // parsed: offset 513, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 514, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 515, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 516, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 517, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 518, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 521, len 2: code_off: 276 (0x000114)
+                94 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 523, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 524, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 525, len 2: code_off: 300 (0x00012c)
+                AC 02 
+// parsed: offset 527, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 528, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 532, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 544, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 11
+    //      offset: 112 (0x000070)
+        01 00 00 00 0B 00 00 00 70 00 00 00 
+    // parsed: offset 556, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 156 (0x00009c)
+        02 00 00 00 05 00 00 00 9C 00 00 00 
+    // parsed: offset 568, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 176 (0x0000b0)
+        03 00 00 00 03 00 00 00 B0 00 00 00 
+    // parsed: offset 580, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 212 (0x0000d4)
+        05 00 00 00 04 00 00 00 D4 00 00 00 
+    // parsed: offset 592, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 244 (0x0000f4)
+        06 00 00 00 01 00 00 00 F4 00 00 00 
+    // parsed: offset 604, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 276 (0x000114)
+        01 20 00 00 02 00 00 00 14 01 00 00 
+    // parsed: offset 616, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 2
+    //      offset: 328 (0x000148)
+        01 10 00 00 02 00 00 00 48 01 00 00 
+    // parsed: offset 628, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 11
+    //      offset: 342 (0x000156)
+        02 20 00 00 0B 00 00 00 56 01 00 00 
+    // parsed: offset 640, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 513 (0x000201)
+        00 20 00 00 01 00 00 00 01 02 00 00 
+    // parsed: offset 652, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 528 (0x000210)
+        00 10 00 00 01 00 00 00 10 02 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.d
new file mode 100644
index 0000000..c2465e7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_20.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_20
+.super java/lang/Object
+
+.field public static i I
+
+.method static <clinit>()V
+.limit regs 2
+Label0:
+       const/4 v1, 0
+       sput v1, dot.junit.opcodes.invoke_interface.d.T_invoke_interface_20.i I
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 5
+
+       invoke-interface {v3}, dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20/<clinit>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.java
new file mode 100644
index 0000000..f40b587
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_20 {
+
+    public static int i = 0;
+    
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.d
new file mode 100644
index 0000000..f8b0dea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_21.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 9
+
+    const-wide v4, 64
+    invoke-interface {v8, v4, v5}, dot/junit/opcodes/invoke_interface/ITest/testArgsOrder(II)I
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_22.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_22.d
new file mode 100644
index 0000000..7c27ad2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_22.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_22.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_22
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       new-instance v0, dot/junit/opcodes/invoke_interface/ITestImpl
+
+       invoke-interface {v0}, dot/junit/opcodes/invoke_interface/ITest/doit()V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.d
new file mode 100644
index 0000000..debf41a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.d
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_3.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_3
+.super java/lang/Object
+
+
+.method public <init>(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 5
+Label0:
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       invoke-interface {v4}, dot/junit/opcodes/invoke_interface/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.java
new file mode 100644
index 0000000..8c63c18
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_3 {
+
+    public T_invoke_interface_3 (ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.d
new file mode 100644
index 0000000..a8de67b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_4.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-interface {v7}, dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4/test()V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.d
new file mode 100644
index 0000000..adf7abe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.d
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_5.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_5
+.super java/lang/Object
+
+
+.method public <init>(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 2
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       
+        invoke-interface {}, dot/junit/opcodes/invoke_interface/ITest/doit()V
+       
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.d
new file mode 100644
index 0000000..c96f200
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_7.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 5
+
+       invoke-interface {v4}, dot/junit/opcodes/invoke_interface/ITest/doitN()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_8.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_8.d
new file mode 100644
index 0000000..8bf956e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_8.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface {v8, v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_9.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_9.d
new file mode 100644
index 0000000..2fc4a90
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_9.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface {v6}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/ITest.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/ITest.java
new file mode 100644
index 0000000..404787e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/ITest.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range;
+
+public interface ITest {
+    public void doit();
+    public void doit(int i);
+    public void doitNative();
+    public int test(int a);
+    public int testArgsOrder(int a, int b);
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/ITestImpl.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/ITestImpl.java
new file mode 100644
index 0000000..e1d871a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/ITestImpl.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range;
+
+
+
+public class ITestImpl implements ITest {
+    public void doit() {
+        // impl
+    }
+
+    public void doit(int i) {
+        //
+    }
+
+    public native void doitNative();
+
+    public int test(int a) {
+        if (a == 999) return 195;
+        return 0;
+    }
+
+    public int testArgsOrder(int a, int b) {
+        return a / b;
+    }
+
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/ITestImplAbstract.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/ITestImplAbstract.java
new file mode 100644
index 0000000..aee0064
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/ITestImplAbstract.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range;
+
+
+public abstract class ITestImplAbstract implements ITest {
+    abstract public void doit();
+    abstract public void doit(int i);
+    public native void doitNative();
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/Test_invoke_interface_range.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/Test_invoke_interface_range.java
new file mode 100644
index 0000000..fe650bd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/Test_invoke_interface_range.java
@@ -0,0 +1,307 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_1;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_11;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_12;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_13;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_14;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_17;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_3;
+
+public class Test_invoke_interface_range extends DxTestCase {
+
+    /**
+     * @title invoke interface method
+     */
+    public void testN1() {
+        T_invoke_interface_range_1 t = new T_invoke_interface_range_1();
+        assertEquals(0, t.run("aa", "aa"));
+        assertEquals(-1, t.run("aa", "bb"));
+        assertEquals(1, t.run("bb", "aa"));
+    }
+    
+    /**
+     * @title Check that new frame is created by invoke_interface_range and
+     * arguments are passed to method
+     */
+    public void testN2() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_14
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        T_invoke_interface_range_14 t = new T_invoke_interface_range_14();
+        ITestImpl impl = new ITestImpl();
+        assertEquals(1, t.run(impl));
+    }
+
+
+    
+    /**
+     * @title objref is null
+     */
+    public void testE3() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_3
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        try {
+            new T_invoke_interface_range_3(null);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title object doesn't implement interface
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_11
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        T_invoke_interface_range_11 t = new T_invoke_interface_range_11();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE5() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_12
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        T_invoke_interface_range_12 t = new T_invoke_interface_range_12();
+        ITestImpl impl = new ITestImpl();
+        try {
+            t.run(impl);
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE6() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_13
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImplAbstract
+        T_invoke_interface_range_13 t = new T_invoke_interface_range_13();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError e) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @title Attempt to invoke non-public interface method
+     */
+    public void testE8() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_17
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl        
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImplAbstract        
+        try {
+            T_invoke_interface_range_17 t = new T_invoke_interface_range_17();
+            t.run();
+            fail("expected a verification exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError e) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint A17
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A17
+     * @title The referenced method_id must belong to an interface (not a class). 
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title int is passed instead of objref
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9 
+     * @title number of arguments passed to method
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15 
+     * @title invoke-interface may not be used to call <init>.
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15 
+     * @title invoke-interface may not be used to call <clinit>.
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method. Java throws NoSuchMethodError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_7
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl        
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Method has different signature. Java throws NoSuchMethodError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_16
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl     
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B6 
+     * @title instance methods may only be invoked on already initialized instances. 
+     */
+    public void testVFE21() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_22
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl             
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.d
new file mode 100644
index 0000000..70fee02
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_1.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface/range {v6..v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.java
new file mode 100644
index 0000000..fa6fd15
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+public class T_invoke_interface_range_1 {
+
+    public int run(Comparable c, Object o) {
+        return c.compareTo(o);
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_10.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_10.d
new file mode 100644
index 0000000..d78f6c6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_10.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+       const v6, 1243
+       invoke-interface/range {v6..v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.d
new file mode 100644
index 0000000..d0fe868
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_11.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       invoke-interface/range {v4}, dot/junit/opcodes/invoke_interface_range/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.java
new file mode 100644
index 0000000..d990613
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+
+public class T_invoke_interface_range_11 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.d
new file mode 100644
index 0000000..7463912
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_12.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 5
+
+       invoke-interface/range {v4}, dot/junit/opcodes/invoke_interface_range/ITest/doitNative()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.java
new file mode 100644
index 0000000..b5a2167
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_12 {
+
+    public void run(ITest test) {
+        test.doitNative();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.d
new file mode 100644
index 0000000..4b0ea65
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_13.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_13
+.super dot/junit/opcodes/invoke_interface_range/ITestImplAbstract
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_interface_range/ITestImplAbstract/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 7
+
+       invoke-interface/range {v6}, dot/junit/opcodes/invoke_interface_range/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.java
new file mode 100644
index 0000000..1d9989b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+
+public class T_invoke_interface_range_13 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.d
new file mode 100644
index 0000000..ce6cd80
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.d
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_14.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)I
+.limit regs 9
+    const v1, 123
+    const v2, 345
+
+    const v4, 64
+    const v5, 2
+    move-object v3, v8
+    invoke-interface/range {v3..v5}, dot/junit/opcodes/invoke_interface_range/ITest/testArgsOrder(II)I
+    move-result v4
+    const v5, 32
+    if-ne v4, v5, Label0
+
+    const v5, 123
+    if-ne v5, v1, Label0
+
+    const v5, 345
+    if-ne v5, v2, Label0
+
+
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.java
new file mode 100644
index 0000000..ac996f9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_14 {
+
+    public int run(ITest test) {
+        int a = 123;
+        int b = 345;
+        if(test.testArgsOrder(64, 2) == 32)
+        {
+            if(a == 123)
+                if(b == 345)
+                    return 1;
+        }
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.d
new file mode 100644
index 0000000..2cfcc5e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_16.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 6
+
+       const/high16 v3, 1065353216
+       move-object v2, v5
+       invoke-interface/range {v2..v3}, dot/junit/opcodes/invoke_interface_range/ITest/doit(F)V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_17.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_17.d
new file mode 100644
index 0000000..cbb2c12
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_17.d
@@ -0,0 +1,60 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source ITestImplProtected.java
+.class public dot.junit.opcodes.invoke_interface_range.ITestImplProtected
+.super java/lang/Object
+.implements dot/junit/opcodes/invoke_interface_range/ITest
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method protected test(I)I
+.limit regs 2
+    const v0, 0
+    return v0
+.end method
+
+
+
+
+.source T_invoke_interface_range_17.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 7
+       new-instance v0, Ldot/junit/opcodes/invoke_interface_range/ITestImplProtected;
+       invoke-direct v0, dot.junit.opcodes.invoke_interface_range.ITestImplProtected/<init>()V
+       
+       const v1, 0
+       invoke-interface/range {v0..v1}, dot/junit/opcodes/invoke_interface_range/ITest/test(I)I
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_17.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_17.java
new file mode 100644
index 0000000..9d766e6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_17.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+
+public class T_invoke_interface_range_17 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.d
new file mode 100644
index 0000000..0174a71
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_18.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 8
+       new-instance v2, dot/junit/opcodes/invoke_interface_range/ITestImplAbstract
+       invoke-interface/range {v2}, dot/junit/opcodes/invoke_interface_range/ITestImplAbstract/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.java
new file mode 100644
index 0000000..5c93b22
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_18 {
+
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.d
new file mode 100644
index 0000000..cd8bc3e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_2.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface/range {v6..v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.dfh b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.dfh
new file mode 100644
index 0000000..9bc316f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.dfh
@@ -0,0 +1,294 @@
+// Processing 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.dex'...
+// Opened 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : f75b5e58
+    58 5E 5B F7 
+// parsed: offset 12, len 20: signature           : 8d58...fcad
+    8D 58 41 7D D6 50 6A 07 7B 67 E0 45 7B 76 2A 94 0C A4 FC AD 
+// parsed: offset 32, len 4: file_size           : 684
+    AC 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 548 (0x000224)
+    24 02 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 11
+    0B 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 156 (0x00009c)
+    9C 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 176 (0x0000b0)
+    B0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 244 (0x0000f4)
+    F4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 408
+    98 01 00 00 
+// parsed: offset 108, len 4: data_off            : 276 (0x000114)
+    14 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 342 (0x000156) "<init>"
+    56 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 350 (0x00015e) "I"
+    5E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 353 (0x000161) "IL"
+    61 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 357 (0x000165) "ILL"
+    65 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 362 (0x00016a) "Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2;"
+    6A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 435 (0x0001b3) "Ljava/lang/Comparable;"
+    B3 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 459 (0x0001cb) "Ljava/lang/Object;"
+    CB 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 479 (0x0001df) "T_invoke_interface_range_2.java"
+    DF 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 512 (0x000200) "V"
+    00 02 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 515 (0x000203) "compareTo"
+    03 02 00 00 
+// parsed: offset 152, len 4: [10] string_data_off: 526 (0x00020e) "run"
+    0E 02 00 00 
+
+// type_ids:
+// parsed: offset 156, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 160, len 4: [1] descriptor_idx: 4 (0x000004) "Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2;"
+    04 00 00 00 
+// parsed: offset 164, len 4: [2] descriptor_idx: 5 (0x000005) "Ljava/lang/Comparable;"
+    05 00 00 00 
+// parsed: offset 168, len 4: [3] descriptor_idx: 6 (0x000006) "Ljava/lang/Object;"
+    06 00 00 00 
+// parsed: offset 172, len 4: [4] descriptor_idx: 8 (0x000008) "V"
+    08 00 00 00 
+
+// proto_ids:
+// parsed: offset 176, len 12: [0] 
+//     shorty_idx: 3 (0x000003) "ILL"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    03 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 188, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "IL"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 336 (0x000150)
+    02 00 00 00 00 00 00 00 50 01 00 00 
+// parsed: offset 200, len 12: [2] 
+//     shorty_idx: 8 (0x000008) "V"
+//     return_type_idx: 4 (0x000004) "V"
+//     parameters_off: 0 (0x000000)
+    08 00 00 00 04 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 212, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    01 00 02 00 00 00 00 00 
+// parsed: offset 220, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 10 (0x00000a) "run"
+    01 00 00 00 0A 00 00 00 
+// parsed: offset 228, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 9 (0x000009) "compareTo"
+    02 00 01 00 09 00 00 00 
+// parsed: offset 236, len 8: [3] class_idx: 3 (0x000003)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    03 00 02 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 244, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 3 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 7 "T_invoke_interface_range_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 531 (0x000213)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 13 02 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_2.<init>"
+    // parsed: offset 276, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 278, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 280, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 282, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 284, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 288, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 292, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 298, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_2.run"
+    // parsed: offset 300, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 302, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 304, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 306, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 308, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 312, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 316, len 6: |0000: invoke-interface/range {v6..v7}, Ljava/lang/Comparable;.compareTo:(Ljava/lang/Object;)I // method@0002
+//@mod            78 02 02 00 06 00 
+            78 02 02 01 06 00 
+        // parsed: offset 322, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 324, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 326, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 2
+        02 00 
+    // parsed: offset 334, len 2: type_item [1] type_idx: 3
+        03 00 
+// TYPE_LIST
+    // parsed: offset 336, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 340, len 2: type_item [0] type_idx: 3
+        03 00 
+// parsed: offset 342, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 350, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 353, len 4: TYPE_STRING_DATA_ITEM [2] "IL"
+    02 49 4C 00 
+// parsed: offset 357, len 5: TYPE_STRING_DATA_ITEM [3] "ILL"
+    03 49 4C 4C 00 
+// parsed: offset 362, len 73: TYPE_STRING_DATA_ITEM [4] "Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2;"
+    47 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 5F 72 61 6E 67 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 5F 72 61 6E 67 65 5F 32 3B 00 
+// parsed: offset 435, len 24: TYPE_STRING_DATA_ITEM [5] "Ljava/lang/Comparable;"
+    16 4C 6A 61 76 61 2F 6C 61 6E 67 2F 43 6F 6D 70 61 72 61 62 6C 65 3B 00 
+// parsed: offset 459, len 20: TYPE_STRING_DATA_ITEM [6] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 479, len 33: TYPE_STRING_DATA_ITEM [7] "T_invoke_interface_range_2.java"
+    1F 54 5F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 5F 72 61 6E 67 65 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 512, len 3: TYPE_STRING_DATA_ITEM [8] "V"
+    01 56 00 
+// parsed: offset 515, len 11: TYPE_STRING_DATA_ITEM [9] "compareTo"
+    09 63 6F 6D 70 61 72 65 54 6F 00 
+// parsed: offset 526, len 5: TYPE_STRING_DATA_ITEM [10] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2;"
+    // parsed: offset 531, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 532, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 533, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 534, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 535, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 536, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 539, len 2: code_off: 276 (0x000114)
+                94 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 541, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 542, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 543, len 2: code_off: 300 (0x00012c)
+                AC 02 
+// parsed: offset 545, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 548, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 552, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 564, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 11
+    //      offset: 112 (0x000070)
+        01 00 00 00 0B 00 00 00 70 00 00 00 
+    // parsed: offset 576, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 156 (0x00009c)
+        02 00 00 00 05 00 00 00 9C 00 00 00 
+    // parsed: offset 588, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 176 (0x0000b0)
+        03 00 00 00 03 00 00 00 B0 00 00 00 
+    // parsed: offset 600, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 212 (0x0000d4)
+        05 00 00 00 04 00 00 00 D4 00 00 00 
+    // parsed: offset 612, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 244 (0x0000f4)
+        06 00 00 00 01 00 00 00 F4 00 00 00 
+    // parsed: offset 624, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 276 (0x000114)
+        01 20 00 00 02 00 00 00 14 01 00 00 
+    // parsed: offset 636, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 2
+    //      offset: 328 (0x000148)
+        01 10 00 00 02 00 00 00 48 01 00 00 
+    // parsed: offset 648, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 11
+    //      offset: 342 (0x000156)
+        02 20 00 00 0B 00 00 00 56 01 00 00 
+    // parsed: offset 660, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 531 (0x000213)
+        00 20 00 00 01 00 00 00 13 02 00 00 
+    // parsed: offset 672, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 548 (0x000224)
+        00 10 00 00 01 00 00 00 24 02 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.d
new file mode 100644
index 0000000..3dd1bcd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_20.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_20
+.super java/lang/Object
+
+.field public static i I
+
+.method static <clinit>()V
+.limit regs 2
+Label0:
+       const/4 v1, 0
+       sput v1, dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_20.i I
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 5
+
+       invoke-interface/range {v3}, dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20/<clinit>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.java
new file mode 100644
index 0000000..a28964c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_20 {
+
+    public static int i = 0;
+    
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.d
new file mode 100644
index 0000000..f8b1b95
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_21.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 9
+
+    const-wide v4, 64
+    move-object v3, v8
+    invoke-interface/range {v3..v5}, dot/junit/opcodes/invoke_interface_range/ITest/testArgsOrder(II)I
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_22.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_22.d
new file mode 100644
index 0000000..3b2a521
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_22.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_22.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_22
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       new-instance v0, dot/junit/opcodes/invoke_interface_range/ITestImpl
+
+       invoke-interface/range {v0}, dot/junit/opcodes/invoke_interface_range/ITest/doit()V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.d
new file mode 100644
index 0000000..ca4948d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.d
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_3.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_3
+.super java/lang/Object
+
+
+.method public <init>(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 5
+Label0:
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       invoke-interface/range {v4}, dot/junit/opcodes/invoke_interface_range/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.java
new file mode 100644
index 0000000..f39dca5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_3 {
+
+    public T_invoke_interface_range_3 (ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.d
new file mode 100644
index 0000000..8a21324
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_4.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-interface/range {v7}, dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4/test()V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.d
new file mode 100644
index 0000000..a0e0905
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.d
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_5.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_5
+.super java/lang/Object
+
+
+.method public <init>(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 2
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       
+        invoke-interface/range {}, dot/junit/opcodes/invoke_interface_range/ITest/doit()V
+       
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.d
new file mode 100644
index 0000000..13a63d6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_7.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 5
+
+       invoke-interface/range {v4}, dot/junit/opcodes/invoke_interface_range/ITest/doitN()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_8.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_8.d
new file mode 100644
index 0000000..f81692c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_8.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       move-object v6, v8
+       invoke-interface/range {v6..v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_9.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_9.d
new file mode 100644
index 0000000..cd73a85
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_interface_range_9.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface/range {v6}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/TestClass.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/TestClass.java
new file mode 100644
index 0000000..3db9673
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/TestClass.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static;
+
+public class TestClass {
+    
+    public static int test(){
+        return 777;
+    }
+    
+    public static int test1(int i1){
+        int i = i1 + 5;
+        return i;
+    }
+    
+    public static int testArgsOrder(int i1, int i2){
+        int a = 3454;
+        int b = 2302;
+        int i = i1 / i2;
+        return i;
+    }
+    
+    protected static void testProtected() {
+        
+    }
+    
+    
+    private static void testPvt(){
+        
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/Test_invoke_static.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/Test_invoke_static.java
new file mode 100644
index 0000000..81f5aa0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/Test_invoke_static.java
@@ -0,0 +1,275 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_1;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_14;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_15;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_18;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_2;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_4;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_6;
+
+
+
+public class Test_invoke_static extends DxTestCase {
+
+    /**
+     * @title Static method from library class Math
+     */
+    public void testN1() {
+        T_invoke_static_1 t = new T_invoke_static_1();
+        assertEquals(1234567, t.run());
+    }
+
+    /**
+     * @title Static method from user class
+     */
+    public void testN2() {
+        //@uses dot.junit.opcodes.invoke_static.d.T_invoke_static_2
+        //@uses dot.junit.opcodes.invoke_static.TestClass
+        T_invoke_static_2 t = new T_invoke_static_2();
+        assertEquals(777, t.run());
+    }
+
+    /**
+     * @title Check that <clinit> is called
+     */
+    public void testN3() {
+        assertEquals(123456789l, T_invoke_static_4.run());
+    }
+
+
+    /**
+     * @title Check that new frame is created by invoke_static and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_static.d.T_invoke_static_15
+        //@uses dot.junit.opcodes.invoke_static.TestClass
+        T_invoke_static_15 t = new T_invoke_static_15();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Static protected method from other class in the same package
+     */
+    public void testN6() {
+        T_invoke_static_18 t = new T_invoke_static_18();
+        assertEquals(888, t.run());
+    }
+
+    /**
+     * @title Native method can't be linked
+     * 
+     */
+    public void testE2() {
+        T_invoke_static_6 t = new T_invoke_static_6();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE7() {
+        T_invoke_static_14 t = new T_invoke_static_14();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint A13 
+     * @title  invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15 
+     * @title &lt;clinit&gt; may not be called using invoke-static
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title number of arguments passed to method.
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;init&gt; may not be called using invoke_static
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9 
+     * @title types of arguments passed to method
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+   
+    /**
+     * @constraint n/a
+     * @title Attempt to call non-static method. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE7() {
+         try {
+             Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_5");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method. Java throws NoSuchMethodError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to call private method of other class. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_static.d.T_invoke_static_8
+        //@uses dot.junit.opcodes.invoke_static.TestClass
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature. Java throws NoSuchMethodError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_static.d.T_invoke_static_13
+        //@uses dot.junit.opcodes.invoke_static.TestClass
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+        
+    /**
+     * @constraint B12
+     * @title Attempt to call protected method of unrelated class. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.invoke_static.d.T_invoke_static_17
+        //@uses dot.junit.opcodes.invoke_static.TestClass
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A13 
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.d
new file mode 100644
index 0000000..04c88aa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_1.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.java
new file mode 100644
index 0000000..a6b001f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_1 {
+
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_10.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_10.d
new file mode 100644
index 0000000..365afbb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_10.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_10.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_10
+.super java/lang/Object
+
+
+
+.method static <clinit>()V
+    return-void
+.end method
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/d/T_invoke_static_10/<clinit>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_11.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_11.d
new file mode 100644
index 0000000..227b52c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_11.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static {}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.d
new file mode 100644
index 0000000..2e78a06
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_13.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+
+       invoke-static {v1}, dot/junit/opcodes/invoke_static/TestClass/test1(F)I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.d
new file mode 100644
index 0000000..ed2aa2b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.d
@@ -0,0 +1,50 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestClassInitError.java
+.class public dot.junit.opcodes.invoke_static.d.TestClassInitError
+.super java/lang/Object
+
+.method static public <clinit>()V
+.limit regs 2
+
+    const v0, 1
+    const v1, 0
+    div-int v0, v0, v1
+.end method
+
+.method static public test()V
+    return-void
+.end method
+
+.source T_invoke_static_14.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/d/TestClassInitError/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.java
new file mode 100644
index 0000000..c4efea3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_14 {
+    
+    public void run(){
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.d
new file mode 100644
index 0000000..58bccb9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.d
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_15.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 6
+
+    const v1, 123
+    const v2, 345
+
+    const v3, 12
+    const v4, 6
+    
+    invoke-static {v3, v4}, dot/junit/opcodes/invoke_static/TestClass/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 2
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 345
+    if-ne v2, v4, Label0
+
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.java
new file mode 100644
index 0000000..0db7ec5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+import dot.junit.opcodes.invoke_static.TestClass;
+
+public class T_invoke_static_15 {
+    
+    public boolean run(){
+        int i = 123;
+        int j = 345;
+        if(TestClass.testArgsOrder(12, 2) == 6)
+            if(i == 123)
+                if(j == 345)
+                    return true;
+        return false;
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_16.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_16.d
new file mode 100644
index 0000000..883edbe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_16.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_16.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static {v3}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.d
new file mode 100644
index 0000000..ae7204d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_17.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static {}, dot/junit/opcodes/invokestatic/TestClass/testProtected()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.d
new file mode 100644
index 0000000..7332bce
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestProtected.java
+.class public dot.junit.opcodes.invoke_static.d.TestProtected
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method protected static testP()I
+.limit regs 2
+    const v0, 888
+    return v0
+.end method
+
+
+.source T_invoke_static_18.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/d/TestProtected/testP()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.java
new file mode 100644
index 0000000..776b488
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+class TestProtected {
+    static protected int testP() {
+        return 888;
+    }
+}
+
+public class T_invoke_static_18  {
+    
+    public int run() {
+        return TestProtected.testP();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.d
new file mode 100644
index 0000000..e94e2a3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_19.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_19
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+
+       invoke-static {}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       const/4 v0, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.java
new file mode 100644
index 0000000..1682c92
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_19 {
+    
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.d
new file mode 100644
index 0000000..1c53ad3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_2.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/TestClass/test()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.java
new file mode 100644
index 0000000..2e6bfd9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+import dot.junit.opcodes.invoke_static.TestClass;
+
+public class T_invoke_static_2  {
+    
+    public int run() {
+        return TestClass.test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_20.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_20.d
new file mode 100644
index 0000000..9ef67a0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_20.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const-wide v1, 1
+       invoke-static {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.d
new file mode 100644
index 0000000..9a2871f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_static.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_static.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_static.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_static_24.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_24
+.super dot/junit/opcodes/invoke_static/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_static/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-static {v7}, dot/junit/opcodes/invoke_static/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.d
new file mode 100644
index 0000000..321761f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_3.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.dfh
new file mode 100644
index 0000000..9c4f6eb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.dfh
@@ -0,0 +1,283 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 13655765
+    65 57 65 13 
+// parsed: offset 12, len 20: signature           : a1e9...1ca1
+    A1 E9 92 EC DD 74 44 53 75 44 CF F1 C4 AF EA F3 CB 80 1C A1 
+// parsed: offset 32, len 4: file_size           : 632
+    78 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 496 (0x0001f0)
+    F0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 240 (0x0000f0)
+    F0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 360
+    68 01 00 00 
+// parsed: offset 108, len 4: data_off            : 272 (0x000110)
+    10 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/invoke_static/d/T_invoke_static_3;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 404 (0x000194) "Ljava/lang/Math;"
+    94 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 422 (0x0001a6) "Ljava/lang/Object;"
+    A6 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 442 (0x0001ba) "T_invoke_static_3.java"
+    BA 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 466 (0x0001d2) "V"
+    D2 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 469 (0x0001d5) "abs"
+    D5 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 474 (0x0001da) "run"
+    DA 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/invoke_static/d/T_invoke_static_3;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Math;"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 5 (0x000005) "Ljava/lang/Object;"
+    05 00 00 00 
+// parsed: offset 168, len 4: [4] descriptor_idx: 7 (0x000007) "V"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 172, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 184, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 196, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "V"
+//     return_type_idx: 4 (0x000004) "V"
+//     parameters_off: 0 (0x000000)
+    07 00 00 00 04 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 208, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    01 00 02 00 00 00 00 00 
+// parsed: offset 216, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 9 (0x000009) "run"
+    01 00 00 00 09 00 00 00 
+// parsed: offset 224, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "abs"
+    02 00 01 00 08 00 00 00 
+// parsed: offset 232, len 8: [3] class_idx: 3 (0x000003)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    03 00 02 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 240, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_static/d/T_invoke_static_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 3 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 6 "T_invoke_static_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 479 (0x0001df)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 DF 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_static.d.T_invoke_static_3.<init>"
+    // parsed: offset 272, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 288, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 294, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_static.d.T_invoke_static_3.run"
+    // parsed: offset 296, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 298, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 300, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 302, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 304, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 308, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 312, len 6: |0000: const v1, #float nan // #0xffed2979 int
+            14 01 79 29 ED FF 
+        // parsed: offset 318, len 6: |0003: invoke-static {v1}, Ljava/lang/Math;.abs:(I)I // method@0002
+//@mod            71 10 02 00 01 00 
+        71 10 02 01 01 00
+        // parsed: offset 324, len 2: |0006: move-result v0
+            0A 00 
+        // parsed: offset 326, len 2: |0007: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/invoke_static/d/T_invoke_static_3;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 5F 33 3B 00 
+// parsed: offset 404, len 18: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Math;"
+    10 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4D 61 74 68 3B 00 
+// parsed: offset 422, len 20: TYPE_STRING_DATA_ITEM [5] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 442, len 24: TYPE_STRING_DATA_ITEM [6] "T_invoke_static_3.java"
+    16 54 5F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 466, len 3: TYPE_STRING_DATA_ITEM [7] "V"
+    01 56 00 
+// parsed: offset 469, len 5: TYPE_STRING_DATA_ITEM [8] "abs"
+    03 61 62 73 00 
+// parsed: offset 474, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_static/d/T_invoke_static_3;"
+    // parsed: offset 479, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 480, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 481, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 482, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 483, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 484, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 487, len 2: code_off: 272 (0x000110)
+                90 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 489, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 490, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 491, len 2: code_off: 296 (0x000128)
+                A8 02 
+// parsed: offset 493, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 496, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 500, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 512, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 524, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 152 (0x000098)
+        02 00 00 00 05 00 00 00 98 00 00 00 
+    // parsed: offset 536, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 172 (0x0000ac)
+        03 00 00 00 03 00 00 00 AC 00 00 00 
+    // parsed: offset 548, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 208 (0x0000d0)
+        05 00 00 00 04 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 240 (0x0000f0)
+        06 00 00 00 01 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 272 (0x000110)
+        01 20 00 00 02 00 00 00 10 01 00 00 
+    // parsed: offset 584, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 596, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 334 (0x00014e)
+        02 20 00 00 0A 00 00 00 4E 01 00 00 
+    // parsed: offset 608, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 479 (0x0001df)
+        00 20 00 00 01 00 00 00 DF 01 00 00 
+    // parsed: offset 620, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 496 (0x0001f0)
+        00 10 00 00 01 00 00 00 F0 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.d
new file mode 100644
index 0000000..4212854
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_4.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_4
+.super java/lang/Object
+
+.field static val J
+
+.method static <clinit>()V
+.limit regs 2
+
+       const-wide/32 v0, 123456789
+       sput-wide v0, dot.junit.opcodes.invoke_static.d.T_invoke_static_4.val J
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 4
+Label0:
+       sget-wide v2, dot.junit.opcodes.invoke_static.d.T_invoke_static_4.val J
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.java
new file mode 100644
index 0000000..c9e1dd6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_4 {
+
+    static long val = 123456789l;
+
+    public static long run() {
+        return val;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.d
new file mode 100644
index 0000000..a3c8c91
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_5.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const/4 v2, 5
+       invoke-static {v2}, dot/junit/opcodes/invoke_static/d/T_invoke_static_5/test(I)I
+       move-result v0
+       return v0
+.end method
+
+.method public test(I)I
+.limit regs 5
+
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.d
new file mode 100644
index 0000000..969e499
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_6.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static native test()V
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/d/T_invoke_static_6/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.java
new file mode 100644
index 0000000..1cdffb1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_6 {
+
+    public static native void test();
+    
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.d
new file mode 100644
index 0000000..b58d3b2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_7.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static test()V
+.limit regs 0
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/d/T_invoke_static_7/testN()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.d
new file mode 100644
index 0000000..9a4d964
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_8.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+       invoke-static {}, dot/junit/opcodes/invoke_static/TestClass/testPvt()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/TestClass.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/TestClass.java
new file mode 100644
index 0000000..90f65a8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/TestClass.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range;
+
+public class TestClass {
+    
+    public static int test(){
+        return 777;
+    }
+    
+    public static int test1(int i1){
+        int i = i1 + 5;
+        return i;
+    }
+    
+    public static int testArgsOrder(int i1, int i2){
+        int a = 3454;
+        int b = 2302;
+        int i = i1 / i2;
+        return i;
+    }
+    
+    protected static void testProtected() {
+        
+    }
+    
+    
+    private static void testPvt(){
+        
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/Test_invoke_static_range.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/Test_invoke_static_range.java
new file mode 100644
index 0000000..8b996fd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/Test_invoke_static_range.java
@@ -0,0 +1,274 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_1;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_14;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_15;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_18;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_2;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_4;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_6;
+
+
+
+public class Test_invoke_static_range extends DxTestCase {
+
+    /**
+     * @title Static method from library class Math
+     */
+    public void testN1() {
+        T_invoke_static_range_1 t = new T_invoke_static_range_1();
+        assertEquals(1234567, t.run());
+    }
+
+    /**
+     * @title Static method from user class
+     */
+    public void testN2() {
+        //@uses dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_2
+        //@uses dot.junit.opcodes.invoke_static_range.TestClass
+        T_invoke_static_range_2 t = new T_invoke_static_range_2();
+        assertEquals(777, t.run());
+    }
+
+    /**
+     * @title Big number of registers
+     */
+    public void testN3() {
+        assertEquals(1, T_invoke_static_range_4.run());
+    }
+
+
+    /**
+     * @title Check that new frame is created by invoke_static_range and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_15
+        //@uses dot.junit.opcodes.invoke_static_range.TestClass
+        T_invoke_static_range_15 t = new T_invoke_static_range_15();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Static protected method from other class in the same package
+     */
+    public void testN6() {
+        T_invoke_static_range_18 t = new T_invoke_static_range_18();
+        assertEquals(888, t.run());
+    }
+
+    /**
+     * @title Native method can't be linked
+     * 
+     */
+    public void testE2() {
+        T_invoke_static_range_6 t = new T_invoke_static_range_6();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE7() {
+        T_invoke_static_range_14 t = new T_invoke_static_range_14();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A14 
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15 
+     * @title &lt;clinit&gt; may not be called using invoke_static_range
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15 
+     * @title &lt;init&gt; may not be called using invoke_static_range
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9 
+     * @title types of arguments passed to method
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+   
+    /**
+     * @constraint n/a
+     * @title Attempt to call non-static method. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE7() {
+         try {
+             Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_5");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method. Java throws NoSuchMethodError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to call private method of other class. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_8
+        //@uses dot.junit.opcodes.invoke_static_range.TestClass
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature. Java throws NoSuchMethodError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_13
+        //@uses dot.junit.opcodes.invoke_static_range.TestClass
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+        
+    /**
+     * @constraint B12
+     * @title Attempt to call protected method of unrelated class. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_17
+        //@uses dot.junit.opcodes.invoke_static_range.TestClass
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A14 
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.d
new file mode 100644
index 0000000..1f8dac7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_1.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static/range {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.java
new file mode 100644
index 0000000..e95213e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_1 {
+
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10.d
new file mode 100644
index 0000000..994973f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_10.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_10
+.super java/lang/Object
+
+
+
+.method static <clinit>()V
+    return-void
+.end method
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10/<clinit>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_11.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_11.d
new file mode 100644
index 0000000..2b7131f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_11.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static/range {}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.d
new file mode 100644
index 0000000..dca327b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_13.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+
+       invoke-static/range {v1}, dot/junit/opcodes/invoke_static_range/TestClass/test1(F)I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.d
new file mode 100644
index 0000000..e4c1bd3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.d
@@ -0,0 +1,50 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestClassInitError.java
+.class public dot.junit.opcodes.invoke_static_range.d.TestClassInitError
+.super java/lang/Object
+
+.method static public <clinit>()V
+.limit regs 2
+
+    const v0, 1
+    const v1, 0
+    div-int v0, v0, v1
+.end method
+
+.method static public test()V
+    return-void
+.end method
+
+.source T_invoke_static_range_14.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/d/TestClassInitError/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.java
new file mode 100644
index 0000000..b5b135b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_14 {
+    
+    public void run(){
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.d
new file mode 100644
index 0000000..c56d3c0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.d
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_15.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 6
+
+    const v1, 123
+    const v2, 345
+
+    const v3, 12
+    const v4, 6
+    
+    invoke-static/range {v3..v4}, dot/junit/opcodes/invoke_static_range/TestClass/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 2
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 345
+    if-ne v2, v4, Label0
+
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.java
new file mode 100644
index 0000000..696de4b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+import dot.junit.opcodes.invoke_static_range.TestClass;
+
+public class T_invoke_static_range_15 {
+    
+    public boolean run(){
+        int i = 123;
+        int j = 345;
+        if(TestClass.testArgsOrder(12, 2) == 6)
+            if(i == 123)
+                if(j == 345)
+                    return true;
+        return false;
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_16.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_16.d
new file mode 100644
index 0000000..c66089b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_16.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_16.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static/range {v3}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.d
new file mode 100644
index 0000000..bc2e9e9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_17.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static/range {}, dot/junit/opcodes/invokestatic/TestClass/testProtected()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.d
new file mode 100644
index 0000000..19fec09
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestProtected.java
+.class public dot.junit.opcodes.invoke_static_range.d.TestProtected
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method protected static testP()I
+.limit regs 2
+    const v0, 888
+    return v0
+.end method
+
+
+.source T_invoke_static_range_18.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/d/TestProtected/testP()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.java
new file mode 100644
index 0000000..34d0098
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+class TestProtected {
+    static protected int testP() {
+        return 888;
+    }
+}
+
+public class T_invoke_static_range_18  {
+    
+    public int run() {
+        return TestProtected.testP();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.d
new file mode 100644
index 0000000..051df3f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_19.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_19
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+
+       invoke-static/range {}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       const/4 v0, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.java
new file mode 100644
index 0000000..204e39a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_19 {
+    
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.d
new file mode 100644
index 0000000..67e9a13
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_2.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/TestClass/test()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.java
new file mode 100644
index 0000000..eb5f3c8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+import dot.junit.opcodes.invoke_static_range.TestClass;
+
+public class T_invoke_static_range_2  {
+    
+    public int run() {
+        return TestClass.test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_20.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_20.d
new file mode 100644
index 0000000..5819881
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_20.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const-wide v1, 1
+       invoke-static/range {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.d
new file mode 100644
index 0000000..6ee8671
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_static_range.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_static_range.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_static_range.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_static_range_24.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_24
+.super dot/junit/opcodes/invoke_static_range/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_static_range/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-static/range {v7}, dot/junit/opcodes/invoke_static_range/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.d
new file mode 100644
index 0000000..b3734a5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_3.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static/range {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.dfh
new file mode 100644
index 0000000..624ef70
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.dfh
@@ -0,0 +1,283 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 4c3e5bf7
+    F7 5B 3E 4C 
+// parsed: offset 12, len 20: signature           : be81...32a4
+    BE 81 F4 E7 AE A6 FA EE 02 66 A3 DF 71 03 38 38 F6 56 32 A4 
+// parsed: offset 32, len 4: file_size           : 648
+    88 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 512 (0x000200)
+    00 02 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 240 (0x0000f0)
+    F0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 376
+    78 01 00 00 
+// parsed: offset 108, len 4: data_off            : 272 (0x000110)
+    10 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 416 (0x0001a0) "Ljava/lang/Math;"
+    A0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 434 (0x0001b2) "Ljava/lang/Object;"
+    B2 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 454 (0x0001c6) "T_invoke_static_range_3.java"
+    C6 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 484 (0x0001e4) "V"
+    E4 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 487 (0x0001e7) "abs"
+    E7 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 492 (0x0001ec) "run"
+    EC 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Math;"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 5 (0x000005) "Ljava/lang/Object;"
+    05 00 00 00 
+// parsed: offset 168, len 4: [4] descriptor_idx: 7 (0x000007) "V"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 172, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 184, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 196, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "V"
+//     return_type_idx: 4 (0x000004) "V"
+//     parameters_off: 0 (0x000000)
+    07 00 00 00 04 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 208, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    01 00 02 00 00 00 00 00 
+// parsed: offset 216, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 9 (0x000009) "run"
+    01 00 00 00 09 00 00 00 
+// parsed: offset 224, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "abs"
+    02 00 01 00 08 00 00 00 
+// parsed: offset 232, len 8: [3] class_idx: 3 (0x000003)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    03 00 02 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 240, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 3 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 6 "T_invoke_static_range_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 497 (0x0001f1)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 F1 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_3.<init>"
+    // parsed: offset 272, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 288, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 294, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_3.run"
+    // parsed: offset 296, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 298, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 300, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 302, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 304, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 308, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 312, len 6: |0000: const v1, #float nan // #0xffed2979 int
+            14 01 79 29 ED FF 
+        // parsed: offset 318, len 6: |0003: invoke-static/range {v1..v1}, Ljava/lang/Math;.abs:(I)I // method@0002
+//@mod            77 01 02 00 01 00 
+            77 01 02 01 01 00 
+        // parsed: offset 324, len 2: |0006: move-result v0
+            0A 00 
+        // parsed: offset 326, len 2: |0007: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 67: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3;"
+    41 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 5F 72 61 6E 67 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 5F 72 61 6E 67 65 5F 33 3B 00 
+// parsed: offset 416, len 18: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Math;"
+    10 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4D 61 74 68 3B 00 
+// parsed: offset 434, len 20: TYPE_STRING_DATA_ITEM [5] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 454, len 30: TYPE_STRING_DATA_ITEM [6] "T_invoke_static_range_3.java"
+    1C 54 5F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 5F 72 61 6E 67 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 484, len 3: TYPE_STRING_DATA_ITEM [7] "V"
+    01 56 00 
+// parsed: offset 487, len 5: TYPE_STRING_DATA_ITEM [8] "abs"
+    03 61 62 73 00 
+// parsed: offset 492, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3;"
+    // parsed: offset 497, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 498, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 499, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 500, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 501, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 502, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 505, len 2: code_off: 272 (0x000110)
+                90 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 507, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 508, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 509, len 2: code_off: 296 (0x000128)
+                A8 02 
+// parsed: offset 511, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 512, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 516, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 528, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 540, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 152 (0x000098)
+        02 00 00 00 05 00 00 00 98 00 00 00 
+    // parsed: offset 552, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 172 (0x0000ac)
+        03 00 00 00 03 00 00 00 AC 00 00 00 
+    // parsed: offset 564, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 208 (0x0000d0)
+        05 00 00 00 04 00 00 00 D0 00 00 00 
+    // parsed: offset 576, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 240 (0x0000f0)
+        06 00 00 00 01 00 00 00 F0 00 00 00 
+    // parsed: offset 588, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 272 (0x000110)
+        01 20 00 00 02 00 00 00 10 01 00 00 
+    // parsed: offset 600, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 612, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 334 (0x00014e)
+        02 20 00 00 0A 00 00 00 4E 01 00 00 
+    // parsed: offset 624, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 497 (0x0001f1)
+        00 20 00 00 01 00 00 00 F1 01 00 00 
+    // parsed: offset 636, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 512 (0x000200)
+        00 10 00 00 01 00 00 00 00 02 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.d
new file mode 100644
index 0000000..c07542cf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.d
@@ -0,0 +1,75 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_4.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private static test(IIIIIIIIII)I
+.limit regs 11
+    const v0, 10
+    if-ne v0, v10, Label0
+    const v0, 9
+    if-ne v0, v9, Label0
+    const v0, 8
+    if-ne v0, v8, Label0
+    const v0, 7
+    if-ne v0, v7, Label0
+    const v0, 6
+    if-ne v0, v6, Label0
+    const v0, 5
+    if-ne v0, v5, Label0
+    const v0, 4
+    if-ne v0, v4, Label0
+    const v0, 3
+    if-ne v0, v3, Label0
+    const v0, 2
+    if-ne v0, v2, Label0
+    const v0, 1
+    if-ne v0, v1, Label0
+
+    const v0, 1
+    return v0
+Label0:
+    const v0, 0
+    return v0
+
+.end method
+
+.method public static run()I
+.limit regs 16
+         const v1, 1
+          const v2, 2
+          const v3, 3
+          const v4, 4
+          const v5, 5
+          const v6, 6
+          const v7, 7
+          const v8, 8
+          const v9, 9
+          const v10, 10
+
+       invoke-static/range {v1..v10}, dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_4/test(IIIIIIIIII)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.java
new file mode 100644
index 0000000..9f91e19
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_4 {
+
+
+    public static int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.d
new file mode 100644
index 0000000..14cbfd6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_5.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const/4 v2, 5
+       invoke-static/range {v2}, dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5/test(I)I
+       move-result v0
+       return v0
+.end method
+
+.method public test(I)I
+.limit regs 5
+
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.d
new file mode 100644
index 0000000..a739336
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_6.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static native test()V
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.java
new file mode 100644
index 0000000..ab00d04
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_6 {
+
+    public static native void test();
+    
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.d
new file mode 100644
index 0000000..a7615ce
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_7.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static test()V
+.limit regs 0
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7/testN()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.d
new file mode 100644
index 0000000..a494912
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_static_range_8.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/TestClass/testPvt()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/ATest.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/ATest.java
new file mode 100644
index 0000000..af69eaf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/ATest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super;
+
+public abstract class ATest {
+    
+    public abstract void test();       
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/TestStubs.java
new file mode 100644
index 0000000..28fc156
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/TestStubs.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private void TestStub() {
+        // used by testE6
+    }
+
+    protected void TestStubP() {
+        // used by testE7
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/Test_invoke_super.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/Test_invoke_super.java
new file mode 100644
index 0000000..00e983d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/Test_invoke_super.java
@@ -0,0 +1,354 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_1;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_14;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_17;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_2;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_4;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_6;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_7;
+
+public class Test_invoke_super extends DxTestCase {
+
+    /**
+     * @title invoke method of superclass
+     */
+    public void testN1() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_1
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        T_invoke_super_1 t = new T_invoke_super_1();
+        assertEquals(5, t.run());
+    }
+   
+
+    /**
+     * @title Invoke protected method of superclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_7
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        T_invoke_super_7 t = new T_invoke_super_7();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title Check that new frame is created by invoke_super and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_14
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        T_invoke_super_14 t = new T_invoke_super_14();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Recursion of method lookup procedure
+     */
+    public void testN6() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_17
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper        
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper2
+        T_invoke_super_17 t = new T_invoke_super_17();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title obj ref is null
+     */
+    public void testE1() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_1
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        T_invoke_super_2 t = new T_invoke_super_2();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE2() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_4
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper        
+        T_invoke_super_4 t = new T_invoke_super_4();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_6
+        //@uses dot.junit.opcodes.invoke_super.ATest
+        T_invoke_super_6 t = new T_invoke_super_6();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A13 
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15 
+     * @title &lt;clinit&gt; may not be called using invoke-super
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9 
+     * @title types of arguments passed to method.
+     */
+    public void testVFE5() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_12
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper                
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15 
+     * @title &lt;init&gt; may not be called using invoke_super
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10 
+     * @title assignment incompatible references when accessing
+     *                  protected method
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_22
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        //@uses dot.junit.opcodes.invoke_super.d.TPlain
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10 
+     * @title assignment incompatible references when accessing
+     *                  public method
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_23
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper2        
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to call static method. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_5
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_5");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke non-existing method. Java throws NoSuchMethodError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_15");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+  
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of other class. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE13() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_18
+        //@uses dot.junit.opcodes.invoke_super.TestStubs
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_18");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to invoke protected method of unrelated class. Java throws 
+     * IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_20
+        //@uses dot.junit.opcodes.invoke_super.TestStubs
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_20");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Method has different signature. Java throws 
+     * NoSuchMethodError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_19
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_19");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title invoke-super shall be used to invoke private methods
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_13
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper        
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_13");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A13 
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B6 
+     * @title instance methods may only be invoked on already initialized instances. 
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_25
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_25");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/TPlain.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/TPlain.d
new file mode 100644
index 0000000..5eaf417
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/TPlain.d
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TPlain.java
+.class public dot.junit.opcodes.invoke_super.d.TPlain
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/TSuper.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/TSuper.d
new file mode 100644
index 0000000..c7993b7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/TSuper.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TSuper.java
+.class public dot.junit.opcodes.invoke_super.d.TSuper
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+    
+.method public toInt(F)I 
+.limit regs 3
+    int-to-float v0, v2
+    return v0
+.end method
+
+.method public native toIntNative()I    
+.end method
+    
+.method public static toIntStatic()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+  
+.method protected toIntP()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+
+.method private toIntPvt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+    
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 349
+    const v1, 344656
+    div-int v2, v2, v3
+    return v2
+.end method   
+
+.method public testString(Ljava/lang/String;)V
+.limit regs 2
+    return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/TSuper2.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/TSuper2.d
new file mode 100644
index 0000000..b74842f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/TSuper2.d
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TSuper2.java
+.class public dot.junit.opcodes.invoke_super.d.TSuper2
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public test()I 
+.limit regs 3
+    const v0, 123
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.d
new file mode 100644
index 0000000..829c67f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_1.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_1
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 8
+
+       invoke-super {v7}, dot/junit/opcodes/invoke_super/d/T_invoke_super_1/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 777
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.java
new file mode 100644
index 0000000..2c1f61d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_1{
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.d
new file mode 100644
index 0000000..bc38f2f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_10.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_10
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+    invoke-super {v0}, dot.junit.opcodes.invoke_super.d.T_invoke_super_10/<clinit>()V
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.java
new file mode 100644
index 0000000..76fff9d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_10 {
+    
+    public void run() {
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_11.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_11.d
new file mode 100644
index 0000000..97683ca
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_11.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-super {v6}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_12.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_12.d
new file mode 100644
index 0000000..0b6efa2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_12.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_12
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 8
+
+       invoke-super {v5, v5}, dot.junit.opcodes.invoke_super.d.T_invoke_super_12/testString(Ljava/lang/String;)V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_13.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_13.d
new file mode 100644
index 0000000..a030b72
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_13.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_13.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_13
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method private toIntPvt()I
+.limit regs 3
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_13/toIntPvt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.d
new file mode 100644
index 0000000..b70f691
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.d
@@ -0,0 +1,61 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_14.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_14
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 7
+
+    const v1, 123
+    const v2, 659
+    
+    const v3, 300
+    const v4, 3
+
+    invoke-super {v6, v3, v4}, dot/junit/opcodes/invoke_super/d/T_invoke_super_14/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 100
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 659
+    if-ne v2, v4, Label0
+    
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 0
+    return v0
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.java
new file mode 100644
index 0000000..7dfcf14
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+    
+public class T_invoke_super_14{
+
+    public boolean run() {
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.d
new file mode 100644
index 0000000..32c2700
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_15.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_15/testN()V
+       return-void
+.end method
+
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_16.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_16.d
new file mode 100644
index 0000000..92f6c2f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_16.d
@@ -0,0 +1,26 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_16.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+       invoke-super {v2}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.d
new file mode 100644
index 0000000..de24bf3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_17.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_17
+.super dot/junit/opcodes/invoke_super/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_17/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.java
new file mode 100644
index 0000000..cb68374
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+    
+public class T_invoke_super_17 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.d
new file mode 100644
index 0000000..e3d61e7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_18.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_super/TestStubs;)V
+.limit regs 5
+
+       invoke-super {v4}, dot/junit/opcodes/invoke_super/TestStubs/TestStub()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.d
new file mode 100644
index 0000000..847e743
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_19.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_19
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const/4 v2, 1
+       invoke-super {v3, v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_19/toInt(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.d
new file mode 100644
index 0000000..0144130
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_2.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_2
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 8
+       const v7, 0    
+       invoke-super {v7}, dot/junit/opcodes/invoke_super/d/T_invoke_super_2/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 777
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.java
new file mode 100644
index 0000000..474115a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_2{
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.d
new file mode 100644
index 0000000..eb429ee
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_20.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_super/TestStubs;)V
+.limit regs 5
+
+       invoke-super {v4}, dot/junit/opcodes/invoke_super/TestStubs/TestStubP()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_22.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_22.d
new file mode 100644
index 0000000..fbeb8e8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_22.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_22.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_22
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_super/d/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_super/d/TPlain/<init>()V
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/TSuper/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_23.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_23.d
new file mode 100644
index 0000000..f1d2a6f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_23.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_23.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_23
+.super dot/junit/opcodes/invoke_super/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_super/d/TSuper
+       invoke-direct {v2}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/TSuper2/test()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.d
new file mode 100644
index 0000000..55303d3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_super.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_super.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_super.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_super_24.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_24
+.super dot/junit/opcodes/invoke_super/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-super {v7}, dot/junit/opcodes/invoke_super/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_25.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_25.d
new file mode 100644
index 0000000..f6e763c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_25.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_25.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_25
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 4
+
+       new-instance v3, dot/junit/opcodes/invoke_super/d/T_invoke_super_25
+       invoke-super {v3}, dot/junit/opcodes/invoke_super/d/T_invoke_super_25/toInt()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.d
new file mode 100644
index 0000000..3f80ff8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_4.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_4
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_4/toIntNative()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.java
new file mode 100644
index 0000000..316909f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_4 {
+    
+    public native void test();
+
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.d
new file mode 100644
index 0000000..af16744
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_5.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_5
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/TSuper/toIntStatic()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.d
new file mode 100644
index 0000000..94361b9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_6.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_6
+.super dot/junit/opcodes/invoke_super/ATest
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/ATest/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/ATest/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.java
new file mode 100644
index 0000000..47cf76f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+import dot.junit.opcodes.invoke_super.ATest;
+
+public class T_invoke_super_6 extends ATest {
+    
+    public void test(){
+        int i = 2+5;
+    }
+
+    public void run() {
+        test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.d
new file mode 100644
index 0000000..a62a1e5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_7.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_7
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_7/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.java
new file mode 100644
index 0000000..2f45567
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super.d;
+
+    
+public class T_invoke_super_7 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.d
new file mode 100644
index 0000000..48e9bdd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_8.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-super {v6, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.dfh b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.dfh
new file mode 100644
index 0000000..8501c68
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : e6b95367
+    67 53 B9 E6 
+// parsed: offset 12, len 20: signature           : 1f59...4982
+    1F 59 10 CB D9 05 57 DD FD 89 AE 82 F3 40 87 4D 92 7E 49 82 
+// parsed: offset 32, len 4: file_size           : 592
+    50 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 344
+    58 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/invoke_super/d/TSuper;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 362 (0x00016a) "Ldot/junit/opcodes/invoke_super/d/T_invoke_super_8;"
+    6A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 415 (0x00019f) "T_invoke_super_8.java"
+    9F 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 438 (0x0001b6) "V"
+    B6 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 441 (0x0001b9) "run"
+    B9 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 446 (0x0001be) "toInt"
+    BE 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/invoke_super/d/TSuper;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/invoke_super/d/T_invoke_super_8;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "toInt"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+// parsed: offset 208, len 8: [3] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    02 00 00 00 06 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 2 "Ldot/junit/opcodes/invoke_super/d/T_invoke_super_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ldot/junit/opcodes/invoke_super/d/TSuper;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_invoke_super_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 453 (0x0001c5)
+//     static_values_off: 0 (0x000000)
+    02 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 C5 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_super.d.T_invoke_super_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 264, len 2: |0000: move-object v0, v2
+            07 20 
+        // parsed: offset 266, len 2: |0001: move-object v1, v0
+            07 01 
+        // parsed: offset 268, len 6: |0002: invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;.<init>:()V // method@0000
+            70 10 00 00 01 00 
+        // parsed: offset 274, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_super.d.T_invoke_super_8.run"
+    // parsed: offset 276, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 278, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 280, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 282, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 284, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 288, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 292, len 2: |0000: move-object v0, v2
+            07 20 
+        // parsed: offset 294, len 2: |0001: const/4 v1, #int 0 // #0x0
+            12 01 
+        // parsed: offset 296, len 6: |0002: invoke-super {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;.toInt:()I // method@0001
+//@mod            6F 10 01 00 01 00 
+            6F 10 01 01 01 00 
+        // parsed: offset 302, len 2: |0005: move-result v1
+            0A 01 
+        // parsed: offset 304, len 2: |0006: move v0, v1
+            01 10 
+        // parsed: offset 306, len 2: |0007: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 43: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/invoke_super/d/TSuper;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 2F 64 2F 54 53 75 70 65 72 3B 00 
+// parsed: offset 362, len 53: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/invoke_super/d/T_invoke_super_8;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 5F 38 3B 00 
+// parsed: offset 415, len 23: TYPE_STRING_DATA_ITEM [4] "T_invoke_super_8.java"
+    15 54 5F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 438, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 441, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 446, len 7: TYPE_STRING_DATA_ITEM [7] "toInt"
+    05 74 6F 49 6E 74 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_super/d/T_invoke_super_8;"
+    // parsed: offset 453, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 454, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 455, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 456, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 457, len 1: method_idx_diff: 2 (method_idx: 2 "<init>")
+                02 
+            // parsed: offset 458, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 461, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 463, len 1: method_idx_diff: 3 (method_idx: 3 "run")
+                03 
+            // parsed: offset 464, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 465, len 2: code_off: 276 (0x000114)
+                94 02 
+// parsed: offset 467, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 468, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 04 00 00 00 B8 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 308 (0x000134)
+        02 20 00 00 08 00 00 00 34 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 453 (0x0001c5)
+        00 20 00 00 01 00 00 00 C5 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_9.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_9.d
new file mode 100644
index 0000000..79626b9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_9.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-super {v8, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/ATest.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/ATest.java
new file mode 100644
index 0000000..20e9c5e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/ATest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range;
+
+public abstract class ATest {
+    
+    public abstract void test();       
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/TestStubs.java
new file mode 100644
index 0000000..22b5046
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/TestStubs.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private void TestStub() {
+        // used by testE6
+    }
+
+    protected void TestStubP() {
+        // used by testE7
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/Test_invoke_super_range.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/Test_invoke_super_range.java
new file mode 100644
index 0000000..7797474
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/Test_invoke_super_range.java
@@ -0,0 +1,355 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_1;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_14;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_17;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_2;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_4;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_6;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_7;
+
+public class Test_invoke_super_range extends DxTestCase {
+
+    /**
+     * @title invoke method of superclass
+     */
+    public void testN1() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_1
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        T_invoke_super_range_1 t = new T_invoke_super_range_1();
+        assertEquals(5, t.run());
+    }
+   
+
+    /**
+     * @title Invoke protected method of superclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_7
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        T_invoke_super_range_7 t = new T_invoke_super_range_7();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title Check that new frame is created by invoke_super_range and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_14
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        T_invoke_super_range_14 t = new T_invoke_super_range_14();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Recursion of method lookup procedure
+     */
+    public void testN6() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_17
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper        
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper2
+        T_invoke_super_range_17 t = new T_invoke_super_range_17();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title obj ref is null
+     */
+    public void testE1() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_1
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        T_invoke_super_range_2 t = new T_invoke_super_range_2();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE2() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_4
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper        
+        T_invoke_super_range_4 t = new T_invoke_super_range_4();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_6
+        //@uses dot.junit.opcodes.invoke_super_range.ATest
+        T_invoke_super_range_6 t = new T_invoke_super_range_6();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A14 
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15 
+     * @title &lt;clinit&gt; may not be called using invoke-super
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9 
+     * @title types of arguments passed to method.
+     */
+    public void testVFE5() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_12
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper                
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15 
+     * @title &lt;init&gt; may not be called using invoke_super_range
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10 
+     * @title assignment incompatible references when accessing
+     *                  protected method
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_22
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        //@uses dot.junit.opcodes.invoke_super_range.d.TPlain
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10 
+     * @title assignment incompatible references when accessing
+     *                  public method
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_23
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper2        
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to call static method. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_5
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_5");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke non-existing method. Java throws NoSuchMethodError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_15");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+  
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of other class. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE13() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_18
+        //@uses dot.junit.opcodes.invoke_super_range.TestStubs
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_18");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to invoke protected method of unrelated class. Java throws 
+     * IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_20
+        //@uses dot.junit.opcodes.invoke_super_range.TestStubs
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_20");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Method has different signature. Java throws 
+     * NoSuchMethodError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_19
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_19");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title invoke-super/range shall be used to invoke private methods
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_13
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper        
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_13");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A14 
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B6 
+     * @title instance methods may only be invoked on already initialized instances. 
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_25
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_25");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/TPlain.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/TPlain.d
new file mode 100644
index 0000000..ba9512e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/TPlain.d
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TPlain.java
+.class public dot.junit.opcodes.invoke_super_range.d.TPlain
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/TSuper.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/TSuper.d
new file mode 100644
index 0000000..e9d0ff1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/TSuper.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TSuper.java
+.class public dot.junit.opcodes.invoke_super_range.d.TSuper
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+    
+.method public toInt(F)I 
+.limit regs 3
+    int-to-float v0, v2
+    return v0
+.end method
+
+.method public native toIntNative()I    
+.end method
+    
+.method public static toIntStatic()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+  
+.method protected toIntP()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+
+.method private toIntPvt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+    
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 349
+    const v1, 344656
+    div-int v2, v2, v3
+    return v2
+.end method   
+
+.method public testString(Ljava/lang/String;)V
+.limit regs 2
+    return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/TSuper2.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/TSuper2.d
new file mode 100644
index 0000000..90baf5d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/TSuper2.d
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TSuper2.java
+.class public dot.junit.opcodes.invoke_super_range.d.TSuper2
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public test()I 
+.limit regs 3
+    const v0, 123
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.d
new file mode 100644
index 0000000..4181eed
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_1.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_1
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 8
+
+       invoke-super/range {v7}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 777
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.java
new file mode 100644
index 0000000..0844d80
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+public class T_invoke_super_range_1{
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.d
new file mode 100644
index 0000000..baca689
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_10.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_10
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+    invoke-super/range {v0}, dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_10/<clinit>()V
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.java
new file mode 100644
index 0000000..3ff5490
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+public class T_invoke_super_range_10 {
+    
+    public void run() {
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_11.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_11.d
new file mode 100644
index 0000000..7cc537c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_11.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-super/range {v6}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_12.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_12.d
new file mode 100644
index 0000000..38cd7d2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_12.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_12
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 8
+       move-object v4, v5
+       invoke-super/range {v4..v5}, dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_12/testString(Ljava/lang/String;)V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13.d
new file mode 100644
index 0000000..d177e76
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_13.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_13
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method private toIntPvt()I
+.limit regs 3
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13/toIntPvt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.d
new file mode 100644
index 0000000..c90b576
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.d
@@ -0,0 +1,61 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_14.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_14
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 7
+
+    const v1, 123
+    const v2, 659
+    
+    const v4, 300
+    const v5, 3
+    move-object v3, v6
+    invoke-super/range {v3..v5}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 100
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 659
+    if-ne v2, v4, Label0
+    
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 0
+    return v0
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.java
new file mode 100644
index 0000000..32af085
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+    
+public class T_invoke_super_range_14{
+
+    public boolean run() {
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.d
new file mode 100644
index 0000000..7c57710
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_15.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15/testN()V
+       return-void
+.end method
+
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_16.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_16.d
new file mode 100644
index 0000000..90d9a21
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_16.d
@@ -0,0 +1,26 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_16.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+       invoke-super/range {v2}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.d
new file mode 100644
index 0000000..962adb5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_17.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_17
+.super dot/junit/opcodes/invoke_super_range/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.java
new file mode 100644
index 0000000..5d87c2d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+    
+public class T_invoke_super_range_17 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.d
new file mode 100644
index 0000000..709fad6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_18.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_super_range/TestStubs;)V
+.limit regs 5
+
+       invoke-super/range {v4}, dot/junit/opcodes/invoke_super_range/TestStubs/TestStub()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.d
new file mode 100644
index 0000000..d30cc05
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_19.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_19
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       move-object v0, v3
+       const/4 v1, 1
+       invoke-super/range {v0, v1}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19/toInt(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.d
new file mode 100644
index 0000000..b8c9051
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_2.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_2
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 8
+       const v7, 0    
+       invoke-super/range {v7}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 777
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.java
new file mode 100644
index 0000000..c9a5f0f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+public class T_invoke_super_range_2{
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.d
new file mode 100644
index 0000000..7ea46f1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_20.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_super_range/TestStubs;)V
+.limit regs 5
+
+       invoke-super/range {v4}, dot/junit/opcodes/invoke_super_range/TestStubs/TestStubP()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_22.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_22.d
new file mode 100644
index 0000000..efe22e4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_22.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_22.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_22
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_super_range/d/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_super_range/d/TPlain/<init>()V
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/TSuper/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_23.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_23.d
new file mode 100644
index 0000000..5877042
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_23.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_23.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_23
+.super dot/junit/opcodes/invoke_super_range/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_super_range/d/TSuper
+       invoke-direct {v2}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/TSuper2/test()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.d
new file mode 100644
index 0000000..dcc399d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_super_range.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_super_range.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_super_range.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_super_range_24.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_24
+.super dot/junit/opcodes/invoke_super_range/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-super/range {v7}, dot/junit/opcodes/invoke_super_range/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25.d
new file mode 100644
index 0000000..1a9d17a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_25.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_25
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 4
+
+       new-instance v3, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25
+       invoke-super/range {v3}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25/toInt()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.d
new file mode 100644
index 0000000..eb1a1f5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_4.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_4
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4/toIntNative()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.java
new file mode 100644
index 0000000..d9b6b9a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+public class T_invoke_super_range_4 {
+    
+    public native void test();
+
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.d
new file mode 100644
index 0000000..bf38cab
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_5.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_5
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/TSuper/toIntStatic()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.d
new file mode 100644
index 0000000..bb9161c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_6.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_6
+.super dot/junit/opcodes/invoke_super_range/ATest
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/ATest/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/ATest/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.java
new file mode 100644
index 0000000..64229eb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+import dot.junit.opcodes.invoke_super_range.ATest;
+
+public class T_invoke_super_range_6 extends ATest {
+    
+    public void test(){
+        int i = 2+5;
+    }
+
+    public void run() {
+        test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.d
new file mode 100644
index 0000000..f170aac
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_7.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_7
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.java
new file mode 100644
index 0000000..d09e351
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_super_range.d;
+
+    
+public class T_invoke_super_range_7 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.d
new file mode 100644
index 0000000..ed4d3ab
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_8.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+     
+       invoke-super/range {v6..v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.dfh b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.dfh
new file mode 100644
index 0000000..3b8efa1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.dfh
@@ -0,0 +1,288 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 677c55cc
+    CC 55 7C 67 
+// parsed: offset 12, len 20: signature           : c17c...13a7
+    C1 7C 21 3E 4F CA 1A 28 AD C6 6A 29 3E DE 7A A7 DC B7 13 A7 
+// parsed: offset 32, len 4: file_size           : 636
+    7C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 500 (0x0001f4)
+    F4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 236 (0x0000ec)
+    EC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 368
+    70 01 00 00 
+// parsed: offset 108, len 4: data_off            : 268 (0x00010c)
+    0C 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 336 (0x000150) "<init>"
+    50 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 344 (0x000158) "Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8;"
+    58 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 409 (0x000199) "Ljava/lang/Object;"
+    99 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 429 (0x0001ad) "T_invoke_super_range_8.java"
+    AD 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 458 (0x0001ca) "V"
+    CA 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 461 (0x0001cd) "Z"
+    CD 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 464 (0x0001d0) "ZL"
+    D0 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 468 (0x0001d4) "ZLL"
+    D4 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 473 (0x0001d9) "equals"
+    D9 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 481 (0x0001e1) "run"
+    E1 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8;"
+    01 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "ZL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 320 (0x000140)
+    06 00 00 00 03 00 00 00 40 01 00 00 
+// parsed: offset 192, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "ZLL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 328 (0x000148)
+    07 00 00 00 03 00 00 00 48 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 204, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 212, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 2 (0x000002) name_idx: 9 (0x000009) "run"
+    00 00 02 00 09 00 00 00 
+// parsed: offset 220, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 228, len 8: [3] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "equals"
+    01 00 01 00 08 00 00 00 
+
+// class_defs:
+// parsed: offset 236, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_invoke_super_range_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 486 (0x0001e6)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 E6 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_8.<init>"
+    // parsed: offset 268, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 284, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 01 00 
+        // parsed: offset 290, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_8.run"
+    // parsed: offset 292, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 294, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 296, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 298, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 300, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 304, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 308, len 6: |0000: invoke-super/range {v6..v7}, Ljava/lang/Object;.equals:(Ljava/lang/Object;)Z // method@0003
+//@mod            75 02 03 00 06 00 
+            75 02 03 01 06 00 
+        // parsed: offset 314, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 316, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 318, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 320, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 324, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 326, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 1
+        01 00 
+    // parsed: offset 334, len 2: type_item [1] type_idx: 1
+        01 00 
+// parsed: offset 336, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 344, len 65: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8;"
+    3F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 5F 72 61 6E 67 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 5F 72 61 6E 67 65 5F 38 3B 00 
+// parsed: offset 409, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 429, len 29: TYPE_STRING_DATA_ITEM [3] "T_invoke_super_range_8.java"
+    1B 54 5F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 5F 72 61 6E 67 65 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 458, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 461, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 464, len 4: TYPE_STRING_DATA_ITEM [6] "ZL"
+    02 5A 4C 00 
+// parsed: offset 468, len 5: TYPE_STRING_DATA_ITEM [7] "ZLL"
+    03 5A 4C 4C 00 
+// parsed: offset 473, len 8: TYPE_STRING_DATA_ITEM [8] "equals"
+    06 65 71 75 61 6C 73 00 
+// parsed: offset 481, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8;"
+    // parsed: offset 486, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 487, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 488, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 489, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 490, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 491, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 494, len 2: code_off: 268 (0x00010c)
+                8C 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 496, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 497, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 498, len 2: code_off: 292 (0x000124)
+                A4 02 
+// map_list:
+    // parsed: offset 500, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 504, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 516, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 528, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 152 (0x000098)
+        02 00 00 00 04 00 00 00 98 00 00 00 
+    // parsed: offset 540, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 03 00 00 00 A8 00 00 00 
+    // parsed: offset 552, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 204 (0x0000cc)
+        05 00 00 00 04 00 00 00 CC 00 00 00 
+    // parsed: offset 564, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 236 (0x0000ec)
+        06 00 00 00 01 00 00 00 EC 00 00 00 
+    // parsed: offset 576, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 268 (0x00010c)
+        01 20 00 00 02 00 00 00 0C 01 00 00 
+    // parsed: offset 588, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 2
+    //      offset: 320 (0x000140)
+        01 10 00 00 02 00 00 00 40 01 00 00 
+    // parsed: offset 600, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 336 (0x000150)
+        02 20 00 00 0A 00 00 00 50 01 00 00 
+    // parsed: offset 612, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 486 (0x0001e6)
+        00 20 00 00 01 00 00 00 E6 01 00 00 
+    // parsed: offset 624, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 500 (0x0001f4)
+        00 10 00 00 01 00 00 00 F4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_9.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_9.d
new file mode 100644
index 0000000..e97d513
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_super_range_9.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-super/range {v7..v8}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/ATest.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/ATest.java
new file mode 100644
index 0000000..f102992
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/ATest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual;
+
+public abstract class ATest {
+    
+    public abstract void test();       
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/TestStubs.java
new file mode 100644
index 0000000..e495f54
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/TestStubs.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private void TestStub() {
+        // used by testE6
+    }
+
+    protected void TestStubP() {
+        // used by testE7
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/Test_invoke_virtual.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/Test_invoke_virtual.java
new file mode 100644
index 0000000..96a3f64
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/Test_invoke_virtual.java
@@ -0,0 +1,345 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_1;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_14;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_17;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_4;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_6;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_7;
+
+public class Test_invoke_virtual extends DxTestCase {
+
+    /**
+     * @title invoke virtual method
+     */
+    public void testN1() {
+        T_invoke_virtual_1 t = new T_invoke_virtual_1();
+        int a = 1;
+        String sa = "a" + a;
+        String sb = "a1";
+        assertTrue(t.run(sa, sb));
+        assertFalse(t.run(t, sa));
+        assertFalse(t.run(sb, t));
+    }
+
+    /**
+     * @title Invoke protected method of superclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_7
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper
+        T_invoke_virtual_7 t = new T_invoke_virtual_7();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title Check that new frame is created by invoke_virtual and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_14
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper
+        T_invoke_virtual_14 t = new T_invoke_virtual_14();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Recursion of method lookup procedure
+     */
+    public void testN6() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_17
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper        
+        T_invoke_virtual_17 t = new T_invoke_virtual_17();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE1() {
+        T_invoke_virtual_1 t = new T_invoke_virtual_1();
+        String s = "s";
+        try {
+            t.run(null, s);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE2() {
+        T_invoke_virtual_4 t = new T_invoke_virtual_4();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_6
+        //@uses dot.junit.opcodes.invoke_virtual.ATest
+        T_invoke_virtual_6 t = new T_invoke_virtual_6();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A13 
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15 
+     * @title &lt;clinit&gt; may not be called using invoke-virtual
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9 
+     * @title types of arguments passed to method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15 
+     * @title &lt;init&gt; may not be called using invoke_virtual
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10 
+     * @title assignment incompatible references when accessing
+     *                  protected method
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_22
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper
+        //@uses dot.junit.opcodes.invoke_virtual.d.TPlain
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10 
+     * @title assignment incompatible references when accessing
+     *                  public method
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_23
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper2        
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to call static method. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+         try {
+             Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_5");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke non-existing method. Java throws NoSuchMethodError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+         try {
+             Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_15");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+  
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of other class. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE13() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_18
+        //@uses dot.junit.opcodes.invoke_virtual.TestStubs
+         try {
+             Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_18");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to invoke protected method of unrelated class. Java throws 
+     * IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_20
+        //@uses dot.junit.opcodes.invoke_virtual.TestStubs
+         try {
+             Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_20");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Method has different signature. Java throws 
+     * NoSuchMethodError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_19
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper
+         try {
+             Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_19");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title invoke-virtual shall be used to invoke private methods
+     */
+    public void testVFE16() {
+         try {
+             Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_13");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A13 
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B6 
+     * @title instance methods may only be invoked on already initialized instances. 
+     */
+    public void testVFE19() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_25");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+  
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/TPlain.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/TPlain.d
new file mode 100644
index 0000000..f0328ca
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/TPlain.d
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TPlain.java
+.class public dot.junit.opcodes.invoke_virtual.d.TPlain
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/TSuper.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/TSuper.d
new file mode 100644
index 0000000..3b7a591
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/TSuper.d
@@ -0,0 +1,67 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TSuper.java
+.class public dot.junit.opcodes.invoke_virtual.d.TSuper
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+    
+.method public toInt(F)I 
+.limit regs 3
+    int-to-float v0, v2
+    return v0
+.end method
+
+.method public native toIntNative()I    
+.end method
+    
+.method public static toIntStatic()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+  
+.method protected toIntP()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+
+.method private toIntPvt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+    
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 349
+    const v1, 344656
+    div-int v2, v2, v3
+    return v2
+.end method   
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/TSuper2.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/TSuper2.d
new file mode 100644
index 0000000..2137c4c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/TSuper2.d
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TSuper2.java
+.class public dot.junit.opcodes.invoke_virtual.d.TSuper2
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public test()I 
+.limit regs 3
+    const v0, 123
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.d
new file mode 100644
index 0000000..3192c0d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_1.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual {v6, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.java
new file mode 100644
index 0000000..f242600
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+public class T_invoke_virtual_1 {
+
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.d
new file mode 100644
index 0000000..2c5c909
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_10.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_10
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+    invoke-virtual {v0}, dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_10/<clinit>()V
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.java
new file mode 100644
index 0000000..24898f4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+public class T_invoke_virtual_10 {
+    
+    public void run() {
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_11.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_11.d
new file mode 100644
index 0000000..68ca8c7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_11.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual {v6}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_12.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_12.d
new file mode 100644
index 0000000..02d509a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_12.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_12.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test(Ljava/lang/String;)V
+    return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual {v5, v7}, dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_12/test(Ljava/lang/String;)V
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13.d
new file mode 100644
index 0000000..dcf28f8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_13.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.d
new file mode 100644
index 0000000..743ddf4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.d
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_14.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_14
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 7
+
+    const v1, 123
+    const v2, 659
+    
+    const v3, 300
+    const v4, 3
+
+    invoke-virtual {v6, v3, v4}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 100
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 659
+    if-ne v2, v4, Label0
+    
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.java
new file mode 100644
index 0000000..d0a8d40
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+    
+public class T_invoke_virtual_14{
+
+    public boolean run() {
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.d
new file mode 100644
index 0000000..ad196c9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_15.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15/testN()V
+       return-void
+.end method
+
+.method public test()V
+.limit regs 1
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_16.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_16.d
new file mode 100644
index 0000000..0f0ab56
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_16.d
@@ -0,0 +1,26 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_16.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+       invoke-virtual {v2}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.d
new file mode 100644
index 0000000..da55ec7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_17.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_17
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.java
new file mode 100644
index 0000000..918e3b7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+    
+public class T_invoke_virtual_17 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.d
new file mode 100644
index 0000000..32097da
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_18.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_virtual/TestStubs;)V
+.limit regs 5
+       invoke-virtual {v4}, dot/junit/opcodes/invoke_virtual/TestStubs/TestStub()V
+Label6:
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.d
new file mode 100644
index 0000000..ce0b550
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_19.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_19
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const/4 v2, 1
+       invoke-virtual {v3, v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19/toInt(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.d
new file mode 100644
index 0000000..f655091
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_20.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_virtual/TestStubs;)V
+.limit regs 5
+Label0:
+
+       invoke-virtual {v4}, dot/junit/opcodes/invoke_virtual/TestStubs/TestStubP()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_22.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_22.d
new file mode 100644
index 0000000..135f037
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_22.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_22.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_22
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_virtual/d/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_virtual/d/TPlain/<init>()V
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/TSuper/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_23.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_23.d
new file mode 100644
index 0000000..071a91f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_23.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_23.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_23
+.super dot/junit/opcodes/invoke_virtual/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_virtual/d/TSuper
+       invoke-direct {v2}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/TSuper2/test()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.d
new file mode 100644
index 0000000..1804cce
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_virtual.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+.source T_invoke_virtual_24.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_24
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_virtual.d.TTestInterface
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       invoke-virtual {v3}, dot/junit/opcodes/invoke_virtual/d/TTestInterface/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_25.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_25.d
new file mode 100644
index 0000000..7816b12
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_25.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_25.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_25
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       new-instance v6, java/lang/Object
+       invoke-virtual {v6, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.d
new file mode 100644
index 0000000..5de2f49
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_4.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4/test()V
+       return-void
+.end method
+
+.method public native test()V
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.java
new file mode 100644
index 0000000..40cc1fa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+public class T_invoke_virtual_4 {
+    
+    public native void test();
+
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.d
new file mode 100644
index 0000000..6f18698
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_5.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static test()V
+.limit regs 0
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.d
new file mode 100644
index 0000000..a3f42ae
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_6.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_6
+.super dot/junit/opcodes/invoke_virtual/ATest
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/ATest/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/ATest/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.java
new file mode 100644
index 0000000..fd8e058
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+import dot.junit.opcodes.invoke_virtual.ATest;
+
+public class T_invoke_virtual_6 extends ATest {
+    
+    public void test(){
+        int i = 2+5;
+    }
+
+    public void run() {
+        test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.d
new file mode 100644
index 0000000..2e3a6a7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_7.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_7
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.java
new file mode 100644
index 0000000..27b16ba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual.d;
+
+    
+public class T_invoke_virtual_7 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.d
new file mode 100644
index 0000000..c6ef760
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_8.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual {v6, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.dfh b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.dfh
new file mode 100644
index 0000000..a556dba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.dfh
@@ -0,0 +1,288 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a8d05097
+    97 50 D0 A8 
+// parsed: offset 12, len 20: signature           : 6f6c...0043
+    6F 6C D4 68 F7 7B 24 4C 91 C7 92 D9 30 AA 0C 5B EB 08 00 43 
+// parsed: offset 32, len 4: file_size           : 624
+    70 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 488 (0x0001e8)
+    E8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 236 (0x0000ec)
+    EC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 356
+    64 01 00 00 
+// parsed: offset 108, len 4: data_off            : 268 (0x00010c)
+    0C 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 336 (0x000150) "<init>"
+    50 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 344 (0x000158) "Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8;"
+    58 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 401 (0x000191) "Ljava/lang/Object;"
+    91 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 421 (0x0001a5) "T_invoke_virtual_8.java"
+    A5 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 446 (0x0001be) "V"
+    BE 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 449 (0x0001c1) "Z"
+    C1 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 452 (0x0001c4) "ZL"
+    C4 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 456 (0x0001c8) "ZLL"
+    C8 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 461 (0x0001cd) "equals"
+    CD 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 469 (0x0001d5) "run"
+    D5 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8;"
+    01 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "ZL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 320 (0x000140)
+    06 00 00 00 03 00 00 00 40 01 00 00 
+// parsed: offset 192, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "ZLL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 328 (0x000148)
+    07 00 00 00 03 00 00 00 48 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 204, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 212, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 2 (0x000002) name_idx: 9 (0x000009) "run"
+    00 00 02 00 09 00 00 00 
+// parsed: offset 220, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 228, len 8: [3] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "equals"
+    01 00 01 00 08 00 00 00 
+
+// class_defs:
+// parsed: offset 236, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_invoke_virtual_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 474 (0x0001da)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 DA 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_8.<init>"
+    // parsed: offset 268, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 284, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 01 00 
+        // parsed: offset 290, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_8.run"
+    // parsed: offset 292, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 294, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 296, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 298, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 300, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 304, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 308, len 6: |0000: invoke-virtual {v6, v7}, Ljava/lang/Object;.equals:(Ljava/lang/Object;)Z // method@0003
+//@mod            6E 20 03 00 76 00 
+            6E 20 03 01 76 00 
+        // parsed: offset 314, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 316, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 318, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 320, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 324, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 326, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 1
+        01 00 
+    // parsed: offset 334, len 2: type_item [1] type_idx: 1
+        01 00 
+// parsed: offset 336, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 344, len 57: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8;"
+    37 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 5F 38 3B 00 
+// parsed: offset 401, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 421, len 25: TYPE_STRING_DATA_ITEM [3] "T_invoke_virtual_8.java"
+    17 54 5F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 446, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 449, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 452, len 4: TYPE_STRING_DATA_ITEM [6] "ZL"
+    02 5A 4C 00 
+// parsed: offset 456, len 5: TYPE_STRING_DATA_ITEM [7] "ZLL"
+    03 5A 4C 4C 00 
+// parsed: offset 461, len 8: TYPE_STRING_DATA_ITEM [8] "equals"
+    06 65 71 75 61 6C 73 00 
+// parsed: offset 469, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8;"
+    // parsed: offset 474, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 475, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 476, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 477, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 479, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 482, len 2: code_off: 268 (0x00010c)
+                8C 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 484, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 485, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 486, len 2: code_off: 292 (0x000124)
+                A4 02 
+// map_list:
+    // parsed: offset 488, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 492, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 504, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 516, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 152 (0x000098)
+        02 00 00 00 04 00 00 00 98 00 00 00 
+    // parsed: offset 528, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 03 00 00 00 A8 00 00 00 
+    // parsed: offset 540, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 204 (0x0000cc)
+        05 00 00 00 04 00 00 00 CC 00 00 00 
+    // parsed: offset 552, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 236 (0x0000ec)
+        06 00 00 00 01 00 00 00 EC 00 00 00 
+    // parsed: offset 564, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 268 (0x00010c)
+        01 20 00 00 02 00 00 00 0C 01 00 00 
+    // parsed: offset 576, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 2
+    //      offset: 320 (0x000140)
+        01 10 00 00 02 00 00 00 40 01 00 00 
+    // parsed: offset 588, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 336 (0x000150)
+        02 20 00 00 0A 00 00 00 50 01 00 00 
+    // parsed: offset 600, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 474 (0x0001da)
+        00 20 00 00 01 00 00 00 DA 01 00 00 
+    // parsed: offset 612, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 488 (0x0001e8)
+        00 10 00 00 01 00 00 00 E8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_9.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_9.d
new file mode 100644
index 0000000..f695913
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_9.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual {v8, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/ATest.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/ATest.java
new file mode 100644
index 0000000..e6ebd5a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/ATest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range;
+
+public abstract class ATest {
+    
+    public abstract void test();       
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/TestStubs.java
new file mode 100644
index 0000000..d00c43e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/TestStubs.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private void TestStub() {
+        // used by testE6
+    }
+
+    protected void TestStubP() {
+        // used by testE7
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/Test_invoke_virtual_range.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/Test_invoke_virtual_range.java
new file mode 100644
index 0000000..4281069
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/Test_invoke_virtual_range.java
@@ -0,0 +1,352 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_1;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_14;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_17;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_2;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_4;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_6;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_7;
+
+public class Test_invoke_virtual_range extends DxTestCase {
+
+    /**
+     * @title invoke virtual method
+     */
+    public void testN1() {
+        T_invoke_virtual_range_1 t = new T_invoke_virtual_range_1();
+        int a = 1;
+        String sa = "a" + a;
+        String sb = "a1";
+        assertTrue(t.run(sa, sb));
+        assertFalse(t.run(t, sa));
+        assertFalse(t.run(sb, t));
+    }
+
+    /**
+     * @title Invoke protected method of superclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_7
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper
+        T_invoke_virtual_range_7 t = new T_invoke_virtual_range_7();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title Check that new frame is created by invoke_virtual_range and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_14
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper
+        T_invoke_virtual_range_14 t = new T_invoke_virtual_range_14();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Recursion of method lookup procedure
+     */
+    public void testN6() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_17
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper        
+        T_invoke_virtual_range_17 t = new T_invoke_virtual_range_17();
+        assertEquals(5, t.run());
+    }
+    
+    /**
+     * @title Big number of arguments
+     */
+    public void testN7() {
+        T_invoke_virtual_range_2 t = new T_invoke_virtual_range_2();
+        assertEquals(1, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE1() {
+        T_invoke_virtual_range_1 t = new T_invoke_virtual_range_1();
+        String s = "s";
+        try {
+            t.run(null, s);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE2() {
+        T_invoke_virtual_range_4 t = new T_invoke_virtual_range_4();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_6
+        //@uses dot.junit.opcodes.invoke_virtual_range.ATest
+        T_invoke_virtual_range_6 t = new T_invoke_virtual_range_6();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A14 
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15 
+     * @title &lt;clinit&gt; may not be called using invoke-virtual
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9 
+     * @title types of arguments passed to method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15 
+     * @title &lt;init&gt; may not be called using invoke_virtual_range
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10 
+     * @title assignment incompatible references when accessing
+     *                  protected method
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_22
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TPlain
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10 
+     * @title assignment incompatible references when accessing
+     *                  public method
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_23
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper2        
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to call static method. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+         try {
+             Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_5");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke non-existing method. Java throws NoSuchMethodError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+         try {
+             Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_15");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+  
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of other class. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE13() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_18
+        //@uses dot.junit.opcodes.invoke_virtual_range.TestStubs
+         try {
+             Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_18");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to invoke protected method of unrelated class. Java throws 
+     * IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_20
+        //@uses dot.junit.opcodes.invoke_virtual_range.TestStubs
+         try {
+             Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_20");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Method has different signature. Java throws 
+     * NoSuchMethodError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_19
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper
+         try {
+             Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_19");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title invoke-virtual/range shall be used to invoke private methods
+     */
+    public void testVFE16() {
+         try {
+             Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_13");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint A14 
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B6 
+     * @title instance methods may only be invoked on already initialized instances. 
+     */
+    public void testVFE19() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_25");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/TPlain.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/TPlain.d
new file mode 100644
index 0000000..c39399e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/TPlain.d
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TPlain.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.TPlain
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper.d
new file mode 100644
index 0000000..7b4d7b6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper.d
@@ -0,0 +1,67 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TSuper.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.TSuper
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+    
+.method public toInt(F)I 
+.limit regs 3
+    int-to-float v0, v2
+    return v0
+.end method
+
+.method public native toIntNative()I    
+.end method
+    
+.method public static toIntStatic()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+  
+.method protected toIntP()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+
+.method private toIntPvt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+    
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 349
+    const v1, 344656
+    div-int v2, v2, v3
+    return v2
+.end method   
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper2.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper2.d
new file mode 100644
index 0000000..882b227
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper2.d
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TSuper2.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.TSuper2
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public test()I 
+.limit regs 3
+    const v0, 123
+    return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.d
new file mode 100644
index 0000000..b7f13d5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_1.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual/range {v6..v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.java
new file mode 100644
index 0000000..2c49efe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+public class T_invoke_virtual_range_1 {
+
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.d
new file mode 100644
index 0000000..3f327a8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_10.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_10
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+    invoke-virtual/range {v0}, dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_10/<clinit>()V
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.java
new file mode 100644
index 0000000..bc32697
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+public class T_invoke_virtual_range_10 {
+    
+    public void run() {
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_11.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_11.d
new file mode 100644
index 0000000..b109ace
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_11.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual/range {v6}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_12.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_12.d
new file mode 100644
index 0000000..9b63ef8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_12.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_12.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test(Ljava/lang/String;)V
+    return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       move-object v6, v5
+       invoke-virtual/range {v6..v7}, dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_12/test(Ljava/lang/String;)V
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13.d
new file mode 100644
index 0000000..fd6de25
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_13.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.d
new file mode 100644
index 0000000..32cd481
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.d
@@ -0,0 +1,57 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_14.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_14
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 7
+
+    const v1, 123
+    const v2, 659
+    
+    const v4, 300
+    const v5, 3
+    move-object v3, v6
+
+    invoke-virtual/range {v3..v5}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 100
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 659
+    if-ne v2, v4, Label0
+    
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.java
new file mode 100644
index 0000000..c3b8e0c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+    
+public class T_invoke_virtual_range_14{
+
+    public boolean run() {
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.d
new file mode 100644
index 0000000..d42643b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_15.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15/testN()V
+       return-void
+.end method
+
+.method public test()V
+.limit regs 1
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_16.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_16.d
new file mode 100644
index 0000000..5a71786
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_16.d
@@ -0,0 +1,26 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_16.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+       invoke-virtual/range {v2}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.d
new file mode 100644
index 0000000..173c6bd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_17.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_17
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.java
new file mode 100644
index 0000000..689f741
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+    
+public class T_invoke_virtual_range_17 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.d
new file mode 100644
index 0000000..cc11d06
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_18.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_virtual_range/TestStubs;)V
+.limit regs 5
+       invoke-virtual/range {v4}, dot/junit/opcodes/invoke_virtual_range/TestStubs/TestStub()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.d
new file mode 100644
index 0000000..704726b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_19.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_19
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       move-object v2, v3
+       const/4 v3, 1
+       invoke-virtual/range {v2..v3}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19/toInt(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.d
new file mode 100644
index 0000000..eac70b4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.d
@@ -0,0 +1,77 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_2.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test(IIIIIIIIII)I
+.limit regs 11
+    const v0, 10
+    if-ne v0, v10, Label0
+    const v0, 9
+    if-ne v0, v9, Label0
+    const v0, 8
+    if-ne v0, v8, Label0
+    const v0, 7
+    if-ne v0, v7, Label0
+    const v0, 6
+    if-ne v0, v6, Label0
+    const v0, 5
+    if-ne v0, v5, Label0
+    const v0, 4
+    if-ne v0, v4, Label0
+    const v0, 3
+    if-ne v0, v3, Label0
+    const v0, 2
+    if-ne v0, v2, Label0
+    const v0, 1
+    if-ne v0, v1, Label0
+
+    const v0, 1
+    return v0
+Label0:
+    const v0, 0
+    return v0
+
+.end method
+
+.method public run()I
+.limit regs 16
+       move-object v0, v15
+         const v1, 1
+          const v2, 2
+          const v3, 3
+          const v4, 4
+          const v5, 5
+          const v6, 6
+          const v7, 7
+          const v8, 8
+          const v9, 9
+          const v10, 10
+
+       invoke-virtual/range {v0..v10}, dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_2/test(IIIIIIIIII)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.java
new file mode 100644
index 0000000..bc934f4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+public class T_invoke_virtual_range_2 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.d
new file mode 100644
index 0000000..ab7a4cd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_20.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_virtual_range/TestStubs;)V
+.limit regs 5
+Label0:
+
+       invoke-virtual/range {v4}, dot/junit/opcodes/invoke_virtual_range/TestStubs/TestStubP()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_22.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_22.d
new file mode 100644
index 0000000..6f6fad5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_22.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_22.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_22
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_virtual_range/d/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_virtual_range/d/TPlain/<init>()V
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_23.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_23.d
new file mode 100644
index 0000000..cf21428
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_23.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_23.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_23
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_virtual_range/d/TSuper
+       invoke-direct {v2}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/TSuper2/test()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.d
new file mode 100644
index 0000000..9e2022f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_virtual_range.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+.source T_invoke_virtual_range_24.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_24
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_virtual_range.d.TTestInterface
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       invoke-virtual/range {v3}, dot/junit/opcodes/invoke_virtual_range/d/TTestInterface/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_25.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_25.d
new file mode 100644
index 0000000..1d39236
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_25.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_25.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_25
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       new-instance v6, java/lang/Object
+       invoke-virtual/range {v6, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.d
new file mode 100644
index 0000000..f68a194
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_4.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4/test()V
+       return-void
+.end method
+
+.method public native test()V
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.java
new file mode 100644
index 0000000..3b6eff0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+public class T_invoke_virtual_range_4 {
+    
+    public native void test();
+
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.d
new file mode 100644
index 0000000..361e00c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_5.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static test()V
+.limit regs 0
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.d
new file mode 100644
index 0000000..2dcf120
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_6.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_6
+.super dot/junit/opcodes/invoke_virtual_range/ATest
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/ATest/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/ATest/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.java
new file mode 100644
index 0000000..52bdea9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+import dot.junit.opcodes.invoke_virtual_range.ATest;
+
+public class T_invoke_virtual_range_6 extends ATest {
+    
+    public void test(){
+        int i = 2+5;
+    }
+
+    public void run() {
+        test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.d
new file mode 100644
index 0000000..b5c44f4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_7.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_7
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.java b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.java
new file mode 100644
index 0000000..333e3ec
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+    
+public class T_invoke_virtual_range_7 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.d
new file mode 100644
index 0000000..e2538f4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_8.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual/range {v6..v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.dfh b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.dfh
new file mode 100644
index 0000000..390f2a4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.dfh
@@ -0,0 +1,290 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a1e659ab
+    AB 59 E6 A1 
+// parsed: offset 12, len 20: signature           : 8e95...8017
+    8E 95 BB E6 C0 B0 72 A9 B2 A8 7C 08 01 0B 76 DC A6 B9 80 17 
+// parsed: offset 32, len 4: file_size           : 644
+    84 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 508 (0x0001fc)
+    FC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 236 (0x0000ec)
+    EC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 376
+    78 01 00 00 
+// parsed: offset 108, len 4: data_off            : 268 (0x00010c)
+    0C 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 336 (0x000150) "<init>"
+    50 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 344 (0x000158) "Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8;"
+    58 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 413 (0x00019d) "Ljava/lang/Object;"
+    9D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 433 (0x0001b1) "T_invoke_virtual_range_8.java"
+    B1 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 464 (0x0001d0) "V"
+    D0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 467 (0x0001d3) "Z"
+    D3 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 470 (0x0001d6) "ZL"
+    D6 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 474 (0x0001da) "ZLL"
+    DA 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 479 (0x0001df) "equals"
+    DF 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 487 (0x0001e7) "run"
+    E7 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8;"
+    01 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "ZL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 320 (0x000140)
+    06 00 00 00 03 00 00 00 40 01 00 00 
+// parsed: offset 192, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "ZLL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 328 (0x000148)
+    07 00 00 00 03 00 00 00 48 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 204, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 212, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 2 (0x000002) name_idx: 9 (0x000009) "run"
+    00 00 02 00 09 00 00 00 
+// parsed: offset 220, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 228, len 8: [3] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "equals"
+    01 00 01 00 08 00 00 00 
+
+// class_defs:
+// parsed: offset 236, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_invoke_virtual_range_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 492 (0x0001ec)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 EC 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_8.<init>"
+    // parsed: offset 268, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 284, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 01 00 
+        // parsed: offset 290, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_8.run"
+    // parsed: offset 292, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 294, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 296, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 298, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 300, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 304, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 308, len 6: |0000: invoke-virtual/range {v6..v7}, Ljava/lang/Object;.equals:(Ljava/lang/Object;)Z // method@0003
+//@mod            74 02 03 00 06 00 
+            74 02 03 01 06 00 
+        // parsed: offset 314, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 316, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 318, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 320, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 324, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 326, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 1
+        01 00 
+    // parsed: offset 334, len 2: type_item [1] type_idx: 1
+        01 00 
+// parsed: offset 336, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 344, len 69: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8;"
+    43 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 5F 72 61 6E 67 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 5F 72 61 6E 67 65 5F 38 3B 00 
+// parsed: offset 413, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 433, len 31: TYPE_STRING_DATA_ITEM [3] "T_invoke_virtual_range_8.java"
+    1D 54 5F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 5F 72 61 6E 67 65 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 464, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 467, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 470, len 4: TYPE_STRING_DATA_ITEM [6] "ZL"
+    02 5A 4C 00 
+// parsed: offset 474, len 5: TYPE_STRING_DATA_ITEM [7] "ZLL"
+    03 5A 4C 4C 00 
+// parsed: offset 479, len 8: TYPE_STRING_DATA_ITEM [8] "equals"
+    06 65 71 75 61 6C 73 00 
+// parsed: offset 487, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8;"
+    // parsed: offset 492, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 493, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 494, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 495, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 496, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 497, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 500, len 2: code_off: 268 (0x00010c)
+                8C 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 502, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 503, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 504, len 2: code_off: 292 (0x000124)
+                A4 02 
+// parsed: offset 506, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 508, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 512, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 524, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 536, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 152 (0x000098)
+        02 00 00 00 04 00 00 00 98 00 00 00 
+    // parsed: offset 548, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 03 00 00 00 A8 00 00 00 
+    // parsed: offset 560, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 204 (0x0000cc)
+        05 00 00 00 04 00 00 00 CC 00 00 00 
+    // parsed: offset 572, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 236 (0x0000ec)
+        06 00 00 00 01 00 00 00 EC 00 00 00 
+    // parsed: offset 584, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 268 (0x00010c)
+        01 20 00 00 02 00 00 00 0C 01 00 00 
+    // parsed: offset 596, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 2
+    //      offset: 320 (0x000140)
+        01 10 00 00 02 00 00 00 40 01 00 00 
+    // parsed: offset 608, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 336 (0x000150)
+        02 20 00 00 0A 00 00 00 50 01 00 00 
+    // parsed: offset 620, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 492 (0x0001ec)
+        00 20 00 00 01 00 00 00 EC 01 00 00 
+    // parsed: offset 632, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 508 (0x0001fc)
+        00 10 00 00 01 00 00 00 FC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_9.d b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_9.d
new file mode 100644
index 0000000..393f733
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_invoke_virtual_range_9.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual/range {v7..v8}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/iput/TestStubs.java
new file mode 100644
index 0000000..8ebe9bc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput;
+
+public class TestStubs {
+    // used by testVFE9
+    protected int TestStubField = 0;
+    
+    // used by testE5
+    public final int TestStubFieldFinal = 0;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/Test_iput.java b/tools/vm-tests/src/dot/junit/opcodes/iput/Test_iput.java
new file mode 100644
index 0000000..7a83f26
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/Test_iput.java
@@ -0,0 +1,347 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput.d.T_iput_1;
+import dot.junit.opcodes.iput.d.T_iput_11;
+import dot.junit.opcodes.iput.d.T_iput_12;
+import dot.junit.opcodes.iput.d.T_iput_13;
+import dot.junit.opcodes.iput.d.T_iput_14;
+import dot.junit.opcodes.iput.d.T_iput_19;
+import dot.junit.opcodes.iput.d.T_iput_5;
+
+public class Test_iput extends DxTestCase {
+
+    /**
+     * @title type - int
+     */
+    public void testN1() {
+        T_iput_1 t = new T_iput_1();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(1000000, t.st_i1);
+    }
+
+    /**
+     * @title type - float
+     */
+    public void testN2() {
+        T_iput_19 t = new T_iput_19();
+        assertEquals(0.0f, t.st_f1);
+        t.run();
+        assertEquals(3.14f, t.st_f1);
+    }
+
+ 
+    /**
+     * @title modification of final field
+     */
+    public void testN3() {
+        T_iput_12 t = new T_iput_12();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(1000000, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput.d.T_iput_1
+        //@uses dot.junit.opcodes.iput.d.T_iput_14
+        T_iput_14 t = new T_iput_14();
+        assertEquals(0, t.getProtectedField());
+        t.run();
+        assertEquals(1000000, t.getProtectedField());
+    }
+
+    /**
+     * @title Trying to put float into integer field. Dalvik doens't distinguish 32-bits types 
+     * internally, so this operation makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_iput_5 t = new  T_iput_5();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_13 t = new T_iput_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * 
+     * @constraint B14 
+     * @title put integer into long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B14 
+     * @title type of field doesn't match opcode - attempt to modify double field 
+     * with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A11 
+     * @title Attempt to set static field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE8() {
+         try {
+             Class.forName("dot.junit.opcodes.iput.d.T_iput_7");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput.TestStubs
+        //@uses dot.junit.opcodes.iput.d.T_iput_8
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput.d.T_iput_1
+        //@uses dot.junit.opcodes.iput.d.T_iput_15
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint B1 
+     * @title iput shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput shall not work for boolean fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput shall not work for byte fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testE5() {
+        //@uses dot.junit.opcodes.iput.TestStubs
+        //@uses dot.junit.opcodes.iput.d.T_iput_11
+    	try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_1.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_1.d
new file mode 100644
index 0000000..062a5f8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_1.java
+.class public dot.junit.opcodes.iput.d.T_iput_1
+.super java/lang/Object
+
+.field public  st_i1 I
+.field protected  st_p1 I
+.field private  st_pvt1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()I
+.limit regs 2
+
+       iget v0, v1, dot.junit.opcodes.iput.d.T_iput_1.st_pvt1 I
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_1.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_1.java b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_1.java
new file mode 100644
index 0000000..b508414
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_1 {
+    public  int st_i1;
+    protected  int st_p1;
+    private  int st_pvt1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+    
+    public  int getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_10.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_10.d
new file mode 100644
index 0000000..782486a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_10.java
+.class public dot.junit.opcodes.iput.d.T_iput_10
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_10.st_i1N I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_11.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_11.d
new file mode 100644
index 0000000..9fb06de
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_11.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_11.java
+.class public dot.junit.opcodes.iput.d.T_iput_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput/TestStubs/<init>()V
+
+       const v1, 1000000
+       iput v1, v0, dot.junit.opcodes.iput.TestStubs.TestStubFieldFinal I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_11.java b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_11.java
new file mode 100644
index 0000000..9c47bd5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_12.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_12.d
new file mode 100644
index 0000000..73104b6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_12.java
+.class public dot.junit.opcodes.iput.d.T_iput_12
+.super java/lang/Object
+
+.field public final st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_12.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_12.java b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_12.java
new file mode 100644
index 0000000..4fbe9c2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_12 {
+    public  int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_13.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_13.d
new file mode 100644
index 0000000..3760a4f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_13.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_13.java
+.class public dot.junit.opcodes.iput.d.T_iput_13
+.super java/lang/Object
+
+.field public  st_i1 I
+.field protected  st_p1 I
+.field private  st_pvt1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       const v1, 1000000
+       iput v1, v0, dot.junit.opcodes.iput.d.T_iput_13.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_13.java b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_13.java
new file mode 100644
index 0000000..53423f9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_13 {
+    
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_14.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_14.d
new file mode 100644
index 0000000..ba404d6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_14.java
+.class public dot.junit.opcodes.iput.d.T_iput_14
+.super dot/junit/opcodes/iput/d/T_iput_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput/d/T_iput_1/<init>()V
+       return-void
+.end method
+
+.method public getProtectedField()I
+.limit regs 2
+
+       iget v0, v1, dot.junit.opcodes.iput.d.T_iput_1.st_p1 I
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_1.st_p1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_14.java b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_14.java
new file mode 100644
index 0000000..7d7e102
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_14 extends T_iput_1{
+    
+    public void run() {
+        st_p1 = 1000000;
+    }
+    
+    public  int getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_15.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_15.d
new file mode 100644
index 0000000..8864195
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_15.java
+.class public dot.junit.opcodes.iput.d.T_iput_15
+.super dot/junit/opcodes/iput/d/T_iput_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput/d/T_iput_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 12321
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_1.st_pvt1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_17.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_17.d
new file mode 100644
index 0000000..e0b35ef
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_17.java
+.class public dot.junit.opcodes.iput.d.T_iput_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_17.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_18.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_18.d
new file mode 100644
index 0000000..1ec565d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_18.java
+.class public dot.junit.opcodes.iput.d.T_iput_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_19.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_19.d
new file mode 100644
index 0000000..f7f8997
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_19.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_19.java
+.class public dot.junit.opcodes.iput.d.T_iput_19
+.super java/lang/Object
+
+.field public  st_f1 F
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_19.st_f1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_19.java b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_19.java
new file mode 100644
index 0000000..bf6deee
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_19.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_19 {
+    public  float st_f1;
+    
+    
+    public void run() {
+        st_f1 = 3.14f;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_2.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_2.d
new file mode 100644
index 0000000..a89c29d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_2.java
+.class public dot.junit.opcodes.iput.d.T_iput_2
+.super java/lang/Object
+
+.field public  st_d1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const-wide v1, 1000000.000000
+       iput v1, v3, dot.junit.opcodes.iput.d.T_iput_2.st_d1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_20.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_20.d
new file mode 100644
index 0000000..0161449
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_20.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_20.java
+.class public dot.junit.opcodes.iput.d.T_iput_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 0
+       iput v0, v3, dot.junit.opcodes.iput.d.T_iput_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_21.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_21.d
new file mode 100644
index 0000000..f189066
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_21.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_21.java
+.class public dot.junit.opcodes.iput.d.T_iput_21
+.super java/lang/Object
+
+.field public  st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1234    
+       iput v0, v3, dot.junit.opcodes.iput.d.T_iput_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_22.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_22.d
new file mode 100644
index 0000000..71b8cdf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_22.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_22.java
+.class public dot.junit.opcodes.iput.d.T_iput_22
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput v0, v3, dot.junit.opcodes.iput.d.T_iput_22.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_23.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_23.d
new file mode 100644
index 0000000..e0bf2a0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_23.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_23.java
+.class public dot.junit.opcodes.iput.d.T_iput_23
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput v0, v3, dot.junit.opcodes.iput.d.T_iput_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_24.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_24.d
new file mode 100644
index 0000000..4e6d187
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_24.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_24.java
+.class public dot.junit.opcodes.iput.d.T_iput_24
+.super java/lang/Object
+
+.field public  st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput v0, v3, dot.junit.opcodes.iput.d.T_iput_24.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_3.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_3.d
new file mode 100644
index 0000000..bdb6b35
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_3.java
+.class public dot.junit.opcodes.iput.d.T_iput_3
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1234
+       iput v0, v2, dot.junit.opcodes.iput.d.T_iput_3.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_3.dfh
new file mode 100644
index 0000000..0474f19
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput/d/T_iput_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput/d/T_iput_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 3bce3c78
+    78 3C CE 3B 
+// parsed: offset 12, len 20: signature           : 15da...0f9b
+    15 DA 79 0D 61 BF 5F C9 34 71 F7 04 83 3D 02 17 E9 5E 0F 9B 
+// parsed: offset 32, len 4: file_size           : 540
+    1C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 404 (0x000194)
+    94 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 304
+    30 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "I"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/iput/d/T_iput_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 336 (0x000150) "Ljava/lang/Object;"
+    50 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 356 (0x000164) "T_iput_3.java"
+    64 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 371 (0x000173) "V"
+    73 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 374 (0x000176) "run"
+    76 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 379 (0x00017b) "st_i1"
+    7B 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iput/d/T_iput_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iput/d/T_iput_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iput_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 386 (0x000182)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 82 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput.d.T_iput_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput.d.T_iput_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x000004d2 int
+            14 00 D2 04 00 00 
+        // parsed: offset 282, len 4: |0003: iput v0, v2, Ldot/junit/opcodes/iput/d/T_iput_3;.st_i1:I // field@0000
+//@mod            59 20 00 00 
+            59 20 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 299, len 37: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iput/d/T_iput_3;"
+    23 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 2F 64 2F 54 5F 69 70 75 74 5F 33 3B 00 
+// parsed: offset 336, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 356, len 15: TYPE_STRING_DATA_ITEM [4] "T_iput_3.java"
+    0D 54 5F 69 70 75 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 371, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 374, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 379, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput/d/T_iput_3;"
+    // parsed: offset 386, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 387, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 388, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 389, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 390, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 391, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 392, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 393, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 396, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 398, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 399, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 400, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 402, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 404, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 408, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 420, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 432, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 444, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 456, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 468, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 480, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 492, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 504, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 516, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 386 (0x000182)
+        00 20 00 00 01 00 00 00 82 01 00 00 
+    // parsed: offset 528, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 404 (0x000194)
+        00 10 00 00 01 00 00 00 94 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_30.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_30.d
new file mode 100644
index 0000000..08df316
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_30.java
+.class public dot.junit.opcodes.iput.d.T_iput_30
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput/d/T_iput_30
+    const v1, 0
+    iput v1, v0, dot.junit.opcodes.iput.d.T_iput_30.st_i1 I
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_4.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_4.d
new file mode 100644
index 0000000..f324be4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_4.java
+.class public dot.junit.opcodes.iput.d.T_iput_4
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput v3, v2, dot.junit.opcodes.iput.d.T_iput_4.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_5.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_5.d
new file mode 100644
index 0000000..c34dbac
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_5.java
+.class public dot.junit.opcodes.iput.d.T_iput_5
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)V
+.limit regs 3
+
+       iput v2, v1, dot.junit.opcodes.iput.d.T_iput_5.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_5.java b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_5.java
new file mode 100644
index 0000000..6df6a7f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput.d;
+
+public class T_iput_5 {
+    public  int st_i1;
+    
+    public void run(float f) {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_7.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_7.d
new file mode 100644
index 0000000..af7b003
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_7.java
+.class public dot.junit.opcodes.iput.d.T_iput_7
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_7.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_8.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_8.d
new file mode 100644
index 0000000..6c1ed20
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_8.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_8.java
+.class public dot.junit.opcodes.iput.d.T_iput_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+      new-instance v0, Ldot/junit/opcodes/iput/TestStubs;
+      invoke-direct {v0}, dot/junit/opcodes/iput/TestStubs/<init>()V
+
+       const v1, 0
+       iput v1, v0, dot.junit.opcodes.iput.TestStubs.TestStubField I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_9.d b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_9.d
new file mode 100644
index 0000000..7c7d755
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_iput_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_9.java
+.class public dot.junit.opcodes.iput.d.T_iput_9
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_9noclass.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_sput_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_sput_3.dfh
new file mode 100644
index 0000000..f7d95ea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput/d/T_sput_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput/d/T_sput_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput/d/T_sput_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 07553f66
+    66 3F 55 07 
+// parsed: offset 12, len 20: signature           : 2441...71d9
+    24 41 F7 4C E7 A3 98 B5 AC 67 0E F8 6B D1 13 E3 DD 10 71 D9 
+// parsed: offset 32, len 4: file_size           : 540
+    1C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 404 (0x000194)
+    94 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 304
+    30 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "I"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 336 (0x000150) "Ljava/lang/Object;"
+    50 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 356 (0x000164) "T_sput_3.java"
+    64 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 371 (0x000173) "V"
+    73 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 374 (0x000176) "run"
+    76 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 379 (0x00017b) "st_i1"
+    7B 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sput/d/T_sput_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 386 (0x000182)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 82 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput.d.T_sput_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput.d.T_sput_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x000004d2 int
+            14 00 D2 04 00 00 
+        // parsed: offset 282, len 4: |0003: sput v0, Ldot/junit/opcodes/sput/d/T_sput_3;.st_i1:I // field@0000
+//@mod            67 00 00 00 
+            67 00 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 299, len 37: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    23 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 2F 64 2F 54 5F 73 70 75 74 5F 33 3B 00 
+// parsed: offset 336, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 356, len 15: TYPE_STRING_DATA_ITEM [4] "T_sput_3.java"
+    0D 54 5F 73 70 75 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 371, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 374, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 379, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    // parsed: offset 386, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 387, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 388, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 389, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 390, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 391, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 392, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 393, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 396, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 398, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 399, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 400, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 402, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 404, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 408, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 420, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 432, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 444, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 456, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 468, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 480, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 492, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 504, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 516, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 386 (0x000182)
+        00 20 00 00 01 00 00 00 82 01 00 00 
+    // parsed: offset 528, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 404 (0x000194)
+        00 10 00 00 01 00 00 00 94 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/TestStubs.java
new file mode 100644
index 0000000..07919e1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean;
+
+public class TestStubs {
+    // used by testVFE9
+    protected boolean TestStubField = false;
+    
+    // used by testE5
+    public final boolean TestStubFieldFinal = false;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/Test_iput_boolean.java b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/Test_iput_boolean.java
new file mode 100644
index 0000000..cb51be8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/Test_iput_boolean.java
@@ -0,0 +1,335 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_11;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_12;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_13;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_14;
+
+
+public class Test_iput_boolean extends DxTestCase {
+
+    /**
+     * @title put boolean into field 
+     */
+    public void testN1() {
+        T_iput_boolean_1 t = new T_iput_boolean_1();
+        assertEquals(false, t.st_i1);
+        t.run();
+        assertEquals(true, t.st_i1);
+    }
+
+ 
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_iput_boolean_12 t = new T_iput_boolean_12();
+        assertEquals(false, t.st_i1);
+        t.run();
+        assertEquals(true, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_14
+        T_iput_boolean_14 t = new T_iput_boolean_14();
+        assertEquals(false, t.getProtectedField());
+        t.run();
+        assertEquals(true, t.getProtectedField());
+    }
+    
+   
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_boolean_13 t = new T_iput_boolean_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B14 
+     * @title put boolean into long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B14
+     * @title put value '2' into boolean field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify double 
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A11 
+     * @title Attempt to set static field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE8() {
+         try {
+             Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_7");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_boolean.TestStubs
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_8
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_15
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint B1 
+     * @title iput_boolean shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput_boolean shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput_boolean shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput_boolean shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iput_boolean shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iput_boolean shall not work for byte fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.iput_boolean.TestStubs
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_11
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.d
new file mode 100644
index 0000000..47ee9dc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_1.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1
+.super java/lang/Object
+
+.field public  st_i1 Z
+.field protected  st_p1 Z
+.field private  st_pvt1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()Z
+.limit regs 2
+
+       iget-boolean v0, v1, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1.st_pvt1 Z
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1.st_i1 Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.java b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.java
new file mode 100644
index 0000000..14d2b98
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_1 {
+    public  boolean st_i1;
+    protected  boolean st_p1;
+    private  boolean st_pvt1;
+    
+    public void run() {
+        st_i1 = true;
+    }
+    
+    public  boolean getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.d
new file mode 100644
index 0000000..77f762a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_10.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_10
+.super java/lang/Object
+
+.field public st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_10.st_i1N Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.d
new file mode 100644
index 0000000..9f8d148
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_11.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_boolean/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_boolean/TestStubs/<init>()V
+
+       const v1, 1
+       iput-boolean v1, v0, dot.junit.opcodes.iput_boolean.TestStubs.TestStubFieldFinal Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.java b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.java
new file mode 100644
index 0000000..77de3e5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.d
new file mode 100644
index 0000000..327fef6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_12.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_12
+.super java/lang/Object
+
+.field public  final st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_12.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.java b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.java
new file mode 100644
index 0000000..4321bfb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_12 {
+    public  boolean st_i1;
+    
+    public void run() {
+        st_i1 = true;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.d
new file mode 100644
index 0000000..cbe6560
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_13.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_13
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       const v1, 1
+       iput-boolean v1, v0, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_13.st_i1 Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.java b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.java
new file mode 100644
index 0000000..c523c5d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_13 {
+    
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.d
new file mode 100644
index 0000000..8a7f23e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_14.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_14
+.super dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()Z
+.limit regs 2
+
+       iget-boolean v0, v1, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1.st_p1 Z
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1.st_p1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.java b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.java
new file mode 100644
index 0000000..e708762
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_14 extends T_iput_boolean_1{
+    
+    public void run() {
+        st_p1 = true;
+    }
+    
+    public  boolean getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.d
new file mode 100644
index 0000000..605fab5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_15.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_15
+.super dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1.st_pvt1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.d
new file mode 100644
index 0000000..2d0e858
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_17.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_17.st_i1 Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_18.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_18.d
new file mode 100644
index 0000000..5ca6791
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_18.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.d
new file mode 100644
index 0000000..aed12db
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_19.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_19
+.super java/lang/Object
+
+.field public  st_f1 F
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_19.st_f1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.java b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.java
new file mode 100644
index 0000000..3828d90
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_19 {
+    public  float st_f1;
+    
+    
+    public void run() {
+        st_f1 = 3.14f;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_2.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_2.d
new file mode 100644
index 0000000..20ba2cf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_2.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_2
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-boolean v0, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_4.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_20.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_20.d
new file mode 100644
index 0000000..b7bb68c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_20.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_20.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 0    
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_21.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_21.d
new file mode 100644
index 0000000..a05e7d9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_21.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_21.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_21
+.super java/lang/Object
+
+.field public  st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_22.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_22.d
new file mode 100644
index 0000000..5953110
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_22.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_22.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_22
+.super java/lang/Object
+
+.field public  st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_23.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_23.d
new file mode 100644
index 0000000..3d51bf4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_23.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_23.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_23
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_24.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_24.d
new file mode 100644
index 0000000..ccd56a1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_24.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_24.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_24
+.super java/lang/Object
+
+.field public  st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_24.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.d
new file mode 100644
index 0000000..864852f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_3.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_3
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_3.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.dfh
new file mode 100644
index 0000000..971a7eb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 77b34b2d
+    2D 4B B3 77 
+// parsed: offset 12, len 20: signature           : 6ffc...5670
+    6F FC D3 2C 6D F3 E5 94 FA 99 F9 FC 05 BD 3A 88 8C CD 56 70 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 328
+    48 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 349 (0x00015d) "Ljava/lang/Object;"
+    5D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 369 (0x000171) "T_iput_boolean_3.java"
+    71 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 392 (0x000188) "V"
+    88 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "Z"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "run"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "st_i1"
+    93 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  type_idx: 3 (0x000003) name_idx: 7 (0x000007) "st_i1"
+    00 00 03 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    00 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_iput_boolean_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_boolean.d.T_iput_boolean_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_boolean.d.T_iput_boolean_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: iput-boolean v0, v3, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;.st_i1:Z // field@0000
+//@mod            5C 30 00 00 
+            5C 30 00 01
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 53: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 62 6F 6F 6C 65 61 6E 2F 64 2F 54 5F 69 70 75 74 5F 62 6F 6F 6C 65 61 6E 5F 33 3B 00 
+// parsed: offset 349, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 369, len 23: TYPE_STRING_DATA_ITEM [3] "T_iput_boolean_3.java"
+    15 54 5F 69 70 75 74 5F 62 6F 6F 6C 65 61 6E 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 392, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 398, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 403, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 414, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 415, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30.d
new file mode 100644
index 0000000..f68e154
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_30.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_30
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30
+    const v1, 0
+    iput-boolean v1, v0, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_30.st_i1 Z
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_4.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_4.d
new file mode 100644
index 0000000..5b0d440
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_4.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_4
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-boolean v3, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_4.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_6.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_6.d
new file mode 100644
index 0000000..29230ed
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_6.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_6
+.super java/lang/Object
+
+.field public  s Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const v2, 2    
+       iput-boolean v2, v5, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_6.s Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.d
new file mode 100644
index 0000000..1c26b25
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_7.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_7
+.super java/lang/Object
+
+.field public static st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_7.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.d
new file mode 100644
index 0000000..8d69496
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_8.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput/TestStubs/<init>()V
+       const v1, 0
+       iput-boolean v1, v0, dot.junit.opcodes.iput_boolean.TestStubs.TestStubField Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.d b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.d
new file mode 100644
index 0000000..b740349
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_boolean_9.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_9
+.super java/lang/Object
+
+.field public st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_9noclass.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/TestStubs.java
new file mode 100644
index 0000000..c8906b4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte;
+
+public class TestStubs {
+    // used by testVFE9
+    protected byte TestStubField = 77;
+    
+    // used by testE5
+    public final byte TestStubFieldFinal = 77;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/Test_iput_byte.java b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/Test_iput_byte.java
new file mode 100644
index 0000000..9fb87f5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/Test_iput_byte.java
@@ -0,0 +1,336 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_1;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_11;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_12;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_13;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_14;
+
+public class Test_iput_byte extends DxTestCase {
+    /**
+     * @title put byte into field
+     */
+    public void testN1() {
+        T_iput_byte_1 t = new T_iput_byte_1();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+ 
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_iput_byte_12 t = new T_iput_byte_12();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_1
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_14
+        T_iput_byte_14 t = new T_iput_byte_14();
+        assertEquals(0, t.getProtectedField());
+        t.run();
+        assertEquals(77, t.getProtectedField());
+    }
+    
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_byte_13 t = new T_iput_byte_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * 
+     * @constraint B14 
+     * @title put byte into long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B14 
+     * @title put value '256' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B14 
+     * @title type of field doesn't match opcode - attempt to modify double 
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A11 
+     * @title Attempt to set static field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE8() {
+         try {
+             Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_7");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_byte.TestStubs
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_8
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_1
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_15
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint B1 
+     * @title iput-byte shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-byte shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-byte shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-byte shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-byte shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-byte shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.iput_byte.TestStubs
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_11
+    	try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.d
new file mode 100644
index 0000000..860157b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_1.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_1
+.super java/lang/Object
+
+.field public  st_i1 B
+.field protected  st_p1 B
+.field private  st_pvt1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()B
+.limit regs 2
+
+       iget-byte v0, v1, dot.junit.opcodes.iput_byte.d.T_iput_byte_1.st_pvt1 B
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_1.st_i1 B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.java b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.java
new file mode 100644
index 0000000..d926c18
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_1 {
+    public  byte st_i1;
+    protected  byte st_p1;
+    private  byte st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public  byte getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.d
new file mode 100644
index 0000000..279b2a2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_10.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_10
+.super java/lang/Object
+
+.field public st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_10.st_i1N B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.d
new file mode 100644
index 0000000..9c80461
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_11.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_byte/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_byte/TestStubs/<init>()V
+
+       const v1, 1
+       iput-byte v1, v0, dot.junit.opcodes.iput_byte.TestStubs.TestStubFieldFinal B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.java b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.java
new file mode 100644
index 0000000..a77d3c3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.d
new file mode 100644
index 0000000..ee0355b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_12.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_12
+.super java/lang/Object
+
+.field public  final st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_12.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.java b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.java
new file mode 100644
index 0000000..c64063c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_12 {
+    public  byte st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.d
new file mode 100644
index 0000000..26cd104
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_13.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_13
+.super java/lang/Object
+
+.field public  st_i1 B
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       const v1, 77
+       iput-byte v1, v0, dot.junit.opcodes.iput_byte.d.T_iput_byte_13.st_i1 B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.java b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.java
new file mode 100644
index 0000000..e907164
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_13 {
+    
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.d
new file mode 100644
index 0000000..9be11ea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_14.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_14
+.super dot/junit/opcodes/iput_byte/d/T_iput_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_byte/d/T_iput_byte_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()B
+.limit regs 2
+
+       iget-byte v0, v1, dot.junit.opcodes.iput_byte.d.T_iput_byte_1.st_p1 B
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_1.st_p1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.java b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.java
new file mode 100644
index 0000000..e1bcc4b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_14 extends T_iput_byte_1{
+    
+    public void run() {
+        st_p1 = 77;
+    }
+    
+    public byte getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.d
new file mode 100644
index 0000000..2f14e14
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_15.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_15
+.super dot/junit/opcodes/iput_byte/d/T_iput_byte_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_byte/d/T_iput_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_1.st_pvt1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.d
new file mode 100644
index 0000000..1f8bd94
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_17.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_17.st_i1 B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_18.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_18.d
new file mode 100644
index 0000000..153aae1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_18.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_2.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_2.d
new file mode 100644
index 0000000..3805c5f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_2.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_2
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-byte v0, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_4.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_20.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_20.d
new file mode 100644
index 0000000..2452e5e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_20.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-byte v3, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.d
new file mode 100644
index 0000000..9f8bd0f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_21.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_21
+.super java/lang/Object
+
+.field public  st_s I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       iput-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_21.st_s I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.d
new file mode 100644
index 0000000..e0a19be
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_22.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_22
+.super java/lang/Object
+
+.field public  st_b I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_22.st_b I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_23.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_23.d
new file mode 100644
index 0000000..afae162
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_23.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_23
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_24.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_24.d
new file mode 100644
index 0000000..ac31166
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_24.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_24
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.d
new file mode 100644
index 0000000..c3a8828
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_3.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_3
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       iput-byte v0, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_3.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.dfh
new file mode 100644
index 0000000..74792e5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 6e4345b3
+    B3 45 43 6E 
+// parsed: offset 12, len 20: signature           : febf...8438
+    FE BF FB D0 A8 35 97 52 FC 71 45 C2 D3 90 2B F7 03 4D 84 38 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "B"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 346 (0x00015a) "Ljava/lang/Object;"
+    5A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 366 (0x00016e) "T_iput_byte_3.java"
+    6E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 386 (0x000182) "V"
+    82 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "run"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 394 (0x00018a) "st_i1"
+    8A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "B"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iput_byte_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 401 (0x000191)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 91 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_byte.d.T_iput_byte_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_byte.d.T_iput_byte_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: iput-byte v0, v2, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;.st_i1:B // field@0000
+//@mod            5D 20 00 00 
+            5D 20 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "B"
+    01 42 00 
+// parsed: offset 299, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 62 79 74 65 2F 64 2F 54 5F 69 70 75 74 5F 62 79 74 65 5F 33 3B 00 
+// parsed: offset 346, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [4] "T_iput_byte_3.java"
+    12 54 5F 69 70 75 74 5F 62 79 74 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 386, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 389, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 394, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;"
+    // parsed: offset 401, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 402, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 403, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 404, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 405, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 406, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 408, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 411, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 413, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 414, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 415, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 417, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 401 (0x000191)
+        00 20 00 00 01 00 00 00 91 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_30.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_30.d
new file mode 100644
index 0000000..b29c0e0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_30.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_30
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_byte/d/T_iput_byte_30
+    const v1, 0
+    iput-byte v1, v0, dot.junit.opcodes.iput_byte.d.T_iput_byte_30.st_i1 B
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_4.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_4.d
new file mode 100644
index 0000000..18a254f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_4.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_4
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-byte v3, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_4.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_6.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_6.d
new file mode 100644
index 0000000..d349e8e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_6.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_6
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 256
+       iput-byte v0, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_6.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.d
new file mode 100644
index 0000000..4ac5aa9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_7.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_7
+.super java/lang/Object
+
+.field public static st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_7.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.d
new file mode 100644
index 0000000..34b537c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_8.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_byte/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_byte/TestStubs/<init>()V
+
+       const v1, 0
+       iput-byte v1, v0, dot.junit.opcodes.iput_byte.TestStubs.TestStubField B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.d b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.d
new file mode 100644
index 0000000..338b321
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_byte_9.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_9
+.super java/lang/Object
+
+.field public st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_9noclass.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/iput_char/TestStubs.java
new file mode 100644
index 0000000..a0d947f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char;
+
+public class TestStubs {
+    // used by testVFE9
+    protected char TestStubField = 77;
+    
+    // used by testE5
+    public final char TestStubFieldFinal = 77;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/Test_iput_char.java b/tools/vm-tests/src/dot/junit/opcodes/iput_char/Test_iput_char.java
new file mode 100644
index 0000000..7674c21
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/Test_iput_char.java
@@ -0,0 +1,339 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_char.d.T_iput_char_1;
+import dot.junit.opcodes.iput_char.d.T_iput_char_11;
+import dot.junit.opcodes.iput_char.d.T_iput_char_12;
+import dot.junit.opcodes.iput_char.d.T_iput_char_13;
+import dot.junit.opcodes.iput_char.d.T_iput_char_14;
+
+public class Test_iput_char extends DxTestCase {
+    /**
+     * @title put char into field
+     */
+    public void testN1() {
+        T_iput_char_1 t = new T_iput_char_1();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+ 
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_iput_char_12 t = new T_iput_char_12();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_1
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_14
+        T_iput_char_14 t = new T_iput_char_14();
+        assertEquals(0, t.getProtectedField());
+        t.run();
+        assertEquals(77, t.getProtectedField());
+    }
+    
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_char_13 t = new T_iput_char_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+    
+  
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * 
+     * @constraint B14 
+     * @title put char into long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B14 
+     * @title put value '66000' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B14 
+     * @title type of field doesn't match opcode - attempt to modify double 
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A11 
+     * @title Attempt to set static field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE8() {
+         try {
+             Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_7");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_char.TestStubs
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_8
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_1
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_15
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint B1 
+     * @title iput-char shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-char shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-char shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-char shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-char shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-char shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.iput_char.TestStubs
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_11
+    	try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.d
new file mode 100644
index 0000000..1872727
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_1.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_1
+.super java/lang/Object
+
+.field public  st_i1 C
+.field protected  st_p1 C
+.field private  st_pvt1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()C
+.limit regs 2
+
+       iget-char v0, v1, dot.junit.opcodes.iput_char.d.T_iput_char_1.st_pvt1 C
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_1.st_i1 C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.java b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.java
new file mode 100644
index 0000000..a2a83cd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_1 {
+    public  char st_i1;
+    protected  char st_p1;
+    private  char st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public  char getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.d
new file mode 100644
index 0000000..466cad9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_10.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_10
+.super java/lang/Object
+
+.field public st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_10.st_i1N C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.d
new file mode 100644
index 0000000..cd32504
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_11.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_char/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_char/TestStubs/<init>()V
+
+       const v1, 1
+       iput-char v1, v0, dot.junit.opcodes.iput_char.TestStubs.TestStubFieldFinal C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.java b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.java
new file mode 100644
index 0000000..629d319
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.d
new file mode 100644
index 0000000..9aeb2cc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_12.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_12
+.super java/lang/Object
+
+.field public  final st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_12.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.java b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.java
new file mode 100644
index 0000000..b20146a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_12 {
+    public  char st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.d
new file mode 100644
index 0000000..9cbce64
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_13.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_13
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       const v1, 77
+       iput-char v1, v0, dot.junit.opcodes.iput_char.d.T_iput_char_13.st_i1 C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.java b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.java
new file mode 100644
index 0000000..5f15efc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_13 {
+    
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.d
new file mode 100644
index 0000000..71dca61
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_14.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_14
+.super dot/junit/opcodes/iput_char/d/T_iput_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_char/d/T_iput_char_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()C
+.limit regs 2
+
+       iget-char v0, v1, dot.junit.opcodes.iput_char.d.T_iput_char_1.st_p1 C
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_1.st_p1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.java b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.java
new file mode 100644
index 0000000..a55800a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_14 extends T_iput_char_1{
+    
+    public void run() {
+        st_p1 = 77;
+    }
+    
+    public  char getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.d
new file mode 100644
index 0000000..4cccb49
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_15.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_15
+.super dot/junit/opcodes/iput_char/d/T_iput_char_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_char/d/T_iput_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_1.st_pvt1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.d
new file mode 100644
index 0000000..61e503d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_17.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_17.st_i1 C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_18.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_18.d
new file mode 100644
index 0000000..a9d9ac9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_18.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_2.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_2.d
new file mode 100644
index 0000000..cc8cd62
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_2.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_2
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-char v0, v2, dot.junit.opcodes.iput_char.d.T_iput_char_4.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_20.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_20.d
new file mode 100644
index 0000000..5aa31b2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_20.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-char v3, v3, dot.junit.opcodes.iput_char.d.T_iput_char_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_21.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_21.d
new file mode 100644
index 0000000..b9f7cc6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_21.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_21
+.super java/lang/Object
+
+.field public  st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       iput-char v0, v3, dot.junit.opcodes.iput_char.d.T_iput_char_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_22.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_22.d
new file mode 100644
index 0000000..ca94dbd5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_22.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_22
+.super java/lang/Object
+
+.field public  st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-char v0, v3, dot.junit.opcodes.iput_char.d.T_iput_char_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_23.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_23.d
new file mode 100644
index 0000000..3494a90
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_23.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_23
+.super java/lang/Object
+
+.field public  st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-char v0, v3, dot.junit.opcodes.iput_char.d.T_iput_char_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_24.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_24.d
new file mode 100644
index 0000000..d148a4b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_24.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_24
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-char v0, v3, dot.junit.opcodes.iput_char.d.T_iput_char_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.d
new file mode 100644
index 0000000..05233a1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_3.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_3
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       iput-char v0, v2, dot.junit.opcodes.iput_char.d.T_iput_char_3.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.dfh
new file mode 100644
index 0000000..95d1306
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_char/d/T_iput_char_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_char/d/T_iput_char_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : bfb944c4
+    C4 44 B9 BF 
+// parsed: offset 12, len 20: signature           : 661f...6c76
+    66 1F 6A C5 E6 6E 82 B7 E8 AC B8 D2 AC 01 D4 58 34 56 6C 76 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "C"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/iput_char/d/T_iput_char_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 346 (0x00015a) "Ljava/lang/Object;"
+    5A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 366 (0x00016e) "T_iput_char_3.java"
+    6E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 386 (0x000182) "V"
+    82 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "run"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 394 (0x00018a) "st_i1"
+    8A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "C"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iput_char/d/T_iput_char_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iput_char/d/T_iput_char_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iput_char_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 401 (0x000191)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 91 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_char.d.T_iput_char_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_char.d.T_iput_char_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: iput-char v0, v2, Ldot/junit/opcodes/iput_char/d/T_iput_char_3;.st_i1:C // field@0000
+//@mod            5E 20 00 00 
+            5E 20 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "C"
+    01 43 00 
+// parsed: offset 299, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iput_char/d/T_iput_char_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 63 68 61 72 2F 64 2F 54 5F 69 70 75 74 5F 63 68 61 72 5F 33 3B 00 
+// parsed: offset 346, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [4] "T_iput_char_3.java"
+    12 54 5F 69 70 75 74 5F 63 68 61 72 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 386, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 389, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 394, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_char/d/T_iput_char_3;"
+    // parsed: offset 401, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 402, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 403, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 404, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 405, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 406, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 408, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 411, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 413, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 414, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 415, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 417, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 401 (0x000191)
+        00 20 00 00 01 00 00 00 91 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_30.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_30.d
new file mode 100644
index 0000000..8182241
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_30.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_30
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_char/d/T_iput_char_30
+    const v1, 0
+    iput-char v1, v0, dot.junit.opcodes.iput_char.d.T_iput_char_30.st_i1 C
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_4.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_4.d
new file mode 100644
index 0000000..6f78812
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_4.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_4
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-char v3, v2, dot.junit.opcodes.iput_char.d.T_iput_char_4.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_6.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_6.d
new file mode 100644
index 0000000..5614d676
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_6.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_6
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 66000
+       iput-char v0, v2, dot.junit.opcodes.iput_char.d.T_iput_char_6.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.d
new file mode 100644
index 0000000..13f4e50
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_7.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_7
+.super java/lang/Object
+
+.field public static st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_7.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.d
new file mode 100644
index 0000000..95616a6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_8.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_char/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_char/TestStubs/<init>()V
+
+       const v1, 0
+       iput-char v1, v0, dot.junit.opcodes.iput_char.TestStubs.TestStubField C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.d b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.d
new file mode 100644
index 0000000..d2efaae
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_char_9.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_9
+.super java/lang/Object
+
+.field public st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_9noclass.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/iput_object/TestStubs.java
new file mode 100644
index 0000000..d8354b2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object;
+
+public class TestStubs {
+    // used by testVFE9
+    protected Object TestStubField = null;
+    
+    // used by testE5
+    public final Object TestStubFieldFinal = null;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/Test_iput_object.java b/tools/vm-tests/src/dot/junit/opcodes/iput_object/Test_iput_object.java
new file mode 100644
index 0000000..d0dd8ad
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/Test_iput_object.java
@@ -0,0 +1,339 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_object.d.T_iput_object_1;
+import dot.junit.opcodes.iput_object.d.T_iput_object_11;
+import dot.junit.opcodes.iput_object.d.T_iput_object_12;
+import dot.junit.opcodes.iput_object.d.T_iput_object_13;
+import dot.junit.opcodes.iput_object.d.T_iput_object_14;
+
+public class Test_iput_object extends DxTestCase {
+    /**
+     * @title put reference into field
+     */
+    public void testN1() {
+        T_iput_object_1 t = new T_iput_object_1();
+        assertEquals(null, t.st_i1);
+        t.run();
+        assertEquals(t, t.st_i1);
+    }
+
+ 
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_iput_object_12 t = new T_iput_object_12();
+        assertEquals(null, t.st_i1);
+        t.run();
+        assertEquals(t, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_1
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_14
+        T_iput_object_14 t = new T_iput_object_14();
+        assertEquals(null, t.getProtectedField());
+        t.run();
+        assertEquals(t, t.getProtectedField());
+    }
+    
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_object_13 t = new T_iput_object_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+    
+  
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * 
+     * @constraint B14 
+     * @title put object into long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+    /**
+     * 
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify double 
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A11 
+     * @title Attempt to set non-static field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE8() {
+         try {
+             Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_7");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_object.TestStubs
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_8
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_1
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_15
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint B1 
+     * @title iput-object shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title assignment incompatible references
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-object shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-object shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-object shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-object shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-object shall not work for short fields
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.iput_object.TestStubs
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_11
+    	try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.d
new file mode 100644
index 0000000..6a9215e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_1.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_1
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+.field protected  st_p1 Ljava/lang/Object;
+.field private  st_pvt1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()Ljava/lang/Object;
+.limit regs 2
+
+       iget-object v0, v1, dot.junit.opcodes.iput_object.d.T_iput_object_1.st_pvt1 Ljava/lang/Object;
+       return-object v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_1.st_i1 Ljava/lang/Object;
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.java b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.java
new file mode 100644
index 0000000..fdedfda
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_1 {
+    public  Object st_i1;
+    protected  Object st_p1;
+    private  Object st_pvt1;
+    
+    public void run() {
+        st_i1 = this;
+    }
+    
+    public  Object getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.d
new file mode 100644
index 0000000..92f9cff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_10.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_10
+.super java/lang/Object
+
+.field public st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_10.st_i1N Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.d
new file mode 100644
index 0000000..f75accc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_11.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_object/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_object/TestStubs/<init>()V
+
+       iput-object v2, v0, dot.junit.opcodes.iput_object.TestStubs.TestStubFieldFinal Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.java b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.java
new file mode 100644
index 0000000..03c14d1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.d
new file mode 100644
index 0000000..69f1309
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_12.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_12
+.super java/lang/Object
+
+.field public  final st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_12.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.java b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.java
new file mode 100644
index 0000000..4a6da45
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_12 {
+    public  Object st_i1;
+    
+    public void run() {
+        st_i1 = this;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.d
new file mode 100644
index 0000000..f282745
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_13.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_13
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       iput-object v2, v0, dot.junit.opcodes.iput_object.d.T_iput_object_13.st_i1 Ljava/lang/Object;
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.java b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.java
new file mode 100644
index 0000000..334f14e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object.d;
+
+
+public class T_iput_object_13 {
+    
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.d
new file mode 100644
index 0000000..4e420fc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_14.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_14
+.super dot/junit/opcodes/iput_object/d/T_iput_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_object/d/T_iput_object_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()Ljava/lang/Object;
+.limit regs 2
+
+       iget-object v0, v1, dot.junit.opcodes.iput_object.d.T_iput_object_1.st_p1 Ljava/lang/Object;
+       return-object v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_1.st_p1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.java b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.java
new file mode 100644
index 0000000..2bc9c2a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_14 extends T_iput_object_1{
+    
+    public void run() {
+        st_p1 = this;
+    }
+    
+    public Object getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.d
new file mode 100644
index 0000000..35aeab9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_15.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_15
+.super dot/junit/opcodes/iput_object/d/T_iput_object_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_object/d/T_iput_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_1.st_pvt1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.d
new file mode 100644
index 0000000..71eb363
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_17.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_17.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_18.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_18.d
new file mode 100644
index 0000000..56d8da8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_18.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_18.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_2.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_2.d
new file mode 100644
index 0000000..805388f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_2.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_2
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1234    
+       iput-object v0, v2, dot.junit.opcodes.iput_object.d.T_iput_object_2.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_20.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_20.d
new file mode 100644
index 0000000..a9b90be
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_20.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/String;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-object v3, v3, dot.junit.opcodes.iput_object.d.T_iput_object_20.st_o Ljava/lang/String;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_21.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_21.d
new file mode 100644
index 0000000..19aa1cf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_21.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_21
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-object v3, v3, dot.junit.opcodes.iput_object.d.T_iput_object_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_22.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_22.d
new file mode 100644
index 0000000..8d7272e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_22.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_22
+.super java/lang/Object
+
+.field public  st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-object v3, v3, dot.junit.opcodes.iput_object.d.T_iput_object_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_23.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_23.d
new file mode 100644
index 0000000..296a14b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_23.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_23
+.super java/lang/Object
+
+.field public  st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-object v3, v3, dot.junit.opcodes.iput_object.d.T_iput_object_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_24.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_24.d
new file mode 100644
index 0000000..51bbb2d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_24.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_24
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-object v3, v3, dot.junit.opcodes.iput_object.d.T_iput_object_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.d
new file mode 100644
index 0000000..fa05a78
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_3.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_3
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+        iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_3.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.dfh
new file mode 100644
index 0000000..8a922e5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.dfh
@@ -0,0 +1,253 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_object/d/T_iput_object_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_object/d/T_iput_object_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : e2b84420
+    20 44 B8 E2 
+// parsed: offset 12, len 20: signature           : 498f...47af
+    49 8F 16 1B 5F D7 3D 35 18 CB F9 59 65 B7 A8 60 6A 19 47 AF 
+// parsed: offset 32, len 4: file_size           : 544
+    20 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 408 (0x000198)
+    98 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 7
+    07 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 140 (0x00008c)
+    8C 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 164 (0x0000a4)
+    A4 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 196 (0x0000c4)
+    C4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 228 (0x0000e4)
+    E4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 276 (0x000114) "<init>"
+    14 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 284 (0x00011c) "Ldot/junit/opcodes/iput_object/d/T_iput_object_3;"
+    1C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 335 (0x00014f) "Ljava/lang/Object;"
+    4F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 355 (0x000163) "T_iput_object_3.java"
+    63 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 377 (0x000179) "V"
+    79 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 380 (0x00017c) "run"
+    7C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 385 (0x000181) "st_i1"
+    81 01 00 00 
+
+// type_ids:
+// parsed: offset 140, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/iput_object/d/T_iput_object_3;"
+    01 00 00 00 
+// parsed: offset 144, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 152, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 164, len 8: [0] class_idx: 0 (0x000000)  type_idx: 1 (0x000001) name_idx: 6 (0x000006) "st_i1"
+    00 00 01 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 180, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 188, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 196, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iput_object/d/T_iput_object_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_iput_object_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 392 (0x000188)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 88 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_object.d.T_iput_object_3.<init>"
+    // parsed: offset 228, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 230, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 232, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 234, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 236, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 240, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 244, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 250, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_object.d.T_iput_object_3.run"
+    // parsed: offset 252, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 254, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 256, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 258, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 260, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 264, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 268, len 4: |0000: iput-object v2, v2, Ldot/junit/opcodes/iput_object/d/T_iput_object_3;.st_i1:Ljava/lang/Object; // field@0000
+//@mod            5B 22 00 00 
+            5B 22 00 01 
+        // parsed: offset 272, len 2: |0002: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 274, len 2: PADDING
+    00 00 
+// parsed: offset 276, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 284, len 51: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/iput_object/d/T_iput_object_3;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 6F 62 6A 65 63 74 2F 64 2F 54 5F 69 70 75 74 5F 6F 62 6A 65 63 74 5F 33 3B 00 
+// parsed: offset 335, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 355, len 22: TYPE_STRING_DATA_ITEM [3] "T_iput_object_3.java"
+    14 54 5F 69 70 75 74 5F 6F 62 6A 65 63 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 377, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 380, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// parsed: offset 385, len 7: TYPE_STRING_DATA_ITEM [6] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_object/d/T_iput_object_3;"
+    // parsed: offset 392, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 393, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 394, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 395, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 396, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 397, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 398, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 399, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 402, len 2: code_off: 228 (0x0000e4)
+                E4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 404, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 405, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 406, len 2: code_off: 252 (0x0000fc)
+                FC 01 
+// map_list:
+    // parsed: offset 408, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 412, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 424, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 7
+    //      offset: 112 (0x000070)
+        01 00 00 00 07 00 00 00 70 00 00 00 
+    // parsed: offset 436, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 140 (0x00008c)
+        02 00 00 00 03 00 00 00 8C 00 00 00 
+    // parsed: offset 448, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 152 (0x000098)
+        03 00 00 00 01 00 00 00 98 00 00 00 
+    // parsed: offset 460, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 164 (0x0000a4)
+        04 00 00 00 01 00 00 00 A4 00 00 00 
+    // parsed: offset 472, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 172 (0x0000ac)
+        05 00 00 00 03 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 196 (0x0000c4)
+        06 00 00 00 01 00 00 00 C4 00 00 00 
+    // parsed: offset 496, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 228 (0x0000e4)
+        01 20 00 00 02 00 00 00 E4 00 00 00 
+    // parsed: offset 508, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 7
+    //      offset: 276 (0x000114)
+        02 20 00 00 07 00 00 00 14 01 00 00 
+    // parsed: offset 520, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 392 (0x000188)
+        00 20 00 00 01 00 00 00 88 01 00 00 
+    // parsed: offset 532, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 10 00 00 01 00 00 00 98 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_30.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_30.d
new file mode 100644
index 0000000..ace5b2c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_30.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_30
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_object/d/T_iput_object_30
+    const v1, 0
+    iput-object v1, v0, dot.junit.opcodes.iput_object.d.T_iput_object_30.st_i1 Ljava/lang/Object;
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_4.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_4.d
new file mode 100644
index 0000000..8906abe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_4.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_4
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v3, v2, dot.junit.opcodes.iput_object.d.T_iput_object_4.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_6.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_6.d
new file mode 100644
index 0000000..5e9f811
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_6.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_6
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v3, v2, dot.junit.opcodes.iput_object.d.T_iput_object_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.d
new file mode 100644
index 0000000..25768ff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_7.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_7
+.super java/lang/Object
+
+.field public static st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_7.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.d
new file mode 100644
index 0000000..971dec4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_8.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_object/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_object/TestStubs/<init>()V
+
+       iput-object v2, v0, dot.junit.opcodes.iput_object.TestStubs.TestStubField Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.d b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.d
new file mode 100644
index 0000000..3fd712b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_object_9.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_9
+.super java/lang/Object
+
+.field public st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_9noclass.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/iput_short/TestStubs.java
new file mode 100644
index 0000000..8cee31e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short;
+
+public class TestStubs {
+    // used by testVFE9
+    protected short TestStubField = 77;
+    
+    // used by testE5
+    public final short TestStubFieldFinal = 77;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/Test_iput_short.java b/tools/vm-tests/src/dot/junit/opcodes/iput_short/Test_iput_short.java
new file mode 100644
index 0000000..d3c44b9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/Test_iput_short.java
@@ -0,0 +1,338 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_short.d.T_iput_short_1;
+import dot.junit.opcodes.iput_short.d.T_iput_short_11;
+import dot.junit.opcodes.iput_short.d.T_iput_short_12;
+import dot.junit.opcodes.iput_short.d.T_iput_short_13;
+import dot.junit.opcodes.iput_short.d.T_iput_short_14;
+
+public class Test_iput_short extends DxTestCase {
+    /**
+     * @title put short into field
+     */
+    public void testN1() {
+        T_iput_short_1 t = new T_iput_short_1();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+ 
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_iput_short_12 t = new T_iput_short_12();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_1
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_14
+        T_iput_short_14 t = new T_iput_short_14();
+        assertEquals(0, t.getProtectedField());
+        t.run();
+        assertEquals(77, t.getProtectedField());
+    }
+    
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_short_13 t = new T_iput_short_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+    
+    
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * 
+     * @constraint B14 
+     * @title put short into long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B14 
+     * @title put value '66000' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify double 
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A11 
+     * @title Attempt to set static field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE8() {
+         try {
+             Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_7");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_short.TestStubs
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_8
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_1
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_15
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint B1 
+     * @title iput-short shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-short shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-short shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-short shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-short shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-short shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.iput_short.TestStubs
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_11
+    	try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.d
new file mode 100644
index 0000000..8aca472
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_1.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_1
+.super java/lang/Object
+
+.field public  st_i1 S
+.field protected  st_p1 S
+.field private  st_pvt1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public getPvtField()S
+.limit regs 2
+
+       iget-short v0, v1, dot.junit.opcodes.iput_short.d.T_iput_short_1.st_pvt1 S
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_1.st_i1 S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.java b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.java
new file mode 100644
index 0000000..a804c96
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_1 {
+    public  short st_i1;
+    protected  short st_p1;
+    private  short st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public  short getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.d
new file mode 100644
index 0000000..7feaba8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_10.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_10
+.super java/lang/Object
+
+.field public st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_10.st_i1N S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.d
new file mode 100644
index 0000000..23539d3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_11.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_short/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_short/TestStubs/<init>()V
+
+       const v1, 1
+       iput-short v1, v0, dot.junit.opcodes.iput_short.TestStubs.TestStubFieldFinal S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.java b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.java
new file mode 100644
index 0000000..dc23c74
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.d
new file mode 100644
index 0000000..b0f2f15
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_12.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_12
+.super java/lang/Object
+
+.field public  final st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_12.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.java b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.java
new file mode 100644
index 0000000..eaacd89
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_12 {
+    public  short st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.d
new file mode 100644
index 0000000..4472907
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_13.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_13
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       const v1, 77
+       iput-short v1, v0, dot.junit.opcodes.iput_short.d.T_iput_short_13.st_i1 S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.java b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.java
new file mode 100644
index 0000000..2ba3c63
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short.d;
+
+
+public class T_iput_short_13 {
+    
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.d
new file mode 100644
index 0000000..f7b07c6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_14.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_14
+.super dot/junit/opcodes/iput_short/d/T_iput_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_short/d/T_iput_short_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()S
+.limit regs 2
+
+       iget-short v0, v1, dot.junit.opcodes.iput_short.d.T_iput_short_1.st_p1 S
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_1.st_p1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.java b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.java
new file mode 100644
index 0000000..8a33e07
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_14 extends T_iput_short_1{
+    
+    public void run() {
+        st_p1 = 77;
+    }
+    
+    public  short getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.d
new file mode 100644
index 0000000..5732b91
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_15.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_15
+.super dot/junit/opcodes/iput_short/d/T_iput_short_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_short/d/T_iput_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_1.st_pvt1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.d
new file mode 100644
index 0000000..bd8966a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_17.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_17.st_i1 S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_18.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_18.d
new file mode 100644
index 0000000..5d543c4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_18.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_2.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_2.d
new file mode 100644
index 0000000..ae98945
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_2.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_2
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-short v0, v2, dot.junit.opcodes.iput_short.d.T_iput_short_4.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_20.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_20.d
new file mode 100644
index 0000000..b7524dc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_20.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-short v3, v3, dot.junit.opcodes.iput_short.d.T_iput_short_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_21.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_21.d
new file mode 100644
index 0000000..7b80f03
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_21.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_21
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       iput-short v0, v3, dot.junit.opcodes.iput_short.d.T_iput_short_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_22.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_22.d
new file mode 100644
index 0000000..4f969d5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_22.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_22
+.super java/lang/Object
+
+.field public  st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-short v0, v3, dot.junit.opcodes.iput_short.d.T_iput_short_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_23.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_23.d
new file mode 100644
index 0000000..6f2cdc1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_23.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_23
+.super java/lang/Object
+
+.field public st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-short v0, v3, dot.junit.opcodes.iput_short.d.T_iput_short_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_24.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_24.d
new file mode 100644
index 0000000..326cd78
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_24.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_24
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-short v0, v3, dot.junit.opcodes.iput_short.d.T_iput_short_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.d
new file mode 100644
index 0000000..0a091e4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_3.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_3
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       iput-short v0, v2, dot.junit.opcodes.iput_short.d.T_iput_short_3.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.dfh
new file mode 100644
index 0000000..f055d5f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.dfh
@@ -0,0 +1,259 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_short/d/T_iput_short_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_short/d/T_iput_short_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 69af47b5
+    B5 47 AF 69 
+// parsed: offset 12, len 20: signature           : 8879...c4a0
+    88 79 16 98 CF A1 69 7E 3C 6B E3 73 9E F7 E8 E4 22 93 C4 A0 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "Ldot/junit/opcodes/iput_short/d/T_iput_short_3;"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "Ljava/lang/Object;"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 365 (0x00016d) "S"
+    6D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 368 (0x000170) "T_iput_short_3.java"
+    70 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 389 (0x000185) "V"
+    85 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 392 (0x000188) "run"
+    88 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 397 (0x00018d) "st_i1"
+    8D 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/iput_short/d/T_iput_short_3;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "S"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  type_idx: 2 (0x000002) name_idx: 7 (0x000007) "st_i1"
+    00 00 02 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    00 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iput_short/d/T_iput_short_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iput_short_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 404 (0x000194)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 94 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_short.d.T_iput_short_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_short.d.T_iput_short_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: iput-short v0, v2, Ldot/junit/opcodes/iput_short/d/T_iput_short_3;.st_i1:S // field@0000
+//@mod            5F 20 00 00 
+            5F 20 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 49: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/iput_short/d/T_iput_short_3;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 73 68 6F 72 74 2F 64 2F 54 5F 69 70 75 74 5F 73 68 6F 72 74 5F 33 3B 00 
+// parsed: offset 345, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 365, len 3: TYPE_STRING_DATA_ITEM [3] "S"
+    01 53 00 
+// parsed: offset 368, len 21: TYPE_STRING_DATA_ITEM [4] "T_iput_short_3.java"
+    13 54 5F 69 70 75 74 5F 73 68 6F 72 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 389, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 392, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 397, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_short/d/T_iput_short_3;"
+    // parsed: offset 404, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 405, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 406, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 407, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 408, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 410, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 411, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 414, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 417, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 418, len 2: code_off: 260 (0x000104)
+                84 02 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 404 (0x000194)
+        00 20 00 00 01 00 00 00 94 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_30.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_30.d
new file mode 100644
index 0000000..51d2ea8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_30.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_30
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_short/d/T_iput_short_30
+    const v1, 0
+    iput-short v1, v0, dot.junit.opcodes.iput_short.d.T_iput_short_30.st_i1 S
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_4.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_4.d
new file mode 100644
index 0000000..f201a30
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_4.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_4
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-short v3, v2, dot.junit.opcodes.iput_short.d.T_iput_short_4.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_6.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_6.d
new file mode 100644
index 0000000..ba79d41
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_6.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_6
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 66000
+       iput-short v0, v2, dot.junit.opcodes.iput_short.d.T_iput_short_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.d
new file mode 100644
index 0000000..b395108
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_7.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_7
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_7.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.d
new file mode 100644
index 0000000..0fc4550
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_8.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput/TestStubs/<init>()V
+
+       const v1, 0
+       iput-short v1, v0, dot.junit.opcodes.iput_short.TestStubs.TestStubField S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.d b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.d
new file mode 100644
index 0000000..1a1555e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_short_9.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_9
+.super java/lang/Object
+
+.field public st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_9noclass.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/TestStubs.java
new file mode 100644
index 0000000..617b87f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide;
+
+public class TestStubs {
+    // used by testVFE9
+    protected long TestStubField = 0;
+    
+    // used by testE5
+    public final long TestStubFieldFinal = 0;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/Test_iput_wide.java b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/Test_iput_wide.java
new file mode 100644
index 0000000..a0cac2d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/Test_iput_wide.java
@@ -0,0 +1,353 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_13;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_1;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_11;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_12;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_14;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_5;
+
+public class Test_iput_wide extends DxTestCase {
+    /**
+     * @title put long into field 
+     */
+    public void testN1() {
+        T_iput_wide_1 t = new T_iput_wide_1();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(778899112233l, t.st_i1);
+    }
+    
+    /**
+     * @title put double into field
+     */
+    public void testN2() {
+        T_iput_wide_5 t = new T_iput_wide_5();
+        assertEquals(0.0d, t.st_i1);
+        t.run();
+        assertEquals(0.5d, t.st_i1);
+    }
+
+ 
+    /**
+     * @title modification of final field
+     */
+    public void testN3() {
+        T_iput_wide_12 t = new T_iput_wide_12();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_1
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_14
+        T_iput_wide_14 t = new T_iput_wide_14();
+        assertEquals(0, t.getProtectedField());
+        t.run();
+        assertEquals(77, t.getProtectedField());
+    }
+    
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_wide_13 t = new T_iput_wide_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+    
+   
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * 
+     * @constraint B14 
+     * @title put int into long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+ 
+
+    /**
+     * 
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify float 
+     * field with double-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A11 
+     * @title Attempt to set non-static field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE8() {
+         try {
+             Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_7");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_wide.TestStubs
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_8
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+   
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_1
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_15
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint B1 
+     * @title iput-wide shall not work for single-width numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-wide shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-wide shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-wide shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-wide shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-wide shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title iput-wide shall not work for short fields
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testE5() {
+        //@uses dot.junit.opcodes.iput_wide.TestStubs
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_11
+    	try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.d
new file mode 100644
index 0000000..cae692f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_1.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_1
+.super java/lang/Object
+
+.field public  st_i1 J
+.field protected  st_p1 J
+.field private  st_pvt1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()J
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_1.st_pvt1 J
+       return-wide v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 778899112233
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_1.st_i1 J
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.java b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.java
new file mode 100644
index 0000000..be11462
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_1 {
+    public  long st_i1;
+    protected  long st_p1;
+    private  long st_pvt1;
+    
+    public void run() {
+        st_i1 = 778899112233l;
+    }
+    
+    public  long getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.d
new file mode 100644
index 0000000..1ba4cac
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_10.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_10
+.super java/lang/Object
+
+.field public st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_10.st_i1N J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.d
new file mode 100644
index 0000000..d3401d0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_11.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       new-instance v0, Ldot/junit/opcodes/iput_wide/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_wide/TestStubs/<init>()V
+       
+       const-wide v1, 1
+       iput-wide v1, v0, dot.junit.opcodes.iput_wide.TestStubs.TestStubFieldFinal J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.java b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.java
new file mode 100644
index 0000000..327d5bd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.d
new file mode 100644
index 0000000..a386a54
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_12.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_12
+.super java/lang/Object
+
+.field public  final st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 77
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_12.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.java b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.java
new file mode 100644
index 0000000..d2d6998
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_12 {
+    public  long st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.d
new file mode 100644
index 0000000..cdf7fe6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_13.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_13
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v2, 0
+       const-wide v0, 778899112233
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_13.st_i1 J
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.java b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.java
new file mode 100644
index 0000000..6053aec
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+
+public class T_iput_wide_13 {
+    
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.d
new file mode 100644
index 0000000..22bafcf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_14.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_14
+.super dot/junit/opcodes/iput_wide/d/T_iput_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_wide/d/T_iput_wide_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()J
+.limit regs 2
+
+       iget-wide v0, v1, dot.junit.opcodes.iput_wide.d.T_iput_wide_1.st_p1 J
+       return-wide v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 77
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_1.st_p1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.java b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.java
new file mode 100644
index 0000000..f0fb8d3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_14 extends T_iput_wide_1{
+    
+    public void run() {
+        st_p1 = 77;
+    }
+    
+    public  long getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.d
new file mode 100644
index 0000000..4e8b2ad
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_15.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_15
+.super dot/junit/opcodes/iput_wide/d/T_iput_wide_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_wide/d/T_iput_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_1.st_pvt1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.d
new file mode 100644
index 0000000..058d1dc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_17.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_17
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_17.st_i1 J
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_18.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_18.d
new file mode 100644
index 0000000..1818bed
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_18.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_18
+.super java/lang/Object
+
+.field public  st_i1 F
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1.0
+       iput-wide v1, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_18.st_i1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_2.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_2.d
new file mode 100644
index 0000000..8d6dc36
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_2.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_2
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_4.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_20.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_20.d
new file mode 100644
index 0000000..e0efb25
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_20.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_20.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const-wide v0, 0
+
+       iput-wide v0, v3, dot.junit.opcodes.iput_wide.d.T_iput_wide_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_21.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_21.d
new file mode 100644
index 0000000..064a9a8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_21.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_21
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 12    
+       iput-wide v0, v3, dot.junit.opcodes.iput_wide.d.T_iput_wide_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_22.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_22.d
new file mode 100644
index 0000000..80a827d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_22.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_22
+.super java/lang/Object
+
+.field public  st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       iput-wide v0, v3, dot.junit.opcodes.iput_wide.d.T_iput_wide_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_23.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_23.d
new file mode 100644
index 0000000..d37bbd0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_23.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_23
+.super java/lang/Object
+
+.field public  st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       iput-wide v0, v3, dot.junit.opcodes.iput_wide.d.T_iput_wide_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_24.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_24.d
new file mode 100644
index 0000000..3f0102f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_24.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_24
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       iput-wide v0, v3, dot.junit.opcodes.iput_wide.d.T_iput_wide_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.d
new file mode 100644
index 0000000..fc4dc02
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_3.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_3
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_3.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.dfh
new file mode 100644
index 0000000..a0ada5a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dot/junit/opcodes/iput_wide/d/T_iput_wide_3.dex'...
+// Opened 'dot/junit/opcodes/iput_wide/d/T_iput_wide_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 71754517
+    17 45 75 71 
+// parsed: offset 12, len 20: signature           : e67a...82a9
+    E6 7A EF BD 44 34 8E F6 ED DF 42 B2 5F 27 17 2B 1D B9 82 A9 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "J"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 370 (0x000172) "T_iput_wide_3.java"
+    72 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 398 (0x00018e) "st_i1"
+    8E 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "J"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iput_wide_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 405 (0x000195)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 95 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_wide.d.T_iput_wide_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_wide.d.T_iput_wide_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 276, len 10: |0000: const-wide v0, #double 0.000000 // #0x0000000000000001 long
+            18 00 01 00 00 00 00 00 00 00 
+        // parsed: offset 286, len 4: |0005: iput-wide v0, v2, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;.st_i1:J // field@0000
+//@mod            5A 20 00 00 
+            5A 20 00 01 
+        // parsed: offset 290, len 2: |0007: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "J"
+    01 4A 00 
+// parsed: offset 303, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 77 69 64 65 2F 64 2F 54 5F 69 70 75 74 5F 77 69 64 65 5F 33 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 20: TYPE_STRING_DATA_ITEM [4] "T_iput_wide_3.java"
+    12 54 5F 69 70 75 74 5F 77 69 64 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 398, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;"
+    // parsed: offset 405, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 406, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 407, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 408, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 409, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 410, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 411, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 412, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 415, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 417, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 418, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 419, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 421, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 292 (0x000124)
+        02 20 00 00 08 00 00 00 24 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 405 (0x000195)
+        00 20 00 00 01 00 00 00 95 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_30.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_30.d
new file mode 100644
index 0000000..9513dc8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_30.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_30
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_wide/d/T_iput_wide_30
+    const-wide v1, 0
+    iput-wide v1, v0, dot.junit.opcodes.iput_wide.d.T_iput_wide_30.st_i1 J
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_4.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_4.d
new file mode 100644
index 0000000..6036cc6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_4.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_4
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-wide v3, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_4.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.d
new file mode 100644
index 0000000..3c1d9ba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_5.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_5
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 0.5
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_5.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.java b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.java
new file mode 100644
index 0000000..a508e8e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_5 {
+    public  double st_i1;
+    
+    public void run() {
+        st_i1 = 0.5d;
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_6.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_6.d
new file mode 100644
index 0000000..31f4f12
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_6.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_6
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.d
new file mode 100644
index 0000000..df5079c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_7.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_7
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 0
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_7.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.d
new file mode 100644
index 0000000..12a0d92
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_8.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       new-instance v0, Ldot/junit/opcodes/iput_wide/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_wide/TestStubs/<init>()V
+       
+       const-wide v1, 0
+       iput-wide v1, v0, dot.junit.opcodes.iput_wide.TestStubs.TestStubField J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.d b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.d
new file mode 100644
index 0000000..aecd210
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_iput_wide_9.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_9
+.super java/lang/Object
+
+.field public st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 0
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_9noclass.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_double/Test_long_to_double.java b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/Test_long_to_double.java
new file mode 100644
index 0000000..fb55b8e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/Test_long_to_double.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.long_to_double.d.T_long_to_double_1;
+import dot.junit.opcodes.long_to_double.d.T_long_to_double_6;
+
+public class Test_long_to_double extends DxTestCase {
+    /**
+     * @title Argument = 50000000000
+     */
+    public void testN1() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(5.0E10d, t.run(50000000000l), 0d);
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(1d, t.run(1l), 0d);
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(-1d, t.run(-1l), 0d);
+    }
+
+    /**
+     * @title Type of argument - double. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of double to double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_long_to_double_6 t = new T_long_to_double_6();
+        try {
+            t.run(12345);
+        } catch (Throwable e) {
+        }
+    }       
+    
+    /**
+     * @title Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(9.223372036854776E18d, t.run(Long.MAX_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(-9.223372036854776E18, t.run(Long.MIN_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(0d, t.run(0), 0d);
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - float
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_double.d.T_long_to_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - integer
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_double.d.T_long_to_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_double.d.T_long_to_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_double.d.T_long_to_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.d b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.d
new file mode 100644
index 0000000..d1e068c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_double_1.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       long-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.java b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.java
new file mode 100644
index 0000000..f1ce414
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_double.d;
+
+public class T_long_to_double_1 {
+
+    public double run(long a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_2.d b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_2.d
new file mode 100644
index 0000000..3201a77
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_double_2.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       const v6, 3.1415
+       long-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_3.d b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_3.d
new file mode 100644
index 0000000..83c423c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_double_3.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       const v6, 1234
+       long-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_4.d b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_4.d
new file mode 100644
index 0000000..03bc7bd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_double_4.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       long-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_5.d b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_5.d
new file mode 100644
index 0000000..6656834
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_double_5.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       long-to-double v0, v8
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.d b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.d
new file mode 100644
index 0000000..8e430fe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_double_6.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)D
+.limit regs 8
+
+       long-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.java b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.java
new file mode 100644
index 0000000..f676c16
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_double.d;
+
+public class T_long_to_double_6 {
+
+    public double run(double a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_float/Test_long_to_float.java b/tools/vm-tests/src/dot/junit/opcodes/long_to_float/Test_long_to_float.java
new file mode 100644
index 0000000..1e06437
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_float/Test_long_to_float.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.long_to_float.d.T_long_to_float_1;
+import dot.junit.opcodes.long_to_float.d.T_long_to_float_2;
+
+public class Test_long_to_float extends DxTestCase {
+    /**
+     * @title Argument = 123456789012345
+     */
+    public void testN1() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(1.23456788E14f, t.run(123456789012345l), 0f);
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(1f, t.run(1l), 0f);
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(-1f, t.run(-1l), 0f);
+    }
+
+    /**
+     * @title Type of argument - double. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of double to double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_long_to_float_2 t = new T_long_to_float_2();
+        try {
+            t.run(12345);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(9.223372036854776E18, t.run(Long.MAX_VALUE), 0f);
+    }
+
+    /**
+     * @title Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(-9.223372036854776E18, t.run(Long.MIN_VALUE), 0f);
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(0f, t.run(0l), 0f);
+    }
+
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - integer
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_float.d.T_long_to_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_float.d.T_long_to_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_float.d.T_long_to_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.d b/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.d
new file mode 100644
index 0000000..3f0602b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_float_1.java
+.class public dot.junit.opcodes.long_to_float.d.T_long_to_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 8
+
+       long-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.java b/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.java
new file mode 100644
index 0000000..67eca97
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_float.d;
+
+public class T_long_to_float_1 {
+
+    public float run(long a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.d b/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.d
new file mode 100644
index 0000000..0f4a557
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_float_2.java
+.class public dot.junit.opcodes.long_to_float.d.T_long_to_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 8
+
+       long-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.java b/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.java
new file mode 100644
index 0000000..409d2ef
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_float.d;
+
+public class T_long_to_float_2 {
+
+    public float run(double a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_3.d b/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_3.d
new file mode 100644
index 0000000..002e5d5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_float_3.java
+.class public dot.junit.opcodes.long_to_float.d.T_long_to_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 8
+
+       const v6, 1234
+       long-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_4.d b/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_4.d
new file mode 100644
index 0000000..acb99d1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_float_4.java
+.class public dot.junit.opcodes.long_to_float.d.T_long_to_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 8
+
+       long-to-float v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_5.d b/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_5.d
new file mode 100644
index 0000000..5cb993e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_float_5.java
+.class public dot.junit.opcodes.long_to_float.d.T_long_to_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 8
+
+       long-to-float v0, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_int/Test_long_to_int.java b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/Test_long_to_int.java
new file mode 100644
index 0000000..2440fa5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/Test_long_to_int.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.long_to_int.d.T_long_to_int_1;
+import dot.junit.opcodes.long_to_int.d.T_long_to_int_2;
+
+public class Test_long_to_int extends DxTestCase {
+    /**
+     * @title Argument = 0xAAAAFFEEDDCCl
+     */
+    public void testN1() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(0xFFEEDDCC, t.run(0xAAAAFFEEDDCCl));
+    }
+
+    /**
+     * @title Argument = -123456789
+     */
+    public void testN2() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(-123456789, t.run(-123456789l));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN3() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(1, t.run(1l));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN4() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(-1, t.run(-1l));
+    }
+    
+    /**
+     * @title Type of argument - double. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of double to int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_long_to_int_2 t = new T_long_to_int_2();
+        try {
+            t.run(12345);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(-1, t.run(Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(0, t.run(Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(0, t.run(0l));
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - float
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_int.d.T_long_to_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_int.d.T_long_to_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_int.d.T_long_to_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  type of argument - int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_int.d.T_long_to_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.d b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.d
new file mode 100644
index 0000000..2f73956
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_int_1.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       long-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.java b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.java
new file mode 100644
index 0000000..77f6c5d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_int.d;
+
+public class T_long_to_int_1 {
+
+    public int run(long a) {
+        return (int) a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.d b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.d
new file mode 100644
index 0000000..1732d7f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_int_2.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       long-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.java b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.java
new file mode 100644
index 0000000..97b9ac4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.long_to_int.d;
+
+public class T_long_to_int_2 {
+
+    public int run(double a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_3.d b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_3.d
new file mode 100644
index 0000000..1d4665b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_int_3.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       const v6, 1234.0
+       long-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_4.d b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_4.d
new file mode 100644
index 0000000..50e5889
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_int_4.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       long-to-int v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_5.d b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_5.d
new file mode 100644
index 0000000..5b65864
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_int_5.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       long-to-int v0, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_6.d b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_6.d
new file mode 100644
index 0000000..ad412f0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_long_to_int_6.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)V
+.limit regs 8
+       move v0, v7
+       move v1, v7
+       long-to-int v0, v0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/Test_monitor_enter.java b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/Test_monitor_enter.java
new file mode 100644
index 0000000..3608793
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/Test_monitor_enter.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.monitor_enter;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1;
+import dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2;
+import dot.junit.opcodes.monitor_enter.d.T_monitor_enter_3;
+
+public class Test_monitor_enter extends DxTestCase {
+
+    /**
+     * @title tests monitor-enter functionality
+     * 
+     * @throws InterruptedException
+     */
+    public void testN1() throws InterruptedException {
+        //@uses dot.junit.opcodes.monitor_enter.TestRunnable
+        final T_monitor_enter_1 t1 = new T_monitor_enter_1();
+        Runnable r1 = new TestRunnable(t1);
+        Runnable r2 = new TestRunnable(t1);
+        Thread tr1 = new Thread(r1);
+        Thread tr2 = new Thread(r2);
+        tr1.start();
+        tr2.start();
+
+        tr1.join();
+        tr2.join();
+        assertEquals(2, t1.counter);
+    }
+
+    /**
+     * @title Tests behavior when monitor owned by current thread.
+     * 
+     * @throws InterruptedException
+     */
+    public void testN2() throws InterruptedException {
+        //@uses dot.junit.opcodes.monitor_enter.TestRunnable2
+        final T_monitor_enter_2 t1 = new T_monitor_enter_2();
+        Runnable r1 = new TestRunnable2(t1, 10);
+        Runnable r2 = new TestRunnable2(t1, 20);
+        Thread tr1 = new Thread(r1);
+        Thread tr2 = new Thread(r2);
+        tr1.start();
+        tr2.start();
+
+        tr1.join();
+        tr2.join();
+        assertTrue(t1.result);
+    }
+
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE1() {
+        T_monitor_enter_3 t = new T_monitor_enter_3();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_enter.d.T_monitor_enter_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_enter.d.T_monitor_enter_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_enter.d.T_monitor_enter_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_enter.d.T_monitor_enter_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_enter.d.T_monitor_enter_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
+
+class TestRunnable implements Runnable {
+    private T_monitor_enter_1 t1;
+    TestRunnable(T_monitor_enter_1 t1) {
+        this.t1 = t1;
+    }
+    
+    public void run() {
+        try {
+            t1.run();
+        } catch (InterruptedException e) {
+            throw new RuntimeException("interrupted!");
+        }
+    }
+}
+
+class TestRunnable2 implements Runnable {
+    private T_monitor_enter_2 t2;
+    private int val;
+    TestRunnable2(T_monitor_enter_2 t2, int val) {
+        this.t2 = t2;
+        this.val = val;
+    }
+    
+    public void run() {
+        try {
+            t2.run(val);
+        } catch (InterruptedException e) {
+            throw new RuntimeException("interrupted!");
+        }
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.d b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.d
new file mode 100644
index 0000000..eb443b7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.d
@@ -0,0 +1,63 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_enter_1.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1
+.super java/lang/Object
+
+.field public counter I
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+
+       const/4 v0, 0
+
+       iput v0, v1, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+       monitor-enter v7
+Label8:
+       iget v1, v7, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+
+       const-wide/16 v3, 500
+       invoke-static {v3, v4}, java/lang/Thread/sleep(J)V
+       
+       iget v2, v7, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+       
+       if-ne v1, v2, Label0
+       
+       add-int/lit8 v1, v1, 1
+       iput v1, v7, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+       monitor-exit v7
+Label24:
+       return-void
+Label0:
+       const/4 v5, -1
+       iput v5, v7, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+       monitor-exit v7
+       return-void
+       
+Label25:
+       move-exception v3
+       monitor-exit v7
+       const/4 v5, -1
+       iput v5, v7, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+       throw v3
+.catch all from Label8 to Label24 using Label25
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.java b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.java
new file mode 100644
index 0000000..39113fa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.monitor_enter.d;
+
+public class T_monitor_enter_1 {
+    public int counter = 0;
+    
+    public void run() throws InterruptedException  {
+        synchronized(this) {
+            int a = counter;
+            Thread.sleep(500);
+            counter = ++a;
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.d b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.d
new file mode 100644
index 0000000..2e7fc6f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.d
@@ -0,0 +1,85 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_enter_2.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2
+.super java/lang/Object
+
+.field private flg I
+.field public result Z
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const/4 v2, 0
+       iput v2, v3, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.flg I
+
+       const/4 v2, 1
+       iput-boolean v2, v3, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.result Z
+       return-void
+.end method
+
+.method public run(I)V
+.limit regs 10
+
+       monitor-enter v8
+Label13:
+       monitor-enter v8
+Label14:
+
+       iput v9, v8, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.flg I
+       
+Label16:
+       monitor-exit v8
+Label20:
+
+       const-wide/16 v4, 500
+
+Label22:
+       invoke-static {v4, v5}, java/lang/Thread/sleep(J)V
+Label23:
+
+       iget v1, v8, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.flg I
+
+       if-eq v1, v9, Label35
+
+       const/4 v5, 0
+       iput-boolean v5, v8, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.result Z
+       
+Label35:
+       monitor-exit v8
+Label37:
+       return-void
+       
+       
+Label46:
+       move-exception v4
+
+       const/4 v6, 0
+       iput-boolean v6, v8, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.result Z
+
+       monitor-exit v8
+Label53:
+       throw v4
+       
+.catch all from Label13 to Label14 using Label46
+.catch all from Label16 to Label20 using Label46
+.catch all from Label22 to Label23 using Label46
+.catch all from Label35 to Label37 using Label46
+.catch all from Label46 to Label53 using Label46
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.java b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.java
new file mode 100644
index 0000000..d2f5add
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.monitor_enter.d;
+
+public class T_monitor_enter_2 {
+
+     private int flg = 0;
+     public boolean result = true;
+        
+     public void run(int v) throws InterruptedException  {
+         synchronized(this) {
+             synchronized(this) {
+                 flg = v;
+             }
+             Thread.sleep(500);
+             if(flg != v) {
+                 result = false;
+             }
+         }
+     }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.d b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.d
new file mode 100644
index 0000000..7417a8e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_enter_3.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const/4 v5, 0
+       monitor-enter v5
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.java b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.java
new file mode 100644
index 0000000..ebb0f17
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.monitor_enter.d;
+
+public class T_monitor_enter_3 {
+
+    public void run() {
+        Object o = null;
+        synchronized(o) {
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.d b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.d
new file mode 100644
index 0000000..5b3469d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_enter_4.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       monitor-enter v6
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.java b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.java
new file mode 100644
index 0000000..83c41d4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.monitor_enter.d;
+
+public class T_monitor_enter_4 {
+
+    public void run() {
+        Object o = null;
+        synchronized(o) {
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_5.d b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_5.d
new file mode 100644
index 0000000..7078aa0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_enter_5.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const v5, 12345
+       monitor-enter v5
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_6.d b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_6.d
new file mode 100644
index 0000000..754a9e3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_enter_6.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const v5, 1.23
+       monitor-enter v5
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_7.d b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_7.d
new file mode 100644
index 0000000..8fb7791
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_enter_7.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const-wide v4, 123456789321
+       monitor-enter v4
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_8.d b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_8.d
new file mode 100644
index 0000000..3d45716
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_enter_8.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const-wide v4, 1.79
+       monitor-enter v4
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/Test_monitor_exit.java b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/Test_monitor_exit.java
new file mode 100644
index 0000000..d4f5842
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/Test_monitor_exit.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.monitor_exit;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.monitor_exit.d.T_monitor_exit_1;
+import dot.junit.opcodes.monitor_exit.d.T_monitor_exit_3;
+
+public class Test_monitor_exit extends DxTestCase {
+
+    /**
+     * @title thread is not monitor owner
+     */
+    public void testE1() throws InterruptedException {
+        //@uses dot.junit.opcodes.monitor_exit.TestRunnable
+        final T_monitor_exit_1 t = new T_monitor_exit_1();
+        final Object o = new Object();
+
+        Runnable r = new TestRunnable(t, o);
+        synchronized (o) {
+            Thread th = new Thread(r);
+            th.start();
+            th.join();
+        }
+        if (t.result == false) {
+            fail("expected IllegalMonitorStateException");
+        }
+    }
+
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        T_monitor_exit_3 t = new T_monitor_exit_3();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_exit.d.T_monitor_exit_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title  type of arguments - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_exit.d.T_monitor_exit_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  type of arguments - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_exit.d.T_monitor_exit_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  type of arguments - long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_exit.d.T_monitor_exit_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  type of arguments - double
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_exit.d.T_monitor_exit_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
+
+
+class TestRunnable implements Runnable {
+    private T_monitor_exit_1 t;
+    private Object o;
+
+    public TestRunnable(T_monitor_exit_1 t, Object o) {
+        this.t = t;
+        this.o = o;
+    }
+
+    public void run() {
+        try {
+            t.run(o);
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+            t.result = true;
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.d b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.d
new file mode 100644
index 0000000..bef8390
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_exit_1.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_1
+.super java/lang/Object
+
+.field public result Z
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const/4 v2, 1
+       iput-boolean v2, v3, dot.junit.opcodes.monitor_exit.d.T_monitor_exit_1.result Z
+
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+
+       monitor-exit v3
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.java b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.java
new file mode 100644
index 0000000..ff61a53
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.monitor_exit.d;
+
+public class T_monitor_exit_1 {
+
+    public boolean result = false;
+    
+    public void run(Object o) {
+        synchronized(o) {
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.d b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.d
new file mode 100644
index 0000000..9ef4034
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_exit_3.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+
+       const/4 v1, 0
+Label4:
+       monitor-exit v1
+Label5:
+       return-void
+Label6:
+       move-exception v1
+       monitor-exit v3
+       throw v1
+.catch all from Label4 to Label5 using Label6
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.java b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.java
new file mode 100644
index 0000000..162dd58
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.monitor_exit.d;
+
+public class T_monitor_exit_3 {
+
+    public void run() {
+        synchronized(this) {
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_4.d b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_4.d
new file mode 100644
index 0000000..334f385
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_exit_4.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+       monitor-exit v4
+
+       return-void       
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_5.d b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_5.d
new file mode 100644
index 0000000..9def3d7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_exit_5.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+       const v3, 12345
+       monitor-exit v3
+       return-void       
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_6.d b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_6.d
new file mode 100644
index 0000000..9635212
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_exit_6.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+       const v3, 1.123
+       monitor-exit v3
+       return-void       
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_7.d b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_7.d
new file mode 100644
index 0000000..c65ae56
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_exit_7.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+       const-wide v0, 123456789321
+       monitor-exit v0
+       return-void       
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_8.d b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_8.d
new file mode 100644
index 0000000..91be219
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_monitor_exit_8.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+       const-wide v0, 1.79
+       monitor-exit v0
+       return-void       
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move/Test_move.java b/tools/vm-tests/src/dot/junit/opcodes/move/Test_move.java
new file mode 100644
index 0000000..d503890
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move/Test_move.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move.d.T_move_1;
+
+public class Test_move extends DxTestCase {
+    /**
+     * @title test move functionality
+     */
+    public void testN1() {
+        assertTrue(T_move_1.run());
+    }
+
+
+    /**
+     * @constraint A23 
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_1.d b/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_1.d
new file mode 100644
index 0000000..1d8e693
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_1.java
+.class public dot.junit.opcodes.move.d.T_move_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 16
+       const v0, 1234
+       const v15, 567989
+
+       move v0, v15
+       
+       const v4, 567989
+
+       if-ne v0, v4, Label0
+       if-ne v15, v4, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_1.java b/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_1.java
new file mode 100644
index 0000000..97f538f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move.d;
+
+public class T_move_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_2.d b/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_2.d
new file mode 100644
index 0000000..4a5dfc7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_2.java
+.class public dot.junit.opcodes.move.d.T_move_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 9
+
+       move v0, v9
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_3.d b/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_3.d
new file mode 100644
index 0000000..c9d094b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_3.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_3.java
+.class public dot.junit.opcodes.move.d.T_move_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 9
+       const v0, 0
+
+       move v15, v0
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_4.d b/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_4.d
new file mode 100644
index 0000000..54adf05
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_4.java
+.class public dot.junit.opcodes.move.d.T_move_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+       move v1, v8
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_5.d b/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_5.d
new file mode 100644
index 0000000..1ab33b6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_5.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_5.java
+.class public dot.junit.opcodes.move.d.T_move_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 9
+       const-wide v0, 124
+
+       move v5, v0
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_6.d b/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_6.d
new file mode 100644
index 0000000..91da915
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_6.java
+.class public dot.junit.opcodes.move.d.T_move_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 9
+       const-wide v0, 124
+
+       move v5, v1
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_7.d b/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_7.d
new file mode 100644
index 0000000..fa615c1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move/d/T_move_7.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_7.java
+.class public dot.junit.opcodes.move.d.T_move_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 9
+       const-wide v0, 124
+       const v5, 0
+
+       move v1, v5
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_16/Test_move_16.java b/tools/vm-tests/src/dot/junit/opcodes/move_16/Test_move_16.java
new file mode 100644
index 0000000..f3e2ab0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_16/Test_move_16.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_16.d.T_move_16_1;
+import dot.junit.opcodes.move_16.d.T_move_16_2;
+
+public class Test_move_16 extends DxTestCase {
+    /**
+     * @title v4001 -> v4000
+     */
+    public void testN1() {
+        assertTrue(T_move_16_1.run());
+    }
+    
+    /**
+     * @title v1 -> v4001
+     */
+    public void testN2() {
+        assertTrue(T_move_16_2.run());
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_1.d b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_1.d
new file mode 100644
index 0000000..bb5335f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_1.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_16_1.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const v0, 123
+       const v1, 5678
+       
+       move/16 v4000, v0
+       move/16 v4001, v1
+       
+       move/16 v4000, v4001
+       
+       const/4 v4, 5678
+       
+       move/16 v0, v4000
+       move/16 v1, v4001
+
+       if-ne v0, v4, Label0
+       if-ne v1, v4, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_1.java b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_1.java
new file mode 100644
index 0000000..203468b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_16.d;
+
+public class T_move_16_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_2.d b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_2.d
new file mode 100644
index 0000000..52454ae
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_2.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_16_2.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const v1, 5678
+       
+       move/16 v4001, v1
+       move/16 v0, v4001
+       
+       const/4 v4, 5678
+
+       if-ne v0, v4, Label0
+       if-ne v1, v4, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_2.java b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_2.java
new file mode 100644
index 0000000..4729303
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_16.d;
+
+public class T_move_16_2 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_3.d b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_3.d
new file mode 100644
index 0000000..604cbf3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_16_3.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       move/16 v0, v5000
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_4.d b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_4.d
new file mode 100644
index 0000000..2c098a0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_16_4.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const v0, 0
+       move/16 v5000, v0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_5.d b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_5.d
new file mode 100644
index 0000000..ccacc33
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_16_5.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move/16 v0, v4999
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_6.d b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_6.d
new file mode 100644
index 0000000..eb4b9c8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_16_6.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const-wide v123, 123
+       move/16 v255, v123
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_7.d b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_7.d
new file mode 100644
index 0000000..a6aa1d2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_16_7.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+
+       const-wide v123, 123
+       move/16 v255, v124
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_8.d b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_8.d
new file mode 100644
index 0000000..8d98954
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_16/d/T_move_16_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_16_8.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       const v0, 0
+       move/16 v124, v0
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_exception/Test_move_exception.java b/tools/vm-tests/src/dot/junit/opcodes/move_exception/Test_move_exception.java
new file mode 100644
index 0000000..b4fd87c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_exception/Test_move_exception.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_exception;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_exception.d.T_move_exception_1;
+import dot.junit.opcodes.move_exception.d.T_move_exception_2;
+
+public class Test_move_exception extends DxTestCase {
+    
+    /**
+     * @title tests move-exception functionality
+     */
+    public void testN1() {
+        T_move_exception_1 t = new T_move_exception_1();
+        try {
+            t.run();
+            fail("ArithmeticException was not thrown");
+        } catch (ArithmeticException ae) {
+            //expected
+        } catch (Exception ex) {
+            fail("Exception " + ex + " was thrown instead off ArithmeticException");
+        }
+    }
+    
+    /**
+     * @title tests move-exception functionality
+     */
+    public void testN2() {
+        T_move_exception_2 t = new T_move_exception_2();
+        assertTrue(t.run());
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_exception.d.T_move_exception_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B21 
+     * @title  move-exception is not first instruction in an exception handler
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_exception.d.T_move_exception_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.d b/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.d
new file mode 100644
index 0000000..ed7aa2e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_exception_1.java
+.class public dot.junit.opcodes.move_exception.d.T_move_exception_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+Label1:
+       const v1, 15
+       const v2, 0
+       div-int v0, v1, v2 
+       
+Label2:
+       goto Label4
+
+Label3:
+       move-exception v3
+       throw v3
+
+Label4:
+       return-void
+
+.catch all from Label1 to Label2 using Label3
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.java b/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.java
new file mode 100644
index 0000000..9edf6ea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_exception.d;
+
+public class T_move_exception_1 {
+    
+    public void run() {
+        try{
+            int a = 15/0;
+        } catch(Exception ex) {
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.d b/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.d
new file mode 100644
index 0000000..8713f3a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_exception_2.java
+.class public dot.junit.opcodes.move_exception.d.T_move_exception_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 6
+
+Label1:
+       const v1, 1
+       const v2, 0
+       div-int v0, v1, v2 
+       
+Label2:
+       goto Label4
+
+Label3:
+       move-exception v3
+       const v4, 1
+       return v4
+
+Label4:
+       const v4, 0
+       return v4
+
+.catch java/lang/RuntimeException from Label1 to Label2 using Label3
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.java b/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.java
new file mode 100644
index 0000000..ed66c22
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_exception.d;
+
+public class T_move_exception_2 {
+    
+    public boolean run() {
+        try {
+            int a = 15/0;
+        } catch (ArithmeticException ae) {
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_3.d b/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_3.d
new file mode 100644
index 0000000..8141ddb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_3.d
@@ -0,0 +1,31 @@
+.source T_move_exception_3.java
+.class public dot.junit.opcodes.move_exception.d.T_move_exception_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+Label1:
+       const v1, 1
+       const v2, 0
+       div-int v0, v1, v2 
+       
+Label2:
+       goto Label4
+
+Label3:
+       move-exception v6
+
+Label4:
+       return-void
+
+.catch all from Label1 to Label2 using Label3
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_5.d b/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_5.d
new file mode 100644
index 0000000..fdad390
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_exception/d/T_move_exception_5.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_exception_5.java
+.class public dot.junit.opcodes.move_exception.d.T_move_exception_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+Label1:
+       const v1, 15
+       const v2, 0
+       div-int v0, v1, v2 
+       
+Label2:
+       goto Label4
+
+Label3:
+       nop
+       move-exception v3
+       throw v3
+
+Label4:
+       return-void
+
+.catch all from Label1 to Label2 using Label3
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_from16/Test_move_from16.java b/tools/vm-tests/src/dot/junit/opcodes/move_from16/Test_move_from16.java
new file mode 100644
index 0000000..725cbd8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_from16/Test_move_from16.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_from16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_from16.d.T_move_from16_1;
+
+public class Test_move_from16 extends DxTestCase {
+    /**
+     * @title v4001 -> v255 -> v1
+     */
+    public void testN1() {
+        assertTrue(T_move_from16_1.run());
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.d b/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.d
new file mode 100644
index 0000000..e445cea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_from16_1.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const v10, 5678
+   
+       move/16 v4001, v10
+       
+       move/from16 v255, v4001
+       move/from16 v1, v255
+       
+       const/4 v4, 5678
+       
+       if-ne v1, v4, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.java b/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.java
new file mode 100644
index 0000000..a32e85c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_from16.d;
+
+public class T_move_from16_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_3.d b/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_3.d
new file mode 100644
index 0000000..88b3cae
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_from16_3.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       move/from16 v0, v5000
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_4.d b/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_4.d
new file mode 100644
index 0000000..e544a14
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_from16_4.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5
+       const v1, 0    
+       move/from16 v5, v1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_5.d b/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_5.d
new file mode 100644
index 0000000..400a01f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_from16_5.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move/from16 v0, v4999
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_6.d b/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_6.d
new file mode 100644
index 0000000..662e314
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_from16_6.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const-wide v4500, 123
+       move/from16 v0, v4500
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_7.d b/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_7.d
new file mode 100644
index 0000000..7d2f26c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_from16_7.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+
+       const-wide v1234, 123
+       move/from16 v255, v1235
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_8.d b/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_8.d
new file mode 100644
index 0000000..5f8455a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_from16/d/T_move_from16_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_from16_8.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       const v0, 0
+       move/from16 v124, v0
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object/Test_move_object.java b/tools/vm-tests/src/dot/junit/opcodes/move_object/Test_move_object.java
new file mode 100644
index 0000000..d67be88
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object/Test_move_object.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_object.d.T_move_object_1;
+
+public class Test_move_object extends DxTestCase {
+    /**
+     * @title tests move-object functionality
+     */
+    public void testN1() {
+        T_move_object_1 t = new T_move_object_1(); 
+        assertEquals(t.run(), t);
+    }
+
+
+    /**
+     * @constraint A23 
+     * @title  number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_1.d b/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_1.d
new file mode 100644
index 0000000..cc90a5f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_1.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 16
+
+       move-object v0, v15
+       
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_1.java b/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_1.java
new file mode 100644
index 0000000..c0b2483
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_object.d;
+
+public class T_move_object_1 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_2.d b/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_2.d
new file mode 100644
index 0000000..4df3976
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_2.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+
+.method public run()V
+.limit regs 9
+
+       move-object v15, v8
+
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_3.d b/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_3.d
new file mode 100644
index 0000000..647a220
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_3.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+
+       move-object v1, v15
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_4.d b/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_4.d
new file mode 100644
index 0000000..f5538f4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_4.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+       const v0, 1
+       move-object v1, v0
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_5.d b/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_5.d
new file mode 100644
index 0000000..d7951a5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_5.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+       const-wide v0, 124
+
+       move-object v5, v0
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_6.d b/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_6.d
new file mode 100644
index 0000000..7db5136
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_6.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+       const-wide v0, 124
+
+       move-object v5, v1
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_7.d b/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_7.d
new file mode 100644
index 0000000..0fe5509
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object/d/T_move_object_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_7.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 9
+       const-wide v0, 124
+
+       move-object v1, v8
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_16/Test_move_object_16.java b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/Test_move_object_16.java
new file mode 100644
index 0000000..c3780cf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/Test_move_object_16.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_object_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_object_16.d.T_move_object_16_1;
+
+public class Test_move_object_16 extends DxTestCase {
+    /**
+     * @title v4999 -> v4000 -> v1
+     */
+    public void testN1() {
+        T_move_object_16_1 t = new T_move_object_16_1(); 
+        assertEquals(t.run(), t);
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.d b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.d
new file mode 100644
index 0000000..b60a448
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_16_1.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5000
+       move-object/16 v4000, v4999
+       move-object/16 v1, v4000
+
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.java b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.java
new file mode 100644
index 0000000..d0b85bf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_object_16.d;
+
+public class T_move_object_16_1 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_3.d b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_3.d
new file mode 100644
index 0000000..aad9893
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_16_3.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move-object/16 v0, v5000
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_4.d b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_4.d
new file mode 100644
index 0000000..463646c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_16_4.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+       move-object/16 v6, v4
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_5.d b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_5.d
new file mode 100644
index 0000000..8cceaff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_16_5.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       const v0, 1234    
+       move-object/16 v2000, v0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_6.d b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_6.d
new file mode 100644
index 0000000..6a5035d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_16_6.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       const-wide v123, 123
+       move-object/16 v255, v123
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_7.d b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_7.d
new file mode 100644
index 0000000..0fce2b6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_16_7.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+
+       const-wide v123, 123
+       move-object/16 v255, v124
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_8.d b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_8.d
new file mode 100644
index 0000000..8f0d925
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_16_8.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       move-object/16 v124, v4999
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/Test_move_object_from16.java b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/Test_move_object_from16.java
new file mode 100644
index 0000000..2fe17d3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/Test_move_object_from16.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_object_from16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_object_from16.d.T_move_object_from16_1;
+
+
+public class Test_move_object_from16 extends DxTestCase {
+    /**
+     * @title v4999 -> v255 -> v1
+     */
+    public void testN1() {
+        T_move_object_from16_1 t = new T_move_object_from16_1(); 
+        assertEquals(t.run(), t);
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.d b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.d
new file mode 100644
index 0000000..434737e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_from16_1.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5000
+       move-object/from16 v255, v4999
+       move-object/from16 v1, v255
+       
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.java b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.java
new file mode 100644
index 0000000..75f4bac
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_object_from16.d;
+
+public class T_move_object_from16_1 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_3.d b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_3.d
new file mode 100644
index 0000000..c2f4512
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_from16_3.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move/from16 v0, v5000
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_4.d b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_4.d
new file mode 100644
index 0000000..360ae14
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_from16_4.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       move-object/from16 v5, v4
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_5.d b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_5.d
new file mode 100644
index 0000000..94acfb9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_from16_5.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       const v1, 1234
+       move-object/from16 v0, v1
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_6.d b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_6.d
new file mode 100644
index 0000000..d41f1f7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_from16_6.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const-wide v4500, 123
+       move-object/from16 v0, v4500
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_7.d b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_7.d
new file mode 100644
index 0000000..09abc65
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_from16_7.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+
+       const-wide v1234, 123
+       move-object/from16 v255, v1235
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_8.d b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_8.d
new file mode 100644
index 0000000..93ff685
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_object_from16_8.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       move-object/from16 v124, v4999
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result/Test_move_result.java b/tools/vm-tests/src/dot/junit/opcodes/move_result/Test_move_result.java
new file mode 100644
index 0000000..9a0eaba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result/Test_move_result.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_result;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_result.d.T_move_result_1;
+
+public class Test_move_result extends DxTestCase {
+    /**
+     * @title tests move-result functionality
+     */
+    public void testN1() {
+        assertTrue(T_move_result_1.run());
+    }
+
+
+    /**
+     * @constraint A23 
+     * @title number of registers - dest is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title wide
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B19 
+     * @title  move-result instruction must be immediately preceded 
+     * (in the insns array) by an <invoke-kind> instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B20 
+     * @title move-result instruction must be immediately preceded 
+     * (in actual control flow) by an <invoke-kind> instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_1.d b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_1.d
new file mode 100644
index 0000000..50c2eb2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_1.d
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_1.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 16
+
+    const v0, 0
+    
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_1/foo()I
+
+    move-result v0
+    const v1, 12345
+    
+    if-eq v0, v1 Label1
+    
+    const v0, 0
+    return v0
+    
+Label1:
+    const v0, 1
+    return v0
+
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_1.java b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_1.java
new file mode 100644
index 0000000..0f97613
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_result.d;
+
+public class T_move_result_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_2.d b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_2.d
new file mode 100644
index 0000000..ad1b45c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_2.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_2.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_2/foo()I
+    move-result v16
+    
+    return-void
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_3.d b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_3.d
new file mode 100644
index 0000000..481f158
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_3.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result/d/T_move_result_3/foo()Ljava/lang/Object;
+    move-result v0
+    
+    return-void
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_4.d b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_4.d
new file mode 100644
index 0000000..655aa7e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_4.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_4.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result/d/T_move_result_4/foo()J
+    move-result v0
+    
+    return-void
+.end method
+
+.method private foo()J
+.limit regs 2
+
+    const-wide v0, 1234
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_5.d b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_5.d
new file mode 100644
index 0000000..711b142
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_5.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_5.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 16
+
+    const-wide v0, 123
+
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_5/foo()I
+    move-result v1
+    
+    return-wide v0
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_6.d b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_6.d
new file mode 100644
index 0000000..9afeb48
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_6.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_6.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_6/foo()I
+    nop
+    move-result v1
+    
+    return-void
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_7.d b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_7.d
new file mode 100644
index 0000000..aaea908
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_7.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_7.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    goto Label1
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_7/foo()I
+Label1:
+    move-result v1
+    
+    return-void
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_8.d b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_8.d
new file mode 100644
index 0000000..da32cd0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result/d/T_move_result_8.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_8.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    const v0, 0
+    
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_8/foo()I
+
+    move-result v16
+    return-void
+
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_object/Test_move_result_object.java b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/Test_move_result_object.java
new file mode 100644
index 0000000..9ee2ed1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/Test_move_result_object.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_result_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_result_object.d.T_move_result_object_1;
+import dot.junit.opcodes.move_result_object.d.T_move_result_object_8;
+
+public class Test_move_result_object extends DxTestCase {
+    /**
+     * @title tests move-result-object functionality
+     */
+    public void testN1() {
+        T_move_result_object_1 t = new T_move_result_object_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title filled-new-array result
+     */
+    public void testN2() {
+        T_move_result_object_8 t = new T_move_result_object_8();
+        int[] arr = t.run();
+        if(arr.length != 2 || arr[0] != 1 || arr[1] != 2)
+            fail("wrong array size or content");
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers - dest is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title integer
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title wide
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B19 
+     * @title  move-result-object instruction must be immediately preceded 
+     * (in the insns array) by an <invoke-kind> instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B20
+     * @title move-result-object instruction must be immediately preceded 
+     * (in actual control flow) by an <invoke-kind> instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.d b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.d
new file mode 100644
index 0000000..433b86f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_1.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 16
+
+    const v0, 0
+    
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_1/foo()Ljava/lang/Object;
+
+    move-result-object v0
+    
+    if-eq v0, v15, Label1
+
+    const v0, 0
+    return v0
+    
+Label1:
+    const v0, 1
+    return v0
+
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.java b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.java
new file mode 100644
index 0000000..76cdb0d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_result_object.d;
+
+public class T_move_result_object_1 {
+
+    public boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_2.d b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_2.d
new file mode 100644
index 0000000..22c1b0c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_2.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_object_2.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_2/foo()Ljava/lang/Object;
+    move-result-object v16
+    
+    return-void
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_3.d b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_3.d
new file mode 100644
index 0000000..a788844
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_object_3.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_3/foo()I
+    move-result-object v0
+    
+    return-void
+.end method
+
+.method private foo()I
+.limit regs 1
+     const v0, 1
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_4.d b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_4.d
new file mode 100644
index 0000000..b3229b7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_4.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_object_4.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_4/foo()J
+    move-result-object v0
+    
+    return-void
+.end method
+
+.method private foo()J
+.limit regs 2
+
+    const-wide v0, 1234
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_5.d b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_5.d
new file mode 100644
index 0000000..6216f18
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_5.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_object_5.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 16
+
+    const-wide v0, 123
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_5/foo()Ljava/lang/Object;
+    move-result-object v1
+    
+    return-wide v0
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_6.d b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_6.d
new file mode 100644
index 0000000..8de3274
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_6.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_object_6.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_6/foo()Ljava/lang/Object;
+    nop
+    move-result-object v1
+    
+    return-void
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_7.d b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_7.d
new file mode 100644
index 0000000..088b386
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_7.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_object_7.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    goto Label1
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_7/foo()Ljava/lang/Object;
+Label1:
+    move-result-object v1
+    
+    return-void
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.d b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.d
new file mode 100644
index 0000000..0cbb044
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_8.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()[I
+.limit regs 16
+    const v1, 1
+    const v2, 2
+    filled-new-array {v1, v2}, [I
+    move-result-object v5
+    
+    return-object v5
+
+.end method
+
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.java b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.java
new file mode 100644
index 0000000..3eb0ea1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_result_object.d;
+
+public class T_move_result_object_8 {
+
+    public int[] run() {
+        int arr[] = new int[2];
+        arr[0] = 1;
+        arr[1] = 2;
+        return arr;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_9.d b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_9.d
new file mode 100644
index 0000000..92600b9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_9.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_9.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+    
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_9/foo()Ljava/lang/Object;
+
+    move-result-object v16
+    return-void
+
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/Test_move_result_wide.java b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/Test_move_result_wide.java
new file mode 100644
index 0000000..6c849dc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/Test_move_result_wide.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_result_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_result_wide.d.T_move_result_wide_1;
+
+public class Test_move_result_wide extends DxTestCase {
+    /**
+     * @title tests move-result-wide functionality
+     */
+    public void testN1() {
+        assertTrue(T_move_result_wide_1.run());
+    }
+
+
+    /**
+     * @constraint A23 
+     * @title  number of registers - dest is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  32-bit value
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B19 
+     * @title move-result-wide instruction must be immediately preceded 
+     * (in the insns array) by an <invoke-kind> instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B20 
+     * @title move-result-wide instruction must be immediately preceded 
+     * (in actual control flow) by an <invoke-kind> instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.d b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.d
new file mode 100644
index 0000000..e0d80c0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.d
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_wide_1.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 16
+
+    const v0, 0
+    
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1/foo()J
+
+    move-result-wide v0
+    const-wide v2, 12345
+    
+    cmp-long v5, v0, v2
+    if-eqz v5, Label1
+    
+    const v0, 0
+    return v0
+    
+Label1:
+    const v0, 1
+    return v0
+
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.java b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.java
new file mode 100644
index 0000000..4c7ef16
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_result_wide.d;
+
+public class T_move_result_wide_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2.d b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2.d
new file mode 100644
index 0000000..35eb63c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_wide_2.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2/foo()J
+    move-result-wide v16
+    
+    return-void
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3.d b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3.d
new file mode 100644
index 0000000..5f53fa3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_wide_3.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3/foo()Ljava/lang/Object;
+    move-result-wide v0
+    
+    return-void
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4.d b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4.d
new file mode 100644
index 0000000..3c10cab
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_wide_4.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4/foo()I
+    move-result-wide v0
+    
+    return-void
+.end method
+
+.method private foo()I
+.limit regs 2
+
+    const v0, 1234
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5.d b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5.d
new file mode 100644
index 0000000..9126ee2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_wide_5.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 16
+
+    const-wide v0, 123
+
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5/foo()J
+    move-result-wide v1
+    
+    return-wide v0
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6.d b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6.d
new file mode 100644
index 0000000..a499958
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_wide_6.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6/foo()J
+    nop
+    move-result-wide v1
+    
+    return-void
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7.d b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7.d
new file mode 100644
index 0000000..f6d47eb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_wide_7.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    goto Label1
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7/foo()J
+Label1:
+    move-result-wide v1
+    
+    return-void
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8.d b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8.d
new file mode 100644
index 0000000..f385a2d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_result_wide_8.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    const v0, 0
+    
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8/foo()J
+
+    move-result-wide v16
+    return-void
+
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide/Test_move_wide.java b/tools/vm-tests/src/dot/junit/opcodes/move_wide/Test_move_wide.java
new file mode 100644
index 0000000..4ab7421
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide/Test_move_wide.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_wide.d.T_move_wide_1;
+import dot.junit.opcodes.move_wide.d.T_move_wide_6;
+
+public class Test_move_wide extends DxTestCase {
+    /**
+     * @title tests move-wide functionality
+     */
+    public void testN1() {
+        assertTrue(T_move_wide_1.run());
+    }
+
+    
+    /**
+     * @title v0 -> v1
+     */
+    public void testN2() {
+        assertEquals(T_move_wide_6.run(), 0);
+    }
+
+    /**
+     * @constraint A24
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide.d.T_move_wide_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide.d.T_move_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide.d.T_move_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  src register contains 32-bit value
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide.d.T_move_wide_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide.d.T_move_wide_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.d
new file mode 100644
index 0000000..b0597f8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_1.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 16
+       const-wide v0, 1234
+       const-wide v14, 567989
+
+       move-wide v0, v14
+       
+       const-wide v4, 567989
+
+       cmp-long v10, v0, v4
+       if-nez v10, Label0
+       cmp-long v10, v14, v4
+       if-nez v10, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.java b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.java
new file mode 100644
index 0000000..8ddde82
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide.d;
+
+public class T_move_wide_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_2.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_2.d
new file mode 100644
index 0000000..22e992b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_2.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 9
+
+       move-wide v0, v9
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_3.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_3.d
new file mode 100644
index 0000000..b8e3db0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_3.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 9
+       const-wide v0, 0
+
+       move v9, v0
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_4.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_4.d
new file mode 100644
index 0000000..3eb95df
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_4.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+       move-wide v1, v8
+
+       const v1, 0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_5.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_5.d
new file mode 100644
index 0000000..92e67dc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_5.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 9
+       const v0, 124
+
+       move-wide v5, v0
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.d
new file mode 100644
index 0000000..4fecf88
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_6.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()I
+.limit regs 9
+       const-wide v0, 1233746384323
+
+       move-wide v1, v0
+       
+       const-wide v4, 1233746384323
+       cmp-long v8, v1, v4
+       
+       return v8
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.java b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.java
new file mode 100644
index 0000000..bd5de04
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide.d;
+
+public class T_move_wide_6 {
+
+    public static int run() {
+        return 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_7.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_7.d
new file mode 100644
index 0000000..9324fef
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide/d/T_move_wide_7.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_7.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 9
+       const-wide v0, 124
+       const-wide v5, 0
+
+       move-wide v1, v5
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/Test_move_wide_16.java b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/Test_move_wide_16.java
new file mode 100644
index 0000000..a2b776d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/Test_move_wide_16.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_wide_16.d.T_move_wide_16_1;
+import dot.junit.opcodes.move_wide_16.d.T_move_wide_16_9;
+
+public class Test_move_wide_16 extends DxTestCase {
+    /**
+     * @title v4001 -> v4000
+     */
+    public void testN1() {
+        assertTrue(T_move_wide_16_1.run());
+    }
+    
+    /**
+     * @title v1 -> v4001
+     */
+    public void testN2() {
+        assertTrue(T_move_wide_16_1.run());
+    }
+    
+    /**
+     * @title v1 -> v2
+     */
+    public void testN3() {
+        assertEquals(T_move_wide_16_9.run(), 0);
+    }
+
+    /**
+     * @constraint A24
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains 32-bit value
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.d
new file mode 100644
index 0000000..282edb4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.d
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_1.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const-wide v0, 123
+       const-wide v2, 5678
+       
+       move-wide/16 v4000, v0
+       move-wide/16 v4002, v2
+       
+       move-wide/16 v4000, v4002
+       
+       const-wide v4, 5678
+       
+       move-wide/16 v0, v4000
+       move-wide/16 v2, v4002
+
+       cmp-long v10, v0, v4
+       if-nez v10, Label0
+       cmp-long v10, v2, v4
+       if-nez v10, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.java b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.java
new file mode 100644
index 0000000..66b4da1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide_16.d;
+
+public class T_move_wide_16_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.d
new file mode 100644
index 0000000..57c7c93
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_2.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const-wide/16 v2, 5678
+       
+       move-wide/16 v4001, v2
+       move-wide/16 v0, v4001
+       
+       const-wide v4, 5678
+
+       cmp-long v10, v2, v4
+       if-nez v10, Label0
+       cmp-long v10, v0, v4
+       if-nez v10, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.java b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.java
new file mode 100644
index 0000000..e5f4966
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide_16.d;
+
+public class T_move_wide_16_2 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_3.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_3.d
new file mode 100644
index 0000000..e1e0ac7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_3.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       move-wide/16 v0, v5000
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_4.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_4.d
new file mode 100644
index 0000000..3f12810
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_4.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const-wide v0, 0
+       move-wide/16 v5000, v0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_5.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_5.d
new file mode 100644
index 0000000..7e61df4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_5.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move-wide/16 v0, v4999
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_6.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_6.d
new file mode 100644
index 0000000..2cea620
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_6.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const v123, 123
+       move-wide/16 v255, v123
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_7.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_7.d
new file mode 100644
index 0000000..7826131
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_7.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+
+       const-wide v123, 123
+       move-wide/16 v255, v124
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_8.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_8.d
new file mode 100644
index 0000000..c5e006d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_8.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       const-wide v0, 0
+       move-wide/16 v124, v0
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.d
new file mode 100644
index 0000000..aa8cdce
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_16_9.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()I
+.limit regs 5000
+       const-wide v1, 1233746384323
+       move-wide/16 v2, v1
+
+       const-wide v10, 1233746384323
+       cmp-long v4, v2, v10
+
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.java b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.java
new file mode 100644
index 0000000..f66146b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide_16.d;
+
+public class T_move_wide_16_9 {
+
+    public static int run() {
+        return 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/Test_move_wide_from16.java b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/Test_move_wide_from16.java
new file mode 100644
index 0000000..2434e92
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/Test_move_wide_from16.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide_from16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_1;
+import dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_2;
+
+public class Test_move_wide_from16 extends DxTestCase {
+    /**
+     * @title v4001 -> v255 -> v1
+     */
+    public void testN1() {
+        assertTrue(T_move_wide_from16_1.run());
+    }
+    
+    /**
+     * @title v100 -> 101
+     */
+    public void testN2() {
+        assertEquals(T_move_wide_from16_2.run(), 0);
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains 32-bit value
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.d
new file mode 100644
index 0000000..21aaca8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_from16_1.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const-wide v10, 5678233453
+   
+       move-wide/16 v4001, v10
+       
+       move-wide/from16 v255, v4001
+       move-wide/from16 v1, v255
+       
+       const-wide v4, 5678233453
+       
+       cmp-long v0, v1, v4
+       if-nez v0, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.java b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.java
new file mode 100644
index 0000000..8dfcd57
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide_from16.d;
+
+public class T_move_wide_from16_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.d
new file mode 100644
index 0000000..d2e6700
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_from16_2.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()I
+.limit regs 5000
+       const-wide v100, 5678233453
+       move-wide/from16 v101, v100
+       
+       const-wide v4, 5678233453
+       
+       cmp-long v0, v101, v4
+
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.java b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.java
new file mode 100644
index 0000000..b3207316
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.move_wide_from16.d;
+
+public class T_move_wide_from16_2 {
+
+    public static int run() {
+        return 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_3.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_3.d
new file mode 100644
index 0000000..8f95101
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_from16_3.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       move-wide/from16 v0, v5000
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_4.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_4.d
new file mode 100644
index 0000000..e5f282a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_from16_4.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5
+       const v1, 0    
+       move-wide/from16 v5, v1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_5.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_5.d
new file mode 100644
index 0000000..21ec075
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_from16_5.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move-wide/from16 v0, v4999
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_6.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_6.d
new file mode 100644
index 0000000..784e31a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_from16_6.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const v4500, 123
+       move-wide/from16 v0, v4500
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_7.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_7.d
new file mode 100644
index 0000000..1790fe5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_from16_7.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+
+       const-wide v1234, 123
+       move-wide/from16 v255, v1235
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_8.d b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_8.d
new file mode 100644
index 0000000..80d80e9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_move_wide_from16_8.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       const-wide v0, 0
+       move-wide/from16 v124, v0
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_double/Test_mul_double.java b/tools/vm-tests/src/dot/junit/opcodes/mul_double/Test_mul_double.java
new file mode 100644
index 0000000..9a63412
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_double/Test_mul_double.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_double.d.T_mul_double_1;
+import dot.junit.opcodes.mul_double.d.T_mul_double_4;
+
+public class Test_mul_double extends DxTestCase {
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+
+    public void testN1() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(8.478000000000002d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(-0d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, -3.14d
+     */
+    public void testN3() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(8.478000000000002d, t.run(-3.14d, -2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this multiplication of long and long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_double_4 t = new T_mul_double_4();
+        try {
+            t.run(500000l, 2.7d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, 0
+     */
+    public void testB2() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY, 0));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = +0, -0d
+     */
+    public void testB5() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(-0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(+0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB7() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE,
+                Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, -1.4E-45f
+     */
+    public void testB8() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(-0d, t.run(Double.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double.d.T_mul_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double.d.T_mul_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double.d.T_mul_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.d b/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.d
new file mode 100644
index 0000000..8f7a9a1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_1.java
+.class public dot.junit.opcodes.mul_double.d.T_mul_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.java b/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.java
new file mode 100644
index 0000000..a70f250
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_double.d;
+
+public class T_mul_double_1 {
+
+    public double run(double a, double b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_2.d b/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_2.d
new file mode 100644
index 0000000..99dd815
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_2.java
+.class public dot.junit.opcodes.mul_double.d.T_mul_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double v0, v10, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_3.d b/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_3.d
new file mode 100644
index 0000000..54a26c2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_3.java
+.class public dot.junit.opcodes.mul_double.d.T_mul_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)D
+.limit regs 14
+
+       mul-double v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.d b/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.d
new file mode 100644
index 0000000..54df7a5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_4.java
+.class public dot.junit.opcodes.mul_double.d.T_mul_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 14
+
+       mul-double v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.java b/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.java
new file mode 100644
index 0000000..a707538
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_double.d;
+
+public class T_mul_double_4 {
+
+    public double run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_5.d b/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_5.d
new file mode 100644
index 0000000..d3d6ec3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_double/d/T_mul_double_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_5.java
+.class public dot.junit.opcodes.mul_double.d.T_mul_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double v0, v9, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/Test_mul_double_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/Test_mul_double_2addr.java
new file mode 100644
index 0000000..2637e18
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/Test_mul_double_2addr.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_double_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_1;
+import dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_4;
+
+public class Test_mul_double_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+
+    public void testN1() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(8.478000000000002d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(-0d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, -3.14d
+     */
+    public void testN3() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(8.478000000000002d, t.run(-3.14d, -2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this multiplication of long and long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_double_2addr_4 t = new T_mul_double_2addr_4();
+        try {
+            t.run(500000l, 2.7d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, 0
+     */
+    public void testB2() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY, 0));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = +0, -0d
+     */
+    public void testB5() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(-0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(+0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB7() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE,
+                Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, -1.4E-45f
+     */
+    public void testB8() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(-0d, t.run(Double.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.d
new file mode 100644
index 0000000..373a854
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_2addr_1.java
+.class public dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.java
new file mode 100644
index 0000000..f5bdb4b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_double_2addr.d;
+
+public class T_mul_double_2addr_1 {
+
+    public double run(double a, double b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_2.d
new file mode 100644
index 0000000..05485d8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_2addr_2.java
+.class public dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double/2addr v10, v14
+       return-wide v10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_3.d
new file mode 100644
index 0000000..d981779
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_2addr_3.java
+.class public dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)D
+.limit regs 14
+
+       mul-double/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.d
new file mode 100644
index 0000000..1654300
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_2addr_4.java
+.class public dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 14
+
+       mul-double/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.java b/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.java
new file mode 100644
index 0000000..8a17e15
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_double_2addr.d;
+
+public class T_mul_double_2addr_4 {
+
+    public double run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_5.d
new file mode 100644
index 0000000..ef36f48
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_double_2addr_5.java
+.class public dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float/Test_mul_float.java b/tools/vm-tests/src/dot/junit/opcodes/mul_float/Test_mul_float.java
new file mode 100644
index 0000000..6359122
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float/Test_mul_float.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_float.d.T_mul_float_1;
+import dot.junit.opcodes.mul_float.d.T_mul_float_6;
+
+public class Test_mul_float extends DxTestCase {
+    
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(8.478001f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(-0f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, -3.14f
+     */
+    public void testN3() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(8.478001f, t.run(-3.14f, -2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_float_6 t = new T_mul_float_6();
+        try {
+            t.run(3.12f, 13);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, 0
+     */
+    public void testB2() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY, 0));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(-0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(+0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB7() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB8() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(-0f, t.run(Float.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float.d.T_mul_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float.d.T_mul_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float.d.T_mul_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float.d.T_mul_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.d b/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.d
new file mode 100644
index 0000000..8be7048
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_float_1.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.java b/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.java
new file mode 100644
index 0000000..4010691
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_float.d;
+
+public class T_mul_float_1 {
+
+    public float run(float a, float b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_2.d b/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_2.d
new file mode 100644
index 0000000..2647599
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_float_2.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_3.d b/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_3.d
new file mode 100644
index 0000000..13a31f3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_float_3.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)F
+.limit regs 8
+
+       mul-float v0, v5, v6
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_4.d b/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_4.d
new file mode 100644
index 0000000..a92ef8f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_float_4.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)F
+.limit regs 8
+
+       mul-float v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_5.d b/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_5.d
new file mode 100644
index 0000000..9f99d59
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_5.d
@@ -0,0 +1,18 @@
+.source T_mul_float_5.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.d b/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.d
new file mode 100644
index 0000000..7b3b61a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.d
@@ -0,0 +1,18 @@
+.source T_mul_float_6.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)F
+.limit regs 8
+
+       mul-float v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.java b/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.java
new file mode 100644
index 0000000..abccc0c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_float.d;
+
+public class T_mul_float_6 {
+
+    public float run(float a, int b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/Test_mul_float_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/Test_mul_float_2addr.java
new file mode 100644
index 0000000..0686a9b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/Test_mul_float_2addr.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_float_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_1;
+import dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_6;
+
+public class Test_mul_float_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(8.478001f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(-0f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, -3.14f
+     */
+    public void testN3() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(8.478001f, t.run(-3.14f, -2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_float_2addr_6 t = new T_mul_float_2addr_6();
+        try {
+            t.run(3.12f, 13);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, 0
+     */
+    public void testB2() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY, 0));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(-0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(+0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB7() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB8() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(-0f, t.run(Float.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.d
new file mode 100644
index 0000000..05faaba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_mul_float_2addr_1.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.java
new file mode 100644
index 0000000..1f6b647
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_float_2addr.d;
+
+public class T_mul_float_2addr_1 {
+
+    public float run(float a, float b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_2.d
new file mode 100644
index 0000000..11fef7b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_float_2addr_2.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_3.d
new file mode 100644
index 0000000..9d83fef
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_float_2addr_3.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)F
+.limit regs 8
+
+       mul-float/2addr v5, v6
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_4.d
new file mode 100644
index 0000000..eebb510
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_float_2addr_4.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)F
+.limit regs 8
+
+       mul-float/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_5.d
new file mode 100644
index 0000000..03a888b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_mul_float_2addr_5.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.d
new file mode 100644
index 0000000..67cccbd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_mul_float_2addr_6.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)F
+.limit regs 8
+
+       mul-float/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.java b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.java
new file mode 100644
index 0000000..f580894
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_float_2addr.d;
+
+public class T_mul_float_2addr_6 {
+
+    public float run(float a, int b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int/Test_mul_int.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int/Test_mul_int.java
new file mode 100644
index 0000000..f9252c4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int/Test_mul_int.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_int.d.T_mul_int_1;
+import dot.junit.opcodes.mul_int.d.T_mul_int_6;
+
+public class Test_mul_int extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(32, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = -2, 255
+     */
+    public void testN2() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(-510, t.run(-2, 255));
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe, 2
+     */
+    public void testN3() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(-4, t.run(0x7ffffffe, 2));
+    }
+
+    /**
+     * @title Arguments = 4, 0x80000001
+     */
+    public void testN4() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(4, t.run(4, 0x80000001));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_mul_int_6 t = new T_mul_int_6();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(0, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE,
+                Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(0, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int.d.T_mul_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int.d.T_mul_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int.d.T_mul_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int.d.T_mul_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.d
new file mode 100644
index 0000000..3b4a63f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_1.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 9
+
+       mul-int v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.java
new file mode 100644
index 0000000..4ac3bea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int.d;
+
+public class T_mul_int_1 {
+
+    public int run(int a, int b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_2.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_2.d
new file mode 100644
index 0000000..ed71fa1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_2.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       mul-int v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_3.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_3.d
new file mode 100644
index 0000000..059f7b4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_3.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 9
+
+       mul-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_4.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_4.d
new file mode 100644
index 0000000..67c0e37
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_4.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 9
+
+       mul-int v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_5.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_5.d
new file mode 100644
index 0000000..04be572
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_5.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 9
+
+       mul-int v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.d
new file mode 100644
index 0000000..e181e71
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_6.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 9
+
+       mul-int v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.java
new file mode 100644
index 0000000..a4e6a07
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int.d;
+
+public class T_mul_int_6 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/Test_mul_int_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/Test_mul_int_2addr.java
new file mode 100644
index 0000000..010896c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/Test_mul_int_2addr.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_1;
+import dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_6;
+
+public class Test_mul_int_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(32, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = -2, 255
+     */
+    public void testN2() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(-510, t.run(-2, 255));
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe, 2
+     */
+    public void testN3() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(-4, t.run(0x7ffffffe, 2));
+    }
+
+    /**
+     * @title Arguments = 4, 0x80000001
+     */
+    public void testN4() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(4, t.run(4, 0x80000001));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_mul_int_2addr_6 t = new T_mul_int_2addr_6();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(0, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE,
+                Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(0, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.d
new file mode 100644
index 0000000..86a6c9a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_2addr_1.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       mul-int/2addr v6, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.java
new file mode 100644
index 0000000..b4878b5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_2addr.d;
+
+public class T_mul_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_2.d
new file mode 100644
index 0000000..744c214
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_2addr_2.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       mul-int/2addr v7, v8
+       return v7
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_3.d
new file mode 100644
index 0000000..8c14a36
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_2addr_3.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       mul-int/2addr v5, v6
+       return v5
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_4.d
new file mode 100644
index 0000000..64e0ba1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_2addr_4.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       mul-int/2addr v5, v7
+       return v5
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_5.d
new file mode 100644
index 0000000..9a22395
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_2addr_5.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       mul-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.d
new file mode 100644
index 0000000..c8bbcd2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_2addr_6.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 8
+
+       mul-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.java
new file mode 100644
index 0000000..71f6655
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_2addr.d;
+
+public class T_mul_int_2addr_6 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/Test_mul_int_lit16.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/Test_mul_int_lit16.java
new file mode 100644
index 0000000..d77dd0a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/Test_mul_int_lit16.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_1;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_2;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_3;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_4;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_5;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_6;
+
+public class Test_mul_int_lit16 extends DxTestCase {
+
+    /**
+     * @title Arguments = 205, 130
+     */
+    public void testN1() {
+        T_mul_int_lit16_1 t = new T_mul_int_lit16_1();
+        assertEquals(26650, t.run(205));
+    }
+
+    /**
+     * @title Arguments = -180, 130
+     */
+    public void testN2() {
+        T_mul_int_lit16_1 t = new T_mul_int_lit16_1();
+        assertEquals(-23400, t.run(-180));
+    }
+
+    /**
+     * @title Arguments = 0xfa, 130
+     */
+    public void testN3() {
+        T_mul_int_lit16_1 t = new T_mul_int_lit16_1();
+        assertEquals(0x7ef4, t.run(0xfa));
+    }
+
+    /**
+     * @title Arguments = -101, -321
+     */
+    public void testN4() {
+        T_mul_int_lit16_2 t = new T_mul_int_lit16_2();
+        assertEquals(32421, t.run(-101));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_mul_int_lit16_3 t = new T_mul_int_lit16_3();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, 0 
+     */
+    public void testB1() {
+        T_mul_int_lit16_4 t = new T_mul_int_lit16_4();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Arguments = 0, Short.MAX_VALUE
+     */
+    public void testB2() {
+        T_mul_int_lit16_4 t = new T_mul_int_lit16_4();
+        assertEquals(0, t.run(Short.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Short.MAX_VALUE
+     */
+    public void testB3() {
+        T_mul_int_lit16_5 t = new T_mul_int_lit16_5();
+        assertEquals(Short.MAX_VALUE, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 1, Short.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_int_lit16_5 t = new T_mul_int_lit16_5();
+        assertEquals(Short.MIN_VALUE, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 32767, Short.MIN_VALUE
+     */
+    public void testB5() {
+        T_mul_int_lit16_6 t = new T_mul_int_lit16_6();
+        assertEquals(-1073709056, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int * double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long * int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference * int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.d
new file mode 100644
index 0000000..d7dd6f3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_1.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, 130
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.java
new file mode 100644
index 0000000..e4b1503
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_1 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.d
new file mode 100644
index 0000000..91c550c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_10.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v7, 4321
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.java
new file mode 100644
index 0000000..54d82de
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_10 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.d
new file mode 100644
index 0000000..200afbe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_2.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, -321
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.java
new file mode 100644
index 0000000..33fab36
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_2 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.d
new file mode 100644
index 0000000..aed3dd4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_3.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, 130
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.java
new file mode 100644
index 0000000..959ac8d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_3 {
+    
+    public int run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.d
new file mode 100644
index 0000000..532ce52
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_4.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, 0
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.java
new file mode 100644
index 0000000..e4abf30
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_4 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.d
new file mode 100644
index 0000000..0d4d3ea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_5.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, 1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.java
new file mode 100644
index 0000000..4ca4f63
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_5 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.d
new file mode 100644
index 0000000..a719ab3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_6.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, 32767
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.java
new file mode 100644
index 0000000..d926570
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_6 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.d
new file mode 100644
index 0000000..511de2d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_7.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v9, 3276
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.java
new file mode 100644
index 0000000..a891dd9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_7 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.d
new file mode 100644
index 0000000..288f649
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_8.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 9
+
+       mul-int/lit16 v0, v7, 4321
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.java
new file mode 100644
index 0000000..d639850
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_8 {
+    
+    public int run(double a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.d
new file mode 100644
index 0000000..e8d0737
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit16_9.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 9
+
+       mul-int/lit16 v0, v7, 4321
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.java
new file mode 100644
index 0000000..b7f8085
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_9 {
+    
+    public int run(long a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/Test_mul_int_lit8.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/Test_mul_int_lit8.java
new file mode 100644
index 0000000..e2dae07
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/Test_mul_int_lit8.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_1;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_2;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_3;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_4;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_5;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_6;
+
+public class Test_mul_int_lit8 extends DxTestCase {
+    
+    /**
+     * @title Arguments =  10, 55
+     */
+    public void testN1() {
+        T_mul_int_lit8_1 t = new T_mul_int_lit8_1();
+        assertEquals(550, t.run(55));
+    }
+
+    /**
+     * @title Arguments = 10, -25 
+     */
+    public void testN2() {
+        T_mul_int_lit8_1 t = new T_mul_int_lit8_1();
+        assertEquals(-250, t.run(-25));
+    }
+
+    /**
+     * @title Arguments = -15, -23
+     */
+    public void testN3() {
+        T_mul_int_lit8_2 t = new T_mul_int_lit8_2();
+        assertEquals(345, t.run(-23));
+    }
+    
+    /**
+     * @title Arguments = 0x7ffffffe, 10
+     */
+    public void testN4() {
+        T_mul_int_lit8_1 t = new T_mul_int_lit8_1();
+        assertEquals(-20, t.run(0x7ffffffe));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_mul_int_lit8_3 t = new T_mul_int_lit8_3();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB1() {
+        T_mul_int_lit8_4 t = new T_mul_int_lit8_4();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Arguments = 0, Byte.MAX_VALUE
+     */
+    public void testB2() {
+        T_mul_int_lit8_4 t = new T_mul_int_lit8_4();
+        assertEquals(0, t.run(Byte.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Byte.MAX_VALUE
+     */
+    public void testB3() {
+        T_mul_int_lit8_5 t = new T_mul_int_lit8_5();
+        assertEquals(Byte.MAX_VALUE, t.run(Byte.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 1, Short.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_int_lit8_5 t = new T_mul_int_lit8_5();
+        assertEquals(Short.MIN_VALUE, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 127, Short.MIN_VALUE
+     */
+    public void testB5() {
+        T_mul_int_lit8_6 t = new T_mul_int_lit8_6();
+        assertEquals(-4161536, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int * double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long * int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title types of arguments - reference * int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.d
new file mode 100644
index 0000000..8aebfd4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_1.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.java
new file mode 100644
index 0000000..dd87288
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_1 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.d
new file mode 100644
index 0000000..716726e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_10.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v7, 111
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.java
new file mode 100644
index 0000000..a50d3d1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_10 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.d
new file mode 100644
index 0000000..c4d9174
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_2.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, -15
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.java
new file mode 100644
index 0000000..97e30cb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_2 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.d
new file mode 100644
index 0000000..fc70d45
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_3.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.java
new file mode 100644
index 0000000..dc7352a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_3 {
+    
+    public int run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.d
new file mode 100644
index 0000000..a9cf5e7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_4.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, 0
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.java
new file mode 100644
index 0000000..4e395c7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_4 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.d
new file mode 100644
index 0000000..1e08af2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_5.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, 1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.java
new file mode 100644
index 0000000..1b7c65f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_5 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.d
new file mode 100644
index 0000000..bfcfcc2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_6.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, 127
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.java
new file mode 100644
index 0000000..6a723c2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_6 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.d
new file mode 100644
index 0000000..fe88ffb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_7.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v9, 12
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.java
new file mode 100644
index 0000000..34f5fde
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_7 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.d
new file mode 100644
index 0000000..fc6ec8a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_8.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 9
+
+       mul-int/lit8 v0, v7, 123
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.java
new file mode 100644
index 0000000..8fb46ae
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_8 {
+    
+    public int run(double a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.d b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.d
new file mode 100644
index 0000000..943b9ee
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_int_lit8_9.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 9
+
+       mul-int/lit8 v0, v7, 123
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.java b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.java
new file mode 100644
index 0000000..c7ebd3d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_9 {
+    
+    public int run(long a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long/Test_mul_long.java b/tools/vm-tests/src/dot/junit/opcodes/mul_long/Test_mul_long.java
new file mode 100644
index 0000000..1abf57e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long/Test_mul_long.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_long.d.T_mul_long_1;
+import dot.junit.opcodes.mul_long.d.T_mul_long_3;
+
+public class Test_mul_long extends DxTestCase {
+    
+    /**
+     * @title Arguments = 222000000000l, 5000000000l
+     */
+    public void testN1() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(3195355577426903040l, t.run(222000000000l, 5000000000l));
+    }
+
+    /**
+     * @title Arguments = -123456789l, 123456789l
+     */
+    public void testN2() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(-15241578750190521l, t.run(-123456789l, 123456789l));
+    }
+
+    /**
+     * @title Arguments = -123456789l, -123456789l
+     */
+    public void testN3() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(15241578750190521l, t.run(-123456789l, -123456789l));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this multiplication of long and long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_long_3 t = new T_mul_long_3();
+        try {
+            t.run(500000l, 2.7d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(0, t.run(0, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(9223372036854775807L, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, Long.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MAX_VALUE,
+                Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, -1
+     */
+    public void testB6() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(-9223372036854775807L, t.run(Long.MAX_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1
+     */
+    public void testB7() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, -1));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long.d.T_mul_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long * int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long.d.T_mul_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float * long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long.d.T_mul_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference * long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long.d.T_mul_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.d b/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.d
new file mode 100644
index 0000000..de4736d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_1.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.java b/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.java
new file mode 100644
index 0000000..5cb0074
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_long.d;
+
+public class T_mul_long_1 {
+
+    public long run(long a, long b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_2.d b/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_2.d
new file mode 100644
index 0000000..4e0d25c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_2.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long v0, v12, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.d b/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.d
new file mode 100644
index 0000000..f2faf7d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_3.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       mul-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.java b/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.java
new file mode 100644
index 0000000..ab7743f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_long.d;
+
+public class T_mul_long_3 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_4.d b/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_4.d
new file mode 100644
index 0000000..bd62f75
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_4.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 14
+
+       mul-long v0, v11, v13
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_5.d b/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_5.d
new file mode 100644
index 0000000..3d1d09e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_5.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FJ)J
+.limit regs 14
+
+       mul-long v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_6.d b/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_6.d
new file mode 100644
index 0000000..656ec8c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long/d/T_mul_long_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_6.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long v0, v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/Test_mul_long_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/Test_mul_long_2addr.java
new file mode 100644
index 0000000..3996c60
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/Test_mul_long_2addr.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_1;
+import dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_3;
+
+public class Test_mul_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 222000000000l, 5000000000l
+     */
+    public void testN1() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(3195355577426903040l, t.run(222000000000l, 5000000000l));
+    }
+
+    /**
+     * @title Arguments = -123456789l, 123456789l
+     */
+    public void testN2() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(-15241578750190521l, t.run(-123456789l, 123456789l));
+    }
+
+    /**
+     * @title Arguments = -123456789l, -123456789l
+     */
+    public void testN3() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(15241578750190521l, t.run(-123456789l, -123456789l));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this multiplication of long and long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_long_2addr_3 t = new T_mul_long_2addr_3();
+        try {
+            t.run(500000l, 2.7d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(0, t.run(0, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(9223372036854775807L, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, Long.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MAX_VALUE,
+                Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, -1
+     */
+    public void testB6() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(-9223372036854775807L, t.run(Long.MAX_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1
+     */
+    public void testB7() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, -1));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long * int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float * long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference * long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.d
new file mode 100644
index 0000000..1175bf4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_2addr_1.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.java
new file mode 100644
index 0000000..886761f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_long_2addr.d;
+
+public class T_mul_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_2.d
new file mode 100644
index 0000000..c044257
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_2addr_2.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long/2addr v12, v14
+       return-wide v12
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.d
new file mode 100644
index 0000000..6735fe5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_2addr_3.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       mul-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.java b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.java
new file mode 100644
index 0000000..122cf54
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.mul_long_2addr.d;
+
+public class T_mul_long_2addr_3 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_4.d
new file mode 100644
index 0000000..e708710
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_2addr_4.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 14
+
+       mul-long/2addr v11, v13
+       return-wide v11
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_5.d
new file mode 100644
index 0000000..365e8ca
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_2addr_5.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FJ)J
+.limit regs 14
+
+       mul-long/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_6.d
new file mode 100644
index 0000000..bd6d465
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_mul_long_2addr_6.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_double/Test_neg_double.java b/tools/vm-tests/src/dot/junit/opcodes/neg_double/Test_neg_double.java
new file mode 100644
index 0000000..53fe02b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_double/Test_neg_double.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.neg_double.d.T_neg_double_1;
+import dot.junit.opcodes.neg_double.d.T_neg_double_4;
+
+public class Test_neg_double extends DxTestCase {
+    
+    /**
+     * @title Argument = 1
+     */
+    public void testN1() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(-1d, t.run(1d));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN2() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(1d, t.run(-1d));
+    }
+
+    /**
+     * @title Argument = +0
+     */
+    public void testN3() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(-0d, t.run(+0d));
+    }
+
+    /**
+     * @title Argument = -2.7
+     */
+    public void testN4() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(2.7d, t.run(-2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of long and double makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_neg_double_4 t = new T_neg_double_4();
+        try {
+            t.run(500000l);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Argument = Double.NaN
+     */
+    public void testB1() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(Double.NaN, t.run(Double.NaN));
+    }
+
+    /**
+     * @title Argument = Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = Double.MAX_VALUE
+     */
+    public void testB4() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(-1.7976931348623157E308d, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Double.MIN_VALUE
+     */
+    public void testB5() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(-4.9E-324d, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_double.d.T_neg_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_double.d.T_neg_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_double.d.T_neg_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_double.d.T_neg_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.d b/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.d
new file mode 100644
index 0000000..b094774
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_double_1.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)D
+.limit regs 8
+
+       neg-double v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.java b/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.java
new file mode 100644
index 0000000..dcf3da6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_double.d;
+
+public class T_neg_double_1 {
+
+    public double run(double d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_2.d b/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_2.d
new file mode 100644
index 0000000..a99ecff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_double_2.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)D
+.limit regs 8
+
+       neg-double v0, v8
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_3.d b/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_3.d
new file mode 100644
index 0000000..26d6715
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_double_3.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 8
+
+       neg-double v0, v7
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.d b/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.d
new file mode 100644
index 0000000..d7a51d5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_double_4.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       neg-double v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.java b/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.java
new file mode 100644
index 0000000..d7507ae
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_double.d;
+
+public class T_neg_double_4 {
+
+    public double run(long d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_5.d b/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_5.d
new file mode 100644
index 0000000..b8cbb4b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_double_5.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 8
+
+       neg-double v0, v7
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_6.d b/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_6.d
new file mode 100644
index 0000000..33e252a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_double/d/T_neg_double_6.d
@@ -0,0 +1,18 @@
+.source T_neg_double_6.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)D
+.limit regs 8
+
+       neg-double v0, v5
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_float/Test_neg_float.java b/tools/vm-tests/src/dot/junit/opcodes/neg_float/Test_neg_float.java
new file mode 100644
index 0000000..cfd7edf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_float/Test_neg_float.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.neg_float.d.T_neg_float_1;
+import dot.junit.opcodes.neg_float.d.T_neg_float_6;
+
+public class Test_neg_float extends DxTestCase {
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN1() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(-1f, t.run(1f));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN2() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(1f, t.run(-1f));
+    }
+
+    /**
+     * @title Argument = +0
+     */
+    public void testN3() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(-0f, t.run(+0f));
+    }
+
+    /**
+     * @title Argument = -2.7
+     */
+    public void testN4() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(2.7f, t.run(-2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_neg_float_6 t = new T_neg_float_6();
+        try {
+            t.run(5);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Float.NaN
+     */
+    public void testB1() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(Float.NaN, t.run(Float.NaN));
+    }
+
+    /**
+     * @title Argument = Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = Float.MAX_VALUE
+     */
+    public void testB4() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(-3.4028235E38f, t.run(Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Float.MIN
+     */
+    public void testB5() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(-1.4E-45f, t.run(Float.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_float.d.T_neg_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_float.d.T_neg_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_float.d.T_neg_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_float.d.T_neg_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.d b/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.d
new file mode 100644
index 0000000..3259f41
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_float_1.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)F
+.limit regs 5
+
+       neg-float v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.java b/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.java
new file mode 100644
index 0000000..9709099
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_float.d;
+
+public class T_neg_float_1 {
+
+    public float run(float d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_2.d b/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_2.d
new file mode 100644
index 0000000..966cbe7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_float_2.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)F
+.limit regs 5
+
+       neg-float v0, v5
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_3.d b/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_3.d
new file mode 100644
index 0000000..6c6be2e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_float_3.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 5
+
+       neg-float v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_4.d b/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_4.d
new file mode 100644
index 0000000..3b9c963
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_float_4.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 5
+
+       neg-float v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_5.d b/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_5.d
new file mode 100644
index 0000000..7a391f4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_5.d
@@ -0,0 +1,18 @@
+.source T_neg_float_5.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)F
+.limit regs 5
+
+       neg-float v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.d b/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.d
new file mode 100644
index 0000000..897725b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_float_6.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       neg-float v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.java b/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.java
new file mode 100644
index 0000000..f597964
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_float.d;
+
+public class T_neg_float_6 {
+
+    public float run(int d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_int/Test_neg_int.java b/tools/vm-tests/src/dot/junit/opcodes/neg_int/Test_neg_int.java
new file mode 100644
index 0000000..817e03a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_int/Test_neg_int.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.neg_int.d.T_neg_int_1;
+import dot.junit.opcodes.neg_int.d.T_neg_int_2;
+import dot.junit.opcodes.neg_int.d.T_neg_int_7;
+
+public class Test_neg_int extends DxTestCase {
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN1() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(-1, t.run(1));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN2() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(1, t.run(-1));
+    }
+
+    /**
+     * @title Argument = 32768
+     */
+    public void testN3() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(-32768, t.run(32768));
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testN4() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Check that -x == (~x + 1)
+     */
+    public void testN5() {
+        T_neg_int_2 t = new T_neg_int_2();
+        assertTrue(t.run(5));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_neg_int_7 t = new T_neg_int_7();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(0x80000001, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_int.d.T_neg_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_int.d.T_neg_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_int.d.T_neg_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_int.d.T_neg_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.d b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.d
new file mode 100644
index 0000000..0ff47de
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_int_1.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       neg-int v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.java b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.java
new file mode 100644
index 0000000..fc2a24b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_int.d;
+
+public class T_neg_int_1 {
+
+    public int run(int d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.d b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.d
new file mode 100644
index 0000000..f66368b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.d
@@ -0,0 +1,29 @@
+.source T_neg_int_2.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 7
+
+       neg-int v4, v6
+       
+       not-int v3, v6
+       add-int/lit8 v2, v3, 1
+
+       if-eq v4, v2, Label1
+       const/4 v1, 0
+
+Label15:
+       return v1
+Label1:
+       const/4 v1, 1
+       goto Label15
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.java b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.java
new file mode 100644
index 0000000..f37b31d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_int.d;
+
+public class T_neg_int_2 {
+
+     public boolean run(int d) {
+         return -d == (~d + 1);
+     }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_3.d b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_3.d
new file mode 100644
index 0000000..90c16f9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_int_3.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       neg-int v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_4.d b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_4.d
new file mode 100644
index 0000000..4d2c14b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_int_4.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 5
+
+       neg-int v0, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_5.d b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_5.d
new file mode 100644
index 0000000..aa67eff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_int_5.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 5
+
+       neg-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_6.d b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_6.d
new file mode 100644
index 0000000..af24f55
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_6.d
@@ -0,0 +1,18 @@
+.source T_neg_int_6.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       neg-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.d b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.d
new file mode 100644
index 0000000..b1fc23d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_int_7.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       neg-int v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.java b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.java
new file mode 100644
index 0000000..24e130c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_int.d;
+
+public class T_neg_int_7 {
+
+    public int run(float d) {
+        return -(int)d;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_long/Test_neg_long.java b/tools/vm-tests/src/dot/junit/opcodes/neg_long/Test_neg_long.java
new file mode 100644
index 0000000..f731c64
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_long/Test_neg_long.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.neg_long.d.T_neg_long_1;
+import dot.junit.opcodes.neg_long.d.T_neg_long_2;
+import dot.junit.opcodes.neg_long.d.T_neg_long_4;
+
+public class Test_neg_long extends DxTestCase {
+ 
+    /**
+     * @title Argument = 123123123272432432l
+     */
+    public void testN1() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(-123123123272432432l, t.run(123123123272432432l));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(-1l, t.run(1l));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(1l, t.run(-1l));
+    }
+
+    /**
+     * @title Check that -x == (~x + 1)
+     */
+    public void testN4() {
+        T_neg_long_2 t = new T_neg_long_2();
+        assertTrue(t.run(15l));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of long and double makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_neg_long_4 t = new T_neg_long_4();
+        try {
+            t.run(1.23d);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB1() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Argument = Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(-9223372036854775807L, t.run(Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Long.MIN_VALUE
+     */
+    public void testB3() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_long.d.T_neg_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_long.d.T_neg_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_long.d.T_neg_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_long.d.T_neg_long_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.d b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.d
new file mode 100644
index 0000000..7973f10
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_long_1.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 8
+
+       neg-long v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.java b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.java
new file mode 100644
index 0000000..dea3c8c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_long.d;
+
+public class T_neg_long_1 {
+
+    public long run(long d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.d b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.d
new file mode 100644
index 0000000..03891af
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.d
@@ -0,0 +1,33 @@
+.source T_neg_long_2.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)Z
+.limit regs 14
+
+       neg-long v10, v12
+       
+       not-long v8, v12
+       const-wide v6, 1
+       add-long v4, v6, v8
+
+       cmp-long v3, v4, v10
+       const/4 v1, 0
+       if-eq v1, v3, Label1
+       const/4 v0, 0
+
+Label15:
+       return v0
+Label1:
+       const/4 v0, 1
+       goto Label15
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.java b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.java
new file mode 100644
index 0000000..dcf67e1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_long.d;
+
+public class T_neg_long_2 {
+
+    public boolean run(long d) {
+        return -d == (~d + 1);
+     }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_3.d b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_3.d
new file mode 100644
index 0000000..ab92394
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_long_3.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 8
+
+       neg-long v0, v8
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.d b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.d
new file mode 100644
index 0000000..98fe8da
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_long_4.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 8
+
+       neg-long v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.java b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.java
new file mode 100644
index 0000000..20631a2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.neg_long.d;
+
+public class T_neg_long_4 {
+
+    public long run(double d) {
+        return -(long)d;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_5.d b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_5.d
new file mode 100644
index 0000000..bd3a364
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_long_5.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 8
+
+       neg-long v0, v7
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_6.d b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_6.d
new file mode 100644
index 0000000..a936135
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_long_6.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 8
+
+       neg-long v0, v7
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_7.d b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_7.d
new file mode 100644
index 0000000..66af380
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/neg_long/d/T_neg_long_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_neg_long_7.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 8
+
+       neg-long v0, v5
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_array/Test_new_array.java b/tools/vm-tests/src/dot/junit/opcodes/new_array/Test_new_array.java
new file mode 100644
index 0000000..d474ec1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_array/Test_new_array.java
@@ -0,0 +1,213 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_array;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.new_array.d.T_new_array_1;
+import dot.junit.opcodes.new_array.d.T_new_array_2;
+import dot.junit.opcodes.new_array.d.T_new_array_3;
+
+public class Test_new_array extends DxTestCase {
+    
+     @SuppressWarnings("unused")
+     private class TestStub{
+            // used by testVFE8
+     }
+    
+    /**
+     * @title Array of ints
+     */
+    public void testN1() {
+        T_new_array_1 t = new T_new_array_1();
+        int[] r = t.run(10);
+        int l = r.length;
+        assertEquals(10, l);
+
+        // check default initialization
+        for (int i = 0; i < l; i++) {
+            assertEquals(0, r[i]);
+        }
+
+    }
+
+    /**
+     * @title Array of booleans
+     */
+    public void testN2() {
+        T_new_array_2 t = new T_new_array_2();
+        boolean[] r = t.run(10);
+        int l = r.length;
+        assertEquals(10, l);
+
+        // check default initialization
+        for (int i = 0; i < l; i++) {
+            assertFalse(r[i]);
+        }
+    }
+    
+    /**
+     * @title Array of Objects
+     */
+    public void testN3() {
+        T_new_array_3 t = new T_new_array_3();
+        Object[] r = t.run(10);
+        int l = r.length;
+        assertEquals(10, l);
+
+        // check default initialization
+        for (int i = 0; i < l; i++) {
+            assertNull(r[i]);
+        }
+    }
+    
+    /**
+     * @title Array size = 0
+     */
+    public void testB1() {
+        T_new_array_1 t = new T_new_array_1();
+        int[] r = t.run(0);
+        assertNotNull(r);
+        assertEquals(0, r.length);
+    }    
+
+    /**
+     * @title expected NegativeArraySizeException
+     */
+    public void testE1() {
+        T_new_array_2 t = new T_new_array_2();
+        try {
+            t.run(-1);
+            fail("expected NegativeArraySizeException");
+        } catch (NegativeArraySizeException nase) {
+            // expected
+        }
+    }
+    
+
+    /**
+     * @constraint B1 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  size argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1
+     * @title  size argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A19 
+     * @title  constant pool index
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A22 
+     * @title  attempt to create object
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A20 
+     * @title  array of more than 255 dimensions
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to instantiate array of non-existent class. Java 
+     * throws NoClassDefFoundError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to instantiate array of inaccessible class. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_1.d b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_1.d
new file mode 100644
index 0000000..e681faf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_1.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.limit regs 5
+
+       new-array v0, v4, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_1.java b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_1.java
new file mode 100644
index 0000000..7455164
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_array.d;
+
+public class T_new_array_1 {
+
+    public int[] run(int sz) {
+        return new int[sz];
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_10.d b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_10.d
new file mode 100644
index 0000000..bcd570b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_10.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 5
+
+       const v0, 3
+       new-array v0, v0, [Ldot/junit/opcodes/new_array/Test_new_array$TestStub;
+       
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_11.d b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_11.d
new file mode 100644
index 0000000..3f0b3da
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_11.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 5
+
+       const v0, 3
+       new-array v0, v0, [Ljava/lang/ObjectNNN;
+       
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_2.d b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_2.d
new file mode 100644
index 0000000..de7b8dd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_2.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[Z
+.limit regs 5
+
+       new-array v0, v4, [Z
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_2.java b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_2.java
new file mode 100644
index 0000000..27103b1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_array.d;
+
+public class T_new_array_2 {
+
+    public boolean[] run(int sz) {
+        return new boolean[sz];
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_3.d b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_3.d
new file mode 100644
index 0000000..d560ca6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_3.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[Ljava/lang/Object;
+.limit regs 5
+
+       new-array v0, v4, [Ljava/lang/Object;
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_3.java b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_3.java
new file mode 100644
index 0000000..47a28c3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_array.d;
+
+public class T_new_array_3 {
+
+    public Object[] run(int sz) {
+        return new Object[sz];
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_4.d b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_4.d
new file mode 100644
index 0000000..2f75ff1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_4.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.limit regs 5
+
+       new-array v5, v4, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_5.d b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_5.d
new file mode 100644
index 0000000..9ce7d3e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_5.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.limit regs 5
+
+       const-wide v3, 1
+       new-array v0, v3, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_6.d b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_6.d
new file mode 100644
index 0000000..885beba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_6.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.limit regs 5
+
+       new-array v0, v4, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_6.dfh b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_6.dfh
new file mode 100644
index 0000000..0794b49
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_6.dfh
@@ -0,0 +1,270 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/new_array/d/T_new_array_6.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/new_array/d/T_new_array_6.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 0877446e
+    6E 44 77 08 
+// parsed: offset 12, len 20: signature           : 7016...e092
+    70 16 D1 71 A3 86 82 A2 90 FA CB 70 1E 3F F9 18 2B 71 E0 92 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 302 (0x00012e) "<init>"
+    2E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 310 (0x000136) "I"
+    36 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 313 (0x000139) "LI"
+    39 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/new_array/d/T_new_array_6;"
+    3D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 364 (0x00016c) "Ljava/lang/Object;"
+    6C 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 384 (0x000180) "T_new_array_6.java"
+    80 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 407 (0x000197) "[I"
+    97 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 411 (0x00019b) "run"
+    9B 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/new_array/d/T_new_array_6;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "[I"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "LI"
+//     return_type_idx: 4 (0x000004) "[I"
+//     parameters_off: 296 (0x000128)
+    02 00 00 00 04 00 00 00 28 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/new_array/d/T_new_array_6;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_new_array_6.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 416 (0x0001a0)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 A0 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.new_array.d.T_new_array_6.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.new_array.d.T_new_array_6.run"
+    // parsed: offset 272, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: new-array v0, v4, [I // class@0004
+//@mod            23 40 04 00 
+            23 40 04 01 
+        // parsed: offset 292, len 2: |0002: return-object v0
+            11 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 296, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 300, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 302, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 310, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 313, len 4: TYPE_STRING_DATA_ITEM [2] "LI"
+    02 4C 49 00 
+// parsed: offset 317, len 47: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/new_array/d/T_new_array_6;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 6E 65 77 5F 61 72 72 61 79 2F 64 2F 54 5F 6E 65 77 5F 61 72 72 61 79 5F 36 3B 00 
+// parsed: offset 364, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 384, len 20: TYPE_STRING_DATA_ITEM [5] "T_new_array_6.java"
+    12 54 5F 6E 65 77 5F 61 72 72 61 79 5F 36 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 407, len 4: TYPE_STRING_DATA_ITEM [7] "[I"
+    02 5B 49 00 
+// parsed: offset 411, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/new_array/d/T_new_array_6;"
+    // parsed: offset 416, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 417, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 418, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 419, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 421, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 424, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 426, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 427, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 428, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 430, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 296 (0x000128)
+        01 10 00 00 01 00 00 00 28 01 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 302 (0x00012e)
+        02 20 00 00 09 00 00 00 2E 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 416 (0x0001a0)
+        00 20 00 00 01 00 00 00 A0 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_7.d b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_7.d
new file mode 100644
index 0000000..f6f2588
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_7.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[Ljava/lang/Object;
+.limit regs 5
+
+       new-array v0, v4, java/lang/Object
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_8.d b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_8.d
new file mode 100644
index 0000000..a221fc2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_8.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[Ljava/lang/Object;
+.limit regs 5
+
+       new-array v0, v4, [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[Ljava/lang/Object;
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_9.d b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_9.d
new file mode 100644
index 0000000..914322a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_array/d/T_new_array_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_array_9.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.limit regs 5
+
+       new-array v0, v3, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/TTestClass.java b/tools/vm-tests/src/dot/junit/opcodes/new_instance/TTestClass.java
new file mode 100644
index 0000000..679e665
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/TTestClass.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance;
+
+public class TTestClass {
+
+    @SuppressWarnings("unused")
+    private class TestStub {
+        // used by testE3
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/new_instance/TestStubs.java
new file mode 100644
index 0000000..9cba0ea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private class TestStub {
+        // used by testVFE5
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/Test_new_instance.java b/tools/vm-tests/src/dot/junit/opcodes/new_instance/Test_new_instance.java
new file mode 100644
index 0000000..6a9fcbe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/Test_new_instance.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.new_instance.d.T_new_instance_1;
+import dot.junit.opcodes.new_instance.d.T_new_instance_3;
+import dot.junit.opcodes.new_instance.d.T_new_instance_8;
+import dot.junit.opcodes.new_instance.d.T_new_instance_9;
+
+
+public class Test_new_instance extends DxTestCase {
+
+    /**
+     * @title new String
+     */
+    public void testN1() {
+        T_new_instance_1 t = new T_new_instance_1();
+        String s = t.run();
+        assertNotNull(s);
+        assertEquals(0, s.compareTo("abc"));
+    }
+
+    /**
+     * @title class initialization throws exception 
+     */
+    public void testE1() {
+        try {
+            T_new_instance_3.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A21 
+     * @title  attempt to instantiate interface
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.new_instance.d.TestAbstractClass
+        //@uses dot.junit.opcodes.new_instance.d.T_new_instance_8
+        T_new_instance_8 t = new T_new_instance_8();
+        try {
+            t.run();
+            fail("expected InstantiationError");
+        } catch (InstantiationError ie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A21 
+     * @title  attempt to instantiate abstract
+     * class
+     */
+    public void testE5() {
+        //@uses dot.junit.opcodes.new_instance.d.TestAbstractClass
+        //@uses dot.junit.opcodes.new_instance.d.T_new_instance_9
+        T_new_instance_9 t = new T_new_instance_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A18 
+     * @title  constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A21 
+     * @title  attempt to create array using new
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title Attempt to access uninitialized class (before <init> is
+     * called
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to instantiate array of inaccessible class. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE5() {
+        //@uses dot.junit.opcodes.new_instance.TestStubs
+        //@uses dot.junit.opcodes.new_instance.d.T_new_instance_4
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to instantiate array of non-existent class. Java 
+     * throws NoClassDefFoundError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B7
+     * @title A register which holds the result of a new-instance instruction must not be used 
+     * if the same new-instance  instruction is again executed before the instance is initialized 
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B7
+     * @title A register which holds the result of a new-instance instruction must not be used 
+     * if the same new-instance  instruction is again executed before the instance is initialized 
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.d b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.d
new file mode 100644
index 0000000..0cff87a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_1.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 6
+
+       new-instance v1, java/lang/String
+       const-string v3, "abc"
+       invoke-direct {v1, v3}, java/lang/String/<init>(Ljava/lang/String;)V
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.java b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.java
new file mode 100644
index 0000000..c8f4878
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_1 {
+
+    public String run() {
+        return new String("abc");
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_10.d b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_10.d
new file mode 100644
index 0000000..cd9096d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_10.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       new-instance v6, java/lang/String
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.d b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.d
new file mode 100644
index 0000000..75fb804
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_11.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const v4, 5
+       move-object v1, v5
+Label0:
+       move-object v0, v1
+       new-instance v1, java/lang/Integer
+       
+       add-int/lit8 v4, v4, -1
+       if-nez v4, Label0
+
+       invoke-direct {v1, v4}, java/lang/Integer/<init>(I)V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_12.d b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_12.d
new file mode 100644
index 0000000..e4b025e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_12.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_12.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+    const v0, 0
+Label1:
+    new-instance v1,        java/lang/Integer
+    if-nez v0, INIT
+    move-object v2, v1
+    const v0, 1
+    goto Label1
+INIT:
+        
+    invoke-direct {v1, v0}, java/lang/Integer/<init>(I)V
+    invoke-virtual {v2}, java/lang/Integer/toString()Ljava/lang/String;
+
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_2.d b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_2.d
new file mode 100644
index 0000000..2a8eefb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_2.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_2.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_2
+.super java/lang/Object
+
+.field  i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()I
+.limit regs 5
+
+    new-instance v0, dot/junit/opcodes/new_instance/d/T_new_instance_2
+;    invoke-direct {v0}, dot/junit/opcodes/new_instance/d/T_new_instance_2/<init>()V
+
+    iget v1, v0, dot.junit.opcodes.new_instance.d.T_new_instance_2.i I
+
+    return v1
+
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.d b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.d
new file mode 100644
index 0000000..f6cd6fe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_3.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_3
+.super java/lang/Object
+
+.field static i I
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/16 v0, 123
+       const/4 v1, 0
+       div-int/lit8 v0, v0, 0
+       sput v0, dot.junit.opcodes.new_instance.d.T_new_instance_3.i I
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+Label5:
+       return-void
+.end method
+
+.method public static run()I
+.limit regs 4
+
+       new-instance v1, dot/junit/opcodes/new_instance/d/T_new_instance_3
+       invoke-direct {v1}, dot/junit/opcodes/new_instance/d/T_new_instance_3/<init>()V
+
+       sget v1, dot.junit.opcodes.new_instance.d.T_new_instance_3.i I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.java b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.java
new file mode 100644
index 0000000..dd8bb15
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_3 {
+
+    static int i = 123 / 0;
+
+    public static int run() {
+        T_new_instance_3 t = new T_new_instance_3();
+        return t.i;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.d b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.d
new file mode 100644
index 0000000..508e63c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_4.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/new_instance/TestStubs$TestStub
+;       invoke-direct {v1}, dot/junit/opcodes/new_instance/TestStubs$TestStub/<init>()V
+; intentionally return v4 ("this")    
+       return-object v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.java b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.java
new file mode 100644
index 0000000..9ed269f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_4 {
+
+     public Object run() {
+            return null;
+        }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.d b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.d
new file mode 100644
index 0000000..4651f6a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_5.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/new_instance/Test_new_instanceNNNNN
+;       invoke-direct {v1}, dot/junit/opcodes/new_instance/TTestClass/<init>()V
+; intentionally return v4 ("this")    
+       return-object v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.java b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.java
new file mode 100644
index 0000000..7c6b0c0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_5 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.d b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.d
new file mode 100644
index 0000000..0565aea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_6.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 6
+
+       new-instance v1, java/lang/String
+       const-string v3, "abc"
+       invoke-direct {v1, v3}, java/lang/String/<init>(Ljava/lang/String;)V
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.dfh b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.dfh
new file mode 100644
index 0000000..91ac7e5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.dfh
@@ -0,0 +1,279 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/new_instance/d/T_new_instance_6.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/new_instance/d/T_new_instance_6.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a36952db
+    DB 52 69 A3 
+// parsed: offset 12, len 20: signature           : 71b1...5136
+    71 B1 EB E5 E0 7E D8 D6 08 9A F1 CD 12 14 9C 8E 6E 4F 51 36 
+// parsed: offset 32, len 4: file_size           : 624
+    70 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 488 (0x0001e8)
+    E8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 236 (0x0000ec)
+    EC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 356
+    64 01 00 00 
+// parsed: offset 108, len 4: data_off            : 268 (0x00010c)
+    0C 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 330 (0x00014a) "<init>"
+    4A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 338 (0x000152) "L"
+    52 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 341 (0x000155) "Ldot/junit/opcodes/new_instance/d/T_new_instance_6;"
+    55 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 394 (0x00018a) "Ljava/lang/Object;"
+    8A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 414 (0x00019e) "Ljava/lang/String;"
+    9E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 434 (0x0001b2) "T_new_instance_6.java"
+    B2 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 457 (0x0001c9) "V"
+    C9 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 460 (0x0001cc) "VL"
+    CC 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 464 (0x0001d0) "abc"
+    D0 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 469 (0x0001d5) "run"
+    D5 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/new_instance/d/T_new_instance_6;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 192, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "VL"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 324 (0x000144)
+    07 00 00 00 03 00 00 00 44 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 204, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 212, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 9 (0x000009) "run"
+    00 00 00 00 09 00 00 00 
+// parsed: offset 220, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 228, len 8: [3] class_idx: 2 (0x000002)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    02 00 02 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 236, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/new_instance/d/T_new_instance_6;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_new_instance_6.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 474 (0x0001da)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 DA 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.new_instance.d.T_new_instance_6.<init>"
+    // parsed: offset 268, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 284, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 290, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.new_instance.d.T_new_instance_6.run"
+    // parsed: offset 292, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 294, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 296, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 298, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 300, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 304, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 308, len 4: |0000: new-instance v1, Ljava/lang/String; // class@0002
+//@mod            22 01 02 00 
+            22 01 02 01 
+        // parsed: offset 312, len 4: |0002: const-string v3, "abc" // string@0008
+            1A 03 08 00 
+        // parsed: offset 316, len 6: |0004: invoke-direct {v1, v3}, Ljava/lang/String;.<init>:(Ljava/lang/String;)V // method@0003
+            70 20 03 00 31 00 
+        // parsed: offset 322, len 2: |0007: return-object v1
+            11 01 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 324, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 328, len 2: type_item [0] type_idx: 2
+        02 00 
+// parsed: offset 330, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 338, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 341, len 53: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/new_instance/d/T_new_instance_6;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 6E 65 77 5F 69 6E 73 74 61 6E 63 65 2F 64 2F 54 5F 6E 65 77 5F 69 6E 73 74 61 6E 63 65 5F 36 3B 00 
+// parsed: offset 394, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 414, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 434, len 23: TYPE_STRING_DATA_ITEM [5] "T_new_instance_6.java"
+    15 54 5F 6E 65 77 5F 69 6E 73 74 61 6E 63 65 5F 36 2E 6A 61 76 61 00 
+// parsed: offset 457, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 460, len 4: TYPE_STRING_DATA_ITEM [7] "VL"
+    02 56 4C 00 
+// parsed: offset 464, len 5: TYPE_STRING_DATA_ITEM [8] "abc"
+    03 61 62 63 00 
+// parsed: offset 469, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/new_instance/d/T_new_instance_6;"
+    // parsed: offset 474, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 475, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 476, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 477, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 479, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 482, len 2: code_off: 268 (0x00010c)
+                8C 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 484, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 485, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 486, len 2: code_off: 292 (0x000124)
+                A4 02 
+// map_list:
+    // parsed: offset 488, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 492, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 504, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 516, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 152 (0x000098)
+        02 00 00 00 04 00 00 00 98 00 00 00 
+    // parsed: offset 528, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 03 00 00 00 A8 00 00 00 
+    // parsed: offset 540, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 204 (0x0000cc)
+        05 00 00 00 04 00 00 00 CC 00 00 00 
+    // parsed: offset 552, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 236 (0x0000ec)
+        06 00 00 00 01 00 00 00 EC 00 00 00 
+    // parsed: offset 564, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 268 (0x00010c)
+        01 20 00 00 02 00 00 00 0C 01 00 00 
+    // parsed: offset 576, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 324 (0x000144)
+        01 10 00 00 01 00 00 00 44 01 00 00 
+    // parsed: offset 588, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 330 (0x00014a)
+        02 20 00 00 0A 00 00 00 4A 01 00 00 
+    // parsed: offset 600, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 474 (0x0001da)
+        00 20 00 00 01 00 00 00 DA 01 00 00 
+    // parsed: offset 612, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 488 (0x0001e8)
+        00 10 00 00 01 00 00 00 E8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.d b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.d
new file mode 100644
index 0000000..f2e7fcf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_7.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       new-instance v1, [Ljava/lang/Object;
+; intentionally return v2 ("this")           
+       return-object v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.java b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.java
new file mode 100644
index 0000000..f93c886
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_7 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.d b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.d
new file mode 100644
index 0000000..f474fe9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_8.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/new_instance/d/TestInterface
+;       invoke-direct {v1}, dot/junit/opcodes/new_instance/d/TestInterface/<init>()V
+; intentionally return v4 ("this")    
+       return-object v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.java b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.java
new file mode 100644
index 0000000..1ca9c38
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_8 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.d b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.d
new file mode 100644
index 0000000..7af9f46
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_new_instance_9.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+Label5:
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/new_instance/d/TestAbstractClass
+;       invoke-direct {v1}, dot/junit/opcodes/new_instance/d/TestAbstractClass/<init>()V
+; intentionally return v4 ("this")    
+       return-object v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.java b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.java
new file mode 100644
index 0000000..9f1d2bf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_9 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.d b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.d
new file mode 100644
index 0000000..ea321c4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.d
@@ -0,0 +1,22 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestAbstractClass.java
+.interface public dot.junit.opcodes.new_instance.d.TestInterface
+
+
+.source TestAbstractClass.java
+.class abstract public dot.junit.opcodes.new_instance.d.TestAbstractClass
+.super java/lang/Object
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/TestStubs.java
new file mode 100644
index 0000000..cb28c6a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/new_instance/d/TestStubs.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.new_instance.d;
+
+
+interface TestInterface {
+    public abstract void test();
+}
+
+abstract class TestAbstractClass{
+    
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/nop/Test_nop.java b/tools/vm-tests/src/dot/junit/opcodes/nop/Test_nop.java
new file mode 100644
index 0000000..9044e8c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/nop/Test_nop.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.nop;
+
+import dot.junit.DxTestCase;
+import dot.junit.opcodes.nop.d.T_nop_1;
+
+public class Test_nop extends DxTestCase {
+    /**
+     * @title tests nop
+     */
+    public void testN1() {
+        T_nop_1 t = new T_nop_1();
+        // how do we test nop - e.g. initialize some registers and
+        // test if nothing has changed
+        assertTrue(t.run());
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/nop/d/T_nop_1.d b/tools/vm-tests/src/dot/junit/opcodes/nop/d/T_nop_1.d
new file mode 100644
index 0000000..59a85e1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/nop/d/T_nop_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_nop_1.java
+.class public dot.junit.opcodes.nop.d.T_nop_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+       move-object v1, v2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 4
+       const v1, 12345678
+       nop
+       nop
+       nop
+       nop
+       nop
+       move v3, v1
+       nop
+       nop
+       nop
+       if-ne v1, v3, Label1
+       const/4 v1, 1
+       return v1
+Label1:
+       const/4 v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/nop/d/T_nop_1.java b/tools/vm-tests/src/dot/junit/opcodes/nop/d/T_nop_1.java
new file mode 100644
index 0000000..ec16b22
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/nop/d/T_nop_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.nop.d;
+
+public class T_nop_1 {
+
+    public boolean run() {
+      return true;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_int/Test_not_int.java b/tools/vm-tests/src/dot/junit/opcodes/not_int/Test_not_int.java
new file mode 100644
index 0000000..0960e32
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_int/Test_not_int.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.not_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.not_int.d.T_not_int_1;
+import dot.junit.opcodes.not_int.d.T_not_int_2;
+
+public class Test_not_int extends DxTestCase {
+    
+    /**
+     * @title Argument = 5; 256
+     */
+    public void testN1() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(-6, t.run(5));
+        assertEquals(-257, t.run(256));
+    }
+    
+    /**
+     * @title Argument = -5, -256
+     */
+    public void testN2() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(4, t.run(-5));
+        assertEquals(255, t.run(-256));
+    }
+    
+    /**
+     * @title Argument = 0xcafe; 0x12c
+     */
+    public void testN3() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(-0xcaff, t.run(0xcafe));
+        assertEquals(-0x12d, t.run(0x12c));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_not_int_2 t = new T_not_int_2();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Argument = 1
+     */
+    public void testB3() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(-2, t.run(1));
+    }
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB4() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(-1, t.run(0));
+    }
+    
+    /**
+     * @title Argument = -1
+     */
+    public void testB5() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(0, t.run(-1));
+    }
+    
+    /**
+     * @title Argument = Short.MAX_VALUE
+     */
+    public void testB6() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(Short.MIN_VALUE, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title Argument = Short.MIN_VALUE
+     */
+    public void testB7() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(Short.MAX_VALUE, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.not_int.d.T_not_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.not_int.d.T_not_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.not_int.d.T_not_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.not_int.d.T_not_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_1.d b/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_1.d
new file mode 100644
index 0000000..2b04225
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_int_1.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       not-int v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_1.java b/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_1.java
new file mode 100644
index 0000000..b8ac929
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.not_int.d;
+
+public class T_not_int_1 {
+    
+    public int run(int d) {
+        return ~d;
+    }    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_2.d b/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_2.d
new file mode 100644
index 0000000..3e1ff4a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_int_2.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       not-int v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_2.java b/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_2.java
new file mode 100644
index 0000000..679acb7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.not_int.d;
+
+public class T_not_int_2 {
+    
+    public int run(float d) {
+        return ~(int)d;
+    }    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_3.d b/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_3.d
new file mode 100644
index 0000000..a42823e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_int_3.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       not-int v0, v5
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_4.d b/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_4.d
new file mode 100644
index 0000000..1182ead
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_int_4.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 5
+
+       not-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_5.d b/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_5.d
new file mode 100644
index 0000000..a144392
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_int_5.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 5
+
+       not-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_6.d b/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_6.d
new file mode 100644
index 0000000..c22438f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_int/d/T_not_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_int_6.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       not-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_long/Test_not_long.java b/tools/vm-tests/src/dot/junit/opcodes/not_long/Test_not_long.java
new file mode 100644
index 0000000..a40cdd1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_long/Test_not_long.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.not_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.not_long.d.T_not_long_1;
+import dot.junit.opcodes.not_long.d.T_not_long_2;
+
+public class Test_not_long extends DxTestCase {
+    
+    /**
+     * @title Argument = 500000l
+     */
+    public void testN1() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(-500001l, t.run(500000l));
+    }
+    
+    /**
+     * @title Argument = -500000l
+     */
+    public void testN2() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(499999l, t.run(-500000l));
+    }
+    
+    /**
+     * @title Argument = 0xcafe; 0x12c
+     */
+    public void testN3() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(-0xcaff, t.run(0xcafe));
+        assertEquals(-0x12d, t.run(0x12c));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this multiplication of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_not_long_2 t = new T_not_long_2();
+        try {
+            t.run(1.79d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(Long.MIN_VALUE, t.run(Long.MAX_VALUE));
+    }
+    
+    /**
+     * @title Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(Long.MAX_VALUE, t.run(Long.MIN_VALUE));
+    }
+    
+    /**
+     * @title Argument = 1l
+     */
+    public void testB3() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(-2l, t.run(1l));
+    }
+    
+    /**
+     * @title Argument = 0l
+     */
+    public void testB4() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(-1l, t.run(0l));
+    }
+    
+    /** 
+     * @title Argument = -1l
+     */
+    public void testB5() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(0l, t.run(-1l));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.not_long.d.T_not_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.not_long.d.T_not_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.not_long.d.T_not_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.not_long.d.T_not_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_1.d b/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_1.d
new file mode 100644
index 0000000..9d27053
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_long_1.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 8
+
+       not-long v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_1.java b/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_1.java
new file mode 100644
index 0000000..535d69d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.not_long.d;
+
+public class T_not_long_1 {
+    
+    public long run(long d) {
+        return ~d;
+    } 
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_2.d b/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_2.d
new file mode 100644
index 0000000..cd253a7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_long_2.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 5
+
+       not-long v0, v3
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_2.java b/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_2.java
new file mode 100644
index 0000000..9f93955
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.not_long.d;
+
+public class T_not_long_2 {
+    
+    public long run(double d) {
+        return ~(long)d;
+    } 
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_3.d b/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_3.d
new file mode 100644
index 0000000..b9eda02
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_long_3.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 5
+
+       not-long v0, v5
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_4.d b/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_4.d
new file mode 100644
index 0000000..3ecd0f1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_long_4.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 5
+
+       not-long v0, v4
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_5.d b/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_5.d
new file mode 100644
index 0000000..31c1dfc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_long_5.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 5
+
+       not-long v0, v4
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_6.d b/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_6.d
new file mode 100644
index 0000000..4d511df
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/not_long/d/T_not_long_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_not_long_6.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 5
+
+       not-long v0, v2
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_const/Test_opc_const.java b/tools/vm-tests/src/dot/junit/opcodes/opc_const/Test_opc_const.java
new file mode 100644
index 0000000..aa19e6c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_const/Test_opc_const.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_const;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.opc_const.d.T_opc_const_1;
+import dot.junit.opcodes.opc_const.d.T_opc_const_2;
+
+public class Test_opc_const extends DxTestCase {
+    /**
+     * @title const v1, 1.54
+     */
+    public void testN1() {
+        T_opc_const_1 t = new T_opc_const_1();
+        float a = 1.5f;
+        float b = 0.04f;
+        assertEquals(a + b, t.run(), 0f);
+        assertEquals(1.54f, t.run(), 0f);
+    }
+    
+    /**
+     * @title const v254, 20000000 
+     */
+    public void testN2() {
+        T_opc_const_2 t = new T_opc_const_2();
+         int a = 10000000;
+         int b = 10000000;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint B1 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_const.d.T_opc_const_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_const.d.T_opc_const_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.d b/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.d
new file mode 100644
index 0000000..8246f1b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_const_1.java
+.class public dot.junit.opcodes.opc_const.d.T_opc_const_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()F
+.limit regs 3
+
+       const v1, 1.54
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.java b/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.java
new file mode 100644
index 0000000..1bf4f0f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_const.d;
+
+public class T_opc_const_1 {
+    
+    public float run(){
+        return 1.54f;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.d b/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.d
new file mode 100644
index 0000000..d651fe92
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_const_2.java
+.class public dot.junit.opcodes.opc_const.d.T_opc_const_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 255
+
+       const v254, 20000000
+       return v254
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.java b/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.java
new file mode 100644
index 0000000..07cd52a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_const.d;
+
+public class T_opc_const_2 {
+
+    public int run() {
+        return 20000000;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_3.d b/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_3.d
new file mode 100644
index 0000000..d0065db
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_const_3.java
+.class public dot.junit.opcodes.opc_const.d.T_opc_const_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_4.d b/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_4.d
new file mode 100644
index 0000000..f2d5697
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_const/d/T_opc_const_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_const_4.java
+.class public dot.junit.opcodes.opc_const.d.T_opc_const_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const v1, 1234
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_goto/Test_opc_goto.java b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/Test_opc_goto.java
new file mode 100644
index 0000000..a3558fe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/Test_opc_goto.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_goto;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.opc_goto.d.T_opc_goto_1;
+
+public class Test_opc_goto extends DxTestCase {
+   /**
+    * @title forward and backward goto. This test also tests constraint C17 allowing to have
+     * backward goto as a last opcode in the method.
+    */
+   public void testN1() {
+       T_opc_goto_1 t = new T_opc_goto_1();
+       assertEquals(0, t.run(20));
+   }
+
+   /**
+    * @constraint A6 
+    * @title branch target is inside instruction
+    */
+   public void testVFE1() {
+       try {
+           Class.forName("dot.junit.opcodes.opc_goto.d.T_opc_goto_2");
+           fail("expected a verification exception");
+       } catch (Throwable t) {
+           DxUtil.checkVerifyException(t);
+       }
+   }
+
+   /**
+    * @constraint A6 
+    * @title branch target shall be inside the method
+    */
+   public void testVFE2() {
+       try {
+           Class.forName("dot.junit.opcodes.opc_goto.d.T_opc_goto_3");
+           fail("expected a verification exception");
+       } catch (Throwable t) {
+           DxUtil.checkVerifyException(t);
+       }
+   }
+
+   /**
+    * @constraint n/a 
+    * @title zero offset
+    */
+   public void testVFE3() {
+       try {
+           Class.forName("dot.junit.opcodes.opc_goto.d.T_opc_goto_4");
+           fail("expected a verification exception");
+       } catch (Throwable t) {
+           DxUtil.checkVerifyException(t);
+       }
+   }
+   
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.d b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.d
new file mode 100644
index 0000000..e9b75ae
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_goto_1.java
+.class public dot.junit.opcodes.opc_goto.d.T_opc_goto_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+; test positive offset
+      goto Label2
+LabelReturn:      
+      return v4
+      
+Label2:
+       add-int/lit8 v4, v4, -1
+       if-lez v4, LabelExit
+; test negative offset       
+       goto Label2
+       
+LabelExit:       
+       goto LabelReturn
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.java b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.java
new file mode 100644
index 0000000..30c4e74
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_goto.d;
+
+public class T_opc_goto_1 {
+
+    public int run(int a) {
+        while (a > 0) {
+            a--;
+        }
+        return a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.d b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.d
new file mode 100644
index 0000000..8cb3602
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_goto_2.java
+.class public dot.junit.opcodes.opc_goto.d.T_opc_goto_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.dfh b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.dfh
new file mode 100644
index 0000000..3917c98
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : cf734093
+    93 40 73 CF 
+// parsed: offset 12, len 20: signature           : 19a1...8fae
+    19 A1 80 04 F4 E4 1C 91 9B AB 4F FF A1 01 C6 17 E3 C0 8F AE 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 290 (0x000122) "<init>"
+    22 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 298 (0x00012a) "I"
+    2A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 301 (0x00012d) "II"
+    2D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 305 (0x000131) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_2;"
+    31 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 370 (0x000172) "T_opc_goto_2.java"
+    72 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "V"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 392 (0x000188) "run"
+    88 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_2;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 284 (0x00011c)
+    02 00 00 00 00 00 00 00 1C 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_opc_goto_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 397 (0x00018d)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8D 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_2.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_2.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 2
+        02 00 00 00 
+    // insns:
+        // parsed: offset 280, len 2: |0000: goto 0001 // +0x0001
+//@mod            28 01 
+            28 02 
+        // parsed: offset 282, len 2: |0001: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 284, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 288, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 290, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 298, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 301, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 305, len 45: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_2;"
+    2B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 6F 70 63 5F 67 6F 74 6F 2F 64 2F 54 5F 6F 70 63 5F 67 6F 74 6F 5F 32 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 19: TYPE_STRING_DATA_ITEM [5] "T_opc_goto_2.java"
+    11 54 5F 6F 70 63 5F 67 6F 74 6F 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 389, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 392, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_2;"
+    // parsed: offset 397, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 398, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 400, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 401, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 402, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 405, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 408, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 409, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 411, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 284 (0x00011c)
+        01 10 00 00 01 00 00 00 1C 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 290 (0x000122)
+        02 20 00 00 08 00 00 00 22 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 397 (0x00018d)
+        00 20 00 00 01 00 00 00 8D 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.d b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.d
new file mode 100644
index 0000000..8edcca6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_goto_3.java
+.class public dot.junit.opcodes.opc_goto.d.T_opc_goto_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.dfh
new file mode 100644
index 0000000..9da5505
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 4d883f57
+    57 3F 88 4D 
+// parsed: offset 12, len 20: signature           : 16da...c0ad
+    16 DA B2 AB 5C D5 C9 74 71 01 63 17 93 81 6E 18 34 96 C0 AD 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 290 (0x000122) "<init>"
+    22 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 298 (0x00012a) "I"
+    2A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 301 (0x00012d) "II"
+    2D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 305 (0x000131) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_3;"
+    31 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 370 (0x000172) "T_opc_goto_3.java"
+    72 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "V"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 392 (0x000188) "run"
+    88 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_3;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 284 (0x00011c)
+    02 00 00 00 00 00 00 00 1C 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_opc_goto_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 397 (0x00018d)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8D 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_3.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_3.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 2
+        02 00 00 00 
+    // insns:
+        // parsed: offset 280, len 2: |0000: goto 0001 // +0x0001
+//@mod            28 01 
+            28 10 
+        // parsed: offset 282, len 2: |0001: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 284, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 288, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 290, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 298, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 301, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 305, len 45: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_3;"
+    2B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 6F 70 63 5F 67 6F 74 6F 2F 64 2F 54 5F 6F 70 63 5F 67 6F 74 6F 5F 33 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 19: TYPE_STRING_DATA_ITEM [5] "T_opc_goto_3.java"
+    11 54 5F 6F 70 63 5F 67 6F 74 6F 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 389, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 392, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_3;"
+    // parsed: offset 397, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 398, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 400, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 401, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 402, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 405, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 408, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 409, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 411, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 284 (0x00011c)
+        01 10 00 00 01 00 00 00 1C 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 290 (0x000122)
+        02 20 00 00 08 00 00 00 22 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 397 (0x00018d)
+        00 20 00 00 01 00 00 00 8D 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.d b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.d
new file mode 100644
index 0000000..6c29f65
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_goto_4.java
+.class public dot.junit.opcodes.opc_goto.d.T_opc_goto_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto Label1
+Label1:      
+      return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.dfh
new file mode 100644
index 0000000..5666601
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 97783f02
+    02 3F 78 97 
+// parsed: offset 12, len 20: signature           : a610...059a
+    A6 10 17 6F A6 2E 7A AE A2 D0 27 EA 5E C8 BF 3E 13 91 05 9A 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 290 (0x000122) "<init>"
+    22 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 298 (0x00012a) "I"
+    2A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 301 (0x00012d) "II"
+    2D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 305 (0x000131) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_4;"
+    31 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 370 (0x000172) "T_opc_goto_4.java"
+    72 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "V"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 392 (0x000188) "run"
+    88 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_4;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 284 (0x00011c)
+    02 00 00 00 00 00 00 00 1C 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_opc_goto_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 397 (0x00018d)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8D 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_4.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_4.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 2
+        02 00 00 00 
+    // insns:
+        // parsed: offset 280, len 2: |0000: goto 0001 // +0x0001
+//@mod            28 01 
+            28 00 
+        // parsed: offset 282, len 2: |0001: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 284, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 288, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 290, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 298, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 301, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 305, len 45: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_4;"
+    2B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 6F 70 63 5F 67 6F 74 6F 2F 64 2F 54 5F 6F 70 63 5F 67 6F 74 6F 5F 34 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 19: TYPE_STRING_DATA_ITEM [5] "T_opc_goto_4.java"
+    11 54 5F 6F 70 63 5F 67 6F 74 6F 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 389, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 392, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_4;"
+    // parsed: offset 397, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 398, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 400, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 401, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 402, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 405, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 408, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 409, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 411, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 284 (0x00011c)
+        01 10 00 00 01 00 00 00 1C 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 290 (0x000122)
+        02 20 00 00 08 00 00 00 22 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 397 (0x00018d)
+        00 20 00 00 01 00 00 00 8D 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_return/Test_opc_return.java b/tools/vm-tests/src/dot/junit/opcodes/opc_return/Test_opc_return.java
new file mode 100644
index 0000000..2fe8323
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_return/Test_opc_return.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_return;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.opc_return.d.T_opc_return_1;
+import dot.junit.opcodes.opc_return.d.T_opc_return_3;
+
+public class Test_opc_return extends DxTestCase {
+    /**
+     * @title check that frames are discarded and reinstananted correctly
+     */
+    public void testN1() {
+        T_opc_return_1 t = new T_opc_return_1();
+        assertEquals(123456, t.run());
+    }
+
+
+    /**
+     * @title Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_opc_return_3 t = new T_opc_return_3();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint B11 
+     * @title method's return type - long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_return.d.T_opc_return_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title method's return type - reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_return.d.T_opc_return_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_return.d.T_opc_return_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title return on wide register pair
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_return.d.T_opc_return_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.d b/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.d
new file mode 100644
index 0000000..29ae5bd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_1.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 10
+    
+    const v1, 1
+    const v2, 2
+    const v3, 3
+    
+    const v4, 0xdddd
+        
+    invoke-static {}, dot/junit/opcodes/opc_return/d/T_opc_return_1/test()I
+    move-result v6
+    
+    if-ne v4, v6, Label0
+
+    const v4, 1    
+    if-ne v1, v4, Label0
+    
+    const v4, 2    
+    if-ne v2, v4, Label0
+
+    const v4, 3
+    if-ne v3, v4, Label0
+    
+    const v0, 123456
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+.method private static test()I
+.limit regs 6
+    
+    const v0, 9999
+    const v1, 0xaaa
+    const v2, 0xbbbb
+    const v3, 0xcccc
+    
+    const v4, 0xdddd
+    return v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.java b/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.java
new file mode 100644
index 0000000..2f5029d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_return.d;
+
+public class T_opc_return_1 {
+
+    public int run() {
+        test();
+        return 123456;
+    }
+    
+    private static int test() {
+        int a = 0xaaaa;
+        int b = 0xbbbb;
+        int c = 0xcccc;
+        return 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.d b/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.d
new file mode 100644
index 0000000..2410da3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_3.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private declared_synchronized test()F
+.limit regs 4
+
+    monitor-exit v3
+    const v0, 1.0
+    return v0
+.end method
+
+
+
+.method public run()Z
+.limit regs 1
+
+    invoke-direct {v0}, dot/junit/opcodes/opc_return/d/T_opc_return_3/test()F
+
+    const v0, 1
+    return v0
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.java b/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.java
new file mode 100644
index 0000000..6b93391
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_return.d;
+
+public class T_opc_return_3 {
+    
+    private synchronized long test() {
+        return 1;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_5.d b/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_5.d
new file mode 100644
index 0000000..884ce2d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_5.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 6
+    
+    const v0, 1
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_6.d b/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_6.d
new file mode 100644
index 0000000..c19f760
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_6.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 6
+    
+    const v0, 1
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_7.d b/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_7.d
new file mode 100644
index 0000000..cec1f9c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_7.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+    
+    return v6
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_8.d b/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_8.d
new file mode 100644
index 0000000..1ca6832
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_return/d/T_opc_return_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_return_8.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+    
+    const-wide v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/Test_opc_throw.java b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/Test_opc_throw.java
new file mode 100644
index 0000000..5055336
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/Test_opc_throw.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_1;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_12;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_2;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_4;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_5;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_8;
+
+public class Test_opc_throw extends DxTestCase {
+    /**
+     * @title check throw functionality. This test also tests constraint C17 allowing to have
+     * throw as a last opcode in the method.
+     */
+    public void testN1() {
+        T_opc_throw_1 t = new T_opc_throw_1();
+        try {
+            t.run();
+            fail("must throw a RuntimeException");
+        } catch (RuntimeException re) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Throwing of the objectref on the class Throwable
+     */
+    public void testN2() {
+        T_opc_throw_2 t = new T_opc_throw_2();
+        try {
+            t.run();
+            fail("must throw a Throwable");
+        } catch (Throwable e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Throwing of the objectref on the subclass of Throwable
+     */
+    public void testN3() {
+        T_opc_throw_8 t = new T_opc_throw_8();
+        try {
+            t.run();
+            fail("must throw a Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Nearest matching catch must be executed in case of exception
+     */
+    public void testN4() {
+        T_opc_throw_12 t = new T_opc_throw_12();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title NullPointerException If objectref is null, opc_throw throws
+     * a NullPointerException instead of objectref
+     */
+    public void testE1() {
+        T_opc_throw_4 t = new T_opc_throw_4();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected IllegalMonitorStateException
+     */
+    public void testE2() {
+        T_opc_throw_5 t = new T_opc_throw_5();
+        try {
+            t.run();
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  (number of registers)
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_throw.jm.T_opc_throw_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_throw.jm.T_opc_throw_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_throw.jm.T_opc_throw_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B16 
+     * @title operand must be must be assignment-compatible 
+     * with java.lang.Throwable
+
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_throw.jm.T_opc_throw_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.d b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.d
new file mode 100644
index 0000000..90a4a03
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_1.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       new-instance v1, java/lang/RuntimeException
+       invoke-direct {v1}, java/lang/RuntimeException/<init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.java b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.java
new file mode 100644
index 0000000..6aa25db
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_1 {
+
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.d b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.d
new file mode 100644
index 0000000..c3194bb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_10.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+       new-instance v1, java/lang/String
+       invoke-direct {v1}, java/lang/String/<init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.java b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.java
new file mode 100644
index 0000000..b57a68c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_10 {
+    
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.d b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.d
new file mode 100644
index 0000000..e096f4c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_12.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 2
+
+Label0:
+    invoke-direct {v1}, dot/junit/opcodes/opc_throw/d/T_opc_throw_12/test()Z
+    move-result v0
+    return v0
+Label1:
+    const v0, 0
+    return v0
+
+.catch java/lang/RuntimeException from Label0 to Label1 using Label1
+.end method
+
+
+.method private test()Z
+.limit regs 2
+Label0:
+    new-instance v0, java/lang/RuntimeException
+    invoke-direct {v0}, java/lang/RuntimeException/<init>()V
+    throw  v0
+Label1:
+    const v1, 1
+    return v1
+
+.catch java/lang/RuntimeException from Label0 to Label1 using Label1
+.end method
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.java b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.java
new file mode 100644
index 0000000..50ef212
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_12 {
+
+    public boolean run() {
+        
+        try{
+            return test();
+        } catch(RuntimeException e2) {
+        }
+        return false;
+    }
+    
+    private boolean test() {
+        try {
+            throw new RuntimeException();
+        } catch(RuntimeException e1) {
+            return true;
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.d b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.d
new file mode 100644
index 0000000..95c3657
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_2.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+      return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       new-instance v1, java/lang/Throwable
+       invoke-direct {v1}, java/lang/Throwable/<init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.java b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.java
new file mode 100644
index 0000000..df4c62d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_2 {
+
+    public void run() throws Throwable {
+        throw new Throwable();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_3.d b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_3.d
new file mode 100644
index 0000000..7ef732a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_3.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       const-wide v1, 314
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.d b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.d
new file mode 100644
index 0000000..ab5d803
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_4.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/4 v1, 0
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.java b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.java
new file mode 100644
index 0000000..89c576d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_4 {
+
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.d b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.d
new file mode 100644
index 0000000..4e23269
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_5.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public declared_synchronized run()V
+.limit regs 6
+
+       monitor-exit v5
+
+       new-instance v1, java/lang/NullPointerException
+       invoke-direct {v1}, java/lang/NullPointerException/<init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.java b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.java
new file mode 100644
index 0000000..748e08c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_5 {
+
+    public synchronized void run() {
+            throw new NullPointerException();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_6.d b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_6.d
new file mode 100644
index 0000000..51ca304
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_6.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       new-instance v1, java/lang/RuntimeException
+       invoke-direct {v1}, java/lang/RuntimeException/<init>()V
+       throw v5
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_7.d b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_7.d
new file mode 100644
index 0000000..bf85401
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_7.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       const v1, 3.14
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.d b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.d
new file mode 100644
index 0000000..8b91411
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_opc_throw_8.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       new-instance v1, java/lang/Error
+       invoke-direct {v1}, java/lang/Error/<init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.java b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.java
new file mode 100644
index 0000000..30dc98a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_8 {
+
+    public void run() throws Error {
+        throw new Error();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_9.java b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_9.java
new file mode 100644
index 0000000..bd173cc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_9 {
+    
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int/Test_or_int.java b/tools/vm-tests/src/dot/junit/opcodes/or_int/Test_or_int.java
new file mode 100644
index 0000000..e2ebcbf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int/Test_or_int.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_int.d.T_or_int_1;
+import dot.junit.opcodes.or_int.d.T_or_int_6;
+
+public class Test_or_int extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_or_int_1 t = new T_or_int_1();
+        assertEquals(15, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+        T_or_int_1 t = new T_or_int_1();
+        assertEquals(0xfffffff9, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_or_int_1 t = new T_or_int_1();
+        assertEquals(-1, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_int_6 t = new T_or_int_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_int_1 t = new T_or_int_1();
+        assertEquals(-1, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_int_1 t = new T_or_int_1();
+        assertEquals(0xffffffff, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int.d.T_or_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int.d.T_or_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int.d.T_or_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int.d.T_or_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_1.d b/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_1.d
new file mode 100644
index 0000000..bac2513
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_1.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_1.java b/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_1.java
new file mode 100644
index 0000000..36da158
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int.d;
+
+public class T_or_int_1 {
+
+    public int run(int a, int b) {
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_2.d b/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_2.d
new file mode 100644
index 0000000..9afca45
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_2.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_3.d b/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_3.d
new file mode 100644
index 0000000..cc2a413
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_3.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       or-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_4.d b/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_4.d
new file mode 100644
index 0000000..f47f082
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_4.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)I
+.limit regs 8
+
+       or-int v0, v5, v6
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_5.d b/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_5.d
new file mode 100644
index 0000000..65aee2f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_5.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_6.d b/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_6.d
new file mode 100644
index 0000000..5543c18
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_6.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       or-int v0, v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_6.java b/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_6.java
new file mode 100644
index 0000000..9450467
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int/d/T_or_int_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int.d;
+
+public class T_or_int_6 {
+
+    public int run(float a, int b) {
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/Test_or_int_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/Test_or_int_2addr.java
new file mode 100644
index 0000000..1278e42
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/Test_or_int_2addr.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_1;
+import dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_6;
+
+public class Test_or_int_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_or_int_2addr_1 t = new T_or_int_2addr_1();
+        assertEquals(15, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+        T_or_int_2addr_1 t = new T_or_int_2addr_1();
+        assertEquals(0xfffffff9, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_or_int_2addr_1 t = new T_or_int_2addr_1();
+        assertEquals(-1, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_int_2addr_6 t = new T_or_int_2addr_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_int_2addr_1 t = new T_or_int_2addr_1();
+        assertEquals(-1, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_int_2addr_1 t = new T_or_int_2addr_1();
+        assertEquals(0xffffffff, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.d
new file mode 100644
index 0000000..c1d6357
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_2addr_1.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.java
new file mode 100644
index 0000000..d802576
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_2addr.d;
+
+public class T_or_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_2.d
new file mode 100644
index 0000000..0fe271f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_2addr_2.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_3.d
new file mode 100644
index 0000000..f7b8de4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_2addr_3.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       or-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_4.d
new file mode 100644
index 0000000..c29c45a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_2addr_4.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       or-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_5.d
new file mode 100644
index 0000000..55c9544
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_2addr_5.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.d
new file mode 100644
index 0000000..2eb863f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_2addr_6.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       or-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.java
new file mode 100644
index 0000000..271e8ef
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_2addr.d;
+
+public class T_or_int_2addr_6 {
+
+    public int run(float a, int b) {
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/Test_or_int_lit16.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/Test_or_int_lit16.java
new file mode 100644
index 0000000..0595a7f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/Test_or_int_lit16.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_1;
+import dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_2;
+import dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_3;
+import dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_4;
+import dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_5;
+
+public class Test_or_int_lit16 extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_or_int_lit16_1 t = new T_or_int_lit16_1();
+        assertEquals(15, t.run(15));
+    }
+
+    /**
+     * @title Arguments = 0x5ff5, 0x7ff7
+     */
+    public void testN2() {
+        T_or_int_lit16_2 t = new T_or_int_lit16_2();
+        assertEquals(0x7ff7, t.run(0x5ff5));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_or_int_lit16_3 t = new T_or_int_lit16_3();
+        assertEquals(-1, t.run(0xcaf));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_int_lit16_4 t = new T_or_int_lit16_4();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_int_lit16_3 t = new T_or_int_lit16_3();
+        assertEquals(-1, t.run(0));
+    }
+
+    /**
+     * @title Arguments = Short.MAX_VALUE & Short.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_int_lit16_5 t = new T_or_int_lit16_5();
+        assertEquals(0xffffffff, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.d
new file mode 100644
index 0000000..2750eb2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_1.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v7, 8
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.java
new file mode 100644
index 0000000..b9c94bc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_1 {
+    
+    public int run(int a) {
+        int b = 8;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.d
new file mode 100644
index 0000000..bbddaa9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_2.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v7, 0x7ff7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.java
new file mode 100644
index 0000000..b87fd5b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_2 {
+    
+    public int run(int a) {
+        int b = 0x7ff7;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.d
new file mode 100644
index 0000000..ee50f62
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_3.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.java
new file mode 100644
index 0000000..bddbf13
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_3 {
+    
+    public int run(int a) {
+        int b = -1;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.d
new file mode 100644
index 0000000..2bc0910
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_4.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       or-int/lit16 v0, v7, 15
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.java
new file mode 100644
index 0000000..fe01a61
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_4 {
+    
+    public int run(float a) {
+        int b = 15;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.d
new file mode 100644
index 0000000..a227848
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_5.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v7, 32767
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.java
new file mode 100644
index 0000000..f94b3aa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_5 {
+    
+    public int run(int b) {
+        int a = Short.MAX_VALUE;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.d
new file mode 100644
index 0000000..539491a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_6.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v8, 8
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.java
new file mode 100644
index 0000000..78c7732
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_6 {
+    
+    public int run(int a) {
+        int b = 8;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.d
new file mode 100644
index 0000000..1e28c75
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_7.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       or-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.java
new file mode 100644
index 0000000..784592a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_7 {
+    
+    public int run(double a) {
+        int b = 10;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.d
new file mode 100644
index 0000000..42150a1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_8.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       or-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.java
new file mode 100644
index 0000000..0f65388
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_8 {
+    
+    public int run(long a) {
+        int b = 10;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.d
new file mode 100644
index 0000000..a810f2d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit16_9.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.java
new file mode 100644
index 0000000..96c28ae
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_9 {
+    
+    public int run(int a) {
+        int b = 10;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/Test_or_int_lit8.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/Test_or_int_lit8.java
new file mode 100644
index 0000000..a9b697c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/Test_or_int_lit8.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_1;
+import dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_2;
+import dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_3;
+import dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_4;
+import dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_5;
+
+public class Test_or_int_lit8 extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_or_int_lit8_1 t = new T_or_int_lit8_1();
+        assertEquals(15, t.run(15));
+    }
+
+    /**
+     * @title Arguments = 0x5f, 0x7f
+     */
+    public void testN2() {
+        T_or_int_lit8_2 t = new T_or_int_lit8_2();
+        assertEquals(0x7f, t.run(0x5f));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_or_int_lit8_3 t = new T_or_int_lit8_3();
+        assertEquals(-1, t.run(0xcaf));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_int_lit8_4 t = new T_or_int_lit8_4();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_int_lit8_3 t = new T_or_int_lit8_3();
+        assertEquals(-1, t.run(0));
+    }
+
+    /**
+     * @title Arguments = Short.MAX_VALUE & Short.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_int_lit8_5 t = new T_or_int_lit8_5();
+        assertEquals(0xffffffff, t.run(Byte.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.d
new file mode 100644
index 0000000..71967f6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_1.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v7, 8
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.java
new file mode 100644
index 0000000..eaedd28
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_1 {
+    
+    public int run(int a) {
+        int b = 8;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.d
new file mode 100644
index 0000000..44143ff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_2.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v7, 0x7f
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.java
new file mode 100644
index 0000000..3a93f0e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_2 {
+    
+    public int run(int a) {
+        int b = 0x7f;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.d
new file mode 100644
index 0000000..9039138
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_3.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.java
new file mode 100644
index 0000000..0c93d21
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_3 {
+    
+    public int run(int a) {
+        int b = -1;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.d
new file mode 100644
index 0000000..6e07519
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_4.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       or-int/lit8 v0, v7, 15
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.java
new file mode 100644
index 0000000..83c991b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_4 {
+    
+    public int run(float a) {
+        int b = 15;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.d
new file mode 100644
index 0000000..c765b57
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_5.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v7, 127
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.java
new file mode 100644
index 0000000..8cc8560
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_5 {
+    
+    public int run(int a) {
+        int b = Byte.MAX_VALUE;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.d
new file mode 100644
index 0000000..3a70209
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_6.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.java
new file mode 100644
index 0000000..5f9478b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_6 {
+    
+    public int run(int a) {
+        int b = 10;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.d
new file mode 100644
index 0000000..8040a0e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_7.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       or-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.java
new file mode 100644
index 0000000..578692d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_7 {
+    
+    public int run(double a) {
+        int b = 10;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.d
new file mode 100644
index 0000000..e0b4801
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_8.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       or-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.java
new file mode 100644
index 0000000..a00cb27
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_8 {
+    
+    public int run(long a) {
+        int b = 10;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.d b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.d
new file mode 100644
index 0000000..7e44fec
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_int_lit8_9.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.java b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.java
new file mode 100644
index 0000000..1a67d00
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_9 {
+    
+    public int run(int a) {
+        int b = 10;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long/Test_or_long.java b/tools/vm-tests/src/dot/junit/opcodes/or_long/Test_or_long.java
new file mode 100644
index 0000000..87c351e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long/Test_or_long.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_long.d.T_or_long_1;
+import dot.junit.opcodes.or_long.d.T_or_long_3;
+
+public class Test_or_long extends DxTestCase {
+
+    /**
+     * @title Arguments = 123456789121l, 2l
+     */
+    public void testN1() {
+        T_or_long_1 t = new T_or_long_1();
+        assertEquals(123456789123l, t.run(123456789121l, 2l));
+    }
+
+    /**
+     * @title Arguments = 0xffffffffffffff8l, 0xffffffffffffff1l
+     */
+    public void testN2() {
+        T_or_long_1 t = new T_or_long_1();
+        assertEquals(0xffffffffffffff9l, t.run(0xffffffffffffff8l,
+                0xffffffffffffff1l));
+    }
+
+    /**
+     * @title Arguments = 0xabcdefabcdef & -1
+     */
+    public void testN3() {
+        T_or_long_1 t = new T_or_long_1();
+        assertEquals(-1l, t.run(0xabcdefabcdefl, -1l));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_long_3 t = new T_or_long_3();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_long_1 t = new T_or_long_1();
+        assertEquals(-1l, t.run(0l, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_long_1 t = new T_or_long_1();
+        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long.d.T_or_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long.d.T_or_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long.d.T_or_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long.d.T_or_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_1.d b/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_1.d
new file mode 100644
index 0000000..6bc5ef8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_1.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_1.java b/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_1.java
new file mode 100644
index 0000000..0e565cc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_long.d;
+
+public class T_or_long_1 {
+
+    public long run(long a, long b) {
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_2.d b/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_2.d
new file mode 100644
index 0000000..b33694e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_2.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long v0, v10, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_3.d b/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_3.d
new file mode 100644
index 0000000..f85ee63
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_3.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       or-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_3.java b/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_3.java
new file mode 100644
index 0000000..2a86c48
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_long.d;
+
+public class T_or_long_3 {
+
+    public long run(long a, double b) {
+        return a | (long)b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_4.d b/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_4.d
new file mode 100644
index 0000000..89337b0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_4.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)J
+.limit regs 14
+
+       or-long v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_5.d b/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_5.d
new file mode 100644
index 0000000..91fbc4d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_5.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FJ)J
+.limit regs 14
+
+       or-long v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_6.d b/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_6.d
new file mode 100644
index 0000000..ee5c07a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long/d/T_or_long_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_6.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long v0, v9, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/Test_or_long_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/Test_or_long_2addr.java
new file mode 100644
index 0000000..16e34b0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/Test_or_long_2addr.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_1;
+import dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_3;
+
+public class Test_or_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 123456789121l, 2l
+     */
+    public void testN1() {
+        T_or_long_2addr_1 t = new T_or_long_2addr_1();
+        assertEquals(123456789123l, t.run(123456789121l, 2l));
+    }
+
+    /**
+     * @title Arguments = 0xffffffffffffff8l, 0xffffffffffffff1l
+     */
+    public void testN2() {
+        T_or_long_2addr_1 t = new T_or_long_2addr_1();
+        assertEquals(0xffffffffffffff9l, t.run(0xffffffffffffff8l,
+                0xffffffffffffff1l));
+    }
+
+    /**
+     * @title Arguments = 0xabcdefabcdef & -1
+     */
+    public void testN3() {
+        T_or_long_2addr_1 t = new T_or_long_2addr_1();
+        assertEquals(-1l, t.run(0xabcdefabcdefl, -1l));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_long_2addr_3 t = new T_or_long_2addr_3();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_long_2addr_1 t = new T_or_long_2addr_1();
+        assertEquals(-1l, t.run(0l, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_long_2addr_1 t = new T_or_long_2addr_1();
+        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.d
new file mode 100644
index 0000000..a7c4859
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_2addr_1.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.java
new file mode 100644
index 0000000..c82fc8a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_long_2addr.d;
+
+public class T_or_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_2.d
new file mode 100644
index 0000000..f7db657
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_2addr_2.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long/2addr v10, v14
+       return-wide v10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.d
new file mode 100644
index 0000000..5604162
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_2addr_3.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       or-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.java b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.java
new file mode 100644
index 0000000..98c77b5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.or_long_2addr.d;
+
+public class T_or_long_2addr_3 {
+
+    public long run(long a, double b) {
+        return a | (long)b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_4.d
new file mode 100644
index 0000000..a13b59f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_2addr_4.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)J
+.limit regs 14
+
+       or-long/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_5.d
new file mode 100644
index 0000000..7d7667d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_2addr_5.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FJ)J
+.limit regs 14
+
+       or-long/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_6.d
new file mode 100644
index 0000000..65d1c7b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_or_long_2addr_6.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/Test_packed_switch.java b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/Test_packed_switch.java
new file mode 100644
index 0000000..780a490
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/Test_packed_switch.java
@@ -0,0 +1,212 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.packed_switch;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.packed_switch.d.T_packed_switch_1;
+import dot.junit.opcodes.packed_switch.d.T_packed_switch_2;
+
+public class Test_packed_switch extends DxTestCase {
+
+    /**
+     * @title try different values
+     */
+    public void testN1() {
+        T_packed_switch_1 t = new T_packed_switch_1();
+        assertEquals(2, t.run(-1));
+
+        assertEquals(-1, t.run(4));
+        assertEquals(20, t.run(2));
+        assertEquals(-1, t.run(5));
+
+        assertEquals(-1, t.run(6));
+        assertEquals(20, t.run(3));
+        assertEquals(-1, t.run(7));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN2() {
+        try {
+            T_packed_switch_2 t = new T_packed_switch_2();
+            t.run(-1.23f);
+        } catch(Throwable t) {
+            
+        }
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_packed_switch_1 t = new T_packed_switch_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_packed_switch_1 t = new T_packed_switch_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_packed_switch_1 t = new T_packed_switch_1();
+        assertEquals(-1, t.run(0));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A7 
+     * @title branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A7
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint A7 
+     * @title offset to table shall be inside method
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A7
+     * @title the size and the list of targets must be consistent. 
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint B22
+     * @title packed-switch-data pseudo-instructions must not be reachable by control flow 
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A7
+     * @title table has wrong ident code
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.d b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.d
new file mode 100644
index 0000000..bd692e7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_1.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+       packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.java b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.java
new file mode 100644
index 0000000..4c56e14
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.packed_switch.d;
+
+public class T_packed_switch_1 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.d b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.d
new file mode 100644
index 0000000..d1d2d03
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_11.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.dfh b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.dfh
new file mode 100644
index 0000000..451465e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 7b3e5055
+    55 50 3E 7B 
+// parsed: offset 12, len 20: signature           : 13de...bd04
+    13 DE 7D 13 9F C2 C8 77 AF 7A EA 9B 47 76 9C 01 E5 F3 BD 04 
+// parsed: offset 32, len 4: file_size           : 608
+    60 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 472 (0x0001d8)
+    D8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 368
+    70 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_11;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 405 (0x000195) "Ljava/lang/Object;"
+    95 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 425 (0x0001a9) "T_packed_switch_11.java"
+    A9 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 450 (0x0001c2) "V"
+    C2 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 453 (0x0001c5) "run"
+    C5 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_11;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_packed_switch_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 458 (0x0001ca)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 CA 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_11.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_11.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 24
+        18 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: packed-switch v4, 0000000a //  +0x0000000a
+            2B 04 0A 00 00 00 
+        // parsed: offset 286, len 2: |0003: const/4 v2, #int -1 // #0xff
+            12 F2 
+        // parsed: offset 288, len 2: |0004: return v2
+            0F 02 
+        // parsed: offset 290, len 2: |0005: const/4 v2, #int 2 // #0x2
+            12 22 
+        // parsed: offset 292, len 2: |0006: return v2
+            0F 02 
+        // parsed: offset 294, len 4: |0007: const/16 v2, #int 20 // #0x14
+            13 02 14 00 
+        // parsed: offset 298, len 2: |0009: return v2
+            0F 02 
+        // parsed: offset 300, len 28: |000a: packed-switch-data (14 units)
+//@mod            00 01 05 00 FF FF FF FF 05 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+            00 01 06 00 FF FF FF FF 05 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 56: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_11;"
+    36 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 2F 64 2F 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 31 31 3B 00 
+// parsed: offset 405, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 425, len 25: TYPE_STRING_DATA_ITEM [5] "T_packed_switch_11.java"
+    17 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 450, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 453, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_11;"
+    // parsed: offset 458, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 459, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 460, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 461, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 462, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 463, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 466, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 468, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 469, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 470, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 472, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 476, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 488, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 500, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 512, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 524, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 536, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 548, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 560, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 572, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 334 (0x00014e)
+        02 20 00 00 08 00 00 00 4E 01 00 00 
+    // parsed: offset 584, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 458 (0x0001ca)
+        00 20 00 00 01 00 00 00 CA 01 00 00 
+    // parsed: offset 596, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 472 (0x0001d8)
+        00 10 00 00 01 00 00 00 D8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.java b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.java
new file mode 100644
index 0000000..3565f3a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.packed_switch.d;
+
+public class T_packed_switch_11 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        }
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_12.d b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_12.d
new file mode 100644
index 0000000..58afb0b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_12.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_12.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       goto Label0
+
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+       packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+Label0:       
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.d b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.d
new file mode 100644
index 0000000..2e7471b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_13.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       goto Label0
+Label0:       
+       packed-switch v4, 0
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+       packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.dfh b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.dfh
new file mode 100644
index 0000000..4bfcca7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 87464e10
+    10 4E 46 87 
+// parsed: offset 12, len 20: signature           : 7bca...1bb2
+    7B CA CF 83 19 C2 CE 39 ED B4 6A 93 F6 BF AF D5 3E F6 1B B2 
+// parsed: offset 32, len 4: file_size           : 608
+    60 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 472 (0x0001d8)
+    D8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 368
+    70 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_13;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 405 (0x000195) "Ljava/lang/Object;"
+    95 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 425 (0x0001a9) "T_packed_switch_13.java"
+    A9 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 450 (0x0001c2) "V"
+    C2 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 453 (0x0001c5) "run"
+    C5 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_13;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_13;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_packed_switch_13.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 458 (0x0001ca)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 CA 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_13.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_13.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 24
+        18 00 00 00 
+    // insns:
+        // parsed: offset 280, len 2: |0000: goto 0001 // +0x0001
+            28 01 
+        // parsed: offset 282, len 6: |0001: packed-switch v4, 0000000c //  +0x0000000b
+            2B 04 0B 00 00 00 
+        // parsed: offset 288, len 2: |0004: const/4 v2, #int -1 // #0xff
+            12 F2 
+        // parsed: offset 290, len 2: |0005: return v2
+            0F 02 
+        // parsed: offset 292, len 2: |0006: const/4 v2, #int 2 // #0x2
+            12 22 
+        // parsed: offset 294, len 2: |0007: return v2
+            0F 02 
+        // parsed: offset 296, len 4: |0008: const/16 v2, #int 20 // #0x14
+            13 02 14 00 
+        // parsed: offset 300, len 2: |000a: return v2
+            0F 02 
+        // parsed: offset 302, len 2: |000b: nop // spacer
+            00 00 
+        // parsed: offset 304, len 24: |000c: packed-switch-data (12 units)
+//@mod            00 01 04 00 00 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+            00 06 04 00 00 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 56: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_13;"
+    36 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 2F 64 2F 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 31 33 3B 00 
+// parsed: offset 405, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 425, len 25: TYPE_STRING_DATA_ITEM [5] "T_packed_switch_13.java"
+    17 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 31 33 2E 6A 61 76 61 00 
+// parsed: offset 450, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 453, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_13;"
+    // parsed: offset 458, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 459, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 460, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 461, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 462, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 463, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 466, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 468, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 469, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 470, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 472, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 476, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 488, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 500, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 512, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 524, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 536, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 548, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 560, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 572, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 334 (0x00014e)
+        02 20 00 00 08 00 00 00 4E 01 00 00 
+    // parsed: offset 584, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 458 (0x0001ca)
+        00 20 00 00 01 00 00 00 CA 01 00 00 
+    // parsed: offset 596, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 472 (0x0001d8)
+        00 10 00 00 01 00 00 00 D8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.d b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.d
new file mode 100644
index 0000000..a356eb3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_2.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.java b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.java
new file mode 100644
index 0000000..977aea7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.packed_switch.d;
+
+public class T_packed_switch_2 {
+
+    public int run(float i) {
+        switch ((int)i) {
+        case -1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_3.d b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_3.d
new file mode 100644
index 0000000..79e9e8d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_3.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_3.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v5, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_4.d b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_4.d
new file mode 100644
index 0000000..1c3d42b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_4.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_4.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 5
+       packed-switch v3, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_5.d b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_5.d
new file mode 100644
index 0000000..c648fbb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_5.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_5.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 5
+       packed-switch v3, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_6.d b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_6.d
new file mode 100644
index 0000000..9a18602
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_6.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_6.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v3, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.d b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.d
new file mode 100644
index 0000000..ebf9766
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_7.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.dfh b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.dfh
new file mode 100644
index 0000000..d30068e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : efe7503a
+    3A 50 E7 EF 
+// parsed: offset 12, len 20: signature           : eeec...6db9
+    EE EC 3C 7A 99 EE 9C AE 73 67 A0 02 4A 34 19 B6 D1 E8 6D B9 
+// parsed: offset 32, len 4: file_size           : 608
+    60 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 472 (0x0001d8)
+    D8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 368
+    70 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_7;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 404 (0x000194) "Ljava/lang/Object;"
+    94 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 424 (0x0001a8) "T_packed_switch_7.java"
+    A8 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 448 (0x0001c0) "V"
+    C0 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 451 (0x0001c3) "run"
+    C3 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_7;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_7;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_packed_switch_7.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 456 (0x0001c8)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 C8 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_7.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_7.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 24
+        18 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: packed-switch v4, 0000000a //  +0x0000000a
+            2B 04 0A 00 00 00 
+        // parsed: offset 286, len 2: |0003: const/4 v2, #int -1 // #0xff
+            12 F2 
+        // parsed: offset 288, len 2: |0004: return v2
+            0F 02 
+        // parsed: offset 290, len 2: |0005: const/4 v2, #int 2 // #0x2
+            12 22 
+        // parsed: offset 292, len 2: |0006: return v2
+            0F 02 
+        // parsed: offset 294, len 4: |0007: const/16 v2, #int 20 // #0x14
+            13 02 14 00 
+        // parsed: offset 298, len 2: |0009: return v2
+            0F 02 
+        // parsed: offset 300, len 28: |000a: packed-switch-data (14 units)
+//@mod            00 01 05 00 FF FF FF FF 05 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+            00 01 05 00 FF FF FF FF 05 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 01 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_7;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 2F 64 2F 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 37 3B 00 
+// parsed: offset 404, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 424, len 24: TYPE_STRING_DATA_ITEM [5] "T_packed_switch_7.java"
+    16 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 37 2E 6A 61 76 61 00 
+// parsed: offset 448, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 451, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_7;"
+    // parsed: offset 456, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 457, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 458, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 459, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 460, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 461, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 464, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 466, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 467, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 468, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 470, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 472, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 476, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 488, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 500, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 512, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 524, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 536, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 548, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 560, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 572, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 334 (0x00014e)
+        02 20 00 00 08 00 00 00 4E 01 00 00 
+    // parsed: offset 584, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 456 (0x0001c8)
+        00 20 00 00 01 00 00 00 C8 01 00 00 
+    // parsed: offset 596, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 472 (0x0001d8)
+        00 10 00 00 01 00 00 00 D8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.java b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.java
new file mode 100644
index 0000000..53e1806
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.packed_switch.d;
+
+public class T_packed_switch_7 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.d b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.d
new file mode 100644
index 0000000..b22771c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_8.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const v2, -1
+       return v2
+Label9:
+       const v2, 2
+       return v2
+Label12:
+       const v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.dfh b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.dfh
new file mode 100644
index 0000000..71189f2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 7f5c534c
+    4C 53 5C 7F 
+// parsed: offset 12, len 20: signature           : 97ca...2c6d
+    97 CA 8C F6 19 E5 9D 0D D2 A3 C8 ED 06 77 15 0E AE A8 2C 6D 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_8;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 416 (0x0001a0) "Ljava/lang/Object;"
+    A0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 436 (0x0001b4) "T_packed_switch_8.java"
+    B4 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 460 (0x0001cc) "V"
+    CC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 463 (0x0001cf) "run"
+    CF 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_8;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_packed_switch_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 468 (0x0001d4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_8.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_8.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: packed-switch v4, 00000010 //  +0x00000010
+            2B 04 10 00 00 00 
+        // parsed: offset 286, len 6: |0003: const v2, #float nan // #0xffffffff int
+            14 02 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v2
+            0F 02 
+        // parsed: offset 294, len 6: |0007: const v2, #float 0.000000 // #0x00000002 int
+            14 02 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v2
+            0F 02 
+        // parsed: offset 302, len 6: |000b: const v2, #float 0.000000 // #0x00000014 int
+            14 02 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v2
+            0F 02 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: packed-switch-data (14 units)
+//@mod            00 01 05 00 FF FF FF FF 07 00 00 00 03 00 00 00 03 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 01 05 00 FF FF FF FF 07 00 00 00 03 00 00 00 03 00 00 00 0B 00 00 00 0C 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_8;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 2F 64 2F 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 38 3B 00 
+// parsed: offset 416, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 436, len 24: TYPE_STRING_DATA_ITEM [5] "T_packed_switch_8.java"
+    16 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 460, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 463, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_8;"
+    // parsed: offset 468, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 469, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 470, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 471, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 472, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 473, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 476, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 479, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 480, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 482, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 20 00 00 01 00 00 00 D4 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.d b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.d
new file mode 100644
index 0000000..217a917
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_packed_switch_9.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+       packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.dfh b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.dfh
new file mode 100644
index 0000000..f499745
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 8b9450f3
+    F3 50 94 8B 
+// parsed: offset 12, len 20: signature           : 70d9...f3d5
+    70 D9 7D E3 97 15 3F D2 B8 B5 72 A3 F9 DE 77 29 3D 5A F3 D5 
+// parsed: offset 32, len 4: file_size           : 608
+    60 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 472 (0x0001d8)
+    D8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 368
+    70 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_9;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 404 (0x000194) "Ljava/lang/Object;"
+    94 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 424 (0x0001a8) "T_packed_switch_9.java"
+    A8 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 448 (0x0001c0) "V"
+    C0 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 451 (0x0001c3) "run"
+    C3 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_9;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_packed_switch_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 456 (0x0001c8)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 C8 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_9.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_9.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 24
+        18 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: packed-switch v4, 0000000a //  +0x0000000a
+//@mod            2B 04 0A 00 00 00 
+            2B 04 0A 01 00 00 
+        // parsed: offset 286, len 2: |0003: const/4 v2, #int -1 // #0xff
+            12 F2 
+        // parsed: offset 288, len 2: |0004: return v2
+            0F 02 
+        // parsed: offset 290, len 2: |0005: const/4 v2, #int 2 // #0x2
+            12 22 
+        // parsed: offset 292, len 2: |0006: return v2
+            0F 02 
+        // parsed: offset 294, len 4: |0007: const/16 v2, #int 20 // #0x14
+            13 02 14 00 
+        // parsed: offset 298, len 2: |0009: return v2
+            0F 02 
+        // parsed: offset 300, len 28: |000a: packed-switch-data (14 units)
+            00 01 05 00 FF FF FF FF 05 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_9;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 2F 64 2F 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 39 3B 00 
+// parsed: offset 404, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 424, len 24: TYPE_STRING_DATA_ITEM [5] "T_packed_switch_9.java"
+    16 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 448, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 451, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_9;"
+    // parsed: offset 456, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 457, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 458, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 459, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 460, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 461, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 464, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 466, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 467, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 468, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 470, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 472, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 476, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 488, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 500, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 512, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 524, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 536, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 548, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 560, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 572, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 334 (0x00014e)
+        02 20 00 00 08 00 00 00 4E 01 00 00 
+    // parsed: offset 584, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 456 (0x0001c8)
+        00 20 00 00 01 00 00 00 C8 01 00 00 
+    // parsed: offset 596, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 472 (0x0001d8)
+        00 10 00 00 01 00 00 00 D8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double/Test_rem_double.java b/tools/vm-tests/src/dot/junit/opcodes/rem_double/Test_rem_double.java
new file mode 100644
index 0000000..bd540d8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double/Test_rem_double.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_double.d.T_rem_double_1;
+import dot.junit.opcodes.rem_double.d.T_rem_double_4;
+
+public class Test_rem_double extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(2.7d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(0d, t.run(0, 3.14d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(-0.43999999999999995d, t.run(-3.14d, 2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_rem_double_4 t = new T_rem_double_4();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(-2.7d, t.run(-2.7d, Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(Double.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(0d, t.run(0, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(Double.NaN, t.run(-2.7d, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(0d, t.run(1, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, -1E-9d
+     */
+    public void testB9() {
+        T_rem_double_1 t = new T_rem_double_1();
+
+        assertEquals(1.543905285031139E-10d, t.run(Double.MAX_VALUE, -1E-9d));
+    }
+
+    /**
+     * @constraint A24
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double.d.T_rem_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double.d.T_rem_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double.d.T_rem_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double.d.T_rem_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.d b/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.d
new file mode 100644
index 0000000..2585be4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_double_1.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.java b/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.java
new file mode 100644
index 0000000..11f42f0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_double.d;
+
+public class T_rem_double_1 {
+
+    public double run(double a, double b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_2.d b/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_2.d
new file mode 100644
index 0000000..bacfdfd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_double_2.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double v0, v12, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_3.d b/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_3.d
new file mode 100644
index 0000000..87ce2da
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_double_3.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)D
+.limit regs 14
+
+       rem-double v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.d b/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.d
new file mode 100644
index 0000000..b917916
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_double_4.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 14
+
+       rem-double v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.java b/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.java
new file mode 100644
index 0000000..52b842d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_double.d;
+
+public class T_rem_double_4 {
+
+    public double run(long a, double b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_5.d b/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_5.d
new file mode 100644
index 0000000..6a2a11a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_5.d
@@ -0,0 +1,18 @@
+.source T_rem_double_5.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double v0, v9, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_6.d b/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_6.d
new file mode 100644
index 0000000..5cb0397
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double/d/T_rem_double_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_double_6.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)D
+.limit regs 14
+
+       rem-double v0, v11, v13
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/Test_rem_double_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/Test_rem_double_2addr.java
new file mode 100644
index 0000000..da7b741
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/Test_rem_double_2addr.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_double_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_1;
+import dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_4;
+
+public class Test_rem_double_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(2.7d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(0d, t.run(0, 3.14d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(-0.43999999999999995d, t.run(-3.14d, 2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_rem_double_2addr_4 t = new T_rem_double_2addr_4();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(-2.7d, t.run(-2.7d, Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(Double.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(0d, t.run(0, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(Double.NaN, t.run(-2.7d, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(0d, t.run(1, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, -1E-9d
+     */
+    public void testB9() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+
+        assertEquals(1.543905285031139E-10d, t.run(Double.MAX_VALUE, -1E-9d));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.d
new file mode 100644
index 0000000..898b7db
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_1.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.java
new file mode 100644
index 0000000..bf60eb6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_double_2addr.d;
+
+public class T_rem_double_2addr_1 {
+    
+    public double run(double a, double b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_2.d
new file mode 100644
index 0000000..923864f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_2.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_2.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double/2addr v12, v14
+       return-wide v12
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_3.d
new file mode 100644
index 0000000..5913c80
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_3.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_3.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)D
+.limit regs 14
+
+       rem-double/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.d
new file mode 100644
index 0000000..a146daf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_4.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 14
+
+       rem-double/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.java b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.java
new file mode 100644
index 0000000..964d640
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_double_2addr.d;
+
+public class T_rem_double_2addr_4 {
+    
+    public double run(long a, double b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_5.d
new file mode 100644
index 0000000..92c22bf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_5.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_6.d
new file mode 100644
index 0000000..7ea6104
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_6.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)D
+.limit regs 14
+
+       rem-double/2addr v11, v13
+       return-wide v11
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float/Test_rem_float.java b/tools/vm-tests/src/dot/junit/opcodes/rem_float/Test_rem_float.java
new file mode 100644
index 0000000..2955a04
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float/Test_rem_float.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_float.d.T_rem_float_1;
+import dot.junit.opcodes.rem_float.d.T_rem_float_6;
+
+public class Test_rem_float extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(2.7f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(0f, t.run(0, 3.14f));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(-0.44000006f, t.run(-3.14f, 2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_rem_float_6 t = new T_rem_float_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(-2.7f, t.run(-2.7f, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(Float.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(0f, t.run(0, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(Float.NaN, t.run(-2.7f, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(0f, t.run(1, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(7.2584893E-10f, t.run(Float.MAX_VALUE, -1E-9f));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float.d.T_rem_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float.d.T_rem_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float.d.T_rem_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float.d.T_rem_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.d b/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.d
new file mode 100644
index 0000000..a4edaea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_1.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.java b/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.java
new file mode 100644
index 0000000..0c5e640
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_float.d;
+
+public class T_rem_float_1 {
+
+    public float run(float a, float b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_2.d b/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_2.d
new file mode 100644
index 0000000..8ce3466
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_2.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_3.d b/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_3.d
new file mode 100644
index 0000000..e773a12
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_3.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)F
+.limit regs 8
+
+       rem-float v0, v5, v6
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_4.d b/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_4.d
new file mode 100644
index 0000000..afde65c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_4.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)F
+.limit regs 8
+
+       rem-float v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_5.d b/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_5.d
new file mode 100644
index 0000000..23740bf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_5.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.d b/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.d
new file mode 100644
index 0000000..83ac469
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_6.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)F
+.limit regs 8
+
+       rem-float v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.java b/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.java
new file mode 100644
index 0000000..d2592a2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_float.d;
+
+public class T_rem_float_6 {
+
+    public float run(float a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/Test_rem_float_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/Test_rem_float_2addr.java
new file mode 100644
index 0000000..d0d743a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/Test_rem_float_2addr.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_float_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_1;
+import dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_6;
+
+public class Test_rem_float_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(2.7f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(0f, t.run(0, 3.14f));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(-0.44000006f, t.run(-3.14f, 2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_rem_float_2addr_6 t = new T_rem_float_2addr_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(-2.7f, t.run(-2.7f, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(Float.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(0f, t.run(0, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(Float.NaN, t.run(-2.7f, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(0f, t.run(1, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(7.2584893E-10f, t.run(Float.MAX_VALUE, -1E-9f));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.d
new file mode 100644
index 0000000..a5571e5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_2addr_1.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.java
new file mode 100644
index 0000000..521abb6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_float_2addr.d;
+
+public class T_rem_float_2addr_1 {
+    
+    public float run(float a, float b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_2.d
new file mode 100644
index 0000000..aef48cb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_2addr_2.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_3.d
new file mode 100644
index 0000000..294652e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_2addr_3.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)F
+.limit regs 8
+
+       rem-float/2addr v5, v6
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_4.d
new file mode 100644
index 0000000..4c5f1f5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_2addr_4.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)F
+.limit regs 8
+
+       rem-float/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_5.d
new file mode 100644
index 0000000..44c82c2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_2addr_5.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.d
new file mode 100644
index 0000000..4957893
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_float_2addr_6.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)F
+.limit regs 8
+
+       rem-float/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.java b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.java
new file mode 100644
index 0000000..72d01ed
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_float_2addr.d;
+
+public class T_rem_float_2addr_6 {
+    
+    public float run(float a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int/Test_rem_int.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int/Test_rem_int.java
new file mode 100644
index 0000000..e355a30
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int/Test_rem_int.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_int.d.T_rem_int_1;
+import dot.junit.opcodes.rem_int.d.T_rem_int_6;
+
+public class Test_rem_int extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(0, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 1073741823, 4
+     */
+    public void testN2() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(3, t.run(1073741823, 4));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(0, t.run(0, 4));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(-1, t.run(-10, 3));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(1, t.run(1073741824, -3));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(-697, t.run(-17895697, -3000));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_int_6 t = new T_rem_int_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB4() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MAX_VALUE
+     */
+    public void testB5() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(1, t.run(1, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(1, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_int_1 t = new T_rem_int_1();
+        try {
+            t.run(1, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int.d.T_rem_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int.d.T_rem_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int.d.T_rem_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int.d.T_rem_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.d
new file mode 100644
index 0000000..25a1ec5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_1.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.java
new file mode 100644
index 0000000..a24b8a6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int.d;
+
+public class T_rem_int_1 {
+
+    public int run(int a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_2.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_2.d
new file mode 100644
index 0000000..1fa948b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_2.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_3.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_3.d
new file mode 100644
index 0000000..5db617b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_3.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       rem-int v0, v5, v6
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_4.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_4.d
new file mode 100644
index 0000000..69aeb8d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_4.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       rem-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_5.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_5.d
new file mode 100644
index 0000000..d3b2b76
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_5.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.d
new file mode 100644
index 0000000..032b8ae
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_6.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       rem-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.java
new file mode 100644
index 0000000..074fd8d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int.d;
+
+public class T_rem_int_6 {
+
+    public int run(float a, int b) {
+        return (int)a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/Test_rem_int_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/Test_rem_int_2addr.java
new file mode 100644
index 0000000..f45439b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/Test_rem_int_2addr.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_1;
+import dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_6;
+
+public class Test_rem_int_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(0, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 1073741823, 4
+     */
+    public void testN2() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(3, t.run(1073741823, 4));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(0, t.run(0, 4));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(-1, t.run(-10, 3));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(1, t.run(1073741824, -3));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(-697, t.run(-17895697, -3000));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_int_2addr_6 t = new T_rem_int_2addr_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB4() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MAX_VALUE
+     */
+    public void testB5() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(1, t.run(1, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(1, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        try {
+            t.run(1, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.d
new file mode 100644
index 0000000..25a7fca
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_2addr_1.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.java
new file mode 100644
index 0000000..d19c535
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_2addr.d;
+
+public class T_rem_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_2.d
new file mode 100644
index 0000000..0dee98c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_2addr_2.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_3.d
new file mode 100644
index 0000000..b76a76a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_2addr_3.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       rem-int/2addr v5, v6
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_4.d
new file mode 100644
index 0000000..e3828d6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_2addr_4.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       rem-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_5.d
new file mode 100644
index 0000000..d684c92
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_2addr_5.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.d
new file mode 100644
index 0000000..0e5825c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_2addr_6.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       rem-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.java
new file mode 100644
index 0000000..9508f97
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_2addr.d;
+
+public class T_rem_int_2addr_6 {
+
+    public int run(float a, int b) {
+        return (int)a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/Test_rem_int_lit16.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/Test_rem_int_lit16.java
new file mode 100644
index 0000000..3449f86
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/Test_rem_int_lit16.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_1;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_2;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_3;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_4;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_5;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_6;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_7;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_8;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_9;
+
+public class Test_rem_int_lit16 extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_rem_int_lit16_1 t = new T_rem_int_lit16_1();
+        assertEquals(0, t.run(8));
+    }
+
+    /**
+     * @title Arguments = 10737, 4
+     */
+    public void testN2() {
+        T_rem_int_lit16_1 t = new T_rem_int_lit16_1();
+        assertEquals(1, t.run(10737));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_int_lit16_1 t = new T_rem_int_lit16_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_int_lit16_1 t = new T_rem_int_lit16_1();
+        assertEquals(-2, t.run(-10));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_int_lit16_2 t = new T_rem_int_lit16_2();
+        assertEquals(1, t.run(22222));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_int_lit16_3 t = new T_rem_int_lit16_3();
+        assertEquals(-2235, t.run(-23235));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_int_lit16_4 t = new T_rem_int_lit16_4();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_rem_int_lit16_5 t = new T_rem_int_lit16_5();
+        assertEquals(0, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_rem_int_lit16_6 t = new T_rem_int_lit16_6();
+        assertEquals(0, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Short.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_rem_int_lit16_6 t = new T_rem_int_lit16_6();
+        assertEquals(0, t.run(Short.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE, 32767
+     */
+    public void testB4() {
+        T_rem_int_lit16_7 t = new T_rem_int_lit16_7();
+        assertEquals(-1, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, 32767
+     */
+    public void testB5() {
+        T_rem_int_lit16_7 t = new T_rem_int_lit16_7();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Arguments = 1, -32768
+     */
+    public void testB6() {
+        T_rem_int_lit16_8 t = new T_rem_int_lit16_8();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_int_lit16_9 t = new T_rem_int_lit16_9();
+        try {
+            t.run(1);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.d
new file mode 100644
index 0000000..84c49ed
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_1.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, 4
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.java
new file mode 100644
index 0000000..75963ac
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_1 {
+    
+    public int run(int a) {
+        int b = 4;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_10.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_10.d
new file mode 100644
index 0000000..4cd1fe6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_10.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_11.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_11.d
new file mode 100644
index 0000000..a5d81e0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_11.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_11.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       rem-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_12.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_12.d
new file mode 100644
index 0000000..80cab63
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_12.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_12.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       rem-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_13.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_13.d
new file mode 100644
index 0000000..2e40ee6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_13.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_13.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.d
new file mode 100644
index 0000000..ebba20d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_2.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, -3
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.java
new file mode 100644
index 0000000..7f40e12
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_2 {
+    
+    public int run(int a) {
+        int b = -3;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.d
new file mode 100644
index 0000000..0b65731
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_3.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, -3000
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.java
new file mode 100644
index 0000000..ffd9b90
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_3 {
+    
+    public int run(int a) {
+        int b = -3000;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.d
new file mode 100644
index 0000000..9b96729
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_4.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, 15
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.java
new file mode 100644
index 0000000..759ed42
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_4 {
+    
+    public int run(float a) {
+        int b = 15;
+        return (int)a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.d
new file mode 100644
index 0000000..96218a1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_5.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.java
new file mode 100644
index 0000000..7dd4dfb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_5 {
+    
+    public int run(int a) {
+        int b = -1;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.d
new file mode 100644
index 0000000..9139eec
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_6.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.java
new file mode 100644
index 0000000..d59e8a4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_6 {
+    
+    public int run(int a) {
+        int b = 1;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.d
new file mode 100644
index 0000000..9970a21
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_7.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, 32767
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.java
new file mode 100644
index 0000000..215598b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_7 {
+    
+    public int run(int a) {
+        int b = 32767;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.d
new file mode 100644
index 0000000..aa2208b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_8.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, -32768
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.java
new file mode 100644
index 0000000..77a94a2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_8 {
+    
+    public int run(int a) {
+        int b = -32768;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.d
new file mode 100644
index 0000000..91c45f8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit16_9.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, 0
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.java
new file mode 100644
index 0000000..6c6d3cc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_9 {
+    
+    public int run(int a) {
+        int b = 0;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/Test_rem_int_lit8.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/Test_rem_int_lit8.java
new file mode 100644
index 0000000..ffeeb40
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/Test_rem_int_lit8.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_1;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_2;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_3;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_4;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_5;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_6;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_7;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_8;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_9;
+
+public class Test_rem_int_lit8 extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_rem_int_lit8_1 t = new T_rem_int_lit8_1();
+        assertEquals(0, t.run(8));
+    }
+
+    /**
+     * @title Arguments = 123, 4
+     */
+    public void testN2() {
+        T_rem_int_lit8_1 t = new T_rem_int_lit8_1();
+        assertEquals(3, t.run(123));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_int_lit8_1 t = new T_rem_int_lit8_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_int_lit8_1 t = new T_rem_int_lit8_1();
+        assertEquals(-2, t.run(-10));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_int_lit8_2 t = new T_rem_int_lit8_2();
+        assertEquals(0, t.run(123));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_int_lit8_3 t = new T_rem_int_lit8_3();
+        assertEquals(-3, t.run(-123));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_int_lit8_4 t = new T_rem_int_lit8_4();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Byte.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_rem_int_lit8_5 t = new T_rem_int_lit8_5();
+        assertEquals(0, t.run(Byte.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Byte.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_rem_int_lit8_6 t = new T_rem_int_lit8_6();
+        assertEquals(0, t.run(Byte.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Byte.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_rem_int_lit8_6 t = new T_rem_int_lit8_6();
+        assertEquals(0, t.run(Byte.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE, 127
+     */
+    public void testB4() {
+        T_rem_int_lit8_7 t = new T_rem_int_lit8_7();
+        assertEquals(-2, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, 127
+     */
+    public void testB5() {
+        T_rem_int_lit8_7 t = new T_rem_int_lit8_7();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Arguments = 1, -128
+     */
+    public void testB6() {
+        T_rem_int_lit8_8 t = new T_rem_int_lit8_8();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_int_lit8_9 t = new T_rem_int_lit8_9();
+        try {
+            t.run(1);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.d
new file mode 100644
index 0000000..7d69475
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_1.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, 4
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.java
new file mode 100644
index 0000000..bf0f39d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_1 {
+
+    public int run(int a) {
+        int b = 4;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_10.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_10.d
new file mode 100644
index 0000000..15ce8db
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_10.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_11.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_11.d
new file mode 100644
index 0000000..9fb2f77
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_11.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_11.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       rem-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_12.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_12.d
new file mode 100644
index 0000000..cc7cd5e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_12.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_12.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       rem-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_13.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_13.d
new file mode 100644
index 0000000..c35575e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_13.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_13.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.d
new file mode 100644
index 0000000..4887086
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_2.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, -3
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.java
new file mode 100644
index 0000000..3c05ec4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_2 {
+
+    public int run(int a) {
+        int b = -3;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.d
new file mode 100644
index 0000000..43413ee
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_3.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, -120
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.java
new file mode 100644
index 0000000..7e97956
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_3 {
+
+    public int run(int a) {
+        int b = -120;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.d
new file mode 100644
index 0000000..48cd590
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_4.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.java
new file mode 100644
index 0000000..431ee77
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_4 {
+
+    public int run(float a) {
+        int b = 10;
+        return (int)a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.d
new file mode 100644
index 0000000..ec86de1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_5.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.java
new file mode 100644
index 0000000..c02f3e1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_5 {
+
+    public int run(int a) {
+        int b = -1;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.d
new file mode 100644
index 0000000..8300e22
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_6.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.java
new file mode 100644
index 0000000..92ad4d1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_6 {
+
+    public int run(int a) {
+        int b = 1;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.d
new file mode 100644
index 0000000..b1eeb15
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_7.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, 127
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.java
new file mode 100644
index 0000000..b4369d1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_7 {
+
+    public int run(int a) {
+        int b = 127;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.d
new file mode 100644
index 0000000..08b0729
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_8.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, -128
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.java
new file mode 100644
index 0000000..f28f470
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_8 {
+
+    public int run(int a) {
+        int b = -128;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.d b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.d
new file mode 100644
index 0000000..3c28049
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_int_lit8_9.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, 0
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.java b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.java
new file mode 100644
index 0000000..5368944
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_9 {
+
+    public int run(int a) {
+        int b = 0;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long/Test_rem_long.java b/tools/vm-tests/src/dot/junit/opcodes/rem_long/Test_rem_long.java
new file mode 100644
index 0000000..271cd75
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long/Test_rem_long.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_long.d.T_rem_long_1;
+import dot.junit.opcodes.rem_long.d.T_rem_long_3;
+
+public class Test_rem_long extends DxTestCase {
+
+    /**
+     * @title Arguments = 10000000000l, 4000000000l
+     */
+    public void testN1() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(2000000000l, t.run(10000000000l, 4000000000l));
+    }
+
+    /**
+     * @title Arguments = 1234567890123l, 123456789l
+     */
+    public void testN2() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(123l, t.run(1234567890123l, 123456789l));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(0l, t.run(0l, 1234567890123l));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(-2000000000l, t.run(-10000000000l, 4000000000l));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(2000000000l, t.run(10000000000l, -4000000000l));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(-2000000000l, t.run(-10000000000l, -4000000000l));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_long_3 t = new T_rem_long_3();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1l
+     */
+    public void testB1() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1l
+     */
+    public void testB2() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1l
+     */
+    public void testB3() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(0l, t.run(Long.MAX_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(-1l, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1l, Long.MAX_VALUE
+     */
+    public void testB5() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(1l, t.run(1l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1l, Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(1l, t.run(1l, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_long_1 t = new T_rem_long_1();
+        try {
+            t.run(1234567890123l, 0l);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long.d.T_rem_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long.d.T_rem_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long.d.T_rem_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long.d.T_rem_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.d b/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.d
new file mode 100644
index 0000000..37cfd4d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_1.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.java b/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.java
new file mode 100644
index 0000000..34e776a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_long.d;
+
+public class T_rem_long_1 {
+
+    public long run(long a, long b) {
+        return a % b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_2.d b/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_2.d
new file mode 100644
index 0000000..867c397
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_2.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long v0, v12, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.d b/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.d
new file mode 100644
index 0000000..05b4c51
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_3.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       rem-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.java b/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.java
new file mode 100644
index 0000000..33c00a8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_long.d;
+
+public class T_rem_long_3 {
+
+    public long run(long a, double b) {
+        return a % (long)b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_4.d b/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_4.d
new file mode 100644
index 0000000..165258a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_4.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)J
+.limit regs 14
+
+       rem-long v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_5.d b/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_5.d
new file mode 100644
index 0000000..ab089c08
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_5.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)J
+.limit regs 14
+
+       rem-long v0, v11, v13
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_6.d b/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_6.d
new file mode 100644
index 0000000..eb64800
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long/d/T_rem_long_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_6.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long v0, v9, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/Test_rem_long_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/Test_rem_long_2addr.java
new file mode 100644
index 0000000..e32f69c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/Test_rem_long_2addr.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_1;
+import dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_3;
+
+public class Test_rem_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 10000000000l, 4000000000l
+     */
+    public void testN1() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(2000000000l, t.run(10000000000l, 4000000000l));
+    }
+
+    /**
+     * @title Arguments = 1234567890123l, 123456789l
+     */
+    public void testN2() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(123l, t.run(1234567890123l, 123456789l));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(0l, t.run(0l, 1234567890123l));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(-2000000000l, t.run(-10000000000l, 4000000000l));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(2000000000l, t.run(10000000000l, -4000000000l));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(-2000000000l, t.run(-10000000000l, -4000000000l));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_long_2addr_3 t = new T_rem_long_2addr_3();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1l
+     */
+    public void testB1() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1l
+     */
+    public void testB2() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1l
+     */
+    public void testB3() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(0l, t.run(Long.MAX_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(-1l, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1l, Long.MAX_VALUE
+     */
+    public void testB5() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(1l, t.run(1l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1l, Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(1l, t.run(1l, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        try {
+            t.run(1234567890123l, 0l);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  (types of arguments - int, long).
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.d
new file mode 100644
index 0000000..83c111e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_2addr_1.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.java
new file mode 100644
index 0000000..197ce60
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_long_2addr.d;
+
+public class T_rem_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a % b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_2.d
new file mode 100644
index 0000000..79c9750
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_2addr_2.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long/2addr v12, v14
+       return-wide v12
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.d
new file mode 100644
index 0000000..4f62b19
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_2addr_3.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       rem-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.java b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.java
new file mode 100644
index 0000000..f86c707
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rem_long_2addr.d;
+
+public class T_rem_long_2addr_3 {
+
+    public long run(long a, double b) {
+        return a % (long)b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_4.d
new file mode 100644
index 0000000..2d0d1c6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_2addr_4.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)J
+.limit regs 14
+
+       rem-long/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_5.d
new file mode 100644
index 0000000..7d4ed96
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_2addr_5.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)J
+.limit regs 14
+
+       rem-long/2addr v11, v13
+       return-wide v11
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_6.d
new file mode 100644
index 0000000..8952ae1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rem_long_2addr_6.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/Runner.java b/tools/vm-tests/src/dot/junit/opcodes/return_object/Runner.java
new file mode 100644
index 0000000..a2610ee
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/Runner.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object;
+
+public interface Runner {
+    public void doit();
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/RunnerGenerator.java b/tools/vm-tests/src/dot/junit/opcodes/return_object/RunnerGenerator.java
new file mode 100644
index 0000000..04644d7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/RunnerGenerator.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object;
+
+public interface RunnerGenerator {
+    public Runner run();
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/Test_return_object.java b/tools/vm-tests/src/dot/junit/opcodes/return_object/Test_return_object.java
new file mode 100644
index 0000000..9336829
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/Test_return_object.java
@@ -0,0 +1,222 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.return_object.d.T_return_object_1;
+import dot.junit.opcodes.return_object.d.T_return_object_12;
+import dot.junit.opcodes.return_object.d.T_return_object_13;
+import dot.junit.opcodes.return_object.d.T_return_object_2;
+import dot.junit.opcodes.return_object.d.T_return_object_6;
+import dot.junit.opcodes.return_object.d.T_return_object_8;
+
+
+public class Test_return_object extends DxTestCase {
+    /**
+     * @title simple
+     */
+    public void testN1() {
+        T_return_object_1 t = new T_return_object_1();
+        assertEquals("hello", t.run());
+    }
+
+    /**
+     * @title simple
+     */
+    public void testN2() {
+        T_return_object_1 t = new T_return_object_1();
+        assertEquals(t, t.run2());
+    }
+
+    /**
+     * @title return null
+     */
+    public void testN4() {
+        T_return_object_2 t = new T_return_object_2();
+        assertNull(t.run());
+    }
+
+    /**
+     * @title check that frames are discarded and reinstananted correctly
+     */
+    public void testN5() {
+        T_return_object_6 t = new T_return_object_6();
+        assertEquals("hello", t.run());
+    }
+
+
+    /**
+     * @title assignment compatibility (TChild returned as TSuper)
+     */
+    public void testN7() {
+        //@uses dot.junit.opcodes.return_object.d.T_return_object_12
+        //@uses dot.junit.opcodes.return_object.d.TChild
+        //@uses dot.junit.opcodes.return_object.d.TSuper
+        //@uses dot.junit.opcodes.return_object.d.TInterface
+        T_return_object_12 t = new T_return_object_12();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title assignment compatibility (TChild returned as TInterface)
+     */
+    public void testN8() {
+        //@uses dot.junit.opcodes.return_object.d.T_return_object_13
+        //@uses dot.junit.opcodes.return_object.d.TChild
+        //@uses dot.junit.opcodes.return_object.d.TSuper
+        //@uses dot.junit.opcodes.return_object.d.TInterface
+        T_return_object_13 t = new T_return_object_13();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_return_object_8 t = new T_return_object_8();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint B11 
+     * @title method's return type - void
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title method's return type - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title method's return type - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+  
+    /**
+     * @constraint B1 
+     * @title types of argument - int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of argument - long
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title assignment incompatible references
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.return_object.d.T_return_object_14
+        //@uses dot.junit.opcodes.return_object.d.TChild
+        //@uses dot.junit.opcodes.return_object.d.TSuper
+        //@uses dot.junit.opcodes.return_object.d.TInterface
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title assignment incompatible references
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.return_object.d.T_return_object_15
+        //@uses dot.junit.opcodes.return_object.Runner
+        //@uses dot.junit.opcodes.return_object.RunnerGenerator
+        //@uses dot.junit.opcodes.return_object.d.TSuper2
+        try {
+            RunnerGenerator rg = (RunnerGenerator) Class.forName(
+                    "dot.junit.opcodes.return_object.d.T_return_object_15").newInstance();
+            Runner r = rg.run();
+            assertFalse(r instanceof Runner);
+            assertFalse(Runner.class.isAssignableFrom(r.getClass()));
+            // only upon invocation of a concrete method,
+            // a java.lang.IncompatibleClassChangeError is thrown
+            r.doit();
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_1.d b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_1.d
new file mode 100644
index 0000000..b537c47
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_1.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_1.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 3
+
+       const-string v1, "hello"
+       return-object v1
+.end method
+
+.method public run2()Ljava/lang/Object;
+.limit regs 3
+       return-object v2
+.end method
+
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_1.java b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_1.java
new file mode 100644
index 0000000..ce9aed3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_1.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object.d;
+
+public class T_return_object_1 {
+
+    public String run() {
+        return "hello";
+    }
+    
+    public Object run2() {
+        return this;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_10.d b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_10.d
new file mode 100644
index 0000000..66e762a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_10.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       const v1, 123
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_11.d b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_11.d
new file mode 100644
index 0000000..c632133
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_11.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       const-wide v1, 123
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_12.d b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_12.d
new file mode 100644
index 0000000..ea4c11a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_12.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_12.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test()Ldot/junit/opcodes/return_object/d/TSuper;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/return_object/d/TChild
+       invoke-direct {v1}, dot/junit/opcodes/return_object/d/TChild/<init>()V
+       return-object v1
+.end method
+
+.method public run()Z
+.limit regs 4
+
+       invoke-direct {v3}, dot/junit/opcodes/return_object/d/T_return_object_12/test()Ldot/junit/opcodes/return_object/d/TSuper;
+       move-result-object v2
+       instance-of v0, v2, dot/junit/opcodes/return_object/d/TChild
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_12.java b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_12.java
new file mode 100644
index 0000000..9040acc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_12.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object.d;
+
+
+public class T_return_object_12 {
+    
+    private TSuper test() {
+        return new TChild();
+    }
+    
+    public boolean run() {
+        TSuper t = test();
+        return (t instanceof TChild);
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_13.d b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_13.d
new file mode 100644
index 0000000..4cae4ce
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_13.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_13.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test()Ldot/junit/opcodes/return_object/d/TInterface;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/return_object/d/TChild
+       invoke-direct {v1}, dot/junit/opcodes/return_object/d/TChild/<init>()V
+       return-object v1
+.end method
+
+.method public run()Z
+.limit regs 4
+Label0:
+
+       invoke-direct {v3}, dot/junit/opcodes/return_object/d/T_return_object_13/test()Ldot/junit/opcodes/return_object/d/TInterface;
+       move-result-object v2
+       instance-of v2, v2, dot/junit/opcodes/return_object/d/TChild
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_13.java b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_13.java
new file mode 100644
index 0000000..cb180d6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_13.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object.d;
+
+
+public class T_return_object_13 {
+    
+    private TInterface test() {
+        return new TChild();
+    }
+    
+    public boolean run() {
+        TInterface t = test();
+        return (t instanceof TChild);
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_14.d b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_14.d
new file mode 100644
index 0000000..cff2b12
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_14.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_14.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test()Ldot/junit/opcodes/return_object/d/TChild;
+.limit regs 6
+
+    new-instance v0, dot/junit/opcodes/return_object/d/TSuper
+    invoke-direct {v0}, dot/junit/opcodes/return_object/d/TSuper/<init>()V
+
+    return-object v0
+.end method
+
+
+.method public run()Z
+.limit regs 6
+
+    invoke-direct {v5}, dot/junit/opcodes/return_object/d/T_return_object_14/test()Ldot/junit/opcodes/return_object/d/TChild;
+    move-result-object v1
+
+    instance-of v0, v1, dot/junit/opcodes/return_object/d/TChild
+
+    return v0
+
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_15.d b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_15.d
new file mode 100644
index 0000000..29377fa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_15.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_15.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_15
+.super java/lang/Object
+.implements dot/junit/opcodes/return_object/RunnerGenerator
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ldot/junit/opcodes/return_object/Runner;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/return_object/d/TSuper2
+       invoke-direct {v1}, dot/junit/opcodes/return_object/d/TSuper2/<init>()V
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_16.d b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_16.d
new file mode 100644
index 0000000..0b8dc5b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_16.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_16.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+      return-object v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_2.d b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_2.d
new file mode 100644
index 0000000..f892233
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_2.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       const/4 v1, 0
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_2.java b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_2.java
new file mode 100644
index 0000000..916dcdd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object.d;
+
+public class T_return_object_2 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_3.d b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_3.d
new file mode 100644
index 0000000..089fde7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_3.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       return-object v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_4.d b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_4.d
new file mode 100644
index 0000000..9b30169
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_4.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()F
+.limit regs 3
+
+      const v2, 3.14    
+      return-object v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_5.d b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_5.d
new file mode 100644
index 0000000..db9df1b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_5.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+      return-object v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_6.d b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_6.d
new file mode 100644
index 0000000..582bd74
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_6.d
@@ -0,0 +1,64 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_6.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private static test()Ljava/lang/String;
+.limit regs 5
+
+       const-string v0, "aaa"
+       const-string v1, "bbb"
+       const-string v2, "ccc"
+       const-string v3, "ddd"
+       return-object v3
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 10
+       const-string v1, "a"
+       const-string v2, "b"
+       const-string v3, "c"
+       invoke-static {}, dot/junit/opcodes/return_object/d/T_return_object_6/test()Ljava/lang/String;
+       move-result-object v7
+
+       const-string v8, "ddd"
+       if-ne v7, v8, Label43
+
+       const-string v7, "a"
+       if-ne v1, v7, Label43
+
+       const-string v7, "b"
+       if-ne v2, v7, Label43
+
+       const-string v7, "c"
+       if-ne v3, v7, Label43
+
+       const-string v0, "hello"
+       return-object v0
+Label43:
+       const-string v0, "a"
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_6.java b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_6.java
new file mode 100644
index 0000000..05cd845
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_6.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object.d;
+
+public class T_return_object_6 {
+
+    public String run() {
+        return "hello";
+    }
+    
+    private static String test() {
+        String a = "aaa";
+        String b = "bbb";
+        String c = "ccc";
+        return "ddd";
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_8.d b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_8.d
new file mode 100644
index 0000000..bc2f85f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_8.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_object_8.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private declared_synchronized test()Ljava/lang/String;
+.limit regs 4
+ 
+    monitor-exit v3
+    const-string v0, "abc"
+    return-object v0
+.end method
+
+.method public run()Z
+.limit regs 3
+
+    invoke-direct {v2}, dot/junit/opcodes/return_object/d/T_return_object_8/test()Ljava/lang/String;
+
+    const v0, 1
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_8.java b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_8.java
new file mode 100644
index 0000000..65fb8e1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/T_return_object_8.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object.d;
+
+public class T_return_object_8 {
+    
+    private synchronized String test() {
+        return "abc";
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/TestStubs.d b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/TestStubs.d
new file mode 100644
index 0000000..44f819f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/TestStubs.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source TestStubs.java
+.interface dot.junit.opcodes.return_object.d.TInterface
+
+.source TestStubs.java
+.class dot.junit.opcodes.return_object.d.TSuper 
+.super java/lang/Object
+.implements dot.junit.opcodes.return_object.d.TInterface 
+    
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.source TestStubs.java
+.class dot.junit.opcodes.return_object.d.TChild 
+.super dot.junit.opcodes.return_object.d.TSuper 
+    
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, dot/junit/opcodes/return_object/d/TSuper/<init>()V
+       return-void
+.end method
+
+.source TestStubs.java
+.class dot.junit.opcodes.return_object.d.TSuper2
+.super java/lang/Object
+ 
+    
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.source TestStubs.java
+.class dot.junit.opcodes.return_object.d.TestStubs 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_object/d/TetsStubs.java b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/TetsStubs.java
new file mode 100644
index 0000000..575ec0c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_object/d/TetsStubs.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_object.d;
+
+
+interface TInterface{
+    
+}
+
+class TSuper implements TInterface {
+    
+}
+
+class TChild extends TSuper {
+    
+}
+
+class TSuper2 {
+    
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_void/Test_return_void.java b/tools/vm-tests/src/dot/junit/opcodes/return_void/Test_return_void.java
new file mode 100644
index 0000000..e5903e3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_void/Test_return_void.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_void;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.return_void.d.T_return_void_1;
+import dot.junit.opcodes.return_void.d.T_return_void_3;
+
+public class Test_return_void extends DxTestCase {
+    /**
+     * @title check that frames are discarded and reinstananted correctly
+     */
+    public void testN1() {
+        T_return_void_1 t = new T_return_void_1();
+        assertEquals(123456, t.run());
+    }
+
+
+    /**
+     * @title Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_return_void_3 t = new T_return_void_3();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint B11 
+     * @title method's return type - int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.return_void.d.T_return_void_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title method's return type - reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.return_void.d.T_return_void_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title method's return type - wide
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.return_void.d.T_return_void_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_1.d b/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_1.d
new file mode 100644
index 0000000..739e288
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_1.d
@@ -0,0 +1,65 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_void_1.java
+.class public dot.junit.opcodes.return_void.d.T_return_void_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+    
+    const v1, 1
+    const v2, 2
+    const v3, 3
+        
+    invoke-static {}, dot/junit/opcodes/return_void/d/T_return_void_1/test()V
+
+    const v4, 1    
+    if-ne v1, v4, Label0
+    
+    const v4, 2    
+    if-ne v2, v4, Label0
+
+    const v4, 3
+    if-ne v3, v4, Label0
+    
+    const v0, 123456
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+.method private static test()V
+.limit regs 5
+    
+    const v0, 9999
+    const v1, 0xaaa
+    const v2, 0xbbbb
+    const v3, 0xcccc
+    const v4, 0xdddd
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_1.java b/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_1.java
new file mode 100644
index 0000000..60615c4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_void.d;
+
+public class T_return_void_1 {
+
+    public int run() {
+        test();
+        return 123456;
+    }
+    
+    private static void test() {
+        int a = 0xaaaa;
+        int b = 0xbbbb;
+        int c = 0xcccc;
+        return;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_3.d b/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_3.d
new file mode 100644
index 0000000..ff12b06
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_3.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_void_3.java
+.class public dot.junit.opcodes.return_void.d.T_return_void_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private declared_synchronized test()V
+.limit regs 1
+
+    monitor-exit v0
+    return-void
+.end method
+
+
+
+.method public run()Z
+.limit regs 1
+
+    invoke-direct {v0}, dot/junit/opcodes/return_void/d/T_return_void_3/test()V
+
+    const v0, 1
+    return v0
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_3.java b/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_3.java
new file mode 100644
index 0000000..de9cb3a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_3.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_void.d;
+
+public class T_return_void_3 {
+    
+    private synchronized void test() {
+        return;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_5.d b/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_5.d
new file mode 100644
index 0000000..172f5d0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_void_5.java
+.class public dot.junit.opcodes.return_void.d.T_return_void_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_6.d b/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_6.d
new file mode 100644
index 0000000..001e8b4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_void_6.java
+.class public dot.junit.opcodes.return_void.d.T_return_void_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 6
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_7.d b/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_7.d
new file mode 100644
index 0000000..3aee8df
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_void/d/T_return_void_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_void_7.java
+.class public dot.junit.opcodes.return_void.d.T_return_void_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 6
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_wide/Test_return_wide.java b/tools/vm-tests/src/dot/junit/opcodes/return_wide/Test_return_wide.java
new file mode 100644
index 0000000..c97f0d2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_wide/Test_return_wide.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.return_wide.d.T_return_wide_1;
+import dot.junit.opcodes.return_wide.d.T_return_wide_3;
+
+public class Test_return_wide extends DxTestCase {
+    /**
+     * @title check that frames are discarded and reinstananted correctly
+     */
+    public void testN1() {
+        T_return_wide_1 t = new T_return_wide_1();
+        assertEquals(123456, t.run());
+    }
+
+    /**
+     * @title Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_return_wide_3 t = new T_return_wide_3();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint B11 
+     * @title method's return type - int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.return_wide.d.T_return_wide_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title method's return type - reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.return_wide.d.T_return_wide_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.return_wide.d.T_return_wide_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title return-wide on single-width register
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.return_wide.d.T_return_wide_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.d b/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.d
new file mode 100644
index 0000000..57ffaf3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.d
@@ -0,0 +1,71 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_wide_1.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 10
+    
+    const v1, 1
+    const v2, 2
+    const v3, 3
+    
+    const-wide v4, 0xdddd
+        
+    invoke-static {}, dot/junit/opcodes/return_wide/d/T_return_wide_1/test()J
+    move-result-wide v6
+    
+    cmp-long v0, v4, v6
+    if-nez v0, Label0
+
+    const v4, 1    
+    if-ne v1, v4, Label0
+    
+    const v4, 2    
+    if-ne v2, v4, Label0
+
+    const v4, 3
+    if-ne v3, v4, Label0
+    
+    const v0, 123456
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+.method private static test()J
+.limit regs 6
+    
+    const v0, 9999
+    const v1, 0xaaa
+    const v2, 0xbbbb
+    const v3, 0xcccc
+    
+    const-wide v4, 0xdddd
+    return-wide v4
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.java b/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.java
new file mode 100644
index 0000000..a96cbef
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_wide.d;
+
+public class T_return_wide_1 {
+
+    public int run() {
+        test();
+        return 123456;
+    }
+    
+    private static long test() {
+        int a = 0xaaaa;
+        int b = 0xbbbb;
+        int c = 0xcccc;
+        return 1l;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.d b/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.d
new file mode 100644
index 0000000..1a6fdb6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_wide_3.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private declared_synchronized test()D
+.limit regs 4
+
+    monitor-exit v3
+    const-wide v0, 1.0
+    return-wide v0
+.end method
+
+
+
+.method public run()Z
+.limit regs 1
+
+    invoke-direct {v0}, dot/junit/opcodes/return_wide/d/T_return_wide_3/test()D
+
+    const v0, 1
+    return v0
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.java b/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.java
new file mode 100644
index 0000000..b0bae67
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.return_wide.d;
+
+public class T_return_wide_3 {
+    
+    private synchronized long test() {
+        return 1;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_5.d b/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_5.d
new file mode 100644
index 0000000..692ac2b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_wide_5.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+    
+    const v0, 1
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_6.d b/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_6.d
new file mode 100644
index 0000000..3360ab7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_wide_6.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 6
+    
+    const-wide v0, 1
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_7.d b/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_7.d
new file mode 100644
index 0000000..0363fcc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_wide_7.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 6
+    
+    return-wide v6
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_8.d b/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_8.d
new file mode 100644
index 0000000..be64ae1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/return_wide/d/T_return_wide_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_return_wide_8.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 6
+    
+    const v0, 0
+    const v1, 0
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/Test_rsub_int.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/Test_rsub_int.java
new file mode 100644
index 0000000..bb63e7a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/Test_rsub_int.java
@@ -0,0 +1,255 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_1;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_2;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_3;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_4;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_5;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_6;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_7;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_12;
+
+public class Test_rsub_int extends DxTestCase {
+
+    /**
+     * @title normal test - check different values
+     */
+    public void testN1() {
+        T_rsub_int_1 t = new T_rsub_int_1();
+        assertEquals("Subtest_1 is failed", -4, t.run(8));
+        assertEquals("Subtest_2 is failed",45, t.run1(15));
+        assertEquals("Subtest_3 is failed",0, t.run2(20));
+        assertEquals("Subtest_4 is failed",-35, t.run3(10));
+        assertEquals("Subtest_5 is failed",-20, t.run4(-50));
+        assertEquals("Subtest_6 is failed",20, t.run5(-70));
+    }
+
+    /**
+     * @title normal test - check different values
+     */
+    public void testN2() {
+        T_rsub_int_2 t = new T_rsub_int_2();
+        assertEquals("Subtest_1 is failed",255, t.run(0));
+        assertEquals("Subtest_2 is failed",-32768, t.run1(0));
+        assertEquals("Subtest_3 is failed",-15, t.run2(15));
+        assertEquals("Subtest_4 is failed",123, t.run2(-123));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_rsub_int_12 t = new T_rsub_int_12();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = 0, b-a = -Integer.MAX_VALUE
+     * 2: a = Short.MAX_VALUE, b = 0, b-a = -Short.MAX_VALUE
+     */
+    public void testB1() {
+        T_rsub_int_3 t = new T_rsub_int_3();
+        assertEquals(-Integer.MAX_VALUE, t.run(Integer.MAX_VALUE));
+        assertEquals(-Short.MAX_VALUE, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = 0, b-a = Integer.MIN_VALUE
+     * 2: a = Short.MIN_VALUE, b = 0, b-a = 32768
+     */
+    public void testB2() {
+        T_rsub_int_3 t = new T_rsub_int_3();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(32768, t.run(Short.MIN_VALUE));
+    }
+    
+    /**
+     * @title (a = 0, b = 0, b-a = 0)
+     */
+    public void testB3() {
+        T_rsub_int_3 t = new T_rsub_int_3();
+        assertEquals(0, t.run(0));
+    }
+    
+    /**
+     * @title 
+     * 1: a = 0, b = Short.MAX_VALUE, b-a = Short.MAX_VALUE
+     * 2: a = 1, b = Short.MAX_VALUE, b-a = 32766
+     * 3: a = -1, b = Short.MAX_VALUE, b-a = 32768
+     */
+    public void testB4() {
+        T_rsub_int_4 t = new T_rsub_int_4();
+        assertEquals(Short.MAX_VALUE, t.run(0));
+        assertEquals(32766, t.run(1));
+        assertEquals(32768, t.run(-1));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = Short.MAX_VALUE, b-a = -2147450881
+     * 2: a = Integer.MAX_VALUE, b = Short.MAX_VALUE, b-a = -2147450880
+     * 3: a = Short.MIN_VALUE, b = Short.MAX_VALUE, b-a = 65535
+     */
+    public void testB5() {
+        T_rsub_int_4 t = new T_rsub_int_4();
+        assertEquals(-2147450881, t.run(Integer.MIN_VALUE));
+        assertEquals(-2147450880, t.run(Integer.MAX_VALUE));
+        assertEquals(65535, t.run(Short.MIN_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = 0, b = Short.MIN_VALUE, b-a = Short.MIN_VALUE
+     * 2: a = 1, b = Short.MIN_VALUE, b-a = -32769
+     * 3: a = -1, b = Short.MIN_VALUE, b-a = -32767
+     */
+    public void testB6() {
+        T_rsub_int_5 t = new T_rsub_int_5();
+        assertEquals(Short.MIN_VALUE, t.run(0));
+        assertEquals(-32769, t.run(1));
+        assertEquals(-32767, t.run(-1));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = Short.MIN_VALUE, b-a = 2147450881
+     * 2: a = Integer.MIN_VALUE, b = Short.MIN_VALUE, b-a = 2147450880
+     * 3: a = Short.MAX_VALUE, b = Short.MIN_VALUE, b-a = -65535
+     */
+    public void testB7() {
+        T_rsub_int_5 t = new T_rsub_int_5();
+        assertEquals(2147450881, t.run(Integer.MAX_VALUE));
+        assertEquals(2147450880, t.run(Integer.MIN_VALUE));
+        assertEquals(-65535, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = -1, b-a = Integer.MAX_VALUE
+     * 2: a = Short.MIN_VALUE, b = -1, b-a = Short.MAX_VALUE 
+     */
+    public void testB8() {
+        T_rsub_int_6 t = new T_rsub_int_6();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(Short.MAX_VALUE, t.run(Short.MIN_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = -1, b-a = Integer.MIN_VALUE
+     * 2: a = Short.MAX_VALUE, b = -1, b-a = -32768
+     */
+    public void testB9() {
+        T_rsub_int_6 t = new T_rsub_int_6();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE));
+        assertEquals(-32768, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = 1, b-a = -Integer.MAX_VALUE
+     * 2: a = Integer.MAX_VALUE, b = 1, b-a = -2147483646
+     */
+    public void testB10() {
+        T_rsub_int_7 t = new T_rsub_int_7();
+        assertEquals(-Integer.MAX_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(-2147483646, t.run(Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Short.MIN_VALUE, b = 1, b-a = 32769
+     * 2: a = Short.MAX_VALUE, b = 1, b-a = -32766
+     */
+    public void testB11() {
+        T_rsub_int_7 t = new T_rsub_int_7();
+        assertEquals(32769, t.run(Short.MIN_VALUE));
+        assertEquals(-32766, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title (a = 1, b = 1, b-a = 0)
+     */
+    public void testB12() {
+        T_rsub_int_7 t = new T_rsub_int_7();
+        assertEquals(0, t.run(1));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int.d.T_rsub_int_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int.d.T_rsub_int_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int.d.T_rsub_int_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int.d.T_rsub_int_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.d
new file mode 100644
index 0000000..b5124e8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.d
@@ -0,0 +1,67 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_1.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 4
+       return v0
+.end method
+
+.method public run1(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 60
+       return v0
+.end method
+
+.method public run2(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 20
+       return v0
+.end method
+
+.method public run3(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -25
+       return v0
+.end method
+
+.method public run4(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -70
+       return v0
+.end method
+
+.method public run5(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -50
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.java
new file mode 100644
index 0000000..f90f354
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_1 {
+    
+    public int run(int a) {
+        int b = 4;
+        return b-a;
+    }
+    
+    public int run1(int a) {
+        int b = 60;
+        return b-a;
+    }
+    
+    public int run2(int a) {
+        int b = 20;
+        return b-a;
+    }
+    
+    public int run3(int a) {
+        int b = -25;
+        return b-a;
+    }
+    
+    public int run4(int a) {
+        int b = -70;
+        return b-a;
+    }
+    
+    public int run5(int a) {
+        int b = -50;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_10.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_10.d
new file mode 100644
index 0000000..544a12c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_10.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 4
+
+       rsub-int v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_11.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_11.d
new file mode 100644
index 0000000..e9a9b26
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_11.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_11.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.d
new file mode 100644
index 0000000..9c1ffec
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_12.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+
+       rsub-int v0, v3, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.java
new file mode 100644
index 0000000..d3b3a4d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_12 {
+    
+    public int run(float a) {
+        int b = 10;
+        return b-(int)a;
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.d
new file mode 100644
index 0000000..4d63eea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_2.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 255
+       return v0
+.end method
+
+.method public run1(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -32768
+       return v0
+.end method
+
+.method public run2(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 0
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.java
new file mode 100644
index 0000000..b1d8e90
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_2 {
+    
+    public int run(int a) {
+        int b = 255;
+        return b-a;
+    }
+    
+    public int run1(int a) {
+        int b = -32768;
+        return b-a;
+    }
+    
+    public int run2(int a) {
+        int b = 0;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.d
new file mode 100644
index 0000000..23efe0f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_3.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 0
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.java
new file mode 100644
index 0000000..b060bd2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_3 {
+    
+    public int run(int a) {
+        int b = 0;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.d
new file mode 100644
index 0000000..c37f9da
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_4.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 32767
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.java
new file mode 100644
index 0000000..5b38c5d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_4 {
+    
+    public int run(int a) {
+        int b = Short.MAX_VALUE;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.d
new file mode 100644
index 0000000..473020a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_5.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -32768
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.java
new file mode 100644
index 0000000..259002c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_5 {
+    
+    public int run(int a) {
+        int b = Short.MIN_VALUE;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.d
new file mode 100644
index 0000000..e902f19
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_6.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.java
new file mode 100644
index 0000000..221f348
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_6 {
+    
+    public int run(int a) {
+        int b = -1;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.d
new file mode 100644
index 0000000..6bb3571
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_7.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.java
new file mode 100644
index 0000000..180e76c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_7 {
+    
+    public int run(int a) {
+        int b = 1;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_8.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_8.d
new file mode 100644
index 0000000..9494e21
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_8.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v4, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_9.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_9.d
new file mode 100644
index 0000000..12b5fe4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_9.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 4
+
+       rsub-int v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/Test_rsub_int_lit8.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/Test_rsub_int_lit8.java
new file mode 100644
index 0000000..44dc89a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/Test_rsub_int_lit8.java
@@ -0,0 +1,255 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_1;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_2;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_3;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_4;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_5;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_6;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_7;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_12;
+
+public class Test_rsub_int_lit8 extends DxTestCase {
+
+    /**
+     * @title normal test - check different values
+     */
+    public void testN1() {
+        T_rsub_int_lit8_1 t = new T_rsub_int_lit8_1();
+        assertEquals("Subtest_1 is failed", -4, t.run(8));
+        assertEquals("Subtest_2 is failed",45, t.run1(15));
+        assertEquals("Subtest_3 is failed",0, t.run2(20));
+        assertEquals("Subtest_4 is failed",-35, t.run3(10));
+        assertEquals("Subtest_5 is failed",-20, t.run4(-50));
+        assertEquals("Subtest_6 is failed",20, t.run5(-70));
+    }
+
+    /**
+     * @title normal test - check different values
+     */
+    public void testN2() {
+        T_rsub_int_lit8_2 t = new T_rsub_int_lit8_2();
+        assertEquals("Subtest_1 is failed",123, t.run(0));
+        assertEquals("Subtest_2 is failed",-123, t.run1(0));
+        assertEquals("Subtest_3 is failed",-15, t.run2(15));
+        assertEquals("Subtest_4 is failed",85, t.run2(-85));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_rsub_int_lit8_12 t = new T_rsub_int_lit8_12();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = 0, b-a = -Integer.MAX_VALUE
+     * 2: a = Byte.MAX_VALUE, b = 0, b-a = -Byte.MAX_VALUE
+     */
+    public void testB1() {
+        T_rsub_int_lit8_3 t = new T_rsub_int_lit8_3();
+        assertEquals(-Integer.MAX_VALUE, t.run(Integer.MAX_VALUE));
+        assertEquals(-Byte.MAX_VALUE, t.run(Byte.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = 0, b-a = Integer.MIN_VALUE
+     * 2: a = Byte.MIN_VALUE, b = 0, b-a = 128
+     */
+    public void testB2() {
+        T_rsub_int_lit8_3 t = new T_rsub_int_lit8_3();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(128, t.run(Byte.MIN_VALUE));
+    }
+    
+    /**
+     * @title (a = 0, b = 0, b-a = 0)
+     */
+    public void testB3() {
+        T_rsub_int_lit8_3 t = new T_rsub_int_lit8_3();
+        assertEquals(0, t.run(0));
+    }
+    
+    /**
+     * @title 
+     * 1: a = 0, b = Byte.MAX_VALUE, b-a = Byte.MAX_VALUE
+     * 2: a = 1, b = Byte.MAX_VALUE, b-a = 126
+     * 3: a = -1, b = Byte.MAX_VALUE, b-a = 128
+     */
+    public void testB4() {
+        T_rsub_int_lit8_4 t = new T_rsub_int_lit8_4();
+        assertEquals(Byte.MAX_VALUE, t.run(0));
+        assertEquals(126, t.run(1));
+        assertEquals(128, t.run(-1));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = Byte.MAX_VALUE, b-a = -2147483521
+     * 2: a = Integer.MAX_VALUE, b = Byte.MAX_VALUE, b-a = -2147483520
+     * 3: a = Byte.MIN_VALUE, b = Byte.MAX_VALUE, b-a = 255
+     */
+    public void testB5() {
+        T_rsub_int_lit8_4 t = new T_rsub_int_lit8_4();
+        assertEquals(-2147483521, t.run(Integer.MIN_VALUE));
+        assertEquals(-2147483520, t.run(Integer.MAX_VALUE));
+        assertEquals(255, t.run(Byte.MIN_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = 0, b = Byte.MIN_VALUE, b-a = Byte.MIN_VALUE
+     * 2: a = 1, b = Byte.MIN_VALUE, b-a = -129
+     * 3: a = -1, b = Byte.MIN_VALUE, b-a = -127
+     */
+    public void testB6() {
+        T_rsub_int_lit8_5 t = new T_rsub_int_lit8_5();
+        assertEquals(Byte.MIN_VALUE, t.run(0));
+        assertEquals(-129, t.run(1));
+        assertEquals(-127, t.run(-1));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = Byte.MIN_VALUE, b-a = 2147483521
+     * 2: a = Integer.MIN_VALUE, b = Byte.MIN_VALUE, b-a = 2147483520
+     * 3: a = Byte.MAX_VALUE, b = Byte.MIN_VALUE, b-a = -255
+     */
+    public void testB7() {
+        T_rsub_int_lit8_5 t = new T_rsub_int_lit8_5();
+        assertEquals(2147483521, t.run(Integer.MAX_VALUE));
+        assertEquals(2147483520, t.run(Integer.MIN_VALUE));
+        assertEquals(-255, t.run(Byte.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = -1, b-a = Integer.MAX_VALUE
+     * 2: a = Byte.MIN_VALUE, b = -1, b-a = Byte.MAX_VALUE 
+     */
+    public void testB8() {
+        T_rsub_int_lit8_6 t = new T_rsub_int_lit8_6();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(Byte.MAX_VALUE, t.run(Byte.MIN_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = -1, b-a = Integer.MIN_VALUE
+     * 2: a = Byte.MAX_VALUE, b = -1, b-a = Byte.MIN_VALUE
+     */
+    public void testB9() {
+        T_rsub_int_lit8_6 t = new T_rsub_int_lit8_6();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE));
+        assertEquals(Byte.MIN_VALUE, t.run(Byte.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = 1, b-a = -Integer.MAX_VALUE
+     * 2: a = Integer.MAX_VALUE, b = 1, b-a = -2147483646
+     */
+    public void testB10() {
+        T_rsub_int_lit8_7 t = new T_rsub_int_lit8_7();
+        assertEquals(-Integer.MAX_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(-2147483646, t.run(Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Byte.MIN_VALUE, b = 1, b-a = 129
+     * 2: a = Byte.MAX_VALUE, b = 1, b-a = -126
+     */
+    public void testB11() {
+        T_rsub_int_lit8_7 t = new T_rsub_int_lit8_7();
+        assertEquals(129, t.run(Byte.MIN_VALUE));
+        assertEquals(-126, t.run(Byte.MAX_VALUE));
+    }
+    
+    /**
+     * @title (a = 1, b = 1, b-a = 0)
+     */
+    public void testB12() {
+        T_rsub_int_lit8_7 t = new T_rsub_int_lit8_7();
+        assertEquals(0, t.run(1));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+
+    /**
+     * @constraint B1
+     * @title types of arguments - double, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.d
new file mode 100644
index 0000000..fd45062
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.d
@@ -0,0 +1,67 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_1.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 4
+       return v0
+.end method
+
+.method public run1(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 60
+       return v0
+.end method
+
+.method public run2(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 20
+       return v0
+.end method
+
+.method public run3(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -25
+       return v0
+.end method
+
+.method public run4(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -70
+       return v0
+.end method
+
+.method public run5(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -50
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.java
new file mode 100644
index 0000000..e489328
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_1 {
+    
+    public int run(int a) {
+        int b = 4;
+        return b-a;
+    }
+    
+    public int run1(int a) {
+        int b = 60;
+        return b-a;
+    }
+    
+    public int run2(int a) {
+        int b = 20;
+        return b-a;
+    }
+    
+    public int run3(int a) {
+        int b = -25;
+        return b-a;
+    }
+    
+    public int run4(int a) {
+        int b = -70;
+        return b-a;
+    }
+    
+    public int run5(int a) {
+        int b = -50;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_10.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_10.d
new file mode 100644
index 0000000..a8e37a1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_10.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_11.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_11.d
new file mode 100644
index 0000000..615eede
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_11.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_11.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.d
new file mode 100644
index 0000000..7490328
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_12.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.java
new file mode 100644
index 0000000..9612590
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_12 {
+    
+    public int run(float a) {
+        int b = 10;
+        return b-(int)a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.d
new file mode 100644
index 0000000..fa026fc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_2.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 123
+       return v0
+.end method
+
+.method public run1(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -123
+       return v0
+.end method
+
+.method public run2(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 0
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.java
new file mode 100644
index 0000000..036ec06
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_2 {
+    
+    public int run(int a) {
+        int b = 123;
+        return b-a;
+    }
+    
+    public int run1(int a) {
+        int b = -123;
+        return b-a;
+    }
+    
+    public int run2(int a) {
+        int b = 0;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.d
new file mode 100644
index 0000000..b9b5c3f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_3.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 0
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.java
new file mode 100644
index 0000000..deb1885
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_3 {
+    
+    public int run(int a) {
+        int b = 0;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.d
new file mode 100644
index 0000000..b330a45
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_4.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 127
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.java
new file mode 100644
index 0000000..72ddcff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_4 {
+    
+    public int run(int a) {
+        int b = Byte.MAX_VALUE;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.d
new file mode 100644
index 0000000..77a0e8b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_5.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -128
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.java
new file mode 100644
index 0000000..1ec8d63
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_5 {
+    
+    public int run(int a) {
+        int b = Byte.MIN_VALUE;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.d
new file mode 100644
index 0000000..bd5d5ea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_6.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.java
new file mode 100644
index 0000000..bfe342c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_6 {
+    
+    public int run(int a) {
+        int b = -1;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.d
new file mode 100644
index 0000000..18cd602
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_7.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.java b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.java
new file mode 100644
index 0000000..ca23fb0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_7 {
+    
+    public int run(int a) {
+        int b = 1;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_8.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_8.d
new file mode 100644
index 0000000..69df5ae
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_8.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v4, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_9.d b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_9.d
new file mode 100644
index 0000000..4db3540
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_rsub_int_lit8_9.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/sget/TestStubs.java
new file mode 100644
index 0000000..4c49c61
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget;
+
+public class TestStubs {
+    // used by testVFE4
+    private static int TestStubField = 50;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/Test_sget.java b/tools/vm-tests/src/dot/junit/opcodes/sget/Test_sget.java
new file mode 100644
index 0000000..de7e2dd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/Test_sget.java
@@ -0,0 +1,280 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget.d.T_sget_1;
+import dot.junit.opcodes.sget.d.T_sget_11;
+import dot.junit.opcodes.sget.d.T_sget_2;
+import dot.junit.opcodes.sget.d.T_sget_5;
+import dot.junit.opcodes.sget.d.T_sget_9;
+
+public class Test_sget extends DxTestCase {
+    
+    /**
+     * @title type - int
+     */
+    public void testN1() {
+        T_sget_1 t = new T_sget_1();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title type - float
+     */
+    public void testN2() {
+        T_sget_2 t = new T_sget_2();
+        assertEquals(123f, t.run());
+    }
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget.d.T_sget_1
+        //@uses dot.junit.opcodes.sget.d.T_sget_11
+        T_sget_11 t = new T_sget_11();
+        assertEquals(10, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+        T_sget_5 t = new T_sget_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_9 t = new T_sget_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title read integer from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget.d.T_sget_6
+        //@uses dot.junit.opcodes.sget.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget.d.T_sget_12
+        //@uses dot.junit.opcodes.sget.d.T_sget_1
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title sget shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget shall not work for boolean fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_1.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_1.d
new file mode 100644
index 0000000..35e5808
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_1.java
+.class public dot.junit.opcodes.sget.d.T_sget_1
+.super java/lang/Object
+
+.field public static i1 I
+.field protected static p1 I
+.field private static pvt1 I
+
+.method static <clinit>()V
+.limit regs 1
+       const/4 v0, 5
+       sput v0, dot.junit.opcodes.sget.d.T_sget_1.i1 I
+
+       const/16 v0, 10
+       sput v0, dot.junit.opcodes.sget.d.T_sget_1.p1 I
+
+       const/16 v0, 20
+       sput v0, dot.junit.opcodes.sget.d.T_sget_1.pvt1 I
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_1.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_1.java b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_1.java
new file mode 100644
index 0000000..7514f03
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget.d;
+
+public class T_sget_1 {
+    public static int i1 = 5;
+    protected static int p1 = 10;
+    private static int pvt1 = 20;
+    
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_11.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_11.d
new file mode 100644
index 0000000..fb446be
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_11.java
+.class public dot.junit.opcodes.sget.d.T_sget_11
+.super dot/junit/opcodes/sget/d/T_sget_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget/d/T_sget_1/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_1.p1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_11.java b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_11.java
new file mode 100644
index 0000000..26c6cb3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget.d;
+
+public class T_sget_11 extends T_sget_1 {
+
+    public int run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_12.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_12.d
new file mode 100644
index 0000000..b1e9093
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_12.java
+.class public dot.junit.opcodes.sget.d.T_sget_12
+.super dot/junit/opcodes/sget/d/T_sget_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget/d/T_sget_1/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_1.pvt1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_13.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_13.d
new file mode 100644
index 0000000..7122dbd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_13.java
+.class public dot.junit.opcodes.sget.d.T_sget_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_13.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_14.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_14.d
new file mode 100644
index 0000000..43ed17b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_14.java
+.class public dot.junit.opcodes.sget.d.T_sget_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_15.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_15.d
new file mode 100644
index 0000000..a9d65e5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_15.java
+.class public dot.junit.opcodes.sget.d.T_sget_15
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_16.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_16.d
new file mode 100644
index 0000000..71602db
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_16.java
+.class public dot.junit.opcodes.sget.d.T_sget_16
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_16.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_17.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_17.d
new file mode 100644
index 0000000..e7bdc56
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_17.java
+.class public dot.junit.opcodes.sget.d.T_sget_17
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_18.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_18.d
new file mode 100644
index 0000000..62dbc28
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_18.java
+.class public dot.junit.opcodes.sget.d.T_sget_18
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_19.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_19.d
new file mode 100644
index 0000000..0f3374d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_19.java
+.class public dot.junit.opcodes.sget.d.T_sget_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_2.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_2.d
new file mode 100644
index 0000000..de5c7cb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_2.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_2.java
+.class public dot.junit.opcodes.sget.d.T_sget_2
+.super java/lang/Object
+
+.field public static val F
+
+.method static <clinit>()V
+.limit regs 2
+       const v0, 123.0
+       sput v0, dot.junit.opcodes.sget.d.T_sget_2.val F
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()F
+.limit regs 4
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_2.val F
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_2.java b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_2.java
new file mode 100644
index 0000000..ff7bdee
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget.d;
+
+public class T_sget_2 {
+
+    public static float val = 123.0f;
+    
+    public float run() {
+        return val;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_20.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_20.d
new file mode 100644
index 0000000..e03ccd6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_20.java
+.class public dot.junit.opcodes.sget.d.T_sget_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_3.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_3.d
new file mode 100644
index 0000000..1932bb7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_3.java
+.class public dot.junit.opcodes.sget.d.T_sget_3
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v3, dot.junit.opcodes.sget.d.T_sget_3.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_4.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_4.d
new file mode 100644
index 0000000..761c38f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_4.java
+.class public dot.junit.opcodes.sget.d.T_sget_4
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_4.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_4.dfh
new file mode 100644
index 0000000..4e7aba1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget/d/T_sget_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget/d/T_sget_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 69ff3a97
+    97 3A FF 69 
+// parsed: offset 12, len 20: signature           : 3483...6e37
+    34 83 98 B4 CA 38 A5 6E 4C 43 40 55 16 41 5A 69 D0 18 6E 37 
+// parsed: offset 32, len 4: file_size           : 544
+    20 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 408 (0x000198)
+    98 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 296
+    28 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "I"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/sget/d/T_sget_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 344 (0x000158) "Ljava/lang/Object;"
+    58 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 364 (0x00016c) "T_sget_4.java"
+    6C 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 379 (0x00017b) "V"
+    7B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 382 (0x00017e) "i1"
+    7E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 386 (0x000182) "run"
+    82 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sget/d/T_sget_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sget/d/T_sget_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 391 (0x000187)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 87 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget.d.T_sget_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget.d.T_sget_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget v1, Ldot/junit/opcodes/sget/d/T_sget_4;.i1:I // field@0000
+//@mod            60 01 00 00 
+            60 01 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 307, len 37: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sget/d/T_sget_4;"
+    23 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 2F 64 2F 54 5F 73 67 65 74 5F 34 3B 00 
+// parsed: offset 344, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 364, len 15: TYPE_STRING_DATA_ITEM [4] "T_sget_4.java"
+    0D 54 5F 73 67 65 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 379, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 382, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 386, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget/d/T_sget_4;"
+    // parsed: offset 391, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 392, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 393, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 394, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 395, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 396, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 397, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 398, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 401, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 403, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 404, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 405, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 407, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 408, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 412, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 424, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 436, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 448, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 460, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 472, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 484, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 496, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 508, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 520, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 391 (0x000187)
+        00 20 00 00 01 00 00 00 87 01 00 00 
+    // parsed: offset 532, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 10 00 00 01 00 00 00 98 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_5.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_5.d
new file mode 100644
index 0000000..544f350
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_5.java
+.class public dot.junit.opcodes.sget.d.T_sget_5
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const/4 v2, 5
+       iput v2, v3, dot.junit.opcodes.sget.d.T_sget_5.i1 I
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_5.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_5.java b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_5.java
new file mode 100644
index 0000000..1dac50e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget.d;
+
+public class T_sget_5 {
+
+    public int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_6.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_6.d
new file mode 100644
index 0000000..b78b202
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_6.java
+.class public dot.junit.opcodes.sget.d.T_sget_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.TestStubs.TestStubField I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_7.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_7.d
new file mode 100644
index 0000000..7423dcd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_7.java
+.class public dot.junit.opcodes.sget.d.T_sget_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_7no_class.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_8.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_8.d
new file mode 100644
index 0000000..915f609
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_8.java
+.class public dot.junit.opcodes.sget.d.T_sget_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_8.i1N I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_9.d b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_9.d
new file mode 100644
index 0000000..831c623
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_9.d
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget.d.StubInitError
+.super java/lang/Object
+
+.field public static value I
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput v1, dot.junit.opcodes.sget.d.StubInitError.value I
+       return-void
+.end method
+
+
+.source T_sget_9.java
+.class public dot.junit.opcodes.sget.d.T_sget_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.StubInitError.value I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_9.java b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_9.java
new file mode 100644
index 0000000..600a586
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget/d/T_sget_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget.d;
+
+public class T_sget_9 {
+    
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/TestStubs.java
new file mode 100644
index 0000000..b353763
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_boolean;
+
+public class TestStubs {
+    // used by testVFE4
+    private static boolean TestStubField = false;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/Test_sget_boolean.java b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/Test_sget_boolean.java
new file mode 100644
index 0000000..85ef065
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/Test_sget_boolean.java
@@ -0,0 +1,275 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_11;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_5;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_9;
+
+public class Test_sget_boolean extends DxTestCase {
+    
+    /**
+     * @title get boolean from static field
+     */
+    public void testN1() {
+        T_sget_boolean_1 t = new T_sget_boolean_1();
+        assertEquals(true, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1
+        //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_11
+        T_sget_boolean_11 t = new T_sget_boolean_11();
+        assertEquals(true, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+        
+        T_sget_boolean_5 t = new T_sget_boolean_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_boolean_9 t = new T_sget_boolean_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+   
+
+    /**
+     * @constraint A12 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title read boolean from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_6
+        //@uses dot.junit.opcodes.sget_boolean.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_12
+        //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title sget_boolean shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_boolean shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_boolean shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_boolean shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_boolean shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_boolean shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_boolean shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.d
new file mode 100644
index 0000000..1910152
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_1.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1
+.super java/lang/Object
+
+.field public static i1 Z
+.field protected static p1 Z
+.field private static pvt1 Z
+
+.method static <clinit>()V
+.limit regs 1
+       const/4 v0, 1
+       sput-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.i1 Z
+
+       const/16 v0, 1
+       sput-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.p1 Z
+
+       const/16 v0, 1
+       sput-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.pvt1 Z
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.java b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.java
new file mode 100644
index 0000000..00604c6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_1 {
+    public static boolean i1 = true;
+    protected static boolean p1 = true;
+    private static boolean pvt1 = true;
+    
+    public boolean run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.d
new file mode 100644
index 0000000..a37791b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_11.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_11
+.super dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.p1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.java b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.java
new file mode 100644
index 0000000..46e332b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_11 extends T_sget_boolean_1 {
+
+    public boolean run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.d
new file mode 100644
index 0000000..a6d38b5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_12.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_12
+.super dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.pvt1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.d
new file mode 100644
index 0000000..f183859
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_13.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_13.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_14.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_14.d
new file mode 100644
index 0000000..90de215
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_14.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_15.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_15.d
new file mode 100644
index 0000000..e09d93c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_15.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_15
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_16.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_16.d
new file mode 100644
index 0000000..f6c3529
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_16.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_16
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_17.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_17.d
new file mode 100644
index 0000000..25cadc8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_17.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_17
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_18.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_18.d
new file mode 100644
index 0000000..871ff9b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_18.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_18
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_19.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_19.d
new file mode 100644
index 0000000..1f4f9e8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_19.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_20.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_20.d
new file mode 100644
index 0000000..79d51ff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_20.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_3.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_3.d
new file mode 100644
index 0000000..c3271ba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_3.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_3
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v3, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_3.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.d
new file mode 100644
index 0000000..2ef169f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_4.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_4
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_4.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.dfh
new file mode 100644
index 0000000..2c1995e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 70504938
+    38 49 50 70 
+// parsed: offset 12, len 20: signature           : 1b7b...73d9
+    1B 7B 48 9B 96 83 AB B3 90 67 E9 49 E2 EF 20 98 90 CD 73 D9 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "Ljava/lang/Object;"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 377 (0x000179) "T_sget_boolean_4.java"
+    79 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 400 (0x000190) "V"
+    90 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 403 (0x000193) "Z"
+    93 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 406 (0x000196) "i1"
+    96 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "run"
+    9A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "Z"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  type_idx: 3 (0x000003) name_idx: 6 (0x000006) "i1"
+    00 00 03 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_sget_boolean_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 415 (0x00019f)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 9F 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_boolean.d.T_sget_boolean_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_boolean.d.T_sget_boolean_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget-boolean v1, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;.i1:Z // field@0000
+//@mod            63 01 00 00 
+            63 01 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 53: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 62 6F 6F 6C 65 61 6E 2F 64 2F 54 5F 73 67 65 74 5F 62 6F 6F 6C 65 61 6E 5F 34 3B 00 
+// parsed: offset 357, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 377, len 23: TYPE_STRING_DATA_ITEM [3] "T_sget_boolean_4.java"
+    15 54 5F 73 67 65 74 5F 62 6F 6F 6C 65 61 6E 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 403, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 406, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;"
+    // parsed: offset 415, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 416, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 417, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 418, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 419, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 420, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 421, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 422, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 425, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 427, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 428, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 429, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 431, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 415 (0x00019f)
+        00 20 00 00 01 00 00 00 9F 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.d
new file mode 100644
index 0000000..8edf874
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_5.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_5
+.super java/lang/Object
+
+.field public i1 Z
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const/4 v2, 1
+       iput-boolean v2, v3, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_5.i1 Z
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_5.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.java b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.java
new file mode 100644
index 0000000..e8c679a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_5 {
+
+    public boolean i1 = false;
+    public boolean run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.d
new file mode 100644
index 0000000..2bd59dc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_6.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.TestStubs.TestStubField Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.d
new file mode 100644
index 0000000..32ef38f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_7.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_7no_class.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.d
new file mode 100644
index 0000000..04c780c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_boolean_8.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_8.i1N Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.d b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.d
new file mode 100644
index 0000000..0cf9a87
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_boolean.d.StubInitError
+.super java/lang/Object
+
+.field public static value Z
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 1
+       div-int/2addr v1, v0
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sget_boolean.d.StubInitError.value Z
+       return-void
+.end method
+
+
+.source T_sget_boolean_9.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.StubInitError.value Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.java b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.java
new file mode 100644
index 0000000..0956174
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_9 {
+    
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/TestStubs.java
new file mode 100644
index 0000000..3402e8d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_byte;
+
+public class TestStubs {
+    // used by testVFE4
+    private static byte TestStubField = 0;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/Test_sget_byte.java b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/Test_sget_byte.java
new file mode 100644
index 0000000..87781ac
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/Test_sget_byte.java
@@ -0,0 +1,275 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_1;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_11;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_5;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_9;
+
+public class Test_sget_byte extends DxTestCase {
+    
+    /**
+     * @title get byte from static field
+     */
+    public void testN1() {
+        T_sget_byte_1 t = new T_sget_byte_1();
+        assertEquals(77, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_byte.d.T_sget_byte_1
+        //@uses dot.junit.opcodes.sget_byte.d.T_sget_byte_11
+        T_sget_byte_11 t = new T_sget_byte_11();
+        assertEquals(77, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+        
+        T_sget_byte_5 t = new T_sget_byte_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_byte_9 t = new T_sget_byte_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+   
+
+    /**
+     * @constraint A12 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title read byte from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_byte.d.T_sget_byte_6
+        //@uses dot.junit.opcodes.sget_byte.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_byte.d.T_sget_byte_12
+        //@uses dot.junit.opcodes.sget_byte.d.T_sget_byte_1
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title sget_byte shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_byte shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_byte shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_byte shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_byte shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_byte shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_byte shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.d
new file mode 100644
index 0000000..314c2b6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_1.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_1
+.super java/lang/Object
+
+.field public static i1 B
+.field protected static p1 B
+.field private static pvt1 B
+
+.method static <clinit>()V
+.limit regs 1
+       const v0, 77
+       sput-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.i1 B
+
+       const v0, 77
+       sput-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.p1 B
+
+       const v0, 77
+       sput-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.pvt1 B
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.java b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.java
new file mode 100644
index 0000000..e1918b9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_1 {
+    public static byte i1 = 77;
+    protected static byte p1 = 77;
+    private static byte pvt1 = 77;
+    
+    public byte run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.d
new file mode 100644
index 0000000..2c6fb91
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_11.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_11
+.super dot/junit/opcodes/sget_byte/d/T_sget_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_byte/d/T_sget_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.p1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.java b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.java
new file mode 100644
index 0000000..bf69487
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_11 extends T_sget_byte_1 {
+
+    public byte run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.d
new file mode 100644
index 0000000..f2be588
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_12.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_12
+.super dot/junit/opcodes/sget_byte/d/T_sget_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_byte/d/T_sget_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.pvt1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.d
new file mode 100644
index 0000000..8da3d7a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_13.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_13.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_14.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_14.d
new file mode 100644
index 0000000..d64eedc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_14.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_15.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_15.d
new file mode 100644
index 0000000..7c02a3b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_15.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_15
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_16.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_16.d
new file mode 100644
index 0000000..09e1280
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_16.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_16
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_17.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_17.d
new file mode 100644
index 0000000..41d95fb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_17.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_17
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_18.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_18.d
new file mode 100644
index 0000000..e95a5eb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_18.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_18
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_19.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_19.d
new file mode 100644
index 0000000..822c286
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_19.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_20.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_20.d
new file mode 100644
index 0000000..e9c6567
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_20.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_3.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_3.d
new file mode 100644
index 0000000..800e5f2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_3.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_3
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v3, dot.junit.opcodes.sget_byte.d.T_sget_byte_3.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.d
new file mode 100644
index 0000000..5e884e3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_4.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_4
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_4.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.dfh
new file mode 100644
index 0000000..c17b068
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c4b64202
+    02 42 B6 C4 
+// parsed: offset 12, len 20: signature           : e618...6c74
+    E6 18 01 1F 28 B9 CC 8D 4C FC 81 38 DA 39 48 BB 16 05 6C 74 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "B"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_sget_byte_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "B"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "B"
+//     return_type_idx: 0 (0x000000) "B"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_byte_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_byte.d.T_sget_byte_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_byte.d.T_sget_byte_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget-byte v1, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;.i1:B // field@0000
+//@mod            64 01 00 00 
+            64 01 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "B"
+    01 42 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 62 79 74 65 2F 64 2F 54 5F 73 67 65 74 5F 62 79 74 65 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_sget_byte_4.java"
+    12 54 5F 73 67 65 74 5F 62 79 74 65 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;"
+    // parsed: offset 406, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 407, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.d
new file mode 100644
index 0000000..ad5d006
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_5.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_5
+.super java/lang/Object
+
+.field public i1 B
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const v2, 77
+       iput-byte v2, v3, dot.junit.opcodes.sget_byte.d.T_sget_byte_5.i1 B
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_5.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.java b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.java
new file mode 100644
index 0000000..4391486
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_5 {
+
+    public byte i1 = 77;
+    public byte run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.d
new file mode 100644
index 0000000..48a4cb8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_6.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.TestStubs.TestStubField B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.d
new file mode 100644
index 0000000..e887bec
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_7.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_7no_class.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.d
new file mode 100644
index 0000000..96ab1da
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_byte_8.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_8.i1N B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.d b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.d
new file mode 100644
index 0000000..aee1a37
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_byte.d.StubInitError
+.super java/lang/Object
+
+.field public static value B
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 1
+       div-int/2addr v1, v0
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sget_byte.d.StubInitError.value B
+       return-void
+.end method
+
+
+.source T_sget_byte_9.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.StubInitError.value B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.java b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.java
new file mode 100644
index 0000000..3bd966d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_9 {
+    
+    public byte run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/sget_char/TestStubs.java
new file mode 100644
index 0000000..dc99b6b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_char;
+
+public class TestStubs {
+    // used by testVFE4
+    private static char TestStubField = 0;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/Test_sget_char.java b/tools/vm-tests/src/dot/junit/opcodes/sget_char/Test_sget_char.java
new file mode 100644
index 0000000..1cf81b7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/Test_sget_char.java
@@ -0,0 +1,275 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_char.d.T_sget_char_1;
+import dot.junit.opcodes.sget_char.d.T_sget_char_11;
+import dot.junit.opcodes.sget_char.d.T_sget_char_5;
+import dot.junit.opcodes.sget_char.d.T_sget_char_9;
+
+public class Test_sget_char extends DxTestCase {
+    
+    /**
+     * @title get char from static field
+     */
+    public void testN1() {
+        T_sget_char_1 t = new T_sget_char_1();
+        assertEquals(77, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_char.d.T_sget_char_1
+        //@uses dot.junit.opcodes.sget_char.d.T_sget_char_11
+        T_sget_char_11 t = new T_sget_char_11();
+        assertEquals(77, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+        
+        T_sget_char_5 t = new T_sget_char_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_char_9 t = new T_sget_char_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+   
+
+    /**
+     * @constraint A12 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title read char from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_char.d.T_sget_char_6
+        //@uses dot.junit.opcodes.sget_char.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_char.d.T_sget_char_12
+        //@uses dot.junit.opcodes.sget_char.d.T_sget_char_1
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title sget_char shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_char shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_char shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_char shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_char shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_char shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_char shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.d
new file mode 100644
index 0000000..5fc252d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_1.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_1
+.super java/lang/Object
+
+.field public static i1 C
+.field protected static p1 C
+.field private static pvt1 C
+
+.method static <clinit>()V
+.limit regs 1
+       const v0, 77
+       sput-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_1.i1 C
+
+       const v0, 77
+       sput-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_1.p1 C
+
+       const v0, 77
+       sput-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_1.pvt1 C
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_1.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.java b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.java
new file mode 100644
index 0000000..3a606be
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_1 {
+    public static char i1 = 77;
+    protected static char p1 = 77;
+    private static char pvt1 = 77;
+    
+    public char run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.d
new file mode 100644
index 0000000..d4d3efb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_11.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_11
+.super dot/junit/opcodes/sget_char/d/T_sget_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_char/d/T_sget_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_1.p1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.java b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.java
new file mode 100644
index 0000000..fd73e27
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_11 extends T_sget_char_1 {
+
+    public char run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.d
new file mode 100644
index 0000000..708f2db
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_12.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_12
+.super dot/junit/opcodes/sget_char/d/T_sget_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_char/d/T_sget_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_1.pvt1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.d
new file mode 100644
index 0000000..eb652bc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_13.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_13.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_14.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_14.d
new file mode 100644
index 0000000..c1b8040
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_14.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_15.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_15.d
new file mode 100644
index 0000000..dedb8e2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_15.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_15
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_16.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_16.d
new file mode 100644
index 0000000..82a5544
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_16.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_16
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_17.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_17.d
new file mode 100644
index 0000000..abff0e4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_17.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_17
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_18.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_18.d
new file mode 100644
index 0000000..b73a284
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_18.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_18
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_19.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_19.d
new file mode 100644
index 0000000..437c0bd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_19.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_20.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_20.d
new file mode 100644
index 0000000..eeaff5d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_20.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_3.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_3.d
new file mode 100644
index 0000000..3c6e95d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_3.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_3
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v3, dot.junit.opcodes.sget_char.d.T_sget_char_3.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.d
new file mode 100644
index 0000000..9aeb10d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_4.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_4
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_4.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.dfh
new file mode 100644
index 0000000..42e44bf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_char/d/T_sget_char_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_char/d/T_sget_char_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 15a34188
+    88 41 A3 15 
+// parsed: offset 12, len 20: signature           : 7979...9945
+    79 79 0B 7C 86 0C D4 6D A0 83 40 1C 4E AF AA 03 59 84 99 45 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "C"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/sget_char/d/T_sget_char_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_sget_char_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "C"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sget_char/d/T_sget_char_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "C"
+//     return_type_idx: 0 (0x000000) "C"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sget_char/d/T_sget_char_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_char_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_char.d.T_sget_char_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_char.d.T_sget_char_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget-char v1, Ldot/junit/opcodes/sget_char/d/T_sget_char_4;.i1:C // field@0000
+//@mod            65 01 00 00 
+            65 01 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "C"
+    01 43 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sget_char/d/T_sget_char_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 63 68 61 72 2F 64 2F 54 5F 73 67 65 74 5F 63 68 61 72 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_sget_char_4.java"
+    12 54 5F 73 67 65 74 5F 63 68 61 72 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_char/d/T_sget_char_4;"
+    // parsed: offset 406, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 407, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.d
new file mode 100644
index 0000000..fe1c7ba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_5.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_5
+.super java/lang/Object
+
+.field public i1 C
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const v2, 77
+       iput-char v2, v3, dot.junit.opcodes.sget_char.d.T_sget_char_5.i1 C
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_5.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.java b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.java
new file mode 100644
index 0000000..00fb8ba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_5 {
+
+    public char i1 = 77;
+    public char run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.d
new file mode 100644
index 0000000..f984ada
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_6.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.TestStubs.TestStubField C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.d
new file mode 100644
index 0000000..d7b5e35
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_7.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_7no_class.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.d
new file mode 100644
index 0000000..89ac2c8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_char_8.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_8.i1N C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.d b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.d
new file mode 100644
index 0000000..cbb4a54
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_char.d.StubInitError
+.super java/lang/Object
+
+.field public static value C
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 1
+       div-int/2addr v1, v0
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sget_char.d.StubInitError.value C
+       return-void
+.end method
+
+
+.source T_sget_char_9.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.StubInitError.value C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.java b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.java
new file mode 100644
index 0000000..bc84d1e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_9 {
+    
+    public char run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/sget_object/TestStubs.java
new file mode 100644
index 0000000..68b9ec7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object;
+
+public class TestStubs {
+    // used by testVFE4
+    private static Object TestStubField = null;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/Test_sget_object.java b/tools/vm-tests/src/dot/junit/opcodes/sget_object/Test_sget_object.java
new file mode 100644
index 0000000..51d6c91
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/Test_sget_object.java
@@ -0,0 +1,289 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_object.d.T_sget_object_1;
+import dot.junit.opcodes.sget_object.d.T_sget_object_11;
+import dot.junit.opcodes.sget_object.d.T_sget_object_5;
+import dot.junit.opcodes.sget_object.d.T_sget_object_9;
+
+public class Test_sget_object extends DxTestCase {
+    
+    /**
+     * @title get object from static field
+     */
+    public void testN1() {
+        T_sget_object_1 t = new T_sget_object_1();
+        assertEquals(null, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_object.d.T_sget_object_1
+        //@uses dot.junit.opcodes.sget_object.d.T_sget_object_11
+        T_sget_object_11 t = new T_sget_object_11();
+        assertEquals(null, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+        
+        T_sget_object_5 t = new T_sget_object_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_object_9 t = new T_sget_object_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+   
+
+    /**
+     * @constraint A12 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title read object from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_object.d.T_sget_object_6
+        //@uses dot.junit.opcodes.sget_object.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_object.d.T_sget_object_12
+        //@uses dot.junit.opcodes.sget_object.d.T_sget_object_1
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title sget_object shall not work for short fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_object shall not work for char fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_object shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_object shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_object shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_object shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_object shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title only field of different type exists)
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.d
new file mode 100644
index 0000000..e77f532
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_1.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_1
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+.field protected static p1 Ljava/lang/Object;
+.field private static pvt1 Ljava/lang/Object;
+
+.method static <clinit>()V
+.limit regs 1
+       const v0, 0
+       sput-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_1.i1 Ljava/lang/Object;
+
+       const v0, 0
+       sput-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_1.p1 Ljava/lang/Object;
+
+       const v0, 0
+       sput-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_1.pvt1 Ljava/lang/Object;
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_1.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.java b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.java
new file mode 100644
index 0000000..bcfe83b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_1 {
+    public static Object i1 = null;
+    protected static Object p1 = null;
+    private static Object pvt1 = null;
+    
+    public Object run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.d
new file mode 100644
index 0000000..54e497c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_11.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_11
+.super dot/junit/opcodes/sget_object/d/T_sget_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_object/d/T_sget_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_1.p1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.java b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.java
new file mode 100644
index 0000000..9b8ce6e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_11 extends T_sget_object_1 {
+
+    public Object run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.d
new file mode 100644
index 0000000..b73c407
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_12.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_12
+.super dot/junit/opcodes/sget_object/d/T_sget_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_object/d/T_sget_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_1.pvt1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.d
new file mode 100644
index 0000000..37a8cb5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_13.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_13.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_14.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_14.d
new file mode 100644
index 0000000..1455ebd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_14.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_14
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_14.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_15.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_15.d
new file mode 100644
index 0000000..0634476
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_15.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_15
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_15.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_16.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_16.d
new file mode 100644
index 0000000..42db7a8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_16.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_16
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_17.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_17.d
new file mode 100644
index 0000000..0a3ba48
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_17.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_17
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_18.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_18.d
new file mode 100644
index 0000000..ca498f4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_18.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_18
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_19.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_19.d
new file mode 100644
index 0000000..dfcad9b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_19.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_20.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_20.d
new file mode 100644
index 0000000..89e7bfb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_20.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.d
new file mode 100644
index 0000000..ddb0713
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_21.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_21
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method static <clinit>()V
+.limit regs 1
+       new-instance v0, java/lang/Object
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       
+       sput-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_21.i1 Ljava/lang/Object;
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_21.i1 Ljava/lang/String;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_3.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_3.d
new file mode 100644
index 0000000..498a01a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_3.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_3
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v3, dot.junit.opcodes.sget_object.d.T_sget_object_3.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.d
new file mode 100644
index 0000000..d00c4a0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_4.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_4
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_4.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.dfh
new file mode 100644
index 0000000..1c40c8c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_object/d/T_sget_object_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_object/d/T_sget_object_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a1514422
+    22 44 51 A1 
+// parsed: offset 12, len 20: signature           : b308...2562
+    B3 08 01 4F 75 89 6C 79 7C 97 5C 84 37 60 65 F6 AF 62 25 62 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 156 (0x00009c)
+    9C 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 188 (0x0000bc)
+    BC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 244 (0x0000f4)
+    F4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "L"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/sget_object/d/T_sget_object_4;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_sget_object_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "i1"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "run"
+    93 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sget_object/d/T_sget_object_4;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 156, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 1 (0x000001) "Ljava/lang/Object;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 00 00 00 00 
+// parsed: offset 168, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  type_idx: 1 (0x000001) name_idx: 6 (0x000006) "i1"
+    00 00 01 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 188, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 196, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 204, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 212, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sget_object/d/T_sget_object_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_object_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 408 (0x000198)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 98 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_object.d.T_sget_object_4.<init>"
+    // parsed: offset 244, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 246, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 248, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 250, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 252, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 256, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 260, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 266, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_object.d.T_sget_object_4.run"
+    // parsed: offset 268, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 284, len 4: |0000: sget-object v1, Ldot/junit/opcodes/sget_object/d/T_sget_object_4;.i1:Ljava/lang/Object; // field@0000
+//@mod            62 01 00 00 
+            62 01 00 01 
+        // parsed: offset 288, len 2: |0002: return-object v1
+            11 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 290, len 2: PADDING
+    00 00 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 303, len 51: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sget_object/d/T_sget_object_4;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 6F 62 6A 65 63 74 2F 64 2F 54 5F 73 67 65 74 5F 6F 62 6A 65 63 74 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 22: TYPE_STRING_DATA_ITEM [4] "T_sget_object_4.java"
+    14 54 5F 73 67 65 74 5F 6F 62 6A 65 63 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 403, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_object/d/T_sget_object_4;"
+    // parsed: offset 408, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 409, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 410, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 411, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 412, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 413, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 244 (0x0000f4)
+                F4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 268 (0x00010c)
+                8C 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 144 (0x000090)
+        02 00 00 00 03 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 156 (0x00009c)
+        03 00 00 00 02 00 00 00 9C 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 180 (0x0000b4)
+        04 00 00 00 01 00 00 00 B4 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 188 (0x0000bc)
+        05 00 00 00 03 00 00 00 BC 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 212 (0x0000d4)
+        06 00 00 00 01 00 00 00 D4 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 244 (0x0000f4)
+        01 20 00 00 02 00 00 00 F4 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 292 (0x000124)
+        02 20 00 00 08 00 00 00 24 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 20 00 00 01 00 00 00 98 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.d
new file mode 100644
index 0000000..35687ab
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_5.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_5
+.super java/lang/Object
+
+.field public i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const v2, 0
+       iput-object v2, v3, dot.junit.opcodes.sget_object.d.T_sget_object_5.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_5.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.java b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.java
new file mode 100644
index 0000000..116ae52
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_5 {
+
+    public Object i1 = null;
+    public Object run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.d
new file mode 100644
index 0000000..03483da
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_6.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.TestStubs.TestStubField Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.d
new file mode 100644
index 0000000..eb172eb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_7.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_7no_class.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.d
new file mode 100644
index 0000000..841a454
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_object_8.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_8.i1N Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.d b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.d
new file mode 100644
index 0000000..efd184b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_object.d.StubInitError
+.super java/lang/Object
+
+.field public static value Ljava/lang/Object;
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 1
+       div-int/2addr v1, v0
+
+       const v1, 0
+       sput-object v1, dot.junit.opcodes.sget_object.d.StubInitError.value Ljava/lang/Object;
+       return-void
+.end method
+
+
+.source T_sget_object_9.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.StubInitError.value Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.java b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.java
new file mode 100644
index 0000000..4fbae55
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_9 {
+    
+    public Object run(){
+        return null;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/sget_short/TestStubs.java
new file mode 100644
index 0000000..3e5605b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_short;
+
+public class TestStubs {
+    // used by testVFE4
+    private static short TestStubField = 0;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/Test_sget_short.java b/tools/vm-tests/src/dot/junit/opcodes/sget_short/Test_sget_short.java
new file mode 100644
index 0000000..33a3c06
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/Test_sget_short.java
@@ -0,0 +1,275 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_short.d.T_sget_short_1;
+import dot.junit.opcodes.sget_short.d.T_sget_short_11;
+import dot.junit.opcodes.sget_short.d.T_sget_short_5;
+import dot.junit.opcodes.sget_short.d.T_sget_short_9;
+
+public class Test_sget_short extends DxTestCase {
+    
+    /**
+     * @title get short from static field
+     */
+    public void testN1() {
+        T_sget_short_1 t = new T_sget_short_1();
+        assertEquals(32000, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_short.d.T_sget_short_1
+        //@uses dot.junit.opcodes.sget_short.d.T_sget_short_11
+        T_sget_short_11 t = new T_sget_short_11();
+        assertEquals(32000, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+        
+        T_sget_short_5 t = new T_sget_short_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_short_9 t = new T_sget_short_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+   
+
+    /**
+     * @constraint A12 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title read short from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_short.d.T_sget_short_6
+        //@uses dot.junit.opcodes.sget_short.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_short.d.T_sget_short_12
+        //@uses dot.junit.opcodes.sget_short.d.T_sget_short_1
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title sget_short shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_short shall not work for char fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_short shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_short shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_short shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_short shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget_short shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.d
new file mode 100644
index 0000000..777253e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_1.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_1
+.super java/lang/Object
+
+.field public static i1 S
+.field protected static p1 S
+.field private static pvt1 S
+
+.method static <clinit>()V
+.limit regs 1
+       const v0, 32000
+       sput-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_1.i1 S
+
+       const v0, 32000
+       sput-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_1.p1 S
+
+       const v0, 32000
+       sput-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_1.pvt1 S
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_1.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.java b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.java
new file mode 100644
index 0000000..5cb80f9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_1 {
+    public static short i1 = 32000;
+    protected static short p1 = 32000;
+    private static short pvt1 = 32000;
+    
+    public short run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.d
new file mode 100644
index 0000000..d0f87a4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_11.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_11
+.super dot/junit/opcodes/sget_short/d/T_sget_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_short/d/T_sget_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_1.p1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.java b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.java
new file mode 100644
index 0000000..790a0de
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_11 extends T_sget_short_1 {
+
+    public short run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.d
new file mode 100644
index 0000000..7a0a307
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_12.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_12
+.super dot/junit/opcodes/sget_short/d/T_sget_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_short/d/T_sget_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_1.pvt1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.d
new file mode 100644
index 0000000..b37df82
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_13.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_13.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_14.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_14.d
new file mode 100644
index 0000000..3d79cd1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_14.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_15.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_15.d
new file mode 100644
index 0000000..d8751e5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_15.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_15
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_15.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_16.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_16.d
new file mode 100644
index 0000000..48f416c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_16.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_16
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_17.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_17.d
new file mode 100644
index 0000000..1cc7398
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_17.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_17
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_18.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_18.d
new file mode 100644
index 0000000..7f3ff6b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_18.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_18
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_19.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_19.d
new file mode 100644
index 0000000..b9841ae
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_19.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_20.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_20.d
new file mode 100644
index 0000000..1ae3803
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_20.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_3.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_3.d
new file mode 100644
index 0000000..9dcbd24
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_3.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_3
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v3, dot.junit.opcodes.sget_short.d.T_sget_short_3.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.d
new file mode 100644
index 0000000..ab070e6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_4.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_4
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_4.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.dfh
new file mode 100644
index 0000000..c19a74a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_short/d/T_sget_short_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_short/d/T_sget_short_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 4d504536
+    36 45 50 4D 
+// parsed: offset 12, len 20: signature           : d415...9794
+    D4 15 7B CD 4D D8 21 C3 FF 53 0E DE B1 2F 9E 3D 0D 47 97 94 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "Ldot/junit/opcodes/sget_short/d/T_sget_short_4;"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 353 (0x000161) "Ljava/lang/Object;"
+    61 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 373 (0x000175) "S"
+    75 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 376 (0x000178) "T_sget_short_4.java"
+    78 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "i1"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 404 (0x000194) "run"
+    94 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/sget_short/d/T_sget_short_4;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "S"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 3 (0x000003) "S"
+//     return_type_idx: 2 (0x000002) "S"
+//     parameters_off: 0 (0x000000)
+    03 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  type_idx: 2 (0x000002) name_idx: 6 (0x000006) "i1"
+    00 00 02 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sget_short/d/T_sget_short_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_short_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 409 (0x000199)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 99 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_short.d.T_sget_short_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_short.d.T_sget_short_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget-short v1, Ldot/junit/opcodes/sget_short/d/T_sget_short_4;.i1:S // field@0000
+//@mod            66 01 00 00 
+            66 01 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 49: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/sget_short/d/T_sget_short_4;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 73 68 6F 72 74 2F 64 2F 54 5F 73 67 65 74 5F 73 68 6F 72 74 5F 34 3B 00 
+// parsed: offset 353, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 373, len 3: TYPE_STRING_DATA_ITEM [3] "S"
+    01 53 00 
+// parsed: offset 376, len 21: TYPE_STRING_DATA_ITEM [4] "T_sget_short_4.java"
+    13 54 5F 73 67 65 74 5F 73 68 6F 72 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 404, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_short/d/T_sget_short_4;"
+    // parsed: offset 409, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 410, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 412, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 413, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 414, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 415, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 416, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 419, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 421, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 422, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 423, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 425, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 409 (0x000199)
+        00 20 00 00 01 00 00 00 99 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.d
new file mode 100644
index 0000000..b7c451a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_5.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_5
+.super java/lang/Object
+
+.field public i1 S
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const v2, 77
+       iput-short v2, v3, dot.junit.opcodes.sget_short.d.T_sget_short_5.i1 S
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_5.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.java b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.java
new file mode 100644
index 0000000..c1dda0c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_5 {
+
+    public short i1 = 32000;
+    public short run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.d
new file mode 100644
index 0000000..ce1ec34
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_6.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.TestStubs.TestStubField S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.d
new file mode 100644
index 0000000..2c82957
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_7.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_7no_class.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.d
new file mode 100644
index 0000000..645aa56
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_short_8.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_8.i1N S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.d b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.d
new file mode 100644
index 0000000..85d6755
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_short.d.StubInitError
+.super java/lang/Object
+
+.field public static value S
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 1
+       div-int/2addr v1, v0
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sget_short.d.StubInitError.value S
+       return-void
+.end method
+
+
+.source T_sget_short_9.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.StubInitError.value S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.java b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.java
new file mode 100644
index 0000000..512ef4c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_9 {
+    
+    public short run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/TestStubs.java
new file mode 100644
index 0000000..3538a38
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide;
+
+public class TestStubs {
+    // used by testVFE4
+    private static long TestStubField = 50;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/Test_sget_wide.java b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/Test_sget_wide.java
new file mode 100644
index 0000000..b107ea8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/Test_sget_wide.java
@@ -0,0 +1,284 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_1;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_11;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_2;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_5;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_9;
+
+public class Test_sget_wide extends DxTestCase {
+    
+    /**
+     * @title type - long
+     */
+    public void testN1() {
+        T_sget_wide_1 t = new T_sget_wide_1();
+        assertEquals(12345679890123l, t.run());
+    }
+
+    /**
+     * @title type - double
+     */
+    public void testN2() {
+        T_sget_wide_2 t = new T_sget_wide_2();
+        assertEquals(123.0, t.run());
+    }
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_wide.d.T_sget_wide_1
+        //@uses dot.junit.opcodes.sget_wide.d.T_sget_wide_11
+        T_sget_wide_11 t = new T_sget_wide_11();
+        assertEquals(10, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+        
+        T_sget_wide_5 t = new T_sget_wide_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        
+        T_sget_wide_9 t = new T_sget_wide_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+   
+
+    /**
+     * @constraint A12 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title read long from integer field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_wide.d.T_sget_wide_6
+        //@uses dot.junit.opcodes.sget_wide.TestStubs
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_wide.d.T_sget_wide_12
+        //@uses dot.junit.opcodes.sget_wide.d.T_sget_wide_1
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title sget-wide shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget-wide shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget-wide shall not work for boolean fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget-wide shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget-wide shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget-wide shall not work for float fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sget-wide shall not work for int fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.d
new file mode 100644
index 0000000..ffd5cb4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_1.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_1
+.super java/lang/Object
+
+.field public static i1 J
+.field protected static p1 J
+.field private static pvt1 J
+
+.method static <clinit>()V
+.limit regs 2
+       const-wide v0, 12345679890123
+       sput-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.i1 J
+
+       const-wide v0, 10
+       sput-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.p1 J
+
+       const-wide v0, 20
+       sput-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.pvt1 J
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.java b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.java
new file mode 100644
index 0000000..e995709
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_1 {
+    public static long i1 = 12345679890123l;
+    protected static long p1 = 10;
+    private static long pvt1 = 20;
+    
+    public long run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.d
new file mode 100644
index 0000000..3485b03
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_11.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_11
+.super dot/junit/opcodes/sget_wide/d/T_sget_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_wide/d/T_sget_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.p1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.java b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.java
new file mode 100644
index 0000000..41f07c7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_11 extends T_sget_wide_1 {
+
+    public long run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.d
new file mode 100644
index 0000000..36c4678
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_12.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_12
+.super dot/junit/opcodes/sget_wide/d/T_sget_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_wide/d/T_sget_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.pvt1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.d
new file mode 100644
index 0000000..308bdd1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_13.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_13
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_13.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_14.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_14.d
new file mode 100644
index 0000000..6e32d54
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_14.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_15.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_15.d
new file mode 100644
index 0000000..685bf22
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_15.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_15
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_16.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_16.d
new file mode 100644
index 0000000..5548cdc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_16.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_16
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_16.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_17.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_17.d
new file mode 100644
index 0000000..961c845
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_17.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_17
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_18.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_18.d
new file mode 100644
index 0000000..8dba06c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_18.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_18
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_19.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_19.d
new file mode 100644
index 0000000..e8d5722
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_19.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_19
+.super java/lang/Object
+
+.field public static i1 F
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_19.i1 F
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.d
new file mode 100644
index 0000000..4e12946
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_2.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_2
+.super java/lang/Object
+
+.field public static val D
+
+.method static <clinit>()V
+.limit regs 2
+       const-wide v0, 123.0
+       sput-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_2.val D
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 4
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_2.val D
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.java b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.java
new file mode 100644
index 0000000..ea40542
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_2 {
+
+    public static double val = 123.0d;
+    
+    public double run() {
+        return val;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_20.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_20.d
new file mode 100644
index 0000000..1861a25
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_20.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_20
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_20.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_3.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_3.d
new file mode 100644
index 0000000..e672291
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_3.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_3
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v3, dot.junit.opcodes.sget_wide.d.T_sget_wide_3.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.d
new file mode 100644
index 0000000..9924345
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_4.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_4
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_4.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.dfh b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.dfh
new file mode 100644
index 0000000..aa8661b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 7da34431
+    31 44 A3 7D 
+// parsed: offset 12, len 20: signature           : 3c53...7396
+    3C 53 BF B1 B1 75 57 C6 91 52 F2 94 23 6C C3 BF 3B B4 73 96 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "J"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_sget_wide_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "J"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "J"
+//     return_type_idx: 0 (0x000000) "J"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_wide_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_wide.d.T_sget_wide_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_wide.d.T_sget_wide_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget-wide v1, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;.i1:J // field@0000
+//@mod            61 01 00 00 
+            61 01 00 01
+        // parsed: offset 292, len 2: |0002: return-wide v1
+            10 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "J"
+    01 4A 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 77 69 64 65 2F 64 2F 54 5F 73 67 65 74 5F 77 69 64 65 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_sget_wide_4.java"
+    12 54 5F 73 67 65 74 5F 77 69 64 65 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;"
+    // parsed: offset 406, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 407, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.d
new file mode 100644
index 0000000..e323dc0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_5.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_5
+.super java/lang/Object
+
+.field public i1 J
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const-wide v0, 5
+       iput-wide v0, v3, dot.junit.opcodes.sget_wide.d.T_sget_wide_5.i1 J
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_5.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.java b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.java
new file mode 100644
index 0000000..6021edd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_5 {
+
+    public long i1 = 5;
+    public long run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.d
new file mode 100644
index 0000000..48e59f1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_6.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.TestStubs.TestStubField J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.d
new file mode 100644
index 0000000..b34ddd6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_7.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_7no_class.i1 J
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.d
new file mode 100644
index 0000000..d53c7dd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sget_wide_8.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_8.i1N J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.d b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.d
new file mode 100644
index 0000000..e223578
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_wide.d.StubInitError
+.super java/lang/Object
+
+.field public static value J
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       const-wide v0, 1    
+       sput-wide v0, dot.junit.opcodes.sget_wide.d.StubInitError.value J
+       return-void
+.end method
+
+
+.source T_sget_wide_9.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.StubInitError.value J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.java b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.java
new file mode 100644
index 0000000..a19f781
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_9 {
+    
+    public long run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int/Test_shl_int.java b/tools/vm-tests/src/dot/junit/opcodes/shl_int/Test_shl_int.java
new file mode 100644
index 0000000..5b5d6ee
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int/Test_shl_int.java
@@ -0,0 +1,149 @@
+package dot.junit.opcodes.shl_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shl_int.d.T_shl_int_1;
+import dot.junit.opcodes.shl_int.d.T_shl_int_6;
+
+public class Test_shl_int extends DxTestCase {
+
+    /**
+     * @title 15 << 1
+     */
+    public void testN1() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(30, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 << 2
+     */
+    public void testN2() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(132, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 << 1
+     */
+    public void testN3() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(-30, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(0x80000000, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(66, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - float, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation float parameters makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shl_int_6 t = new T_shl_int_6();
+        try {
+            t.run(3.14f, 1.2f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(0xfffffffe, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int.d.T_shl_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int.d.T_shl_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int.d.T_shl_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int.d.T_shl_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.d
new file mode 100644
index 0000000..a9e9ede
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.d
@@ -0,0 +1,18 @@
+.source T_shl_int_1.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.java b/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.java
new file mode 100644
index 0000000..4480d75
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_int.d;
+
+public class T_shl_int_1 {
+
+    public int run(int a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_2.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_2.d
new file mode 100644
index 0000000..f1955e7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_2.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_3.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_3.d
new file mode 100644
index 0000000..88fff38
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_3.d
@@ -0,0 +1,18 @@
+.source T_shl_int_3.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       shl-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_4.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_4.d
new file mode 100644
index 0000000..2b2fd1e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_4.d
@@ -0,0 +1,18 @@
+.source T_shl_int_4.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       shl-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_5.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_5.d
new file mode 100644
index 0000000..1ae15e5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_5.d
@@ -0,0 +1,18 @@
+.source T_shl_int_5.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.d
new file mode 100644
index 0000000..1527b6d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.d
@@ -0,0 +1,18 @@
+.source T_shl_int_6.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       shl-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.java b/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.java
new file mode 100644
index 0000000..bb6806c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_int.d;
+
+public class T_shl_int_6 {
+
+    public int run(float a, float b) {
+        return (int)a << (int)b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/Test_shl_int_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/Test_shl_int_2addr.java
new file mode 100644
index 0000000..7774bbd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/Test_shl_int_2addr.java
@@ -0,0 +1,149 @@
+package dot.junit.opcodes.shl_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_1;
+import dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_6;
+
+public class Test_shl_int_2addr extends DxTestCase {
+
+    /**
+     * @title 15 << 1
+     */
+    public void testN1() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(30, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 << 2
+     */
+    public void testN2() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(132, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 << 1
+     */
+    public void testN3() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(-30, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(0x80000000, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(66, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - float, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation for float parameters makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shl_int_2addr_6 t = new T_shl_int_2addr_6();
+        try {
+            t.run(3.14f, 1.2f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(0xfffffffe, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.d
new file mode 100644
index 0000000..380c8c2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_1.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.java
new file mode 100644
index 0000000..69d8de4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_int_2addr.d;
+
+public class T_shl_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_2.d
new file mode 100644
index 0000000..bb92f80
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_2.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_2.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int/2addr v7, v8
+       return v7
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_3.d
new file mode 100644
index 0000000..7785e26
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_3.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_3.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       shl-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_4.d
new file mode 100644
index 0000000..3860a02
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_4.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_4.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       shl-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_5.d
new file mode 100644
index 0000000..affe561
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_5.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.d
new file mode 100644
index 0000000..2299e9c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_6.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       shl-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.java b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.java
new file mode 100644
index 0000000..f82be9f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_int_2addr.d;
+
+public class T_shl_int_2addr_6 {
+
+    public int run(float a, float b) {
+        return (int)a << (int)b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/Test_shl_int_lit8.java b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/Test_shl_int_lit8.java
new file mode 100644
index 0000000..186ddba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/Test_shl_int_lit8.java
@@ -0,0 +1,153 @@
+package dot.junit.opcodes.shl_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_1;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_2;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_3;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_4;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_5;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_6;
+
+public class Test_shl_int_lit8 extends DxTestCase {
+
+    /**
+     * @title 15 << 1
+     */
+    public void testN1() {
+        T_shl_int_lit8_1 t = new T_shl_int_lit8_1();
+        assertEquals(30, t.run(15));
+    }
+
+    /**
+     * @title 33 << 2
+     */
+    public void testN2() {
+        T_shl_int_lit8_2 t = new T_shl_int_lit8_2();
+        assertEquals(132, t.run(33));
+    }
+
+    /**
+     * @title -15 << 1
+     */
+    public void testN3() {
+        T_shl_int_lit8_1 t = new T_shl_int_lit8_1();
+        assertEquals(-30, t.run(-15));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shl_int_lit8_3 t = new T_shl_int_lit8_3();
+        assertEquals(0x80000000, t.run(1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shl_int_lit8_4 t = new T_shl_int_lit8_4();
+        assertEquals(66, t.run(33));
+    }
+    
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shl_int_lit8_6 t = new T_shl_int_lit8_6();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shl_int_lit8_3 t = new T_shl_int_lit8_3();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shl_int_lit8_1 t = new T_shl_int_lit8_1();
+        assertEquals(0xfffffffe, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shl_int_lit8_1 t = new T_shl_int_lit8_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shl_int_lit8_5 t = new T_shl_int_lit8_5();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.d
new file mode 100644
index 0000000..8230b0f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_1.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.java b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.java
new file mode 100644
index 0000000..31b0543
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_1 {
+    
+    public int run(int a) {
+        int b = 1;
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_10.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_10.d
new file mode 100644
index 0000000..ebcef08
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_10.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_10.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       shl-int/lit8 v0, v5, 2
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.d
new file mode 100644
index 0000000..ab5d308
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_2.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, 2
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.java b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.java
new file mode 100644
index 0000000..14f04e5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_2 {
+    
+    public int run(int a) {
+        int b = 2;
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.d
new file mode 100644
index 0000000..b7c3c3b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_3.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.java b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.java
new file mode 100644
index 0000000..7b76307
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_3 {
+    
+    public int run(int a) {
+        int b = -1;
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.d
new file mode 100644
index 0000000..3416035
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_4.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, 33
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.java b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.java
new file mode 100644
index 0000000..6b80a22
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_4 {
+    
+    public int run(int a) {
+        int b = 33;
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.d
new file mode 100644
index 0000000..bb0ebbd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_5.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, 0
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.java b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.java
new file mode 100644
index 0000000..f1703383
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_5 {
+    
+    public int run(int a) {
+        int b = 0;
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.d
new file mode 100644
index 0000000..3e2b9d5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_6.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.java b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.java
new file mode 100644
index 0000000..e41def3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_6 {
+    
+    public int run(float a) {
+        int b = 1;
+        return (int)a << b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_7.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_7.d
new file mode 100644
index 0000000..c2a0301
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_7.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_7.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v8, 2
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_8.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_8.d
new file mode 100644
index 0000000..49062a2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_8.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_8.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       shl-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_9.d b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_9.d
new file mode 100644
index 0000000..9d91c49
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_9.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_9.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       shl-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long/Test_shl_long.java b/tools/vm-tests/src/dot/junit/opcodes/shl_long/Test_shl_long.java
new file mode 100644
index 0000000..d22ba92
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long/Test_shl_long.java
@@ -0,0 +1,163 @@
+package dot.junit.opcodes.shl_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shl_long.d.T_shl_long_1;
+import dot.junit.opcodes.shl_long.d.T_shl_long_7;
+
+public class Test_shl_long extends DxTestCase {
+
+    /**
+     * @title Arguments = 5000000000l, 3
+     */
+    public void testN1() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(40000000000l, t.run(5000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 5000000000l, 1
+     */
+    public void testN2() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(10000000000l, t.run(5000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -5000000000l, 1
+     */
+    public void testN3() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(-10000000000l, t.run(-5000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(0x8000000000000000l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 64.
+     */
+    public void testN5() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(130l, t.run(65l, 65));
+    }
+    
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shl_long_7 t = new T_shl_long_7();
+        try {
+            t.run(4.67d, 1);
+        } catch (Throwable e) {
+        }
+    }
+
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB2() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB3() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(0xfffffffe, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB4() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long.d.T_shl_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long.d.T_shl_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long.d.T_shl_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long.d.T_shl_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference & int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long.d.T_shl_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.d b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.d
new file mode 100644
index 0000000..0293191
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.d
@@ -0,0 +1,18 @@
+.source T_shl_long_1.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long v0, v8, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.java b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.java
new file mode 100644
index 0000000..27e13ba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_long.d;
+
+public class T_shl_long_1 {
+
+    public long run(long a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_2.d b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_2.d
new file mode 100644
index 0000000..1a5fe79
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_2.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long v0, v8, v11
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_3.d b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_3.d
new file mode 100644
index 0000000..0f33164
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_3.d
@@ -0,0 +1,18 @@
+.source T_shl_long_3.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 11
+
+       shl-long v0, v7, v9
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_4.d b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_4.d
new file mode 100644
index 0000000..4392e2a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_4.d
@@ -0,0 +1,18 @@
+.source T_shl_long_4.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)J
+.limit regs 11
+
+       shl-long v0, v9, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_5.d b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_5.d
new file mode 100644
index 0000000..29ad593
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_5.d
@@ -0,0 +1,18 @@
+.source T_shl_long_5.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)J
+.limit regs 11
+
+       shl-long v0, v9, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_6.d b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_6.d
new file mode 100644
index 0000000..105c0e7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_6.d
@@ -0,0 +1,18 @@
+.source T_shl_long_6.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long v0, v7, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.d b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.d
new file mode 100644
index 0000000..ed9faf0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.d
@@ -0,0 +1,18 @@
+.source T_shl_long_7.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 11
+
+       shl-long v0, v8, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.java b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.java
new file mode 100644
index 0000000..ecc3e1f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_long.d;
+
+public class T_shl_long_7 {
+
+    public long run(double a, int b) {
+        return (long)a << b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/Test_shl_long_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/Test_shl_long_2addr.java
new file mode 100644
index 0000000..1113905
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/Test_shl_long_2addr.java
@@ -0,0 +1,163 @@
+package dot.junit.opcodes.shl_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_1;
+import dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_7;
+
+public class Test_shl_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 5000000000l, 3
+     */
+    public void testN1() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(40000000000l, t.run(5000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 5000000000l, 1
+     */
+    public void testN2() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(10000000000l, t.run(5000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -5000000000l, 1
+     */
+    public void testN3() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(-10000000000l, t.run(-5000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(0x8000000000000000l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 64.
+     */
+    public void testN5() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(130l, t.run(65l, 65));
+    }
+    
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shl_long_2addr_7 t = new T_shl_long_2addr_7();
+        try {
+            t.run(4.67d, 1);
+        } catch (Throwable e) {
+        }
+    }
+
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB2() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB3() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(0xfffffffe, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB4() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.d
new file mode 100644
index 0000000..b2e3bb9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_1.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long/2addr v8, v10
+       return-wide v8
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.java
new file mode 100644
index 0000000..569531d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_long_2addr.d;
+
+public class T_shl_long_2addr_1 {
+
+    public long run(long a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_2.d
new file mode 100644
index 0000000..fd4598a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_2.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_2.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long/2addr v8, v11
+       return-wide v8
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_3.d
new file mode 100644
index 0000000..41c08f5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_3.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_3.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 11
+
+       shl-long/2addr v7, v9
+       return-wide v7
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_4.d
new file mode 100644
index 0000000..4c69423
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_4.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_4.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)J
+.limit regs 11
+
+       shl-long/2addr v9, v10
+       return-wide v9
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_5.d
new file mode 100644
index 0000000..bb9b45b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_5.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)J
+.limit regs 11
+
+       shl-long/2addr v9, v10
+       return-wide v9
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_6.d
new file mode 100644
index 0000000..50738c4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_6.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long/2addr v7, v10
+       return-wide v7
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.d b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.d
new file mode 100644
index 0000000..42b0717
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_7.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 11
+
+       shl-long/2addr v8, v10
+       return-wide v8
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.java b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.java
new file mode 100644
index 0000000..f6978ad
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_long_2addr.d;
+
+public class T_shl_long_2addr_7 {
+
+    public long run(double a, int b) {
+        return (long)a << b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int/Test_shr_int.java b/tools/vm-tests/src/dot/junit/opcodes/shr_int/Test_shr_int.java
new file mode 100644
index 0000000..d81d7c8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int/Test_shr_int.java
@@ -0,0 +1,150 @@
+package dot.junit.opcodes.shr_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shr_int.d.T_shr_int_1;
+import dot.junit.opcodes.shr_int.d.T_shr_int_6;
+
+public class Test_shr_int extends DxTestCase {
+
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(7, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(8, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(-8, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(0, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(16, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - float, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float parameters makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shr_int_6 t = new T_shr_int_6();
+        try {
+            t.run(3.14f, 1.2f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(0xc0000000, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int.d.T_shr_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int.d.T_shr_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int.d.T_shr_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int.d.T_shr_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.d
new file mode 100644
index 0000000..9eaa104
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.d
@@ -0,0 +1,18 @@
+.source T_shr_int_1.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.java b/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.java
new file mode 100644
index 0000000..68a7062
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_int.d;
+
+public class T_shr_int_1 {
+
+    public int run(int a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_2.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_2.d
new file mode 100644
index 0000000..8800018
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_2.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_3.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_3.d
new file mode 100644
index 0000000..1f0c5287
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_3.d
@@ -0,0 +1,18 @@
+.source T_shr_int_3.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       shr-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_4.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_4.d
new file mode 100644
index 0000000..eede586
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_4.d
@@ -0,0 +1,18 @@
+.source T_shr_int_4.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       shr-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_5.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_5.d
new file mode 100644
index 0000000..fe57998
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_5.d
@@ -0,0 +1,18 @@
+.source T_shr_int_5.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.d
new file mode 100644
index 0000000..0323c5f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.d
@@ -0,0 +1,18 @@
+.source T_shr_int_6.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       shr-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.java b/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.java
new file mode 100644
index 0000000..86804e4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_int.d;
+
+public class T_shr_int_6 {
+
+    public int run(float a, float b) {
+        return (int)a >> (int)b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/Test_shr_int_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/Test_shr_int_2addr.java
new file mode 100644
index 0000000..b52cafe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/Test_shr_int_2addr.java
@@ -0,0 +1,150 @@
+package dot.junit.opcodes.shr_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_1;
+import dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_6;
+
+public class Test_shr_int_2addr extends DxTestCase {
+
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(7, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(8, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(-8, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(0, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(16, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - float, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shr_int_2addr_6 t = new T_shr_int_2addr_6();
+        try {
+            t.run(3.14f, 1.2f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(0xc0000000, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.d
new file mode 100644
index 0000000..28765b3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_1.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.java
new file mode 100644
index 0000000..e00a03d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_int_2addr.d;
+
+public class T_shr_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_2.d
new file mode 100644
index 0000000..a7bc7ff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_2.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_2.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_3.d
new file mode 100644
index 0000000..0a6ea58
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_3.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_3.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       shr-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_4.d
new file mode 100644
index 0000000..3d4d094
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_4.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_4.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       shr-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_5.d
new file mode 100644
index 0000000..4b35e2a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_5.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.d
new file mode 100644
index 0000000..b563cc0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_6.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       shr-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.java b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.java
new file mode 100644
index 0000000..f9e057f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_int_2addr.d;
+
+public class T_shr_int_2addr_6 {
+
+    public int run(float a, float b) {
+        return (int)a >> (int)b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/Test_shr_int_lit8.java b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/Test_shr_int_lit8.java
new file mode 100644
index 0000000..af03cff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/Test_shr_int_lit8.java
@@ -0,0 +1,152 @@
+package dot.junit.opcodes.shr_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_1;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_2;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_3;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_4;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_5;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_6;
+
+public class Test_shr_int_lit8 extends DxTestCase {
+
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_shr_int_lit8_1 t = new T_shr_int_lit8_1();
+        assertEquals(7, t.run(15));
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_shr_int_lit8_2 t = new T_shr_int_lit8_2();
+        assertEquals(8, t.run(33));
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_shr_int_lit8_1 t = new T_shr_int_lit8_1();
+        assertEquals(-8, t.run(-15));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shr_int_lit8_3 t = new T_shr_int_lit8_3();
+        assertEquals(0, t.run(1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shr_int_lit8_4 t = new T_shr_int_lit8_4();
+        assertEquals(16, t.run(33));
+    }
+    
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shr_int_lit8_6 t = new T_shr_int_lit8_6();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shr_int_lit8_3 t = new T_shr_int_lit8_3();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shr_int_lit8_1 t = new T_shr_int_lit8_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shr_int_lit8_1 t = new T_shr_int_lit8_1();
+        assertEquals(0xc0000000, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shr_int_lit8_5 t = new T_shr_int_lit8_5();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.d
new file mode 100644
index 0000000..d34130f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_1.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.java b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.java
new file mode 100644
index 0000000..b784123
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_1 {
+    
+    public int run(int a) {
+        int b = 1;
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_10.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_10.d
new file mode 100644
index 0000000..c94aa21
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_10.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_10.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.d
new file mode 100644
index 0000000..1a3b1bd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_2.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, 2
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.java b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.java
new file mode 100644
index 0000000..1ab910d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_2 {
+    
+    public int run(int a) {
+        int b = 2;
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.d
new file mode 100644
index 0000000..002cadf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_3.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.java b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.java
new file mode 100644
index 0000000..5e85115
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_3 {
+    
+    public int run(int a) {
+        int b = -1;
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.d
new file mode 100644
index 0000000..3b9b507
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_4.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, 33
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.java b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.java
new file mode 100644
index 0000000..cc49861
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_4 {
+    
+    public int run(int a) {
+        int b = 33;
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.d
new file mode 100644
index 0000000..871040a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_5.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, 0
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.java b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.java
new file mode 100644
index 0000000..b27c64b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_5 {
+    
+    public int run(int a) {
+        int b = 0;
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.d
new file mode 100644
index 0000000..761a30e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_6.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.java b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.java
new file mode 100644
index 0000000..a24bcb9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_6 {
+    
+    public int run(float a) {
+        int b = 1;
+        return (int)a >> b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_7.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_7.d
new file mode 100644
index 0000000..34559e8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_7.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_7.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v8, 2
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_8.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_8.d
new file mode 100644
index 0000000..d157daf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_8.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_8.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       shr-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_9.d b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_9.d
new file mode 100644
index 0000000..ed24326
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_9.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_9.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       shr-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long/Test_shr_long.java b/tools/vm-tests/src/dot/junit/opcodes/shr_long/Test_shr_long.java
new file mode 100644
index 0000000..66bc8b4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long/Test_shr_long.java
@@ -0,0 +1,162 @@
+package dot.junit.opcodes.shr_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shr_long.d.T_shr_long_1;
+import dot.junit.opcodes.shr_long.d.T_shr_long_7;
+
+public class Test_shr_long extends DxTestCase {
+
+    /**
+     * @title Arguments =  40000000000l, 3
+     */
+    public void testN1() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(5000000000l, t.run(40000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 40000000000l, 1
+     */
+    public void testN2() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(20000000000l, t.run(40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -40000000000l, 1
+     */
+    public void testN3() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(-20000000000l, t.run(-40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(0l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 64.
+     */
+    public void testN5() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(32, t.run(65l, 65));
+    }
+    
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and int makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shr_long_7 t = new T_shr_long_7();
+        try {
+            t.run(4.67d, 1);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(0l, t.run(0l, -1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB2() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(1l, t.run(1l, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB3() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(0x3FFFFFFFFFFFFFFFl, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB4() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(0xc000000000000000l, t.run(Long.MIN_VALUE, 1));
+    }
+
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long.d.T_shr_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long.d.T_shr_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long.d.T_shr_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long.d.T_shr_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long.d.T_shr_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.d b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.d
new file mode 100644
index 0000000..08c82f4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.d
@@ -0,0 +1,18 @@
+.source T_shr_long_1.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long v0, v8, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.java b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.java
new file mode 100644
index 0000000..e15d414
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_long.d;
+
+public class T_shr_long_1 {
+
+    public long run(long a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_2.d b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_2.d
new file mode 100644
index 0000000..a87004a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_2.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long v0, v8, v11
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_3.d b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_3.d
new file mode 100644
index 0000000..9c78f73
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_3.d
@@ -0,0 +1,18 @@
+.source T_shr_long_3.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 11
+
+       shr-long v0, v7, v9
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_4.d b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_4.d
new file mode 100644
index 0000000..e6691cd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_4.d
@@ -0,0 +1,18 @@
+.source T_shr_long_4.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)J
+.limit regs 11
+
+       shr-long v0, v9, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_5.d b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_5.d
new file mode 100644
index 0000000..f5e4cb9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_5.d
@@ -0,0 +1,18 @@
+.source T_shr_long_5.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)J
+.limit regs 11
+
+       shr-long v0, v9, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_6.d b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_6.d
new file mode 100644
index 0000000..427d1c2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_6.d
@@ -0,0 +1,18 @@
+.source T_shr_long_6.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long v0, v7, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.d b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.d
new file mode 100644
index 0000000..ad83dc8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.d
@@ -0,0 +1,18 @@
+.source T_shr_long_7.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 11
+
+       shr-long v0, v8, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.java b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.java
new file mode 100644
index 0000000..ca42ea9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_long.d;
+
+public class T_shr_long_7 {
+
+    public long run(double a, int b) {
+        return (long)a >> b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/Test_shr_long_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/Test_shr_long_2addr.java
new file mode 100644
index 0000000..22c4530
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/Test_shr_long_2addr.java
@@ -0,0 +1,163 @@
+package dot.junit.opcodes.shr_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_1;
+import dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_7;
+
+public class Test_shr_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 40000000000l, 3
+     */
+    public void testN1() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(5000000000l, t.run(40000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 40000000000l, 1
+     */
+    public void testN2() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(20000000000l, t.run(40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -40000000000l, 1
+     */
+    public void testN3() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(-20000000000l, t.run(-40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(0l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 64.
+     */
+    public void testN5() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(32, t.run(65l, 65));
+    }
+    
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and int makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shr_long_2addr_7 t = new T_shr_long_2addr_7();
+        try {
+            t.run(4.67d, 1);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(0l, t.run(0l, -1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB2() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(1l, t.run(1l, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB3() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(0x3FFFFFFFFFFFFFFFl, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB4() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(0xc000000000000000l, t.run(Long.MIN_VALUE, 1));
+    }
+
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.d
new file mode 100644
index 0000000..0e9c36b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_1.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long/2addr v8, v10
+       return-wide v8
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.java
new file mode 100644
index 0000000..1c5691e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_long_2addr.d;
+
+public class T_shr_long_2addr_1 {
+
+    public long run(long a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_2.d
new file mode 100644
index 0000000..a0ebe17
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_2.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_2.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long/2addr v8, v11
+       return-wide v8
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_3.d
new file mode 100644
index 0000000..c07af2f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_3.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_3.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 11
+
+       shr-long/2addr v7, v9
+       return-wide v7
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_4.d
new file mode 100644
index 0000000..9db034e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_4.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_4.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)J
+.limit regs 11
+
+       shr-long/2addr v9, v10
+       return-wide v9
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_5.d
new file mode 100644
index 0000000..f1045cf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_5.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)J
+.limit regs 11
+
+       shr-long/2addr v9, v10
+       return-wide v9
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_6.d
new file mode 100644
index 0000000..1326e76
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_6.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long/2addr v7, v10
+       return-wide v7
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.d b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.d
new file mode 100644
index 0000000..3b3db0f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_7.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 11
+
+       shr-long/2addr v8, v10
+       return-wide v8
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.java b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.java
new file mode 100644
index 0000000..ed3e1e8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_long_2addr.d;
+
+public class T_shr_long_2addr_7 {
+
+    public long run(double a, int b) {
+        return (long)a >> b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/Test_sparse_switch.java b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/Test_sparse_switch.java
new file mode 100644
index 0000000..66f5c39
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/Test_sparse_switch.java
@@ -0,0 +1,223 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sparse_switch;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sparse_switch.d.T_sparse_switch_1;
+import dot.junit.opcodes.sparse_switch.d.T_sparse_switch_2
+;
+
+public class Test_sparse_switch extends DxTestCase {
+
+    /**
+     * @title try different values
+     */
+    public void testN1() {
+        T_sparse_switch_1 t = new T_sparse_switch_1();
+        assertEquals(2, t.run(-1));
+
+        assertEquals(-1, t.run(9));
+        assertEquals(20, t.run(10));
+        assertEquals(-1, t.run(11));
+
+        assertEquals(-1, t.run(14));
+        assertEquals(20, t.run(15));
+        assertEquals(-1, t.run(16));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN2() {
+        try {
+            T_sparse_switch_2 t = new T_sparse_switch_2();
+            t.run(-1.23f);
+        } catch(Throwable t) {
+        }
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_sparse_switch_1 t = new T_sparse_switch_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_sparse_switch_1 t = new T_sparse_switch_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_sparse_switch_1 t = new T_sparse_switch_1();
+        assertEquals(-1, t.run(0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A8 
+     * @title branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A8
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A8
+     * @title offset to table shall be inside method
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A8
+     * @title pairs shall be sorted in ascending order
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A8 
+     * @title number of entries in jump table
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B22
+     * @title sparse-switch-data pseudo-instructions must not be reachable by control flow 
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A8
+     * @title table has wrong ident code 
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.d b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.d
new file mode 100644
index 0000000..bd3aaa5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_1.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.java b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.java
new file mode 100644
index 0000000..05d0ba9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sparse_switch.d;
+
+public class T_sparse_switch_1 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.d b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.d
new file mode 100644
index 0000000..5853adb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_11.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.dfh b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.dfh
new file mode 100644
index 0000000..81eac01
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : cbc95483
+    83 54 C9 CB 
+// parsed: offset 12, len 20: signature           : 4fcf...5763
+    4F CF BE 7C 4E 38 25 A2 FB 35 7F 9B C3 DF 90 D5 67 72 57 63 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_11;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 417 (0x0001a1) "Ljava/lang/Object;"
+    A1 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 437 (0x0001b5) "T_sparse_switch_11.java"
+    B5 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 462 (0x0001ce) "V"
+    CE 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 465 (0x0001d1) "run"
+    D1 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_11;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 470 (0x0001d6)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D6 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_11.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_11.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: sparse-switch v4, 00000010 //  +0x00000010
+            2C 04 10 00 00 00 
+        // parsed: offset 286, len 6: |0003: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v4
+            0F 04 
+        // parsed: offset 294, len 6: |0007: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v4
+            0F 04 
+        // parsed: offset 302, len 6: |000b: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v4
+            0F 04 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+//@mod            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 02 03 00 FF FF FF FF 0F 00 00 00 0A 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 56: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_11;"
+    36 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 31 3B 00 
+// parsed: offset 417, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 437, len 25: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_11.java"
+    17 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 462, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 465, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_11;"
+    // parsed: offset 470, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 471, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 472, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 473, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 474, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 475, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 478, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 480, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 481, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 482, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 470 (0x0001d6)
+        00 20 00 00 01 00 00 00 D6 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.d b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.d
new file mode 100644
index 0000000..feff623
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_12.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_12
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.dfh b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.dfh
new file mode 100644
index 0000000..2d9ee69
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : b034540d
+    0D 54 34 B0 
+// parsed: offset 12, len 20: signature           : 17df...83d1
+    17 DF 40 0E 7B 84 69 AA B8 A3 BF 9B 70 B0 7D 1D CF 2A 83 D1 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_12;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 417 (0x0001a1) "Ljava/lang/Object;"
+    A1 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 437 (0x0001b5) "T_sparse_switch_12.java"
+    B5 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 462 (0x0001ce) "V"
+    CE 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 465 (0x0001d1) "run"
+    D1 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_12;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 470 (0x0001d6)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D6 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_12.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_12.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: sparse-switch v4, 00000010 //  +0x00000010
+            2C 04 10 00 00 00 
+        // parsed: offset 286, len 6: |0003: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v4
+            0F 04 
+        // parsed: offset 294, len 6: |0007: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v4
+            0F 04 
+        // parsed: offset 302, len 6: |000b: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v4
+            0F 04 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+//@mod            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 02 04 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 56: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_12;"
+    36 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 32 3B 00 
+// parsed: offset 417, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 437, len 25: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_12.java"
+    17 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 462, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 465, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_12;"
+    // parsed: offset 470, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 471, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 472, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 473, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 474, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 475, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 478, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 480, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 481, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 482, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 470 (0x0001d6)
+        00 20 00 00 01 00 00 00 D6 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.java b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.java
new file mode 100644
index 0000000..c8f40c1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sparse_switch.d;
+
+public class T_sparse_switch_12 {
+
+    public void run() {
+        switch (1) {
+        case -1:
+            return;
+        case 10:
+            return;
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_13.d b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_13.d
new file mode 100644
index 0000000..8c7814d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_13.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_13.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_13
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+      goto Label0
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+Label0:
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.d b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.d
new file mode 100644
index 0000000..074c119
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_14.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_14
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+      goto Label0
+Label0:
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.dfh b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.dfh
new file mode 100644
index 0000000..3f17abc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 7a9e539f
+    9F 53 9E 7A 
+// parsed: offset 12, len 20: signature           : 0e0e...6b5f
+    0E 0E E3 52 F8 B0 52 FC 24 7F 08 37 B9 F7 17 79 D1 74 6B 5F 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_14;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 417 (0x0001a1) "Ljava/lang/Object;"
+    A1 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 437 (0x0001b5) "T_sparse_switch_14.java"
+    B5 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 462 (0x0001ce) "V"
+    CE 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 465 (0x0001d1) "run"
+    D1 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_14;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_14;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_14.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 470 (0x0001d6)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D6 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_14.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_14.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 2: |0000: goto 0001 // +0x0001
+            28 01 
+        // parsed: offset 282, len 6: |0001: sparse-switch v4, 00000010 //  +0x0000000f
+            2C 04 0F 00 00 00 
+        // parsed: offset 288, len 6: |0004: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 294, len 2: |0007: return v4
+            0F 04 
+        // parsed: offset 296, len 6: |0008: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 302, len 2: |000b: return v4
+            0F 04 
+        // parsed: offset 304, len 6: |000c: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 310, len 2: |000f: return v4
+            0F 04 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+//@mod            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 05 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 56: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_14;"
+    36 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 34 3B 00 
+// parsed: offset 417, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 437, len 25: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_14.java"
+    17 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 34 2E 6A 61 76 61 00 
+// parsed: offset 462, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 465, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_14;"
+    // parsed: offset 470, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 471, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 472, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 473, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 474, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 475, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 478, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 480, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 481, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 482, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 470 (0x0001d6)
+        00 20 00 00 01 00 00 00 D6 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.d b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.d
new file mode 100644
index 0000000..0f8b90b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.d
@@ -0,0 +1,50 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_2.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+Label3:
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.java b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.java
new file mode 100644
index 0000000..e9344d1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sparse_switch.d;
+
+public class T_sparse_switch_2 {
+
+    public int run(float i) {
+        switch ((int)i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_3.d b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_3.d
new file mode 100644
index 0000000..ce82bc9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_3.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_3.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+Label3:
+       sparse-switch v5
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_4.d b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_4.d
new file mode 100644
index 0000000..36f8c8b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_4.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_4.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 5
+
+Label3:
+       sparse-switch v3
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_5.d b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_5.d
new file mode 100644
index 0000000..dc72c30
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_5.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_5.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 5
+
+Label3:
+       sparse-switch v3
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_6.d b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_6.d
new file mode 100644
index 0000000..25e418f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_6.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_6.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+Label3:
+       sparse-switch v3
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.d b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.d
new file mode 100644
index 0000000..67f3328
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_7.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.dfh b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.dfh
new file mode 100644
index 0000000..47d52d4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : ffcf536e
+    6E 53 CF FF 
+// parsed: offset 12, len 20: signature           : d1bd...dc70
+    D1 BD 9D 22 FC DA 04 F6 69 A9 22 1D 41 70 69 23 80 60 DC 70 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_7;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 416 (0x0001a0) "Ljava/lang/Object;"
+    A0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 436 (0x0001b4) "T_sparse_switch_7.java"
+    B4 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 460 (0x0001cc) "V"
+    CC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 463 (0x0001cf) "run"
+    CF 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_7;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_7;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_7.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 468 (0x0001d4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_7.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_7.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: sparse-switch v4, 00000010 //  +0x00000010
+            2C 04 10 00 00 00 
+        // parsed: offset 286, len 6: |0003: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v4
+            0F 04 
+        // parsed: offset 294, len 6: |0007: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v4
+            0F 04 
+        // parsed: offset 302, len 6: |000b: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v4
+            0F 04 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+//@mod            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 01 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_7;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 37 3B 00 
+// parsed: offset 416, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 436, len 24: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_7.java"
+    16 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 37 2E 6A 61 76 61 00 
+// parsed: offset 460, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 463, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_7;"
+    // parsed: offset 468, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 469, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 470, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 471, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 472, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 473, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 476, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 479, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 480, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 482, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 20 00 00 01 00 00 00 D4 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.java b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.java
new file mode 100644
index 0000000..d7a7a59
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sparse_switch.d;
+
+public class T_sparse_switch_7 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.d b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.d
new file mode 100644
index 0000000..ba0dae3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_8.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.dfh b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.dfh
new file mode 100644
index 0000000..f65851b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 3b52538d
+    8D 53 52 3B 
+// parsed: offset 12, len 20: signature           : d117...b84c
+    D1 17 6B A9 92 35 B7 F5 59 7E 60 68 BB 65 20 12 A4 EB B8 4C 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_8;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 416 (0x0001a0) "Ljava/lang/Object;"
+    A0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 436 (0x0001b4) "T_sparse_switch_8.java"
+    B4 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 460 (0x0001cc) "V"
+    CC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 463 (0x0001cf) "run"
+    CF 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_8;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 468 (0x0001d4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_8.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_8.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: sparse-switch v4, 00000010 //  +0x00000010
+            2C 04 10 00 00 00 
+        // parsed: offset 286, len 6: |0003: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v4
+            0F 04 
+        // parsed: offset 294, len 6: |0007: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v4
+            0F 04 
+        // parsed: offset 302, len 6: |000b: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v4
+            0F 04 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+//@mod            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0C 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_8;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 38 3B 00 
+// parsed: offset 416, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 436, len 24: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_8.java"
+    16 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 460, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 463, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_8;"
+    // parsed: offset 468, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 469, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 470, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 471, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 472, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 473, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 476, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 479, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 480, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 482, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 20 00 00 01 00 00 00 D4 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.java b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.java
new file mode 100644
index 0000000..a7176dd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sparse_switch.d;
+
+public class T_sparse_switch_8 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.d b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.d
new file mode 100644
index 0000000..2566813
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sparse_switch_9.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.dfh b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.dfh
new file mode 100644
index 0000000..d5d171a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : b289520e
+    0E 52 89 B2 
+// parsed: offset 12, len 20: signature           : 9f96...637f
+    9F 96 22 76 3B 40 5B 16 24 C5 DA 48 89 0B 4A 96 70 E8 63 7F 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_9;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 416 (0x0001a0) "Ljava/lang/Object;"
+    A0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 436 (0x0001b4) "T_sparse_switch_9.java"
+    B4 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 460 (0x0001cc) "V"
+    CC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 463 (0x0001cf) "run"
+    CF 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_9;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 468 (0x0001d4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_9.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_9.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: sparse-switch v4, 00000010 //  +0x00000010
+//@mod            2C 04 10 00 00 00 
+            2C 04 10 01 00 00 
+        // parsed: offset 286, len 6: |0003: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v4
+            0F 04 
+        // parsed: offset 294, len 6: |0007: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v4
+            0F 04 
+        // parsed: offset 302, len 6: |000b: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v4
+            0F 04 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_9;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 39 3B 00 
+// parsed: offset 416, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 436, len 24: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_9.java"
+    16 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 460, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 463, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_9;"
+    // parsed: offset 468, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 469, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 470, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 471, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 472, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 473, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 476, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 479, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 480, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 482, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 20 00 00 01 00 00 00 D4 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/sput/TestStubs.java
new file mode 100644
index 0000000..581e945
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput;
+
+public class TestStubs {
+    // used by testVFE9
+    static int TestStubField = 0;
+    
+    // used by testE5
+    public static final int TestStubFieldFinal = 0;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/Test_sput.java b/tools/vm-tests/src/dot/junit/opcodes/sput/Test_sput.java
new file mode 100644
index 0000000..7733001
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/Test_sput.java
@@ -0,0 +1,336 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput.d.T_sput_1;
+import dot.junit.opcodes.sput.d.T_sput_11;
+import dot.junit.opcodes.sput.d.T_sput_12;
+import dot.junit.opcodes.sput.d.T_sput_13;
+import dot.junit.opcodes.sput.d.T_sput_14;
+import dot.junit.opcodes.sput.d.T_sput_19;
+import dot.junit.opcodes.sput.d.T_sput_5;
+
+
+public class Test_sput extends DxTestCase {
+
+    /**
+     * @title type - int
+     */
+    public void testN1() {
+        T_sput_1 t = new T_sput_1();
+        assertEquals(0, T_sput_1.st_i1);
+        t.run();
+        assertEquals(1000000, T_sput_1.st_i1);
+    }
+
+    /**
+     * @title type - float
+     */
+    public void testN2() {
+        T_sput_19 t = new T_sput_19();
+        assertEquals(0.0f, T_sput_19.st_f1);
+        t.run();
+        assertEquals(3.14f, T_sput_19.st_f1);
+    }
+
+ 
+    /**
+     * @title modification of final field
+     */
+    public void testN3() {
+        T_sput_12 t = new T_sput_12();
+        assertEquals(0, T_sput_12.st_i1);
+        t.run();
+        assertEquals(1000000, T_sput_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput.d.T_sput_1
+        //@uses dot.junit.opcodes.sput.d.T_sput_14
+        T_sput_14 t = new T_sput_14();
+        assertEquals(0, T_sput_14.getProtectedField());
+        t.run();
+        assertEquals(1000000, T_sput_14.getProtectedField());
+    }
+
+    /**
+     * @title Trying to put float into integer field. Dalvik doens't distinguish 32-bits types 
+     * internally, so this operation makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_sput_5 t = new  T_sput_5();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+   
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_13 t = new T_sput_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12 
+     * @title  constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * 
+     * @constraint B13 
+     * @title  put integer into long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B13 
+     * @title type of field doesn't match opcode - attempt to modify double field 
+     * with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A12 
+     * @title Attempt to set non-static field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE8() {
+         try {
+             Class.forName("dot.junit.opcodes.sput.d.T_sput_7");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput.TestStubs
+        //@uses dot.junit.opcodes.sput.d.T_sput_8
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput.d.T_sput_1
+        //@uses dot.junit.opcodes.sput.d.T_sput_15
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint B1 
+     * @title sput shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput shall not work for boolean fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput shall not work for byte fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput.TestStubs
+        //@uses dot.junit.opcodes.sput.d.T_sput_11
+    	try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_1.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_1.d
new file mode 100644
index 0000000..748fd1c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_1.java
+.class public dot.junit.opcodes.sput.d.T_sput_1
+.super java/lang/Object
+
+.field public static st_i1 I
+.field protected static st_p1 I
+.field private static st_pvt1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()I
+.limit regs 2
+
+       sget v0, dot.junit.opcodes.sput.d.T_sput_1.st_pvt1 I
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_1.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_1.java b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_1.java
new file mode 100644
index 0000000..3bc4484
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_1 {
+    public static int st_i1;
+    protected static int st_p1;
+    private static int st_pvt1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+    
+    public static int getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_10.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_10.d
new file mode 100644
index 0000000..d753fd4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_10.java
+.class public dot.junit.opcodes.sput.d.T_sput_10
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_10.st_i1N I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_11.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_11.d
new file mode 100644
index 0000000..90cc7c0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_11.java
+.class public dot.junit.opcodes.sput.d.T_sput_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.TestStubs.TestStubFieldFinal I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_11.java b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_11.java
new file mode 100644
index 0000000..1f7ca52
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_12.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_12.d
new file mode 100644
index 0000000..6543443
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_12.java
+.class public dot.junit.opcodes.sput.d.T_sput_12
+.super java/lang/Object
+
+.field public static final st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_12.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_12.java b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_12.java
new file mode 100644
index 0000000..8e5f7a9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_12 {
+    public static int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_13.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_13.d
new file mode 100644
index 0000000..f6c9d9f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput.d.StubInitError
+.super java/lang/Object
+
+.field public static value I
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput v1, dot.junit.opcodes.sput.d.StubInitError.value I
+       return-void
+.end method
+
+
+.source T_sput_13.java
+.class public dot.junit.opcodes.sput.d.T_sput_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.StubInitError.value I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_13.java b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_13.java
new file mode 100644
index 0000000..4693899
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+class StubInitError {
+    static int value = 5 / 0; 
+}
+
+public class T_sput_13 {
+    
+    public void run() {
+        StubInitError.value = 12;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_14.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_14.d
new file mode 100644
index 0000000..89cab9e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_14.java
+.class public dot.junit.opcodes.sput.d.T_sput_14
+.super dot/junit/opcodes/sput/d/T_sput_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput/d/T_sput_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()I
+.limit regs 2
+
+       sget v0, dot.junit.opcodes.sput.d.T_sput_1.st_p1 I
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_1.st_p1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_14.java b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_14.java
new file mode 100644
index 0000000..102f226
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_14 extends T_sput_1{
+    
+    public void run() {
+        T_sput_1.st_p1 = 1000000;
+    }
+    
+    public static int getProtectedField(){
+        return T_sput_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_15.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_15.d
new file mode 100644
index 0000000..e2723fe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_15.java
+.class public dot.junit.opcodes.sput.d.T_sput_15
+.super dot/junit/opcodes/sput/d/T_sput_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput/d/T_sput_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 12321
+       sput v1, dot.junit.opcodes.sput.d.T_sput_1.st_pvt1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_16.java b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_16.java
new file mode 100644
index 0000000..3360d43
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_16.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_16 {
+    public static Object o;
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_17.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_17.d
new file mode 100644
index 0000000..ce6a0a8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_17.java
+.class public dot.junit.opcodes.sput.d.T_sput_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_17.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_18.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_18.d
new file mode 100644
index 0000000..7a79061
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_18.java
+.class public dot.junit.opcodes.sput.d.T_sput_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_19.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_19.d
new file mode 100644
index 0000000..d0f53cf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_19.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_19.java
+.class public dot.junit.opcodes.sput.d.T_sput_19
+.super java/lang/Object
+
+.field public static st_f1 F
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+       sput v1, dot.junit.opcodes.sput.d.T_sput_19.st_f1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_19.java b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_19.java
new file mode 100644
index 0000000..854e9fd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_19.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_19 {
+    public static float st_f1;
+    
+    
+    public void run() {
+        st_f1 = 3.14f;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_2.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_2.d
new file mode 100644
index 0000000..9989c88
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_2.java
+.class public dot.junit.opcodes.sput.d.T_sput_2
+.super java/lang/Object
+
+.field public static st_d1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const-wide v1, 1000000.000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_2.st_d1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_20.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_20.d
new file mode 100644
index 0000000..9229d34
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_20.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_20.java
+.class public dot.junit.opcodes.sput.d.T_sput_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v3, 0
+       sput v3, dot.junit.opcodes.sput.d.T_sput_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_21.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_21.d
new file mode 100644
index 0000000..bc08d1d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_21.java
+.class public dot.junit.opcodes.sput.d.T_sput_21
+.super java/lang/Object
+
+.field public static st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1234    
+       sput v0, dot.junit.opcodes.sput.d.T_sput_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_22.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_22.d
new file mode 100644
index 0000000..ff17473
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_22.java
+.class public dot.junit.opcodes.sput.d.T_sput_22
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput v0, dot.junit.opcodes.sput.d.T_sput_22.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_23.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_23.d
new file mode 100644
index 0000000..10cdb15
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_23.java
+.class public dot.junit.opcodes.sput.d.T_sput_23
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput v0, dot.junit.opcodes.sput.d.T_sput_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_24.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_24.d
new file mode 100644
index 0000000..5b6bac3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_24.java
+.class public dot.junit.opcodes.sput.d.T_sput_24
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput v0, dot.junit.opcodes.sput.d.T_sput_24.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_3.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_3.d
new file mode 100644
index 0000000..22aaeef9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_3.java
+.class public dot.junit.opcodes.sput.d.T_sput_3
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1234
+       sput v0, dot.junit.opcodes.sput.d.T_sput_3.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_3.dfh
new file mode 100644
index 0000000..f7d95ea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput/d/T_sput_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput/d/T_sput_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 07553f66
+    66 3F 55 07 
+// parsed: offset 12, len 20: signature           : 2441...71d9
+    24 41 F7 4C E7 A3 98 B5 AC 67 0E F8 6B D1 13 E3 DD 10 71 D9 
+// parsed: offset 32, len 4: file_size           : 540
+    1C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 404 (0x000194)
+    94 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 304
+    30 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "I"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 336 (0x000150) "Ljava/lang/Object;"
+    50 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 356 (0x000164) "T_sput_3.java"
+    64 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 371 (0x000173) "V"
+    73 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 374 (0x000176) "run"
+    76 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 379 (0x00017b) "st_i1"
+    7B 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sput/d/T_sput_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 386 (0x000182)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 82 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput.d.T_sput_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput.d.T_sput_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x000004d2 int
+            14 00 D2 04 00 00 
+        // parsed: offset 282, len 4: |0003: sput v0, Ldot/junit/opcodes/sput/d/T_sput_3;.st_i1:I // field@0000
+//@mod            67 00 00 00 
+            67 00 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 299, len 37: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    23 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 2F 64 2F 54 5F 73 70 75 74 5F 33 3B 00 
+// parsed: offset 336, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 356, len 15: TYPE_STRING_DATA_ITEM [4] "T_sput_3.java"
+    0D 54 5F 73 70 75 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 371, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 374, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 379, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    // parsed: offset 386, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 387, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 388, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 389, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 390, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 391, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 392, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 393, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 396, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 398, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 399, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 400, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 402, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 404, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 408, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 420, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 432, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 444, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 456, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 468, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 480, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 492, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 504, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 516, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 386 (0x000182)
+        00 20 00 00 01 00 00 00 82 01 00 00 
+    // parsed: offset 528, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 404 (0x000194)
+        00 10 00 00 01 00 00 00 94 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_4.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_4.d
new file mode 100644
index 0000000..2ca3434
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_4.java
+.class public dot.junit.opcodes.sput.d.T_sput_4
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput v3, dot.junit.opcodes.sput.d.T_sput_4.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_5.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_5.d
new file mode 100644
index 0000000..25a88ba
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_5.java
+.class public dot.junit.opcodes.sput.d.T_sput_5
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)V
+.limit regs 3
+
+       sput v2, dot.junit.opcodes.sput.d.T_sput_5.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_5.java b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_5.java
new file mode 100644
index 0000000..1625283
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput.d;
+
+public class T_sput_5 {
+    public static int st_i1;
+    
+    public void run(float f) {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_7.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_7.d
new file mode 100644
index 0000000..7bad17d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_7.java
+.class public dot.junit.opcodes.sput.d.T_sput_7
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput v1, dot.junit.opcodes.sput.d.T_sput_7.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_8.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_8.d
new file mode 100644
index 0000000..f1b1561
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_8.java
+.class public dot.junit.opcodes.sput.d.T_sput_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput v1, dot.junit.opcodes.sput.TestStubs.TestStubField I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_9.d b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_9.d
new file mode 100644
index 0000000..2e4fe0e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput/d/T_sput_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_9.java
+.class public dot.junit.opcodes.sput.d.T_sput_9
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput v1, dot.junit.opcodes.sput.d.T_sput_9noclass.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/TestStubs.java
new file mode 100644
index 0000000..c6bbc0b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean;
+
+public class TestStubs {
+    // used by testVFE9
+    static boolean TestStubField = false;
+    
+    // used by testE5
+    public static final boolean TestStubFieldFinal = false;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/Test_sput_boolean.java b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/Test_sput_boolean.java
new file mode 100644
index 0000000..61a3e54
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/Test_sput_boolean.java
@@ -0,0 +1,324 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_11;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_12;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_13;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_14;
+
+
+public class Test_sput_boolean extends DxTestCase {
+
+    /**
+     * @title put boolean into static field
+     */
+    public void testN1() {
+        T_sput_boolean_1 t = new T_sput_boolean_1();
+        assertEquals(false, T_sput_boolean_1.st_i1);
+        t.run();
+        assertEquals(true, T_sput_boolean_1.st_i1);
+    }
+
+ 
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_sput_boolean_12 t = new T_sput_boolean_12();
+        assertEquals(false, T_sput_boolean_12.st_i1);
+        t.run();
+        assertEquals(true, T_sput_boolean_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_14
+        T_sput_boolean_14 t = new T_sput_boolean_14();
+        assertEquals(false, T_sput_boolean_14.getProtectedField());
+        t.run();
+        assertEquals(true, T_sput_boolean_14.getProtectedField());
+    }
+    
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_boolean_13 t = new T_sput_boolean_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * 
+     * @constraint B13 
+     * @title put boolean into long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title put value '2' into boolean field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B13 
+     * @title type of field doesn't match opcode - attempt to modify double 
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A12 
+     * @title Attempt to set non-static field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE8() {
+         try {
+             Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_7");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_boolean.TestStubs
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_8
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_15
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint B1 
+     * @title sput_boolean shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput_boolean shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput_boolean shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput_boolean shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput_boolean shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput_boolean shall not work for byte fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title Modification of final field in other class.
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_boolean.TestStubs
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_11
+    	
+    	try {
+    		Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_11");
+    	}catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.d
new file mode 100644
index 0000000..8078d65
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_1.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1
+.super java/lang/Object
+
+.field public static st_i1 Z
+.field protected static st_p1 Z
+.field private static st_pvt1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()Z
+.limit regs 2
+
+       sget-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1.st_pvt1 Z
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1.st_i1 Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.java b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.java
new file mode 100644
index 0000000..3e28038
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_1 {
+    public static boolean st_i1;
+    protected static boolean st_p1;
+    private static boolean st_pvt1;
+    
+    public void run() {
+        st_i1 = true;
+    }
+    
+    public static boolean getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.d
new file mode 100644
index 0000000..672420d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_10.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_10
+.super java/lang/Object
+
+.field public st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_10.st_i1N Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.d
new file mode 100644
index 0000000..796ac2a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_11.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.TestStubs.TestStubFieldFinal Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.java b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.java
new file mode 100644
index 0000000..a69a474
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.d
new file mode 100644
index 0000000..d6db6ac
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_12.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_12
+.super java/lang/Object
+
+.field public static final st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_12.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.java b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.java
new file mode 100644
index 0000000..8721911
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_12 {
+    public static boolean st_i1;
+    
+    public void run() {
+        st_i1 = true;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.d
new file mode 100644
index 0000000..0f89bc2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput_boolean.d.StubInitError
+.super java/lang/Object
+
+.field public static value Z
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.StubInitError.value Z
+       return-void
+.end method
+
+
+.source T_sput_boolean_13.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.StubInitError.value Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.java b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.java
new file mode 100644
index 0000000..20d2977
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+class StubInitError {
+    static boolean value = 5 / 0 > 0 ? true : false; 
+}
+
+public class T_sput_boolean_13 {
+    
+    public void run() {
+        StubInitError.value = true;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.d
new file mode 100644
index 0000000..cbaa0e6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_14.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_14
+.super dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()Z
+.limit regs 2
+
+       sget-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1.st_p1 Z
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1.st_p1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.java b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.java
new file mode 100644
index 0000000..376f60f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_14 extends T_sput_boolean_1{
+    
+    public void run() {
+        T_sput_boolean_1.st_p1 = true;
+    }
+    
+    public static boolean getProtectedField(){
+        return T_sput_boolean_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.d
new file mode 100644
index 0000000..4adc0ad
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_15.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_15
+.super dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1.st_pvt1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.d
new file mode 100644
index 0000000..53dbe8f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_17.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_17.st_i1 Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_18.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_18.d
new file mode 100644
index 0000000..080e547
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_18.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.d
new file mode 100644
index 0000000..f7922af
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_19.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_19
+.super java/lang/Object
+
+.field public static st_f1 F
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_19.st_f1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.java b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.java
new file mode 100644
index 0000000..1cf93cc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_19 {
+    public static float st_f1;
+    
+    
+    public void run() {
+        st_f1 = 3.14f;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_2.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_2.d
new file mode 100644
index 0000000..9e6fe7f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_2.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_2
+.super java/lang/Object
+
+.field public static st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_4.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_20.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_20.d
new file mode 100644
index 0000000..abc0227
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_20.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_20.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v3, 0    
+       sput-boolean v3, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_21.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_21.d
new file mode 100644
index 0000000..b1e5f5f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_21.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_21
+.super java/lang/Object
+
+.field public static st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_22.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_22.d
new file mode 100644
index 0000000..e13f364
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_22.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_22
+.super java/lang/Object
+
+.field public static st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_23.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_23.d
new file mode 100644
index 0000000..9a5ae68
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_23.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_23
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_24.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_24.d
new file mode 100644
index 0000000..3fe5b45
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_24.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_24
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_24.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.d
new file mode 100644
index 0000000..874c5f2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_3.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_3
+.super java/lang/Object
+
+.field public static st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_3.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.dfh
new file mode 100644
index 0000000..db54511
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : e7454821
+    21 48 45 E7 
+// parsed: offset 12, len 20: signature           : 6104...6e2c
+    61 04 5D 28 79 FC E7 CF 89 5A 03 2C 25 BC 80 A4 F5 A3 6E 2C 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 328
+    48 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 349 (0x00015d) "Ljava/lang/Object;"
+    5D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 369 (0x000171) "T_sput_boolean_3.java"
+    71 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 392 (0x000188) "V"
+    88 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "Z"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "run"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "st_i1"
+    93 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  type_idx: 3 (0x000003) name_idx: 7 (0x000007) "st_i1"
+    00 00 03 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    00 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_sput_boolean_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_boolean.d.T_sput_boolean_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_boolean.d.T_sput_boolean_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: sput-boolean v0, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;.st_i1:Z // field@0000
+//@mod            6A 00 00 00 
+            6A 00 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 53: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 62 6F 6F 6C 65 61 6E 2F 64 2F 54 5F 73 70 75 74 5F 62 6F 6F 6C 65 61 6E 5F 33 3B 00 
+// parsed: offset 349, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 369, len 23: TYPE_STRING_DATA_ITEM [3] "T_sput_boolean_3.java"
+    15 54 5F 73 70 75 74 5F 62 6F 6F 6C 65 61 6E 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 392, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 398, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 403, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;"
+    // parsed: offset 410, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 414, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 415, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_4.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_4.d
new file mode 100644
index 0000000..d0a7422
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_4.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_4
+.super java/lang/Object
+
+.field public static st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-boolean v3, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_4.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_6.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_6.d
new file mode 100644
index 0000000..d50c573
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_6.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_6
+.super java/lang/Object
+
+.field public static s Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const v2, 2    
+       sput-boolean v2, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_6.s Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.d
new file mode 100644
index 0000000..c6b97f0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_7.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_7
+.super java/lang/Object
+
+.field public st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_7.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.d
new file mode 100644
index 0000000..4b781da
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_8.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.TestStubs.TestStubField Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.d b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.d
new file mode 100644
index 0000000..6deddd6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_boolean_9.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_9
+.super java/lang/Object
+
+.field public st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_9noclass.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/TestStubs.java
new file mode 100644
index 0000000..7b530ea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte;
+
+public class TestStubs {
+    // used by testVFE9
+    static byte TestStubField = 1;
+    
+    // used by testE5
+    public static final byte TestStubFieldFinal = 1;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/Test_sput_byte.java b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/Test_sput_byte.java
new file mode 100644
index 0000000..4cb751b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/Test_sput_byte.java
@@ -0,0 +1,322 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_1;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_11;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_12;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_13;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_14;
+
+public class Test_sput_byte extends DxTestCase {
+    /**
+     * @title put byte into static field
+     */
+    public void testN1() {
+        T_sput_byte_1 t = new T_sput_byte_1();
+        assertEquals(0, T_sput_byte_1.st_i1);
+        t.run();
+        assertEquals(77, T_sput_byte_1.st_i1);
+    }
+
+ 
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_sput_byte_12 t = new T_sput_byte_12();
+        assertEquals(0, T_sput_byte_12.st_i1);
+        t.run();
+        assertEquals(77, T_sput_byte_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_1
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_14
+        T_sput_byte_14 t = new T_sput_byte_14();
+        assertEquals(0, T_sput_byte_14.getProtectedField());
+        t.run();
+        assertEquals(77, T_sput_byte_14.getProtectedField());
+    }
+    
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_byte_13 t = new T_sput_byte_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * 
+     * @constraint B13 
+     * @title put byte into long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13
+     * @title put value '256' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B13 
+     * @title type of field doesn't match opcode - attempt to modify double 
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A12 
+     * @title Attempt to set non-static field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE8() {
+         try {
+             Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_7");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_byte.TestStubs
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_8
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_1
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_15
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint B1 
+     * @title sput-byte shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-byte shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-byte shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-byte shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-byte shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title sput-byte shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_byte.TestStubs
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_11
+    	try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.d
new file mode 100644
index 0000000..ec9b61c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_1.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_1
+.super java/lang/Object
+
+.field public static st_i1 B
+.field protected static st_p1 B
+.field private static st_pvt1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()B
+.limit regs 2
+
+       sget-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_1.st_pvt1 B
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_1.st_i1 B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.java b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.java
new file mode 100644
index 0000000..56c52c1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_1 {
+    public static byte st_i1;
+    protected static byte st_p1;
+    private static byte st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public static byte getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.d
new file mode 100644
index 0000000..f0a420c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_10.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_10
+.super java/lang/Object
+
+.field public st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_10.st_i1N B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.d
new file mode 100644
index 0000000..7a3faff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_11.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.TestStubs.TestStubFieldFinal B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.java b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.java
new file mode 100644
index 0000000..1cf3e6c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.d
new file mode 100644
index 0000000..41e2aff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_12.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_12
+.super java/lang/Object
+
+.field public static final st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_12.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.java b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.java
new file mode 100644
index 0000000..4e438a0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_12 {
+    public static byte st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.d
new file mode 100644
index 0000000..2271ca2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput_byte.d.StubInitError
+.super java/lang/Object
+
+.field public static value B
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.StubInitError.value B
+       return-void
+.end method
+
+
+.source T_sput_byte_13.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.StubInitError.value B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.java b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.java
new file mode 100644
index 0000000..5270328
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte.d;
+
+class StubInitError {
+    static byte value = (byte)(5 / 0); 
+}
+
+public class T_sput_byte_13 {
+    
+    public void run() {
+        StubInitError.value = 11;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.d
new file mode 100644
index 0000000..1b216a7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_14.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_14
+.super dot/junit/opcodes/sput_byte/d/T_sput_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_byte/d/T_sput_byte_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()B
+.limit regs 2
+
+       sget-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_1.st_p1 B
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_1.st_p1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.java b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.java
new file mode 100644
index 0000000..67075e7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_14 extends T_sput_byte_1{
+    
+    public void run() {
+        T_sput_byte_1.st_p1 = 77;
+    }
+    
+    public static byte getProtectedField(){
+        return T_sput_byte_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.d
new file mode 100644
index 0000000..8fd5828
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_15.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_15
+.super dot/junit/opcodes/sput_byte/d/T_sput_byte_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_byte/d/T_sput_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_1.st_pvt1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.d
new file mode 100644
index 0000000..76bd507
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_17.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_17.st_i1 B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_18.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_18.d
new file mode 100644
index 0000000..159ef4d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_18.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_2.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_2.d
new file mode 100644
index 0000000..c9520be
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_2.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_2
+.super java/lang/Object
+
+.field public static st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_4.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_20.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_20.d
new file mode 100644
index 0000000..9a77ec6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_20.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-byte v3, dot.junit.opcodes.sput_byte.d.T_sput_byte_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.d
new file mode 100644
index 0000000..15a924b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_21.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_21
+.super java/lang/Object
+
+.field public static st_s I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_21.st_s I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.d
new file mode 100644
index 0000000..3501490
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_22.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_22
+.super java/lang/Object
+
+.field public static st_b I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_22.st_b I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_23.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_23.d
new file mode 100644
index 0000000..a34f665
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_23.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_23
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_24.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_24.d
new file mode 100644
index 0000000..07265af
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_24.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_24
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.d
new file mode 100644
index 0000000..128d14b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_3.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_3
+.super java/lang/Object
+
+.field public static st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_3.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.dfh
new file mode 100644
index 0000000..86678ff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : e05a4586
+    86 45 5A E0 
+// parsed: offset 12, len 20: signature           : 90cf...df87
+    90 CF A4 6E C3 FD 39 4D 4D 5C E0 CB 09 2E 87 21 CC F6 DF 87 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "B"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 346 (0x00015a) "Ljava/lang/Object;"
+    5A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 366 (0x00016e) "T_sput_byte_3.java"
+    6E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 386 (0x000182) "V"
+    82 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "run"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 394 (0x00018a) "st_i1"
+    8A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "B"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_byte_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 401 (0x000191)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 91 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_byte.d.T_sput_byte_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_byte.d.T_sput_byte_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: sput-byte v0, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;.st_i1:B // field@0000
+//@mod            6B 00 00 00 
+            6B 00 00 01
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "B"
+    01 42 00 
+// parsed: offset 299, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 62 79 74 65 2F 64 2F 54 5F 73 70 75 74 5F 62 79 74 65 5F 33 3B 00 
+// parsed: offset 346, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [4] "T_sput_byte_3.java"
+    12 54 5F 73 70 75 74 5F 62 79 74 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 386, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 389, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 394, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;"
+    // parsed: offset 401, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 402, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 403, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 404, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 405, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 406, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 408, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 411, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 413, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 414, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 415, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 417, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 401 (0x000191)
+        00 20 00 00 01 00 00 00 91 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_4.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_4.d
new file mode 100644
index 0000000..fc64b62
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_4.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_4
+.super java/lang/Object
+
+.field public static st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-byte v3, dot.junit.opcodes.sput_byte.d.T_sput_byte_4.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_6.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_6.d
new file mode 100644
index 0000000..f41929a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_6.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_6
+.super java/lang/Object
+
+.field public static st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 256
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_6.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.d
new file mode 100644
index 0000000..8e90c22
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_7.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_7
+.super java/lang/Object
+
+.field public st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_7.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.d
new file mode 100644
index 0000000..f4a000f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_8.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-byte v1, dot.junit.opcodes.sput_byte.TestStubs.TestStubField B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.d b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.d
new file mode 100644
index 0000000..59ecb38
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_byte_9.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_9
+.super java/lang/Object
+
+.field public st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_9noclass.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/sput_char/TestStubs.java
new file mode 100644
index 0000000..fb91f68
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char;
+
+public class TestStubs {
+    // used by testVFE9
+    static char TestStubField = 1;
+    
+    // used by testE5
+    public static final char TestStubFieldFinal = 1;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/Test_sput_char.java b/tools/vm-tests/src/dot/junit/opcodes/sput_char/Test_sput_char.java
new file mode 100644
index 0000000..92ec064
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/Test_sput_char.java
@@ -0,0 +1,322 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_char.d.T_sput_char_1;
+import dot.junit.opcodes.sput_char.d.T_sput_char_11;
+import dot.junit.opcodes.sput_char.d.T_sput_char_12;
+import dot.junit.opcodes.sput_char.d.T_sput_char_13;
+import dot.junit.opcodes.sput_char.d.T_sput_char_14;
+
+public class Test_sput_char extends DxTestCase {
+    /**
+     * @title put char into static field
+     */
+    public void testN1() {
+        T_sput_char_1 t = new T_sput_char_1();
+        assertEquals(0, T_sput_char_1.st_i1);
+        t.run();
+        assertEquals(77, T_sput_char_1.st_i1);
+    }
+
+ 
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_sput_char_12 t = new T_sput_char_12();
+        assertEquals(0, T_sput_char_12.st_i1);
+        t.run();
+        assertEquals(77, T_sput_char_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_1
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_14
+        T_sput_char_14 t = new T_sput_char_14();
+        assertEquals(0, T_sput_char_14.getProtectedField());
+        t.run();
+        assertEquals(77, T_sput_char_14.getProtectedField());
+    }
+ 
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_char_13 t = new T_sput_char_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * 
+     * @constraint B13 
+     * @title put char into long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title put value '66000' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B13 
+     * @title type of field doesn't match opcode - attempt to modify double 
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A12 
+     * @title Attempt to set non-static field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE8() {
+         try {
+             Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_7");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_char.TestStubs
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_8
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_1
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_15
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint B1 
+     * @title sput-char shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-char shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-char shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-char shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-char shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-char shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_char.TestStubs
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_11
+    	try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.d
new file mode 100644
index 0000000..8603349
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_1.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_1
+.super java/lang/Object
+
+.field public static st_i1 C
+.field protected static st_p1 C
+.field private static st_pvt1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()C
+.limit regs 2
+
+       sget-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_1.st_pvt1 C
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_1.st_i1 C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.java b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.java
new file mode 100644
index 0000000..0437a31
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_1 {
+    public static char st_i1;
+    protected static char st_p1;
+    private static char st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public static char getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.d
new file mode 100644
index 0000000..ff47c26
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_10.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_10
+.super java/lang/Object
+
+.field public st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_10.st_i1N C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.d
new file mode 100644
index 0000000..6e23f44
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_11.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.TestStubs.TestStubFieldFinal C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.java b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.java
new file mode 100644
index 0000000..600cc9d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.d
new file mode 100644
index 0000000..8cb984f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_12.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_12
+.super java/lang/Object
+
+.field public static final st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_12.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.java b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.java
new file mode 100644
index 0000000..cd1f810
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_12 {
+    public static char st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.d
new file mode 100644
index 0000000..5b97bc4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput_char.d.StubInitError
+.super java/lang/Object
+
+.field public static value C
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput-char v1, dot.junit.opcodes.sput_char.d.StubInitError.value C
+       return-void
+.end method
+
+
+.source T_sput_char_13.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.d.StubInitError.value C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.java b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.java
new file mode 100644
index 0000000..786f121
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char.d;
+
+class StubInitError {
+    static char value = (char)(5 / 0); 
+}
+
+public class T_sput_char_13 {
+    
+    public void run() {
+        StubInitError.value = 11;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.d
new file mode 100644
index 0000000..f682166
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_14.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_14
+.super dot/junit/opcodes/sput_char/d/T_sput_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_char/d/T_sput_char_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()C
+.limit regs 2
+
+       sget-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_1.st_p1 C
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_1.st_p1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.java b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.java
new file mode 100644
index 0000000..409b51c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_14 extends T_sput_char_1{
+    
+    public void run() {
+        T_sput_char_1.st_p1 = 77;
+    }
+    
+    public static char getProtectedField(){
+        return T_sput_char_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.d
new file mode 100644
index 0000000..cccb96b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_15.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_15
+.super dot/junit/opcodes/sput_char/d/T_sput_char_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_char/d/T_sput_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_1.st_pvt1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.d
new file mode 100644
index 0000000..22af6be
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_17.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_17.st_i1 C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_18.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_18.d
new file mode 100644
index 0000000..f1fbeb6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_18.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_2.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_2.d
new file mode 100644
index 0000000..aa5f7d6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_2.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_2
+.super java/lang/Object
+
+.field public static st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_4.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_20.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_20.d
new file mode 100644
index 0000000..92d2e6e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_20.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-char v3, dot.junit.opcodes.sput_char.d.T_sput_char_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_21.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_21.d
new file mode 100644
index 0000000..bdf6fe3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_21.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_21
+.super java/lang/Object
+
+.field public static st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_22.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_22.d
new file mode 100644
index 0000000..fa16663
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_22.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_22
+.super java/lang/Object
+
+.field public static st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_23.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_23.d
new file mode 100644
index 0000000..fd69e4f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_23.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_23
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_24.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_24.d
new file mode 100644
index 0000000..8862e51
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_24.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_24
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.d
new file mode 100644
index 0000000..ff1725f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_3.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_3
+.super java/lang/Object
+
+.field public static st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_3.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.dfh
new file mode 100644
index 0000000..45f6af2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_char/d/T_sput_char_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_char/d/T_sput_char_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : bc0b43dc
+    DC 43 0B BC 
+// parsed: offset 12, len 20: signature           : ade8...22aa
+    AD E8 8C 2F 92 1D 57 2F 31 A9 89 DE D2 D7 EF 3B 36 0D 22 AA 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "C"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/sput_char/d/T_sput_char_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 346 (0x00015a) "Ljava/lang/Object;"
+    5A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 366 (0x00016e) "T_sput_char_3.java"
+    6E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 386 (0x000182) "V"
+    82 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "run"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 394 (0x00018a) "st_i1"
+    8A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "C"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sput_char/d/T_sput_char_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sput_char/d/T_sput_char_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_char_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 401 (0x000191)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 91 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_char.d.T_sput_char_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_char.d.T_sput_char_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: sput-char v0, Ldot/junit/opcodes/sput_char/d/T_sput_char_3;.st_i1:C // field@0000
+//@mod            6C 00 00 00 
+            6C 00 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "C"
+    01 43 00 
+// parsed: offset 299, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sput_char/d/T_sput_char_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 63 68 61 72 2F 64 2F 54 5F 73 70 75 74 5F 63 68 61 72 5F 33 3B 00 
+// parsed: offset 346, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [4] "T_sput_char_3.java"
+    12 54 5F 73 70 75 74 5F 63 68 61 72 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 386, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 389, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 394, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_char/d/T_sput_char_3;"
+    // parsed: offset 401, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 402, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 403, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 404, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 405, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 406, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 408, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 411, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 413, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 414, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 415, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 417, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 401 (0x000191)
+        00 20 00 00 01 00 00 00 91 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_4.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_4.d
new file mode 100644
index 0000000..95cf09b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_4.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_4
+.super java/lang/Object
+
+.field public static st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-char v3, dot.junit.opcodes.sput_char.d.T_sput_char_4.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_6.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_6.d
new file mode 100644
index 0000000..a2e504a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_6.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_6
+.super java/lang/Object
+
+.field public static st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 66000
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_6.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.d
new file mode 100644
index 0000000..8c44574
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_7.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_7
+.super java/lang/Object
+
+.field public st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_7.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.d
new file mode 100644
index 0000000..ac15f64
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_8.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-char v1, dot.junit.opcodes.sput_char.TestStubs.TestStubField C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.d b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.d
new file mode 100644
index 0000000..74279c4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_char_9.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_9
+.super java/lang/Object
+
+.field public st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_9noclass.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/sput_object/TestStubs.java
new file mode 100644
index 0000000..701ece3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object;
+
+public class TestStubs {
+    // used by testVFE9
+    static Object TestStubField = null;
+    
+    // used by testE5
+    public static final Object TestStubFieldFinal = null;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/Test_sput_object.java b/tools/vm-tests/src/dot/junit/opcodes/sput_object/Test_sput_object.java
new file mode 100644
index 0000000..0607225
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/Test_sput_object.java
@@ -0,0 +1,324 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_object.d.T_sput_object_1;
+import dot.junit.opcodes.sput_object.d.T_sput_object_11;
+import dot.junit.opcodes.sput_object.d.T_sput_object_12;
+import dot.junit.opcodes.sput_object.d.T_sput_object_13;
+import dot.junit.opcodes.sput_object.d.T_sput_object_14;
+
+public class Test_sput_object extends DxTestCase {
+    /**
+     * @title put reference into static field
+     */
+    public void testN1() {
+        T_sput_object_1 t = new T_sput_object_1();
+        assertEquals(null, T_sput_object_1.st_i1);
+        t.run();
+        assertEquals(t, T_sput_object_1.st_i1);
+    }
+
+ 
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_sput_object_12 t = new T_sput_object_12();
+        assertEquals(null, T_sput_object_12.st_i1);
+        t.run();
+        assertEquals(t, T_sput_object_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_1
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_14
+        T_sput_object_14 t = new T_sput_object_14();
+        assertEquals(null, T_sput_object_14.getProtectedField());
+        t.run();
+        assertEquals(t, T_sput_object_14.getProtectedField());
+    }
+  
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_object_13 t = new T_sput_object_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * 
+     * @constraint B13 
+     * @title put object into long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+    /**
+     * 
+     * @constraint B13 
+     * @title type of field doesn't match opcode - attempt to modify double 
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A12 
+     * @title Attempt to set non-static field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE8() {
+         try {
+             Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_7");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_object.TestStubs
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_8
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_1
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_15
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint B1 
+     * @title sput-object shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title assignment incompatible references
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-object shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-object shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-object shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-object shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-object shall not work for short fields
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_object.TestStubs
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_11
+    	try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.d
new file mode 100644
index 0000000..acb4903
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_1.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_1
+.super java/lang/Object
+
+.field public static st_i1 Ljava/lang/Object;
+.field protected static st_p1 Ljava/lang/Object;
+.field private static st_pvt1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()Ljava/lang/Object;
+.limit regs 2
+
+       sget-object v0, dot.junit.opcodes.sput_object.d.T_sput_object_1.st_pvt1 Ljava/lang/Object;
+       return-object v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_1.st_i1 Ljava/lang/Object;
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.java b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.java
new file mode 100644
index 0000000..1bf8e5c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_1 {
+    public static Object st_i1;
+    protected static Object st_p1;
+    private static Object st_pvt1;
+    
+    public void run() {
+        st_i1 = this;
+    }
+    
+    public static Object getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.d
new file mode 100644
index 0000000..7f12b99
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_10.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_10
+.super java/lang/Object
+
+.field public st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_10.st_i1N Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.d
new file mode 100644
index 0000000..a09c4af
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_11.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.TestStubs.TestStubFieldFinal Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.java b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.java
new file mode 100644
index 0000000..7f90df0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.d
new file mode 100644
index 0000000..562d8ed
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_12.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_12
+.super java/lang/Object
+
+.field public static final st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_12.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.java b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.java
new file mode 100644
index 0000000..5a592c3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_12 {
+    public static Object st_i1;
+    
+    public void run() {
+        st_i1 = this;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.d
new file mode 100644
index 0000000..d2d59da
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput_object.d.StubInitError
+.super java/lang/Object
+
+.field public static t I
+.field public static value Ljava/lang/Object;
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput v1, dot.junit.opcodes.sput_object.d.StubInitError.t I
+       return-void
+.end method
+
+
+.source T_sput_object_13.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.StubInitError.value Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.java b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.java
new file mode 100644
index 0000000..9e16873
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object.d;
+
+class StubInitError {
+    static short t = (short)(5 / 0);
+    static Object value;
+}
+
+public class T_sput_object_13 {
+    
+    public void run() {
+        StubInitError.value = this;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.d
new file mode 100644
index 0000000..89ed274
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_14.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_14
+.super dot/junit/opcodes/sput_object/d/T_sput_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_object/d/T_sput_object_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()Ljava/lang/Object;
+.limit regs 2
+
+       sget-object v0, dot.junit.opcodes.sput_object.d.T_sput_object_1.st_p1 Ljava/lang/Object;
+       return-object v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_1.st_p1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.java b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.java
new file mode 100644
index 0000000..87ea8fb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_14 extends T_sput_object_1{
+    
+    public void run() {
+        T_sput_object_1.st_p1 = this;
+    }
+    
+    public static Object getProtectedField(){
+        return T_sput_object_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.d
new file mode 100644
index 0000000..61d48e2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_15.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_15
+.super dot/junit/opcodes/sput_object/d/T_sput_object_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_object/d/T_sput_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_1.st_pvt1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.d
new file mode 100644
index 0000000..b46acdf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_17.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_17.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_18.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_18.d
new file mode 100644
index 0000000..21c4c5f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_18.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_18.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_2.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_2.d
new file mode 100644
index 0000000..5b6c088
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_2.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_2
+.super java/lang/Object
+
+.field public static st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1234    
+       sput-object v0, dot.junit.opcodes.sput_object.d.T_sput_object_2.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_20.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_20.d
new file mode 100644
index 0000000..8d6c9df
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_20.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/String;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_20.st_o Ljava/lang/String;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_21.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_21.d
new file mode 100644
index 0000000..f09c1a9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_21.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_21
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_22.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_22.d
new file mode 100644
index 0000000..4ae60e2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_22.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_22
+.super java/lang/Object
+
+.field public static st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_23.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_23.d
new file mode 100644
index 0000000..b440bb4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_23.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_23
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_24.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_24.d
new file mode 100644
index 0000000..63a01e5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_24.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_24
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.d
new file mode 100644
index 0000000..080efbc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_3.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_3
+.super java/lang/Object
+
+.field public static st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+        sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_3.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.dfh
new file mode 100644
index 0000000..90b5887
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.dfh
@@ -0,0 +1,253 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_object/d/T_sput_object_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_object/d/T_sput_object_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c2134499
+    99 44 13 C2 
+// parsed: offset 12, len 20: signature           : ef04...607d
+    EF 04 C2 97 17 79 3D 72 CF 34 E1 02 0C 5F 88 73 55 DF 60 7D 
+// parsed: offset 32, len 4: file_size           : 544
+    20 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 408 (0x000198)
+    98 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 7
+    07 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 140 (0x00008c)
+    8C 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 164 (0x0000a4)
+    A4 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 196 (0x0000c4)
+    C4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 228 (0x0000e4)
+    E4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 276 (0x000114) "<init>"
+    14 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 284 (0x00011c) "Ldot/junit/opcodes/sput_object/d/T_sput_object_3;"
+    1C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 335 (0x00014f) "Ljava/lang/Object;"
+    4F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 355 (0x000163) "T_sput_object_3.java"
+    63 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 377 (0x000179) "V"
+    79 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 380 (0x00017c) "run"
+    7C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 385 (0x000181) "st_i1"
+    81 01 00 00 
+
+// type_ids:
+// parsed: offset 140, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/sput_object/d/T_sput_object_3;"
+    01 00 00 00 
+// parsed: offset 144, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 152, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 164, len 8: [0] class_idx: 0 (0x000000)  type_idx: 1 (0x000001) name_idx: 6 (0x000006) "st_i1"
+    00 00 01 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 180, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 188, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 196, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sput_object/d/T_sput_object_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_sput_object_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 392 (0x000188)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 88 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_object.d.T_sput_object_3.<init>"
+    // parsed: offset 228, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 230, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 232, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 234, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 236, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 240, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 244, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 250, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_object.d.T_sput_object_3.run"
+    // parsed: offset 252, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 254, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 256, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 258, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 260, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 264, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 268, len 4: |0000: sput-object v2, Ldot/junit/opcodes/sput_object/d/T_sput_object_3;.st_i1:Ljava/lang/Object; // field@0000
+//@mod            69 02 00 00 
+            69 02 00 01 
+        // parsed: offset 272, len 2: |0002: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 274, len 2: PADDING
+    00 00 
+// parsed: offset 276, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 284, len 51: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/sput_object/d/T_sput_object_3;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 6F 62 6A 65 63 74 2F 64 2F 54 5F 73 70 75 74 5F 6F 62 6A 65 63 74 5F 33 3B 00 
+// parsed: offset 335, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 355, len 22: TYPE_STRING_DATA_ITEM [3] "T_sput_object_3.java"
+    14 54 5F 73 70 75 74 5F 6F 62 6A 65 63 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 377, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 380, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// parsed: offset 385, len 7: TYPE_STRING_DATA_ITEM [6] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_object/d/T_sput_object_3;"
+    // parsed: offset 392, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 393, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 394, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 395, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 396, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 397, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 398, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 399, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 402, len 2: code_off: 228 (0x0000e4)
+                E4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 404, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 405, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 406, len 2: code_off: 252 (0x0000fc)
+                FC 01 
+// map_list:
+    // parsed: offset 408, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 412, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 424, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 7
+    //      offset: 112 (0x000070)
+        01 00 00 00 07 00 00 00 70 00 00 00 
+    // parsed: offset 436, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 140 (0x00008c)
+        02 00 00 00 03 00 00 00 8C 00 00 00 
+    // parsed: offset 448, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 152 (0x000098)
+        03 00 00 00 01 00 00 00 98 00 00 00 
+    // parsed: offset 460, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 164 (0x0000a4)
+        04 00 00 00 01 00 00 00 A4 00 00 00 
+    // parsed: offset 472, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 172 (0x0000ac)
+        05 00 00 00 03 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 196 (0x0000c4)
+        06 00 00 00 01 00 00 00 C4 00 00 00 
+    // parsed: offset 496, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 228 (0x0000e4)
+        01 20 00 00 02 00 00 00 E4 00 00 00 
+    // parsed: offset 508, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 7
+    //      offset: 276 (0x000114)
+        02 20 00 00 07 00 00 00 14 01 00 00 
+    // parsed: offset 520, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 392 (0x000188)
+        00 20 00 00 01 00 00 00 88 01 00 00 
+    // parsed: offset 532, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 10 00 00 01 00 00 00 98 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_4.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_4.d
new file mode 100644
index 0000000..3a3bccd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_4.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_4
+.super java/lang/Object
+
+.field public static st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_4.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_6.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_6.d
new file mode 100644
index 0000000..b43597a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_6.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_6
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.d
new file mode 100644
index 0000000..84988f9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_7.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_7
+.super java/lang/Object
+
+.field public st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_7.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.d
new file mode 100644
index 0000000..26495a1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_8.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.TestStubs.TestStubField Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.d b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.d
new file mode 100644
index 0000000..2d35cf1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_object_9.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_9
+.super java/lang/Object
+
+.field public st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_9noclass.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/sput_short/TestStubs.java
new file mode 100644
index 0000000..dd67611
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short;
+
+public class TestStubs {
+    // used by testVFE9
+    static short TestStubField = 1;
+    
+    // used by testE5
+    public static final short TestStubFieldFinal = 1;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/Test_sput_short.java b/tools/vm-tests/src/dot/junit/opcodes/sput_short/Test_sput_short.java
new file mode 100644
index 0000000..c566401
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/Test_sput_short.java
@@ -0,0 +1,322 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_short.d.T_sput_short_1;
+import dot.junit.opcodes.sput_short.d.T_sput_short_11;
+import dot.junit.opcodes.sput_short.d.T_sput_short_12;
+import dot.junit.opcodes.sput_short.d.T_sput_short_13;
+import dot.junit.opcodes.sput_short.d.T_sput_short_14;
+
+public class Test_sput_short extends DxTestCase {
+    /**
+     * @title put short into static field
+     */
+    public void testN1() {
+        T_sput_short_1 t = new T_sput_short_1();
+        assertEquals(0, T_sput_short_1.st_i1);
+        t.run();
+        assertEquals(77, T_sput_short_1.st_i1);
+    }
+
+ 
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_sput_short_12 t = new T_sput_short_12();
+        assertEquals(0, T_sput_short_12.st_i1);
+        t.run();
+        assertEquals(77, T_sput_short_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_1
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_14
+        T_sput_short_14 t = new T_sput_short_14();
+        assertEquals(0, T_sput_short_14.getProtectedField());
+        t.run();
+        assertEquals(77, T_sput_short_14.getProtectedField());
+    }
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_short_13 t = new T_sput_short_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * 
+     * @constraint B13 
+     * @title put short into long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title put value '66000' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B13 
+     * @title type of field doesn't match opcode - attempt to modify double 
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A12 
+     * @title Attempt to set non-static field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE8() {
+         try {
+             Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_7");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_short.TestStubs
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_8
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_1
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_15
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint B1 
+     * @title sput-short shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-short shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-short shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-short shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-short shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-short shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_short.TestStubs
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_11
+    	try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.d
new file mode 100644
index 0000000..f41be35
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_1.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_1
+.super java/lang/Object
+
+.field public static st_i1 S
+.field protected static st_p1 S
+.field private static st_pvt1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()S
+.limit regs 2
+
+       sget-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_1.st_pvt1 S
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_1.st_i1 S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.java b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.java
new file mode 100644
index 0000000..c2d792d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_1 {
+    public static short st_i1;
+    protected static short st_p1;
+    private static short st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public static short getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.d
new file mode 100644
index 0000000..10a12b4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_10.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_10
+.super java/lang/Object
+
+.field public st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_10.st_i1N S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.d
new file mode 100644
index 0000000..4351376
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_11.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.TestStubs.TestStubFieldFinal S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.java b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.java
new file mode 100644
index 0000000..15f6124
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.d
new file mode 100644
index 0000000..a9dbbb0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_12.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_12
+.super java/lang/Object
+
+.field public static final st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_12.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.java b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.java
new file mode 100644
index 0000000..f6edd67
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_12 {
+    public static short st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.d
new file mode 100644
index 0000000..55d0bf5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput_short.d.StubInitError
+.super java/lang/Object
+
+.field public static value S
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput-short v1, dot.junit.opcodes.sput_short.d.StubInitError.value S
+       return-void
+.end method
+
+
+.source T_sput_short_13.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.d.StubInitError.value S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.java b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.java
new file mode 100644
index 0000000..3750c17
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short.d;
+
+class StubInitError {
+    static short value = (short)(5 / 0); 
+}
+
+public class T_sput_short_13 {
+    
+    public void run() {
+        StubInitError.value = 11;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.d
new file mode 100644
index 0000000..a836771
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_14.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_14
+.super dot/junit/opcodes/sput_short/d/T_sput_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_short/d/T_sput_short_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()S
+.limit regs 2
+
+       sget-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_1.st_p1 S
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_1.st_p1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.java b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.java
new file mode 100644
index 0000000..2aa5061
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_14 extends T_sput_short_1{
+    
+    public void run() {
+        T_sput_short_1.st_p1 = 77;
+    }
+    
+    public static short getProtectedField(){
+        return T_sput_short_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.d
new file mode 100644
index 0000000..4848a3f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_15.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_15
+.super dot/junit/opcodes/sput_short/d/T_sput_short_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_short/d/T_sput_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_1.st_pvt1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.d
new file mode 100644
index 0000000..3aba6fb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_17.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_17.st_i1 S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_18.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_18.d
new file mode 100644
index 0000000..e1ef12c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_18.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_2.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_2.d
new file mode 100644
index 0000000..f6c1a55
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_2.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_2
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_4.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_20.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_20.d
new file mode 100644
index 0000000..dc42d54
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_20.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-short v3, dot.junit.opcodes.sput_short.d.T_sput_short_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_21.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_21.d
new file mode 100644
index 0000000..a55af0d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_21.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_21
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_22.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_22.d
new file mode 100644
index 0000000..25375e2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_22.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_22
+.super java/lang/Object
+
+.field public static st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_23.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_23.d
new file mode 100644
index 0000000..fc437cc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_23.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_23
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_24.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_24.d
new file mode 100644
index 0000000..16b16f1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_24.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_24
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.d
new file mode 100644
index 0000000..1246f9a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_3.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_3
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_3.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.dfh
new file mode 100644
index 0000000..ac6f1b7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.dfh
@@ -0,0 +1,259 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_short/d/T_sput_short_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_short/d/T_sput_short_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 6a84455e
+    5E 45 84 6A 
+// parsed: offset 12, len 20: signature           : 2f3c...2c3e
+    2F 3C 42 F3 69 37 32 D5 2E D5 95 0C 52 19 F8 FB EA 75 2C 3E 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "Ldot/junit/opcodes/sput_short/d/T_sput_short_3;"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "Ljava/lang/Object;"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 365 (0x00016d) "S"
+    6D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 368 (0x000170) "T_sput_short_3.java"
+    70 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 389 (0x000185) "V"
+    85 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 392 (0x000188) "run"
+    88 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 397 (0x00018d) "st_i1"
+    8D 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/sput_short/d/T_sput_short_3;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "S"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  type_idx: 2 (0x000002) name_idx: 7 (0x000007) "st_i1"
+    00 00 02 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    00 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sput_short/d/T_sput_short_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_short_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 404 (0x000194)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 94 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_short.d.T_sput_short_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_short.d.T_sput_short_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: sput-short v0, Ldot/junit/opcodes/sput_short/d/T_sput_short_3;.st_i1:S // field@0000
+//@mod            6D 00 00 00 
+            6D 00 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 49: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/sput_short/d/T_sput_short_3;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 73 68 6F 72 74 2F 64 2F 54 5F 73 70 75 74 5F 73 68 6F 72 74 5F 33 3B 00 
+// parsed: offset 345, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 365, len 3: TYPE_STRING_DATA_ITEM [3] "S"
+    01 53 00 
+// parsed: offset 368, len 21: TYPE_STRING_DATA_ITEM [4] "T_sput_short_3.java"
+    13 54 5F 73 70 75 74 5F 73 68 6F 72 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 389, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 392, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 397, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_short/d/T_sput_short_3;"
+    // parsed: offset 404, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 405, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 406, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 407, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 408, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 409, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 410, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 411, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 414, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 417, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 418, len 2: code_off: 260 (0x000104)
+                84 02 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 404 (0x000194)
+        00 20 00 00 01 00 00 00 94 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_4.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_4.d
new file mode 100644
index 0000000..df600da
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_4.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_4
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-short v3, dot.junit.opcodes.sput_short.d.T_sput_short_4.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_6.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_6.d
new file mode 100644
index 0000000..1b3904f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_6.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_6
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 66000
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.d
new file mode 100644
index 0000000..99d2bc6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_7.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_7
+.super java/lang/Object
+
+.field public st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_7.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.d
new file mode 100644
index 0000000..ce24cf8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_8.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-short v1, dot.junit.opcodes.sput_short.TestStubs.TestStubField S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.d b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.d
new file mode 100644
index 0000000..d5aa82f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_short_9.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_9
+.super java/lang/Object
+
+.field public st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_9noclass.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/TestStubs.java b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/TestStubs.java
new file mode 100644
index 0000000..bc99fda
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide;
+
+public class TestStubs {
+    // used by testVFE9
+    static long TestStubField = 1;
+    
+    // used by testE5
+    public static final long TestStubFieldFinal = 1;
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/Test_sput_wide.java b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/Test_sput_wide.java
new file mode 100644
index 0000000..edca9d9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/Test_sput_wide.java
@@ -0,0 +1,336 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_1;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_11;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_12;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_13;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_14;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_5;
+
+public class Test_sput_wide extends DxTestCase {
+    /**
+     * @title put long into static field
+     */
+    public void testN1() {
+        T_sput_wide_1 t = new T_sput_wide_1();
+        assertEquals(0, T_sput_wide_1.st_i1);
+        t.run();
+        assertEquals(778899112233l, T_sput_wide_1.st_i1);
+    }
+    
+    /**
+     * @title put double into static field
+     */
+    public void testN2() {
+        T_sput_wide_5 t = new T_sput_wide_5();
+        assertEquals(0.0d, T_sput_wide_5.st_i1);
+        t.run();
+        assertEquals(0.5d, T_sput_wide_5.st_i1);
+    }
+
+ 
+    /**
+     * @title modification of final field
+     */
+    public void testN3() {
+        T_sput_wide_12 t = new T_sput_wide_12();
+        assertEquals(0, T_sput_wide_12.st_i1);
+        t.run();
+        assertEquals(77, T_sput_wide_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_1
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_14
+        T_sput_wide_14 t = new T_sput_wide_14();
+        assertEquals(0, T_sput_wide_14.getProtectedField());
+        t.run();
+        assertEquals(77, T_sput_wide_14.getProtectedField());
+    }
+  
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_wide_13 t = new T_sput_wide_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * 
+     * @constraint B13 
+     * @title put int into long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+ 
+
+    /**
+     * 
+     * @constraint B13 
+     * @title type of field doesn't match opcode - attempt to modify float 
+     * field with double-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A12 
+     * @title Attempt to set non-static field. Java throws IncompatibleClassChangeError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE8() {
+         try {
+             Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_7");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field. Java throws IllegalAccessError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_wide.TestStubs
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_8
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class. Java throws NoClassDefFoundError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field. Java throws NoSuchFieldError 
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass. Java 
+     * throws IllegalAccessError on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_1
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_15
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint B1 
+     * @title sput-wide shall not work for single-width numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-wide shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-wide shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-wide shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-wide shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-wide shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title sput-wide shall not work for short fields
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+  
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_wide.TestStubs
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_11
+    	try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.d
new file mode 100644
index 0000000..94e2898
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_1.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_1
+.super java/lang/Object
+
+.field public static st_i1 J
+.field protected static st_p1 J
+.field private static st_pvt1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()J
+.limit regs 2
+
+       sget-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_1.st_pvt1 J
+       return-wide v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 778899112233
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_1.st_i1 J
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.java b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.java
new file mode 100644
index 0000000..422b3c9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_1 {
+    public static long st_i1;
+    protected static long st_p1;
+    private static long st_pvt1;
+    
+    public void run() {
+        st_i1 = 778899112233l;
+    }
+    
+    public static long getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.d
new file mode 100644
index 0000000..65a6012
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_10.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_10
+.super java/lang/Object
+
+.field public st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 1
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_10.st_i1N J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.d
new file mode 100644
index 0000000..7cf07a0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_11.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 1
+       sput-wide v1, dot.junit.opcodes.sput_wide.TestStubs.TestStubFieldFinal J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.java b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.java
new file mode 100644
index 0000000..c458f05
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.d
new file mode 100644
index 0000000..23fc53b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_12.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_12
+.super java/lang/Object
+
+.field public static final st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 77
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_12.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.java b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.java
new file mode 100644
index 0000000..3f0f128
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_12 {
+    public static long st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.d
new file mode 100644
index 0000000..a130809
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source JtubInitError.java
+.class public dot.junit.opcodes.sput_wide.d.JtubInitError
+.super java/lang/Object
+
+.field public static value J
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.JtubInitError.value J
+       return-void
+.end method
+
+
+.source T_sput_wide_13.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 1
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.JtubInitError.value J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.java b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.java
new file mode 100644
index 0000000..ab71754
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+class StubInitError {
+    static long value = (long)(5 / 0); 
+}
+
+public class T_sput_wide_13 {
+    
+    public void run() {
+        StubInitError.value = 11;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.d
new file mode 100644
index 0000000..38d5ed5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_14.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_14
+.super dot/junit/opcodes/sput_wide/d/T_sput_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_wide/d/T_sput_wide_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()J
+.limit regs 2
+
+       sget-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_1.st_p1 J
+       return-wide v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 77
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_1.st_p1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.java b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.java
new file mode 100644
index 0000000..c919ee5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_14 extends T_sput_wide_1{
+    
+    public void run() {
+        T_sput_wide_1.st_p1 = 77;
+    }
+    
+    public static long getProtectedField(){
+        return T_sput_wide_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.d
new file mode 100644
index 0000000..88531b4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_15.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_15
+.super dot/junit/opcodes/sput_wide/d/T_sput_wide_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_wide/d/T_sput_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 1
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_1.st_pvt1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.d
new file mode 100644
index 0000000..ab57cb7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_17.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_17
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 1
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_17.st_i1 J
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_18.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_18.d
new file mode 100644
index 0000000..463bdbd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_18.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_18
+.super java/lang/Object
+
+.field public static st_i1 F
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1.0
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_18.st_i1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_2.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_2.d
new file mode 100644
index 0000000..84b5622
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_2.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_2
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_4.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_20.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_20.d
new file mode 100644
index 0000000..ca43933
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_20.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-wide v3, dot.junit.opcodes.sput_wide.d.T_sput_wide_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_21.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_21.d
new file mode 100644
index 0000000..04cf574
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_21.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_21
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 12    
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_22.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_22.d
new file mode 100644
index 0000000..d89d3cf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_22.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_22
+.super java/lang/Object
+
+.field public static st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_23.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_23.d
new file mode 100644
index 0000000..da254f8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_23.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_23
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_24.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_24.d
new file mode 100644
index 0000000..e663946
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_24.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_24
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.d
new file mode 100644
index 0000000..344db70
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_3.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_3
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_3.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.dfh b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.dfh
new file mode 100644
index 0000000..4236b7c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 91f343d1
+    D1 43 F3 91 
+// parsed: offset 12, len 20: signature           : 659a...c933
+    65 9A 3C 32 A2 38 1F 9A AB B7 C9 11 22 6C 75 97 DF 86 C9 33 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "J"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 370 (0x000172) "T_sput_wide_3.java"
+    72 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 398 (0x00018e) "st_i1"
+    8E 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "J"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_wide_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 405 (0x000195)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 95 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_wide.d.T_sput_wide_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_wide.d.T_sput_wide_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 276, len 10: |0000: const-wide v0, #double 0.000000 // #0x0000000000000001 long
+            18 00 01 00 00 00 00 00 00 00 
+        // parsed: offset 286, len 4: |0005: sput-wide v0, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;.st_i1:J // field@0000
+//@mod            68 00 00 00 
+            68 00 00 01 
+        // parsed: offset 290, len 2: |0007: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "J"
+    01 4A 00 
+// parsed: offset 303, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 77 69 64 65 2F 64 2F 54 5F 73 70 75 74 5F 77 69 64 65 5F 33 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 20: TYPE_STRING_DATA_ITEM [4] "T_sput_wide_3.java"
+    12 54 5F 73 70 75 74 5F 77 69 64 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 398, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;"
+    // parsed: offset 405, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 406, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 408, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 409, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 410, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 411, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 412, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 415, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 417, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 418, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 419, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 421, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 292 (0x000124)
+        02 20 00 00 08 00 00 00 24 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 405 (0x000195)
+        00 20 00 00 01 00 00 00 95 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_4.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_4.d
new file mode 100644
index 0000000..0f29358
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_4.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_4
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-wide v3, dot.junit.opcodes.sput_wide.d.T_sput_wide_4.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.d
new file mode 100644
index 0000000..0918986
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_5.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_5
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 0.5
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_5.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.java b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.java
new file mode 100644
index 0000000..1147ce0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_5 {
+    public static double st_i1;
+    
+    public void run() {
+        st_i1 = 0.5d;
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_6.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_6.d
new file mode 100644
index 0000000..1552b40
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_6.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_6
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.d
new file mode 100644
index 0000000..726dfff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_7.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_7
+.super java/lang/Object
+
+.field public st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 0
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_7.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.d
new file mode 100644
index 0000000..f14a34c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_8.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 0
+       sput-wide v1, dot.junit.opcodes.sput_wide.TestStubs.TestStubField J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.d b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.d
new file mode 100644
index 0000000..64f57d6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sput_wide_9.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_9
+.super java/lang/Object
+
+.field public st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 0
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_9noclass.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double/Test_sub_double.java b/tools/vm-tests/src/dot/junit/opcodes/sub_double/Test_sub_double.java
new file mode 100644
index 0000000..5126c8e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double/Test_sub_double.java
@@ -0,0 +1,202 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_double.d.T_sub_double_1;
+import dot.junit.opcodes.sub_double.d.T_sub_double_3;
+
+public class Test_sub_double extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(-0.43999999999999995d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(3.14d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title 
+     */
+    public void testN3() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(-0.43999999999999995d, t.run(-3.14d, -2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this subtraction of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_sub_double_3 t = new T_sub_double_3();
+        try {
+            t.run(12345l, 3.14d);
+        } catch (Throwable e) {
+        }
+    }  
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB4() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = +0, -0d
+     */
+    public void testB5() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(+0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = +0d, +0d
+     */
+    public void testB7() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(+0d, t.run(+0d, +0d));
+    }
+
+    /**
+     * @title Arguments = 2.7d, 2.7d
+     */
+    public void testB8() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(0d, t.run(2.7d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB9() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(0d, t.run(Double.MAX_VALUE, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, 4.9E-324
+     */
+    public void testB10() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(0d, t.run(Double.MIN_VALUE, 4.9E-324));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double.d.T_sub_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double.d.T_sub_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double.d.T_sub_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double.d.T_sub_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.d b/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.d
new file mode 100644
index 0000000..99060a2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_1.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.java b/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.java
new file mode 100644
index 0000000..7193f2e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_double.d;
+
+public class T_sub_double_1 {
+
+    public double run(double a, double b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_2.d b/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_2.d
new file mode 100644
index 0000000..e202f3c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_2.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       const v3, 3.1415
+       sub-double v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.d b/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.d
new file mode 100644
index 0000000..ac2644e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_3.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 7
+
+       sub-double v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.java b/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.java
new file mode 100644
index 0000000..9b8ee8e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_double.d;
+
+public class T_sub_double_3 {
+
+    public double run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_4.d b/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_4.d
new file mode 100644
index 0000000..cf89f31
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_4.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double v0, v3, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_5.d b/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_5.d
new file mode 100644
index 0000000..69bbda7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_5.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double v0, v3, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_6.d b/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_6.d
new file mode 100644
index 0000000..6995970
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double/d/T_sub_double_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_6.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 7
+       move v0, v5
+       move v1, v5
+       move v2, v6
+       move v3, v6       
+       sub-double v0, v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/Test_sub_double_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/Test_sub_double_2addr.java
new file mode 100644
index 0000000..bdd4206
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/Test_sub_double_2addr.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_double_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_1;
+import dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_3;
+
+public class Test_sub_double_2addr extends DxTestCase {
+     /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(-0.43999999999999995d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(3.14d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title 
+     */
+    public void testN3() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(-0.43999999999999995d, t.run(-3.14d, -2.7d));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this subtraction of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_sub_double_2addr_3 t = new T_sub_double_2addr_3();
+        try {
+            t.run(12345l, 3.14d);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB4() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = +0, -0d
+     */
+    public void testB5() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(+0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = +0d, +0d
+     */
+    public void testB7() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(+0d, t.run(+0d, +0d));
+    }
+
+    /**
+     * @title Arguments = 2.7d, 2.7d
+     */
+    public void testB8() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(0d, t.run(2.7d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB9() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(0d, t.run(Double.MAX_VALUE, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, 4.9E-324
+     */
+    public void testB10() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(0d, t.run(Double.MIN_VALUE, 4.9E-324));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.d
new file mode 100644
index 0000000..8df12c1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_2addr_1.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.java
new file mode 100644
index 0000000..d99e5ac
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_double_2addr.d;
+
+public class T_sub_double_2addr_1 {
+
+    public double run(double a, double b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_2.d
new file mode 100644
index 0000000..0b37443c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_2addr_2.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       const v3, 3.1415
+       sub-double/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.d
new file mode 100644
index 0000000..a866a14
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_2addr_3.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 7
+
+       sub-double/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.java b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.java
new file mode 100644
index 0000000..eb60bf7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_double_2addr.d;
+
+public class T_sub_double_2addr_3 {
+
+    public double run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_4.d
new file mode 100644
index 0000000..a3236ef
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_2addr_4.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double/2addr v3, v2
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_5.d
new file mode 100644
index 0000000..aa69895
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_2addr_5.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double/2addr v3, v7
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_6.d
new file mode 100644
index 0000000..07bc954
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_double_6.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 7
+       move v0, v5
+       move v1, v5
+       move v2, v6
+       move v3, v6       
+       sub-double/2addr v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float/Test_sub_float.java b/tools/vm-tests/src/dot/junit/opcodes/sub_float/Test_sub_float.java
new file mode 100644
index 0000000..2e41c99
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float/Test_sub_float.java
@@ -0,0 +1,212 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_float.d.T_sub_float_1;
+import dot.junit.opcodes.sub_float.d.T_sub_float_5;
+
+
+public class Test_sub_float extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(-0.44000006f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(3.14f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title 
+     */
+    public void testN3() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(-0.44000006f, t.run(-3.14f, -2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this subtraction of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_sub_float_5 t = new T_sub_float_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB4() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(+0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = +0f, +0f
+     */
+    public void testB7() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(+0f, t.run(+0f, +0f));
+    }
+
+    /**
+     * @title Arguments = 2.7f, 2.7f
+     */
+    public void testB8() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(0f, t.run(2.7f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB9() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(0f, t.run(Float.MAX_VALUE, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB10() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(0f, t.run(Float.MIN_VALUE, 1.4E-45f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -Float.MAX_VALUE
+     */
+    public void testB11() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                -3.402823E+38F));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float.d.T_sub_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float.d.T_sub_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float.d.T_sub_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float.d.T_sub_float_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.d b/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.d
new file mode 100644
index 0000000..39f6708
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_1.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.java b/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.java
new file mode 100644
index 0000000..573404e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_float.d;
+
+public class T_sub_float_1 {
+
+    public float run(float a, float b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_2.d b/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_2.d
new file mode 100644
index 0000000..c144976
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_2.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 5
+
+       move v2, v3
+       const-wide v3, 3.1415
+       sub-float v0, v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_3.d b/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_3.d
new file mode 100644
index 0000000..0456de2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_3.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 5
+
+       move v2, v3
+       const-wide v3, 9475928
+       sub-float v0, v3, v2
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_4.d b/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_4.d
new file mode 100644
index 0000000..1c73e66
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_4.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.d b/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.d
new file mode 100644
index 0000000..c851a5b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_5.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 4
+
+       sub-float v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.java b/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.java
new file mode 100644
index 0000000..dd3a944
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_float.d;
+
+public class T_sub_float_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_6.d b/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_6.d
new file mode 100644
index 0000000..c069f2d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float/d/T_sub_float_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_6.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/Test_sub_float_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/Test_sub_float_2addr.java
new file mode 100644
index 0000000..5d934b1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/Test_sub_float_2addr.java
@@ -0,0 +1,210 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_float_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_1;
+import dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_5;
+
+public class Test_sub_float_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(-0.44000006f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(3.14f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title 
+     */
+    public void testN3() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(-0.44000006f, t.run(-3.14f, -2.7f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this subtraction of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_sub_float_2addr_5 t = new T_sub_float_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB4() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(+0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = +0f, +0f
+     */
+    public void testB7() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(+0f, t.run(+0f, +0f));
+    }
+
+    /**
+     * @title Arguments = 2.7f, 2.7f
+     */
+    public void testB8() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(0f, t.run(2.7f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB9() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(0f, t.run(Float.MAX_VALUE, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB10() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(0f, t.run(Float.MIN_VALUE, 1.4E-45f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -Float.MAX_VALUE
+     */
+    public void testB11() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                -3.402823E+38F));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.d
new file mode 100644
index 0000000..d1c6e61
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_2addr_1.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.java
new file mode 100644
index 0000000..0838c38
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_float_2addr.d;
+
+public class T_sub_float_2addr_1 {
+
+    public float run(float a, float b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_2.d
new file mode 100644
index 0000000..3f3b632
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_2addr_2.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 5
+
+       move v2, v3
+       const-wide v3, 3.1415
+       sub-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_3.d
new file mode 100644
index 0000000..5a5f610
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_2addr_3.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 5
+
+       move v2, v3
+       const-wide v3, 9475928
+       sub-float/2addr v3, v2
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_4.d
new file mode 100644
index 0000000..f60a149
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_2addr_4.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float/2addr v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.d
new file mode 100644
index 0000000..561ed3c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_2addr_5.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 4
+
+       sub-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.java b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.java
new file mode 100644
index 0000000..5a0c748
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_float_2addr.d;
+
+public class T_sub_float_2addr_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_6.d
new file mode 100644
index 0000000..8d94709
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_float_2addr_6.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int/Test_sub_int.java b/tools/vm-tests/src/dot/junit/opcodes/sub_int/Test_sub_int.java
new file mode 100644
index 0000000..4a491cf
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int/Test_sub_int.java
@@ -0,0 +1,196 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_int.d.T_sub_int_1;
+import dot.junit.opcodes.sub_int.d.T_sub_int_5;
+
+public class Test_sub_int extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(4, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 0, 255
+     */
+    public void testN2() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(-255, t.run(0, 255));
+    }
+
+    /**
+     * @title Arguments = 0, -65536
+     */
+    public void testN3() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(65536, t.run(0, -65536));
+    }
+
+    /**
+     * @title Arguments = 0, -2147483647
+     */
+    public void testN4() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(0, -2147483647));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this subtraction of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_sub_int_5 t = new  T_sub_int_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(-2147483647, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, -1
+     */
+    public void testB3() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(-2147483648, t.run(0, -Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB7() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(2147483646, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB8() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(-2147483647, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB9() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int.d.T_sub_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int.d.T_sub_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int.d.T_sub_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int.d.T_sub_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.d b/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.d
new file mode 100644
index 0000000..019f739
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_1.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       sub-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.java b/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.java
new file mode 100644
index 0000000..46c8b3b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_int.d;
+
+public class T_sub_int_1 {
+
+    public int run(int a, int b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_2.d b/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_2.d
new file mode 100644
index 0000000..2d6c43f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_2.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 123456.0
+       sub-int v0, v2, v0
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_3.d b/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_3.d
new file mode 100644
index 0000000..4ff0912
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_3.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 123456675
+       sub-int v0, v0, v2
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_4.d b/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_4.d
new file mode 100644
index 0000000..f3b57fc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_4.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       sub-int v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.d b/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.d
new file mode 100644
index 0000000..f813789
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_5.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+
+       sub-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.java b/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.java
new file mode 100644
index 0000000..ecc613b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_int.d;
+
+public class T_sub_int_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_6.d b/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_6.d
new file mode 100644
index 0000000..b45a470
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int/d/T_sub_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_6.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       sub-int v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/Test_sub_int_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/Test_sub_int_2addr.java
new file mode 100644
index 0000000..cabd0f6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/Test_sub_int_2addr.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_1;
+import dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_5;
+
+public class Test_sub_int_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(4, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 0, 255
+     */
+    public void testN2() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(-255, t.run(0, 255));
+    }
+
+    /**
+     * @title Arguments = 0, -65536
+     */
+    public void testN3() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(65536, t.run(0, -65536));
+    }
+
+    /**
+     * @title Arguments = 0, -2147483647
+     */
+    public void testN4() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(Integer.MAX_VALUE, t.run(0, -2147483647));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this subtraction of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_sub_int_2addr_5 t = new  T_sub_int_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(-2147483647, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, -1
+     */
+    public void testB3() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, -1));
+    }
+
+    /** 
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(-2147483648, t.run(0, -Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB7() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(2147483646, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB8() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(-2147483647, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB9() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.d
new file mode 100644
index 0000000..203da0d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_2addr_1.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       sub-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.java
new file mode 100644
index 0000000..03dcff2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_int_2addr.d;
+
+public class T_sub_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_2.d
new file mode 100644
index 0000000..e3e5cab
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_2addr_2.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 123456.0
+       sub-int/2addr v2, v0
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_3.d
new file mode 100644
index 0000000..cad0b89
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_2addr_3.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 123456675
+       sub-int/2addr v0, v2
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_4.d
new file mode 100644
index 0000000..efce9cc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_2addr_4.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       sub-int/2addr v0, v2
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.d
new file mode 100644
index 0000000..77b2c6f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_2addr_5.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 3
+
+       sub-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.java b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.java
new file mode 100644
index 0000000..14c9b65
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_int_2addr.d;
+
+public class T_sub_int_2addr_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_6.d
new file mode 100644
index 0000000..1705eb7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_int_2addr_6.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       sub-int/2addr v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long/Test_sub_long.java b/tools/vm-tests/src/dot/junit/opcodes/sub_long/Test_sub_long.java
new file mode 100644
index 0000000..913ed6d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long/Test_sub_long.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_long.d.T_sub_long_1;
+import dot.junit.opcodes.sub_long.d.T_sub_long_2;
+
+public class Test_sub_long extends DxTestCase {
+
+    /**
+     * @title Arguments = 1111127348242l, 11111111114l
+     */
+    public void testN1() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(1100016237128l, t.run(1111127348242l, 11111111114l));
+    }
+
+    /**
+     * @title Arguments = 0, 1111127348242l
+     */
+    public void testN2() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(-1111127348242l, t.run(0, 1111127348242l));
+    }
+
+    /**
+     * @title Arguments = 0, -11111111114l
+     */
+    public void testN3() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(11111111114l, t.run(0, -11111111114l));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this subtraction of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+         T_sub_long_2 t = new  T_sub_long_2();
+        try {
+            t.run(12345l, 3.14d);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Arguments = 0l, Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(-9223372036854775807L, t.run(0l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 9223372036854775807L, Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(0l, t.run(9223372036854775807L, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, -1l
+     */
+    public void testB3() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MAX_VALUE, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1l
+     */
+    public void testB4() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(9223372036854775807L, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = 0l, 0l
+     */
+    public void testB5() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(0l, t.run(0l, 0l));
+    }
+
+    /**
+     * @title Arguments = 0l, -Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(-9223372036854775808L, t.run(0l, -Long.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long.d.T_sub_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long.d.T_sub_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long.d.T_sub_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long.d.T_sub_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.d b/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.d
new file mode 100644
index 0000000..4367232
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_1.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       sub-long v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.java b/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.java
new file mode 100644
index 0000000..24a0f90
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_long.d;
+
+public class T_sub_long_1 {
+    
+    public long run(long a, long b) {
+        return a-b;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.d b/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.d
new file mode 100644
index 0000000..6e191ac
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_2.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 7
+       sub-long v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.java b/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.java
new file mode 100644
index 0000000..733b4dc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_long.d;
+
+public class T_sub_long_2 {
+    
+    public long run(long a, double b) {
+        return 0;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_3.d b/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_3.d
new file mode 100644
index 0000000..5fe421f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_3.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       const v3, 12346
+       sub-long v0, v3, v5
+       return-wide v5
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_4.d b/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_4.d
new file mode 100644
index 0000000..7ab2d2d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_4.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       const v5, 12346.0
+       sub-long v0, v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_5.d b/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_5.d
new file mode 100644
index 0000000..c498408
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_5.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       sub-long v0, v3, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_6.d b/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_6.d
new file mode 100644
index 0000000..f9f2065
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long/d/T_sub_long_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_6.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       sub-long v0, v3, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/Test_sub_long_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/Test_sub_long_2addr.java
new file mode 100644
index 0000000..27a3d09
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/Test_sub_long_2addr.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_1;
+import dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_2;
+
+public class Test_sub_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 1111127348242l, 11111111114l
+     */
+    public void testN1() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(1100016237128l, t.run(1111127348242l, 11111111114l));
+    }
+
+    /**
+     * @title Arguments = 0, 1111127348242l
+     */
+    public void testN2() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(-1111127348242l, t.run(0, 1111127348242l));
+    }
+
+    /**
+     * @title Arguments = 0, -11111111114l
+     */
+    public void testN3() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(11111111114l, t.run(0, -11111111114l));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this subtraction of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_sub_long_2addr_2 t = new  T_sub_long_2addr_2();
+        try {
+            t.run(12345l, 3.14d);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Arguments = 0l, Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(-9223372036854775807L, t.run(0l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 9223372036854775807L, Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(0l, t.run(9223372036854775807L, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, -1l
+     */
+    public void testB3() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MAX_VALUE, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1l
+     */
+    public void testB4() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(9223372036854775807L, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = 0l, 0l
+     */
+    public void testB5() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(0l, t.run(0l, 0l));
+    }
+
+    /**
+     * @title Arguments = 0l, -Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(0l, -Long.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.d
new file mode 100644
index 0000000..f416a03
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_2addr_1.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       sub-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.java
new file mode 100644
index 0000000..8d66c2b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_long_2addr.d;
+
+public class T_sub_long_2addr_1 {
+    
+    public long run(long a, long b) {
+        return a-b;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.d
new file mode 100644
index 0000000..eb91aff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_2addr_2.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 7
+       sub-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.java b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.java
new file mode 100644
index 0000000..33f4b88
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.sub_long_2addr.d;
+
+public class T_sub_long_2addr_2 {
+    
+    public long run(long a, double b) {
+        return 0;
+    }
+    
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_3.d
new file mode 100644
index 0000000..bea4aea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_2addr_3.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       const v3, 12346
+       sub-long/2addr v3, v5
+       return-wide v5
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_4.d
new file mode 100644
index 0000000..57d6c24
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_2addr_4.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       const v5, 12346.0
+       sub-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_5.d
new file mode 100644
index 0000000..da99ce1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_2addr_5.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       sub-long/2addr v3, v2
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_6.d
new file mode 100644
index 0000000..fb874e6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_sub_long_2addr_6.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       sub-long/2addr v3, v7
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int/Test_ushr_int.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/Test_ushr_int.java
new file mode 100644
index 0000000..2701607
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/Test_ushr_int.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.ushr_int.d.T_ushr_int_1;
+import dot.junit.opcodes.ushr_int.d.T_ushr_int_5;
+
+public class Test_ushr_int extends DxTestCase {
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(7, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(8, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(0x7FFFFFF8, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(0, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(16, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (int >>> float) makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_ushr_int_5 t = new  T_ushr_int_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(0x40000000, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int.d.T_ushr_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int.d.T_ushr_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int.d.T_ushr_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int.d.T_ushr_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.d
new file mode 100644
index 0000000..dd22d10
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_1.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int v1, v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.java
new file mode 100644
index 0000000..b633fc2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int.d;
+
+public class T_ushr_int_1 {
+
+    public int run(int a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_2.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_2.d
new file mode 100644
index 0000000..75880f7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_2.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       move v1, v2
+       const-wide v2, 12345.0
+       ushr-int v1, v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_3.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_3.d
new file mode 100644
index 0000000..802f349
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_3.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_3
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)I
+.limit regs 4
+
+       ushr-int v1, v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_4.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_4.d
new file mode 100644
index 0000000..289c777
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_4.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int v1, v1, v0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.d
new file mode 100644
index 0000000..2fdf2b6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_5.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_5
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 3
+
+       ushr-int v1, v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.java
new file mode 100644
index 0000000..4b5c31f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int.d;
+
+public class T_ushr_int_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_6.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_6.d
new file mode 100644
index 0000000..b216968
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_6.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_6
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int v1, v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/Test_ushr_int_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/Test_ushr_int_2addr.java
new file mode 100644
index 0000000..e1c4217
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/Test_ushr_int_2addr.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_1;
+import dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_5;
+
+public class Test_ushr_int_2addr extends DxTestCase {
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(7, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(8, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(0x7FFFFFF8, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(0, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(16, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (int >>> float) makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_ushr_int_2addr_5 t = new  T_ushr_int_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(0x40000000, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.d
new file mode 100644
index 0000000..5ee3392
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_2addr_1.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int/2addr v1, v2
+       return v1
+.end method
+
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.java
new file mode 100644
index 0000000..dd53d3d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_2addr.d;
+
+public class T_ushr_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_2.d
new file mode 100644
index 0000000..d7be0ea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_2addr_2.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       move v1, v2
+       const-wide v2, 12345.0
+       ushr-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_3.d
new file mode 100644
index 0000000..a7e8263
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_2addr_3.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_3
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)I
+.limit regs 4
+
+       ushr-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_4.d
new file mode 100644
index 0000000..330ce0a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_2addr_4.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int/2addr  v1, v0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.d
new file mode 100644
index 0000000..d5906eb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_2addr_5.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 3
+
+       ushr-int/2addr v1, v2
+       return v1
+.end method
+
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.java
new file mode 100644
index 0000000..3e1776c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_2addr.d;
+
+public class T_ushr_int_2addr_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_6.d
new file mode 100644
index 0000000..0e3753c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_2addr_6.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int/2addr v1, v3
+       return v1
+.end method
+
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/Test_ushr_int_lit8.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/Test_ushr_int_lit8.java
new file mode 100644
index 0000000..99b3ac9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/Test_ushr_int_lit8.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_1;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_13;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_2;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_3;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_4;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_5;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_6;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_7;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_8;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_9;
+
+
+public class Test_ushr_int_lit8 extends DxTestCase {
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_ushr_int_lit8_1 t = new T_ushr_int_lit8_1();
+        assertEquals(7, t.run());
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_ushr_int_lit8_2 t = new T_ushr_int_lit8_2();
+        assertEquals(8, t.run());
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_ushr_int_lit8_3 t = new T_ushr_int_lit8_3();
+        assertEquals(0x7FFFFFF8, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ushr_int_lit8_4 t = new T_ushr_int_lit8_4();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_ushr_int_lit8_5 t = new T_ushr_int_lit8_5();
+        assertEquals(16, t.run());
+    }
+    
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float >>> ) makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_ushr_int_lit8_13 t = new  T_ushr_int_lit8_13();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ushr_int_lit8_6 t = new T_ushr_int_lit8_6();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ushr_int_lit8_7 t = new T_ushr_int_lit8_7();
+        assertEquals(0x3FFFFFFF, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ushr_int_lit8_8 t = new T_ushr_int_lit8_8();
+        assertEquals(0x40000000, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ushr_int_lit8_9 t = new T_ushr_int_lit8_9();
+        assertEquals(1, t.run());
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.d
new file mode 100644
index 0000000..3d6d12d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_1.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 15
+       ushr-int/lit8 v1, v1, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.java
new file mode 100644
index 0000000..35f5305
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_1 {
+
+    public int run() {
+        return 15 >>> 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_10.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_10.d
new file mode 100644
index 0000000..66e89fa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_10.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_10.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_10
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide v0, 12345456788.0
+       ushr-int/lit8 v1, v0, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_11.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_11.d
new file mode 100644
index 0000000..d0b5a53
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_11.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_11.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_11
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+       const-wide v0, 12345456788
+       ushr-int/lit8 v1, v0, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_12.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_12.d
new file mode 100644
index 0000000..9925d72
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_12.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_12.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_12
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 2
+
+       ushr-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.d
new file mode 100644
index 0000000..431983f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_13.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_13
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 3
+
+       ushr-int/lit8 v1, v2, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.java
new file mode 100644
index 0000000..42f09dc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_13 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_14.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_14.d
new file mode 100644
index 0000000..7bf0d26
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_14.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_14.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_14
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 3
+
+       ushr-int/lit8 v1, v3, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.d
new file mode 100644
index 0000000..2727421
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_2.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 33
+       ushr-int/lit8 v1, v1, 2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.java
new file mode 100644
index 0000000..8ef472e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_2 {
+
+    public int run() {
+        return 32 >>> 2;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.d
new file mode 100644
index 0000000..d51d0ad
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_3.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_3
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, -15
+       ushr-int/lit8 v1, v1, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.java
new file mode 100644
index 0000000..0917deb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_3 {
+
+    public int run() {
+        return -15 >>> 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.d
new file mode 100644
index 0000000..c69a8cd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_4.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 1
+       ushr-int/lit8 v1, v1, -1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.java
new file mode 100644
index 0000000..e0224f5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_4 {
+
+    public int run() {
+        return 1 >>> -1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.d
new file mode 100644
index 0000000..9e75732
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_5.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_5
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 33
+       ushr-int/lit8 v1, v1, 33
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.java
new file mode 100644
index 0000000..b1d83aa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_5 {
+
+    public int run() {
+        return 33 >>> 33;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.d
new file mode 100644
index 0000000..8387c15
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_6.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_6
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 0
+       ushr-int/lit8 v1, v1, -1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.java
new file mode 100644
index 0000000..548014a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_6 {
+
+    public int run() {
+        return 0 >>> -1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.d
new file mode 100644
index 0000000..1a49829
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_7.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       ushr-int/lit8 v1, v1, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.java
new file mode 100644
index 0000000..1e0b00f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_7 {
+
+    public int run() {
+        return Integer.MAX_VALUE >>> 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.d
new file mode 100644
index 0000000..415d6d6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_8.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -2147483648
+       ushr-int/lit8 v1, v1, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.java
new file mode 100644
index 0000000..6e6a65e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_8 {
+
+    public int run() {
+        return Integer.MIN_VALUE >>> 1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.d
new file mode 100644
index 0000000..34be720
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_int_lit8_9.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_9
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 1
+       ushr-int/lit8 v1, v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.java
new file mode 100644
index 0000000..a69257a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_9 {
+
+    public int run() {
+        return 1 >>> 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long/Test_ushr_long.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/Test_ushr_long.java
new file mode 100644
index 0000000..338d067
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/Test_ushr_long.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.ushr_long.d.T_ushr_long_1;
+import dot.junit.opcodes.ushr_long.d.T_ushr_long_2;
+
+public class Test_ushr_long extends DxTestCase {
+    /**
+     * @title Arguments = 40000000000l, 3
+     */
+    public void testN1() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(5000000000l, t.run(40000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 40000000000l, 1
+     */
+    public void testN2() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(20000000000l, t.run(40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -123456789l, 1
+     */
+    public void testN3() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0x7FFFFFFFFC521975l, t.run(-123456789l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Arguments = 123456789l, 64
+     */
+    public void testN5() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(123456789l, t.run(123456789l, 64));
+    }
+    
+    /**
+     * @title Arguments = 123456789l, 63
+     */
+    public void testN6() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0l, t.run(123456789l, 63));
+    }
+    
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this (double >>> int) makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_ushr_long_2 t = new T_ushr_long_2();
+        try {
+            t.run(3.14d, 1);
+        } catch (Throwable e) {
+        }
+    } 
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0l, t.run(0l, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0x3FFFFFFFFFFFFFFFl, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0x4000000000000000l, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(1l, t.run(1l, 0));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long.d.T_ushr_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long.d.T_ushr_long_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long.d.T_ushr_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long.d.T_ushr_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long.d.T_ushr_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.d
new file mode 100644
index 0000000..5479c4e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_1.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.java
new file mode 100644
index 0000000..1b2517e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_long.d;
+
+public class T_ushr_long_1 {
+
+    public long run(long a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.d
new file mode 100644
index 0000000..e8a6322
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_2.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 6
+
+       ushr-long v0, v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.java
new file mode 100644
index 0000000..e278f8a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_long.d;
+
+public class T_ushr_long_2 {
+
+    public long run(double b, int i) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_3.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_3.d
new file mode 100644
index 0000000..1a7a9eb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_3.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       move v2, v3
+       ushr-long v1, v2, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_4.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_4.d
new file mode 100644
index 0000000..03ae1aa
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_4.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 6
+
+       const v0, 12345.0
+       ushr-long v0, v0, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_5.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_5.d
new file mode 100644
index 0000000..05560ac
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_5.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long v1, v1, v0
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_6.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_6.d
new file mode 100644
index 0000000..6e7d40a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_6.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long v1, v1, v4
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_7.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_7.d
new file mode 100644
index 0000000..d2f672b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_7.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 6
+
+       ushr-long v1, v2, v4
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/Test_ushr_long_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/Test_ushr_long_2addr.java
new file mode 100644
index 0000000..72747f4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/Test_ushr_long_2addr.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_1;
+import dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_2;
+
+public class Test_ushr_long_2addr extends DxTestCase {
+    /**
+     * @title Arguments =  40000000000l, 3
+     */
+    public void testN1() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(5000000000l, t.run(40000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 40000000000l, 1
+     */
+    public void testN2() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(20000000000l, t.run(40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -123456789l, 1
+     */
+    public void testN3() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0x7FFFFFFFFC521975l, t.run(-123456789l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Arguments = 123456789l, 64
+     */
+    public void testN5() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(123456789l, t.run(123456789l, 64));
+    }
+
+    /**
+     * @title Arguments = 123456789l, 63
+     */
+    public void testN6() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0l, t.run(123456789l, 63));
+    }
+
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this (double >>> int) makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_ushr_long_2addr_2 t = new T_ushr_long_2addr_2();
+        try {
+            t.run(3.14d, 1);
+        } catch (Throwable e) {
+        }
+    } 
+
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0l, t.run(0l, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0x3FFFFFFFFFFFFFFFl, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0x4000000000000000l, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(1l, t.run(1l, 0));
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.d
new file mode 100644
index 0000000..4b154c5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_2addr_1.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.java
new file mode 100644
index 0000000..142cda3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_long_2addr.d;
+
+public class T_ushr_long_2addr_1 {
+
+    public long run(long a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.d
new file mode 100644
index 0000000..22a3e6d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_2addr_2.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 6
+
+       ushr-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.java b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.java
new file mode 100644
index 0000000..af70b1c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.ushr_long_2addr.d;
+
+public class T_ushr_long_2addr_2 {
+
+    public long run(double a, int b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_3.d
new file mode 100644
index 0000000..c76441e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_2addr_3.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       move v0, v3
+       ushr-long/2addr v0, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_4.d
new file mode 100644
index 0000000..4f03522
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_2addr_4.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       const v1, 12345.0
+       ushr-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_5.d
new file mode 100644
index 0000000..12e930c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_2addr_5.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long/2addr v1, v0
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_6.d
new file mode 100644
index 0000000..0d1898a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_2addr_6.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long/2addr v1, v4
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_7.d b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_7.d
new file mode 100644
index 0000000..b645617
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_ushr_long_2addr_7.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 6
+
+       ushr-long/2addr v2, v4
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int/Test_xor_int.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int/Test_xor_int.java
new file mode 100644
index 0000000..8d976ca
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int/Test_xor_int.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_int.d.T_xor_int_1;
+import dot.junit.opcodes.xor_int.d.T_xor_int_5;
+
+public class Test_xor_int extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+         T_xor_int_1 t = new T_xor_int_1();
+         assertEquals(7, t.run(15, 8));
+    }
+    
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+         T_xor_int_1 t = new T_xor_int_1();
+         assertEquals(9, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe, -1
+     */
+    public void testN3() {
+         T_xor_int_1 t = new T_xor_int_1();
+         assertEquals(0xFFFF3501, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (int ^ float) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_xor_int_5 t = new  T_xor_int_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, -1
+     */
+    public void testB1() {
+        T_xor_int_1 t = new T_xor_int_1();
+        assertEquals(-1, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_int_1 t = new T_xor_int_1();
+        assertEquals(0xffffffff, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+    
+    
+
+    /**
+     * @constraint B1
+     * @title types of arguments - long, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int.d.T_xor_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int.d.T_xor_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int.d.T_xor_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.d
new file mode 100644
index 0000000..2c2fbfb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_1.java
+.class public dot.junit.opcodes.xor_int.d.T_xor_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int v1, v1, v2
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.java
new file mode 100644
index 0000000..75f5df4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int.d;
+
+public class T_xor_int_1 {
+
+    public int run(int a, int b) {
+        return a ^ b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_2.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_2.d
new file mode 100644
index 0000000..339a3e9
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_2.java
+.class public dot.junit.opcodes.xor_int.d.T_xor_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       move v1, v2 
+       const-wide/16 v2, 12345
+       xor-int v1, v1, v2
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_3.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_3.d
new file mode 100644
index 0000000..b733277
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_3.java
+.class public dot.junit.opcodes.xor_int.d.T_xor_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int v1, v1, v0
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.d
new file mode 100644
index 0000000..879afe5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_5.java
+.class public dot.junit.opcodes.xor_int.d.T_xor_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 3
+
+       xor-int v1, v1, v2
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.java
new file mode 100644
index 0000000..5c50e59
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int.d;
+
+public class T_xor_int_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_6.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_6.d
new file mode 100644
index 0000000..0768d87
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int/d/T_xor_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_6.java
+.class public dot.junit.opcodes.xor_int.d.T_xor_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int v1, v1, v3
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/Test_xor_int_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/Test_xor_int_2addr.java
new file mode 100644
index 0000000..630bf5d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/Test_xor_int_2addr.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_1;
+import dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_4;
+
+public class Test_xor_int_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+         T_xor_int_2addr_1 t = new T_xor_int_2addr_1();
+         assertEquals(7, t.run(15, 8));
+    }
+    
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+         T_xor_int_2addr_1 t = new T_xor_int_2addr_1();
+         assertEquals(9, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe, -1
+     */
+    public void testN3() {
+         T_xor_int_2addr_1 t = new T_xor_int_2addr_1();
+         assertEquals(0xFFFF3501, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (int ^ float) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_xor_int_2addr_4 t = new  T_xor_int_2addr_4();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, -1
+     */
+    public void testB1() {
+        T_xor_int_2addr_1 t = new T_xor_int_2addr_1();
+        assertEquals(-1, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_int_2addr_1 t = new T_xor_int_2addr_1();
+        assertEquals(0xffffffff, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.d
new file mode 100644
index 0000000..561db60
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_2addr_1.java
+.class public dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.java
new file mode 100644
index 0000000..2d4a699
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_2addr.d;
+
+public class T_xor_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a ^ b;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_2.d
new file mode 100644
index 0000000..7d19a9b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_2addr_2.java
+.class public dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide/16 v2, 12345
+       xor-int/2addr v1, v2
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_3.d
new file mode 100644
index 0000000..f51a717
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_2addr_3.java
+.class public dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int/2addr v1, v0
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.d
new file mode 100644
index 0000000..cc64eb3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_2addr_4.java
+.class public dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 3
+
+       xor-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.java
new file mode 100644
index 0000000..f779ebc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_2addr.d;
+
+public class T_xor_int_2addr_4 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_5.d
new file mode 100644
index 0000000..5430394
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_2addr_5.java
+.class public dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int/2addr v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/Test_xor_int_lit16.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/Test_xor_int_lit16.java
new file mode 100644
index 0000000..e31a49c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/Test_xor_int_lit16.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_1;
+import dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_2;
+import dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_3;
+import dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_4;
+import dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_7;
+
+public class Test_xor_int_lit16 extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+         T_xor_int_lit16_1 t = new T_xor_int_lit16_1();
+         assertEquals(7, t.run());
+     }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfff1
+     */
+    public void testN2() {
+         T_xor_int_lit16_2 t = new T_xor_int_lit16_2();
+         assertEquals(9, t.run());
+     }
+    
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float ^ int) makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_xor_int_lit16_7 t = new T_xor_int_lit16_7();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, -1
+     */
+    public void testB1() {
+        T_xor_int_lit16_3 t = new T_xor_int_lit16_3();
+            assertEquals(-1, t.run());
+    }
+
+    /** 
+     * @title Arguments = Integer.MAX_VALUE, Short.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_int_lit16_4 t = new T_xor_int_lit16_4();
+            assertEquals(-2147450881, t.run());
+    }
+
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.d
new file mode 100644
index 0000000..ba07a33
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit16_1.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 15
+       xor-int/lit16 v1, v1, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.java
new file mode 100644
index 0000000..bff43df
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit16.d;
+
+public class T_xor_int_lit16_1 {
+
+    public int run() {
+        return 15 ^ 8;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.d
new file mode 100644
index 0000000..6b5a110
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit16_2.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v2, -8
+       xor-int/lit16 v1, v2, -15
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.java
new file mode 100644
index 0000000..938a23d1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit16.d;
+
+public class T_xor_int_lit16_2 {
+
+    public int run() {
+        return 0xfffffff8 ^ 0xfff1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.d
new file mode 100644
index 0000000..56f0458
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit16_3.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       xor-int/lit16 v1, v1, -1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.java
new file mode 100644
index 0000000..2bc9c62
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit16.d;
+
+public class T_xor_int_lit16_3 {
+
+    public int run() {
+        return 0 ^ -1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.d
new file mode 100644
index 0000000..ec92408
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit16_4.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       xor-int/lit16 v1, v1, -32768
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.java
new file mode 100644
index 0000000..6626871
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit16.d;
+
+public class T_xor_int_lit16_4 {
+
+    public int run() {
+        return Integer.MAX_VALUE ^ Short.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_5.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_5.d
new file mode 100644
index 0000000..a0906e6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit16_5.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide/16 v2, 12345
+       xor-int/lit16 v1, v2, -32768
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_6.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_6.d
new file mode 100644
index 0000000..5aa6343
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit16_6.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       xor-int/lit16 v1, v2, 1
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.d
new file mode 100644
index 0000000..ea16bae
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit16_7.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 3
+
+       xor-int/lit16 v1, v2, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.java
new file mode 100644
index 0000000..d7b747e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit16.d;
+
+public class T_xor_int_lit16_7 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_8.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_8.d
new file mode 100644
index 0000000..5d8cb85
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit16_8.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 3
+
+       xor-int/lit16 v1, v3, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/Test_xor_int_lit8.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/Test_xor_int_lit8.java
new file mode 100644
index 0000000..e06d5e1
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/Test_xor_int_lit8.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_1;
+import dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_2;
+import dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_3;
+import dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_4;
+import dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_7;
+
+public class Test_xor_int_lit8 extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+         T_xor_int_lit8_1 t = new T_xor_int_lit8_1();
+         assertEquals(7, t.run());
+     }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xf1
+     */
+    public void testN2() {
+         T_xor_int_lit8_2 t = new T_xor_int_lit8_2();
+         assertEquals(9, t.run());
+     }
+    
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float ^ int) makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_xor_int_lit8_7 t = new T_xor_int_lit8_7();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, -1
+     */
+    public void testB1() {
+        T_xor_int_lit8_3 t = new T_xor_int_lit8_3();
+            assertEquals(-1, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Byte.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_int_lit8_4 t = new T_xor_int_lit8_4();
+            assertEquals(-2147483521, t.run());
+    }
+
+    
+
+    /**
+     * @constraint B1
+     * @title types of arguments - long, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.d
new file mode 100644
index 0000000..cb4d830
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit8_1.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 15
+       xor-int/lit16 v1, v1, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.java
new file mode 100644
index 0000000..ff2c78b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit8.d;
+
+public class T_xor_int_lit8_1 {
+
+    public int run() {
+        return 15 ^ 8;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.d
new file mode 100644
index 0000000..8d23bf6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit8_2.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v2, -8
+       xor-int/lit16 v1, v2, -15
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.java
new file mode 100644
index 0000000..d62fd56
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit8.d;
+
+public class T_xor_int_lit8_2 {
+
+    public int run() {
+        return 0xfffffff8 ^ 0xf1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.d
new file mode 100644
index 0000000..5953574
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit8_3.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       xor-int/lit16 v1, v1, -1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.java
new file mode 100644
index 0000000..31fa48c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit8.d;
+
+public class T_xor_int_lit8_3 {
+
+    public int run() {
+        return 0 ^ -1;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.d
new file mode 100644
index 0000000..c2270c4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit8_4.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       xor-int/lit16 v1, v1, -128
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.java
new file mode 100644
index 0000000..6b2d4f7
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit8.d;
+
+public class T_xor_int_lit8_4 {
+
+    public int run() {
+        return Integer.MAX_VALUE ^ Byte.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_5.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_5.d
new file mode 100644
index 0000000..3a3da2b
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit8_5.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide/16 v2, 12345
+       xor-int/lit8 v1, v2, -128
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_6.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_6.d
new file mode 100644
index 0000000..b3ab7e4
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit8_6.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       xor-int/lit16 v1, v2, 1
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.d
new file mode 100644
index 0000000..74bf7e5
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit8_7.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 3
+
+       xor-int/lit16 v1, v2, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.java b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.java
new file mode 100644
index 0000000..ecd3130
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_int_lit8.d;
+
+public class T_xor_int_lit8_7 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_8.d b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_8.d
new file mode 100644
index 0000000..0857ea6
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_int_lit8_8.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 3
+
+       xor-int/lit16 v1, v3, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long/Test_xor_long.java b/tools/vm-tests/src/dot/junit/opcodes/xor_long/Test_xor_long.java
new file mode 100644
index 0000000..dac7041
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long/Test_xor_long.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_long.d.T_xor_long_1;
+import dot.junit.opcodes.xor_long.d.T_xor_long_2;
+
+public class Test_xor_long extends DxTestCase {
+    /**
+     * @title Arguments = 23423432423777l, 23423432423778l
+     */
+    public void testN1() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(3, t.run(23423432423777l, 23423432423778l));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff5, 0xfffffff1
+     */
+    public void testN2() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(4, t.run(0xfffffff5, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xABCDEFAB & -1
+     */
+    public void testN3() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(0x54321054, t.run(0xABCDEFAB, -1l));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this (double ^ long ) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_xor_long_2 t = new T_xor_long_2();
+        try {
+            t.run(3.14d, 1234l);
+        } catch (Throwable e) {
+        }
+    } 
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(-1l, t.run(0l, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(0xffffffff, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MAX_VALUE
+     */
+    public void testB3() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(0l, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long.d.T_xor_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long.d.T_xor_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title types of arguments - float, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long.d.T_xor_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title types of arguments - reference, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long.d.T_xor_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.d b/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.d
new file mode 100644
index 0000000..fb345ea
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_1.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.java b/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.java
new file mode 100644
index 0000000..9389b63
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_long.d;
+
+public class T_xor_long_1 {
+
+    public long run(long a, long b) {
+        return a ^ b; 
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.d b/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.d
new file mode 100644
index 0000000..52f7815
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_2.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DJ)J
+.limit regs 5
+
+       xor-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.java b/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.java
new file mode 100644
index 0000000..64a5a9a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_long.d;
+
+public class T_xor_long_2 {
+
+    public long run(double a, long b) {
+        return 0; 
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_3.d b/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_3.d
new file mode 100644
index 0000000..2042970
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_3.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       const/16 v3, 1234    
+       xor-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_4.d b/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_4.d
new file mode 100644
index 0000000..28e9fff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_4.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       const v3, 1234.0
+       xor-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_5.d b/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_5.d
new file mode 100644
index 0000000..a48545f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_5.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long v1, v1, v0
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_6.d b/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_6.d
new file mode 100644
index 0000000..0e2c18f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long/d/T_xor_long_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_6.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long v1, v1, v5
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/Test_xor_long_2addr.java b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/Test_xor_long_2addr.java
new file mode 100644
index 0000000..8e4a4bc
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/Test_xor_long_2addr.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_1;
+import dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_2;
+
+public class Test_xor_long_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 23423432423777l, 23423432423778l
+     */
+    public void testN1() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(3, t.run(23423432423777l, 23423432423778l));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff5, 0xfffffff1
+     */
+    public void testN2() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(4, t.run(0xfffffff5, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xABCDEFAB & -1
+     */
+    public void testN3() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(0x54321054, t.run(0xABCDEFAB, -1l));
+    }
+
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this (double ^ long ) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_xor_long_2addr_2 t = new T_xor_long_2addr_2();
+        try {
+            t.run(3.14d, 1234l);
+        } catch (Throwable e) {
+        }
+    } 
+
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(-1l, t.run(0l, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(0xffffffff, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MAX_VALUE
+     */
+    public void testB3() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(0l, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title  (number of registers).
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title types of arguments - float, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title types of arguments - reference, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.d b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.d
new file mode 100644
index 0000000..7d84e33
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_2addr_1.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.java b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.java
new file mode 100644
index 0000000..f146b32
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_long_2addr.d;
+
+public class T_xor_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a ^ b; 
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.d b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.d
new file mode 100644
index 0000000..977ce09
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_2addr_2.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DJ)J
+.limit regs 5
+
+       xor-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.java b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.java
new file mode 100644
index 0000000..dfa4c0f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.opcodes.xor_long_2addr.d;
+
+public class T_xor_long_2addr_2 {
+
+    public long run(double a, long b) {
+        return 0; 
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_3.d b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_3.d
new file mode 100644
index 0000000..d578efe
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_2addr_3.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       const/16 v3, 1234    
+       xor-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_4.d b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_4.d
new file mode 100644
index 0000000..98c0cd8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_2addr_4.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       const v3, 1234.0
+       xor-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_5.d b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_5.d
new file mode 100644
index 0000000..a69d6ca
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_2addr_5.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long/2addr v1, v0
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_6.d b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_6.d
new file mode 100644
index 0000000..2533783
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_xor_long_2addr_6.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long/2addr v1, v5
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests/src/dot/junit/verify/AllTests.java b/tools/vm-tests/src/dot/junit/verify/AllTests.java
new file mode 100644
index 0000000..b4314f8
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/AllTests.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite("Tests for dalvik vm: test that "
+                + "structurally damaged files are rejected by the verifier");
+        suite.addTestSuite(dot.junit.verify.a1.Test_a1.class);
+        suite.addTestSuite(dot.junit.verify.a3.Test_a3.class);
+        suite.addTestSuite(dot.junit.verify.a5.Test_a5.class);
+        suite.addTestSuite(dot.junit.verify.b2.Test_b2.class);
+        suite.addTestSuite(dot.junit.verify.b3.Test_b3.class);
+        suite.addTestSuite(dot.junit.verify.b17.Test_b17.class);
+
+        return suite;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/verify/a1/Test_a1.java b/tools/vm-tests/src/dot/junit/verify/a1/Test_a1.java
new file mode 100644
index 0000000..b071c3c
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/a1/Test_a1.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.a1;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_a1 extends DxTestCase {
+
+    /**
+     * @constraint A1
+     * 
+     * @title empty insns array
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.a1.d.T_a1_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/verify/a1/d/T_a1_1.d b/tools/vm-tests/src/dot/junit/verify/a1/d/T_a1_1.d
new file mode 100644
index 0000000..fae89bb
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/a1/d/T_a1_1.d
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_a1_1.java
+.class public dot.junit.verify.a1.d.T_a1_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 2
+    return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/verify/a1/d/T_a1_1.dfh b/tools/vm-tests/src/dot/junit/verify/a1/d/T_a1_1.dfh
new file mode 100644
index 0000000..2c11f5f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/a1/d/T_a1_1.dfh
@@ -0,0 +1,237 @@
+// Processing 'out/classes_dasm/dot/junit/verify/a1/d/T_a1_1.dex'...
+// Opened 'out/classes_dasm/dot/junit/verify/a1/d/T_a1_1.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : fa4f3449
+    49 34 4F FA 
+// parsed: offset 12, len 20: signature           : ea5e...e61c
+    EA 5E DC 6D AF F0 4E 0F CA BF 0E 8F FE 43 DE 4F 78 5B E6 1C 
+// parsed: offset 32, len 4: file_size           : 480
+    E0 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 356 (0x000164)
+    64 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 264
+    08 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 260 (0x000104) "<init>"
+    04 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 268 (0x00010c) "Ldot/junit/verify/a1/d/T_a1_1;"
+    0C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 300 (0x00012c) "Ljava/lang/Object;"
+    2C 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 320 (0x000140) "T_a1_1.java"
+    40 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 333 (0x00014d) "V"
+    4D 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 336 (0x000150) "run"
+    50 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/verify/a1/d/T_a1_1;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/verify/a1/d/T_a1_1;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_b1_1.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 341 (0x000155)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 55 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.verify.a1.d.T_a1_1.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.verify.a1.d.T_a1_1.run"
+    // parsed: offset 240, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 1
+//@mod        01 00 00 00 
+        00 00 00 00 
+    // insns:
+        // parsed: offset 256, len 2: |0000: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 258, len 2: PADDING
+    00 00 
+// parsed: offset 260, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 268, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/verify/a1/d/T_a1_1;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 76 65 72 69 66 79 2F 61 31 2F 64 2F 54 5F 61 31 5F 31 3B 00 
+// parsed: offset 300, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 320, len 13: TYPE_STRING_DATA_ITEM [3] "T_a1_1.java"
+    0B 54 5F 61 31 5F 31 2E 6A 61 76 61 00 
+// parsed: offset 333, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 336, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/verify/a1/d/T_a1_1;"
+    // parsed: offset 341, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 342, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 343, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 344, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 345, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 346, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 349, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 351, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 352, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 353, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 355, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 356, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 360, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 372, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 384, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 396, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 408, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 420, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 432, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 444, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 260 (0x000104)
+        02 20 00 00 06 00 00 00 04 01 00 00 
+    // parsed: offset 456, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 341 (0x000155)
+        00 20 00 00 01 00 00 00 55 01 00 00 
+    // parsed: offset 468, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 356 (0x000164)
+        00 10 00 00 01 00 00 00 64 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/verify/a1/d/T_a1_2.java b/tools/vm-tests/src/dot/junit/verify/a1/d/T_a1_2.java
new file mode 100644
index 0000000..378c29e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/a1/d/T_a1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.a1.d;
+
+/**
+ *
+ */
+public class T_a1_2 {
+    // dummy
+}
diff --git a/tools/vm-tests/src/dot/junit/verify/a3/Test_a3.java b/tools/vm-tests/src/dot/junit/verify/a3/Test_a3.java
new file mode 100644
index 0000000..94d5cb3
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/a3/Test_a3.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.a3;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_a3 extends DxTestCase {
+
+    /**
+     * @constraint A3
+     * 
+     * @title The insns array must only contain valid Dalvik opcodes. 
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.a3.d.T_a3_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/verify/a3/d/T_a3_1.d b/tools/vm-tests/src/dot/junit/verify/a3/d/T_a3_1.d
new file mode 100644
index 0000000..0f8d599
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/a3/d/T_a3_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_a3_1.java
+.class public dot.junit.verify.a3.d.T_a3_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 2
+    nop
+    nop
+    nop
+    return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/verify/a3/d/T_a3_1.dfh b/tools/vm-tests/src/dot/junit/verify/a3/d/T_a3_1.dfh
new file mode 100644
index 0000000..0ca04de
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/a3/d/T_a3_1.dfh
@@ -0,0 +1,241 @@
+// Processing 'out/classes_dasm/dot/junit/verify/a3/d/T_a3_1.dex'...
+// Opened 'out/classes_dasm/dot/junit/verify/a3/d/T_a3_1.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : be8e34ae
+    AE 34 8E BE 
+// parsed: offset 12, len 20: signature           : 816e...af7b
+    81 6E 56 5F D0 A5 2E 3F EC 43 2E 24 E4 3D F9 E8 F6 F5 AF 7B 
+// parsed: offset 32, len 4: file_size           : 484
+    E4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 360 (0x000168)
+    68 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 268
+    0C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 264 (0x000108) "<init>"
+    08 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 272 (0x000110) "Ldot/junit/verify/a3/d/T_a3_1;"
+    10 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 304 (0x000130) "Ljava/lang/Object;"
+    30 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 324 (0x000144) "T_a3_1.java"
+    44 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 337 (0x000151) "V"
+    51 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 340 (0x000154) "run"
+    54 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/verify/a3/d/T_a3_1;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/verify/a3/d/T_a3_1;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_a3_1.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 345 (0x000159)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 59 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.verify.a3.d.T_a3_1.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.verify.a3.d.T_a3_1.run"
+    // parsed: offset 240, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 2: |0000: nop // spacer
+//@mod            00 00         
+            FF FF 
+        // parsed: offset 258, len 2: |0001: nop // spacer
+            00 00 
+        // parsed: offset 260, len 2: |0002: nop // spacer
+            00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 264, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 272, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/verify/a3/d/T_a3_1;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 76 65 72 69 66 79 2F 61 33 2F 64 2F 54 5F 61 33 5F 31 3B 00 
+// parsed: offset 304, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 324, len 13: TYPE_STRING_DATA_ITEM [3] "T_a3_1.java"
+    0B 54 5F 61 33 5F 31 2E 6A 61 76 61 00 
+// parsed: offset 337, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 340, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/verify/a3/d/T_a3_1;"
+    // parsed: offset 345, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 346, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 347, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 348, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 349, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 350, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 353, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 355, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 356, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 357, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 359, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 360, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 364, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 376, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 388, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 400, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 412, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 424, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 436, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 448, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 264 (0x000108)
+        02 20 00 00 06 00 00 00 08 01 00 00 
+    // parsed: offset 460, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 345 (0x000159)
+        00 20 00 00 01 00 00 00 59 01 00 00 
+    // parsed: offset 472, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 360 (0x000168)
+        00 10 00 00 01 00 00 00 68 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/verify/a3/d/T_a3_2.java b/tools/vm-tests/src/dot/junit/verify/a3/d/T_a3_2.java
new file mode 100644
index 0000000..ec629cd
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/a3/d/T_a3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.a3.d;
+
+/**
+ *
+ */
+public class T_a3_2 {
+    // dummy
+}
diff --git a/tools/vm-tests/src/dot/junit/verify/a5/Test_a5.java b/tools/vm-tests/src/dot/junit/verify/a5/Test_a5.java
new file mode 100644
index 0000000..e821028
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/a5/Test_a5.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.a5;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_a5 extends DxTestCase {
+
+    /**
+     * @constraint A5
+     * 
+     * @title The last instruction in the insns array must end at index insns_size-1.  
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.a5.d.T_a5_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/verify/a5/d/T_a5_1.d b/tools/vm-tests/src/dot/junit/verify/a5/d/T_a5_1.d
new file mode 100644
index 0000000..898e900
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/a5/d/T_a5_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_a5_1.java
+.class public dot.junit.verify.a5.d.T_a5_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 2
+    nop
+    nop
+    nop
+    return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/verify/a5/d/T_a5_1.dfh b/tools/vm-tests/src/dot/junit/verify/a5/d/T_a5_1.dfh
new file mode 100644
index 0000000..a35f00e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/a5/d/T_a5_1.dfh
@@ -0,0 +1,241 @@
+// Processing 'out/classes_dasm/dot/junit/verify/a5/d/T_a5_1.dex'...
+// Opened 'out/classes_dasm/dot/junit/verify/a5/d/T_a5_1.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 1acf344e
+    4E 34 CF 1A 
+// parsed: offset 12, len 20: signature           : 60c2...28af
+    60 C2 30 F0 A8 17 C1 F1 B9 47 0E D8 9D BD C6 0B E9 34 28 AF 
+// parsed: offset 32, len 4: file_size           : 484
+    E4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 360 (0x000168)
+    68 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 268
+    0C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 264 (0x000108) "<init>"
+    08 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 272 (0x000110) "Ldot/junit/verify/a5/d/T_a5_1;"
+    10 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 304 (0x000130) "Ljava/lang/Object;"
+    30 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 324 (0x000144) "T_a5_1.java"
+    44 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 337 (0x000151) "V"
+    51 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 340 (0x000154) "run"
+    54 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/verify/a5/d/T_a5_1;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/verify/a5/d/T_a5_1;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_a5_1.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 345 (0x000159)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 59 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.verify.a5.d.T_a5_1.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.verify.a5.d.T_a5_1.run"
+    // parsed: offset 240, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+//@mod        04 00 00 00 
+        05 00 00 00 
+    // insns:
+        // parsed: offset 256, len 2: |0000: nop // spacer
+            00 00 
+        // parsed: offset 258, len 2: |0001: nop // spacer
+            00 00 
+        // parsed: offset 260, len 2: |0002: nop // spacer
+            00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 264, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 272, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/verify/a5/d/T_a5_1;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 76 65 72 69 66 79 2F 61 35 2F 64 2F 54 5F 61 35 5F 31 3B 00 
+// parsed: offset 304, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 324, len 13: TYPE_STRING_DATA_ITEM [3] "T_a5_1.java"
+    0B 54 5F 61 35 5F 31 2E 6A 61 76 61 00 
+// parsed: offset 337, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 340, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/verify/a5/d/T_a5_1;"
+    // parsed: offset 345, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 346, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 347, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 348, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 349, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 350, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 353, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 355, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 356, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 357, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 359, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 360, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 364, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 376, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 388, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 400, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 412, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 424, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 436, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 448, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 264 (0x000108)
+        02 20 00 00 06 00 00 00 08 01 00 00 
+    // parsed: offset 460, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 345 (0x000159)
+        00 20 00 00 01 00 00 00 59 01 00 00 
+    // parsed: offset 472, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 360 (0x000168)
+        00 10 00 00 01 00 00 00 68 01 00 00 
diff --git a/tools/vm-tests/src/dot/junit/verify/a5/d/T_a5_2.java b/tools/vm-tests/src/dot/junit/verify/a5/d/T_a5_2.java
new file mode 100644
index 0000000..52e2f9f
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/a5/d/T_a5_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.a5.d;
+
+/**
+ *
+ */
+public class T_a5_2 {
+    // dummy
+}
diff --git a/tools/vm-tests/src/dot/junit/verify/b17/Test_b17.java b/tools/vm-tests/src/dot/junit/verify/b17/Test_b17.java
new file mode 100644
index 0000000..4c14f08
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/b17/Test_b17.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.b17;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_b17 extends DxTestCase {
+
+    /**
+     * Having throw, return and backward goto as a last opcode in the method is tested
+     * as part of corresponding opcodes tests.
+     */
+    
+    /**
+     * @constraint B17
+     * 
+     * @title attempt to leave insns array without return or throw.
+     * Since this constraint is trivial to be checked by the verifier,
+     * it is sufficient to have a trivial test.
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.b17.d.T_b17_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/verify/b17/d/T_b17_1.d b/tools/vm-tests/src/dot/junit/verify/b17/d/T_b17_1.d
new file mode 100644
index 0000000..11715c2
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/b17/d/T_b17_1.d
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_b17_1.java
+.class public dot.junit.verify.b17.d.T_b17_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 2
+
+       const/16 v0, 123 
+.end method
diff --git a/tools/vm-tests/src/dot/junit/verify/b17/d/T_b17_2.java b/tools/vm-tests/src/dot/junit/verify/b17/d/T_b17_2.java
new file mode 100644
index 0000000..f0052eff
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/b17/d/T_b17_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.b17.d;
+
+/**
+ *
+ */
+public class T_b17_2 {
+    // dummy
+}
diff --git a/tools/vm-tests/src/dot/junit/verify/b2/Test_b2.java b/tools/vm-tests/src/dot/junit/verify/b2/Test_b2.java
new file mode 100644
index 0000000..55ea386
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/b2/Test_b2.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.b2;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_b2 extends DxTestCase {
+
+    /**
+     * @constraint B2
+     * @title attempt to mess around with register-pairs.
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.b2.d.T_b2_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B2
+     * @title attempt to mess around with register-pairs.
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.verify.b2.d.T_b2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B2
+     * @title attempt to mess around with register-pairs.
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.verify.b2.d.T_b2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B2
+     * @title attempt to mess around with register-pairs.
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.verify.b2.d.T_b2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B2
+     * @title attempt to mess around with register-pairs.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.verify.b2.d.T_b2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_1.d b/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_1.d
new file mode 100644
index 0000000..1fe908a
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_b2_1.java
+.class public dot.junit.verify.b2.d.T_b2_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 123
+       move v1, v0 ; illegal read access to v1
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_1.java b/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_1.java
new file mode 100644
index 0000000..9ca108e
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.b2.d;
+
+public class T_b2_1 {
+    public void run() {
+        long a = 123;
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_2.d b/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_2.d
new file mode 100644
index 0000000..a885c41
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_b2_2.java
+.class public dot.junit.verify.b2.d.T_b2_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 123 
+       move v0, v1 ; // illegal read access to v0
+       return-void
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_3.d b/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_3.d
new file mode 100644
index 0000000..bf8d6e0
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_b2_3.java
+.class public dot.junit.verify.b2.d.T_b2_3
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       const v0, 123 
+       const v1, 123 
+       move-wide v2, v0 ; // illegal read access to v0/1
+       return-void
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_4.d b/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_4.d
new file mode 100644
index 0000000..bb158ce
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_b2_4.java
+.class public dot.junit.verify.b2.d.T_b2_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const-wide v0, 123
+       move v2, v0 ; // illegal read access to v0
+       return-void
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_5.d b/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_5.d
new file mode 100644
index 0000000..483066d
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/b2/d/T_b2_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_b2_5.java
+.class public dot.junit.verify.b2.d.T_b2_5
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       const-wide v0, 123
+       move-wide v2, v0
+       move-wide v2, v1 ; // illegal read access to v1/2
+       return-void
+.end method
+
diff --git a/tools/vm-tests/src/dot/junit/verify/b3/Test_b3.java b/tools/vm-tests/src/dot/junit/verify/b3/Test_b3.java
new file mode 100644
index 0000000..1aefb11
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/b3/Test_b3.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.b3;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_b3 extends DxTestCase {
+
+    /**
+     * @constraint B3
+     * @title register (or pair) has to be assigned first before it can be read. 
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.b3.d.T_b3_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B3
+     * @title register (or pair) has to be assigned first before it can be read. 
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.verify.b3.d.T_b3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests/src/dot/junit/verify/b3/d/T_b3_0.java b/tools/vm-tests/src/dot/junit/verify/b3/d/T_b3_0.java
new file mode 100644
index 0000000..0f0a5ce
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/b3/d/T_b3_0.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package dot.junit.verify.b3.d;
+
+/**
+*
+*/
+public class T_b3_0 {
+   // dummy
+}
diff --git a/tools/vm-tests/src/dot/junit/verify/b3/d/T_b3_1.d b/tools/vm-tests/src/dot/junit/verify/b3/d/T_b3_1.d
new file mode 100644
index 0000000..ffcd819
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/b3/d/T_b3_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_b3_1.java
+.class public dot.junit.verify.b3.d.T_b3_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       move v2, v1
+       return-void
+.end method
diff --git a/tools/vm-tests/src/dot/junit/verify/b3/d/T_b3_2.d b/tools/vm-tests/src/dot/junit/verify/b3/d/T_b3_2.d
new file mode 100644
index 0000000..96feb07
--- /dev/null
+++ b/tools/vm-tests/src/dot/junit/verify/b3/d/T_b3_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.source T_b3_2.java
+.class public dot.junit.verify.b3.d.T_b3_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 10
+
+       const-wide v0, 123
+       long-to-int v3, v1
+       return-void
+.end method
diff --git a/tools/vm-tests/src/util/build/BuildDalvikSuite.java b/tools/vm-tests/src/util/build/BuildDalvikSuite.java
new file mode 100644
index 0000000..f28a71b
--- /dev/null
+++ b/tools/vm-tests/src/util/build/BuildDalvikSuite.java
@@ -0,0 +1,845 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package util.build;
+
+import com.android.dx.util.FileUtils;
+
+import dot.junit.AllTests;
+
+import junit.framework.TestCase;
+import junit.framework.TestResult;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Scanner;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.Map.Entry;
+import java.util.regex.MatchResult;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Main class to generate data from the test suite to later run from a shell
+ * script. the project's home folder.<br>
+ * <project-home>/src must contain the java sources<br>
+ * <project-home>/data/scriptdata will be generated<br>
+ * <project-home>/src/<for-each-package>/Main_testN1.java will be generated<br>
+ * (one Main class for each test method in the Test_... class
+ */
+public class BuildDalvikSuite {
+
+    public static boolean DEBUG = true;
+
+    private static String JAVASRC_FOLDER = "";
+    private static String MAIN_SRC_OUTPUT_FOLDER = "";
+
+    // the folder for the generated junit-files for the cts host (which in turn
+    // execute the real vm tests using adb push/shell etc)
+    private static String HOSTJUNIT_SRC_OUTPUT_FOLDER = ""; 
+    private static String OUTPUT_FOLDER = "";
+    private static String COMPILED_CLASSES_FOLDER = "";
+
+    private static String CLASSES_OUTPUT_FOLDER = "";
+    private static String HOSTJUNIT_CLASSES_OUTPUT_FOLDER = "";
+
+    private static String CLASS_PATH = "";
+
+    private static String restrictTo = null; // e.g. restrict to
+    // "opcodes.add_double"
+
+    
+    private int testClassCnt = 0;
+    private int testMethodsCnt = 0;
+    
+    
+    /*
+     * using a linked hashmap to keep the insertion order for iterators.
+     * the junit suite/tests adding order is used to generate the order of the
+     * report.
+     * a map. key: fully qualified class name, value: a list of test methods for
+     * the given class
+     */
+    private LinkedHashMap<String, List<String>> map = new LinkedHashMap<String,
+            List<String>>();
+
+
+    private class MethodData {
+        String methodBody, constraint, title;
+    }
+
+    /**
+     * @param args
+     *            args 0 must be the project root folder (where src, lib etc.
+     *            resides)
+     * @throws IOException
+     */
+    public static void main(String[] args) throws IOException {
+
+        if (args.length > 5) {
+            JAVASRC_FOLDER = args[0];
+            OUTPUT_FOLDER = args[1];
+            CLASS_PATH = args[2];
+            MAIN_SRC_OUTPUT_FOLDER = args[3];
+            CLASSES_OUTPUT_FOLDER = MAIN_SRC_OUTPUT_FOLDER + "/classes";
+
+            COMPILED_CLASSES_FOLDER = args[4];
+            
+            HOSTJUNIT_SRC_OUTPUT_FOLDER = args[5];
+            HOSTJUNIT_CLASSES_OUTPUT_FOLDER = HOSTJUNIT_SRC_OUTPUT_FOLDER 
+                    + "/classes";
+
+            if (args.length > 6) {
+                // optional: restrict to e.g. "opcodes.add_double"
+                restrictTo = args[6];
+                System.out.println("restricting build to: "+restrictTo);
+            }
+
+        } else {
+            System.out
+                    .println("usage: java-src-folder output-folder classpath "
+                           + "generated-main-files compiled_output "
+                           + "generated-main-files [restrict-to-opcode]");
+            System.exit(-1);
+        }
+
+        long start = System.currentTimeMillis();
+        BuildDalvikSuite cat = new BuildDalvikSuite();
+        cat.compose();
+        long end = System.currentTimeMillis();
+
+        System.out.println("elapsed seconds: " + (end - start) / 1000);
+    }
+
+    public void compose() throws IOException {
+        System.out.println("Collecting all junit tests...");
+        new TestRunner() {
+            @Override
+            protected TestResult createTestResult() {
+                return new TestResult() {
+                    @Override
+                    protected void run(TestCase test) {
+                        addToTests(test);
+                    }
+
+                };
+            }
+        }.doRun(AllTests.suite());
+
+        // for each combination of TestClass and method, generate a Main_testN1
+        // etc.
+        // class in the respective package.
+        // for the report make sure all N... tests are called first, then B,
+        // then
+        // E, then VFE test methods.
+        // so we need x Main_xxxx methods in a package, and x entries in the
+        // global scriptdata file (read by a bash script for the tests)
+        // e.g. dxc.junit.opcodes.aaload.Test_aaload - testN1() ->
+        // File Main_testN1.java in package dxc.junit.opcodes.aaload
+        // and entry dxc.junit.opcodes.aaload.Main_testN1 in class execution
+        // table.
+        //
+        handleTests();
+    }
+
+    private void addToTests(TestCase test) {
+
+        String packageName = test.getClass().getPackage().getName();
+        packageName = packageName.substring(packageName.lastIndexOf('.'));
+
+
+        String method = test.getName(); // e.g. testVFE2
+        String fqcn = test.getClass().getName(); // e.g.
+        // dxc.junit.opcodes.iload_3.Test_iload_3
+
+        // ignore all tests not belonging to the given restriction
+        if (restrictTo != null && !fqcn.contains(restrictTo)) return;
+
+        testMethodsCnt++;
+        List<String> li = map.get(fqcn);
+        if (li == null) {
+            testClassCnt++;
+            li = new ArrayList<String>();
+            map.put(fqcn, li);
+        }
+        li.add(method);
+    }
+    
+    private static final String ctsAllTestsB =
+        "package dot.junit;\n" +
+        "import junit.framework.Test;\n" +
+        "import junit.framework.TestSuite;\n" +
+        "public class AllJunitHostTests {\n" +
+        "    public static final Test suite() {\n" +
+        "        TestSuite suite = new TestSuite(\"CTS Host tests for all " +
+        " dalvik vm opcodes\");\n";
+
+    private static final String ctsAllTestsE =
+        "    }"+
+        "}";
+
+    private static final String curFileDataE = "}\n";
+
+
+    private String curAllTestsData = ctsAllTestsB;
+    private String curJunitFileName = null;
+    private String curJunitFileData = "";
+    
+    private JavacBuildStep javacHostJunitBuildStep;
+
+    private void flushHostJunitFile() {
+        if (curJunitFileName != null) {
+        	File toWrite = new File(curJunitFileName);
+            String absPath = toWrite.getAbsolutePath();
+            // add to java source files for later compilation
+            javacHostJunitBuildStep.addSourceFile(absPath);
+            // write file
+            curJunitFileData+="\n}\n";
+            writeToFileMkdir(toWrite, curJunitFileData);
+            curJunitFileName = null;
+            curJunitFileData = "";
+        }
+    }
+    
+    private void ctsFinish() {
+    	flushHostJunitFile();
+    	curAllTestsData+="return suite;\n}\n}\n";
+    	// suite is in package dot.junit.
+    	String allTestsFileName = HOSTJUNIT_SRC_OUTPUT_FOLDER
+    	        + "/dot/junit/AllJunitHostTests.java";
+    	File toWrite = new File(allTestsFileName);
+    	writeToFileMkdir(toWrite, curAllTestsData);
+    	javacHostJunitBuildStep.addSourceFile(toWrite.getAbsolutePath());
+    	javacHostJunitBuildStep.addSourceFile(new File(
+    	        HOSTJUNIT_SRC_OUTPUT_FOLDER + "/dot/junit/DeviceUtil.java").
+    	        getAbsolutePath());
+    	
+    }
+    
+    private void openCTSHostFileFor(String pName, String classOnlyName) {
+        String sourceName = "JUnit_"+classOnlyName;
+        // Add to AllTests.java
+        String suiteline = "suite.addTestSuite("+pName+"." + sourceName + 
+                ".class);\n";
+        curAllTestsData += suiteline;
+        // flush previous JunitFile
+        flushHostJunitFile();
+
+        // prepare current testcase-file
+        curJunitFileName = HOSTJUNIT_SRC_OUTPUT_FOLDER+"/" 
+                + pName.replaceAll("\\.","/")+"/"+sourceName+".java";
+        curJunitFileData =
+            "package "+pName+";\n"+
+            "import java.io.IOException;\n"+
+            "import junit.framework.TestCase;\n"+
+            "import dot.junit.DeviceUtil;\n"+
+            "public class "+sourceName+" extends TestCase {\n";
+    }
+
+    private String getADBPushJavaLine(String source, String target) {
+        return "DeviceUtil.adbPush(\"" + source + "\", \"" + target + "\");";
+    }
+
+    private String getADBExecJavaLine(String classpath, String mainclass) {
+        return "DeviceUtil.adbExec(\"" + classpath + "\", \"" + 
+                mainclass + "\");";
+    }
+
+    private void addCTSHostMethod(String pName, String method, MethodData md,
+            Set<String> dependentTestClassNames) {
+    	curJunitFileData+="public void "+method+ "() throws Exception {\n";
+        curJunitFileData+= "    "+getADBPushJavaLine("dot/junit/dexcore.jar",
+                "/data/dexcore.jar");
+
+        // push class with Main jar.
+        String mjar = "Main_"+method+".jar";
+        String mainJar = "/data/"+mjar;
+        String pPath = pName.replaceAll("\\.","/");
+        //System.out.println("adb push "+pPath+"/"+mjar +" "+mainJar);
+        curJunitFileData+= "    "+getADBPushJavaLine(pPath+"/"+mjar, mainJar);
+
+        // for each dependency:
+        // adb push dot/junit/opcodes/add_double_2addr/Main_testN2.jar
+        // /data/Main_testN2.jar
+        String cp = "/data/dexcore.jar:"+mainJar;
+        for (String depFqcn : dependentTestClassNames) {
+            int lastDotPos = depFqcn.lastIndexOf('.');
+            String targetName= "/data/"+depFqcn.substring(lastDotPos +1)+".jar";
+            String sourceName = depFqcn.replaceAll("\\.", "/")+".jar";
+            //System.out.println("adb push "+sourceName+" "+targetName);
+            curJunitFileData+= "    "+getADBPushJavaLine(sourceName, targetName);
+            cp+= ":"+targetName;
+            // dot.junit.opcodes.invoke_interface_range.ITest 
+            // -> dot/junit/opcodes/invoke_interface_range/ITest.jar
+        }
+
+        //"dot.junit.opcodes.add_double_2addr.Main_testN2";
+        String mainclass = pName + ".Main_" + method;
+        curJunitFileData+= "    "+getADBExecJavaLine(cp, mainclass);
+        curJunitFileData+= "}\n\n"; 
+    }    
+    
+    
+ 
+    
+    
+    private void handleTests() throws IOException {
+        System.out.println("collected "+testMethodsCnt+" test methods in " + 
+                testClassCnt+" junit test classes");
+        String datafileContent = "";
+        Set<BuildStep> targets = new TreeSet<BuildStep>();
+
+        javacHostJunitBuildStep = new JavacBuildStep(
+        		HOSTJUNIT_CLASSES_OUTPUT_FOLDER, CLASS_PATH);
+
+
+        JavacBuildStep javacBuildStep = new JavacBuildStep(
+                CLASSES_OUTPUT_FOLDER, CLASS_PATH);
+
+        for (Entry<String, List<String>> entry : map.entrySet()) {
+
+            String fqcn = entry.getKey();
+            int lastDotPos = fqcn.lastIndexOf('.');
+            String pName = fqcn.substring(0, lastDotPos);
+            String classOnlyName = fqcn.substring(lastDotPos + 1);
+            String instPrefix = "new " + classOnlyName + "()";
+
+            openCTSHostFileFor(pName, classOnlyName);
+
+            List<String> methods = entry.getValue();
+            Collections.sort(methods, new Comparator<String>() {
+                public int compare(String s1, String s2) {
+                    // TODO sort according: test ... N, B, E, VFE
+                    return s1.compareTo(s2);
+                }
+            });
+            for (String method : methods) {
+                // e.g. testN1
+                if (!method.startsWith("test")) {
+                    throw new RuntimeException("no test method: " + method);
+                }
+
+                // generate the Main_xx java class
+
+                // a Main_testXXX.java contains:
+                // package <packagenamehere>;
+                // public class Main_testxxx {
+                // public static void main(String[] args) {
+                // new dxc.junit.opcodes.aaload.Test_aaload().testN1();
+                // }
+                // }
+                MethodData md = parseTestMethod(pName, classOnlyName, method);
+                String methodContent = md.methodBody;
+
+                Set<String> dependentTestClassNames = parseTestClassName(pName,
+                        classOnlyName, methodContent);
+                
+                addCTSHostMethod(pName, method, md, dependentTestClassNames);
+                
+
+                if (dependentTestClassNames.isEmpty()) {
+                    continue;
+                }
+
+
+                String content = "//autogenerated by "
+                        + this.getClass().getName()
+                        + ", do not change\n"
+                        + "package "
+                        + pName
+                        + ";\n"
+                        + "import "
+                        + pName
+                        + ".d.*;\n"
+                        + "import dot.junit.*;\n"
+                        + "public class Main_"
+                        + method
+                        + " extends DxAbstractMain {\n"
+                        + "    public static void main(String[] args) "
+                        + "throws Exception {"
+                        + methodContent + "\n}\n";
+
+                String fileName = getFileName(pName, method, ".java");
+                File sourceFile = getFileFromPackage(pName, method);
+
+                File classFile = new File(CLASSES_OUTPUT_FOLDER + "/"
+                        + getFileName(pName, method, ".class"));
+                // if (sourceFile.lastModified() > classFile.lastModified()) {
+                writeToFile(sourceFile, content);
+                javacBuildStep.addSourceFile(sourceFile.getAbsolutePath());
+
+                BuildStep dexBuildStep = generateDexBuildStep(
+                        CLASSES_OUTPUT_FOLDER, getFileName(pName, method, ""));
+                targets.add(dexBuildStep);
+                // }
+
+
+                // prepare the entry in the data file for the bash script.
+                // e.g.
+                // main class to execute; opcode/constraint; test purpose
+                // dxc.junit.opcodes.aaload.Main_testN1;aaload;normal case test
+                // (#1)
+
+                char ca = method.charAt("test".length()); // either N,B,E,
+                // or V (VFE)
+                String comment;                
+                switch (ca) {
+                case 'N':
+                    comment = "Normal #" + method.substring(5);
+                    break;
+                case 'B':
+                    comment = "Boundary #" + method.substring(5);
+                    break;
+                case 'E':
+                    comment = "Exception #" + method.substring(5);
+                    break;
+                case 'V':
+                    comment = "Verifier #" + method.substring(7);
+                    break;
+                default:
+                    throw new RuntimeException("unknown test abbreviation:"
+                            + method + " for " + fqcn);
+                }
+
+                String line = pName + ".Main_" + method + ";";
+                for (String className : dependentTestClassNames) {
+                    line += className + " ";
+                }
+                
+                
+                // test description
+                String[] pparts = pName.split("\\.");
+                // detail e.g. add_double
+                String detail = pparts[pparts.length-1];
+                // type := opcode | verify
+                String type = pparts[pparts.length-2];
+
+                String description;
+                if ("format".equals(type)) {
+                    description = "format";
+                } else if ("opcodes".equals(type)) {
+                    // Beautify name, so it matches the actual mnemonic
+                    detail = detail.replaceAll("_", "-");
+                    detail = detail.replace("-from16", "/from16");
+                    detail = detail.replace("-high16", "/high16");
+                    detail = detail.replace("-lit8", "/lit8");
+                    detail = detail.replace("-lit16", "/lit16");
+                    detail = detail.replace("-4", "/4");
+                    detail = detail.replace("-16", "/16");
+                    detail = detail.replace("-32", "/32");
+                    detail = detail.replace("-jumbo", "/jumbo");
+                    detail = detail.replace("-range", "/range");
+                    detail = detail.replace("-2addr", "/2addr");
+
+                    // Unescape reserved words
+                    detail = detail.replace("opc-", "");
+                    
+                    description = detail;
+                } else if ("verify".equals(type)) {
+                    description = "verifier";
+                } else {
+                    description = type + " " + detail;
+                }                
+
+                String details = (md.title != null ? md.title : "");
+                if (md.constraint != null) {
+                    details = " Constraint " + md.constraint + ", " + details;
+                }
+                if (details.length() != 0) {
+                    details = details.substring(0, 1).toUpperCase() 
+                            + details.substring(1);
+                }
+                
+                line += ";" + description + ";" + comment + ";" + details;
+                
+                datafileContent += line + "\n";
+                generateBuildStepFor(pName, method, dependentTestClassNames,
+                        targets);
+            }
+
+
+        }
+        
+        // write latest HOSTJUNIT generated file and AllTests.java
+        ctsFinish();
+        
+        File scriptDataDir = new File(OUTPUT_FOLDER + "/data/");
+        scriptDataDir.mkdirs();
+        writeToFile(new File(scriptDataDir, "scriptdata"), datafileContent);
+
+        if (!javacHostJunitBuildStep.build()) {
+            System.out.println("main javac cts-host-hostjunit-classes build " +
+                    "step failed");
+            System.exit(1);        	
+        }
+        
+        if (javacBuildStep.build()) {
+            for (BuildStep buildStep : targets) {
+                if (!buildStep.build()) {
+                    System.out.println("building failed. buildStep: " + 
+                            buildStep.getClass().getName()+", "+buildStep);
+                    System.exit(1);
+                }
+            }
+        } else {
+            System.out.println("main javac dalvik-cts-buildutil build step " +
+                    "failed");
+            System.exit(1);
+        }
+    }
+
+    private void generateBuildStepFor(String pName, String method,
+            Set<String> dependentTestClassNames, Set<BuildStep> targets) {
+
+
+        for (String dependentTestClassName : dependentTestClassNames) {
+            generateBuildStepForDependant(dependentTestClassName, targets);
+        }
+    }
+
+    private void generateBuildStepForDependant(String dependentTestClassName,
+            Set<BuildStep> targets) {
+
+        File sourceFolder = new File(JAVASRC_FOLDER);
+        String fileName = dependentTestClassName.replace('.', '/').trim();
+
+        if (new File(sourceFolder, fileName + ".dfh").exists()) {
+
+            BuildStep.BuildFile inputFile = new BuildStep.BuildFile(
+                    JAVASRC_FOLDER, fileName + ".dfh");
+            BuildStep.BuildFile dexFile = new BuildStep.BuildFile(
+                    OUTPUT_FOLDER, fileName + ".dex");
+
+            DFHBuildStep buildStep = new DFHBuildStep(inputFile, dexFile);
+
+            BuildStep.BuildFile jarFile = new BuildStep.BuildFile(
+                    OUTPUT_FOLDER, fileName + ".jar");
+            JarBuildStep jarBuildStep = new JarBuildStep(dexFile,
+                    "classes.dex", jarFile, true);
+            jarBuildStep.addChild(buildStep);
+
+            targets.add(jarBuildStep);
+            return;
+        }
+
+        if (new File(sourceFolder, fileName + ".d").exists()) {
+
+            BuildStep.BuildFile inputFile = new BuildStep.BuildFile(
+                    JAVASRC_FOLDER, fileName + ".d");
+            BuildStep.BuildFile dexFile = new BuildStep.BuildFile(
+                    OUTPUT_FOLDER, fileName + ".dex");
+
+            DasmBuildStep buildStep = new DasmBuildStep(inputFile, dexFile);
+
+            BuildStep.BuildFile jarFile = new BuildStep.BuildFile(
+                    OUTPUT_FOLDER, fileName + ".jar");
+
+            JarBuildStep jarBuildStep = new JarBuildStep(dexFile,
+                    "classes.dex", jarFile, true);
+            jarBuildStep.addChild(buildStep);
+            targets.add(jarBuildStep);
+            return;
+        }
+
+        if (new File(sourceFolder, fileName + ".java").exists()) {
+
+            BuildStep dexBuildStep = generateDexBuildStep(
+                    COMPILED_CLASSES_FOLDER, fileName);
+            targets.add(dexBuildStep);
+            return;
+        }
+
+        try {
+            if (Class.forName(dependentTestClassName) != null) {
+
+                BuildStep dexBuildStep = generateDexBuildStep(
+                        COMPILED_CLASSES_FOLDER, fileName);
+                targets.add(dexBuildStep);
+                return;
+            }
+        } catch (ClassNotFoundException e) {
+            // do nothing
+        }
+
+        throw new RuntimeException(
+                "neither .dfh,.d,.java file of dependant test class found : "
+                        + dependentTestClassName + ";" + fileName);
+    }
+
+    private BuildStep generateDexBuildStep(String classFileFolder,
+            String classFileName) {
+        BuildStep.BuildFile classFile = new BuildStep.BuildFile(
+                classFileFolder, classFileName + ".class");
+
+        BuildStep.BuildFile tmpJarFile = new BuildStep.BuildFile(OUTPUT_FOLDER,
+                classFileName + "_tmp.jar");
+
+        JarBuildStep jarBuildStep = new JarBuildStep(classFile, classFileName
+                + ".class", tmpJarFile, false);
+
+        BuildStep.BuildFile outputFile = new BuildStep.BuildFile(OUTPUT_FOLDER,
+                classFileName + ".jar");
+
+        DexBuildStep dexBuildStep = new DexBuildStep(tmpJarFile, outputFile,
+                true);
+
+        dexBuildStep.addChild(jarBuildStep);
+        return dexBuildStep;
+
+    }
+
+    /**
+     * @param pName
+     * @param classOnlyName
+     * @param methodSource
+     * @return testclass names
+     */
+    private Set<String> parseTestClassName(String pName, String classOnlyName,
+            String methodSource) {
+        Set<String> entries = new HashSet<String>();
+        String opcodeName = classOnlyName.substring(5);
+
+        Scanner scanner = new Scanner(methodSource);
+
+        String[] patterns = new String[] {
+                "new\\s(T_" + opcodeName + "\\w*)",
+                "(T_" + opcodeName + "\\w*)", "new\\s(T\\w*)"};
+
+        String token = null;
+        for (String pattern : patterns) {
+            token = scanner.findWithinHorizon(pattern, methodSource.length());
+            if (token != null) {
+                break;
+            }
+        }
+
+        if (token == null) {
+            System.err
+                    .println("warning: failed to find dependent test class name: "
+                            + pName
+                            + ", "
+                            + classOnlyName
+                            + " in methodSource:\n" + methodSource);
+            return entries;
+        }
+
+        MatchResult result = scanner.match();
+
+        entries.add((pName + ".d." + result.group(1)).trim());
+
+        // search additional @uses directives
+        Pattern p = Pattern.compile("@uses\\s+(.*)\\s+", Pattern.MULTILINE);
+        Matcher m = p.matcher(methodSource);
+        while (m.find()) {
+            String res = m.group(1);
+            entries.add(res.trim());
+        }
+
+        // lines with the form @uses
+        // dot.junit.opcodes.add_double.jm.T_add_double_2
+        // one dependency per one @uses
+        // TODO
+
+        return entries;
+    }
+
+    private MethodData parseTestMethod(String pname, String classOnlyName,
+            String method) {
+
+        String path = pname.replaceAll("\\.", "/");
+        String absPath = JAVASRC_FOLDER + "/" + path + "/" + classOnlyName
+                + ".java";
+        File f = new File(absPath);
+
+
+        Scanner scanner;
+        try {
+            scanner = new Scanner(f);
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException("error while reading to file: "
+                    + e.getClass().getName() + ", msg:" + e.getMessage());
+        }
+
+
+        String methodPattern = "public\\s+void\\s+" + method + "[^\\{]+\\{";
+
+        String token = scanner.findWithinHorizon(methodPattern, (int) f
+                .length());
+        if (token == null) {
+            throw new RuntimeException(
+                    "cannot find method source of 'public void" + method
+                            + "' in file '" + absPath + "'");
+        }
+
+        MatchResult result = scanner.match();
+        result.start();
+        result.end();
+
+        StringBuilder builder = new StringBuilder();
+        //builder.append(token);
+
+        try {
+            FileReader reader = new FileReader(f);
+            reader.skip(result.end());
+
+            char currentChar;
+            int blocks = 1;
+            while ((currentChar = (char) reader.read()) != -1 && blocks > 0) {
+                switch (currentChar) {
+                case '}': {
+                    blocks--;
+                    builder.append(currentChar);
+                    break;
+                }
+                case '{': {
+                    blocks++;
+                    builder.append(currentChar);
+                    break;
+                }
+                default: {
+                    builder.append(currentChar);
+                    break;
+                }
+                }
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("failed to parse", e);
+        }
+
+        // find the @title/@constraint in javadoc comment for this method
+        Scanner scanner2;
+        try {
+            // using platform's default charset
+            scanner2 = new Scanner(f);
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException("error while reading to file: "
+                    + e.getClass().getName() + ", msg:" + e.getMessage());
+        }
+        // using platform's default charset
+        String all = new String(FileUtils.readFile(f));
+        // System.out.println("grepping javadoc found for method "+method +
+        // " in "+pname+","+classOnlyName);
+        String commentPattern = "/\\*\\*([^{]*)\\*/\\s*" + methodPattern;
+        Pattern p = Pattern.compile(commentPattern, Pattern.DOTALL);
+        Matcher m = p.matcher(all);
+        String title = null, constraint = null;
+        if (m.find()) {
+            String res = m.group(1);
+            // System.out.println("res: "+res);
+            // now grep @title and @constraint
+            Matcher titleM = Pattern.compile("@title (.*)", Pattern.DOTALL)
+                    .matcher(res);
+            if (titleM.find()) {
+                title = titleM.group(1).replaceAll("\\n     \\*", "");
+                title = title.replaceAll("\\n", " ");
+                title = title.trim();
+                // System.out.println("title: " + title);
+            } else {
+                System.err.println("warning: no @title found for method "
+                        + method + " in " + pname + "," + classOnlyName);
+            }
+            // constraint can be one line only
+            Matcher constraintM = Pattern.compile("@constraint (.*)").matcher(
+                    res);
+            if (constraintM.find()) {
+                constraint = constraintM.group(1);
+                constraint = constraint.trim();
+                // System.out.println("constraint: " + constraint);
+            } else if (method.contains("VFE")) {
+                System.err
+                        .println("warning: no @constraint for for a VFE method:"
+                                + method + " in " + pname + "," + classOnlyName);
+            }
+        } else {
+            System.err.println("warning: no javadoc found for method " + method
+                    + " in " + pname + "," + classOnlyName);
+        }
+        MethodData md = new MethodData();
+        md.methodBody = builder.toString();
+        md.constraint = constraint;
+        md.title = title;
+        return md;
+    }
+
+    private void writeToFileMkdir(File file, String content) {
+	    File parent = file.getParentFile();
+	    if (!parent.exists() && !parent.mkdirs()) {
+	        throw new RuntimeException("failed to create directory: " + 
+	                parent.getAbsolutePath());
+	    }
+	    writeToFile(file, content);
+    }    
+    
+    private void writeToFile(File file, String content) {
+        try {
+            if (file.length() == content.length()) {
+                FileReader reader = new FileReader(file);
+                char[] charContents = new char[(int) file.length()];
+                reader.read(charContents);
+                String contents = new String(charContents);
+                if (contents.equals(content)) {
+                    // System.out.println("skipping identical: "
+                    // + file.getAbsolutePath());
+                    return;
+                }
+            }
+
+            //System.out.println("writing file " + file.getAbsolutePath());
+
+            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
+                    new FileOutputStream(file), "utf-8"));
+            bw.write(content);
+            bw.close();
+        } catch (Exception e) {
+            throw new RuntimeException("error while writing to file: "
+                    + e.getClass().getName() + ", msg:" + e.getMessage());
+        }
+    }
+
+    private File getFileFromPackage(String pname, String methodName)
+            throws IOException {
+        // e.g. dxc.junit.argsreturns.pargsreturn
+        String path = getFileName(pname, methodName, ".java");
+        String absPath = MAIN_SRC_OUTPUT_FOLDER + "/" + path;
+        File dirPath = new File(absPath);
+        File parent = dirPath.getParentFile();
+        if (!parent.exists() && !parent.mkdirs()) {
+            throw new IOException("failed to create directory: " + absPath);
+        }
+        return dirPath;
+    }
+
+    private String getFileName(String pname, String methodName,
+            String extension) {
+        String path = pname.replaceAll("\\.", "/");
+        return new File(path, "Main_" + methodName + extension).getPath();
+    }
+}
diff --git a/tools/vm-tests/src/util/build/BuildStep.java b/tools/vm-tests/src/util/build/BuildStep.java
new file mode 100644
index 0000000..dbc6bca
--- /dev/null
+++ b/tools/vm-tests/src/util/build/BuildStep.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package util.build;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.channels.FileChannel;
+import java.util.HashSet;
+import java.util.Set;
+
+abstract class BuildStep implements Comparable<BuildStep> {
+
+    BuildFile inputFile;
+    BuildFile outputFile;
+
+    static class BuildFile {
+        final File folder;
+        final File fileName;
+
+        BuildFile(String folder, String fileName) {
+            this.folder = new File(folder);
+            this.fileName = new File(this.folder, fileName);
+        }
+
+        String getPath() {
+            return fileName.getAbsolutePath();
+        }
+
+        @Override
+        public int hashCode() {
+            return fileName.hashCode();
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (obj == null) return false;
+            if (this == obj) return true;
+            if (getClass() == obj.getClass()) {
+                BuildFile other = (BuildFile) obj;
+                return fileName.equals(other.fileName);
+            }
+            return false;
+        }
+    }
+
+    BuildStep(BuildFile inputFile, BuildFile outputFile) {
+        if (inputFile == null) {
+            throw new NullPointerException("inputFile is null");
+        }
+        if (outputFile == null) {
+            throw new NullPointerException("outputFile is null");
+        }
+        this.inputFile = inputFile;
+        this.outputFile = outputFile;
+    }
+
+    BuildStep() {
+    }
+
+    private Set<BuildStep> children;
+
+    boolean build() {
+        if (children != null) {
+            for (BuildStep child : children) {
+                if (!child.build()) {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (obj == this) return true;
+        return this.getClass() == obj.getClass();
+    }
+
+    @Override
+    public abstract int hashCode();
+
+    public void addChild(BuildStep child) {
+        if (children == null) {
+            children = new HashSet<BuildStep>();
+        }
+        children.add(child);
+    }
+
+    public static void copyFile(File in, File out) throws IOException {
+        FileChannel inChannel = new FileInputStream(in).getChannel();
+        FileChannel outChannel = new FileOutputStream(out).getChannel();
+        try {
+            inChannel.transferTo(0, inChannel.size(), outChannel);
+        } catch (IOException e) {
+            throw e;
+        } finally {
+            if (inChannel != null) inChannel.close();
+            if (outChannel != null) outChannel.close();
+        }
+    }
+
+    public int compareTo(BuildStep o) {
+        return (inputFile == o.inputFile ? 0 : (inputFile != null
+                ? (o.inputFile != null ? inputFile.getPath().compareTo(
+                        o.inputFile.getPath()) : 1) : -1));
+    }
+}
diff --git a/tools/vm-tests/src/util/build/DFHBuildStep.java b/tools/vm-tests/src/util/build/DFHBuildStep.java
new file mode 100644
index 0000000..47a81bf
--- /dev/null
+++ b/tools/vm-tests/src/util/build/DFHBuildStep.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package util.build;
+
+import dxconvext.ClassFileAssembler;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.OutputStream;
+import java.io.Reader;
+
+public class DFHBuildStep extends BuildStep {
+
+    public DFHBuildStep(BuildFile inputFile, BuildFile outputFile) {
+        super(inputFile, outputFile);
+    }
+
+    @Override
+    boolean build() {
+        if (super.build()) {
+            File out_dir = outputFile.fileName.getParentFile();
+            if (!out_dir.exists() && !out_dir.mkdirs()) {
+                System.err.println("failed to create dir: "
+                        + out_dir.getAbsolutePath());
+                return false;
+            }
+
+            ClassFileAssembler cfAssembler = new ClassFileAssembler();
+            Reader r;
+            OutputStream os;
+            try {
+                r = new FileReader(inputFile.fileName);
+                os = new FileOutputStream(outputFile.fileName);
+            } catch (FileNotFoundException e) {
+                System.err.println(e);
+                return false;
+            }
+            try {
+                // cfAssembler throws a runtime exception
+                cfAssembler.writeClassFile(r, os, true);
+            } catch (RuntimeException e) {
+                System.err.println("error in DFHBuildStep for inputfile "+inputFile.fileName+", outputfile "+outputFile.fileName);
+                throw e;
+            }
+            
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+
+        if (super.equals(obj)) {
+            return inputFile.equals(((DFHBuildStep) obj).inputFile)
+                    && outputFile.equals(((DFHBuildStep) obj).outputFile);
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return (inputFile == null ? 31 : inputFile.hashCode())
+                ^ (outputFile == null ? 37 : outputFile.hashCode());
+    }
+}
diff --git a/tools/vm-tests/src/util/build/DasmBuildStep.java b/tools/vm-tests/src/util/build/DasmBuildStep.java
new file mode 100644
index 0000000..b77a491
--- /dev/null
+++ b/tools/vm-tests/src/util/build/DasmBuildStep.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package util.build;
+
+import dasm.DAsm;
+import dasm.DasmError;
+import dasm.Utils;
+
+import java.io.BufferedReader;
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+class DasmBuildStep extends BuildStep {
+
+
+    boolean generate_linenum = false;
+
+    DasmBuildStep(BuildFile inputFile, BuildFile outputFile) {
+        super(inputFile, outputFile);
+
+    }
+
+    @Override
+    boolean build() {
+        if (super.build()) {
+            return assemble(inputFile.fileName);
+        }
+        return false;
+    }
+
+    private static Reader createReader(String fname) throws IOException {
+        FileInputStream fs = new FileInputStream(fname);
+        InputStreamReader ir;
+        ir = new InputStreamReader(fs);
+        return new BufferedReader(ir);
+    }
+    
+    private boolean assemble(File file) {
+        DAsm dAsm = new DAsm();
+        String fname = file.getAbsolutePath();
+        
+        // read and parse .d file
+        Reader inp = null; 
+        try {
+            inp = createReader(fname);
+            dAsm.readD(inp, new File(fname).getName(), generate_linenum);
+            close(inp);
+        } catch(DasmError e) {
+            if(BuildDalvikSuite.DEBUG)
+                e.printStackTrace();
+            System.err.println("DASM Error: " + e.getMessage());
+        } catch(Exception e) {
+             if(BuildDalvikSuite.DEBUG)
+                 e.printStackTrace();
+             System.err.println("Exception <" + e.getClass().getName() + ">" + e.getMessage() + 
+                         " while reading and parsing " + fname);
+             return false;
+             
+        }
+        finally {
+            close(inp);
+        }
+        
+        if(dAsm.errorCount() > 0) {
+            System.err.println("Found " + dAsm.errorCount() + " errors " +
+                    " while reading and parsing " + fname);
+                return false;
+        }
+
+        String class_path[] = Utils.getClassFieldFromString(dAsm.getClassName());
+        String class_name = class_path[1];
+
+        // determine where to place .dex file
+        String dest_dir = outputFile.folder.getAbsolutePath();
+        if (class_path[0] != null) {
+            String class_dir = class_path[0].replaceAll("/|\\.", Character.toString(File.separatorChar));                                           
+            if (dest_dir != null) {
+                dest_dir = dest_dir + File.separator + class_dir;
+            } else {
+                dest_dir = class_dir;
+            }
+        }
+            
+        File out_file = null;
+        
+        if (dest_dir == null) {
+            out_file = new File(class_name + ".dex");
+        } else {
+            out_file = new File(dest_dir, class_name + ".dex");
+
+            // check that dest_dir exists
+            File dest = new File(dest_dir);
+            if (!dest.exists()) {
+                dest.mkdirs();
+            }
+
+            if (!dest.isDirectory()) {
+                System.err.println("Cannot create directory " + dest_dir);
+                return false;
+            }
+        }
+         
+        // write output
+        FileOutputStream outp = null;
+
+        try {
+            outp = new FileOutputStream(out_file);
+            dAsm.write(outp, null);
+        } catch(Exception e) {
+                if(BuildDalvikSuite.DEBUG)
+                e.printStackTrace();
+                System.err.println("Exception <" + e.getClass().getName() + ">" + e.getMessage() + 
+                        " while writing " + out_file.getPath());
+
+                close(outp);
+
+                out_file.delete();
+
+                return false;
+       }
+       finally {
+           close(outp);
+       }
+
+       return true;
+    }
+    
+    private static void close(Closeable c) {
+        if(c == null)
+            return;
+        try {
+            c.close();
+        } catch(IOException e) {
+            
+        }
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (super.equals(obj)) {
+            DasmBuildStep other = (DasmBuildStep) obj;
+
+            return inputFile.equals(other.inputFile)
+                    && generate_linenum == other.generate_linenum
+                    && outputFile.equals(other.outputFile);
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return inputFile.hashCode() ^ outputFile.hashCode()
+                ^ (generate_linenum ? 31 : 37);
+    }
+}
diff --git a/tools/vm-tests/src/util/build/DeviceUtil.java.template b/tools/vm-tests/src/util/build/DeviceUtil.java.template
new file mode 100644
index 0000000..ee2995c
--- /dev/null
+++ b/tools/vm-tests/src/util/build/DeviceUtil.java.template
@@ -0,0 +1,105 @@
+
+package dot.junit;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Scanner;
+
+public class DeviceUtil {
+
+    private static boolean DEBUG = System.getProperty("cts.vm-tests.debug") != null;
+
+    /**
+     * Executes the command and its arguments in a native process.
+     * 
+     * @param commandAndArgs a string array to be passed containing the
+     *            executable and its arguments
+     * @param okIndicator if not null, this String must occur in the stdout of
+     *            the executable (since only checking for the return code is not
+     *            sufficient e.g. for adb shell cmd)
+     * @throws Exception thrown by the underlying command in case of an error.
+     */
+    public static void digestCommand(String[] commandAndArgs, String okIndicator) {
+        RuntimeException re = null;
+        try {
+            String c = "";
+            for (int i = 0; i < commandAndArgs.length; i++) {
+                c += commandAndArgs[i] + " ";
+            }
+            if (DEBUG) System.out.print("com: " + c);
+            StringBuilder sb = new StringBuilder();
+            ProcessBuilder pb = new ProcessBuilder(commandAndArgs).redirectErrorStream(true);
+            Process p = pb.start();
+
+            InputStream is = p.getInputStream();
+            Scanner scanner = new Scanner(is);
+            int retCode = p.waitFor();
+            while (scanner.hasNextLine()) {
+                sb.append(scanner.nextLine());
+            }
+            scanner.close();
+            if (retCode != 0 || (okIndicator != null && !sb.toString().contains(okIndicator))) {
+                String msg = sb.toString() + "\nreturn code: " + retCode;
+                re = new RuntimeException(msg);
+                if (DEBUG) System.out.println("-> error! msg:"+msg);
+            } else {
+                if (DEBUG) System.out.println(" -> " + retCode);
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("Exception occurred: " + e.getClass().getName() + ", msg:"
+                    + e.getMessage());
+        } finally {
+            if (re != null) {
+                throw re;
+            }
+        }
+    }
+
+    public static String createFilePath(String testName) throws IOException {
+        // e.g. /dot/junit/opcodes/add_double/d/T_add_double_1.jar
+        FileOutputStream fos = null;
+        InputStream is = null;
+        File f;
+        try {
+            is = DeviceUtil.class.getResourceAsStream("/tests/" + testName);
+            if (is == null) {
+                throw new RuntimeException("could not find resource /tests" + testName
+                        + " in classpath");
+            }
+            f = File.createTempFile("cts-adbpush-", ".jar");
+            int len = 4096;
+            byte[] bytes = new byte[len];
+            fos = new FileOutputStream(f);
+            int b;
+            while ((b = is.read(bytes)) > 0) {
+                fos.write(bytes, 0, b);
+            }
+        } finally {
+            if (is != null) {
+                is.close();
+            }
+            if (fos != null) {
+                fos.close();
+            }
+        }
+        return f.getAbsolutePath();
+    }
+    
+    public static void adbPush(String source, String target) 
+            throws IOException {
+        DeviceUtil.digestCommand(new String[] {"adb", "push",
+            DeviceUtil.createFilePath(source), target}, null);
+    }
+
+    public static void adbExec(String classpath, String mainclass) {
+        DeviceUtil.digestCommand(new String[] {"adb", "shell",
+               "dalvikvm", "-Xint:portable", "-Xmx512M",
+               "-Xss32K", "-Djava.io.tmpdir=/data/local/tmp",
+               "-classpath", classpath, mainclass,
+               "&&", "echo", "mk_dalvikvmok" }, "mk_dalvikvmok");
+    }
+    
+ 
+}
diff --git a/tools/vm-tests/src/util/build/DexBuildStep.java b/tools/vm-tests/src/util/build/DexBuildStep.java
new file mode 100644
index 0000000..cc65af9
--- /dev/null
+++ b/tools/vm-tests/src/util/build/DexBuildStep.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package util.build;
+
+import com.android.dx.command.dexer.Main;
+
+public class DexBuildStep extends BuildStep {
+
+    private final boolean deleteInputFileAfterBuild;
+
+    DexBuildStep(BuildFile inputFile, BuildFile outputFile,
+            boolean deleteInputFileAfterBuild) {
+        super(inputFile, outputFile);
+        this.deleteInputFileAfterBuild = deleteInputFileAfterBuild;
+    }
+
+    @Override
+    boolean build() {
+
+        if (super.build()) {
+            Main.Arguments args = new Main.Arguments();
+
+            args.jarOutput = true;
+            args.fileNames = new String[] {inputFile.fileName.getAbsolutePath()};
+
+            args.outName = outputFile.fileName.getAbsolutePath();
+
+            int result = Main.run(args);
+
+            if (result == 0) {
+                if (deleteInputFileAfterBuild) {
+                    inputFile.fileName.delete();
+                }
+                return true;
+            } else {
+                System.err.println("exception while dexing "
+                        + inputFile.fileName.getAbsolutePath() + " to "
+                        + args.outName);
+                return false;
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return inputFile.hashCode() ^ outputFile.hashCode();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (super.equals(obj)) {
+            DexBuildStep other = (DexBuildStep) obj;
+
+            return inputFile.equals(other.inputFile)
+                    && outputFile.equals(other.outputFile);
+        }
+        return false;
+    }
+
+
+}
diff --git a/tools/vm-tests/src/util/build/JarBuildStep.java b/tools/vm-tests/src/util/build/JarBuildStep.java
new file mode 100644
index 0000000..776e905
--- /dev/null
+++ b/tools/vm-tests/src/util/build/JarBuildStep.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package util.build;
+
+import sun.tools.jar.Main;
+
+import java.io.File;
+import java.io.IOException;
+
+
+public class JarBuildStep extends BuildStep {
+
+    String destFileName;
+    private final boolean deleteInputFileAfterBuild;
+
+    public JarBuildStep(BuildFile inputFile, String destFileName,
+            BuildFile outputFile, boolean deleteInputFileAfterBuild) {
+        super(inputFile, outputFile);
+        this.destFileName = destFileName;
+        this.deleteInputFileAfterBuild = deleteInputFileAfterBuild;
+    }
+
+    @Override
+    boolean build() {
+        if (super.build()) {
+            File tempFile = new File(inputFile.folder, destFileName);
+            try {
+                if (!inputFile.fileName.equals(tempFile)) {
+                    copyFile(inputFile.fileName, tempFile);
+                } else {
+                    tempFile = null;
+                }
+            } catch (IOException e) {
+                System.err.println("io exception:"+e.getMessage());
+                e.printStackTrace();
+                return false;
+            }
+
+            File outDir = outputFile.fileName.getParentFile();
+            if (!outDir.exists() && !outDir.mkdirs()) {
+                System.err.println("failed to create output dir: "
+                        + outDir.getAbsolutePath());
+                return false;
+            }
+            String[] arguments = new String[] {
+                    "-cMf", outputFile.fileName.getAbsolutePath(), "-C",
+                    inputFile.folder.getAbsolutePath(), destFileName};
+            Main main = new Main(System.out, System.err, "jar");
+            boolean success = main.run(arguments);
+
+            if (success) {
+                if (tempFile != null) {
+                    tempFile.delete();
+                }
+                if (deleteInputFileAfterBuild) {
+                    inputFile.fileName.delete();
+                }
+            } else {
+                System.err.println("exception in JarBuildStep while calling jar with args:" +
+                        " \"-cMf\", "+outputFile.fileName.getAbsolutePath()+", \"-C\"," + 
+                        inputFile.folder.getAbsolutePath()+", "+ destFileName);
+            }
+            return success;
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return inputFile.hashCode() ^ outputFile.hashCode()
+                ^ destFileName.hashCode();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (super.equals(obj)) {
+            JarBuildStep other = (JarBuildStep) obj;
+            return inputFile.equals(other.inputFile)
+                    && outputFile.equals(other.outputFile)
+                    && destFileName.equals(other.destFileName);
+
+        }
+        return false;
+    }
+
+}
diff --git a/tools/vm-tests/src/util/build/JavacBuildStep.java b/tools/vm-tests/src/util/build/JavacBuildStep.java
new file mode 100644
index 0000000..7d7033f
--- /dev/null
+++ b/tools/vm-tests/src/util/build/JavacBuildStep.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package util.build;
+
+import com.sun.tools.javac.Main;
+
+import java.io.File;
+import java.io.PrintWriter;
+import java.util.HashSet;
+import java.util.Set;
+
+public class JavacBuildStep extends BuildStep {
+
+    private final String destPath;
+    private final String classPath;
+    private final Set<String> sourceFiles = new HashSet<String>();
+    public JavacBuildStep(String destPath, String classPath) {
+        this.destPath = destPath;
+        this.classPath = classPath;
+    }
+    
+    public void addSourceFile(String sourceFile)
+    {
+        sourceFiles.add(sourceFile);
+    }
+    
+    @Override
+    boolean build() {
+        if (super.build())
+        {
+            if (sourceFiles.isEmpty())
+            {
+                return true;
+            }
+            
+            File destFile = new File(destPath);
+            if (!destFile.exists() && !destFile.mkdirs())
+            {
+                System.err.println("failed to create destination dir");
+                return false;
+            }
+            int args = 4;
+            String[] commandLine = new String[sourceFiles.size()+args];
+            commandLine[0] = "-classpath";
+            commandLine[1] = classPath;
+            commandLine[2] = "-d";
+            commandLine[3] = destPath;
+             
+            String[] files = new String[sourceFiles.size()];
+            sourceFiles.toArray(files);
+            
+            System.arraycopy(files, 0, commandLine, args, files.length);
+            
+            
+            return Main.compile(commandLine, new PrintWriter(System.err)) == 0;
+        }
+        return false;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        // TODO Auto-generated method stub
+        if (super.equals(obj))
+        {
+            JavacBuildStep other = (JavacBuildStep) obj;
+            return destPath.equals(other.destPath) 
+                && classPath.equals(other.classPath)
+                && sourceFiles.equals(other.sourceFiles);
+        }
+        return false;
+    }
+    
+    @Override
+    public int hashCode() {
+        return destPath.hashCode() ^ classPath.hashCode() ^ sourceFiles.hashCode();
+    }
+}
diff --git a/tools/vm-tests/vm-tests.css b/tools/vm-tests/vm-tests.css
new file mode 100644
index 0000000..a315a73
--- /dev/null
+++ b/tools/vm-tests/vm-tests.css
@@ -0,0 +1,59 @@
+h1 {
+    font-family: serif;
+    color: #222266;
+}
+
+h2 {
+    font-family: serif;
+    border-top-style: solid;
+    border-top-width: 2px;
+    border-color: #ccccdd;
+    padding-top: 12px;
+    margin-top: 48px;
+    margin-bottom: 2px;
+    color: #222266;
+}
+
+@media print {
+    table {
+        font-size: 8pt;
+    }
+}
+
+@media screen {
+    table {
+        font-size: 10pt;
+    }
+}
+
+
+/* general for all tables */
+
+table {
+    border-collapse: collapse;
+    margin-top: 24px;
+    margin-bottom: 24px;
+    margin-left: 48px;
+    margin-right: 48px;
+}
+
+table th {
+    font-family: sans-serif;
+    background: #aabbff;
+    text-align: left;
+}
+
+table td {
+    font-family: sans-serif;
+    border-top-style: solid;
+    border-bottom-style: solid;
+    border-width: 1px;
+    border-color: #aaaaff;
+    padding-top: 4px;
+    padding-bottom: 4px;
+    padding-left: 4px;
+    padding-right: 6px;
+    background: #eeeeff;
+    margin-top: 4pt;
+    margin-bottom: 0pt;
+}
diff --git a/tools/vm-tests/vm-tests.html b/tools/vm-tests/vm-tests.html
new file mode 100644
index 0000000..1b1e351
--- /dev/null
+++ b/tools/vm-tests/vm-tests.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html>
+  <head>
+    <title>Dalvik VM Test Suite</title>
+    <link rel=stylesheet href="vm-tests.css">
+  </head>
+
+  <body>
+    <h1>Dalvik VM Test Suite</h1>
+    <p>Version 1.0</p>
+    <p>Copyright &copy; 2008 The Android Open Source Project
+
+    <h2>Overview</h2>
+
+    <p>    
+      This directory contains a test suite for the Dalvik VM. It tests the
+      capabilities of the Dalvik VM in a black-box manner, based on the Dalvik
+      bytecode and <code>.dex</code> file format specifications. The suite does
+      both functional and verifier tests. Regarding the latter, the Dalvik VM is
+      supposed to perform bytecode verification equivalent to that done in other
+      virtual machines. Please see
+        
+      <pre>
+        docs/dalvik/dalvik-bytecode.html
+        docs/dalvik/dalvik-constraints.html
+        docs/dalvik/dex-format.html
+        docs/dalvik/verifier.html
+      </pre>
+        
+      for further details.
+    </p>
+
+    <h2>How to build</h2>
+    
+    <p>
+      The test suite is normally included in a full build of the Android
+      project. If it needs to be built individually, a simple
+        
+      <pre>
+        make vm-tests
+      </pre>
+        
+      or an
+        
+      <pre>
+        mm
+      </pre>
+        
+      in this directory will do.
+    </p>
+
+    <h2>How to run</h2>
+        
+    <p>
+      The suite can be invoked by executing
+    
+      <pre>
+        vm-tests
+      </pre>
+    
+      from any location, assuming the suite has been built. This will run
+      all tests. If you want to limit the suite to the test cases
+      corresponding to a single instruction, you can specifiy the mnemonic
+      as a parameter. For example
+
+      <pre>
+        vm-tests add-int/lit16
+      </pre>
+      
+      executes the tests for the <code>add-int/lit16</code> instruction.
+      Please see the Dalvik VM specification for all the mnemonics. Two
+      additional parameters are possible that don't represent instructions.
+      These run integrity tests for the DEX file format and general
+      verifier tests, respectively: 
+
+      <pre>
+        vm-tests format
+        vm-tests verifier
+      </pre>
+
+      The suite is normally run for the fast version of the interpreter. To run
+      it for the portable interpreter, pass <code>--portable</code> as the first
+      parameter. Passing <code>--help</code> results in a brief overview of the
+      options.
+    </p>
+    
+    <p>      
+      The suite is compatible with both emulator and simulator 
+      builds. For an emulator build, please make sure you have
+      either an emulator running or a device attached via USB before
+      invoking the test suite.
+    </p>
+    
+    <p>
+      The full suite might easily take 30 minutes or more for execution,
+      depending on the environment. It will generate an HTML
+      report with details on all test cases. While running, console output
+      is produced to give a quick impression of the progress and results.
+      For both types of output, each individual test result falls into one of
+      the following categories:
+    </p>
+            
+    <table>
+      <tr>
+        <th>Type in report</th><th>Type on console</th><th>Description</th>
+      </tr>
+      <tr>
+        <td>Success</td>
+        <td>.</td>
+        <td>
+          The test case passed successfully.
+        </td>
+      </tr>
+      <tr>
+        <td>Functional failure</td>
+        <td>F</td>
+        <td>
+          A functional (normal or boundary) or an exception test case
+          failed.
+        </td>
+        </tr>
+        <tr>
+          <td>Verifier failure</td>
+          <td>V</td>
+          <td>
+            A verifier test case failed. Either the verifier accepted
+            some invalid piece of code or it rejected a valid one.
+          </td>
+        </tr>
+        <tr>
+          <td>Console error</td>
+          <td>C</td>
+          <td>
+            The process running the VM returned error messages on the
+            standard output or error stream, but it is not clear what the
+            nature of the problem is. The test case is considered a failure,
+            though. This problem should only occur when running the suite on
+            a simulator build.
+          </td>
+        </tr>
+      </table> 
+  </body>
+</html>